feat(dashboard): add i18n support with zh/en/ja/ko locales
- Add react-i18next + i18next + i18next-browser-languagedetector - Create i18n config (singleton import) with zh/en/ja/ko JSON locale files - Add language switcher Globe dropdown in Header topbar - Replace all hardcoded Chinese strings in: - Layout (Header, Sidebar, NavItem, Layout, constants) - Settings (index, AppearanceTab, SecurityTab, OtherTab, AboutTab) - Auth page (auth.tsx) - Search dialog (searchItems via useMemo + t()) - Restart overlay (getStatusConfig accepts t param) - Error boundary (ErrorFallback, ErrorDetails function components) - HTTP warning banner - localStorage key: maibot-locale - Compatible with Electron
This commit is contained in:
477
dashboard/src/i18n/locales/ko.json
Normal file
477
dashboard/src/i18n/locales/ko.json
Normal file
@@ -0,0 +1,477 @@
|
||||
{
|
||||
"language": { "zh": "中文", "en": "English", "ja": "日本語", "ko": "한국어" },
|
||||
"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": "로그 뷰어",
|
||||
"plannerMonitor": "플래너 & 리플라이어 모니터",
|
||||
"localChat": "로컬 채팅",
|
||||
"settings": "설정"
|
||||
}
|
||||
},
|
||||
"layout": {
|
||||
"verifyingLogin": "로그인 상태 확인 중...",
|
||||
"logoTitle": "MaiBot WebUI",
|
||||
"logoTitleShort": "M"
|
||||
},
|
||||
"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 코드 린터",
|
||||
"postcss": "CSS 변환 도구"
|
||||
}
|
||||
}
|
||||
},
|
||||
"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": "다크 모드로 전환"
|
||||
},
|
||||
"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": "시스템 설정 구성"
|
||||
}
|
||||
},
|
||||
"httpWarning": {
|
||||
"title": "보안 경고:",
|
||||
"message": "HTTP를 통해 MaiBot WebUI에 접속하고 있습니다",
|
||||
"description": "이것이 공개 서버인 경우, 데이터(Token, 채팅 기록 등)가 전송 중에 가로챔질 수 있습니다. HTTPS를 사용하거나 로컈 네트워크에서만 접속하는 것을 강력히 권장합니다.",
|
||||
"dismiss": "경고 닫기"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user