Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions dashboard/src/i18n/composables.ts
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ export function useI18n() {
const locale = computed(() => currentLocale.value);

// 获取可用语言列表
const availableLocales: Locale[] = ['zh-CN', 'en-US', 'ru-RU'];
const availableLocales: Locale[] = ['zh-CN', 'en-US', 'ru-RU', 'ko-KR'];

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

When adding 'ko-KR' to availableLocales, please also update the setupI18n function (around line 225) to include 'ko-KR' in its allowed list of locales. Currently, it only checks ['zh-CN', 'en-US', 'ru-RU'], which will cause the application to fall back to 'zh-CN' on startup if 'ko-KR' is stored in localStorage.


// 检查是否已加载
const isLoaded = computed(() => Object.keys(translations.value).length > 0);
Expand Down Expand Up @@ -159,7 +159,8 @@ export function useLanguageSwitcher() {
const languageOptions = computed(() => [
{ value: 'zh-CN', label: '简体中文', flag: '🇨🇳' },
{ value: 'en-US', label: 'English', flag: '🇺🇸' },
{ value: 'ru-RU', label: 'Русский', flag: '🇷🇺' }
{ value: 'ru-RU', label: 'Русский', flag: '🇷🇺' },
{ value: 'ko-KR', label: '한국어', flag: '🇰🇷' }
]);

const currentLanguage = computed(() => {
Expand Down
24 changes: 24 additions & 0 deletions dashboard/src/i18n/locales/ko-KR/core/actions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"create": "생성",
"read": "조회",
"update": "수정",
"delete": "삭제",
"search": "검색",
"filter": "필터",
"sort": "정렬",
"export": "내보내기",
"import": "가져오기",
"backup": "백업",
"restore": "복원",
"copy": "복사",
"paste": "붙여넣기",
"cut": "잘라내기",
"undo": "실행 취소",
"redo": "다시 실행",
"refresh": "새로고침",
"submit": "제출",
"reset": "초기화",
"clear": "지우기",
"save": "저장",
"close": "닫기"
}
143 changes: 143 additions & 0 deletions dashboard/src/i18n/locales/ko-KR/core/common.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
{
"save": "저장",
"cancel": "취소",
"close": "닫기",
"copy": "복사",
"copied": "복사됨",
"copyFailed": "복사 실패",
"delete": "삭제",
"edit": "편집",
"add": "추가",
"confirm": "확인",
"loading": "로딩 중...",
"success": "성공",
"error": "오류",
"warning": "경고",
"info": "정보",
"name": "이름",
"description": "설명",
"author": "작성자",
"status": "상태",
"actions": "작업",
"enable": "활성화",
"disable": "비활성화",
"enabled": "활성화됨",
"disabled": "비활성화됨",
"reload": "다시 불러오기",
"configure": "구성",
"install": "설치",
"uninstall": "제거",
"update": "업데이트",
"language": "언어",
"settings": "설정",
"locale": "ko-KR",
"type": "유형",
"press": "누르기",
"longPress": "길게 누르기",
"yes": "예",
"no": "아니요",
"imagePreview": "이미지 미리보기",
"autoDetect": "자동 감지",
"dialog": {
"confirmTitle": "작업 확인",
"confirmMessage": "이 작업을 실행하시겠습니까?",
"confirmButton": "확인",
"cancelButton": "취소"
},
"restart": {
"waiting": "AstrBot이 재시작되기를 기다리는 중...",
"maxRetriesReached": "최대 재시도 횟수에 도달했습니다. 수동으로 확인해주세요."
},
"upgradeRecovery": {
"title": "업그레이드 후 재시작 필요",
"description": "WebUI는 {dashboardVersion}(으)로 업데이트되었지만, AstrBot Core는 아직 {coreVersion}입니다. 이는 대개 업그레이드 도중 페이지를 새로고침하여 재시작 과정이 중단되었을 때 발생합니다. 재시작해도 문제가 해결되지 않으면 AstrBot 실행 디렉터리의 data/dist 폴더를 삭제한 후 AstrBot을 다시 시작해보세요.",
"hint": "백엔드를 재시작하면 업그레이드가 완료됩니다. AstrBot이 복구되면 이 페이지는 자동으로 새로고침됩니다.",
"restartButton": "백엔드 재시작",
"laterButton": "나중에",
"restarting": "백엔드 재시작을 요청하는 중...",
"waiting": "재시작이 요청되었습니다. 백엔드가 복구되기를 기다리는 중...",
"failed": "재시작 요청에 실패했습니다. AstrBot을 수동으로 재시작해주세요."
},
"readme": {
"title": "플러그인 문서",
"buttons": {
"viewOnGithub": "GitHub에서 저장소 보기",
"refresh": "문서 새로고침"
},
"loading": "README 문서를 불러오는 중...",
"errors": {
"fetchFailed": "README를 가져오지 못했습니다",
"fetchError": "README를 가져오는 중 오류가 발생했습니다"
},
"empty": {
"title": "이 플러그인은 문서 링크나 GitHub 저장소 주소를 제공하지 않습니다.",
"subtitle": "플러그인 마켓을 확인하거나 플러그인 작성자에게 문의해주세요."
}
},
"changelog": {
"title": "변경 이력",
"loading": "변경 이력을 불러오는 중...",
"empty": {
"title": "이 플러그인에는 변경 이력이 없습니다",
"subtitle": "개발자는 플러그인 디렉터리에 CHANGELOG.md 파일을 추가해 변경 이력을 제공할 수 있습니다"
}
},
"editor": {
"fullscreen": "전체 화면으로 편집",
"editingTitle": "내용 편집 중"
},
"templateList": {
"addEntry": "항목 추가",
"empty": "아직 항목이 없습니다. 템플릿을 선택해 추가해주세요",
"missingTemplate": "템플릿을 찾을 수 없습니다. 제거 후 다시 추가해주세요.",
"unknownTemplate": "템플릿이 지정되지 않음"
},
"list": {
"addItemPlaceholder": "새 항목 추가, Enter 키로 확인",
"addButton": "추가",
"addMore": "더 추가",
"batchImport": "일괄 가져오기",
"batchImportTitle": "일괄 가져오기",
"batchImportLabel": "한 줄에 항목 하나씩",
"batchImportPlaceholder": "예시:\n항목 1\n항목 2\n항목 3\n항목 4",
"batchImportHint": "각 줄은 별도의 항목으로 처리되며, 빈 줄은 무시됩니다",
"batchImportButton": "{count}개 항목 가져오기",
"noItems": "항목 없음",
"noItemsHint": "아직 항목이 없습니다. 위 입력란에 입력한 후 Enter 키를 눌러 추가하세요",
"inputPlaceholder": "입력 후 Enter 키를 눌러 추가",
"editTitle": "목록 항목 편집",
"modifyButton": "수정"
},
"itemCard": {
"enabled": "활성화됨",
"disabled": "비활성화됨",
"delete": "삭제",
"edit": "편집",
"copy": "복사",
"noData": "사용 가능한 데이터 없음"
},
"objectEditor": {
"dialogTitle": "키-값 쌍 편집",
"noItems": "항목 없음",
"noParams": "매개변수 없음",
"presets": "프리셋",
"newKeyLabel": "새 키",
"valueTypeLabel": "값 유형",
"keyExists": "이미 존재하는 키입니다",
"invalidJson": "잘못된 JSON 형식입니다",
"placeholders": {
"keyName": "키",
"stringValue": "문자열 값",
"numberValue": "숫자 값",
"jsonValue": "JSON"
}
},
"firstNotice": {
"title": "최초 공지",
"loading": "최초 공지를 불러오는 중...",
"empty": {
"title": "표시할 최초 공지 내용이 없습니다",
"subtitle": "FIRST_NOTICE.md 파일을 찾을 수 없거나 비어 있습니다."
}
}
}
134 changes: 134 additions & 0 deletions dashboard/src/i18n/locales/ko-KR/core/header.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
{
"logoTitle": "AstrBot 대시보드",
"version": {
"hasNewVersion": "AstrBot의 새 버전이 있습니다!",
"dashboardHasNewVersion": "WebUI의 새 버전이 있습니다!"
},
"buttons": {
"update": "업데이트",
"account": "계정",
"theme": {
"title": "테마",
"light": "라이트 모드",
"dark": "다크 모드",
"system": "시스템 설정 따르기"
}
},
"updateDialog": {
"title": "AstrBot 업데이트",
"currentVersion": "현재 버전",
"status": {
"checking": "업데이트를 확인하는 중...",
"switching": "버전을 전환하는 중...",
"updating": "업데이트하는 중..."
},
"tabs": {
"release": "😊 릴리스"
},
"advancedSettings": "고급 설정",
"releases": "릴리스",
"updateToLatest": "최신 버전으로 업데이트",
"showPreReleases": "사전 릴리스 버전 표시",
"preRelease": "사전 릴리스",
"preReleaseWarning": {
"title": "사전 릴리스 버전 안내",
"description": "사전 릴리스로 표시된 버전에는 알려지지 않은 문제나 버그가 있을 수 있으므로 프로덕션 환경에서 사용하지 않는 것을 권장합니다. 문제가 발생하면 ",
"issueLink": "GitHub Issues"
},
"tip": "💡 팁:",
"tipContinue": "버전을 전환할 때는 기본적으로 해당 버전의 WebUI 파일이 다운로드됩니다. WebUI 코드는 프로젝트의 dashboard 디렉터리에 있으며, npm을 사용해 직접 빌드할 수도 있습니다.",
"dockerTip": "버전을 전환하면 봇 본체와 대시보드를 함께 업데이트하려고 시도합니다. Docker로 배포한 경우 이미지를 다시 받거나",
"dockerTipLink": "watchtower",
"dockerTipContinue": "를 사용해 자동으로 감시하고 받아올 수도 있습니다.",
"table": {
"tag": "태그",
"publishDate": "게시일",
"content": "내용",
"sourceUrl": "소스 URL",
"actions": "작업",
"view": "보기",
"switch": "전환"
},
"releaseNotes": {
"title": "릴리스 노트",
"latestLabel": "최신 버전"
},
"progress": {
"target": "대상 버전: ",
"preparing": "업데이트 준비 중...",
"dashboard": "WebUI 다운로드 중",
"core": "프로젝트 코드 다운로드 중",
"dependencies": "의존성을 업데이트하는 중...",
"restart": "재시작 준비 중...",
"restarting": "AstrBot 재시작 중",
"completed": "업데이트 완료",
"successReady": "업데이트 성공",
"autoReloadIn": "{seconds}초 후 자동으로 새로고침됩니다",
"reloadNow": "지금 새로고침",
"failed": "업데이트 실패"
},
"redirectConfirm": {
"title": "AstrBot에서 나가기",
"message": "GitHub Releases 페이지를 여시겠습니까?",
"latestLabel": "최신",
"targetVersion": "대상 버전: ",
"currentVersion": "현재 버전: ",
"guideTitle": "이동 후 권장 사항:",
"guideStep1": "사용 중인 OS 및 아키텍처에 맞는 설치 파일을 다운로드하세요.",
"guideStep2": "설치 후 AstrBot을 재시작하세요.",
"guideStep3": "Docker를 사용 중이라면 이미지 업데이트 방식을 우선적으로 사용하세요."
},
"desktopApp": {
"title": "데스크톱 앱 업데이트",
"message": "AstrBot 데스크톱 애플리케이션을 확인하고 업그레이드합니다.",
"currentVersion": "현재 버전: ",
"latestVersion": "최신 버전: ",
"checking": "데스크톱 앱 업데이트를 확인하는 중...",
"hasNewVersion": "새 버전을 사용할 수 있습니다. 확인을 클릭해 업그레이드하세요.",
"isLatest": "이미 최신 버전입니다",
"installing": "업데이트를 다운로드하고 설치하는 중입니다. 앱이 자동으로 재시작됩니다...",
"checkFailed": "업데이트 확인에 실패했습니다. 나중에 다시 시도해주세요.",
"installFailed": "업그레이드에 실패했습니다. 나중에 다시 시도해주세요."
},
"dashboardUpdate": {
"title": "대시보드만 최신 버전으로 업데이트",
"currentVersion": "현재 버전",
"hasNewVersion": "새 버전을 사용할 수 있습니다!",
"isLatest": "이미 최신 버전입니다.",
"fallback": "전체 업데이트가 실패할 경우 이 기능으로 WebUI를 다시 다운로드하세요.",
"downloadAndUpdate": "다운로드 및 업데이트"
}
},
"accountDialog": {
"title": "계정 수정",
"securityWarning": "보안 안내: 계정 보호를 위해 비밀번호를 변경해주세요",
"securityWarningMd5": "새 AstrBot 버전에서 보안이 강화되었습니다. 비밀번호를 변경해주세요.",
"securityWarningUpgrade": "MD5 방식의 비밀번호 저장이 감지되었습니다. 보안 업그레이드를 완료하려면 비밀번호를 변경해주세요.",
"form": {
"currentPassword": "현재 비밀번호",
"newPassword": "새 비밀번호",
"confirmPassword": "새 비밀번호 확인",
"newUsername": "새 사용자 이름 (선택)",
"passwordHint": "8자 이상, 대문자, 소문자, 숫자를 포함해야 합니다",
"confirmPasswordHint": "새 비밀번호를 다시 입력해 확인해주세요",
"usernameHint": "비워두면 현재 사용자 이름이 유지됩니다",
"defaultCredentials": "기본 사용자 이름은 astrbot입니다. 초기 비밀번호는 최초 시작 시 생성되어 콘솔에 표시됩니다."
},
"validation": {
"passwordRequired": "비밀번호를 입력해주세요",
"passwordMinLength": "비밀번호는 8자 이상이어야 합니다",
"passwordUppercase": "비밀번호에는 대문자가 하나 이상 포함되어야 합니다",
"passwordLowercase": "비밀번호에는 소문자가 하나 이상 포함되어야 합니다",
"passwordDigit": "비밀번호에는 숫자가 하나 이상 포함되어야 합니다",
"passwordMatch": "비밀번호가 일치하지 않습니다",
"usernameMinLength": "사용자 이름은 3자 이상이어야 합니다"
},
"actions": {
"save": "변경 사항 저장",
"cancel": "취소"
},
"messages": {
"updateFailed": "업데이트에 실패했습니다. 다시 시도해주세요"
}
}
}
50 changes: 50 additions & 0 deletions dashboard/src/i18n/locales/ko-KR/core/navigation.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
{
"welcome": "환영",
"dashboard": "대시보드",
"platforms": "플랫폼",
"providers": "공급자",
"commands": "명령어",
"persona": "페르소나",
"subagent": "서브 에이전트",
"toolUse": "MCP 도구",
"config": "구성",
"chat": "채팅",
"cron": "예약 작업",
"extension": "플러그인",
"extensionTabs": {
"installed": "AstrBot 플러그인",
"market": "플러그인 마켓",
"mcp": "MCP 서버",
"skills": "스킬",
"components": "핸들러"
},
"conversation": "대화",
"sessionManagement": "커스텀 규칙",
"console": "콘솔",
"trace": "트레이스",
"alkaid": "Alkaid 연구소",
"knowledgeBase": "지식 베이스",
"about": "정보",
"settings": "설정",
"changelog": "변경 이력",
"documentation": "문서",
"faq": "자주 묻는 질문",
"github": "GitHub",
"drag": "드래그",
"groups": {
"more": "추가 기능"
},
"changelogDialog": {
"title": "변경 이력",
"loading": "로딩 중...",
"error": "불러오기 실패",
"notFound": "이 버전의 변경 이력을 찾을 수 없습니다",
"selectVersion": "버전 선택",
"current": "현재"
},
"configTabs": {
"normal": "일반 구성",
"system": "시스템 구성"
},
"pluginWebui": "플러그인 페이지"
}
Loading