diff --git a/i18n/locales/ko_KR.json b/i18n/locales/ko_KR.json index 25c041e..c70f06a 100644 --- a/i18n/locales/ko_KR.json +++ b/i18n/locales/ko_KR.json @@ -1,741 +1,4328 @@ { - "version": "버전", - "moreOptions": "추가 옵션", - "path": "경로", - "discardChanges": "변경 사항 취소", - "checkForUpdates": "업데이트 확인", - "invalidJSON": "잘못된 JSON", - "eg": "예: {item}", - "advancedConfiguration": "고급 설정", - "appData": "앱 데이터", - "appLogs": "앱 로그", - "localAIServiceLogs": "로컬 AI 서비스 로그", + "you": "당신", + "select": "선택", + "conversations": "대화", + "copyToClipboard": "클립보드에 복사", + "toCopyMarkdownDirectly": "마크다운 직접 복사", + "onMessage": "메시지에서", + "selectModel": "모델 선택 | 모델들 선택", + "manageModels": "모델 @:manage", + "required": "필수", + "optional": "선택사항", + "systemPrompt": "시스템 프롬프트", + "systemPromptAttachMode": "@:systemPrompt 첨부 @:mode", + "userPrompt": "@:user 프롬프트", + "delete": "{item} 삭제", + "deleteAll": "전체 삭제", + "create": "생성", + "edit": "편집", + "enable": "활성화", + "disable": "비활성화", + "save": "저장", "cancel": "취소", + "close": "닫기", + "update": "업데이트", + "apply": "적용", + "reset": "초기화", + "icon": "아이콘", + "clear": "지우기", + "apiKey": "API 키", + "models": "모델", + "available": "사용 가능한 {itemType}", + "unavailable": "사용 불가", + "detected": "감지됨", + "continue": "계속", + "undetected": "감지 안 됨", + "welcome": "환영합니다!", + "plan": "플랜", + "waitingMessage": { + "waiting": "대기 중 :: 잠시만요 :: 곧 완료됩니다 :: 조금만 기다려주세요 :: 거의 다 되었습니다 :: 멋진 결과를 불러오는 중", + "fetchingWebResults": "웹 검색 중 :: 인터넷 탐색 중 :: 온라인 검색 중 :: 웹 조사 중 :: 정보 수집 중 :: 인터넷에 물어보는 중 :: 사이버 공간 탐험 중 :: 웹 채굴 중", + "queryingKnowledgeStack": "@:knowledgeStack.title 조회 중 :: 지식 검색 중 :: 문서 확인 중 :: 지식 베이스 탐색 중 :: 지혜 뒤지는 중 :: 디지털 도서관 참조 중 :: 아카이브 검색 중 :: 노트 뒤지는 중", + "preparingTools": "도구 준비 중 :: 도구 설정 중 :: 도구 로딩 중 :: 장비 점검 중 :: 툴킷 조립 중 :: 엔진 예열 중 :: 작업 공간 준비 중", + "connectingToModel": "모델이 마법을 부리는 중 ✨ :: AI 생각 중 :: 요청 처리 중 :: 작업 중 :: 계산 중 :: 뉴런 활성화 중 :: 깊이 고민 중 :: 지능 소환 중", + "processingContext": "컨텍스트 처리 중 :: 문맥 이해 중 :: 상황 분석 중 :: 연결고리 찾는 중 :: 전체 그림 파악 중 :: 조각 맞추는 중 :: 의미 해석 중", + "streaming": "스트리밍 중 :: 응답 전송 중 :: 답변 전달 중 :: 결과 전송 중 :: 당신에게 전달 중 :: 곧 도착합니다", + "scrubbingPIIData": "개인정보 제거 중 :: 개인정보 보호 중 :: 민감 정보 제거 중 :: 데이터 익명화 중 :: 비밀 보호 중 :: 프라이버시 모드 활성화 중 :: 민감 정보 가리는 중 :: 시크릿 모드 진행 중", + "synthesizingQuery": "더 나은 결과를 위해 쿼리 합성 중 :: 질문 최적화 중 :: 검색어 개선 중 :: 요청 다듬는 중 :: 쿼리 미세 조정 중 :: 완벽한 질문 만드는 중 :: 단어 다듬는 중", + "fetchingLiveContexts": "실시간 컨텍스트 가져오는 중 :: 실시간 데이터 수집 중 :: 최신 인사이트 가져오는 중 :: 라이브 소스와 동기화 중 :: 데이터 스트림 활용 중 :: 현재 정보 수집 중 :: 컨텍스트 피드 새로고침 중 :: 실시간 업데이트 수집 중 :: 맥박에 연결 중" + }, + "add": "추가", + "actionBar": { + "expandGroup": "{group} 펼치기", + "collapseGroup": "{group} 접기", + "showExtraAddOns": "추가 애드온 표시", + "hideExtraAddOns": "추가 애드온 숨기기", + "groups": { + "model": "모델 & 프롬프트", + "data": "데이터 & 지식", + "tools": "도구 & 페르소나" + } + }, + "unauthorized": "권한 없음", + "valid": "유효함", + "invalid": "유효하지 않음", + "done": "완료!", "confirm": "확인", - "new": "새 {item}", - "edit": "{item} 편집", - "select": "{item} 선택", - "fetch": "{item} 가져오기", - "refetch": "{item} 다시 가져오기", - "filter": "{item} 필터링", - "search": "{item} 검색", - "provider": "공급자", - "learnMore": "더 알아보기.", - "name": "이름", - "model": "모델 | 모델", - "modelId": "모델 ID", - "toggle": "{item} 전환", - "loading": "{item} 로드 중...", - "license": "라이선스", - "apiVersion": "API 버전", - "settings": { - "label": "설정 | 설정", - "description": "Msty 설정 편집", - "general": { - "label": "일반", - "language": { - "label": "언어", - "description": "Msty에서 사용할 언어를 선택하세요. 원하는 언어가 없는 경우 i18n 저장소를 통해 번역에 기여할 수 있습니다." - }, - "autoGenerateChatTitle": { - "label": "채팅 제목 자동 생성", - "description": "활성화하면 새 채팅 제목이 자동으로 생성됩니다. 온라인 모델 사용 시 첫 두 메시지를 기반으로 제목이 생성되며, 로컬 모델 사용 시 항상 활성화되어 토큰 사용량이 증가할 수 있습니다." - }, - "enableLinksInChatMessages": { - "label": "채팅 메시지 내 링크 활성화", - "description": "보안을 위해 비활성화 시 채팅 메시지에서 링크를 클릭할 수 없게 됩니다." - }, - "enableNewMessageRenderer": { - "label": "새 렌더링 엔진 사용 (베타)", - "description": "더 빠르고 사고/추론 태그를 지원하는 새 렌더링 엔진 사용 (앱 재시작 필요)" - }, - "networkProxyConfiguration": { - "label": "네트워크 프록시 설정", - "proxyAddress": { - "label": "프록시 주소", - "description": "네트워크 트래픽을 라우팅할 프록시 주소 지정. 설정 재설정 시 Msty를 완전히 재시작해야 적용됩니다." - }, - "reset": { - "success": "프록시 설정 재설정 완료" - }, - "save": { - "success": "프록시 설정 저장 완료" - } - }, - "theme": { - "label": "테마", - "appearance": { - "label": "화면 모드", - "light": "라이트", - "dark": "다크", - "system": "시스템 설정 따름" - }, - "accentColor": { - "label": "강조 색상" - }, - "fontStyle": { - "label": "글꼴 스타일" - }, - "codeTheme": { - "label": "코드 테마" - }, - "fontSize": "글꼴 크기", - "themeTray": "테마 트레이", - "toggleThemeTray": "테마 트레이 전환" - }, - "applicationInfo": { - "label": "애플리케이션 정보", - "appVersion": { - "label": "앱 버전", - "description": { - "manual": "최신 업데이트를 주기적으로 확인하며, 새 업데이트가 있으면 알림을 받습니다. 수동으로 업데이트를 확인할 수도 있습니다.", - "automatic": "최신 업데이트를 주기적으로 확인하고 자동으로 설치합니다. 수동으로 업데이트를 확인할 수도 있습니다." - }, - "viewChangelog": "변경 사항 보기", - "enableAutoUpdates": "자동 업데이트 활성화" - }, - "modelsInfo": { - "label": "모델 정보", - "description": "로컬 및 온라인 모델의 메타데이터를 업데이트합니다. 모델 파일 자체는 포함되지 않습니다.", - "fetchLatestModelsInfo": { - "label": "최신 모델 정보 가져오기" - } + "shareWithSyncedSplits": "동기화된 스플릿과 공유", + "source": "출처", + "groundingSources": "근거 출처", + "manage": "관리", + "chat": "채팅", + "advancedOptions": "고급 옵션", + "duplicate": "복제", + "manageItem": "{item} @:manage", + "success": "성공!", + "notes": "노트", + "viewNotes": "노트 보기", + "error": "오류!", + "warning": "경고", + "failedToDelete": "삭제 실패", + "failedToSave": "저장 실패", + "failedToUpdate": "업데이트 실패", + "updatedSuccess": "업데이트됨.", + "applyAndShareWithSyncedSplits": "적용하고 동기화된 스플릿과 공유", + "clickToEdit": "클릭하여 편집", + "clickToAddSystemPrompt": "클릭하여 @:systemPrompt 추가", + "pause": "일시정지", + "resume": "재개", + "retry": "재시도", + "stop": "중지", + "run": "실행", + "rerun": "재실행", + "remove": "제거", + "skip": "건너뛰기", + "unskip": "건너뛰기 취소", + "startImporting": "가져오기 시작", + "new": "새로 만들기", + "entry": "항목", + "import": "가져오기", + "connect": "연결", + "disconnect": "연결 해제", + "reconnect": "재연결", + "selectTargetFolder": "대상 폴더 선택", + "createNewFolderForImport": "가져온 항목을 위한 새 폴더 만들기", + "newFolderName": "새 폴더 이름", + "remote": "원격", + "local": "로컬", + "strength": "강점", + "provider": "제공자", + "capability": "{count}개 기능", + "preset": "프리셋", + "saveAsPreset": "@:preset으로 저장", + "append": "뒤에 추가", + "prepend": "앞에 추가", + "replace": "교체", + "description": "설명", + "mode": "모드", + "addOns": "애드온", + "user": "사용자", + "assistant": "어시스턴트", + "assistantMessage": "@:assistant @:message.title", + "connectionInfo": "연결 정보", + "exportOptions": "내보내기 옵션", + "chooseFile": "파일 선택", + "purpose": "용도", + "download": "다운로드", + "downloads": "다운로드", + "downloadAsJson": "JSON으로 다운로드", + "export": "내보내기", + "install": "설치", + "installed": "설치됨", + "modified": "수정됨", + "created": "생성됨", + "status": "상태", + "type": "유형", + "yes": "예", + "fileSize": "파일 크기", + "size": "크기", + "likes": "좋아요", + "cancelled": "취소됨", + "parameterSize": "파라미터 @:size", + "quantization": "양자화", + "quantizationLevel": "@:quantization 레벨", + "storage": "저장소", + "params": "파라미터", + "arch": "아키텍처", + "filter": "필터", + "noSearchResults": "이 검색에 대한 {item}을(를) 찾을 수 없습니다", + "loading": "로딩 중", + "invite": "초대", + "refresh": "새로고침", + "email": "이메일", + "role": "역할", + "admin": "관리자", + "owner": "소유자", + "inActive": "비활성", + "argument": "인수", + "abort": "중단", + "send": "전송", + "remindMeLater": "나중에 알림", + "text": "텍스트", + "folders": "폴더", + "folder": "폴더", + "title": "제목", + "search": "검색", + "none": "없음", + "change": "변경", + "expandAllProjects": "모든 프로젝트 펼치기", + "collapseAllProjects": "모든 프로젝트 접기", + "clone": { + "title": "{item} 복제", + "successMessage": { + "detail": "{item} 복제됨" + }, + "errorMessage": { + "detail": "{item} 복제 실패" + } + }, + "notesPurposePlaceholder": "이 {item}의 목적과 기타 세부 사항을 기억하는 데 도움이 되는 노트 추가 (@:optional)", + "endpointTestResults": "엔드포인트 테스트 결과", + "testConnection": "연결 테스트", + "emptyPlaceholder": "{item}을(를) 찾을 수 없습니다", + "selectItem": "{item} @:select", + "selectedItemLabel": "{count}개 {title}", + "feature": "기능", + "raw": "원본", + "rawOutput": "원본 출력", + "property": "속성", + "configure": "구성", + "context": "컨텍스트", + "path": "경로", + "project": { + "createRootProject": "루트에 새 프로젝트", + "projectName": "프로젝트 이름", + "projectDescription": "프로젝트 설명", + "defaultModel": "기본 모델", + "customInstructions": "사용자 지정 지침", + "addChildProject": "하위 프로젝트 추가", + "deleteProject": "프로젝트 삭제", + "setDefaultForNewConversations": "새 대화의 기본 프로젝트로 설정", + "unsetDefaultForNewConversations": "기본 프로젝트 설정 해제", + "orphanageProjectName": "기타", + "includeProjectContext": "프로젝트 컨텍스트 포함", + "deleteConfirmation": { + "header": "프로젝트 삭제", + "message": "{projectName}과(와) 모든 대화를 삭제하시겠습니까?", + "rejectLabel": "@:cancel", + "acceptLabel": "@:delete", + "successMessage": { + "detail": "프로젝트 삭제됨" + } + }, + "deleteAllConversations": { + "title": "모든 대화 삭제", + "description": "{projectName}의 모든 대화를 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.", + "successMessage": { + "detail": "{count}개 대화 삭제됨", + "empty": "삭제할 대화가 없습니다" + }, + "errorMessage": { + "detail": "대화 삭제 실패" + } + }, + "projectForm": { + "addFiles": "파일 추가", + "editProject": "프로젝트 편집", + "createNewProject": "새 프로젝트", + "dragAndDropFiles": "이 프로젝트의 각 대화에 첨부될 파일을 드래그 앤 드롭하세요.", + "successMessage": { + "summary": "@:success", + "createDetail": "프로젝트 생성됨", + "updateDetail": "프로젝트 업데이트됨" + }, + "errorMessage": { + "summary": "@:error", + "createDetail": "프로젝트 생성 실패", + "updateDetail": "프로젝트 업데이트 실패" + } + } + }, + "selectedModel": "선택된 모델", + "endpoint": "엔드포인트", + "authToken": "인증 토큰", + "before": "이전", + "after": "이후", + "method": "메서드", + "httpMethod": "HTTP @:method", + "get": "가져오기", + "post": "게시", + "presetAlreadyExistsMessage": "같은 이름의 @:preset이 이미 존재합니다.", + "duplicatePresetOverwriteMessage": "@:presetAlreadyExistsMessage 저장하면 기존 프리셋을 덮어쓰게 됩니다.", + "noPropsAvailable": "사용 가능한 {propsName}이(가) 없습니다. 사용자 지정 항목을 추가하세요.", + "localAI": "@:local AI", + "conversation": { + "title": "대화", + "conversationTitle": "@:conversation.title 제목", + "contextShieldErrorMessage": { + "summary": "컨텍스트 요약 생성 실패.", + "detail": "설정 > 알림에서 자세한 내용을 확인하세요." + }, + "sendErrorMessage": { + "summary": "메시지 전송 실패.", + "detail": "설정 > 알림에서 자세한 내용을 확인하세요. {error}" + }, + "deleteConversation": "@:conversation.title 삭제", + "addNewConversation": "새 @:conversation.title 추가", + "newConversation": "새 @:conversation.title", + "promptPlaceHolder": { + "normal": { + "focused": "빠른 명령을 위해 {trigger}를 누르거나 입력을 시작하세요...", + "unfocused": "/를 눌러 포커스하고 입력을 시작하세요" + } + }, + "deleteConfirmation": { + "header": "@:conversation.title 삭제", + "message": "선택한 대화와 모든 채팅 스플릿을 삭제하시겠습니까?", + "rejectLabel": "@:cancel", + "acceptLabel": "@:delete", + "successMessage": { + "detail": "@:conversation.title 삭제됨" + }, + "errorMessage": { + "summary": "@:error", + "detail": "@:conversation.title 삭제 실패" + } + }, + "convertToChat": { + "title": "채팅으로 변환", + "successMessage": { + "detail": "@:conversation.title이(가) 채팅으로 변환됨" + }, + "errorMessage": { + "summary": "@:error", + "detail": "대화를 채팅으로 변환하는 데 실패했습니다" + } + }, + "convertToForgeCanvas": { + "title": "@:forge.forgeCanvas로 변환", + "successMessage": { + "detail": "@:conversation.title이(가) @:forge.forgeCanvas로 변환됨" + }, + "errorMessage": { + "summary": "@:error", + "detail": "대화를 @:forge.forgeCanvas로 변환하는 데 실패했습니다" + } + }, + "cloneAncestorsSuccess": { + "summary": "@:success", + "detail": "메시지가 새 스플릿으로 복제되었습니다" + }, + "cloneAncestorsError": { + "summary": "@:error", + "detail": "메시지를 새 스플릿으로 복제하는 데 실패했습니다" + }, + "cloneAncestorsToNewConversationSuccess": { + "summary": "@:success", + "detail": "메시지가 새 대화로 복제되었습니다" + }, + "cloneAncestorsToNewConversationError": { + "summary": "@:error", + "detail": "메시지를 새 대화로 복제하는 데 실패했습니다" + } + }, + "conversationActions": { + "exportConversation": { + "title": "@:conversation.title을(를) JSON으로 내보내기", + "successMessage": "대화를 JSON으로 성공적으로 내보냈습니다" + }, + "showAllSplits": "모든 스플릿 표시", + "saveSplitsAs": "스플릿을 다른 이름으로 저장", + "newSingleSplitChat": "새 단일 스플릿 채팅", + "splitPreset": "스플릿 프리셋", + "splitPresetForm": { + "saveTitle": "스플릿을 @:preset으로 저장", + "editTitle": "스플릿 @:preset {presetName} 편집", + "presetName": "@:preset 이름", + "presetOptions": "@:preset 옵션", + "presetOptionsPlaceholder": "@:preset 옵션 @:select", + "savePreset": "@:preset 저장", + "successMessage": { + "summary": "@:success", + "saveDetail": "스플릿 @:preset 추가됨", + "editDetail": "스플릿 @:preset 업데이트됨" + }, + "errorMessage": { + "saveDetail": "스플릿 @:preset 저장 실패" + } + }, + "deleteSplitPresetConfirmation": { + "header": "스플릿 @:preset 삭제", + "message": "{splitPresetName}을(를) 삭제하시겠습니까?", + "successMessage": { + "detail": "스플릿 @:preset 삭제됨" + } + }, + "compactMode": "컴팩트 모드", + "enableCompactMode": "@:conversationActions.compactMode @:enable", + "disableCompactMode": "@:conversationActions.compactMode @:disable", + "splitWidths": { + "title": "스플릿 너비", + "slim": "슬림", + "balanced": "균형", + "roomy": "여유", + "spacious": "넓은", + "full": "전체" + } + }, + "modelParams": { + "params": "파라미터", + "title": "모델 파라미터", + "advancedParams": "고급 파라미터", + "providerOptions": "제공자 옵션", + "maxTokens": "최대 출력 토큰 (레거시)", + "maxOutputTokens": "최대 출력 토큰", + "temperature": "Temperature", + "topP": "Top P", + "presencePenalty": "존재 페널티", + "frequencyPenalty": "빈도 페널티", + "numCtx": "컨텍스트 윈도우 @:size", + "numGpu": "GPU 레이어 수", + "selectPlaceholder": "파라미터 @:select 또는 입력", + "selectPresetPlaceholder": "@:preset @:select", + "saveAsPreset": "@:preset으로 저장", + "addParameter": "새 파라미터 추가", + "extraParams": "추가 @:params", + "applyAndSaveAsDefault": "적용 및 모델 기본값으로 저장", + "savePresetForm": { + "title": "@:modelParams.params을(를) 프리셋으로 저장", + "errorMessage": { + "detail": "파라미터 프리셋 저장 실패" + }, + "successMessage": { + "detail": "@:modelParams.params 프리셋 저장됨" + } + }, + "deletePresetConfirm": { + "title": "@:preset 삭제", + "message": "{presetName}을(를) 삭제하시겠습니까?", + "errorMessage": { + "detail": "파라미터 프리셋 삭제 실패" + }, + "successMessage": { + "detail": "@:modelParams.params 프리셋 삭제됨" + } + }, + "thinkingEffort": { + "label": "사고 수준", + "light": "가볍게 생각", + "moderate": "적당히 생각", + "deep": "깊게 생각", + "default": "기본", + "none": "없음", + "dynamic": "동적", + "exclude": "제외" + } + }, + "chatSplitActions": { + "title": "스플릿 옵션", + "addSplitChat": "스플릿 채팅 추가", + "hideSplit": "스플릿 숨기기", + "deleteSplit": "스플릿 삭제", + "removeSplit": "스플릿 제거", + "splitRemoved": "스플릿 제거됨", + "splitReset": "스플릿 초기화됨", + "exportOrCopyChat": { + "exportChat": "채팅 내보내기", + "copyChat": "채팅 복사", + "activeBranchAsJson": "활성 브랜치를 JSON으로", + "activeBranchAsMarkdown": "활성 브랜치를 마크다운으로", + "allBranchesAsJson": "모든 브랜치를 JSON으로", + "successMessage": "채팅을 {format}으로 {action}함", + "action": { + "export": "내보내기", + "copy": "복사" + } + }, + "showAllHiddenMessages": { + "title": "숨겨진 모든 메시지 표시", + "successMessage": { + "detail": "숨겨진 모든 메시지가 표시됨" + } + }, + "deleteConfirmation": { + "header": "스플릿 삭제", + "message": "이 스플릿을 삭제하시겠습니까?", + "rejectLabel": "@:cancel", + "acceptLabel": "@:delete" + } + }, + "message": { + "title": "메시지", + "currentMessageAndDescendants": "메시지와 하위 메시지", + "sendOnEnter": "Enter 키로 전송", + "resendUserMessage": "사용자 메시지 재전송", + "sendAsAssistantMessage": "@:assistant 메시지로 전송", + "stopGeneration": "중지", + "renderingActions": { + "bookmark": "메시지 북마크", + "removeBookmark": "북마크 제거", + "deleteMessage": "메시지 삭제", + "removeMessage": "메시지 제거", + "regenerateAssistantMessage": "어시스턴트 메시지를 새 브랜치로 재생성", + "continueGeneration": "생성 @:continue", + "useAsPromptInNewSplit": "새 스플릿에서 프롬프트로 사용", + "foldUp": "위 메시지 접기", + "unfold": "위 메시지 펼치기", + "cloneAncestorsToNewSplit": "상위 메시지와 함께 새 스플릿으로 복제", + "cloneAncestorsToNewConversation": "상위 메시지와 함께 새 대화로 복제", + "extraActions": "추가 작업" + }, + "noModelSelectedErrorMessage": { + "summary": "@:error", + "detail": "선택된 모델이 없습니다. 메시지를 보내려면 모델을 선택하세요" + }, + "currentMessageDeleteConfirmation": { + "header": "메시지 삭제", + "message": "이 메시지를 삭제하시겠습니까?" + }, + "currentMessageAndDescendantsDeleteConfirmation": { + "header": "메시지와 하위 메시지 삭제", + "message": "이 메시지와 모든 하위 메시지를 삭제하시겠습니까?" + } + }, + "slashCommands": { + "title": "빠른 명령", + "noMatches": "일치하는 명령이 없습니다", + "hint": "\\ 다음에 명령어 또는 별칭 입력", + "executed": { + "regenerate": "메시지 재생성 중...", + "shield": "컨텍스트 실드 적용됨", + "compress": "실드로 압축 중...", + "bookmark": "메시지가 북마크됨", + "copy": "클립보드에 복사됨", + "continue": "생성 계속 중...", + "resend": "메시지 재전송 중..." + } + }, + "shiftcutMode": { + "isOn": "Shiftcut 활성화됨. Shift를 두 번 눌러 비활성화", + "isOff": "Shiftcut 비활성화됨. Shift를 두 번 눌러 활성화" + }, + "urlEndpoint": "URL 엔드포인트", + "giveUniqueNamePlaceholder": "고유한 이름을 지정하세요", + "duplicateName": "중복되거나 유효하지 않은 {item} 이름입니다. 고유한 이름을 입력하세요.", + "manageData": { + "firstBackupReminder": "데이터를 백업하지 않았습니다. 백업을 위해 데이터를 내보내시겠습니까?", + "scheduledBackupReminder": "마지막 백업 이후 24시간이 지났습니다. 백업을 위해 데이터를 내보내시겠습니까?", + "nonPersistentStorage": "저장 공간 부족 시 브라우저에서 저장소가 지워질 수 있습니다. 정기적으로 데이터를 백업하는 것을 권장합니다.", + "exportData": "@:data @:export", + "clearData": "@:data 지우기", + "restoreData": "@:data 복원", + "dragAndDropExportedData": "복원할 데이터 백업을 드래그 앤 드롭하세요.", + "restoreDataWarning": "백업 파일에서 복원하면 기존 데이터가 모두 대체됩니다. 먼저 백업을 내보내는 것을 권장합니다.", + "exportErrorMessage": { + "summary": "@:error", + "detail": "데이터 내보내기 실패" + }, + "backupData": "@:data 백업", + "exportSuccessMessage": { + "summary": "@:success", + "detail": "@:data 내보내기 완료" + }, + "clearErrorMessage": { + "summary": "@:error", + "detail": "데이터 지우기 실패" + }, + "clearSuccessMessage": { + "summary": "@:success", + "detail": "@:data가 지워졌습니다" + }, + "confirmationActionPlaceholder": "여기에 '{string}' 입력", + "proceedWithConfirmationAction": "계속하려면 아래에 '{string}'을(를) 입력하세요", + "invalidConfirmationString": { + "summary": "경고", + "detail": "잘못된 확인입니다. 계속하려면 '{string}'을(를) 입력하세요." + }, + "clearDataConfirmation": { + "header": "@:data 지우기", + "message": "모든 데이터를 지우시겠습니까? 이 작업은 취소할 수 없습니다.", + "rejectLabel": "취소", + "acceptLabel": "지우기" + }, + "restoreDataConfirmation": { + "fileNotSelectedWarning": { + "summary": "경고", + "message": "복원할 파일을 선택하세요" + }, + "header": "@:data 복원", + "message": "모든 데이터를 복원하시겠습니까? 이 작업은 기존 데이터를 모두 대체하며 취소할 수 없습니다. 먼저 백업을 내보내는 것을 권장합니다.", + "rejectLabel": "취소", + "acceptLabel": "복원" + }, + "importDataSuccessMessage": { + "summary": "@:success", + "detail": "@:data 가져오기 완료" + }, + "importDataErrorMessage": { + "summary": "@:error", + "detail": "@:data 가져오기 실패" + } + }, + "setupItem": { + "label": "{item} 설정", + "success": "{item} 설정 완료", + "failure": "{item} 설정 실패" + }, + "onboard": { + "greeting": "Msty Studio에 오신 것을 환영합니다!", + "getStarted": "시작하려면 최소 하나의 모델 제공자가 필요합니다.", + "desktop": { + "greeting": "Msty에 오신 것을 환영합니다!", + "getStarted": "어떻게 시작하시겠습니까?", + "customLocation": { + "title": "Ollama/Msty 모델을 가지고 계신가요?", + "titleMLX": "MLX 모델을 가지고 계신가요?", + "description": "기존 Ollama 또는 Msty 모델을 직접 사용하거나 사용자 지정 위치를 지정할 수 있습니다. 참고: 해당 모델을 실행하기 위해 자체 서비스를 사용합니다.", + "descriptionMLX": "MLX 모델이 아직 없는 경우 저장할 사용자 지정 위치를 지정할 수 있습니다.", + "descriptionMLXWithSwama": "Hugging Face Hub 캐시에서 MLX 모델을 찾았습니다! 직접 사용하거나 사용자 지정 위치를 지정할 수 있습니다.", + "noLocationSet": "위치가 설정되지 않음", + "setYourOwn": "직접 설정", + "notAvailableForMLX": "MLX에는 사용자 지정 모델 위치를 사용할 수 없습니다", + "placeholder": "사용자 지정 모델 경로 입력" + }, + "setupLocalAI": { + "description": "시작하기 위해 {modelName}을(를) 다운로드합니다. 다른 모델을 선택할 수 있습니다.", + "pros": { + "item1": "DeepSeek R1, Meta Llama4, Microsoft Phi4, IBM Granite, Google Gemma 등의 모델 사용", + "item2": "오프라인으로 사용하고 @:data를 비공개로 유지", + "item3": "모델을 무료로 다운로드하고 사용", + "item4": "전문화된 모델 설치 및 사용" }, - "appSettings": { - "label": "앱 설정", - "description": "기본 설정으로 재설정하여 문제 해결 가능 (채팅 기록이나 모델은 삭제되지 않음)", - "resetAppSettings": { - "label": "앱 설정 재설정", - "success": "앱 설정이 재설정되었습니다" - } + "cons": { + "item1": "추가 저장 공간과 메모리 필요" }, - "dataPaths": { - "label": "데이터 경로", - "description": "모든 데이터는 기기에 로컬로 저장됩니다. 파일 구조를 잘 알고 있는 경우에만 수정하세요.", - "activeWorkspace": "활성 작업공간" + "successMessage": { + "summary": "완료!", + "detail": "이제 비공개로 안전하게 모델과 채팅을 시작할 수 있습니다." }, - "helpAndDiscussions": { - "label": "도움말 및 토론", - "description": "Discord 커뮤니티에서 지원을 받고 피드백을 공유하세요", - "sayHi": "인사하기", - "viewDocs": "문서 보기" + "errorMessage": { + "summary": "@:localAIService 설정 오류", + "detail": "@:localAIService를 설정할 수 없습니다. 자세한 내용은 로그를 확인하세요. {errorMessage}", + "epermDetail": "Local AI 설정 중 권한 문제가 발생했습니다. 관리자로 앱을 다시 실행하거나(권장하지 않음) 단일 사용자용으로만 앱을 설치하는 것을 고려하세요(권장).", + "abortDetail": "{errorMessage} 이 오류가 계속 발생하면 아카이브 파일에서 Local AI를 설치하는 것을 고려하세요. https://docs.msty.studio/getting-started/onboarding를 방문하세요" } - } - }, - "localAI": { - "manageLocalAIModels": "로컬 AI 모델 관리", - "localAIService": { - "label": "로컬 AI 서비스", - "saveAndRestartService": "저장 후 서비스 재시작", - "restartingService": "로컬 AI 서비스 재시작 중", - "modelsDirectory": { - "label": "모델 디렉토리", - "description": "로컬 LLM 저장 경로", - "editModelsPath": { - "label": "모델 경로 편집", - "description": "모델 다운로드 위치 설정 (변경 시 서비스 재시작 필요)", - "willRestartLocalAIWarning": "참고: 모델 경로 변경 시 적용을 위해 로컬 AI 서비스가 재시작됩니다.", - "selectModelsPath": "모델 경로 선택", - "success": "모델 경로 저장 완료" - } + }, + "setupMLX": { + "errorMessage": { + "summary": "MLX 서비스 설정 오류", + "detail": "MLX 서비스를 설정할 수 없습니다. 자세한 내용은 로그를 확인하세요. {errorMessage}" }, - "serviceHealth": { - "label": "서비스 상태", - "description": "로컬 AI 서비스 현재 상태. 문제 발생 시 서비스 재시작을 시도해보세요.", - "healthStatus": { - "starting": "시작 중", - "running": "실행 중", - "stopped": "중지됨", - "unknown": "상태 불명" - }, - "startService": "서비스 시작", - "restartService": "서비스 재시작", - "stopService": "서비스 중지" - }, - "serviceEndpoint": { - "label": "서비스 엔드포인트", - "description": { - "base": "다른 애플리케이션에서 연결할 로컬 AI 서비스 주소", - "serviceIsNotRunning": "서비스 실행 시 주소가 여기에 표시됩니다.", - "serviceIsAvailableOnNetwork": "네트워크 서비스 URL을 통해 다른 기기에서 연결 가능" - }, - "localURL": "로컬 URL", - "copyLocalURL": "서비스 로컬 URL 복사", - "networkURL": "네트워크 URL", - "copyNetworkURL": "서비스 네트워크 URL 복사", - "editPortNumber": { - "label": "포트 번호 편집", - "success": "로컬 AI 서비스 포트 번호 저장 완료", - "failure": "로컬 AI 서비스 포트 번호 저장 실패" - } + "description": "시작하기 위해 {modelName}을(를) 다운로드합니다. MLX는 Apple Silicon에 최적화된 Apple의 프레임워크입니다.", + "experimentalInfo": "MLX는 현재 실험 모드입니다. 일부 제한 사항과 불완전한 부분이 있을 수 있습니다. 문제가 있으면 팀에 보고해 주세요.", + "pros": { + "item1": "Apple Silicon(M1, M2, M3, M4)에 최적화", + "item2": "통합 메모리 아키텍처로 효율적인 메모리 사용", + "item3": "MLX, SafeTensors, GGUF 모델 지원", + "item4": "macOS에서 네이티브 성능" }, - "serviceVersion": { - "label": "서비스 버전", - "description": { - "base": "로컬 AI 서비스 버전 정보", - "mac": "최신 버전 확인/업데이트 또는 서비스 완전 제거 가능" - }, - "startServiceToCheckVersion": "버전 확인을 위해 서비스를 시작하세요." + "cons": { + "item1": "Apple Silicon Mac에서만 사용 가능", + "item2": "Ollama에 비해 모델 선택이 적음" }, - "updateService": { - "success": "로컬 AI 서비스가 최신 버전으로 업데이트됨", - "failure": "로컬 AI 서비스 업데이트 실패" + "successMessage": { + "summary": "MLX 설정 완료!", + "detail": "이제 Mac에서 최적의 성능으로 MLX 모델을 사용할 수 있습니다." }, - "uninstallService": { - "label": "로컬 AI 서비스를 제거하시겠습니까?", - "description": "모델은 삭제되지 않습니다. 하지만 서비스를 재설치할 때까지 다운로드된 모델을 사용할 수 없습니다." + "progress": { + "checkingCompatibility": "시스템 호환성 확인 중...", + "downloadingBinary": "MLX 서버 다운로드 중...", + "startingService": "MLX 서비스 시작 중...", + "settingUp": "MLX 설정 중...", + "downloadProgress": "다운로드 중: {progress}%" } }, - "serviceConfigurations": { - "label": "서비스 구성", - "description": "로컬 AI 서비스 시작 시 적용되는 설정 (변경 저장 시 자동 재시작)", - "configurePortNumber": { - "label": "포트 번호 설정", - "description": "로컬 AI 서비스 실행 포트 (기본값 사용 시 공백)" + "addRemoteModelsProvider": { + "description": "대부분의 온라인 제공자의 경우 제공자 웹사이트에서 API 키를 받아야 합니다. {findYourKey}", + "findYourKey": "API 키 찾기", + "pros": { + "item1": "OpenAI, Azure, Claude Sonnet, Google Gemini, Perplexity, Remote Ollama, Remote Msty 등 사용", + "item2": "모델 다운로드 없이 시작", + "item3": "일부 공급업체는 이미지 생성, 웹 검색 등의 추가 기능 제공" }, - "maximumParallelChats": { - "label": "최대 병렬 채팅 수", - "description": "동시 채팅 세션 최대 수 (분할 모드 사용 시)" - }, - "maximumLoadedModels": { - "label": "최대 로드 모델 수", - "description": "동시에 메모리에 로드할 LLM 최대 수 (응답 속도 향상되나 리소스 사용 증가)" - }, - "enableNetworkAccess": { - "label": "네트워크 접근 허용", - "description": "다른 기기에서 이 로컬 AI 서비스에 IP 주소로 접근 허용" + "cons": { + "item1": "채팅하려면 인터넷 연결 필요", + "item2": "공급업체 요금이 부과될 수 있음" + } + } + }, + "modelsAvailableCount": "{count}개 모델 사용 가능", + "modelsAddedCount": "{count}개 모델 추가됨", + "forgetThisProvider": "이 제공자 삭제", + "submitAndContinue": "시작하기!", + "getSidecar": "@:localAI가 없으신가요? 1클릭 설정을 위한 @:remoteToolsConnector.title 받기", + "completedWithProvider": { + "summary": "완료!", + "detail": "이제 {providerName}의 모델 중 하나와 채팅할 준비가 되었습니다." + }, + "continueSetup": "{service} 설정 계속" + }, + "login": { + "enterEmail": "이메일을 입력하세요", + "errorMessage": "이메일이 유효하지 않거나 문제가 발생했습니다. 다시 시도하세요.", + "successMessage": "{ email }(으)로 로그인 링크가 전송되었습니다" + }, + "modelHub": { + "title": "모델 허브", + "languageModelsProviders": { + "title": "모델 제공자", + "subtitle": "클라우드 또는 원격 서버에서 모델에 액세스하세요.", + "autoFetchModels": "모델 목록이 자동 업데이트됩니다", + "addLanguageModelsProvider": "제공자 추가", + "prosAndCons": { + "pros": [ + "OpenAI GPT, Azure, Claude Sonnet, Google Gemini, Perplexity, Remote Msty, Remote Ollama 등을 사용하세요.", + "빠르게 시작하세요", + "다운로드 필요 없음" + ], + "cons": [ + "채팅하려면 인터넷 연결 필요", + "공급업체 요금이 부과될 수 있음" + ] + }, + "deleteConfirmation": { + "header": "제공자 삭제", + "message": "{providerName}을(를) 삭제하시겠습니까?", + "successMessage": { + "detail": "제공자 삭제됨" }, - "allowedNetworkOrigins": { - "label": "허용된 네트워크 출처", - "description": "허용할 네트워크 출처 목록 (쉼표 구분, http:// 또는 https://로 시작, *는 전체 허용)" + "errorMessage": { + "summary": "오류", + "detail": "제공자 삭제 실패" + } + }, + "syncProviderWithWorkspaceForm": { + "titleNew": "다른 워크스페이스에 복사", + "titleUpdate": "다른 워크스페이스에 복사/동기화", + "descriptionNew": "이 제공자를 하나 이상의 워크스페이스에 복사합니다.", + "descriptionUpdate": "이 제공자를 하나 이상의 워크스페이스에 동기화합니다. 이 제공자가 이전에 복사된 경우 업데이트됩니다. 그렇지 않으면 추가됩니다.", + "selectWorkspaces": "워크스페이스 @:select", + "availableWorkspaces": "사용 가능한 워크스페이스" + }, + "providerForm": { + "addTitle": "제공자 추가", + "updateTitle": "제공자 업데이트", + "newHeader": "새 언어 모델 제공자", + "editHeader": "언어 모델 제공자 편집", + "modelsProvider": "모델 제공자", + "modelId": "모델 ID", + "modelName": "모델 이름", + "providerName": "제공자 이름", + "providerUrl": "제공자 URL", + "providerToken": "제공자 토큰", + "saveProvider": "제공자 저장", + "selectProvider": "제공자 @:select", + "namePlaceholder": "이름 지정 (선택사항)", + "selectModels": "모델 @:select", + "availableModels": "사용 가능한 모델", + "addCustomModel": "사용자 지정 모델 추가", + "inferenceEndpoint": "추론 엔드포인트 (http:// 또는 https://로 시작해야 함)", + "baseURL": "기본 URL", + "resourceName": "리소스 이름 (기본 URL이 설정된 경우 무시됨)", + "apiVersion": "API @:version", + "region": "AWS 리전", + "accessKeyId": "액세스 키 ID", + "secretAccessKey": "비밀 액세스 키", + "sessionToken": "세션 토큰 (선택사항)", + "notAllModelsCompatible": "모든 모델이 Msty에서 테스트된 것은 아니며 제공자에서 사용 가능한 모든 모델을 지원하지 않을 수 있습니다.", + "enterAndManuallyFetchModels": "'모델 가져오기'를 클릭하여 제공자에서 사용 가능한 모델을 검색하거나(API 키가 필요할 수 있음) 아래에서 모델을 수동으로 추가하세요.", + "enterAndFetchModels": "API 키를 입력하여 {providerName}에서 사용 가능한 모든 모델을 검색하거나 사용자 지정 모델을 수동으로 추가하세요.", + "fetchModels": "모델 가져오기", + "modelsFilter": { + "all": "모든 모델", + "selected": "선택됨", + "unselected": "선택 안 됨" }, - "captureServiceLogs": { - "label": "서비스 로그 기록", - "description": "디버깅을 위한 서비스 로그 기록 (필요할 때만 활성화 권장)" + "lmsCorsNote": "Msty와 작동하려면 LM Studio에서 CORS가 활성화되어 있어야 합니다", + "successMessage": { + "summary": "@:success", + "addDetail": "모델 제공자 {providerName} 추가됨", + "updateDetail": "모델 제공자 {providerName} 업데이트됨" }, - "advancedConfiguration": { - "description": "로컬 AI 서비스 환경 변수 설정을 위한 유효한 JSON 입력" + "errorMessage": { + "summary": "@:error", + "addDetail": "제공자 추가 실패", + "updateDetail": "제공자 업데이트 실패" }, - "save": { - "success": "서비스 구성 저장 완료", - "failure": "서비스 구성 저장 실패" + "bedrockLongTermCredsWarning": "Amazon Bedrock에 장기 자격 증명을 사용하는 것은 권장하지 않습니다.", + "awsRegionExample": "예: us-east-1" + }, + "toggleVisibility": { + "errorMessage": { + "detail": "제공자 표시 여부 업데이트 실패" }, - "reset": { - "success": "서비스 구성 초기값으로 재설정", - "failure": "서비스 구성 재설정 실패" + "successMessage": { + "detail": "{provider}이(가) 이제 {visibility} 상태입니다" } }, - "chatModelConfiguration": { - "label": "채팅 모델 구성", - "description": "모든 설치된 모델에 적용되는 채팅 세션 설정", - "modelKeepAliveTimeout": { - "label": "모델 유지 시간", - "description": "사용 후 메모리에 모델을 유지할 시간(분)" - }, - "advancedConfiguration": { - "description": "채팅 시 모델에 전달할 추가 매개변수 JSON 입력" + "modelsCount": "모델 개수", + "showInSelector": "모델 선택기에 표시", + "availableModels": "사용 가능한 모델", + "noModels": "이 제공자에 사용 가능한 모델이 없습니다", + "modelUpdated": "모델이 성공적으로 업데이트되었습니다", + "modelUpdateError": "모델 업데이트 실패", + "manageProviders": "관리", + "addNewProvider": "새 제공자 추가" + }, + "sidecarLocalAIProxyEndpoint": { + "title": "@:remoteToolsConnector.title 프록시 @:localAI 엔드포인트", + "description": "@:remoteToolsConnector.title이(가) 실행 중이고 터널링을 통해 제공된 URL에서 액세스 가능한지 확인하세요. 토큰과 URL이 포함된 전체 터널 연결 정보를 복사하여 붙여넣으세요." + }, + "mstyRemoteEndpoint": { + "description": "원격 연결이 활성화된 상태로 Msty Desktop이 실행 중인지 확인하세요.", + "learnMore": "원격 연결 활성화 방법 알아보기" + }, + "mstyLocalEndpoint": { + "description": "이 서비스는 앱이 실행될 때마다 함께 실행됩니다. Local AI 포트가 변경된 경우 포트 번호를 업데이트해야 할 수 있습니다. 그렇지 않은 경우 그대로 두는 것이 좋습니다." + }, + "ollamaRemoteEndpoint": { + "description": "자체 호스팅 Ollama를 사용할 때는 Ollama가 실행 중이고 제공된 URL에서 액세스 가능한지 확인하세요. Ollama 서비스를 시작할 때 허용된 원본에 https://msty.studio를 추가해야 합니다.", + "placeholder": "예: http://localhost:11434 또는 https://ollama.com" + }, + "mlxEndpoint": { + "description": "이 제공자는 Apple Silicon Mac에서 MLX 모델을 실행하는 데 사용됩니다. 대부분의 경우 기본 엔드포인트를 변경할 필요가 없습니다. 변경하는 경우 MLX 서비스가 실행 중이고 제공된 URL에서 액세스 가능한지 확인하세요." + }, + "localModels": { + "title": "@:localAI 모델", + "noCompatibleProviders": "로컬 모델을 관리할 수 있는 호환 가능한 제공자가 없습니다. 로컬 모델을 사용하려면 Msty Remote 또는 Ollama Remote 유형의 제공자를 하나 이상 추가하세요.", + "activeDownloads": "{count}개 활성 다운로드", + "featured": { + "title": "추천 모델" + }, + "installed": { + "title": "설치된 모델" + }, + "customOllamaModelPlaceholder": "또는 태그로 모델 설치 예: {example}", + "alreadyInstalledErrorMessage": { + "summary": "이미 설치됨", + "detail": "모델 {modelName}이(가) 이미 설치되어 있습니다" + }, + "abortInstalling": { + "title": "{modelName} 설치 중단", + "successMessage": { + "detail": "{modelName} 설치가 중단되었습니다" + } + }, + "deleteConfirmation": { + "header": "모델 제거", + "message": "{modelName}을(를) 제거하시겠습니까?", + "successMessage": { + "detail": "모델 제거됨" }, - "save": { - "success": "구성 저장 완료 (채팅 시 적용)", - "failure": "모델 구성 저장 실패" + "errorMessage": { + "detail": "모델 제거 실패" + } + }, + "modelInstall": { + "successMessage": { + "detail": "모델 {modelName}을(를) 사용할 준비가 되었습니다" }, - "reset": { - "success": "채팅 모델 구성 초기값으로 재설정", - "failure": "채팅 모델 구성 재설정 실패" + "errorMessage": { + "detail": "모델 {modelName} 설치 실패", + "newerVersion": "{modelName}은(는) 최신 버전의 Local AI가 필요합니다. 설정 > Local AI > 서비스 버전 > ... > Local AI 서비스 강제 업데이트에서 최신 버전으로 업데이트하세요" } + }, + "ollamaModels": { + "title": "Ollama 모델" + }, + "huggingfaceModels": { + "title": "Hugging Face 모델", + "searchPlaceholder": "작성자, 모델로 검색하거나 Hugging Face 저장소 URL 붙여넣기", + "searchPlaceholderAlt": "이름, 작성자 또는 URL로 모델 찾기. 또는 아래 모델 패밀리 중 하나로 시작하세요.", + "searching": "모델 검색 중..." } }, - "remoteModelProviders": { - "noModels": { - "label": "AI 모델 공급자 없음", - "description": "OpenAI, Mistral, Google Gemini 등 새 공급자를 추가하여 시작하세요" + "mlxModels": { + "title": "MLX 모델", + "notAppleSilicon": "MLX 모델은 Apple Silicon Mac(M1, M2, M3, M4 등)에서만 지원됩니다. 현재 기기는 호환되지 않습니다.", + "noCompatibleProviders": "사용 가능한 호환 MLX 제공자가 없습니다. MLX 모델을 사용하려면 최소 하나의 MLX 제공자를 추가하세요.", + "activeDownloads": "{count}개 활성 MLX 다운로드", + "learnMore": "MLX에 대해 자세히 알아보기", + "featured": { + "title": "추천 MLX 모델" }, - "selectModels": "모델 선택", - "filterAvailableModels": "모델 검색", - "description": { - "whereToGetKey": "API 키는 공급자 웹사이트에서 얻을 수 있습니다.", - "whereItsStored": "API 키는 운영체제 키체인에 안전하게 저장됩니다. Linux 키링에 문제가 발생하면 앱 데이터베이스에 저장할 수 있습니다(보안 약화).", - "linuxKeyringConfiguration": "Linux 키링 구성 문제 발생 시 대체 저장 방법 사용 가능", - "keyHintInfo": "{keyHint}는 힌트일 뿐이며 실제 키는 키체인에 안전하게 저장됩니다. 키를 업데이트할 때는 새 키를 입력한 후 업데이트 버튼을 클릭하세요.", - "ifOllamaOrMstyRemote": "자동 모델 가져오기를 위해 API 키를 재입력해야 합니다" - }, - "addItem": { - "success": "{providerName} 모델 공급자 추가됨" - }, - "updateItem": { - "success": "{providerName} 모델 공급자 업데이트됨" - }, - "deleteItem": { - "label": "{providerName} 모델 공급자를 삭제하시겠습니까?", - "description": "공급자 키와 관련 모델만 삭제되며 이전 채팅 기록은 유지됩니다.", - "success": "{providerName} 모델 공급자 삭제됨" - }, - "namePlaceholder": "예: 내 {providerName} 모델", - "saveInKeychain": "키체인에 안전하게 저장", - "apiEndpoint": "API 엔드포인트", - "serviceEndpoint": "서비스 엔드포인트", - "fetchModels": { - "label": "모델 가져오기", - "refetchModels": "모델 다시 가져오기", - "description": "유효한 엔드포인트 입력 후 모델 가져오기를 시도합니다", - "noModelsAvailable": "사용 가능한 모델 없음", - "error": "모델을 가져올 수 없습니다. 엔드포인트를 확인하세요.", - "info": "{endpoint}에서 모델 가져오기를 시도하고 있습니다" - }, - "openAICompatibleUrlInfo": "http:// 또는 https:// 포함 필수", - "customModels": { - "label": "사용자 정의 모델 | 사용자 정의 모델" - }, - "targetURI": "대상 URI", - "uriOptions": "URI 옵션", - "instanceName": "인스턴스 이름", - "deploymentName": "배포 이름" - }, - "defaultPrompts": { - "label": "기본 프롬프트", - "placeholder": "프롬프트 유형 선택...", - "defaultModelPrompt": { - "label": "기본 모델 프롬프트", - "placeholder": "전역 기본 모델 프롬프트 설정..." - }, - "autoTitleGenerationPrompt": { - "label": "자동 제목 생성 프롬프트", - "placeholder": "제목 생성..." - }, - "realTimeDataSearchQueryPrompt": { - "label": "실시간 데이터 검색 쿼리 생성 프롬프트", - "placeholder": "실시간 데이터 검색 쿼리 생성..." - }, - "updatePrompt": { - "success": "{promptType} 업데이트됨" - } - }, - "licenseAndAccess": { - "label": "라이선스 및 접근", - "enterLicenseKey": "라이선스 키 입력", - "aurum": { - "label": "Aurum 라이선스", - "description": "Aurum 라이선스로 Msty의 모든 프리미엄 기능 해제", - "purchaseLicense": "라이선스 구매", - "activate": { - "label": "Aurum 라이선스 활성화", - "success": "Aurum 라이선스 활성화됨", - "failure": "Aurum 라이선스 활성화 실패: {errorMessage}" - }, - "activated": { - "description": "Aurum 라이선스가 활성화되어 모든 프리미엄 기능을 사용할 수 있습니다." - } - }, - "aurumLifetime": { - "label": "Aurum 평생 이용권", - "description": "일회성 구매로 Msty의 모든 프리미엄 기능을 영구히 이용", - "notASubscription": "참고: 이것은 구독이 아닌 일회성 구매입니다. Aurum 라이선스에서 업그레이드할 수 없습니다.", - "join": "클럽 가입", - "activate": { - "label": "Aurum 평생 라이선스 활성화", - "success": "Aurum 평생 클럽에 가입되었습니다!", - "failure": "Aurum 평생 라이선스 활성화 실패: {errorMessage}" - }, - "activated": { - "label": "Aurum 평생 접근", - "description": "Aurum 평생 클럽의 일원이 되셨습니다! 지속적인 기능 개선을 지원해주셔서 감사합니다.", - "additionalNote": "여러분의 지원 덕분에 외부 영향 없이 새로운 기능 개발에 집중할 수 있습니다." - } - } - } - }, - "searchModels": { - "label": "모델 검색...", - "noModelsFound": "검색된 모델 없음" - }, - "localAI": { - "label": "로컬 AI", - "browseModels": "온라인 모델 탐색 및 다운로드", - "startService": { - "failure": "로컬 AI 서비스 시작 실패. 다시 시도해주세요." - } - }, - "ggufModel": { - "label": "GGUF 모델 | GGUF 모델", - "import": { - "confirmation": "GGUF 모델을 어떻게 가져오시겠습니까?", - "link": { - "description": "{action} 선택 시 로컬 AI 모델 디렉토리에 심볼릭 링크 생성 (원본 파일 이동/삭제 시 사용 불가)" + "installed": { + "title": "설치된 MLX 모델" + }, + "alreadyInstalledErrorMessage": { + "summary": "이미 설치됨", + "detail": "MLX 모델 {modelName}이(가) 이미 설치되어 있습니다" + }, + "deleteConfirmation": { + "header": "MLX 모델 제거", + "message": "{modelName}을(를) 제거하시겠습니까?", + "successMessage": { + "detail": "MLX 모델 제거됨" + }, + "errorMessage": { + "detail": "MLX 모델 제거 실패" + } + }, + "modelInstall": { + "successMessage": { + "detail": "MLX 모델 {modelName}을(를) 사용할 준비가 되었습니다" + }, + "errorMessage": { + "detail": "MLX 모델 {modelName} 설치 실패" + }, + "abortedMessage": { + "detail": "MLX 모델 {modelName} 다운로드가 중단되었습니다" + } }, - "copy": { - "description": "{action} 선택 시 모델 복사본 생성 (추가 저장 공간 사용하나 원본 파일 영향 없음)" + "mlxCommunityModels": { + "title": "MLX 커뮤니티 모델", + "searchTitle": "MLX 커뮤니티 모델 검색", + "searchPlaceholder": "HuggingFace mlx-community에서 MLX 모델 검색", + "searchPlaceholderAlt": "HuggingFace에서 MLX 최적화 모델을 찾으세요. 또는 아래 모델 패밀리 중 하나로 시작하세요.", + "searching": "MLX 모델 검색 중..." } } }, - "remoteModelProviders": { - "label": "원격 모델 공급자 | 원격 모델 공급자" + "stickyPrompt": { + "title": "고정 프롬프트", + "disableStickyPrompt": "고정 프롬프트 비활성화", + "editDialog": { + "title": "고정 프롬프트 편집", + "description": "'고정' 프롬프트가 고정되면 이전 메시지를 무시하고 각 새 메시지의 시작 부분에 추가됩니다. 이를 통해 대화가 하나의 활성 컨텍스트에 집중하게 됩니다. 시스템 프롬프트는 항상 컨텍스트에 포함됩니다." + } }, - "vaporMode": { - "label": "베이퍼 모드", - "description": "활성화 시 대화 기록이 저장되지 않고 종료 시 사라집니다", - "isEnabledDescription": "베이퍼 모드가 활성화되었습니다" + "contextShield": { + "title": "컨텍스트 실드", + "enableContextShield": "@:contextShield.title 활성화", + "enableContextShieldWithSplitsSync": "@:contextShield.title 활성화{'.'} Option/Alt를 누른 상태에서 모든 동기화된 스플릿에 @:contextShield.title 적용.", + "removeContextShield": "@:contextShield.title 제거", + "removeContextShieldWithSplitsSync": "@:contextShield.title 비활성화{'.'} Option/Alt를 누른 상태에서 모든 동기화된 스플릿에서 @:contextShield.title 제거.", + "breakContext": "@:context 차단", + "customContext": "사용자 지정 @:context", + "generateContextSummary": "@:context @:summary 생성", + "contextSummary": "@:context 요약", + "regenerateContextSummary": "@:context @:summary 재생성", + "clearContextSummary": "@:context @:summary 지우기", + "summaryDescriptionInfoHeader": "이 요약은 위 대화의 컨텍스트에서 생성되며, 이 실드 아래에 새 메시지를 생성할 때 컨텍스트에 포함됩니다.", + "contextShieldWithSummary": "@:summary가 포함된 @:contextShield.title" }, - "keyboardAndMouse": { - "keyPlusClick": "키 + 클릭", - "clickToEdit": "클릭해서 편집", - "chatSelection": { - "adjacent": "폴더 내 인접 대화 선택", - "nonAdjacent": "비인접 대화 선택" + "data": "데이터", + "advancedConfigurations": "고급 구성", + "applicationInfo": { + "title": "애플리케이션 정보", + "appVersion": { + "title": "앱 버전", + "description": "최신 업데이트는 주기적으로 확인되며 새 업데이트가 있을 때 알림을 받게 됩니다. 수동으로 업데이트를 확인할 수도 있으며, 사용 가능한 업데이트가 있으면 자동으로 설치됩니다.", + "checkForUpdates": "업데이트 확인 및 적용", + "enableAutoUpdates": "자동 업데이트 활성화", + "disableAutoUpdates": "자동 업데이트 비활성화", + "viewChangelog": "변경 로그 보기", + "checkingForUpdates": "업데이트 확인 중...", + "errorCheckingUpdates": "업데이트 확인 실패", + "autoUpdatesEnabled": "자동 업데이트 활성화됨", + "autoUpdatesDisabled": "자동 업데이트 비활성화됨", + "updateAvailable": "새 업데이트 사용 가능", + "updateDownloading": "업데이트 다운로드 중...", + "noUpdatesAvailable": "최신 버전을 사용 중입니다" }, - "skipConfirmationDialog": "다양한 작업의 확인 대화상자 건너뛰기", - "shortcuts": { - "usefulShortcuts": "유용한 단축키", - "copyLastAIMessage": "마지막 AI 메시지 복사", - "regenerateLastAIMessage": "마지막 AI 메시지 재생성", - "editLastUserMessage": "마지막 사용자 메시지 편집", - "editLastAIMessage": "마지막 AI 메시지 편집", - "navigateBetweenMessages": "메시지 간 이동" + "modelsInfo": { + "title": "모델 정보", + "description": "로컬 모델 메타데이터를 업데이트합니다. 이 정보에는 각 모델에 대한 세부 정보가 포함되지만 모델 파일 자체는 포함되지 않습니다. 로컬에 저장된 모델과 온라인 모델 모두에 적용됩니다.", + "fetchLatest": "최신 모델 정보 가져오기", + "updated": "모델 정보가 성공적으로 업데이트됨", + "errorUpdating": "모델 정보 업데이트 실패" }, - "selection": "선택 | 선택", - "dropHere": "여기에 놓으세요" - }, - "aurumPerk": { - "label": "Aurum 혜택", - "description": "이 기능은 Aurum 라이선스 보유자만 사용 가능합니다.", - "supportUs": "라이선스 구매를 통해 저희를 지원해주세요." - }, - "themeTray": "테마 트레이", - "chat": "채팅 | 채팅", - "title": "제목", - "contextShield": "컨텍스트 실드", - "regenerate": "{item} 재생성", - "collapse": "{item} 접기", - "expand": "{item} 확장", - "sidebar": "사이드바", - "folder": { - "label": "폴더 | 폴더", - "deleteItem": { - "label": "{name} 폴더 삭제", - "confirmation": "{name} 폴더를 삭제하시겠습니까?" - } - }, - "allFolders": "모든 폴더", - "allConversations": "모든 대화", - "bookmark": "북마크 | 북마크", - "copyToClipboard": "{item} 클립보드에 복사", - "fuzzySearch": "유사 검색", - "matchCase": "대소문자 구분", - "item": "항목 | 항목", - "view": "{item} 보기", - "message": "메시지 | 메시지", - "itemOptions": "{item} 옵션", - "itemName": "{item} 이름", - "modelInstructions": "모델 지시사항", - "applyToThisItem": "이 {item}에 적용", - "activateItem": { - "label": "{item} 활성화", - "success": "{item} 활성화됨", - "failure": "{item} 활성화 실패" - }, - "saveChanges": "변경 사항 저장", - "saveItem": { - "label": "{item} 저장", - "as": "{item} 다른 이름으로 저장", - "asDefaultFor": "{item}의 기본값으로 저장", - "success": "{item} 저장됨", - "failure": "{item} 저장 실패" - }, - "resetItem": { - "label": "{item} 재설정", - "success": "{item} 재설정됨", - "failure": "{item} 재설정 실패" - }, - "uninstallItem": { - "label": "{item} 제거", - "confirmation": "{item}을(를) 제거하시겠습니까?", - "success": "{item} 제거됨", - "failure": "{item} 제거 실패" - }, - "addItem": { - "label": "{item} 추가", - "success": "{item} 추가됨", - "failure": "{item} 추가 실패" - }, - "moveItem": { - "label": "{item} 이동", - "success": "{item} 이동됨", - "failure": "{item} 이동 실패" - }, - "bookmarkItem": { - "label": "{item} 북마크", - "success": "{item} 북마크됨", - "failure": "{item} 북마크 실패" - }, - "removeItem": { - "label": "{item} 제거", - "success": "{item} 제거됨", - "failure": "{item} 제거 실패" - }, - "removeItemFrom": { - "success": "{source}에서 {item} 제거됨", - "failure": "{source}에서 {item} 제거 실패" - }, - "clearAndSave": "초기화 후 저장", - "clearItem": { - "label": "{item} 지우기" - }, - "hideItem": { - "label": "{item} 숨기기" - }, - "deleteItem": { - "label": "{item} 삭제", - "confirmation": "{item}을(를) 삭제하시겠습니까?", - "success": "{item} 삭제됨", - "failure": "{item} 삭제 실패" - }, - "cloneItem": { - "label": "{item} 복제", - "success": "{item} 복제됨", - "failure": "{item} 복제 실패" - }, - "createItem": { - "label": "{item} 생성", - "success": "{item} 생성됨", - "failure": "{item} 생성 실패" + "appSettings": { + "title": "앱 설정", + "description": "앱 설정을 기본값으로 재설정하면 잠재적인 문제 해결에 도움이 될 수 있습니다. 이렇게 하면 외관 및 모델 경로와 같은 기본 사용자 기본 설정이 복원되지만 채팅이나 다운로드/가져온 모델을 포함한 데이터는 삭제되지 않습니다.", + "resetApp": "앱 설정 초기화", + "resetConfirm": { + "header": "앱 설정 초기화", + "message": "모든 앱 설정을 기본값으로 재설정하시겠습니까? 기본 설정이 복원되지만 데이터는 삭제되지 않습니다." + }, + "resetSuccess": "앱 설정이 성공적으로 초기화됨", + "resetError": "앱 설정 초기화 실패" + }, + "dataPaths": { + "title": "데이터 경로", + "description": "모델, 대화, 설정 및 로그를 포함한 모든 데이터는 기기에 로컬로 저장됩니다. 애플리케이션의 파일 구조에 익숙한 경우에만 이러한 디렉터리의 내용을 수정하세요.", + "appData": "앱 데이터", + "appLogs": "앱 로그", + "openInFinder": "Finder에서 열기" + }, + "helpAndDiscussions": { + "title": "도움말 및 토론", + "description": "Discord의 커뮤니티에 연결하여 지원을 받고 피드백을 공유하며 최신 정보를 받아보세요.", + "sayHi": "인사하기!", + "viewDocs": "문서 보기" + } }, - "updateItem": { - "label": "{item} 업데이트", - "confirmation": "{item}을(를) 업데이트하시겠습니까?", - "success": "{item} 업데이트됨", - "failure": "{item} 업데이트 실패" - }, - "mergeItem": { - "label": "{item} 병합", - "success": "{item} 병합됨", - "failure": "{item} 병합 실패" - }, - "copyItem": { - "label": "{item} 복사", - "createNew": "새 복사본 생성", - "success": "{item} 복사됨", - "failure": "{item} 복사 실패" - }, - "replaceItem": { - "label": "{item} 교체", - "success": "{item} 교체됨", - "failure": "{item} 교체 실패" - }, - "linkItem": { - "label": "{item} 연결", - "success": "{item} 연결됨", - "failure": "{item} 연결 실패" - }, - "generateItem": { - "label": "{item} 생성", - "success": "{item} 생성됨", - "failure": "{item} 생성 실패" - }, - "importItem": { - "label": "{item} 가져오기", - "success": "{item} 가져오기 성공", - "failure": "{item} 가져오기 실패" - }, - "bookmarkedMessagesAndChats": { - "label": "북마크된 메시지 및 채팅", - "messages": { - "description": "북마크한 메시지가 여기에 표시됩니다. 채팅 메시지 옵션에서 북마크 아이콘을 클릭하여 시작하세요.", - "deletedMessageNavigationFailure": "삭제된 메시지로 이동할 수 없습니다." + "logViewer": { + "title": "로그 뷰어", + "description": "애플리케이션 로그를 실시간으로 보고 분석합니다. 필터와 검색을 사용하여 문제를 효율적으로 해결하세요.", + "searchPlaceholder": "로그 검색...", + "refresh": "로그 새로고침", + "autoRefreshOn": "자동 새로고침 중지", + "autoRefreshOff": "자동 새로고침 활성화", + "pause": "자동 스크롤 중지", + "resume": "자동 스크롤 재개", + "copy": "로그를 클립보드에 복사", + "download": "로그 다운로드", + "clearTemporarily": "로그 표시 지우기", + "clearPermanently": "로그 파일 지우기", + "showAllLogs": "모든 로그 표시", + "clearPermanentlyConfirmation": { + "header": "로그 파일 지우기", + "message": "로그 파일을 지우시겠습니까? 모든 로그 항목이 영구적으로 삭제됩니다." }, - "chats": { - "description": "북마크한 채팅이 여기에 표시됩니다. 분할 채팅 옵션에서 북마크를 설정하세요." + "loading": "로그 로딩 중...", + "noLogs": "사용 가능한 로그 없음", + "noMatchingLogs": "현재 필터와 일치하는 로그 없음", + "totalLines": "{count}개 전체 라인", + "filteredLines": "{count}개 필터링된 라인", + "copiedToClipboard": "로그가 클립보드에 복사됨", + "downloaded": "로그가 성공적으로 다운로드됨", + "clearedPermanently": "로그 파일이 성공적으로 지워짐", + "errorLoading": "로그 로딩 실패", + "errorCopying": "로그 복사 실패", + "errorDownloading": "로그 다운로드 실패", + "errorClearing": "로그 지우기 실패", + "levels": { + "all": "모든 레벨", + "error": "오류", + "warn": "경고", + "info": "정보", + "debug": "디버그" } }, - "splitChat": { - "label": "분할 채팅 | 분할 채팅", - "single": "단일 분할 채팅" + "notifications": { + "title": "알림", + "description": "오류, 경고 및 정보 이벤트를 포함한 애플리케이션 알림을 검토하고 관리합니다.", + "searchPlaceholder": "알림 검색...", + "searchingAllLogs": "데이터베이스의 모든 알림 검색 중", + "refresh": "알림 새로고침", + "autoRefreshOn": "자동 새로고침 활성화됨", + "autoRefreshOff": "자동 새로고침 활성화", + "copy": "모두 클립보드에 복사", + "copyLog": "알림 복사", + "download": "알림 다운로드", + "clearPermanently": "모든 알림 지우기", + "clearPermanentlyConfirmation": { + "header": "알림 지우기", + "message": "모든 알림을 영구적으로 삭제하시겠습니까? 이 작업은 취소할 수 없습니다." + }, + "loading": "알림 로딩 중...", + "loadingMore": "더 로딩 중...", + "endOfList": "목록 끝", + "noLogs": "사용 가능한 알림 없음", + "totalLogs": "{count}개 알림", + "displayedLogs": "{count}개 표시 중", + "copiedToClipboard": "알림이 클립보드에 복사됨", + "downloaded": "알림이 성공적으로 다운로드됨", + "clearedPermanently": "알림이 성공적으로 지워짐", + "deleted": "알림이 성공적으로 삭제됨", + "errorLoading": "알림 로딩 실패", + "errorCopying": "알림 복사 실패", + "errorDownloading": "알림 다운로드 실패", + "errorClearing": "알림 지우기 실패", + "errorDeleting": "알림 삭제 실패", + "purge": { + "label": "알림 제거", + "olderThan1Day": "1일 이전", + "olderThan7Days": "7일 이전", + "olderThan15Days": "15일 이전", + "olderThan30Days": "30일 이전", + "all": "전체", + "confirmHeader": "알림 제거", + "confirmMessageDays": "{days}일 이전의 알림을 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.", + "purge": "제거", + "purged": "알림이 성공적으로 제거됨", + "errorPurging": "알림 제거 실패" + }, + "levels": { + "all": "모든 레벨", + "error": "오류", + "warn": "경고", + "info": "정보" + } }, - "splitPreset": { - "label": "분할 프리셋 | 분할 프리셋", - "deleteItem": { - "label": "{item} 분할 프리셋 삭제하시겠습니까?", - "description": "분할 프리셋과 해당 구성이 삭제됩니다.", - "success": "{item} 분할 프리셋 삭제됨" + "sidebar": { + "expandGroup": "{group} 펼치기", + "collapseGroup": "{group} 접기", + "showExtraItems": "추가 항목 표시", + "hideExtraItems": "추가 항목 숨기기", + "groups": { + "modelsPrompts": "모델 & 프롬프트", + "personasTools": "페르소나 & 도구", + "knowledgeInsights": "지식 & 인사이트", + "system": "시스템" }, - "saveLayoutAs": "분할 레이아웃 다른 이름으로 저장" + "appUpdater": { + "version": "버전 {version}", + "restartToApply": "업데이트 적용을 위해 재시작", + "restart": "지금 재시작", + "downloading": "업데이트 다운로드 중...", + "viewChangelog": "변경 로그 보기", + "openingChangelog": "변경 로그 여는 중...", + "errorHint": "업데이트 오류 - 자세한 내용을 보려면 클릭", + "readyHint": "업데이트 준비됨 - 적용하려면 재시작", + "downloadingHint": "업데이트 다운로드 중... {percent}%", + "errorDialog": { + "header": "업데이트 오류", + "message": "업데이트 중 오류가 발생했습니다: {error}", + "downloadManually": "수동 다운로드" + } + } }, - "showAllItem": "모든 {item} 표시", - "dockItem": "{item} 고정", - "undockAllItem": "모든 {item} 고정 해제", - "switchToItem": { - "label": "{item}(으)로 전환" + "showInNativeFileManager": { + "mac": "Finder에서 보기", + "win": "파일 탐색기에서 보기", + "lin": "파일 관리자에서 보기" }, - "conversation": { - "label": "대화 | 대화", - "title": { - "label": "대화 제목", - "edit": "대화 제목 편집" - }, - "startChattingWithModel": "{modelName}와(과) 채팅 시작", - "noConversationsFound": "대화를 찾을 수 없음", - "noChatModelSelected": "선택된 채팅 모델 없음", - "folder": { - "startNewConversation": "{folderName} 폴더에서 새 대화 시작", - "delete": { - "description": "관련된 모든 대화, 채팅 및 메시지가 삭제됩니다." + "settings": { + "title": "설정", + "general": "일반", + "defaultPrompts": "기본 프롬프트", + "licenseAndAccess": "라이선스 및 액세스", + "fontSize": "글꼴 @:size", + "teams": "팀", + "appearance": "외관", + "setupService": "{service} 설정", + "dataBackup": { + "title": "@:data 백업", + "description": "데이터 백업 설정을 관리합니다. 백업을 위해 데이터를 내보내거나, 지우거나, 백업 파일에서 복원할 수 있습니다." + }, + "dataBackupReminderInterval": { + "title": "@:data 백업 알림 간격", + "description": "데이터 백업을 알릴 빈도입니다." + }, + "dataMigrate": { + "action": "마이그레이션", + "title": "스튜디오 마이그레이션", + "itemsToMigrate": { + "label": "2단계: 마이그레이션할 항목 선택", + "action": "항목 선택" + }, + "pointsToRemember": { + "activeWorkspace": "현재 있는 워크스페이스로 프롬프트 라이브러리 프롬프트, 원격 모델 제공자, 대화 및 첨부 파일을 가져올 수 있습니다. 다른 워크스페이스로 가져오려면 먼저 해당 워크스페이스로 전환하세요.", + "remoteModelProviders": "원격 모델 제공자를 마이그레이션해도 API 키는 이전되지 않으며, 다시 입력해야 합니다. 일부 레거시 모델은 스튜디오에서 지원되지 않을 수 있습니다.", + "attachmentsMigration": "첨부 파일을 마이그레이션하는 경우 먼저 첨부 파일 폴더를 압축하세요. 데이터베이스를 마이그레이션한 후 별도로 첨부 파일을 마이그레이션하거나 데이터베이스와 함께 마이그레이션할 수 있습니다." + }, + "databaseMigration": { + "title": "데이터베이스 마이그레이션", + "label": "1단계: Msty App 1.x 데이터베이스 파일 선택", + "action": "Msty 데이터베이스 파일을 드래그 앤 드롭하세요" + }, + "attachmentsMigration": { + "title": "첨부 파일 마이그레이션", + "migrate": "별도로 마이그레이션", + "label": "3단계: 압축된 첨부 파일 폴더 추가", + "success": "첨부 파일 마이그레이션 성공", + "error": "첨부 파일 마이그레이션 실패", + "action": "압축된 첨부 파일 폴더를 드래그 앤 드롭하세요" + }, + "missingDataWarning": { + "description": "데이터베이스 파일과 마이그레이션할 테이블을 하나 이상 선택하세요", + "title": "데이터 누락" }, - "deleteAllConversations": { - "description": "{folderName} 내 모든 대화가 삭제됩니다." + "description": "Msty App 1.x에서 스튜디오로 데이터를 마이그레이션합니다. 가져온 데이터는 기존 데이터를 덮어쓰지 않습니다.", + "successMessage": "{item} 마이그레이션 성공", + "errorMessage": "{item} 마이그레이션 실패", + "migrationInProgress": "마이그레이션 진행 중...", + "migrationComplete": "{item} 마이그레이션 완료", + "migrationFail": "{item} 마이그레이션 실패", + "migratingItem": "{item} 마이그레이션 중...", + "migrationError": { + "title": "마이그레이션 오류", + "action": "세부 정보 보기", + "message": "메시지", + "cause": "원인" } }, - "delete": { - "description": "관련 채팅 메시지도 함께 삭제됩니다." + "colorPreference": "색상 기본 설정", + "accentColor": "강조 색상", + "dark": "다크", + "light": "라이트", + "default": "기본", + "system": "시스템", + "baseColor": "기본 색상", + "emerald": "에메랄드", + "lime": "라임", + "green": "그린", + "red": "레드", + "orange": "오렌지", + "amber": "앰버", + "yellow": "옐로우", + "teal": "틸", + "cyan": "시안", + "sky": "스카이", + "indigo": "인디고", + "violet": "바이올렛", + "purple": "퍼플", + "fuchsia": "푸크시아", + "pink": "핑크", + "rose": "로즈", + "slate": "슬레이트", + "gray": "그레이", + "zinc": "징크", + "stone": "스톤", + "sandy": "샌디", + "lighter": "라이터", + "codeTheme": "코드 테마", + "rtlSupport": { + "title": "RTL 지원", + "description": "아랍어, 히브리어, 페르시아어와 같은 언어를 위한 오른쪽에서 왼쪽 텍스트 방향 활성화" }, - "merge": { - "description": "{itemCount}개의 대화를 다중 분할 단일 대화로 병합" + "miniMap": { + "title": "미니 맵", + "description": "브랜치 미리보기가 있는 인라인 미니 맵 메시지 네비게이터를 활성화합니다. 비활성화하면 더 간단한 상단/하단 네비게이터가 사용됩니다." }, - "flattenItem": "{item} 평면화", - "cloneAndFlatten": "복제 후 평면화", - "inputBox": { - "placeholder": { - "focused": "메시지를 입력하세요", - "unfocused": "/를 눌러 입력창에 포커스하세요" - } + "security": { + "title": "보안", + "subtitle": "애플리케이션의 보안 설정을 구성합니다" + }, + "webSecurity": { + "title": "웹 보안 비활성화", + "description": "이는 일부 CORS 관련 문제를 해결하는 데 도움이 될 수 있습니다. 그러나 권장되지 않으며 애플리케이션을 보안 위험에 노출시킬 수 있습니다. 무엇을 하는지 아는 경우에만 비활성화하세요. 이 설정을 적용하려면 앱을 재시작해야 합니다.", + "applyAndRestart": "적용 및 재시작" + }, + "fontStyle": { + "title": "폰트 스타일", + "galaxyFarAway": "먼 은하계", + "everythingEverywhere": "모든 것, 모든 곳", + "homeAlone": "나 홀로 집에", + "lordOfTheLoops": "반복문의 제왕" + }, + "renderingModules": { + "title": "렌더링 모듈", + "selectPlaceholder": "렌더링 모듈 @:select" + }, + "remoteToolsConnector": { + "description": "Msty Studio 웹이 이 기기에 연결하여 원격 도구를 실행하고 로컬 모델에 액세스할 수 있도록 허용합니다. 원격 연결을 허용하려면 이 서비스가 활성화되어 있어야 합니다.", + "allowRemoteToolsConnection": "서비스 활성화", + "connectionToken": { + "title": "연결 토큰", + "rememberToken": "토큰 기억하기", + "placeholder": "강력한 연결 토큰을 입력하세요", + "description": "이 토큰은 원격 연결 시 Msty Studio와 이 앱 간의 연결을 인증하는 데 사용됩니다. 언제든지 재생성하여 이전 토큰을 무효화할 수 있습니다. 강력한 토큰을 사용하고 비밀로 유지하세요.", + "successMessage": { + "detail": "원격 서비스가 활성화되었습니다" + }, + "errorMessage": { + "summary": "커넥터 활성화 오류", + "detail": "원격 서비스 활성화에 실패했습니다. 자세한 내용은 로그를 확인하세요" + }, + "copyConnectionInfo": "로컬 URL 복사", + "copyTunnelConnectionInfo": "터널 URL 복사", + "stopSuccessMessage": { + "detail": "원격 서비스가 비활성화되었습니다" + } + }, + "enableTunneling": "터널링 활성화 (실험적)" }, - "shareWithSyncedSplits": "동기화된 분할창과 공유", - "autoGenerateTitle": { - "label": "{model}을(를) 사용한 자동 제목 생성", - "selectAModel": "모델 선택으로 자동 제목 생성", - "selectDifferentModel": "{keyCombo} + 클릭으로 다른 모델 선택", - "failure": "대화 제목 자동 생성 실패" + "copyLocalURL": "로컬 URL 복사", + "localAI": { + "notInstalled": { + "description": "@:localAIService를 설정하여 기기에서 로컬로 AI 모델을 실행하세요." + }, + "modelsLocation": { + "title": "모델 위치", + "description": "Local AI 모델이 저장되는 위치를 구성합니다." + }, + "existingModels": { + "title": "기존 모델 사용", + "description": "다시 다운로드하지 않고 이미 보유한 모델을 사용합니다." + }, + "serviceConfigurations": { + "title": "@:service 구성", + "description": "이러한 구성은 @:localAIService가 시작될 때 적용됩니다. @:localAIService는 변경 사항을 저장한 후 자동으로 재시작됩니다.", + "configurePortNumber": { + "title": "포트 번호 구성", + "description": "@:localAIService의 포트 번호입니다. 기본값을 사용하려면 비워두세요." + }, + "maximumParallelChats": { + "title": "최대 병렬 채팅", + "description": "동시 채팅 세션의 최대 수(스플릿 모드 사용 시)." + }, + "maximumLoadedModels": { + "title": "최대 로드된 모델", + "description": "동시에 로드되는 LLM의 최대 수. 더 많은 모델을 메모리에 유지하면 초기 응답 속도가 빨라지지만 더 많은 시스템 리소스를 사용합니다." + }, + "enableNetworkAccess": { + "title": "네트워크 액세스 활성화", + "description": "네트워크의 다른 기기가 이 기기의 IP 주소를 통해 이 @:localAIService에 액세스할 수 있도록 허용합니다." + }, + "allowedNetworkOrigins": { + "title": "허용된 네트워크 원본", + "description": "여기에 허용된 네트워크 원본을 나열하세요(쉼표로 구분). 각 항목은 http:// 또는 https://로 시작해야 합니다. 모든 원본을 허용하려면 *를 사용하세요.", + "placeholder": "예: https://msty.studio, http://localhost:3000, *" + }, + "allowMstyStudioAccess": { + "title": "Msty Studio에서 액세스 허용", + "description": "Msty Studio Web에서 이 앱에 연결하여 @:localAIService에 액세스할 수 있도록 허용합니다." + }, + "captureServiceLogs": { + "title": "@:service 로그 캡처", + "description": "디버깅을 위해 서비스 데이터를 캡처하는 로깅을 활성화합니다. 필요한 경우에만 이 옵션을 사용하세요." + }, + "advancedConfiguration": { + "description": "유효한 JSON을 입력하여 @:localAIService의 환경 변수를 설정하세요." + }, + "unsavedChanges": { + "message": "@:localAIService 구성에 저장되지 않은 변경 사항이 있습니다. 저장하면 @:localAIService가 새 구성으로 재시작됩니다.", + "saveChanges": "변경 사항 저장 및 서비스 재시작", + "successMessage": { + "detail": "@:localAIService 구성이 저장되고 서비스가 재시작되었습니다" + }, + "errorMessage": { + "detail": "@:localAIService 구성 저장에 실패했습니다. 자세한 내용은 로그를 확인하세요." + } + } + }, + "modelConfigurations": { + "title": "@:model 구성", + "description": "이 구성은 채팅 세션 중 모든 모델에 적용됩니다.", + "keepAliveTimeout": { + "title": "모델 유지 시간 제한", + "description": "모델이 사용되지 않을 때 메모리에서 언로드되기까지의 시간(분)입니다." + }, + "advancedConfiguration": { + "description": "유효한 JSON을 입력하여 채팅 세션 중 모델에 추가 파라미터를 전달하세요." + }, + "unsavedChanges": { + "message": "@:settings.localAI.modelConfigurations.title에 저장되지 않은 변경 사항이 있습니다{'.'} 새 채팅 세션을 시작하기 전에 저장하세요.", + "successMessage": { + "detail": "@:settings.localAI.modelConfigurations.title 저장됨" + }, + "errorMessage": { + "detail": "@:settings.localAI.modelConfigurations.title 저장 실패. 자세한 내용은 로그를 확인하세요." + } + } + }, + "openSettings": "Local AI 설정 열기", + "manageModels": { + "title": "Local AI 모델 관리", + "description": "로컬 추론을 위한 AI 모델을 탐색, 설치 및 관리합니다.", + "openModelHub": "Local AI 모델 허브 열기" + } }, - "flowchat": { - "label": "플로우챗", - "description": "대화의 시각적 맵을 보려면 클릭하세요" + "mlx": { + "notInstalled": { + "description": "@:mlxService를 설정하여 Apple Silicon Mac에서 최적화된 AI 모델을 실행하세요." + }, + "modelsLocation": { + "title": "모델 위치", + "description": "MLX 모델이 저장되는 위치를 구성합니다." + }, + "existingModels": { + "title": "기존 모델 사용", + "description": "다시 다운로드하지 않고 이미 보유한 모델을 사용합니다." + }, + "openSettings": "MLX 설정 열기", + "manageModels": { + "title": "MLX 모델 관리", + "description": "Apple Silicon에 최적화된 MLX 모델을 탐색, 설치 및 관리합니다.", + "openModelHub": "MLX 모델 허브 열기" + }, + "compatibility": { + "title": "시스템 호환성", + "description": "시스템이 MLX와 호환되는지 확인합니다.", + "checkAgain": "다시 확인", + "status": { + "notChecked": "확인 안 됨", + "compatible": "호환됨", + "notCompatible": "호환 안 됨" + }, + "requirements": { + "title": "MLX 요구 사항:", + "appleSilicon": "Apple Silicon Mac (M1, M2, M3, M4)", + "macOS13": "macOS 13.0 이상", + "unifiedMemory": "통합 메모리 아키텍처" + } + } } }, - "setupItem": { - "label": "{item} 설정", - "success": "{item} 설정 완료", - "failure": "{item} 설정 실패" - }, - "downloadItem": { - "label": "{item} 다운로드", - "success": "{item} 다운로드됨", - "failure": "{item} 다운로드 실패" - }, - "continue": "계속", - "onboarding": { - "title": "Msty에 오신 것을 환영합니다!", - "subTitle": "시작 방법을 선택하세요:", - "setupLocalAI": { - "pros": { - "item1": "DeepSeek R1, Meta Llama3.3 등 모델 사용", - "item2": "오프라인 채팅 가능", - "item3": "무료 모델 사용 및 다운로드", - "item4": "특화된 모델 설치" - }, - "cons": { - "item1": "추가 저장 공간 및 메모리 필요" + "mlxService": "MLX 서비스", + "settingsAndConfigs": "설정 및 구성", + "prompts": "프롬프트", + "apiKeys": "API 키", + "workspaces": { + "createNewWorkspace": "새 워크스페이스 만들기", + "switchWorkspace": "워크스페이스 전환", + "switchToDefaultWorkspace": "기본 워크스페이스로 전환", + "switchToCustomWorkspace": "{workspaceName} 워크스페이스로 전환", + "hideWorkspaceTray": "워크스페이스 트레이 숨기기", + "showWorkspaceTray": "워크스페이스 트레이 표시", + "switchAction": { + "successMessage": { + "summary": "워크스페이스 전환됨!", + "detail": "{workspaceName}이(가) 이제 활성 워크스페이스입니다" } }, - "addRemoteModelsProvider": { - "pros": { - "item1": "OpenAI GPT, Claude Sonnet 등 사용", - "item2": "빠른 시작", - "item3": "다운로드 불필요" + "deleteWorkspace": "워크스페이스 삭제", + "workspaceIsActive": "워크스페이스 {workspaceName}이(가) 활성 상태입니다", + "currentActiveWorkspace": "현재 활성 워크스페이스: {workspaceName}", + "workspaceForm": { + "newTitle": "새 워크스페이스", + "editTitle": "워크스페이스 편집", + "workspaceName": "워크스페이스 이름", + "whatToCopy": "{activeWorkspace} 워크스페이스에서 무엇을 복사하시겠습니까?", + "createAndSwitch": "생성 및 전환", + "duplicateWorkspaceName": "워크스페이스 이름이 이미 존재합니다", + "invalidWorkspaceName": "유효하지 않거나 중복된 워크스페이스 이름", + "updateSuccessMessage": { + "summary": "@:success", + "detail": "워크스페이스 업데이트됨" + }, + "updateErrorMessage": { + "summary": "@:error", + "detail": "워크스페이스 업데이트 실패" + }, + "createSuccessMessage": { + "summary": "@:success", + "detail": "워크스페이스 생성됨" }, - "cons": { - "item1": "인터넷 연결 필요", - "item2": "공급자별 비용이 적용될 수 있음" + "createErrorMessage": { + "summary": "@:error", + "detail": "워크스페이스 생성 실패" } }, - "downloadModel": { - "description": "{modelSize} 크기의 {modelName} 모델 다운로드 (로컬에 없을 경우에만)" + "deleteConfirmation": { + "header": "워크스페이스 삭제", + "message": "{workspaceName}을(를) 삭제하시겠습니까? 이 워크스페이스와 연결된 모든 데이터가 삭제됩니다. 이 작업은 취소할 수 없습니다.", + "downloadWorkspaceData": "워크스페이스 @:data @:download", + "successMessage": { + "detail": "워크스페이스 {workspaceName} 삭제됨" + }, + "errorMessage": { + "summary": "@:error", + "detail": "워크스페이스 삭제 실패" + } }, - "inProgress": { - "description": "인터넷 속도에 따라 수 분이 소요됩니다 (10-15분을 초과하면 앱 재시작을 권장합니다)" + "exportWorkspace": { + "title": "워크스페이스 @:export", + "successMessage": { + "summary": "@:success", + "detail": "워크스페이스 {workspaceName} 데이터가 {fileName}(으)로 내보내졌습니다" + }, + "errorMessage": { + "summary": "@:error", + "detail": "워크스페이스 {workspaceName} 내보내기 실패" + } }, - "onboardWithOllama": { - "label": "Ollama를 사용 중이신가요?", - "description": "{folderPath}에서 Ollama 모델로 빠르게 시작하기" + "importWorkspace": { + "title": "워크스페이스 @:import", + "dragAndDropMessage": "압축된 Msty 워크스페이스 파일을 드래그 앤 드롭하여 새 워크스페이스를 가져오고 생성합니다. 이름이 중복되는 경우 가져온 워크스페이스의 이름이 변경됩니다. 나중에 변경할 수 있습니다.", + "successMessage": { + "summary": "@:success", + "detail": "워크스페이스 {workspaceName}이(가) 가져와졌습니다" + }, + "errorMessage": { + "summary": "@:error", + "detail": "워크스페이스 가져오기 실패" + } + } + }, + "attachments": { + "title": "첨부 파일", + "documents": "문서", + "images": "이미지", + "webpages": "웹페이지", + "youTubeLinks": "YouTube 링크", + "dropThem": "드롭하세요!", + "selectAll": "전체 @:select", + "deselectAll": "전체 선택 해제", + "dragAnDropHere": "{attachmentType}을(를) 여기로 드래그 앤 드롭", + "orClickToBrowse": "또는 클릭하여 찾아보기", + "addDocumentTypes": "{documentTypes} 및 일부 다른 코드 파일 추가", + "addImageTypes": ".png, .jpg 또는 .jpeg 이미지 추가", + "dragAndDropOrBrowseMore": "드래그 앤 드롭하거나 더 찾아보기", + "commaSeparatedUrls": "또는 쉼표로 구분된 URL 붙여넣기", + "manageTooltip": "클릭하여 첨부된 {attachmentType} 관리", + "modelMayNotSupportImages": "선택한 모델이 이미지 첨부 파일을 지원하지 않을 수 있습니다.", + "documentsAttachedCount": "{count}개 문서 첨부됨", + "imagesAttachedCount": "{count}개 이미지 첨부됨", + "webpagesAttachedCount": "{count}개 웹페이지 첨부됨", + "webpageLinks": "웹페이지 링크", + "holdKeyToShareWithSyncedSplits": "{key}를 눌러 동기화된 스플릿과 공유", + "youTubeLinksAttachedCount": "{count}개 YouTube 링크 첨부됨", + "dropFiles": { + "errorMessage": { + "summary": "@:error", + "detail": "파일 첨부 실패" + } + }, + "dropWebpages": { + "errorMessage": { + "summary": "@:error", + "detail": "웹페이지 첨부 실패" + } + }, + "dropYouTubeLinks": { + "errorMessage": { + "summary": "@:error", + "detail": "YouTube 링크 정보 가져오기 실패. {errorMessage}" + } + }, + "detachAll": { + "title": "전체 분리", + "confirm": { + "header": "전체 분리", + "message": "모든 {attachmentType}을(를) 분리하시겠습니까? 이러한 {attachmentType}은(는) 더 이상 모든 스플릿의 대화에서 사용할 수 없습니다.", + "acceptLabel": "@:delete" + }, + "maxResult": { + "title": "최대 결과" + }, + "successMessage": { + "detail": "@:rtd.title 설정 업데이트됨" + } + } + }, + "jinaAPI": { + "manageJinaAPIKeys": "Jina API 키 관리", + "jinaApiKeyRequired": "이 기능을 사용하려면 유효한 Jina API 키가 필요합니다. 무료로 받으려면 다음 링크를 방문하세요:", + "willUseJina": { + "description": "현재 {count}개의 Jina API 키가 추가되어 있습니다. 더 많은 키를 추가할 수 있으며 Msty는 요청에 사용할 임의의 유효한 키를 선택합니다." + }, + "jinaAPIKeyForm": { + "newTitle": "새 Jina API 키", + "editTitle": "Jina API 키 편집", + "availableKeys": "사용 가능한 키", + "reVerifyKey": "키가 {status}입니다. 클릭하여 재검증", + "verifyKeyAndAdd": "키 검증 및 추가", + "newDescription": "Jina Reader 및 Search 엔드포인트와 함께 사용할 새 Jina API 키를 추가합니다. 여러 키를 추가하고 유효성을 검증할 수 있습니다. 키를 사용할 때 Msty는 요청에 사용할 임의의 유효한 키를 선택합니다.", + "keyIsGood": { + "summary": "완료!", + "detail": "키가 유효하며 사용할 준비가 되었습니다" + }, + "successMessage": { + "summary": "@:success", + "detail": "Jina API 키 추가됨" + }, + "errorMessage": { + "summary": "오류{status}!", + "detail": "Jina API 키 추가 실패. API 키를 확인하고 유효한지 확인하세요." + } + } + }, + "rtd": { + "title": "실시간 @:data", + "contexts": "@:rtd.title 컨텍스트", + "enableRTD": "@:rtd.title 구성", + "removeSource": { + "successMessage": { + "detail": "소스 제거됨" + }, + "errorMessage": { + "summary": "@:error", + "detail": "소스 제거 실패" + } + }, + "updateSource": { + "errorMessage": { + "summary": "@:error", + "detail": "소스 업데이트 실패" + } + }, + "searchProvider": "검색 제공자", + "jina": "Jina", + "useRemoteConnector": "@:remoteToolsConnector.title 사용", + "noSources": "사용 가능한 소스 없음", + "settings": { + "maxResult": { + "title": "최대 결과" + }, + "saveAsDefaultProvider": { + "title": "{providerName}을(를) 기본 검색 제공자로 저장", + "successMessage": { + "summary": "{providerName} 완료!", + "detail": "{providerName}이(가) 이제 기본 검색 제공자입니다" + } + }, + "autoWithFallback": "자동 및 대체", + "google": "Google", + "brave": "Brave", + "ecosia": "Ecosia", + "customSearchQuery": { + "title": "사용자 지정 검색 쿼리", + "placeholder": "이 쿼리가 검색에 사용됩니다. 비워두면 프롬프트를 쿼리로 사용합니다" + }, + "limitByDomain": { + "title": "도메인으로 제한", + "placeholder": "예: reddit.com 또는 gov 또는 (site:reddit.com OR site:gov)", + "commaDelimitedPlaceholder": "쉼표로 구분된 도메인 입력 예: reddit.com,wikipedia.com" + }, + "extraOperators": { + "title": "추가 연산자" + }, + "dateRange": { + "title": "검색 날짜 범위", + "placeholder": "시작 날짜 - 종료 날짜" + }, + "successMessage": { + "detail": "@:rtd.title 활성화됨" + }, + "types": { + "api": "API", + "rtc": "@:remoteToolsConnector.title" + } + }, + "useJinaLabel": "@:rtd.jina 사용", + "google": { + "useLabel": "@:rtd.settings.google 사용", + "apiKey": { + "placeholder": "@:rtd.settings.google @:apiKey" + }, + "cseIdLabel": "맞춤 검색 엔진 ID", + "cseIdPlaceholder": "@:rtd.settings.google @:rtd.google.cseIdLabel" + }, + "brave": { + "useLabel": "@:rtd.settings.brave 사용", + "resultFilter": "결과 필터" + }, + "searXng": { + "title": "SearXNG", + "engines": { + "title": "엔진", + "placeholder": "사용할 엔진의 쉼표로 구분된 목록 예: google, brave 등" + }, + "extraParams": { + "title": "추가 파라미터", + "placeholder": "추가 파라미터를 추가합니다. 유효한 JSON 객체여야 합니다." + }, + "notice": "SearXNG 서버는 JSON이 활성화되어 있어야 하며 HTTPS를 통해 제공되어야 합니다. 일부 브라우저에서 HTTP를 통한 해결 방법은 https://docs.msty.studio의 문서를 확인하세요", + "useLabel": "@:rtd.searXng.title 사용" + }, + "tavily": { + "title": "Tavily", + "useLabel": "@:rtd.tavily.title 사용", + "searchTopic": { + "title": "검색 주제", + "placeholder": "검색 카테고리", + "general": "일반", + "news": "뉴스", + "finance": "금융" + }, + "apiKey": { + "placeholder": "@:rtd.tavily.title @:apiKey 입력" + }, + "searchDepth": { + "title": "검색 깊이", + "placeholder": "검색 깊이", + "advanced": "고급", + "basic": "기본" + }, + "timeRange": { + "title": "시간 범위", + "placeholder": "현재 날짜로부터 역산한 시간 범위" + } + }, + "exa": { + "title": "Exa", + "useLabel": "@:rtd.exa.title 사용", + "apiKey": { + "placeholder": "@:rtd.exa.title @:apiKey 입력" + } + }, + "ollama": { + "title": "Ollama", + "useLabel": "@:rtd.ollama.title 사용", + "apiKey": { + "placeholder": "@:rtd.ollama.title @:apiKey 입력" + } + }, + "disableRTD": { + "label": "@:rtd.title 비활성화", + "successMessage": { + "detail": "@:rtd.title 비활성화됨" + }, + "errorMessage": { + "summary": "@:error", + "detail": "@:rtd.title 비활성화 실패" + } + } + }, + "remoteToolsConnector": { + "title": "원격 서비스", + "connectionRequired": "이 기능을 사용하려면 @:remoteToolsConnector.title에 연결해야 합니다{'.'}\n", + "experimentalInfo": "RTD는 실험적이며 예상대로 작동하지 않을 수 있습니다.", + "isConnectedTooltip": "@:remoteToolsConnector.title - 연결됨", + "isDisconnectedTooltip": "@:remoteToolsConnector.title - 연결 끊김", + "connectNow": "@:remoteToolsConnector.title @:connect", + "connectFirst": "@:remoteToolsConnector.title를 먼저 @:connect하세요", + "reconnectNow": "@:remoteToolsConnector.title @:reconnect", + "disconnectNow": "지금 @:disconnect", + "checkHealth": "연결 상태 확인", + "connectionDetails": "@:connectionInfo 편집", + "noPermissionPolicy": "이 기능에 액세스할 권한이 없습니다", + "connect": { + "form": { + "title": "@:remoteToolsConnector.title에 연결", + "saveAndConnect": "저장 및 연결", + "rememberConnectionInfo": "@:connectionInfo 기억하기" + }, + "import": { + "title": "@:connectionInfo @:import", + "dragAndDropMessage": "Msty Remote Connection Config 파일을 드래그 앤 드롭하여 @:remoteToolsConnector.title에 가져오고 연결합니다{'.'}\n", + "successMessage": { + "detail": "@:connectionInfo 가져오기 완료" + }, + "errorMessage": { + "detail": "@:connectionInfo 가져오기 실패" + } + }, + "export": { + "title": "저장된 @:connectionInfo 내보내기", + "successMessage": { + "detail": "@:connectionInfo 내보내기 완료" + }, + "errorMessage": { + "detail": "@:connectionInfo 내보내기 실패" + } + }, + "successMessage": { + "summary": "연결됨!", + "detail": "{url}에서 @:remoteToolsConnector.title 연결됨" + }, + "errorMessage": { + "summary": "연결 @:error", + "detail": "@:remoteToolsConnector.title 연결 실패{'.'} @:remoteToolsConnector.title가 실행 중이고 제공된 URL에서 액세스 가능한지 확인하세요.", + "tokenMissing": "토큰이 누락되었습니다. 토큰을 확인하고 다시 시도하세요." + }, + "forgetConnectionInfo": "이전 @:connectionInfo 삭제", + "forgetSuccessMessage": { + "detail": "@:connectionInfo 삭제됨" + }, + "toolCommandPaths": { + "title": "도구 명령 경로", + "description": "툴셋을 사용하는 경우 사용 중인 명령의 경로를 설정하세요.", + "selectPlaceholder": "명령 @:select 또는 입력", + "pathPlaceholder": "명령의 전체 경로 입력", + "assignPath": "@:path 할당" + } + }, + "disconnect": { + "successMessage": { + "summary": "연결 끊김!", + "detail": "@:remoteToolsConnector.title에서 연결 끊김" + } + } + }, + "forge": { + "forgeMode": { + "title": "포지 모드", + "description": "포지 모드는 빈 캔버스와 강력한 작성 도구를 제공하여 콘텐츠를 자유롭게 생성, 편집, 스타일링 및 개선할 수 있습니다." + }, + "title": "포지", + "forgeContent": "@:forge.title 콘텐츠", + "forgingContent": "콘텐츠 제작 중", + "editRawMarkdown": "원본 마크다운 편집", + "disabledEditRawMarkdown": "이 콘텐츠는 이미 제작되었습니다. 원본 마크다운 편집이 허용되지 않습니다.", + "saveChanges": { + "title": "변경 사항 저장", + "successMessage": { + "detail": "변경 사항 저장됨" + }, + "errorMessage": { + "summary": "@:error", + "detail": "변경 사항 저장 실패" + } + }, + "placeholders": { + "writeSomething": "무언가를 작성하거나 /를 입력하여 옵션 보기...", + "detailsSummary": "세부 사항 요약 입력" + }, + "prompts": { + "simplify": "단순화", + "fixSpellingAndGrammar": "맞춤법 및 문법 수정", + "makeShorter": "짧게 만들기", + "makeLonger": "길게 만들기", + "tldr": "요약", + "emojify": "이모지 추가", + "changeTone": { + "title": "톤 @:change", + "academic": "학술적", + "business": "비즈니스", + "casual": "캐주얼", + "childFriendly": "아동 친화적", + "conversational": "대화체", + "emotional": "감성적", + "humorous": "유머러스", + "informative": "정보 제공", + "inspirational": "영감을 주는", + "professional": "전문적", + "narrative": "서술적", + "objective": "객관적", + "persuasive": "설득적", + "poetic": "시적" + } + }, + "clearFormatting": "서식 지우기", + "bold": "굵게", + "italic": "기울임꼴", + "underline": "밑줄", + "strikethrough": "취소선", + "code": "코드", + "codeBlock": "코드 블록", + "blockQuote": "인용구", + "undo": "실행 취소", + "redo": "다시 실행", + "texts": "텍스트", + "paragraph": "단락", + "heading1": "제목 1", + "heading2": "제목 2", + "heading3": "제목 3", + "lists": "목록", + "bulletList": "글머리 기호 목록", + "numberedList": "번호 매기기 목록", + "taskList": "작업 목록", + "whatToForgePlaceholder": "오늘은 무엇을 만드시겠습니까?", + "forgeWriter": "포지 작성기", + "inlinePrompt": { + "placeholder": "사용자 지정 프롬프트를 입력하세요...", + "ask": "질문하기", + "askTooltip": "사용자 지정 프롬프트를 기반으로 모델에 응답 생성을 요청합니다" + }, + "forgeCanvas": "@:forge.title 캔버스", + "newForgeCanvas": "새 @:forge.forgeCanvas", + "addNewForgeCanvas": "새 @:forge.forgeCanvas 추가" + }, + "preview": "미리보기", + "prompt": "프롬프트", + "discard": "취소", + "insert": "삽입", + "regenerate": "재생성", + "rewrite": "다시 쓰기", + "exit": "나가기", + "customPrompt": "사용자 지정 프롬프트", + "markdown": "마크다운", + "json": "JSON", + "invalidJson": "유효하지 않은 @:json", + "downloadMarkdown": "@:markdown 파일로 @:download", + "downloadJson": "@:json 파일로 @:download", + "formattedHTML": "서식이 지정된 HTML", + "downloadHTML": "HTML 파일로 @:download", + "copyMarkdownToClipboard": "클립보드에 @:markdown 복사", + "copyHTMLToClipboard": "클립보드에 HTML 복사", + "copiedToClipboard": { + "summary": "복사됨!", + "markdownDetail": "콘텐츠가 @:markdown로 클립보드에 복사됨", + "htmlDetail": "콘텐츠가 HTML로 클립보드에 복사됨", + "jsonDetail": "콘텐츠가 @:json으로 클립보드에 복사됨", + "itemCopied": "{item}이(가) 클립보드에 복사됨" + }, + "exportJsonToClipboard": "콘텐츠가 @:json으로 클립보드에 내보내기됨", + "variable": "변수", + "pinItem": { + "title": "고정된 {item}", + "action": "{item} 고정", + "successMessage": { + "detail": "{item} 고정됨" + }, + "errorMessage": { + "summary": "@:error", + "detail": "{item}을(를) 고정할 수 없습니다" + } + }, + "unpinItem": { + "action": "{item} 고정 해제", + "successMessage": { + "detail": "{item} 고정 해제됨" + }, + "errorMessage": { + "summary": "@:error", + "detail": "{item}의 고정을 해제할 수 없습니다" + } + }, + "setDefaultItem": { + "title": "기본 {item}", + "action": "{item}을(를) 기본값으로 설정", + "successMessage": { + "detail": "{item}이(가) 기본값으로 설정됨" + }, + "errorMessage": { + "detail": "{item}을(를) 기본값으로 설정할 수 없습니다" + } + }, + "unsetDefaultItem": { + "action": "기본 {item}. 클릭하여 설정 해제.", + "successMessage": { + "detail": "{item}이(가) 기본값에서 제거됨" + } + }, + "model": "모델", + "modelSettings": "@:model 설정", + "syncSplit": "@:split 동기화", + "name": "이름", + "split": "스플릿", + "template": "템플릿", + "discardChanges": "변경 사항 취소", + "applyChanges": "변경 사항 적용", + "splitPreset": { + "title": "스플릿 @:preset", + "selectPlaceholder": "@:preset @:select", + "new": "새 @:preset", + "newSplit": "새 @:preset", + "splits": { + "splitIndex": "스플릿 {index}", + "delete": "@:preset @:delete" + }, + "import": { + "title": "@:preset @:import", + "dragAndDropMessage": "압축된 Msty 프리셋 파일을 드래그 앤 드롭하여 새 프리셋을 가져오고 생성합니다. 이름이 중복되는 경우 가져온 프리셋의 이름이 변경됩니다. 나중에 변경할 수 있습니다.", + "successMessage": { + "detail": "@:preset 가져오기 완료" + }, + "errorMessage": { + "detail": "프리셋 가져오기 실패" + } + }, + "export": { + "title": "@:preset @:export", + "selected": "선택한 @:preset @:export", + "successMessage": { + "detail": "스플릿 프리셋이 {fileName}(으)로 내보내기됨" + }, + "errorMessage": { + "detail": "프리셋 내보내기 실패" + } + }, + "delete": { + "title": "@:preset @:delete", + "selected": "선택한 @:preset @:delete", + "deleteConfirmation": { + "header": "@:preset @:delete", + "description": "{presetName}을(를) 삭제하시겠습니까? | {count}개 프리셋을 삭제하시겠습니까?" + }, + "successMessage": { + "detail": "스플릿 프리셋 삭제됨" + }, + "errorMessage": { + "detail": "스플릿 프리셋을 삭제할 수 없습니다" + } + }, + "update": { + "successMessage": { + "detail": "스플릿 프리셋 업데이트됨" + }, + "errorMessage": { + "detail": "스플릿 프리셋을 업데이트할 수 없습니다" + } }, - "success": "설정 완료! 이제 채팅을 시작할 수 있습니다." + "save": { + "successMessage": { + "detail": "스플릿 프리셋 저장됨" + }, + "errorMessage": { + "detail": "스플릿 프리셋을 저장할 수 없습니다" + } + }, + "empty": { + "title": "사용 가능한 @:splitPreset.title이(가) 없습니다.", + "description": "새 @:splitPreset.title을(를) 추가하거나 가져와서 시작하세요" + }, + "invalidTemplatesMessage": { + "summary": "유효하지 않은 템플릿", + "detail": "일부 템플릿이 유효하지 않거나 필수 필드가 누락되었습니다. 계속하기 전에 수정하세요." + } + }, + "toolbox": { + "title": "도구 상자", + "toolsUsageWillSkip": "Msty @:remoteToolsConnector.title이(가) 실행 중이 아닙니다. 도구 사용이 건너뛰어집니다.", + "tools": { + "title": "도구", + "description": "LLM 작업을 돕는 도구 모음입니다.", + "availableTools": "사용 가능한 도구", + "availableToolsets": "사용 가능한 도구 세트", + "setDefaultParams": "기본 파라미터 설정", + "setParams": "파라미터 설정", + "missingThisDependency": "이 종속성이 환경에서 누락된 것 같습니다. 이것이 없으면 도구가 예상대로 작동하지 않을 수 있습니다.", + "defaultParamsForm": { + "header": "{toolName}의 기본 파라미터", + "description": "이 파라미터는 {toolName} 도구의 모든 인스턴스에 전역적으로 사용됩니다. 도구 세트를 만들 때 이를 재정의할 수 있습니다.", + "args": { + "label": "인수", + "description": "@:argument를 @:select하고 값을 설정하세요. 값을 설정하지 않으려면 비워두세요.", + "customArg": { + "label": "사용자 지정 @:argument", + "description": "새 @:argument의 이름을 입력하세요. 여러 인수는 쉼표로 구분하세요.", + "placeholder": "예: --arg1, someArg, -verbose" + } + }, + "env": { + "label": "환경 변수", + "description": "새 환경 @:variable을(를) @:select하거나 입력하고 값을 설정하세요.", + "addEnv": "환경 @:variable 추가", + "selectPlaceholder": "환경 @:variable @:select", + "enterNew": "새 환경 @:variable 추가" + }, + "successMessage": { + "saveDetail": "{toolName}의 기본 파라미터가 저장되었습니다." + }, + "errorMessage": { + "saveDetail": "기본 파라미터 저장 실패." + } + }, + "addNewTool": { + "title": "새 도구 추가", + "description": "도구 상자에 MCP 호환 도구를 추가하세요. 추가되면 도구 세트에 추가하고 파라미터를 설정한 후 모델과 함께 사용할 수 있습니다.", + "namePlaceholder": "이름 지정 (기본적으로 도구 ID 사용)", + "id": { + "label": "도구 ID", + "placeholder": "고유한 도구 식별자 (구성에서 감지되면 자동 입력됨)" + }, + "duplicateId": "이 ID를 가진 도구가 이미 존재합니다. 고유한 ID를 입력하세요.", + "successMessage": { + "summary": "@:success", + "detail": "도구가 도구 상자에 추가되었습니다. 이제 도구 세트에 추가하고 모델과 함께 사용할 수 있습니다." + }, + "successMessageWithToolset": { + "summary": "@:success", + "detail": "도구가 도구 상자에 추가되었고 일치하는 도구 세트가 생성되었습니다. 모델과 함께 사용할 준비가 되었습니다." + }, + "errorMessage": { + "summary": "@:error", + "detail": "도구 상자에 도구를 추가하지 못했습니다. {error}" + }, + "toolConfig": { + "label": "도구 구성", + "placeholder": "도구 구성 JSON을 입력하거나 붙여넣으세요. 직접 구성 또는 래핑된 형식 허용 (toolId 자동 추출)", + "showExampleTitle": "도구 구성 예제 보기", + "explanation": "도구 구성은 mcpServers가 포함된 래핑된 구성을 포함한 여러 형식을 허용합니다. 가능한 경우 toolId와 이름을 자동으로 추출합니다. 최소한 {command}를 포함해야 합니다. 동적 인수는 중괄호 {curly}로 래핑해야 합니다. 예: {argExample}. 마찬가지로 동적 환경 변수는 {envVarLabel}을(를) 사용하여 설정할 수 있습니다." + }, + "autoCreateToolset": { + "label": "같은 이름으로 도구 세트 자동 생성" + } + }, + "editTool": { + "title": "도구 편집", + "description": "도구의 이름, 노트 및 구성을 업데이트합니다.", + "successMessage": { + "summary": "@:success", + "detail": "도구 @:updatedSuccess" + }, + "errorMessage": { + "summary": "@:error", + "detail": "도구 @:failedToUpdate" + } + }, + "emptyPlaceholder": { + "description1": "Msty @:remoteToolsConnector.title로 구동되는 외부 MCP 도구를 사용하여 모델의 기능을 확장하고 LLM 경험을 향상시키세요.", + "description2": "Msty와 함께 제공되는 많은 도구를 가져오거나 자체 도구를 추가하여 시작할 수 있습니다.", + "description3": "참고: 이러한 도구는 Msty에서 제공, 테스트 또는 유지 관리하지 않습니다. 우리는 단지 이러한 도구를 사용할 수 있는 플랫폼을 제공하고 편의를 위해 가져올 수 있도록 허용하는 것입니다. 본인의 책임 하에 사용하시기 바랍니다. Msty는 이러한 도구 사용으로 인해 발생할 수 있는 문제에 대해 책임지지 않습니다. 또한 지원이 필요한 경우 도구 작성자에게 문의하세요." + }, + "importTools": { + "title": "기본 @:toolbox.tools.title 가져오기", + "successMessage": { + "detail": "{count}개 기본 도구를 성공적으로 가져왔습니다. 도구 세트를 만들고 모델과 함께 사용할 수 있습니다." + }, + "successMessageWithToolsets": { + "detail": "{count}개 기본 도구를 성공적으로 가져왔고 {toolsetCount}개의 해당 도구 세트가 자동으로 생성되었습니다." + }, + "errorMessage": { + "detail": "기본 @:toolbox.tools.title 가져오기 실패" + } + }, + "deleteConfirmation": { + "header": "도구 삭제", + "description": "{toolName}을(를) 삭제하시겠습니까?", + "successMessage": { + "summary": "@:success", + "detail": "도구 삭제됨" + }, + "errorMessage": { + "summary": "@:error", + "detail": "도구 @:failedToDelete" + } + }, + "deleteAll": { + "confirmationHeader": "모든 도구 삭제", + "confirmationMessage": "모든 도구를 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.", + "successMessage": "모든 도구가 성공적으로 삭제되었습니다", + "errorMessage": "모든 도구 삭제 실패" + }, + "copiedToClipboard": "도구 구성이 클립보드에 복사됨", + "viewToolsUsage": { + "title": "도구 사용 현황 보기", + "noToolCalls": { + "title": "도구 호출을 찾을 수 없음", + "description": "모델에 일부 도구를 사용할 수 있었지만 도구 호출을 하지 않았습니다. 모델이 도구를 사용할 필요가 없었기 때문일 수 있습니다." + } + } + }, + "toolsets": { + "title": "도구 세트 | 도구 세트들", + "emptyPlaceholder": { + "title": "도구 세트를 찾을 수 없음", + "description": "도구 세트는 파라미터가 있는 도구 모음입니다. 도구 세트를 만들고 도구를 추가할 수 있습니다. 모델과 채팅할 때 하나 이상의 도구 세트를 선택하여 모델과 함께 사용할 수 있습니다." + }, + "addSomeTools": "시작하려면 도구를 추가하세요.", + "noTools": "이 도구 세트에 도구가 없습니다", + "addNewToolset": { + "title": "새 @:toolbox.toolsets.title 추가", + "description": "도구를 그룹화할 새 도구 세트를 만드세요. 도구 세트에 도구를 추가하고 모델과 함께 사용할 수 있습니다. {icon} 버튼을 클릭하여 도구 세트의 각 도구에 대한 파라미터를 설정/덮어쓰세요.", + "setParams": { + "title": "{toolName}의 파라미터 설정", + "description": "{toolName} 도구의 파라미터를 설정합니다. 도구에 설정된 기본 파라미터를 재정의할 수 있습니다." + }, + "successMessage": { + "summary": "@:success", + "saveDetail": "도구 세트가 저장되고 도구 상자에 추가되었습니다. 이제 모델과 함께 사용할 수 있습니다." + }, + "errorMessage": { + "summary": "@:error", + "saveDetail": "도구 세트 @:failedToSave." + } + }, + "editToolset": { + "title": "도구 세트 편집", + "description": "도구 세트의 이름과 노트를 편집합니다. 도구 세트에서 도구를 추가하거나 제거할 수 있으며 {icon} 버튼을 클릭하여 각 도구의 파라미터를 조정할 수 있습니다.", + "successMessage": { + "summary": "@:success", + "detail": "도구 세트 @:updatedSuccess" + }, + "errorMessage": { + "summary": "@:error", + "detail": "도구 세트 @:failedToUpdate." + } + }, + "deleteConfirmation": { + "header": "도구 세트 삭제", + "description": "{toolsetName}을(를) 삭제하시겠습니까?", + "successMessage": { + "summary": "@:success", + "detail": "도구 세트 삭제됨" + }, + "errorMessage": { + "summary": "@:error", + "detail": "도구 세트 @:failedToDelete" + } + }, + "deleteAll": { + "confirmationHeader": "모든 도구 세트 삭제", + "confirmationMessage": "모든 도구 세트를 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.", + "successMessage": "모든 도구 세트가 성공적으로 삭제되었습니다", + "errorMessage": "모든 도구 세트 삭제 실패" + }, + "export": { + "title": "@:toolbox.toolsets.title 내보내기", + "description": "보안을 위해 내보내기 전에 민감한 구성 값을 제거할 수 있습니다. 각 도구에 대해 정리할 환경 변수와 인수를 선택하세요.", + "envVarsToScrub": "정리할 환경 변수", + "argsToScrub": "정리할 인수", + "scrubCustomArgs": "사용자 지정 인수 문자열 정리", + "selectEnvVarsPlaceholder": "값을 제거할 환경 변수 선택", + "selectArgsPlaceholder": "값을 제거할 인수 선택", + "noScrubbableData": "정리할 구성 데이터 없음", + "sensitiveDataNote": "보안을 위해 일반적인 민감한 값이 미리 선택되어 있습니다.", + "copiedToClipboard": "도구 세트 구성이 클립보드에 복사됨", + "downloadedAsJson": "도구 세트 구성 다운로드됨", + "fetchError": "내보내기를 위한 도구 세트 데이터 가져오기 실패" + }, + "import": { + "missingTools": "일부 도구를 찾을 수 없어 건너뛰었습니다: {tools}" + }, + "noOfTools": "{count}개 도구", + "viewToolsAndNotes": "도구 및 노트 보기", + "console": { + "title": "도구 콘솔", + "description": "이 콘솔을 사용하여 {toolName}을(를) 테스트하고 출력을 확인할 수 있습니다. 다른 파라미터로 도구를 테스트하는 데도 사용할 수 있습니다.", + "listTools": "{toolName}의 기능 나열", + "missingRequiredArgument": "{count}개 필수 @:argument 누락", + "continueWithMissingArgs": "누락된 @:argument와 함께 @:continue", + "viewSourceOnGitHub": "GitHub에서 소스 보기", + "toolCall": { + "title": "도구 호출", + "description": "{featureName}을(를) 호출하는 데 필요한 속성을 추가하세요. 원하는 경우 추가 속성을 추가할 수 있습니다. 특히 올바른 값 없이 도구를 호출할 때 주의하세요.", + "selectPlaceholder": "속성 @:select", + "enterNew": "새 속성 추가", + "execute": "@:toolbox.toolsets.console.toolCall 실행" + } + }, + "manageTooltip": "클릭하여 사용된 도구 세트 관리", + "noModelSupport": "선택한 모델이 도구를 지원하지 않을 수 있습니다.", + "toolsetsUsedCount": "{count}개 활성 도구 세트" + } + }, + "liveContexts": { + "liveContextsUsedCount": "{count}개 활성 라이브 컨텍스트", + "title": "라이브 @:context", + "contexts": "라이브 컨텍스트", + "addNew": { + "title": "새 @:liveContexts.title 추가", + "description": "대화에 외부 데이터 컨텍스트를 추가할 새 @:liveContexts.title 소스를 만드세요.", + "errorMessage": { + "detail": "@:liveContexts.title 추가 실패" + }, + "successMessage": { + "detail": "@:liveContexts.title 추가됨" + } + }, + "edit": { + "title": "@:liveContexts.title 편집" + }, + "promptPlaceholder": "사용할 프롬프트 예: 응답에 다음 라이브 컨텍스트 데이터를 사용하세요", + "endpointDetails": "엔드포인트 세부 정보", + "method": "메서드", + "url": "URL", + "customHeaders": "사용자 지정 헤더", + "hasBody": "본문 있음", + "customProcessing": "사용자 지정 처리", + "promptTemplate": "프롬프트 템플릿", + "requestHeaders": { + "title": "요청 헤더", + "description": "JSON 객체로 요청 헤더를 추가합니다. API 엔드포인트에 대한 요청과 함께 전송됩니다.", + "placeholder": "{'{'}\n \"Authorization\": \"Bearer YOUR_API_KEY\"\n{'}'}" + }, + "requestBody": { + "title": "요청 본문", + "description": "JSON 객체로 요청 본문을 추가합니다. API 엔드포인트에 대한 요청과 함께 전송됩니다.", + "placeholder": "{'{'}\n \"key\": \"value\"\n{'}'}" + }, + "processingFunction": { + "title": "처리 함수", + "description": "대화에서 사용하기 전에 응답 데이터를 변환하는 처리 함수를 추가합니다. 함수는 문자열을 반환해야 합니다.", + "placeholderHeader": "function process({'{'}data{'}'}) {'{'}", + "placeholder": " // 입력을 처리하고 문자열 반환\n return JSON.stringify(data)", + "placeholderFooter": "{'}'}" + }, + "update": { + "successMessage": { + "detail": "@:liveContexts.title 업데이트됨" + }, + "errorMessage": { + "detail": "@:liveContexts.title 업데이트 실패" + } + }, + "deleteConfirmation": { + "header": "@:liveContexts.title 삭제", + "description": "{liveContextName}을(를) 삭제하시겠습니까?", + "successMessage": { + "detail": "@:liveContexts.title 삭제됨" + }, + "errorMessage": { + "detail": "@:liveContexts.title 삭제 실패" + } + }, + "emptyPlaceholder": { + "title": "@:liveContexts.title을(를) 찾을 수 없음", + "description": "@:liveContexts.title은(는) 대화에 추가할 수 있는 외부 데이터 컨텍스트입니다. 새 @:liveContexts.title 소스를 만들고 모델과 함께 사용할 수 있습니다." + }, + "deleteAll": { + "confirmationHeader": "모든 @:liveContexts.contexts 삭제", + "confirmationMessage": "모든 라이브 컨텍스트를 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.", + "successMessage": "모든 라이브 컨텍스트가 성공적으로 삭제되었습니다", + "errorMessage": "모든 라이브 컨텍스트 삭제 실패" + }, + "export": { + "title": "@:liveContexts.title 내보내기", + "headerScrubDescription": "보안을 위해 내보내기 전에 민감한 헤더 값을 제거할 수 있습니다. 정리할 헤더를 선택하세요.", + "selectHeadersToScrub": "정리할 헤더", + "selectHeadersPlaceholder": "값을 제거할 헤더 선택", + "sensitiveHeadersNote": "보안을 위해 일반적인 민감한 헤더가 미리 선택되어 있습니다.", + "copiedToClipboard": "라이브 컨텍스트 구성이 클립보드에 복사됨", + "downloadedAsJson": "라이브 컨텍스트 구성 다운로드됨" + } + }, + "modes": { + "mode": "모드", + "title": "@:modes.mode", + "exitMode": "{mode} @:modes.mode 나가기", + "zenMode": { + "title": "젠", + "quote": "차분한 주의력 상태", + "newConversation": "새 @:modes.zenMode.title @:conversation.title" + }, + "vaporMode": { + "title": "@:modes.vaporMode.vapor @:modes.mode", + "vapor": "베이퍼", + "description": "대화가 기록에 저장되지 않으며 모드를 끄거나 다른 곳으로 이동하면 사라집니다", + "willDisappearTooltip": "@:modes.vaporMode.vapor @:modes.mode를 끄거나 다른 곳으로 이동하면 사라집니다", + "exitVaporMode": "@:modes.vaporMode.vapor @:modes.mode 나가기", + "enterVaporMode": "@:modes.vaporMode.vapor @:modes.mode 들어가기", + "preserverChat": { + "saveConversation": "@:conversation.title @:save", + "successMessage": { + "detail": "@:modes.vaporMode.vapor 채팅이 보존되었습니다" + }, + "errorMessage": { + "detail": "@:modes.vaporMode.vapor 채팅 보존 실패" + } + } + }, + "focusMode": { + "title": "집중 @:modes.mode" + }, + "normalMode": { + "title": "일반 @:modes.mode" + } + }, + "searchForm": { + "query": "쿼리", + "title": "항목 검색", + "noResults": { + "title": "결과를 찾을 수 없습니다", + "description": "다른 검색어를 시도해보세요" + }, + "entity": { + "conversationTextMessages": "@:conversation.title", + "promptsLibraryPrompts": "프롬프트" + }, + "foundResultsCount": "{count}개 결과 발견", + "labels": { + "title": "{entity} 검색", + "description": "키워드를 사용하여 {entity}을(를) 빠르게 찾아보세요", + "tips": { + "default": { + "description": "기본적으로 모든 단어를 매칭합니다 (예: {example} → 두 단어가 모두 포함된 텍스트를 순서와 관계없이 매칭)", + "example": "파란색 자동차" + }, + "partial": { + "description": "부분 매칭을 위해 {operator}를 사용하세요 (예: {example})", + "operator": "*", + "example": "run* → runs, running" + }, + "or": { + "description": "어느 용어든 매칭하려면 {operator}를 @:user하세요 (예: {example})", + "operator": "OR", + "example": "사과 OR 오렌지" + }, + "exact": { + "description": "정확한 매칭을 위해 큰따옴표 {operator}를 사용하세요 (예: {example})", + "operator": "\"\"", + "example": "\"파란색 자동차\"" + }, + "specialCharacters": { + "description": "특수 문자를 이스케이프하려면 {operator}를 사용하세요 (예: {example})", + "operator": "\"\"", + "example": "\"C++\", \"node.js\"" + } + } + } + }, + "clearSearch": "검색 지우기", + "helpfulTips": "유용한 팁", + "hideSearch": "검색 숨기기", + "bookmarkItem": { + "action": "{item} 북마크", + "jump": "북마크된 {item}으로 이동", + "title": "북마크된 {item}", + "successMessage": { + "detail": "{item} 북마크됨" + }, + "errorMessage": { + "summary": "@:error", + "detail": "{item}을(를) 북마크할 수 없습니다" + }, + "deletedInfoMessage": { + "detail": "북마크된 {item}이(가) 삭제되었습니다" + }, + "emptyState": { + "title": "사용 가능한 북마크가 없습니다.", + "description": "{item}을(를) 북마크하여 시작하세요" + } + }, + "removeBookmarkedItem": { + "action": "북마크된 {item} 제거", + "successMessage": { + "detail": "북마크에서 {item} 제거됨" + }, + "errorMessage": { + "summary": "@:error", + "detail": "북마크에서 {item}을(를) 제거할 수 없습니다" + } + }, + "turnstile": { + "title": "턴스타일", + "newTurnstile": "새 @:turnstile.title", + "queueEntry": "큐에 추가", + "selectPlaceholder": "@:turnstile.title @:select", + "addQueueWithAlt": "클릭하여 열거나 Alt+클릭하여 큐에 추가", + "entriesQueued": "큐에 추가된 @:entry 없음 | {count}/{total}개 @:entry 큐에 추가됨", + "emptyQueueMessage": "프롬프트가 준비되면 @:turnstile.queueEntry를 클릭하여 큐에 항목을 추가하세요.", + "manageSavedTurnstiles": "저장된 턴스타일 관리", + "saveForm": { + "title": "@:turnstile.title 다른 이름으로 저장", + "successMessage": { + "detail": "@:turnstile.title이(가) 저장되었습니다." + }, + "errorMessage": { + "detail": "턴스타일 저장 실패." + } + }, + "loadTurnstiles": { + "title": "@:turnstile.title 로드", + "successMessage": { + "summary": "@:turnstile.title 로드됨!", + "detail": "{count}개 항목이 로드되고 큐에 추가되었습니다." + }, + "errorMessage": { + "summary": "@:error", + "detail": "턴스타일 로드 실패." + } + }, + "clearQueue": { + "title": "큐 지우기", + "clearQueueConfirmation": { + "message": "큐를 지우시겠습니까? 추가한 모든 메시지가 제거됩니다." + } + }, + "newEntry": { + "title": "새 항목" + }, + "invalidEntriesMessage": { + "summary": "유효하지 않은 항목", + "detail": "일부 항목이 유효하지 않거나 필수 필드가 누락되었습니다. 계속하기 전에 수정하세요." + }, + "metaSendMissingRootNode": { + "detail": "{metaType}을(를) 실행할 수 없습니다. 큐의 첫 번째 항목이 아닌지 확인하세요." + }, + "update": { + "successMessage": { + "detail": "@:turnstile.title이(가) 업데이트되었습니다." + }, + "errorMessage": { + "detail": "턴스타일 업데이트 실패. 프롬프트와 모델을 설정했나요?" + } + }, + "save": { + "successMessage": { + "detail": "@:turnstile.title이(가) 저장되었습니다." + }, + "errorMessage": { + "detail": "턴스타일 저장 실패. 프롬프트와 모델을 설정했나요?" + } + }, + "delete": { + "selected": "선택한 @:turnstile.title 삭제", + "deleteConfirmation": { + "header": "@:turnstile.title 삭제", + "description": "{turnstileName}을(를) 삭제하시겠습니까? | {count}개 턴스타일을 삭제하시겠습니까?" + } + }, + "empty": { + "title": "사용 가능한 @:turnstile.title이(가) 없습니다.", + "description": "새 @:turnstile.title을(를) 추가하거나 가져와서 시작하세요." + }, + "new": "@:new @:turnstile.title", + "entryIndex": "@:entry {index}", + "addContinue": "@:message.renderingActions.continueGeneration 추가", + "addRegenerate": "@:regenerate 추가", + "addPersona": "@:persona.title 추가", + "addShield": "@:contextShield.title 추가", + "addShieldWithSummary": "@:contextShield.contextShieldWithSummary 추가", + "import": { + "title": "@:turnstile.title @:import", + "dragAndDropMessage": "압축된 Msty @:turnstile.title을(를) 드래그 앤 드롭하여 새 턴스타일을 가져오고 생성합니다. 이름이 중복되는 경우 가져온 턴스타일의 이름이 변경됩니다. 나중에 변경할 수 있습니다.", + "successMessage": { + "detail": "턴스타일 가져오기 완료" + }, + "errorMessage": { + "detail": "턴스타일 가져오기 실패" + } + }, + "export": { + "title": "@:turnstile.title @:export", + "selected": "선택한 @:turnstile.title @:export", + "successMessage": { + "detail": "@:turnstile.title이(가) {fileName}(으)로 내보내기됨" + }, + "errorMessage": { + "detail": "@:turnstile.title 내보내기 실패" + } + } + }, + "modelMatchmaker": { + "title": "모델 매치메이커", + "description": "@:modelMatchmaker.title은(는) 모든 작업에 완벽한 AI 모델을 찾는 데 도움을 줍니다. 필요한 강점(코딩, 추론 또는 수학 등)에 대한 @:modelMatchmaker.gravity을(를) 조정하면 Msty가 고유한 요구 사항에 따라 선별된 목록에서 최고의 모델을 지능적으로 순위를 매기고 추천합니다. 모델의 성능에 영향을 미칠 수 있는 다양한 요인이 있다는 점을 명심하세요. 예를 들어 학습된 데이터의 품질, 모델의 @.lower:size 및 작업의 복잡성 등이 있습니다.", + "gravity": "가중치", + "remoteOnly": "원격만", + "rankedModels": { + "title": "순위가 매겨진 모델", + "emptyMessage": "모델을 찾을 수 없습니다. 요구 사항을 조정해 보세요." + }, + "strengthsLabel": { + "ca": { + "title": "코딩", + "description": "프로그래밍 언어로 코드를 작성하는 능력." + }, + "aca": { + "title": "에이전트 코딩", + "description": "프로그래밍 언어로 코드를 작성하는 에이전트 능력." + }, + "daa": { + "title": "@:data 분석", + "description": "데이터를 분석하고 인사이트를 생성하는 능력." + }, + "ifa": { + "title": "지시 사항 따르기", + "description": "지시 사항을 따르고 작업을 수행하는 능력." + }, + "jak": { + "title": "GOAT: 만능 제너럴리스트", + "description": "광범위한 작업을 수행하는 능력." + }, + "la": { + "title": "언어", + "description": "인간의 언어를 이해하고 생성하는 능력." + }, + "ma": { + "title": "수학", + "description": "수학 계산을 수행하는 능력." + }, + "pp": { + "title": "의역", + "description": "주어진 텍스트를 다시 표현하는 재작성 능력." + }, + "ra": { + "title": "추론", + "description": "비판적 사고 - 추론하고 결정을 내리는 능력." + }, + "sim": { + "title": "단순화", + "description": "주어진 복잡한 텍스트를 단순화하는 능력." + }, + "stg": { + "title": "스토리 생성", + "description": "스토리나 이야기를 생성하는 능력." + }, + "sum": { + "title": "요약", + "description": "텍스트 및 숫자 정보를 요약하는 능력." + }, + "tu": { + "title": "도구 사용", + "description": "외부 도구를 호출하고 사용하는 능력." + }, + "mit": { + "title": "최대 입력 토큰", + "description": "한 번의 호출에서 허용되는 최대 토큰 수." + }, + "mot": { + "title": "최대 출력 토큰", + "description": "한 번의 호출에서 생성되는 최대 토큰 수." + }, + "ics": { + "title": "입력 토큰 절약", + "costTitle": "입력 비용/백만 토큰", + "description": "입력 토큰 생성의 비용 절감." + }, + "ocs": { + "title": "출력 토큰 절약", + "costTitle": "출력 비용/백만 토큰", + "description": "출력 토큰 생성의 비용 절감." + } + }, + "normalizedScore": "정규화된 점수", + "resetStrengths": "강점 초기화", + "savePresetForm": { + "title": "강점을 @:preset으로 @:save", + "errorMessage": { + "detail": "강점 프리셋 저장 실패." + }, + "successMessage": { + "detail": "강점 프리셋 저장됨." + }, + "loadedMessage": { + "detail": "강점 프리셋 로드됨." + } + }, + "deletePresetConfirm": { + "title": "@:preset 삭제", + "message": "{presetName}을(를) 삭제하시겠습니까?", + "errorMessage": { + "detail": "강점 프리셋 삭제 실패." + }, + "successMessage": { + "detail": "강점 프리셋 삭제됨." + } + } + }, + "copyOrMoveItemToWorkspace": { + "copyTitle": "{item}을(를) 워크스페이스에 복사", + "copyOrMoveTitle": "{item}을(를) 워크스페이스에 복사/이동", + "selectWorkspaces": "워크스페이스 @:select", + "availableWorkspaces": "사용 가능한 워크스페이스", + "actionLabel": "작업", + "inputLabel": { + "copy": "{item}을(를) 하나 이상의 워크스페이스에 복사합니다.", + "copyOrMove": "{item}을(를) 하나 이상의 워크스페이스에 복사/이동합니다.", + "edit": "이 제공자를 하나 이상의 워크스페이스에 동기화합니다. 이 제공자가 이전에 복사된 경우 업데이트됩니다. 그렇지 않으면 추가됩니다." + }, + "successMessage": { + "copyDetail": "{item}이(가) {count}개 워크스페이스에 복사됨 | {item}이(가) {count}개 워크스페이스에 복사됨", + "moveDetail": "{item}이(가) {count}개 워크스페이스로 이동됨 | {item}이(가) {count}개 워크스페이스로 이동됨" + }, + "errorMessage": { + "copyDetail": "{count}개 워크스페이스에 {item} 복사 실패 | {count}개 워크스페이스에 {item} 복사 실패", + "moveDetail": "{count}개 워크스페이스로 {item} 이동 실패 | {count}개 워크스페이스로 {item} 이동 실패" + }, + "partialCopyWarningMessage": { + "summary": "부분적으로 복사됨", + "detail": "{count}개 워크스페이스에 {item} 복사 불가 | {count}개 워크스페이스에 {item} 복사 불가" + }, + "partialMovedWarningMessage": { + "summary": "부분적으로 이동됨", + "detail": "{count}개 워크스페이스로 {item} 이동 불가 | {count}개 워크스페이스로 {item} 이동 불가" + }, + "existingCopiesInfo": "{item}이(가) 이미 존재하여 일부 워크스페이스({workspaces})가 건너뛰어졌습니다", + "skippingExistingCopies": "{item}의 이미 존재하는 복사본은 건너뜁니다." + }, + "assignment": "할당 | 할당들", + "modelSquad": { + "title": "모델 스쿼드", + "description": "@:modelSquad.title은(는) 특수화된 AI 모델의 모음으로, 각 모델은 자동 제목 생성, @:context 요약 생성 등과 같은 특정 작업을 수행하도록 할당됩니다. 특정 작업을 수행할 때가 되면 할당된 모델이 자동으로 선택됩니다.", + "addNewAssignment": "새 @:assignment 추가", + "noTask": "사용 가능한 작업이 더 이상 없습니다", + "tasks": { + "autoTitleGeneration": "자동 제목 생성", + "contextShieldSummaryGeneration": "@:contextShield.title 요약 생성", + "realTimeDataPromptSynthesis": "@:rtd.title 프롬프트 합성", + "forgeContentGeneration": "포지 콘텐츠 생성", + "piiScrubbing": "@:pii.scrubbing.title" + }, + "save": { + "successMessage": { + "detail": "@:assignment 저장됨" + }, + "errorMessage": { + "detail": "@:assignment 저장 실패" + } + }, + "assignment": { + "dialog": { + "title": "{task}에 대한 모델 할당", + "description": "ModelSquad의 {task} 작업에 할당할 모델을 선택하세요.", + "selectModel": "모델 선택", + "selectModelPlaceholder": "모델 선택...", + "currentlyAssigned": "현재 할당됨: {model}", + "unknownModel": "알 수 없는 모델", + "assignButton": "모델 할당", + "changeButton": "모델 변경", + "helpText": "이 모델은 {task} 작업이 수행될 때 자동으로 사용됩니다." + }, + "success": "{task}에 모델이 성공적으로 할당되었습니다!", + "errors": { + "noModelSelected": "할당할 모델을 선택하세요.", + "saveFailed": "모델 할당 저장 실패. 다시 시도하세요." + } + } + }, + "pii": { + "title": "PII (개인 식별 정보)", + "scrubbing": { + "title": "PII 제거", + "description": "대화에 표시되기 전에 Knowledge Stack 콘텐츠에서 개인 식별 정보를 자동으로 감지하고 제거합니다.", + "info": { + "modelAssigned": "PII 감지 및 제거에 {model}을(를) 사용 중입니다." + }, + "warning": { + "noModel": "ModelSquad에 @:pii.scrubbing.title에 할당된 모델이 없습니다. 모델이 할당될 때까지 Knowledge Stack 검색이 실패합니다.", + "configurationError": "@:pii.scrubbing.title 구성 오류 - 보안을 위해 Knowledge Stack 검색 중단", + "setupError": "@:pii.scrubbing.title 설정 중 오류 - Knowledge Stack 검색 중단" + }, + "placeholders": { + "personName": "[사람_이름]", + "emailAddress": "[이메일_주소]", + "phoneNumber": "[전화번호]", + "address": "[주소]", + "idNumber": "[식별번호]", + "creditCard": "[신용카드]", + "bankAccount": "[은행계좌]", + "ipAddress": "[IP_주소]", + "dateOfBirth": "[생년월일]" + }, + "categories": { + "personalIdentifiers": "개인 식별자", + "contactInformation": "연락처 정보", + "financialInformation": "금융 정보", + "medicalInformation": "의료 정보", + "digitalIdentifiers": "디지털 식별자", + "biometricData": "생체 인식 데이터", + "locationData": "위치 데이터" + } + } + }, + "persona": { + "title": "페르소나", + "newPersona": "새 @:persona.title", + "activePersona": "활성 @:persona.title", + "empty": { + "title": "사용 가능한 @:persona.title이(가) 없습니다.", + "description": "새 @:persona.title을(를) 추가하거나 가져와서 시작하세요{'.'} 기본 페르소나를 가져와서 시작할 수도 있습니다." + }, + "contextShieldPosition": "@:contextShield.title 위치", + "save": { + "successMessage": { + "detail": "@:persona.title 저장됨" + }, + "errorMessage": { + "detail": "@:persona.title 저장 실패" + } + }, + "update": { + "successMessage": { + "detail": "@:persona.title 업데이트됨" + }, + "errorMessage": { + "detail": "@:persona.title을(를) 업데이트할 수 없습니다" + } + }, + "delete": { + "selected": "선택한 @:persona.title 삭제", + "deleteConfirmation": { + "header": "@:persona.title 삭제", + "description": "{personaName}을(를) 삭제하시겠습니까? | {count}개 @:persona.title을(를) 삭제하시겠습니까{'?'}" + }, + "successMessage": { + "detail": "@:persona.title 삭제됨" + }, + "errorMessage": { + "detail": "@:persona.title을(를) 삭제할 수 없습니다" + } + }, + "import": { + "title": "@:persona.title 가져오기", + "dragAndDropMessage": "압축된 Msty @:persona.title을(를) 드래그 앤 드롭하여 새 페르소나를 가져오고 생성합니다. 이름이 중복되는 경우 가져온 페르소나의 이름이 변경됩니다. 나중에 변경할 수 있습니다.", + "successMessage": { + "detail": "페르소나 가져오기 완료" + }, + "errorMessage": { + "detail": "페르소나 가져오기 실패" + } + }, + "export": { + "title": "@:persona.title 내보내기", + "selected": "선택한 @:persona.title 내보내기", + "successMessage": { + "detail": "@:persona.title이(가) {fileName}(으)로 내보내기됨" + }, + "errorMessage": { + "detail": "@:persona.title 내보내기 실패" + } + }, + "messages": { + "deleteSuccess": "@:persona.title 삭제됨" + }, + "deleteConfirmation": { + "header": "@:persona.title 삭제", + "message": "{personaName}을(를) 삭제하시겠습니까? | {count}개 @:persona.title을(를) 삭제하시겠습니까{'?'}", + "errorMessage": { + "detail": "@:persona.title을(를) 삭제할 수 없습니다" + } + }, + "addTitle": "@:persona.title 추가", + "createRootFolder": "루트에 새 폴더", + "setDefaultFolder": "기본 폴더로 설정", + "unsetDefaultFolder": "기본 폴더 설정 해제", + "folderForm": { + "updateSuccessMessage": { + "detail": "@:folder 업데이트됨" + }, + "updateErrorMessage": { + "detail": "@:folder 업데이트 실패" + }, + "createSuccessMessage": { + "detail": "@:folder 생성됨" + }, + "createErrorMessage": { + "detail": "@:folder 생성 실패" + }, + "deleteConfirmation": { + "header": "@:folder 삭제", + "message": "{folderName}과(와) 모든 @:persona.title을(를) 삭제하시겠습니까{'?'}", + "successMessage": { + "detail": "@:folder 삭제됨" + }, + "errorMessage": { + "detail": "@:folder 삭제 실패" + } + } + }, + "selectPlaceholder": "@:persona.title @:select", + "autoResponder": { + "turnOn": "자동 응답 켜기", + "turnOff": "자동 응답 끄기" + }, + "contextMessageCount": { + "title": "컨텍스트 개수", + "description": "@:persona.title의 컨텍스트로 사용할 최근 메시지 수를 설정합니다{'.'}" + } + }, + "fewShotPrompts": { + "title": "퓨샷 프롬프트", + "description": "퓨샷 학습은 적은 양의 데이터로 모델을 훈련할 수 있는 머신러닝 기법입니다. 퓨샷 프롬프트를 사용하여 모델에 예제를 제공하면 컨텍스트를 이해하고 더 나은 응답을 생성하는 데 도움이 됩니다.", + "addNewShot": "새 샷 추가" }, - "locateInFolder": { - "mac": "Finder에서 보기", - "windows": "파일 탐색기에서 보기", - "linux": "파일 관리자에서 위치 확인" + "insights": "인사이트", + "cost": "비용", + "costInUSD": "USD 비용", + "promptTokens": "프롬프트 토큰", + "completionTokens": "완료 토큰", + "totalTokens": "총 토큰", + "usage": "사용량", + "tokens": "토큰", + "tokensProcessed": "처리된 토큰", + "selectProvider": "제공자 @:select", + "tokensProcessedForProvider": "{provider}의 처리된 토큰", + "totalUsage": "총 사용량", + "fromTo": "{from}부터 {to}까지", + "crunchingTheNumbers": "숫자 계산 중", + "throughputForModel": { + "title": "{model}의 처리량", + "unit": { + "description": "초당 토큰 수로 측정" + } + }, + "latencyForModel": { + "title": "{model}의 지연 시간", + "unit": { + "description": "초 단위로 측정" + } + }, + "total": "합계", + "min": "최소", + "max": "최대", + "avg": "평균", + "summary": "요약", + "dates": { + "today": "오늘", + "last7Days": "지난 7일", + "last14Days": "지난 14일", + "last30Days": "지난 30일", + "last3Months": "지난 3개월", + "last6Months": "지난 6개월", + "last12Months": "지난 12개월", + "monthToDate": "이번 달", + "yearToDate": "올해", + "allTime": "전체 기간", + "selectDateRange": "날짜 범위 @:select", + "month": "월", + "year": "연도", + "day": "일", + "week": "주" + }, + "insightsSummary": { + "emptyState": { + "title": "인사이트 요약", + "description": "선택한 날짜 범위와 제공자에 대한 데이터가 없습니다." + } + }, + "insightsProviderTokensProcessed": { + "emptyState": { + "title": "처리된 토큰", + "description": "선택한 날짜 범위와 제공자에 대한 데이터가 없습니다." + } + }, + "insightsProviderThroughput": { + "emptyState": { + "title": "처리량", + "description": "선택한 날짜 범위, 제공자 및 모델에 대한 데이터가 없습니다." + } + }, + "insightsProviderLatency": { + "emptyState": { + "title": "지연 시간", + "description": "선택한 날짜 범위, 제공자 및 모델에 대한 데이터가 없습니다." + } + }, + "hideItem": { + "action": "{item} 숨기기", + "successMessage": { + "detail": "{item}이(가) 숨겨졌습니다" + }, + "errorMessage": { + "summary": "@:error", + "detail": "{item}을(를) 숨길 수 없습니다" + }, + "unhideParent": "상위 {item} 숨기기 해제", + "hiddenParentContentTitle": "숨겨진 상위 콘텐츠. 클릭하여 숨기기 해제." }, "showItem": { - "label": "{item} 표시" + "action": "{item} 표시" }, - "createOrImportItem": { - "label": "{item} 생성 또는 가져오기" + "licenseVerification": { + "errorMessage": "라이선스 확인 실패. 다시 시도하세요.", + "enterLicenseKey": "Aurum 라이선스 키 입력", + "licenseTypeInfo": "{licenseType} 라이선스를 사용 중입니다.", + "licenseKey": "라이선스 키", + "logout": "로그아웃", + "licenseTypeInfoForAdmin": "{licenseType} 라이선스를 사용 중이며 소유자로 로그인되어 있습니다." }, - "apiKey": "API 키 | API 키", - "settingsAndConfigs": "설정 및 구성", - "selectItemLocation": "{item} 위치 선택", - "icon": "아이콘 | 아이콘", - "defaultItem": "기본 {item}", - "workspace": { - "label": "작업공간 | 작업공간", - "defaultWorkspace": "기본 작업공간", - "removeWorkspace": { - "label": "작업공간 제거", - "confirmation": "{name} 작업공간을 제거하시겠습니까?" - }, - "deleteFromDisk": { - "label": "작업공간 및 디스크 데이터 삭제" - }, - "createAndSwitch": { - "label": "생성 후 전환", - "title": "작업공간으로 체계적으로 관리", - "description": "별도 폴더에 채팅, 지식 스택 등을 구성하여 여러 기기에서 공유", - "whatToCopy": "{workspaceName} 작업공간에서 복사할 항목:", - "doNotCopyAnything": "새로 시작", - "apiKeysWarning": { - "description": "다른 기기에서 가져올 경우 API 키 업데이트 필요", - "updateAPIKeys": "새 작업공간용 API 키 업데이트", - "doNotUpdateAPIKeys": "API 키 업데이트 안 함 (다른 기기에서 문제 발생 가능)" - } - }, - "switch": { - "success": "{workspaceName} 작업공간으로 전환됨", - "failure": "{workspaceName} 작업공간 전환 실패", - "directoryMissing": "{folderPath} 작업공간 디렉토리 없음" - }, - "remove": { - "confirmation": "{workspaceName} 작업공간을 제거하시겠습니까?", - "description": "디스크 데이터는 삭제되지 않습니다.", - "withDataFolder": { - "label": "데이터 폴더도 삭제합니다 (복구 불가)", - "description": "{folderPath} 데이터 폴더 영구 삭제", - "warning": "{folderPath} 데이터 폴더 삭제 경고" - } - } - }, - "bookmarkedItem": "북마크된 {item}", - "warning": "경고", - "manageItem": "{item} 관리", - "itemInBeta": "{item} (베타)", - "prompt": "프롬프트 | 프롬프트", - "quickPrompts": "빠른 프롬프트", - "modelSelector": "모델 선택기", - "promptLibrary": { - "label": "프롬프트 라이브러리" - }, - "knowledgeStacks": { - "label": "지식 스택 | 지식 스택" - }, - "updateApp": { - "isAlreadyOnLatest": "이미 최신 버전입니다", - "downloadingAndInstallingLatest": "최신 버전 다운로드 및 설치 중" - }, - "modelsInfo": "모델 정보", - "updateModelsInfo": { - "success": "모델 정보 최신 버전으로 업데이트됨", - "failure": "모델 정보 업데이트 실패" - }, - "think": "생각", - "seeWhatsNew": "최신 버전의 새로운 기능 확인하기", - "appUpdate": { - "latestVersionBeingDownloaded": "Msty 최신 버전 {version} 다운로드 중. 잠시 기다려주세요.", - "latestVersionBeingInstalled": "Msty 최신 버전 {version}을 설치하고 있습니다. 자동으로 재시작됩니다.", - "latestVersionReadyToBeInstalled": "Msty 최신 버전 {version} 설치 준비가 완료되었습니다. 설치 버튼을 클릭하세요." + "aurum": { + "activateLicense": "Aurum 라이선스 활성화", + "activateLicenseDescription": "프리미엄 기능을 잠금 해제하려면 라이선스 키를 입력하세요", + "manageLicense": "라이선스 관리", + "lifetimeLicense": "Aurum 평생", + "lifetimeLicenseDescription": "프리미엄 기능에 평생 액세스할 수 있는 일회성 구매", + "annualLicense": "Aurum 연간", + "annualLicenseDescription": "지속적인 업데이트와 프리미엄 기능이 포함된 연간 구독", + "oneTimePurchase": "일회성 구매", + "yearlySubscription": "연간 구독", + "enterLicenseKey": "라이선스 키", + "verifyAndActivate": "확인 및 활성화", + "deactivateLicense": "라이선스 비활성화", + "licensedTo": "라이선스 소유자", + "expiresOn": "만료일", + "expired": "만료됨", + "expiresInDays": "{days}일 후 만료", + "needLicense": "라이선스가 필요하신가요?", + "purchaseLicense": "msty.ai에서 구매" + }, + "cloneItem": { + "action": "{item} 복제", + "successMessage": { + "detail": "{item}이(가) 복제되었습니다" + }, + "errorMessage": { + "summary": "@:error", + "detail": "{item}을(를) 복제할 수 없습니다" + } + }, + "cloneItemTo": { + "action": "{item}(으)로 복제", + "successMessage": { + "detail": "새 {item}(으)로 성공적으로 복제되었습니다" + }, + "errorMessage": { + "detail": "새 {item}(으)로 복제할 수 없습니다" + } + }, + "importJson": { + "clipboardTitle": "JSON 클립보드에서 {item} 가져오기", + "fileTitle": "JSON 파일에서 {item} 가져오기", + "successMessage": { + "detail": "{count}개 {item}을(를) 성공적으로 가져왔습니다", + "detailDestination": "@:importJson.successMessage.detail {item}을(를) {destination}(으)로" + }, + "successMessageWithToolsets": { + "detail": "{count}개 {item}을(를) 성공적으로 가져왔고 해당 도구 세트가 자동으로 생성되었습니다" + }, + "invalidConfig": { + "detail": "유효하지 않은 구성이거나 가져올 항목이 없습니다. JSON이 유효한지 확인하고 다시 시도하세요." + }, + "errorMessage": { + "detail": "가져오기 실패. JSON을 확인하고 다시 시도하세요." + }, + "partialError": { + "detail": "{failed}개 항목 가져오기 실패: {items}" + }, + "dragAndDropMessage": "JSON 파일을 드래그 앤 드롭하여 {item}을(를) 가져옵니다." + }, + "team": { + "label": "팀", + "createTeam": "@:team.label @:create", + "inviteUserLabel": "사용자 초대", + "overview": "개요", + "usersLabel": "사용자", + "allTeamLabel": "모든 팀", + "createSuccess": "팀 {teamName}이(가) 성공적으로 생성되었습니다.", + "member": "멤버", + "allUsers": "모든 사용자", + "addTeamFormHeader": "새 팀 만들기", + "updateTeamFormHeader": "팀 편집", + "addUsers": "사용자 추가", + "updateUsers": "사용자 업데이트", + "addUserToTeam": "팀에 사용자 추가", + "teamNameLabel": "팀 이름", + "teamNamePlaceholder": "새 팀 이름 입력", + "addTeamDescription": "리소스를 관리할 새 팀을 만듭니다.", + "noUserInTeam": "이 팀에 할당된 사용자가 없습니다.", + "editTeam": "팀 편집", + "invited": "초대됨", + "shortDescription": "팀과 사용자를 관리합니다.", + "empty": { + "description": "팀은 리소스를 관리하는 데 사용됩니다. 팀에 사용자를 추가하여 협업하고 리소스에 대한 액세스를 공유할 수 있습니다." + }, + "deleteConfirmation": { + "header": "팀 삭제", + "message": "정말 삭제하시겠습니까", + "inputPlaceholder": "삭제를 확인하려면 {name}을(를) 입력하세요.", + "rejectLabel": "@:cancel", + "acceptLabel": "@:delete" + }, + "policies": { + "title": "정책", + "toolbox": { + "title": "@:toolbox.title", + "description": "사용자가 도구 상자 기능을 사용할 수 있도록 허용" + }, + "promptsLibrary": { + "title": "@:promptsLibrary.title", + "description": "사용자가 프롬프트 라이브러리 기능을 사용할 수 있도록 허용" + }, + "persona": { + "title": "@:persona.title", + "description": "사용자가 페르소나 기능을 사용할 수 있도록 허용" + }, + "turnstile": { + "title": "@:turnstile.title", + "description": "사용자가 턴스타일 기능을 사용할 수 있도록 허용" + }, + "knowledgeStack": { + "title": "@:knowledgeStack.title", + "description": "사용자가 Knowledge Stack 기능을 사용할 수 있도록 허용" + }, + "remoteToolsConnector": { + "title": "@:remoteToolsConnector.title", + "description": "사용자가 @:remoteToolsConnector.title 기능을 사용할 수 있도록 허용" + }, + "rtd": { + "title": "@:rtd.title", + "description": "사용자가 @:rtd.title 기능을 사용할 수 있도록 허용" + }, + "attachments": { + "title": "@:attachments.title", + "description": "사용자가 @:attachments.title 기능을 사용할 수 있도록 허용" + }, + "forgeMode": { + "title": "@:forge.forgeMode.title", + "description": "사용자가 @:forge.forgeMode.title 기능을 사용할 수 있도록 허용" + }, + "insights": { + "title": "@:insights", + "description": "사용자가 @:insights 기능을 사용할 수 있도록 허용" + }, + "platformWeb": { + "title": "Msty Studio 웹 액세스", + "description": "사용자가 웹 브라우저에서 Msty Studio에 액세스할 수 있도록 허용" + }, + "platformDesktop": { + "title": "Msty Studio 데스크톱 액세스", + "description": "사용자가 데스크톱 애플리케이션에서 Msty Studio에 액세스할 수 있도록 허용" + }, + "platformAccess": "플랫폼 액세스", + "modelHub": { + "description": "특정 모델 제공자에 대한 액세스를 관리합니다." + } + }, + "user": { + "noAvailableSeats": "사용자 초대 한도에 도달했습니다.", + "licenceAndAccess": { + "loggedInAsLabel": "로그인 상태", + "useSignInWithEmail": "제공된 이메일 주소로 보안 로그인 링크가 전송됩니다. Aurum 라이선스 소유자는 이 기능을 사용하기 전에 라이선스 키를 확인해야 합니다.", + "continueWithlicenseLabel": "라이선스 키로 계속", + "sendLoginLink": "로그인 링크 전송" + }, + "teamUserFormHeader": "팀 사용자", + "invitationVerification": { + "inProgress": "액세스 요청을 확인하고 있습니다. 잠시만 기다려주세요", + "info": "Msty Studio의 계정에 가입하도록 초대되었습니다.", + "error": "문제가 발생했습니다. 계정 관리자에게 문의하세요." + }, + "invitationInfo": "위에 제공된 이메일로 로그인 링크가 전송됩니다.", + "invitation": { + "successMessage": { + "detail": "사용자 {email}이(가) 초대되었습니다." + }, + "invalidEmail": "@:invalid @:email", + "errorMessageUserExist": "사용자가 이미 존재합니다", + "errorMessage": { + "summary": "@:error", + "detail": "{email} 초대 실패." + } + }, + "fetch": { + "errorMessage": { + "summary": "@:error", + "detail": "사용자 목록을 로드할 수 없습니다" + } + }, + "delete": { + "successMessage": { + "detail": "사용자 {email}이(가) 성공적으로 삭제되었습니다." + }, + "errorMessage": { + "summary": "@:error", + "detail": "사용자 {email}을(를) 삭제할 수 없습니다" + } + }, + "deleteConfirmation": { + "header": "사용자 삭제", + "message": "{email}을(를) 삭제하시겠습니까?", + "rejectLabel": "@:cancel", + "acceptLabel": "@:delete" + }, + "assignUserToTeamLabel": "팀 {teamName}에 사용자 할당", + "assignUserToTeamSuccess": "{user}을(를) 팀 {teamName}에 성공적으로 할당했습니다", + "unassignUserToTeamLabel": "팀에서 사용자 제거", + "unassignUserToTeamMessage": "팀 {teamName}에서 {user} 제거", + "selectUserToAddToTeamPlaceholder": "추가할 사용자 @:select" + } + }, + "updateItem": { + "action": "{item} 업데이트", + "editAction": "{item} 편집", + "successMessage": { + "detail": "{item}이(가) 업데이트되었습니다" + }, + "errorMessage": { + "detail": "{item}을(를) 업데이트할 수 없습니다" + } + }, + "modelPurpose": { + "text": "텍스트", + "tools": "도구", + "vision": "비전", + "coding": "코딩", + "embedding": "임베딩", + "streaming": "스트리밍", + "image": "이미지", + "thinking": "사고" + }, + "editModel": { + "inputLabels": { + "label": "레이블", + "purpose": "용도" + } + }, + "environment": { + "selectPlaceholder": "@:environment.title @:select", + "new": "새 @:environment.title", + "title": "환경", + "empty": { + "description": "새 환경을 추가하여 시작하세요." + }, + "save": { + "successMessage": { + "detail": "@:environment.title 저장됨" + }, + "errorMessage": { + "detail": "@:environment.title 저장 실패" + } + }, + "delete": { + "title": "@:environment.title 삭제", + "selected": "선택한 @:environment.title 삭제", + "deleteConfirmation": { + "header": "@:environment.title 삭제", + "description": "{environmentName}을(를) 삭제하시겠습니까? | {count}개 환경을 삭제하시겠습니까?" + }, + "successMessage": { + "detail": "@:environment.title 삭제됨" + }, + "errorMessage": { + "detail": "@:environment.title을(를) 삭제할 수 없습니다" + } + }, + "backup": { + "title": "@:environment.title 백업", + "successMessage": { + "detail": "@:environment.title 백업됨" + }, + "errorMessage": { + "detail": "@:environment.title 백업 실패" + } + }, + "restore": { + "title": "@:environment.title 복원", + "dragAndDropMessage": "Msty Environment 파일을 드래그 앤 드롭하여 환경을 복원합니다. 참고: 기존 환경은 모두 삭제되고 가져온 환경으로 대체됩니다.", + "successMessage": { + "detail": "@:environment.title 복원됨" + }, + "errorMessage": { + "detail": "@:environment.title 복원 실패" + } + }, + "quickSelect": { + "title": "빠른 환경 변수 @:select", + "selectPlaceholder": "변수를 검색하거나 선택하여 클립보드에 복사" + } + }, + "makeActive": { + "title": "{itemType} 활성화", + "isActive": "활성 {itemType}", + "successMessage": { + "detail": "{itemName}이(가) 이제 활성 {itemType}입니다" + }, + "errorMessage": { + "detail": "{itemName}을(를) 활성 {itemType}(으)로 설정하는 데 실패했습니다" + } + }, + "moveItem": { + "action": "{item} 이동", + "moveLocation": "{count}개 {sourceType}을(를) {item}(으)로 이동", + "confirmation": { + "message": "선택한 {item}을(를) 이동하시겠습니까?" + }, + "successMessage": { + "detail": "{item}이(가) 이동되었습니다" + }, + "errorMessage": { + "detail": "{item}을(를) 이동할 수 없습니다" + }, + "errrorMessage": { + "detail": "{item}을(를) 이동할 수 없습니다" + }, + "cannotDetermineTargetProject": "대상 프로젝트를 확인할 수 없습니다.", + "cannotDetermineTargetFolder": "대상 폴더를 확인할 수 없습니다." + }, + "deleteItem": { + "action": "{item} 삭제", + "successMessage": { + "detail": "{item}이(가) 삭제되었습니다" + }, + "errorMessage": { + "summary": "@:error", + "detail": "{item}을(를) 삭제할 수 없습니다" + } + }, + "promptsLibrary": { + "title": "@:prompts 라이브러리", + "newPrompt": "새 @:prompt", + "search": "@:prompt @:search", + "quickPrompt": "빠른 @:prompt", + "saveToQuickPrompts": "빠른 @:prompts에 저장", + "copyPrompt": "클립보드에 @:prompt 복사", + "shortcutUsage": "/를 입력하여 @:promptsLibrary.title 검색", + "setDefaultFolder": "기본 폴더로 설정", + "unsetDefaultFolder": "기본 폴더 설정 해제", + "createRootFolder": "루트에 새 폴더", + "folder": "@:folder", + "prompt": "@:prompt", + "deleteAllPrompt": { + "title": "모든 @:prompt 및 @:folders 삭제", + "description": "전체 @:promptsLibrary.title과(와) @:folders을(를) 지웁니다. 삭제 후 복구할 수 없습니다.", + "successMessage": { + "detail": "모든 @:prompt 삭제됨" + } + }, + "empty": { + "title": "사용 가능한 @:persona.title이(가) 없습니다.", + "description": "새 @:prompt을(를) 추가하거나 가져와서 시작하세요. 기본 @:prompts을(를) 가져와서 시작할 수도 있습니다." + }, + "import": { + "title": "기본 @:prompts 가져오기", + "successMessage": { + "detail": "이제 가져온 프롬프트를 대화에서 사용할 수 있습니다." + }, + "copyMultiplePrompts": "{count}개 @:prompts을(를) 클립보드에 복사", + "errorMessage": { + "detail": "기본 @:prompts 가져오기 실패" + }, + "copyErrorMessage": { + "detail": "@:prompt 복사 실패. 다시 시도하세요." + } + }, + "folderForm": { + "updateSuccessMessage": { + "detail": "@:folder 업데이트됨" + }, + "updateErrorMessage": { + "detail": "@:folder 업데이트 실패" + }, + "createSuccessMessage": { + "detail": "@:folder 생성됨" + }, + "createErrorMessage": { + "detail": "@:folder 생성 실패" + }, + "deleteConfirmation": { + "header": "@:folder 삭제", + "message": "{folderName}과(와) 모든 하위 폴더 및 프롬프트를 삭제하시겠습니까?", + "successMessage": { + "detail": "@:folder 삭제됨" + }, + "errorMessage": { + "detail": "@:folder 삭제 실패" + } + } + }, + "promptForm": { + "addTitle": "새 @:prompt 추가", + "editTitle": "@:prompt 편집", + "promptName": "@:prompt 이름", + "promptDescription": "@:description", + "updateSuccessMessage": { + "detail": "@:prompt 업데이트됨" + }, + "updateErrorMessage": { + "detail": "@:prompt 업데이트 실패" + }, + "createSuccessMessage": { + "detail": "@:prompt 생성됨" + }, + "createErrorMessage": { + "detail": "@:prompt 생성 실패" + }, + "deleteConfirmation": { + "header": "{count}개 @:prompt 삭제", + "message": "삭제하시겠습니까?", + "successMessage": { + "detail": "@:prompt 삭제됨" + }, + "errorMessage": { + "detail": "@:prompt 삭제 실패" + } + } + } + }, + "importDefault": { + "title": "기본 {item} 가져오기", + "successMessage": { + "detail": "기본 {item} 가져오기됨" + }, + "errorMessage": { + "detail": "기본 {item} 가져오기 실패" + } + }, + "contextIsolation": { + "isolate": "@:context 격리", + "unIsolate": "@:context 격리 제거", + "label": "격리된 @:context", + "clearAll": { + "title": "모든 @:context 격리 지우기", + "successMessage": { + "detail": "모든 @:context 격리가 지워졌습니다" + } + } + }, + "responseMetrics": { + "title": "응답 메트릭" + }, + "quickView": "빠른 보기", + "detailsView": "세부 정보 보기", + "input": "입력", + "output": "출력", + "think": "사고", + "reasoning": { + "emptyNotice": "모델이 내부적으로 사고를 수행했지만 요약을 반환하지 않았습니다. 사고 요약을 활성화하려면 모델 선택 옆의 편집 아이콘을 클릭하여 이 모델에 '사고' 태그를 적용하세요." + }, + "service": "서비스", + "localAIService": "@:localAI @:service", + "version": "버전", + "invalidConfig": "유효하지 않은 구성입니다. 유효한 JSON 객체를 입력하세요.", + "unsavedChanges": "저장되지 않은 변경 사항", + "saveChanges": "변경 사항 저장", + "day": "일", + "every": "매", + "files": "파일", + "file": "파일", + "reallyDelete": "정말 삭제하시겠습니까?", + "similarity": "유사도", + "saveAsDraft": "초안으로 저장", + "compose": "구성", + "embeddingModel": "임베딩 모델", + "document": "문서", + "matched": "일치함", + "active": "활성", + "inactive": "비활성", + "folderName": "@:folder 이름", + "addNewFolder": "새 @:folder 추가", + "editFolder": "@:folder 편집", + "errorGeneric": "오류가 발생했습니다. 나중에 다시 시도하세요. 자세한 내용은 로그를 확인하세요.", + "sharedService": { + "modelsPath": { + "title": "모델 경로", + "description": "{service}이(가) 모델을 다운로드하고 검색하는 위치입니다. 사용자 지정 폴더를 사용하도록 경로를 업데이트할 수 있습니다.", + "edit": { + "title": "모델 경로 편집", + "description": "선호하는 위치를 설정하세요.", + "willRestartWarning": "참고: 모델 경로를 변경하면 변경 사항을 적용하기 위해 {service}이(가) 재시작됩니다.", + "selectModelsPath": "모델 경로 선택", + "successMessage": { + "detail": "모델 경로가 업데이트되었습니다" + }, + "errorMessage": { + "detail": "모델 경로 업데이트 실패" + } + } + }, + "quickPromptDialog": { + "title": "빠른 @:prompts에 저장", + "description": "시스템 프롬프트에 짧은 제목을 지정하세요. 쉽게 재사용할 수 있도록 빠른 프롬프트에 추가됩니다.", + "nameLabel": "빠른 @:prompt 이름", + "successMessage": "시스템 프롬프트가 빠른 프롬프트에 저장되었습니다.", + "errorMessage": "빠른 프롬프트에 시스템 프롬프트를 저장하지 못했습니다.", + "emptyPromptMessage": "빠른 프롬프트에 저장하기 전에 시스템 프롬프트 텍스트를 추가하세요." + }, + "serviceHealth": { + "title": "서비스 상태", + "description": "{service}의 상태입니다. 문제가 있나요? 재시작하거나 로그를 확인해 보세요.", + "serviceAction": { + "restartService": "서비스 재시작", + "stopService": "서비스 중지", + "startService": "서비스 시작", + "errorMessage": { + "detail": "{service}에서 {action}을(를) 수행하지 못했습니다. 자세한 내용은 로그를 확인하세요." + }, + "restartSuccessMessage": { + "detail": "{service} 재시작됨" + } + }, + "serviceStatus": { + "starting": "시작 중", + "running": "실행 중", + "stopped": "중지됨" + } + }, + "serviceEndpoint": { + "title": "서비스 엔드포인트", + "description": { + "base": "{service}의 로컬 엔드포인트입니다. 기기에서 로컬로 실행되는 다른 애플리케이션에서 연결하는 데 사용하세요.", + "serviceIsNotRunning": "서비스가 실행되면 주소가 여기에 표시됩니다.", + "serviceIsAvailableOnNetwork": "서비스가 네트워크에서 사용 가능하므로 다른 기기에서 네트워크 서비스 URL을 사용하여 연결할 수도 있습니다." + }, + "copyNetworkURL": "네트워크 URL 복사" + }, + "serviceVersion": { + "title": "서비스 버전", + "description": "{service}의 현재 버전을 보여줍니다. 최적의 성능과 새로운 기능에 액세스하려면 최신 상태로 유지하세요. 필요한 경우 재설치도 가능합니다.", + "forceUpdate": { + "title": "{service} 강제 업데이트", + "forCuda": "CUDA용 {service} 강제 업데이트", + "forROCm": "ROCm용 {service} 강제 업데이트", + "successMessage": { + "detail": "{service}이(가) 최신 버전 {version}(으)로 업데이트되었습니다" + }, + "errorMessage": { + "detail": "{service} 업데이트 실패. 자세한 내용은 로그를 확인하세요." + } + }, + "removeService": { + "title": "{service} 제거", + "confirmationHeader": "{service} 제거", + "confirmationMessage": "{service}을(를) 제거하시겠습니까? 서비스 바이너리와 모든 구성이 삭제됩니다. 설정 페이지에서 나중에 다시 설치할 수 있습니다.", + "confirmationAccept": "제거", + "successMessage": { + "detail": "{service}이(가) 성공적으로 제거되었습니다" + }, + "errorMessage": { + "detail": "{service} 제거 실패. 자세한 내용은 로그를 확인하세요." + } + } + }, + "serviceConfigurations": { + "title": "서비스 구성", + "description": "이러한 구성은 {service}이(가) 시작될 때 적용됩니다. 변경 사항을 저장하면 {service}이(가) 자동으로 재시작됩니다.", + "enableNetworkAccess": { + "title": "네트워크 액세스 활성화", + "description": "네트워크의 다른 기기가 이 기기의 IP 주소를 통해 이 {service}에 액세스할 수 있도록 허용합니다." + }, + "allowMstyStudioAccess": { + "title": "Msty Studio에서 액세스 허용", + "description": "Msty Studio Web에서 이 앱에 연결하여 {service}에 액세스할 수 있도록 허용합니다." + }, + "captureServiceLogs": { + "title": "서비스 로그 캡처", + "description": "디버깅을 위해 서비스 데이터를 캡처하는 로깅을 활성화합니다. 필요한 경우에만 이 옵션을 사용하세요." + }, + "unsavedChanges": { + "message": "{service} 구성에 저장되지 않은 변경 사항이 있습니다. 저장하면 {service}이(가) 새 구성으로 재시작됩니다.", + "saveChanges": "변경 사항 저장 및 서비스 재시작", + "successMessage": { + "detail": "{service} 구성이 저장되고 서비스가 재시작되었습니다" + }, + "errorMessage": { + "detail": "{service} 구성 저장 실패. 자세한 내용은 로그를 확인하세요." + } + } + } + }, + "keyboardShortcuts": { + "title": "키보드 단축키", + "description": "기능에 빠르게 액세스하기 위한 키보드 단축키 사용자 지정", + "search": "단축키 검색...", + "searchByShortcut": "단축키로 검색", + "searchByName": "이름으로 검색", + "pressShortcut": "아무 키 조합이나 누르세요...", + "pressKeys": "키를 누르세요...", + "notSet": "설정되지 않음", + "edit": "단축키 편집", + "clear": "지우기", + "global": "전역", + "saved": "단축키 저장됨", + "error": "단축키 저장 오류", + "reset": "단축키 초기화됨", + "resetToDefault": "기본값으로 초기화", + "resetAll": "모든 단축키 초기화", + "allReset": "모든 단축키가 기본값으로 초기화됨", + "noResults": "단축키를 찾을 수 없음", + "conflictWith": "충돌: {name}", + "categories": { + "all": "전체", + "general": "일반", + "navigation": "탐색", + "appearance": "@:settings.appearance", + "conversation": "대화" + }, + "resetAllConfirm": { + "title": "모든 단축키 초기화", + "message": "모든 키보드 단축키를 기본값으로 초기화하시겠습니까?" + }, + "help": { + "title": "키보드 단축키", + "customizeButton": "단축키 사용자 지정" + }, + "contextual": "컨텍스트", + "systemWide": "시스템 전체", + "macOptionHint": "Option 키 단축키는 Msty에서 작동합니다. 특수 문자가 대신 생성되는 경우 시스템 설정 > 키보드 > 입력 소스를 확인하세요", + "example": { + "title": "키보드 단축키 예제", + "description": "이 컴포넌트는 컴포넌트에서 키보드 단축키를 등록하고 사용하는 방법을 보여줍니다.", + "registeredShortcuts": "등록된 단축키:", + "exampleAction1": "예제 작업 1", + "scopedAction": "범위 지정 작업", + "actions": "작업:", + "updateFirstShortcut": "첫 번째 단축키 업데이트", + "testConflictDetection": "충돌 감지 테스트", + "actionLog": "작업 로그:", + "noActionsYet": "아직 작업이 없습니다. 단축키를 눌러보세요!", + "developerNotes": { + "title": "개발자 노트:", + "items": [ + "컴포넌트가 언마운트될 때 단축키가 자동으로 정리됩니다", + "ID 충돌을 피하기 위해 컴포넌트 범위 단축키를 사용하세요", + "플랫폼별 바인딩이 자동으로 처리됩니다 (Mac의 Cmd, Windows의 Ctrl)", + "기존 단축키와 충돌할 수 있는 단축키를 등록하기 전에 충돌을 확인하세요", + "단축키는 전역(모든 곳에서 작동) 또는 컨텍스트별일 수 있습니다" + ] + } + }, + "splitRemoval": { + "selectSplitToRemove": "제거할 스플릿 선택", + "pressKeysToCancel": "누르기", + "remove": "제거" + } + }, + "miniMapActions": { + "noMessageSelectedWarning": { + "summary": "메시지가 선택되지 않음", + "detail": "작업을 수행하려면 최소 하나의 메시지를 선택하세요" + }, + "exportOrCopyMessage": { + "exportMessage": "메시지 내보내기 | 메시지들 내보내기", + "copyMessage": "메시지 복사 | 메시지들 복사", + "asJson": "JSON으로", + "asMarkdown": "마크다운으로", + "successMessage": "메시지를 {format}(으)로 {action}했습니다", + "action": { + "export": "내보내기", + "copy": "복사" + } + } + }, + "reIndexItem": { + "action": "{item} 재색인", + "successMessage": { + "detail": "{item}이(가) 성공적으로 재색인되었습니다" + }, + "errorMessage": { + "detail": "{item} 재색인 실패" + }, + "confirmationMessage": "{item}을(를) 재색인하시겠습니까?" + }, + "recent": "최근|최근 항목", + "knowledgeStack": { + "title": "Knowledge Stack | Knowledge Stacks", + "contexts": "@:knowledgeStack.title 컨텍스트", + "saveEdits": { + "title": "편집 저장", + "confirmation": { + "header": "편집 저장 및 초안으로 표시", + "message": "편집 내용을 저장하시겠습니까? Knowledge Stack이 초안으로 표시되며 다시 처리될 때까지 프로덕션에서 사용할 수 없습니다." + } + }, + "selectFolderForImport": "@:knowledgeStack.title을(를) 가져올 위치 선택", + "newKnowledgeStack": "새 @:knowledgeStack.title", + "addDescription": "설명 추가", + "editDescription": "설명 편집", + "descriptionPlaceholder": "이 Knowledge Stack에 대한 설명을 추가하세요...", + "autoSaving": "저장 중...", + "autoSaved": "{time}에 저장됨", + "basicInfo": "기본 정보", + "similarityThreshold": "@:similarity 임계값", + "similarityMatch": "@:similarity 일치", + "unsavedChanges": { + "confirmNavigation": "저장하지 않은 변경 사항이 있습니다. 이 페이지를 나가시겠습니까? 변경 사항이 손실됩니다.", + "confirmReload": "페이지를 새로고침하면 저장하지 않은 변경 사항이 손실됩니다." + }, + "empty": { + "title": "@:knowledgeStack.title이(가) 선택되지 않음", + "description": "Knowledge Stack을 사용하면 파일, 폴더, 노트, YouTube 대본을 가져와 RAG(검색 증강 생성)를 통해 검색 가능하고 채팅 준비 상태로 만들 수 있습니다" + }, + "selectOrCreate": "@:knowledgeStack.title 선택", + "selectFromTreeOrCreate": "트리에서 @:knowledgeStack.title을(를) 선택하거나 새로 만드세요", + "folderForm": { + "addTitle": "새 @:folder 추가", + "editTitle": "@:folder 편집", + "editIgnoreRules": "무시 규칙 편집", + "editIgnoreRulesTitle": "무시 규칙", + "ignoreRulesDescription": "처리에서 제외할 파일 및 폴더의 패턴을 정의합니다.", + "ignoreRulesHierarchySimple": "우선순위: 로컬 .mstyignore/.gitignore → 폴더 규칙 → 시스템 기본값", + "ignoreRulesPlaceholder": "# 여기에 패턴을 입력하세요, 한 줄에 하나씩\n# 예: *.log, node_modules/, !important.txt", + "showExamples": "예제 및 도움말 표시", + "ignoreExample1": "로그 파일", + "ignoreExample2": "모든 디렉터리의 임시 파일", + "ignoreExample3": "전체 디렉터리", + "ignoreExample4": "예외 패턴", + "ignoreExample5": "여러 이미지 유형", + "ignoreExample6": "test 및 하위 디렉터리의 모든 파일", + "ignoreExample7": "대소문자 구분 안 함", + "ignoreExample8": "secret-로 시작하는 파일", + "insertTemplate": "템플릿 사용", + "clearContent": "전체 지우기", + "ignoreRulesUpdated": "무시 규칙이 성공적으로 업데이트됨", + "ignoreRulesUpdateError": "무시 규칙 업데이트 실패", + "deleteConfirmation": { + "header": "@:folder '{folderName}' 삭제", + "message": "이 폴더를 삭제하시겠습니까? 그 안의 모든 Knowledge Stack이 제거됩니다. 이 작업은 취소할 수 없습니다.", + "successMessage": { + "detail": "@:folder 삭제됨" + }, + "errorMessage": { + "detail": "@:folder 삭제 실패" + } + }, + "updateErrorMessage": { + "detail": "@:folder 업데이트 실패" + }, + "createSuccessMessage": { + "detail": "@:folder 생성됨" + }, + "createErrorMessage": { + "detail": "@:folder 생성 실패" + } + }, + "setDefaultFolder": "기본 폴더로 설정", + "unsetDefaultFolder": "기본 폴더 설정 해제", + "createRootFolder": "루트에 새 폴더", + "knowledgeStackForm": { + "addTitle": "새 @:knowledgeStack.title 추가", + "deleteConfirmation": { + "header": "@:knowledgeStack.title 삭제", + "message": "이 Knowledge Stack을 삭제하시겠습니까? 그 안의 모든 항목이 제거됩니다. 이 작업은 취소할 수 없습니다." + } + }, + "deleteAllKnowledgeStack": { + "title": "모든 @:knowledgeStack.title 삭제", + "description": "전체 @:knowledgeStack.title이(가) 지워집니다{'.'} 삭제 후 복구할 방법이 없습니다.", + "successMessage": { + "detail": "모든 @:knowledgeStack.title 삭제됨" + }, + "errorMessage": { + "detail": "모든 @:knowledgeStack.title 삭제 실패" + } + }, + "chunksConsole": { + "chunk": "청크 | @:knowledgeStack.chunksConsole.chunks", + "chunks": "청크들", + "title": "@:knowledgeStack.chunksConsole.chunks 콘솔", + "description": "이 콘솔을 사용하여 Knowledge Stack, { title }이(가) 어떻게 사용되고 있는지, 채팅 시 어떤 청크가 모델로 전송되는지 이해할 수 있습니다. 관련성이 없거나 유용하지 않다고 생각되는 청크를 삭제할 수도 있습니다.", + "queryText": "쿼리 텍스트", + "similarityFilter": { + "title": "@:similarity", + "all": "전체", + "highest": "최고", + "high": "높음", + "medium": "중간", + "low": "낮음" + }, + "matchCount": "@:knowledgeStack.chunksConsole.chunks 개수", + "sourceFile": "원본 파일", + "sourceNote": "원본 노트", + "sourceVideo": "원본 비디오", + "source": "원본", + "score": "점수", + "searchResults": "검색 결과", + "noResultsFound": "검색 결과를 찾을 수 없습니다. 쿼리 또는 검색 설정을 조정해 보세요.", + "noResultsAfterFilter": "현재 유사도 필터와 일치하는 결과가 없습니다. 더 많은 결과를 표시하려면 필터를 조정해 보세요.", + "deleteChunk": { + "successMessage": { + "detail": "@:knowledgeStack.chunksConsole.chunk이(가) 삭제되었습니다" + } + }, + "searchType": { + "title": "검색 유형", + "hybrid": "하이브리드 검색", + "semantic": "시맨틱 검색", + "keyword": "키워드 검색" + }, + "filterDisclaimer": "이 필터는 아래에 표시되는 결과에만 영향을 줍니다. 실제 쿼리는 변경되지 않습니다.", + "tooltip": { + "scrubbed": "PII 제거를 위해 콘텐츠가 정제되었습니다", + "cached": "캐시된 정제 버전 사용", + "fresh": "새로 정제된 콘텐츠" + }, + "runQuery": "쿼리 실행" + }, + "addon": { + "title": "@:knowledgeStack.title", + "selectedCount": "{count}개 선택됨", + "selectedStacks": "선택된 스택", + "searchPlaceholder": "Knowledge Stack 검색...", + "recentlyUpdated": "최근 업데이트됨", + "searchResults": "검색 결과", + "noResults": "Knowledge Stack을 찾을 수 없습니다", + "noStacks": "사용 가능한 Knowledge Stack이 없습니다", + "noDescription": "설명 없음", + "numberOfChunks": "@:knowledgeStack.chunksConsole.chunks 개수", + "searchType": "검색 유형", + "synthesizePrompt": "쿼리 합성", + "enablePiiScrubbing": "PII 제거 활성화", + "fullContentContextLimit": "최대 전체 콘텐츠 컨텍스트", + "fullContentContextWarning": "전체 콘텐츠 컨텍스트는 토큰 사용량을 크게 증가시킬 수 있으며 성능에 영향을 줄 수 있습니다", + "manageStacks": "스택 관리", + "onlyCompletedStacks": "완료된 스택만 선택할 수 있습니다" + }, + "totalFiles": "전체 파일", + "vectorDimensions": "벡터 차원", + "wordCount": "단어 수", + "readingTime": "읽기 시간", + "embeddingModel": { + "title": "임베딩 모델", + "noModel": "구성된 임베딩 모델이 없습니다", + "modelMissing": "모델 {modelId}을(를) 찾을 수 없습니다", + "providerRemapped": "모델 제공자가 자동으로 다시 매핑되었습니다", + "changeModel": "쿼리 임베딩 모델 변경", + "selectModel": "쿼리 임베딩 모델 선택", + "missingModelWarning": "이 Knowledge Stack의 원래 임베딩 모델을 사용할 수 없습니다. 새 모델을 선택하세요.", + "providerRemappedInfo": "임베딩 모델 제공자가 호환 가능한 제공자로 자동으로 다시 매핑되었습니다.", + "currentModel": "현재 모델", + "noModelConfigured": "구성된 모델 없음", + "selectNewModel": "새 모델 선택", + "defaultLocal": "기본 (로컬)" + }, + "buckets": { + "files": { + "title": "@:files", + "description": ".pdf, .csv, .md, .json, .jsonl, .xlsx, .docx, .rtf, .txt, .pptx 또는 기타 지원되는 파일 유형을 추가하세요.", + "dropZoneText": "여기에 파일을 드래그 앤 드롭", + "browseFiles": "파일 찾아보기" + }, + "folders": { + "title": "@:folders 및 Obsidian Vault", + "description": "파일이 포함된 폴더를 추가하세요. Obsidian Vault도 추가할 수 있습니다.", + "dropZoneText": "여기에 폴더를 드래그 앤 드롭", + "browseFolders": "폴더 찾아보기", + "liveMode": "라이브 모드", + "liveModeDescription": "폴더의 변경 사항을 모니터링하고 Knowledge Stack을 자동으로 업데이트합니다", + "duplicateFolder": "중복된 폴더", + "alreadyAdded": "폴더가 이미 추가됨", + "folderAlreadyExists": "이 폴더는 이미 @:knowledgeStack.title에 추가되었습니다", + "folderAlreadyAdded": "폴더 '{path}'이(가) 이미 추가되었습니다", + "folderProcessed": "폴더 처리됨", + "filesAdded": "{count}개 파일이 성공적으로 추가되었습니다", + "onlyFoldersAllowed": "여기에는 폴더만 추가할 수 있습니다. 개별 파일 대신 폴더를 선택하세요.", + "selectFolder": "폴더 선택", + "useDirectoryPicker": "웹 모드에서는 찾아보기 버튼을 사용하여 폴더를 선택하세요", + "processed": "처리됨", + "processingError": "폴더 처리 오류", + "folderExplorer": "폴더 탐색기", + "showIgnoredFiles": "무시된 파일 표시", + "noFolders": "아직 추가된 폴더가 없습니다", + "refresh": "새로고침", + "showInFileManager": "파일 관리자에서 보기", + "remove": "제거", + "loadError": "폴더 로드 실패", + "removed": "폴더 제거됨", + "folderRemoved": "'{name}'이(가) Knowledge Stack에서 제거되었습니다", + "removeError": "폴더 제거 실패", + "ignored": "무시됨", + "loading": "로딩 중...", + "loadingContents": "폴더 내용 로딩 중...", + "confirmRemove": "\"{name}\"을(를) 이 Knowledge Stack에서 제거하시겠습니까? 폴더와 파일은 시스템에 남아있습니다.", + "expandFolder": "폴더 펼치기", + "collapseFolder": "폴더 접기", + "folderIgnored": "이 폴더는 .mstyignore 또는 .gitignore 규칙에 따라 무시됩니다", + "fileIgnored": "이 파일은 .mstyignore 또는 .gitignore 규칙에 따라 무시됩니다", + "actionMenu": "작업 메뉴", + "emptyFolder": "빈 폴더", + "itemCount": "{count}개 항목", + "hiddenItemCount": "{count}개 숨겨진 항목" + }, + "obsidianVaults": { + "title": "Obsidian Vault", + "description": "Knowledge Stack에 Obsidian Vault를 추가하세요. Msty가 vault의 모든 노트를 색인합니다.", + "dropZoneText": "여기에 Obsidian Vault를 드래그 앤 드롭", + "browseVaults": "Obsidian Vault 찾아보기" + }, + "notes": { + "title": "노트", + "description": "Knowledge Stack에 자신의 노트를 추가하세요. 이러한 노트는 시맨틱 검색을 위해 청크되고 임베딩됩니다.", + "addNote": "노트 추가", + "titlePlaceholder": "노트 제목 입력...", + "contentPlaceholder": "노트 내용 입력...", + "empty": "아직 추가된 노트가 없습니다. '노트 추가'를 클릭하여 시작하세요.", + "unsaved": "아직 저장되지 않음" + }, + "youTubeLinks": { + "title": "YouTube 링크", + "description": "대본을 색인하기 위해 YouTube 비디오 링크를 추가하세요. Msty가 대본을 가져와 검색 가능하게 만듭니다.", + "dropZoneText": "여기에 YouTube 링크를 드래그 앤 드롭하거나 아래에 붙여넣으세요", + "inputPlaceholder": "여기에 YouTube URL을 붙여넣으세요 (공백 또는 쉼표로 구분)...", + "inputPlaceholderWithDetected": "여기에 YouTube URL을 붙여넣으세요 ({count}개 감지됨)", + "autoDetection": "감지된 URL 자동 가져오기", + "detectedCount": "{count}개 URL 감지됨", + "detectedUnpulledUrls": "{count}개 YouTube URL이 감지되었지만 아직 가져오지 않았습니다" + } + }, + "itemActions": { + "markForReprocessing": "재처리 표시", + "lockTemporary": "임시 잠금", + "lockPermanent": "영구 잠금", + "unlock": "잠금 해제", + "ignoreRetrieval": "검색에서 무시", + "unignoreRetrieval": "검색에 포함" + }, + "loadMode": { + "title": "로드 모드", + "dialogTitle": "로드 모드 선택", + "distribution": "분포", + "dialogDescription": "Knowledge Stack 구성 중에 이 파일을 로드할 방법을 선택하세요.", + "staticFiles": "정적 파일", + "dynamicFiles": "동적 파일", + "syncFiles": "동기화 파일", + "totalFiles": "전체 파일", + "specialModes": "특수 모드", + "specialModesRatio": "특수 모드 비율", + "static": { + "label": "정적 모드", + "description": "파일이 추가되었을 때의 캐시된 버전을 사용합니다. 빠르고 예측 가능하지만 최근 변경 사항이 반영되지 않습니다.", + "shortDescription": "초기 색인에서 로드된 캐시된 콘텐츠", + "badge": "기본" + }, + "dynamic": { + "label": "동적 모드", + "description": "각 구성마다 최신 파일 콘텐츠를 로드합니다. 약간 느리지만 항상 최신 상태입니다.", + "shortDescription": "각 구성마다 로드되는 최신 콘텐츠", + "badge": "권장" + }, + "sync": { + "label": "동기화 모드", + "description": "파일 변경 사항을 감시하고 자동으로 재구성합니다. 작고 자주 업데이트되는 파일에 가장 적합합니다.", + "shortDescription": "파일이 변경되면 자동으로 재구성", + "badge": "비용 높음" + } + }, + "syncMode": { + "start": "동기화 모드 시작", + "pause": "동기화 모드 일시정지", + "pauseAll": "전체 일시정지", + "started": "동기화 모드 시작됨", + "startedDetail": "{name}의 파일 변경 사항을 감시하고 있습니다", + "stopped": "동기화 모드 일시정지됨", + "stoppedDetail": "파일 감시가 일시정지되었습니다", + "startFailed": "동기화 모드 시작 실패", + "startFailedDetail": "Knowledge Stack에 동기화 모드로 표시된 파일이 있는지 확인하세요", + "allPaused": "모든 동기화 모드 일시정지됨", + "allPausedDetail": "모든 Knowledge Stack의 파일 감시가 중지되었습니다", + "active": "{count}개 활성 | {count}개 활성", + "activeTitle": "활성 동기화 모드", + "filesWatching": "{count}개 파일 | {count}개 파일", + "filesCount": "{count}개 파일 | {count}개 파일", + "startedTime": "{time}에 시작됨", + "totalStats": "{stacks}개 스택, {files}개 파일 | {stacks}개 스택, {files}개 파일" + }, + "analytics": { + "title": "분석 및 인사이트", + "lastComposed": "마지막 구성", + "sections": "분석 섹션", + "performanceTimings": "성능 타이밍", + "summaryStatistics": "요약 통계", + "contentBreakdown": "콘텐츠 분석", + "querySettings": "쿼리 설정", + "readingStatistics": "읽기 통계", + "noAnalyticsAvailable": "사용 가능한 분석 없음", + "noAnalyticsDescription": "이 Knowledge Stack을 구성한 후 분석을 사용할 수 있습니다.", + "noSectionsSelected": "선택된 분석 섹션 없음", + "noSectionsSelectedDescription": "Knowledge Stack에 대한 인사이트를 보려면 위에서 하나 이상의 분석 섹션을 선택하세요.", + "selectAllSections": "모든 섹션 선택", + "timings": { + "loadingItems": "항목 로딩", + "splittingChunks": "@:knowledgeStack.chunksConsole.chunks 분할", + "embeddingChunks": "@:knowledgeStack.chunksConsole.chunks 임베딩", + "composingStack": "스택 구성", + "totalTime": "전체 시간" + }, + "stats": { + "numberOfItems": "항목 수", + "totalChunks": "전체 @:knowledgeStack.chunksConsole.chunks", + "availableChunks": "사용 가능한 @:knowledgeStack.chunksConsole.chunks", + "skippedChunks": "건너뛴 @:knowledgeStack.chunksConsole.chunks", + "wordCount": "단어 수", + "characterCount": "문자 수", + "readingTime": "읽기 시간" + }, + "ignoredItems": "무시된 항목", + "ignoredForRetrieval": "검색에서 무시됨", + "ignoredItemsDescription": "이러한 항목은 검색 및 검색 작업에서 제외됩니다", + "ignoredPercentage": "무시된 항목 비율", + "ofTotal": "{total} 중", + "files": "파일", + "notes": "노트", + "youTubeLinks": "YouTube 비디오", + "noIgnoredItems": "무시된 항목 없음", + "allItemsIncluded": "이 Knowledge Stack의 모든 항목이 검색 및 검색에 포함됩니다", + "recommendation": "권장 사항", + "contentTypes": { + "files": "파일", + "obsidianVaults": "OBSIDIAN VAULT", + "folders": "폴더", + "notes": "노트", + "youTubeLinks": "YOUTUBE 링크" + }, + "piiScrubbing": { + "title": "PII 제거", + "totalChunks": "전체 @:knowledgeStack.chunksConsole.chunks", + "scrubbedChunks": "제거된 @:knowledgeStack.chunksConsole.chunks", + "cachedChunks": "캐시된 @:knowledgeStack.chunksConsole.chunks", + "coverage": "커버리지", + "progress": "제거 진행률", + "loadAnalytics": "분석 로드", + "failedToLoadAnalytics": "PII 분석 데이터 로드 실패", + "analyticsNotLoaded": "PII 분석이 로드되지 않음", + "clickToViewAnalytics": "\"분석 로드\"를 클릭하여 PII 제거 통계 보기", + "scoreTooltip": "이 점수는 Knowledge Stack에 PII 제거가 얼마나 포괄적으로 적용되었는지 반영합니다. 점수가 높을수록 더 많은 청크가 PII 제거를 위해 처리되었음을 의미합니다.", + "optionalDescription": "PII 제거는 선택 사항입니다. 콘텐츠에 민감한 개인 정보가 포함된 경우에만 쿼리 설정에서 활성화하세요.", + "protectionDescription": "Knowledge Stack에서 민감한 정보가 얼마나 잘 보호되는지 측정합니다", + "status": { + "notEnabled": "활성화되지 않음", + "wellProtected": "잘 보호됨", + "partiallyProtected": "부분적으로 보호됨", + "limitedProtection": "제한된 보호", + "minimalProtection": "최소한의 보호" + }, + "insights": { + "excellentPrivacy": "우수한 개인정보 보호 - 거의 모든 콘텐츠가 보호됨", + "goodPrivacy": "좋은 개인정보 보호 - 대부분의 콘텐츠가 보호됨", + "partialPrivacy": "부분적인 개인정보 보호 - 설정 검토 고려", + "limitedPrivacy": "제한된 개인정보 보호 - 민감한 콘텐츠 검토", + "notEnabled": "PII 제거가 활성화되지 않았습니다. 콘텐츠에 민감한 개인 정보가 포함되어 있지 않다면 완전히 괜찮습니다.", + "whenToEnable": "Knowledge Stack에 이름, 주소, 전화번호, 이메일 또는 기타 개인 데이터가 포함된 경우에만 PII 제거 활성화를 고려하세요.", + "significantReduction": "상당한 콘텐츠 감소 ({percentage}%) - 광범위한 PII 발견", + "moderateReduction": "보통 콘텐츠 감소 ({percentage}%) - 일부 PII 제거됨", + "minimalReduction": "최소한의 콘텐츠 감소 ({percentage}%) - 낮은 PII 감지", + "noContentChange": "콘텐츠 크기 변화 없음 - PII가 감지되거나 제거되지 않음", + "allChunksProcessed": "모든 청크가 성공적으로 처리됨", + "nearlyAllProcessed": "거의 모든 청크가 성공적으로 처리됨", + "mostProcessed": "대부분의 청크가 처리됨 - 일부는 주의가 필요할 수 있음", + "incompleteProcessing": "불완전한 처리 - PII 제거 구성 확인", + "largeKnowledgeBase": "대규모 Knowledge Base - PII 감지 커버리지 증가 고려", + "manyUnprocessed": "처리되지 않은 청크가 많음 - PII 제거 설정 검토", + "optionalFeature": "PII 제거는 선택 사항입니다. 콘텐츠에 이름, 이메일 또는 전화번호와 같은 민감한 정보가 포함된 경우 쿼리 설정에서 활성화하세요.", + "privacyOption": "PII 제거는 민감한 정보를 보호하는 데 도움이 됩니다. 선택 사항이며 필요한 경우 쿼리 설정에서 활성화할 수 있습니다." + }, + "labels": { + "securityStatus": "보안 상태", + "privacyStatus": "개인정보 상태", + "whenToEnable": "활성화 시기", + "contentImpact": "콘텐츠 영향", + "processingEfficiency": "처리 효율성", + "scaleRecommendation": "규모 권장 사항", + "coverageRecommendation": "커버리지 권장 사항", + "optionalFeature": "선택적 기능", + "privacyOption": "개인정보 옵션" + } + }, + "querySettingsDetails": { + "searchType": "검색 유형", + "numberOfChunks": "@:knowledgeStack.chunksConsole.chunks 개수", + "promptPrefix": "프롬프트 접두사" + }, + "privacyOptimizationScore": "개인정보 최적화 점수", + "piiProtectionLevel": "PII 보호 수준", + "piiScrubbingStatus": "PII 제거 상태", + "unscrubbedChunks": "제거되지 않은 @:knowledgeStack.chunksConsole.chunks", + "originalSize": "원본 크기", + "processedSize": "처리된 크기", + "sizeReduction": "크기 감소", + "privacyInsights": "개인정보 @:insights", + "dataModified": "데이터가 수정되었습니다", + "showOutdatedData": "오래된 데이터 표시", + "contentDistribution": "콘텐츠 분포", + "contentContribution": "{label}이(가) 전체 청크의 {percentage}%를 차지합니다", + "processingIssue": "처리 문제", + "lowEfficiency": "{label}의 효율성이 낮습니다 ({efficiency}%)", + "dataQualityIssue": "데이터 품질 문제", + "highSkipRates": "{count}개 콘텐츠 유형이 높은 건너뛰기 비율을 가지고 있습니다", + "contentDiversity": "콘텐츠 다양성", + "singleContentType": "단일 콘텐츠 유형 - 소스 다양화를 고려하세요", + "excellentDiversity": "여러 소스 유형에 걸친 우수한 콘텐츠 다양성", + "optimizationTip": "최적화 팁", + "reduceChunkSize": "더 나은 콘텐츠 세분화를 위해 청크 크기를 800-1200자로 줄이세요", + "increaseChunkSize": "더 나은 효율성을 위해 청크 크기를 1500-2000자로 늘리세요", + "embeddingThroughput": "임베딩 처리량", + "chunksPerSecond": "{rate} 청크/초 (각 {time}ms)", + "searchStrategy": "검색 전략", + "balancedSearch": "키워드 + 시맨틱 검색을 결합한 균형 잡힌 접근", + "semanticSearch": "AI 기반 시맨틱 검색 - 개념적 쿼리에 최적", + "keywordSearch": "전통적인 키워드 검색 - 정확한 용어에 최적", + "retrievalVolume": "검색 볼륨", + "lowChunkCount": "매우 낮은 청크 수는 관련 정보를 놓칠 수 있습니다", + "highChunkCount": "높은 청크 수는 노이즈를 포함하고 응답을 느리게 할 수 있습니다", + "optimalChunkCount": "균형 잡힌 검색을 위한 최적의 청크 수", + "contentFiltering": "콘텐츠 필터링", + "relaxedFiltering": "완화된 필터링 - 느슨하게 관련된 콘텐츠를 포함할 수 있습니다", + "strictFiltering": "엄격한 필터링 - 매우 집중된 결과", + "moderateFiltering": "관련 콘텐츠를 위한 균형 잡힌 필터링", + "guidedContext": "가이드된 컨텍스트", + "customPromptPrefix": "사용자 지정 프롬프트 접두사가 쿼리 해석을 안내합니다", + "lockIndicator": "잠금 표시기", + "allItemsCanBeReprocessed": "모든 항목을 재처리할 수 있습니다", + "itemsPartiallyLocked": "항목의 {percentage}%가 잠겨 있습니다", + "mostItemsLocked": "대부분의 항목이 잠겨 있습니다 - 제한된 재처리 기능", + "privacySecurity": "개인정보 및 보안", + "privacyProtectionEnabled": "민감한 데이터에 대한 개인정보 보호 활성화됨", + "noPiiScrubbing": "PII 제거 없음 - 콘텐츠가 민감하지 않은지 확인하세요", + "scaleOptimization": "규모 최적화", + "largeKnowledgeBase": "대규모 지식 베이스 - 더 나은 커버리지를 위해 청크 수를 늘리세요", + "smallKnowledgeBase": "소규모 지식 베이스 - 청크 수 감소를 고려하세요", + "performanceProfile": "성능 프로필", + "optimizedForSpeed": "빠른 응답을 위해 최적화된 구성", + "optimizedForQuality": "고품질 결과를 위해 최적화된 구성", + "highLockRate": "높은 잠금 비율", + "lockedItemsPercentage": "항목의 {percentage}%가 잠겨 있어 재처리되지 않습니다", + "unlockRecommendation": "업데이트가 필요한 경우 임시 잠금 항목의 잠금 해제를 고려하세요", + "overHalfLocked": "항목의 50% 이상이 잠겨 있습니다. 이는 지식 베이스의 업데이트 능력을 크게 감소시킬 수 있습니다.", + "lockStatus": "잠금 상태", + "totalItems": "전체 항목", + "unlocked": "잠금 해제됨", + "temporarilyLocked": "임시 잠금됨", + "permanentlyLocked": "영구 잠금됨", + "lockStatusByContentType": "콘텐츠 유형별 잠금 상태", + "tempLocked": "임시 잠금", + "permLocked": "영구 잠금", + "lockStatusInsights": "잠금 상태 @:insights", + "processingEfficiency": "처리 효율성", + "contentInsights": "콘텐츠 @:insights", + "compositionOptimizationScore": "구성 최적화 점수", + "compositionInsights": "구성 @:insights", + "performanceInsights": "성능 @:insights", + "processingPhaseDetails": "처리 단계 세부 정보", + "loadingItems": "항목 로딩", + "splittingChunks": "@:knowledgeStack.chunksConsole.chunks 분할", + "embeddingChunks": "@:knowledgeStack.chunksConsole.chunks 임베딩", + "fileReading": "파일 읽기", + "databaseWrite": "데이터베이스 쓰기", + "composingStack": "스택 구성", + "totalProcessingTime": "전체 처리 시간", + "totalLockedItems": "전체 잠금 항목", + "efficiency": "효율성", + "loadMode": { + "title": "로드 모드 분석", + "description": "Knowledge Stack 전반의 파일 로딩 동작", + "distribution": "로드 모드 분포", + "totalFiles": "전체 파일", + "staticFiles": "정적 모드", + "dynamicFiles": "동적 모드", + "syncFiles": "동기화 모드", + "specialModes": "특수 모드", + "specialModesRatio": "특수 모드 %", + "status": "상태", + "active": "활성", + "inactive": "비활성", + "breakdown": "시각적 분석", + "noFiles": "이 Knowledge Stack에 파일이 없습니다", + "desktopOnly": "로드 모드 옵션은 데스크톱 애플리케이션에서만 사용할 수 있습니다", + "notAvailable": "로드 모드 옵션은 데스크톱 애플리케이션에서만 사용할 수 있습니다", + "noSpecialModes": "모든 파일이 정적 모드를 사용하고 있습니다. 최신 콘텐츠를 사용하려면 파일에 대해 동적 또는 동기화 모드를 활성화하세요.", + "syncActive": "동기화 모드 활성", + "syncActiveDetails": "{files}개 감시 중 • {time}에 시작됨", + "staticDescription": "초기 색인에서 로드된 캐시된 콘텐츠", + "dynamicDescription": "각 구성마다 로드되는 최신 콘텐츠", + "syncDescription": "파일이 변경되면 자동으로 재구성", + "staticBadge": "기본", + "dynamicBadge": "최신", + "syncBadge": "라이브", + "insights": { + "highSyncCount": { + "title": "높은 동기화 파일 수", + "description": "{count}개 파일이 동기화 모드입니다", + "recommendation": "리소스 사용을 줄이려면 자주 업데이트되지 않는 파일에 대해 동적 모드 사용을 고려하세요" + }, + "syncEnabled": { + "title": "동기화 모드 활성화됨", + "description": "{count}개 파일이 변경될 때 자동으로 업데이트됩니다" + }, + "highDynamicUsage": { + "title": "높은 동적 모드 사용", + "description": "파일의 {percentage}%가 동적 모드를 사용하고 있습니다", + "recommendation": "거의 변경되지 않는 파일에는 정적 모드로도 충분할 수 있습니다" + }, + "dynamicEnabled": { + "title": "동적 모드 활성", + "description": "{count}개 파일이 각 구성마다 최신 콘텐츠를 로드하고 있습니다" + }, + "staticOnly": { + "title": "정적 모드만 사용", + "description": "모든 파일이 초기 색인의 캐시된 콘텐츠를 사용하고 있습니다", + "recommendation": "최신 콘텐츠를 보장하려면 자주 업데이트되는 파일에 대해 동적 또는 동기화 모드를 활성화하세요" + }, + "mixedModes": { + "title": "혼합 로드 모드", + "description": "파일의 {percentage}%가 특수 로드 모드를 사용하고 있습니다" + } + } + } + }, + "composeSettings": { + "title": "구성 설정", + "chunkOverlapping": "@:knowledgeStack.chunksConsole.chunk 중첩", + "embeddingModel": { + "title": "임베딩 모델", + "warning": "임베딩 모델을 변경하면 전체 Knowledge Stack을 재구성해야 하며, 재구성이 실패할 가능성도 있습니다.", + "learnMore": "임베딩 모델 호환성에 대해 자세히 알아보기", + "defaultPlaceholder": "기본 (로컬)" + }, + "placeholders": { + "selectEmbeddingModel": "임베딩 모델 선택", + "selectChunkOverlapping": "청크 중첩 선택", + "selectChunkSize": "청크 크기 선택" + }, + "chunkingMethod": { + "title": "청킹 방법", + "recursiveCharacter": "재귀적 문자", + "sentence": "문장", + "description": "더 나은 검색 및 검색을 위해 문서를 작은 조각으로 청크하는 방법을 선택하세요." + }, + "overlapping": { + "title": "중첩", + "description": "청크 간 중첩 정도를 선택하세요. 중첩이 많을수록 컨텍스트가 향상될 수 있지만 토큰 사용량이 증가합니다." + }, + "chunkSize": { + "title": "@:knowledgeStack.chunksConsole.chunk 크기", + "description": "각 청크의 최대 크기를 문자 수로 설정하세요. 작은 청크는 검색 정확도를 향상시킬 수 있지만 토큰 사용량이 증가합니다." + }, + "chunkSizesToIgnore": { + "title": "무시할 @:knowledgeStack.chunksConsole.chunk 크기", + "description": "처리 중 무시해야 하는 청크 크기를 지정하세요. 매우 작거나 매우 큰 청크를 제외하는 데 유용합니다." + } + }, + "querySettings": { + "title": "쿼리 설정", + "numberOfChunks": "@:knowledgeStack.chunksConsole.chunks 개수", + "promptPrefix": "프롬프트 접두사", + "similarityThreshold": { + "low": "낮음", + "medium": "중간", + "high": "높음", + "highest": "최고" + }, + "searchTypes": { + "semantic": "시맨틱 검색", + "keyword": "키워드 검색", + "hybrid": "하이브리드 검색" + }, + "modes": { + "push": "푸시 모드", + "pull": "풀 모드" + }, + "chunks": { + "title": "Knowledge Stack 컨텍스트", + "loadError": "Knowledge Stack 청크 로드 실패. 다시 시도하세요.", + "searchSettings": "검색 설정", + "searchType": "검색 유형", + "searchQuery": "검색 쿼리", + "source": "원본", + "content": "콘텐츠", + "fullContent": "전체 콘텐츠", + "chunkInfo": "@:knowledgeStack.chunksConsole.chunk 정보", + "knowledgeStack": "Knowledge Stack", + "chunks": "청크", + "maxChunks": "최대 @:knowledgeStack.chunksConsole.chunks" + }, + "retrievalMode": { + "title": "@:knowledgeStack.chunksConsole.chunk 검색 모드", + "description": "청크가 미리 가져와지는 푸시 모드 또는 모델이 Knowledge Stack을 직접 쿼리할 수 있는 풀 모드 중 선택하세요" + } + }, + "chunks": { + "coverage": "커버리지", + "skippedChunks": "건너뛴 @:knowledgeStack.chunksConsole.chunks", + "availableChunks": "사용 가능한 @:knowledgeStack.chunksConsole.chunks", + "numberOfChunks": "@:knowledgeStack.chunksConsole.chunks 개수", + "promptPrefix": "프롬프트 접두사", + "chunkingMethod": "청킹 방법", + "chunkSize": "@:knowledgeStack.chunksConsole.chunk 크기", + "chunkOverlap": "@:knowledgeStack.chunksConsole.chunk 중첩", + "totalChunks": "전체 @:knowledgeStack.chunksConsole.chunks", + "cachedChunks": "캐시된 @:knowledgeStack.chunksConsole.chunks", + "scrubbedChunks": "제거된 @:knowledgeStack.chunksConsole.chunks", + "loadError": "Knowledge Stack 청크 로드 실패. 다시 시도하세요.", + "searchSettings": "검색 설정", + "searchType": "검색 유형", + "maxChunks": "최대 @:knowledgeStack.chunksConsole.chunks", + "searchQuery": "검색 쿼리", + "synthesizedQuery": "합성된 쿼리", + "chunks": "청크 | 청크들", + "source": "원본", + "content": "콘텐츠", + "viewFull": "전체 콘텐츠 보기", + "fullContent": "전체 @:knowledgeStack.chunksConsole.chunk 콘텐츠", + "chunkInfo": "@:knowledgeStack.chunksConsole.chunk 정보", + "knowledgeStack": "Knowledge Stack", + "scrubbed": "제거됨", + "original": "원본", + "chunkId": "@:knowledgeStack.chunksConsole.chunk ID", + "piiStatus": "PII 상태", + "piiScrubbed": "PII 제거됨", + "piiUnscrubbed": "PII 제거 안 됨", + "tooltip": { + "scrubbed": "PII 제거를 위해 콘텐츠가 정제되었습니다", + "cached": "캐시된 정제 버전 사용", + "fresh": "새로 정제된 콘텐츠", + "original": "@:pii.scrubbing.title 없는 원본 콘텐츠" + }, + "queryAnalysis": "쿼리 분석", + "fullContentRetrieved": "전체 콘텐츠 컨텍스트 활성", + "documentsRetrieved": "검색된 문서", + "contentContext": "콘텐츠 컨텍스트", + "keywords": "키워드", + "fullDoc": "전체 문서", + "type": "유형", + "fullDocument": "전체 문서" + }, + "chunksVisualizer": { + "title": "@:knowledgeStack.chunksConsole.chunks 시각화", + "description": "문서가 청크되는 방식 시각화", + "openStitcher": "시각화 도구 열기", + "viewStitcher": "시각화 도구 보기", + "stitchableFiles": "사용 가능한 파일", + "loading": "파일 로딩 중...", + "noFiles": "파일을 찾을 수 없습니다", + "selectFile": "파일 선택", + "selectFileDescription": "왼쪽에서 파일을 선택하여 청크와 콘텐츠를 시각화하세요", + "mimeType": "MIME 유형", + "chunks": "@:knowledgeStack.chunksConsole.chunks", + "overlaps": "중첩", + "stitchedSize": "결합된 크기", + "showOverlaps": "중첩 표시", + "hideOverlaps": "중첩 숨기기", + "showChunks": "@:knowledgeStack.chunksConsole.chunks 표시", + "showStitched": "결합된 것 표시", + "copyContent": "콘텐츠 복사", + "stitchedContent": "결합된 콘텐츠", + "scrubbedChunks": "제거된 @:knowledgeStack.chunksConsole.chunks", + "unScrubbedChunks": "제거 안 된 @:knowledgeStack.chunksConsole.chunks", + "overlapRemoved": "깨끗한 텍스트 재구성을 위해 중첩이 제거되었습니다", + "chunkNumber": "@:knowledgeStack.chunksConsole.chunk {number}", + "overlapPrevious": "이전 중첩", + "overlapNext": "다음 중첩", + "overlapWithPrevious": "이 텍스트는 이전 청크와 중첩됩니다", + "overlapWithNext": "이 텍스트는 다음 청크와 중첩됩니다", + "chunkIndices": "파일 내 문자 위치", + "coreIndices": "중첩 없는 핵심 콘텐츠", + "chunkCount": "{count}개 청크", + "showOriginal": "원본 표시", + "showScrubbed": "제거된 것 표시", + "showScrubbedOnly": "제거된 것만 표시", + "showAllChunks": "모든 @:knowledgeStack.chunksConsole.chunks 표시", + "tooltip": { + "scrubbed": "PII 제거를 위해 콘텐츠가 정제되었습니다", + "cached": "캐시된 정제 버전 사용", + "fresh": "새로 정제된 콘텐츠" + }, + "itemsPerPage": "페이지당", + "showingChunks": "{total}개 청크 중 {start}-{end}", + "loadingChunks": "청크 로딩 중...", + "noItems": "항목을 찾을 수 없습니다", + "selectItem": "항목 선택", + "selectItemDescription": "왼쪽에서 파일 또는 노트를 선택하여 청크와 콘텐츠를 시각화하세요", + "openConsole": "콘솔 열기", + "selectedChunks": "{count}개 @:knowledgeStack.chunksConsole.chunk 선택됨", + "deleteSelected": "선택한 것 삭제", + "clearSelection": "선택 지우기", + "confirmDelete": "삭제 확인", + "confirmDeleteMessage": "선택한 {count}개 청크를 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.", + "deleteSuccess": "@:knowledgeStack.chunksConsole.chunks 삭제됨", + "deleteSuccessDetail": "{count}개 청크가 성공적으로 삭제되었습니다", + "deletedChunksCount": "{count}개 @:knowledgeStack.chunksConsole.chunk이(가) 성공적으로 삭제되었습니다", + "deleteError": "삭제 실패" + }, + "export": { + "forceCompose": "강제 구성", + "overallProgress": "전체 진행률", + "itemsExported": "{count}개 항목 내보내기됨", + "items": "항목", + "skip": "건너뛰기", + "exportCompleted": "내보내기가 성공적으로 완료되었습니다!", + "savedTo": "저장 위치: {path}", + "cancelAll": "모두 취소", + "done": "완료", + "export": "내보내기", + "exporting": "내보내는 중", + "knowledgeStack": "Knowledge Stack", + "folder": "폴더", + "exportFailed": "내보내기 실패", + "importFailed": "가져오기 실패" + }, + "messages": { + "editsSaved": "Knowledge Stack에 대한 변경 사항이 저장되었습니다. 변경 사항을 적용하려면 재구성해야 합니다.", + "savedAndProcessing": "Knowledge Stack이 저장되고 처리가 시작되었습니다", + "cannotForceCompose": "강제 구성 불가: Knowledge Stack을 먼저 저장해야 합니다", + "failedToForceCompose": "Knowledge Stack 강제 구성 실패", + "forceComposeStarted": "강제 구성 시작 - 모든 항목이 재처리됩니다", + "failedToUpdateQuerySettings": "쿼리 설정 업데이트 실패", + "querySettingsUpdated": "쿼리 설정 업데이트됨", + "justNow": "방금", + "minutesAgo": "{minutes}분 전", + "searchPlaceholder": "검색...", + "failedToSelectItem": "항목 선택 실패", + "failedToSelectFolder": "폴더 선택 실패", + "processingCompleted": "Knowledge Stack {title} 처리 완료", + "processingFailed": "Knowledge Stack {title} 처리 실패", + "nothingToCompose": "Knowledge Stack {title}을(를) 구성할 항목이 없습니다", + "composeError": "Knowledge Stack {title} 구성 오류", + "downloadImportNotAvailableInWeb": "URL에서 가져오기는 데스크톱 애플리케이션에서만 사용할 수 있습니다", + "deleteSuccess": "{count}개 @:knowledgeStack.title 삭제됨!", + "createError": "@:knowledgeStack.title 생성 실패", + "saveEditsError": "@:knowledgeStack.title 편집 저장 실패", + "folderAdded": "폴더 '{name}'이(가) Knowledge Stack에 추가되었습니다" + }, + "folderLockedTemporary": "폴더 '{name}'이(가) 임시 잠금되었습니다", + "folderLockedPermanent": "폴더 '{name}'이(가) 영구 잠금되었습니다", + "lockFailed": "폴더 잠금 실패", + "folderUnlocked": "폴더 '{name}'의 잠금이 해제되었습니다", + "unlockFailed": "폴더 잠금 해제 실패", + "unlock": "잠금 해제", + "status": { + "misc": "기타", + "path": "경로: {path}", + "name": "이름: {name}", + "unknown": "알 수 없음", + "original": "원본", + "loadingPiiAnalytics": "PII 분석 로딩 중...", + "allItemsUnlocked": "모든 항목의 잠금이 해제되어 필요시 재처리할 수 있습니다." + }, + "abortProcessing": "처리 중단", + "errors": { + "processingFailed": "처리 실패", + "errorMessage": "오류 메시지", + "occurredAt": "발생 시간", + "failedFile": "실패한 파일", + "errorSummary": "오류 요약", + "technicalDetails": "기술 세부 정보", + "stackTrace": "스택 추적", + "copyDetails": "세부 정보 복사", + "detailsCopied": "오류 세부 정보가 클립보드에 복사되었습니다", + "clickToSeeDetails": "클릭하여 오류 세부 정보 보기", + "fileIsNull": "파일이 null입니다", + "checkingPathError": "경로가 디렉터리인지 확인하는 중 오류 발생", + "processingFolderError": "폴더 처리 중 오류 발생", + "lockFolderTemporaryFailed": "폴더 임시 잠금 실패", + "lockFolderPermanentFailed": "폴더 영구 잠금 실패", + "unlockFolderFailed": "폴더 잠금 해제 실패", + "status": { + "completed": "상태: 완료됨", + "processing": "상태: 처리 중", + "pending": "상태: 대기 중", + "draft": "상태: 초안", + "needsReprocessing": "상태: 재처리 필요", + "error": "상태: 오류", + "lockedTemporary": "상태: 임시 잠금됨", + "lockedPermanent": "상태: 영구 잠금됨", + "aborted": "상태: 중단됨", + "unknown": "상태: 알 수 없음" + } + } + }, + "features": { + "showcase": { + "title": "Aurum 기능 잠금 해제", + "subtitle": "가장 강력한 AI 기능과 고급 기능을 위해 Aurum 라이선스로 업그레이드하세요", + "eyebrow": "필요한 모든 것", + "viewPricing": "가격 보기", + "featureMatrix": "기능 매트릭스", + "activateLicense": "라이선스 활성화", + "licenses": { + "aurum": "Aurum" + } + } } }