2026-04-17 09:09:50 +08:00
|
|
|
export default {
|
|
|
|
|
// 로그인
|
|
|
|
|
login: {
|
|
|
|
|
title: 'Hermes Web UI',
|
2026-05-23 18:44:53 +08:00
|
|
|
description: '계속하려면 사용자 이름과 비밀번호를 입력하세요.',
|
2026-04-17 09:09:50 +08:00
|
|
|
placeholder: '액세스 토큰',
|
|
|
|
|
submit: '로그인',
|
|
|
|
|
tokenRequired: '액세스 토큰을 입력해 주세요',
|
|
|
|
|
invalidToken: '유효하지 않은 토큰입니다',
|
|
|
|
|
connectionFailed: '서버에 연결할 수 없습니다',
|
2026-04-22 20:27:33 +08:00
|
|
|
passwordLogin: '비밀번호',
|
|
|
|
|
tokenLogin: '토큰',
|
|
|
|
|
usernamePlaceholder: '사용자 이름',
|
|
|
|
|
passwordPlaceholder: '비밀번호',
|
2026-05-24 09:49:21 +08:00
|
|
|
defaultCredentialsHint: '기본 로그인 이름: admin, 기본 비밀번호: 123456',
|
2026-04-22 20:27:33 +08:00
|
|
|
credentialsRequired: '사용자 이름과 비밀번호를 입력해 주세요',
|
|
|
|
|
invalidCredentials: '사용자 이름 또는 비밀번호가 올바르지 않습니다',
|
2026-05-08 18:29:43 +08:00
|
|
|
tooManyAttempts: '로그인 시도 횟수가 너무 많습니다. 잠시 후 다시 시도해 주세요',
|
2026-05-24 22:36:21 +08:00
|
|
|
lockResetHint: '본인 서버라면 다음 명령으로 로그인 잠금을 해제할 수 있습니다:',
|
|
|
|
|
defaultLoginResetHint: '기본 admin 비밀번호를 재설정하려면 다음을 실행하세요:',
|
2026-05-23 18:44:53 +08:00
|
|
|
sessionExpired: '로그인이 만료되었습니다. 다시 로그인해 주세요.',
|
|
|
|
|
accessDenied: '이 리소스에 접근할 권한이 없습니다.',
|
2026-04-22 20:27:33 +08:00
|
|
|
passwordMismatch: '비밀번호가 일치하지 않습니다',
|
|
|
|
|
passwordTooShort: '비밀번호는 6자 이상이어야 합니다',
|
|
|
|
|
setupSuccess: '비밀번호 로그인이 설정되었습니다',
|
|
|
|
|
passwordChanged: '비밀번호가 변경되었습니다',
|
|
|
|
|
passwordRemoved: '비밀번호 로그인이 제거되었습니다',
|
|
|
|
|
setupPassword: '비밀번호 로그인 설정',
|
|
|
|
|
changePassword: '비밀번호 변경',
|
|
|
|
|
changeUsername: '사용자 이름 변경',
|
|
|
|
|
removePasswordLogin: '제거',
|
|
|
|
|
username: '사용자 이름',
|
|
|
|
|
currentPassword: '현재 비밀번호',
|
|
|
|
|
newPassword: '새 비밀번호',
|
|
|
|
|
confirmPassword: '비밀번호 확인',
|
|
|
|
|
newUsername: '새 사용자 이름',
|
|
|
|
|
usernameChanged: '사용자 이름이 변경되었습니다',
|
|
|
|
|
usernameTooShort: '사용자 이름은 2자 이상이어야 합니다',
|
2026-05-23 18:44:53 +08:00
|
|
|
setupDescription: '로그인에 사용할 사용자 이름과 비밀번호를 관리합니다.',
|
|
|
|
|
removeConfirm: '사용자 계정에는 비밀번호 로그인이 필요합니다.',
|
2026-04-22 20:27:33 +08:00
|
|
|
passwordLoginNotConfigured: '비밀번호 로그인 미설정',
|
2026-05-23 18:44:53 +08:00
|
|
|
passwordLoginConfigured: '현재 계정: {username}',
|
2026-05-24 09:49:21 +08:00
|
|
|
defaultCredentialTitle: '기본 계정과 비밀번호를 변경하세요',
|
|
|
|
|
defaultCredentialMessage: '현재 로그인 계정이 아직 기본 사용자 이름 또는 기본 비밀번호를 사용하고 있습니다. 무단 접근을 방지하려면 현재 계정에서 사용자 이름과 비밀번호를 가능한 한 빨리 변경하세요.',
|
|
|
|
|
defaultCredentialAction: '변경하기',
|
|
|
|
|
defaultCredentialLater: '나중에 알림',
|
2026-05-23 18:44:53 +08:00
|
|
|
},
|
|
|
|
|
|
|
|
|
|
users: {
|
|
|
|
|
title: '계정 관리',
|
2026-05-23 19:41:51 +08:00
|
|
|
description: '사용자를 만들고 역할을 할당하며 일반 관리자가 접근할 수 있는 프로필을 제어합니다.',
|
2026-05-23 18:44:53 +08:00
|
|
|
create: '사용자 만들기',
|
|
|
|
|
edit: '사용자 편집',
|
|
|
|
|
username: '사용자 이름',
|
|
|
|
|
role: '역할',
|
|
|
|
|
statusLabel: '상태',
|
2026-05-23 19:41:51 +08:00
|
|
|
profiles: '접근 가능한 프로필',
|
|
|
|
|
profilesPlaceholder: '접근 가능한 프로필 선택',
|
|
|
|
|
allProfiles: '모든 프로필',
|
|
|
|
|
noProfiles: '할당된 프로필 없음',
|
2026-05-23 18:44:53 +08:00
|
|
|
lastLogin: '마지막 로그인',
|
|
|
|
|
newPasswordOptional: '새 비밀번호 (비워두면 유지)',
|
|
|
|
|
loadFailed: '사용자 목록을 불러오지 못했습니다',
|
|
|
|
|
deleteConfirm: '이 사용자를 삭제하시겠습니까?',
|
|
|
|
|
enable: '활성화',
|
|
|
|
|
disable: '비활성화',
|
|
|
|
|
roles: {
|
|
|
|
|
superAdmin: '슈퍼 관리자',
|
|
|
|
|
admin: '관리자',
|
|
|
|
|
},
|
|
|
|
|
status: {
|
|
|
|
|
active: '활성',
|
|
|
|
|
disabled: '비활성',
|
|
|
|
|
},
|
2026-04-17 09:09:50 +08:00
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// 공통
|
|
|
|
|
common: {
|
|
|
|
|
loading: '로딩 중...',
|
|
|
|
|
cancel: '취소',
|
2026-04-17 23:11:57 +08:00
|
|
|
retry: '재시도',
|
2026-04-17 09:09:50 +08:00
|
|
|
delete: '삭제',
|
|
|
|
|
edit: '편집',
|
|
|
|
|
save: '저장',
|
|
|
|
|
saved: '저장됨',
|
|
|
|
|
update: '업데이트',
|
|
|
|
|
create: '생성',
|
|
|
|
|
saveFailed: '저장 실패',
|
2026-04-24 20:41:14 +08:00
|
|
|
deleteFailed: '삭제 실패',
|
2026-04-17 09:09:50 +08:00
|
|
|
ok: '확인',
|
|
|
|
|
copied: '복사됨',
|
|
|
|
|
copy: '복사',
|
|
|
|
|
noData: '데이터 없음',
|
|
|
|
|
fetch: '가져오기',
|
|
|
|
|
add: '추가',
|
|
|
|
|
enable: '활성화',
|
|
|
|
|
disable: '비활성화',
|
|
|
|
|
configured: '구성됨',
|
|
|
|
|
notConfigured: '미구성',
|
|
|
|
|
confirm: '확인',
|
|
|
|
|
expand: '펼치기',
|
|
|
|
|
collapse: '접기',
|
2026-05-20 17:13:32 +08:00
|
|
|
stop: '중지',
|
|
|
|
|
start: '시작',
|
|
|
|
|
expired: '만료됨',
|
2026-04-17 09:09:50 +08:00
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// 사이드바
|
|
|
|
|
sidebar: {
|
|
|
|
|
chat: '채팅',
|
2026-05-01 11:27:43 +08:00
|
|
|
search: '검색',
|
2026-05-07 22:16:52 +08:00
|
|
|
apiRelay: 'API 릴레이',
|
2026-05-01 11:27:43 +08:00
|
|
|
history: '기록',
|
2026-04-17 09:09:50 +08:00
|
|
|
jobs: '예약 작업',
|
|
|
|
|
models: '모델',
|
|
|
|
|
profiles: '프로필',
|
2026-05-10 13:50:39 +02:00
|
|
|
plugins: '플러그인',
|
2026-04-17 09:09:50 +08:00
|
|
|
skills: '스킬',
|
|
|
|
|
memory: '메모리',
|
|
|
|
|
logs: '로그',
|
|
|
|
|
usage: '사용량',
|
2026-05-23 09:05:03 +08:00
|
|
|
performance: '성능 모니터링',
|
2026-05-14 09:28:51 +08:00
|
|
|
skillsUsage: '스킬 사용량',
|
2026-04-17 09:09:50 +08:00
|
|
|
channels: '채널',
|
|
|
|
|
terminal: '터미널',
|
2026-04-23 14:10:14 +08:00
|
|
|
files: '파일',
|
2026-04-24 20:41:14 +08:00
|
|
|
groupChat: '그룹 채팅',
|
|
|
|
|
groupConversation: '대화',
|
2026-05-19 02:33:53 +02:00
|
|
|
groupConversationShort: '대화',
|
|
|
|
|
groupAgent: '에이전트',
|
|
|
|
|
groupAgentShort: '에전',
|
|
|
|
|
groupSystem: '시스템',
|
|
|
|
|
groupSystemShort: '시스템',
|
|
|
|
|
groupMonitoring: '모니터링',
|
|
|
|
|
groupMonitoringShort: '모니터',
|
2026-04-17 09:09:50 +08:00
|
|
|
settings: '설정',
|
|
|
|
|
connected: '연결됨',
|
|
|
|
|
disconnected: '연결 끊김',
|
|
|
|
|
updateTip: '터미널에서 "hermes-web-ui update"를 실행하여 업데이트하세요',
|
|
|
|
|
updateVersion: 'v{version}(으)로 업그레이드',
|
2026-05-12 03:03:07 +02:00
|
|
|
reloadClientVersion: 'v{version}(으)로 새로고침',
|
2026-04-17 09:09:50 +08:00
|
|
|
updating: '업데이트 중...',
|
2026-05-14 12:06:39 +08:00
|
|
|
updateSuccess: '업데이트가 완료되었습니다. 잠시 후 페이지를 새로고침하세요. 오랫동안 시작되지 않으면 수동으로 시작하세요.',
|
2026-04-17 09:09:50 +08:00
|
|
|
updateFailed: '업데이트 실패',
|
2026-04-22 20:27:33 +08:00
|
|
|
logout: '로그아웃',
|
2026-04-24 02:31:42 +02:00
|
|
|
nodeVersionWarning: 'Node.js v{version}이 감지되었습니다. 버전 23 이상으로 업그레이드하세요.',
|
2026-04-22 20:27:33 +08:00
|
|
|
changelog: '변경 이력',
|
|
|
|
|
noChangelog: '변경 이력이 없습니다',
|
2026-05-20 17:13:32 +08:00
|
|
|
kanban: '칸반',
|
|
|
|
|
groupTools: '도구',
|
2026-05-28 12:30:49 +08:00
|
|
|
groupToolsShort: "도구",
|
|
|
|
|
versionPreview: "버전 미리보기",
|
2026-05-20 17:13:32 +08:00
|
|
|
groupPlatform: '플랫폼',
|
|
|
|
|
gateways: '게이트웨이',
|
|
|
|
|
expand: '메뉴 펼치기',
|
|
|
|
|
collapse: '메뉴 접기',
|
2026-04-17 09:09:50 +08:00
|
|
|
},
|
|
|
|
|
|
2026-05-23 09:05:03 +08:00
|
|
|
performance: {
|
|
|
|
|
title: '성능 모니터링',
|
|
|
|
|
subtitle: '시스템 리소스, Bridge Broker, Workers, 활성 세션 확인',
|
|
|
|
|
refresh: '새로고침',
|
|
|
|
|
autoRefreshOn: '자동 새로고침',
|
|
|
|
|
autoRefreshOff: '수동 새로고침',
|
|
|
|
|
loadFailed: '성능 데이터를 불러오지 못했습니다',
|
|
|
|
|
systemCpu: '시스템 CPU',
|
|
|
|
|
systemMemory: '시스템 메모리',
|
|
|
|
|
activeSessions: '활성 세션',
|
|
|
|
|
runningSessions: '실행 중 {count}',
|
|
|
|
|
workers: 'Workers',
|
|
|
|
|
totalWorkerMemory: 'Worker 총 메모리',
|
|
|
|
|
processes: '프로세스',
|
|
|
|
|
uptime: '실행 시간',
|
|
|
|
|
running: '실행 중',
|
|
|
|
|
stopped: '중지됨',
|
|
|
|
|
workerMemory: 'Worker 메모리',
|
|
|
|
|
lastUpdated: '업데이트 시간',
|
|
|
|
|
profile: 'Profile',
|
|
|
|
|
memory: '메모리',
|
|
|
|
|
sessions: '세션',
|
|
|
|
|
runningActiveSessions: '실행 중 / 활성',
|
|
|
|
|
lastUsed: '마지막 사용',
|
|
|
|
|
status: '상태',
|
|
|
|
|
noWorkers: 'Worker 없음',
|
|
|
|
|
sessionsByProfile: 'Profile별 세션',
|
|
|
|
|
noActiveSessions: '활성 세션 없음',
|
|
|
|
|
},
|
|
|
|
|
|
2026-05-03 22:10:40 +08:00
|
|
|
// 서랍
|
|
|
|
|
drawer: {
|
|
|
|
|
terminal: '터미널',
|
|
|
|
|
files: '작업 공간',
|
|
|
|
|
},
|
|
|
|
|
|
2026-04-17 09:09:50 +08:00
|
|
|
// 채팅
|
|
|
|
|
chat: {
|
2026-04-22 16:14:50 +08:00
|
|
|
contextRemaining: '남음',
|
2026-05-06 15:05:44 +08:00
|
|
|
contextClickToEdit: '클릭하여 컨텍스트 길이 편집',
|
|
|
|
|
contextEditTitle: '컨텍스트 길이 편집',
|
|
|
|
|
contextEditDesc: '현재 모델의 컨텍스트 길이 제한 설정 (토큰 수)',
|
|
|
|
|
contextEditPlaceholder: '컨텍스트 길이 입력',
|
2026-05-26 19:35:48 +08:00
|
|
|
contextEditHint: '일반적인 값: 256k (Hermes 기본값), 128k (GPT-4), 32k (GPT-3.5)',
|
2026-05-06 15:05:44 +08:00
|
|
|
contextEditSave: '저장',
|
|
|
|
|
contextEditCancel: '취소',
|
|
|
|
|
contextEditInvalid: '유효한 컨텍스트 길이를 입력하세요',
|
|
|
|
|
contextEditSuccess: '컨텍스트 길이가 업데이트되었습니다',
|
|
|
|
|
contextEditFailed: '업데이트 실패',
|
2026-04-17 09:09:50 +08:00
|
|
|
emptyState: 'Hermes Agent와 대화를 시작하세요',
|
2026-05-19 08:25:01 +08:00
|
|
|
outlineTitle: '대화 개요',
|
|
|
|
|
outlineEmpty: '대화 내용이 없습니다',
|
|
|
|
|
outlineUserQuestion: '사용자 질문',
|
2026-04-17 09:09:50 +08:00
|
|
|
inputPlaceholder: '메시지를 입력하세요... (Enter로 전송, Shift+Enter로 줄바꿈)',
|
2026-05-15 12:04:03 +08:00
|
|
|
slashCommandArgs: {
|
|
|
|
|
message: '<메시지>',
|
|
|
|
|
title: '<제목>',
|
|
|
|
|
text: '<텍스트>',
|
|
|
|
|
},
|
|
|
|
|
slashCommands: {
|
|
|
|
|
usage: '현재 세션 사용량 계산',
|
|
|
|
|
status: '세션 상태와 대기열 표시',
|
|
|
|
|
abort: '활성 Bridge 실행 중지',
|
|
|
|
|
queue: '활성 실행 뒤에 메시지 대기열 추가',
|
2026-05-25 15:48:17 +08:00
|
|
|
plan: 'Markdown 구현 계획 작성',
|
2026-05-25 19:26:23 +08:00
|
|
|
goal: 'Set a standing goal that continues across turns',
|
|
|
|
|
goalStatus: 'Show the active goal status',
|
|
|
|
|
goalPause: 'Pause the active goal loop',
|
|
|
|
|
goalResume: 'Resume the paused goal loop',
|
|
|
|
|
goalDone: 'Complete and clear the active goal',
|
|
|
|
|
goalClear: 'Clear the active goal',
|
|
|
|
|
subgoal: 'Add a criterion to the active goal',
|
2026-05-15 12:04:03 +08:00
|
|
|
clear: '현재 표시 내용 지우기',
|
|
|
|
|
clearHistory: '이 세션의 저장된 메시지 기록 삭제',
|
|
|
|
|
title: '이 세션 이름 변경',
|
|
|
|
|
compress: '유휴 상태에서 컨텍스트 압축 실행',
|
|
|
|
|
steer: '활성 Bridge 실행에 지시 텍스트 보내기',
|
|
|
|
|
destroy: '이 세션의 Bridge Agent 해제',
|
|
|
|
|
},
|
2026-04-17 09:09:50 +08:00
|
|
|
attachFiles: '파일 첨부',
|
2026-05-17 09:01:59 +08:00
|
|
|
showToolCalls: '도구 호출 표시',
|
|
|
|
|
hideToolCalls: '도구 호출 숨기기',
|
2026-05-07 10:34:58 +08:00
|
|
|
messageQueue: '메시지 대기열',
|
|
|
|
|
removeQueuedMessage: '대기열 메시지 제거',
|
2026-04-17 09:09:50 +08:00
|
|
|
stop: '중지',
|
|
|
|
|
send: '전송',
|
|
|
|
|
contextUsed: '사용된 컨텍스트:',
|
|
|
|
|
sessions: '세션',
|
2026-05-06 16:15:42 +08:00
|
|
|
webUiSessions: '세션',
|
2026-05-19 16:09:59 +08:00
|
|
|
allProfiles: '모든 프로필',
|
2026-05-20 18:26:01 +08:00
|
|
|
profileMissingModelsTip: '이 세션의 프로필 "{profile}"에는 사용 가능한 공급자 또는 모델이 없습니다',
|
2026-05-02 03:00:47 +02:00
|
|
|
sessionScopeHint: '채팅에는 Web UI/API Server 세션만 표시됩니다. CLI, Telegram, Discord, Cron 등 채널 세션은 기록에서 읽기 전용으로 볼 수 있습니다.',
|
|
|
|
|
openHistory: '기록 열기',
|
|
|
|
|
hermesHistory: 'Hermes 기록',
|
2026-05-19 16:09:59 +08:00
|
|
|
historyScopeHint: '현재 profile의 Hermes 기록 세션을 소스별로 읽기 전용으로 봅니다.',
|
2026-04-17 09:09:50 +08:00
|
|
|
noSessions: '세션 없음',
|
|
|
|
|
newChat: '새 채팅',
|
2026-05-16 00:11:51 +08:00
|
|
|
approvalKicker: '터미널 권한',
|
|
|
|
|
approvalTitle: '실행 전에 명령 확인',
|
|
|
|
|
approvalAllowOnce: '한 번만 허용',
|
|
|
|
|
approvalAllowSession: '이 세션에서 허용',
|
|
|
|
|
approvalAlways: '항상 허용',
|
|
|
|
|
approvalDeny: '거부',
|
2026-05-24 18:09:39 +08:00
|
|
|
clarifyKicker: '에이전트 확인 필요',
|
|
|
|
|
clarifyTitle: '에이전트가 질문이 있습니다',
|
|
|
|
|
clarifyPlaceholder: '답변 입력...',
|
|
|
|
|
clarifySubmit: '답장',
|
|
|
|
|
clarifyDismiss: '무시',
|
2026-04-17 09:09:50 +08:00
|
|
|
deleteSession: '이 세션을 삭제하시겠습니까?',
|
2026-05-06 16:15:42 +08:00
|
|
|
toggleBatchMode: '일괄 선택',
|
|
|
|
|
selectAll: '모두 선택',
|
|
|
|
|
confirmBatchDelete: '선택한 {count}개의 세션을 삭제하시겠습니까?',
|
|
|
|
|
batchDeleteSuccess: '{count}개의 세션을 삭제했습니다',
|
|
|
|
|
batchDeletePartial: '{failed}개의 세션 삭제 실패',
|
|
|
|
|
batchDeleteFailed: '일괄 삭제 실패',
|
2026-05-27 10:05:52 +08:00
|
|
|
importToWebUi: 'Web UI로 가져오기',
|
|
|
|
|
importSessionSuccess: '세션을 Web UI로 가져왔습니다',
|
|
|
|
|
importSessionAlreadyExists: '세션이 이미 Web UI에 있습니다',
|
|
|
|
|
importSessionFailed: '세션 가져오기 실패',
|
2026-04-17 09:09:50 +08:00
|
|
|
sessionDeleted: '세션이 삭제되었습니다',
|
|
|
|
|
rename: '이름 변경',
|
2026-04-22 02:09:58 +02:00
|
|
|
pin: '고정',
|
|
|
|
|
unpin: '고정 해제',
|
|
|
|
|
pinned: '고정됨',
|
|
|
|
|
chatMode: '채팅',
|
|
|
|
|
liveMode: '라이브',
|
|
|
|
|
liveSessions: '라이브 세션',
|
|
|
|
|
recentBadge: '최근',
|
|
|
|
|
linkedSessions: '{count}개 연결됨',
|
|
|
|
|
noVisibleMessages: '사람이 볼 수 있는 메시지가 없습니다.',
|
|
|
|
|
monitorRoleUser: '사용자',
|
|
|
|
|
monitorRoleAssistant: '어시스턴트',
|
2026-05-24 10:55:55 +08:00
|
|
|
copySessionLink: '세션 링크 복사',
|
2026-05-24 19:30:32 +08:00
|
|
|
openSessionInNewTab: '새 탭에서 열기',
|
2026-05-24 14:13:42 +03:00
|
|
|
sessionLinkCopied: 'Session link copied',
|
2026-04-17 09:09:50 +08:00
|
|
|
copySessionId: '세션 ID 복사',
|
2026-05-07 13:49:57 +08:00
|
|
|
export: '내보내기',
|
|
|
|
|
exportFull: '전체 내보내기 (JSON)',
|
|
|
|
|
exportCompressed: '압축 내보내기 (TXT)',
|
|
|
|
|
exportCompressing: '컨텍스트 압축 중, 잠시 기다려주세요...',
|
|
|
|
|
exportSuccess: '세션을 내보냈습니다',
|
|
|
|
|
exportFailed: '내보내기 실패',
|
2026-04-17 09:09:50 +08:00
|
|
|
renamed: '이름이 변경되었습니다',
|
|
|
|
|
renameFailed: '이름 변경 실패',
|
|
|
|
|
renameSession: '세션 이름 변경',
|
2026-05-03 22:10:40 +08:00
|
|
|
sessionNotFound: '세션을 찾을 수 없습니다',
|
2026-04-17 09:09:50 +08:00
|
|
|
enterNewTitle: '새 제목을 입력하세요',
|
|
|
|
|
other: '기타',
|
|
|
|
|
runFailed: '실행 실패',
|
|
|
|
|
error: '오류',
|
|
|
|
|
tool: '도구',
|
|
|
|
|
arguments: '인수',
|
|
|
|
|
result: '결과',
|
|
|
|
|
truncated: '... (잘림)',
|
2026-05-20 17:13:32 +08:00
|
|
|
executionDuration: '실행 시간', thinkingLabel: '사고 과정',
|
2026-04-25 08:46:50 +08:00
|
|
|
thinkingInProgress: '사고 중…',
|
|
|
|
|
thinkingShow: '사고 과정 펼치기',
|
|
|
|
|
thinkingHide: '사고 과정 접기',
|
|
|
|
|
thinkingDuration: '관측 {duration}',
|
|
|
|
|
thinkingChars: '{count}자',
|
2026-04-26 22:59:43 +08:00
|
|
|
copyBubble: '메시지 복사',
|
|
|
|
|
copiedBubble: '복사됨',
|
|
|
|
|
copyFailed: '복사 실패',
|
2026-05-02 13:26:57 +08:00
|
|
|
playSpeech: '음성 재생',
|
|
|
|
|
pauseSpeech: '일시정지',
|
|
|
|
|
resumeSpeech: '재개',
|
|
|
|
|
stopSpeech: '중지',
|
|
|
|
|
speechNotSupported: '이 브라우저는 음성 재생을 지원하지 않습니다',
|
2026-05-20 17:13:32 +08:00
|
|
|
searchEnterHint: 'Enter로 열기 · Esc로 닫기',
|
|
|
|
|
searchHint: 'Cmd/Ctrl+K',
|
|
|
|
|
searchScope: '검색 범위: Web UI 로컬 세션 DB만 포함하며 읽기 전용 Hermes 기록 세션은 포함하지 않습니다.',
|
|
|
|
|
searchFailed: '세션 검색 실패',
|
|
|
|
|
searchNoSnippet: '표시할 요약이 없습니다',
|
|
|
|
|
searchNoResults: '일치하는 세션이 없습니다',
|
|
|
|
|
searchRecent: '최근 세션',
|
|
|
|
|
searchEmpty: '최근 세션',
|
|
|
|
|
searchPlaceholder: '세션 검색...',
|
|
|
|
|
searchSubtitle: '제목 또는 메시지 내용으로 검색',
|
|
|
|
|
searchTitle: '세션 검색',
|
|
|
|
|
stopGateway: 'Gateway 중지',
|
|
|
|
|
start: '시작',
|
|
|
|
|
workspaceSetFailed: 'Workspace 설정 실패',
|
|
|
|
|
workspaceSet: 'Workspace가 설정되었습니다',
|
|
|
|
|
workspacePlaceholder: '프로젝트 경로 입력, 예: /home/user/project',
|
|
|
|
|
workspace: '작업 공간',
|
|
|
|
|
setWorkspaceTitle: '세션 Workspace 설정',
|
|
|
|
|
setWorkspace: 'Workspace 설정',
|
|
|
|
|
modelSetFailed: '모델 설정 실패',
|
|
|
|
|
modelSet: '모델이 설정되었습니다',
|
|
|
|
|
setModelTitle: '세션 모델 설정',
|
|
|
|
|
setModel: '모델 설정',
|
|
|
|
|
newCliChat: '새 CLI',
|
|
|
|
|
cliEmptyState: 'CLI 채팅 시작',
|
|
|
|
|
autoPlaySpeech: '음성 자동 재생',
|
2026-04-17 09:09:50 +08:00
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// 예약 작업
|
|
|
|
|
jobs: {
|
|
|
|
|
title: '예약 작업',
|
|
|
|
|
createJob: '작업 생성',
|
|
|
|
|
editJob: '작업 편집',
|
|
|
|
|
noJobs: '예약된 작업이 없습니다. 새로 만들어 시작하세요.',
|
|
|
|
|
name: '이름',
|
|
|
|
|
namePlaceholder: '작업 이름',
|
|
|
|
|
schedule: '스케줄 (Cron 표현식)',
|
|
|
|
|
schedulePlaceholder: '예: 0 9 * * *',
|
|
|
|
|
quickPresets: '빠른 프리셋',
|
|
|
|
|
selectPreset: '프리셋 선택...',
|
|
|
|
|
presetEveryMinute: '매 분',
|
|
|
|
|
presetEvery5Min: '매 5분',
|
|
|
|
|
presetEveryHour: '매 시간',
|
|
|
|
|
presetEveryDay: '매일 00:00',
|
|
|
|
|
presetEveryDay9: '매일 09:00',
|
|
|
|
|
presetEveryMonday: '매주 월요일 09:00',
|
|
|
|
|
presetEveryMonth: '매월 1일 09:00',
|
|
|
|
|
prompt: '프롬프트',
|
|
|
|
|
promptPlaceholder: '실행할 프롬프트',
|
|
|
|
|
deliverTarget: '전송 대상',
|
|
|
|
|
origin: '출처',
|
|
|
|
|
local: '로컬',
|
|
|
|
|
repeatCount: '반복 횟수 (선택)',
|
2026-05-20 17:13:32 +08:00
|
|
|
modelPlaceholder: '기본 모델',
|
2026-04-17 09:09:50 +08:00
|
|
|
repeatPlaceholder: '비워두면 무한 반복',
|
|
|
|
|
jobCreated: '작업이 생성되었습니다',
|
|
|
|
|
jobUpdated: '작업이 업데이트되었습니다',
|
|
|
|
|
nameRequired: '이름을 입력해 주세요',
|
|
|
|
|
scheduleRequired: '스케줄을 입력해 주세요',
|
|
|
|
|
loadFailed: '작업을 불러오지 못했습니다',
|
|
|
|
|
jobPaused: '작업이 일시 정지되었습니다',
|
|
|
|
|
jobResumed: '작업이 재개되었습니다',
|
|
|
|
|
jobTriggered: '작업이 실행되었습니다',
|
2026-05-20 17:13:32 +08:00
|
|
|
modelUpdated: '모델이 업데이트되었습니다',
|
2026-04-17 09:09:50 +08:00
|
|
|
jobDeleted: '작업이 삭제되었습니다',
|
|
|
|
|
status: {
|
|
|
|
|
running: '실행 중',
|
|
|
|
|
paused: '일시 정지',
|
|
|
|
|
disabled: '비활성화',
|
|
|
|
|
scheduled: '예약됨',
|
|
|
|
|
},
|
|
|
|
|
info: {
|
2026-05-20 17:13:32 +08:00
|
|
|
model: '모델',
|
|
|
|
|
schedule: '일정',
|
2026-04-17 09:09:50 +08:00
|
|
|
lastRun: '마지막 실행',
|
|
|
|
|
nextRun: '다음 실행',
|
|
|
|
|
deliver: '전송',
|
|
|
|
|
repeat: '반복',
|
|
|
|
|
},
|
|
|
|
|
action: {
|
|
|
|
|
pause: '일시 정지',
|
|
|
|
|
pauseJob: '작업 일시 정지',
|
|
|
|
|
resume: '재개',
|
|
|
|
|
resumeJob: '작업 재개',
|
|
|
|
|
runNow: '즉시 실행',
|
|
|
|
|
triggerImmediately: '즉시 실행',
|
|
|
|
|
},
|
2026-04-30 10:17:25 +10:00
|
|
|
runHistory: {
|
|
|
|
|
title: '실행 기록',
|
|
|
|
|
runs: '회 실행',
|
|
|
|
|
noRuns: '실행 기록이 없습니다.',
|
|
|
|
|
},
|
2026-04-17 09:09:50 +08:00
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// 스킬
|
|
|
|
|
skills: {
|
|
|
|
|
title: '스킬',
|
|
|
|
|
searchPlaceholder: '스킬 검색...',
|
|
|
|
|
noMatch: '검색과 일치하는 스킬이 없습니다',
|
|
|
|
|
noSkills: '스킬을 찾을 수 없습니다',
|
|
|
|
|
backTo: '돌아가기',
|
|
|
|
|
attachedFiles: '첨부 파일',
|
|
|
|
|
loadFailed: '스킬을 불러오지 못했습니다',
|
|
|
|
|
fileLoadFailed: '파일을 불러오지 못했습니다',
|
2026-05-02 10:56:58 +10:00
|
|
|
modified: '사용자 수정됨',
|
|
|
|
|
archived: '보관됨',
|
|
|
|
|
pinned: '고정됨',
|
|
|
|
|
pin: '스킬 고정',
|
|
|
|
|
unpin: '고정 해제',
|
|
|
|
|
pinFailed: '고정 상태 변경 실패',
|
2026-04-17 09:09:50 +08:00
|
|
|
toggleFailed: '스킬 상태를 전환하지 못했습니다',
|
2026-05-02 10:56:58 +10:00
|
|
|
source: {
|
|
|
|
|
builtin: '내장',
|
|
|
|
|
hub: 'Hub',
|
|
|
|
|
local: '로컬',
|
2026-05-24 19:47:52 +08:00
|
|
|
external: '외부',
|
2026-05-02 10:56:58 +10:00
|
|
|
},
|
2026-04-17 09:09:50 +08:00
|
|
|
},
|
|
|
|
|
|
2026-05-10 13:50:39 +02:00
|
|
|
// 플러그인
|
|
|
|
|
plugins: {
|
|
|
|
|
title: '플러그인',
|
|
|
|
|
refresh: '새로고침',
|
|
|
|
|
notice: '탐색 가능한 Hermes 플러그인 manifest의 읽기 전용 인벤토리입니다. 탐색 메타데이터는 플러그인 코드를 로드하지 않고 읽습니다. v1의 관리 작업은 CLI에 유지되며, 변경 사항은 새 Hermes 세션에서 적용됩니다.',
|
|
|
|
|
loadFailed: '플러그인을 불러오지 못했습니다',
|
|
|
|
|
commandCopied: '명령을 복사했습니다',
|
|
|
|
|
searchPlaceholder: 'key, 이름, 설명, 경로 검색...',
|
|
|
|
|
source: '소스',
|
|
|
|
|
kind: '종류',
|
|
|
|
|
statusTitle: '상태',
|
|
|
|
|
configStatus: 'config: {status}',
|
|
|
|
|
notAvailable: 'n/a',
|
|
|
|
|
copyCommand: '명령 복사',
|
|
|
|
|
managedElsewhere: '다른 곳에서 관리됨',
|
|
|
|
|
noMatch: '현재 필터와 일치하는 플러그인이 없습니다',
|
|
|
|
|
enabled: '활성화됨',
|
|
|
|
|
disabled: '비활성화됨',
|
|
|
|
|
summary: {
|
|
|
|
|
total: '전체',
|
|
|
|
|
active: '활성 / 자동',
|
|
|
|
|
inactive: '비활성',
|
|
|
|
|
disabled: '비활성화됨',
|
|
|
|
|
providerManaged: 'Provider 관리',
|
|
|
|
|
},
|
|
|
|
|
status: {
|
|
|
|
|
enabled: '활성화됨',
|
|
|
|
|
'auto-active': '자동 활성',
|
|
|
|
|
inactive: '비활성',
|
|
|
|
|
disabled: '비활성화됨',
|
|
|
|
|
'provider-managed': 'Provider 관리',
|
|
|
|
|
},
|
|
|
|
|
statusLabel: {
|
|
|
|
|
enabled: '설정으로 활성화됨',
|
|
|
|
|
'auto-active': '자동 활성',
|
|
|
|
|
inactive: '비활성',
|
|
|
|
|
disabled: '비활성화됨',
|
|
|
|
|
'provider-managed': 'Provider 관리',
|
|
|
|
|
},
|
|
|
|
|
configStatuses: {
|
|
|
|
|
enabled: '활성화됨',
|
|
|
|
|
disabled: '비활성화됨',
|
|
|
|
|
'not-enabled': '활성화되지 않음',
|
|
|
|
|
auto: '자동',
|
|
|
|
|
'provider-managed': 'Provider 관리',
|
|
|
|
|
},
|
|
|
|
|
table: {
|
|
|
|
|
plugin: '플러그인',
|
|
|
|
|
status: '상태',
|
|
|
|
|
source: '소스',
|
|
|
|
|
kind: '종류',
|
|
|
|
|
capabilities: '기능',
|
|
|
|
|
path: '경로 / entrypoint',
|
|
|
|
|
cli: 'CLI',
|
|
|
|
|
},
|
|
|
|
|
capabilities: {
|
|
|
|
|
tools: '{count} tools',
|
|
|
|
|
hooks: '{count} hooks',
|
|
|
|
|
env: '{count} env',
|
|
|
|
|
},
|
|
|
|
|
metadata: {
|
2026-05-20 17:13:32 +08:00
|
|
|
agentRoot: '에이전트 루트',
|
2026-05-10 13:50:39 +02:00
|
|
|
python: 'Python',
|
2026-05-20 17:13:32 +08:00
|
|
|
scanCwd: 'cwd 스캔',
|
2026-05-10 13:50:39 +02:00
|
|
|
projectPlugins: '프로젝트 플러그인',
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
|
2026-04-17 09:09:50 +08:00
|
|
|
// 메모리
|
|
|
|
|
memory: {
|
|
|
|
|
title: '메모리',
|
|
|
|
|
refresh: '새로고침',
|
|
|
|
|
loadFailed: '메모리를 불러오지 못했습니다',
|
|
|
|
|
myNotes: '내 메모',
|
|
|
|
|
noNotes: '메모가 없습니다.',
|
|
|
|
|
notesPlaceholder: '메모를 작성하세요...',
|
|
|
|
|
userProfile: '사용자 프로필',
|
|
|
|
|
noProfile: '프로필이 없습니다.',
|
|
|
|
|
profilePlaceholder: '프로필을 작성하세요...',
|
|
|
|
|
soul: '소울',
|
|
|
|
|
noSoul: '소울 설정이 없습니다.',
|
|
|
|
|
soulPlaceholder: '소울 설정을 작성하세요...',
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// 모델
|
|
|
|
|
models: {
|
|
|
|
|
title: '모델',
|
|
|
|
|
addProvider: 'Provider 추가',
|
|
|
|
|
providerType: 'Provider 유형',
|
|
|
|
|
preset: '프리셋',
|
|
|
|
|
custom: '사용자 지정',
|
|
|
|
|
selectProvider: 'Provider 선택',
|
|
|
|
|
chooseProvider: 'Provider를 선택하세요...',
|
|
|
|
|
name: '이름',
|
|
|
|
|
autoGeneratedName: 'Base URL에서 자동 생성',
|
|
|
|
|
baseUrl: 'Base URL',
|
2026-04-25 14:00:07 +08:00
|
|
|
region: '지역',
|
|
|
|
|
regionIntl: '국제판',
|
|
|
|
|
regionCn: '중국 본토',
|
2026-04-17 09:09:50 +08:00
|
|
|
baseUrlPlaceholder: '예: https://api.example.com/v1',
|
|
|
|
|
apiKey: 'API Key',
|
|
|
|
|
apiKeyPlaceholder: 'sk-...',
|
|
|
|
|
defaultModel: '기본 모델',
|
2026-04-17 22:05:06 +08:00
|
|
|
selectOrInput: '모델 선택 또는 직접 입력...',
|
2026-04-17 09:09:50 +08:00
|
|
|
selectModel: '모델 선택...',
|
|
|
|
|
providerAdded: 'Provider가 추가되었습니다',
|
|
|
|
|
providerDeleted: 'Provider가 삭제되었습니다',
|
|
|
|
|
deleteProvider: 'Provider 삭제',
|
|
|
|
|
deleteConfirm: '"{name}"을(를) 삭제하시겠습니까?',
|
2026-04-17 23:11:57 +08:00
|
|
|
codexLoginTitle: 'OpenAI Codex 로그인',
|
|
|
|
|
codexWaiting: '인증 페이지에서 아래 코드를 입력하여 로그인하세요:',
|
|
|
|
|
codexCopyCode: '코드가 복사되었습니다',
|
|
|
|
|
codexOpenLink: '인증 페이지 열기',
|
|
|
|
|
codexApproved: '로그인 성공',
|
|
|
|
|
codexExpired: '인증이 만료되었습니다. 다시 시도해주세요.',
|
2026-04-23 08:39:19 +08:00
|
|
|
nousLoginTitle: 'Nous Portal 로그인',
|
|
|
|
|
nousWaiting: '인증 페이지에서 이 코드를 입력하세요:',
|
|
|
|
|
nousCopyCode: '코드 복사됨',
|
|
|
|
|
nousOpenLink: '인증 페이지 열기',
|
|
|
|
|
nousApproved: '로그인 성공',
|
|
|
|
|
nousDenied: '인증이 거부되었습니다',
|
|
|
|
|
nousExpired: '인증이 만료되었습니다',
|
2026-04-26 22:51:35 +08:00
|
|
|
copilotLoginTitle: 'GitHub Copilot 로그인',
|
|
|
|
|
copilotWaiting: 'GitHub을 열고 아래의 디바이스 코드를 입력하여 인증하세요. 승인 후 창이 자동으로 닫힙니다.',
|
|
|
|
|
copilotCopyCode: '코드가 복사되었습니다',
|
|
|
|
|
copilotOpenLink: 'GitHub 인증 페이지 열기',
|
|
|
|
|
copilotApproved: '로그인 성공!',
|
|
|
|
|
copilotDenied: '인증이 거부되었습니다.',
|
|
|
|
|
copilotExpired: '인증 링크가 만료되었습니다. 다시 시도하세요.',
|
|
|
|
|
copilotAddDetectedTitle: 'GitHub Copilot 감지됨',
|
|
|
|
|
copilotAddDetected: '이 컴퓨터에서 GitHub Copilot OAuth 토큰이 감지되었습니다. 추가를 클릭하여 Hermes에서 Copilot을 활성화하세요.',
|
|
|
|
|
copilotAddSourceEnv: '출처: ~/.hermes/.env (COPILOT_GITHUB_TOKEN)',
|
|
|
|
|
copilotAddSourceGhCli: '출처: gh CLI (gh auth token)',
|
|
|
|
|
copilotAddSourceAppsJson: '출처: VS Code Copilot 확장 (apps.json)',
|
|
|
|
|
copilotDeleteHintEnv: '이 작업은 ~/.hermes/.env의 COPILOT_GITHUB_TOKEN을 지웁니다. 다른 도구에는 영향이 없습니다.',
|
|
|
|
|
copilotDeleteHintGhCli: 'Copilot이 Hermes에서 숨겨집니다. gh CLI 로그인에는 영향이 없으며 `gh auth status`는 여전히 로그인 상태를 표시합니다.',
|
|
|
|
|
copilotDeleteHintAppsJson: 'Copilot이 Hermes에서 숨겨집니다. VS Code Copilot 확장 로그인에는 영향이 없습니다.',
|
2026-04-24 08:49:45 +08:00
|
|
|
customBadge: '커스텀',
|
2026-04-26 22:51:35 +08:00
|
|
|
previewBadge: '프리뷰',
|
|
|
|
|
disabledBadge: '사용 불가',
|
|
|
|
|
disabledTooltip: "이 모델은 현재 계정에서 사용할 수 없습니다.",
|
2026-05-11 16:18:13 +02:00
|
|
|
customModelPlaceholder: '목록에 없는 모델 ID',
|
|
|
|
|
customModelHint: '제공자는 지원하지만 API가 반환하지 않는 모델용입니다. 표시 이름 변경이 아닙니다. Enter로 불러옵니다.',
|
2026-04-17 09:09:50 +08:00
|
|
|
noProviders: 'Provider가 없습니다. 사용자 지정 Provider를 추가하여 시작하세요.',
|
2026-05-14 23:36:07 +08:00
|
|
|
clearVisibleModels: '선택 지우기',
|
2026-05-19 16:09:59 +08:00
|
|
|
currentDefault: '현재 기본값',
|
|
|
|
|
defaultShort: '기본값',
|
2026-04-17 09:09:50 +08:00
|
|
|
builtIn: '내장',
|
|
|
|
|
customType: '사용자 지정',
|
2026-05-20 17:13:32 +08:00
|
|
|
provider: '공급자',
|
2026-04-24 11:18:11 +08:00
|
|
|
contextLength: '컨텍스트 길이',
|
2026-05-26 19:35:48 +08:00
|
|
|
contextLengthPlaceholder: '예: 256000 (선택사항)',
|
2026-04-17 09:09:50 +08:00
|
|
|
local: '로컬 ({host})',
|
|
|
|
|
selectProviderRequired: 'Provider를 선택해 주세요',
|
|
|
|
|
baseUrlRequired: 'Base URL을 입력해 주세요',
|
|
|
|
|
apiKeyRequired: 'API Key를 입력해 주세요',
|
|
|
|
|
modelRequired: '기본 모델을 선택해 주세요',
|
|
|
|
|
enterBaseUrl: '먼저 Base URL을 입력해 주세요',
|
|
|
|
|
unexpectedFormat: '예상치 못한 응답 형식입니다',
|
|
|
|
|
foundModels: '{count}개의 모델을 찾았습니다',
|
|
|
|
|
fetchFailed: '모델을 가져오지 못했습니다',
|
2026-05-20 17:13:32 +08:00
|
|
|
xaiWaiting: '열린 xAI 페이지에서 인증을 완료하세요. 승인되면 창이 자동으로 닫힙니다.',
|
|
|
|
|
xaiOpenLink: 'xAI 인증 페이지 열기',
|
|
|
|
|
xaiLoginTitle: 'xAI Grok OAuth 로그인',
|
|
|
|
|
xaiExpired: '인증 링크가 만료되었습니다. 다시 시도하세요.',
|
|
|
|
|
xaiCopyLink: '인증 링크 복사',
|
|
|
|
|
xaiApproved: '로그인 성공!',
|
|
|
|
|
visibilitySelectOne: '최소 하나의 표시 모델을 유지하세요',
|
|
|
|
|
visibilitySaved: '표시 모델이 저장되었습니다',
|
|
|
|
|
visibilitySaveFailed: '표시 모델 저장 실패',
|
|
|
|
|
visibilityHint: 'Web UI의 모델 선택기와 모델 페이지 표시에만 영향을 줍니다. Hermes CLI의 provider/model 설정은 변경되지 않으며 실제 호출은 원본 모델 ID를 사용합니다.',
|
|
|
|
|
showAllModels: '모든 모델 표시',
|
|
|
|
|
searchPlaceholder: '모델 검색...',
|
|
|
|
|
removeCustomModel: '목록에 없는 이 모델 제거',
|
|
|
|
|
more: '개 더',
|
|
|
|
|
models: '모델 목록',
|
|
|
|
|
manageVisibleModelsFor: '{name} 표시 모델 관리',
|
|
|
|
|
manageVisibleModels: '표시 모델 관리',
|
|
|
|
|
getApiKey: 'API Key 가져오기',
|
|
|
|
|
count: '개 모델',
|
|
|
|
|
aliasUseOriginal: '원본 ID로 복원',
|
|
|
|
|
aliasTitleFor: '{model}의 표시 이름',
|
|
|
|
|
aliasTitle: '모델 표시 이름',
|
|
|
|
|
aliasSaveFailed: '표시 이름 저장 실패',
|
|
|
|
|
aliasPlaceholder: '비워두면 원본 모델 ID 사용',
|
|
|
|
|
aliasManageFor: '{provider}의 표시 이름',
|
|
|
|
|
aliasManage: '표시 이름',
|
|
|
|
|
aliasHint: 'Web UI 표시 이름만 변경합니다. Hermes에는 여전히 원본 모델 ID가 전달됩니다.',
|
|
|
|
|
aliasEdit: '이름 변경',
|
|
|
|
|
aliasCanonical: '원본 ID: {model}',
|
2026-04-17 09:09:50 +08:00
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// 프로필
|
|
|
|
|
profiles: {
|
|
|
|
|
title: '프로필',
|
|
|
|
|
create: '프로필 생성',
|
|
|
|
|
import: '가져오기',
|
|
|
|
|
export: '내보내기',
|
|
|
|
|
rename: '이름 변경',
|
|
|
|
|
delete: '삭제',
|
2026-05-23 18:44:53 +08:00
|
|
|
switchTo: 'Hermes Profile 전환',
|
|
|
|
|
switchConfirm: '`hermes profile use {name}`를 실행하고 Hermes CLI active profile을 변경합니다. 계속하시겠습니까?',
|
|
|
|
|
switchSuccess: 'Hermes active profile이 "{name}"(으)로 전환되었습니다',
|
|
|
|
|
switchFailed: 'Hermes Profile 전환 실패. 게이트웨이를 수동으로 재시작해야 할 수 있습니다.',
|
2026-04-17 09:09:50 +08:00
|
|
|
createSuccess: '프로필 "{name}"이(가) 생성되었습니다',
|
|
|
|
|
createFailed: '프로필 생성 실패',
|
|
|
|
|
renameSuccess: '프로필 이름이 변경되었습니다',
|
|
|
|
|
renameFailed: '프로필 이름 변경 실패',
|
|
|
|
|
deleteConfirm: '프로필 "{name}"을(를) 삭제하시겠습니까?',
|
|
|
|
|
deleteSuccess: '프로필이 삭제되었습니다',
|
|
|
|
|
deleteFailed: '프로필 삭제 실패',
|
|
|
|
|
exportSuccess: '프로필이 내보내기되었습니다',
|
|
|
|
|
exportFailed: '프로필 내보내기 실패',
|
|
|
|
|
importSuccess: '프로필이 가져오기되었습니다',
|
|
|
|
|
importFailed: '프로필 가져오기 실패',
|
|
|
|
|
importSelectFile: '아카이브 파일 선택',
|
|
|
|
|
importInvalidFile: '유효한 아카이브 파일을 선택해 주세요 (.tar.gz, .tgz, .gz, .zip)',
|
|
|
|
|
name: '프로필 이름',
|
|
|
|
|
namePlaceholder: '영문, 숫자, 하이픈만 사용 가능',
|
2026-05-03 22:10:40 +08:00
|
|
|
nameValidation: '프로필 이름에는 소문자, 숫자, 밑줄, 하이픈만 사용할 수 있습니다',
|
2026-04-17 09:09:50 +08:00
|
|
|
newName: '새 이름',
|
|
|
|
|
newNamePlaceholder: '새 이름을 입력하세요',
|
|
|
|
|
cloneFromCurrent: '현재 프로필에서 복제',
|
2026-04-29 20:31:24 +08:00
|
|
|
cloneCleanupNotice: '복제 시 독점형 플랫폼 자격 증명(Weixin / Telegram / Slack 등)은 자동으로 건너뛰어 원본 프로필과의 충돌을 방지합니다',
|
|
|
|
|
cloneStrippedCredentials: '독점 자격 증명 {count}개 제거됨: {list}',
|
|
|
|
|
cloneDisabledPlatforms: '플랫폼 {count}개 비활성화됨: {list}',
|
|
|
|
|
cloneStrippedConfigCredentials: 'config.yaml에서 임베디드 자격 증명 {count}개 제거됨: {list}',
|
2026-04-17 09:09:50 +08:00
|
|
|
archivePath: '아카이브 경로',
|
|
|
|
|
archivePathPlaceholder: '아카이브 파일의 서버 경로',
|
|
|
|
|
importName: '프로필 이름 (선택)',
|
|
|
|
|
importNamePlaceholder: '비워두면 아카이브 이름을 사용합니다',
|
|
|
|
|
active: '활성',
|
|
|
|
|
model: '모델',
|
|
|
|
|
gateway: '게이트웨이',
|
|
|
|
|
alias: '별칭',
|
2026-05-20 17:13:32 +08:00
|
|
|
provider: '공급자',
|
2026-04-17 09:09:50 +08:00
|
|
|
path: '경로',
|
|
|
|
|
skills: '스킬',
|
|
|
|
|
hasEnv: '.env 있음',
|
|
|
|
|
hasSoulMd: 'soul.md 있음',
|
|
|
|
|
noProfiles: '프로필이 없습니다. 새로 만들어 시작하세요.',
|
2026-05-20 14:15:01 +08:00
|
|
|
avatar: {
|
2026-05-20 17:13:32 +08:00
|
|
|
title: '사용자 지정 아바타',
|
|
|
|
|
customize: '아바타',
|
|
|
|
|
upload: '이미지 업로드',
|
|
|
|
|
random: '무작위 생성',
|
|
|
|
|
reset: '기본값 복원',
|
|
|
|
|
hint: 'PNG, JPEG, WebP 지원, 최대 1MB',
|
|
|
|
|
invalidType: 'PNG, JPEG 또는 WebP 이미지를 선택하세요',
|
|
|
|
|
tooLarge: '아바타 이미지는 1MB를 초과할 수 없습니다',
|
|
|
|
|
saveSuccess: '아바타가 저장되었습니다',
|
|
|
|
|
saveFailed: '아바타 저장 실패',
|
|
|
|
|
resetSuccess: '기본 아바타로 복원되었습니다',
|
|
|
|
|
resetFailed: '기본 아바타 복원 실패',
|
|
|
|
|
},
|
|
|
|
|
runtime: {
|
|
|
|
|
activeProfile: '현재: {name}',
|
|
|
|
|
bridgeWorker: 'Bridge 상태',
|
|
|
|
|
gateway: '게이트웨이',
|
|
|
|
|
active: '활성',
|
|
|
|
|
activeTag: '현재',
|
|
|
|
|
idle: '대기 중',
|
|
|
|
|
running: '실행 중',
|
|
|
|
|
stopped: '중지됨',
|
|
|
|
|
restartGateway: 'Gateway 재시작',
|
|
|
|
|
restartProfile: '프로필 재시작',
|
2026-05-23 19:41:51 +08:00
|
|
|
switchProfile: '프론트엔드 프로필 전환',
|
2026-05-20 17:13:32 +08:00
|
|
|
gatewayRestarted: 'Gateway가 재시작되었습니다: {name}',
|
|
|
|
|
gatewayRestartFailed: 'Gateway 재시작 실패',
|
|
|
|
|
profileRestarted: '프로필이 재시작되었습니다: {name}',
|
|
|
|
|
profileRestartFailed: '프로필 재시작 실패',
|
2026-05-20 14:15:01 +08:00
|
|
|
},
|
2026-04-17 09:09:50 +08:00
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// 로그
|
|
|
|
|
logs: {
|
|
|
|
|
title: '로그',
|
|
|
|
|
all: '전체',
|
|
|
|
|
searchPlaceholder: '검색...',
|
|
|
|
|
refresh: '새로고침',
|
|
|
|
|
noEntries: '로그 항목 없음',
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// 설정
|
|
|
|
|
settings: {
|
|
|
|
|
title: '설정',
|
|
|
|
|
saved: '저장됨',
|
|
|
|
|
saveFailed: '저장 실패',
|
|
|
|
|
tabs: {
|
|
|
|
|
display: '표시',
|
2026-05-23 18:44:53 +08:00
|
|
|
account: '현재 계정',
|
|
|
|
|
users: '계정 관리',
|
2026-04-17 09:09:50 +08:00
|
|
|
agent: '에이전트',
|
|
|
|
|
memory: '메모리',
|
2026-05-19 17:58:39 +08:00
|
|
|
compression: '압축',
|
2026-04-17 09:09:50 +08:00
|
|
|
session: '세션',
|
|
|
|
|
privacy: '개인정보',
|
|
|
|
|
apiServer: 'API 서버',
|
2026-05-10 20:08:38 +08:00
|
|
|
models: '모델',
|
|
|
|
|
voice: '음성',
|
2026-04-17 09:09:50 +08:00
|
|
|
},
|
|
|
|
|
display: {
|
|
|
|
|
streaming: '스트리밍 응답',
|
|
|
|
|
streamingHint: 'AI 응답을 실시간으로 표시',
|
|
|
|
|
compact: '컴팩트 모드',
|
|
|
|
|
compactHint: '메시지 간격 줄이기',
|
|
|
|
|
showReasoning: '추론 과정 표시',
|
|
|
|
|
showReasoningHint: '모델의 생각 과정 표시',
|
|
|
|
|
showCost: '비용 표시',
|
|
|
|
|
showCostHint: '응답에 토큰 사용량 표시',
|
|
|
|
|
inlineDiffs: '인라인 변경사항',
|
|
|
|
|
inlineDiffsHint: '코드 변경사항을 인라인으로 표시',
|
|
|
|
|
bellOnComplete: '완료 알림음',
|
|
|
|
|
bellOnCompleteHint: 'AI 응답 완료 시 알림음 재생',
|
|
|
|
|
busyInputMode: '바쁨 입력 모드',
|
|
|
|
|
busyInputModeHint: 'AI 처리 중에도 입력 허용',
|
|
|
|
|
theme: '테마',
|
|
|
|
|
themeHint: '라이트, 다크 또는 시스템 설정 따르기',
|
|
|
|
|
themeLight: '라이트',
|
|
|
|
|
themeDark: '다크',
|
|
|
|
|
themeSystem: '시스템',
|
|
|
|
|
},
|
|
|
|
|
agent: {
|
|
|
|
|
maxTurns: '최대 턴 수',
|
|
|
|
|
maxTurnsHint: '대화당 최대 상호작용 라운드 수',
|
|
|
|
|
gatewayTimeout: '게이트웨이 시간초과',
|
|
|
|
|
gatewayTimeoutHint: '요청 시간초과 (초)',
|
|
|
|
|
restartDrainTimeout: '재시작 드레인 시간초과',
|
|
|
|
|
restartDrainTimeoutHint: '재시작 전 드레인 시간초과 (초)',
|
|
|
|
|
toolEnforcement: '도구 실행 정책',
|
|
|
|
|
toolEnforcementHint: '도구 호출 실행 모드 제어',
|
|
|
|
|
auto: '자동',
|
|
|
|
|
always: '항상',
|
|
|
|
|
never: '사용 안 함',
|
|
|
|
|
},
|
|
|
|
|
memory: {
|
|
|
|
|
enabled: '메모리 활성화',
|
|
|
|
|
enabledHint: 'AI가 대화 컨텍스트를 기억하도록 허용',
|
|
|
|
|
userProfile: '사용자 프로필',
|
|
|
|
|
userProfileHint: 'AI가 사용자 선호를 기억하도록 허용',
|
|
|
|
|
charLimit: '메모리 문자 제한',
|
|
|
|
|
charLimitHint: 'MEMORY.md 최대 문자 수',
|
|
|
|
|
userCharLimit: '사용자 프로필 문자 제한',
|
|
|
|
|
userCharLimitHint: 'USER.md 최대 문자 수',
|
|
|
|
|
},
|
2026-05-19 17:58:39 +08:00
|
|
|
compression: {
|
|
|
|
|
enabled: '압축 활성화',
|
|
|
|
|
enabledHint: '긴 채팅 기록이 모델 컨텍스트를 넘기 전에 자동 압축',
|
|
|
|
|
threshold: '압축 임계값',
|
|
|
|
|
thresholdHint: '추정 토큰이 이 컨텍스트 비율을 넘으면 압축 시작',
|
|
|
|
|
targetRatio: '목표 비율',
|
|
|
|
|
targetRatioHint: '압축 후 기록 크기를 컨텍스트 비율로 지정',
|
|
|
|
|
protectLastN: '최근 메시지 보호',
|
|
|
|
|
protectLastNHint: '이 수만큼 최신 메시지는 압축하지 않음',
|
|
|
|
|
protectFirstN: '처음 메시지 보호',
|
|
|
|
|
protectFirstNHint: '이 수만큼 처음 메시지는 압축하지 않음',
|
|
|
|
|
},
|
2026-04-17 09:09:50 +08:00
|
|
|
session: {
|
|
|
|
|
mode: '초기화 모드',
|
|
|
|
|
modeHint: '세션 초기화 트리거 조건',
|
|
|
|
|
modeBoth: '유휴 + 예약',
|
|
|
|
|
modeIdle: '유휴만',
|
2026-05-16 21:18:59 +08:00
|
|
|
modeDaily: '예약만',
|
|
|
|
|
modeNone: '안함 (수동만)',
|
2026-04-17 09:09:50 +08:00
|
|
|
idleMinutes: '유휴 시간초과',
|
|
|
|
|
idleMinutesHint: '자동 초기화 대기 시간 (분)',
|
|
|
|
|
atHour: '예약 초기화 시간',
|
2026-04-22 02:09:58 +02:00
|
|
|
humanOnly: '사람 세션만 표시',
|
|
|
|
|
humanOnlyHint: '하위 에이전트 및 세션 모니터 노이즈를 기본으로 숨깁니다',
|
|
|
|
|
liveMonitorHumanOnly: '라이브 모니터: 사람 세션만 표시',
|
|
|
|
|
liveMonitorHumanOnlyHint: '라이브 모니터에서 하위 에이전트 및 세션 모니터 노이즈를 기본으로 숨깁니다',
|
2026-04-17 09:09:50 +08:00
|
|
|
atHourHint: '매일 지정한 시간에 세션 초기화',
|
2026-05-04 21:29:39 +08:00
|
|
|
requireAuth: '세션 인증',
|
|
|
|
|
requireAuthHint: '세션 작업에 인증 필요',
|
2026-04-17 09:09:50 +08:00
|
|
|
},
|
|
|
|
|
privacy: {
|
|
|
|
|
redactPii: '개인정보 마스킹',
|
|
|
|
|
redactPiiHint: '민감 정보 자동 감지 및 숨김 (비밀번호, 키 등)',
|
|
|
|
|
},
|
|
|
|
|
apiServer: {
|
|
|
|
|
enable: '활성화',
|
|
|
|
|
enableHint: 'API 서버 활성화',
|
|
|
|
|
host: '호스트',
|
|
|
|
|
hostHint: '수신 주소',
|
|
|
|
|
port: '포트',
|
|
|
|
|
portHint: '수신 포트',
|
|
|
|
|
key: '키',
|
|
|
|
|
keyHint: 'API 접근 키',
|
|
|
|
|
cors: 'CORS 출처',
|
|
|
|
|
corsHint: '허용된 교차 출처',
|
|
|
|
|
},
|
2026-05-10 20:08:38 +08:00
|
|
|
voice: {
|
|
|
|
|
ttsProvider: 'TTS 제공자',
|
|
|
|
|
ttsProviderHint: '메시지 재생에 사용할 텍스트 음성 변환 엔진 선택',
|
|
|
|
|
providerWebSpeech: 'WebSpeech API (브라우저)',
|
|
|
|
|
providerOpenai: 'OpenAI TTS',
|
|
|
|
|
providerCustom: '사용자 정의 엔드포인트 (OpenAI 호환)',
|
|
|
|
|
providerEdge: 'Edge TTS (무료, API Key 불필요)',
|
|
|
|
|
|
|
|
|
|
// WebSpeech
|
|
|
|
|
webspeechVoice: '음성',
|
|
|
|
|
webspeechVoiceHint: '브라우저 또는 OS에서 음성 선택',
|
|
|
|
|
webspeechVoicePlaceholder: '자동 (기본 음성)',
|
|
|
|
|
|
|
|
|
|
// OpenAI
|
|
|
|
|
openaiKey: 'API 키',
|
|
|
|
|
openaiKeyHint: 'TTS 접근 권한이 있는 OpenAI API 키',
|
|
|
|
|
openaiUrl: 'API 기본 URL',
|
|
|
|
|
openaiUrlHint: '예: https://api.openai.com/v1/audio/speech',
|
|
|
|
|
openaiModel: '모델',
|
|
|
|
|
openaiModelHint: 'tts-1 (빠름) / tts-1-hd (고음질)',
|
|
|
|
|
openaiVoice: '음색',
|
|
|
|
|
openaiVoiceHint: '합성에 사용할 음색',
|
|
|
|
|
|
|
|
|
|
// Custom endpoint
|
|
|
|
|
customHint: '모든 OpenAI 호환 TTS API 사용 가능 — GPT-SoVITS, CosyVoice 등 지원',
|
|
|
|
|
customUrl: 'API URL',
|
|
|
|
|
customUrlHint: 'TTS 서비스의 기본 URL',
|
|
|
|
|
customUrlPlaceholder: '로컬 어댑터에 설정된 주소 (예: http://127.0.0.1:9880)',
|
|
|
|
|
customApiKey: 'API 키 (선택사항)',
|
|
|
|
|
customApiKeyHint: '일부 사용자 정의 엔드포인트는 인증 필요',
|
|
|
|
|
customApiKeyPlaceholder: '필요하지 않으면 비워둠',
|
|
|
|
|
|
|
|
|
|
// Edge TTS
|
|
|
|
|
edgeHint: 'Microsoft Edge TTS 기반 (node-edge-tts).',
|
|
|
|
|
edgeUrl: '어댑터 URL',
|
|
|
|
|
edgeUrlHint: 'Edge TTS 어댑터 주소 (예: http://127.0.0.1:9882)',
|
|
|
|
|
edgeUrlPlaceholder: 'http://127.0.0.1:9882',
|
|
|
|
|
edgeVoice: '음색',
|
|
|
|
|
edgeVoiceHint: '음성 합성에 사용할 음색 선택',
|
2026-05-11 21:56:11 +08:00
|
|
|
edgeRate: '속도',
|
|
|
|
|
edgeRateHint: '음성 속도 조절 (0.5~2.0배)',
|
|
|
|
|
edgePitch: '음높이',
|
|
|
|
|
edgePitchHint: '음성 음높이 조절 (-20~+20 Hz)',
|
|
|
|
|
|
2026-05-10 20:08:38 +08:00
|
|
|
// Test
|
|
|
|
|
testTitle: '음성 테스트',
|
|
|
|
|
testText: '테스트 텍스트',
|
|
|
|
|
testTextPlaceholder: '테스트할 텍스트 입력...',
|
|
|
|
|
testTextDefault: '안녕하세요, 음성 테스트입니다.',
|
|
|
|
|
testButton: '테스트',
|
|
|
|
|
testButtonPlaying: '재생 중...',
|
|
|
|
|
testFailed: '테스트 실패: {error}',
|
2026-05-16 08:55:23 +08:00
|
|
|
|
|
|
|
|
// MiMo TTS
|
|
|
|
|
providerMimo: 'MiMo TTS',
|
|
|
|
|
mimoHint: '샤오미 MiMo TTS — 프리셋 음성, 음성 디자인, 음성 클론 세 가지 모드 지원',
|
|
|
|
|
mimoApiKey: 'API Key',
|
|
|
|
|
mimoApiKeyHint: 'platform.xiaomimimo.com에서 발급',
|
|
|
|
|
mimoApiKeyPlaceholder: 'MiMo API Key',
|
|
|
|
|
mimoBaseUrl: 'Base URL',
|
|
|
|
|
mimoBaseUrlHint: 'MiMo API 엔드포인트 URL',
|
|
|
|
|
mimoModel: '모델',
|
|
|
|
|
mimoModelHint: '음성 합성 모델 선택',
|
|
|
|
|
mimoModelPreset: '프리셋 음성',
|
|
|
|
|
mimoModelVoiceDesign: '음성 디자인',
|
|
|
|
|
mimoModelVoiceClone: '음성 클론',
|
|
|
|
|
mimoVoice: '음성',
|
|
|
|
|
mimoVoiceHint: '프리셋 음성 선택',
|
|
|
|
|
mimoVoiceDesignPrompt: '음성 설명',
|
|
|
|
|
mimoVoiceDesignPromptHint: '원하는 음성 특징을 설명하세요',
|
|
|
|
|
mimoVoiceDesignPromptPlaceholder: '예: 따뜻한 젊은 여성 목소리, 약간 느린 속도, 마그네틱한 톤',
|
|
|
|
|
mimoCloneAudio: '오디오 업로드',
|
|
|
|
|
mimoCloneAudioHint: '음성 클론용 오디오 샘플 업로드 (mp3/wav, 최대 10MB)',
|
|
|
|
|
mimoCloneAudioUpload: '파일 선택',
|
|
|
|
|
mimoCloneAudioClear: '지우기',
|
|
|
|
|
mimoStylePrompt: '스타일 프롬프트',
|
|
|
|
|
mimoStylePromptHint: '선택사항 — 자연어로 말하기 스타일 설명',
|
|
|
|
|
mimoStylePromptPlaceholder: '예: 밝고 경쾌한 톤, 빠른 속도',
|
2026-05-10 20:08:38 +08:00
|
|
|
},
|
2026-05-08 18:29:43 +08:00
|
|
|
lockedIps: {
|
|
|
|
|
title: '잠긴 IP 관리',
|
|
|
|
|
count: '{count}개 잠김',
|
|
|
|
|
empty: '잠긴 IP 없음',
|
|
|
|
|
unlock: '잠금 해제',
|
|
|
|
|
unlockAll: '전체 해제',
|
|
|
|
|
unlockAllConfirm: '모든 잠긴 IP를 해제하시겠습니까?',
|
|
|
|
|
unlocked: 'IP 잠금 해제됨',
|
|
|
|
|
allUnlocked: '{count}개 IP 잠금 해제됨',
|
|
|
|
|
},
|
2026-05-20 17:13:32 +08:00
|
|
|
models: {
|
|
|
|
|
apiKey: 'API Key',
|
|
|
|
|
apiKeyPlaceholder: 'API Key 입력',
|
|
|
|
|
noProviders: '구성된 공급자가 없습니다',
|
|
|
|
|
save: '저장',
|
|
|
|
|
saveFailed: '저장 실패',
|
|
|
|
|
saved: '저장됨',
|
|
|
|
|
},
|
2026-04-17 09:09:50 +08:00
|
|
|
},
|
2026-05-28 12:30:49 +08:00
|
|
|
githubPreview: {
|
|
|
|
|
title: "버전 미리보기",
|
|
|
|
|
description: "선택한 GitHub tag 를 Web UI 미리보기 작업 디렉터리에 클론하고, 의존성을 설치한 뒤 개발 포트로 실행합니다.",
|
|
|
|
|
refresh: "새로고침",
|
|
|
|
|
selectTag: "tag 선택",
|
|
|
|
|
prepare: "코드 준비",
|
|
|
|
|
install: "의존성 설치",
|
|
|
|
|
start: "미리보기 시작",
|
|
|
|
|
stop: "중지",
|
|
|
|
|
note: "미리보기 코드는 Web UI 데이터 홈 아래에 저장됩니다. 프로덕션은 8648을 유지하고, 미리보기 개발 환경은 프론트엔드 8651, 백엔드 8650에서 실행됩니다.",
|
|
|
|
|
path: "미리보기 경로",
|
|
|
|
|
webuiHome: "미리보기 데이터 홈",
|
|
|
|
|
currentTag: "현재 Tag",
|
|
|
|
|
repoReady: "저장소 준비됨",
|
|
|
|
|
dependencies: "의존성 설치됨",
|
|
|
|
|
running: "실행 상태",
|
|
|
|
|
notRunning: "실행 중 아님",
|
|
|
|
|
open: "미리보기 열기",
|
|
|
|
|
log: "작업 로그 경로",
|
|
|
|
|
logOutput: "로그 출력",
|
|
|
|
|
actionLog: "작업 로그",
|
|
|
|
|
devLog: "개발 서버 로그",
|
|
|
|
|
yes: "예",
|
|
|
|
|
no: "아니요",
|
|
|
|
|
actionFailed: "작업 실패",
|
|
|
|
|
prepareSuccess: "미리보기 코드가 준비되었습니다",
|
|
|
|
|
installSuccess: "의존성이 설치되었습니다",
|
|
|
|
|
startSuccess: "미리보기가 시작되었습니다",
|
|
|
|
|
stopSuccess: "미리보기가 중지되었습니다",
|
|
|
|
|
},
|
2026-04-17 09:09:50 +08:00
|
|
|
|
|
|
|
|
platform: {
|
|
|
|
|
requireMention: "{'@'}멘션 필요",
|
|
|
|
|
requireMentionGroup: "그룹에서 {'@'}멘션 시에만 응답",
|
|
|
|
|
requireMentionChannel: "채널에서 {'@'}멘션 시에만 응답",
|
|
|
|
|
requireMentionRoom: "방에서 {'@'}멘션 시에만 응답",
|
|
|
|
|
reactions: '반응',
|
|
|
|
|
reactionsHint: '메시지에 이모지 반응',
|
|
|
|
|
freeResponseChats: '자유 응답 채팅',
|
|
|
|
|
freeResponseChatsHint: "{'@'}멘션 없이 응답할 채팅 ID (쉼표로 구분)",
|
|
|
|
|
freeResponseChannels: '자유 응답 채널',
|
|
|
|
|
freeResponseChannelsHint: "{'@'}멘션 없이 응답할 채널 ID (쉼표로 구분)",
|
|
|
|
|
freeResponseRooms: '자유 응답 방',
|
|
|
|
|
freeResponseRoomsHint: "{'@'}멘션 없이 응답할 방 ID (쉼표로 구분)",
|
|
|
|
|
mentionPatterns: '사용자 지정 멘션 패턴',
|
|
|
|
|
mentionPatternsHint: '추가 트리거 패턴',
|
|
|
|
|
autoThread: '자동 스레드',
|
|
|
|
|
autoThreadHint: "{'@'}멘션 후 자동으로 스레드 생성",
|
|
|
|
|
autoThreadHintRoom: '방에서 자동으로 스레드 생성',
|
|
|
|
|
dmMentionThreads: 'DM 멘션 스레드',
|
|
|
|
|
dmMentionThreadsHint: 'DM에서 멘션 시 스레드로 응답',
|
|
|
|
|
allowBots: '봇 메시지 허용',
|
|
|
|
|
allowBotsHint: '다른 봇의 메시지에 응답',
|
|
|
|
|
allowedChannels: '허용된 채널',
|
|
|
|
|
allowedChannelsHint: '채널 ID 허용 목록 (쉼표로 구분)',
|
|
|
|
|
ignoredChannels: '무시할 채널',
|
|
|
|
|
ignoredChannelsHint: '봇이 응답하지 않는 채널 ID (쉼표로 구분)',
|
|
|
|
|
noThreadChannels: '스레드 없는 채널',
|
|
|
|
|
noThreadChannelsHint: '스레드 없이 응답할 채널 ID (쉼표로 구분)',
|
2026-04-29 20:31:24 +08:00
|
|
|
exclusiveTokenWarning: '이 플랫폼은 독점 토큰 잠금을 사용합니다. 각 프로필은 다른 프로필과 충돌하지 않도록 서로 다른 ID 토큰을 사용해야 합니다.',
|
2026-04-17 09:09:50 +08:00
|
|
|
botToken: 'Bot Token',
|
|
|
|
|
botTokenHint: '개발자 포털에서 발급받은 Bot Token',
|
|
|
|
|
accessToken: 'Access Token',
|
2026-05-20 17:13:32 +08:00
|
|
|
accessTokenHint: 'Matrix 액세스 토큰',
|
2026-04-17 09:09:50 +08:00
|
|
|
homeserver: 'Homeserver URL',
|
|
|
|
|
homeserverHint: 'Matrix 홈서버 URL',
|
|
|
|
|
appId: 'App ID',
|
|
|
|
|
appIdHint: 'Feishu App ID',
|
|
|
|
|
appSecret: 'App Secret',
|
|
|
|
|
appSecretHint: 'Feishu App Secret',
|
|
|
|
|
clientId: 'Client ID',
|
|
|
|
|
clientIdHint: 'DingTalk Client ID',
|
|
|
|
|
clientSecret: 'Client Secret',
|
|
|
|
|
clientSecretHint: 'DingTalk Client Secret',
|
2026-05-27 11:32:26 +08:00
|
|
|
cardTemplateId: 'AI 카드 템플릿 ID',
|
|
|
|
|
cardTemplateIdHint: 'DingTalk AI 카드 템플릿 ID; 비워 두면 AI 카드를 사용하지 않음',
|
2026-04-17 09:09:50 +08:00
|
|
|
botId: 'Bot ID',
|
|
|
|
|
botIdHint: 'WeCom Bot ID',
|
|
|
|
|
wecomSecretHint: 'WeCom Bot Secret',
|
|
|
|
|
waEnabled: 'WhatsApp 활성화',
|
|
|
|
|
waEnabledHint: 'QR 코드 페어링으로 WhatsApp 활성화',
|
|
|
|
|
weixinToken: 'Weixin Token',
|
|
|
|
|
weixinTokenHint: 'weixin CLI QR 로그인에서 가져오기 (hermes weixin)',
|
|
|
|
|
accountId: 'Account ID',
|
|
|
|
|
accountIdHint: 'Weixin Account ID',
|
|
|
|
|
qrLogin: 'QR 로그인',
|
|
|
|
|
qrRelogin: '다시 로그인',
|
|
|
|
|
qrFetching: 'QR 코드를 가져오는 중...',
|
|
|
|
|
qrScanHint: 'WeChat으로 QR 코드를 스캔하여 로그인',
|
|
|
|
|
qrScanedHint: '스캔됨, 휴대폰에서 확인해 주세요...',
|
2026-05-20 17:13:32 +08:00
|
|
|
qqSandboxHint: '샌드박스 환경 활성화(테스트용)',
|
|
|
|
|
qqSandbox: '샌드박스 모드',
|
|
|
|
|
qqQrScanHint: 'QQ로 위 QR 코드를 스캔하거나 휴대폰에서 링크를 열어 바인딩을 완료하세요',
|
|
|
|
|
qqMarkdownHint: 'Markdown 형식 메시지 활성화(일부 클라이언트는 지원하지 않을 수 있음)',
|
|
|
|
|
qqMarkdown: 'Markdown 지원',
|
|
|
|
|
qqAppSecretHint: 'QQ Open Platform Bot App Secret',
|
|
|
|
|
qqAppSecret: 'App Secret',
|
|
|
|
|
qqAppIdHint: 'QQ Open Platform Bot App ID',
|
|
|
|
|
qqAppId: 'App ID',
|
|
|
|
|
allowedUsersHint: '사용자 ID 또는 OpenID 허용 목록, 쉼표로 구분',
|
|
|
|
|
allowedUsers: '허용 사용자',
|
|
|
|
|
allowAllUsersHint: '모든 사용자의 메시지를 허용합니다. 끄면 허용 목록을 사용합니다',
|
|
|
|
|
allowAllUsers: '모든 사용자 허용',
|
2026-04-17 09:09:50 +08:00
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// 언어
|
|
|
|
|
language: {
|
|
|
|
|
label: '언어',
|
|
|
|
|
zh: '中文',
|
|
|
|
|
en: 'English',
|
|
|
|
|
ko: '한국어',
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// 터미널
|
|
|
|
|
terminal: {
|
|
|
|
|
sessions: '세션',
|
|
|
|
|
newTab: '새 터미널',
|
|
|
|
|
closeSession: '이 세션을 닫으시겠습니까?',
|
|
|
|
|
sessionExited: '종료됨',
|
|
|
|
|
processExited: '프로세스가 종료되었습니다 (코드 {code})',
|
2026-05-20 17:13:32 +08:00
|
|
|
noSessions: '터미널 세션이 없습니다',
|
|
|
|
|
connectionFailed: '터미널에 연결하지 못했습니다',
|
|
|
|
|
connectionError: '연결 오류',
|
|
|
|
|
connectionClosed: '연결이 닫혔습니다',
|
2026-04-17 09:09:50 +08:00
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// 사용량
|
|
|
|
|
usage: {
|
|
|
|
|
title: '사용량 통계',
|
|
|
|
|
refresh: '새로고침',
|
|
|
|
|
totalTokens: '총 토큰 수',
|
|
|
|
|
inputTokens: '입력',
|
|
|
|
|
outputTokens: '출력',
|
|
|
|
|
totalSessions: '총 세션 수',
|
|
|
|
|
avgPerDay: '일평균 ~{n}',
|
|
|
|
|
estimatedCost: '예상 비용',
|
|
|
|
|
cacheHitRate: '캐시 적중률',
|
|
|
|
|
modelBreakdown: '모델별 분포',
|
2026-05-13 01:41:49 +02:00
|
|
|
dailyTrend: '일별 사용량',
|
2026-04-17 09:09:50 +08:00
|
|
|
date: '날짜',
|
|
|
|
|
tokens: '토큰',
|
|
|
|
|
cache: '캐시',
|
2026-05-02 10:36:33 +10:00
|
|
|
cacheRead: '캐시 읽기',
|
|
|
|
|
cacheWrite: '캐시 쓰기',
|
2026-04-17 09:09:50 +08:00
|
|
|
sessions: '세션',
|
|
|
|
|
cost: '비용',
|
|
|
|
|
noData: '사용량 데이터 없음',
|
|
|
|
|
},
|
2026-04-22 20:27:33 +08:00
|
|
|
|
2026-05-14 09:28:51 +08:00
|
|
|
skillsUsage: {
|
|
|
|
|
title: '스킬 사용량',
|
|
|
|
|
subtitle: 'Hermes 세션의 스킬 로드와 편집을 추적합니다',
|
|
|
|
|
refresh: '새로고침',
|
|
|
|
|
periodSelector: '스킬 사용량 기간',
|
|
|
|
|
periodLabel: '{days}일',
|
|
|
|
|
summary: '요약',
|
|
|
|
|
totalActions: '작업 수',
|
|
|
|
|
loads: '로드',
|
|
|
|
|
edits: '편집',
|
|
|
|
|
distinctSkills: '스킬 수',
|
|
|
|
|
topSkills: '상위',
|
|
|
|
|
dailyTrend: '일별',
|
|
|
|
|
periodSummary: '최근 {days}일',
|
|
|
|
|
skill: '스킬',
|
|
|
|
|
share: '비중',
|
|
|
|
|
lastUsed: '마지막',
|
|
|
|
|
noData: '스킬 사용량 데이터가 없습니다',
|
|
|
|
|
loadFailed: '스킬 사용량을 불러오지 못했습니다',
|
|
|
|
|
otherSkills: '기타',
|
|
|
|
|
},
|
|
|
|
|
|
2026-04-22 20:27:33 +08:00
|
|
|
// 변경 이력
|
|
|
|
|
changelog: {
|
2026-05-27 12:21:37 +08:00
|
|
|
new_0_6_3_1: 'Bridge spinner 상태를 더 이상 모델 reasoning 으로 저장하지 않아 장식용 thinking 텍스트가 이후 컨텍스트를 오염시키지 않습니다',
|
|
|
|
|
new_0_6_3_2: 'History 에 Hermes CLI 세션을 Web UI 로컬 기록으로 가져오는 컨트롤을 추가하고 메시지 구조를 더 안전하게 정규화합니다',
|
|
|
|
|
new_0_6_3_3: 'Provider 설정에서 기본 base URL 편집을 지원하고 LM Studio 를 내장 Provider 로 추가했으며 LM Studio /models 실시간 검색을 지원합니다',
|
|
|
|
|
new_0_6_3_4: 'Web UI bridge 를 통해 전송되는 OpenRouter 요청에 Hermes Web UI 앱 attribution headers 가 포함됩니다',
|
|
|
|
|
new_0_6_3_5: '공개 auth status endpoint 가 인증되지 않은 요청에 첫 번째 사용자 이름을 더 이상 노출하지 않습니다',
|
|
|
|
|
new_0_6_3_6: 'DingTalk 설정에 AI Card Template ID 필드를 추가하고 DINGTALK_CARD_TEMPLATE_ID 로 저장합니다',
|
|
|
|
|
new_0_6_3_7: 'Bridge socket JSON 출력이 고립된 Unicode surrogate 문자를 정리하여 채팅 SSE 충돌을 방지합니다',
|
2026-05-26 19:35:48 +08:00
|
|
|
new_0_6_2_1: 'Web Bridge가 /plan 명령을 지원하며 run 시작과 명령 상태 표시가 올바르게 동작합니다',
|
|
|
|
|
new_0_6_2_2: '채팅 입력 명령 메뉴에 /goal 및 /subgoal이 추가되어 상태, 일시정지, 재개, 완료, 초기화 작업을 지원합니다',
|
|
|
|
|
new_0_6_2_3: 'Goal 및 subgoal 워크플로가 채팅 세션에 통합되어 목표 이어가기와 상태 업데이트를 지원합니다',
|
|
|
|
|
new_0_6_2_4: '작업 전달 대상 채널 옵션을 복원해 예약 작업이 의도한 대상을 선택할 수 있습니다',
|
|
|
|
|
new_0_6_2_5: '재연결 후 컨텍스트 token 사용량이 snapshot 인식 계산으로 정확하게 복원됩니다',
|
|
|
|
|
new_0_6_2_6: 'Codex 요약이 느릴 때도 컨텍스트 checkpoint 압축이 더 안정적입니다. Web UI는 5분 동안 대기하고 Python bridge broker는 2분 후 worker request를 끊지 않습니다',
|
|
|
|
|
new_0_6_2_7: '채팅 큐 승격을 수정해 동기화된 창을 포함해 queued 메시지가 너무 일찍 메시지 목록에 들어가지 않습니다',
|
|
|
|
|
new_0_6_2_8: 'Clarify 프롬프트는 Enter로 자유 입력 답변을 제출하지 않으며, 답변된 프롬프트는 세션 전환 후 다시 열리지 않습니다',
|
|
|
|
|
new_0_6_2_9: 'Bridge terminal 환경 갱신과 stale pid 정리 범위를 더 정확히 제한해 UI의 오래된 runtime 상태를 줄입니다',
|
|
|
|
|
new_0_6_2_10: '기본 컨텍스트 길이가 Hermes 표준에 맞춰 256,000 tokens로 변경되었습니다',
|
2026-05-20 17:13:32 +08:00
|
|
|
new_0_5_31_1: 'Bridge broker 재시작 안정화, 그룹 채팅 최종 스트림 렌더링 수정, 그룹 채팅 {\'@\'}all 라우팅 추가',
|
|
|
|
|
new_0_5_31_2: '파일 관리자가 절대 경로를 복사할 수 있고 모바일 세션 드로어가 채팅 콘텐츠 뒤로 가지 않음',
|
|
|
|
|
new_0_5_31_3: 'Profile 선택기에 아바타, 사용자 지정 아바타 업로드, 런타임 상태 모달, gateway/Profile 재시작 액션 추가',
|
|
|
|
|
new_0_5_31_4: 'Profile 아바타가 단일 채팅, 그룹 채팅, 접힌 사이드바에 표시되며 Web UI 메타데이터 저장과 Windows 안전 경로 지원',
|
|
|
|
|
new_0_5_31_5: 'Docker, Termux, Windows gateway 감지 및 재시작 확인을 개선하고 managed gateway liveness 판단에 gateway_state/gateway.pid 사용',
|
|
|
|
|
new_0_5_31_6: 'APIKEY.FUN 이미지 생성 미디어 endpoint와 내장 apikey-image-gen skill 추가, active Profile의 fun-codex provider로 텍스트-이미지, 이미지-이미지, 이미지 편집 지원',
|
2026-05-21 14:31:52 +08:00
|
|
|
new_0_5_33_1: '단일 채팅과 그룹 채팅의 실행 실패 및 Socket 오류를 빨간 Agent 메시지로 메시지 목록에 유지하여 잠깐 나타났다 사라지지 않도록 수정',
|
|
|
|
|
new_0_5_33_2: '세션 검색을 선택된 Profile로 제한할 수 있으며, Profile을 선택하지 않으면 모든 Profile을 검색',
|
|
|
|
|
new_0_5_33_3: 'Skills 페이지에 중국어/영어 추천 문서를 추가하고, 선택된 Skill을 다시 클릭하면 선택을 해제하도록 지원',
|
|
|
|
|
new_0_5_33_4: '사용하지 않는 changelog 로컬라이즈 항목을 제거해 frontend i18n 크기 축소',
|
|
|
|
|
new_0_5_33_5: '중국어 Windows 시스템에서 netstat 출력 인코딩 파싱 실패로 agent bridge 시작이 실패하는 문제 수정',
|
|
|
|
|
new_0_5_33_6: 'Nous Portal preset 모델 목록을 공개 catalog와 Portal 추천 모델에 맞춰 갱신',
|
|
|
|
|
new_0_5_33_7: 'Profile 목록과 런타임 상태가 Profile 이름은 디렉터리에서, 기본 모델은 config에서 읽어 CLI 표 열 너비로 인한 파싱 오류를 방지',
|
2026-05-22 11:12:21 +08:00
|
|
|
new_0_5_34_1: '세션/그룹 채팅 저장 시 멀티모달 tool 결과를 정규화해 base64 이미지가 리플레이에 섞이지 않도록 수정',
|
|
|
|
|
new_0_5_34_2: '사용자 지정 Hermes 모델을 backend 관리 설정에 저장하고 모델 추가/삭제 endpoint 추가',
|
|
|
|
|
new_0_5_34_3: 'Bridge 실행 완료 후 최종 컨텍스트 사용량과 tool 상태 업데이트 정확도 개선',
|
|
|
|
|
new_0_5_34_4: 'Kanban 보드 필터링, 담당자 표시, 카드 작업, 작업 상세 처리 개선',
|
|
|
|
|
new_0_5_34_5: '고정 prompt/tool 컨텍스트를 캐시하고 전체 컨텍스트 token 합계를 표시하도록 압축 사용량 수정',
|
|
|
|
|
new_0_5_34_6: '그룹 채팅 Agent별 고정 컨텍스트를 캐시하고 실제 압축이 시작될 때만 진행 상태 표시',
|
|
|
|
|
new_0_5_34_7: 'Web UI 내장 Skills를 모든 Profile에 동기화 주입하고 로그에 대상 Profile 기록',
|
2026-05-22 12:03:43 +08:00
|
|
|
new_0_5_34_8: 'Windows에서 Kanban 기능이 비정상이라면 최신 Kanban 데이터베이스 마이그레이션 수정이 포함된 Hermes로 업그레이드하세요',
|
2026-05-23 10:41:24 +08:00
|
|
|
new_0_5_35_1: 'Bridge 세션은 서로 다른 session 간 동시 실행을 지원하며, 같은 session 실행은 메시지 순서를 보존하도록 직렬화됩니다',
|
|
|
|
|
new_0_5_35_2: 'Performance Monitor 페이지를 추가해 시스템 CPU/메모리, Web UI, Bridge Broker, Workers, 활성 세션 상태를 확인할 수 있습니다',
|
|
|
|
|
new_0_5_35_3: 'Worker별 CPU, 메모리, Profile, 세션 수, 실행 상태를 보여주는 리소스 지표 추가',
|
|
|
|
|
new_0_5_35_4: 'Bridge worker 수명 주기 정리를 개선해 Broker 종료나 부모 프로세스 종료 시 worker를 회수하고 남는 Python 프로세스를 줄입니다',
|
|
|
|
|
new_0_5_35_5: 'macOS, Windows, Linux, Docker, Termux용 fallback으로 모니터링 리소스 수집의 크로스 플랫폼 호환성 강화',
|
|
|
|
|
new_0_5_35_6: 'Agent 초기화 중 worker request로 Performance Monitor가 막히지 않도록 개선해 Windows의 request timed out 가능성을 낮춤',
|
|
|
|
|
new_0_5_35_7: 'Chat Markdown에 텍스트 콘텐츠 인라인 미리보기를 추가하고, 다운로드 아이콘은 preview drawer 대신 파일을 직접 다운로드합니다',
|
|
|
|
|
new_0_5_35_8: '콘텐츠 preview drawer 개선: 모바일 닫기 동작, 모바일 전체 너비, 데스크톱 800px 너비, 텍스트/Markdown 배경 통일',
|
2026-05-24 14:00:31 +08:00
|
|
|
new_0_6_0_1: '계정별 및 Profile별 관리가 세션, 모델, 사용량, Kanban, 작업, 업로드, 미디어, 관련 Hermes API를 일관되게 보호합니다',
|
|
|
|
|
new_0_6_0_2: '내장 미디어 Skills는 생성된 서버 토큰을 미디어 엔드포인트에만 사용하고 요청한 Profile에서 fun-codex/xAI 자격 증명을 확인합니다',
|
|
|
|
|
new_0_6_0_3: '단일 채팅과 그룹 채팅이 현재 Hermes Profile을 run instructions에 주입해 Skills가 X-Hermes-Profile을 보낼 수 있습니다',
|
|
|
|
|
new_0_6_0_4: 'delegate_task subagent 진행 상황이 시작, 도구, 진행, 완료 상태로 채팅 UI에 스트리밍됩니다',
|
|
|
|
|
new_0_6_0_5: '실행 중지 또는 중단 시 임시 이벤트를 정리해 이전 abort 상태가 다음 채팅으로 넘어가지 않게 했습니다',
|
|
|
|
|
new_0_6_0_6: '계정 관리, 기본 자격 증명, 계정/Profile 관리, 업로드/다운로드, 내장 미디어 Skills 문서와 웹사이트 문구를 업데이트했습니다',
|
|
|
|
|
new_0_6_0_7: '로그인 IP 잠금을 지우고 기본 admin / 123456 로그인을 재설정하는 CLI 유지보수 명령을 추가했습니다',
|
|
|
|
|
new_0_6_0_8: '0.6.0은 Web UI의 단일 사용자 버전과 다중 사용자 버전의 경계입니다. 다중 사용자 모드에 문제가 있으면 issue를 제출하고, 필요하면 0.5.35 단일 사용자 버전으로 되돌리세요',
|
2026-05-25 13:06:06 +08:00
|
|
|
new_0_6_1_1: '세션 목록은 기본적으로 계정에서 사용할 수 있는 모든 Profile을 표시하고 명시적 Profile 필터가 있을 때만 제한하며, CLI start/stop/status는 더 이상 node:sqlite 실험 경고를 출력하지 않습니다',
|
|
|
|
|
new_0_6_1_2: 'Clarify 및 확인 응답이 인증된 채팅 socket을 통해 Hermes bridge로 전달되며 응답 경로 테스트가 추가되었습니다',
|
|
|
|
|
new_0_6_1_3: '내비게이션 항목과 채팅 세션 행이 네이티브 링크를 사용해 새 탭 열기, 링크 복사, 접힌 사이드바 상태 유지가 가능합니다',
|
|
|
|
|
new_0_6_1_4: '세션 링크가 route Profile을 일반 세션 목록 필터로 누출하지 않으며 새 탭 열기 라벨이 지역화되었습니다',
|
|
|
|
|
new_0_6_1_5: 'Skills는 활성 Profile config의 skills.external_dirs를 읽고 external source를 표시하며 로컬 우선순위와 외부 skill 파일 해석을 지원합니다',
|
|
|
|
|
new_0_6_1_6: '로그인 IP 잠금 기준이 실패 10회로 올라가고, 잠긴 로그인 화면에 잠금 해제와 기본 로그인 재설정 복구 명령이 표시됩니다',
|
|
|
|
|
new_0_6_1_7: '모바일 또는 백그라운드 채팅 연결 끊김은 일시적인 것으로 처리하고 재연결 후 서버에서 run 상태를 복원합니다',
|
|
|
|
|
new_0_6_1_8: 'Bridge tool marker flush가 tool/run 경계에서 남은 tool-call prefix를 저장해 새로고침 후 내용 잘림을 방지합니다',
|
|
|
|
|
new_0_6_1_9: 'Profile 인식 History 작업은 Profile이 포함된 대상으로 세션을 삭제하고 전역 Profile 변경 시 History를 새로고침합니다',
|
|
|
|
|
new_0_6_1_10: '다중 사용자 권한 모델을 위해 기존 AUTH_DISABLED 우회를 제거했으며 AUTH_TOKEN은 계속 지원됩니다',
|
2026-04-22 20:27:33 +08:00
|
|
|
},
|
2026-04-23 14:10:14 +08:00
|
|
|
|
|
|
|
|
// 파일
|
|
|
|
|
files: {
|
|
|
|
|
title: '파일',
|
|
|
|
|
tree: '디렉터리 트리',
|
|
|
|
|
list: '파일 목록',
|
|
|
|
|
breadcrumbRoot: '홈',
|
|
|
|
|
newFile: '새 파일',
|
|
|
|
|
newFolder: '새 폴더',
|
|
|
|
|
upload: '업로드',
|
|
|
|
|
refresh: '새로고침',
|
|
|
|
|
open: '열기',
|
|
|
|
|
edit: '편집',
|
|
|
|
|
preview: '미리보기',
|
|
|
|
|
download: '다운로드',
|
|
|
|
|
copyPath: '경로 복사',
|
|
|
|
|
rename: '이름 변경',
|
|
|
|
|
delete: '삭제',
|
|
|
|
|
name: '이름',
|
|
|
|
|
size: '크기',
|
|
|
|
|
modified: '수정일',
|
|
|
|
|
actions: '작업',
|
|
|
|
|
emptyDir: '빈 디렉터리',
|
|
|
|
|
loading: '불러오는 중...',
|
|
|
|
|
confirmDelete: '"{name}"을(를) 삭제하시겠습니까?',
|
|
|
|
|
confirmDeleteDir: '디렉터리 "{name}"과 그 내부 항목을 모두 삭제하시겠습니까?',
|
|
|
|
|
deleteFailed: '삭제 실패',
|
|
|
|
|
deleted: '삭제됨',
|
|
|
|
|
renameTo: '새 이름',
|
|
|
|
|
newFileName: '파일 이름',
|
|
|
|
|
newFolderName: '폴더 이름',
|
|
|
|
|
created: '생성됨',
|
|
|
|
|
createFailed: '생성 실패',
|
|
|
|
|
renamed: '이름이 변경됨',
|
|
|
|
|
renameFailed: '이름 변경 실패',
|
|
|
|
|
uploadSuccess: '{count}개 파일이 업로드되었습니다',
|
|
|
|
|
uploadFailed: '업로드 실패',
|
|
|
|
|
saveFailed: '저장 실패',
|
|
|
|
|
saved: '저장됨',
|
|
|
|
|
unsavedChanges: '저장하지 않은 변경 사항이 있습니다. 취소하시겠습니까?',
|
|
|
|
|
pathCopied: '경로가 복사되었습니다',
|
|
|
|
|
fileTooLarge: '파일이 너무 큽니다 (최대 10MB)',
|
|
|
|
|
permissionDenied: '보호된 파일은 수정할 수 없습니다',
|
|
|
|
|
notFound: '파일 또는 디렉터리를 찾을 수 없습니다',
|
|
|
|
|
backendError: '파일 작업 실패',
|
|
|
|
|
dragDropHint: '여기로 파일을 드래그하여 업로드',
|
|
|
|
|
closeEditor: '편집기 닫기',
|
|
|
|
|
closePreview: '닫기',
|
|
|
|
|
saveFile: '저장',
|
2026-05-20 17:13:32 +08:00
|
|
|
fileTree: '파일 트리',
|
2026-04-23 14:10:14 +08:00
|
|
|
},
|
|
|
|
|
|
2026-04-24 20:41:14 +08:00
|
|
|
// 그룹 채팅
|
|
|
|
|
groupChat: {
|
|
|
|
|
title: '그룹 채팅',
|
|
|
|
|
createRoom: '방 만들기',
|
|
|
|
|
joinByCode: '코드로 참여',
|
|
|
|
|
roomName: '방 이름',
|
|
|
|
|
roomNamePlaceholder: '방 이름을 입력하세요',
|
|
|
|
|
inviteCode: '초대 코드',
|
|
|
|
|
autoGenerate: '자동 생성',
|
|
|
|
|
noRooms: '아직 방이 없습니다',
|
|
|
|
|
selectOrCreate: '방을 선택하거나 만들어 채팅을 시작하세요',
|
|
|
|
|
agents: '에이전트',
|
|
|
|
|
addAgent: '에이전트 추가',
|
|
|
|
|
selectProfile: '프로필 선택',
|
|
|
|
|
agentAdded: '에이전트가 추가되었습니다',
|
|
|
|
|
agentAlreadyInRoom: '해당 에이전트가 이미 방에 있습니다',
|
2026-05-21 14:54:41 +08:00
|
|
|
agentAddFailedCount: '{count}개의 에이전트를 추가하지 못했습니다: {details}',
|
2026-04-24 20:41:14 +08:00
|
|
|
noAgents: '이 방에 에이전트가 없습니다',
|
|
|
|
|
members: '멤버',
|
|
|
|
|
roomCreated: '방이 생성되었습니다',
|
|
|
|
|
roomDeleted: '방이 삭제되었습니다',
|
2026-05-15 15:52:16 +08:00
|
|
|
roomCloned: '방이 복제되었습니다',
|
|
|
|
|
cloneRoom: '방 복제',
|
2026-05-24 10:55:55 +08:00
|
|
|
copyRoomLink: '방 링크 복사',
|
2026-04-24 20:41:14 +08:00
|
|
|
deleteRoomConfirm: '이 방을 삭제하시겠습니까?',
|
2026-05-15 15:52:16 +08:00
|
|
|
clearContext: '컨텍스트 지우기',
|
|
|
|
|
clearContextConfirm: '이 방의 컨텍스트를 지우시겠습니까? 메시지와 압축 스냅샷은 삭제되고 에이전트와 멤버는 유지됩니다.',
|
|
|
|
|
contextCleared: '컨텍스트가 지워졌습니다',
|
2026-04-24 20:41:14 +08:00
|
|
|
you: '나',
|
|
|
|
|
joined: '방에 참여했습니다',
|
|
|
|
|
joinFailed: '방 참여에 실패했습니다',
|
|
|
|
|
inputPlaceholder: '메시지를 입력하세요... (Enter로 전송)',
|
|
|
|
|
enterCode: '초대 코드를 입력하세요',
|
|
|
|
|
yourName: '이름',
|
|
|
|
|
yourNamePlaceholder: '표시 이름을 입력하세요',
|
|
|
|
|
yourDescription: '설명 (선택)',
|
|
|
|
|
yourDescriptionPlaceholder: '자신을 소개해 주세요...',
|
|
|
|
|
agentName: '에이전트 이름',
|
|
|
|
|
agentNamePlaceholder: '사용자 지정 이름 (빈칸=프로필 이름)',
|
|
|
|
|
agentDesc: '에이전트 설명',
|
|
|
|
|
agentDescPlaceholder: '이 에이전트가 하는 일을 설명...',
|
|
|
|
|
agentReplying: '이(가) 응답 중...',
|
|
|
|
|
agentCompressing: '이(가) 컨텍스트 압축 중...',
|
|
|
|
|
compressionSettings: '압축 설정',
|
|
|
|
|
triggerTokens: '압축 트리거 토큰',
|
|
|
|
|
triggerTokensDesc: '이 토큰 수를 초과하면 컨텍스트 압축이 시작됩니다',
|
|
|
|
|
maxHistoryTokens: '최대 기록 토큰',
|
|
|
|
|
maxHistoryTokensDesc: '압축된 컨텍스트의 최대 토큰 수',
|
|
|
|
|
tailMessageCount: '최근 메시지 수',
|
|
|
|
|
tailMessageCountDesc: '압축 후 그대로 유지할 최근 메시지 수',
|
|
|
|
|
compressionConfig: '압축 설정',
|
|
|
|
|
compressNow: '지금 압축',
|
|
|
|
|
compressingInProgress: '압축 진행 중',
|
|
|
|
|
compressionSaved: '압축 설정이 저장되었습니다',
|
|
|
|
|
},
|
|
|
|
|
|
2026-04-23 14:10:14 +08:00
|
|
|
// 다운로드
|
|
|
|
|
download: {
|
|
|
|
|
downloading: '다운로드 중...',
|
|
|
|
|
downloadFailed: '다운로드 실패',
|
|
|
|
|
fileNotFound: '파일을 찾을 수 없거나 삭제되었습니다',
|
|
|
|
|
fileTooLarge: '파일이 너무 큽니다 (제한 초과)',
|
|
|
|
|
backendError: '파일 읽기에 실패했습니다. 원격 환경이 사용 불가능할 수 있습니다',
|
|
|
|
|
backendTimeout: '파일 읽기 시간 초과',
|
|
|
|
|
unsupportedBackend: '현재 터미널 백엔드는 파일 다운로드를 지원하지 않습니다',
|
|
|
|
|
invalidPath: '잘못된 파일 경로',
|
2026-05-22 19:04:15 +08:00
|
|
|
contentDisplay: '내용 표시',
|
2026-04-23 14:10:14 +08:00
|
|
|
download: '다운로드',
|
2026-04-24 02:31:42 +02:00
|
|
|
downloadFile: '파일 다운로드',
|
2026-04-23 14:10:14 +08:00
|
|
|
},
|
2026-05-20 17:13:32 +08:00
|
|
|
gateways: {
|
|
|
|
|
title: '게이트웨이',
|
|
|
|
|
running: '실행 중',
|
|
|
|
|
stopped: '중지됨',
|
|
|
|
|
started: '시작됨',
|
|
|
|
|
startFailed: 'Gateway 시작 실패',
|
|
|
|
|
stopFailed: 'Gateway 중지 실패',
|
|
|
|
|
},
|
|
|
|
|
kanban: {
|
|
|
|
|
title: 'Kanban 보드',
|
|
|
|
|
createTask: '새 작업',
|
|
|
|
|
noTasks: '작업 없음',
|
|
|
|
|
allStatuses: '모든 상태',
|
|
|
|
|
allAssignees: '모든 담당자',
|
|
|
|
|
columns: {
|
|
|
|
|
triage: '분류 대기',
|
|
|
|
|
todo: '할 일',
|
|
|
|
|
ready: '준비됨',
|
|
|
|
|
running: '진행 중',
|
|
|
|
|
blocked: '차단됨',
|
|
|
|
|
done: '완료됨',
|
|
|
|
|
archived: '보관됨',
|
|
|
|
|
},
|
|
|
|
|
card: {
|
|
|
|
|
assigneeTooltip: '담당자',
|
|
|
|
|
priority: {
|
|
|
|
|
low: '낮음',
|
|
|
|
|
medium: '보통',
|
|
|
|
|
high: '높음',
|
|
|
|
|
},
|
|
|
|
|
timeAgo: {
|
|
|
|
|
justNow: '방금',
|
|
|
|
|
minutes: '{count}분 전',
|
|
|
|
|
hours: '{count}시간 전',
|
|
|
|
|
days: '{count}일 전',
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
board: {
|
|
|
|
|
create: '새 보드',
|
|
|
|
|
archive: '보드 보관',
|
|
|
|
|
archiveConfirm: '현재 보드를 보관하시겠습니까?',
|
|
|
|
|
archived: '보드가 보관되었습니다',
|
|
|
|
|
created: '보드가 생성되었습니다',
|
|
|
|
|
slugPlaceholder: '보드 식별자, 예: project-a',
|
|
|
|
|
namePlaceholder: '표시 이름 (선택)',
|
|
|
|
|
slugRequired: '보드 식별자는 필수입니다',
|
|
|
|
|
},
|
|
|
|
|
form: {
|
|
|
|
|
title: '제목',
|
|
|
|
|
titlePlaceholder: '작업 제목',
|
|
|
|
|
titleRequired: '제목은 필수입니다',
|
|
|
|
|
body: '설명',
|
|
|
|
|
bodyPlaceholder: '작업 설명 (선택)',
|
|
|
|
|
assignee: '담당자',
|
|
|
|
|
selectAssignee: '담당자 선택...',
|
|
|
|
|
priority: '우선순위',
|
|
|
|
|
selectPriority: '우선순위 선택...',
|
|
|
|
|
},
|
|
|
|
|
detail: {
|
|
|
|
|
status: '상태',
|
|
|
|
|
priority: '우선순위',
|
|
|
|
|
assignee: '담당자',
|
|
|
|
|
tenant: '테넌트',
|
|
|
|
|
createdAt: '생성 시간',
|
|
|
|
|
startedAt: '시작 시간',
|
|
|
|
|
completedAt: '완료 시간',
|
|
|
|
|
comments: '댓글',
|
|
|
|
|
events: '이벤트',
|
|
|
|
|
runs: '실행 기록',
|
|
|
|
|
artifacts: '산출 파일',
|
|
|
|
|
result: '완료 결과',
|
|
|
|
|
highlights: '핵심 정보',
|
|
|
|
|
sources: '데이터 소스',
|
|
|
|
|
sessions: '관련 세션',
|
|
|
|
|
sessionMessages: '세션 기록',
|
|
|
|
|
noSessions: '관련 세션을 찾을 수 없습니다.',
|
|
|
|
|
},
|
|
|
|
|
action: {
|
|
|
|
|
title: '작업',
|
|
|
|
|
assign: '할당',
|
|
|
|
|
assignTo: '할당 대상...',
|
|
|
|
|
block: '차단',
|
|
|
|
|
blockReason: '차단 이유',
|
|
|
|
|
unblock: '차단 해제',
|
|
|
|
|
complete: '완료',
|
|
|
|
|
completeSummary: '완료 요약 (선택)',
|
|
|
|
|
},
|
|
|
|
|
message: {
|
|
|
|
|
loadFailed: '작업 로드 실패',
|
|
|
|
|
taskCreated: '작업이 생성되었습니다',
|
|
|
|
|
taskAssigned: '작업이 할당되었습니다',
|
|
|
|
|
taskBlocked: '작업이 차단되었습니다',
|
|
|
|
|
taskUnblocked: '작업 차단이 해제되었습니다',
|
|
|
|
|
taskCompleted: '작업이 완료되었습니다',
|
|
|
|
|
},
|
|
|
|
|
stats: {
|
|
|
|
|
total: '합계',
|
|
|
|
|
tasks: '작업 수',
|
|
|
|
|
},
|
|
|
|
|
},
|
2026-04-17 09:09:50 +08:00
|
|
|
}
|