mirror of
https://github.com/tiennm99/goclaw.git
synced 2026-10-15 08:17:09 +00:00
feat(i18n): 한국어(ko) 로컬라이제이션 추가 (#1081)
- 백엔드: LocaleKO 상수, IsSupported에 ko 추가, catalog_ko.go 185개 문자열 - 웹 UI: 38개 네임스페이스 JSON 파일 (locales/ko/) - constants.ts SUPPORTED_LANGUAGES에 ko 추가 - index.ts에 ko 리소스 등록 및 getInitialLanguage에 ko 감지 - en/topbar.json languages에 한국어 옵션 추가 - webui handler: index.html에 no-cache 헤더 추가하여 배포 후 캐시 문제 방지
This commit is contained in:
1 parent
ce4535f305
commit
e6ab6838cb
44 files changed
+5599
-4
No files matched your search
@@ -0,0 +1,187 @@
|
||||
package i18n
|
||||
|
||||
func init() {
|
||||
register(LocaleKO, map[string]string{
|
||||
// Common validation
|
||||
MsgRequired: "%s은(는) 필수입니다",
|
||||
MsgInvalidID: "잘못된 %s ID",
|
||||
MsgNotFound: "%s을(를) 찾을 수 없습니다: %s",
|
||||
MsgAlreadyExists: "%s이(가) 이미 존재합니다: %s",
|
||||
MsgInvalidRequest: "잘못된 요청: %s",
|
||||
MsgInvalidJSON: "잘못된 JSON",
|
||||
MsgUnauthorized: "인증되지 않음",
|
||||
MsgPermissionDenied: "권한이 거부되었습니다: %s",
|
||||
MsgInternalError: "내부 오류: %s",
|
||||
MsgInvalidSlug: "%s은(는) 유효한 슬러그여야 합니다 (소문자, 숫자, 하이픈만 허용)",
|
||||
MsgFailedToList: "%s 목록을 가져오지 못했습니다",
|
||||
MsgFailedToCreate: "%s 생성에 실패했습니다: %s",
|
||||
MsgFailedToUpdate: "%s 업데이트에 실패했습니다: %s",
|
||||
MsgFailedToDelete: "%s 삭제에 실패했습니다: %s",
|
||||
MsgFailedToSave: "%s 저장에 실패했습니다: %s",
|
||||
MsgInvalidUpdates: "잘못된 업데이트",
|
||||
|
||||
// Agent
|
||||
MsgAgentNotFound: "에이전트를 찾을 수 없습니다: %s",
|
||||
MsgCannotDeleteDefault: "기본 에이전트는 삭제할 수 없습니다",
|
||||
MsgUserCtxRequired: "사용자 컨텍스트가 필요합니다",
|
||||
|
||||
// Chat
|
||||
MsgRateLimitExceeded: "요청 한도 초과 — 잠시 후 다시 시도해주세요",
|
||||
MsgNoUserMessage: "사용자 메시지를 찾을 수 없습니다",
|
||||
MsgUserIDRequired: "user_id가 필요합니다",
|
||||
MsgMsgRequired: "메시지가 필요합니다",
|
||||
|
||||
// Channel instances
|
||||
MsgInvalidChannelType: "잘못된 channel_type",
|
||||
MsgInstanceNotFound: "인스턴스를 찾을 수 없습니다",
|
||||
|
||||
// Cron
|
||||
MsgJobNotFound: "작업을 찾을 수 없습니다",
|
||||
MsgInvalidCronExpr: "잘못된 크론 표현식: %s",
|
||||
|
||||
// Config
|
||||
MsgConfigHashMismatch: "설정이 변경되었습니다 (해시 불일치)",
|
||||
|
||||
// Exec approval
|
||||
MsgExecApprovalDisabled: "실행 승인이 활성화되지 않았습니다",
|
||||
|
||||
// Pairing
|
||||
MsgSenderChannelRequired: "senderId와 channel이 필요합니다",
|
||||
MsgCodeRequired: "코드가 필요합니다",
|
||||
MsgSenderIDRequired: "sender_id가 필요합니다",
|
||||
|
||||
// HTTP API
|
||||
MsgInvalidAuth: "잘못된 인증",
|
||||
MsgMsgsRequired: "messages가 필요합니다",
|
||||
MsgUserIDHeader: "X-GoClaw-User-Id 헤더가 필요합니다",
|
||||
MsgFileTooLarge: "파일이 너무 크거나 잘못된 멀티파트 양식입니다",
|
||||
MsgMissingFileField: "'file' 필드가 누락되었습니다",
|
||||
MsgInvalidFilename: "잘못된 파일명",
|
||||
MsgChannelKeyReq: "channel과 key가 필요합니다",
|
||||
MsgMethodNotAllowed: "허용되지 않는 메서드",
|
||||
MsgStreamingNotSupported: "스트리밍이 지원되지 않습니다",
|
||||
MsgOwnerOnly: "소유자만 %s할 수 있습니다",
|
||||
MsgNoAccess: "이 %s에 대한 접근 권한이 없습니다",
|
||||
MsgAlreadySummoning: "에이전트가 이미 소환 중입니다",
|
||||
MsgSummoningUnavailable: "소환을 사용할 수 없습니다",
|
||||
MsgNoDescription: "에이전트에 재소환할 설명이 없습니다",
|
||||
MsgInvalidPath: "잘못된 경로",
|
||||
|
||||
// Scheduler
|
||||
MsgQueueFull: "세션 대기열이 가득 찼습니다",
|
||||
MsgShuttingDown: "게이트웨이가 종료 중입니다. 잠시 후 다시 시도해주세요",
|
||||
|
||||
// Provider
|
||||
MsgProviderReqFailed: "%s: 요청에 실패했습니다: %s",
|
||||
|
||||
// Unknown method
|
||||
MsgUnknownMethod: "알 수 없는 메서드: %s",
|
||||
|
||||
// Not implemented
|
||||
MsgNotImplemented: "%s은(는) 아직 구현되지 않았습니다",
|
||||
|
||||
// Agent links
|
||||
MsgLinksNotConfigured: "에이전트 링크가 설정되지 않았습니다",
|
||||
MsgInvalidDirection: "방향은 outbound, inbound, 또는 bidirectional이어야 합니다",
|
||||
MsgSourceTargetSame: "소스와 대상은 서로 다른 에이전트여야 합니다",
|
||||
MsgCannotDelegateOpen: "오픈 에이전트에게는 위임할 수 없습니다 — 사전 정의된 에이전트만 위임 대상이 될 수 있습니다",
|
||||
MsgNoUpdatesProvided: "업데이트가 제공되지 않았습니다",
|
||||
MsgInvalidLinkStatus: "상태는 active 또는 disabled여야 합니다",
|
||||
|
||||
// Teams
|
||||
MsgTeamsNotConfigured: "팀이 설정되지 않았습니다",
|
||||
MsgAgentIsTeamLead: "에이전트가 이미 팀 리더입니다",
|
||||
MsgCannotRemoveTeamLead: "팀 리더는 제거할 수 없습니다",
|
||||
|
||||
// Channels
|
||||
MsgCannotDeleteDefaultInst: "기본 채널 인스턴스는 삭제할 수 없습니다",
|
||||
MsgCannotRemoveLastWriter: "마지막 파일 작성자는 제거할 수 없습니다",
|
||||
|
||||
// Skills
|
||||
MsgSkillsUpdateNotSupported: "파일 기반 스킬에는 skills.update가 지원되지 않습니다",
|
||||
MsgCannotResolveSkillID: "파일 기반 스킬의 스킬 ID를 확인할 수 없습니다",
|
||||
|
||||
// Logs
|
||||
MsgInvalidLogAction: "action은 'start' 또는 'stop'이어야 합니다",
|
||||
|
||||
// Config
|
||||
MsgRawConfigRequired: "원시 설정이 필요합니다",
|
||||
MsgRawPatchRequired: "원시 패치가 필요합니다",
|
||||
MsgConfigMasterScopeOnly: "config.* 메서드는 마스터 범위 전용입니다. 테넌트별 재정의는 테넌트 도구 설정 엔드포인트를 사용하세요",
|
||||
|
||||
// Storage / File
|
||||
MsgCannotDeleteSkillsDir: "스킬 디렉토리는 삭제할 수 없습니다",
|
||||
MsgFailedToReadFile: "파일 읽기에 실패했습니다",
|
||||
MsgFileNotFound: "파일을 찾을 수 없습니다",
|
||||
MsgInvalidVersion: "잘못된 버전",
|
||||
MsgVersionNotFound: "버전을 찾을 수 없습니다",
|
||||
MsgFailedToDeleteFile: "삭제에 실패했습니다",
|
||||
|
||||
// OAuth
|
||||
MsgNoPendingOAuth: "진행 중인 OAuth 흐름이 없습니다",
|
||||
MsgFailedToSaveToken: "토큰 저장에 실패했습니다",
|
||||
|
||||
// Intent Classify
|
||||
MsgStatusWorking: "🔄 요청을 처리 중입니다... 잠시 기다려주세요.",
|
||||
MsgStatusDetailed: "🔄 현재 요청을 처리 중입니다...\n%s (반복 %d)\n실행 시간: %s\n\n잠시 기다려주세요 — 완료되면 응답하겠습니다.",
|
||||
MsgStatusPhaseThinking: "단계: 생각 중...",
|
||||
MsgStatusPhaseToolExec: "단계: %s 실행 중",
|
||||
MsgStatusPhaseTools: "단계: 도구 실행 중...",
|
||||
MsgStatusPhaseCompact: "단계: 컨텍스트 압축 중...",
|
||||
MsgStatusPhaseDefault: "단계: 처리 중...",
|
||||
MsgCancelledReply: "✋ 취소되었습니다. 다음에 무엇을 하시겠습니까?",
|
||||
MsgInjectedAck: "알겠습니다. 작업 중인 내용에 반영하겠습니다.",
|
||||
|
||||
// Knowledge Graph
|
||||
MsgEntityIDRequired: "entity_id가 필요합니다",
|
||||
MsgEntityFieldsRequired: "external_id, name, entity_type이 필요합니다",
|
||||
MsgTextRequired: "텍스트가 필요합니다",
|
||||
MsgProviderModelRequired: "provider와 model이 필요합니다",
|
||||
MsgInvalidProviderOrModel: "잘못된 provider 또는 model",
|
||||
|
||||
// Builtin tool descriptions
|
||||
MsgToolReadFile: "경로를 기준으로 에이전트 워크스페이스에서 파일 내용을 읽습니다",
|
||||
MsgToolWriteFile: "필요한 디렉토리를 생성하면서 워크스페이스의 파일에 내용을 씁니다",
|
||||
MsgToolListFiles: "워크스페이스 내 지정된 경로의 파일과 디렉토리를 나열합니다",
|
||||
MsgToolEdit: "전체 파일을 다시 쓰지 않고 기존 파일에 타겟 검색-교체 편집을 적용합니다",
|
||||
MsgToolExec: "워크스페이스에서 셸 명령을 실행하고 stdout/stderr를 반환합니다",
|
||||
MsgToolWebSearch: "검색 엔진(Brave 또는 DuckDuckGo)을 사용하여 웹에서 정보를 검색합니다",
|
||||
MsgToolWebFetch: "웹 페이지 또는 API 엔드포인트를 가져와 텍스트 내용을 추출합니다",
|
||||
MsgToolMemorySearch: "의미론적 유사성을 사용하여 에이전트의 장기 기억을 검색합니다",
|
||||
MsgToolMemoryGet: "파일 경로로 특정 기억 문서를 검색합니다",
|
||||
MsgToolKGSearch: "에이전트의 지식 그래프에서 엔티티, 관계, 관찰을 검색합니다",
|
||||
MsgToolReadImage: "비전 지원 LLM 제공자를 사용하여 이미지를 분석합니다",
|
||||
MsgToolReadDocument: "문서 지원 LLM 제공자를 사용하여 문서(PDF, Word, Excel, PowerPoint, CSV 등)를 분석합니다",
|
||||
MsgToolCreateImage: "이미지 생성 제공자를 사용하여 텍스트 프롬프트에서 이미지를 생성합니다",
|
||||
MsgToolReadAudio: "오디오 지원 LLM 제공자를 사용하여 오디오 파일(음성, 음악, 소리)을 분석합니다",
|
||||
MsgToolReadVideo: "비디오 지원 LLM 제공자를 사용하여 비디오 파일을 분석합니다",
|
||||
MsgToolCreateVideo: "AI를 사용하여 텍스트 설명에서 비디오를 생성합니다",
|
||||
MsgToolCreateAudio: "AI를 사용하여 텍스트 설명에서 음악이나 음향 효과를 생성합니다",
|
||||
MsgToolTTS: "텍스트를 자연스러운 음성 오디오로 변환합니다",
|
||||
MsgToolBrowser: "브라우저 상호작용 자동화: 페이지 탐색, 요소 클릭, 폼 작성, 스크린샷 촬영",
|
||||
MsgToolSessionsList: "모든 채널의 활성 채팅 세션을 나열합니다",
|
||||
MsgToolSessionStatus: "특정 채팅 세션의 현재 상태와 메타데이터를 가져옵니다",
|
||||
MsgToolSessionsHistory: "특정 채팅 세션의 메시지 기록을 검색합니다",
|
||||
MsgToolSessionsSend: "에이전트를 대신하여 활성 채팅 세션에 메시지를 보냅니다",
|
||||
MsgToolMessage: "연결된 채널(Telegram, Discord 등)에서 사용자에게 능동적으로 메시지를 보냅니다",
|
||||
MsgToolCron: "크론 표현식, 특정 시간 또는 간격을 사용하여 반복 작업을 예약하거나 관리합니다",
|
||||
MsgToolSpawn: "백그라운드 작업을 위해 하위 에이전트를 생성하거나 연결된 에이전트에 작업을 위임합니다",
|
||||
MsgToolSkillSearch: "키워드나 설명으로 사용 가능한 스킬을 검색하여 관련 기능을 찾습니다",
|
||||
MsgToolUseSkill: "전문화된 기능을 사용하기 위해 스킬을 활성화합니다 (추적 마커)",
|
||||
MsgToolSkillManage: "대화 경험에서 스킬을 생성, 수정 또는 삭제합니다",
|
||||
MsgToolPublishSkill: "스킬 디렉토리를 시스템 데이터베이스에 등록하여 검색 가능하게 만듭니다",
|
||||
MsgToolTeamTasks: "팀 작업 보드에서 작업을 보고, 생성하고, 업데이트하고, 완료합니다",
|
||||
|
||||
MsgSkillNudgePostscript: "이 작업은 여러 단계를 포함했습니다. 이 과정을 재사용 가능한 스킬로 저장할까요? **\"스킬로 저장\"** 또는 **\"건너뛰기\"**로 답장하세요.",
|
||||
MsgSkillNudge70Pct: "[System] 반복 예산의 70%에 도달했습니다. 이 세션의 패턴 중 좋은 스킬이 될 수 있는 것이 있는지 고려해보세요.",
|
||||
MsgSkillNudge90Pct: "[System] 반복 예산의 90%에 도달했습니다. 이 세션에 재사용 가능한 패턴이 포함되어 있다면 완료하기 전에 스킬로 저장하는 것을 고려해보세요.",
|
||||
|
||||
MsgInvalidRole: "잘못된 역할: 허용되는 값은 owner, admin, operator, member, viewer입니다",
|
||||
|
||||
MsgContactIDsRequired: "contact_ids가 필요합니다",
|
||||
MsgMergeTargetRequired: "tenant_user_id 또는 create_user 중 정확히 하나가 필요합니다",
|
||||
MsgTenantUserNotFound: "테넌트 사용자를 찾을 수 없습니다",
|
||||
MsgTenantMismatch: "테넌트 사용자가 이 테넌트에 속하지 않습니다",
|
||||
MsgTenantScopeRequired: "이 작업에는 테넌트 범위가 필요합니다",
|
||||
})
|
||||
}
|
||||
@@ -11,6 +11,7 @@ const (
|
||||
LocaleEN = "en"
|
||||
LocaleVI = "vi"
|
||||
LocaleZH = "zh"
|
||||
LocaleKO = "ko"
|
||||
|
||||
DefaultLocale = LocaleEN
|
||||
)
|
||||
@@ -58,7 +59,7 @@ func lookup(locale, key string) string {
|
||||
// IsSupported returns true if the locale is a known language.
|
||||
func IsSupported(locale string) bool {
|
||||
switch locale {
|
||||
case LocaleEN, LocaleVI, LocaleZH:
|
||||
case LocaleEN, LocaleVI, LocaleZH, LocaleKO:
|
||||
return true
|
||||
}
|
||||
return false
|
||||
|
||||
@@ -46,6 +46,10 @@ func (h *spaHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
// Static assets: set long cache for /assets/* (Vite hashed filenames).
|
||||
if strings.HasPrefix(r.URL.Path, "/assets/") {
|
||||
w.Header().Set("Cache-Control", "public, max-age=31536000, immutable")
|
||||
} else {
|
||||
// index.html and other root files must never be cached so the
|
||||
// browser always gets the latest asset manifest after a deploy.
|
||||
w.Header().Set("Cache-Control", "no-cache, no-store, must-revalidate")
|
||||
}
|
||||
h.fileServer.ServeHTTP(w, r)
|
||||
return
|
||||
|
||||
@@ -87,6 +87,46 @@ import viHooks from "./locales/vi/hooks.json";
|
||||
import viWebhooks from "./locales/vi/webhooks.json";
|
||||
import viWorkstations from "./locales/vi/workstations.json";
|
||||
|
||||
// --- KO namespaces ---
|
||||
import koCommon from "./locales/ko/common.json";
|
||||
import koSidebar from "./locales/ko/sidebar.json";
|
||||
import koTopbar from "./locales/ko/topbar.json";
|
||||
import koLogin from "./locales/ko/login.json";
|
||||
import koOverview from "./locales/ko/overview.json";
|
||||
import koChat from "./locales/ko/chat.json";
|
||||
import koAgents from "./locales/ko/agents.json";
|
||||
import koTeams from "./locales/ko/teams.json";
|
||||
import koSessions from "./locales/ko/sessions.json";
|
||||
import koSkills from "./locales/ko/skills.json";
|
||||
import koCron from "./locales/ko/cron.json";
|
||||
import koConfig from "./locales/ko/config.json";
|
||||
import koChannels from "./locales/ko/channels.json";
|
||||
import koProviders from "./locales/ko/providers.json";
|
||||
import koTraces from "./locales/ko/traces.json";
|
||||
import koEvents from "./locales/ko/events.json";
|
||||
import koUsage from "./locales/ko/usage.json";
|
||||
import koApprovals from "./locales/ko/approvals.json";
|
||||
import koNodes from "./locales/ko/nodes.json";
|
||||
import koLogs from "./locales/ko/logs.json";
|
||||
import koTools from "./locales/ko/tools.json";
|
||||
import koMcp from "./locales/ko/mcp.json";
|
||||
import koTts from "./locales/ko/tts.json";
|
||||
import koSetup from "./locales/ko/setup.json";
|
||||
import koMemory from "./locales/ko/memory.json";
|
||||
import koVault from "./locales/ko/vault.json";
|
||||
import koStorage from "./locales/ko/storage.json";
|
||||
import koPendingMessages from "./locales/ko/pending-messages.json";
|
||||
import koContacts from "./locales/ko/contacts.json";
|
||||
import koActivity from "./locales/ko/activity.json";
|
||||
import koApiKeys from "./locales/ko/api-keys.json";
|
||||
import koCliCredentials from "./locales/ko/cli-credentials.json";
|
||||
import koPackages from "./locales/ko/packages.json";
|
||||
import koTenants from "./locales/ko/tenants.json";
|
||||
import koSystemSettings from "./locales/ko/system-settings.json";
|
||||
import koImportExport from "./locales/ko/import-export.json";
|
||||
import koV3Capabilities from "./locales/ko/v3-capabilities.json";
|
||||
import koBackup from "./locales/ko/backup.json";
|
||||
|
||||
// --- ZH namespaces ---
|
||||
import zhCommon from "./locales/zh/common.json";
|
||||
import zhSidebar from "./locales/zh/sidebar.json";
|
||||
@@ -134,10 +174,11 @@ const STORAGE_KEY = "goclaw:language";
|
||||
|
||||
function getInitialLanguage(): string {
|
||||
const stored = localStorage.getItem(STORAGE_KEY);
|
||||
if (stored === "en" || stored === "vi" || stored === "zh") return stored;
|
||||
if (stored === "en" || stored === "vi" || stored === "zh" || stored === "ko") return stored;
|
||||
const lang = navigator.language.toLowerCase();
|
||||
if (lang.startsWith("vi")) return "vi";
|
||||
if (lang.startsWith("zh")) return "zh";
|
||||
if (lang.startsWith("ko")) return "ko";
|
||||
return "en";
|
||||
}
|
||||
|
||||
@@ -220,6 +261,24 @@ i18n.use(initReactI18next).init({
|
||||
webhooks: zhWebhooks,
|
||||
workstations: zhWorkstations,
|
||||
},
|
||||
ko: {
|
||||
common: koCommon, sidebar: koSidebar, topbar: koTopbar, login: koLogin,
|
||||
overview: koOverview, chat: koChat, agents: koAgents, teams: koTeams,
|
||||
sessions: koSessions, skills: koSkills, cron: koCron, config: koConfig,
|
||||
channels: koChannels, providers: koProviders, traces: koTraces,
|
||||
events: koEvents, usage: koUsage,
|
||||
approvals: koApprovals, nodes: koNodes, logs: koLogs, tools: koTools,
|
||||
mcp: koMcp, tts: koTts, setup: koSetup, memory: koMemory, vault: koVault, storage: koStorage,
|
||||
"pending-messages": koPendingMessages,
|
||||
contacts: koContacts, activity: koActivity, "api-keys": koApiKeys,
|
||||
"cli-credentials": koCliCredentials,
|
||||
packages: koPackages,
|
||||
tenants: koTenants,
|
||||
"system-settings": koSystemSettings,
|
||||
"import-export": koImportExport,
|
||||
"v3-capabilities": koV3Capabilities,
|
||||
backup: koBackup,
|
||||
},
|
||||
},
|
||||
ns: [...ns],
|
||||
defaultNS: "common",
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
"languages": {
|
||||
"en": "English",
|
||||
"vi": "Tiếng Việt",
|
||||
"zh": "中文"
|
||||
"zh": "中文",
|
||||
"ko": "한국어"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"title": "활동 로그",
|
||||
"description": "관리자 및 설정 변경의 감사 추적.",
|
||||
"filters": {
|
||||
"action": "작업",
|
||||
"allActions": "모든 작업",
|
||||
"agentCreated": "에이전트 생성됨",
|
||||
"agentUpdated": "에이전트 업데이트됨",
|
||||
"agentDeleted": "에이전트 삭제됨",
|
||||
"entityType": "엔티티 유형",
|
||||
"allEntities": "모든 엔티티",
|
||||
"agent": "에이전트"
|
||||
},
|
||||
"table": {
|
||||
"action": "작업",
|
||||
"actor": "실행자",
|
||||
"entity": "엔티티",
|
||||
"entityId": "엔티티 ID",
|
||||
"ip": "IP 주소",
|
||||
"time": "시간"
|
||||
},
|
||||
"empty": {
|
||||
"title": "활동 로그 없음",
|
||||
"description": "관리자 작업이 수행되면 여기에 활동 로그가 나타납니다."
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,87 @@
|
||||
{
|
||||
"title": "API 키",
|
||||
"description": "세밀한 권한이 있는 게이트웨이 API 키 관리.",
|
||||
"addKey": "API 키 만들기",
|
||||
"searchPlaceholder": "키 검색...",
|
||||
"emptyTitle": "API 키 없음",
|
||||
"emptyDescription": "게이트웨이 인증을 위한 첫 번째 API 키를 만드세요.",
|
||||
"columns": {
|
||||
"name": "이름",
|
||||
"prefix": "키",
|
||||
"scopes": "범위",
|
||||
"lastUsed": "마지막 사용",
|
||||
"created": "생성됨",
|
||||
"status": "상태",
|
||||
"actions": "작업"
|
||||
},
|
||||
"status": {
|
||||
"active": "활성",
|
||||
"revoked": "취소됨",
|
||||
"expired": "만료됨"
|
||||
},
|
||||
"form": {
|
||||
"title": "API 키 만들기",
|
||||
"name": "이름",
|
||||
"namePlaceholder": "예: ci-deploy, dashboard-readonly",
|
||||
"scopes": "범위",
|
||||
"scopeDescriptions": {
|
||||
"operator.admin": "전체 관리자 접근",
|
||||
"operator.read": "읽기 전용 접근",
|
||||
"operator.write": "읽기 + 쓰기 접근",
|
||||
"operator.approvals": "실행 승인 관리",
|
||||
"operator.pairing": "기기 페어링 관리",
|
||||
"operator.provision": "새 테넌트 프로비전"
|
||||
},
|
||||
"tenant": "테넌트",
|
||||
"tenantSystem": "시스템 (모든 테넌트)",
|
||||
"expiry": "만료",
|
||||
"expiryOptions": {
|
||||
"never": "만료 없음",
|
||||
"7d": "7일",
|
||||
"30d": "30일",
|
||||
"90d": "90일"
|
||||
},
|
||||
"cancel": "취소",
|
||||
"create": "만들기",
|
||||
"creating": "만드는 중..."
|
||||
},
|
||||
"created": {
|
||||
"title": "API 키 생성됨",
|
||||
"description": "지금 이 키를 복사하세요 — 다시 표시되지 않습니다.",
|
||||
"copied": "복사됨!",
|
||||
"copy": "클립보드에 복사",
|
||||
"done": "완료"
|
||||
},
|
||||
"revoke": {
|
||||
"title": "API 키 취소",
|
||||
"description": "\"{{name}}\"을/를 취소하시겠습니까? 이 작업은 취소할 수 없습니다.",
|
||||
"confirmLabel": "취소"
|
||||
},
|
||||
"toast": {
|
||||
"created": "API 키 생성됨",
|
||||
"revoked": "API 키 취소됨",
|
||||
"failedCreate": "API 키 생성 실패",
|
||||
"failedRevoke": "API 키 취소 실패"
|
||||
},
|
||||
"never": "없음",
|
||||
"neverUsed": "사용된 적 없음",
|
||||
"tenantBadgeSystem": "시스템",
|
||||
"tenantBadgeUnknown": "알 수 없음",
|
||||
"columns.expiry": "만료",
|
||||
"codeDialog": {
|
||||
"title": "API 키 사용법",
|
||||
"description": "게이트웨이 HTTP API 인증에 이 API 키를 사용하세요.",
|
||||
"copy": "복사",
|
||||
"copied": "복사됨!",
|
||||
"tabs": {
|
||||
"curl": "cURL",
|
||||
"typescript": "TypeScript",
|
||||
"go": "Go"
|
||||
},
|
||||
"comments": {
|
||||
"chat": "에이전트와 채팅 (OpenAI 호환)",
|
||||
"listAgents": "에이전트 목록",
|
||||
"listSessions": "세션 목록"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"title": "승인",
|
||||
"description": "대기 중인 실행 승인",
|
||||
"pending": "{{count}}개 대기 중",
|
||||
"emptyTitle": "대기 중인 승인 없음",
|
||||
"emptyDescription": "모든 실행 요청이 처리되었습니다. 새 요청은 실시간으로 여기에 나타납니다.",
|
||||
"allowOnce": "한 번 허용",
|
||||
"allowAlways": "항상 허용",
|
||||
"deny": "거부",
|
||||
"confirmAllowOnce": {
|
||||
"title": "한 번 허용",
|
||||
"description": "에이전트 \"{{agentId}}\"에서 \"{{command}}\" 실행을 허용하시겠습니까?"
|
||||
},
|
||||
"confirmAllowAlways": {
|
||||
"title": "항상 허용",
|
||||
"description": "에이전트 \"{{agentId}}\"에 \"{{command}}\"을/를 영구적으로 허용하시겠습니까? 이 명령은 앞으로 자동으로 승인됩니다."
|
||||
},
|
||||
"confirmDeny": {
|
||||
"title": "실행 거부",
|
||||
"description": "에이전트 \"{{agentId}}\"에서 요청한 \"{{command}}\" 실행을 거부하시겠습니까?",
|
||||
"confirmLabel": "거부"
|
||||
},
|
||||
"toast": {
|
||||
"approved": "승인됨",
|
||||
"approvedAlways": "명령이 항상 허용됨",
|
||||
"approvedOnce": "명령이 승인됨",
|
||||
"approveFailed": "승인 실패",
|
||||
"denied": "거부됨",
|
||||
"deniedDesc": "명령이 거부됨",
|
||||
"denyFailed": "거부 실패",
|
||||
"unknownError": "알 수 없는 오류"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,126 @@
|
||||
{
|
||||
"title": "백업 & 복원",
|
||||
"description": "시스템 백업 생성, 아카이브에서 복원, S3 스토리지 관리",
|
||||
"tabs": {
|
||||
"systemBackup": "시스템 백업",
|
||||
"systemRestore": "시스템 복원",
|
||||
"s3Config": "S3 스토리지",
|
||||
"tenantBackup": "테넌트 백업"
|
||||
},
|
||||
"backup": {
|
||||
"preflight": {
|
||||
"title": "시스템 확인",
|
||||
"pgDump": "pg_dump 사용 가능",
|
||||
"diskSpace": "충분한 디스크 공간",
|
||||
"dbSize": "데이터베이스 크기",
|
||||
"dataDir": "데이터 디렉터리",
|
||||
"workspace": "워크스페이스",
|
||||
"freeDisk": "여유 디스크 공간",
|
||||
"warnings": "경고",
|
||||
"refresh": "새로 고침",
|
||||
"pgDumpMissing": "pg_dump를 사용할 수 없거나 호환되지 않음",
|
||||
"goToPackages": "패키지로 이동"
|
||||
},
|
||||
"options": {
|
||||
"includeDb": "데이터베이스 포함",
|
||||
"includeFiles": "파일 포함",
|
||||
"destination": "백업 대상",
|
||||
"local": "로컬로 다운로드",
|
||||
"s3": "S3에 업로드"
|
||||
},
|
||||
"start": "백업 시작",
|
||||
"running": "백업 중...",
|
||||
"complete": "백업 완료",
|
||||
"download": "백업 다운로드",
|
||||
"uploadS3": "S3에 업로드",
|
||||
"newBackup": "새 백업",
|
||||
"fileSize": "파일 크기",
|
||||
"schemaVersion": "스키마 버전",
|
||||
"s3History": {
|
||||
"title": "S3 백업",
|
||||
"empty": "S3에서 백업을 찾을 수 없음",
|
||||
"name": "파일",
|
||||
"size": "크기",
|
||||
"date": "날짜"
|
||||
},
|
||||
"errorTitle": "백업 실패"
|
||||
},
|
||||
"restore": {
|
||||
"warning": "복원하면 기존 데이터를 덮어씁니다. 이 작업은 취소할 수 없습니다. 먼저 백업을 만드세요.",
|
||||
"dropzone": ".tar.gz 백업 아카이브를 여기에 놓기",
|
||||
"dropzoneHint": "또는 클릭하여 찾아보기",
|
||||
"options": {
|
||||
"restoreDb": "데이터베이스 복원",
|
||||
"restoreFiles": "파일 복원",
|
||||
"dryRun": "미리 보기 (변경 없음)"
|
||||
},
|
||||
"start": "복원",
|
||||
"confirmTitle": "시스템 복원 확인",
|
||||
"confirmDesc": "현재 데이터베이스와 파일이 백업 내용으로 덮어쓰입니다. 계속하시겠습니까?",
|
||||
"running": "복원 중...",
|
||||
"doNotClose": "복원 중에 이 페이지를 닫지 마세요",
|
||||
"complete": "복원 완료",
|
||||
"dryRunNote": "미리 보기 실행이었습니다. 변경사항이 적용되지 않았습니다.",
|
||||
"dbRestored": "데이터베이스 복원됨",
|
||||
"filesExtracted": "파일 추출됨",
|
||||
"bytesExtracted": "데이터 복원됨",
|
||||
"schemaVersion": "스키마 버전",
|
||||
"warnings": "경고",
|
||||
"newRestore": "새 복원",
|
||||
"errorTitle": "복원 실패",
|
||||
"tryAgain": "다시 시도"
|
||||
},
|
||||
"s3": {
|
||||
"title": "S3 스토리지 설정",
|
||||
"description": "원격 백업을 위한 S3 호환 스토리지 설정",
|
||||
"status": {
|
||||
"configured": "설정됨",
|
||||
"notConfigured": "설정되지 않음"
|
||||
},
|
||||
"fields": {
|
||||
"accessKeyId": "액세스 키 ID",
|
||||
"secretAccessKey": "시크릿 액세스 키",
|
||||
"secretPlaceholder": "업데이트하려면 입력",
|
||||
"bucket": "버킷",
|
||||
"region": "리전",
|
||||
"endpoint": "엔드포인트 (선택사항)",
|
||||
"endpointHint": "S3 호환 서비스 (MinIO, R2 등)",
|
||||
"prefix": "키 접두사"
|
||||
},
|
||||
"save": "저장 & 연결 테스트",
|
||||
"saving": "연결 테스트 중...",
|
||||
"saveSuccess": "S3 설정이 저장되었고 연결이 확인되었습니다",
|
||||
"saveError": "S3 설정 저장 실패"
|
||||
},
|
||||
"tenant": {
|
||||
"title": "테넌트 백업 & 복원",
|
||||
"description": "개별 테넌트 데이터 백업 또는 복원",
|
||||
"selectTenant": "테넌트 선택",
|
||||
"selectTenantPlaceholder": "테넌트 선택...",
|
||||
"backup": {
|
||||
"start": "테넌트 백업",
|
||||
"running": "테넌트 백업 중...",
|
||||
"complete": "테넌트 백업 완료",
|
||||
"download": "다운로드",
|
||||
"tableCounts": "백업된 테이블",
|
||||
"newBackup": "새 백업"
|
||||
},
|
||||
"restore": {
|
||||
"mode": "복원 모드",
|
||||
"modeUpsert": "병합 (upsert)",
|
||||
"modeReplace": "전체 교체",
|
||||
"modeNew": "새 테넌트",
|
||||
"dropzone": "테넌트 백업 아카이브를 여기에 놓기",
|
||||
"dryRun": "미리 보기 (변경 없음)",
|
||||
"start": "테넌트 복원",
|
||||
"confirmTitle": "테넌트 복원 확인",
|
||||
"confirmDesc": "선택한 테넌트의 데이터가 수정됩니다. 계속하시겠습니까?",
|
||||
"running": "테넌트 복원 중...",
|
||||
"complete": "테넌트 복원 완료",
|
||||
"tablesRestored": "테이블 복원됨",
|
||||
"filesExtracted": "파일 추출됨",
|
||||
"dryRunNote": "미리 보기 실행 — 변경사항 없음",
|
||||
"newRestore": "새 복원"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,487 @@
|
||||
{
|
||||
"title": "채널",
|
||||
"description": "채널 인스턴스 관리",
|
||||
"statusDescription": "통신 채널 상태",
|
||||
"addChannel": "채널 추가",
|
||||
"refresh": "새로 고침",
|
||||
"searchPlaceholder": "채널 검색...",
|
||||
"emptyTitle": "채널 없음",
|
||||
"emptyDescription": "첫 번째 채널 인스턴스를 추가하여 시작하세요.",
|
||||
"emptyStatusDescription": "설정된 통신 채널이 없습니다.",
|
||||
"noMatchTitle": "일치하는 채널 없음",
|
||||
"noMatchDescription": "다른 검색어를 사용해 보세요.",
|
||||
"columns": {
|
||||
"name": "이름",
|
||||
"type": "유형",
|
||||
"agent": "에이전트",
|
||||
"status": "상태",
|
||||
"enabled": "활성화됨",
|
||||
"actions": "작업"
|
||||
},
|
||||
"status": {
|
||||
"running": "실행 중",
|
||||
"stopped": "중지됨",
|
||||
"checking": "확인 중",
|
||||
"degraded": "저하됨",
|
||||
"starting": "시작 중",
|
||||
"registered": "설정됨",
|
||||
"failed": "실패"
|
||||
},
|
||||
"enabled": "활성화됨",
|
||||
"disabled": "비활성화됨",
|
||||
"actions": {
|
||||
"reauthenticate": "재인증",
|
||||
"authenticate": "채널을 시작하려면 인증",
|
||||
"reauthShort": "재인증",
|
||||
"openCredentials": "자격증명 열기",
|
||||
"openAdvanced": "고급 설정 열기",
|
||||
"inspect": "문제 검사"
|
||||
},
|
||||
"list": {
|
||||
"failureStreak": "연속 {{count}}회 실패",
|
||||
"openChannelDetail": "최신 진단을 위해 채널 상세 정보 열기",
|
||||
"nextStep": "다음 단계"
|
||||
},
|
||||
"failureKind": {
|
||||
"auth": "인증",
|
||||
"config": "설정",
|
||||
"network": "네트워크",
|
||||
"unknown": "주의 필요"
|
||||
},
|
||||
"delete": {
|
||||
"title": "채널 인스턴스 삭제",
|
||||
"description": "\"{{name}}\"을 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.",
|
||||
"confirmLabel": "삭제"
|
||||
},
|
||||
"form": {
|
||||
"createTitle": "채널 인스턴스 생성",
|
||||
"editTitle": "채널 인스턴스 편집",
|
||||
"key": "키 *",
|
||||
"keyPlaceholder": "my-telegram-bot",
|
||||
"keyHint": "채널 식별자로 사용되는 고유 슬러그",
|
||||
"displayName": "표시 이름",
|
||||
"displayNamePlaceholder": "판매 봇",
|
||||
"channelType": "채널 유형 *",
|
||||
"agent": "에이전트 *",
|
||||
"selectAgent": "에이전트 선택",
|
||||
"credentials": "자격증명",
|
||||
"credentialsHint": "(현재 값을 유지하려면 비워두세요)",
|
||||
"credentialsEncrypted": "서버 측에서 암호화됩니다. API 응답에 반환되지 않습니다.",
|
||||
"configuration": "설정",
|
||||
"enabled": "활성화됨",
|
||||
"cancel": "취소",
|
||||
"create": "생성",
|
||||
"update": "업데이트",
|
||||
"saving": "저장 중...",
|
||||
"step": "{{current}} / {{total}} 단계",
|
||||
"authenticate": "인증 — {{label}}",
|
||||
"configure": "설정 — {{label}}",
|
||||
"skip": "건너뛰기",
|
||||
"done": "완료",
|
||||
"errors": {
|
||||
"keyRequired": "키가 필요합니다",
|
||||
"keySlug": "키는 유효한 슬러그여야 합니다 (소문자, 숫자, 하이픈만 사용)",
|
||||
"agentRequired": "에이전트가 필요합니다",
|
||||
"requiredFields": "필수 항목: {{fields}}",
|
||||
"failedSave": "저장 실패",
|
||||
"failedSaveConfig": "설정 저장 실패"
|
||||
},
|
||||
"authStatus": {
|
||||
"authenticated": "인증됨",
|
||||
"notAuthenticated": "인증되지 않음",
|
||||
"useQrHint": "— 채널 테이블에서 QR 로그인 버튼을 사용하세요"
|
||||
}
|
||||
},
|
||||
"detail": {
|
||||
"agent": "에이전트: {{name}}",
|
||||
"lastChecked": "마지막 확인: {{value}}",
|
||||
"checkedRelative": "{{value}} 확인됨",
|
||||
"advanced": "고급",
|
||||
"advancedTitle": "고급 설정",
|
||||
"policies": "정책",
|
||||
"policiesDesc": "메시지 처리 정책",
|
||||
"network": "네트워크",
|
||||
"networkDesc": "서버 및 프록시 설정",
|
||||
"limits": "제한",
|
||||
"limitsDesc": "메시지 및 미디어 제약",
|
||||
"streaming": "스트리밍",
|
||||
"streamingDesc": "실시간 메시지 스트리밍 옵션",
|
||||
"behavior": "동작",
|
||||
"behaviorDesc": "응답 동작 설정",
|
||||
"accessControl": "접근 제어",
|
||||
"accessControlDesc": "사용자 접근 제한",
|
||||
"reviewDiagnostics": "설정을 변경하기 전에 이 채널의 최신 진단을 검토하세요.",
|
||||
"whatHappened": "무슨 일이 있었는지",
|
||||
"recommendedAction": "권장 조치",
|
||||
"technicalDetail": "기술적 세부 사항",
|
||||
"tabs": {
|
||||
"general": "일반",
|
||||
"config": "설정",
|
||||
"credentials": "자격증명",
|
||||
"groups": "그룹",
|
||||
"managers": "관리자"
|
||||
},
|
||||
"general": {
|
||||
"identity": "식별",
|
||||
"name": "이름",
|
||||
"nameHint": "고유 슬러그 (읽기 전용)",
|
||||
"channelType": "채널 유형",
|
||||
"displayName": "표시 이름",
|
||||
"displayNamePlaceholder": "친화적 이름",
|
||||
"agent": "에이전트",
|
||||
"selectAgent": "에이전트 선택",
|
||||
"enabled": "활성화됨",
|
||||
"saved": "저장됨",
|
||||
"saveChanges": "변경 사항 저장",
|
||||
"saving": "저장 중..."
|
||||
},
|
||||
"credentials": {
|
||||
"hint": "현재 값을 유지하려면 필드를 비워두세요. 자격증명은 서버 측에서 암호화되며 API 응답에 반환되지 않습니다.",
|
||||
"noSchema": "이 채널 유형에 대한 자격증명 스키마가 없습니다.",
|
||||
"noCredentials": "업데이트할 자격증명 없음",
|
||||
"failedSave": "저장 실패",
|
||||
"saved": "저장됨",
|
||||
"updateCredentials": "자격증명 업데이트",
|
||||
"saving": "저장 중..."
|
||||
},
|
||||
"config": {
|
||||
"noSchema": "이 채널 유형에 대한 설정 스키마가 없습니다.",
|
||||
"saved": "저장됨",
|
||||
"saveConfig": "설정 저장",
|
||||
"saving": "저장 중...",
|
||||
"webhookUrlLabel": "이것을 Lark 앱의 이벤트 요청 URL로 설정하세요:",
|
||||
"copyPath": "경로 복사"
|
||||
},
|
||||
"groups": {
|
||||
"saved": "저장됨",
|
||||
"saveGroups": "그룹 저장",
|
||||
"saving": "저장 중..."
|
||||
},
|
||||
"timeline": {
|
||||
"title": "타임라인",
|
||||
"firstFailed": "첫 실패",
|
||||
"lastChecked": "마지막 확인",
|
||||
"failures": "실패",
|
||||
"failureStreak": "연속 {{count}}회",
|
||||
"failureTotal": "총 {{count}}회",
|
||||
"lastHealthy": "마지막 정상",
|
||||
"noData": "아직 최근 채널 확인 기록이 없습니다."
|
||||
},
|
||||
"managers": {
|
||||
"description": "그룹 채팅에서 관리자 권한을 가진 사용자를 관리합니다.",
|
||||
"groups": "그룹",
|
||||
"noManagerGroups": "관리자 그룹 없음",
|
||||
"noManagerGroupsHint": "아래 양식을 사용하여 그룹에 관리자를 추가하세요.",
|
||||
"loadingManagers": "관리자 불러오는 중...",
|
||||
"noManagers": "이 그룹에 관리자가 없습니다.",
|
||||
"managersCount": "{{count}}명 관리자",
|
||||
"managersCountPlural": "{{count}}명 관리자",
|
||||
"searchContacts": "연락처 검색...",
|
||||
"noResults": "연락처를 찾을 수 없음",
|
||||
"columns": {
|
||||
"userId": "사용자 ID",
|
||||
"name": "이름",
|
||||
"username": "사용자명"
|
||||
},
|
||||
"addForm": {
|
||||
"title": "새 그룹에 관리자 추가",
|
||||
"hint": "위 목록에 없는 그룹에 관리자를 추가합니다.",
|
||||
"groupId": "그룹 ID *",
|
||||
"groupIdPlaceholder": "예: group:telegram:-100123456",
|
||||
"userId": "사용자 ID *",
|
||||
"userIdPlaceholder": "검색하거나 사용자 ID 입력",
|
||||
"displayName": "표시 이름",
|
||||
"username": "사용자명",
|
||||
"optional": "선택사항",
|
||||
"usernameWithout": "선택사항 (@ 제외)",
|
||||
"adding": "추가 중...",
|
||||
"addManager": "관리자 추가",
|
||||
"add": "추가",
|
||||
"errors": {
|
||||
"groupUserRequired": "그룹 ID와 사용자 ID가 필요합니다",
|
||||
"failedAdd": "관리자 추가 실패"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"fieldConfig": {
|
||||
"token": { "label": "봇 토큰", "help": "@BotFather에서 받은 토큰" },
|
||||
"bot_token": { "label": "봇 토큰" },
|
||||
"app_token": {
|
||||
"label": "앱 레벨 토큰",
|
||||
"help": "connections:write 범위의 앱 레벨 토큰 (소켓 모드에 필요)"
|
||||
},
|
||||
"user_token": {
|
||||
"label": "사용자 토큰 (선택사항)",
|
||||
"help": "선택사항: 커스텀 봇 식별을 위한 사용자 OAuth 토큰. 기본 봇 식별을 사용하려면 비워두세요."
|
||||
},
|
||||
"app_id": { "label": "앱 ID" },
|
||||
"app_secret": { "label": "앱 시크릿" },
|
||||
"encrypt_key": { "label": "암호화 키", "help": "웹훅 모드용" },
|
||||
"verification_token": {
|
||||
"label": "인증 토큰",
|
||||
"help": "웹훅 모드용"
|
||||
},
|
||||
"webhook_secret": { "label": "웹훅 시크릿" },
|
||||
"api_server": {
|
||||
"label": "API 서버 URL",
|
||||
"help": "대용량 파일 업로드(최대 2GB)를 위한 커스텀 Telegram Bot API 서버. 기본값을 사용하려면 비워두세요."
|
||||
},
|
||||
"proxy": {
|
||||
"label": "HTTP 프록시",
|
||||
"help": "HTTP 프록시를 통해 봇 트래픽 라우팅"
|
||||
},
|
||||
"dm_policy": { "label": "DM 정책" },
|
||||
"group_policy": { "label": "그룹 정책" },
|
||||
"require_mention": {
|
||||
"label": "그룹에서 @멘션 필요",
|
||||
"disabledHint": "멀티봇 모드는 항상 모든 메시지를 수신합니다"
|
||||
},
|
||||
"mention_mode": {
|
||||
"label": "그룹 응답 동작",
|
||||
"help": "여러 봇이 있는 그룹에서 봇이 응답할 시기를 결정하는 방법입니다."
|
||||
},
|
||||
"history_limit": {
|
||||
"label": "그룹 기록 제한",
|
||||
"help": "컨텍스트용 최대 대기 그룹 메시지 수 (0 = 비활성화)"
|
||||
},
|
||||
"dm_stream": {
|
||||
"label": "DM 스트리밍",
|
||||
"help": "DM에서 응답을 점진적으로 스트리밍"
|
||||
},
|
||||
"group_stream": {
|
||||
"label": "그룹 스트리밍",
|
||||
"help": "그룹에서 응답을 점진적으로 스트리밍"
|
||||
},
|
||||
"draft_transport": {
|
||||
"label": "임시 미리보기",
|
||||
"help": "DM에서 답변 스트림에 스텔스 임시 미리보기 사용 — 편집당 알림 없음 (DM 스트리밍 필요)"
|
||||
},
|
||||
"reasoning_stream": {
|
||||
"label": "추론 표시",
|
||||
"help": "답변 전에 AI 사고를 별도 메시지로 표시 (스트리밍 필요)"
|
||||
},
|
||||
"reaction_level": { "label": "반응 수준" },
|
||||
"media_max_mb": { "label": "최대 미디어 크기 (MB)" },
|
||||
"link_preview": { "label": "링크 미리보기" },
|
||||
"allow_from": { "label": "허용된 사용자" },
|
||||
"block_reply": {
|
||||
"label": "블록 응답",
|
||||
"help": "도구 반복 중 중간 텍스트 전달"
|
||||
},
|
||||
"domain": { "label": "도메인" },
|
||||
"connection_mode": {
|
||||
"label": "연결 모드",
|
||||
"help": "WebSocket은 공개 IP가 필요 없습니다 — 아웃바운드 연결만 사용"
|
||||
},
|
||||
"webhook_port": {
|
||||
"label": "웹훅 포트",
|
||||
"help": "0 = 메인 게이트웨이 포트 공유 (권장)"
|
||||
},
|
||||
"webhook_path": {
|
||||
"label": "웹훅 경로",
|
||||
"help": "Lark 이벤트를 위한 메인 서버 경로"
|
||||
},
|
||||
"webhook_url": { "label": "웹훅 URL" },
|
||||
"topic_session_mode": {
|
||||
"label": "토픽 세션 모드",
|
||||
"help": "세션 격리를 위해 스레드 root_id 사용"
|
||||
},
|
||||
"render_mode": { "label": "렌더링 모드" },
|
||||
"text_chunk_limit": {
|
||||
"label": "텍스트 청크 제한",
|
||||
"help": "메시지당 최대 문자 수"
|
||||
},
|
||||
"group_allow_from": {
|
||||
"label": "그룹 허용된 사용자",
|
||||
"help": "그룹 발신자를 위한 별도 허용 목록"
|
||||
},
|
||||
"native_stream": {
|
||||
"label": "네이티브 스트리밍 (에이전트 & AI 앱)",
|
||||
"help": "네이티브 스트리밍을 위해 Slack의 ChatStreamer API 사용. 사용 불가 시 편집-인-플레이스로 폴백됩니다."
|
||||
},
|
||||
"debounce_delay": {
|
||||
"label": "디바운스 지연 (ms)",
|
||||
"help": "빠른 메시지 처리 전 대기할 밀리초입니다. 비활성화하려면 0으로 설정하세요."
|
||||
},
|
||||
"thread_ttl": {
|
||||
"label": "스레드 참여 TTL (시간)",
|
||||
"help": "참여한 스레드에서 봇이 자동 응답을 중지하기까지의 시간입니다. 0 = 항상 @멘션 필요."
|
||||
},
|
||||
"skills": {
|
||||
"label": "스킬 필터",
|
||||
"help": "이 그룹에서 사용 가능한 스킬 제한"
|
||||
},
|
||||
"tools": {
|
||||
"label": "도구 허용 목록",
|
||||
"help": "이 그룹에서 에이전트가 사용할 수 있는 도구 제한"
|
||||
},
|
||||
"system_prompt": { "label": "시스템 프롬프트" }
|
||||
},
|
||||
"fieldOptions": {
|
||||
"block_reply": {
|
||||
"inherit": "게이트웨이에서 상속",
|
||||
"true": "활성화됨",
|
||||
"false": "비활성화됨"
|
||||
},
|
||||
"dm_policy": {
|
||||
"pairing": "페어링 (코드 필요)",
|
||||
"open": "개방 (모두 허용)",
|
||||
"allowlist": "허용 목록만",
|
||||
"disabled": "비활성화됨"
|
||||
},
|
||||
"group_policy": {
|
||||
"open": "개방 (모두 허용)",
|
||||
"pairing": "페어링 (승인 필요)",
|
||||
"allowlist": "허용 목록만",
|
||||
"disabled": "비활성화됨"
|
||||
},
|
||||
"mention_mode": {
|
||||
"strict": "기본 (@멘션 설정 따름)",
|
||||
"yield": "멀티봇 (다른 봇이 @멘션되지 않으면 응답)"
|
||||
},
|
||||
"reaction_level": {
|
||||
"off": "끄기",
|
||||
"minimal": "최소",
|
||||
"full": "전체"
|
||||
},
|
||||
"domain": {
|
||||
"lark": "Lark (글로벌)",
|
||||
"feishu": "Feishu (중국)"
|
||||
},
|
||||
"connection_mode": {
|
||||
"webhook": "웹훅",
|
||||
"websocket": "WebSocket (권장)"
|
||||
},
|
||||
"topic_session_mode": {
|
||||
"disabled": "비활성화됨",
|
||||
"enabled": "활성화됨"
|
||||
},
|
||||
"render_mode": {
|
||||
"auto": "자동",
|
||||
"raw": "원본",
|
||||
"card": "카드"
|
||||
}
|
||||
},
|
||||
"groupOverrides": {
|
||||
"title": "그룹 & 토픽 재정의",
|
||||
"hint": "그룹 채팅 또는 포럼 토픽별로 채널 기본값을 재정의합니다. 와일드카드 기본값으로 \"*\"를 그룹 ID로 사용하세요.",
|
||||
"groupLabel": "그룹: {{id}}",
|
||||
"groupWildcard": "* (와일드카드)",
|
||||
"addGroupPlaceholder": "채팅 ID (예: -100123456) 또는 *",
|
||||
"addGroup": "그룹 추가",
|
||||
"knownGroups": "알려진 그룹",
|
||||
"topicOverrides": "토픽 재정의",
|
||||
"topicLabel": "토픽: {{id}}",
|
||||
"addTopicPlaceholder": "토픽 스레드 ID",
|
||||
"addTopic": "토픽 추가",
|
||||
"fieldConfig": {
|
||||
"dm_stream": {
|
||||
"label": "DM 스트리밍",
|
||||
"help": "DM에서 응답을 점진적으로 스트리밍"
|
||||
},
|
||||
"group_stream": {
|
||||
"label": "그룹 스트리밍",
|
||||
"help": "그룹에서 응답을 점진적으로 스트리밍"
|
||||
},
|
||||
"draft_transport": {
|
||||
"label": "임시 미리보기",
|
||||
"help": "DM에서 답변 스트림에 스텔스 임시 미리보기 사용 — 편집당 알림 없음 (DM 스트리밍 필요)"
|
||||
},
|
||||
"reasoning_stream": {
|
||||
"label": "추론 표시",
|
||||
"help": "답변 전에 AI 사고를 별도 메시지로 표시 (스트리밍 필요)"
|
||||
}
|
||||
},
|
||||
"fields": {
|
||||
"groupPolicy": "그룹 정책",
|
||||
"requireMention": "@멘션 필요",
|
||||
"enabled": "활성화됨",
|
||||
"allowedUsers": "허용된 사용자",
|
||||
"allowedUsersPlaceholder": "사용자 ID를 줄당 하나 또는 쉼표로 구분",
|
||||
"skillsFilter": "스킬 필터",
|
||||
"skillsPlaceholder": "줄당 하나의 스킬명 (비어있으면 상속)",
|
||||
"toolAllow": "도구 허용",
|
||||
"toolAllowPlaceholder": "허용할 도구 선택 (비어있으면 모두 상속)...",
|
||||
"toolAllowHint": "이 그룹에서 사용 가능한 도구를 제한합니다. \"group:web\", \"group:fs\" 같은 그룹명을 지원합니다. 비어있으면 모든 도구 상속.",
|
||||
"systemPrompt": "시스템 프롬프트",
|
||||
"systemPromptPlaceholder": "이 그룹/토픽을 위한 추가 시스템 프롬프트",
|
||||
"inherit": "상속 (채널 기본값)",
|
||||
"yes": "예",
|
||||
"no": "아니오"
|
||||
}
|
||||
},
|
||||
"wizard": {
|
||||
"zaloPersonal": {
|
||||
"createLabel": "생성 & 인증",
|
||||
"formBanner": "생성 후 QR 코드를 통해 인증하고 허용된 사용자를 설정합니다."
|
||||
},
|
||||
"whatsapp": {
|
||||
"createLabel": "생성 & QR 스캔",
|
||||
"formBanner": "생성 후 WhatsApp으로 QR 코드를 스캔하여 인증합니다."
|
||||
}
|
||||
},
|
||||
"fallback": {
|
||||
"authRequiredSummary": "인증 필요",
|
||||
"authRequiredDetail": "채널 인스턴스가 활성화되었지만 연결 전에 로그인이 필요합니다.",
|
||||
"authRequiredHeadline": "채널 세션 재연결",
|
||||
"authRequiredHint": "현재 세션을 복원하려면 이 채널을 다시 인증하세요.",
|
||||
"missingCredentialsSummary": "자격증명 없음",
|
||||
"missingCredentialsDetail": "채널 인스턴스가 활성화되었지만 필수 자격증명이 불완전합니다.",
|
||||
"missingCredentialsHeadline": "필수 자격증명 완성",
|
||||
"missingCredentialsHint": "자격증명을 열고 이 채널의 누락되거나 잘못된 값을 입력하세요."
|
||||
},
|
||||
"scopes": {
|
||||
"title": "필수 API 권한",
|
||||
"description": "Lark/Feishu 앱은 개발자 콘솔에서 이 범위들이 활성화되어야 합니다. 권한 추가 후 새 앱 버전을 게시하세요.",
|
||||
"publishReminder": "범위 추가 후 연락처 범위를 \"모든 멤버\"로 설정하고 새 앱 버전을 게시하여 변경 사항을 적용하세요."
|
||||
},
|
||||
"toast": {
|
||||
"created": "채널 생성됨",
|
||||
"createdDesc": "{{name}}이 추가되었습니다",
|
||||
"updated": "채널 업데이트됨",
|
||||
"deleted": "채널 삭제됨",
|
||||
"failedCreate": "채널 생성 실패",
|
||||
"failedUpdate": "채널 업데이트 실패",
|
||||
"failedDelete": "채널 삭제 실패"
|
||||
},
|
||||
"zalo": {
|
||||
"allowedUsers": "허용된 사용자",
|
||||
"loadContacts": "연락처 불러오기",
|
||||
"loading": "불러오는 중...",
|
||||
"searchContacts": "연락처 검색...",
|
||||
"friends": "친구",
|
||||
"groups": "그룹",
|
||||
"membersCount": "{{count}}명 멤버",
|
||||
"noContacts": "연락처를 찾을 수 없음",
|
||||
"noContactsMatch": "\"{{search}}\"와 일치하는 연락처 없음",
|
||||
"addManualPlaceholder": "ID 수동 추가",
|
||||
"add": "추가",
|
||||
"zaloIdsHint": "Zalo 사용자 ID 또는 그룹 ID",
|
||||
"completeQrLogin": "연락처를 불러오려면 QR 로그인을 완료하세요",
|
||||
"loginQr": "QR로 로그인 — {{name}}",
|
||||
"loginSuccessful": "로그인 성공! 채널 시작 중...",
|
||||
"generatingQr": "QR 코드 생성 중...",
|
||||
"scanHint": "Zalo 앱으로 스캔 (약 100초 후 만료)",
|
||||
"loginSuccessLoading": "로그인 성공! 연락처 불러오는 중...",
|
||||
"retry": "재시도",
|
||||
"close": "닫기",
|
||||
"skip": "건너뛰기"
|
||||
},
|
||||
"whatsapp": {
|
||||
"loginSuccessLoading": "✅ WhatsApp 연결됨! 채널 불러오는 중...",
|
||||
"waitingForQr": "QR 코드 대기 중...",
|
||||
"scanHint": "WhatsApp → 나 탭 → 연결된 기기 → 기기 연결",
|
||||
"initializing": "초기화 중...",
|
||||
"skip": "건너뛰기",
|
||||
"retry": "재시도",
|
||||
"close": "닫기",
|
||||
"reauthTitle": "WhatsApp 연결 — {{name}}",
|
||||
"reauthDescription": "WhatsApp으로 QR 코드를 스캔하여 기기를 연결하세요.",
|
||||
"alreadyLinked": "✅ 기기가 이미 연결됨",
|
||||
"alreadyLinkedDetail": "WhatsApp이 연결되어 있습니다. 다른 기기를 연결하려면 재연결을 클릭하세요 — 현재 세션이 로그아웃됩니다.",
|
||||
"relinkDevice": "기기 재연결",
|
||||
"connectedSuccess": "✅ WhatsApp이 성공적으로 연결되었습니다!",
|
||||
"tabQrCode": "QR 코드"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"deleteChat": "채팅 삭제",
|
||||
"deleteChatConfirm": "이 대화와 모든 메시지가 영구적으로 삭제됩니다.",
|
||||
"newChat": "새 채팅",
|
||||
"openSessions": "세션 열기",
|
||||
"readOnly": "읽기 전용 — 이 세션은 다른 사용자의 것입니다",
|
||||
"contextUsage": {
|
||||
"tooltip": "{{used}} / {{max}} 토큰 ({{percent}}%) · {{compactions}}회 압축 · 마지막: {{lastCompact}}",
|
||||
"never": "없음"
|
||||
},
|
||||
"empty": {
|
||||
"title": "대화 시작",
|
||||
"description": "에이전트와 채팅을 시작하려면 메시지를 보내세요."
|
||||
},
|
||||
"media": {
|
||||
"image": "이미지",
|
||||
"video": "동영상",
|
||||
"audio": "오디오",
|
||||
"voice": "음성 메시지",
|
||||
"document": "문서",
|
||||
"animation": "애니메이션",
|
||||
"attached": "첨부됨"
|
||||
},
|
||||
"forwardedFrom": "전달됨 (from)",
|
||||
"replyingTo": "답장 대상",
|
||||
"error": {
|
||||
"notConnected": "연결되지 않았습니다. 연결이 설정될 때까지 기다려 주세요."
|
||||
},
|
||||
"selectAgent": {
|
||||
"title": "에이전트 선택",
|
||||
"description": "채팅할 에이전트를 선택하세요"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,114 @@
|
||||
{
|
||||
"title": "CLI 자격증명",
|
||||
"description": "자격증명이 주입된 에이전트용 보안 CLI 바이너리를 관리합니다.",
|
||||
"addCredential": "자격증명 추가",
|
||||
"emptyTitle": "CLI 자격증명 없음",
|
||||
"emptyDescription": "CLI 자격증명을 추가하여 에이전트가 인증된 CLI 명령을 실행할 수 있게 하세요.",
|
||||
"columns": {
|
||||
"binary": "바이너리",
|
||||
"scope": "범위",
|
||||
"timeout": "타임아웃",
|
||||
"restricted": "제한됨"
|
||||
},
|
||||
"delete": {
|
||||
"title": "CLI 자격증명 삭제",
|
||||
"description": "\"{{name}}\"을 삭제하시겠습니까? 이를 사용하는 에이전트는 접근 권한을 잃게 됩니다.",
|
||||
"confirm": "삭제"
|
||||
},
|
||||
"form": {
|
||||
"createTitle": "CLI 자격증명 추가",
|
||||
"editTitle": "CLI 자격증명 편집",
|
||||
"preset": "프리셋",
|
||||
"presetPlaceholder": "프리셋 선택 (선택사항)",
|
||||
"noPreset": "프리셋 없음 (수동)",
|
||||
"presetHint": "프리셋을 선택하면 필드가 자동으로 채워지고 필수 환경 변수가 표시됩니다.",
|
||||
"encryptedHint": "값은 암호화되며 표시되지 않습니다. 변수명은 아래에 나열됩니다. 저장된 시크릿을 유지하려면 값을 비워두고, 새 값으로 교체하려면 입력하세요.",
|
||||
"envVars": "환경 변수",
|
||||
"binaryName": "바이너리 이름",
|
||||
"binaryPath": "바이너리 경로",
|
||||
"denyArgs": "차단 인수",
|
||||
"denyVerbose": "차단 상세 인수",
|
||||
"timeout": "타임아웃 (초)",
|
||||
"tips": "팁",
|
||||
"agentId": "에이전트",
|
||||
"agentIdHint": "선택사항 — 전역으로 사용하려면 비워두세요",
|
||||
"commaSeparated": "쉼표로 구분",
|
||||
"binaryNameRequired": "바이너리 이름이 필요합니다.",
|
||||
"failedToSave": "저장 실패.",
|
||||
"addEnvVar": "변수 추가",
|
||||
"noEnvVarsHint": "\"변수 추가\"를 클릭하여 이 CLI 도구의 환경 변수를 정의하세요.",
|
||||
"envKeyPlaceholder": "ENV_VAR_NAME",
|
||||
"envValuePlaceholder": "값",
|
||||
"invalidEnvKey": "\"{{key}}\"는 유효한 환경 변수 이름이 아닙니다 (A-Z, 0-9, 언더스코어 사용).",
|
||||
"binaryPathHint": "PATH에서 자동 감지하려면 비워두세요",
|
||||
"checkBinary": "확인",
|
||||
"binaryFound": "{{path}}에서 발견됨",
|
||||
"binaryNotFound": "서버 PATH에서 바이너리를 찾을 수 없음",
|
||||
"checking": "확인 중...",
|
||||
"isGlobal": "모든 에이전트에서 사용 가능",
|
||||
"isGlobalHint": "비활성화 시, 명시적 권한이 있는 에이전트만 이 CLI를 사용할 수 있습니다"
|
||||
},
|
||||
"placeholders": {
|
||||
"binaryName": "예: gh",
|
||||
"binaryPath": "/usr/local/bin/...",
|
||||
"description": "이 CLI 도구의 역할",
|
||||
"denyArgs": "--admin, --force",
|
||||
"denyVerbose": "-v, --verbose",
|
||||
"tips": "에이전트를 위한 사용 팁",
|
||||
"agentId": "전역 (모든 에이전트)"
|
||||
},
|
||||
"toast": {
|
||||
"created": "CLI 자격증명 생성됨",
|
||||
"createdDesc": "\"{{name}}\"이 성공적으로 추가되었습니다.",
|
||||
"createFailed": "자격증명 생성 실패",
|
||||
"updated": "CLI 자격증명 업데이트됨",
|
||||
"updateFailed": "자격증명 업데이트 실패",
|
||||
"deleted": "CLI 자격증명 삭제됨",
|
||||
"deleteFailed": "자격증명 삭제 실패"
|
||||
},
|
||||
"userCredentials": {
|
||||
"title": "사용자 자격증명",
|
||||
"description": "{{name}}에 대한 사용자별 환경 변수 재정의",
|
||||
"userId": "사용자 ID",
|
||||
"userIdPlaceholder": "user-id 또는 이메일",
|
||||
"env": "환경 변수",
|
||||
"addEnv": "변수 추가",
|
||||
"add": "추가",
|
||||
"save": "저장",
|
||||
"edit": "편집",
|
||||
"delete": "삭제",
|
||||
"back": "뒤로",
|
||||
"close": "닫기",
|
||||
"empty": "사용자 자격증명 없음",
|
||||
"saved": "사용자 자격증명 저장됨",
|
||||
"saveFailed": "사용자 자격증명 저장 실패",
|
||||
"deleted": "사용자 자격증명 삭제됨",
|
||||
"deleteFailed": "사용자 자격증명 삭제 실패",
|
||||
"envRequired": "환경 변수가 하나 이상 필요합니다",
|
||||
"mergeHint": "채팅 사용자(Telegram, Discord 등)는 사용자별 자격증명을 갖기 전에 연락처 페이지에서 테넌트 사용자로 먼저 병합되어야 합니다."
|
||||
},
|
||||
"grants": {
|
||||
"title": "에이전트 권한 — {{name}}",
|
||||
"currentGrants": "현재 권한",
|
||||
"addGrant": "권한 추가",
|
||||
"editGrant": "권한 편집",
|
||||
"selectAgent": "에이전트 선택...",
|
||||
"usingDefaults": "바이너리 기본값 사용",
|
||||
"overrideTimeout": "타임아웃 재정의 (초)",
|
||||
"overrideDenyArgs": "차단 인수 재정의",
|
||||
"overrideDenyVerbose": "차단 상세 인수 재정의",
|
||||
"overrideTips": "팁 재정의",
|
||||
"defaultPlaceholder": "기본값",
|
||||
"grant": "권한 부여",
|
||||
"update": "업데이트",
|
||||
"agentRequired": "에이전트를 선택해 주세요",
|
||||
"toast": {
|
||||
"granted": "에이전트 권한 생성됨",
|
||||
"grantFailed": "권한 생성 실패",
|
||||
"updated": "에이전트 권한 업데이트됨",
|
||||
"updateFailed": "권한 업데이트 실패",
|
||||
"revoked": "에이전트 권한 취소됨",
|
||||
"revokeFailed": "권한 취소 실패"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,139 @@
|
||||
{
|
||||
"refresh": "새로 고침",
|
||||
"cancel": "취소",
|
||||
"confirm": "확인",
|
||||
"delete": "삭제",
|
||||
"save": "저장",
|
||||
"edit": "편집",
|
||||
"create": "만들기",
|
||||
"add": "추가",
|
||||
"view": "보기",
|
||||
"filter": "필터",
|
||||
"search": "검색",
|
||||
"retry": "재시도",
|
||||
"manage": "관리",
|
||||
"uploadLabel": "업로드",
|
||||
"close": "닫기",
|
||||
"back": "뒤로",
|
||||
"update": "업데이트",
|
||||
"enabled": "사용 중",
|
||||
"disabled": "사용 안 함",
|
||||
"yes": "예",
|
||||
"no": "아니오",
|
||||
"loading": "불러오는 중...",
|
||||
"saving": "저장 중...",
|
||||
"creating": "만드는 중...",
|
||||
"connecting": "연결 중...",
|
||||
"connected": "연결됨",
|
||||
"disconnected": "연결 끊김",
|
||||
"running": "실행 중",
|
||||
"stopped": "정지됨",
|
||||
"pending": "대기 중",
|
||||
"completed": "완료됨",
|
||||
"failed": "실패",
|
||||
"cancelled": "취소됨",
|
||||
"unknown": "알 수 없음",
|
||||
"active": "활성",
|
||||
"items": "항목",
|
||||
"rows": "행",
|
||||
"pageOf": "{{page}} / {{totalPages}} 페이지",
|
||||
"messages": "메시지",
|
||||
"cached": "캐시됨",
|
||||
"live": "실시간",
|
||||
"noDescription": "설명 없음",
|
||||
"unsavedChanges": "저장되지 않은 변경사항",
|
||||
"tryDifferentSearch": "다른 검색어를 사용해 보세요.",
|
||||
"notSet": "설정되지 않음",
|
||||
"default": "기본값",
|
||||
"optional": "선택사항",
|
||||
"required": "필수",
|
||||
"actions": "작업",
|
||||
"status": "상태",
|
||||
"name": "이름",
|
||||
"description": "설명",
|
||||
"type": "유형",
|
||||
"none": "없음",
|
||||
"all": "전체",
|
||||
"global": "전체",
|
||||
"agent": "에이전트",
|
||||
"saved": "저장됨",
|
||||
"saveChanges": "변경사항 저장",
|
||||
"saveConfig": "설정 저장",
|
||||
"checkAndCreate": "확인 & 만들기",
|
||||
"checking": "확인 중...",
|
||||
"format": "JSON 형식 지정",
|
||||
"invalidJson": "유효하지 않은 JSON 구문",
|
||||
"usingGlobalDefaults": "config.json의 전체 기본값 사용 중",
|
||||
"disconnectedGateway": "게이트웨이 연결이 끊겼습니다. 재연결 시도 중...",
|
||||
"serverUnreachable": "서버에 연결할 수 없음",
|
||||
"serverUnreachableDesc": "게이트웨이 서버에 연결할 수 없습니다. 서버가 실행 중인지 확인하세요.",
|
||||
"reconnecting": "재연결 중...",
|
||||
"noFiles": "파일이 없습니다.",
|
||||
"selectFileToView": "파일을 선택하면 내용을 볼 수 있습니다",
|
||||
"typeToConfirmPrefix": "확인을 위해",
|
||||
"typeToConfirmSuffix": "을/를 입력하세요.",
|
||||
"searchPlaceholder": "검색...",
|
||||
"noSessions": "세션이 없습니다. 채팅을 시작하세요!",
|
||||
"noAgentsAvailable": "사용 가능한 에이전트 없음",
|
||||
"selectAgent": "에이전트 선택",
|
||||
"sendMessage": "메시지 보내기... (Shift+Enter로 줄바꿈)",
|
||||
"stopGeneration": "생성 중지",
|
||||
"sendMessageTitle": "메시지 보내기",
|
||||
"sendFollowUp": "후속 메시지 보내기",
|
||||
"attachFile": "파일 첨부",
|
||||
"thinking": "생각 중",
|
||||
"thinkingStreaming": "생각 중...",
|
||||
"toolArguments": "인수",
|
||||
"toolResult": "결과",
|
||||
"skillActivating": "활성화 중...",
|
||||
"skillActivated": "활성화됨",
|
||||
"toolRunning": "실행 중...",
|
||||
"toolDone": "완료",
|
||||
"toolFailed": "실패",
|
||||
"filesBack": "파일",
|
||||
"noProvidersConfigured": "설정된 공급자 없음",
|
||||
"loadingModels": "모델 불러오는 중...",
|
||||
"modelVerified": "모델 확인됨",
|
||||
"verificationFailed": "확인 실패",
|
||||
"provider": "공급자",
|
||||
"model": "모델",
|
||||
"selectProvider": "공급자 선택",
|
||||
"enterOrSelectModel": "모델 입력 또는 선택",
|
||||
"useCustomModel": "사용자 지정 모델:",
|
||||
"providerTip": "LLM 공급자 이름. 설정된 공급자와 일치해야 합니다.",
|
||||
"modelTip": "사용할 모델 ID.",
|
||||
"check": "확인",
|
||||
"builtinTools": "내장",
|
||||
"customTools": "사용자 지정",
|
||||
"selectOrTypeTools": "도구 이름 선택 또는 입력...",
|
||||
"selectOrTypeSkills": "스킬 이름 선택 또는 입력...",
|
||||
"typeAndPressEnter": "입력 후 Enter를 누르세요...",
|
||||
"copyCode": "코드 복사",
|
||||
"copy": "복사",
|
||||
"download": "다운로드",
|
||||
"errorBoundary": "이 섹션을 렌더링하는 중 오류가 발생했습니다.",
|
||||
"csvRows": "csv ({{count}}행)",
|
||||
"failedToLoadImage": "이미지를 불러오지 못했습니다",
|
||||
"deleteFolder": "폴더 삭제",
|
||||
"deleteFile": "파일 삭제",
|
||||
"loadMore": "더 불러오기...",
|
||||
"viewCard": "카드 보기",
|
||||
"viewList": "목록 보기",
|
||||
"done": "완료",
|
||||
"upload": {
|
||||
"title": "파일 업로드",
|
||||
"dropOrClick": "파일을 여기에 끌어다 놓거나 클릭하여 찾아보기",
|
||||
"dropHere": "파일을 여기에 끌어다 놓기",
|
||||
"maxSize": "파일당 최대 50 MB",
|
||||
"blockedType": "{{ext}} 파일 유형은 허용되지 않습니다",
|
||||
"tooLarge": "파일이 50 MB 제한을 초과합니다",
|
||||
"failed": "업로드 실패",
|
||||
"readyCount": "{{total}}개 중 {{ready}}개 파일 준비됨",
|
||||
"successCount": "{{total}}개 중 {{success}}개 파일 업로드됨",
|
||||
"uploading": "업로드 중...",
|
||||
"uploadCount": "{{count}}개 파일 업로드"
|
||||
},
|
||||
"errors": {
|
||||
"serverError": "오류가 발생했습니다. 나중에 다시 시도해 주세요."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,315 @@
|
||||
{
|
||||
"title": "설정",
|
||||
"description": "게이트웨이, 에이전트 기본값, 도구 및 통합 관리",
|
||||
"noConfig": "설정이 로드되지 않음",
|
||||
"noConfigDescription": "설정 파일을 불러올 수 없습니다. 게이트웨이에 연결할 수 없을 수 있습니다.",
|
||||
"retry": "재시도",
|
||||
"warning": "여기서의 변경사항은 모든 에이전트와 채널에 전역으로 영향을 줍니다. 잘못된 설정은 게이트웨이를 중단시킬 수 있습니다.",
|
||||
"save": "저장",
|
||||
"saving": "저장 중...",
|
||||
"saved": "저장됨",
|
||||
"failedToSave": "설정 저장 실패",
|
||||
"saveConfig": "설정 저장",
|
||||
"usingGlobalDefaults": "전역 기본값 사용",
|
||||
|
||||
"tabs.server": "서버",
|
||||
"tabs.behavior": "동작",
|
||||
"tabs.aiDefaults": "AI 기본값",
|
||||
"tabs.quota": "할당량",
|
||||
"tabs.tools": "도구",
|
||||
"tabs.integrations": "통합",
|
||||
|
||||
"server.title": "게이트웨이 서버",
|
||||
"server.description": "네트워크 바인딩, 인증 토큰 및 접근 제어",
|
||||
|
||||
"gateway.host": "호스트",
|
||||
"gateway.hostTip": "게이트웨이가 수신하는 네트워크 인터페이스입니다. 모든 인터페이스에서 수신하려면 0.0.0.0을 사용하세요.",
|
||||
"gateway.port": "포트",
|
||||
"gateway.portTip": "게이트웨이 WebSocket 및 HTTP 서버가 바인딩하는 TCP 포트입니다.",
|
||||
"gateway.token": "인증 토큰",
|
||||
"gateway.tokenTip": "모든 클라이언트 연결에 필요한 베어러 토큰입니다. 인증을 비활성화하려면 비워두세요.",
|
||||
"gateway.tokenManaged": "토큰은 환경 변수를 통해 관리되며 여기서 편집할 수 없습니다.",
|
||||
"gateway.ownerIds": "소유자 ID",
|
||||
"gateway.ownerIdsTip": "관리자 수준 접근 권한이 부여된 사용자 ID입니다. 여러 ID는 Enter로 구분하세요.",
|
||||
"gateway.ownerIdsPlaceholder": "소유자 ID 입력...",
|
||||
"gateway.allowedOrigins": "허용된 출처",
|
||||
"gateway.allowedOriginsTip": "HTTP API를 위한 CORS 허용 출처입니다. 모든 출처를 허용하려면 *를 사용하세요.",
|
||||
"gateway.allowedOriginsPlaceholder": "https://yourdomain.com",
|
||||
"gateway.toolStatus": "도구 상태 메시지",
|
||||
"gateway.blockReply": "중간 응답",
|
||||
"gateway.maxMessageChars": "최대 메시지 문자",
|
||||
"gateway.maxMessageCharsTip": "인바운드 메시지당 허용되는 최대 문자 수입니다. 이 한도를 초과하는 메시지는 거부됩니다.",
|
||||
"gateway.rateLimitRpm": "속도 제한 (RPM)",
|
||||
"gateway.rateLimitRpmTip": "사용자당 분당 최대 요청 수입니다. 속도 제한을 비활성화하려면 0으로 설정하세요.",
|
||||
"gateway.inboundDebounceMs": "인바운드 디바운스 (ms)",
|
||||
"gateway.inboundDebounceMsTip": "새 메시지를 처리하기 전 대기할 밀리초입니다. 빠른 후속 메시지를 통합하기 위해 사용합니다. 비활성화하려면 -1로 설정하세요.",
|
||||
"gateway.injectionAction": "주입 감지 조치",
|
||||
|
||||
"agents.title": "에이전트 기본값",
|
||||
"agents.description": "재정의하지 않는 한 모든 에이전트에 적용되는 기본 LLM 공급자, 모델 및 런타임 설정",
|
||||
"agents.providerTip": "에이전트가 지정하지 않을 때 사용되는 기본 LLM 공급자입니다.",
|
||||
"agents.modelTip": "에이전트가 지정하지 않을 때 사용되는 기본 모델입니다.",
|
||||
"agents.maxTokens": "최대 토큰",
|
||||
"agents.maxTokensTip": "모델이 단일 응답에서 생성할 수 있는 최대 토큰 수입니다.",
|
||||
"agents.temperature": "온도",
|
||||
"agents.temperatureTip": "샘플링 온도 (0-2). 낮을수록 더 결정론적인 출력이 생성됩니다.",
|
||||
"agents.maxToolIterations": "최대 도구 반복",
|
||||
"agents.maxToolIterationsTip": "에이전트 요청당 최대 도구 호출 반복 횟수입니다.",
|
||||
"agents.contextWindow": "컨텍스트 창",
|
||||
"agents.contextWindowTip": "모델 컨텍스트 창의 총 토큰 예산입니다.",
|
||||
"agents.workspace": "워크스페이스 경로",
|
||||
"agents.workspaceTip": "에이전트 파일 작업의 루트 디렉터리입니다. 사용자별 하위 디렉터리가 자동으로 생성됩니다.",
|
||||
"agents.restrictToWorkspace": "워크스페이스로 제한",
|
||||
"agents.restrictToWorkspaceTip": "에이전트가 워크스페이스 경로 외부의 파일을 읽거나 쓸 수 없도록 합니다.",
|
||||
"agents.intentClassify": "의도 분류",
|
||||
"agents.saveError": "에이전트 기본값 저장 실패",
|
||||
|
||||
"agents.subagents.title": "서브에이전트",
|
||||
"agents.subagents.desc": "서브에이전트 생성 제한",
|
||||
"agents.subagents.maxConcurrent": "최대 동시",
|
||||
"agents.subagents.maxConcurrentTip": "동시에 실행할 수 있는 서브에이전트의 최대 수입니다.",
|
||||
"agents.subagents.maxSpawnDepth": "최대 생성 깊이",
|
||||
"agents.subagents.maxSpawnDepthTip": "서브에이전트 체인의 최대 중첩 깊이입니다.",
|
||||
"agents.subagents.maxChildrenPerAgent": "에이전트당 최대 자식",
|
||||
"agents.subagents.maxChildrenPerAgentTip": "단일 에이전트가 생성할 수 있는 최대 자식 서브에이전트 수입니다.",
|
||||
"agents.subagents.archiveAfterMin": "보관 시간 (분)",
|
||||
"agents.subagents.archiveAfterMinTip": "서브에이전트 세션이 보관되기까지의 비활성 시간(분)입니다.",
|
||||
"agents.subagents.modelOverride": "모델 재정의",
|
||||
"agents.subagents.modelOverrideTip": "모든 서브에이전트가 특정 모델을 사용하도록 강제합니다. 부모 에이전트에서 상속하려면 비워두세요.",
|
||||
"agents.subagents.modelOverridePlaceholder": "(에이전트에서 상속)",
|
||||
|
||||
"agents.memory.title": "메모리",
|
||||
"agents.memory.desc": "의미 메모리 검색 및 임베딩",
|
||||
"agents.memory.enabled": "활성화됨",
|
||||
"agents.memory.embeddingProvider": "임베딩 공급자",
|
||||
"agents.memory.embeddingModel": "임베딩 모델",
|
||||
"agents.memory.embeddingProviderTip": "메모리 저장을 위한 텍스트 임베딩 생성에 사용되는 공급자입니다.",
|
||||
"agents.memory.embeddingModelTip": "임베딩 모델명입니다. 공급자 기본값을 사용하려면 비워두세요.",
|
||||
"agents.memory.maxResults": "최대 결과",
|
||||
"agents.memory.maxResultsTip": "회수 쿼리당 반환되는 최대 메모리 항목 수입니다.",
|
||||
"agents.memory.maxChunkLen": "최대 청크 길이",
|
||||
"agents.memory.maxChunkLenTip": "분할 전 메모리 청크당 최대 문자 수입니다.",
|
||||
"agents.memory.chunkOverlap": "청크 겹침",
|
||||
"agents.memory.chunkOverlapTip": "컨텍스트 연속성을 위한 청크 간 겹침 문자 수입니다.",
|
||||
"agents.memory.minScore": "최소 점수",
|
||||
"agents.memory.minScoreTip": "결과에 포함될 메모리 항목의 최소 유사도 점수 (0-1)입니다.",
|
||||
|
||||
"agents.compaction.title": "압축",
|
||||
"agents.compaction.desc": "컨텍스트 창 압축 설정",
|
||||
"agents.compaction.reserveTokensFloor": "예약 토큰 하한",
|
||||
"agents.compaction.reserveTokensFloorTip": "압축 전 새 응답을 위해 예약할 최소 토큰 버퍼입니다.",
|
||||
"agents.compaction.maxHistoryShare": "최대 기록 비율 (0-1)",
|
||||
"agents.compaction.maxHistoryShareTip": "대화 기록이 차지할 수 있는 컨텍스트 창의 비율입니다.",
|
||||
|
||||
"agents.pruning.title": "컨텍스트 정리",
|
||||
"agents.pruning.desc": "컨텍스트 공간 확보를 위해 오래된 도구 결과 제거",
|
||||
"agents.pruning.mode": "모드",
|
||||
"agents.pruning.keepLastAssistants": "마지막 어시스턴트 유지",
|
||||
"agents.pruning.keepLastAssistantsTip": "정리 중 항상 보존할 최근 어시스턴트 턴 수입니다.",
|
||||
|
||||
"agents.sandbox.title": "샌드박스",
|
||||
"agents.sandbox.desc": "코드 실행을 위한 Docker 샌드박스",
|
||||
"agents.sandbox.mode": "모드",
|
||||
"agents.sandbox.image": "Docker 이미지",
|
||||
"agents.sandbox.imageTip": "샌드박스 컨테이너에 사용되는 Docker 이미지입니다.",
|
||||
"agents.sandbox.memoryMb": "메모리 (MB)",
|
||||
"agents.sandbox.memoryMbTip": "샌드박스 컨테이너의 메모리 제한(메가바이트)입니다.",
|
||||
"agents.sandbox.cpus": "CPU",
|
||||
"agents.sandbox.cpusTip": "샌드박스 컨테이너의 CPU 할당량 (예: 1.0 = 코어 하나).",
|
||||
"agents.sandbox.timeoutSec": "타임아웃 (초)",
|
||||
"agents.sandbox.timeoutSecTip": "샌드박스가 종료되기 전 최대 실행 시간(초)입니다.",
|
||||
"agents.sandbox.networkEnabled": "네트워크 활성화됨",
|
||||
|
||||
"behavior.uxTitle": "UX 동작",
|
||||
"behavior.uxDescription": "게이트웨이가 사용자와 상호작용하는 방식을 변경하는 주요 토글",
|
||||
"behavior.toolStatusHint": "에이전트 실행 중 사용자에게 실시간 도구 실행 상태 메시지를 표시합니다.",
|
||||
"behavior.toolStatusInfo": "에이전트가 파일을 읽고, 명령을 실행하고, API를 호출하는 동안 사용자에게 라이브 업데이트가 표시됩니다.",
|
||||
"behavior.blockReplyHint": "도구가 호출되는 동안 채널에 부분 어시스턴트 텍스트를 전송합니다.",
|
||||
"behavior.blockReplyInfo": "도구 실행 중 사용자에게 중간 텍스트가 전달됩니다. 최종 응답만이 아닙니다.",
|
||||
"behavior.intentClassifyHint": "불필요한 에이전트 호출을 줄이기 위해 라우팅 전에 사용자 의도를 분류합니다.",
|
||||
"behavior.intentClassifyInfo": "에이전트는 분류기가 실행 가능한 의도를 감지할 때만 호출됩니다.",
|
||||
"behavior.pendingCompactionTitle": "대기 메시지 압축",
|
||||
"behavior.pendingCompactionDescription": "버퍼가 임계값을 초과할 때 LLM을 사용하여 이전 그룹 메시지를 자동으로 요약합니다",
|
||||
"behavior.pendingCompactionThreshold": "임계값",
|
||||
"behavior.pendingCompactionThresholdTip": "그룹에 이 수보다 많은 대기 메시지가 누적되면 압축을 트리거합니다. 기본값(50)을 사용하려면 0으로 설정하세요.",
|
||||
"behavior.pendingCompactionKeepRecent": "최근 유지",
|
||||
"behavior.pendingCompactionKeepRecentTip": "압축 후 유지할 최근 원본 메시지 수입니다. 오래된 메시지는 LLM 요약으로 대체됩니다. 기본값은 15입니다.",
|
||||
"behavior.pendingCompactionMaxTokens": "최대 토큰",
|
||||
"behavior.pendingCompactionMaxTokensTip": "LLM 요약의 최대 출력 토큰입니다. 기본값은 4096입니다.",
|
||||
"behavior.pendingCompactionProvider": "공급자",
|
||||
"behavior.pendingCompactionProviderTip": "요약을 위한 LLM 공급자입니다. 채널 에이전트의 공급자를 사용하려면 비워두세요.",
|
||||
"behavior.pendingCompactionProviderPlaceholder": "에이전트 공급자 사용",
|
||||
"behavior.pendingCompactionModel": "모델",
|
||||
"behavior.pendingCompactionModelTip": "요약을 위한 모델입니다. 채널 에이전트의 모델을 사용하려면 비워두세요.",
|
||||
"behavior.pendingCompactionModelPlaceholder": "에이전트 모델 사용",
|
||||
"behavior.pendingCompactionInfo": "그룹 채팅이 임계값을 초과하면 LLM이 오래된 메시지를 단일 압축 항목으로 자동 요약하여 컨텍스트를 위해 가장 최근 메시지를 유지합니다.",
|
||||
"behavior.rateLimitTitle": "속도 제한",
|
||||
"behavior.rateLimitDescription": "인바운드 메시지 크기 제한 및 사용자당 요청 쓰로틀링",
|
||||
"behavior.sessionsTitle": "세션 범위",
|
||||
"behavior.sessionsDescription": "사용자와 채널 간에 대화 컨텍스트가 분할되는 방식을 제어합니다",
|
||||
"behavior.securityTitle": "입력 보안",
|
||||
"behavior.securityDescription": "게이트웨이를 보호하기 위한 프롬프트 주입 감지 및 자격증명 스크러빙",
|
||||
"behavior.injectionActionHint": "인바운드 메시지에서 프롬프트 주입 시도가 감지될 때 수행할 작업입니다.",
|
||||
"behavior.injectionBlockInfo": "주입 시도로 표시된 모든 메시지는 차단되고 사용자에게 알림이 전송됩니다.",
|
||||
"behavior.injectionOffInfo": "주입 감지가 비활성화되어 있습니다. 악의적인 프롬프트는 필터링되지 않습니다.",
|
||||
"behavior.scrubCredentialsHint": "에이전트에 반환하기 전에 도구 출력에서 발견된 API 키, 토큰 및 비밀번호를 자동으로 수정합니다.",
|
||||
"behavior.scrubCredentialsInfo": "도구 응답의 자격증명 패턴은 에이전트가 보기 전에 마스킹됩니다.",
|
||||
"behavior.scrubCredentialsOffInfo": "자격증명 스크러빙이 비활성화되어 있습니다. 도구 출력의 시크릿이 에이전트에 노출될 수 있습니다.",
|
||||
|
||||
"sessions.scope": "세션 범위",
|
||||
"sessions.scopeTip": "세션 분할 방법을 결정합니다. '발신자별'은 각 사용자에게 별도 세션을 제공하고, '전역'은 모든 사용자가 하나의 세션을 공유합니다.",
|
||||
"sessions.dmScope": "DM 범위",
|
||||
"sessions.dmScopeTip": "DM 세션이 키로 구분되는 방법입니다. '채널 피어별'이 권장 기본값입니다.",
|
||||
|
||||
"quota.title": "사용 할당량",
|
||||
"quota.description": "선택적 공급자, 채널 및 그룹별 재정의가 있는 사용자별 메시지 할당량 제한",
|
||||
"quota.enabled": "할당량 활성화",
|
||||
"quota.enabledTip": "활성화 시 사용자는 아래에 정의된 메시지 수로 제한됩니다.",
|
||||
"quota.defaultLimits": "기본 제한",
|
||||
"quota.defaultLimitsTip": "특정 재정의가 적용되지 않는 모든 사용자에 적용되는 폴백 할당량입니다.",
|
||||
"quota.hour": "시간당",
|
||||
"quota.hourTip": "시간당 허용되는 최대 메시지 수입니다.",
|
||||
"quota.day": "일당",
|
||||
"quota.dayTip": "일당 허용되는 최대 메시지 수입니다.",
|
||||
"quota.week": "주당",
|
||||
"quota.weekTip": "주당 허용되는 최대 메시지 수입니다.",
|
||||
"quota.keyLabel": "키",
|
||||
"quota.addOverride": "재정의 추가",
|
||||
"quota.allOptionsAdded": "모든 옵션이 이미 추가됨",
|
||||
"quota.providerOverrides": "공급자 재정의",
|
||||
"quota.providerOverridesTip": "LLM 공급자별 커스텀 할당량 제한입니다. 사용자가 특정 공급자를 통해 상호작용할 때 기본값을 재정의합니다.",
|
||||
"quota.channelOverrides": "채널 재정의",
|
||||
"quota.channelOverridesTip": "채널 유형별 커스텀 할당량 제한 (예: telegram, discord).",
|
||||
"quota.groupOverrides": "그룹 재정의",
|
||||
"quota.groupOverridesTip": "특정 그룹 채팅에 대한 커스텀 할당량 제한입니다.",
|
||||
"quota.selectProvider": "공급자 선택",
|
||||
"quota.selectChannel": "채널 선택",
|
||||
"quota.selectGroup": "그룹 선택",
|
||||
|
||||
"tools.title": "도구 프로파일",
|
||||
"tools.description": "모든 에이전트에 대한 기본 도구 가용성 및 시간당 호출 속도 제한",
|
||||
"tools.profile": "프로파일",
|
||||
"tools.profileTip": "사전 정의된 도구 세트입니다. '최소'는 안전한 읽기 전용 도구만 노출하고, '전체'는 모든 도구를 활성화합니다.",
|
||||
"tools.profilePlaceholder": "프로파일 선택...",
|
||||
"tools.rateLimitPerHour": "속도 제한 (시간당)",
|
||||
"tools.rateLimitPerHourTip": "에이전트당 시간당 허용되는 최대 도구 호출 수입니다. 비활성화하려면 0으로 설정하세요.",
|
||||
"tools.allow": "허용",
|
||||
"tools.allowTip": "선택된 프로파일에 포함되지 않은 추가 도구를 명시적으로 허용합니다.",
|
||||
"tools.allowPlaceholder": "허용할 도구 선택...",
|
||||
"tools.deny": "차단",
|
||||
"tools.denyTip": "선택된 프로파일에 포함되어 있어도 도구를 명시적으로 차단합니다.",
|
||||
"tools.denyPlaceholder": "차단할 도구 선택...",
|
||||
"tools.alsoAllow": "추가 허용",
|
||||
"tools.alsoAllowTip": "프로파일 위에 추가로 허용할 도구입니다. 제한적인 프로파일을 사용할 때 유용합니다.",
|
||||
"tools.alsoAllowPlaceholder": "추가 도구 선택...",
|
||||
"tools.execApproval": "명령 실행",
|
||||
"tools.execSecurity": "보안 모드",
|
||||
"tools.execSecurityTip": "에이전트가 실행할 수 있는 셸 명령을 제어합니다. '허용 목록'은 승인된 패턴으로 제한합니다.",
|
||||
"tools.execAskMode": "요청 모드",
|
||||
"tools.execAskModeTip": "명령 실행 전에 사용자 승인을 요청할 시기입니다.",
|
||||
"tools.execAllowlistLabel": "허용된 명령 (줄당 하나의 패턴)",
|
||||
"tools.webSearch": "웹 검색",
|
||||
"tools.webFetch": "웹 가져오기 및 브라우저 자동화",
|
||||
"tools.maxResults": "최대 결과",
|
||||
"tools.braveApiKey": "API 키",
|
||||
"tools.braveApiKeyTip": "Brave 검색을 사용하려면 필요합니다. https://brave.com/search/api/에서 키를 생성하세요.",
|
||||
"tools.braveApiKeyPlaceholder": "BSA…",
|
||||
"tools.braveApiKeyManaged": "서버에 이미 키가 저장되어 있으며 여기서 표시할 수 없습니다.",
|
||||
"tools.webFetchPolicy": "웹 가져오기 정책",
|
||||
"tools.webFetchPolicyTip": "에이전트가 가져올 수 있는 URL을 제어합니다. '허용 목록'은 승인된 도메인으로만 제한합니다.",
|
||||
"tools.allowedDomains": "허용된 도메인",
|
||||
"tools.blockedDomains": "차단된 도메인",
|
||||
"tools.blockedDomainsTip": "정책에 관계없이 항상 차단되는 도메인입니다. 줄당 하나씩, 와일드카드 지원 (*.example.com).",
|
||||
"tools.browser": "브라우저 자동화",
|
||||
"tools.browserEnabled": "활성화됨",
|
||||
"tools.browserHeadless": "헤드리스",
|
||||
"tools.scrubCredentials": "자격증명 스크러빙",
|
||||
|
||||
"tts.title": "텍스트 음성 변환",
|
||||
"tts.configured": "설정됨",
|
||||
"tts.disabled": "비활성화됨",
|
||||
"tts.providerInfo": "공급자: {{provider}} — 자동: {{auto}}",
|
||||
"tts.noProvider": "TTS 공급자가 설정되지 않았습니다.",
|
||||
"tts.manageLink": "TTS 설정 관리",
|
||||
|
||||
"cron.title": "Cron 스케줄러",
|
||||
"cron.description": "실패한 예약 작업의 재시도 동작",
|
||||
"cron.maxRetries": "최대 재시도",
|
||||
"cron.maxRetriesTip": "실패한 cron 태스크의 최대 재시도 횟수입니다.",
|
||||
"cron.baseDelay": "기본 지연",
|
||||
"cron.baseDelayTip": "재시도 간 초기 백오프 지연입니다 (예: 2s, 500ms).",
|
||||
"cron.maxDelay": "최대 지연",
|
||||
"cron.maxDelayTip": "재시도 간 최대 백오프 지연입니다 (예: 30s, 5m).",
|
||||
"cron.defaultTimezone": "기본 시간대",
|
||||
"cron.defaultTimezoneTip": "작업별로 설정되지 않은 경우 cron 표현식의 IANA 시간대입니다 (예: Asia/Seoul). 서버 시스템 시간대를 사용하려면 비워두세요.",
|
||||
"cron.defaultTimezonePlaceholder": "시스템 시간대",
|
||||
|
||||
"telemetry.title": "텔레메트리 (OpenTelemetry)",
|
||||
"telemetry.description": "OpenTelemetry 호환 백엔드로 추적 및 메트릭 내보내기",
|
||||
"telemetry.enabled": "활성화됨",
|
||||
"telemetry.enabledTip": "OpenTelemetry 추적 내보내기를 활성화합니다. 'otel' 빌드 태그가 필요합니다.",
|
||||
"telemetry.endpoint": "엔드포인트",
|
||||
"telemetry.endpointTip": "OTLP 내보내기 엔드포인트 (host:port). gRPC 기본값은 4317, HTTP는 4318입니다.",
|
||||
"telemetry.protocol": "프로토콜",
|
||||
"telemetry.protocolTip": "OTLP 내보내기의 전송 프로토콜입니다.",
|
||||
"telemetry.serviceName": "서비스 이름",
|
||||
"telemetry.serviceNameTip": "추적에 보고되는 서비스 이름입니다. 관찰 가능성 백엔드에서 필터링할 때 유용합니다.",
|
||||
"telemetry.insecure": "비보안",
|
||||
"telemetry.insecureTip": "OTLP 연결의 TLS를 비활성화합니다. 로컬/개발 환경에서만 사용하세요.",
|
||||
"telemetry.headers": "내보내기 헤더",
|
||||
"telemetry.headersTip": "각 OTLP 내보내기 요청과 함께 전송되는 추가 HTTP 헤더입니다 (예: 호스팅 백엔드의 API 키).",
|
||||
"telemetry.headerKeyPlaceholder": "헤더 이름",
|
||||
"telemetry.headerValuePlaceholder": "헤더 값",
|
||||
"telemetry.addHeader": "헤더 추가",
|
||||
|
||||
"bindings.title": "에이전트 바인딩",
|
||||
"bindings.description": "특정 채널, 피어 또는 계정을 지정된 에이전트로 라우팅합니다",
|
||||
"bindings.add": "바인딩 추가",
|
||||
"bindings.noBindings": "바인딩이 설정되지 않았습니다. 모든 메시지는 기본 에이전트로 라우팅됩니다.",
|
||||
"bindings.agentId": "에이전트 ID",
|
||||
"bindings.channel": "채널",
|
||||
"bindings.peerKind": "피어 종류",
|
||||
"bindings.peerId": "피어 ID",
|
||||
|
||||
"providers.title": "공급자 API 키",
|
||||
"providers.description": "설정된 LLM 공급자의 API 키와 기본 URL을 재정의합니다",
|
||||
"providers.noProviders": "설정 파일에서 공급자를 찾을 수 없습니다.",
|
||||
"providers.apiKey": "API 키",
|
||||
"providers.apiBaseUrl": "기본 URL",
|
||||
"providers.apiBaseUrlPlaceholder": "https://api.example.com/v1",
|
||||
"providers.managedVia": "{{envKey}} 환경 변수를 통해 관리됩니다.",
|
||||
|
||||
"channels.title": "채널 설정",
|
||||
"channels.description": "내장 채널 통합 설정 (토큰, 정책, 스트리밍)",
|
||||
"channels.noChannels": "설정 파일에서 채널을 찾을 수 없습니다.",
|
||||
"channels.enabled": "활성화됨",
|
||||
"channels.token": "토큰 / 시크릿",
|
||||
"channels.managedVia": "{{envKey}} 환경 변수를 통해 관리됩니다.",
|
||||
"channels.dmPolicy": "DM 정책",
|
||||
"channels.groupPolicy": "그룹 정책",
|
||||
"channels.allowFrom": "허용 출처",
|
||||
"channels.allowFromPlaceholder": "user_id_1, user_id_2, ...",
|
||||
"channels.dmStreaming": "DM 스트리밍",
|
||||
"channels.dmStreamingHint": "DM에서 점진적 메시지 업데이트",
|
||||
"channels.groupStreaming": "그룹 스트리밍",
|
||||
"channels.groupStreamingHint": "그룹에서 점진적 메시지 업데이트",
|
||||
"channels.streaming": "스트리밍",
|
||||
"channels.draftTransport": "임시 미리보기",
|
||||
"channels.draftTransportHint": "DM에서 스텔스 스트리밍 미리보기 (편집당 알림 없음)",
|
||||
"channels.reasoningStream": "추론 표시",
|
||||
"channels.reasoningStreamHint": "AI 사고 과정을 별도 메시지로 표시",
|
||||
"channels.reactionLevel": "반응 수준",
|
||||
"channels.connectionMode": "연결 모드",
|
||||
"channels.reactionOff": "끄기",
|
||||
"channels.reactionMinimal": "최소",
|
||||
"channels.reactionFull": "전체",
|
||||
"channels.connectionWebsocket": "WebSocket",
|
||||
"channels.connectionWebhook": "웹훅",
|
||||
|
||||
"bindings.any": "모두",
|
||||
|
||||
"toast": {
|
||||
"saved": "설정 저장됨",
|
||||
"saveFailed": "설정 저장 실패"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"title": "연락처",
|
||||
"description": "모든 채널 상호작용에서 자동으로 수집된 연락처.",
|
||||
"searchPlaceholder": "이름, 사용자명 또는 ID로 검색...",
|
||||
"filter": "필터",
|
||||
"emptyTitle": "연락처 없음",
|
||||
"emptyDescription": "사용자가 채널을 통해 에이전트와 상호작용하면 여기에 연락처가 나타납니다.",
|
||||
"noMatchTitle": "일치하는 연락처 없음",
|
||||
"noMatchDescription": "다른 검색어나 필터를 사용해 보세요.",
|
||||
"columns": {
|
||||
"name": "이름",
|
||||
"username": "사용자명",
|
||||
"senderId": "발신자 ID",
|
||||
"channelType": "채널",
|
||||
"peerKind": "유형",
|
||||
"lastSeen": "마지막 접속",
|
||||
"merged": "병합됨"
|
||||
},
|
||||
"permissionsNote": {
|
||||
"title": "연락처 이름에 대한 채널 권한",
|
||||
"telegram": "Telegram — 이름과 사용자명이 자동으로 제공됩니다.",
|
||||
"discord": "Discord — 표시 이름과 사용자명이 자동으로 제공됩니다.",
|
||||
"zalo": "Zalo — 표시 이름이 자동으로 제공됩니다.",
|
||||
"slack": "Slack — Slack API를 통해 표시 이름이 해석됩니다 (봇이 워크스페이스에 있어야 함).",
|
||||
"feishu": "Feishu/Lark — contact:user.base:readonly 권한이 필요합니다. 없으면 이름이 비어 있습니다."
|
||||
},
|
||||
"selectedCount": "{{count}}개 선택됨",
|
||||
"merge": {
|
||||
"button": "병합",
|
||||
"unmergeButton": "병합 해제",
|
||||
"dialogTitle": "연락처 병합",
|
||||
"dialogDescription": "선택한 연락처를 테넌트 사용자 신원에 연결합니다. 이를 통해 여러 채널에서 동일한 사람으로 식별됩니다.",
|
||||
"linkExisting": "기존 사용자에 연결",
|
||||
"createNew": "새 사용자 만들기",
|
||||
"selectUser": "테넌트 사용자 선택...",
|
||||
"displayName": "표시 이름",
|
||||
"displayNamePlaceholder": "예: 홍길동",
|
||||
"userId": "사용자 ID",
|
||||
"userIdPlaceholder": "고유 식별자",
|
||||
"confirm": "병합",
|
||||
"cancel": "취소",
|
||||
"success": "연락처가 성공적으로 병합되었습니다",
|
||||
"unmergeSuccess": "연락처 병합이 성공적으로 해제되었습니다",
|
||||
"error": "연락처 병합 실패",
|
||||
"unmergeError": "연락처 병합 해제 실패",
|
||||
"comingSoon": "이 기능은 개발 중이며 아직 사용할 수 없습니다."
|
||||
},
|
||||
"types": {
|
||||
"user": "사용자",
|
||||
"group": "그룹"
|
||||
},
|
||||
"filters": {
|
||||
"allChannels": "모든 채널",
|
||||
"allTypes": "모든 유형",
|
||||
"direct": "직접",
|
||||
"group": "그룹"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,149 @@
|
||||
{
|
||||
"title": "Cron",
|
||||
"description": "반복 에이전트 태스크 스케줄",
|
||||
"newJob": "새 작업",
|
||||
"emptyTitle": "Cron 작업 없음",
|
||||
"emptyDescription": "Cron 작업을 만들어 에이전트의 반복 태스크를 스케줄하세요.",
|
||||
"columns": {
|
||||
"enabled": "사용",
|
||||
"name": "이름",
|
||||
"schedule": "스케줄",
|
||||
"message": "메시지",
|
||||
"agent": "에이전트",
|
||||
"actions": "작업"
|
||||
},
|
||||
"runNow": "지금 실행",
|
||||
"running": "실행 중...",
|
||||
"runHistory": "실행 기록",
|
||||
"defaultAgent": "기본",
|
||||
"searchPlaceholder": "Cron 작업 검색...",
|
||||
"noMatchTitle": "일치하는 작업 없음",
|
||||
"noMatchDescription": "다른 검색어를 사용해 보세요.",
|
||||
"card": {
|
||||
"nextRun": "다음: {{time}}",
|
||||
"noNextRun": "다음 실행 없음",
|
||||
"defaultAgent": "기본 에이전트"
|
||||
},
|
||||
"create": {
|
||||
"title": "Cron 작업 만들기",
|
||||
"name": "이름",
|
||||
"namePlaceholder": "my-daily-task",
|
||||
"nameHint": "소문자, 숫자, 하이픈만",
|
||||
"agentId": "에이전트 ID (선택사항)",
|
||||
"agentIdPlaceholder": "기본값",
|
||||
"scheduleType": "스케줄 유형",
|
||||
"every": "반복",
|
||||
"cron": "Cron",
|
||||
"once": "한 번",
|
||||
"intervalSeconds": "간격 (초)",
|
||||
"cronExpression": "Cron 표현식",
|
||||
"cronHint": "표준 5자리 cron: 분 시 일 월 요일",
|
||||
"onceDesc": "이 작업은 지금부터 약 1분 후에 한 번 실행됩니다.",
|
||||
"message": "메시지",
|
||||
"messagePlaceholder": "에이전트가 무엇을 해야 하나요?",
|
||||
"cancel": "취소",
|
||||
"create": "만들기",
|
||||
"creating": "만드는 중..."
|
||||
},
|
||||
"enable": {
|
||||
"title": "Cron 작업 활성화",
|
||||
"description": "\"{{name}}\"을/를 활성화하시겠습니까? 스케줄에 따라 실행이 시작됩니다.",
|
||||
"confirmLabel": "활성화"
|
||||
},
|
||||
"disable": {
|
||||
"title": "Cron 작업 비활성화",
|
||||
"description": "\"{{name}}\"을/를 비활성화하시겠습니까? 다시 활성화할 때까지 실행이 중지됩니다.",
|
||||
"confirmLabel": "비활성화"
|
||||
},
|
||||
"delete": {
|
||||
"title": "Cron 작업 삭제",
|
||||
"description": "\"{{name}}\"을/를 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.",
|
||||
"confirmLabel": "삭제"
|
||||
},
|
||||
"runLog": {
|
||||
"title": "실행 로그: {{name}}",
|
||||
"noHistory": "아직 실행 기록 없음.",
|
||||
"loading": "불러오는 중..."
|
||||
},
|
||||
"detail": {
|
||||
"runNow": "지금 실행",
|
||||
"running": "실행 중...",
|
||||
"disable": "비활성화",
|
||||
"enable": "활성화",
|
||||
"delete": "삭제",
|
||||
"enabled": "활성화됨",
|
||||
"disabled": "비활성화됨",
|
||||
"runningStatus": "실행 중...",
|
||||
"payload": "페이로드",
|
||||
"empty": "(비어 있음)",
|
||||
"deliverDirect": "전달: 직접",
|
||||
"channel": "채널: {{name}}",
|
||||
"to": "대상: {{name}}",
|
||||
"edit": "편집",
|
||||
"preview": "미리보기",
|
||||
"noMessage": "설정된 메시지 없음",
|
||||
"lastError": "마지막 오류",
|
||||
"runHistory": "실행 기록",
|
||||
"refresh": "새로 고침",
|
||||
"noHistory": "아직 실행 기록 없음.",
|
||||
"inOut": "입력 {{input}} / 출력 {{output}}",
|
||||
"infoRows": {
|
||||
"schedule": "스케줄",
|
||||
"timezone": "시간대",
|
||||
"nextRun": "다음 실행",
|
||||
"lastRun": "마지막 실행",
|
||||
"lastStatus": "마지막 상태",
|
||||
"created": "생성됨",
|
||||
"updated": "업데이트됨",
|
||||
"autoDelete": "자동 삭제",
|
||||
"autoDeleteValue": "예 (1회)"
|
||||
},
|
||||
"tabs": {
|
||||
"overview": "개요",
|
||||
"history": "실행 기록"
|
||||
},
|
||||
"advanced": "고급",
|
||||
"saveFailed": "저장 실패",
|
||||
"schedule": "스케줄",
|
||||
"scheduleDesc": "타이밍 설정",
|
||||
"messageSection": "메시지",
|
||||
"messageSectionDesc": "에이전트가 해야 할 일",
|
||||
"agentStatus": "에이전트 & 상태",
|
||||
"agentStatusDesc": "에이전트 할당 및 작업 상태",
|
||||
"info": "정보",
|
||||
"infoDesc": "작업 메타데이터",
|
||||
"scheduling": "스케줄링",
|
||||
"schedulingDesc": "시간대 설정",
|
||||
"delivery": "전달",
|
||||
"deliveryDesc": "작업 출력을 채널이나 사용자에게 라우팅",
|
||||
"deliverToChannel": "채널로 전달",
|
||||
"channelLabel": "채널",
|
||||
"channelPlaceholder": "#general",
|
||||
"toLabel": "대상 (사용자)",
|
||||
"toPlaceholder": "user-id",
|
||||
"wakeHeartbeat": "실행 시 하트비트 깨우기",
|
||||
"wakeHeartbeatDesc": "작업 실행 시 에이전트 하트비트 트리거",
|
||||
"lifecycle": "라이프사이클",
|
||||
"lifecycleDesc": "작업 라이프사이클 설정",
|
||||
"deleteAfterRun": "실행 후 삭제",
|
||||
"deleteAfterRunDesc": "첫 번째 성공적인 실행 후 이 작업 자동 삭제",
|
||||
"timezone": "시간대",
|
||||
"timezoneDesc": "Cron 표현식의 시간대"
|
||||
},
|
||||
"stateless": "상태 없음",
|
||||
"statelessHelp": "세션 지속성 건너뜁니다. 각 실행은 이전 메시지 없이 새로 시작됩니다. 이전 컨텍스트가 필요 없는 cron의 토큰을 절약합니다.",
|
||||
"toast": {
|
||||
"created": "Cron 작업 생성됨",
|
||||
"createdDesc": "{{name}}이/가 추가되었습니다",
|
||||
"enabled": "Cron 작업 활성화됨",
|
||||
"disabled": "Cron 작업 비활성화됨",
|
||||
"deleted": "Cron 작업 삭제됨",
|
||||
"triggered": "Cron 작업 트리거됨",
|
||||
"failedCreate": "Cron 작업 생성 실패",
|
||||
"failedToggle": "Cron 작업 토글 실패",
|
||||
"failedDelete": "Cron 작업 삭제 실패",
|
||||
"failedRun": "Cron 작업 실행 실패",
|
||||
"updated": "작업 업데이트됨",
|
||||
"failedUpdate": "작업 업데이트 실패"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"title": "실시간 이벤트",
|
||||
"description": "모든 팀 및 에이전트의 실시간 WebSocket 이벤트",
|
||||
"live": "실시간",
|
||||
"paused": "일시 정지됨",
|
||||
"resume": "재개",
|
||||
"pause": "일시 정지",
|
||||
"clear": "지우기",
|
||||
"scrollToBottom": "맨 아래로 스크롤",
|
||||
"eventCount": "{{count}}개 이벤트",
|
||||
"eventCountPlural": "{{count}}개 이벤트",
|
||||
"categories": {
|
||||
"all": "전체",
|
||||
"task": "태스크",
|
||||
"message": "메시지",
|
||||
"agent": "에이전트",
|
||||
"teamCrud": "팀 CRUD",
|
||||
"agentLink": "에이전트 링크"
|
||||
},
|
||||
"filters": {
|
||||
"allTeams": "모든 팀",
|
||||
"allUsers": "모든 사용자",
|
||||
"allChats": "모든 채팅"
|
||||
},
|
||||
"global": "전체",
|
||||
"emptyTitle": "이벤트 없음",
|
||||
"emptyPaused": "이벤트 캡처가 일시 정지되었습니다. 재개하면 새 이벤트가 표시됩니다.",
|
||||
"emptyWaiting": "실시간 이벤트를 기다리는 중... 에이전트가 작업하면 이벤트가 나타납니다.",
|
||||
"detail": {
|
||||
"copy": "복사",
|
||||
"copied": "복사됨"
|
||||
},
|
||||
"toolBadge": { "error": "오류", "activated": "활성화됨", "ok": "확인" },
|
||||
"moreArgs": "...{{count}}개 더",
|
||||
"parentLabel": "부모:"
|
||||
}
|
||||
@@ -0,0 +1,131 @@
|
||||
{
|
||||
"title": "가져오기 & 내보내기",
|
||||
"description": "에이전트를 이식 가능한 아카이브로 내보내거나 가져옵니다.",
|
||||
"beta": "베타",
|
||||
"betaWarning": "가져오기 & 내보내기는 베타 버전입니다. 기존 에이전트로 가져오기 전에 항상 백업을 유지하세요.",
|
||||
"tabs": {
|
||||
"teams": "팀",
|
||||
"agents": "에이전트",
|
||||
"skillsMcp": "스킬 & MCP",
|
||||
"export": "내보내기",
|
||||
"import": "가져오기"
|
||||
},
|
||||
"comingSoon": {
|
||||
"title": "준비 중",
|
||||
"description": "이 섹션은 아직 사용할 수 없습니다."
|
||||
},
|
||||
"export": {
|
||||
"title": "에이전트 내보내기",
|
||||
"agent": "에이전트",
|
||||
"agentPlaceholder": "에이전트 선택",
|
||||
"sections": "섹션",
|
||||
"preset": "프리셋",
|
||||
"presetsLabel": "프리셋",
|
||||
"infoNote": "팀과 함께 에이전트를 내보내려면 팀 탭을 사용하세요.",
|
||||
"startExport": "내보내기",
|
||||
"exporting": "내보내는 중...",
|
||||
"preview": "미리보기",
|
||||
"previewLoading": "미리보기 불러오는 중...",
|
||||
"download": "다운로드",
|
||||
"done": "내보내기 완료",
|
||||
"errorTitle": "내보내기 실패",
|
||||
"selectAgent": "내보낼 에이전트를 선택하세요.",
|
||||
"noAgents": "사용 가능한 에이전트 없음."
|
||||
},
|
||||
"import": {
|
||||
"title": "에이전트 가져오기",
|
||||
"mode": "모드",
|
||||
"modeNew": "새 에이전트 만들기",
|
||||
"modeMerge": "기존에 병합",
|
||||
"agentKey": "에이전트 키",
|
||||
"agentKeyPlaceholder": "예: my-agent",
|
||||
"agentKeyHint": "소문자, 숫자, 하이픈. 비워두면 아카이브의 키를 사용합니다.",
|
||||
"targetAgent": "대상 에이전트",
|
||||
"targetAgentPlaceholder": "대상 에이전트 선택",
|
||||
"file": "아카이브 파일 (.tar.gz)",
|
||||
"filePlaceholder": "클릭하여 선택하거나 끌어다 놓기",
|
||||
"sections": "병합할 섹션",
|
||||
"startImport": "가져오기",
|
||||
"importing": "가져오는 중...",
|
||||
"done": "가져오기 완료",
|
||||
"agentCreated": "에이전트 생성됨: {{key}}",
|
||||
"mergedInto": "병합됨: {{key}}",
|
||||
"errorTitle": "가져오기 실패",
|
||||
"manifestLabel": "아카이브 정보",
|
||||
"agentFrom": "아카이브의 에이전트: {{key}}",
|
||||
"exportedAt": "내보내기 날짜: {{date}}"
|
||||
},
|
||||
"sections": {
|
||||
"config": "설정",
|
||||
"configDesc": "에이전트 설정 (모델, 도구 등)",
|
||||
"context_files": "컨텍스트 파일",
|
||||
"context_filesDesc": "에이전트 수준 컨텍스트 파일 (SOUL.md, IDENTITY.md 등)",
|
||||
"user_data": "사용자 데이터",
|
||||
"user_dataDesc": "모든 사용자별 데이터 (컨텍스트 파일, 프로필, 재정의)",
|
||||
"user_context_files": "사용자 컨텍스트 파일",
|
||||
"user_context_filesDesc": "사용자별 컨텍스트 파일 (사용자당 USER.md)",
|
||||
"user_profiles": "사용자 프로필",
|
||||
"user_profilesDesc": "사용자 워크스페이스 프로필 레코드",
|
||||
"user_overrides": "사용자 재정의",
|
||||
"user_overridesDesc": "사용자별 모델/공급자 재정의",
|
||||
"memory": "메모리",
|
||||
"memoryDesc": "모든 메모리 문서 (전체 + 사용자별)",
|
||||
"memory_global": "전체 메모리",
|
||||
"memory_globalDesc": "공유 메모리 문서",
|
||||
"memory_per_user": "사용자별 메모리",
|
||||
"memory_per_userDesc": "개별 사용자 메모리 문서",
|
||||
"knowledge_graph": "지식 그래프",
|
||||
"knowledge_graphDesc": "KG 엔티티 및 관계",
|
||||
"cron": "Cron 작업",
|
||||
"cronDesc": "예약된 태스크 (비활성화 상태로 가져옴)",
|
||||
"workspace": "워크스페이스 파일",
|
||||
"workspaceDesc": "에이전트 워크스페이스 디렉터리 파일",
|
||||
"sessions": "세션",
|
||||
"sessionsDesc": "채팅 세션 및 메시지",
|
||||
"media": "미디어",
|
||||
"mediaDesc": "업로드된 미디어 파일",
|
||||
"comingSoon": "준비 중"
|
||||
},
|
||||
"presets": {
|
||||
"minimal": "최소",
|
||||
"standard": "표준",
|
||||
"complete": "전체"
|
||||
},
|
||||
"teamExportNote": "팀 내보내기에는 모든 멤버 에이전트와 해당 데이터(컨텍스트 파일, 메모리, 지식 그래프, cron, 워크스페이스)가 포함됩니다.",
|
||||
"teamSelectPlaceholder": "팀 선택...",
|
||||
"teamDropHere": "팀 아카이브 파일을 여기에 놓거나 클릭하여 찾아보기",
|
||||
"teamDropFormats": ".tar.gz 파일 지원",
|
||||
"teamDontClose": "이 페이지를 닫지 마세요 — 가져오기 진행 중",
|
||||
"teamImportAnother": "다른 것 가져오기",
|
||||
"teamTryAgain": "다시 시도",
|
||||
"teamChangeFile": "파일 변경",
|
||||
"teamPreview": {
|
||||
"members": "{{count}}명 멤버",
|
||||
"agents": "{{count}}개 에이전트",
|
||||
"tasks": "{{count}}개 태스크",
|
||||
"links": "{{count}}개 링크",
|
||||
"loading": "미리보기 불러오는 중...",
|
||||
"error": "미리보기 로드 실패"
|
||||
},
|
||||
"skillsMcp": {
|
||||
"skillsTab": "스킬",
|
||||
"mcpTab": "MCP 서버",
|
||||
"skillsNote": "사용자 지정 스킬만 내보냅니다 (시스템 스킬 제외).",
|
||||
"mcpNote": "MCP 서버 설정은 API 키, 환경 변수, 헤더 없이 내보냅니다. 가져오기 후 시크릿을 다시 입력해야 합니다.",
|
||||
"customSkills": "{{count}}개 사용자 지정 스킬",
|
||||
"grants": "{{count}}개 에이전트 권한",
|
||||
"servers": "{{count}}개 서버",
|
||||
"noSkills": "내보낼 사용자 지정 스킬이 없습니다.",
|
||||
"noServers": "내보낼 MCP 서버가 없습니다.",
|
||||
"exportSkills": "스킬 내보내기",
|
||||
"exportMcp": "MCP 서버 내보내기",
|
||||
"importSkills": "스킬 가져오기",
|
||||
"importMcp": "MCP 서버 가져오기",
|
||||
"importedSkills": "스킬 가져오기 완료",
|
||||
"skippedSkills": "스킬 건너뜀 (이미 존재)",
|
||||
"importedServers": "서버 가져오기 완료",
|
||||
"skippedServers": "서버 건너뜀 (이미 존재)",
|
||||
"dropSkills": "스킬 아카이브 파일을 여기에 놓거나 클릭하여 찾아보기",
|
||||
"dropMcp": "MCP 아카이브 파일을 여기에 놓거나 클릭하여 찾아보기"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"subtitle": "게이트웨이 대시보드에 로그인",
|
||||
"selectTenant": "테넌트 선택",
|
||||
"selectTenantDescription": "계속하려면 테넌트를 선택하세요",
|
||||
"allTenantsOption": "모든 테넌트",
|
||||
"allTenantsDescription": "모든 테넌트의 데이터 보기",
|
||||
"noAccess": "접근 불가",
|
||||
"noAccessDescription": "접근 가능한 테넌트가 없습니다. 관리자에게 문의하세요.",
|
||||
"tabs": {
|
||||
"token": "토큰",
|
||||
"pairing": "페어링"
|
||||
},
|
||||
"token": {
|
||||
"userId": "사용자 ID",
|
||||
"userIdPlaceholder": "your-user-id",
|
||||
"userIdHint": "전체 시스템 접근은 \"system\" 사용",
|
||||
"gatewayToken": "게이트웨이 토큰",
|
||||
"tokenPlaceholder": "Bearer 토큰",
|
||||
"connect": "연결",
|
||||
"connecting": "연결 중...",
|
||||
"errorInvalidCredentials": "인증 정보가 올바르지 않습니다. 토큰과 사용자 ID를 확인하세요.",
|
||||
"errorServer": "서버에서 {{status}}를 반환했습니다. 다시 시도해 주세요.",
|
||||
"errorCannotConnect": "게이트웨이에 연결할 수 없습니다. 서버가 실행 중인지 확인하세요."
|
||||
},
|
||||
"pairing": {
|
||||
"userId": "사용자 ID",
|
||||
"userIdPlaceholder": "your-user-id",
|
||||
"noTokenNeeded": "토큰 불필요. 관리자가 승인할 페어링 코드가 생성됩니다.",
|
||||
"requestAccess": "접근 요청",
|
||||
"connecting": "연결 중...",
|
||||
"errorConnectionLost": "연결이 끊겼습니다. 다시 시도해 주세요.",
|
||||
"errorCannotConnect": "게이트웨이에 연결할 수 없습니다.",
|
||||
"askAdmin": "관리자에게 이 코드를 승인해 달라고 요청하세요:",
|
||||
"orRun": "또는 실행:",
|
||||
"waitingForApproval": "승인 대기 중...",
|
||||
"cancel": "취소",
|
||||
"approved": "접근이 승인되었습니다! 리디렉션 중..."
|
||||
},
|
||||
"noAccessHint": "관리자에게 테넌트에 추가해 달라고 요청하거나 다른 계정을 사용하세요.",
|
||||
"logout": "로그아웃"
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"title": "로그",
|
||||
"description": "실시간 로그 스트리밍",
|
||||
"descriptionLive": "{{level}} 레벨 실시간 스트리밍 중",
|
||||
"live": "실시간",
|
||||
"start": "시작",
|
||||
"stop": "정지",
|
||||
"clear": "지우기",
|
||||
"filterPlaceholder": "로그 필터...",
|
||||
"logLevelTitle": "로그 레벨",
|
||||
"emptyWaiting": "로그를 기다리는 중...",
|
||||
"emptyFilter": "필터에 일치하는 로그가 없습니다.",
|
||||
"emptyStart": "\"시작\"을 클릭하면 로그 스트리밍이 시작됩니다.",
|
||||
"count": "{{filtered}}/{{total}}"
|
||||
}
|
||||
@@ -0,0 +1,133 @@
|
||||
{
|
||||
"title": "MCP 서버",
|
||||
"description": "Model Context Protocol 서버 연결 관리",
|
||||
"addServer": "서버 추가",
|
||||
"searchPlaceholder": "서버 검색...",
|
||||
"emptyTitle": "MCP 서버 없음",
|
||||
"emptyDescription": "첫 번째 MCP 서버를 추가하여 시작하세요.",
|
||||
"noMatchTitle": "일치하는 서버 없음",
|
||||
"noMatchDescription": "다른 검색어를 사용해 보세요.",
|
||||
"columns": {
|
||||
"name": "이름",
|
||||
"transport": "전송",
|
||||
"tools": "도구",
|
||||
"agents": "에이전트",
|
||||
"enabled": "사용",
|
||||
"createdBy": "생성자",
|
||||
"actions": "작업"
|
||||
},
|
||||
"viewTools": "도구 보기",
|
||||
"manageGrants": "권한 관리",
|
||||
"reconnect": "재연결",
|
||||
"delete": {
|
||||
"title": "MCP 서버 삭제",
|
||||
"description": "\"{{name}}\"을/를 삭제하시겠습니까? 관련된 모든 권한도 제거됩니다.",
|
||||
"confirmLabel": "삭제"
|
||||
},
|
||||
"form": {
|
||||
"createTitle": "MCP 서버 추가",
|
||||
"editTitle": "MCP 서버 편집",
|
||||
"name": "이름 *",
|
||||
"nameHint": "소문자, 숫자, 하이픈만",
|
||||
"displayName": "표시 이름",
|
||||
"displayNamePlaceholder": "My MCP Server",
|
||||
"transport": "전송 *",
|
||||
"command": "명령 *",
|
||||
"args": "인수 (공백으로 구분)",
|
||||
"argsPlaceholder": "--flag1 --flag2=\"값에 공백 포함\"",
|
||||
"url": "URL *",
|
||||
"headers": "헤더",
|
||||
"headerKeyPlaceholder": "헤더 이름",
|
||||
"headerValuePlaceholder": "헤더 값",
|
||||
"addHeader": "헤더 추가",
|
||||
"env": "환경 변수",
|
||||
"envKeyPlaceholder": "변수 이름",
|
||||
"envValuePlaceholder": "값",
|
||||
"addVariable": "변수 추가",
|
||||
"toolPrefix": "도구 접두사",
|
||||
"toolPrefixHint": "비어 있으면 이름에서 자동으로 파생됩니다.",
|
||||
"timeout": "제한 시간 (초)",
|
||||
"enabled": "사용",
|
||||
"testConnection": "연결 테스트",
|
||||
"testing": "테스트 중...",
|
||||
"toolsFound": "{{count}}개 도구 발견",
|
||||
"cancel": "취소",
|
||||
"create": "만들기",
|
||||
"update": "업데이트",
|
||||
"saving": "저장 중...",
|
||||
"errors": {
|
||||
"nameRequired": "이름과 전송이 필요합니다",
|
||||
"nameSlug": "이름은 유효한 슬러그여야 합니다 (소문자, 숫자, 하이픈만)",
|
||||
"commandRequired": "stdio 전송에는 명령이 필요합니다",
|
||||
"urlRequired": "SSE/HTTP 전송에는 URL이 필요합니다",
|
||||
"connectionFailed": "연결 실패"
|
||||
},
|
||||
"requireUserCredentials": "사용자 자격 증명 필요",
|
||||
"requireUserCredentialsHint": "각 사용자가 자신의 자격 증명을 설정해야 합니다. 개인 자격 증명이 없는 사용자는 서버를 사용할 수 없습니다."
|
||||
},
|
||||
"grants": {
|
||||
"title": "에이전트 권한 - {{name}}",
|
||||
"currentGrants": "현재 권한",
|
||||
"allToolsAllowed": "모든 도구 허용됨",
|
||||
"addGrant": "에이전트 권한 추가",
|
||||
"editGrant": "권한 편집",
|
||||
"selectAgent": "에이전트 선택...",
|
||||
"toolAllowList": "도구 허용 목록 (선택사항)",
|
||||
"toolDenyList": "도구 거부 목록 (선택사항)",
|
||||
"allowPlaceholder": "허용할 도구 선택...",
|
||||
"denyPlaceholder": "거부할 도구 선택...",
|
||||
"grant": "권한 부여",
|
||||
"update": "업데이트",
|
||||
"cancel": "취소",
|
||||
"agentRequired": "에이전트가 필요합니다",
|
||||
"failedGrant": "권한 부여 실패",
|
||||
"failedRevoke": "권한 취소 실패"
|
||||
},
|
||||
"tools": {
|
||||
"title": "도구 — {{name}}",
|
||||
"prefix": "접두사:",
|
||||
"discovering": "도구 발견 중...",
|
||||
"noToolsTitle": "발견된 도구 없음",
|
||||
"noToolsDescription": "서버가 오프라인이거나 등록된 도구가 없습니다.",
|
||||
"failedLoad": "도구 로드 실패",
|
||||
"filterPlaceholder": "도구 필터...",
|
||||
"noMatch": "일치하는 도구 없음"
|
||||
},
|
||||
"toast": {
|
||||
"created": "MCP 서버 생성됨",
|
||||
"updated": "MCP 서버 업데이트됨",
|
||||
"deleted": "MCP 서버 삭제됨",
|
||||
"failedCreate": "MCP 서버 생성 실패",
|
||||
"failedUpdate": "MCP 서버 업데이트 실패",
|
||||
"failedDelete": "MCP 서버 삭제 실패",
|
||||
"reconnected": "MCP 서버 연결 초기화됨",
|
||||
"failedReconnect": "MCP 서버 재연결 실패"
|
||||
},
|
||||
"userCredentials": {
|
||||
"title": "내 자격 증명",
|
||||
"description": "이 MCP 서버에 대한 개인 자격 증명을 설정하세요. 내 계정에 대해서만 서버 기본값을 재정의합니다.",
|
||||
"titleAdmin": "사용자 자격 증명",
|
||||
"descriptionAdmin": "이 MCP 서버에서 특정 사용자의 자격 증명을 설정합니다. 선택한 사용자에 대해서만 서버 기본값을 재정의합니다.",
|
||||
"selectUser": "사용자 선택",
|
||||
"apiKey": "API 키",
|
||||
"apiKeyPlaceholder": "현재 유지하려면 비워두기",
|
||||
"headers": "헤더",
|
||||
"env": "환경 변수",
|
||||
"headerPlaceholder": "KEY=VALUE, 줄당 하나",
|
||||
"save": "저장",
|
||||
"delete": "삭제",
|
||||
"deleteAll": "전체 삭제",
|
||||
"cancel": "취소",
|
||||
"saved": "자격 증명 저장됨",
|
||||
"deleted": "자격 증명 삭제됨",
|
||||
"hasApiKey": "API 키 설정됨",
|
||||
"hasHeaders": "헤더 설정됨",
|
||||
"hasEnv": "환경 변수 설정됨",
|
||||
"noCredentials": "설정된 자격 증명 없음",
|
||||
"addHeader": "헤더 추가",
|
||||
"addEnv": "변수 추가",
|
||||
"saveFailed": "자격 증명 저장 실패",
|
||||
"deleteFailed": "자격 증명 삭제 실패",
|
||||
"mergeHint": "채팅 사용자(Telegram, Discord 등)는 연락처 페이지를 통해 먼저 테넌트 사용자로 병합되어야 사용자별 자격 증명을 가질 수 있습니다."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,239 @@
|
||||
{
|
||||
"title": "메모리",
|
||||
"description": "에이전트 메모리 문서, 청크, 임베딩 탐색 및 관리",
|
||||
"search": "검색",
|
||||
"create": "만들기",
|
||||
"indexAll": "전체 인덱싱",
|
||||
"indexing": "인덱싱 중...",
|
||||
"emptyTitle": "메모리 문서 없음",
|
||||
"emptyAgentDescription": "이 에이전트에는 아직 메모리 문서가 없습니다.",
|
||||
"emptyGlobalDescription": "모든 에이전트에서 메모리 문서를 찾을 수 없습니다.",
|
||||
"filters": {
|
||||
"agent": "에이전트",
|
||||
"allAgents": "모든 에이전트",
|
||||
"scope": "범위",
|
||||
"allScope": "전체 (전체 + 개인)",
|
||||
"selectAgent": "에이전트 선택"
|
||||
},
|
||||
"tabs": {
|
||||
"documents": "문서",
|
||||
"knowledgeGraph": "지식 그래프"
|
||||
},
|
||||
"columns": {
|
||||
"path": "경로",
|
||||
"agent": "에이전트",
|
||||
"scope": "범위",
|
||||
"hash": "해시",
|
||||
"updated": "업데이트됨",
|
||||
"actions": "작업"
|
||||
},
|
||||
"scopeLabel": {
|
||||
"personal": "개인",
|
||||
"global": "전체"
|
||||
},
|
||||
"delete": {
|
||||
"title": "메모리 문서 삭제",
|
||||
"description": "\"{{path}}\"를 삭제하시겠습니까? 관련된 모든 청크와 임베딩도 삭제됩니다.",
|
||||
"confirmLabel": "삭제"
|
||||
},
|
||||
"createDialog": {
|
||||
"title": "메모리 문서 만들기",
|
||||
"path": "경로 *",
|
||||
"pathPlaceholder": "예: notes/project-overview.md",
|
||||
"content": "내용 *",
|
||||
"contentPlaceholder": "문서 내용...",
|
||||
"agentId": "에이전트 *",
|
||||
"agentIdPlaceholder": "에이전트 선택...",
|
||||
"scope": "범위",
|
||||
"existingScope": "기존 범위",
|
||||
"customScope": "사용자 지정",
|
||||
"selectGroupUser": "그룹/사용자 선택...",
|
||||
"scopeHint": "전체 = 모든 사용자 공유. 개인 = 특정 사용자 또는 그룹 채팅으로 범위 지정.",
|
||||
"autoIndex": "생성 후 자동 인덱싱",
|
||||
"agentRequired": "에이전트를 선택해 주세요",
|
||||
"pathRequired": "경로가 필요합니다",
|
||||
"contentRequired": "내용이 필요합니다",
|
||||
"cancel": "취소",
|
||||
"create": "만들기",
|
||||
"creating": "만드는 중..."
|
||||
},
|
||||
"documentDialog": {
|
||||
"title": "메모리 문서",
|
||||
"path": "경로:",
|
||||
"agent": "에이전트:",
|
||||
"scope": "범위:",
|
||||
"hash": "해시:",
|
||||
"updated": "업데이트됨:",
|
||||
"content": "내용",
|
||||
"chunks": "청크 ({{count}}개)",
|
||||
"chunkIndex": "청크 {{index}}",
|
||||
"noChunks": "청크 없음",
|
||||
"embedded": "임베딩됨",
|
||||
"noEmbedding": "임베딩 없음"
|
||||
},
|
||||
"searchDialog": {
|
||||
"title": "메모리 검색",
|
||||
"query": "검색어",
|
||||
"queryPlaceholder": "검색어 입력...",
|
||||
"agentId": "에이전트 ID",
|
||||
"agentIdPlaceholder": "에이전트로 필터...",
|
||||
"limit": "제한",
|
||||
"search": "검색",
|
||||
"searching": "검색 중...",
|
||||
"results": "결과",
|
||||
"noResults": "결과 없음",
|
||||
"similarity": "유사도",
|
||||
"path": "경로:"
|
||||
},
|
||||
"kg": {
|
||||
"pageTitle": "지식 그래프",
|
||||
"pageDescription": "에이전트 메모리에서 추출된 엔티티와 관계를 탐색합니다.",
|
||||
"selectAgentTitle": "에이전트 선택",
|
||||
"selectAgentDescription": "에이전트를 선택하면 지식 그래프를 볼 수 있습니다.",
|
||||
"emptyTitle": "엔티티 없음",
|
||||
"emptyDescription": "이 에이전트의 지식 그래프 엔티티가 아직 없습니다.",
|
||||
"emptySearchDescription": "검색에 일치하는 엔티티가 없습니다.",
|
||||
"stats": {
|
||||
"entities": "엔티티: {{count}}개",
|
||||
"relations": "관계: {{count}}개"
|
||||
},
|
||||
"search": {
|
||||
"placeholder": "엔티티 검색...",
|
||||
"button": "검색",
|
||||
"clear": "지우기"
|
||||
},
|
||||
"refresh": "새로 고침",
|
||||
"extract": "추출",
|
||||
"columns": {
|
||||
"name": "이름",
|
||||
"type": "유형",
|
||||
"description": "설명",
|
||||
"confidence": "신뢰도",
|
||||
"actions": "작업",
|
||||
"observations": "관찰",
|
||||
"relations": "관계"
|
||||
},
|
||||
"dedup": {
|
||||
"button": "중복 제거",
|
||||
"title": "중복 엔티티",
|
||||
"description": "임베딩 유사도를 기반으로 중복 가능성이 있는 엔티티를 검토하고 병합합니다.",
|
||||
"noCandidates": "중복 후보를 찾을 수 없습니다.",
|
||||
"similar": "유사함",
|
||||
"merge": "병합",
|
||||
"dismiss": "무시",
|
||||
"merged": "엔티티가 성공적으로 병합되었습니다.",
|
||||
"mergeFailed": "엔티티 병합 실패.",
|
||||
"dismissed": "후보가 무시되었습니다.",
|
||||
"dismissFailed": "후보 무시 실패.",
|
||||
"scan": "전체 검사",
|
||||
"scanning": "검사 중...",
|
||||
"scanComplete": "검사 완료.",
|
||||
"scanFailed": "검사 실패.",
|
||||
"count": "{{count}}개 후보"
|
||||
},
|
||||
"deleteEntity": {
|
||||
"title": "엔티티 삭제",
|
||||
"description": "\"{{name}}\"을/를 삭제하시겠습니까? 관련된 모든 관계도 삭제됩니다.",
|
||||
"confirmLabel": "삭제"
|
||||
},
|
||||
"entity": {
|
||||
"externalId": "외부 ID:",
|
||||
"confidence": "신뢰도:",
|
||||
"description": "설명:",
|
||||
"source": "출처:",
|
||||
"properties": "속성:",
|
||||
"relations": "관계",
|
||||
"traverse": "순회",
|
||||
"depthOption": "{{depth}}홉",
|
||||
"tabs": {
|
||||
"table": "테이블",
|
||||
"graph": "그래프"
|
||||
},
|
||||
"traversing": "순회 중...",
|
||||
"loading": "불러오는 중...",
|
||||
"noRelations": "관계가 없습니다.",
|
||||
"showAll": "전체 보기",
|
||||
"traversalResults": "순회 결과 ({{count}}개)",
|
||||
"direction": {
|
||||
"outgoing": "→ 나가는",
|
||||
"incoming": "← 들어오는"
|
||||
},
|
||||
"columns": {
|
||||
"direction": "방향",
|
||||
"relation": "관계",
|
||||
"target": "대상",
|
||||
"confidence": "신뢰도"
|
||||
}
|
||||
},
|
||||
"extractDialog": {
|
||||
"title": "텍스트에서 엔티티 추출",
|
||||
"providerLabel": "추출 공급자",
|
||||
"modelLabel": "추출 모델",
|
||||
"textLabel": "추출할 텍스트",
|
||||
"textPlaceholder": "엔티티와 관계를 추출할 대화 텍스트, 메모 또는 내용을 붙여넣기...",
|
||||
"extract": "추출",
|
||||
"extracting": "추출 중...",
|
||||
"cancel": "취소",
|
||||
"agentId": "에이전트 ID",
|
||||
"agentIdPlaceholder": "전체는 비워두기"
|
||||
},
|
||||
"graphView": {
|
||||
"loading": "그래프 불러오는 중...",
|
||||
"empty": "시각화할 엔티티 없음",
|
||||
"nodes": "{{count}}개 노드",
|
||||
"edges": "{{count}}개 엣지",
|
||||
"selected": "선택됨: {{name}}",
|
||||
"limitNote": "전체 {{total}}개 중 상위 {{limit}}개 표시",
|
||||
"limitHint": "성능을 위해 그래프는 {{limit}}개 엔티티로 제한됩니다. 전체 {{total}}개 엔티티를 탐색하려면 테이블 보기를 사용하세요."
|
||||
}
|
||||
},
|
||||
"toast": {
|
||||
"created": "메모리 문서 생성됨",
|
||||
"deleted": "메모리 문서 삭제됨",
|
||||
"indexed": "모든 문서 인덱싱됨",
|
||||
"failedCreate": "문서 생성 실패",
|
||||
"failedDelete": "문서 삭제 실패",
|
||||
"failedIndex": "문서 인덱싱 실패",
|
||||
"entitySaved": "엔티티 저장됨",
|
||||
"entitySaveFailed": "엔티티 저장 실패",
|
||||
"entityDeleted": "엔티티 삭제됨",
|
||||
"entityDeleteFailed": "엔티티 삭제 실패",
|
||||
"extractionComplete": "추출 완료",
|
||||
"extractionFailed": "추출 실패",
|
||||
"traversalFailed": "순회 실패",
|
||||
"unknownError": "알 수 없는 오류",
|
||||
"docCreated": "문서 생성됨",
|
||||
"docCreateFailed": "문서 생성 실패",
|
||||
"docUpdated": "문서 업데이트됨",
|
||||
"docUpdateFailed": "문서 업데이트 실패",
|
||||
"docDeleted": "문서 삭제됨",
|
||||
"docDeleteFailed": "문서 삭제 실패",
|
||||
"docIndexed": "문서 인덱싱됨",
|
||||
"docIndexFailed": "문서 인덱싱 실패",
|
||||
"allIndexed": "모든 문서 인덱싱됨",
|
||||
"allIndexFailed": "전체 인덱싱 실패",
|
||||
"searchFailed": "검색 실패",
|
||||
"docLoadFailed": "문서 로드 실패"
|
||||
},
|
||||
"tabs": {
|
||||
"documents": "문서",
|
||||
"episodic": "에피소딕 메모리"
|
||||
},
|
||||
"episodic": {
|
||||
"noData": "아직 에피소딕 메모리 없음",
|
||||
"noDataHint": "요약은 에이전트 세션에서 자동으로 생성됩니다",
|
||||
"selectAgent": "에피소딕 메모리를 보려면 에이전트를 선택하세요",
|
||||
"searchPlaceholder": "에피소딕 메모리 검색...",
|
||||
"clearSearch": "지우기",
|
||||
"results": "결과",
|
||||
"turns": "턴",
|
||||
"tokens": "토큰",
|
||||
"expand": "전체 요약 보기",
|
||||
"collapse": "요약 숨기기",
|
||||
"source": {
|
||||
"session": "세션",
|
||||
"v2_daily": "일별",
|
||||
"manual": "수동"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"title": "노드",
|
||||
"description": "페어링된 기기 및 대기 중인 페어링 요청 관리",
|
||||
"emptyTitle": "기기 없음",
|
||||
"emptyDescription": "페어링된 기기 또는 대기 중인 페어링 요청이 없습니다.",
|
||||
"pendingRequests": "대기 중인 요청 ({{count}}개)",
|
||||
"pairedDevices": "페어링된 기기 ({{count}}개)",
|
||||
"sender": "발신자:",
|
||||
"chat": "채팅:",
|
||||
"columns": {
|
||||
"channel": "채널",
|
||||
"senderId": "발신자 ID",
|
||||
"paired": "페어링됨",
|
||||
"by": "처리자",
|
||||
"actions": "작업"
|
||||
},
|
||||
"approve": "승인",
|
||||
"deny": "거부",
|
||||
"revoke": "취소",
|
||||
"confirmApprove": {
|
||||
"title": "페어링 승인",
|
||||
"description": "{{channel}}:{{senderId}}의 페어링 요청을 승인하시겠습니까 (코드: {{code}})? 이 기기가 에이전트와 상호작용할 수 있게 됩니다.",
|
||||
"confirmLabel": "승인"
|
||||
},
|
||||
"confirmDeny": {
|
||||
"title": "페어링 거부",
|
||||
"description": "{{channel}}:{{senderId}}의 페어링 요청을 거부하시겠습니까 (코드: {{code}})? 요청이 제거됩니다.",
|
||||
"confirmLabel": "거부"
|
||||
},
|
||||
"confirmRevoke": {
|
||||
"title": "기기 취소",
|
||||
"description": "{{channel}}:{{senderId}}의 페어링을 취소하시겠습니까? 기기는 다시 페어링해야 합니다.",
|
||||
"confirmLabel": "취소"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
{
|
||||
"title": "대시보드",
|
||||
"description": "게이트웨이 개요 및 할당량 사용량",
|
||||
"tabs": {
|
||||
"overview": "개요",
|
||||
"usage": "사용량"
|
||||
},
|
||||
"statCards": {
|
||||
"requestsToday": "오늘 요청",
|
||||
"tokensToday": "오늘 토큰",
|
||||
"costToday": "오늘 비용",
|
||||
"agents": "에이전트",
|
||||
"channels": "채널",
|
||||
"channelsAttention": "{{count}}개 주의 필요",
|
||||
"running": "실행 중",
|
||||
"online": "온라인",
|
||||
"users": "{{count}}명 사용자",
|
||||
"inOut": "{{input}} in / {{output}} out"
|
||||
},
|
||||
"providers": {
|
||||
"noProvidersTitle": "설정된 LLM 공급자 없음",
|
||||
"noEnabledTitle": "활성화된 LLM 공급자 없음",
|
||||
"noProvidersDesc": "에이전트가 작동하려면 LLM 공급자를 최소 한 개 추가해야 합니다. ",
|
||||
"noEnabledDesc": "모든 공급자가 현재 비활성화되어 있습니다. 에이전트를 사용하려면 최소 한 개를 활성화하세요. ",
|
||||
"goToSettings": "공급자 설정으로 이동"
|
||||
},
|
||||
"systemHealth": {
|
||||
"title": "시스템 상태",
|
||||
"uptime": "업타임",
|
||||
"version": "버전",
|
||||
"database": "데이터베이스",
|
||||
"providers": "공급자",
|
||||
"tools": "도구",
|
||||
"sessions": "세션",
|
||||
"clients": "클라이언트",
|
||||
"channels": "채널",
|
||||
"needsAttention": "주의 필요",
|
||||
"channelsNeedingAttention": "{{count}}개 채널",
|
||||
"failedCount": "{{count}}개 실패",
|
||||
"warningCountOne": "{{count}}개 경고",
|
||||
"warningCountOther": "{{count}}개 경고",
|
||||
"moreAttention": "+{{count}}개 더",
|
||||
"active": "{{count}}개 활성",
|
||||
"none": "없음",
|
||||
"runtimes": "런타임"
|
||||
},
|
||||
"connectedClients": {
|
||||
"title": "연결된 클라이언트",
|
||||
"noClients": "연결된 클라이언트 없음",
|
||||
"columns": {
|
||||
"ip": "IP",
|
||||
"user": "사용자",
|
||||
"role": "역할",
|
||||
"connected": "연결됨"
|
||||
},
|
||||
"you": "나"
|
||||
},
|
||||
"cronJobs": {
|
||||
"title": "Cron 작업",
|
||||
"manage": "관리",
|
||||
"noJobs": "설정된 Cron 작업 없음",
|
||||
"disabled": "비활성화됨"
|
||||
},
|
||||
"recentRequests": {
|
||||
"title": "최근 요청",
|
||||
"viewAll": "전체 보기",
|
||||
"noRequests": "최근 요청 없음",
|
||||
"columns": {
|
||||
"time": "시간",
|
||||
"name": "이름",
|
||||
"user": "사용자",
|
||||
"channel": "채널",
|
||||
"tokens": "토큰",
|
||||
"duration": "소요 시간",
|
||||
"status": "상태"
|
||||
}
|
||||
},
|
||||
"quotaUsage": {
|
||||
"title": "할당량 사용량",
|
||||
"columns": {
|
||||
"userGroup": "사용자 / 그룹",
|
||||
"hour": "시간",
|
||||
"day": "일",
|
||||
"week": "주"
|
||||
},
|
||||
"noLimit": "제한 없음"
|
||||
},
|
||||
"embedding": {
|
||||
"title": "임베딩",
|
||||
"notConfigured": "설정되지 않음",
|
||||
"configure": "공급자에서 설정 →"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
{
|
||||
"title": "런타임 & 패키지",
|
||||
"description": "활성 GoClaw 런타임 컨테이너 내 런타임 및 설치된 패키지 관리",
|
||||
"runtimes": {
|
||||
"title": "런타임",
|
||||
"scopeTitle": "컨테이너 범위 런타임 상태",
|
||||
"scopeDesc": "이 검사는 활성 GoClaw 런타임 컨테이너 내에서 실행됩니다. 호스트에 설치된 런타임, 셸 프로파일 변경, nvm 관리 바이너리는 여기서 사용되지 않습니다.",
|
||||
"minimalImageHint": "게시된 최신 이미지는 최소 구성이므로 Python이나 Node 런타임이 없을 수 있습니다. python, node 또는 full 이미지 변형을 사용하거나, ENABLE_PYTHON=true / ENABLE_NODE=true / ENABLE_FULL_SKILLS=true로 재빌드하거나, 이 컨테이너에 런타임을 수동으로 설치하세요.",
|
||||
"available": "사용 가능",
|
||||
"missing": "없음",
|
||||
"missingInContainer": "컨테이너에 없음"
|
||||
},
|
||||
"system": {
|
||||
"title": "시스템 패키지",
|
||||
"placeholder": "패키지 이름 (예: github-cli)"
|
||||
},
|
||||
"pip": {
|
||||
"title": "Python 패키지",
|
||||
"placeholder": "패키지 이름 (예: pandas)"
|
||||
},
|
||||
"npm": {
|
||||
"title": "Node 패키지",
|
||||
"placeholder": "패키지 이름 (예: typescript)"
|
||||
},
|
||||
"actions": {
|
||||
"install": "설치",
|
||||
"uninstall": "제거",
|
||||
"installing": "설치 중...",
|
||||
"uninstalling": "제거 중..."
|
||||
},
|
||||
"messages": {
|
||||
"installSuccess": "{{name}} 설치 완료",
|
||||
"installError": "{{name}} 설치 실패",
|
||||
"uninstallSuccess": "{{name}} 제거 완료",
|
||||
"uninstallError": "{{name}} 제거 실패"
|
||||
},
|
||||
"confirmUninstall": {
|
||||
"title": "제거 확인",
|
||||
"description": "{{name}}을/를 제거하시겠습니까? 이 작업은 취소할 수 없습니다."
|
||||
},
|
||||
"table": {
|
||||
"name": "이름",
|
||||
"version": "버전",
|
||||
"actions": "작업",
|
||||
"empty": "설치된 패키지 없음"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"title": "대기 메시지",
|
||||
"description": "에이전트 처리를 기다리는 버퍼링된 채널 메시지",
|
||||
"emptyTitle": "대기 중인 메시지 없음",
|
||||
"emptyDescription": "버퍼링된 메시지 그룹이 없습니다. 채널이 에이전트 처리 전에 메시지를 버퍼링할 때 여기에 나타납니다.",
|
||||
"howItWorks": {
|
||||
"title": "작동 방식",
|
||||
"step1": "채널(Telegram, Discord 등)의 메시지는 에이전트가 바쁘거나 오프라인일 때 여기에 버퍼링됩니다.",
|
||||
"step2": "버퍼가 임계값(기본값: 메시지 50개)에 도달하면 자동 압축이 시작됩니다 — LLM이 오래된 메시지를 요약하고 최근 15개만 유지합니다.",
|
||||
"step3": "에이전트의 다음 턴에서 압축된 요약 + 최근 메시지가 컨텍스트로 삽입되어, 에이전트가 과부하 없이 따라잡을 수 있습니다.",
|
||||
"compactAction": "압축 — LLM 요약을 지금 수동으로 트리거합니다. 에이전트가 원시 메시지 홍수 대신 깔끔한 요약을 처리하게 하려는 경우 유용합니다.",
|
||||
"clearAction": "지우기 — 그룹의 모든 버퍼링된 메시지를 영구적으로 삭제합니다. 메시지가 더 이상 관련이 없을 때 사용하세요."
|
||||
},
|
||||
"columns": {
|
||||
"channel": "채널",
|
||||
"group": "그룹",
|
||||
"messages": "메시지",
|
||||
"status": "상태",
|
||||
"lastActivity": "마지막 활동",
|
||||
"actions": "작업"
|
||||
},
|
||||
"status": {
|
||||
"compacted": "압축됨",
|
||||
"raw": "원시"
|
||||
},
|
||||
"compact": "압축",
|
||||
"compacting": "압축 중…",
|
||||
"clear": "지우기",
|
||||
"confirmClear": {
|
||||
"title": "메시지를 지우시겠습니까?",
|
||||
"description": "{{channel}} / {{key}}의 모든 메시지가 영구적으로 삭제됩니다. 이 작업은 취소할 수 없습니다.",
|
||||
"cancel": "취소",
|
||||
"confirm": "지우기"
|
||||
},
|
||||
"dialog": {
|
||||
"title": "메시지 — {{name}}",
|
||||
"noMessages": "메시지가 없습니다.",
|
||||
"summary": "요약"
|
||||
},
|
||||
"toast": {
|
||||
"compacted": "압축 완료",
|
||||
"compactedSummarized": "{{count}}개 메시지로 요약됨",
|
||||
"compactedDeleted": "모든 메시지 삭제됨 (LLM 공급자 없음)",
|
||||
"compacting": "압축 중…",
|
||||
"compactingDesc": "LLM 요약이 백그라운드에서 실행 중입니다. 목록이 자동으로 새로 고쳐집니다.",
|
||||
"failedCompact": "압축 실패",
|
||||
"cleared": "메시지 지워짐",
|
||||
"failedClear": "메시지 지우기 실패"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,344 @@
|
||||
{
|
||||
"title": "공급자",
|
||||
"description": "LLM 공급자 관리",
|
||||
"addProvider": "공급자 추가",
|
||||
"searchPlaceholder": "공급자 검색...",
|
||||
"emptyTitle": "공급자 없음",
|
||||
"emptyDescription": "첫 번째 LLM 공급자를 추가하여 시작하세요.",
|
||||
"noMatchTitle": "일치하는 공급자 없음",
|
||||
"noMatchDescription": "다른 검색어를 사용해 보세요.",
|
||||
"columns": {
|
||||
"name": "이름",
|
||||
"type": "유형",
|
||||
"apiBase": "API 기본 URL",
|
||||
"apiKey": "API 키",
|
||||
"status": "상태",
|
||||
"actions": "작업"
|
||||
},
|
||||
"apiKey": {
|
||||
"oauthToken": "OAuth 토큰",
|
||||
"notSet": "설정되지 않음"
|
||||
},
|
||||
"card": {
|
||||
"apiKeySet": "API 키 설정됨",
|
||||
"authenticated": "인증됨",
|
||||
"oauthAccount": "OAuth 계정",
|
||||
"oauthAlias": "별칭: {{name}}",
|
||||
"connected": "연결됨",
|
||||
"signInNeeded": "로그인 필요",
|
||||
"disabled": "비활성화됨"
|
||||
},
|
||||
"quota": {
|
||||
"checking": "할당량 확인 중",
|
||||
"plan": "플랜",
|
||||
"lastChecked": "{{value}} 확인됨",
|
||||
"failure": {
|
||||
"billing": {
|
||||
"label": "청구",
|
||||
"description": "현재 워크스페이스 청구 또는 자격 문제로 계정이 차단되었습니다."
|
||||
},
|
||||
"exhausted": {
|
||||
"label": "소진됨",
|
||||
"description": "이 계정은 로그인되어 있지만 핵심 할당량 창 중 하나가 소진되었습니다."
|
||||
},
|
||||
"reauth": {
|
||||
"label": "재인증",
|
||||
"description": "워크스페이스 접근을 새로 고치려면 다시 로그인하세요."
|
||||
},
|
||||
"forbidden": {
|
||||
"label": "금지됨",
|
||||
"description": "이 계정은 업스트림 할당량 데이터를 읽을 수 없습니다."
|
||||
},
|
||||
"needs_setup": {
|
||||
"label": "설정 필요",
|
||||
"description": "GoClaw가 ChatGPT 계정 워크스페이스 메타데이터를 복원할 수 있도록 다시 로그인하세요."
|
||||
},
|
||||
"retry_later": {
|
||||
"label": "나중에 재시도",
|
||||
"description": "할당량 엔드포인트가 일시적으로 사용 불가하거나 속도가 제한되어 있습니다."
|
||||
},
|
||||
"unavailable": {
|
||||
"label": "사용 불가",
|
||||
"description": "현재 이 계정의 할당량 데이터를 사용할 수 없습니다."
|
||||
}
|
||||
}
|
||||
},
|
||||
"form": {
|
||||
"createTitle": "공급자 추가",
|
||||
"editTitle": "공급자 편집",
|
||||
"name": "이름 *",
|
||||
"namePlaceholder": "예: openrouter",
|
||||
"nameHint": "소문자, 숫자, 하이픈",
|
||||
"displayName": "표시 이름",
|
||||
"displayNamePlaceholder": "OpenRouter",
|
||||
"providerType": "공급자 유형 *",
|
||||
"apiKey": "API 키",
|
||||
"apiKeyPlaceholder": "sk-...",
|
||||
"apiKeyEditPlaceholder": "현재 값 유지 또는 새 키 입력",
|
||||
"apiKeySetHint": "API 키가 설정되어 있습니다. 지우고 새 값을 입력하여 변경하세요.",
|
||||
"apiBase": "API 기본 URL",
|
||||
"enabled": "활성화됨",
|
||||
"cancel": "취소",
|
||||
"close": "닫기",
|
||||
"create": "생성",
|
||||
"save": "저장",
|
||||
"update": "업데이트",
|
||||
"saving": "저장 중...",
|
||||
"creating": "생성 중...",
|
||||
"alreadyAdded": "(이미 추가됨)",
|
||||
"nameFixed": "이름",
|
||||
"configure": "LLM 공급자 연결을 설정합니다.",
|
||||
"configureOauth": "하나의 OpenAI Codex OAuth 계정을 연결합니다.",
|
||||
"oauthAlias": "계정 별칭 *",
|
||||
"oauthAliasPlaceholder": "예: primary",
|
||||
"oauthAliasHint": "라우팅 및 풀에서 사용되는 소문자 별칭입니다.",
|
||||
"oauthDisplayNamePlaceholder": "기본 Codex 계정",
|
||||
"oauthDisplayNameHint": "대시보드에 표시되는 선택적 레이블입니다.",
|
||||
"lowercaseHint": "소문자, 숫자, 하이픈"
|
||||
},
|
||||
"delete": {
|
||||
"title": "공급자 삭제",
|
||||
"description": "\"{{name}}\"을 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.",
|
||||
"confirmLabel": "삭제"
|
||||
},
|
||||
"types": {
|
||||
"anthropic_native": "Anthropic",
|
||||
"openai_compat": "OpenAI 호환",
|
||||
"gemini_native": "Gemini",
|
||||
"openrouter": "OpenRouter",
|
||||
"groq": "Groq",
|
||||
"deepseek": "DeepSeek",
|
||||
"mistral": "Mistral",
|
||||
"xai": "xAI",
|
||||
"minimax_native": "MiniMax",
|
||||
"cohere": "Cohere",
|
||||
"perplexity": "Perplexity",
|
||||
"chatgpt_oauth": "ChatGPT 구독 (OAuth)",
|
||||
"yescale": "YesScale",
|
||||
"acp": "ACP"
|
||||
},
|
||||
"acp": {
|
||||
"description": "ACP 호환 코딩 에이전트를 서브프로세스로 조율합니다. API 키가 필요하지 않습니다.",
|
||||
"binary": "바이너리",
|
||||
"binaryPlaceholder": "claude",
|
||||
"binaryHint": "ACP 에이전트 바이너리의 경로 또는 이름 (예: claude, codex, gemini)",
|
||||
"args": "인수",
|
||||
"argsPlaceholder": "--profile goclaw",
|
||||
"argsHint": "바이너리에 전달되는 공백으로 구분된 인수",
|
||||
"idleTTL": "유휴 TTL",
|
||||
"idleTTLPlaceholder": "5m",
|
||||
"idleTTLHint": "이 기간 후 유휴 프로세스를 종료합니다 (예: 5m, 1h)",
|
||||
"permMode": "권한 모드",
|
||||
"permModeApproveAll": "모두 승인",
|
||||
"permModeApproveReads": "읽기만 승인",
|
||||
"permModeDenyAll": "모두 거부",
|
||||
"workDir": "작업 디렉터리",
|
||||
"workDirPlaceholder": "/tmp/workspace",
|
||||
"workDirHint": "에이전트 서브프로세스의 작업 디렉터리 (선택사항)"
|
||||
},
|
||||
"oauth": {
|
||||
"checkingStatus": "인증 상태 확인 중...",
|
||||
"authSuccessful": "인증 성공!",
|
||||
"authSuccessfulDesc": "이 명명된 OpenAI/Codex 계정을 사용할 준비가 되었습니다.",
|
||||
"activeProvider": "계정 별칭",
|
||||
"authenticated": "인증됨 — 계정",
|
||||
"active": "활성",
|
||||
"poolBadge": "풀 준비됨",
|
||||
"roundRobinBadge": "라운드 로빈",
|
||||
"modelPrefixHint": "모델 접두사 사용",
|
||||
"modelPrefixExample": "에이전트 설정에서 (예: {{example}}).",
|
||||
"multiAccountHint": "나중에 에이전트 풀에서 더 많은 별칭을 추가하여 풀링이나 라운드 로빈을 활성화하세요.",
|
||||
"aliasRequired": "OpenAI Codex OAuth를 시작하기 전에 유효한 소문자 계정 별칭을 입력하세요.",
|
||||
"removeToken": "계정 연결 해제",
|
||||
"signInDesc": "ChatGPT/Codex 구독으로 로그인합니다. 별도의 API 키가 필요하지 않습니다.",
|
||||
"waiting": "인증 대기 중... 열린 창에서 로그인을 완료하세요.",
|
||||
"remoteVpsHint": "로그인 후 브라우저가 열리려고 시도합니다",
|
||||
"remoteVpsError": "그리고 \"이 페이지에 도달할 수 없음\" 오류가 표시됩니다. 정상입니다 — 브라우저 주소 표시줄에서 전체 URL을 복사하여 아래에 붙여넣으세요.",
|
||||
"pasteUrlPlaceholder": "http://localhost:1455/auth/callback?code=...&state=...",
|
||||
"submit": "제출",
|
||||
"signInWithChatGPT": "OpenAI 계정 연결",
|
||||
"starting": "시작 중...",
|
||||
"remoteVps": "원격/VPS?",
|
||||
"loggedOut": "로그아웃됨",
|
||||
"loggedOutDesc": "OpenAI Codex OAuth 계정 연결 해제됨",
|
||||
"oauthFailed": "OAuth 실패",
|
||||
"exchangeFailed": "교환 실패",
|
||||
"logoutFailed": "로그아웃 실패",
|
||||
"done": "완료"
|
||||
},
|
||||
"cli": {
|
||||
"description": "Claude CLI는 로컬",
|
||||
"descriptionSuffix": "바이너리를 사용합니다. API 키가 필요하지 않습니다.",
|
||||
"checkingAuth": "인증 확인 중...",
|
||||
"authenticatedAs": "다음으로 인증됨",
|
||||
"switchAccount": "계정을 전환하시겠습니까?",
|
||||
"switchAccountInstructions": "서버 터미널에서 실행하세요:",
|
||||
"switchAccountRecheck": "그런 다음 클릭하세요",
|
||||
"switchAccountRecheckSuffix": "재확인하려면.",
|
||||
"notAuthenticated": "인증되지 않음",
|
||||
"runOnServer": "서버 터미널에서 실행하세요:",
|
||||
"recheckButton": "재확인"
|
||||
},
|
||||
"detail": {
|
||||
"title": "공급자 세부 정보",
|
||||
"advanced": "고급",
|
||||
"identity": "식별",
|
||||
"identityDesc": "공급자 식별",
|
||||
"connection": "연결",
|
||||
"connectionDesc": "API 엔드포인트 설정",
|
||||
"acpConfig": "ACP 설정",
|
||||
"acpConfigDesc": "에이전트 서브프로세스 설정",
|
||||
"cliConfig": "Claude CLI",
|
||||
"cliConfigDesc": "로컬 CLI 인증",
|
||||
"oauthConfig": "ChatGPT 구독 (OAuth)",
|
||||
"oauthConfigDesc": "이 명명된 OpenAI/Codex 계정의 로그인 관리",
|
||||
"nameReadonly": "공급자 식별자, 변경 불가",
|
||||
"oauthAliasReadonly": "OAuth 계정 별칭, 변경 불가",
|
||||
"providerType": "공급자 유형",
|
||||
"apiKeySection": "API 키",
|
||||
"apiKeySectionDesc": "인증 자격증명",
|
||||
"statusSection": "상태",
|
||||
"statusSectionDesc": "공급자 가용성",
|
||||
"enabledDesc": "공급자가 활성 상태이며 에이전트에서 사용 가능합니다",
|
||||
"embeddingSection": "임베딩",
|
||||
"oauthAccountUsage": "계정 사용",
|
||||
"oauthAccountUsageDesc": "이 별칭이 공급자 소유 OpenAI Codex 풀링 내에서 작동하는 방식입니다.",
|
||||
"oauthAccountUsageManagedDesc": "이 별칭은 현재 {{provider}}가 관리하는 풀 멤버입니다.",
|
||||
"oauthAccountUsageOwnerDesc": "이 별칭은 현재 {{count}}개의 추가 계정이 있는 재사용 가능한 풀을 소유합니다.",
|
||||
"oauthPoolRole": {
|
||||
"member": "풀 멤버",
|
||||
"owner": "풀 소유자",
|
||||
"standalone": "독립형"
|
||||
},
|
||||
"oauthAliasLabel": "계정 별칭",
|
||||
"oauthAccountBadge": "ChatGPT 구독 (OAuth)",
|
||||
"oauthModelPrefix": "모델 접두사",
|
||||
"oauthQuotaTitle": "할당량 상태",
|
||||
"oauthQuotaDescription": "이 계정의 최신 ChatGPT 워크스페이스 할당량입니다.",
|
||||
"oauthModelPrefixCopied": "모델 접두사 복사됨",
|
||||
"oauthPreferredHint": "에이전트의 공급자 필드를 이 별칭으로 설정하여 기본 OpenAI 별칭으로 만드세요.",
|
||||
"oauthProviderDefaultHint": "아래 풀 기본값을 사용하여 이 별칭을 가리키는 모든 에이전트에 대한 재사용 가능한 OpenAI Codex 라우팅 정책을 정의하세요.",
|
||||
"oauthRoutingHint": "에이전트 페이지에는 이제 해당 에이전트의 유효 풀과 이 기본값을 상속하는지 또는 커스텀 재정의를 저장하는지 여부가 표시됩니다.",
|
||||
"oauthManagedByHint": "이 별칭은 공급자 {{provider}}가 관리합니다. 이 계정 대신 풀 멤버십을 편집하세요.",
|
||||
"reasoningDefaultsTitle": "추론 기본값",
|
||||
"reasoningDefaultsDescription": "이 공급자를 사용하는 에이전트의 기본 추론 정책을 설정합니다. 최종 런타임 노력은 각 에이전트의 선택된 모델에 따라 정규화됩니다.",
|
||||
"reasoningPreset": "기본 프리셋",
|
||||
"reasoningExpertMode": "전문가 기본값",
|
||||
"reasoningExpertModeDesc": "자동, 없음, 최소 또는 xhigh와 같은 노력이 필요할 때 공급자 소유 고급 추론 기본값을 사용합니다.",
|
||||
"reasoningPreviewDescription": "{{model}}에 대한 명시적 추론 기능 메타데이터를 미리 봅니다.",
|
||||
"reasoningPreviewLabel": "기능 미리보기",
|
||||
"reasoningPreviewDefault": "미리보기 모델 기본 추론: {{level}}",
|
||||
"reasoningPreviewEmpty": "이 공급자에 대해 아직 명시적 추론 가능 모델이 반환되지 않았습니다.",
|
||||
"reasoningRequestedEffort": "요청된 노력",
|
||||
"reasoningFallbackBehavior": "폴백 동작",
|
||||
"codexPoolDefaultsTitle": "풀 기본값",
|
||||
"codexPoolDefaultsDescription": "이 별칭을 기본 공급자로 사용하는 에이전트를 위해 이 별칭이 소유한 재사용 가능한 OpenAI Codex 풀을 정의합니다.",
|
||||
"poolManagedByDescription": "이 공급자는 {{owner}}가 소유한 풀의 멤버입니다. 풀 설정을 변경하려면 풀 소유자로 이동하세요.",
|
||||
"oauthDisplayNameRecommendation": "여러 OpenAI Codex OAuth 계정이 풀에 표시될 때 더 명확한 레이블을 원하면 표시 이름을 추가하세요.",
|
||||
"poolActivityTitle": "풀 활동",
|
||||
"poolActivityDescription": "이 공급자의 Codex 풀을 사용하는 모든 에이전트의 집계 런타임 활동입니다.",
|
||||
"poolActivityRefresh": "새로 고침",
|
||||
"poolActivityTopAgents": "에이전트",
|
||||
"poolActivityTopAgentsTitle": "이 풀을 사용하는 상위 에이전트",
|
||||
"poolActivityRequests": "요청",
|
||||
"poolActivityEmpty": "아직 활동 없음",
|
||||
"poolActivityEmptyDesc": "에이전트가 이 풀을 통해 요청 라우팅을 시작하면 풀 활동이 여기에 표시됩니다."
|
||||
},
|
||||
"embedding": {
|
||||
"enable": "임베딩 활성화",
|
||||
"enableDesc": "이 공급자가 메모리, 스킬 및 지식 그래프를 위한 텍스트 임베딩을 생성할 수 있도록 합니다",
|
||||
"model": "임베딩 모델",
|
||||
"dimensions": "출력 차원",
|
||||
"dimensionsHint": "GoClaw 메모리는 현재 임베딩을 vector(1536)에 저장합니다. 모델이 이미 1536을 출력할 때는 비워두고, 공급자가 더 큰 기본 차원에서 잘라내기를 지원하는 경우 정확히 1536으로 설정하세요.",
|
||||
"dimensionsInvalid": "GoClaw 메모리에서 현재 지원되는 값은 1536뿐입니다.",
|
||||
"apiBase": "임베딩 API 기본 URL",
|
||||
"apiBasePlaceholder": "(공급자와 동일)",
|
||||
"apiBaseHint": "임베딩 엔드포인트가 공급자의 메인 API 기본 URL과 다른 경우 재정의",
|
||||
"verify": "임베딩 확인",
|
||||
"verifyFailed": "임베딩 확인 실패",
|
||||
"dimensionsMismatch": "{{count}} 차원 — 필수 1536과 일치하지 않음"
|
||||
},
|
||||
"reasoning": {
|
||||
"off": "끄기",
|
||||
"offDesc": "기본 확장 사고 없음",
|
||||
"auto": "자동",
|
||||
"autoDesc": "모델이 자체 기본 추론 노력을 사용하도록 요청",
|
||||
"none": "없음",
|
||||
"noneDesc": "고급 계약을 유지하면서 공급자 추론을 명시적으로 비활성화",
|
||||
"minimal": "최소",
|
||||
"minimalDesc": "없음 이상에서 가장 작은 지원 추론 노력 사용",
|
||||
"low": "낮음",
|
||||
"lowDesc": "~4K 토큰 예산",
|
||||
"medium": "중간",
|
||||
"mediumDesc": "~10-16K 토큰 예산",
|
||||
"high": "높음",
|
||||
"highDesc": "~32K 토큰 예산",
|
||||
"xhigh": "최대",
|
||||
"xhighDesc": "지원되는 최대 추론 노력 사용",
|
||||
"downgrade": "다운그레이드",
|
||||
"downgradeDesc": "가장 가까운 지원 낮은 수준으로 정규화하거나, 더 낮은 지원 수준이 없으면 비활성화",
|
||||
"provider_default": "모델 기본값 사용",
|
||||
"provider_defaultDesc": "명시적 노력을 강제하지 않고 공급자/모델이 기본값을 선택하도록 함"
|
||||
},
|
||||
"list": {
|
||||
"poolOwner": "풀 소유자",
|
||||
"poolMember": "풀 멤버",
|
||||
"poolAvailable": "풀 사용 가능",
|
||||
"poolBadge": "풀",
|
||||
"standalone": "독립형",
|
||||
"reasoningDefault": "추론 {{level}}",
|
||||
"managedBy": "{{provider}}가 관리",
|
||||
"memberCount_one": "{{count}}개 멤버",
|
||||
"memberCount_other": "{{count}}개 멤버",
|
||||
"memberOverflow": "+{{count}}",
|
||||
"strategy": {
|
||||
"roundRobin": "라운드 로빈",
|
||||
"priorityOrder": "우선순위 순서",
|
||||
"primaryFirst": "기본 우선"
|
||||
},
|
||||
"status": {
|
||||
"needsSignIn": "로그인 필요",
|
||||
"disabled": "비활성화됨"
|
||||
}
|
||||
},
|
||||
"pageHint": {
|
||||
"title": "ChatGPT 구독 (OAuth) 계정",
|
||||
"description": "각 별칭은 하나의 Codex 계정입니다. 풀 소유자가 여기서 멤버 계정을 관리하며, 에이전트 페이지에는 유효한 경로만 표시됩니다.",
|
||||
"connected_one": "{{count}}개 연결된 계정",
|
||||
"connected_other": "{{count}}개 연결된 계정",
|
||||
"owners_one": "{{count}}명 풀 소유자",
|
||||
"owners_other": "{{count}}명 풀 소유자",
|
||||
"members_one": "{{count}}명 멤버",
|
||||
"members_other": "{{count}}명 멤버"
|
||||
},
|
||||
"poolCta": {
|
||||
"unpooledCount": "{{count}}개 계정 풀 준비됨",
|
||||
"setupPool": "풀 설정",
|
||||
"dismiss": "닫기"
|
||||
},
|
||||
"poolWizard": {
|
||||
"title": "풀 설정",
|
||||
"description": "자동 폴오버와 부하 분산을 위해 ChatGPT 계정을 결합합니다.",
|
||||
"selectOwner": "풀 소유자",
|
||||
"selectOwnerHint": "풀 설정을 소유하는 기본 계정입니다.",
|
||||
"selectMembers": "풀 멤버",
|
||||
"selectMembersHint": "풀에 포함할 계정을 선택하세요.",
|
||||
"selectAll": "모두 선택",
|
||||
"deselectAll": "모두 선택 해제",
|
||||
"selectedCount": "{{count}}개 선택됨",
|
||||
"strategy": "전략",
|
||||
"createPool": "풀 생성",
|
||||
"noMembers": "풀을 생성하려면 최소 하나의 멤버를 선택하세요.",
|
||||
"success": "풀이 성공적으로 생성되었습니다.",
|
||||
"error": "풀 생성 실패."
|
||||
},
|
||||
"toast": {
|
||||
"created": "공급자 생성됨",
|
||||
"createdDesc": "{{name}}이 추가되었습니다",
|
||||
"updated": "공급자 업데이트됨",
|
||||
"deleted": "공급자 삭제됨",
|
||||
"failedCreate": "공급자 생성 실패",
|
||||
"failedUpdate": "공급자 업데이트 실패",
|
||||
"failedDelete": "공급자 삭제 실패"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"title": "세션",
|
||||
"description": "대화 세션 탐색",
|
||||
"searchPlaceholder": "세션 검색...",
|
||||
"emptyTitle": "아직 세션 없음",
|
||||
"emptyDescription": "채팅을 시작하면 여기에 세션이 나타납니다.",
|
||||
"noMatchTitle": "일치하는 세션 없음",
|
||||
"noMatchDescription": "다른 검색어를 사용해 보세요.",
|
||||
"columns": {
|
||||
"session": "세션",
|
||||
"agent": "에이전트",
|
||||
"context": "컨텍스트",
|
||||
"messages": "메시지",
|
||||
"updated": "업데이트됨"
|
||||
},
|
||||
"contextBar": {
|
||||
"compacted": "{{count}}회 압축됨"
|
||||
},
|
||||
"detail": {
|
||||
"reset": "초기화",
|
||||
"delete": "삭제",
|
||||
"deleteTitle": "세션 삭제",
|
||||
"deleteDescription": "이 세션의 모든 메시지가 영구적으로 삭제됩니다.",
|
||||
"resetTitle": "세션 초기화",
|
||||
"resetDescription": "모든 메시지가 지워지지만 세션은 유지됩니다.",
|
||||
"confirmDelete": "삭제",
|
||||
"confirmReset": "초기화",
|
||||
"noMessages": "이 세션에 메시지가 없습니다",
|
||||
"summary": "요약",
|
||||
"showMore": "더 보기",
|
||||
"showLess": "접기",
|
||||
"showDetails": "세부 정보 보기",
|
||||
"hide": "숨기기",
|
||||
"systemMessage": "시스템 메시지",
|
||||
"messages": "메시지"
|
||||
},
|
||||
"toast": {
|
||||
"deleted": "세션 삭제됨",
|
||||
"deleteFailed": "세션 삭제 실패",
|
||||
"reset": "세션 초기화됨",
|
||||
"resetFailed": "세션 초기화 실패",
|
||||
"updated": "세션 업데이트됨",
|
||||
"updateFailed": "세션 업데이트 실패"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,117 @@
|
||||
{
|
||||
"layout": {
|
||||
"subtitle": "게이트웨이를 설정하고 실행해 봅시다"
|
||||
},
|
||||
"steps": {
|
||||
"provider": "공급자",
|
||||
"model": "모델",
|
||||
"agent": "에이전트",
|
||||
"channel": "채널",
|
||||
"channelOptional": "(선택사항)"
|
||||
},
|
||||
"complete": {
|
||||
"title": "설정 완료!",
|
||||
"ready": "시스템이 준비되었습니다!",
|
||||
"description": "공급자, 에이전트, 채널이 설정되었습니다. 대시보드에서 언제든지 관리할 수 있습니다.",
|
||||
"goToDashboard": "대시보드로 이동"
|
||||
},
|
||||
"provider": {
|
||||
"title": "LLM 공급자 설정",
|
||||
"descriptionCli": "로컬 Claude CLI 설치를 사용하여 연결합니다. API 키가 필요하지 않습니다.",
|
||||
"descriptionOauth": "하나의 OpenAI Codex OAuth 계정을 생성합니다. 지금 별칭을 지정한 후, 나중에 풀 멤버나 라운드 로빈을 위한 별칭을 추가할 수 있습니다.",
|
||||
"description": "에이전트를 구동할 AI 공급자에 연결합니다. API 키가 필요합니다.",
|
||||
"providerType": "공급자 유형",
|
||||
"providerTypeHint": "연결할 LLM 서비스입니다. 여러 모델에 접근하려면 OpenRouter를 권장합니다.",
|
||||
"name": "이름",
|
||||
"nameHint": "이 공급자의 내부 식별자입니다. 공급자 유형에서 자동 생성됩니다.",
|
||||
"oauthAlias": "계정 별칭",
|
||||
"oauthAliasPlaceholder": "예: primary",
|
||||
"oauthAliasHint": "이 OpenAI/Codex 계정에 대해 primary, work, team 같은 고유 소문자 별칭을 사용하세요. 별칭은 에이전트가 사용하는 공급자/모델 접두사가 됩니다.",
|
||||
"displayName": "표시 이름 (선택사항)",
|
||||
"displayNameHint": "이 OpenAI/Codex 계정의 친화적 레이블입니다. 나중에 별칭을 추가할 때 유용합니다.",
|
||||
"displayNamePlaceholder": "기본 Codex 계정",
|
||||
"apiKey": "API 키 *",
|
||||
"apiKeyHint": "공급자의 시크릿 키입니다. 서버 측에서 암호화되며 API 응답에 노출되지 않습니다.",
|
||||
"apiBase": "API 기본 URL",
|
||||
"apiBaseHint": "API 요청의 엔드포인트 URL입니다. 공급자 유형에 따라 자동 입력됩니다. 커스텀 프록시를 사용하는 경우에만 변경하세요.",
|
||||
"creating": "생성 중...",
|
||||
"create": "공급자 생성",
|
||||
"errors": {
|
||||
"apiKeyRequired": "API 키가 필요합니다",
|
||||
"oauthProviderNotFound": "OAuth 인증에 성공했지만 공급자를 찾을 수 없습니다. 다시 시도해 주세요.",
|
||||
"failedCreate": "공급자 생성 실패"
|
||||
}
|
||||
},
|
||||
"model": {
|
||||
"title": "모델 선택 및 확인",
|
||||
"description": "모델을 선택하고 공급자 연결이 작동하는지 확인하세요.",
|
||||
"provider": "공급자:",
|
||||
"model": "모델 *",
|
||||
"modelHint": "사용할 AI 모델입니다. 목록에서 선택하거나 목록에 없는 경우 모델 ID를 직접 입력하세요.",
|
||||
"loadingModels": "모델 불러오는 중...",
|
||||
"selectModel": "모델 선택 또는 모델 ID 입력",
|
||||
"noModelsHint": "이 공급자는 모델 목록을 제공하지 않습니다 — 모델 ID를 직접 입력하세요.",
|
||||
"verified": "확인됨",
|
||||
"verify": "확인",
|
||||
"verifying": "확인 중...",
|
||||
"continue": "계속",
|
||||
"modelVerified": "모델 확인됨",
|
||||
"modelVerifiedDesc": "{{model}}이 정상적으로 작동합니다",
|
||||
"verificationFailed": "확인 실패. API 키와 모델을 확인하세요."
|
||||
},
|
||||
"agent": {
|
||||
"title": "첫 번째 에이전트 만들기",
|
||||
"description": "에이전트는 AI 어시스턴트입니다. 이름과 성격을 설정하세요.",
|
||||
"provider": "공급자:",
|
||||
"model": "모델:",
|
||||
"displayName": "표시 이름",
|
||||
"displayNameHint": "소환 중 에이전트 성격에 따라 자동 생성됩니다.",
|
||||
"agentKey": "에이전트 키",
|
||||
"agentKeyHint": "에이전트의 고유 식별자입니다. 소문자, 숫자, 하이픈만 사용 가능합니다.",
|
||||
"agentKeyPlaceholder": "my-agent",
|
||||
"personality": "에이전트 성격",
|
||||
"personalityHint": "에이전트의 역할과 행동을 설명하세요. AI가 소환 중에 이를 기반으로 컨텍스트 파일을 생성합니다.",
|
||||
"personalityPlaceholder": "에이전트의 성격, 목적, 행동 방식을 설명하세요...",
|
||||
"personalityHintBottom": "이 프롬프트를 커스터마이즈하여 에이전트의 성격과 전문성을 설정하세요.",
|
||||
"selfEvolve": "자기 진화",
|
||||
"selfEvolveDesc": "에이전트가 SOUL.md를 통해 시간이 지남에 따라 커뮤니케이션 스타일을 진화시킬 수 있도록 합니다",
|
||||
"creating": "생성 중...",
|
||||
"create": "에이전트 생성",
|
||||
"summoningFailed": "소환 실패. 설정을 조정하고 다시 시도하세요.",
|
||||
"errors": {
|
||||
"noProvider": "사용 가능한 공급자 없음",
|
||||
"failedCreate": "에이전트 생성 실패"
|
||||
}
|
||||
},
|
||||
"channel": {
|
||||
"title": "채널 연결",
|
||||
"description": "에이전트에 메시징 플랫폼을 연결하세요. 나중에 언제든지 채널을 추가할 수 있습니다.",
|
||||
"skip": "건너뛰기",
|
||||
"skipFinish": "건너뛰고 완료",
|
||||
"agent": "에이전트:",
|
||||
"channelType": "채널 유형",
|
||||
"channelTypeHint": "연결할 메시징 플랫폼입니다. 예: Telegram, Discord, Zalo.",
|
||||
"name": "이름",
|
||||
"nameHint": "이 채널 인스턴스의 내부 식별자입니다. 채널 유형에서 자동 생성됩니다.",
|
||||
"namePlaceholder": "my-telegram",
|
||||
"displayName": "표시 이름",
|
||||
"displayNameHint": "UI에 표시되는 친화적 이름입니다. 선택사항.",
|
||||
"displayNamePlaceholder": "판매 봇",
|
||||
"credentials": "자격증명",
|
||||
"credentialsHint": "서버 측에서 암호화됩니다. API 응답에 반환되지 않습니다.",
|
||||
"creating": "생성 중...",
|
||||
"create": "채널 생성",
|
||||
"errors": {
|
||||
"noAgent": "사용 가능한 에이전트 없음",
|
||||
"requiredFields": "필수 항목: {{fields}}",
|
||||
"failedCreate": "채널 생성 실패"
|
||||
}
|
||||
},
|
||||
"common": {
|
||||
"back": "뒤로"
|
||||
},
|
||||
"skipSetup": "설정을 건너뛰고 대시보드로 이동",
|
||||
"skipSetupConfirm": "설정을 건너뛰시겠습니까? 대시보드에서 나중에 언제든지 공급자와 에이전트를 설정할 수 있습니다.",
|
||||
"switchTenant": "전환",
|
||||
"allTenants": "모든 테넌트"
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
{
|
||||
"groups": {
|
||||
"core": "핵심",
|
||||
"conversations": "대화",
|
||||
"connectivity": "연결",
|
||||
"capabilities": "기능",
|
||||
"data": "데이터",
|
||||
"monitoring": "모니터링",
|
||||
"system": "시스템"
|
||||
},
|
||||
"nav": {
|
||||
"overview": "개요",
|
||||
"chat": "채팅",
|
||||
"agents": "에이전트",
|
||||
"agentTeams": "에이전트 링크 & 팀",
|
||||
"sessions": "세션",
|
||||
"pendingMessages": "대기 메시지",
|
||||
"channels": "채널",
|
||||
"contacts": "연락처",
|
||||
"skills": "스킬",
|
||||
"cron": "Cron",
|
||||
"customTools": "사용자 지정 도구",
|
||||
"builtinTools": "내장 도구",
|
||||
"mcpServers": "MCP 서버",
|
||||
"memory": "메모리",
|
||||
"vault": "볼트",
|
||||
"knowledgeGraph": "지식 그래프",
|
||||
"traces": "추적",
|
||||
"realtimeEvents": "실시간 이벤트",
|
||||
"usage": "사용량",
|
||||
"logs": "로그",
|
||||
"storage": "스토리지",
|
||||
"providers": "공급자",
|
||||
"config": "설정",
|
||||
"approvals": "승인",
|
||||
"importExport": "가져오기 & 내보내기",
|
||||
"nodes": "노드",
|
||||
"tts": "TTS",
|
||||
"activity": "활동",
|
||||
"cliCredentials": "CLI 자격 증명",
|
||||
"apiKeys": "API 키",
|
||||
"apiDocs": "API 문서",
|
||||
"packages": "패키지",
|
||||
"tenants": "테넌트",
|
||||
"backupRestore": "백업 & 복원"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,123 @@
|
||||
{
|
||||
"title": "스킬",
|
||||
"description": "에이전트 스킬 및 기능 관리",
|
||||
"searchPlaceholder": "스킬 검색...",
|
||||
"emptyTitle": "스킬 없음",
|
||||
"emptyDescription": "아직 등록된 스킬이 없습니다.",
|
||||
"noMatchTitle": "일치하는 스킬 없음",
|
||||
"noMatchDescription": "다른 검색어를 사용해 보세요.",
|
||||
"columns": {
|
||||
"name": "이름",
|
||||
"description": "설명",
|
||||
"source": "출처",
|
||||
"author": "작성자",
|
||||
"visibility": "공개 범위",
|
||||
"status": "상태",
|
||||
"actions": "작업"
|
||||
},
|
||||
"noDescription": "설명 없음",
|
||||
"visibility": {
|
||||
"clickToCycle": "클릭하여 공개 범위 변경"
|
||||
},
|
||||
"delete": {
|
||||
"title": "스킬 삭제",
|
||||
"description": "\"{{name}}\"을/를 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.",
|
||||
"confirmLabel": "삭제"
|
||||
},
|
||||
"upload": {
|
||||
"title": "스킬 업로드",
|
||||
"description": "YAML 프론트매터(name, description, slug)가 있는 SKILL.md가 포함된 ZIP 파일을 업로드하세요.",
|
||||
"button": "업로드",
|
||||
"uploading": "업로드 중...",
|
||||
"dropOrClick": ".zip 파일을 클릭하거나 끌어다 놓기",
|
||||
"dropHere": ".zip 파일을 여기에 놓기",
|
||||
"onlyZip": ".zip 파일만 허용됩니다",
|
||||
"cancel": "취소",
|
||||
"done": "완료",
|
||||
"tooLarge": "파일이 20MB 제한을 초과합니다",
|
||||
"invalidZip": "유효하지 않은 ZIP 파일",
|
||||
"noSkillMd": "ZIP에는 루트에 SKILL.md가 있어야 합니다",
|
||||
"emptySkillMd": "SKILL.md가 비어 있습니다",
|
||||
"noFrontmatter": "SKILL.md에 YAML 프론트매터가 없습니다",
|
||||
"nameRequired": "SKILL.md 프론트매터에 name이 필요합니다",
|
||||
"invalidSlug": "유효하지 않은 슬러그 형식",
|
||||
"failed": "업로드 실패",
|
||||
"validating": "유효성 검사 중...",
|
||||
"validCount": "{{total}}개 중 {{valid}}개 유효",
|
||||
"uploadCount": "업로드 ({{count}}개)",
|
||||
"successCount": "{{total}}개 중 {{success}}개 성공적으로 업로드됨",
|
||||
"remove": "파일 제거"
|
||||
},
|
||||
"edit": {
|
||||
"title": "스킬 편집",
|
||||
"name": "이름",
|
||||
"description": "설명",
|
||||
"visibility": "공개 범위",
|
||||
"tags": "태그",
|
||||
"addTag": "태그 추가...",
|
||||
"add": "추가",
|
||||
"cancel": "취소",
|
||||
"save": "저장",
|
||||
"saving": "저장 중...",
|
||||
"privateOption": "비공개 (소유자만)",
|
||||
"internalOption": "내부 (허가된 에이전트/사용자)",
|
||||
"publicOption": "공개 (모든 에이전트)"
|
||||
},
|
||||
"system": "시스템",
|
||||
"tabs": {
|
||||
"core": "핵심",
|
||||
"custom": "사용자 지정"
|
||||
},
|
||||
"toggle": {
|
||||
"enable": "스킬 활성화",
|
||||
"disable": "스킬 비활성화",
|
||||
"disabled": "비활성화됨"
|
||||
},
|
||||
"tenant": {
|
||||
"enabled": "활성화됨",
|
||||
"disabled": "비활성화됨",
|
||||
"default": "기본값",
|
||||
"overrideHint": "이 스킬의 테넌트별 재정의",
|
||||
"resetDefault": "기본값으로 초기화"
|
||||
},
|
||||
"deps": {
|
||||
"rescan": "의존성 재검사",
|
||||
"rescanning": "검사 중...",
|
||||
"rescanSuccess": "{{count}}개 스킬 업데이트됨",
|
||||
"missing": "없음: {{deps}}",
|
||||
"install": "의존성 설치",
|
||||
"installing": "설치 중...",
|
||||
"installSuccess": "의존성 설치 완료",
|
||||
"installPartial": "일부 의존성 설치 실패",
|
||||
"installItem": "설치",
|
||||
"itemSuccess": "설치됨",
|
||||
"itemError": "실패",
|
||||
"missingTitle": "없는 의존성",
|
||||
"systemLabel": "시스템",
|
||||
"pythonLabel": "Python",
|
||||
"nodeLabel": "Node.js",
|
||||
"statusActive": "활성",
|
||||
"statusArchived": "의존성 없음",
|
||||
"runtimeMissing": "런타임 전제 조건 없음",
|
||||
"runtimeMissingDesc": "핵심 스킬은 GoClaw 런타임 컨테이너 내에 Python 및/또는 Node.js 런타임이 필요합니다. 호스트에 설치된 런타임은 사용되지 않습니다.",
|
||||
"runtimeMissingAction": "패키지를 열어 이 컨테이너에 런타임을 확인하거나 설치하세요.",
|
||||
"runtimeRequired": "먼저 컨테이너 런타임 설치"
|
||||
},
|
||||
"detail": {
|
||||
"title": "스킬 세부 정보",
|
||||
"content": "내용",
|
||||
"files": "파일",
|
||||
"version": "버전:",
|
||||
"current": "(현재)",
|
||||
"noContent": "사용 가능한 내용이 없습니다."
|
||||
},
|
||||
"toast": {
|
||||
"updated": "스킬 업데이트됨",
|
||||
"updateFailed": "스킬 업데이트 실패",
|
||||
"deleted": "스킬 삭제됨",
|
||||
"deleteFailed": "스킬 삭제 실패",
|
||||
"rescanUpdated": "{{count}}개 스킬 업데이트됨",
|
||||
"rescanNoChanges": "모든 스킬 최신 상태",
|
||||
"rescanFailed": "의존성 재검사 실패"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"title": "스토리지",
|
||||
"description": "워크스페이스 파일 탐색기",
|
||||
"descriptionWithPath": "{{path}} — {{size}}",
|
||||
"sizeCacheInfo": "스토리지 크기는 60분간 캐시됩니다",
|
||||
"unsupportedFile": "이 파일 유형은 미리보기를 지원하지 않습니다",
|
||||
"download": "다운로드",
|
||||
"delete": {
|
||||
"fileTitle": "파일 삭제",
|
||||
"folderTitle": "폴더 삭제",
|
||||
"description": "{{name}}을/를 삭제하시겠습니까?",
|
||||
"folderWarning": " 모든 내용이 재귀적으로 제거됩니다.",
|
||||
"undone": " 이 작업은 취소할 수 없습니다.",
|
||||
"deleting": "삭제 중...",
|
||||
"confirmLabel": "삭제"
|
||||
},
|
||||
"upload": {
|
||||
"title": "스토리지에 업로드",
|
||||
"description": "데이터 디렉터리에 파일 업로드"
|
||||
},
|
||||
"toast": {
|
||||
"deleted": "파일 삭제됨",
|
||||
"deleteFailed": "파일 삭제 실패"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
{
|
||||
"title": "시스템 설정",
|
||||
"save": "저장",
|
||||
"cancel": "취소",
|
||||
"saving": "저장 중...",
|
||||
"saved": "설정 저장됨",
|
||||
"loadFailed": "설정 불러오기 실패",
|
||||
"saveFailed": "설정 저장 실패",
|
||||
"embedding": {
|
||||
"title": "임베딩",
|
||||
"description": "벡터 임베딩 및 의미 검색을 위한 공급자와 모델입니다.",
|
||||
"importance": "임베딩은 메모리 회수, 스킬 검색, 지식 그래프, 태스크 매칭 정확도에 중요합니다. 변경 시 전체 시스템에 영향을 줍니다.",
|
||||
"provider": "임베딩 공급자",
|
||||
"model": "임베딩 모델",
|
||||
"providerTip": "텍스트 임베딩 생성에 사용되는 LLM 공급자입니다.",
|
||||
"modelTip": "임베딩 모델 (예: text-embedding-3-small). /embeddings 엔드포인트를 지원해야 합니다.",
|
||||
"providerPlaceholder": "공급자 선택",
|
||||
"modelPlaceholder": "text-embedding-3-small",
|
||||
"supportedProviders": "1536d 검증됨: OpenAI (text-embedding-3-small/large), Gemini (gemini-embedding-001 + dimensions), Mistral (codestral-embed), Cohere (embed-v4), DashScope (text-embedding-v3 + dimensions). 기본 차원이 1536보다 큰 모델은 공급자 설정에서 차원을 설정하세요.",
|
||||
"verify": "임베딩 확인",
|
||||
"verifyRequired": "저장 전에 임베딩 모델을 확인하세요.",
|
||||
"verifyFailed": "확인 실패",
|
||||
"dimensions": "{{count}} 차원",
|
||||
"dimensionsMismatch": "{{count}} 차원 — 필수 1536과 일치하지 않음",
|
||||
"maxChunkLen": "최대 청크 길이",
|
||||
"maxChunkLenHint": "분할 전 메모리 청크당 최대 문자 수입니다.",
|
||||
"chunkOverlap": "청크 겹침",
|
||||
"chunkOverlapHint": "컨텍스트 연속성을 위한 연속 청크 간 겹침 문자 수입니다."
|
||||
},
|
||||
"ux": {
|
||||
"title": "UX 동작",
|
||||
"description": "게이트웨이가 사용자에게 에이전트 활동을 표시하는 방식을 제어합니다.",
|
||||
"toolStatus": "실행 중 도구 이름 표시",
|
||||
"toolStatusHint": "에이전트 실행 중 활성 도구 이름을 표시합니다.",
|
||||
"toolStatusInfo": "에이전트 실행 중 스트리밍 미리보기에 도구 이름이 표시됩니다.",
|
||||
"blockReply": "도구 호출 중 중간 텍스트 표시",
|
||||
"blockReplyHint": "도구 호출 중 부분 어시스턴트 텍스트를 스트리밍합니다.",
|
||||
"blockReplyInfo": "도구 실행 중 사용자에게 중간 텍스트가 스트리밍됩니다.",
|
||||
"intentClassify": "의도 분류",
|
||||
"intentClassifyHint": "에이전트로 라우팅하기 전에 사용자 의도를 분류합니다.",
|
||||
"intentClassifyInfo": "에이전트 라우팅 및 동작 최적화를 위해 메시지가 분류됩니다."
|
||||
},
|
||||
"kg": {
|
||||
"title": "지식 그래프",
|
||||
"description": "에이전트 메모리에서 검색 가능한 지식 그래프로 엔티티와 관계를 추출합니다.",
|
||||
"provider": "추출 공급자",
|
||||
"model": "추출 모델",
|
||||
"providerTip": "메모리에서 엔티티를 추출하는 데 사용되는 LLM 공급자입니다.",
|
||||
"modelTip": "엔티티/관계 추출 모델 (예: claude-sonnet-4-20250514).",
|
||||
"providerPlaceholder": "공급자 선택",
|
||||
"modelPlaceholder": "모델 선택",
|
||||
"minConfidence": "최소 신뢰도",
|
||||
"minConfidenceHint": "추출된 엔티티의 최소 신뢰도 임계값 (0–1).",
|
||||
"info": "에이전트가 메모리에 쓸 때 자동으로 엔티티와 관계를 추출합니다. 비활성화하려면 공급자를 비워두세요."
|
||||
},
|
||||
"bg": {
|
||||
"title": "백그라운드 작업자",
|
||||
"description": "백그라운드 태스크(볼트 보강, 통합, 드리밍)를 위한 공급자와 모델입니다.",
|
||||
"provider": "공급자",
|
||||
"model": "모델",
|
||||
"providerTip": "백그라운드 태스크용 LLM 공급자입니다. 에이전트 기본값을 사용하려면 비워두세요.",
|
||||
"modelTip": "백그라운드 태스크용 모델입니다. 공급자 기본값을 사용하려면 비워두세요.",
|
||||
"providerPlaceholder": "(에이전트 기본값)",
|
||||
"modelPlaceholder": "(기본값)",
|
||||
"info": "볼트 보강 (문서 요약), 통합 (세션 요약), 드리밍에 사용됩니다. 에이전트 기본 공급자로 대체하려면 비워두세요."
|
||||
},
|
||||
"compaction": {
|
||||
"title": "대기 메시지 압축",
|
||||
"description": "컨텍스트 한도 내에 유지하기 위해 긴 대기 메시지 기록을 요약합니다.",
|
||||
"providerPlaceholder": "(자동)",
|
||||
"threshold": "임계값",
|
||||
"thresholdHint": "압축이 트리거되기 전의 메시지 수입니다.",
|
||||
"keepRecent": "최근 유지",
|
||||
"keepRecentHint": "압축 후 보존되는 메시지 수입니다.",
|
||||
"maxTokens": "최대 토큰",
|
||||
"maxTokensHint": "압축된 요약의 토큰 한도입니다.",
|
||||
"info": "그룹 채팅이 임계값을 초과하면 LLM이 오래된 메시지를 단일 압축 항목으로 자동 요약하여 컨텍스트를 위해 가장 최근 메시지를 유지합니다."
|
||||
},
|
||||
"moreConfig": "추가 설정"
|
||||
}
|
||||
@@ -0,0 +1,402 @@
|
||||
{
|
||||
"title": "팀",
|
||||
"description": "에이전트 팀 관리",
|
||||
"createTeam": "팀 만들기",
|
||||
"searchPlaceholder": "팀 검색...",
|
||||
"emptyTitle": "아직 팀 없음",
|
||||
"emptyDescription": "첫 번째 팀을 만들어 시작하세요.",
|
||||
"noMatchTitle": "일치하는 팀 없음",
|
||||
"noMatchDescription": "다른 검색어를 사용해 보세요.",
|
||||
"viewCard": "카드 보기",
|
||||
"viewList": "목록 보기",
|
||||
"scope": {
|
||||
"all": "모든 범위",
|
||||
"label": "범위"
|
||||
},
|
||||
"delete": {
|
||||
"title": "팀 삭제",
|
||||
"description": "\"{{name}}\"을 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.",
|
||||
"confirmLabel": "삭제"
|
||||
},
|
||||
"detail": {
|
||||
"lead": "리더",
|
||||
"memberCount": "{{count}}명 멤버",
|
||||
"memberCountPlural": "{{count}}명 멤버",
|
||||
"more": "더 보기",
|
||||
"deleteDescription": "\"{{name}}\"을 삭제하시겠습니까? 모든 멤버, 태스크 및 설정이 영구적으로 삭제됩니다.",
|
||||
"tabs": {
|
||||
"tasks": "태스크",
|
||||
"members": "멤버",
|
||||
"delegations": "위임",
|
||||
"workspace": "워크스페이스",
|
||||
"settings": "설정"
|
||||
}
|
||||
},
|
||||
"members": {
|
||||
"title": "멤버",
|
||||
"noMembers": "멤버 없음",
|
||||
"addMember": "멤버 추가",
|
||||
"addMemberTooltip": "사전 정의된 에이전트만 팀 멤버로 추가할 수 있습니다. 개방형 에이전트는 사용자별 컨텍스트를 가지며 팀 협업에 필요한 공유 컨텍스트가 없습니다.",
|
||||
"selectAgent": "추가할 에이전트 선택...",
|
||||
"noAvailableAgents": "사용 가능한 에이전트 없음",
|
||||
"searchAgents": "에이전트 검색...",
|
||||
"adding": "추가 중...",
|
||||
"add": "추가",
|
||||
"added": "멤버 추가됨",
|
||||
"failedAdd": "멤버 추가 실패",
|
||||
"removed": "멤버 제거됨",
|
||||
"failedRemove": "멤버 제거 실패",
|
||||
"removeMember": "멤버 제거",
|
||||
"columns": {
|
||||
"agent": "에이전트",
|
||||
"frontmatter": "프론트매터",
|
||||
"role": "역할",
|
||||
"addedAt": "추가된 시간",
|
||||
"actions": "작업"
|
||||
}
|
||||
},
|
||||
"tasks": {
|
||||
"title": "태스크",
|
||||
"loading": "태스크 불러오는 중...",
|
||||
"noTasks": "아직 태스크 없음",
|
||||
"noTasksDescription": "태스크는 팀 에이전트의 협업 중에 생성됩니다.",
|
||||
"refresh": "새로 고침",
|
||||
"createTask": "태스크 만들기",
|
||||
"createTaskTitle": "태스크 만들기",
|
||||
"subjectPlaceholder": "태스크 제목...",
|
||||
"descriptionPlaceholder": "선택적 설명...",
|
||||
"priorityLabel": "우선순위",
|
||||
"assign": "할당",
|
||||
"assignTo": "다음에 할당...",
|
||||
"unassigned": "미할당",
|
||||
"filters": {
|
||||
"active": "활성",
|
||||
"pending": "대기 중",
|
||||
"inProgress": "진행 중",
|
||||
"inReview": "검토 중",
|
||||
"completed": "완료됨",
|
||||
"all": "전체"
|
||||
},
|
||||
"columns": {
|
||||
"id": "ID",
|
||||
"subject": "제목",
|
||||
"status": "상태",
|
||||
"owner": "담당자",
|
||||
"priority": "우선순위",
|
||||
"taskId": "태스크 ID",
|
||||
"created": "생성됨",
|
||||
"actions": "작업"
|
||||
},
|
||||
"detail": {
|
||||
"title": "태스크 상세",
|
||||
"subject": "제목",
|
||||
"status": "상태:",
|
||||
"priority": "우선순위:",
|
||||
"owner": "담당자:",
|
||||
"type": "유형:",
|
||||
"blockedBy": "차단 원인:",
|
||||
"description": "설명",
|
||||
"result": "결과",
|
||||
"created": "생성됨:",
|
||||
"updated": "업데이트됨:",
|
||||
"taskId": "태스크 ID:",
|
||||
"noDescription": "설명 없음",
|
||||
"noResult": "아직 결과 없음",
|
||||
"progress": "진행률",
|
||||
"approve": "승인",
|
||||
"reject": "거부",
|
||||
"comments": "댓글",
|
||||
"noComments": "아직 댓글 없음",
|
||||
"commentPlaceholder": "댓글 추가...",
|
||||
"addComment": "댓글",
|
||||
"timeline": "타임라인",
|
||||
"attachments": "첨부 파일",
|
||||
"followupStatus": "응답 대기 중",
|
||||
"followupMessage": "알림 메시지:",
|
||||
"followupCount": "알림 발송: {{count}}회",
|
||||
"followupCountMax": "알림 발송: {{count}}/{{max}}회",
|
||||
"followupNext": "다음 알림:",
|
||||
"followupDone": "모든 알림 발송됨",
|
||||
"download": "다운로드"
|
||||
},
|
||||
"delete": "삭제",
|
||||
"deleteConfirm": "이 태스크를 삭제하시겠습니까? 취소할 수 없습니다.",
|
||||
"selected": "{{count}}개 선택됨",
|
||||
"deleteSelected": "선택 항목 삭제",
|
||||
"deleteBulkTitle": "태스크 삭제",
|
||||
"deleteBulkConfirm": "{{count}}개 태스크가 영구적으로 삭제됩니다. 확인하려면 \"delete\"를 입력하세요.",
|
||||
"badges": {
|
||||
"awaitingReply": "응답 대기 중"
|
||||
}
|
||||
},
|
||||
"delegations": {
|
||||
"noTitle": "위임 없음",
|
||||
"noDescription": "이 팀에 대한 위임 기록을 찾을 수 없습니다.",
|
||||
"refresh": "새로 고침",
|
||||
"columns": {
|
||||
"sourceTarget": "출처 / 대상",
|
||||
"task": "태스크",
|
||||
"status": "상태",
|
||||
"duration": "소요 시간",
|
||||
"time": "시간"
|
||||
}
|
||||
},
|
||||
"workspace": {
|
||||
"title": "워크스페이스",
|
||||
"noFiles": "아직 워크스페이스 파일 없음",
|
||||
"noFilesDescription": "파일은 팀 에이전트의 협업 중에 생성됩니다.",
|
||||
"refresh": "새로 고침",
|
||||
"delete": "삭제",
|
||||
"confirmDelete": "이 파일을 삭제하시겠습니까?",
|
||||
"columns": {
|
||||
"fileName": "파일 이름",
|
||||
"size": "크기",
|
||||
"uploadedBy": "업로드한 사람",
|
||||
"scope": "범위",
|
||||
"updated": "업데이트됨"
|
||||
},
|
||||
"detail": {
|
||||
"title": "파일 내용",
|
||||
"empty": "파일이 비어있거나 바이너리입니다"
|
||||
},
|
||||
"upload": {
|
||||
"title": "워크스페이스에 업로드",
|
||||
"description": "협업 중 에이전트가 읽을 파일을 업로드합니다"
|
||||
},
|
||||
"crossScopeMoveError": "다른 범위 간에 파일을 이동할 수 없습니다",
|
||||
"moveFailed": "파일 이동 실패"
|
||||
},
|
||||
"auditLogs": {
|
||||
"title": "감사 로그",
|
||||
"empty": "아직 이벤트 없음",
|
||||
"loadMore": "더 불러오기",
|
||||
"event": {
|
||||
"created": "생성됨",
|
||||
"claimed": "클레임됨",
|
||||
"assigned": "할당됨",
|
||||
"dispatched": "발송됨",
|
||||
"completed": "완료됨",
|
||||
"failed": "실패",
|
||||
"cancelled": "취소됨",
|
||||
"reviewed": "검토됨",
|
||||
"approved": "승인됨",
|
||||
"rejected": "거부됨",
|
||||
"commented": "댓글 달림",
|
||||
"progress": "진행 중",
|
||||
"updated": "업데이트됨",
|
||||
"stale": "기한 초과"
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
"title": "팀 설정",
|
||||
"name": "이름",
|
||||
"displayName": "표시 이름",
|
||||
"description": "설명",
|
||||
"leadAgent": "리더 에이전트",
|
||||
"status": "상태",
|
||||
"active": "활성",
|
||||
"inactive": "비활성",
|
||||
"save": "설정 저장",
|
||||
"saving": "저장 중...",
|
||||
"saved": "저장됨",
|
||||
"failedSave": "저장 실패",
|
||||
"userAccessControl": "사용자 접근 제어",
|
||||
"allowedUsers": "허용된 사용자",
|
||||
"allowedUsersHint": "설정된 경우 이 사용자만 팀 워크플로를 트리거할 수 있습니다. 비어있으면 모두 허용.",
|
||||
"deniedUsers": "차단된 사용자",
|
||||
"deniedUsersHint": "항상 차단되며, 허용 목록을 재정의합니다.",
|
||||
"channelRestrictions": "채널 제한",
|
||||
"allowedChannels": "허용된 채널",
|
||||
"allowedChannelsHint": "설정된 경우 이 채널만 팀 워크플로를 활성화할 수 있습니다. 비어있으면 모두 허용.",
|
||||
"deniedChannels": "차단된 채널",
|
||||
"deniedChannelsHint": "이 채널의 메시지는 항상 차단됩니다.",
|
||||
"notifications": "알림",
|
||||
"notifyDispatched": "태스크 발송됨",
|
||||
"notifyDispatchedHint": "팀 멤버에게 태스크가 할당될 때 알림.",
|
||||
"notifyProgress": "태스크 진행",
|
||||
"notifyProgressHint": "멤버가 태스크 진행률을 업데이트할 때 알림.",
|
||||
"notifyFailed": "태스크 실패",
|
||||
"notifyFailedHint": "태스크가 실패할 때 알림.",
|
||||
"notifySlowTool": "느린 도구 경고",
|
||||
"notifySlowToolHint": "도구 호출이 비정상적으로 오래 걸릴 때 시스템 경고. 항상 직접 — 리더를 통하지 않음.",
|
||||
"notifyMode": "전달 모드",
|
||||
"notifyModeHint": "채팅 채널로 알림이 전달되는 방법입니다.",
|
||||
"notifyModeDirect": "직접",
|
||||
"notifyModeDirectDesc": "채팅 채널에 직접 알림을 보냅니다. 빠르고 AI 처리 없음.",
|
||||
"notifyModeLeader": "리더를 통해",
|
||||
"notifyModeLeaderDesc": "리더 에이전트가 사용자에게 보내기 전에 업데이트를 자연스럽게 재구성합니다.",
|
||||
"notifyModeLeaderWarning": "리더 모드는 AI를 사용하여 메시지를 재구성합니다 (토큰 사용, 더 느릴 수 있음).",
|
||||
"notifyCompleted": "태스크 완료 시 알림",
|
||||
"notifyCommented": "태스크 댓글 시 알림",
|
||||
"notifyNewTask": "새 태스크 생성 시 알림",
|
||||
"memberRequests": "멤버 요청",
|
||||
"memberRequestsEnabled": "멤버 요청 태스크 허용",
|
||||
"memberRequestsEnabledDesc": "멤버들이 팀원에게 도움을 요청하는 요청 태스크를 만들 수 있습니다",
|
||||
"memberRequestsAutoDispatch": "담당자에게 자동 발송",
|
||||
"memberRequestsAutoDispatchDesc": "요청이 즉시 발송됩니다. 그렇지 않으면 리더 검토를 위해 대기 상태를 유지합니다",
|
||||
"searchUsers": "사용자 검색...",
|
||||
"selectChannel": "채널 선택...",
|
||||
"escalationPolicy": "에스컬레이션 정책",
|
||||
"escalationMode": "에스컬레이션 모드",
|
||||
"escalationModeHint": "에이전트가 요청한 권한 있는 워크스페이스 작업(고정, 태그, 다른 사람의 파일 삭제, set_template)이 처리되는 방식을 제어합니다.",
|
||||
"blockerEscalation": "차단 에스컬레이션",
|
||||
"blockerEscalationEnabled": "차단 에스컬레이션 활성화",
|
||||
"blockerEscalationHint": "멤버가 차단 요인을 표시하면 태스크가 자동으로 실패하고 리더에게 업데이트된 지시로 재시도하라는 알림이 전송됩니다.",
|
||||
"escalationModeAuto": "자동 (기본값)",
|
||||
"escalationModeAutoDesc": "LLM 리더가 요청을 평가합니다 — 거부하거나 검토 태스크를 생성합니다. 직접 실행하지 않습니다.",
|
||||
"escalationModeReview": "검토",
|
||||
"escalationModeReviewDesc": "항상 사람의 승인을 위한 대기 태스크를 생성합니다. 자동 거부 없음.",
|
||||
"escalationModeReject": "거부",
|
||||
"escalationModeRejectDesc": "모든 권한 있는 작업 요청을 거부합니다. 잠금 모드.",
|
||||
"escalationModeNone": "없음",
|
||||
"escalationModeNoneDesc": "에스컬레이션 정책 없음. 리더 에이전트가 직접 작업을 실행합니다.",
|
||||
"escalationActions": "에스컬레이션 작업",
|
||||
"escalationActionsHint": "에스컬레이션이 필요한 워크스페이스 작업을 선택합니다. 선택하지 않으면 모든 권한 있는 작업이 에스컬레이션됩니다.",
|
||||
"followupReminders": "후속 알림",
|
||||
"followupInterval": "알림 간격 (분)",
|
||||
"followupIntervalHint": "각 후속 알림을 사용자에게 보내기 전 대기할 시간입니다.",
|
||||
"followupMaxReminders": "최대 알림 수",
|
||||
"followupMaxRemindersHint": "태스크당 최대 알림 수입니다. 0 = 무제한 (사용자가 응답할 때까지 알림).",
|
||||
"workspace": "워크스페이스",
|
||||
"workspaceScope": "워크스페이스 범위",
|
||||
"workspaceScopeHint": "팀 워크스페이스 파일이 구성되는 방식을 제어합니다.",
|
||||
"workspaceScopeIsolated": "격리됨",
|
||||
"workspaceScopeIsolatedDesc": "각 대화는 자체 워크스페이스 폴더를 가집니다. 한 채팅의 파일은 다른 채팅에서 보이지 않습니다.",
|
||||
"workspaceScopeShared": "공유됨",
|
||||
"workspaceScopeSharedDesc": "모든 대화가 단일 워크스페이스 폴더를 공유합니다. 어떤 채팅에서든 생성된 파일은 모두에게 보입니다.",
|
||||
"teamVersion": "팀 버전",
|
||||
"versionBasic": "기본",
|
||||
"versionAdvanced": "고급",
|
||||
"versionBasicDesc": "태스크 관리 및 공유 워크스페이스.",
|
||||
"versionAdvancedDesc": "모든 V1 기능과 실행 잠금, 후속 알림, 검토 워크플로, 진행률 추적, 댓글, 감사 추적, 자동 복구가 포함됩니다.",
|
||||
"whatsNew": "무엇이 다른가요?",
|
||||
"versionModal": {
|
||||
"title": "슈퍼 팀 기능",
|
||||
"feature": "기능",
|
||||
"taskManagement": "태스크 관리",
|
||||
"taskManagementDesc": "태스크 생성, 할당, 완료, 취소",
|
||||
"sharedWorkspace": "공유 워크스페이스",
|
||||
"sharedWorkspaceDesc": "파일, 버전, 팀 협업",
|
||||
"executionLocking": "실행 잠금",
|
||||
"executionLockingDesc": "자동 복구로 태스크 충돌 방지",
|
||||
"followupReminders": "후속 알림",
|
||||
"followupRemindersDesc": "사용자 응답 대기 중 자동 알림",
|
||||
"reviewWorkflow": "검토 워크플로",
|
||||
"reviewWorkflowDesc": "완료 전 사람 검토를 위해 제출",
|
||||
"progressTracking": "진행률 추적",
|
||||
"progressTrackingDesc": "실시간 백분율 및 단계 업데이트",
|
||||
"commentsAudit": "댓글 & 감사",
|
||||
"commentsAuditDesc": "태스크 댓글 및 전체 이벤트 기록",
|
||||
"autoRecovery": "자동 복구",
|
||||
"autoRecoveryDesc": "중단된 태스크가 타임아웃 후 자동 재설정",
|
||||
"escalationPolicy": "차단 에스컬레이션",
|
||||
"escalationPolicyDesc": "멤버가 차단 요인을 표시할 수 있습니다 — 태스크가 자동 실패하고 리더에게 재시도 알림",
|
||||
"comingSoon": "준비 중",
|
||||
"downgradeNote": "다운그레이드는 안전합니다 — V2 데이터가 보존되지만 숨겨집니다.",
|
||||
"betaNote": "일부 기능은 현재 베타 버전입니다.",
|
||||
"gotIt": "알겠습니다"
|
||||
}
|
||||
},
|
||||
"create": {
|
||||
"title": "팀 만들기",
|
||||
"name": "이름 *",
|
||||
"namePlaceholder": "예: 리서치 팀",
|
||||
"nameHint": "소문자, 숫자, 하이픈",
|
||||
"description": "설명",
|
||||
"descriptionPlaceholder": "선택적 팀 설명...",
|
||||
"leadAgent": "리더 에이전트 *",
|
||||
"selectLeadAgent": "리더 에이전트 선택...",
|
||||
"loadingAgents": "에이전트 불러오는 중...",
|
||||
"noActiveAgents": "활성 에이전트를 찾을 수 없습니다. 먼저 에이전트를 만드세요.",
|
||||
"members": "멤버",
|
||||
"membersTooltip": "사전 정의된 에이전트만 팀 멤버로 추가할 수 있습니다. 개방형 에이전트는 사용자별 컨텍스트를 가지며 팀 협업에 필요한 공유 컨텍스트가 없습니다.",
|
||||
"needMembers": "팀에 최소 1명의 멤버를 선택하세요",
|
||||
"searchMembers": "멤버 검색 및 추가...",
|
||||
"displayName": "표시 이름",
|
||||
"displayNamePlaceholder": "지원 팀",
|
||||
"cancel": "취소",
|
||||
"create": "만들기",
|
||||
"creating": "생성 중..."
|
||||
},
|
||||
"toast": {
|
||||
"created": "팀 생성됨",
|
||||
"deleted": "팀 삭제됨",
|
||||
"updated": "팀 업데이트됨",
|
||||
"memberAdded": "멤버 추가됨",
|
||||
"memberRemoved": "멤버 제거됨",
|
||||
"failedCreate": "팀 생성 실패",
|
||||
"failedDelete": "팀 삭제 실패",
|
||||
"failedUpdate": "팀 업데이트 실패",
|
||||
"failedAddMember": "멤버 추가 실패",
|
||||
"failedRemoveMember": "멤버 제거 실패",
|
||||
"taskCreated": "태스크 생성됨",
|
||||
"taskDeleted": "태스크 삭제됨",
|
||||
"taskAssigned": "태스크 할당됨",
|
||||
"taskApproved": "태스크 승인됨",
|
||||
"taskRejected": "태스크 거부됨",
|
||||
"tasksBulkDeleted": "태스크 삭제됨",
|
||||
"failedCreateTask": "태스크 생성 실패",
|
||||
"failedDeleteTask": "태스크 삭제 실패",
|
||||
"failedAssignTask": "태스크 할당 실패",
|
||||
"failedApproveTask": "태스크 승인 실패",
|
||||
"failedRejectTask": "태스크 거부 실패",
|
||||
"failedBulkDeleteTasks": "태스크 삭제 실패",
|
||||
"workspaceFileDeleted": "파일 삭제됨",
|
||||
"failedDeleteWorkspaceFile": "파일 삭제 실패"
|
||||
},
|
||||
"board": {
|
||||
"kanban": "보드",
|
||||
"list": "목록",
|
||||
"groupBy": "그룹화",
|
||||
"groupByStatus": "상태",
|
||||
"groupByOwner": "담당자",
|
||||
"groupByType": "유형",
|
||||
"running": "실행 중",
|
||||
"locked": "에이전트가 실행 중",
|
||||
"emptyColumn": "태스크 없음",
|
||||
"unassigned": "미할당",
|
||||
"createViaChat": "팀 에이전트와 채팅하여 태스크 생성"
|
||||
},
|
||||
"sidebar": {
|
||||
"members": "멤버",
|
||||
"workspace": "워크스페이스",
|
||||
"delegations": "위임",
|
||||
"settings": "설정",
|
||||
"addMember": "멤버 추가"
|
||||
},
|
||||
"tabs": {
|
||||
"teams": "에이전트 팀",
|
||||
"board": "보드",
|
||||
"links": "에이전트 링크",
|
||||
"settings": "설정"
|
||||
},
|
||||
"links": {
|
||||
"title": "에이전트 링크",
|
||||
"empty": "에이전트 링크가 설정되지 않았습니다.",
|
||||
"create": "링크 만들기",
|
||||
"editLink": "링크 편집",
|
||||
"save": "저장",
|
||||
"source": "소스 에이전트",
|
||||
"target": "대상 에이전트",
|
||||
"selectAgent": "에이전트 선택...",
|
||||
"direction": "방향",
|
||||
"outbound": "아웃바운드",
|
||||
"inbound": "인바운드",
|
||||
"bidirectional": "양방향",
|
||||
"description": "설명",
|
||||
"descriptionPlaceholder": "선택적 설명...",
|
||||
"maxConcurrent": "최대 동시",
|
||||
"status": "상태",
|
||||
"active": "활성",
|
||||
"disabled": "비활성화됨",
|
||||
"deleteTitle": "링크 삭제",
|
||||
"confirmDelete": "이 에이전트 링크를 삭제하시겠습니까? 취소할 수 없습니다.",
|
||||
"deleted": "링크 삭제됨",
|
||||
"deleteFailed": "링크 삭제 실패",
|
||||
"created": "링크 생성됨",
|
||||
"createFailed": "링크 생성 실패",
|
||||
"updated": "링크 업데이트됨",
|
||||
"updateFailed": "링크 업데이트 실패",
|
||||
"sameAgentError": "소스와 대상은 다른 에이전트여야 합니다."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"title": "테넌트",
|
||||
"description": "테넌트 및 사용자 접근 관리",
|
||||
"createTenant": "테넌트 만들기",
|
||||
"name": "이름",
|
||||
"slug": "슬러그",
|
||||
"status": "상태",
|
||||
"users": "사용자",
|
||||
"role": "역할",
|
||||
"addUser": "사용자 추가",
|
||||
"removeUser": "사용자 제거",
|
||||
"userId": "사용자 ID",
|
||||
"active": "활성",
|
||||
"suspended": "정지됨",
|
||||
"archived": "보관됨",
|
||||
"allTenants": "모든 테넌트",
|
||||
"currentTenant": "현재 테넌트",
|
||||
"noTenants": "테넌트 없음",
|
||||
"confirmRemoveUser": "이 사용자를 테넌트에서 제거하시겠습니까?",
|
||||
"slugHelp": "URL 안전 식별자 (소문자, 하이픈만)",
|
||||
"detail": "테넌트 세부 정보",
|
||||
"back": "테넌트 목록으로",
|
||||
"userManagement": "사용자 관리",
|
||||
"addUserTitle": "테넌트에 사용자 추가",
|
||||
"selectRole": "역할 선택",
|
||||
"roleOwner": "소유자",
|
||||
"roleAdmin": "관리자",
|
||||
"roleOperator": "운영자",
|
||||
"roleMember": "멤버",
|
||||
"roleViewer": "뷰어",
|
||||
"noUsers": "이 테넌트에 사용자 없음",
|
||||
"created": "생성됨"
|
||||
}
|
||||
@@ -0,0 +1,211 @@
|
||||
{
|
||||
"custom": {
|
||||
"title": "커스텀 도구",
|
||||
"description": "에이전트를 위한 커스텀 셸 기반 도구 관리",
|
||||
"createTool": "도구 만들기",
|
||||
"searchPlaceholder": "도구 검색...",
|
||||
"emptyTitle": "커스텀 도구 없음",
|
||||
"emptyDescription": "첫 번째 커스텀 도구를 만들어 시작하세요.",
|
||||
"noMatchTitle": "일치하는 도구 없음",
|
||||
"noMatchDescription": "다른 검색어를 사용해 보세요.",
|
||||
"noDescription": "설명 없음",
|
||||
"columns": {
|
||||
"name": "이름",
|
||||
"description": "설명",
|
||||
"scope": "범위",
|
||||
"enabled": "활성화됨",
|
||||
"timeout": "타임아웃",
|
||||
"actions": "작업"
|
||||
},
|
||||
"scope": {
|
||||
"agent": "에이전트",
|
||||
"global": "전역"
|
||||
},
|
||||
"delete": {
|
||||
"title": "커스텀 도구 삭제",
|
||||
"description": "\"{{name}}\"을 삭제하시겠습니까? 이 작업은 취소할 수 없습니다.",
|
||||
"confirmLabel": "삭제"
|
||||
},
|
||||
"form": {
|
||||
"createTitle": "커스텀 도구 만들기",
|
||||
"editTitle": "도구 편집",
|
||||
"name": "이름 *",
|
||||
"namePlaceholder": "my-tool",
|
||||
"nameHint": "소문자, 숫자, 하이픈만 사용",
|
||||
"description": "설명",
|
||||
"descriptionPlaceholder": "이 도구의 역할...",
|
||||
"command": "명령 *",
|
||||
"commandHint": "셸 템플릿. 매개변수 자리표시자에 {{.key}}를 사용하세요.",
|
||||
"parameters": "매개변수 (JSON Schema)",
|
||||
"workingDir": "작업 디렉터리",
|
||||
"workingDirPlaceholder": "/path/to/dir",
|
||||
"timeout": "타임아웃 (초)",
|
||||
"agentId": "에이전트 ID (선택사항)",
|
||||
"agentIdPlaceholder": "전역 범위로 사용하려면 비워두세요",
|
||||
"enabled": "활성화됨",
|
||||
"cancel": "취소",
|
||||
"create": "만들기",
|
||||
"update": "업데이트",
|
||||
"saving": "저장 중...",
|
||||
"errors": {
|
||||
"nameRequired": "이름과 명령이 필요합니다",
|
||||
"nameSlug": "이름은 유효한 슬러그여야 합니다 (소문자, 숫자, 하이픈만 사용)",
|
||||
"invalidJson": "매개변수는 유효한 JSON이어야 합니다"
|
||||
}
|
||||
},
|
||||
"toast": {
|
||||
"created": "도구 생성됨",
|
||||
"createdDesc": "{{name}}이 추가되었습니다",
|
||||
"updated": "도구 업데이트됨",
|
||||
"deleted": "도구 삭제됨",
|
||||
"failedCreate": "도구 생성 실패",
|
||||
"failedUpdate": "도구 업데이트 실패",
|
||||
"failedDelete": "도구 삭제 실패"
|
||||
}
|
||||
},
|
||||
"builtin": {
|
||||
"title": "내장 도구",
|
||||
"description": "시스템 내장 도구를 관리합니다. 전역으로 활성화/비활성화하거나 설정을 구성합니다.",
|
||||
"searchPlaceholder": "도구 검색...",
|
||||
"emptyTitle": "내장 도구 없음",
|
||||
"emptyDescription": "아직 내장 도구가 시딩되지 않았습니다.",
|
||||
"noMatchTitle": "일치하는 도구 없음",
|
||||
"noMatchDescription": "다른 검색어를 사용해 보세요.",
|
||||
"toolCount": "{{count}}개 도구",
|
||||
"toolCountPlural": "{{count}}개 도구",
|
||||
"categoryCount": "{{count}}개 카테고리",
|
||||
"requires": "필요",
|
||||
"requiresTooltip": "필요: {{list}}",
|
||||
"deprecated": "더 이상 사용되지 않음",
|
||||
"deprecatedTooltip": "이 도구는 더 이상 사용되지 않으며 사용할 수 없습니다",
|
||||
"settings": "설정",
|
||||
"configuredVia": "설정 페이지에서 구성됨",
|
||||
"tenantOverride": "테넌트 재정의",
|
||||
"tenantEnabled": "이 테넌트에서 활성화됨",
|
||||
"tenantDisabled": "이 테넌트에서 비활성화됨",
|
||||
"tenantDefault": "기본값 사용",
|
||||
"resetToDefault": "기본값으로 재설정",
|
||||
"unconfiguredWarning": "{{count}}개 도구에 에이전트가 최대 성능으로 사용하기 위한 공급자 설정이 필요합니다.",
|
||||
"unconfiguredAction": "설정",
|
||||
"categories": {
|
||||
"filesystem": "파일 시스템",
|
||||
"runtime": "런타임",
|
||||
"web": "웹",
|
||||
"memory": "메모리",
|
||||
"media": "미디어",
|
||||
"browser": "브라우저",
|
||||
"sessions": "세션",
|
||||
"messaging": "메시징",
|
||||
"scheduling": "스케줄링",
|
||||
"subagents": "에이전트",
|
||||
"skills": "스킬",
|
||||
"delegation": "위임",
|
||||
"teams": "팀"
|
||||
},
|
||||
"settingsDialog": {
|
||||
"title": "설정 — {{name}}",
|
||||
"cancel": "취소",
|
||||
"save": "저장",
|
||||
"saving": "저장 중...",
|
||||
"noFields": "이 도구에 대한 구성 가능한 설정이 없습니다.",
|
||||
"toast": {
|
||||
"saved": "설정 저장됨",
|
||||
"failed": "설정 저장 실패"
|
||||
}
|
||||
},
|
||||
"jsonDialog": {
|
||||
"title": "설정: {{name}}",
|
||||
"description": "도구별 설정을 JSON으로 편집합니다. 저장 후 즉시 적용됩니다.",
|
||||
"formatJson": "JSON 포맷",
|
||||
"invalidJsonSyntax": "잘못된 JSON 구문",
|
||||
"invalidJson": "잘못된 JSON",
|
||||
"cannotFormat": "포맷 불가: 잘못된 JSON",
|
||||
"cancel": "취소",
|
||||
"save": "저장",
|
||||
"saving": "저장 중..."
|
||||
},
|
||||
"kgSettings": {
|
||||
"title": "지식 그래프 설정",
|
||||
"description": "메모리 쓰기에서 엔티티 추출을 구성합니다. 구조화된 JSON 출력을 지원하는 공급자/모델이 필요합니다.",
|
||||
"extractionProvider": "추출 공급자",
|
||||
"extractionModel": "추출 모델",
|
||||
"providerTip": "텍스트에서 엔티티와 관계를 추출하는 데 사용되는 LLM 공급자입니다.",
|
||||
"modelTip": "추출 모델 ID입니다. 구조화된 JSON 출력을 지원해야 합니다.",
|
||||
"minConfidence": "최소 신뢰도",
|
||||
"minConfidenceHint": "이 신뢰도 미만의 엔티티는 삭제됩니다 (0.0–1.0).",
|
||||
"autoExtract": "메모리 쓰기 시 자동 추출",
|
||||
"autoExtractHint": "에이전트가 메모리 파일에 쓸 때 자동으로 엔티티를 추출합니다.",
|
||||
"cancel": "취소",
|
||||
"save": "저장",
|
||||
"saving": "저장 중..."
|
||||
},
|
||||
"extractorChain": {
|
||||
"title": "웹 가져오기 — 추출기 체인",
|
||||
"description": "콘텐츠 추출기의 순서 목록입니다. 각 URL은 품질 있는 콘텐츠를 반환할 때까지 위에서 아래로 시도됩니다.",
|
||||
"timeout": "타임아웃",
|
||||
"baseUrl": "기본 URL",
|
||||
"save": "저장",
|
||||
"saving": "저장 중…",
|
||||
"cancel": "취소",
|
||||
"extractors": {
|
||||
"defuddle": "Defuddle (Cloudflare Worker)",
|
||||
"defuddleDesc": "Defuddle 라이브러리를 사용하여 fetch.goclaw.sh를 통해 깨끗한 마크다운을 추출합니다.",
|
||||
"html-to-markdown": "내장 HTML→Markdown",
|
||||
"html-to-markdownDesc": "숨겨진 요소 감지 기능이 있는 인-프로세스 DOM 기반 변환기입니다."
|
||||
}
|
||||
},
|
||||
"mediaChain": {
|
||||
"providerChainSuffix": "— 공급자 체인",
|
||||
"description": "공급자 폴백을 구성하고 순서를 지정합니다. 드래그하여 순서 변경 — 활성화된 첫 번째 공급자가 먼저 시도됩니다.",
|
||||
"newProvider": "새 공급자",
|
||||
"provider": "공급자",
|
||||
"model": "모델",
|
||||
"selectProvider": "공급자 선택",
|
||||
"loadingModels": "불러오는 중...",
|
||||
"selectModel": "모델 선택",
|
||||
"timeout": "타임아웃",
|
||||
"retries": "재시도",
|
||||
"settings": "설정",
|
||||
"noProviders": "공급자가 설정되지 않았습니다. 아래에서 추가하세요.",
|
||||
"addProvider": "공급자 추가",
|
||||
"cancel": "취소",
|
||||
"save": "저장",
|
||||
"saving": "저장 중..."
|
||||
},
|
||||
"toast": {
|
||||
"toggled": "도구 업데이트됨",
|
||||
"failedToggle": "도구 업데이트 실패"
|
||||
},
|
||||
"descriptions": {
|
||||
"read_file": "경로를 기준으로 에이전트의 워크스페이스에서 파일 내용을 읽습니다",
|
||||
"write_file": "워크스페이스의 파일에 내용을 쓰고, 필요 시 디렉터리를 생성합니다",
|
||||
"list_files": "워크스페이스 내 지정된 경로의 파일과 디렉터리를 나열합니다",
|
||||
"edit": "전체 파일을 다시 쓰지 않고 기존 파일에 대상 검색-교체 편집을 적용합니다",
|
||||
"exec": "워크스페이스에서 셸 명령을 실행하고 stdout/stderr를 반환합니다",
|
||||
"web_search": "검색 엔진(Brave 또는 DuckDuckGo)을 사용하여 웹에서 정보를 검색합니다",
|
||||
"web_fetch": "웹 페이지나 API 엔드포인트를 가져와 텍스트 내용을 추출합니다",
|
||||
"memory_search": "의미 유사성을 사용하여 에이전트의 장기 메모리를 검색합니다",
|
||||
"memory_get": "파일 경로로 특정 메모리 문서를 검색합니다",
|
||||
"knowledge_graph_search": "에이전트의 지식 그래프에서 엔티티, 관계, 관찰을 검색합니다",
|
||||
"read_image": "비전 가능 LLM 공급자를 사용하여 이미지를 분석합니다",
|
||||
"read_document": "문서 가능 LLM 공급자를 사용하여 문서(PDF, Word, Excel, PowerPoint, CSV 등)를 분석합니다",
|
||||
"create_image": "이미지 생성 공급자를 사용하여 텍스트 프롬프트에서 이미지를 생성합니다",
|
||||
"read_audio": "오디오 가능 LLM 공급자를 사용하여 오디오 파일(음성, 음악, 사운드)을 분석합니다",
|
||||
"read_video": "비디오 가능 LLM 공급자를 사용하여 비디오 파일을 분석합니다",
|
||||
"create_video": "AI를 사용하여 텍스트 설명에서 비디오를 생성합니다",
|
||||
"create_audio": "AI를 사용하여 텍스트 설명에서 음악이나 음향 효과를 생성합니다",
|
||||
"tts": "텍스트를 자연스러운 음성 오디오로 변환합니다",
|
||||
"browser": "브라우저 상호작용 자동화: 페이지 탐색, 요소 클릭, 양식 입력, 스크린샷 촬영",
|
||||
"sessions_list": "모든 채널의 활성 채팅 세션을 나열합니다",
|
||||
"session_status": "특정 채팅 세션의 현재 상태와 메타데이터를 가져옵니다",
|
||||
"sessions_history": "특정 채팅 세션의 메시지 기록을 검색합니다",
|
||||
"sessions_send": "에이전트를 대신하여 활성 채팅 세션에 메시지를 보냅니다",
|
||||
"message": "연결된 채널(Telegram, Discord 등)의 사용자에게 선제적 메시지를 보냅니다",
|
||||
"cron": "cron 표현식, at-time 또는 간격을 사용하여 반복 작업을 예약하거나 관리합니다",
|
||||
"spawn": "백그라운드에서 태스크를 처리하기 위해 서브에이전트를 생성합니다",
|
||||
"skill_search": "키워드나 설명으로 사용 가능한 스킬을 검색하여 관련 기능을 찾습니다",
|
||||
"use_skill": "스킬을 활성화하여 전문화된 기능을 사용합니다 (추적 마커)",
|
||||
"team_tasks": "팀 태스크 보드의 태스크를 조회, 생성, 업데이트, 완료합니다"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"expandSidebar": "사이드바 펼치기",
|
||||
"collapseSidebar": "사이드바 접기",
|
||||
"openMenu": "메뉴 열기",
|
||||
"systemSettings": "시스템 설정",
|
||||
"toggleTheme": "테마 전환",
|
||||
"logout": "로그아웃",
|
||||
"logoutConfirm": "정말 로그아웃하시겠습니까?",
|
||||
"language": "언어",
|
||||
"timezone": "시간대",
|
||||
"pairingRequests": "페어링 요청",
|
||||
"pendingPairingRequest": "{{count}}개 페어링 요청 대기 중",
|
||||
"pendingPairingRequests": "{{count}}개 페어링 요청 대기 중",
|
||||
"apiKeys": "API 키",
|
||||
"documents": "문서",
|
||||
"about": {
|
||||
"menuItem": "정보",
|
||||
"title": "GoClaw 정보",
|
||||
"version": "버전",
|
||||
"sourceCode": "소스 코드",
|
||||
"license": "라이선스",
|
||||
"documentation": "문서",
|
||||
"reportBug": "버그 신고",
|
||||
"upToDate": "최신 버전",
|
||||
"updateAvailable": "업데이트 가능: {{version}}",
|
||||
"viewRelease": "릴리스 노트 보기 →",
|
||||
"releaseNotes": "릴리스 노트"
|
||||
},
|
||||
"languages": {
|
||||
"en": "English",
|
||||
"vi": "Tiếng Việt",
|
||||
"zh": "中文",
|
||||
"ko": "한국어"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
{
|
||||
"title": "추적",
|
||||
"description": "LLM 호출 추적 및 성능 데이터",
|
||||
"filterPlaceholder": "에이전트 ID로 필터...",
|
||||
"filter": "필터",
|
||||
"allAgents": "모든 에이전트",
|
||||
"allChannels": "모든 채널",
|
||||
"emptyTitle": "추적 없음",
|
||||
"emptyDescription": "추적이 없습니다. 에이전트가 요청을 처리하면 기록됩니다.",
|
||||
"columns": {
|
||||
"name": "이름",
|
||||
"status": "상태",
|
||||
"duration": "소요 시간",
|
||||
"tokens": "토큰",
|
||||
"spans": "스팬",
|
||||
"time": "시간"
|
||||
},
|
||||
"source": {
|
||||
"direct": "직접",
|
||||
"group": "그룹",
|
||||
"cron": "Cron",
|
||||
"team": "팀",
|
||||
"ws": "웹",
|
||||
"unknown": "기타"
|
||||
},
|
||||
"unnamed": "이름 없음",
|
||||
"stopRun": "실행 중지",
|
||||
"cached": "캐시됨",
|
||||
"detail": {
|
||||
"title": "추적 세부 정보",
|
||||
"copyTraceId": "추적 ID 복사",
|
||||
"notFound": "추적을 찾을 수 없습니다.",
|
||||
"name": "이름:",
|
||||
"status": "상태:",
|
||||
"duration": "소요 시간:",
|
||||
"channel": "채널:",
|
||||
"tokens": "토큰:",
|
||||
"spans": "스팬:",
|
||||
"started": "시작됨:",
|
||||
"delegatedFrom": "위임 출처:",
|
||||
"createdAt": "생성됨:",
|
||||
"input": "입력",
|
||||
"output": "출력",
|
||||
"copy": "복사",
|
||||
"spansCount": "스팬 ({{count}}개)",
|
||||
"llmCalls": "LLM",
|
||||
"toolCalls": "도구",
|
||||
"export": "추적 내보내기",
|
||||
"stopRun": "실행 중지"
|
||||
},
|
||||
"span": {
|
||||
"model": "모델:",
|
||||
"tokens": "토큰:",
|
||||
"reasoning": "추론:",
|
||||
"source": "소스",
|
||||
"requested": "요청됨",
|
||||
"effective": "실효",
|
||||
"fallback": "대체",
|
||||
"modelDefault": "모델 기본값",
|
||||
"supportedLevels": "지원됨:",
|
||||
"sourceValue": {
|
||||
"provider_default": "공급자 기본값",
|
||||
"reasoning": "에이전트 고급",
|
||||
"thinking_level": "레거시 사고 레벨",
|
||||
"unset": "미설정"
|
||||
},
|
||||
"createdAt": "생성됨:",
|
||||
"input": "입력:",
|
||||
"output": "출력:",
|
||||
"copy": "복사",
|
||||
"startTime": "시작:",
|
||||
"endTime": "종료:",
|
||||
"cacheRead": "읽기",
|
||||
"cacheWrite": "쓰기",
|
||||
"thinking": "사고 중",
|
||||
"cached": "캐시됨"
|
||||
},
|
||||
"toast": {
|
||||
"failedLoad": "추적 로드 실패",
|
||||
"abortSent": "실행 중지됨",
|
||||
"abortFailed": "실행 중지 실패",
|
||||
"abortNotFound": "실행이 이미 완료되었거나 찾을 수 없습니다"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
{
|
||||
"title": "텍스트 음성 변환",
|
||||
"description": "TTS 공급자 및 자동 적용 설정",
|
||||
"save": "저장",
|
||||
"saving": "저장 중...",
|
||||
"saveChanges": "변경사항 저장",
|
||||
"status": {
|
||||
"title": "상태",
|
||||
"configured": "설정됨",
|
||||
"disabled": "사용 안 함",
|
||||
"noProvider": "설정된 TTS 공급자 없음",
|
||||
"activeProvider": "기본 공급자: {{provider}}, 자동: {{auto}}"
|
||||
},
|
||||
"general": {
|
||||
"title": "일반 설정",
|
||||
"primaryProvider": "기본 공급자",
|
||||
"autoApplyMode": "자동 적용 모드",
|
||||
"replyMode": "답장 모드",
|
||||
"maxTextLength": "최대 텍스트 길이",
|
||||
"timeout": "제한 시간 (ms)"
|
||||
},
|
||||
"providers": {
|
||||
"none": "없음 (사용 안 함)",
|
||||
"openai": "OpenAI",
|
||||
"elevenlabs": "ElevenLabs",
|
||||
"edge": "Edge (무료)",
|
||||
"minimax": "MiniMax"
|
||||
},
|
||||
"autoModes": {
|
||||
"off": "끄기",
|
||||
"offDesc": "에이전트가 TTS 도구를 수동으로 사용할 수 있음",
|
||||
"always": "항상",
|
||||
"alwaysDesc": "모든 답장에 오디오 적용",
|
||||
"inbound": "수신",
|
||||
"inboundDesc": "사용자가 음성/오디오를 보낼 때만",
|
||||
"tagged": "태그됨",
|
||||
"taggedDesc": "답장에 [[tts]] 태그가 있을 때만"
|
||||
},
|
||||
"replyModes": {
|
||||
"final": "최종만",
|
||||
"finalDesc": "최종 답장만",
|
||||
"all": "전체",
|
||||
"allDesc": "도구/블록 포함 모든 답장"
|
||||
},
|
||||
"providerSettings": "{{provider}} 설정",
|
||||
"openai": {
|
||||
"apiKey": "API 키",
|
||||
"apiBase": "API 기본 URL",
|
||||
"model": "모델",
|
||||
"voice": "음성"
|
||||
},
|
||||
"elevenlabs": {
|
||||
"apiKey": "API 키",
|
||||
"baseUrl": "기본 URL",
|
||||
"voiceId": "음성 ID",
|
||||
"modelId": "모델 ID"
|
||||
},
|
||||
"edge": {
|
||||
"voice": "음성",
|
||||
"speechRate": "발화 속도",
|
||||
"hint": "Edge TTS는 무료이며 API 키가 필요 없습니다. 설치 명령: pip install edge-tts"
|
||||
},
|
||||
"minimax": {
|
||||
"apiKey": "API 키",
|
||||
"groupId": "그룹 ID *",
|
||||
"groupIdPlaceholder": "MiniMax에 필요",
|
||||
"apiBase": "API 기본",
|
||||
"model": "모델",
|
||||
"voiceId": "음성 ID"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
{
|
||||
"title": "사용량",
|
||||
"description": "에이전트별 토큰 사용량 및 비용",
|
||||
"emptyTitle": "사용량 데이터 없음",
|
||||
"emptyDescription": "에이전트가 요청을 처리하면 여기에 사용량 데이터가 나타납니다.",
|
||||
"summary": {
|
||||
"sessions": "{{count}}개 세션",
|
||||
"inputTokens": "입력 토큰",
|
||||
"outputTokens": "출력 토큰",
|
||||
"total": "합계"
|
||||
},
|
||||
"recentRecords": "최근 기록",
|
||||
"columns": {
|
||||
"agent": "에이전트",
|
||||
"model": "모델",
|
||||
"provider": "공급자",
|
||||
"input": "입력",
|
||||
"output": "출력",
|
||||
"total": "합계",
|
||||
"channel": "채널",
|
||||
"cost": "비용",
|
||||
"status": "상태"
|
||||
},
|
||||
"analytics": {
|
||||
"title": "사용량 분석",
|
||||
"period24h": "24시간",
|
||||
"period7d": "7일",
|
||||
"period30d": "30일",
|
||||
"periodCustom": "사용자 지정",
|
||||
"allAgents": "모든 에이전트",
|
||||
"allProviders": "모든 공급자",
|
||||
"allChannels": "모든 채널",
|
||||
"activeFilters": "활성 필터",
|
||||
"clearAll": "전체 지우기",
|
||||
"exportCsv": "CSV 내보내기",
|
||||
"requests": "요청",
|
||||
"tokens": "토큰",
|
||||
"cost": "비용",
|
||||
"errors": "오류",
|
||||
"uniqueUsers": "고유 사용자",
|
||||
"llmCalls": "LLM 호출",
|
||||
"toolCalls": "도구 호출",
|
||||
"trendUp": "+{{value}}%",
|
||||
"trendDown": "{{value}}%",
|
||||
"vsPrevious": "이전 기간 대비",
|
||||
"configurePricing": "비용 추적을 위한 모델 가격 설정",
|
||||
"noData": "선택한 기간의 데이터 없음",
|
||||
"tokenChart": {
|
||||
"title": "시간별 토큰 사용량",
|
||||
"input": "입력 토큰",
|
||||
"output": "출력 토큰",
|
||||
"cache": "캐시 읽기 토큰",
|
||||
"thinking": "사고 토큰",
|
||||
"total": "합계"
|
||||
},
|
||||
"requestChart": {
|
||||
"title": "요청 수량 & 오류",
|
||||
"requests": "요청",
|
||||
"errors": "오류",
|
||||
"errorRate": "오류율"
|
||||
},
|
||||
"distribution": {
|
||||
"provider": "공급자 분포",
|
||||
"model": "모델 분포",
|
||||
"channel": "채널 분포",
|
||||
"other": "기타",
|
||||
"calls": "호출"
|
||||
},
|
||||
"durationChart": {
|
||||
"title": "소요 시간 & 성능",
|
||||
"avgDuration": "평균 소요 시간",
|
||||
"errorRate": "오류율 %"
|
||||
},
|
||||
"knowledgeChart": {
|
||||
"title": "메모리 & 지식 그래프 증가",
|
||||
"memoryDocs": "메모리 문서",
|
||||
"memoryChunks": "메모리 청크",
|
||||
"kgEntities": "KG 엔티티",
|
||||
"kgRelations": "KG 관계"
|
||||
},
|
||||
"topModels": {
|
||||
"title": "상위 모델",
|
||||
"model": "모델",
|
||||
"provider": "공급자",
|
||||
"llmCalls": "LLM 호출",
|
||||
"inputTokens": "입력 토큰",
|
||||
"outputTokens": "출력 토큰",
|
||||
"avgDuration": "평균 소요 시간",
|
||||
"cost": "비용"
|
||||
},
|
||||
"tooltip": {
|
||||
"date": "날짜",
|
||||
"total": "합계",
|
||||
"errorRate": "오류율 {{value}}%"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
{
|
||||
"title": "에이전트 기능 V3",
|
||||
"subtitle": "에이전트 지능을 구동하는 핵심 시스템",
|
||||
"note": "v3 에이전트에서는 모든 기능이 항상 활성화됩니다.",
|
||||
"tabs": {
|
||||
"pipeline": "파이프라인",
|
||||
"memory": "메모리",
|
||||
"knowledge": "지식",
|
||||
"orchestration": "오케스트레이션"
|
||||
},
|
||||
"pipeline": {
|
||||
"title": "8단계 실행 파이프라인",
|
||||
"description": "모든 메시지는 3개 단계의 8개 구조화된 단계를 거칩니다.",
|
||||
"setup": "설정",
|
||||
"setupDesc": "에이전트 설정, 워크스페이스 메타데이터, 사용자 기록, 과거 세션의 자동 삽입 메모리로 컨텍스트를 보강합니다.",
|
||||
"iteration": "반복 루프",
|
||||
"iterationDesc": "태스크가 완료되거나 최대 반복 횟수에 도달할 때까지 반복합니다.",
|
||||
"think": "사고",
|
||||
"thinkDesc": "전체 컨텍스트로 LLM 추론",
|
||||
"prune": "정리",
|
||||
"pruneDesc": "토큰 관리 및 압축",
|
||||
"tools": "도구",
|
||||
"toolsDesc": "LLM의 도구 호출 실행",
|
||||
"observe": "관찰",
|
||||
"observeDesc": "출력 캡처 및 유효성 검사",
|
||||
"checkpoint": "체크포인트",
|
||||
"checkpointDesc": "중간 상태 저장",
|
||||
"finalize": "완료",
|
||||
"finalizeDesc": "메타데이터 저장, 메모리 통합을 위한 이벤트 발생, 실행 정리."
|
||||
},
|
||||
"memory": {
|
||||
"title": "3계층 메모리 시스템",
|
||||
"description": "대화에서 장기 지식까지 단계적 메모리.",
|
||||
"l0Title": "L0 작업 메모리",
|
||||
"l0Desc": "토큰 기반 자동 압축이 있는 세션 기록. 기록이 컨텍스트 창 임계값을 초과하면 오래된 메시지가 LLM에 의해 요약되고 잘립니다. 메모리 플러시는 압축 전에 핵심 사실을 영구 파일로 추출합니다.",
|
||||
"l1Title": "L1 에피소딕 메모리",
|
||||
"l1Desc": "각 대화 실행 후 생성되는 세션 요약. 각각 빠른 삽입을 위한 L0 추상화(~50 토큰)를 가집니다. 90일 TTL이 있는 하이브리드 FTS + 벡터 검색. 관련 추상화는 매 턴마다 시스템 프롬프트에 자동 삽입됩니다.",
|
||||
"l2Title": "L2 의미 메모리",
|
||||
"l2Desc": "LLM으로 추출된 엔티티와 관계가 있는 지식 그래프 (신뢰도 임계값 0.75). 자동 중복 제거로 유사한 엔티티를 병합합니다. 드리밍은 5개 이상의 에피소딕 항목을 메모리 도구로 검색 가능한 장기 사실 문서로 통합합니다.",
|
||||
"eventFlow": "이벤트 기반: session.completed가 L1 생성을 트리거하고, 이는 L2 추출과 드리밍을 트리거합니다."
|
||||
},
|
||||
"knowledge": {
|
||||
"kgTitle": "지식 그래프",
|
||||
"kgDesc": "세션 요약에서 LLM을 통해 사람, 프로젝트, 기술 등의 엔티티와 관계가 추출됩니다. 시간적 버전 관리로 사실이 유효한 시기를 추적합니다. 최대 5단계 다중 홉 순회로 knowledge_graph_search 도구를 통해 검색 가능합니다.",
|
||||
"vaultTitle": "지식 볼트",
|
||||
"vaultDesc": "[[위키링크]] 해석이 있는 문서 레지스트리. 통합 검색은 볼트 문서(40%), 에피소딕 메모리(30%), KG 엔티티(30%)를 단일 순위 결과로 혼합합니다. SHA-256 해시로 콘텐츠 변경을 감지하여 증분 인덱싱합니다.",
|
||||
"dreamingTitle": "드리밍",
|
||||
"dreamingDesc": "5개 이상의 세션 요약이 누적되면 LLM이 장기 사실을 합성합니다: 사용자 선호도, 프로젝트 아키텍처, 반복 패턴, 근거가 있는 핵심 결정. 검색 가능한 메모리 문서로 저장됩니다. 에이전트당 10분 간격으로 디바운스됩니다."
|
||||
},
|
||||
"orchestration": {
|
||||
"delegateTitle": "에이전트 위임",
|
||||
"delegateDesc": "에이전트는 권한 확인을 통해 agent_links로 연결된 에이전트에 태스크를 위임합니다. 동기 모드는 설정 가능한 제한 시간까지 결과를 기다립니다. 비동기 모드는 즉시 실행되고 완료 시 메시지 버스를 통해 결과를 알립니다.",
|
||||
"evolutionTitle": "자기 진화",
|
||||
"evolutionDesc": "주간 사이클로 도구 사용 및 검색 메트릭을 추적합니다. 세 가지 패턴을 감지합니다: 낮은 검색 사용률 (< 20%), 높은 도구 실패율 (< 10% 성공), 반복 도구 패턴 (> 100회/주). 가드레일 보호 자동 적용 및 롤백이 있는 설정 조정을 제안합니다."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,109 @@
|
||||
{
|
||||
"title": "지식 볼트",
|
||||
"description": "위키링크 및 의미 검색이 있는 문서 레지스트리",
|
||||
"search": "검색",
|
||||
"searchPlaceholder": "문서 검색...",
|
||||
"filterAgent": "에이전트",
|
||||
"allAgents": "모든 에이전트",
|
||||
"allTypes": "전체",
|
||||
"noDocuments": "볼트에 문서 없음",
|
||||
"noResults": "검색 결과 없음",
|
||||
"searchFailed": "검색 실패",
|
||||
"create": "만들기",
|
||||
"createDoc": "문서 만들기",
|
||||
"edit": "편집",
|
||||
"save": "저장",
|
||||
"saving": "저장 중...",
|
||||
"cancel": "취소",
|
||||
"delete": "삭제",
|
||||
"confirmDelete": "이 문서를 삭제하시겠습니까?",
|
||||
"yes": "예",
|
||||
"no": "아니오",
|
||||
"createLink": "링크 추가",
|
||||
"addLink": "링크 추가",
|
||||
"deleteLink": "링크 삭제",
|
||||
"columns": {
|
||||
"title": "제목",
|
||||
"agent": "에이전트",
|
||||
"path": "경로",
|
||||
"type": "유형",
|
||||
"scope": "범위",
|
||||
"updated": "업데이트됨"
|
||||
},
|
||||
"detail": {
|
||||
"metadata": "메타데이터",
|
||||
"outlinks": "나가는 링크",
|
||||
"backlinks": "백링크",
|
||||
"noLinks": "링크 없음",
|
||||
"contentPreview": "내용 미리보기",
|
||||
"fileNotFound": "파일을 찾을 수 없거나 접근할 수 없습니다",
|
||||
"emptyContent": "사용 가능한 내용 없음",
|
||||
"binaryFile": "바이너리 파일 — 미리보기 불가"
|
||||
},
|
||||
"fields": {
|
||||
"title": "제목",
|
||||
"titlePlaceholder": "문서 제목",
|
||||
"path": "경로",
|
||||
"pathPlaceholder": "예: notes/my-doc.md",
|
||||
"docType": "유형",
|
||||
"scope": "범위",
|
||||
"fromDoc": "출처",
|
||||
"toDoc": "대상 문서",
|
||||
"selectDoc": "문서 선택...",
|
||||
"linkType": "링크 유형",
|
||||
"linkContext": "컨텍스트",
|
||||
"linkContextPlaceholder": "이 링크의 선택적 컨텍스트"
|
||||
},
|
||||
"scope": {
|
||||
"personal": "개인",
|
||||
"team": "팀",
|
||||
"shared": "공유"
|
||||
},
|
||||
"type": {
|
||||
"context": "컨텍스트",
|
||||
"memory": "메모리",
|
||||
"note": "노트",
|
||||
"skill": "스킬",
|
||||
"episodic": "에피소딕",
|
||||
"media": "미디어",
|
||||
"document": "문서"
|
||||
},
|
||||
"rescanTooltip": "워크스페이스 재검사",
|
||||
"enriching": "보강 중",
|
||||
"enrichComplete": "보강 완료",
|
||||
"rescanNew": "{{count}}개 새로운",
|
||||
"rescanUpdated": "{{count}}개 업데이트됨",
|
||||
"rescanUnchanged": "{{count}}개 변경 없음",
|
||||
"rescanTruncated": "검사 중단됨 (제한 도달)",
|
||||
"rescanNoFiles": "새 파일을 찾을 수 없습니다",
|
||||
"rescanBusy": "재검사가 이미 진행 중입니다",
|
||||
"rescanError": "재검사 실패",
|
||||
"upload": {
|
||||
"title": "볼트에 업로드",
|
||||
"destination": "대상",
|
||||
"shared": "공유",
|
||||
"agent": "에이전트",
|
||||
"team": "팀",
|
||||
"selectAgent": "에이전트 선택...",
|
||||
"selectTeam": "팀 선택...",
|
||||
"dropzone": "여기에 파일을 놓거나 클릭하여 찾아보기",
|
||||
"dropzoneHint": "텍스트 파일만 (.md, .txt, .json, .yaml, .csv, ...)",
|
||||
"files": "파일 ({{count}}개)",
|
||||
"uploading": "업로드 중...",
|
||||
"upload": "업로드"
|
||||
},
|
||||
"toast": {
|
||||
"uploadSuccess": "{{count}}개 파일 업로드됨",
|
||||
"uploadFailed": "업로드 실패",
|
||||
"docCreated": "문서 생성됨",
|
||||
"docCreateFailed": "문서 생성 실패",
|
||||
"docUpdated": "문서 업데이트됨",
|
||||
"docUpdateFailed": "문서 업데이트 실패",
|
||||
"docDeleted": "문서 삭제됨",
|
||||
"docDeleteFailed": "문서 삭제 실패",
|
||||
"linkCreated": "링크 생성됨",
|
||||
"linkCreateFailed": "링크 생성 실패",
|
||||
"linkDeleted": "링크 삭제됨",
|
||||
"linkDeleteFailed": "링크 삭제 실패"
|
||||
}
|
||||
}
|
||||
@@ -20,11 +20,12 @@ export const LOCAL_STORAGE_KEYS = {
|
||||
TIMEZONE: "goclaw:timezone",
|
||||
} as const;
|
||||
|
||||
export const SUPPORTED_LANGUAGES = ["en", "vi", "zh"] as const;
|
||||
export const SUPPORTED_LANGUAGES = ["en", "vi", "zh", "ko"] as const;
|
||||
export type Language = (typeof SUPPORTED_LANGUAGES)[number];
|
||||
|
||||
export const LANGUAGE_LABELS: Record<Language, string> = {
|
||||
en: "English",
|
||||
vi: "Tiếng Việt",
|
||||
zh: "中文",
|
||||
ko: "한국어",
|
||||
};
|
||||
Reference in new issue
Block a user