{ "common": { "you": "나", "confirm": "확인", "cancel": "취소", "loading": "로딩 중..." }, "home": { "slogan": "멀티 에이전트 인터랙티브 교실에서 펼치는 생성형 학습" }, "toolbar": { "pdfParser": "파서", "pdfUpload": "PDF 업로드", "removePdf": "파일 제거", "documentExtractor": "추출기", "courseMaterialUpload": "강의 자료 업로드", "courseMaterialsSelected": "강의 자료 {{n}}개 선택됨", "courseMaterialMergeOrder": "강의 자료는 아래 표시된 순서대로 병합됩니다.", "removeCourseMaterial": "파일 제거", "webSearchOn": "사용 중", "webSearchOff": "클릭하여 사용", "webSearchDesc": "생성 전 최신 정보를 웹에서 검색합니다", "webSearchProvider": "검색 엔진", "webSearchNoProvider": "설정에서 검색 API 키를 구성하세요", "selectProvider": "제공업체 선택", "configureProvider": "모델 설정", "configureProviderHint": "강좌를 생성하려면 모델 제공업체를 하나 이상 설정하세요", "enterClassroom": "교실 입장", "advancedSettings": "고급 설정", "thinking": "추론", "thinkingBudget": "예산", "default": "기본", "on": "켜기", "off": "끄기", "auto": "자동", "dynamic": "동적", "ttsTitle": "텍스트 음성 변환", "ttsHint": "AI 선생님의 음성을 선택하세요", "ttsPreview": "미리 듣기", "ttsPreviewing": "재생 중...", "interactiveModeHint": "체험 중심 콘텐츠를 위해 인터랙티브 우선 모드를 사용하세요", "interactiveModeLabel": "인터랙티브 모드" }, "export": { "pptx": "PPTX 내보내기", "resourcePack": "리소스 팩 내보내기", "resourcePackDesc": "PPTX + 인터랙티브 페이지", "exporting": "내보내는 중...", "exportSuccess": "내보내기 완료", "exportFailed": "내보내기 실패", "classroomZip": "교실 ZIP 내보내기", "classroomZipDesc": "강좌 구조 + 미디어 파일", "inlinePartial": "{{count}}개의 외부 에셋을 번들에 포함할 수 없어 오프라인에서 강좌가 올바르게 표시되지 않을 수 있습니다.", "video": "동영상 내보내기", "videoDesc": "독립형 Hyperframes 프로젝트(MP4로 렌더링 가능)", "videoNoScenes": "내보낼 장면이 없습니다.", "videoCompiling": "동영상 타임라인 컴파일 중...", "videoRendering": "슬라이드 렌더링 및 에셋 수집 중...", "videoPackaging": "동영상 프로젝트 패키징 중...", "videoSuccess": "동영상 프로젝트를 내보냈습니다", "videoFailed": "동영상 내보내기 실패", "videoWarnings": "{{assets}}개의 에셋이 누락되었고 내보내기 보고서에 {{diagnostics}}개의 문제가 있습니다.", "videoMp4Success": "동영상이 렌더링되었습니다", "videoServiceUnavailable": "렌더 서비스가 구성되지 않았습니다 — 로컬 렌더링용 프로젝트 ZIP을 다운로드했습니다.", "videoResolution": "해상도", "videoFps": "프레임 속도", "videoQuality": "품질", "videoQuality_draft": "초안", "videoQuality_standard": "표준", "videoQuality_high": "고품질", "videoProgress": "{{percent}}%", "videoProgressWithEta": "{{percent}}% · 약 {{remaining}} 남음", "videoEtaMinSec": "{{min}}분 {{sec}}초", "videoEtaSec": "{{sec}}초", "videoRenderMp4": "MP4 렌더링", "videoDownloadZip": "프로젝트 ZIP 다운로드", "videoServiceHint": "MP4 렌더링에는 렌더 서비스가 필요합니다. ZIP을 다운로드하여 로컬에서 렌더링하세요.", "videoBurnSubtitles": "자막 굽기", "videoBurnSubtitlesDesc": "끄면 자막 없는 깨끗한 영상을 내보내고, 자막 파일은 편집 프로그램에서 추가합니다.", "videoQuizCtaPrompt": "인터랙티브 퀴즈를 직접 체험해 보세요", "videoPblCtaPrompt": "프로젝트 기반 학습을 직접 체험해 보세요", "videoCtaVisit": "방문", "videoDownloadSubtitles": "자막 다운로드 (.srt)", "subtitlesCompiling": "자막 생성 중…", "subtitlesSuccess": "자막을 다운로드했습니다", "subtitlesEmpty": "자막으로 만들 내레이션이 없습니다", "subtitlesFailed": "자막 다운로드 실패", "noSlides": "내보낼 슬라이드가 없습니다", "noSlidesSkipped": "이 코스에 슬라이드가 없어 PPTX를 건너뛰었습니다", "nothingToExport": "내보낼 항목이 없습니다" }, "import": { "classroom": "교실 가져오기", "pptx": "PPTX 가져오기", "parsing": "ZIP 파싱 중...", "parsingPptx": "PPTX 파싱 중...", "validating": "데이터 검증 중...", "writingMedia": "미디어 파일 저장 중...", "writingCourse": "강좌 데이터 저장 중...", "success": "교실을 성공적으로 가져왔습니다", "pptxSuccess": "PPTX 파싱 완료 (슬라이드 {{count}}개, 결과는 콘솔에서 확인)", "error": { "invalidZip": "유효하지 않은 파일입니다. 올바른 .maic.zip 파일을 선택하세요.", "invalidPptx": "PPTX 파싱에 실패했습니다. 파일이 유효한지 확인하세요.", "parserUnavailable": "PPTX 가져오기를 사용할 수 없습니다: 파서 번들이 배포되지 않았습니다. install/sync를 다시 실행하세요.", "invalidManifest": "유효하지 않은 교실 파일: manifest.json이 없거나 손상되었습니다.", "missingData": "유효하지 않은 교실 파일: 필수 강좌 데이터가 없습니다.", "storageFull": "가져오기 실패: 브라우저 저장 공간이 가득 찼습니다. 오래된 교실을 삭제해 보세요." } }, "chat": { "lecture": "강의", "noConversations": "대화 없음", "startConversation": "아래에 메시지를 입력하여 채팅을 시작하세요", "noMessages": "아직 메시지가 없습니다", "ended": "종료됨", "unknown": "알 수 없음", "stopDiscussion": "토론 중단", "endQA": "Q&A 종료", "softClosing": "토론 계속하기", "error": { "emptyAgentResponses": "에이전트가 빈 응답을 반환하여 토론이 중단되었습니다. 다시 시도하거나 모델 설정을 확인하세요.", "streamInterrupted": "스트림이 예기치 않게 종료되어 토론이 완료되지 않았습니다. 다시 시도해 주세요." }, "tabs": { "lecture": "노트", "chat": "채팅" }, "lectureNotes": { "empty": "강의 재생 후 여기에 노트가 표시됩니다", "emptyHint": "재생 버튼을 눌러 강의를 시작하세요", "pageLabel": "{{n}}페이지", "currentPage": "현재", "jumpToLine": "Jump to this line", "jumpUnavailable": "Jump unavailable for this line" }, "badge": { "qa": "Q&A", "discussion": "토론", "lecture": "강의" } }, "actions": { "names": { "spotlight": "스포트라이트", "laser": "레이저", "wb_open": "화이트보드 열기", "wb_draw_text": "화이트보드 텍스트", "wb_draw_shape": "화이트보드 도형", "wb_draw_chart": "화이트보드 차트", "wb_draw_latex": "화이트보드 수식", "wb_draw_table": "화이트보드 표", "wb_draw_line": "화이트보드 선", "wb_clear": "화이트보드 지우기", "wb_delete": "요소 삭제", "wb_close": "화이트보드 닫기", "discussion": "토론" }, "status": { "inputStreaming": "대기 중", "inputAvailable": "실행 중", "outputAvailable": "완료", "outputError": "오류", "outputDenied": "거부됨", "running": "실행 중", "result": "완료", "error": "오류" } }, "agentBar": { "readyToLearn": "함께 학습할 준비가 되셨나요?", "expandedTitle": "교실 역할 설정", "configTooltip": "클릭하여 교실 역할을 설정하세요", "voiceLabel": "음성", "voiceLoading": "로딩 중...", "voiceAutoAssign": "음성이 자동으로 배정됩니다", "searchVoice": "음성 검색", "noMatchingVoices": "일치하는 음성 없음", "noVoice": "음성 없음" }, "proactiveCard": { "discussion": "토론", "join": "참여", "skip": "건너뛰기", "pause": "일시정지", "resume": "재개" }, "voice": { "startListening": "음성 입력", "stopListening": "녹음 중단" }, "stage": { "currentScene": "현재 장면", "generating": "생성 중...", "paused": "일시정지됨", "generationFailed": "생성 실패", "confirmSwitchTitle": "장면 전환", "confirmSwitchMessage": "현재 진행 중인 주제가 있습니다. 장면을 전환하면 현재 주제가 종료됩니다. 계속하시겠습니까?", "generatingNextPage": "장면을 생성 중입니다. 잠시 기다려 주세요...", "courseComplete": "강좌 완료", "fullscreen": "전체화면", "exitFullscreen": "전체화면 종료", "editCourse": "강좌 편집", "doneEditing": "편집 완료", "proModeDisabledHint": "이 페이지에서는 편집할 수 없습니다 — 코스 슬라이드를 열면 Pro 모드로 편집할 수 있습니다." }, "edit": { "proMode": "프로 모드", "undo": "실행 취소", "redo": "다시 실행", "delete": "삭제", "title": "편집 중 · {{type}}", "unsupportedScene": "{{type}}은(는) 아직 편집할 수 없습니다", "readOnlyBadge": "{{type}} · 보기 전용", "sceneType": { "slide": "슬라이드", "quiz": "퀴즈", "interactive": "인터랙티브", "pbl": "PBL" }, "multiTab": { "conflict": { "title": "다른 탭에서 이 강좌를 편집 중입니다", "body": "충돌 방지를 위해 편집은 하나의 탭에서만 가능합니다. 다른 탭을 닫거나(또는 세션이 만료될 때까지 기다린 후) 여기서 편집 모드로 진입하세요.", "actionDismiss": "확인했습니다" } }, "text": { "toolbar": "텍스트 도구 모음", "label": "텍스트", "font": "글꼴", "fontDefault": "기본", "sizeUp": "크기 늘리기", "sizeDown": "크기 줄이기", "fontSize": "글꼴 크기", "bold": "굵게", "italic": "기울임꼴", "underline": "밑줄", "color": "텍스트 색상", "alignLeft": "왼쪽 정렬", "alignCenter": "가운데 정렬", "alignRight": "오른쪽 정렬", "bullet": "글머리 기호 목록", "colorHex": "색상 코드" }, "line": { "toolbar": "선 도구 모음", "kind": "선 유형", "color": "선 색상", "width": "선 두께", "style": "선 스타일", "start": "시작점 스타일", "end": "끝점 스타일", "straight": "직선", "broken": "꺾은선", "broken2": "이중 꺾은선", "curve": "곡선", "cubic": "3차 곡선", "solid": "실선", "dashed": "파선", "dotted": "점선", "none": "없음", "arrow": "화살표", "dot": "점" }, "insert": { "toolbar": "삽입 도구 모음", "textBox": "텍스트 상자", "line": "선", "linePresets": { "straight": "직선", "dashed": "점선", "arrow": "화살표 선", "dashedArrow": "점선 화살표", "dottedEnd": "끝점 원 선", "broken": "꺾은선", "doubleBroken": "이중 꺾은선", "curve": "곡선", "cubic": "3차 곡선" }, "table": "표", "formula": "수식", "chart": "차트", "chartBar": "막대 차트", "chartLine": "꺾은선 차트", "chartPie": "원형 차트", "tableDimensions": "{{rows}} x {{columns}} 표", "dragToolbar": "삽입 도구 이동", "dragToolbarKeyboard": "삽입 도구 이동: Enter 또는 Space를 누른 다음 방향키로 이동", "image": "이미지", "imageDrop": "이미지를 끌어다 놓거나 클릭하여 파일을 선택하세요", "imageOr": "또는 이미지 URL 붙여넣기", "imageUrlPlaceholder": "https://…", "imageInsert": "삽입", "video": "비디오", "videoDrop": "비디오를 끌어다 놓거나 클릭하여 파일을 선택하세요", "videoOr": "또는 비디오 URL 붙여넣기", "videoUrlPlaceholder": "https://…", "videoInsert": "삽입", "audio": "오디오", "audioDrop": "오디오를 끌어다 놓거나 클릭하여 파일을 선택하세요", "audioOr": "또는 오디오 URL 붙여넣기", "audioUrlPlaceholder": "https://…", "audioInsert": "삽입" }, "asset": { "drop": "파일을 끌어다 놓거나 클릭하여 선택", "orUrl": "또는 파일 URL 붙여넣기", "urlPlaceholder": "https://…", "insert": "삽입", "invalidType": "지원하지 않는 파일 형식", "readFailed": "파일을 읽을 수 없습니다" }, "latex": { "toolbar": "수식 도구 모음", "editFormula": "수식 편집", "dialog": "수식 편집기", "source": "LaTeX 소스", "preview": "미리 보기", "symbols": "기호", "presets": "미리 정의된 수식", "invalidSource": "LaTeX 소스가 올바르지 않습니다." }, "video": { "toolbar": "비디오 도구 모음", "poster": "포스터 설정" }, "audio": { "toolbar": "오디오 도구 모음", "preview": "오디오 미리 듣기", "pause": "미리 듣기 일시 중지", "loop": "반복 재생" }, "table": { "doubleClickToEdit": "두 번 클릭하여 편집" }, "nav": { "addSlide": "슬라이드 추가", "duplicate": "복제", "delete": "삭제", "deleted": "삭제됨", "undo": "실행 취소", "copySuffix": "(사본)", "untitledSlide": "제목 없는 슬라이드", "collapse": "패널 접기", "expand": "패널 펼치기", "dragHandle": "드래그하여 순서 변경", "deckLabel": "장면", "moreActions": "더 보기", "rename": "이름 바꾸기", "sceneIncomplete": "이 페이지의 내용이 미완성입니다" }, "cue": { "speech": "내레이션", "spotlight": "스포트라이트", "laser": "레이저", "whiteboardOpen": "화이트보드", "whiteboardText": "판서", "whiteboardShape": "도형", "whiteboardLatex": "수식", "whiteboardTable": "표", "action": "동작", "discussion": "토론" }, "element": { "toolbar": "요소 도구 모음", "text": "텍스트", "image": "이미지", "shape": "도형", "line": "선", "chart": "차트", "table": "표", "latex": "수식", "video": "비디오", "audio": "오디오", "code": "코드" }, "agent": { "expand": "AI 어시스턴트 펼치기", "collapse": "접기", "stopped": "중지됨", "emptyTitle": "무엇을 바꿀까요?", "emptyHint": "캔버스에서 이 슬라이드를 편집한 뒤, 내용에 맞는 내레이션을 AI가 다시 생성하도록 하세요.", "placeholder": "이 슬라이드에 대한 변경 사항을 설명하세요…", "stop": "생성 중지", "empty": { "lead": "이 페이지를 어떻게 바꿀지 알려주세요. 내용을 다시 만들고 내레이션도 맞춥니다.", "boundary": "세부 편집은 에디터에서, 슬라이드 추가 / 삭제 / 정렬은 왼쪽 내비에서.", "comingSoon": "더 많은 기능이 곧 추가됩니다." }, "cap": { "content": { "label": "슬라이드 다시 생성", "examples": "“핵심 3가지로” “실생활 예시 추가”" }, "narration": { "label": "내레이션 스크립트 다시 생성", "examples": "“좀 더 구어체로” “편집한 내용에 맞춰”" }, "fixHtml": { "examples": "\"시작 버튼을 눌러도 반응이 없음\", \"모바일에서 패널이 겹침\"", "label": "페이지 버그 수정" }, "elements": { "label": "요소 미세 조정", "examples": "“제목을 파란색으로 바꾸고 위로”, “이 그림을 작게”" } }, "newConversation": "새 대화", "sessionHistory": "기록", "sessionUntitled": "제목 없는 대화", "sessionDelete": "삭제", "sessionEmpty": "대화 기록 없음", "reasoning": "추론 과정", "thought": "생각한 시간", "interactive": { "boundary": "페이지를 부분적으로만 수정하며, 페이지 전체를 다시 만들지 않습니다. 장면 전환은 왼쪽 내비게이션을 사용하세요.", "emptyTitle": "이 페이지에서 무엇을 수정할까요?", "lead": "이 인터랙티브 페이지의 버그(예: 눌러도 반응 없는 버튼)를 설명해 주세요. 해당 부분만 수정하고 나머지는 그대로 둡니다.", "placeholder": "이 인터랙티브 페이지의 버그를 설명하세요…" }, "thinking": "생각 중…", "title": "AI로 편집" }, "timeline": { "title": "내레이션 스크립트", "regenAllTts": "전체 음성 다시 생성", "voiceAll": "전체 음성", "counts": "내레이션 {{speech}}개 · 동작 {{cue}}개", "panLeft": "왼쪽으로 이동", "panRight": "오른쪽으로 이동", "collapseAxis": "축으로 접기", "expandTrack": "트랙 펼치기", "emptyHint": "위의 동작을 축으로 끌어 시작하거나, MAIC Agent가 내레이션을 생성하도록 하세요.", "speechPlaceholder": "이 내레이션을 입력하세요…", "reorder": "끌어서 순서 변경", "moveLeft": "왼쪽으로", "moveRight": "오른쪽으로", "pickElement": "요소 선택", "bound": "연결됨", "fieldAction": "동작", "fieldElement": "요소", "fieldContent": "내용", "addDiscussionExists": "장면당 토론은 하나만 가능합니다", "discussionTerminal": "끝", "discussionTerminalHint": "토론은 장면의 끝에 고정되며 장면당 하나만 허용됩니다", "discussionTopicPlaceholder": "토론 주제(필수)", "discussionPromptPlaceholder": "안내 프롬프트(선택)", "discussionAgent": "시작자", "discussionAgentUnset": "지정 안 함", "addAction": "동작 추가" }, "picker": { "title": "동작 삽입", "speechDesc": "내레이션 말하기 (자동 음성 지원)", "spotlightDesc": "캔버스의 요소를 강조", "laserDesc": "레이저로 요소를 가리키기", "discussionDesc": "질문을 던지고 발표자를 지정" }, "tts": { "preview": "미리듣기", "regenerate": "음성 다시 생성", "statusReady": "음성 있음", "statusNone": "음성 없음", "statusGenerating": "생성 중", "statusError": "실패" }, "pick": { "pickFor": "「{{label}}」에 사용할 요소 선택", "pickHint": "강조된 요소 또는 아래 목록을 클릭 · Esc 취소", "pageElements": "페이지 요소 · {{count}}", "expand": "펼치기", "collapse": "접기", "noElements": "이 슬라이드에는 지정할 수 있는 요소가 없습니다.", "bindHint": "캔버스에서 강조된 요소를 클릭하여 연결" }, "regen": { "title": "내레이션 다시 생성", "running": "생성 중…", "noActions": "동작이 생성되지 않음", "actionsCount": "동작 {{count}}개", "generating": "생성 중", "notGenerated": "생성 안 됨", "updated": "업데이트됨" }, "regenScene": { "title": "슬라이드 다시 생성", "generating": "생성 중", "updated": "업데이트됨", "notGenerated": "생성 안 됨", "elementsCount": "요소 {{count}}개", "restore": "이전 상태로 복원", "restored": "복원됨", "resume": "다시 적용" }, "contextMenu": { "horizontalAlignment": "가로 정렬", "verticalAlignment": "세로 정렬", "selectAll": "모두 선택", "copy": "복사", "cut": "잘라내기", "paste": "붙여넣기", "unlock": "잠금 해제", "lock": "잠금", "group": "그룹화", "ungroup": "그룹 해제", "bringForward": "앞으로 가져오기", "sendBackward": "뒤로 보내기", "alignTop": "위쪽 정렬", "alignMiddle": "세로 가운데 정렬", "alignBottom": "아래쪽 정렬" }, "background": { "image": "이미지", "label": "배경", "solid": "단색", "color": "색상" }, "image": { "toolbar": "이미지 도구 모음", "flipH": "좌우 반전", "flipV": "상하 반전", "replace": "이미지 교체", "crop": "이미지 자르기" }, "common": { "cancel": "취소", "confirm": "확인" }, "quiz": { "addOption": "선택지 추가", "addQuestion": "문항 추가", "analysisLabel": "해설", "analysisPlaceholder": "문항이 채점된 후 표시됩니다…", "commentPromptLabel": "채점 기준", "commentPromptPlaceholder": "이 주관식 답안을 어떻게 채점해야 하나요?", "deleteOption": "선택지 삭제", "deleteQuestion": "문항 삭제", "empty": "아직 문항이 없습니다", "emptyHint": "“문항 추가” 버튼으로 첫 문항을 만드세요.", "markCorrect": "정답으로 표시", "moveDown": "아래로 이동", "moveUp": "위로 이동", "optionPlaceholder": "선택지 내용", "optionsLabel": "선택지", "pointsLabel": "배점", "questionLabel": "문항", "questionPlaceholder": "문항을 입력하세요…", "reorder": "끌어서 순서 변경", "shortAnswerGradingNote": "주관식은 아래 기준에 따라 항상 AI가 채점합니다.", "typeLabel": "유형", "untitledQuestion": "제목 없는 문항", "hint": { "emptyOption": "문항 {{n}}: 선택지 내용이 비어 있습니다", "emptyText": "문항 {{n}}: 문항 내용을 입력하세요", "fewOptions": "문항 {{n}}: 선택지를 두 개 이상 추가하세요", "noCorrect": "문항 {{n}}: 정답을 표시하세요" }, "type": { "multiple": "복수 선택", "short_answer": "주관식", "single": "단일 선택" } }, "zorder": { "toFront": "맨 앞으로 가져오기", "toBack": "맨 뒤로 보내기" }, "readCard": { "title": "페이지 내용 읽기", "reading": "읽는 중", "done": "읽음", "failed": "읽지 못함" }, "fixHtml": { "editsCount": "수정 {{count}}건", "fixed": "수정됨", "fixing": "수정 중", "notFixed": "수정 안 됨", "title": "인터랙티브 페이지 수정" }, "editElements": { "title": "요소 편집", "editing": "편집 중", "applied": "적용됨", "notApplied": "미적용", "applyFailed": "편집기에서 요소 편집을 적용하지 못했습니다. 변경된 내용이 없습니다.", "applyPartiallyFailed": "하나 이상의 요소 편집을 적용하지 못했습니다. 다른 편집은 적용되었을 수 있습니다." }, "roster": { "title": "수업 구성원", "count": "{{count}}명", "editHint": "구성원을 클릭해 편집", "personaLabel": "페르소나", "personaPlaceholder": "역할의 성격, 수업 스타일, 과제를 설명하세요…", "noPersona": "페르소나 없음", "unnamed": "제목 없음", "teacherBadge": "주강사", "moveUp": "위로 이동", "moveDown": "아래로 이동", "removeFromClass": "수업에서 제거", "aiClassmates": "AI 반 친구 · {{count}}", "addRole": "역할 추가" } }, "classroomComplete": { "title": "강좌 완료", "trailLabels": { "slide": "페이지", "quiz": "퀴즈", "interactive": "인터랙티브", "pbl": "프로젝트" }, "quizScoreLabel": "{{total}}문제 중 {{correct}}개 정답", "encouragement": { "high": "훌륭합니다 — 완벽하게 해내셨어요!", "mid": "잘하셨어요 — 계속 이대로 나아가세요.", "low": "좋은 시작입니다 — 복습하고 다시 도전해 보세요." } }, "whiteboard": { "title": "인터랙티브 화이트보드", "open": "화이트보드 열기", "clear": "화이트보드 지우기", "minimize": "화이트보드 최소화", "ready": "화이트보드가 준비되었습니다", "readyHint": "AI가 요소를 추가하면 여기에 표시됩니다", "clearSuccess": "화이트보드를 성공적으로 지웠습니다", "clearError": "화이트보드 지우기 실패: ", "resetView": "보기 초기화", "restoreError": "화이트보드 복원 실패: ", "history": "기록", "restore": "복원", "noHistory": "아직 기록이 없습니다", "restored": "화이트보드가 복원되었습니다", "elementCount": "요소 {{count}}개" }, "quiz": { "title": "퀴즈", "subtitle": "실력을 확인해 보세요", "questionsCount": "문제", "totalPrefix": "", "pointsSuffix": "점", "startQuiz": "퀴즈 시작", "multipleChoiceHint": "(복수 선택 — 정답을 모두 고르세요)", "inputPlaceholder": "여기에 답을 입력하세요...", "charCount": "자", "yourAnswer": "내 답변:", "notAnswered": "미응답", "aiComment": "AI 피드백", "singleChoice": "단일 선택", "multipleChoice": "복수 선택", "shortAnswer": "단답형", "analysis": "분석: ", "excellent": "훌륭해요!", "keepGoing": "계속 해보세요!", "needsReview": "복습이 필요해요", "correct": "정답", "incorrect": "오답", "answering": "진행 중", "submitAnswers": "답변 제출", "aiGrading": "AI가 채점 중...", "aiGradingWait": "잠시만 기다려주세요, 답변을 분석하고 있어요", "quizReport": "퀴즈 결과", "retry": "다시 풀기" }, "roundtable": { "teacher": "선생님", "you": "나", "inputPlaceholder": "메시지를 입력하세요...", "listening": "듣는 중...", "processing": "처리 중...", "noSpeechDetected": "음성이 감지되지 않았습니다. 다시 시도해주세요", "discussionEnded": "토론이 종료되었습니다", "qaEnded": "Q&A가 종료되었습니다", "softClosing": "토론 계속하기", "thinking": "생각 중", "yourTurn": "내 차례", "stopDiscussion": "토론 중단", "autoPlay": "자동 재생", "autoPlayOff": "자동 재생 끄기", "speed": "속도", "previousLine": "Previous line", "nextLine": "Next line", "lineProgress": "Line {{current}} / {{total}}", "voiceInput": "음성 입력", "voiceInputDisabled": "음성 입력 비활성화됨", "textInput": "텍스트 입력", "stopRecording": "녹음 중지", "startRecording": "녹음 시작" }, "pbl": { "emptyProject": "PBL 프로젝트가 아직 생성되지 않았습니다. 강좌 생성을 통해 만들어주세요.", "v2": { "hero": { "title": "Project-Based Learning", "stage": "Stages", "task": "Tasks", "tutor": "Tutor", "greetingBanner": "Your tutor is saying hello…", "startProject": "Start Project", "continueProject": "Continue Project", "resetProgress": "Reset learning progress", "resetConfirmTitle": "Reset learning progress?", "resetConfirmDescription": "This clears all progress for this project — chat history, submissions, and stage status — and you'll start over from the beginning. This can't be undone.", "resetConfirmConfirm": "Reset", "resetConfirmCancel": "Cancel", "startHint": "Click to enter the workspace. {{name}} will guide you through each stage.", "startError": "Unable to start: {{error}}", "youWillLearn": "What you'll gain", "instructorTagline": "Guides you through the whole project", "scenarioCharacter": "Role-play character", "scenarioCharacterTagline": "The character you'll interact with in the scenario", "scenarioFlow": "Flow", "close": "Close" }, "sidebar": { "title": "Project Roadmap", "summary": "{{completed}} / {{total}} tasks · {{stages}} stages", "enterScenario": "Enter the scene", "advanceScene": "Advance the scene", "continueScene": "Next stage", "stagePrep": "Prep", "stageRoleplay": "Simulation", "stageWrapup": "Debrief", "completeAct": "Finish this act", "completeTask": "Done" }, "workspace": { "progressLabel": "Progress", "resizeSidebar": "Resize sidebar and chat", "resizeSubmission": "Resize chat and submission panel", "enterFullscreen": "Expand to fullscreen workspace", "exitFullscreen": "Exit fullscreen workspace", "exitNativeFullscreen": "Exit fullscreen", "returnToHero": "Back to project overview", "breadcrumbOverview": "Overview", "breadcrumbCurrent": "Workspace" }, "chat": { "placeholder": "Chat with {{name}} about your progress...", "placeholderCompleted": "Project complete. Check out your report.", "send": "Send", "voiceInput": "Voice input", "keyboardHint": "Enter to send · Shift+Enter for newline", "readingSubmission": "Reading submission…", "generatingMilestoneFeedback": "Generating milestone feedback…", "generatingFinalEval": "Generating final evaluation…", "readingSubmissionWithTitle": "Reading latest submission for \"{{title}}\"…", "evaluatingTask": "{{name}} · Reviewing task", "evaluatingFinal": "{{name}} · Final evaluation", "narrating": "Setting the scene…", "choosePrompt": "Pick an option", "choiceOrType": "Pick one, or type your own…", "suggestionsToggle": "Need ideas? See some ways to respond", "guidancePointer": "Stuck? Check this act's goal and tips in the panel on the right.", "roleplayHistoryTitle": "Role-play history", "coachHint": "Coach tip", "thinking": "{{name}} · Thinking", "typing": "{{name}} · Typing…", "submitted": "Work submitted", "evaluatingSubmission": "Evaluating your submission…", "evaluatingSubmissionDetail": "Task: \"{{title}}\". Feedback on this submission will appear here once evaluation is complete.", "milestoneFeedbackPending": "The milestone feedback will appear once ready.", "emptyChat": "No messages yet.", "emptyChatHint": "Your project walkthrough with {{name}} will start here.", "continueError": "Unable to continue: {{error}}", "stillTyping": "Still typing", "handoverHint": "Click \"Continue to Next Stage\" to keep going." }, "scene": { "expand": "Expand", "collapse": "Collapse", "greetHint": "Tap to say hi", "label": "The scene" }, "milestoneCard": { "title": "Milestone Review", "youLearned": "What you learned", "nextStage": "Next stage:", "continueHint": "Click Continue to enter the next stage.", "alreadyEntered": "Next stage entered", "continueToNext": "Continue to Next Stage", "projectAlmostDone": "🎉 Project almost done — awaiting completion report" }, "taskEvalCard": { "title": "Submission Feedback", "strengths": "What went well", "improvements": "Next steps" }, "briefing": { "intro": "The premise introduced during prep — kept here so you can revisit it anytime in the scene.", "tablistLabel": "Right panel tabs", "submissionTab": "Submit", "briefingTab": "Briefing", "setting": "Setting", "learnerRole": "Your role", "goal": "Goal", "rules": "Rules", "cast": "Cast", "identity": "Identity", "situation": "Situation" }, "submission": { "textSubmission": "Text submission", "fileTooLarge": "File exceeds 5 MB limit. Try splitting or compressing.", "contentRequired": "Content cannot be empty", "readFileFailed": "Failed to read file: {{error}}", "parsingPdf": "Parsing PDF…", "parsePdfFailed": "Failed to parse PDF: {{error}}", "pdfNoText": "No extractable text found in this PDF.", "imageUploadFailed": "Failed to upload image: {{error}}", "imageTooLargeNoStorage": "Image too large to attach without storage configured (max 2 MB locally).", "imageNeedsCaptionNoVision": "The current model can't read images. Add a text description of the image before submitting, or switch to a vision-capable model in Settings.", "unsupportedFileType": "Unsupported file type. Only text files (.txt, .md, .csv, .json, .py, …) and PDF are accepted.", "pasteTab": "Paste text / image", "uploadTab": "Upload file", "pastePlaceholder": "Paste your code, document, answer — or an image / screenshot — here…", "uploadPlaceholder": "Uploaded content will appear here. Edit before submitting…", "imageCaptionPlaceholder": "Add an optional caption for this image…", "imageSelectedReplace": "Image selected · click to replace", "removeImage": "Remove image", "processing": "Processing…", "cancelProcessingConfirm": "A file is still being processed. Cancel and discard this upload?", "currentTask": "Current Task", "hints": "Hints", "submitOutput": "Submit", "evaluating": "Evaluating submission…", "lockedWhileStreaming": "The instructor is replying — please wait before submitting.", "evalFailed": "Evaluation failed: {{error}}", "submittedCount": "{{count}} submitted", "submissionHistory": "Submission History", "fromTask": "Task: {{title}}", "download": "Download", "viewSubmission": "View submission", "noActiveTask": "No active task.", "canceling": "Cancel", "submitting": "Submitting…", "selectFileHint": "Choose a file · Max 5 MB · Text, PDF or image", "modalTitle": "Submit your work", "modalTaskLabel": "Task: {{title}}", "fileRead": "Read: {{filename}} · {{size}} KB", "submittedBadge": "Submitted ({{count}})", "receiptFile": "File: {{filename}}", "receiptTemplate": "Submitted work for this task ({{label}})." }, "agentTabs": { "noAgent": "No AI agent configured for this project." }, "completion": { "noWhatsNext": "The final evaluation hasn't been written yet.", "backToWorkspace": "Back to Workspace", "completionCta": "View Report", "title": "Completion Report", "whatYouBuilt": "What you built", "whatYouLearned": "What you learned", "whatsNext": "What's next", "noDataFallback": "Not yet written", "stageReview": "Stage Reviews", "summary": "You completed {{completed}} of {{total}} tasks across {{stages}} stages.", "statConcepts": "Concepts mastered", "statTurns": "Messages exchanged", "statScope": "Stages · Tasks", "statDuration": "Time spent", "statSubmissions": "Work submitted", "coreStageBadge": "Core", "conceptsInStageLabel": "Concepts:", "submissionsInStage": "Submitted {{count}} piece(s) of work", "coreConceptGrasp": "Core concept \"{{concept}}\" — {{quality}}", "stageNoData": "No recorded output in this stage.", "scenario": { "summary": "You completed all {{acts}} acts of this scenario. Here's how the role-play went.", "whatYouDidWell": "What you did well", "skillsPracticed": "Skills you practised", "statGoals": "Goals met", "statActs": "Acts completed", "goalReviewTitle": "Act-by-act review", "goalReviewHint": "This scenario set a few key goals for each act. Here's a look back at how your conversation actually went — you met {{achieved}} of {{total}} this time.", "goalListTitle": "What each act asked of you", "goalListHint": "This scenario set a few key goals for each act. Here's a look back at what each act asked you to do.", "goalAchieved": "achieved", "goalPartial": "partly done", "goalMissed": "not done", "statGoodDecisions": "Strong choices", "statScore": "Decision score", "statBeats": "Acts completed", "decisionReviewTitle": "Decision review", "good": "strong", "ok": "okay", "poor": "to improve", "decisionScore": "Decision score {{score}}", "castLabel": "You interacted with: {{names}}" }, "highlightsTitle": "Highlights", "highlight": { "independence": "You demonstrated {{unlocks}}/{{total}} concepts on your own — no prompting needed. Solid understanding.", "resilience": "In \"{{title}}\" you overcame {{errors}} errors, tackling each one — real grit.", "resilienceGeneral": "You overcame {{errors}} errors, tackling each one — real grit.", "completion": "You completed every task. Steady progress all the way through." }, "synthesisQuality": { "strong": "Strong understanding ✅", "ok": "Good grasp 👍", "weak": "Room to grow 💪" }, "durationMinutes": "{{m}} min", "durationHours": "{{h}} hr", "durationHoursMinutes": "{{h}} hr {{m}} min" }, "completionCard": { "title": "Project Complete · Completion", "subtitle": "Congratulations! You finished the entire project.", "description": "Based on your performance data (time spent, conversations, error recovery, concepts unlocked…), we have generated a completion report showing what you built, what you learned, and where to go next." } } }, "share": { "notReady": "생성이 완료된 후 이용 가능합니다" }, "classroom": { "recentClassrooms": "최근", "today": "오늘", "yesterday": "어제", "daysAgo": "일 전", "slides": "슬라이드", "nameCopied": "이름이 복사되었습니다", "deleteConfirmTitle": "삭제 확인", "delete": "삭제", "rename": "이름 변경", "renamePlaceholder": "교실 이름을 입력하세요", "renameFailed": "교실 이름 변경에 실패했습니다", "searchPlaceholder": "강좌 검색...", "searchAriaLabel": "강좌 검색", "clearSearch": "지우기", "searchEmpty": "검색 결과에 해당하는 강좌가 없습니다", "newFolderTitle": "새 폴더", "newFolderDesc": "주제별로 강의를 정리하여 접근성을 높입니다.", "newFolderInline": "새 폴더", "folderNameLabel": "폴더 이름", "folderNamePlaceholder": "예: 수학, 영어, 전공 과목", "folderNameHint": "전각/반각 모두 가능. 공백도 포함됩니다.", "folderNameExists": "같은 이름의 폴더가 이미 있습니다.", "folderCountLimit": "폴더 수 한도에 도달했습니다.", "folderWidth": "너비 {{width}}/{{max}}", "folderCreate": "만들기", "folderBadge": "폴더", "folderCourseCountUnit": "개 강의", "deleteFolderTitle": "폴더 \"{{name}}\" 삭제", "deleteFolderEmptyDesc": "이 폴더는 비어 있습니다. 삭제 후 복구할 수 없습니다.", "deleteFolderUngroupDesc": "강의는 «내 강의»에 유지되며, 미분류로 변경됩니다.", "moveToFolder": "폴더로 이동", "moveToFolderLabel": "폴더로 이동", "ungrouped": "미분류", "searchResults": "검색 결과", "folderCreateFailed": "폴더 만들기에 실패했습니다", "folderRenameFailed": "폴더 이름 변경에 실패했습니다", "folderDeleteFailed": "폴더 삭제에 실패했습니다", "moveFailed": "강의 이동에 실패했습니다", "emptyFolderHint": "이 폴더가 비어 있습니다", "emptyLibraryHint": "아직 강의가 없습니다. 위에서 만들거나 강의를 가져오세요.", "folderNameEmpty": "폴더 이름은 비워둘 수 없습니다", "deleteFolderOnly": "폴더만 삭제", "deleteFolderAndCourses": "폴더와 강의 {{count}}개 삭제", "deleteFolderConfirmRemove": "폴더와 강의(채팅 기록 포함)가 삭제됩니다.", "deleteFolderAndCourses_other": "폴더와 강의 {{count}}개 삭제" }, "upload": { "pdfSizeLimit": "최대 50MB PDF 파일을 지원합니다", "courseMaterialSizeLimit": "문서, 슬라이드, 스프레드시트, 이미지, 텍스트 — 최대 50MB (지원 형식은 선택한 파서에 따라 다름)", "generateFailed": "교실 생성에 실패했습니다. 다시 시도해주세요", "requirementPlaceholder": "학습하고 싶은 내용을 자유롭게 입력하세요, 예:\n\"파이썬을 30분 만에 처음부터 가르쳐주세요\"\n\"칠판에 푸리에 변환을 설명해주세요\"\n\"보드게임 Avalon 하는 방법\"", "requirementRequired": "강좌 요구사항을 입력해주세요", "fileTooLarge": "파일이 너무 큽니다. 50MB 미만의 파일을 선택해주세요", "courseMaterialCountLimit": "강의 자료 파일은 최대 5개까지 업로드할 수 있습니다", "courseMaterialTotalSizeLimit": "강의 자료 전체 크기는 150MB 미만이어야 합니다", "unsupportedCourseMaterial": "현재 파서가 이 형식을 지원하지 않습니다. 파서를 변경하거나 다른 파일을 선택하세요." }, "generation": { "modeLabel": "생성 모드", "normalMode": "일반 생성", "largeMode": "대형 작업", "pdfLoadFailed": "PDF 파일 불러오기에 실패했습니다. 다시 시도해주세요", "pdfParseFailed": "PDF 파싱에 실패했습니다", "analyzingCourseMaterial": "문서 분석 중", "analyzingCourseMaterialDesc": "문서 구조와 내용을 추출하고 있어요...", "courseMaterialLoadFailed": "강의 자료를 불러오지 못했습니다. 다시 시도해주세요", "courseMaterialParseFailed": "강의 자료 파싱에 실패했습니다", "streamNotReadable": "생성 스트림을 읽을 수 없습니다", "generatingOutlines": "강좌 개요 작성 중", "generatingOutlinesDesc": "학습 경로를 구성하고 있어요...", "generatingSlideContent": "페이지 내용 생성 중", "generatingSlideContentDesc": "슬라이드, 퀴즈, 인터랙티브 콘텐츠를 만들고 있어요...", "generatingActions": "수업 액션 생성 중", "generatingActionsDesc": "내레이션, 하이라이트, 인터랙션을 구성하고 있어요...", "generationComplete": "생성 완료!", "generationFailed": "생성에 실패했습니다", "speechFailed": "음성 생성에 실패했습니다", "retryScene": "다시 시도", "retryingScene": "재생성 중...", "backToHome": "홈으로 돌아가기", "sessionNotFound": "세션을 찾을 수 없습니다", "sessionNotFoundDesc": "생성 프로세스를 시작하려면 강좌 요구사항을 입력해주세요.", "goBackAndRetry": "돌아가서 다시 시도", "classroomReady": "맞춤형 AI 학습 환경이 성공적으로 생성되었습니다.", "aiWorking": "AI 에이전트 작동 중...", "textTruncated": "문서 텍스트가 길어 처음 {{n}}자만 사용하여 생성합니다", "imageTruncated": "{{total}}개의 이미지가 발견되었으나 {{max}}개 제한을 초과했습니다. 초과 이미지는 텍스트 설명으로 대체됩니다", "agentRevealTitle": "교실 역할 소개", "viewAgents": "역할 보기", "continue": "계속", "outlineRetrying": "개요 생성에 문제가 발생하여 재시도 중...", "outlineEmptyResponse": "모델이 유효한 개요를 반환하지 않았습니다. 모델 설정을 확인하고 다시 시도해주세요", "outlineGenerateFailed": "개요 생성에 실패했습니다. 잠시 후 다시 시도해주세요", "sceneGenerateFailed": "장면 생성에 실패했습니다. 잠시 후 다시 시도해주세요", "sceneGenerateAuthFailed": "모델 제공자가 현재 인증 정보를 거부해 장면 생성에 실패했습니다. 모델 설정을 확인해주세요.", "sceneGenerateRateLimited": "장면 생성 요청이 속도 제한에 걸렸습니다. 잠시 후 다시 시도해주세요.", "sceneGenerateProviderUnavailable": "모델 제공자를 일시적으로 사용할 수 없습니다. 잠시 후 다시 시도해주세요.", "sceneGenerateInvalidResponse": "모델이 유효한 장면 콘텐츠를 반환하지 않았습니다. 다른 모델을 사용하거나 강좌 요구사항을 조정해주세요.", "reviewOutlineTitle": "개요 검토", "reviewOutlineDesc": "내용 생성 전에 장면을 편집, 순서 변경, 삭제 또는 추가할 수 있습니다.", "reviewOutlineAutoContinue": "개요를 검토하지 않으면 생성이 자동으로 계속됩니다.", "outlineEditorTitle": "장면 개요", "outlineEditorSummary": "총 {{count}}개 장면. 생성 시작 전에 편집, 추가, 삭제 또는 순서 변경이 가능합니다.", "addFirstScene": "첫 번째 장면 추가", "noOutlines": "아직 장면 개요가 없습니다", "sceneTitlePlaceholder": "장면 제목", "sceneTypeSlide": "슬라이드", "sceneTypeQuiz": "퀴즈", "sceneTypeInteractive": "인터랙티브", "sceneTypePbl": "PBL", "sceneDescriptionPlaceholder": "이 장면의 목적과 내용을 간략히 설명하세요", "quizQuestionCount": "문제 수", "quizDifficulty": "난이도", "quizType": "문제 유형", "quizDifficultyEasy": "쉬움", "quizDifficultyMedium": "보통", "quizDifficultyHard": "어려움", "quizTypeSingle": "단일 선택", "quizTypeMultiple": "복수 선택", "quizTypeText": "단답형", "alwaysReviewOutlines": "생성 전 항상 개요 검토", "outlineEditorEyebrow": "AI 생성 개요", "outlineEditorStreamingProgress": "스트리밍 중 · {{count}}개 장면 준비됨", "outlineEditorStreamingWaiting": "첫 번째 장면을 기다리는 중…", "outlineEditorWaitingConfirm": "개요를 기다리는 중…", "outlineExpandHint": "탭하여 검토", "reviewOutlineStreamingDesc": "개요가 아직 스트리밍 중입니다. 완료되면 편집할 수 있습니다.", "addKeyPoint": "핵심 포인트 추가", "removeKeyPoint": "핵심 포인트 삭제", "insertSceneHere": "여기에 장면 삽입", "deleteSceneConfirm": "이 장면을 삭제할까요?", "deleteSceneConfirmDesc": "이 장면과 핵심 포인트가 개요에서 삭제됩니다.", "deleteSceneConfirmAction": "삭제", "collapseEditor": "접기", "quizConfigSummary": "{{count}}문제", "interactiveWidgetKind": "위젯 종류", "widgetSimulation": "시뮬레이션", "widgetDiagram": "다이어그램", "widgetCode": "코드", "widgetGame": "게임", "widgetVisualization3d": "3D", "interactiveConcept": "개념", "interactiveConceptPlaceholder": "탐구할 개념", "pblConfigSummary": "프로젝트", "pblSubtype": "PBL 유형", "pblSubtypeProject": "프로젝트", "pblSubtypeScenario": "상황 시뮬레이션", "pblProjectTopic": "프로젝트 주제", "pblProjectTopicPlaceholder": "프로젝트 주제", "pblProjectDescription": "설명", "pblProjectDescriptionPlaceholder": "학생이 만들 결과물", "pblScenarioBrief": "상황 개요", "pblScenarioBriefPlaceholder": "상황, 인물, 연습 목표", "pblTargetSkills": "목표 역량", "pblAddSkill": "역량 추가", "widgetProceduralSkill": "절차 기술", "removeSkill": "역량 제거", "dragSceneHint": "드래그하여 순서 변경, 또는 포커스 후 Ctrl/⌘ + ↑ / ↓ 키 사용", "deleteScene": "장면 삭제", "backToRequirements": "요구사항으로 돌아가기", "confirmAndGenerateCourse": "확인 및 강좌 생성", "generatingInProgress": "생성 중...", "webSearching": "웹 검색", "webSearchingDesc": "최신 정보를 웹에서 검색하고 있어요", "webSearchFailed": "웹 검색에 실패했습니다", "outlinesReadyCount": "{{ready}} / {{total}}개 섹션 준비됨", "jumpToBlankTitle": "제목이 필요한 섹션으로 이동", "analyzingMediaMaterial": "오디오/비디오 분석 중" }, "settings": { "title": "설정", "description": "앱 설정 구성", "language": "언어", "languageDesc": "인터페이스 언어 선택", "theme": "테마", "themeDesc": "테마 모드 선택 (라이트/다크/시스템)", "themeOptions": { "light": "라이트", "dark": "다크", "system": "시스템" }, "apiKey": "API 키", "apiKeyDesc": "API 키를 설정하세요", "apiBaseUrl": "API 엔드포인트 URL", "apiBaseUrlDesc": "API 엔드포인트 URL을 설정하세요", "apiKeyRequired": "API 키는 비워둘 수 없습니다", "model": "모델 설정", "modelDesc": "AI 모델을 설정하세요", "modelPlaceholder": "모델 이름을 입력하거나 선택하세요", "ttsModel": "TTS 모델", "ttsModelDesc": "TTS 모델을 설정하세요", "ttsModelPlaceholder": "TTS 모델 이름을 입력하거나 선택하세요", "ttsModelOptions": { "openaiTts": "OpenAI TTS", "azureTts": "Azure TTS" }, "availableModels": "사용 가능한 모델", "modelSelectedViaVoice": "모델은 음성 선택으로 결정됩니다", "testConnection": "연결 테스트", "testConnectionDesc": "현재 API 설정이 사용 가능한지 테스트합니다", "testing": "테스트 중...", "agentSettings": "에이전트 설정", "agentSettingsDesc": "대화에 참여할 에이전트를 선택하세요. 1개 선택 시 단일 에이전트 모드, 여러 개 선택 시 멀티 에이전트 협업 모드로 동작합니다.", "agentMode": "에이전트 모드", "agentModePreset": "프리셋", "agentModeAuto": "자동 생성", "agentModeAutoDesc": "AI가 적절한 역할을 자동으로 생성합니다", "autoAgentCount": "에이전트 수", "autoAgentCountDesc": "자동 생성할 에이전트 수 (선생님 포함)", "atLeastOneAgent": "에이전트를 최소 1개 이상 선택하세요", "singleAgentMode": "단일 에이전트 모드", "directAnswer": "직접 답변", "multiAgentMode": "멀티 에이전트 모드", "agentsCollaborating": "협업 토론", "agentsCollaboratingCount": "{{count}}개 에이전트가 협업 토론에 참여 중입니다", "priority": "우선순위", "actions": "액션", "actionCount": "{{count}}개 액션", "selectedAgent": "선택된 에이전트", "selectedAgents": "선택된 에이전트", "required": "필수", "agentNames": { "default-1": "AI 선생님", "default-2": "AI 보조 선생님", "default-3": "분위기 메이커", "default-4": "호기심 왕", "default-5": "노트 필기왕", "default-6": "깊은 생각가" }, "agentRoles": { "teacher": "선생님", "assistant": "보조 선생님", "student": "학생" }, "agentDescriptions": { "default-1": "명확하고 체계적인 설명으로 수업을 이끄는 주 선생님", "default-2": "학습을 돕고 핵심 내용을 명확히 정리해 드립니다", "default-3": "교실에 유머와 활기를 불어넣습니다", "default-4": "항상 왜, 어떻게를 묻는 호기심 가득한 학생", "default-5": "수업 내용을 성실하게 기록하고 정리합니다", "default-6": "주제의 본질을 깊이 탐구하고 사고합니다" }, "close": "닫기", "save": "저장", "providers": "LLM", "addProviderDescription": "사용 가능한 AI 모델을 확장하기 위해 사용자 지정 모델 제공업체를 추가하세요", "providerNames": { "openai": "OpenAI", "azure": "Azure OpenAI", "anthropic": "Claude", "google": "Gemini", "bedrock": "Amazon Bedrock", "deepseek": "DeepSeek", "qwen": "Qwen", "kimi": "Kimi", "minimax": "MiniMax", "glm": "GLM", "siliconflow": "SiliconFlow", "doubao": "Doubao", "openrouter": "OpenRouter", "grok": "Grok", "tencent-hunyuan": "Tencent Hunyuan", "xiaomi": "Xiaomi MiMo", "lemonade": "Lemonade (로컬)", "ollama": "Ollama (로컬)", "tavily": "Tavily", "bocha": "Bocha", "brave": "Brave Search", "baidu": "Baidu", "claude": "Claude", "searxng": "SearXNG" }, "providerTypes": { "openai": "OpenAI 프로토콜", "azure": "Azure OpenAI", "anthropic": "Claude 프로토콜", "google": "Gemini 프로토콜", "bedrock": "Amazon Bedrock" }, "modelCount": "개 모델", "modelSingular": "개 모델", "defaultModel": "기본 모델", "webSearch": "웹 검색", "mcp": "MCP", "knowledgeBase": "지식 베이스", "documentParser": "문서 파서", "conversationSettings": "대화", "keyboardShortcuts": "단축키", "generalSettings": "일반", "systemSettings": "시스템", "addProvider": "추가", "importFromClipboard": "클립보드에서 가져오기", "apiSecret": "API 키", "apiHost": "기본 URL", "azureDeploymentHint": "위에 Azure OpenAI 엔드포인트를 입력한 다음 각 Azure 배포 이름을 모델로 추가하세요.", "baseUrlRegion": { "china": "중국", "international": "국제", "xiaomiPayg": "종량제", "xiaomiTokenPlanCN": "토큰 플랜 CN", "xiaomiTokenPlanSGP": "토큰 플랜 SG", "xiaomiTokenPlanEU": "토큰 플랜 EU" }, "requestUrl": "요청 URL", "models": "모델", "comfyuiWorkflows": "워크플로", "comfyuiRefresh": "새로고침", "comfyuiNoWorkflowsFoundPrefix": "다음 위치에서 워크플로 JSON 파일을 찾을 수 없습니다:", "comfyuiAddWorkflowPrefix": "다음 파일을 추가하여 시작하세요:", "comfyuiAddWorkflowSuffix": "", "comfyuiFolderHintPrefix": "워크플로 JSON 파일을", "comfyuiFolderHintMiddle": "폴더에 넣으세요. 파일 이름이 표시 이름이 됩니다. 예:", "comfyuiLoadError": "워크플로를 불러오지 못했습니다: {error}", "addModel": "추가", "reset": "초기화", "fetch": "불러오기", "connectionSuccess": "연결 성공", "connectionFailed": "연결 실패", "capabilities": { "vision": "비전", "tools": "도구", "streaming": "스트리밍" }, "contextWindow": "컨텍스트", "contextShort": "ctx", "outputWindow": "출력", "addProviderButton": "추가", "addProviderDialog": "모델 제공업체 추가", "providerName": "이름", "providerNamePlaceholder": "예: 나의 OpenAI 프록시", "providerNameRequired": "제공업체 이름을 입력하세요", "providerApiMode": "API 모드", "apiModeOpenAI": "OpenAI 프로토콜", "apiModeAnthropic": "Claude 프로토콜", "apiModeGoogle": "Gemini 프로토콜", "defaultBaseUrl": "기본 Base URL", "providerIcon": "제공업체 아이콘 URL", "requiresApiKey": "API 키 필요", "deleteProvider": "제공업체 삭제", "deleteProviderConfirm": "이 제공업체를 삭제하시겠습니까?", "addCustomTTSProvider": "사용자 지정 TTS 제공업체 추가", "addCustomASRProvider": "사용자 지정 ASR 제공업체 추가", "addCustomAudioProviderDescription": "OpenAI 호환 사용자 지정 오디오 제공업체를 추가하세요", "customVoices": "음성", "voiceIdPlaceholder": "음성 ID (예: alloy)", "voiceNamePlaceholder": "표시 이름", "addVoice": "추가", "modelNamePlaceholder": "선택 사항", "defaultModelHint": "API 요청 시 전송되는 모델 이름 (예: kokoro, tts-1)", "noVoicesAdded": "아직 추가된 음성이 없습니다. 에이전트별 음성 선택을 위해 아래에서 음성을 추가하세요.", "noModelsAdded": "아직 추가된 모델이 없습니다. 모델 선택을 활성화하려면 아래에 모델을 추가하세요.", "noModelsWarning": "이 제공업체를 사용하기 전에 아래에 최소 하나의 모델을 추가하세요.", "asrNoTranscription": "변환된 텍스트가 없습니다. 더 크게 또는 더 길게 말씀해 보세요.", "cannotDeleteBuiltIn": "기본 제공업체는 삭제할 수 없습니다", "resetToDefault": "기본값으로 초기화", "resetToDefaultDescription": "모델 목록을 기본 설정으로 복원합니다 (API 키 및 Base URL은 유지됩니다)", "resetConfirmDescription": "이 작업은 모든 사용자 지정 모델을 제거하고 기본 내장 모델 목록을 복원합니다. API 키 및 Base URL은 유지됩니다.", "confirmReset": "초기화 확인", "resetSuccess": "기본 설정으로 초기화되었습니다", "saveSuccess": "설정이 저장되었습니다", "saveFailed": "설정 저장에 실패했습니다. 다시 시도해 주세요", "cannotDeleteBuiltInModel": "기본 내장 모델은 삭제할 수 없습니다", "cannotEditBuiltInModel": "기본 내장 모델은 수정할 수 없습니다", "modelIdRequired": "모델 ID를 입력하세요", "noModelsAvailable": "테스트할 수 있는 모델이 없습니다", "providerMetadata": "제공업체 메타데이터", "editModel": "모델 수정", "editModelDescription": "모델 설정 및 기능을 수정합니다", "addNewModel": "새 모델", "modelsManagementDescription": "이 제공업체에서 사용 가능한 모델과 기능을 관리하세요.", "addNewModelDescription": "새 모델 설정을 추가합니다", "modelId": "모델 ID", "modelIdPlaceholder": "예: gpt-4o", "modelName": "표시 이름", "modelCapabilities": "기능", "advancedSettings": "고급 설정", "contextWindowLabel": "컨텍스트 윈도우", "contextWindowPlaceholder": "예: 128000", "outputWindowLabel": "최대 출력 토큰", "outputWindowPlaceholder": "예: 4096", "testModel": "모델 테스트", "deleteModel": "삭제", "cancelEdit": "취소", "saveModel": "저장", "howToUse": "사용 방법", "step1ConfigureProvider": "\"모델 제공업체\"로 이동하여 제공업체를 선택하거나 추가하고 연결 설정(API 키, Base URL 등)을 구성하세요", "step2SelectModel": "아래 \"활성 모델\"에서 사용할 모델을 선택하세요", "step3StartUsing": "저장 후 시스템이 선택한 모델을 사용합니다", "activeModel": "활성 모델", "activeModelDescription": "AI 대화 및 콘텐츠 생성에 사용할 모델을 선택하세요", "searchModels": "모델 검색", "noModelsFound": "일치하는 모델을 찾을 수 없습니다", "noConfiguredProviders": "설정된 제공업체가 없습니다", "configureProvidersFirst": "왼쪽 \"모델 제공업체\"에서 제공업체 연결 설정을 먼저 구성하세요", "currentlyUsing": "현재 사용 중", "ttsSettings": "텍스트 음성 변환", "asrSettings": "음성 인식", "audioSettings": "오디오 설정", "ttsSection": "텍스트 음성 변환 (TTS)", "asrSection": "자동 음성 인식 (ASR)", "ttsDescription": "TTS (Text-to-Speech) - 텍스트를 음성으로 변환합니다", "asrDescription": "ASR (Automatic Speech Recognition) - 음성을 텍스트로 변환합니다", "enableTTS": "텍스트 음성 변환 활성화", "ttsEnabledDescription": "활성화 시 강좌 생성 중 음성 오디오가 생성됩니다", "ttsVoiceConfigHint": "에이전트별 음성은 홈페이지의 \"교실 역할 설정\"에서 구성할 수 있습니다", "enableASR": "음성 인식 활성화", "asrEnabledDescription": "활성화 시 학생이 마이크를 사용하여 음성으로 입력할 수 있습니다", "ttsProvider": "TTS 제공업체", "ttsLanguageFilter": "언어 필터", "allLanguages": "모든 언어", "ttsVoice": "음성", "ttsSpeed": "속도", "ttsBaseUrl": "기본 URL", "ttsApiKey": "API 키", "doubaoAppId": "앱 ID", "doubaoAccessKey": "액세스 키", "asrProvider": "ASR 제공업체", "asrLanguage": "인식 언어", "asrBaseUrl": "기본 URL", "asrApiKey": "API 키", "enterApiKey": "API 키 입력", "enterCustomBaseUrl": "사용자 지정 Base URL 입력", "browserNativeNote": "브라우저 기본 ASR은 별도 설정이 필요 없으며 완전히 무료입니다", "providerOpenAITTS": "OpenAI TTS (gpt-4o-mini-tts)", "providerAzureTTS": "Azure TTS", "providerGLMTTS": "GLM TTS", "providerQwenTTS": "Qwen TTS (Alibaba Cloud Bailian)", "providerVoxCPMTTS": "VoxCPM2", "providerDoubaoTTS": "Doubao TTS 2.0 (Volcengine)", "providerElevenLabsTTS": "ElevenLabs TTS", "providerMiniMaxTTS": "MiniMax TTS", "providerLemonadeTTS": "Lemonade TTS (로컬)", "providerBrowserNativeTTS": "브라우저 기본 TTS", "voxcpmBackend": "백엔드", "voxcpmBaseUrlPending": "요청 URL을 생성하려면 Base URL을 입력하세요", "voxcpmAutoVoiceNoPreview": "자동 음성은 에이전트 컨텍스트에서 생성되며 직접 미리 듣기가 불가합니다", "voxcpmVoicesTitle": "VoxCPM 음성", "voxcpmVoicesDescription": "이 브라우저에 저장되어 공유 에이전트 바 음성 풀에 추가됩니다.", "voxcpmAutoVoicePrivacyNote": "자동 음성은 에이전트 페르소나를 설정된 VoxCPM 백엔드에 음성 프롬프트로 전송합니다.", "voxcpmPromptCount": "프롬프트 {{count}}", "voxcpmCloneCount": "클론 {{count}}", "voxcpmCloneUnsupported": "현재 백엔드는 클론을 지원하지 않습니다", "voxcpmVoicePool": "음성 풀", "voxcpmVoiceCount": "음성 {{count}}개", "voxcpmAutoVoice": "자동 음성", "voxcpmAutoVoiceDescription": "에이전트 페르소나를 음성 프롬프트로 사용", "voxcpmUnavailable": "사용 불가", "voxcpmClone": "클론", "voxcpmCloneUnsupportedDetail": "현재 백엔드는 클론을 지원하지 않습니다", "voxcpmNoCustomVoices": "아직 커스텀 음성이 없습니다", "voxcpmCloneSaveOnly": "이 백엔드에만 저장됩니다", "voxcpmVoiceNamePlaceholder": "음성 이름", "voxcpmPromptPlaceholder": "예: 적당한 속도의 명확하고 자연스러운 선생님 목소리", "voxcpmAddVoice": "음성 추가", "voxcpmCloneVoiceNamePlaceholder": "클론 음성 이름", "voxcpmUploadReferenceAudio": "참조 오디오 업로드", "voxcpmRecord": "녹음", "voxcpmReferenceAudioLimitHint": "참조 오디오는 10MB / 60초 이하여야 하며 저장 전 WAV로 변환됩니다.", "voxcpmReferenceTextPlaceholder": "참조 오디오 전사본 (선택 사항)", "voxcpmVoiceDescriptionPlaceholder": "음성 설명 (선택 사항)", "voxcpmAddClone": "클론 추가", "voxcpmRecordingUnsupported": "이 브라우저는 녹음을 지원하지 않습니다", "voxcpmRecordedVoiceName": "녹음된 음성", "voxcpmRecordingFailed": "녹음 변환에 실패했습니다", "voxcpmRecordingStartFailed": "녹음을 시작할 수 없습니다", "voxcpmBaseUrlRequired": "먼저 VoxCPM Base URL을 입력하세요", "voxcpmPreviewFailed": "미리 듣기에 실패했습니다", "voxcpmVoiceSaved": "VoxCPM 음성이 저장되었습니다", "voxcpmVoiceSaveFailed": "음성 저장에 실패했습니다", "voxcpmReferenceAudioInvalid": "유효하지 않은 참조 오디오입니다", "voxcpmCloneSaved": "VoxCPM 클론 음성이 저장되었습니다", "voxcpmCloneSaveFailed": "클론 음성 저장에 실패했습니다", "voxcpmStopPreview": "미리 듣기 중지", "voxcpmPreviewVoice": "음성 미리 듣기", "voxcpmDeleteVoice": "음성 삭제", "providerOpenAIWhisper": "OpenAI ASR (gpt-4o-mini-transcribe)", "providerBrowserNative": "브라우저 기본 ASR", "providerQwenASR": "Qwen ASR (Alibaba Cloud Bailian)", "providerFunASRASR": "FunASR (로컬)", "providerLemonadeASR": "Lemonade ASR (로컬)", "providerAzureASR": "Azure STT", "providerUnpdf": "unpdf (내장)", "providerMinerU": "MinerU", "providerMinerUCloud": "MinerU (클라우드)", "browserNativeTTSNote": "브라우저 기본 TTS는 별도 설정 없이 완전 무료로 사용할 수 있으며, 시스템 내장 음성을 사용합니다", "testTTS": "TTS 테스트", "testASR": "ASR 테스트", "testSuccess": "테스트 성공", "testFailed": "테스트 실패", "ttsTestText": "TTS 테스트 텍스트", "ttsTestSuccess": "TTS 테스트 성공, 오디오가 재생되었습니다", "ttsTestFailed": "TTS 테스트에 실패했습니다", "asrTestSuccess": "음성 인식에 성공했습니다", "asrTestFailed": "음성 인식에 실패했습니다", "asrProcessing": "처리 중...", "asrResult": "인식 결과", "asrNotSupported": "브라우저가 Speech Recognition API를 지원하지 않습니다", "browserTTSNotSupported": "브라우저가 Speech Synthesis API를 지원하지 않습니다", "browserTTSNoVoices": "현재 브라우저에 사용 가능한 TTS 음성이 없습니다", "microphoneAccessDenied": "마이크 접근이 거부되었습니다", "microphoneAccessFailed": "마이크 접근에 실패했습니다", "asrResultPlaceholder": "녹음 후 인식 결과가 표시됩니다", "useThisProvider": "이 제공업체 사용", "fetchVoices": "음성 목록 가져오기", "fetchingVoices": "가져오는 중...", "voicesFetched": "음성 목록을 가져왔습니다", "fetchVoicesFailed": "음성 목록 가져오기에 실패했습니다", "voiceApiKeyRequired": "API 키가 필요합니다", "voiceBaseUrlRequired": "Base URL이 필요합니다", "ttsTestTextPlaceholder": "변환할 텍스트를 입력하세요", "ttsTestTextDefault": "안녕하세요, 테스트 음성입니다.", "startRecording": "녹음 시작", "stopRecording": "녹음 중지", "recording": "녹음 중...", "transcribing": "변환 중...", "transcriptionResult": "변환 결과", "noTranscriptionResult": "변환 결과가 없습니다", "baseUrlOptional": "Base URL (선택 사항)", "defaultValue": "기본값", "voiceMarin": "추천 - 최고 품질", "voiceCedar": "추천 - 최고 품질", "voiceAlloy": "중립적, 균형 잡힌", "voiceAsh": "안정적, 전문적", "voiceBallad": "우아하고 서정적인", "voiceCoral": "따뜻하고 친근한", "voiceEcho": "남성, 명료한", "voiceFable": "서사적, 생동감 있는", "voiceNova": "여성, 밝은", "voiceOnyx": "남성, 깊은", "voiceSage": "지혜롭고 차분한", "voiceShimmer": "여성, 부드러운", "voiceVerse": "자연스럽고 매끄러운", "glmVoiceTongtong": "기본 음성", "glmVoiceChuichui": "Chuichui 음성", "glmVoiceXiaochen": "Xiaochen 음성", "glmVoiceJam": "Jam 음성", "glmVoiceKazi": "Kazi 음성", "glmVoiceDouji": "Douji 음성", "glmVoiceLuodo": "Luodo 음성", "qwenVoiceCherry": "밝고 따뜻하며 자연스러운", "qwenVoiceSerena": "부드럽고 온화한", "qwenVoiceEthan": "활기차고 생동감 있는", "qwenVoiceChelsie": "애니메이션 버추얼 여자친구", "qwenVoiceMomo": "장난스럽고 발랄한", "qwenVoiceVivian": "귀엽고 톡톡 튀는", "qwenVoiceMoon": "시원하고 멋진", "qwenVoiceMaia": "지적이고 온화한", "qwenVoiceKai": "귀를 위한 힐링 스파", "qwenVoiceNofish": "권설음을 못 하는 디자이너", "qwenVoiceBella": "취하지 않는 꼬마 아가씨", "qwenVoiceJennifer": "브랜드급 시네마틱 미국 여성 목소리", "qwenVoiceRyan": "빠르고 드라마틱한 퍼포먼스", "qwenVoiceKaterina": "기억에 남는 리듬의 성숙한 여성", "qwenVoiceAiden": "요리에 능통한 미국 소년", "qwenVoiceEldricSage": "차분하고 지혜로운 어른", "qwenVoiceMia": "봄물처럼 부드럽고 눈처럼 단정한", "qwenVoiceMochi": "동심을 간직한 똑똑한 어른아이", "qwenVoiceBellona": "우렁찬 목소리, 명확한 발음, 생생한 캐릭터", "qwenVoiceVincent": "전쟁과 명예의 이야기를 전하는 독특한 허스키 보이스", "qwenVoiceBunny": "초귀여운 꼬마 아가씨", "qwenVoiceNeil": "전문 뉴스 앵커", "qwenVoiceElias": "전문 강사", "qwenVoiceArthur": "세월과 건초 냄새가 밴 투박한 목소리", "qwenVoiceNini": "찹쌀떡처럼 부드럽고 찐득한 목소리", "qwenVoiceEbona": "녹슨 열쇠 같은 속삭임", "qwenVoiceSeren": "편안한 잠을 돕는 부드럽고 안정적인 목소리", "qwenVoicePip": "장난꾸러기지만 동심 가득한", "qwenVoiceStella": "달콤하고 엉뚱한 소녀 목소리", "qwenVoiceBodega": "열정적인 스페인 아저씨", "qwenVoiceSonrisa": "열정적인 라틴 아메리카 여성", "qwenVoiceAlek": "전쟁의 나라 차가운 기운, 울 코트 속 따뜻한 마음", "qwenVoiceDolce": "느긋한 이탈리아 아저씨", "qwenVoiceSohee": "상냥하고 명랑한 한국 언니", "qwenVoiceOnoAnna": "장난기 많은 소꿉친구", "qwenVoiceLenn": "정장 입고 포스트펑크 듣는 이성적인 독일 청년", "qwenVoiceEmilien": "낭만적인 프랑스 오빠", "qwenVoiceAndre": "매력적이고 자연스러우며 차분한 남성 목소리", "qwenVoiceRadioGol": "축구 시인 Rádio Gol!", "qwenVoiceJada": "활발한 상하이 아가씨", "qwenVoiceDylan": "베이징 소년", "qwenVoiceLi": "다정한 요가 선생님", "qwenVoiceMarcus": "넓은 얼굴, 과묵한 말투, 단단한 심지 — 옛 산시 사나이", "qwenVoiceRoy": "유머러스하고 솔직한 대만 소년", "qwenVoicePeter": "천진 만담 전문 진행자", "qwenVoiceSunny": "달콤한 쓰촨 아가씨", "qwenVoiceEric": "청두 신사", "qwenVoiceRocky": "유머러스한 홍콩 남자", "qwenVoiceKiki": "달콤한 홍콩 아가씨", "lang_auto": "자동 감지", "lang_zh": "中文", "lang_yue": "粤語", "lang_en": "English", "lang_ja": "日本語", "lang_ko": "한국어", "lang_es": "Español", "lang_fr": "Français", "lang_de": "Deutsch", "lang_ru": "Русский", "lang_ar": "العربية", "lang_pt": "Português", "lang_it": "Italiano", "lang_af": "Afrikaans", "lang_hy": "Հայերեն", "lang_az": "Azərbaycan", "lang_be": "Беларуская", "lang_bs": "Bosanski", "lang_bg": "Български", "lang_ca": "Català", "lang_hr": "Hrvatski", "lang_cs": "Čeština", "lang_da": "Dansk", "lang_nl": "Nederlands", "lang_et": "Eesti", "lang_fi": "Suomi", "lang_gl": "Galego", "lang_el": "Ελληνικά", "lang_he": "עברית", "lang_hi": "हिन्दी", "lang_hu": "Magyar", "lang_is": "Íslenska", "lang_id": "Bahasa Indonesia", "lang_kn": "ಕನ್ನಡ", "lang_kk": "Қазақша", "lang_lv": "Latviešu", "lang_lt": "Lietuvių", "lang_mk": "Македонски", "lang_ms": "Bahasa Melayu", "lang_mr": "मराठी", "lang_mi": "Te Reo Māori", "lang_ne": "नेपाली", "lang_no": "Norsk", "lang_fa": "فارسی", "lang_pl": "Polski", "lang_ro": "Română", "lang_sr": "Српски", "lang_sk": "Slovenčina", "lang_sl": "Slovenščina", "lang_sw": "Kiswahili", "lang_sv": "Svenska", "lang_tl": "Tagalog", "lang_fil": "Filipino", "lang_ta": "தமிழ்", "lang_th": "ไทย", "lang_tr": "Türkçe", "lang_uk": "Українська", "lang_ur": "اردو", "lang_vi": "Tiếng Việt", "lang_cy": "Cymraeg", "lang_zh-CN": "中文(简体,中国)", "lang_zh-TW": "中文(繁體,台灣)", "lang_zh-HK": "粵語(香港)", "lang_yue-Hant-HK": "粵語(繁體)", "lang_en-US": "English (United States)", "lang_en-GB": "English (United Kingdom)", "lang_en-AU": "English (Australia)", "lang_en-CA": "English (Canada)", "lang_en-IN": "English (India)", "lang_en-NZ": "English (New Zealand)", "lang_en-ZA": "English (South Africa)", "lang_ja-JP": "日本語(日本)", "lang_ko-KR": "한국어(대한민국)", "lang_de-DE": "Deutsch (Deutschland)", "lang_fr-FR": "Français (France)", "lang_es-ES": "Español (España)", "lang_es-MX": "Español (México)", "lang_es-AR": "Español (Argentina)", "lang_es-CO": "Español (Colombia)", "lang_it-IT": "Italiano (Italia)", "lang_pt-BR": "Português (Brasil)", "lang_pt-PT": "Português (Portugal)", "lang_ru-RU": "Русский (Россия)", "lang_nl-NL": "Nederlands (Nederland)", "lang_pl-PL": "Polski (Polska)", "lang_cs-CZ": "Čeština (Česko)", "lang_da-DK": "Dansk (Danmark)", "lang_fi-FI": "Suomi (Suomi)", "lang_sv-SE": "Svenska (Sverige)", "lang_no-NO": "Norsk (Norge)", "lang_tr-TR": "Türkçe (Türkiye)", "lang_el-GR": "Ελληνικά (Ελλάδα)", "lang_hu-HU": "Magyar (Magyarország)", "lang_ro-RO": "Română (România)", "lang_sk-SK": "Slovenčina (Slovensko)", "lang_bg-BG": "Български (България)", "lang_hr-HR": "Hrvatski (Hrvatska)", "lang_ca-ES": "Català (Espanya)", "lang_ar-SA": "العربية (السعودية)", "lang_ar-EG": "العربية (مصر)", "lang_he-IL": "עברית (ישראל)", "lang_hi-IN": "हिन्दी (भारत)", "lang_th-TH": "ไทย (ประเทศไทย)", "lang_vi-VN": "Tiếng Việt (Việt Nam)", "lang_id-ID": "Bahasa Indonesia (Indonesia)", "lang_ms-MY": "Bahasa Melayu (Malaysia)", "lang_fil-PH": "Filipino (Pilipinas)", "lang_af-ZA": "Afrikaans (Suid-Afrika)", "lang_uk-UA": "Українська (Україна)", "pdfSettings": "PDF 파싱", "documentParsingSettings": "문서 파싱", "supportedFormats": "지원 형식", "mineruSelfHostFormatsNote": "PDF 및 이미지 파싱에는 MinerU 서버에 mineru[pipeline] 또는 mineru[core] 추가 종속성이 필요합니다. 경량 mineru-api 설치에서는 Office 문서만 처리할 수 있습니다.", "pdfParsingSettings": "PDF 파싱 설정", "pdfDescription": "텍스트 추출, 이미지 처리, 표 인식을 지원하는 PDF 파싱 엔진을 선택하세요", "pdfProvider": "PDF 파서", "pdfFeatures": "지원 기능", "pdfApiKey": "API 키", "pdfBaseUrl": "기본 URL", "mineruDescription": "MinerU는 표 추출, 수식 인식, 레이아웃 분석 등 고급 기능을 지원하는 상용 PDF 파싱 서비스입니다.", "mineruApiKeyRequired": "사용 전 MinerU 웹사이트에서 API 키를 신청해야 합니다.", "mineruWarning": "주의", "mineruCostWarning": "MinerU는 상용 서비스로 요금이 발생할 수 있습니다. MinerU 웹사이트에서 요금 정보를 확인하세요.", "enterMinerUApiKey": "MinerU API 키 입력", "mineruLocalDescription": "MinerU는 고급 PDF 파싱(표, 수식, 레이아웃 분석)을 지원하는 로컬 배포가 가능합니다. MinerU 서비스를 먼저 배포해야 합니다.", "mineruServerAddress": "로컬 MinerU 서버 주소 (예: http://localhost:8080)", "mineruApiKeyOptional": "서버에 인증이 설정된 경우에만 필요합니다", "mineruCloudApiKeyPlaceholder": "MinerU 클라우드 API 키 입력", "optionalApiKey": "선택적 API 키", "featureText": "텍스트 추출", "featureImages": "이미지 추출", "featureTables": "표 추출", "featureFormulas": "수식 인식", "featureLayoutAnalysis": "레이아웃 분석", "featureMetadata": "메타데이터", "enableImageGeneration": "AI 이미지 생성 활성화", "imageGenerationDisabledHint": "활성화하면 강좌 생성 시 이미지가 자동으로 생성됩니다", "imageSettings": "이미지 생성", "imageSection": "텍스트에서 이미지로", "imageProvider": "이미지 생성 제공업체", "imageModel": "이미지 생성 모델", "providerSeedream": "Seedream (ByteDance)", "providerOpenAIImage": "OpenAI Image", "providerQwenImage": "Qwen Image (Alibaba)", "providerNanoBanana": "Nano Banana (Gemini)", "providerMiniMaxImage": "MiniMax Image", "providerGrokImage": "Grok Image (xAI)", "providerComfyUIImage": "ComfyUI Image", "providerLemonadeImage": "Lemonade Image (로컬)", "testImageGeneration": "이미지 생성 테스트", "testImageConnectivity": "연결 테스트", "imageConnectivitySuccess": "이미지 서비스에 성공적으로 연결되었습니다", "imageConnectivityFailed": "이미지 서비스 연결에 실패했습니다", "imageTestSuccess": "이미지 생성 테스트에 성공했습니다", "imageTestFailed": "이미지 생성 테스트에 실패했습니다", "imageTestPromptPlaceholder": "테스트할 이미지 설명을 입력하세요", "imageTestPromptDefault": "책상 위에 앉아 있는 귀여운 고양이", "imageGenerating": "이미지 생성 중...", "imageGenerationFailed": "이미지 생성에 실패했습니다", "enableVideoGeneration": "AI 동영상 생성 활성화", "videoGenerationDisabledHint": "활성화하면 강좌 생성 시 동영상이 자동으로 생성됩니다", "videoSettings": "동영상 생성", "videoSection": "텍스트에서 동영상으로", "videoProvider": "동영상 생성 제공업체", "videoModel": "동영상 생성 모델", "providerSeedance": "Seedance (ByteDance)", "providerKling": "Kling (Kuaishou)", "providerVeo": "Veo (Google)", "providerSora": "Sora (OpenAI)", "providerMiniMaxVideo": "MiniMax Video", "providerGrokVideo": "Grok Video (xAI)", "providerHappyHorse": "HappyHorse (Alibaba Cloud)", "testVideoGeneration": "동영상 생성 테스트", "testVideoConnectivity": "연결 테스트", "videoConnectivitySuccess": "동영상 서비스에 성공적으로 연결되었습니다", "videoConnectivityFailed": "동영상 서비스 연결에 실패했습니다", "testingConnection": "테스트 중...", "videoTestSuccess": "동영상 생성 테스트에 성공했습니다", "videoTestFailed": "동영상 생성 테스트에 실패했습니다", "videoTestPromptDefault": "책상 위를 걷고 있는 귀여운 고양이", "videoGenerating": "동영상 생성 중 (약 1~2분 소요)...", "videoGenerationWarning": "동영상 생성은 보통 1~2분이 소요됩니다. 잠시 기다려 주세요", "mediaRetry": "재시도", "mediaContentSensitive": "죄송합니다. 이 콘텐츠가 안전 검사를 통과하지 못했습니다.", "mediaGenerationDisabled": "설정에서 생성이 비활성화되어 있습니다", "singleAgent": "단일 에이전트", "multiAgent": "멀티 에이전트", "selectAgents": "에이전트 선택", "noVisionWarning": "현재 모델은 비전을 지원하지 않습니다. 슬라이드에 이미지를 삽입할 수 있지만, 모델이 이미지 내용을 이해하여 선택 및 레이아웃을 최적화할 수 없습니다", "serverConfigured": "서버", "serverConfiguredNotice": "이 제공업체는 서버에서 관리되므로 여기서 편집할 수 없습니다. 본인 자격 증명을 사용하려면 별도의 제공업체를 추가하세요.", "ttsProviderEnabledLabel": "이 제공업체 활성화", "ttsProviderEnabledHint": "비활성화하면 이 제공업체가 음성 선택기에서 숨겨지고 자동으로 지정되지 않습니다.", "ttsProviderUnavailableHint": "활성화하기 전에 이 제공업체를 설정하세요.", "ttsProviderDisabledByAdmin": "이 제공업체는 서버 관리자에 의해 비활성화되어 있으며 활성화할 수 없습니다.", "optionalOverride": "선택 사항 — 비워두면 서버 설정이 사용됩니다", "setupNeeded": "설정 필요", "modelNotConfigured": "시작하려면 모델을 선택하세요", "dangerZone": "위험 구역", "clearCache": "로컬 캐시 지우기", "clearCacheDescription": "교실 기록, 채팅 내역, 오디오 캐시, 앱 설정 등 로컬에 저장된 모든 데이터를 삭제합니다. 이 작업은 취소할 수 없습니다.", "clearCacheConfirmTitle": "모든 캐시를 지우시겠습니까?", "clearCacheConfirmDescription": "다음 데이터가 영구적으로 삭제되며 복구할 수 없습니다:", "clearCacheConfirmItems": "교실 및 장면, 채팅 내역, 오디오 및 이미지 캐시, 앱 설정 및 환경설정", "clearCacheConfirmInput": "계속하려면 \"DELETE\"를 입력하세요", "clearCacheConfirmPhrase": "DELETE", "clearCacheButton": "모든 데이터 영구 삭제", "clearCacheSuccess": "캐시가 지워졌습니다. 잠시 후 페이지가 새로 고침됩니다", "clearCacheFailed": "캐시 삭제에 실패했습니다. 다시 시도해 주세요", "clearCacheBlockedByOtherTabs": "앱을 연 다른 탭을 닫고 다시 시도해 주세요.", "persistUnavailable": "변경 사항이 저장되지 않고 있습니다. 앱이 저장된 데이터에 접근할 수 없습니다. 새로 고쳐도 해결되지 않으면 설정에서 로컬 캐시를 삭제하세요.", "persistChangesLost": "저장소가 복구되었지만 사용할 수 없는 동안 변경한 내용은 저장되지 못하고 마지막으로 저장된 버전으로 대체되었습니다.", "webSearchSettings": "웹 검색", "webSearchApiKey": "검색 API 키", "webSearchApiKeyPlaceholder": "검색 API 키를 입력하세요", "webSearchApiKeyPlaceholderServer": "서버 키가 설정되어 있습니다. 선택적으로 재정의할 수 있습니다", "webSearchApiKeyHint": "선택한 검색 제공업체에서 API 키를 발급받으세요", "claudeSearchModel": "검색 모델", "claudeSearchModelHint": "웹 검색을 수행하고 결과를 요약하는 Claude 모델입니다.", "webSearchApiKeyOptional": "API 키는 선택 사항입니다. 키가 없으면 공개 페이지 스크래핑이 대체 수단으로 사용됩니다.", "searxngServerOnlyNotice": "SearXNG는 서버에서 구성해야 합니다. SEARXNG_BASE_URL 환경 변수(또는 server-providers.yml의 web-search 섹션)를 설정하세요. 클라이언트가 제공한 인스턴스 URL은 허용되지 않습니다.", "baiduSubSources": "바이두 검색 소스", "baiduSubSourcesDescription": "쿼리할 바이두 소스를 하나 이상 선택하세요.", "baiduSubSourceWeb": "웹 검색", "baiduSubSourceWebDescription": "바이두 AI 검색의 일반 웹 페이지입니다.", "baiduSubSourceBaike": "바이두 바이커", "baiduSubSourceBaikeDescription": "바이두 바이커의 백과사전 항목입니다.", "baiduSubSourceScholar": "바이두 스칼라", "baiduSubSourceScholarDescription": "바이두 스칼라의 학술 논문입니다.", "viewDocs": "API 문서", "webSearchBaseUrl": "기본 URL", "webSearchServerConfigured": "서버 측 검색 API 키가 설정되어 있습니다", "optional": "선택 사항", "selectProvider": "Select Provider", "customProvider": "Custom", "presetPickHint": "Picking a provider auto-fills its base URL and protocol; enter your key then click \"Fetch Models\". Not listed? Use \"Custom\".", "presetCategory": { "tokenPlan": "Token Plans", "aggregator": "Aggregators", "thirdParty": "Vendors", "official": "Official" }, "fetchModels": "Fetch Models", "fetchModelsResult": "Fetched {total} models, added {added}", "fetchModelsNoEndpoint": "This provider has no model list endpoint — add models manually", "fetchModelsAuthError": "API key is invalid or expired", "fetchModelsFailed": "Failed to fetch models", "usage": { "title": "Usage", "refresh": "Refresh", "disclaimer": "Usage is system-tracked; only server-side calls are counted.", "totalRequests": "Requests", "totalTokens": "LLM Tokens", "dailyTrend": "Daily Token Trend", "tokens": "Tokens", "byModel": "By Model", "model": "Model", "type": "Type", "reqs": "Reqs", "usage": "Usage", "empty": "No usage data yet", "kindLlm": "LLM", "kindImage": "Image", "kindVideo": "Video", "kindTts": "Speech", "kindAsr": "ASR", "unitToken": "tokens", "unitImage": "images", "unitSecond": "sec", "unitCharacter": "chars" }, "tokenPlan": { "nav": "Token Plan", "title": "Token Plan Setup", "desc": "Pick your token plan provider and enter the key — it auto-configures every adapted modality (LLM/image/video/speech/web search).", "selectPlan": "Select Provider", "apiKey": "API Key", "enable": "Enable", "updateKey": "Update key", "modelsCount": "{{n}} models", "capabilities": "Capabilities offered", "offeredNote": "Models offered by this plan. Pick the ones you want on the generation bar — availability depends on your plan tier, and unsupported models will error at generation time." }, "ttsBrowserNativeTimelineNotice": "브라우저 내장 TTS는 편집기 타임라인의 오디오 기능(미리듣기·다시 생성·전체 음성 생성)을 지원하지 않습니다. 관리형 TTS 공급자로 전환하면 줄별 오디오를 생성·관리할 수 있습니다.", "alidocmindAccessKeyId": "AccessKey ID", "alidocmindAccessKeySecret": "AccessKey Secret" }, "profile": { "title": "프로필", "defaultNickname": "학습자" }, "media": { "imageCapability": "이미지 생성", "imageShort": "이미지", "imageHint": "슬라이드에 이미지를 생성합니다", "videoCapability": "동영상 생성", "videoShort": "영상", "videoHint": "슬라이드에 동영상을 생성합니다", "ttsCapability": "텍스트 음성 변환", "ttsShort": "음성", "ttsHint": "AI 선생님이 소리 내어 읽습니다", "asrCapability": "음성 인식", "asrShort": "마이크", "asrHint": "토론을 위한 음성 입력", "webSearchShort": "검색", "provider": "제공업체", "model": "모델", "voice": "음성", "speed": "속도", "language": "언어" }, "accessCode": { "title": "접근 코드 입력", "placeholder": "접근 코드", "error": "유효하지 않은 접근 코드입니다. 다시 시도해 주세요." } }