refactor: enhance setup page with translation support and default configurations

- Added translation support for various text elements using `useTranslation`.
- Created default personality and emoji configurations to streamline setup.
- Updated step titles and descriptions to use translated strings.
- Improved validation messages to be translatable.
- Refactored loading and success/error messages for better user feedback.
- Enhanced UI structure for better readability and maintainability.
This commit is contained in:
晴猫
2026-03-15 11:14:56 +09:00
parent da7aafe665
commit a9969ad361
6 changed files with 1335 additions and 477 deletions

View File

@@ -379,6 +379,220 @@
"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의 답변 스타일을 참고할 수 있습니다.",
"interest": "기술, 게임, 애니메이션, 일상적인 주제에 관심이 있고, 너무 무겁거나 엄숙한 주제는 좋아하지 않습니다.",
"planStyle": "1. 사용 가능한 **모든** action 의 **각 동작** 이 현재 조건에 맞는지 검토하고, 대화 내용에 맞으면 사용하세요\n2. 같은 내용이 이미 실행되었다면 반복하지 마세요\n3. 발화 빈도를 조절하고 너무 자주 말하지 마세요\n4. 누군가 당신을 귀찮아하는 것 같다면 답장을 줄이세요\n5. 누군가 당신을 공격하거나 감정적으로 반응하면 적절하게 대응하세요",
"privatePlanStyle": "1. 사용 가능한 **모든** action 의 **각 동작** 이 현재 조건에 맞는지 검토하고, 대화 내용에 맞으면 사용하세요\n2. 같은 내용이 이미 실행되었다면 반복하지 마세요\n3. 이미 답한 문장에는 다시 답하지 마세요"
},
"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 스타일을 참고한다"
},
"interest": {
"label": "관심사 *",
"placeholder": "봇이 관심을 가지는 주제를 설명해 주세요",
"description": "어떤 주제에 더 잘 반응할지에 영향을 줍니다"
},
"planStyle": {
"label": "그룹 채팅 규칙 *",
"placeholder": "그룹 채팅에서의 행동 스타일과 규칙",
"description": "답장 빈도와 조건 등 그룹 채팅에서의 행동 방식을 정의합니다"
},
"privatePlanStyle": {
"label": "개인 채팅 규칙 *",
"placeholder": "개인 채팅에서의 행동 스타일과 규칙",
"description": "개인 채팅에서의 행동 방식을 정의합니다"
}
},
"emoji": {
"emojiChance": {
"label": "이모지 활성화 확률",
"description": "봇이 이모지를 보낼 확률입니다"
},
"maxRegNum": {
"label": "최대 이모지 수",
"description": "봇이 저장할 수 있는 이모지의 최대 개수입니다"
},
"doReplace": {
"label": "최대 수 도달 시 교체",
"description": "켜면 오래된 이모지를 삭제하고, 끄면 새 이모지를 더 이상 수집하지 않습니다"
},
"checkInterval": {
"label": "확인 간격 (분)",
"description": "이모지 등록, 손상, 삭제를 확인하는 간격입니다"
},
"stealEmoji": {
"label": "이모지 수집",
"description": "일부 이모지를 봇이 자신의 것으로 저장할 수 있게 합니다"
},
"contentFiltration": {
"label": "이모지 필터링 사용",
"description": "조건에 맞는 이모지만 저장합니다"
},
"filtrationPrompt": {
"label": "필터 조건",
"placeholder": "예: 공공질서와 미풍양속에 어긋나지 않음",
"description": "저장할 이모지가 충족해야 하는 조건을 설명해 주세요"
}
},
"other": {
"enableTool": {
"label": "도구 시스템 사용",
"description": "봇이 다양한 도구를 사용해 기능을 확장할 수 있게 합니다"
},
"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": "오류",