{ "header": { "collapseSidebar": "사이드바 접기", "expandSidebar": "사이드바 펼치기", "toggleConnection": "백엔드 연결 전환", "viewAnnualSummary": "연간 요약 보기", "annualSummary": "2025 연간 요약", "searchPlaceholder": "검색...", "viewDocs": "MaiBot 문서 보기", "docs": "MaiBot 문서", "switchToLight": "라이트 모드로 전환", "switchToDark": "다크 모드로 전환", "logout": "로그아웃", "logoutLabel": "로그아웃", "notConnected": "연결 안됨" }, "sidebar": { "groups": { "overview": "개요", "botConfig": "봇 설정", "botResources": "봇 리소스", "extensionsMonitor": "확장 기능 & 모니터", "system": "시스템" }, "menu": { "home": "홈", "botMainConfig": "봇 메인 설정", "aiModelProvider": "AI 모델 공급자", "modelManagement": "모델 관리", "adapterConfig": "어댑터 설정", "emojiManagement": "이모티콘 관리", "expressionManagement": "표현 관리", "slangManagement": "슬랭 관리", "personInfo": "인물 정보", "knowledgeGraph": "장기 기억 그래프", "knowledgeBase": "장기 기억 콘솔", "pluginMarket": "플러그인 마켓", "configTemplate": "설정 템플릿", "pluginConfig": "플러그인 설정", "logViewer": "로그 뷰어", "maisakaMonitor": "MaiSaka 채팅 모니터", "localChat": "로컬 채팅", "settings": "설정" } }, "workspace": { "switcherLabel": "MaiBot 작업 공간 전환", "settings": "麦麦 설정", "chat": "麦麦 채팅" }, "chat": { "defaultTab": "WebUI", "botNameFallback": "麦麦", "userFallback": "사용자", "userNameFallback": "WebUI 사용자", "virtualGroupFallback": "WebUI 가상 그룹 채팅", "status": { "connected": "연결됨", "connecting": "연결 중...", "disconnected": "연결 안됨" }, "actions": { "cancel": "취소", "reconnect": "다시 연결", "save": "저장", "send": "메시지 보내기" }, "identity": { "current": "현재 신분:", "editName": "닉네임 수정", "group": "그룹: {{group}}", "namePlaceholder": "닉네임 입력", "virtual": "가상 신분:" }, "input": { "placeholder": "메시지 입력...", "waiting": "연결 대기 중..." }, "message": { "empty": "{{bot}}와 대화를 시작해 보세요!", "emptyHint": "아래 입력란에 메시지를 입력하고 Enter 키를 눌러 보내세요", "errorFallback": "오류가 발생했습니다", "thinking": "생각 중..." }, "composer": { "hint": "Enter 전송 · Shift + Enter 줄바꿈" }, "sidebar": { "closeConversation": "{{label}} 닫기", "conversations": "채팅 대화", "emptyPreview": "아직 메시지가 없습니다", "identityHint": "로컬 채팅 신분", "newVirtual": "새 가상 신분 대화", "online": "온라인", "offline": "오프라인", "subtitle": "대화 {{count}}개", "title": "채팅", "webuiBadge": "WebUI", "virtualBadge": "가상", "profileTitle": "내 신분", "editName": "닉네임 편집", "saveName": "저장" }, "dialog": { "create": "대화 만들기", "description": "麦麦가 이미 알고 있는 사용자를 선택해 그 사용자 신분으로 대화합니다. 麦麦는 해당 사용자에 대한 기억과 이해를 사용해 응답합니다.", "groupName": "가상 그룹 이름(선택)", "groupNameHint": "麦麦는 이 이름의 그룹 채팅으로 인식합니다", "knownUserSuffix": " · 알고 있음", "loading": "불러오는 중...", "noUsers": "사용자를 찾을 수 없습니다", "personCount": "({{count}}명)", "platform": "플랫폼 선택", "platformPlaceholder": "플랫폼 선택", "searchUser": "사용자 이름 검색...", "title": "새 가상 신분 대화", "user": "사용자 선택" }, "media": { "audioUnsupported": "브라우저가 오디오 재생을 지원하지 않습니다", "emoji": "이모티콘", "face": "[표정:{{data}}]", "file": "[파일: {{data}}]", "forward": "[전달 메시지]", "image": "이미지", "loadFailed": "[{{type}} 로드 실패]", "music": "[음악 공유]", "noCaptions": "자막 없음", "reply": "[답장]", "unknown": "[{{type}}]", "unknownMessage": "알 수 없는 메시지", "videoUnsupported": "브라우저가 비디오 재생을 지원하지 않습니다" }, "toast": { "backendUnavailable": "백엔드 서비스에 연결할 수 없습니다. MaiBot이 실행 중인지 확인하세요.", "backendUnavailableShort": "백엔드 서비스에 연결할 수 없습니다", "connectionFailed": "연결 실패", "currentSessionUnavailable": "현재 채팅 세션을 사용할 수 없습니다. 잠시 후 다시 시도하세요.", "error": "오류", "incompleteConfig": "설정이 완전하지 않습니다", "networkError": "네트워크 오류", "platformFailed": "플랫폼을 불러오지 못했습니다", "selectPlatformAndUser": "플랫폼과 사용자를 선택하세요", "sendFailed": "전송 실패", "serverError": "서버 오류: {{status}}", "sessionUnavailable": "채팅 세션을 열 수 없습니다. 잠시 후 다시 시도하세요.", "virtualTabCreated": "가상 신분 탭", "virtualTabCreatedDesc": "{{label}} 대화를 만들었습니다" } }, "layout": { "verifyingLogin": "로그인 상태 확인 중...", "logoTitle": "MaiBot WebUI", "logoTitleShort": "M" }, "httpWarning": { "title": "보안 알림: ", "message": "현재 HTTP로 WebUI에 접속하고 있습니다.", "description": "로컬이 아닌 HTTP 연결에서는 액세스 토큰과 설정 내용이 노출될 수 있습니다. 가능하면 HTTPS 또는 신뢰할 수 있는 내부망 연결을 사용하세요.", "dismiss": "HTTP 보안 알림 닫기" }, "settings": { "title": "설정", "description": "앱 환경 설정 관리", "tabs": { "appearance": "외관", "security": "보안", "other": "기타", "about": "정보" }, "appearance": { "themeMode": "테마 모드", "themeModeDesc": "라이트 / 다크 / 시스템 따라가기", "light": "라이트", "dark": "다크", "system": "시스템", "accentColor": "강조 색상", "resetDefault": "기본값으로 재설정", "colorPreview": "색상 미리보기", "styleTweaks": "스타일 조정", "typography": "타이포그래피", "visualEffects": "시각 효과", "layout": "레이아웃", "animation": "애니메이션", "background": "배경", "customCss": "사용자 정의 CSS", "animationEffect": "애니메이션 효과", "importExportTheme": "테마 가져오기 / 내보내기", "importTheme": "테마 가져오기", "exportTheme": "테마 내보내기", "importSuccess": "가져오기 성공", "importFailed": "가져오기 실패", "resetSuccess": "재설정 성공", "fontFamily": "글꼴", "fontSize": "글자 크기", "borderRadius": "테두리 반경", "contentWidth": "콘텐츠 너비", "sidebarWidth": "사이드바 너비", "animationSpeed": "애니메이션 속도", "backgroundImage": "배경 이미지", "backgroundBlur": "배경 흐림", "backgroundOpacity": "배경 투명도", "lightDesc": "항상 라이트 테마 사용", "darkDesc": "항상 다크 테마 사용", "systemDesc": "시스템 설정에 따라 자동 전환", "accentPrimary": "링 컴러", "accentHint": "색상 퐹을 클릭하거나 HEX 값을 입력하세요", "resetTheme": "기본값으로 재설정", "confirmResetTheme": "테마 재설정 확인", "confirmResetThemeDesc": "이렇게 하면 색상, 글꼴, 레이아웃 및 사용자 정의 CSS를 포함한 모든 테마 설정이 기본값으로 재설정됩니다. 이 작업은 되돌릴 수 없습니다. 계속하시겠습니까?", "confirmResetAction": "재설정 확인", "cssWarningTitle": "다음 내용이 안전 필터를 거쳣습니다:", "cssPlaceholder": "/* 사용자 정의 CSS를 여기에 입력 */\n\n/* 예시: */\n/* .sidebar { background: #1a1a2e; } */", "cssDescription": "인터페이스를 더욱 개인화하도록 사용자 정의 CSS를 작성하세요. 위험한 CSS(@import, url() 등)는 자동으로 필터됩니다.", "clearCss": "지우기", "exportDesc": "주제를 JSON 파일로 내보내 공유하거나 백업합니다. 가져올 때 모든 설정이 자동으로 적용됩니다.", "importSuccessDesc": "테마 설정을 가져왔습니다. 페이지가 자동으로 새로고침됩니다", "resetSuccessDesc": "테마가 기본값으로 재설정되었습니다", "enableAnimations": "애니메이션 활성화", "enableAnimationsDesc": "비활성화하면 모든 전환 애니메이션과 효과가 긺히고 성능이 향상됩니다", "loginWavesBackground": "로그인 페이지 파도 배경", "loginWavesBackgroundDesc": "비활성화하면 로그인 페이지가 단색 배경이 됩니다. 저사양 디바이스에 적합합니다", "inheritParentBg": "상위 배경 상속", "inheritParentBgDesc": "활성화하면 상위 레이어의 배경 설정을 사용합니다", "fontFamilyLabel": "글꼴 패밀리", "fontFamilyPlaceholder": "글꼴 패밀리 선택", "fontFamilySystem": "시스템 기본 (System)", "fontFamilySans": "돋움체 (Sans-serif)", "fontFamilySerif": "세리프 (Serif)", "fontFamilyMono": "등폭 (Monospace)", "baseFontSize": "기본 글자 크기 (Base Size)", "lineHeight": "줄 높이 (Line Height)", "lineHeightPlaceholder": "줄 높이 선택", "lineHeightCompact": "콤팬트 (1.2)", "lineHeightNormal": "보통 (1.5)", "lineHeightLoose": "느슨 (1.75)", "borderRadiusLabel": "테두리 반경 (Radius)", "shadowLabel": "그림자 강도 (Shadow)", "shadowPlaceholder": "그림자 강도 선택", "shadowNone": "없음 (None)", "shadowSm": "약함 (Small)", "shadowMd": "중간 (Medium)", "shadowLg": "강함 (Large)", "shadowXl": "매우 강함 (Extra Large)", "blurLabel": "흘림 효과 (Blur)", "sidebarWidthLabel": "사이드바드 너비 (Sidebar Width)", "maxContentWidth": "콘텐츠 최대 너비 (Max Width)", "spacingUnit": "기본 간격 (Spacing Unit)", "animationSpeedLabel": "애니메이션 속도 (Speed)", "animationSpeedPlaceholder": "애니메이션 속도 선택", "animationFast": "빠름 (100ms)", "animationNormal": "보통 (300ms)", "animationSlow": "느림 (500ms)", "animationOff": "끄기 (0ms)", "bgPage": "페이지", "bgSidebar": "사이드바드", "typographyGroup": "타이포그래피 (Typography)", "visualGroup": "시각 효과 (Visual)", "layoutGroup": "레이아웃 (Layout)", "animationGroup": "애니메이션 (Animation)", "backgroundGroup": "배경 설정 (Backgrounds)" }, "security": { "currentToken": "현재 액세스 토큰", "yourToken": "액세스 토큰", "regenerate": "재생성", "customToken": "사용자 정의 액세스 토큰", "securityTip": "보안 팁", "cannotCopy": "복사할 수 없습니다", "copySuccess": "복사됨", "copyFailed": "복사 실패", "updateSuccess": "업데이트됨", "updateFailed": "업데이트 실패", "generateSuccess": "생성됨", "generateFailed": "생성 실패", "newToken": "새 액세스 토큰", "confirmRegenerate": "토큰 재생성 확인", "confirmRegenerateDesc": "재생성 후 이전 토큰은 무효화됩니다. 다시 로그인해야 합니다.", "cancel": "취소", "confirm": "확인", "cannotCopyDesc": "토큰이 보안 쿠키에 저장되어 있습니다. 새 토큰을 얻으려면 재생성하세요.", "copySuccessDesc": "토큰이 클립보드에 복사되었습니다", "copyFailedDesc": "토큰을 수동으로 복사하세요", "inputError": "입력 오류", "inputErrorDesc": "새 토큰을 입력하세요", "formatError": "형식 오류", "formatErrorDesc": "토큰이 요구 사항을 충족하지 않습니다: {{failedRules}}", "updateSuccessDesc": "액세스 토큰이 업데이트되었습니다. 로그인 페이지로 이동합니다.", "updateFailedDesc": "토큰을 업데이트할 수 없습니다", "updateFailedConn": "서버 연결에 실패했습니다", "generateSuccessDesc": "새 액세스 토큰이 생성되었습니다. 즉시 저장하세요.", "generateFailedDesc": "새 토큰을 생성할 수 없습니다", "generateFailedConn": "서버 연결에 실패했습니다", "cannotView": "볼 수 없습니다", "cannotViewDesc": "토큰이 보안 쿠키에 저장되어 있습니다. 새 토큰이 필요하면 \"재생성\"을 클릭하세요.", "hide": "숨기기", "show": "표시", "copyTip": "클립보드에 복사", "regenerateShort": "생성", "confirmRegenerateFullDesc": "새로운 64자 보안 토큰을 생성하고 현재 토큰을 즉시 무효화합니다. 새 토큰으로 다시 로그인해야 합니다. 이 작업은 되돌릴 수 없습니다. 계속하시겠습니까?", "confirmGenerate": "생성 확인", "tokenStorePlaceholder": "토큰이 보안 쿠키에 저장되어 있습니다", "safekeepTip": "액세스 토큰을 안전하게 보관하고 다른 사람과 공유하지 마세요.", "newTokenLabel": "새 액세스 토큰", "customTokenPlaceholder": "사용자 정의 토큰 입력", "tokenReqTitle": "토큰 보안 요구 사항:", "tokenValid": "토큰 형식이 올바르며 사용 가능합니다", "updateBtn": "사용자 정의 토큰 업데이트", "updating": "업데이트 중...", "dialogTitle": "새 액세스 토큰", "dialogDesc": "새 토큰입니다. 즉시 저장하세요. 창을 닫으면 로그인 페이지로 이동합니다.", "dialogTokenLabel": "새 토큰 (64자 보안 토큰)", "important": "중요 공지", "tip1": "이 토큰은 한 번만 표시됩니다. 닫은 후에는 볼 수 없습니다", "tip2": "즉시 복사하여 안전한 위치에 저장하세요", "tip3": "닫으면 자동으로 로그인 페이지로 이동합니다", "tip4": "새 토큰으로 다시 로그인하세요", "copied": "복사됨", "copyToken": "토큰 복사", "savedClose": "저장했습니다, 닫기", "securityTip1": "재생성하면 시스템이 랜덤 64자 보안 토큰을 생성합니다", "securityTip2": "사용자 정의 토큰은 모든 보안 요구 사항을 충족해야 합니다", "securityTip3": "토큰을 업데이트하면 이전 토큰이 즉시 무효화됩니다", "securityTip4": "안전한 환경에서 토큰을 확인하고 복사하세요", "securityTip5": "토큰 유출이 의심되면 즉시 재생성하거나 업데이트하세요", "securityTip6": "최고의 보안을 위해 시스템 생성 토큰을 권장합니다" }, "other": { "performance": "성능 & 저장소", "localStorage": "로컬 저장소 사용량", "logCache": "로그 캐시 크기", "importExport": "설정 가져오기 / 내보내기", "configWizard": "설정 마법사", "devTools": "개발자 도구", "clearStorage": "로컬 저장소 지우기", "clearStorageDesc": "모든 로컬 저장소 데이터를 지웁니다", "clearStorageConfirm": "지우기 확인", "clearLogCache": "로그 캐시 지우기", "clearLogCacheDesc": "모든 캐시된 로그 데이터를 지웁니다", "clearLogCacheConfirm": "지우기 확인", "importSettings": "설정 가져오기", "exportSettings": "설정 내보내기", "resetAllSettings": "모든 설정 재설정", "resetAllSettingsDesc": "모든 설정을 기본값으로 되돌립니다", "resetAllSettingsConfirm": "재설정 확인", "clearStorageSuccess": "로컬 저장소를 지웠습니다", "clearStorageFailed": "지우기 실패", "clearLogSuccess": "로그 캐시를 지웠습니다", "clearLogFailed": "지우기 실패", "importSuccess": "가져오기 성공", "importFailed": "가져오기 실패", "exportSuccess": "내보내기 성공", "exportFailed": "내보내기 실패", "resetSuccess": "재설정 성공", "resetFailed": "재설정 실패", "storageItems": "{{count}}개 저장 항목", "logCacheSizeDesc": "로그 뷰어가 캐시할 최대 로그 수를 제어합니다. 값이 클수록 메모리를 더 사용합니다.", "logCacheSizeUnit": "개", "dataSyncIntervalLabel": "홈 데이터 새로고침 간격", "dataSyncIntervalUnit": "초", "dataSyncIntervalDesc": "홈 화면 통계 데이터의 자동 새로고침 간격을 제어합니다", "wsReconnectLabel": "WebSocket 재연결 간격", "wsReconnectUnit": "초", "wsReconnectDesc": "로그 WebSocket 연결 해제 후 재연결 기본 간격", "wsMaxReconnectLabel": "WebSocket 최대 재연결 횟수", "wsMaxReconnectUnit": "회", "wsMaxReconnectDesc": "연결 실패 후 최대 재연결 시도 횟수", "clearLogCacheFn": "로그 캐시 지우기", "clearLocalCache": "로컬 캐시 지우기", "confirmClearCache": "로컬 캐시 지우기 확인", "confirmClearCacheDesc": "로그인 자격 증명을 제외한 모든 로컬 캐시 설정과 데이터를 지웁니다. 일부 기본 설정을 다시 구성해야 할 수 있습니다. 계속하시겠습니까?", "confirmClear": "지우기 확인", "importExportDesc": "현재 인터페이스 설정을 내보내 백업하거나, 이전에 내보낸 파일에서 복원하세요.", "exporting": "내보내는 중...", "importing": "가져오는 중...", "resetAllSettingsBtn": "모든 설정을 기본값으로 재설정", "confirmResetAll": "모든 설정 재설정 확인", "confirmResetAllDesc": "테마, 색상, 애니메이션 등 모든 인터페이스 설정을 기본값으로 복원합니다. 로그인 상태에는 영향이 없습니다. 계속하시겠습니까?", "configWizardDesc": "초기 설정 마법사를 다시 실행하여 시스템 기본 설정을 재구성할 수 있습니다.", "rerunSetup": "초기 설정 다시 실행", "confirmRerunSetup": "재구성 확인", "confirmRerunSetupDesc": "초기 설정 마법사로 돌아갑니다. 시스템 기본 설정을 재구성할 수 있습니다. 계속하시겠습니까?", "devToolsDesc": "아래 기능은 개발 및 디버깅 전용입니다. 페이지 충돌이나 비정상 동작을 유발할 수 있습니다.", "triggerError": "테스트 오류 발생", "confirmTriggerError": "오류 발생 확인", "confirmTriggerErrorDesc": "React 오류를 수동으로 발생시켜 오류 경계 컴포넌트를 테스트합니다. 페이지를 새로고침하거나 홈으로 돌아가면 복구됩니다.", "confirmTrigger": "발생 확인", "logCleared": "로그 지워짐", "logClearedDesc": "로그 캐시가 지워졌습니다", "cacheCleared": "캐시 지워짐", "cacheClearedDesc": "{{count}}개의 캐시 데이터를 지웠습니다", "exportSuccessDesc": "설정을 JSON 파일로 내보냈습니다", "exportFailedDesc": "설정을 내보낼 수 없습니다", "importSuccessDesc": "{{imported}}개 설정을 가져왔습니다", "importSkippedSuffix": ", {{skipped}}개 건너뜀", "importRefreshHint": "참고", "importRefreshHintDesc": "일부 설정은 페이지를 새로고침해야 완전히 적용됩니다", "importNoDataDesc": "가져올 유효한 설정이 없습니다", "importInvalidDesc": "유효하지 않은 파일 형식", "resetDone": "재설정 완료", "resetDoneDesc": "모든 설정이 기본값으로 복원되었습니다. 변경 사항을 적용하려면 페이지를 새로고침하세요." }, "about": { "openSource": "오픈 소스", "aboutApp": "MaiBot Dashboard 정보", "version": "버전:", "author": "작성자", "techStack": "기술 스택", "frontendFramework": "프론트엔드 프레임워크", "uiComponents": "UI 컴포넌트", "backend": "백엔드", "buildTool": "빌드 도구", "openSourceThanks": "오픈 소스 라이브러리", "openSourceLicense": "오픈 소스 라이선스", "openSourceDesc": "이 프로젝트는 GitHub에서 오픈 소스입니다. Star ⭐로 응원해 주세요!", "visitGitHub": "GitHub 방문", "appDesc": "MaiBot의 현대적인 웹 관리 인터페이스", "maimaiCore": "MaiBot 코어", "uiFrameworkGroup": "UI 프레임워크 & 컴포넌트", "routingStateGroup": "라우팅 & 상태 관리", "formGroup": "폼 처리", "utilsGroup": "유틸리티 라이브러리", "animationGroup": "애니메이션", "backendGroup": "백엔드 프레임워크", "devToolsGroup": "개발자 도구", "openSourceThanksDesc": "이 프로젝트는 다음 훌륭한 오픈 소스 라이브러리를 사용합니다. 기여에 감사드립니다:", "licenseDesc": "이 프로젝트는 GNU General Public License v3.0으로 라이선스됩니다. 동일한 오픈 소스 라이선스를 유지하는 한 자유롭게 사용, 수정, 배포할 수 있습니다.", "licenseDeps": "이 프로젝트의 모든 오픈 소스 라이브러리는 각각의 라이선스(MIT, Apache-2.0, BSD 등)를 따릅니다. 모든 오픈 소스 기여자에게 감사드립니다.", "lib": { "react": "UI 구축을 위한 라이브러리", "shadcn": "우아한 React 컴포넌트 라이브러리", "radix": "스타일 없는 접근 가능한 컴포넌트", "tailwind": "유틸리티 우선 CSS 프레임워크", "lucide": "아름다운 아이콘 라이브러리", "tanstackRouter": "타입 안전한 라우팅 라이브러리", "zustand": "경량 상태 관리 라이브러리", "reactHookForm": "고성능 폼 라이브러리", "zod": "TypeScript 우선 스키마 검증", "clsx": "조건부 className 빌더", "tailwindMerge": "Tailwind 클래스 이름 병합 도구", "cva": "컴포넌트 변형 관리", "dateFns": "현대적인 날짜 유틸리티 라이브러리", "framerMotion": "React 애니메이션 라이브러리", "vaul": "드로어 컴포넌트 애니메이션", "fastapi": "현대적인 Python 웹 프레임워크", "uvicorn": "ASGI 서버", "pydantic": "데이터 검증 라이브러리", "pythonMultipart": "파일 업로드 지원", "typescript": "JavaScript의 슈퍼셋", "vite": "차세대 프론트엔드 빌드 도구", "eslint": "JavaScript 코드 린터" } } }, "auth": { "title": "로그인", "description": "계속하려면 액세스 토큰을 입력하세요", "tokenLabel": "액세스 토큰", "tokenPlaceholder": "액세스 토큰 입력", "loginButton": "로그인", "loggingIn": "로그인 중...", "loginFailed": "로그인 실패", "loginSuccess": "로그인 성공", "checkingAuth": "로그인 상태 확인 중...", "welcome": "MaiBot에 오신 것을 환영합니다", "accessDesc": "시스템에 액세스하려면 액세스 토큰을 입력하세요", "tokenRequired": "액세스 토큰을 입력해 주세요", "verifyingLabel": "확인 중...", "verifyEnter": "확인 후 입장", "helpLink": "Token이 없습니다. 어디서 얻을 수 있나요?", "helpTitle": "Access Token 얻는 방법", "helpDesc": "Access Token은 MaiBot WebUI에 액세스하는 유일한 자격 증명입니다. 다음 방법으로 얻으세요", "method1Title": "방법 1: 시작 로그 확인", "method1Desc": "MaiBot 시작 시 콘솔에 WebUI Access Token이 표시됩니다.", "method1Example1": "🔑 WebUI Access Token: abc123...", "method1Example2": "💡 이 Token으로 WebUI에 로그인하세요", "method2Title": "방법 2: 설정 파일 확인", "method2Desc": "Token은 프로젝트 루트의 설정 파일에 저장됩니다:", "method2FileHint": "이 파일을 열고 access_token 필드의 값을 복사하세요", "securityTipTitle": "보안 안내", "securityTip1": "Token을 안전하게 유지하고 타인에게 노출하지 마세요", "securityTip2": "Token을 재설정하려면 로그인 후 시스템 설정으로 이동하세요", "slowLink": "인터페이스가 느립니다. 어떻게 하나요?", "disableAnimTitle": "배경 애니메이션 비활성화", "disableAnimDesc": "배경 애니메이션은 저사양 디바이스에서 느리게 동작할 수 있습니다. 비활성화하면 화면이 훨씬 부드러워집니다.", "disableAnimDetail": "비활성화 후 배경은 단색으로 바뀐지지만 모든 기능은 정상 작동합니다. 시스템 설정에서 언제든지 다시 활성화할 수 있습니다.", "disableAnimBtn": "애니메이션 비활성화", "verifyFailed": "Token 확인에 실패했습니다. 확인 후 다시 시도해 주세요.", "connFailed": "서버에 연결하지 못했습니다. 네트워크 연결을 확인해 주세요.", "switchToLight": "라이트 모드로 전환", "switchToDark": "다크 모드로 전환" }, "setupPage": { "steps": { "botBasic": { "title": "Bot 기본 설정", "description": "봇의 기본 정보를 설정합니다" }, "personality": { "title": "성격 설정", "description": "봇의 성격과 말투를 정의합니다" }, "emoji": { "title": "이모지 팩", "description": "이모지 관련 설정을 구성합니다" }, "other": { "title": "기타 설정", "description": "전역 슬랭 등 기본 옵션을 설정합니다" }, "siliconFlow": { "title": "API 설정", "description": "SiliconFlow API 키를 설정합니다" } }, "loading": { "title": "설정을 불러오는 중...", "description": "기존 설정을 읽고 있습니다" }, "header": { "title": "초기 설정 마법사", "description": "{{appName}}의 초기 설정을 함께 완료해 봅시다" }, "progress": { "stepCounter": "단계 {{current}} / {{total}}" }, "validation": { "selectPlatform": "플랫폼을 선택해 주세요", "enterNickname": "닉네임을 입력해 주세요", "enterQqAccount": "QQ 계정을 입력해 주세요", "enterAccountId": "계정 ID를 입력해 주세요" }, "toast": { "loadFailedTitle": "설정 불러오기에 실패했습니다", "loadFailedDescription": "기존 설정을 불러올 수 없어 기본값을 사용합니다", "saveSuccessTitle": "저장되었습니다", "saveSuccessDescription": "{{step}} 설정이 저장되었습니다", "saveFailedTitle": "저장에 실패했습니다", "validationFailedTitle": "입력값을 확인해 주세요", "completeSuccessTitle": "설정이 완료되었습니다", "completeSuccessDescription": "새 설정을 적용하기 위해 {{appName}}을(를) 재시작하는 중입니다...", "completeFailedTitle": "설정 완료에 실패했습니다", "skipFailedTitle": "설정 마법사 건너뛰기에 실패했습니다", "unknownError": "알 수 없는 오류" }, "actions": { "previous": "이전", "next": "다음", "skip": "마법사 건너뛰기", "complete": "설정 완료", "saving": "저장 중...", "completing": "완료 중..." }, "skipDialog": { "title": "설정 마법사를 건너뛸까요?", "description": "시스템 설정에서 언제든지 다시 설정 마법사를 열 수 있습니다. 정말 건너뛰시겠습니까?", "confirm": "건너뛰기" }, "footer": "이 설정들은 언제든지 설정 화면에서 변경할 수 있습니다", "defaults": { "personality": { "personality": "여자 대학생이며 현재 2학년이고, Tieba 같은 커뮤니티를 자주 봅니다.", "replyStyle": "답변은 담백하고 짧게 하며 중국어로 말하세요. 자신의 학과 배경을 일부러 강조하지 마세요. Tieba, Zhihu, Weibo의 답변 스타일을 참고할 수 있습니다.", "multipleReplyStyles": { "plain": "말투는 담백하지만 약간 냉소적이고, 매우 짧고 구어체입니다. Tieba 와 Weibo 답변 스타일을 참고할 수 있습니다.", "shortText": "1-2글자로 답장하기", "shortSymbol": "1-2개의 기호로 답장하기", "translation": "살짝 번역체로 말하되 길게 쓰지 않기" } }, "emoji": { "filtrationPrompt": "공공질서와 미풍양속에 어긋나지 않음" } }, "forms": { "botBasic": { "platform": { "label": "플랫폼 *", "placeholder": "플랫폼 선택", "description": "봇이 실행될 플랫폼을 선택합니다", "options": { "custom": "기타 플랫폼" } }, "customPlatform": { "label": "플랫폼 이름 *", "placeholder": "예: matrix 와 같은 플랫폼 이름 입력" }, "qqAccount": { "label": "QQ 계정 *", "placeholder": "봇의 QQ 계정을 입력하세요", "description": "봇 로그인에 사용하는 QQ 계정입니다" }, "primaryAccount": { "label": "계정 ID *", "placeholder": "봇의 계정 ID를 입력하세요", "description": "이 플랫폼에서 봇을 식별하는 계정 ID입니다" }, "nickname": { "label": "닉네임 *", "placeholder": "봇의 닉네임을 입력하세요", "description": "봇의 대표 호칭입니다" }, "alias": { "label": "별칭", "placeholder": "별칭을 입력하고 Enter 로 추가", "add": "추가", "description": "봇의 다른 호칭을 여러 개 추가할 수 있습니다", "remove": "별칭 {{alias}} 제거" } }, "personality": { "personality": { "label": "성격 특성 *", "placeholder": "봇의 성격과 설정을 설명해 주세요 (권장 120자 이내)", "description": "예: 대학 2학년 여자 대학생으로 Tieba 를 자주 본다" }, "replyStyle": { "label": "말투 *", "placeholder": "봇이 말하는 방식과 표현 습관을 설명해 주세요", "description": "예: 답변은 담백하고 짧게, 중국어로 말하며 Tieba, Zhihu, Weibo 스타일을 참고한다" }, "multipleReplyStyle": { "label": "대체 답변 스타일", "placeholder": "한 줄에 하나씩 대체 답변 스타일을 입력하세요", "description": "목록이 비어 있지 않으면 MaiBot 이 아래 확률에 따라 기본 답변 스타일을 무작위로 대체합니다" }, "multipleProbability": { "label": "대체 스타일 적용 확률", "description": "답변을 만들 때마다 기본 답변 스타일을 대체 스타일로 무작위 교체할 확률입니다" } }, "emoji": { "emojiSendNum": { "label": "이모지 후보 수", "description": "전송 전에 몇 개의 이모지 중에서 고를지 정합니다. 최대 64개입니다" }, "maxRegNum": { "label": "최대 이모지 수", "description": "봇이 저장할 수 있는 이모지의 최대 개수입니다" }, "doReplace": { "label": "최대 수 도달 시 교체", "description": "켜면 오래된 이모지를 삭제하고, 끄면 새 이모지를 더 이상 수집하지 않습니다" }, "checkInterval": { "label": "확인 간격 (분)", "description": "이모지 등록, 손상, 삭제를 확인하는 간격입니다" }, "stealEmoji": { "label": "이모지 수집", "description": "일부 이모지를 봇이 자신의 것으로 저장할 수 있게 합니다" }, "contentFiltration": { "label": "이모지 필터링 사용", "description": "조건에 맞는 이모지만 저장합니다" }, "filtrationPrompt": { "label": "필터 조건", "placeholder": "예: 공공질서와 미풍양속에 어긋나지 않음", "description": "저장할 이모지가 충족해야 하는 조건을 설명해 주세요" } }, "other": { "allGlobal": { "label": "전역 슬랭 모드 사용", "description": "봇이 그룹 슬랭을 학습하고 사용할 수 있게 합니다" } }, "siliconFlow": { "about": { "title": "SiliconFlow 소개", "description": "SiliconFlow 는 DeepSeek V3, Qwen, 비전 모델, 음성 인식, 임베딩 모델 등 폭넓은 모델을 제공합니다. API Key 하나로 MaiBot 의 모든 기능을 사용할 수 있습니다.", "link": "SiliconFlow 에서 API Key 받기" }, "apiKey": { "label": "SiliconFlow API Key *", "description": "SiliconFlow API Key를 입력해 주세요. 입력하면 MaiBot 이 필요한 모델을 자동으로 구성합니다.", "show": "API Key 표시", "hide": "API Key 숨기기" }, "autoConfig": { "title": "다음 모델이 자동으로 구성됩니다:", "items": { "deepseek": "DeepSeek V3 - 주요 대화 및 도구 모델", "qwen3": "Qwen3 30B - 잦은 소규모 작업과 도구 호출", "qwen3Vl": "Qwen3 VL 30B - 이미지 인식", "senseVoice": "SenseVoice - 음성 인식", "bgeM3": "BGE-M3 - 텍스트 임베딩", "lpmm": "지식 베이스 관련 모델 (LPMM)" } }, "hint": { "title": "팁: ", "description": "마법사를 마친 뒤에는 \"시스템 설정 -> 모델 설정\"에서 더 많은 API 제공자와 모델을 추가할 수 있습니다." } } } }, "common": { "loading": "로딩 중...", "error": "오류", "retry": "재시도", "save": "저장", "cancel": "취소", "confirm": "확인", "delete": "삭제", "edit": "편집", "close": "닫기", "search": "검색", "noData": "데이터 없음", "success": "성공", "failed": "실패" }, "restart": { "preparing": "재시작 준비 중", "preparingDesc": "재시작 요청 전송 중...", "preparingTip": "🔄 MaiBot 재시작을 준비 중...", "restarting": "MaiBot 재시작 중", "restartingDesc": "잠시 기다려주세요, MaiBot이 재시작 중입니다...", "restartingTip": "🔄 설정을 저장했습니다, 메인 프로세스를 재시작 중...", "checking": "서비스 상태 확인 중", "checkingDesc": "서비스 복구 대기 중... ({{current}}/{{max}})", "checkingTip": "⏳ 서비스 복구를 기다리는 중, 페이지를 닫지 마세요...", "success": "재시작 성공", "successDesc": "로그인 페이지로 이동 중...", "successTip": "✅ 설정이 적용되었습니다, 서비스가 정상적으로 실행 중입니다", "failed": "재시작 시간 초과", "failedDesc": "서비스가 예상 시간 내에 복구되지 않았습니다", "failedTip": "⚠️ 장시간 응답이 없으면 수동으로 재시작해 보세요", "refreshPage": "페이지 새로고침", "retryCheck": "재시도", "elapsed": "경과 시간:" }, "errorBoundary": { "title": "문제가 발생했습니다", "description": "앱이 예기치 않은 오류를 만났습니다. 페이지를 새로고침하거나 홈으로 돌아갈 수 있습니다.", "refreshPage": "페이지 새로고침", "goHome": "홈으로 이동", "footer": "문제가 계속되면 오류 정보를 복사하여 개발자에게 보고해 주세요", "copiedToClipboard": "클립보드에 복사됨", "copyError": "오류 정보 복사" }, "search": { "placeholder": "페이지 검색...", "title": "검색", "noResults": "일치하는 페이지를 찾을 수 없습니다", "startSearch": "키워드를 입력하여 검색 시작", "navigate": "탐색", "select": "선택", "close": "닫기", "categories": { "overview": "개요", "config": "설정", "resources": "리소스", "monitor": "모니터", "extensions": "확장 기능", "system": "시스템" }, "items": { "home": "홈", "homeDesc": "대시보드 개요 보기", "botConfig": "속 메인 설정", "botConfigDesc": "속 핵심 설정 구성", "modelProvider": "모델 공급자 설정", "modelProviderDesc": "모델 공급자 구성", "model": "모델 설정", "modelDesc": "모델 매개변수 구성", "emoji": "이모티콘 관리", "emojiDesc": "속 이모티콘 관리", "expression": "표현 관리", "expressionDesc": "속 표현 관리", "person": "인물 정보", "personDesc": "인물 정보 관리", "jargon": "슬랭 관리", "jargonDesc": "속이 학습한 슬랭 관리", "statistics": "통계 정보", "statisticsDesc": "사용 통계 보기", "plugins": "플러그인 마켓", "pluginsDesc": "플러그인 탐색 및 설치", "logs": "로그 뷰어", "logsDesc": "시스템 로그 보기", "settings": "설정", "settingsDesc": "시스템 설정 구성" } }, "a11y": { "skipToContent": "메인 콘텐츠로 건너뀐기", "sidebarNav": "메인 내비게이션", "closeMenu": "메뉴 닫기", "navigatedTo": "{{page}}으로 이동했습니다" }, "home": { "title": "실시간 모니터", "subtitle": "MaiBot 실행 상태 및 통계 데이터 개요", "loading": "통계 데이터 로딩 중...", "loadingHint": "MaiBot 실행 데이터를 가져오는 중", "timeRange": { "24h": "24시간", "7d": "7일", "30d": "30일" }, "autoRefresh": "자동 새로고침", "botStatus": { "title": "MaiBot 상태", "running": "실행 중", "stopped": "중지됨", "uptime": "가동 {{time}}" }, "quickActions": { "title": "빠른 작업", "restart": "MaiBot 재시작", "restarting": "재시작 중...", "expressionReview": "표현 검토", "viewLogs": "로그 보기", "pluginManage": "플러그인 관리", "systemSettings": "시스템 설정" }, "survey": { "title": "피드백 설문", "description": "제품 경험 개선에 도움을 주세요", "webui": "WebUI 피드백", "maibot": "MaiBot 피드백" }, "stats": { "totalRequests": "총 요청 수", "totalCost": "총 비용", "tokenUsage": "토큰 소비", "avgResponse": "평균 응답", "avgResponseDesc": "API 평균 지연", "onlineTime": "온라인 시간", "messageProcessing": "메시지 처리", "costEfficiency": "비용 효율", "recentPeriod": "최근 {{range}}", "perHour": "{{value}}/시간", "noData": "데이터 없음", "replied": "답장 {{num}}건", "per100Messages": "100건당", "seconds": "초", "hours": "시간", "days": "일" }, "charts": { "tabs": { "trends": "트렌드", "models": "모델", "activity": "활동", "daily": "일간 통계" }, "requestTrend": "요청 트렌드", "requestTrendDesc": "최근 {{hours}}시간의 요청량 변화", "costTrend": "비용 트렌드", "costTrendDesc": "API 호출 비용 변화", "tokenUsage": "토큰 소비", "tokenUsageDesc": "토큰 사용량 변화", "modelDistribution": "모델 요청 분포", "modelDistributionDesc": "모델별 사용 비율 ({{count}}개 모델)", "modelDetails": "모델 상세 통계", "modelDetailsDesc": "요청 수, 비용 및 성능", "recentActivity": "최근 활동", "recentActivityDesc": "최신 API 호출 기록", "dailyStats": "일간 통계", "dailyStatsDesc": "최근 7일 데이터 요약", "requests": "요청 수", "cost": "비용(¥)", "requestCount": "요청 수", "costLabel": "비용", "avgTime": "평균 소요", "timeCost": "소요 시간", "status": "상태" }, "time": { "hoursMinutes": "{{hours}}시간 {{minutes}}분" }, "hitokotoFallback": "인생은 초콜릿 상자와 같아서, 다음에 무엇이 나올지 모릅니다.", "hitokotoFallbackFrom": "포레스트 검프", "unknownSource": "알 수 없음", "ariaLabel": { "requestTrend": "시간별 요청 트렌드 차트, 최근 시간대별 요청 수 변화 표시", "costTrend": "API 비용 트렌드 차트, 최근 시간대별 API 호출 비용 변화 표시", "tokenUsage": "토큰 소비 트렌드 차트, 최근 시간대별 토큰 사용량 변화 표시" } } }