diff --git a/src/i18n/messages/ko.json b/src/i18n/messages/ko.json
index 93a6a50646..001f8726ef 100644
--- a/src/i18n/messages/ko.json
+++ b/src/i18n/messages/ko.json
@@ -27,14 +27,14 @@
"copy": "복사",
"copied": "복사되었습니다!",
"enabled": "활성화됨",
- "disabled": "장애인",
+ "disabled": "비활성화됨",
"active": "활성",
"inactive": "비활성",
"noData": "사용 가능한 데이터가 없습니다.",
"nothingHere": "Nothing here yet",
"configure": "구성",
"manualConfig": "수동 구성",
- "manage": "관리하다",
+ "manage": "관리",
"name": "이름",
"actions": "작업",
"status": "상태",
@@ -143,7 +143,7 @@
"where_used": "where_used",
"windowMs": "windowMs",
"social-github": "GitHub",
- "social-google": "구글",
+ "social-google": "Google",
"TOOL_ALLOWLIST": "도구 허용 목록",
"TOOL_DENYLIST": "도구 거부 목록",
"Failed to save pricing": "가격을 저장하지 못했습니다.",
@@ -368,14 +368,14 @@
"signatureDefaults": "Signature Defaults",
"errorCreating": "Error Creating",
"timeRangeYear": "Time Range Year",
- "compatibleLabel": "Compatible Label",
+ "compatibleLabel": "호환",
"cloudDisabledSuccess": "Cloud Disabled Success",
"deleteConfirm": "Delete Confirm",
"check": "Check",
"safeSearch": "Safe Search",
"protocolLastActivity": "Protocol Last Activity",
"openMcpDashboard": "Open Mcp Dashboard",
- "testBenchTab": "Test Bench Tab",
+ "testBenchTab": "테스트 벤치",
"chatPathLabel": "Chat Path Label",
"retryDelay": "Retry Delay",
"errorUpdating": "Error Updating",
@@ -433,7 +433,7 @@
"expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc",
"source": "Source",
"failed": "Failed",
- "apiKeyMgmt": "Api Key Mgmt",
+ "apiKeyMgmt": "API 키 관리",
"mcpQuickStartStep1": "Mcp Quick Start Step1",
"runTest": "Run Test",
"loadingFallbackChains": "Loading Fallback Chains",
@@ -540,7 +540,7 @@
"comboUpdated": "Combo Updated",
"weighted": "Weighted",
"providers": "Providers",
- "ccCompatibleLabel": "Cc Compatible Label",
+ "ccCompatibleLabel": "CC 호환",
"noFallbackChainsDesc": "No Fallback Chains Desc",
"yesImport": "Yes Import",
"lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint",
@@ -584,7 +584,7 @@
"searchTypeNews": "Search Type News",
"durationMillisecondsShort": "Duration Milliseconds Short",
"addOpenAICompatible": "Add Open Ai Compatible",
- "chatTesterTab": "Chat Tester Tab",
+ "chatTesterTab": "채팅 테스터",
"queued": "Queued",
"domainPlaceholder": "Domain Placeholder",
"durationMinutesShort": "Duration Minutes Short",
@@ -742,7 +742,7 @@
"tokensDisconnect": "연결 끊기",
"tierCoverageTitle": "계층 적용 범위",
"tierCoverageSubtitle": "대체 계층별로 구성된 공급자",
- "batchDetailCopyId": "신분증 복사",
+ "batchDetailCopyId": "ID 복사",
"batchDetailClose": "닫기",
"batchDetailEndpoint": "엔드포인트",
"batchDetailModel": "모델",
@@ -760,7 +760,7 @@
"batchListDeleteBatchTitle": "배치 및 해당 파일 삭제",
"leaderboardYourRank": "당신의 순위",
"leaderboardLoading": "리더보드 로드 중...",
- "batchFileDetailCopyId": "신분증 복사",
+ "batchFileDetailCopyId": "ID 복사",
"batchFileDetailClose": "닫기",
"batchFileDetailFailedToLoad": "파일 콘텐츠를 로드하지 못했습니다.",
"batchFileDetailLoadError": "파일 내용을 불러오는 중 오류가 발생했습니다",
@@ -938,10 +938,10 @@
"dashboard": "대시보드",
"providers": "공급자",
"combos": "콤보",
- "usage": "사용법",
+ "usage": "사용량",
"analytics": "분석",
"costs": "비용",
- "health": "건강",
+ "health": "상태",
"proxy": "프록시",
"limits": "한도 및 할당량",
"cliTools": "CLI 도구",
@@ -955,22 +955,22 @@
"memory": "Memory",
"skills": "Skills",
"omniSkills": "옴니스킬",
- "agentSkills": "에이전트 기술",
+ "agentSkills": "AgentSkills",
"chaosConfig": "카오스 모드",
"docs": "문서",
"issues": "문제",
"endpoints": "엔드포인트",
"endpointsSubtitle": "귀하의 AI 연결 URL",
- "apiManager": "API 관리자",
+ "apiManager": "API 키",
"apiManagerSubtitle": "API 키 및 액세스 관리",
"embeddedServices": "내장 서비스",
"embeddedServicesSubtitle": "로컬 프록시 서비스 관리",
"logs": "로그",
"webhooks": "웹훅",
"webhooksSubtitle": "이벤트 알림 받기",
- "combosSubtitle": "장애 조치를 위한 그룹 공급자",
+ "combosSubtitle": "장애 조치를 위해 공급자를 그룹화",
"batchSubtitle": "여러 요청 처리",
- "contextCavemanSubtitle": "신속한 압축",
+ "contextCavemanSubtitle": "프롬프트 압축",
"contextRtkSubtitle": "출력 필터링",
"auditLog": "감사 로그",
"shutdown": "종료",
@@ -1094,7 +1094,7 @@
"logsActivity": "Activity",
"auditMcp": "MCP Audit",
"auditA2a": "A2A 감사",
- "settingsGeneral": "General",
+ "settingsGeneral": "저장소",
"settingsAppearance": "Appearance",
"settingsAi": "AI Settings",
"settingsSecurity": "Security",
@@ -1175,7 +1175,7 @@
"mediaSubtitle": "Cached media files",
"batchFilesSubtitle": "Batch input/output files",
"settingsSubtitle": "All settings",
- "settingsGeneralSubtitle": "App basics",
+ "settingsGeneralSubtitle": "데이터베이스 및 백업",
"settingsAppearanceSubtitle": "Theme and layout",
"settingsAiSubtitle": "AI behavior defaults",
"globalRoutingSubtitle": "Global routing rules",
@@ -1229,7 +1229,7 @@
"addWebhook": "웹훅 추가",
"editWebhook": "웹훅 편집",
"name": "이름",
- "namePlaceholder": "생산 모니터링",
+ "namePlaceholder": "프로덕션 모니터링",
"unnamedWebhook": "이름이 지정되지 않은 웹훅",
"url": "엔드포인트 URL",
"events": "이벤트",
@@ -1248,7 +1248,7 @@
"enabledDesc": "비활성화된 웹후크는 저장된 상태로 유지되지만 전달을 받지 않습니다.",
"refresh": "새로고침",
"loading": "웹훅 로드 중...",
- "never": "절대로",
+ "never": "없음",
"failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}",
"testWebhook": "테스트 보내기",
"testSuccess": "테스트 웹훅이 성공적으로 전송되었습니다.",
@@ -1374,10 +1374,10 @@
"result": "결과",
"details": "세부정보",
"timestamp": "타임스탬프",
- "from": "에서",
- "to": "받는 사람",
+ "from": "시작",
+ "to": "종료",
"refresh": "새로고침",
- "export": "수출",
+ "export": "내보내기",
"clearFilters": "필터 지우기",
"loading": "감사 이벤트 로드 중...",
"showing": "{total} 이벤트 중 {count} 표시 중",
@@ -1410,15 +1410,15 @@
"a2aSkill": "스킬",
"a2aSkillPlaceholder": "스킬 이름으로 필터링",
"a2aState": "상태",
- "a2aAllStates": "모든 주",
+ "a2aAllStates": "모든 상태",
"a2aStateSubmitted": "제출됨",
- "a2aStateWorking": "일 중",
+ "a2aStateWorking": "작업 중",
"a2aStateCompleted": "완료됨",
"a2aStateFailed": "실패",
"a2aStateCancelled": "취소됨",
"a2aTaskId": "작업 ID",
"a2aEvents": "이벤트",
- "a2aArtifacts": "유물",
+ "a2aArtifacts": "아티팩트",
"a2aNoTasks": "기록된 A2A 작업이 없습니다.",
"a2aLoadingTasks": "A2A 작업 로드 중...",
"actor": "행위자",
@@ -1500,7 +1500,7 @@
"settings": "설정",
"settingsDescription": "환경설정 관리",
"openaiCompatible": "OpenAI 호환",
- "anthropicCompatible": "인류 친화적",
+ "anthropicCompatible": "Anthropic 호환",
"media": "Media",
"mediaDescription": "Generate images, videos, and music",
"themes": "Themes",
@@ -1548,7 +1548,7 @@
"settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings",
"settingsSecurityDescription": "Authentication, authorization, and access control settings",
"featureFlags": "기능 플래그",
- "featureFlagsDescription": "제어 시스템 기능 및 실험적 특징",
+ "featureFlagsDescription": "시스템 기능과 실험적 기능을 제어합니다",
"featureFlagsActive": "{count} 활성",
"featureFlagsInactive": "{count} 비활성",
"featureFlagsOverrides": "{count} DB 재정의",
@@ -1559,10 +1559,10 @@
"featureFlagsCategoryPolicies": "정책",
"featureFlagsCategoryRuntime": "런타임",
"featureFlagsCategoryCli": "CLI",
- "featureFlagsCategoryHealth": "건강",
+ "featureFlagsCategoryHealth": "상태",
"featureFlagsSourceDb": "DB",
- "featureFlagsSourceEnv": "환경",
- "featureFlagsSourceDefault": "데프",
+ "featureFlagsSourceEnv": "ENV",
+ "featureFlagsSourceDefault": "DEF",
"featureFlagsReset": "재설정",
"featureFlagsResetAll": "모든 재정의 재설정",
"featureFlagsResetAllConfirm": "모든 기능 플래그 재정의를 재설정하시겠습니까? 그러면 모든 플래그가 ENV 또는 기본값으로 되돌아갑니다.",
@@ -1684,15 +1684,15 @@
"quickStartDesc": "4단계로 시작해 보세요. 공급자를 연결하고, 모델을 라우팅하고, 모든 것을 모니터링하세요.",
"fullDocs": "전체 문서",
"step1Title": "1. API 키 생성",
- "step1Desc": "Endpoint -> 등록된 키로 이동합니다. 환경당 하나의 키를 생성합니다.",
+ "step1Desc": "API 키로 이동하세요. 환경당 하나의 키를 생성합니다.",
"step2Title": "2. 공급자 연결",
"step2Desc": "Providers에 계정을 추가하세요. OAuth, API 키 및 무료 등급을 지원합니다.",
- "step3Title": "3. 고객에게 지시하십시오",
+ "step3Title": "3. 클라이언트 연결",
"step3Desc": "IDE 또는 API 클라이언트에서 기본 URL을 {url}으로 설정하세요.",
"step4Title": "4. 모니터링 및 최적화",
"step4Desc": "요청 로그 및 Analytics에서 토큰, 비용 및 오류를 추적합니다.",
"providersOverview": "공급자 개요",
- "configuredOf": "{configured}은(는) {total} 사용 가능한 공급자로 구성되었습니다.",
+ "configuredOf": "사용 가능한 공급자 {total}개 중 {configured}개 구성됨",
"noModelsAvailable": "이 제공업체에 사용할 수 있는 모델이 없습니다.",
"noProvidersConfigured": "아직 구성된 제공업체가 없습니다.",
"addProvider": "제공업체 추가",
@@ -1704,7 +1704,7 @@
"connectionsActivePlural": "{count} 연결이 활성화되었습니다.",
"copyModelName": "모델명 복사",
"documentation": "문서",
- "healthMonitor": "건강 모니터",
+ "healthMonitor": "상태 모니터",
"reportIssue": "문제 신고",
"activeError": "{active} 활성 · {errors} 오류",
"oauthLabel": "OAuth",
@@ -1831,7 +1831,7 @@
"compressionAnalyticsDescription": "Compression analytics — token savings, mode breakdown, and provider stats.",
"autoRoutingTotalAutoRequests": "총 자동 요청",
"autoRoutingAvgSelectionScore": "평균 선택 점수",
- "autoRoutingExplorationRate": "탐사율",
+ "autoRoutingExplorationRate": "탐색률",
"autoRoutingLkgpHitRate": "LKGP 적중률",
"autoRoutingRequestsByVariant": "변형별 요청",
"autoRoutingTopRoutedProviders": "상위 라우팅 제공업체",
@@ -1847,8 +1847,8 @@
"comboHealthSuccess": "성공",
"comboHealthLatency": "대기 시간",
"comboHealthQuota": "할당량",
- "comboHealthTitle": "콤보 건강",
- "comboHealthUnableToLoad": "콤보 체력을 로드할 수 없습니다",
+ "comboHealthTitle": "콤보 상태",
+ "comboHealthUnableToLoad": "콤보 상태를 로드할 수 없습니다",
"comboHealthGettingStarted": "시작하기",
"comboHealthForecastTitle": "비용 및 할당량 예측",
"comboHealthForecastDescription": "과거 콤보 트래픽 및 할당량 스냅샷을 기반으로 한 선형 예측입니다.",
@@ -1928,7 +1928,7 @@
"comboHealthStepAutomatic": "요청이 라우팅되면 상태 메트릭이 자동으로 표시됩니다",
"comboHealthTracking": "{range} 동안 {count}개 조합 추적 중",
"compressionAnalyticsTotalRequests": "총 요청",
- "compressionAnalyticsTokensSaved": "저장된 토큰",
+ "compressionAnalyticsTokensSaved": "절약된 토큰",
"compressionAnalyticsAvgSavings": "평균 절감액",
"compressionAnalyticsAvgDuration": "평균 기간",
"compressionAnalyticsReceipts": "영수증",
@@ -2046,7 +2046,7 @@
"apiManager": {
"title": "API 키",
"createKey": "API 키 생성",
- "key": "열쇠",
+ "key": "키",
"revokeKey": "키 취소",
"revokeConfirm": "이 API 키를 취소하시겠습니까?",
"noKeys": "아직 API 키가 없습니다.",
@@ -2054,7 +2054,7 @@
"keyLabel": "키 라벨",
"permissions": "권한",
"expiresAt": "만료",
- "never": "절대로",
+ "never": "없음",
"revoke": "취소",
"showKey": "키 표시",
"hideKey": "키 숨기기",
@@ -2075,10 +2075,10 @@
"keysSecurityNote": "각 키는 사용 추적을 분리하고 독립적으로 취소할 수 있습니다. 보안을 위해 키는 생성 후 마스크 처리됩니다.",
"createFirstKey": "첫 번째 키 만들기",
"name": "이름",
- "usage": "사용법",
+ "usage": "사용량",
"created": "생성됨",
"actions": "작업",
- "reqs": "요구 사항",
+ "reqs": "요청",
"neverUsed": "한번도 사용하지 않음",
"deleteConfirm": "이 API 키를 삭제하시겠습니까?",
"usageTips": "사용 팁",
@@ -2087,7 +2087,7 @@
"tipSeparate": "다양한 클라이언트 또는 환경에 대해 별도의 키 생성",
"tipRestrict": "더 나은 보안 및 비용 관리를 위해 키를 특정 모델로 제한합니다.",
"keyName": "키 이름",
- "keyNamePlaceholder": "예: 생산 키, 개발 키",
+ "keyNamePlaceholder": "예: 프로덕션 키",
"keyNameDesc": "이 키의 목적을 식별하려면 설명이 포함된 이름을 선택하세요.",
"managementAccessDesc": "이 API 키가 OmniRoute 구성을 관리하도록 허용합니다.",
"selfServiceVisibility": "셀프서비스 표시 권한",
@@ -2103,7 +2103,7 @@
"keyCreatedSuccess": "키가 생성되었습니다!",
"keyCreatedNote": "지금 이 키를 복사하여 저장하세요. 다시 표시되지 않습니다.",
"done": "완료",
- "savePermissions": "저장 권한",
+ "savePermissions": "권한 저장",
"endpointRestrictions": "Allowed Endpoints",
"allEndpointsAllowed": "This key can access all API endpoints.",
"endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.",
@@ -2133,7 +2133,7 @@
"dayFri": "Fri",
"daySat": "Sat",
"allowAll": "모두 허용",
- "restrict": "제한하다",
+ "restrict": "제한",
"allowAllInfo": "이 키는 사용 가능한 모든 모델에 액세스할 수 있습니다.",
"restrictInfo": "이 키는 {total} 모델 중 {selected}에 액세스할 수 있습니다.",
"selected": "{count} 선택됨",
@@ -2185,13 +2185,13 @@
"allowedCombos": "허용된 조합",
"allCombosAllowed": "이 키는 모든 조합을 사용할 수 있습니다.",
"restrictedComboCount": "{count, plural, one {#개 조합} other {#개 조합}}으로 제한됨.",
- "apiManagerCustomRateLimits": "사용자 정의 비율 제한",
+ "apiManagerCustomRateLimits": "사용자 정의 속도 제한",
"apiManagerCustomRateLimitsDesc": "전역 기본 제한을 재정의합니다. 기본값을 사용하려면 비워 두세요.",
"apiManagerRateLimitRequestsPlaceholder": "요청사항",
"apiManagerRateLimitReqPer": "요청 /",
"apiManagerRateLimitSecondsPlaceholder": "초",
"apiManagerRemoveLimitTitle": "한도 삭제",
- "apiManagerTimezonePlaceholder": "아메리카/상파울루",
+ "apiManagerTimezonePlaceholder": "America/Sao_Paulo",
"noLogPayloadPrivacy": "로그 없는 페이로드 개인정보 보호",
"bannedStatus": "금지 상태",
"managementApiAccess": "관리 API 액세스",
@@ -2224,18 +2224,18 @@
},
"auditLog": {
"title": "감사 로그",
- "searchPlaceholder": "검색 작업...",
+ "searchPlaceholder": "작업 검색...",
"action": "액션",
- "actor": "배우",
+ "actor": "행위자",
"target": "대상",
"ipAddress": "IP 주소",
"timestamp": "타임스탬프",
"noEntries": "감사 항목을 찾을 수 없습니다.",
"filterByAction": "작업별로 필터링...",
- "filterByActor": "배우별로 필터링...",
+ "filterByActor": "행위자별로 필터링...",
"filterEntriesAria": "감사 로그 항목 필터링",
"filterByActionTypeAria": "작업 유형별로 필터링",
- "filterByActorAria": "배우별로 필터링",
+ "filterByActorAria": "행위자별로 필터링",
"refreshAuditLogAria": "감사 로그 새로 고침",
"tableAria": "감사 로그 항목",
"failedFetchAuditLog": "감사 로그를 가져오지 못했습니다.",
@@ -2424,7 +2424,7 @@
"scrapeProvider": "Provider",
"scrapeSize": "Size",
"scrapeEmptyState": "콘텐츠를 추출할 URL을 입력하세요",
- "scrapeProvidersAvailable": "사용 가능한 제공자: Firecrawl, Jina Reader, Tavily.",
+ "scrapeProvidersAvailable": "사용 가능한 공급자: Firecrawl, Jina Reader, Tavily, TinyFish.",
"compareRun": "Compare",
"compareRunning": "Comparing…",
"autoProvider": "Auto (cheapest)",
@@ -2509,7 +2509,7 @@
"claudeProfilesDescription": "모델 검색 후 각 ~/.claude/profiles/…/settings.json을 재생성합니다.",
"noActiveProviders": "활성 제공업체 없음",
"noActiveProvidersDesc": "CLI 도구를 구성하려면 먼저 공급자를 추가하고 연결하세요.",
- "mapModels": "지도 모델",
+ "mapModels": "모델 매핑",
"testConnection": "연결 테스트",
"connectionStatus": "연결 상태",
"configureEndpoint": "끝점 구성",
@@ -2535,7 +2535,7 @@
"custom": "맞춤",
"unknown": "알 수 없음",
"lastSavedAt": "마지막 저장: {date}",
- "never": "절대로",
+ "never": "없음",
"justNow": "지금 막",
"minutesAgoShort": "{count}분 전",
"hoursAgoShort": "{count}시간 전",
@@ -2543,8 +2543,8 @@
"monthsAgoShort": "{count}개월 전",
"yearsAgoShort": "{count}년 전",
"runtimeCheckFailed": "런타임 확인 실패",
- "yourApiKeyPlaceholder": "귀하의 API 키",
- "modelPlaceholder": "공급자/모델 ID",
+ "yourApiKeyPlaceholder": "your-api-key",
+ "modelPlaceholder": "provider/model-id",
"configurationSaved": "구성이 성공적으로 저장되었습니다.",
"failedToSave": "구성을 저장하지 못했습니다.",
"noApiKeysCreateOne": "API 키 없음 - 키 페이지에서 키 만들기",
@@ -2597,7 +2597,7 @@
"antigravityStep1": "1. MITM을 시작하여 OmniRoute를 통해 요청을 라우팅합니다.",
"antigravityStep2Prefix": "2. 추가",
"antigravityStep2Suffix": "호스트 파일에 127.0.0.1로 저장하세요.",
- "antigravityStep3": "3. 반중력을 공개하면 요청이 프록시됩니다.",
+ "antigravityStep3": "3. Antigravity를 열면 요청이 프록시됩니다.",
"mitmHowWorksDesc": "{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.",
"mitmStep1": "1. Start MITM to route requests through OmniRoute.",
"mitmStep2Prefix": "2. Add",
@@ -2632,7 +2632,7 @@
"current": "현재",
"baseUrlPlaceholder": "https://.../v1",
"resetToDefault": "기본값으로 재설정",
- "providerModelPlaceholder": "공급자/모델 ID",
+ "providerModelPlaceholder": "provider/model-id",
"apply": "적용",
"reset": "재설정",
"manualConfig": "수동 구성",
@@ -2666,15 +2666,15 @@
"deleteProfile": "프로필 삭제",
"profileNamePlaceholder": "프로필 이름(예: 개인 계정)",
"saveCurrent": "현재 저장",
- "codexAuthNotePrefix": "코덱스 사용",
+ "codexAuthNotePrefix": "Codex는 다음을 사용합니다:",
"codexAuthNoteMiddle": "와",
"codexAuthNoteSuffix": "자동 구성하려면 \"적용\"을 클릭하세요.",
"claudeManualConfiguration": "Claude CLI - 수동 구성",
"codexManualConfiguration": "Codex CLI - 수동 구성",
"droidManualConfiguration": "Factory Droid - 수동 구성",
- "openClawManualConfiguration": "오픈 클로 - 수동 구성",
- "clineManualConfiguration": "클라인 수동 구성",
- "kiloManualConfiguration": "Kilo 코드 수동 구성",
+ "openClawManualConfiguration": "Open Claw - 수동 구성",
+ "clineManualConfiguration": "Cline 수동 구성",
+ "kiloManualConfiguration": "Kilo Code 수동 구성",
"whenToUseLabel": "언제 사용하나요?",
"openToolDocs": "도구 문서 열기",
"toolUseCases": {
@@ -2684,36 +2684,36 @@
"openclaw": "Open Claw 스타일 코딩 에이전트를 원하지만 OmniRoute 정책을 통해 라우팅되는 경우에 사용합니다.",
"cline": "편집기 내에서 코딩 에이전트를 구성하고 OmniRoute 모델을 사용하여 안내 설정을 원하는 경우 사용합니다.",
"kilo": "작업 흐름이 Kilo Code 명령과 빠른 반복 편집에 의존하는 경우에 사용하세요.",
- "cursor": "Cursor에서 코딩할 때 사용하고 OmniRoute를 통해 사용자 정의 OpenAI 호환 모델이 필요합니다.",
- "continue": "IDE에서 계속을 실행할 때 사용하고 이식 가능한 JSON 기반 공급자 구성이 필요합니다.",
+ "cursor": "Cursor에서 코딩하면서 OmniRoute를 통해 사용자 정의 OpenAI 호환 모델이 필요할 때 사용하세요.",
+ "continue": "IDE에서 Continue를 실행하면서 이식 가능한 JSON 기반 공급자 구성이 필요할 때 사용하세요.",
"opencode": "OpenCode를 통해 터미널 기반 에이전트 실행 및 스크립트 자동화를 선호할 때 사용하세요.",
"kiro": "Kiro를 통합하고 OmniRoute에서 중앙에서 모델 라우팅을 제어할 때 사용합니다.",
"windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.",
"antigravity": "Antigravity/Kiro 트래픽이 MITM을 통해 가로채어 OmniRoute로 라우팅되어야 하는 경우에 사용합니다.",
"copilot": "OmniRoute 키와 라우팅 규칙을 적용하면서 Copilot 채팅 스타일 UX를 원할 때 사용하세요.",
- "amp": "Use when you want Amp CLI routed through OmniRoute with stable shorthand aliases and OpenAI-compatible setup.",
+ "amp": "Amp 단축 워크플로를 원하면서도 OmniRoute 별칭 및 라우팅 규칙 적용이 필요할 때 사용하세요.",
"hermes": "빠른 작업을 위해 경량 터미널 기반 AI 도우미가 필요할 때 사용하세요.",
"hermes-agent": "OmniRoute를 통해 라우팅되는 기본, 위임, 비전 및 보조 모델과 함께 Hermes Agent(Nousresearch 제공)를 사용해야 할 때 사용합니다.",
"custom": "사용자 정의 도구 구현 또는 일반 OpenAI 호환 구성에 사용합니다."
},
"toolDescriptions": {
- "antigravity": "MITM이 포함된 Google 반중력 IDE",
- "claude": "인류 클로드 코드 CLI",
- "codex": "OpenAI 코덱스 CLI",
+ "antigravity": "MITM이 포함된 Google Antigravity IDE",
+ "claude": "Anthropic Claude Code CLI",
+ "codex": "OpenAI Codex CLI",
"grok-build": "사용자 정의 제공자 지원 기능이 포함된 xAI Grok Build TUI 코딩 에이전트",
- "droid": "팩토리 드로이드 AI 어시스턴트",
- "openclaw": "Claw AI 도우미 열기",
+ "droid": "Factory Droid AI 어시스턴트",
+ "openclaw": "Open Claw AI 어시스턴트",
"cline": "Cline AI 코딩 어시스턴트 CLI",
- "kilo": "킬로코드 AI 어시스턴트 CLI",
+ "kilo": "Kilo Code AI 어시스턴트 CLI",
"qwen": "Qwen Code CLI",
- "cursor": "커서 AI 코드 편집기",
- "continue": "AI 어시스턴트 계속하기",
+ "cursor": "Cursor AI 코드 편집기",
+ "continue": "Continue AI 어시스턴트",
"opencode": "OpenCode AI coding agent (Terminal)",
"kiro": "Amazon Kiro — AI-powered IDE",
"windsurf": "Windsurf AI Code Editor",
"copilot": "GitHub Copilot AI Assistant",
"amp": "Sourcegraph Amp coding assistant CLI",
- "hermes": "헤르메스 AI 터미널 어시스턴트",
+ "hermes": "Hermes AI 터미널 어시스턴트",
"hermes-agent": "Hermes Agent(Nousresearch 제공) - 다중 모델 지원(위임, 비전, 압축 등)을 갖춘 고급 터미널 AI",
"custom": "일반 OpenAI 호환 CLI 또는 SDK 구성 생성기",
"aider": "OpenAI 호환 베이스 URL을 사용하는 Aider AI 페어 프로그래밍 CLI",
@@ -2767,7 +2767,7 @@
"steps": {
"1": {
"title": "구성 열기",
- "desc": "계속 구성 파일 열기"
+ "desc": "Continue 구성 파일 열기"
},
"2": {
"title": "API 키"
@@ -2856,11 +2856,11 @@
}
}
},
- "autoConfiguredTab": "Auto Configured Tab",
- "toolCategoriesDesc": "Tool Categories Desc",
- "allToolsTab": "All Tools Tab",
- "guidedClientsTab": "Guided Clients Tab",
- "mitmClientsTab": "Mitm Clients Tab",
+ "autoConfiguredTab": "자동 구성됨",
+ "toolCategoriesDesc": "AI 코딩 어시스턴트가 OmniRoute를 통해 라우팅되도록 구성합니다",
+ "allToolsTab": "모든 도구",
+ "guidedClientsTab": "가이드 클라이언트",
+ "mitmClientsTab": "MITM 클라이언트",
"customCliTab": "맞춤형 CLI",
"toolCategories": "Tool Categories",
"visibleToolsCount": "{count}개의 도구 사용 가능",
@@ -2940,7 +2940,7 @@
"description": "가중치 기반 라우팅 및 폴백 지원을 통해 모델 콤보 생성",
"autoCatalogTitle": "자동 라우팅 카탈로그",
"autoCatalogTemplateCount": "{count} 템플릿",
- "autoCatalogDescription": "내장된 자동/* 콤보는 연결된 공급자로부터 동적으로 해결됩니다. 이러한 ID 중 하나를 모델 필드로 사용하세요. 설정이 필요하지 않습니다.",
+ "autoCatalogDescription": "내장된 auto/* 콤보는 연결된 공급자로부터 동적으로 확인됩니다. 이러한 ID 중 하나를 모델 필드로 사용하세요 — 설정이 필요하지 않습니다.",
"autoCatalogExpand": "자동 라우팅 카탈로그 확장",
"autoCatalogCollapse": "자동 라우팅 카탈로그 축소",
"createCombo": "콤보 생성",
@@ -2953,14 +2953,14 @@
"routingStrategy": "라우팅 전략",
"maxRetries": "최대 재시도 횟수",
"timeout": "시간 초과(밀리초)",
- "healthcheck": "건강검진",
+ "healthcheck": "헬스체크",
"priority": "우선순위",
"fallback": "대체",
"roundRobin": "라운드 로빈",
"random": "무작위",
"leastLatency": "최소 지연 시간",
"comboName": "콤보 이름",
- "comboNamePlaceholder": "내 콤보",
+ "comboNamePlaceholder": "my-combo",
"comboDescription": "설명",
"comboDescriptionPlaceholder": "이 조합에 대한 설명 (선택 사항)",
"deleteConfirm": "이 콤보를 삭제하시겠습니까?",
@@ -2976,22 +2976,22 @@
"testFailed": "테스트 요청 실패",
"failedToggle": "콤보를 전환하지 못했습니다.",
"testResults": "테스트 결과 — {name}",
- "resolvedBy": "해결 방법:",
+ "resolvedBy": "다음으로 해결됨:",
"more": "+{count} 더보기",
- "reqs": "요구 사항",
+ "reqs": "요청",
"success": "성공",
"proxyConfigured": "프록시가 구성됨",
"copyComboName": "콤보 이름 복사",
"enableCombo": "콤보 활성화",
"disableCombo": "콤보 비활성화",
- "testCombo": "테스트 콤보",
- "duplicate": "중복",
+ "testCombo": "콤보 테스트",
+ "duplicate": "복제",
"proxyConfig": "프록시 구성",
"nameRequired": "이름은 필수입니다",
- "nameInvalid": "문자, 숫자, -, _, / 및 .만 가능합니다. 허용됨",
+ "nameInvalid": "문자, 숫자, -, _, /, .만 허용됩니다",
"nameHint": "문자, 숫자, -, _, / 및 . 허용됨",
"priorityDesc": "순차적 폴백: 모델 1을 먼저 시도한 다음 2 등을 시도합니다.",
- "weightedDesc": "대체 기능을 사용하여 중량 비율로 트래픽을 분산합니다.",
+ "weightedDesc": "폴백을 지원하며 가중치 비율로 트래픽을 분산합니다.",
"roundRobinDesc": "순환 배포: 각 요청은 교대로 다음 모델로 이동합니다.",
"contextRelay": "Context Relay",
"contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate",
@@ -3087,7 +3087,7 @@
},
"weighted": {
"when": "모델 간에 제어된 트래픽 분할이 필요합니다.",
- "avoid": "시간이 지나도 정확한 체중을 유지할 수 없습니다.",
+ "avoid": "시간이 지나면서 정확한 가중치를 유지할 수 없는 경우입니다.",
"example": "80% 안정적인 모델 + 20% 카나리아 모델 출시."
},
"round-robin": {
@@ -3133,7 +3133,7 @@
"fill-first": {
"when": "다음 공급자로 이동하기 전에 한 공급자의 할당량을 완전히 소진하려는 경우에 사용합니다.",
"avoid": "공급자 간 요청 수준 로드 밸런싱이 필요한 경우에는 피하세요.",
- "example": "예: Groq로 돌아가기 전에 $200 Deepgram 크레딧을 모두 사용하세요."
+ "example": "예: Groq로 폴백하기 전에 $200 Deepgram 크레딧을 모두 사용합니다."
},
"auto": {
"when": "비용, 대기 시간, 품질을 기준으로 다단계 채점 라우팅이 필요한 경우에 사용하세요.",
@@ -3309,8 +3309,8 @@
"title": "재설정 인식 계정 순환",
"description": "재설정 시기와 남은 공급자 할당량의 균형을 맞춥니다.",
"tip1": "할당량 원격 분석을 사용하는 공급자에 대해 명시적인 계정 단계 또는 계정 태그 라우팅을 사용합니다.",
- "tip2": "단기적인 피로가 더 위험한 경우 세션과 주간 가중치를 조정하세요.",
- "tip3": "동등한 계정이 여전히 공평하게 순환되도록 연결 범위를 작게 유지하십시오."
+ "tip2": "단기 할당량 소진이 더 위험한 경우 세션 가중치와 주간 가중치를 조정하세요.",
+ "tip3": "동등한 계정이 계속 공평하게 순환되도록 동점 허용 범위(tie band)를 작게 유지하세요."
},
"strict-random": {
"title": "Shuffle deck distribution",
@@ -3320,7 +3320,7 @@
"tip3": "Ideal for load balancing across multiple API accounts."
},
"fill-first": {
- "description": "후퇴하기 전에 공급업체 할당량을 순차적으로 소진합니다.",
+ "description": "폴백하기 전에 공급자 할당량을 순차적으로 소진합니다.",
"tip1": "명확한 대체 체인이 있는 할당량 기반 라우팅에 사용합니다.",
"tip2": "조기 대체를 방지하려면 할당량을 정확하게 설정하세요.",
"tip3": "무료 등급 또는 크레딧 버킷을 제공하는 제공업체와 가장 잘 작동합니다.",
@@ -3359,7 +3359,7 @@
"tip1": "정확한 부하 평가를 위해 공급자 상태 지표를 모니터링합니다.",
"tip2": "동질적인 공급자 풀에서 가장 잘 작동합니다.",
"tip3": "트래픽 급증 시 진동을 방지하려면 감도를 조정하세요.",
- "title": "두 가지 선택의 힘"
+ "title": "Power of Two Choices (P2C)"
}
},
"templateFreeStack": "Free Stack ($0)",
@@ -3377,7 +3377,7 @@
"wizardStep2Title": "Add Models",
"wizardStep2Desc": "Select AI models and arrange their fallback priority order",
"wizardStep3Title": "Choose Strategy",
- "wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available",
+ "wizardStep3Desc": "모델 전반에 요청이 분산되는 방식을 선택하세요 - 14가지 전략 사용 가능",
"wizardStep4Title": "Review & Save",
"wizardStep4Desc": "Review your configuration and activate the combo",
"emailVisibilityStateOn": "On",
@@ -3457,7 +3457,7 @@
"modePackCustom": "맞춤",
"browseLegacyCatalog": "레거시 콤보 카탈로그 찾아보기",
"agentFeaturesTitle": "에이전트 기능",
- "agentFeaturesDescription": "이 콤보를 사용하여 상담원의 고급 기능을 활성화하세요.",
+ "agentFeaturesDescription": "이 콤보를 사용하는 에이전트를 위한 고급 기능을 활성화합니다.",
"responseValidationTitle": "응답 검증",
"responseValidationHelp": "200 OK 본문이 이 검사(어시스턴트 콘텐츠)에 실패하면 다음 대상으로 페일오버합니다.",
"responseValidationForbidden": "금지된 하위 문자열 (한 줄에 하나씩)",
@@ -3465,9 +3465,9 @@
"responseValidationMinLength": "최소 콘텐츠 길이 (자수)",
"responseValidationJsonPaths": "JSON-path 검사",
"responseValidationAddCheck": "+ 검사 추가",
- "agentFeaturesSystemMessageOverride": "시스템 메시지 무시",
+ "agentFeaturesSystemMessageOverride": "시스템 메시지 재정의",
"agentFeaturesSystemMessagePlaceholder": "당신은 전문 조수입니다 ...",
- "agentFeaturesSystemMessageHint": "상담원에 대한 시스템 메시지 재정의",
+ "agentFeaturesSystemMessageHint": "에이전트에 대한 시스템 메시지 재정의",
"agentFeaturesToolFilterRegex": "/정규식 패턴/",
"agentFeaturesToolFilterHint": "에이전트에 대한 도구 필터 정규식",
"agentFeaturesContextCacheHint": "에이전트 도구에 대한 컨텍스트 내 캐시 활성화",
@@ -3508,17 +3508,17 @@
"activeModels": "Active Models",
"selectedWindow": "Selected Window",
"activeProviders": "Active Providers",
- "overviewTitle": "Overview Title",
+ "overviewTitle": "비용 개요",
"spend7d": "Spend7D",
"avgCostPerRequest": "Avg Cost Per Request",
- "noCostDataDescription": "No Cost Data Description",
+ "noCostDataDescription": "요청을 시작하면 여기에 비용 데이터가 표시됩니다. 모든 공급자의 비용이 자동으로 추적됩니다.",
"spendToday": "Spend Today",
- "overviewLoadFailed": "Overview Load Failed",
- "overviewDescription": "Overview Description",
+ "overviewLoadFailed": "비용 개요를 로드하지 못했습니다",
+ "overviewDescription": "연결된 모든 공급자 및 모델에 대한 실시간 지출 분석",
"providerShare": "Provider Share",
"topProviders": "Top Providers",
"costTrend": "Cost Trend",
- "noCostDataTitle": "No Cost Data Title",
+ "noCostDataTitle": "아직 비용 데이터가 없습니다",
"topModels": "Top Models",
"requestsInWindow": "Requests In Window",
"tokenUsage": "토큰 사용",
@@ -3537,20 +3537,20 @@
"costByAccount": "계정별 비용",
"apiKeyName": "API 키",
"account": "계정",
- "requests": "요청사항",
+ "requests": "요청",
"cost": "비용",
- "dayStreak": "하루 연속",
+ "dayStreak": "일 연속",
"weeklyUsagePattern": "주간 사용 패턴",
"activityHeatmap": "활동(365일)",
- "less": "덜",
- "more": "더보기",
+ "less": "적음",
+ "more": "많음",
"monthlyForecast": "월별 예측",
"forecastBasis": "지난 {days}일 기준",
"avgDailyCost": "평균 일일 비용",
"daysRemaining": "{days}일 남음",
"periodComparison": "기간 비교",
- "previousPeriod": "전반전",
- "currentPeriod": "현재 절반",
+ "previousPeriod": "이전 절반 기간",
+ "currentPeriod": "현재 절반 기간",
"exportCSV": "CSV로 내보내기",
"exportJSON": "JSON으로 내보내기",
"legacyFreeLabel": "레거시 / 무료",
@@ -3587,7 +3587,7 @@
"baseUrl": "기본 URL",
"apiKeyLabel": "API 키",
"registeredKeys": "등록된 키",
- "chatCompletions": "채팅 완료",
+ "chatCompletions": "Chat Completions",
"responses": "응답",
"listModels": "모델 나열",
"usingCloudProxy": "클라우드 프록시 사용",
@@ -3605,13 +3605,13 @@
"rerank": "순위 재지정",
"rerankDesc": "쿼리 관련성에 따라 문서의 순위를 다시 매깁니다.",
"audioTranscription": "오디오 전사",
- "audioTranscriptionDesc": "오디오 파일을 텍스트로 변환(속삭임)",
+ "audioTranscriptionDesc": "오디오 파일을 텍스트로 변환 (Whisper)",
"textToSpeech": "텍스트 음성 변환",
"textToSpeechDesc": "텍스트를 자연스러운 음성으로 변환",
"musicGeneration": "Music Generation",
"musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)",
- "moderations": "조정",
- "moderationsDesc": "콘텐츠 조정 및 안전 분류",
+ "moderations": "모더레이션",
+ "moderationsDesc": "콘텐츠 모더레이션 및 안전 분류",
"responsesDesc": "Codex 및 고급 에이전트 워크플로용 OpenAI Responses API",
"listModelsDesc": "연결된 모든 공급자의 사용 가능한 모든 모델 나열",
"settingsApiDesc": "API를 통해 OmniRoute 구성 읽기 및 수정",
@@ -3625,7 +3625,7 @@
"searchProvider": "Search Provider",
"searchProviderDesc": "This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.",
"enableCloudTitle": "클라우드 프록시 활성화",
- "whatYouGet": "당신이 얻을 것입니다",
+ "whatYouGet": "얻게 되는 것",
"cloudBenefitAccess": "전 세계 어디에서나 API에 액세스하세요",
"cloudBenefitShare": "팀과 쉽게 엔드포인트 공유",
"cloudBenefitPorts": "포트를 열거나 방화벽을 구성할 필요가 없습니다.",
@@ -3680,11 +3680,11 @@
"chat": "채팅",
"embedding": "임베딩",
"image": "이미지",
- "custom": "관습",
+ "custom": "사용자 정의",
"modelsCount": "{count, plural, one {# model} other {# models}}",
"sectionTitle": "Integration Surface",
"sectionDescription": "OpenAI-compatible APIs and operational protocol endpoints",
- "tabApis": "OpenAI-compatible APIs",
+ "tabApis": "API",
"tabProtocols": "Protocols",
"tabsAria": "Endpoint sections",
"protocolsTitle": "Protocols",
@@ -3753,9 +3753,9 @@
"tailscaleSudoPlaceholder": "Optional sudo password",
"tailscaleInstalling": "Installing",
"tailscaleSudoLabel": "Sudo 비밀번호(macOS/Linux에 필요)",
- "ngrokTitle": "응록 터널",
- "ngrokRunning": "달리기",
- "ngrokStarting": "시작",
+ "ngrokTitle": "ngrok 터널",
+ "ngrokRunning": "실행 중",
+ "ngrokStarting": "시작 중",
"ngrokStoppedState": "중지됨",
"ngrokNeedsAuth": "인증 필요",
"ngrokNotInstalled": "설치되지 않음",
@@ -3768,8 +3768,8 @@
"ngrokAuthTokenPlaceholder": "ngrok 인증 토큰을 입력하세요",
"ngrokLastError": "마지막 오류: {error}",
"ngrokStarted": "ngrok 터널이 시작되었습니다",
- "ngrokStopped": "Ngrok 터널이 중지되었습니다.",
- "ngrokRequestFailed": "ngrok 터널을 업데이트하지 못했습니다.",
+ "ngrokStopped": "ngrok 터널이 중지되었습니다",
+ "ngrokRequestFailed": "ngrok 터널을 업데이트하지 못했습니다",
"apiEndpointsCatalogUnavailable": "API 카탈로그를 사용할 수 없습니다.",
"apiEndpointsSearchPlaceholder": "엔드포인트 검색...",
"apiEndpointsRequiresAuth": "인증이 필요합니다",
@@ -3828,7 +3828,7 @@
"vscodeAliasModelsLabel": "VS Code 모델",
"vscodeAliasChatLabel": "VS Code 채팅",
"localServer": "로컬 서버",
- "cloudOmniroute": "클라우드 옴니루트",
+ "cloudOmniroute": "클라우드 OmniRoute",
"copyUrl": "URL 복사",
"badgeLoopbackTooltip": "이 엔드포인트는 로컬에서만 액세스할 수 있습니다 (루프백 전용)",
"badgeAlwaysProtectedTooltip": "이 엔드포인트는 항상 보호되며 인증이 필요합니다",
@@ -4015,29 +4015,29 @@
"allSkills": "all skills",
"loadingTasks": "Loading tasks...",
"noTasksForFilters": "현재 필터에 대한 작업을 찾을 수 없습니다.",
- "tableTask": "일",
+ "tableTask": "작업",
"tableSkill": "Skill",
"tableState": "State",
"tableUpdated": "Updated",
- "tableActions": "행위",
- "view": "보다",
+ "tableActions": "동작",
+ "view": "보기",
"cancel": "Cancel",
"previous": "Previous",
"next": "Next",
"taskDetail": "작업 세부정보",
- "close": "닫다",
+ "close": "닫기",
"metadata": "메타데이터",
"events": "이벤트",
- "artifacts": "유물",
+ "artifacts": "아티팩트",
"tablePhase": "Table Phase",
"offset": "Offset",
"limit": "Limit",
"skill": "Skill",
- "rpcEndpoint": "포스트 /a2a",
- "rpcMethodSend": "메시지/보내기",
- "rpcMethodStream": "메시지/스트림",
- "rpcMethodGet": "작업/가져오기",
- "rpcMethodCancel": "작업/취소",
+ "rpcEndpoint": "POST /a2a",
+ "rpcMethodSend": "message/send",
+ "rpcMethodStream": "message/stream",
+ "rpcMethodGet": "tasks/get",
+ "rpcMethodCancel": "tasks/cancel",
"serviceLabel": "A2A",
"online": "온라인",
"offline": "오프라인",
@@ -4056,7 +4056,7 @@
"addMemory": "Add Memory",
"allTypes": "All Types",
"cancel": "취소",
- "checkHealth": "건강 확인",
+ "checkHealth": "상태 확인",
"checkingHealth": "확인 중…",
"compactOld": "오래된 데이터 압축",
"concept": {
@@ -4124,13 +4124,13 @@
"episodic": "Episodic",
"export": "Export",
"factual": "Factual",
- "healthUnknown": "건강 상태를 알 수 없음",
+ "healthUnknown": "상태를 알 수 없음",
"hitRate": "Hit Rate",
"import": "Import",
"importError": "파일을 가져오지 못했습니다",
"importResult": "{imported}개 가져옴, {skipped}개 건너뜀",
"key": "Key",
- "keyPlaceholder": "예를 들어 사용자.기본 설정.테마",
+ "keyPlaceholder": "예: user.preferences.theme",
"loading": "Loading memories...",
"memories": "Memories",
"next": "다음",
@@ -4319,9 +4319,9 @@
"health": {
"title": "시스템 상태",
"description": "OmniRoute 인스턴스의 실시간 모니터링",
- "healthy": "건강하다",
+ "healthy": "정상",
"degraded": "저하됨",
- "down": "아래로",
+ "down": "중단됨",
"uptime": "가동 시간",
"memory": "메모리",
"memoryRss": "메모리(RSS)",
@@ -4335,7 +4335,7 @@
"tokenHealth": "토큰 상태",
"refreshAll": "모두 새로 고침",
"checkNow": "지금 확인하세요",
- "loadingHealth": "건강 데이터 로드 중...",
+ "loadingHealth": "상태 데이터 로드 중...",
"failedToLoad": "상태 데이터를 로드하지 못했습니다: {error}",
"retry": "재시도",
"allOperational": "모든 시스템 작동",
@@ -4352,17 +4352,17 @@
"promptCache": "프롬프트 캐시",
"entries": "항목",
"hitRate": "적중률",
- "hitsMisses": "안타/실패",
+ "hitsMisses": "적중 / 미적중",
"signatureCache": "서명 캐시",
"signatureDefaults": "기본값",
"signatureTool": "도구",
- "signatureFamily": "가족",
+ "signatureFamily": "패밀리",
"signatureSession": "세션",
"recovering": "회복 중",
"noCBData": "사용 가능한 회로 차단기 데이터가 없습니다. 먼저 몇 가지 요청을 해보세요.",
"providerHealthStatusAria": "공급자 상태",
"issuesLabel": "발견된 문제",
- "operational": "운영",
+ "operational": "정상 작동",
"providers": "공급자",
"configuredProvidersLabel": "대시보드에 구성됨",
"configuredProvidersHint": "런타임 상태에 관계없이 /dashboard/providers에 자격 증명이 저장된 공급자입니다.",
@@ -4370,19 +4370,19 @@
"activeProvidersHint": "현재 요청 라우팅을 위해 활성화된 구성된 공급자입니다.",
"monitoredProviders": "{count} monitored",
"monitoredProvidersHint": "현재 회로 차단기 상태 모니터로 추적되는 공급자입니다.",
- "healthyCount": "{count} 건강함",
+ "healthyCount": "{count}개 정상",
"nodeVersion": "노드 {version}",
"failures": "{count} 실패",
"failuresPlural": "{count} 실패",
"lastFailure": "마지막",
- "rateLimitStatus": "비율 제한 상태",
+ "rateLimitStatus": "속도 제한 상태",
"activeLimiters": "{count} 활성 제한기",
"activeLimitersPlural": "{count} 활성 제한기",
"queued": "대기 중",
"queuedCount": "{count} 대기 중",
- "running": "달리기",
+ "running": "실행 중",
"runningCount": "{count} 실행 중",
- "ok": "알았어",
+ "ok": "정상",
"activeLockouts": "활성 잠금",
"resetConfirm": "모든 회로 차단기를 정상 상태로 재설정하시겠습니까? 그러면 모든 실패 횟수가 지워지고 모든 공급자가 작동 상태로 복원됩니다.",
"resetAllTitle": "모든 회로 차단기를 정상 상태로 재설정",
@@ -4420,7 +4420,7 @@
"sessionsByApiKey": "API 키별 세션",
"noActiveSessionsTracked": "아직 추적된 활성 세션이 없습니다.",
"noSessionQuotaMonitorsActive": "활성 세션 할당량 모니터가 없습니다.",
- "gracefulDegradationStatus": "우아한 저하 상태",
+ "gracefulDegradationStatus": "점진적 성능 저하 상태",
"additionalModels": "+{count} 모델 더보기",
"providerHealthMatrixTitle": "프로바이더 상태 매트릭스",
"providerHealthMatrixDescription": "브레이커, 쿨다운, 잠금 및 로그의 프로바이더 × 계정 × 모델 상태입니다.",
@@ -4475,7 +4475,7 @@
"enable": "MITM 프록시 활성화",
"enableDesc": "로컬 차단 프로세스와 DNS 재정의를 시작하거나 중지합니다.",
"status": "상태",
- "running": "달리기",
+ "running": "실행 중",
"stopped": "중지됨",
"start": "시작",
"stop": "중지",
@@ -4499,7 +4499,7 @@
"missing": "누락",
"downloadCert": "CA 인증서 다운로드",
"regenerateCert": "인증서 재생성",
- "regenerateConfirm": "이렇게 하면 기존 클라이언트 신뢰가 무효화됩니다. 계속하다?",
+ "regenerateConfirm": "이렇게 하면 기존 클라이언트 신뢰가 무효화됩니다. 계속하시겠습니까?",
"regenerateSuccess": "MITM 인증서가 재생성되었습니다.",
"regenerateFailed": "MITM 인증서를 재생성하지 못했습니다.",
"targetRoutes": "대상 경로",
@@ -4520,7 +4520,7 @@
},
"limits": {
"title": "한도 및 할당량",
- "rateLimit": "비율 제한",
+ "rateLimit": "속도 제한",
"remaining": "남은",
"requestsPerMinute": "요청/분",
"tokensPerMinute": "토큰/분",
@@ -4536,10 +4536,10 @@
"loading": "로드 중...",
"refresh": "새로고침",
"filterByAction": "작업별로 필터링...",
- "filterByActor": "배우별로 필터링...",
+ "filterByActor": "행위자별로 필터링...",
"filterEntriesAria": "감사 로그 항목 필터링",
"filterByActionTypeAria": "작업 유형별로 필터링",
- "filterByActorAria": "배우별로 필터링",
+ "filterByActorAria": "행위자별로 필터링",
"refreshAuditLogAria": "감사 로그 새로 고침",
"tableAria": "감사 로그 항목",
"failedFetchAuditLog": "감사 로그를 가져오지 못했습니다.",
@@ -4547,7 +4547,7 @@
"search": "검색",
"timestamp": "타임스탬프",
"action": "액션",
- "actor": "배우",
+ "actor": "행위자",
"target": "대상",
"details": "세부정보",
"ipAddress": "IP 주소",
@@ -4555,12 +4555,12 @@
"noEntries": "감사 로그 항목이 없습니다.",
"previous": "이전",
"next": "다음",
- "providerWarningTitle": "Provider Warning Title",
+ "providerWarningTitle": "공급자 경고",
"viewDetails": "View Details",
"eventMetadata": "Event Metadata",
"eventPayload": "Event Payload",
"requestId": "Request Id",
- "providerWarningDesc": "Provider Warning Desc",
+ "providerWarningDesc": "요청 처리 중 일부 공급자가 경고를 반환했습니다",
"a": "A",
"offset": "Offset",
"limit": "Limit",
@@ -4568,7 +4568,7 @@
"resourceType": "Resource Type",
"totalEntries": "Total Entries",
"tab": "Tab",
- "auditModalSubtitle": "Audit Modal Subtitle",
+ "auditModalSubtitle": "이벤트 세부정보 및 메타데이터",
"close": "Close",
"runningRequests": "Active Requests",
"runningRequestsDesc": "Real-time view of currently running upstream requests",
@@ -4833,14 +4833,14 @@
"understand": "이해했습니다, 계속하기",
"cancel": "취소"
},
- "disabled": "장애인",
+ "disabled": "비활성화됨",
"enableProvider": "공급자 활성화",
"disableProvider": "공급자 비활성화",
"testResults": "테스트 결과",
"noCompatibleYet": "아직 호환되는 제공업체가 추가되지 않았습니다.",
"compatibleHint": "위 버튼을 사용하여 OpenAI 또는 Anthropic 호환 엔드포인트를 추가하세요.",
"addOpenAICompatible": "OpenAI 호환 추가",
- "addAnthropicCompatible": "인류 호환 추가",
+ "addAnthropicCompatible": "Anthropic 호환 추가",
"addNewProvider": "새 공급자 추가",
"backToProviders": "공급자로 돌아가기",
"configureNewProvider": "애플리케이션과 함께 사용할 새 AI 공급자를 구성합니다.",
@@ -4883,7 +4883,7 @@
"failedCount": "{count} 실패",
"testedCount": "{count} 테스트됨",
"millisecondsAbbr": "{value}ms",
- "okShort": "알았어",
+ "okShort": "정상",
"errorShort": "오류",
"noActiveConnectionsInGroup": "이 그룹에 대한 활성 연결이 없습니다.",
"allTestsPassed": "모든 {total} 테스트를 통과했습니다.",
@@ -4897,7 +4897,7 @@
"baseUrlHint": "필수입니다. 공급자 API 기본 URL.",
"iconUrlLabel": "아이콘 URL",
"iconUrlHint": "선택 사항. 이 제공자의 아이콘으로 표시될 이미지 URL입니다.",
- "anthropicPrefixPlaceholder": "AC-PROD",
+ "anthropicPrefixPlaceholder": "ac-prod",
"openaiPrefixPlaceholder": "oc-prod",
"anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1",
"openaiBaseUrlPlaceholder": "https://api.openai.com/v1",
@@ -4936,7 +4936,7 @@
"failedSaveConnectionRetry": "연결을 저장하지 못했습니다. 다시 시도해 주세요.",
"failedRetestConnection": "연결을 다시 테스트하지 못했습니다.",
"deleteCompatibleNodeConfirm": "이 {type} 호환 노드를 삭제하시겠습니까?",
- "anthropicCompatibleDetails": "인류 친화적인 세부 사항",
+ "anthropicCompatibleDetails": "Anthropic 호환 세부 정보",
"openaiCompatibleDetails": "OpenAI 호환 세부정보",
"messagesApi": "메시지 API",
"responsesApi": "응답 API",
@@ -4944,7 +4944,7 @@
"audioTranscriptions": "Audio Transcriptions",
"audioSpeech": "Audio Speech",
"imagesGenerations": "Images Generations",
- "chatCompletions": "채팅 완료",
+ "chatCompletions": "Chat Completions",
"importingModels": "가져오는 중...",
"importFromModels": "/models에서 가져오기",
"modelsImported": "{count} models imported",
@@ -4957,7 +4957,7 @@
"autoSyncDisabled": "자동 동기화 비활성화",
"autoSyncToggleFailed": "자동 동기화 전환 실패",
"clearAllModels": "모든 모델 삭제",
- "clearAllModelsConfirm": "이 공급자의 모든 모델을 제거하시겠습니까?",
+ "clearAllModelsConfirm": "이 공급자의 모든 모델을 제거하시겠습니까? 이 작업은 되돌릴 수 없습니다.",
"clearAllModelsSuccess": "모든 모델 삭제됨",
"clearAllModelsFailed": "모델 삭제 실패",
"addConnectionToImport": "가져오기를 활성화하려면 연결을 추가하세요.",
@@ -4995,12 +4995,12 @@
"testAllProgress": "{done}/{total} 테스트 완료",
"testAllFailedHidden": "{count}개의 실패한 모델 숨김",
"testAllDone": "모든 모델 테스트 완료",
- "productionKey": "생산 키",
+ "productionKey": "프로덕션 키",
"enterNewApiKey": "새 API 키를 입력하세요",
- "codexApplyModalTitle": "지역 코덱스에 적용",
+ "codexApplyModalTitle": "로컬 Codex에 적용",
"codexApplyTargetLabel": "대상 경로",
"codexApplyBackupLabel": "백업",
- "codexApplyWarning": "이는 기존 auth.json을 대체합니다. 계속하다?",
+ "codexApplyWarning": "기존 auth.json을 대체합니다. 계속하시겠습니까?",
"codexApplyConfirmCheckbox": "기존 auth.json을 교체할 것임을 확인합니다.",
"codexApply": "적용",
"bulkTabSingle": "싱글",
@@ -5011,7 +5011,7 @@
"bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}",
"bulkFailedCount": "{count, plural, one {# failed} other {# failed}}",
"optional": "선택사항",
- "anthropicCompatibleName": "인류 친화적",
+ "anthropicCompatibleName": "Anthropic 호환",
"openaiCompatibleName": "OpenAI 호환",
"compatibleDefaultModelLabel": "기본 모델",
"compatibleDefaultModelHint": "호환되는 엔드포인트가 요구하는 것과 정확히 일치하는 모델 ID를 입력하세요. 이 모델은 연결 기본값으로 저장됩니다.",
@@ -5025,14 +5025,14 @@
"importDoneCount": "✓ 완료! {count, plural, one {# model imported.} other {# models imported.}}",
"unexpectedErrorOccurred": "예상치 못한 오류가 발생했습니다.",
"connectionCountLabel": "{count, plural, one {# connection} other {# connections}}",
- "messagesPath": "메시지",
- "responsesPath": "응답",
- "chatCompletionsPath": "채팅/완료",
+ "messagesPath": "messages",
+ "responsesPath": "responses",
+ "chatCompletionsPath": "chat/completions",
"add": "추가",
"edit": "편집",
"delete": "삭제",
- "anthropic": "인류학",
- "openai": "오픈AI",
+ "anthropic": "Anthropic",
+ "openai": "OpenAI",
"singleConnectionPerCompatible": "호환되는 노드당 하나의 연결만 허용됩니다. 더 많은 연결이 필요한 경우 다른 노드를 추가하세요.",
"connections": "연결",
"providerProxyTitleConfigured": "공급자 프록시: {host}",
@@ -5051,15 +5051,15 @@
"builtInModels": "Built-in models",
"builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.",
"pageAutoRefresh": "페이지가 자동으로 새로 고쳐집니다...",
- "statusDisabled": "장애인",
+ "statusDisabled": "비활성화됨",
"statusConnected": "연결됨",
"statusRuntimeIssue": "런타임 문제",
"statusAuthFailed": "인증 실패",
- "statusRateLimited": "요금 제한",
+ "statusRateLimited": "속도 제한됨",
"statusNetworkIssue": "네트워크 문제",
"statusTestUnsupported": "지원되지 않는 테스트",
"statusUnavailable": "이용할 수 없음",
- "statusFailed": "실패했다",
+ "statusFailed": "실패",
"statusError": "오류",
"oauthAccount": "OAuth 계정",
"errorTypeRuntime": "로컬 런타임",
@@ -5067,7 +5067,7 @@
"errorTypeMissingCredential": "자격증명 누락",
"errorTypeRefreshFailed": "새로고침 실패",
"errorTypeTokenExpired": "토큰이 만료되었습니다.",
- "errorTypeRateLimited": "요금 제한",
+ "errorTypeRateLimited": "속도 제한됨",
"errorTypeUpstreamUnavailable": "업스트림 이용 불가",
"errorTypeNetworkError": "네트워크 오류",
"errorTypeTestUnsupported": "지원되지 않는 테스트",
@@ -5076,7 +5076,7 @@
"errorTypeBanned": "403 차단됨",
"proxySourceGlobal": "글로벌",
"proxySourceProvider": "공급자",
- "proxySourceKey": "열쇠",
+ "proxySourceKey": "키",
"proxyConfiguredBySource": "프록시({source}): {host}",
"proxyOn": "프록시 켬",
"proxyOff": "직접 연결 (프록시 우회)",
@@ -5100,7 +5100,7 @@
"clickToEditAlias": "Alias: {alias} (click to edit)",
"openRouterAnyModelHint": "OpenRouter는 모든 모델을 지원합니다. 빠른 액세스를 위해 모델을 추가하고 별칭을 만듭니다.",
"modelIdFromOpenRouter": "모델 ID(OpenRouter에서)",
- "openRouterModelPlaceholder": "인류학/claude-3-opus",
+ "openRouterModelPlaceholder": "anthropic/claude-3-opus",
"customModels": "맞춤형 모델",
"customModelsHint": "기본 목록에 없는 모델 ID를 추가하세요. 라우팅에 사용할 수 있습니다.",
"normalizeToolCallIdLabel": "Normalize tool call IDs to 9 characters (e.g. Mistral)",
@@ -5161,13 +5161,13 @@
"compatUpstreamAddRow": "Add header",
"compatUpstreamRemoveRow": "Remove row",
"compatBadgeUpstreamHeaders": "Headers",
- "perModelQuotaLabel": "Per Model Quota Label",
- "perModelQuotaDescription": "Per Model Quota Description",
+ "perModelQuotaLabel": "모델별 할당량",
+ "perModelQuotaDescription": "활성화하면 429/404 오류가 전체 연결이 아닌 해당 모델만 잠급니다. 모델별 속도 제한이 있는 공급자(예: ModelScope)에 사용하세요.",
"importFreeModelsOnlyLabel": "무료 모델만 가져오기",
"importFreeModelsOnlyHint": "활성화하면 이 제공자의 무료 모델만 가져옵니다. 유료 모델은 건너뜁니다.",
"perModelQuotaToggle": "모델별 할당량 토글",
"modelId": "모델 ID",
- "customModelPlaceholder": "예를 들어 gpt-4.5-터보",
+ "customModelPlaceholder": "예: gpt-4.5-turbo",
"loading": "로드 중...",
"removeCustomModel": "맞춤 모델 삭제",
"noCustomModels": "아직 추가된 커스텀 모델이 없습니다.",
@@ -5181,7 +5181,7 @@
"modelRemovedSuccess": "모델이 성공적으로 제거되었습니다.",
"failedDeleteModelTryAgain": "모델을 삭제하지 못했습니다. 다시 시도해 주세요.",
"compatibleModelsDescription": "{type} 호환 모델을 수동으로 추가하거나 /models 엔드포인트에서 가져옵니다.",
- "anthropicCompatibleModelPlaceholder": "클로드-3-opus-20240229",
+ "anthropicCompatibleModelPlaceholder": "claude-3-opus-20240229",
"openaiCompatibleModelPlaceholder": "gpt-4o",
"apiKeyValidationFailed": "API 키 검증에 실패했습니다. 키를 확인하고 다시 시도해 주세요.",
"addProviderApiKeyTitle": "{provider} API 키 추가",
@@ -5222,18 +5222,18 @@
"applyClaudeAuthLocal": "인증 적용",
"exportClaudeAuthFile": "인증 내보내기",
"importClaudeAuth": "인증 가져오기",
- "claudeApplyModalTitle": "지역 클로드 코드에 적용",
+ "claudeApplyModalTitle": "로컬 Claude Code에 적용",
"claudeApplyTargetLabel": "대상 경로",
"claudeApplyBackupLabel": "백업",
"claudeApplyMcpHint": "기존 MCP OAuth 상태는 유지됩니다.",
- "claudeApplyWarning": "이는 기존 cludeAiOauth 섹션을 대체합니다. 계속하다?",
- "claudeApplyConfirmCheckbox": "기존 cludeAiOauth 섹션을 교체할 것임을 확인합니다.",
+ "claudeApplyWarning": "기존 claudeAiOauth 섹션을 대체합니다. 계속하시겠습니까?",
+ "claudeApplyConfirmCheckbox": "기존 claudeAiOauth 섹션을 교체할 것임을 확인합니다.",
"claudeApply": "적용",
"claudeAuthAppliedLocal": "Claude 인증이 로컬로 적용됨",
"claudeAuthApplyFailed": "Claude 인증을 로컬로 적용하지 못했습니다.",
"claudeAuthExported": "Claude 인증 파일을 내보냈습니다.",
"claudeAuthExportFailed": "Claude 인증 파일을 내보내지 못했습니다.",
- "claudeImportModalTitle": "클로드 인증 가져오기",
+ "claudeImportModalTitle": "Claude 인증 가져오기",
"claudeImportTabSingle": "싱글",
"claudeImportTabBulk": "대량",
"claudeImportTabUpload": "파일 업로드",
@@ -5252,8 +5252,8 @@
"claudeImportFailed": "Claude 인증을 가져오지 못했습니다.",
"claudeImportBulkModeUpload": "파일 업로드",
"claudeImportBulkModePaste": "JSON 배열 붙여넣기",
- "claudeImportBulkModeZip": "우편번호 업로드",
- "claudeImportBulkUploadHint": "최대 50개의 .credentials.json 파일(각각 256KB, 총 10MB)을 삭제하거나 선택하세요.",
+ "claudeImportBulkModeZip": "ZIP 업로드",
+ "claudeImportBulkUploadHint": "최대 50개의 .credentials.json 파일(각각 256KB, 총 10MB)을 끌어다 놓거나 선택하세요.",
"claudeImportBulkPasteHint": "객체 배열 붙여넣기: [{ json, name?, email? }...]",
"claudeImportBulkZipHint": ".json 항목이 포함된 ZIP입니다. 최대 50개 항목, 압축 해제 시 10MB.",
"claudeImportBulkSubmit": "모두 가져오기",
@@ -5284,8 +5284,8 @@
"geminiImportFailed": "Gemini 인증을 가져오지 못했습니다.",
"geminiImportBulkModeUpload": "파일 업로드",
"geminiImportBulkModePaste": "JSON 배열 붙여넣기",
- "geminiImportBulkModeZip": "우편번호 업로드",
- "geminiImportBulkUploadHint": "최대 50개의 oauth_creds.json 파일(각각 256KB, 총 10MB)을 삭제하거나 선택하세요.",
+ "geminiImportBulkModeZip": "ZIP 업로드",
+ "geminiImportBulkUploadHint": "최대 50개의 oauth_creds.json 파일(각각 256KB, 총 10MB)을 끌어다 놓거나 선택하세요.",
"geminiImportBulkPasteHint": "객체 배열 붙여넣기: [{ json, name?, email? }...]",
"geminiImportBulkZipHint": "oauth_creds.json 항목이 포함된 ZIP입니다. 최대 50개 항목, 압축 해제 시 10MB.",
"geminiImportBulkSubmit": "모두 가져오기",
@@ -5358,11 +5358,11 @@
"showEmails": "Show all emails",
"hideEmails": "Hide all emails",
"a": "A",
- "accountConcurrencyCapHint": "이 provider 계정의 최대 동시 요청 수입니다. 비워 두거나 0으로 설정하면 제한이 없습니다. provider 자체가 부과하는 제한에 먼저 걸리지 않도록 돕습니다.",
+ "accountConcurrencyCapHint": "이 연결/계정이 처리할 수 있는 최대 동시 요청 수입니다. 구독 계정은 보통 소수(1~3개)만 허용하며, 초과하면 429 오류와 쿨다운이 발생합니다. 기본값을 사용하려면 비워 두세요.",
"accountConcurrencyCapLabel": "Provider 계정 최대 동시 요청 수",
- "accountIdHint": "Account Id Hint",
- "accountIdLabel": "Account Id Label",
- "accountIdPlaceholder": "Account Id Placeholder",
+ "accountIdHint": "일부 공급자(예: Cloudflare Workers AI)에서 API 토큰과 함께 필요합니다.",
+ "accountIdLabel": "계정 ID",
+ "accountIdPlaceholder": "공급자 계정 ID",
"addAnotherApiKey": "Add another API key or paste multiple keys",
"addCcCompatible": "Add Cc Compatible",
"aggregatorsGateways": "Aggregators Gateways",
@@ -5386,38 +5386,38 @@
"blackboxWebCookieHint": "Blackbox Web Cookie Hint",
"blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder",
"t3ChatWebCookieHint": "t3.chat → DevTools → Application → Local Storage → https://t3.chat을 열고 'convex-session-id'를 복사하세요. 그런 다음 DevTools → Network를 열고 채팅 요청에서 전체 쿠키 헤더를 복사하세요. 아래 필드에 두 값을 모두 붙여넣습니다.",
- "t3ChatWebCookiePlaceholder": "볼록-세션-id=abc123...",
+ "t3ChatWebCookiePlaceholder": "convex-session-id=abc123...",
"grokWebCookieHint": "Grok Web Cookie Hint",
- "blockClaudeExtraUsageDescription": "Block Claude Extra Usage Description",
- "blockClaudeExtraUsageLabel": "Block Claude Extra Usage Label",
+ "blockClaudeExtraUsageDescription": "활성화하면 사용량 API가 대기 중인 추가 사용량을 보고하는 즉시 OmniRoute가 이 Claude 연결을 사용 불가로 표시하여, 종량제 추가 과금을 계속하는 대신 폴백이 다른 연결로 전환됩니다.",
+ "blockClaudeExtraUsageLabel": "Claude 추가 사용 차단",
"disableCoolingDescription": "일시적인 쿨다운을 건너뛰어 복구 가능한 오류가 발생한 후에도 이 연결이 사용 가능한 상태로 유지되도록 합니다(차단됨/만료됨과 같은 최종 상태는 여전히 적용됨).",
"disableCoolingLabel": "이 연결에 대한 쿨다운 비활성화",
"bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}",
"bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}",
"bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.",
- "ccCompatibleBaseUrlHint": "Cc Compatible Base Url Hint",
- "ccCompatibleBaseUrlPlaceholder": "Cc Compatible Base Url Placeholder",
- "ccCompatibleChatPathHint": "Cc Compatible Chat Path Hint",
- "ccCompatibleContext1mDescription": "Cc Compatible Context1M Description",
- "ccCompatibleContext1mLabel": "Cc Compatible Context1M Label",
+ "ccCompatibleBaseUrlHint": "Claude Code 전용 릴레이의 기본 URL입니다. /messages는 포함하지 마세요.",
+ "ccCompatibleBaseUrlPlaceholder": "https://relay.example.com/v1",
+ "ccCompatibleChatPathHint": "기본값은 Claude Code의 엄격한 Messages API 경로입니다. 릴레이 문서에 다른 경로가 명시된 경우에만 변경하세요.",
+ "ccCompatibleContext1mDescription": "선택한 Claude 모델이 지원하는 경우 context-1m 베타 헤더를 추가합니다.",
+ "ccCompatibleContext1mLabel": "1M 컨텍스트 베타 활성화",
"ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.",
"ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta",
"ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.",
"ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display",
- "ccCompatibleDetailsTitle": "Cc Compatible Details Title",
- "ccCompatibleLabel": "Cc Compatible Label",
- "ccCompatibleModelsDescription": "Cc Compatible Models Description",
- "ccCompatibleNameHint": "Cc Compatible Name Hint",
- "ccCompatibleNamePlaceholder": "Cc Compatible Name Placeholder",
- "ccCompatiblePrefixHint": "Cc Compatible Prefix Hint",
- "ccCompatiblePrefixPlaceholder": "Cc Compatible Prefix Placeholder",
- "ccCompatibleValidationHint": "Cc Compatible Validation Hint",
- "claudeExtraUsageShort": "Claude Extra Usage Short",
- "claudeExtraUsageToggleTitle": "Claude Extra Usage Toggle Title",
- "codex5hToggleTitle": "Codex5H Toggle Title",
+ "ccCompatibleDetailsTitle": "CC 호환 릴레이 세부 정보",
+ "ccCompatibleLabel": "CC 호환",
+ "ccCompatibleModelsDescription": "CC 호환 릴레이는 모델 목록을 제공하지 않습니다. 릴레이가 허용하는 Claude 모델 ID를 추가하세요.",
+ "ccCompatibleNameHint": "이 Claude Code 전용 릴레이의 표시 이름입니다.",
+ "ccCompatibleNamePlaceholder": "CC Relay Production",
+ "ccCompatiblePrefixHint": "prefix/model-id와 같은 모델 별칭에 사용됩니다.",
+ "ccCompatiblePrefixPlaceholder": "cc",
+ "ccCompatibleValidationHint": "Claude Code 클라이언트 전용으로 서비스하는 릴레이에만 이 공급자를 사용하세요. OmniRoute는 들어오는 모든 요청을 Claude Code 호환 와이어 형식으로 재작성하여 해당 릴레이가 수락하도록 합니다. Claude Code CLI만 사용하려는 경우이거나 이 릴레이 유형이 무엇인지 확실하지 않은 경우에는 일반 Anthropic 호환 공급자를 사용하세요.",
+ "claudeExtraUsageShort": "추가 사용량",
+ "claudeExtraUsageToggleTitle": "이 연결에 대해 Claude 추가 사용량 집계 차단",
+ "codex5hToggleTitle": "이 연결에 대해 Codex 5시간 할당량 추적",
"codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.",
"codexFastServiceTierLabel": "Codex fast service tier",
- "codexWeeklyToggleTitle": "Codex Weekly Toggle Title",
+ "codexWeeklyToggleTitle": "이 연결에 대해 Codex 주간 할당량 추적",
"compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder",
"compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder",
"compatible": "Compatible",
@@ -5428,8 +5428,8 @@
"newApiUserIdLabel": "New-API 사용자 ID",
"newApiUserIdPlaceholder": "예: 12345",
"newApiUserIdHint": "AgentRouter의 New-Api-User 헤더 값으로, 할당량 잔액을 조회할 때 콘솔 API 키와 함께 사용됩니다.",
- "cpaModeDisabledTitle": "Cpa Mode Disabled Title",
- "cpaModeEnabledTitle": "Cpa Mode Enabled Title",
+ "cpaModeDisabledTitle": "CLIProxyAPI 호환 모드가 비활성화되어 있습니다",
+ "cpaModeEnabledTitle": "CLIProxyAPI 호환 모드가 활성화되어 있습니다",
"customUserAgentHint": "Custom User Agent Hint",
"customUserAgentLabel": "Custom User Agent Label",
"databricksBaseUrlHint": "Databricks Base Url Hint",
@@ -5464,7 +5464,7 @@
"codexFastTierActiveChip": "Codex Fast 티어가 활성화되어 있습니다",
"tierFast": "Fast",
"antigravityProjectIdLabel": "Google Cloud 프로젝트 ID",
- "antigravityProjectIdPlaceholder": "내-gcp-프로젝트-id",
+ "antigravityProjectIdPlaceholder": "my-gcp-project-id",
"grokWebCookiePlaceholder": "Grok Web Cookie Placeholder",
"herokuBaseUrlHint": "Heroku Base Url Hint",
"hideEmail": "Hide Email",
@@ -5498,9 +5498,9 @@
"perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info",
"perplexityWebCookieHint": "Perplexity Web Cookie Hint",
"perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder",
- "personalAccessTokenLabel": "Personal Access Token Label",
- "qoderPatHint": "Qoder Pat Hint",
- "qoderPatPlaceholder": "Qoder Pat Placeholder",
+ "personalAccessTokenLabel": "개인 액세스 토큰",
+ "qoderPatHint": "Qoder 개인 액세스 토큰(PAT)을 붙여넣으세요. Qoder → Settings → Personal Access Tokens에서 생성할 수 있습니다.",
+ "qoderPatPlaceholder": "Qoder 개인 액세스 토큰",
"rateLimitOverridesSection": "속도 제한 재정의",
"rateLimitOverridesMaxConcurrentHint": "이 연결에 대한 최대 동시 요청 수 재정의입니다. 계정 수준의 제한을 재정의합니다.",
"rateLimitOverridesMaxConcurrentLabel": "최대 동시 요청 수 (속도 제한)",
@@ -5533,18 +5533,18 @@
"sessionCookieLabel": "Session Cookie Label",
"showEmail": "Show Email",
"snowflakeBaseUrlHint": "Snowflake Base Url Hint",
- "supportedEndpointAudio": "Supported Endpoint Audio",
- "supportedEndpointChat": "Supported Endpoint Chat",
- "supportedEndpointEmbeddings": "Supported Endpoint Embeddings",
- "supportedEndpointImages": "Supported Endpoint Images",
- "supportedEndpointsLabel": "Supported Endpoints Label",
+ "supportedEndpointAudio": "오디오",
+ "supportedEndpointChat": "채팅",
+ "supportedEndpointEmbeddings": "임베딩",
+ "supportedEndpointImages": "이미지",
+ "supportedEndpointsLabel": "지원되는 엔드포인트",
"tagGroupHint": "Tag Group Hint",
"tagGroupLabel": "Tag Group Label",
"tagGroupPlaceholder": "Tag Group Placeholder",
"testModel": "Test Model",
"testingModel": "Testing Model",
- "toggleOffShort": "Toggle Off Short",
- "toggleOnShort": "Toggle On Short",
+ "toggleOffShort": "끔",
+ "toggleOnShort": "켬",
"tokenExpiredBadge": "Token Expired Badge",
"tokenExpiredTitle": "Token Expired Title",
"tokenExpiresSoonTitle": "Token Expires Soon Title",
@@ -5552,9 +5552,9 @@
"totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}",
"unhideModel": "Unhide Model",
"upstreamProxyProviders": "Upstream Proxy Providers",
- "validationModelIdHint": "Validation Model Id Hint",
- "validationModelIdLabel": "Validation Model Id Label",
- "validationModelIdPlaceholder": "Validation Model Id Placeholder",
+ "validationModelIdHint": "API 키를 검증하는 데 사용할 모델입니다. 비워 두면 공급자의 첫 번째 사용 가능한 모델을 사용합니다.",
+ "validationModelIdLabel": "검증 모델",
+ "validationModelIdPlaceholder": "예: meta-llama/llama-3.1-8b-instruct",
"vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token",
"webCookieProviders": "Web Cookie Providers",
"weeklyShort": "Weekly Short",
@@ -5568,13 +5568,13 @@
"importGrokAuth": "Grok Build 인증 가져오기",
"zedImportTitle": "Zed 키체인에서 가져오기",
"zedImportDescription": "OS 키체인에 Zed IDE가 저장한 AI 제공업체 자격 증명(OpenAI, Anthropic, Google, Mistral, xAI)을 찾아 연결로 가져옵니다. 이 컴퓨터에 Zed IDE가 설치되어 있어야 합니다.",
- "zedImportButton": "Zed Import Button",
- "zedImportFailed": "Zed Import Failed",
+ "zedImportButton": "Zed에서 가져오기",
+ "zedImportFailed": "Zed 가져오기 실패",
"zedImportHint": "Zed Import Hint",
"zedImportNetworkError": "Zed Import Network Error",
"zedImportNone": "Zed Import None",
- "zedImportSuccess": "Zed Import Success",
- "zedImporting": "Zed Importing",
+ "zedImportSuccess": "{providers}개 공급자에 대해 Zed에서 {credentials}개의 자격 증명을 가져왔습니다",
+ "zedImporting": "가져오는 중…",
"zedNoCredentials": "키체인에서 Zed 자격 증명을 찾을 수 없습니다",
"zedUnsupportedCredentials": "키체인 자격 증명을 {count}개 찾았으나, 지원되는 제공업체와 일치하는 것이 없습니다",
"zedManualTitle": "수동 토큰 가져오기",
@@ -5603,7 +5603,7 @@
"freeTierProvidersDesc": "무료 등급이 있는 공급자 - 일부는 API 키 등록이 필요하고 다른 공급자는 자격 증명이 전혀 필요하지 않습니다.",
"providerSummaryAll": "합계",
"ideProviders": "IDE 제공업체",
- "ideProvidersDesc": "AI 구독이 내장된 편집자. 공급자 페이지를 사용하여 IDE 키체인에서 직접 자격 증명을 가져옵니다.",
+ "ideProvidersDesc": "AI 구독이 내장된 에디터입니다. 공급자 페이지에서 IDE 키체인의 자격 증명을 직접 가져올 수 있습니다.",
"noIdeProviders": "현재 필터와 일치하는 IDE 공급자가 없습니다.",
"providerDetailFastTierTooltip": "기본적으로 모든 Codex 연결에 Codex Fast 계층 적용",
"providerDetailFastDefaultLabel": "빠른 기본값",
@@ -5612,7 +5612,7 @@
"providerDetailCallbackUrl": "콜백 URL",
"providerDetailValidClaudeCredentialsFile": "유효한 Claude 자격 증명 파일",
"providerDetailPathAutoDetectedAllOs": "경로는 OS(Linux/Mac/Windows)별로 자동 감지됩니다.",
- "providerDetailMyClaudeAccountPlaceholder": "내 클로드 계정",
+ "providerDetailMyClaudeAccountPlaceholder": "내 Claude 계정",
"providerDetailPathAutoDetected": "경로는 OS(Linux/Mac)별로 자동 감지됩니다.",
"compatBlockedParamsPlaceholder": "thinking, … (쉼표로 구분)",
"compatAllowedParamsPlaceholder": "reasoning, … (쉼표로 구분)",
@@ -5661,7 +5661,7 @@
"onboardingChooseProviderDescription": "공급자를 선택하면 마법사가 자격 증명 및 테스트 과정을 안내합니다.",
"onboardingChangeType": "유형 변경",
"onboardingChangeProvider": "공급자 변경",
- "onboardingSearchProviders": "검색 공급자…",
+ "onboardingSearchProviders": "공급자 검색…",
"onboardingApiKeyOptional": "API 키 선택사항",
"onboardingProviderConnected": "제공업체가 연결됨",
"onboardingProviderSavedWithWarnings": "경고와 함께 공급자가 저장되었습니다.",
@@ -5670,7 +5670,7 @@
"onboardingTestPassed": "테스트 통과",
"onboardingTestFailed": "테스트 실패",
"onboardingOpenProviderDetails": "제공업체 세부정보 열기",
- "onboardingTryInPlayground": "놀이터에서 시험해 보세요",
+ "onboardingTryInPlayground": "플레이그라운드에서 시험해 보세요",
"onboardingDefaultConnectionName": "{provider} 기본",
"onboardingTestingConnection": "제공업체 연결 테스트 중…",
"onboardingValidatingCredentials": "사용자 인증 정보 확인 중…",
@@ -5687,20 +5687,20 @@
"onboardingConnectionName": "연결 이름",
"onboardingApiKeyOptionalLabel": "API 키(선택사항)",
"onboardingBaseUrlOverride": "기본 URL 재정의",
- "onboardingBaseUrlOverrideHint": "선택사항. 공급자별 데이터.baseUrl로 저장됩니다.",
+ "onboardingBaseUrlOverrideHint": "선택사항. providerSpecificData.baseUrl로 저장됩니다.",
"onboardingRegion": "지역",
- "onboardingSearchCx": "CX/엔진 ID 검색",
+ "onboardingSearchCx": "검색 CX / 엔진 ID",
"onboardingProviderSpecificIdPlaceholder": "선택적 제공업체별 ID",
"onboardingCustomUserAgent": "맞춤형 사용자 에이전트",
- "onboardingWorking": "일하는 중…",
+ "onboardingWorking": "처리 중…",
"onboardingValidateSaveTest": "검증, 저장 및 테스트",
"onboardingBack": "뒤로",
"onboardingCreateCustomCompatibleProvider": "맞춤형 호환 제공자 생성",
"onboardingCreateCustomCompatibleDescription": "마법사는 먼저 공급자 노드를 생성한 다음 API 키 연결을 저장하고 테스트합니다.",
"onboardingProtocol": "프로토콜",
"onboardingOpenAiCompatible": "OpenAI 호환",
- "onboardingAnthropicCompatible": "인류 친화적인",
- "onboardingClaudeCodeCompatible": "클로드 코드 호환",
+ "onboardingAnthropicCompatible": "Anthropic 호환",
+ "onboardingClaudeCodeCompatible": "Claude Code 호환",
"onboardingProviderPrefix": "공급자 접두사",
"onboardingProviderPrefixHint": "관리형 공급자 ID를 생성하는 데 사용됩니다.",
"onboardingChatPath": "채팅 경로",
@@ -5923,7 +5923,7 @@
"webSessionGuideStep2": "브라우저 개발자 도구를 열고 웹 앱의 요청을 검사합니다.",
"webSessionGuideStep3": "공급자의 자체 도메인에서 필수 자격 증명을 복사합니다. 쿠키의 경우 Cookie 헤더 값만 복사하고 Cookie:를 생략하세요.",
"webSessionGuideStep4": "여기에 붙여넣고 연결을 확인하세요. 작동이 중지되면 다시 로그인하여 새로운 값으로 바꾸세요.",
- "webSessionSecurityHint": "이를 비밀번호처럼 취급하십시오. 비밀번호가 만료되거나 취소될 때까지 로그인한 웹 계정에 액세스할 수 있습니다.",
+ "webSessionSecurityHint": "이 값을 비밀번호처럼 취급하세요. 만료되거나 취소되기 전까지 로그인된 웹 계정에 액세스할 수 있습니다.",
"webNoAuthGuideTitle": "자격 증명이 필요하지 않습니다",
"webNoAuthGuideBody": "{provider}에는 API 키나 쿠키가 필요하지 않습니다. 무료 웹 엔드포인트를 사용하려면 연결을 저장하세요.",
"webSessionCredentialValidationFailed": "세션 자격 증명 유효성 검사에 실패했습니다. 다시 로그인하고 새로운 자격 증명을 복사한 후 다시 시도하세요.",
@@ -6025,7 +6025,7 @@
"resilienceSettingsIntro": "공급자가 실패할 경우 자동 재시도, 휴지 및 대체.",
"aiSettingsIntro": "사고 예산, 모델 동작 및 압축을 위한 AI 관련 설정입니다.",
"systemPrompt": "시스템 프롬프트",
- "thinkingBudget": "생각하는 예산",
+ "thinkingBudget": "사고 예산",
"proxy": "프록시",
"httpProxy": "HTTP Proxy",
"1proxy": "1proxy",
@@ -6045,7 +6045,7 @@
"requestBodyLimitCurrent": "Current: {value}",
"mitmProxy": "MITM 프록시",
"pricing": "가격",
- "storage": "저장",
+ "storage": "저장소",
"policies": "정책",
"ipFilter": "IP 필터",
"comboDefaults": "콤보 기본값",
@@ -6162,7 +6162,7 @@
"resilienceStructureTitle": "Resilience Structure",
"resilienceStructureDesc": "이 페이지는 동작만 구성합니다. 라이브 차단기 상태는 상태 페이지에 표시됩니다. 콤보별 재시도 및 라운드 로빈 슬롯 제어는 콤보 설정에 유지됩니다.",
"enableThinking": "사고 활성화",
- "maxThinkingTokens": "맥스 씽킹 토큰",
+ "maxThinkingTokens": "최대 사고 토큰 수",
"enableProxy": "프록시 활성화",
"perKeyProxyEnabled": "키별 프록시 할당 활성화",
"perKeyProxyEnabledDesc": "활성화하면 각 제공자 연결에서 자체 프록시 할당을 사용할 수 있습니다",
@@ -6178,7 +6178,7 @@
"cacheCreation": "캐시 생성",
"customPricing": "맞춤형 가격",
"databaseSize": "데이터베이스 크기",
- "backupDb": "백업 데이터베이스",
+ "backupDb": "데이터베이스 백업",
"restoreDb": "데이터베이스 복원",
"exportData": "데이터 내보내기",
"importData": "데이터 가져오기",
@@ -6196,16 +6196,16 @@
"settingsSectionsAria": "설정 섹션",
"switchThemes": "밝은 테마와 어두운 테마 간 전환",
"themeSelectionAria": "테마 선택",
- "themeLight": "빛",
- "themeDark": "어둠",
+ "themeLight": "라이트",
+ "themeDark": "다크",
"themeSystem": "시스템",
"endpointTunnelVisibility": "엔드포인트 터널 가시성",
"endpointTunnelVisibilityDesc": "터널 상태를 변경하지 않고 끝점 페이지에서 터널 제어를 숨깁니다.",
"showCloudflareTunnel": "Cloudflare 빠른 터널",
"showCloudflareTunnelDesc": "엔드포인트 페이지에 Cloudflare Quick Tunnel 컨트롤을 표시하세요.",
- "showTailscaleFunnel": "꼬리비늘 깔때기",
+ "showTailscaleFunnel": "Tailscale Funnel",
"showTailscaleFunnelDesc": "엔드포인트 페이지에 Tailscale Funnel 컨트롤을 표시합니다.",
- "showNgrokTunnel": "응록 터널",
+ "showNgrokTunnel": "ngrok 터널",
"showNgrokTunnelDesc": "엔드포인트 페이지에 ngrok Tunnel 컨트롤을 표시합니다.",
"sidebarVisibility": "Hide sidebar items",
"sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter.",
@@ -6246,8 +6246,8 @@
"flushCache": "캐시 플러시",
"flushing": "플러싱…",
"size": "크기",
- "hits": "조회수",
- "evictions": "퇴거",
+ "hits": "적중",
+ "evictions": "축출",
"loadingCacheStats": "캐시 통계 로드 중…",
"globalProxy": "글로벌 프록시",
"globalProxyDesc": "모든 API 호출에 대해 글로벌 아웃바운드 프록시를 구성합니다. 개별 공급자, 콤보 및 키가 이를 재정의할 수 있습니다.",
@@ -6348,12 +6348,12 @@
"afterPromptDesc": "에이전트/제공자 시스템 지침 후에 주입됨",
"afterPromptPlaceholder": "에이전트/제공자 프롬프트 후에 삽입되는 지침...",
"chars": "{count}자",
- "thinkingBudgetTitle": "생각하는 예산",
+ "thinkingBudgetTitle": "사고 예산",
"thinkingBudgetDesc": "모든 요청에서 AI 추론 토큰 사용을 제어합니다.",
"passthrough": "통과",
"passthroughDesc": "변경 사항 없음 - 클라이언트가 사고 예산을 제어합니다.",
- "auto": "자동",
- "autoDesc": "모든 사고 구성 제거 - 공급자가 결정하도록 함",
+ "auto": "자동 콤보",
+ "autoDesc": "자가 복구형 스마트 라우팅 풀(성능 최적화)",
"custom": "맞춤",
"customDesc": "모든 요청에 대해 고정 토큰 예산 설정",
"adaptive": "적응형",
@@ -6387,7 +6387,7 @@
"authModelClient": "클라이언트 API 엔드포인트(/v1/*, /chat/*, /responses/*, /codex/*, /messages/*)에는 Bearer API 키가 필요합니다.",
"authModelManagement": "관리 엔드포인트(/dashboard, /api/*)에는 대시보드 세션 또는 관리 자격 증명이 필요합니다.",
"authModelPublic": "로그인, 상태 및 부트스트랩 경로만 공개됩니다.",
- "bruteForceProtection": "로그인 무차별 보호",
+ "bruteForceProtection": "로그인 무차별 대입 보호",
"bruteForceProtectionDesc": "동일한 IP에서 반복적으로 실패하면 /api/auth/login을 제한하고 잠급니다.",
"corsAllowedOrigins": "CORS 허용 출처",
"corsAllowedOriginsDesc": "이 서버를 호출하도록 허용된 브라우저 출처의 쉼표로 구분된 목록입니다. 빈 목록 = 브라우저 CORS 액세스가 없습니다(서버 간은 여전히 작동함). CORS_ALLOW_ALL=true env var는 개발에만 사용하세요.",
@@ -6402,7 +6402,7 @@
"enableFingerprintTitle": "Enable fingerprint for {provider}",
"disableFingerprintTitle": "Disable fingerprint for {provider}",
"systemTransforms": "시스템 블록 변환 파이프라인",
- "systemTransformsDesc": "전달하기 전에 요청 본문에 적용되는 변환의 공급자별 주문 파이프라인입니다. 모든 공급자 ID를 지원합니다.",
+ "systemTransformsDesc": "전달 전에 요청 본문에 적용되는 공급자별 순서 지정 변환 파이프라인입니다. 모든 공급자 ID를 지원합니다.",
"systemTransformsAddProvider": "제공업체 추가",
"systemTransformsAddProviderPlaceholder": "제공업체를 선택하세요…",
"systemTransformsAddProviderAllConfigured": "모든 제공업체가 이미 구성되어 있습니다.",
@@ -6410,11 +6410,11 @@
"systemTransformsNoProviders": "구성된 제공업체가 없습니다. 시작하려면 공급자를 추가하세요.",
"systemTransformsOpMoveUp": "위로 이동",
"systemTransformsOpMoveDown": "아래로 이동",
- "systemTransformsOpDelete": "삭제 작업",
+ "systemTransformsOpDelete": "작업 삭제",
"routingStrategy": "라우팅 전략",
"routingAdvancedGuideTitle": "고급 경로 안내",
- "routingAdvancedGuideHint1": "예측 가능한 우선순위를 위해서는 Fill First를 사용하고, 공정성을 위해서는 Round Robin을, 지연 시간 복원력을 위해서는 P2C를 사용하세요.",
- "routingAdvancedGuideHint2": "서비스 제공업체의 품질/비용이 다양한 경우 백그라운드 작업에는 비용 선택(Cost Opt)으로 시작하고 균형 잡힌 착용에는 최소 사용(Least Used)으로 시작하세요.",
+ "routingAdvancedGuideHint1": "이 전략은 새 콤보 기본값과 글로벌 계정 폴백 라우팅 모두에 동기화됩니다.",
+ "routingAdvancedGuideHint2": "예측 가능한 계정 우선순위에는 Fill First를, 계정 배치에는 Round Robin과 Sticky Limit을, 지연 시간 복원력에는 P2C를 사용하세요.",
"fillFirst": "먼저 채우기",
"fillFirstDesc": "우선순위에 따라 계정을 사용하세요",
"roundRobin": "라운드 로빈",
@@ -6425,14 +6425,14 @@
"randomDesc": "각 요청마다 무작위 계정",
"leastUsed": "최소 사용",
"leastUsedDesc": "최근에 가장 적게 사용한 계정 선택",
- "costOpt": "비용 선택",
+ "costOpt": "비용 최적화",
"costOptDesc": "가장 저렴한 계정을 선호합니다",
"resetAware": "재설정 인식 RR",
"resetAwareDesc": "남은 할당량이 양호하고 재설정이 가까운 계정을 선호합니다.",
"strictRandom": "Strict Random",
"strictRandomDesc": "Shuffle deck — uses each account once before reshuffling",
"stickyLimit": "고정 한도",
- "stickyLimitDesc": "전환 전 계정당 통화",
+ "stickyLimitDesc": "글로벌 계정 폴백이 Round Robin을 사용할 때 전환 전 계정당 호출 수",
"routingStrategyTitle": "라우팅 전략",
"routingStrategySubtitle": "9router 일치: 계정 라운드 로빈, 스티키 제한 및 콤보 로테이션",
"accountRoundRobin": "라운드 로빈",
@@ -6467,8 +6467,8 @@
"cheapModel": "저렴한 모델",
"detectionPatterns": "감지 패턴",
"newPattern": "예: \"제목 생성\"",
- "aliasPatternPlaceholder": "클로드-소네트-*",
- "aliasTargetPlaceholder": "클로드 소네트-4-20250514",
+ "aliasPatternPlaceholder": "claude-sonnet-*",
+ "aliasTargetPlaceholder": "claude-sonnet-4-20250514",
"pattern": "패턴",
"targetModel": "대상 모델",
"add": "+ 추가",
@@ -6478,7 +6478,7 @@
"authenticated": "인증됨",
"guest": "손님",
"loginTime": "로그인 시간",
- "sessionAge": "세션 연령",
+ "sessionAge": "세션 경과 시간",
"browser": "브라우저",
"clearLocalData": "로컬 데이터 지우기",
"logout": "로그아웃",
@@ -6487,7 +6487,7 @@
"systemActor": "시스템",
"ipAccessControl": "IP 접근 제어",
"ipAccessControlDesc": "특정 IP 주소 차단 또는 허용",
- "ipModeDisabled": "장애인",
+ "ipModeDisabled": "비활성화됨",
"ipModeBlacklist": "블랙리스트",
"ipModeWhitelist": "화이트리스트",
"ipModeWhitelistPriority": "WL 우선순위",
@@ -6504,16 +6504,16 @@
"failedLoadAuditLog": "감사 로그를 로드하지 못했습니다.",
"noAuditEvents": "감사 이벤트가 없습니다.",
"action": "액션",
- "actor": "배우",
+ "actor": "행위자",
"details": "세부정보",
"time": "시간",
"fallbackChainsTitle": "폴백 체인",
"fallbackChainsDesc": "모델별 공급자 대체 순서 정의",
"addChain": "+ 체인 추가",
"modelName": "모델명",
- "modelNamePlaceholder": "클로드 소네트-4-20250514",
+ "modelNamePlaceholder": "claude-sonnet-4-20250514",
"providersCommaSeparated": "공급자(쉼표로 구분, 우선순위)",
- "providersCommaSeparatedPlaceholder": "인류, openai, 쌍둥이자리",
+ "providersCommaSeparatedPlaceholder": "anthropic, openai, gemini",
"createChain": "체인 생성",
"noFallbackChains": "대체 체인 없음",
"noFallbackChainsDesc": "모델에 대한 공급자 대체 순서를 정의하는 체인을 만듭니다.",
@@ -6528,7 +6528,7 @@
"addAtLeastOneProvider": "제공업체를 하나 이상 추가하세요.",
"comboDefaultsTitle": "콤보 기본값",
"comboDefaultsGuideTitle": "콤보 기본값을 조정하는 방법",
- "comboDefaultsGuideHint1": "지연 시간이 짧은 흐름에서는 재시도 횟수를 낮게 유지하세요. 긴 세대 작업에 대해서만 시간 제한을 늘립니다.",
+ "comboDefaultsGuideHint1": "지연 시간이 짧은 흐름에서는 재시도 횟수를 낮게 유지하세요. 긴 생성 작업에 대해서만 시간 제한을 늘리세요.",
"comboDefaultsGuideHint2": "하나의 공급자가 전역 기본값과 다른 시간 초과/재시도 동작을 필요로 하는 경우 공급자 재정의를 사용합니다.",
"globalComboConfig": "글로벌 콤보 구성",
"moveUp": "위로 이동",
@@ -6541,11 +6541,11 @@
"priority": "우선순위",
"weighted": "가중",
"contextRelay": "Context Relay",
- "contextRelayDesc": "Hands off context between providers with automatic summarization",
+ "contextRelayDesc": "계정 로테이션이 발생할 때 자동 컨텍스트 핸드오프를 수행하는 우선순위 방식 라우팅",
"maxRetriesLabel": "최대 재시도 횟수",
"retryDelayLabel": "재시도 지연(ms)",
"timeoutLabel": "시간 초과(밀리초)",
- "healthCheck": "건강검진",
+ "healthCheck": "상태 확인",
"healthCheckDesc": "제공업체 가용성 사전 확인",
"trackMetrics": "추적 지표",
"trackMetricsDesc": "콤보별 요청 측정항목 기록",
@@ -6571,11 +6571,11 @@
"contextRelaySummaryModel": "Summary Model",
"contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.",
"providerProfiles": "공급자 프로필",
- "providerProfilesDesc": "OAuth(세션 기반) 및 API 키(측정) 공급자에 대한 별도의 복원력 설정입니다. OAuth 공급자는 낮은 비율 제한으로 인해 더 엄격한 기준을 적용합니다.",
+ "providerProfilesDesc": "OAuth(세션 기반) 및 API 키(종량제) 공급자에 대한 별도의 복원력 설정입니다. OAuth 공급자는 속도 제한이 낮아 더 엄격한 임계값이 적용됩니다.",
"oauthProviders": "OAuth 제공자",
"apiKeyProviders": "API 키 제공자",
"transientCooldown": "일시적인 쿨다운",
- "rateLimitCooldown": "비율 제한 쿨다운",
+ "rateLimitCooldown": "속도 제한 쿨다운",
"maxBackoffLevel": "최대 백오프 수준",
"cbThreshold": "CB 임계값",
"cbResetTime": "차단기 재설정 시간",
@@ -6583,16 +6583,16 @@
"rateLimitingDesc": "API 키 제공자는 안전한 기본값을 사용하여 자동으로 속도가 제한됩니다. 제한은 응답 헤더에서 학습되고 시간이 지남에 따라 조정됩니다.",
"defaultSafetyNet": "기본 안전망",
"rpm": "RPM",
- "minGap": "민갭",
+ "minGap": "최소 간격",
"maxConcurrent": "최대 동시",
"activeLimiters": "활성 리미터",
"noActiveLimiters": "아직 활성 속도 제한기가 없습니다.",
- "reservoir": "저수지",
- "running": "달리기",
+ "reservoir": "리저버",
+ "running": "실행 중",
"queued": "대기 중",
"circuitBreakers": "회로 차단기",
- "breakerStateClosed": "휴무",
- "breakerStateOpen": "열기",
+ "breakerStateClosed": "닫힘",
+ "breakerStateOpen": "열림",
"breakerStateHalfOpen": "반개방형",
"tripped": "{count}이(가) 작동되었습니다.",
"healthy": "{count} 건강함",
@@ -6623,14 +6623,14 @@
"importDatabase": "데이터베이스 가져오기",
"confirmDbImport": "데이터베이스 가져오기 확인",
"confirmDbImportDesc": "그러면 모든 현재 데이터가 {file}의 콘텐츠로 대체됩니다. 가져오기 전에 백업이 자동으로 생성됩니다.",
- "yesImport": "예, 수입합니다",
+ "yesImport": "예, 가져옵니다",
"lastBackup": "마지막 백업",
"noBackupYet": "아직 백업이 없습니다",
"backupNow": "지금 백업",
"backupRestore": "백업 및 복원",
"viewBackups": "백업 보기",
"hide": "숨기기",
- "backupRetentionDesc": "데이터베이스 스냅샷은 복원 전과 데이터가 변경될 때 15분마다 자동으로 생성됩니다. 보존: 스마트 순환을 통한 24시간 + 30일 백업.",
+ "backupRetentionDesc": "데이터베이스 스냅샷은 복원 전과 데이터 변경 시 15분마다 자동으로 생성됩니다. 보존: 스마트 순환으로 시간별 백업 24개 + 일별 백업 30개.",
"loadingBackups": "백업 로드 중...",
"noBackupsYet": "아직 사용할 수 있는 백업이 없습니다. 데이터가 변경되면 백업이 자동으로 생성됩니다.",
"backupsAvailable": "{count} 백업 사용 가능",
@@ -6649,7 +6649,7 @@
"minutesAgo": "{count}분 전",
"hoursAgo": "{count}시간 전",
"daysAgo": "{count}일 전",
- "backupReasonManual": "매뉴얼",
+ "backupReasonManual": "수동",
"backupReasonPreRestore": "사전 복원",
"connectionsCount": "{count, plural, one {# connection} other {# connections}}",
"noChangesSinceBackup": "마지막 백업 이후 변경 사항 없음",
@@ -6708,10 +6708,10 @@
"resetPricingConfirm": "{provider}의 모든 가격을 기본값으로 재설정하시겠습니까?",
"pricingDescInput": "입력: 모델에 전송된 토큰",
"pricingDescOutput": "출력: 생성된 토큰",
- "pricingDescCached": "캐시됨: 재사용된 입력(입력 속도의 ~50%)",
+ "pricingDescCached": "캐시됨: 재사용된 입력(입력 요율의 ~50%)",
"pricingDescReasoning": "추론: 사고 토큰(출력으로 대체)",
"pricingDescCacheWrite": "캐시 쓰기: 캐시 항목 생성(입력으로 대체)",
- "pricingDescFormula": "비용 = (입력 × 입력 속도) + (출력 × 출력 속도) + (캐시 × 캐시 속도) 백만 토큰당.",
+ "pricingDescFormula": "비용 = (입력 × 입력 요율) + (출력 × 출력 요율) + (캐시 × 캐시 요율), 백만 토큰당 기준입니다.",
"pricingSettingsTitle": "가격 설정",
"totalModels": "총 모델",
"active": "활성",
@@ -6722,9 +6722,9 @@
"tokenTypes": "토큰 유형",
"inputTokenDesc": "표준 프롬프트 토큰",
"outputTokenDesc": "완료/응답 토큰",
- "cachedTokenDesc": "캐시된 입력 토큰(일반적으로 입력 속도의 50%)",
- "reasoningTokenDesc": "특수 추론/사고 토큰(출력 속도로 대체)",
- "cacheCreationTokenDesc": "캐시 항목을 생성하는 데 사용되는 토큰(입력 속도로 대체)",
+ "cachedTokenDesc": "캐시된 입력 토큰(일반적으로 입력 요율의 50%)",
+ "reasoningTokenDesc": "특수 추론/사고 토큰(출력 요율로 폴백)",
+ "cacheCreationTokenDesc": "캐시 항목을 생성하는 데 사용되는 토큰(입력 요율로 폴백)",
"customPricingNote": "특정 모델의 기본 가격을 재정의할 수 있습니다. 맞춤 재정의는 자동 감지된 가격보다 우선 적용됩니다.",
"editPricing": "가격 편집",
"viewFullDetails": "전체 세부정보 보기",
@@ -6737,7 +6737,7 @@
"echoRequestedModelDesc": "When enabled, the response `model` field echoes the alias or combo name the client requested instead of the upstream model name. Fixes strict clients (e.g. Claude Desktop) that reject a response whose model does not match the request.",
"webSearchRouteTitle": "Web search routing",
"webSearchRouteDesc": "When a request includes a native web_search tool, route the whole request to this model instead of the default — useful for providers that don't implement Anthropic's web_search server tool. Leave blank to disable.",
- "webSearchRoutePlaceholder": "e.g. openrouter,anthropic/claude-3.5-sonnet",
+ "webSearchRoutePlaceholder": "모델 검색 또는 선택…",
"paidModelPatternWarning": "This pattern only matches paid models — enable paid models or adjust the pattern.",
"clearLkgpCache": "Clear LKGP Cache",
"lkgpCacheCleared": "LKGP cache cleared successfully",
@@ -6787,27 +6787,27 @@
"noWildcardAliasesConfigured": "No wildcard aliases configured.",
"overview": "Overview",
"unknownError": "Unknown Error",
- "pricingSourceLiteLLM": "Pricing Source Lite Llm",
- "clearSyncedPricingConfirm": "Clear Synced Pricing Confirm",
+ "pricingSourceLiteLLM": "LiteLLM (커뮤니티)",
+ "clearSyncedPricingConfirm": "동기화된 가격 데이터를 모두 삭제하시겠습니까? 대신 공급자 기본값이 사용됩니다.",
"clearSyncedPricingFailed": "Clear Synced Pricing Failed",
- "pricingSourceUser": "Pricing Source User",
- "pageDescription": "Page Description",
+ "pricingSourceUser": "사용자 재정의",
+ "pageDescription": "애플리케이션 설정, 모델 별칭, 가격 및 라우팅 규칙을 관리합니다",
"pricingSyncStatus": "Pricing Sync Status",
"whitelist": "Whitelist",
"syncDisabled": "Sync Disabled",
"pricingLoadFailed": "Pricing Load Failed",
- "pricingSyncDescription": "Pricing Sync Description",
+ "pricingSyncDescription": "정확한 비용 계산을 위해 외부 소스에서 모델 가격을 자동으로 동기화합니다",
"clearSyncedPricingSuccess": "Clear Synced Pricing Success",
"clearSyncedPricingFailedWithReason": "가격을 삭제하지 못했습니다: {reason}",
- "pricingSourceDefault": "Pricing Source Default",
+ "pricingSourceDefault": "기본 제공 기본값",
"pricingSyncSuccess": "Pricing Sync Success",
- "enableSyncError": "Enable Sync Error",
+ "enableSyncError": "가격 동기화를 전환하지 못했습니다",
"syncEnabled": "Sync Enabled",
"blacklist": "Blacklist",
- "pricingSourceModelsDev": "Pricing Source Models Dev",
+ "pricingSourceModelsDev": "Models.dev",
"syncedModels": "Synced Models",
"budget": "Budget",
- "pricingSyncTitle": "Pricing Sync Title",
+ "pricingSyncTitle": "가격 동기화",
"pricingResetFailedWithReason": "가격 재설정 실패: {reason}",
"tab": "Tab",
"pricingSavedProvider": "{provider}의 가격이 저장되었습니다.",
@@ -6844,14 +6844,14 @@
"compressionModeAggressive": "Aggressive",
"compressionModeAggressiveDesc": "Summarization + tool result compression + progressive aging for maximum savings",
"compressionModeUltra": "Ultra",
- "compressionModeUltraDesc": "Maximum compression with all techniques including semantic deduplication",
+ "compressionModeUltraDesc": "선택적 로컬 SLM 폴백이 포함된 휴리스틱 토큰 정리",
"compressionAggressiveConfig": "공격적인 엔진 구성",
"compressionAggressiveConfigDesc": "요약, 도구 압축 및 에이징 임계값을 미세 조정합니다.",
"compressionUltraConfig": "울트라 엔진 구성",
"compressionUltraConfigDesc": "경험적 정리, SLM 대체 및 메시지별 임계값을 미세 조정합니다.",
- "compressionUltraRate": "요금 유지",
+ "compressionUltraRate": "유지 비율",
"compressionUltraMinScore": "최소 점수 기준",
- "compressionUltraSlmFallback": "공격적으로 대체",
+ "compressionUltraSlmFallback": "Aggressive로 폴백",
"compressionUltraModelPath": "SLM 모델 경로",
"compressionUltraEngine": "울트라 티어",
"compressionUltraEngineHeuristic": "휴리스틱 (Tier-A, 기본값)",
@@ -6955,7 +6955,7 @@
"routingNeedlesSubstrings": "바늘(일치할 하위 문자열)",
"routingCaseSensitive": "대소문자 구분",
"routingPrefixes": "접두사",
- "routingMatch": "경기",
+ "routingMatch": "일치",
"routingReplacement": "교체",
"routingReplaceAllOccurrences": "모든 항목 바꾸기",
"routingPatternRegex": "패턴(정규식)",
@@ -6970,8 +6970,8 @@
"logsSettingsTitle": "로그 설정",
"detailedLogsLabel": "자세한 로그가 활성화되었습니다.",
"detailedLogsDesc": "자세한 요청/응답 로깅 활성화",
- "callLogPipelineLabel": "통화 기록 파이프라인",
- "callLogPipelineDesc": "통화 기록 처리 파이프라인 활성화",
+ "callLogPipelineLabel": "호출 로그 파이프라인",
+ "callLogPipelineDesc": "호출 로그 처리 파이프라인 활성화",
"maxDetailSizeLabel": "최대 세부정보 크기(KB)",
"maxDetailSizeDesc": "자세한 로그 항목의 최대 크기",
"ringBufferSizeLabel": "링 버퍼 크기",
@@ -6992,18 +6992,18 @@
"appearanceFaviconPreviewAlt": "파비콘 미리보기",
"oneproxyLastSync": "마지막 동기화",
"oneproxyAllProtocols": "모든 프로토콜",
- "oneproxyCountryCodePlaceholder": "국가 코드(예: 미국)",
+ "oneproxyCountryCodePlaceholder": "국가 코드(예: US)",
"oneproxyMinQualityPlaceholder": "최소 품질",
"oneproxyLoadingProxies": "프록시 로드 중...",
"oneproxyLastSyncLabel": "마지막 동기화:",
"oneproxyProxiesFetched": "가져온 프록시:",
"oneproxyConsecutiveFailures": "연속 실패:",
"oneproxyErrorLabel": "오류:",
- "oneproxyNever": "절대로",
+ "oneproxyNever": "없음",
"oneproxySyncStatusTitle": "동기화 상태",
"oneproxySuccess": "성공",
"oneproxyFailed": "실패",
- "routingAntigravitySignatureTitle": "반중력 서명 캐시 모드",
+ "routingAntigravitySignatureTitle": "Antigravity 서명 캐시 모드",
"routingAntigravitySignatureDesc": "OmniRoute가 저장된 Gemini 생각 서명만 재사용할지, 아니면 Antigravity 호환 도구 호출 흐름에서 검증된 클라이언트 제공 서명을 수락할지 제어합니다.",
"routingAntigravitySignatureEnabledLabel": "활성화됨",
"routingAntigravitySignatureEnabledDesc": "현재 동작입니다. 클라이언트가 제공한 서명을 무시하고 저장된 OmniRoute 흐름을 계속 사용합니다.",
@@ -7028,7 +7028,7 @@
"visionBridgeDesc": "이미지 요청을 텍스트 전용 모델로 라우팅하기 전에 자동 vision-to-text 폴백을 실행합니다.",
"visionBridgeEnabledLabel": "활성화됨",
"visionBridgeEnabledDesc": "이미지 부분을 추출된 텍스트로 대체하는 사전 호출 브릿지를 토글합니다.",
- "visionBridgeModel": "교량 모델",
+ "visionBridgeModel": "브릿지 모델",
"visionBridgeModelPlaceholder": "openai/gpt-4o-mini",
"visionBridgeModelHint": "비전을 지원하는 모든 OmniRoute 모델 ID를 여기에 사용할 수 있습니다.",
"visionBridgePrompt": "브리지 프롬프트",
@@ -7040,9 +7040,9 @@
"resilienceProviderBreakerTitle": "Circuit Breaker per Provider",
"resilienceFailureThreshold": "Failure threshold",
"resilienceDegradationThreshold": "Degradation threshold",
- "resilienceResetTimeout": "시간 초과 재설정",
+ "resilienceResetTimeout": "재설정 시간 제한",
"resilienceFailureThresholdLabel": "실패 임계값",
- "resilienceResetTimeoutLabel": "시간 초과 재설정",
+ "resilienceResetTimeoutLabel": "재설정 시간 제한",
"resilienceConnectionCooldownTitle": "Connection Cooldown",
"resilienceUseUpstreamRetryHintsLabel": "업스트림 재시도 힌트 사용",
"resilienceUseUpstream429BreakerLabel": "업스트림 429 힌트 사용(차단기)",
@@ -7092,14 +7092,14 @@
"retentionCompressionAnalytics": "Compression Analytics (days)",
"retentionMcpAudit": "MCP 감사(일)",
"retentionA2aEvents": "A2A 이벤트(일)",
- "retentionCallLogs": "통화 기록(일)",
+ "retentionCallLogs": "호출 로그(일)",
"retentionUsageHistory": "이용내역(일)",
"retentionMemoryEntries": "메모리 항목(일)",
"retentionXpAuditLog": "XP Audit Log (days)",
"saveRetentionSettings": "Save retention settings",
- "storageAutoVacuumMode": "자동 진공 모드",
- "storageScheduledVacuum": "예약된 진공",
- "storageVacuumHour": "진공 시간(0-23)",
+ "storageAutoVacuumMode": "자동 VACUUM 모드",
+ "storageScheduledVacuum": "예약된 VACUUM",
+ "storageVacuumHour": "VACUUM 시간(0-23)",
"storagePageSize": "페이지 크기(바이트)",
"storageOptimizationSettings": "Optimization Settings",
"storageJournalModeNone": "None",
@@ -7128,11 +7128,11 @@
"purgeDetailedLogs": "Purge Detailed Logs",
"storageDatabaseSize": "데이터베이스 크기",
"storagePageCount": "페이지 수",
- "storageFreelistCount": "자유 목록 수",
- "storageLastVacuum": "마지막 진공",
+ "storageFreelistCount": "프리리스트 수",
+ "storageLastVacuum": "마지막 VACUUM",
"storageLastOptimization": "마지막 최적화",
"storageIntegrityCheck": "무결성 검사",
- "storageIntegrityOk": "✓ 알았어",
+ "storageIntegrityOk": "✓ 정상",
"storageIntegrityError": "✗ 오류",
"storageUsageTokenBuffer": "사용 토큰 버퍼",
"storageUsageTokenBufferDesc": "Extra tokens added to reported usage to account for system prompt overhead.",
@@ -7142,7 +7142,7 @@
"redisLauncherDesc": "응답 캐시, 할당량 추적 및 속도 제한을 위해 Redis 7 컨테이너(Podman 또는 Docker)를 원클릭으로 실행합니다.",
"redisLauncherRefresh": "새로고침",
"redisLauncherStop": "중지",
- "redisLauncherLaunching": "실행 중...",
+ "redisLauncherLaunching": "시작 중...",
"redisLauncherLaunch": "Redis 실행",
"redisLauncherContainer": "컨테이너",
"redisLauncherRunning": "실행 중",
@@ -7152,12 +7152,12 @@
"compressionSettingsAutoTriggerMode": "자동 트리거 모드",
"compressionSettingsMcpDescriptionCompression": "MCP 설명 압축",
"mcpAccessibilityTitle": "MCP 접근성 출력",
- "compressionSettingsCavemanIntensity": "원시인의 강도",
- "compressionSettingsCavemanOutputMode": "원시인 출력 모드",
+ "compressionSettingsCavemanIntensity": "케이브맨 강도",
+ "compressionSettingsCavemanOutputMode": "케이브맨 출력 모드",
"compressionSettingsOutputStyles": "출력 스타일",
"compressionStylesTileTitle": "출력 스타일",
"compressionSettingsOutputIntensity": "출력 강도",
- "compressionSettingsAutoClarityBypass": "자동 선명도 우회",
+ "compressionSettingsAutoClarityBypass": "자동 명확성 우회",
"compressionEffectivePipeline": "유효 파이프라인:",
"compressionDerivedOff": "꺼짐",
"compressionDerivedRuns": "실행: {pipeline}",
@@ -7240,14 +7240,14 @@
"description": "한문 초간결 스타일 (중국어만 지원)."
}
},
- "resilienceWaitForCooldown": "쿨다운을 기다리세요",
+ "resilienceWaitForCooldown": "쿨다운 대기",
"resilienceEnableServerSideWait": "서버측 대기 활성화",
"resilienceMaximumRetries": "최대 재시도",
"resilienceMaximumWaitPerRetry": "재시도당 최대 대기 시간",
"memorySkillsSkillsmpMarketplace": "SkillsMP 마켓플레이스",
"memorySkillsFailedToSave": "저장하지 못했습니다.",
"memorySkillsApiKey": "API 키",
- "memorySkillsActiveSkillsProvider": "활성 기술 제공자",
+ "memorySkillsActiveSkillsProvider": "활성 스킬 공급자",
"cliproxyapiFallback": "CLIProxyAPI 대체",
"cliproxyapiEnableFallback": "CLIProxyAPI 대체 활성화",
"cliproxyapiUrl": "CLIProxyAPI URL",
@@ -7287,7 +7287,7 @@
"maxResponseTokensLabel": "최대 응답 토큰",
"maxResponseTokensDesc": "단일 응답에서 허용되는 최대 총 토큰 수입니다.",
"modelCooldownsTitle": "쿨다운 중인 모델",
- "modelCooldownsEmpty": "현재 대기 중인 모델이 없습니다.",
+ "modelCooldownsEmpty": "현재 쿨다운 중인 모델이 없습니다.",
"modelCooldownsDescription": "실패 후 일시적으로 격리된 모델입니다. 쿨다운이 만료되면 자동으로 복구됩니다.",
"modelCooldownsLoadFailed": "쿨다운을 로드하지 못했습니다.",
"modelCooldownReactivated": "모델이 다시 활성화되었습니다: {model}",
@@ -7305,7 +7305,7 @@
"responsesStateModePreserve": "Preserve",
"responsesStateHint": "연결에서 OpenAI Responses 스토리지를 명시적으로 활성화하지 않는 한 Auto는 previous_response_id를 제거합니다. VS Code Custom Endpoint와 같은 상태 비저장 클라이언트에는 Strip이 가장 안전하며, 이 경우 컨텍스트는 전체 기록을 전송하는 클라이언트에 의존합니다.",
"responsesStateSaveError": "응답 상태 설정을 업데이트하지 못했습니다.",
- "codexFastTierTitle": "코덱스 패스트 티어",
+ "codexFastTierTitle": "Codex Fast Tier",
"codexFastTierDesc": "OpenAI Codex 요청에 대해 service_tier=priority를 전역적으로 삽입합니다.",
"codexFastTierHint": "활성화되면 OmniRoute는 아직 계층을 지정하지 않은 연결에 대한 아웃바운드 Codex 요청에 service_tier=priority를 추가합니다. 우선 순위 계층에는 OpenAI Enterprise API 키 또는 ChatGPT 인증 Codex 경로가 필요합니다. 다른 키 유형은 OpenAI로부터 계층 관련 오류를 수신합니다. Codex 공급자 페이지의 연결별 설정이 우선적으로 적용됩니다.",
"codexFastTierSaveError": "Codex Fast Tier 설정을 업데이트하지 못했습니다.",
@@ -7321,9 +7321,9 @@
"codexFastTierModelsLabel": "Fast 티어 모델",
"codexFastTierModelsHint": "Fast Tier가 활성화된 경우 선택된 모델만 service_tier를 받습니다.",
"codexFastTierModelCheckbox": "{model}에 Fast Tier 활성화",
- "claudeFastModeTitle": "클로드 패스트 모드",
- "claudeFastModeDesc": "선택한 Claude 요청을 Anthropic Fast 모드(속도:\"빠름\")로 선택하세요.",
- "claudeFastModeHint": "Anthropic은 SDK 스타일 클라이언트에 대한 빠른 모드를 공식적으로 지원하지 않습니다. 활성화되면 OmniRoute는 X-CPA-Force-Fast-Mode 헤더를 전달하므로 쌍을 이루는 CLIProxyAPI 빌드가 진입점 스푸핑을 선택할 수 있습니다. 나열된 Opus 모델만 Anthropic의 클라이언트 측 확인에 의해 통제됩니다. 구독 등급, 최대 요금제 및 빠른 모드 크레딧 잔고는 여전히 서버 측에서 시행됩니다. Anthropic은 토글이 켜져 있어도 out_of_credits를 반환할 수 있습니다.",
+ "claudeFastModeTitle": "Claude Fast Mode",
+ "claudeFastModeDesc": "선택한 Claude 요청에 Anthropic Fast Mode(speed:\"fast\")를 적용합니다.",
+ "claudeFastModeHint": "Anthropic은 SDK 스타일 클라이언트에 대한 Fast Mode를 공식적으로 지원하지 않습니다. 활성화되면 OmniRoute는 X-CPA-Force-Fast-Mode 헤더를 전달하여 쌍을 이루는 CLIProxyAPI 빌드가 진입점 스푸핑을 선택할 수 있도록 합니다. 나열된 Opus 모델만 Anthropic의 클라이언트 측 확인에 의해 통제됩니다. 구독 등급, Max 요금제, Fast Mode 크레딧 잔고는 여전히 서버 측에서 시행되며, 토글이 켜져 있어도 Anthropic이 out_of_credits를 반환할 수 있습니다.",
"claudeFastModeModelsLabel": "모델에 적용됨({count})",
"claudeFastModeModelCheckbox": "{model}에 대한 빠른 모드 활성화",
"claudeFastModeSaveError": "Claude 빠른 모드 설정을 업데이트하지 못했습니다.",
@@ -7393,11 +7393,11 @@
"triggerLabel": "트리거",
"effectLabel": "효과",
"statusEnabled": "활성화됨",
- "statusDisabled": "장애인",
+ "statusDisabled": "비활성화됨",
"resilienceRequestQueueScope": "요청당 대기열",
- "resilienceRequestQueueTrigger": "상류로 보내기 전에",
- "resilienceRequestQueueEffect": "요청을 대기열에 추가하고, 동시성을 제한하고, 통화 공간을 확보합니다.",
- "resilienceRequestQueueDesc": "이 레이어는 대기열 및 간격만 제어합니다. 쿨타임이나 개방형 회로 차단기는 저장되지 않습니다.",
+ "resilienceRequestQueueTrigger": "업스트림으로 보내기 전에",
+ "resilienceRequestQueueEffect": "요청을 대기열에 추가하고, 동시성을 제한하며, 호출 간격을 둡니다.",
+ "resilienceRequestQueueDesc": "이 레이어는 대기열 처리와 간격 조절만 제어합니다. 쿨다운을 저장하거나 회로 차단기를 열지는 않습니다.",
"resilienceAutoEnableApiKeyProvidersDesc": "활성 API 키 연결에 대해 기본적으로 대기열 보호를 활성화합니다.",
"resilienceMaxQueueWait": "최대 대기열 대기 시간",
"resilienceConnectionCooldownScope": "개별 연결",
@@ -7413,7 +7413,7 @@
"resilienceProviderBreakerEffect": "재설정 시간이 만료될 때까지 해당 공급자를 일시적으로 차단합니다.",
"resilienceProviderBreakerDesc": "라이브 차단기 상태는 상태 페이지에만 나타납니다. 연결 범위의 429 속도 제한은 연결 쿨다운 상태로 유지되며 공급자 차단기를 트립하지 않습니다.",
"resilienceResetTime": "재설정 시간",
- "resilienceWaitForCooldownTitle": "쿨다운을 기다리세요",
+ "resilienceWaitForCooldownTitle": "쿨다운 대기",
"resilienceWaitForCooldownScope": "현재 클라이언트 요청",
"resilienceWaitForCooldownTrigger": "모든 후보 연결이 이미 냉각되고 있는 경우",
"resilienceWaitForCooldownEffect": "서버에서 기다렸다가 첫 번째 재사용 대기시간이 만료되면 다시 시도합니다.",
@@ -7445,7 +7445,7 @@
"sessionAffinityDesc": "모든 제공자에 대해 지정된 초 동안 하나의 대화를 동일한 계정으로 유지합니다. 0으로 설정하면 비활성화됩니다.",
"sessionAffinityTtl": "어피니티 TTL(초)",
"resetAwareQuotaCacheTitle": "재설정 인식 할당량 캐시",
- "resetAwareQuotaCacheDesc": "재설정 인식 주문에 대해서만 할당량 원격 분석을 캐시합니다. 실행 전 할당량은 여전히 요청을 보호합니다. 0/0은 계속 실시간 가져오기를 수행합니다.",
+ "resetAwareQuotaCacheDesc": "재설정 인식 정렬에만 할당량 원격 분석을 캐시합니다. 할당량 프리플라이트는 여전히 요청을 보호합니다. 0/0은 실시간 가져오기를 유지합니다.",
"resetAwareQuotaCacheTtl": "새로운 TTL(초)",
"resetAwareQuotaCacheMaxStale": "최대 오래된 시간(초)",
"qdrantCleanupSuccess": "확인: {count} 포인트 제거됨(보존 기간: {days}일)",
@@ -7545,7 +7545,7 @@
"deduplicateThreshold": "중복 제거 임계값",
"customFilters": "맞춤 필터",
"detectedType": "감지된 유형",
- "confidence": "자신감",
+ "confidence": "신뢰도",
"beforeAfter": "전/후",
"trustProjectFilters": "프로젝트 필터 신뢰",
"rawOutputRetention": "원시 출력 보존",
@@ -7556,7 +7556,7 @@
"filterTesting": "Filter Testing",
"pasteOutput": "Paste tool output to test filtering...",
"presetHigh": "공격적",
- "presetLow": "빛",
+ "presetLow": "라이트",
"presetMaxChars": "최대 출력 문자",
"presetMaxLines": "최대 출력 라인",
"presetMedium": "표준",
@@ -7564,7 +7564,7 @@
"result": "Result",
"previewEmpty": "Run a sample to preview RTK output.",
"detected": "Detected",
- "masterSwitchOffAlert": "Token Saver 마스터 스위치가 OFF 상태입니다 — Endpoint 페이지에서 켤 때까지 이 설정은 요청에 영향을 주지 않습니다.",
+ "masterSwitchOffAlert": "Token Saver 마스터 스위치가 OFF 상태입니다 — 압축 설정에서 켤 때까지 이 설정은 요청에 영향을 주지 않습니다.",
"tokensFiltered": "Tokens filtered",
"filtersActive": "Filters active",
"requests": "Requests",
@@ -8030,7 +8030,7 @@
"labelCompressionRate": "압축 강도",
"labelMaxTokens": "메시지당 대상 토큰",
"labelMinLength": "최소 메시지 길이",
- "labelMinSavings": "저장할 최소 토큰",
+ "labelMinSavings": "절약할 최소 토큰 수",
"enabled": "Enabled",
"autoDetect": "Auto-detect language",
"rulesCount": "{count} rules",
@@ -8040,7 +8040,7 @@
"noAnalytics": "No compression analytics yet.",
"masterDisabledWarning": "Token Saver 마스터 스위치가 꺼져 있습니다. 압축 설정에서 켜거나 여기에서 변경하기 전까지는 이 설정이 요청에 영향을 미치지 않습니다.",
"outputMode": "출력 모드",
- "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.",
+ "outputModeDesc": "압축된 출력이 표시되는 방식을 제어합니다.",
"outputModeTitle": "Output Mode",
"quickSettings": "빠른 설정",
"quickSettingsDesc": "시작하기 위한 기본 압축 설정",
@@ -8053,7 +8053,7 @@
"tooltipCompressionRate": "0.0 = 없음, 1.0 = 최대. 0.5 = 균형.",
"tooltipMaxTokens": "압축 후 대상 토큰 수입니다. 낮음 = 더 공격적입니다.",
"tooltipMinLength": "이보다 짧은 메시지는 압축되지 않습니다. 낮음 = 더 많은 압축.",
- "tooltipMinSavings": "최소한 이만큼의 토큰을 저장하는 경우에만 압축하세요.",
+ "tooltipMinSavings": "최소한 이만큼의 토큰을 절약할 수 있는 경우에만 압축합니다.",
"ultraSettings": "울트라 설정",
"ultraSettingsDesc": "SLM 기반 의미 압축",
"preview": {
@@ -8064,15 +8064,15 @@
},
"translator": {
"title": "번역기",
- "metaTitle": "번역가 놀이터 | 옴니루트",
+ "metaTitle": "번역기 플레이그라운드 | OmniRoute",
"metaDescription": "공급자 간의 API 형식 변환을 디버그, 테스트 및 시각화합니다.",
- "playgroundTitle": "번역가 놀이터",
- "playground": "놀이터",
+ "playgroundTitle": "번역기 플레이그라운드",
+ "playground": "플레이그라운드",
"realtime": "실시간 번역 활동",
"chatTester": "채팅 테스터",
"testBench": "테스트 벤치",
"liveMonitor": "라이브 모니터",
- "modeDescriptionPlayground": "API 요청 본문을 붙여넣고 OmniRoute가 이를 공급자 형식(OpenAI ← Claude ← Gemini ← Responses API) 간에 어떻게 변환하는지 확인하세요.",
+ "modeDescriptionPlayground": "API 요청 본문을 붙여넣고 OmniRoute가 이를 공급자 형식(OpenAI ↔ Claude ↔ Gemini ↔ Responses API) 간에 어떻게 변환하는지 확인하세요.",
"modeDescriptionChatTester": "OmniRoute를 통해 실제 채팅 요청을 보내고 전체 왕복(입력, 번역된 요청, 공급자 응답 및 번역된 출력)을 검사합니다.",
"modeDescriptionTestBench": "사전 정의된 시나리오를 실행하고 공급자와 모델 간의 호환성을 비교하세요.",
"modeDescriptionLiveMonitor": "요청이 OmniRoute를 통해 전달됨에 따라 번역 이벤트를 실시간으로 감시하세요.",
@@ -8099,27 +8099,27 @@
"externalApiCalls": "외부 API 호출",
"ideCliIntegrations": "IDE/CLI 통합",
"inMemoryNote": "참고: 이벤트는 메모리에 저장되며 서버가 다시 시작되면 재설정됩니다.",
- "ok": "알았어",
+ "ok": "정상",
"errorShort": "오류",
"formatConverter": "형식 변환기",
- "formatConverterDescription": "JSON 요청 본문을 붙여넣거나 입력하세요. 변환기는 소스 형식을 자동으로 감지하여 대상 형식으로 변환합니다. 이를 사용하여 OmniRoute가 형식(OpenAI ← Claude ⇔ Gemini ⇔ Responses API) 간 요청을 변환하는 방법을 디버깅합니다.",
- "translationPathHubSpoke": "{source} → OpenAI(중급) → {target}",
+ "formatConverterDescription": "JSON 요청 본문을 붙여넣거나 입력하세요. 변환기는 소스 형식을 자동으로 감지하여 대상 형식으로 변환합니다. 이를 사용하여 OmniRoute가 형식(OpenAI ↔ Claude ↔ Gemini ↔ Responses API) 간 요청을 변환하는 방법을 디버깅할 수 있습니다.",
+ "translationPathHubSpoke": "{source} → OpenAI(중간 단계) → {target}",
"translationPathDirect": "{source} → {target} (직접 번역기)",
"translationPathPassthrough": "동일한 형식 - 번역이 필요하지 않습니다.",
- "openaiIntermediatePanel": "OpenAI 중급",
+ "openaiIntermediatePanel": "OpenAI 중간 형식",
"autoFeaturesTitle": "OmniRoute가 자동으로 수행하는 작업",
"autoFeaturesCount": "8가지 기능",
"featureReasoningCache": "추론 캐시",
- "featureReasoningCacheDesc": "클라이언트가 대화 기록에서 이를 생략한 경우 사고 모드 모델(DeepSeek V4, Kimi K2, Qwen)에 대해 캐시된 Reasoning_content를 다시 주입합니다.",
+ "featureReasoningCacheDesc": "클라이언트가 대화 기록에서 생략한 경우 사고 모드 모델(DeepSeek V4, Kimi K2, Qwen)에 대해 캐시된 reasoning_content를 다시 주입합니다.",
"featureSchemaCoercion": "스키마 강제",
- "featureSchemaCoercionDesc": "손상된 도구 스키마를 수정합니다. 누락된 추가 속성을 추가하고, 긴 설명을 삭제하고, 중첩된 개체를 정규화합니다.",
+ "featureSchemaCoercionDesc": "손상된 도구 스키마를 수정합니다: 누락된 additionalProperties를 추가하고, 긴 설명을 정리하며, 중첩된 객체를 정규화합니다.",
"featureRoleNormalization": "역할 정규화",
- "featureRoleNormalizationDesc": "OpenAI가 아닌 대상을 위한 지도 개발자→시스템. 시스템 역할을 지원하지 않는 모델의 경우 시스템→사용자를 매핑합니다.",
+ "featureRoleNormalizationDesc": "OpenAI가 아닌 대상에는 developer→system으로 매핑합니다. 시스템 역할을 지원하지 않는 모델에는 system→user로 매핑합니다.",
"featureToolCallIds": "도구 호출 ID 정규화",
"featureToolCallIdsDesc": "누락된 경우 고유한 tool_call ID를 생성합니다. Mistral과 같은 공급자의 경우 9자 형식으로 정규화됩니다.",
"featureMissingToolResponse": "도구 응답 주입",
"featureMissingToolResponseDesc": "클라이언트가 해당 응답 없이 tool_call을 보낼 때 빈 tool_result 메시지를 삽입합니다.",
- "featureThinkingBudget": "생각하는 예산",
+ "featureThinkingBudget": "사고 예산",
"featureThinkingBudgetDesc": "사고 구성을 자동으로 관리합니다. 마지막 메시지가 사용자로부터 온 것이 아닐 때 사고 매개변수를 제거합니다.",
"featureDirectPaths": "직접 번역 경로",
"featureDirectPathsDesc": "일부 형식 쌍(Claude→Gemini)에는 OpenAI 허브를 우회하는 직접 변환기가 있어 보다 정확한 출력을 생성합니다.",
@@ -8129,7 +8129,7 @@
"output": "출력",
"auto": "자동",
"swapFormats": "형식 교환",
- "translateAction": "번역하다",
+ "translateAction": "번역",
"clear": "지우기",
"inputPlaceholder": "여기에 요청 본문을 붙여넣거나 아래에서 템플릿을 선택하세요...",
"exampleTemplates": "예제 템플릿",
@@ -8144,19 +8144,19 @@
"reRun": "재실행",
"running": "실행중...",
"passed": "합격",
- "failed": "실패했다",
+ "failed": "실패",
"passedIconLabel": "✅ 합격",
- "chunks": "덩어리",
+ "chunks": "청크",
"scenarioSimpleChat": "간단한 채팅",
"scenarioToolCalling": "도구 호출",
- "scenarioMultiTurn": "다회전",
+ "scenarioMultiTurn": "멀티턴",
"scenarioThinking": "생각",
"scenarioSystemPrompt": "시스템 프롬프트",
"scenarioStreaming": "스트리밍",
"templateNames": {
"simple-chat": "간단한 채팅",
"tool-calling": "도구 호출",
- "multi-turn": "다회전",
+ "multi-turn": "멀티턴",
"thinking": "생각",
"system-prompt": "시스템 프롬프트",
"streaming": "스트리밍",
@@ -8164,9 +8164,9 @@
"schema-coercion": "스키마 강제"
},
"templateDescriptions": {
- "simple-chat": "기본 문자 메시지",
+ "simple-chat": "기본 텍스트 메시지",
"tool-calling": "함수/도구 호출",
- "multi-turn": "역사와의 대화",
+ "multi-turn": "기록이 포함된 대화",
"thinking": "확장된 사고/추론",
"system-prompt": "복잡한 시스템 지침",
"streaming": "SSE 스트리밍 요청",
@@ -8186,7 +8186,7 @@
"multiTurn": {
"system": "당신은 코딩 도우미입니다.",
"userInitial": "Python에서 배열을 정렬하는 함수를 작성합니다.",
- "assistantExample": "다음은 간단한 정렬 기능입니다. ``파이썬\ndef sort_array(arr): 반환 정렬(arr)\n````",
+ "assistantExample": "다음은 간단한 정렬 함수입니다: ```python\ndef sort_array(arr): return sorted(arr)\n```",
"userFollowUp": "이제 내림차순으로 정렬해 보겠습니다."
},
"thinking": {
@@ -8211,7 +8211,7 @@
}
},
"openaiCompatibleLabel": "OpenAI 호환",
- "anthropicCompatibleLabel": "인류 친화적",
+ "anthropicCompatibleLabel": "Anthropic 호환",
"noTemplateForFormat": "이 형식에 대한 템플릿이 없습니다.",
"translationFailed": "번역 실패: {error}",
"pipelineDebugger": "파이프라인 디버거",
@@ -8243,7 +8243,7 @@
"clientRequestDescription": "클라이언트가 보내는 요청 본문",
"formatDetected": "형식이 감지되었습니다.",
"formatDetectedDescription": "OmniRoute는 요청 구조에서 API 형식을 자동 감지합니다.",
- "openaiIntermediate": "OpenAI 중급",
+ "openaiIntermediate": "OpenAI 중간 형식",
"openaiIntermediateDescription": "모든 형식은 먼저 OpenAI 형식(범용 브리지)으로 정규화됩니다.",
"providerFormat": "공급자 형식",
"providerFormatDescription": "OpenAI 형식은 공급자의 기본 형식으로 변환됩니다.",
@@ -8262,15 +8262,15 @@
"eventSourceMainPipeline": "• 기본 요청 파이프라인(CLI/IDE/API 트래픽)",
"liveMonitorDescriptionPrefix": "OmniRoute를 통한 API 호출 흐름으로 번역 이벤트를 표시합니다. 이벤트는 메모리 내 버퍼에서 발생합니다(다시 시작 시 재설정). 사용",
"liveMonitorDescriptionSuffix": ", 또는 외부 API 호출을 통해 이벤트를 생성합니다.",
- "streamTransformer": "스트림 변압기",
+ "streamTransformer": "스트림 변환기",
"modeDescriptionStreamTransformer": "응답 변환기를 통해 채팅 완료 SSE 스트림을 실행합니다.",
"streamTransformerTitle": "응답 스트림 변환기",
"streamTransformerDescription": "채팅 완료 SSE 스트림을 붙여넣고 OmniRoute의 응답 변환기를 통해 실행한 후 클라이언트에 연결하기 전에 내보낸 response.* 이벤트를 검사합니다.",
"loadTextSample": "텍스트 샘플 로드",
"loadToolSample": "도구 호출 샘플 로드",
- "transformToResponses": "응답으로 변환",
+ "transformToResponses": "Responses로 변환",
"rawChatSseInput": "원시 채팅 완료 SSE",
- "transformedResponsesSse": "변환된 응답 API SSE",
+ "transformedResponsesSse": "변환된 Responses API SSE",
"noResultsYet": "아직 결과가 없습니다",
"transformedEvents": "변형된 이벤트",
"uniqueEventTypes": "고유한 이벤트 유형",
@@ -8372,7 +8372,7 @@
"streamTransformFailed": "스트림 변환 실패"
},
"usage": {
- "title": "사용법",
+ "title": "사용량",
"loggerTab": "로거",
"proxyTab": "프록시",
"budgetManagement": "예산 관리",
@@ -8391,7 +8391,7 @@
"dailyLimitPlaceholder": "예를 들어 5.00",
"monthlyLimitPlaceholder": "예를 들어 50.00",
"warningThresholdPlaceholder": "80",
- "saveLimits": "저장 한도",
+ "saveLimits": "한도 저장",
"budgetOk": "예산 양호 — {remaining} 남음",
"budgetExceeded": "예산 초과 - 요청이 차단될 수 있음",
"totalRequests": "총 요청수",
@@ -8404,12 +8404,12 @@
"systemHealth": "시스템 상태",
"entries": "항목",
"activeCount": "{count} 활성",
- "openCircuitBreakersDetected": "개방형 회로 차단기가 감지되었습니다.",
+ "openCircuitBreakersDetected": "OPEN 상태의 회로 차단기가 감지되었습니다.",
"hitRate": "적중률",
- "hitsMisses": "안타/실패",
+ "hitsMisses": "적중 / 미적중",
"circuitBreakers": "회로 차단기",
"lockedIPs": "잠긴 IP",
- "lockoutsAutoRefreshHint": "모델별 비율 제한 잠금 • 10초 자동 새로고침",
+ "lockoutsAutoRefreshHint": "모델별 속도 제한 잠금 • 10초 자동 새로고침",
"lockedCount": "{count, plural, one {# locked} other {# locked}}",
"timeLeft": "{time} 남음",
"howItWorks": "작동 방식",
@@ -8418,7 +8418,7 @@
"defineStepDescription": "포함, 정규식 또는 정확한 일치와 같은 전략을 사용하여 입력 프롬프트 및 예상 출력 기준으로 테스트 사례를 만듭니다.",
"run": "실행",
"runStepDescription": "OmniRoute를 통해 LLM 엔드포인트에 대해 테스트 케이스를 실행하세요. 각 사례는 실제 API 요청으로 전송됩니다.",
- "evaluate": "평가하다",
+ "evaluate": "평가",
"evaluateStepDescription": "응답은 예상 기준과 비교됩니다. 지연 시간 측정항목과 자세한 피드백을 통해 각 사례의 통과/실패를 확인하세요.",
"evalsStrategyContainsLabel": "포함",
"evalsStrategyExactLabel": "정확히 일치",
@@ -8433,11 +8433,11 @@
"historyColumnPassRate": "통과율",
"historyColumnAvgLatencyMs": "평균 지연 시간",
"historyColumnCreatedAt": "실행됨",
- "evalSuites": "평가 제품군",
- "evalSuitesHint": "제품군을 클릭하여 테스트 사례를 본 다음 실행하여 LLM 엔드포인트를 평가하세요.",
+ "evalSuites": "평가 스위트",
+ "evalSuitesHint": "스위트를 클릭하여 테스트 케이스를 확인한 다음 실행하여 LLM 엔드포인트를 평가하세요.",
"evalsLoading": "평가 모음 로드 중...",
- "noEvalSuitesFound": "평가 제품군을 찾을 수 없습니다.",
- "noEvalSuitesDescription": "평가 제품군은 API 또는 코드를 통해 정의할 수 있습니다. 포함, 정규식, 정확한 일치 및 사용자 정의 기능과 같은 전략을 사용하여 예상 결과에 대해 모델 출력을 테스트합니다.",
+ "noEvalSuitesFound": "평가 스위트를 찾을 수 없습니다.",
+ "noEvalSuitesDescription": "평가 스위트는 API 또는 코드를 통해 정의할 수 있습니다. 포함, 정규식, 정확히 일치, 사용자 정의 함수와 같은 전략을 사용하여 예상 결과에 대해 모델 출력을 테스트합니다.",
"columnCase": "케이스",
"columnStatus": "상태",
"columnLatency": "대기 시간",
@@ -8452,7 +8452,7 @@
"statsStrategiesCount": "{count} 전략",
"evaluationStrategies": "평가 전략",
"modelsUnderTest": "테스트 중인 모델",
- "searchSuitesPlaceholder": "제품군 검색...",
+ "searchSuitesPlaceholder": "스위트 검색...",
"passSuffix": "통과",
"casesCount": "{count, plural, one {# case} other {# cases}}",
"runEval": "평가 실행",
@@ -8460,8 +8460,8 @@
"runAllRunning": "모두 실행 중...",
"runAllProgress": "{current}/{total} 실행: {name}",
"runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}",
- "runAllCompleted": "{suites} 제품군 실행 — {passed} 통과, {failed} 실패",
- "runAllCompletedWithFailures": "{completed} 제품군을 실행했습니다. {failedSuites}을(를) 완료하지 못했습니다.",
+ "runAllCompleted": "{suites}개 스위트 실행 — {passed} 통과, {failed} 실패",
+ "runAllCompletedWithFailures": "{completed}개 스위트를 실행했습니다. {failedSuites}개는 완료하지 못했습니다.",
"runningProgress": "{current}/{total} 실행 중...",
"passRate": "합격률",
"summaryBreakdown": "{passed} 통과 · {failed} 실패 · 총 {total}",
@@ -8479,13 +8479,13 @@
"testCasesCount": "테스트 케이스({count})",
"noTestCasesDefined": "정의된 테스트 사례가 없습니다.",
"runEvalHint": "LLM 엔드포인트에 대해 모든 사례를 실행하려면 \"평가 실행\"을 클릭하세요. 각 테스트는 OmniRoute를 통해 실제 요청을 보냅니다.",
- "notifyNoTestCases": "이 제품군에 대해 정의된 테스트 사례가 없습니다.",
+ "notifyNoTestCases": "이 스위트에 정의된 테스트 케이스가 없습니다.",
"notifyAllCasesPassed": "{total} 건 모두 통과됨 ✅",
"notifySomeCasesFailed": "{passed}/{total} 통과, {failed} 실패",
"notifyEvalRunFailed": "평가 실행 실패",
"notifyEvalTitle": "평가: {name}",
"modelEvals": "모델 평가",
- "evalsHeroDescription": "사전 정의된 평가 제품군을 실행하여 LLM 엔드포인트를 테스트하고 검증하세요. 각 제품군에는 OmniRoute를 통해 실제 프롬프트를 보내고 예상 기준과 응답을 비교하는 테스트 사례가 포함되어 있어 회귀를 감지하고, 모델을 비교하고, 공급자 전체의 응답 품질을 보장하는 데 도움이 됩니다.",
+ "evalsHeroDescription": "사전 정의된 평가 스위트를 실행하여 LLM 엔드포인트를 테스트하고 검증하세요. 각 스위트에는 OmniRoute를 통해 실제 프롬프트를 보내고 응답을 예상 기준과 비교하는 테스트 케이스가 포함되어 있어 회귀를 감지하고, 모델을 비교하고, 공급자 전반의 응답 품질을 보장하는 데 도움이 됩니다.",
"qualityValidation": "품질 검증",
"modelComparison": "모델 비교",
"regressionDetection": "회귀 감지",
@@ -8497,8 +8497,8 @@
"sessionsHint": "세션은 프록시를 통한 요청 흐름으로 나타납니다.",
"sessionsTrackedHint": "요청 핑거프린팅을 통해 추적됨 • 자동 새로고침 5초",
"session": "세션",
- "age": "나이",
- "requests": "요청사항",
+ "age": "경과 시간",
+ "requests": "요청",
"connection": "연결",
"durationMillisecondsShort": "{value}ms",
"durationSecondsShort": "{value}s",
@@ -8524,14 +8524,14 @@
"modelQuotas": "모델 할당량",
"lastUsed": "Last Refreshed",
"actions": "작업",
- "refreshQuota": "새로고침 할당량",
+ "refreshQuota": "할당량 새로고침",
"today": "오늘",
"tomorrow": "내일",
"dayTimeFormat": "{day}, {time}",
- "inDuration": "{duration}에서",
+ "inDuration": "{duration} 후",
"notApplicable": "해당 없음",
- "rawPlanWithValue": "기본 계획: {plan}",
- "noPlanFromProvider": "공급자의 계획 없음",
+ "rawPlanWithValue": "원시 플랜: {plan}",
+ "noPlanFromProvider": "공급자에서 제공한 플랜 없음",
"tokenExpiresIn": "토큰이 {time} 후에 만료됨",
"tokenExpired": "토큰 만료됨",
"noQuotaData": "할당량 데이터 없음",
@@ -8592,15 +8592,15 @@
"resetCreditRedeemFailed": "재설정 크레딧을 사용하지 못했습니다",
"suiteBuilderSaveFailed": "Failed to save suite",
"clone": "클론",
- "exportSuite": "수출",
+ "exportSuite": "내보내기",
"importSuite": "가져오기",
- "suiteExported": "내보낸 제품군",
- "suiteExportFailed": "제품군을 내보내지 못했습니다.",
- "suiteImportReady": "검토를 위해 도구 모음 가져오기 로드됨",
- "suiteImportFailed": "제품군을 가져오지 못했습니다.",
+ "suiteExported": "스위트를 내보냈습니다.",
+ "suiteExportFailed": "스위트를 내보내지 못했습니다.",
+ "suiteImportReady": "검토를 위해 스위트 가져오기가 로드되었습니다.",
+ "suiteImportFailed": "스위트를 가져오지 못했습니다.",
"suiteImportInvalid": "잘못된 평가 모음 JSON",
"suiteBuilderCloneSuffix": "복사",
- "suiteBuilderImportedSuite": "수입 제품군",
+ "suiteBuilderImportedSuite": "가져온 스위트",
"scorecardTitle": "Scorecard",
"evalApiKey": "API Key",
"scorecardPassRate": "Pass Rate",
@@ -8643,10 +8643,10 @@
"recentRunsTitle": "Recent Runs",
"suiteBuilderCaseSystemPromptLabel": "System Prompt",
"suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci",
- "suiteBuilderCaseExpectedPlaceholderContains": "예를 들어 데프 피보나치",
+ "suiteBuilderCaseExpectedPlaceholderContains": "예: def fibonacci",
"suiteBuilderCaseExpectedPlaceholderExact": "예상되는 정확한 응답을 붙여넣으세요.",
"suiteBuilderCaseExpectedPlaceholderRegex": "예를 들어 ^\\\\s*\\\\{.*\\\\}\\\\s*$",
- "suiteBuilderCaseExpectedHintRegex": "슬래시를 줄 바꿈하지 않고 JavaScript 정규 표현식을 사용하십시오.",
+ "suiteBuilderCaseExpectedHintRegex": "양쪽을 슬래시로 감싸지 않은 JavaScript 정규 표현식을 사용하세요.",
"suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite",
"suiteBuilderAddCase": "Add Case",
"cancel": "Cancel",
@@ -8660,7 +8660,7 @@
"resultErrorLabel": "Error",
"suiteBuilderBuiltInBadge": "Built-in",
"suiteBuilderCaseCardTitle": "Test Case",
- "suiteBuilderDuplicateCase": "중복",
+ "suiteBuilderDuplicateCase": "복제",
"weeklyLimitPlaceholder": "e.g. 50.00",
"suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.",
"notifyEvalRunFailedWithReason": "Evaluation failed: {reason}",
@@ -8698,7 +8698,7 @@
"targetComparisonHint": "Side-by-side comparison of evaluation results between targets.",
"compareCompletedWithScore": "Comparison completed — {score}% pass rate",
"staleQuotaTooltip": "Last refresh failed — showing cached data",
- "quotaThresholdLabel": "분 남음",
+ "quotaThresholdLabel": "최소 잔여",
"quotaCutoffsColumnHelp": "남은 할당량이 이 비율 이하로 떨어지면 요청을 중지합니다.",
"quotaCutoffsButtonDefault": "기본값",
"quotaCutoffsButtonHelp": "이 계정의 최소 남은 할당량 기준을 편집하세요.",
@@ -8708,17 +8708,17 @@
"accountActivated": "계정이 활성화되었습니다",
"accountDeactivated": "계정이 비활성화되었습니다",
"toggleActiveFailed": "계정 상태를 업데이트하지 못했습니다",
- "quotaCutoffsTitle": "{name}({provider})에 대한 할당량 마감",
+ "quotaCutoffsTitle": "{name}({provider})의 할당량 컷오프",
"quotaCutoffsExplainer": "각 할당량 창에 대해 이 계정이 선택되지 않는 최소 남은 할당량 비율을 재정의합니다. 공급자 기본값을 상속하려면 비워 두세요.",
- "quotaCutoffsDefaultHint": "남은 기본 분: {default}%",
+ "quotaCutoffsDefaultHint": "기본 최소 잔여: {default}%",
"quotaCutoffsResetAll": "모두 재설정",
"quotaCutoffsNoWindows": "이 계정에는 아직 할당량 기간이 없습니다.",
"quotaThresholdInvalid": "0부터 100까지의 정수를 입력하세요.",
"budgetKpiToday": "오늘",
"budgetKpiThisMonth": "이번 달",
- "budgetKpiProjEom": "EOM 프로젝트",
+ "budgetKpiProjEom": "월말 예상",
"budgetKpiBlocked": "차단됨",
- "budgetKpiAtRisk": "위험에 처하다",
+ "budgetKpiAtRisk": "위험",
"budgetKpiActiveKeys": "활성 키",
"budgetPageTitle": "예산",
"budgetPageDescription": "각 API 키에 대한 일일, 주간 및 월간 지출 한도를 설정합니다.",
@@ -8752,20 +8752,20 @@
"budgetColumnToday": "오늘",
"budgetColumnMonth": "이번 달",
"budgetColumnStatus": "상태",
- "budgetSearchKeysPlaceholder": "검색 키...",
+ "budgetSearchKeysPlaceholder": "키 검색...",
"budgetSortPctUsed": "정렬: 사용률 ↓",
"budgetSortTodayDollar": "정렬: 오늘 $ ↓",
"budgetSortMonthDollar": "정렬: 월 $ ↓",
"budgetSortNameAZ": "정렬: 이름(A~Z)",
- "budgetColDailyLim": "데일리림",
- "budgetColMonthlyLim": "월간 리미트",
+ "budgetColDailyLim": "일일 한도",
+ "budgetColMonthlyLim": "월간 한도",
"budgetColUsedPct": "사용률(%)",
"percentUsed": "{pct}% 사용됨",
"budgetLoading": "로드 중…",
- "budgetNoKeysMatch": "키 일치 필터가 없습니다.",
+ "budgetNoKeysMatch": "필터와 일치하는 키가 없습니다.",
"budgetLinearExtrapolation": "선형 외삽",
"budgetThisMonthSoFar": "이번달 현재까지",
- "budgetProjectedEndOfMonth": "이달말 예정",
+ "budgetProjectedEndOfMonth": "이번 달 말 예상",
"budgetByProvider": "공급자별",
"budgetProjection": "예상치",
"budgetAboveMonthlyLimit": "⚠ {limit}/월 초과",
@@ -8782,7 +8782,7 @@
"budgetMonthlyDollar": "월 $",
"budgetWarnAtPct": "%로 경고",
"quotaAlerts": "할당량 알림",
- "quotaTableRefreshing": "⟳ 상쾌하다...",
+ "quotaTableRefreshing": "⟳ 새로고침 중...",
"noSpendLast30Days": "지난 30일 동안 지출이 없습니다.",
"updatedShort": "업데이트됨",
"lastRefreshed": "마지막 새로고침",
@@ -8797,16 +8797,16 @@
"connectedSuccess": "성공적으로 연결되었습니다!",
"connectionFailed": "연결 실패",
"chooseAuthMethod": "인증 방법을 선택하세요:",
- "awsBuilderId": "AWS 빌더 ID",
+ "awsBuilderId": "AWS Builder ID",
"awsIamIdentity": "AWS IAM 자격 증명 센터",
"googleAccount": "구글 계정",
"githubAccount": "GitHub 계정",
"importToken": "토큰 가져오기",
"pasteToken": "Kiro IDE에서 새로 고침 토큰을 붙여넣습니다.",
- "awsRegion": "AWS 지역",
+ "awsRegion": "AWS 리전",
"autoDetecting": "토큰 자동 감지 중...",
"readingFromCache": "AWS SSO 캐시에서 읽기",
- "readingFromCursor": "커서 IDE 데이터베이스에서 읽기",
+ "readingFromCursor": "Cursor IDE 데이터베이스에서 읽기",
"initializing": "초기화 중...",
"pricingConfig": "가격 구성",
"loadingPricing": "가격 데이터 로드 중...",
@@ -8832,11 +8832,11 @@
"level": "레벨",
"directNative": "직접(네이티브)",
"combo": "콤보",
- "inputTokens": "나:",
- "outputTokens": "아:"
+ "inputTokens": "I:",
+ "outputTokens": "O:"
},
"stats": {
- "usageOverview": "사용법 개요",
+ "usageOverview": "사용량 개요",
"outputTokens": "출력 토큰",
"totalCost": "총 비용",
"usageByModel": "모델별 사용량",
@@ -8844,7 +8844,7 @@
"failedToLoad": "사용 통계를 로드하지 못했습니다.",
"tokenHealth": "토큰 상태",
"totalOAuth": "총 OAuth",
- "healthy": "건강하다",
+ "healthy": "정상",
"warning": "경고",
"errored": "오류 발생",
"lastCheck": "마지막 확인",
@@ -8902,14 +8902,14 @@
"fileLabelSuffix": "파일:",
"newPasswordPlaceholder": "your_new_password",
"deleteSettingsFile": "삭제",
- "orRemovePasswordHashField": "또는 PasswordHash 필드를 제거하세요.",
+ "orRemovePasswordHashField": "또는 passwordHash 필드를 제거하세요",
"restartServerWithNewPassword": "서버를 다시 시작하세요. 새 비밀번호가 사용됩니다.",
"backToLogin": "로그인으로 돌아가기",
"forgotPassword": "비밀번호를 잊으셨나요?",
"continueWithOidc": "OIDC로 계속하기",
"defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)",
"Authorization": "승인",
- "Content-Disposition": "컨텐츠 처리",
+ "Content-Disposition": "Content-Disposition",
"waitingForAuthorization": "Waiting for authorization...",
"waitingForGoogleAuthorization": "Waiting for Google authorization...",
"waitingForOpenAIAuthorization": "Waiting for OpenAI authorization...",
@@ -8922,8 +8922,8 @@
"nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended."
},
"landing": {
- "brandName": "옴니루트",
- "navigateHome": "집으로 이동",
+ "brandName": "OmniRoute",
+ "navigateHome": "홈으로 이동",
"toggleMenu": "토글 메뉴",
"featuresLink": "특징",
"docsLink": "문서",
@@ -8956,7 +8956,7 @@
"howItWorksDescription": "데이터는 귀하의 애플리케이션에서 당사의 지능형 라우팅 계층을 통해 작업에 가장 적합한 제공업체로 원활하게 흐릅니다.",
"howItWorksStep1Title": "1. CLI 및 SDK",
"howItWorksStep1Description": "귀하의 요청은 귀하가 선호하는 도구 또는 당사의 통합 SDK에서 시작됩니다. 기본 URL만 변경하면 됩니다.",
- "howItWorksStep2Title": "2. 옴니루트 허브",
+ "howItWorksStep2Title": "2. OmniRoute 허브",
"howItWorksStep2Description": "우리 엔진은 프롬프트를 분석하고 공급자 상태를 확인하며 지연 시간이나 비용이 가장 낮은 경로를 지정합니다.",
"howItWorksStep3Title": "3. AI 제공업체",
"howItWorksStep3Description": "요청은 OpenAI, Anthropic, Gemini 등이 즉시 이행합니다.",
@@ -8977,26 +8977,26 @@
"readyToRoute": "라우팅 준비 완료! ✓",
"configureProvidersNote": "📝 대시보드에서 공급자를 구성하거나 환경 변수를 사용하세요.",
"dataLocation": "데이터 위치:",
- "dataLocationMacLinux": "맥OS/리눅스:",
- "dataLocationWindows": "윈도우:",
+ "dataLocationMacLinux": "macOS/Linux:",
+ "dataLocationWindows": "Windows:",
"product": "제품",
"dashboardLink": "대시보드",
"changelog": "변경 내역",
"resources": "자원",
"documentation": "문서",
"npm": "NPM",
- "legal": "법적",
+ "legal": "법적 고지",
"mitLicense": "MIT 라이센스",
"footerTagline": "AI 생성을 위한 통합 엔드포인트입니다. AI 공급자를 쉽게 연결하고 라우팅하고 관리하세요.",
"copyright": "© {year} OmniRoute. 모든 권리 보유.",
- "flowToolClaudeCode": "클로드 코드",
- "flowToolOpenAICodex": "오픈AI 코덱스",
- "flowToolCline": "클라인",
- "flowToolCursor": "커서",
- "flowProviderOpenAI": "오픈AI",
- "flowProviderAnthropic": "인류학",
- "flowProviderGemini": "쌍둥이자리",
- "flowProviderGithubCopilot": "GitHub 코파일럿",
+ "flowToolClaudeCode": "Claude Code",
+ "flowToolOpenAICodex": "OpenAI Codex",
+ "flowToolCline": "Cline",
+ "flowToolCursor": "Cursor",
+ "flowProviderOpenAI": "OpenAI",
+ "flowProviderAnthropic": "Anthropic",
+ "flowProviderGemini": "Gemini",
+ "flowProviderGithubCopilot": "GitHub Copilot",
"interactiveDiagram": "데스크탑에 표시되는 대화형 다이어그램",
"ctaTitle": "AI 인프라를 단순화할 준비가 되셨나요?",
"ctaDescription": "OmniRoute를 통해 AI 통합을 간소화하는 개발자와 함께하세요. 오픈 소스이며 무료로 시작할 수 있습니다.",
@@ -9016,7 +9016,7 @@
"apiReference": "API 참조",
"managementApiReference": "Management API Reference",
"managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.",
- "method": "방법",
+ "method": "메서드",
"path": "경로",
"notes": "메모",
"modelPrefixes": "모델 접두어",
@@ -9045,12 +9045,12 @@
"quickStartStep4Suffix": "예를 들어 공급자 접두사를 사용하십시오.",
"deploySetupTitle": "설정 가이드",
"deploySetupText": "OmniRoute에 대한 단계별 설치, 환경 구성 및 첫 실행 연습입니다.",
- "deployElectronTitle": "전자 데스크탑",
+ "deployElectronTitle": "Electron 데스크톱",
"deployElectronText": "Windows, macOS 및 Linux에서 기본 데스크톱 애플리케이션으로 OmniRoute를 실행하세요.",
- "deployDockerTitle": "도커",
+ "deployDockerTitle": "Docker",
"deployDockerText": "Docker Compose를 사용한 컨테이너화된 배포 프로덕션 스택과 Kubernetes를 위한 준비가 되어 있습니다.",
"deployVmTitle": "가상 머신",
- "deployVmText": "모든 Linux VM의 자체 호스트. 시스템 단위, 로그 회전 및 백업 도구가 포함됩니다.",
+ "deployVmText": "모든 Linux VM에서 자체 호스팅하세요. systemd 유닛, 로그 로테이션 및 백업 도구가 포함되어 있습니다.",
"deployFlyTitle": "Fly.io",
"deployFlyText": "하나의 fly.toml과 단일 배포 명령을 사용하여 Fly.io 엣지 런타임에 배포하세요.",
"deployPwaTitle": "PWA",
@@ -9085,7 +9085,7 @@
"useCaseFallbackText": "대시보드에서 콤보 모델을 생성하고 공급자가 내부적으로 순환하는 동안 클라이언트 구성을 안정적으로 유지하세요.",
"useCaseUsageVisibilityTitle": "사용량, 비용 및 디버그 가시성",
"useCaseUsageVisibilityText": "사용량 및 분석 탭에서 공급자, 계정, API 키별로 토큰과 비용을 추적하세요.",
- "clientCherryStudioTitle": "체리 스튜디오",
+ "clientCherryStudioTitle": "Cherry Studio",
"baseUrlLabel": "기본 URL",
"chatEndpointLabel": "채팅 엔드포인트",
"modelRecommendationLabel": "모델 권장사항: 명시적 접두사",
@@ -9093,15 +9093,15 @@
"clientCodexBullet1": "다음과 함께 모델 ID를 사용하세요.",
"clientCodexBullet2": "Codex 계열 모델은 다음으로 자동 라우팅됩니다.",
"clientCodexBullet3": "비 Codex 모델은 계속됩니다",
- "clientCursorTitle": "커서 IDE",
+ "clientCursorTitle": "Cursor IDE",
"clientCursorBullet1": "사용",
- "clientCursorBullet1Suffix": "커서 모델의 접두사.",
+ "clientCursorBullet1Suffix": "Cursor 모델의 접두사.",
"clientCursorBullet2": "OAuth 연결 - 공급자 페이지에서 로그인합니다.",
- "clientClaudeTitle": "클로드 코드 / 반중력",
+ "clientClaudeTitle": "Claude Code / Antigravity",
"clientClaudeBullet1Prefix": "사용",
- "clientClaudeBullet1Middle": "(클로드) 또는",
- "clientClaudeBullet1Suffix": "(반중력) 접두사.",
- "clientWindsurfTitle": "윈드서핑",
+ "clientClaudeBullet1Middle": "(Claude) 또는",
+ "clientClaudeBullet1Suffix": "(Antigravity) 접두사.",
+ "clientWindsurfTitle": "Windsurf",
"clientWindsurfBullet1": "OmniRoute를 OpenAI 호환 기본 URL로 사용하고 결정적 라우팅을 위해 명시적인 공급자 접두사를 유지하세요.",
"clientWindsurfBullet2": "일반 트래픽의 경우 모델이 '/v1/chat/completions'을 가리키고 Codex 스타일 흐름의 경우 '/v1/responses'를 유지합니다.",
"clientWindsurfBullet3": "미리 만들어진 Windsurf 구성 가이드를 보려면 대시보드 -> CLI 도구를 사용하세요.",
@@ -9109,7 +9109,7 @@
"clientClineBullet1": "Cline은 명시적인 공급자/모델 접두사와 함께 가장 잘 작동하므로 라우터는 백엔드를 추측할 필요가 없습니다.",
"clientClineBullet2": "일반 모델에는 `/v1/chat/completions`를 사용하고 여러 계정에서 동일한 OmniRoute 기본 URL을 재사용합니다.",
"clientClineBullet3": "Cline 런타임 문제를 디버깅하기 전에 공급자 대시보드를 사용하여 OAuth/API 키를 검증하세요.",
- "clientKimiTitle": "키미코딩",
+ "clientKimiTitle": "Kimi Coding",
"clientKimiBullet1": "아래에서 계정이나 공급자 콤보를 순환하면서 OmniRoute를 안정적인 기본 URL로 사용하세요.",
"clientKimiBullet2": "대체 및 감사 추적이 명시적으로 유지되도록 코딩 흐름에서 접두사가 붙은 모델을 선호합니다.",
"clientKimiBullet3": "도구를 사용하는 클라이언트에 대해 기본 응답 스타일 라우팅을 원할 경우 `/v1/responses`를 사용하세요.",
@@ -9136,9 +9136,9 @@
"endpointSpeechNote": "음성 합성 (ElevenLabs, OpenAI TTS).",
"endpointEmbeddingsNote": "텍스트 임베딩 생성 (OpenAI, Cohere, Voyage).",
"endpointImagesNote": "이미지 생성(NanoBanana).",
- "endpointRewriteChatNote": "/v1이 없는 클라이언트용 도우미를 다시 작성합니다.",
- "endpointRewriteResponsesNote": "/v1 없이 응답에 대한 도우미를 다시 작성합니다.",
- "endpointRewriteModelsNote": "/v1 없이 모델 검색을 위한 도우미를 다시 작성합니다.",
+ "endpointRewriteChatNote": "/v1이 없는 클라이언트를 위한 재작성(rewrite) 도우미입니다.",
+ "endpointRewriteResponsesNote": "/v1이 없는 Responses 요청을 위한 재작성(rewrite) 도우미입니다.",
+ "endpointRewriteModelsNote": "/v1이 없는 모델 검색을 위한 재작성(rewrite) 도우미입니다.",
"mgmtProxiesListNote": "List saved proxy registry items (supports pagination).",
"mgmtProxiesCreateNote": "Create a reusable proxy item in the registry.",
"mgmtProxiesHealthNote": "Get 24h/rolling health metrics per saved proxy from proxy logs.",
@@ -9163,7 +9163,7 @@
"endpointSearchAnalyticsNote": "검색 요청에 대한 분석 및 측정항목입니다.",
"endpointVideoNote": "비디오 생성(ComfyUI, SD WebUI 워크플로우)",
"endpointMusicNote": "ComfyUI 워크플로우를 통한 음악 생성.",
- "endpointMessagesNote": "인류의 기본 메시지 끝점.",
+ "endpointMessagesNote": "Anthropic 네이티브 메시지 엔드포인트입니다.",
"endpointCountTokensNote": "특정 메시지 페이로드에 대한 토큰을 계산합니다.",
"endpointFilesNote": "다중 모드 입력을 위한 파일 업로드.",
"endpointBatchesNote": "대량 API 요청에 대한 일괄 처리.",
@@ -9185,7 +9185,7 @@
"mcpToolsRoutingTitle": "라우팅 및 검색",
"mcpToolsRoutingDesc": "상태 확인, 콤보 관리, 할당량 모니터링, 비용 보고 및 모델 카탈로그 액세스.",
"mcpToolsOperationsTitle": "운영 및 전략",
- "mcpToolsOperationsDesc": "경로 시뮬레이션, 예산 경비, 전략 전환, 탄력성 프로필 및 공급자 지표.",
+ "mcpToolsOperationsDesc": "경로 시뮬레이션, 예산 가드, 전략 전환, 복원력 프로필 및 공급자 지표.",
"mcpToolsCacheTitle": "캐시 관리",
"mcpToolsCacheDesc": "캐시 통계를 보고 의미 체계 또는 서명 캐시를 플러시합니다.",
"mcpToolsCompressionTitle": "압축 엔진",
@@ -9223,15 +9223,15 @@
"clearHistory": "언제든지 사용 내역 지우기",
"configureRetention": "로그 보존 정책 구성",
"backupRestore": "데이터베이스 백업 및 복원",
- "privacyMetadataTitle": "개인정보 보호정책 | 옴니루트",
+ "privacyMetadataTitle": "개인정보 보호정책 | OmniRoute",
"privacyMetadataDescription": "OmniRoute AI API 프록시 라우터에 대한 개인정보 보호정책.",
- "termsMetadataTitle": "서비스 약관 | 옴니루트",
+ "termsMetadataTitle": "서비스 약관 | OmniRoute",
"termsMetadataDescription": "OmniRoute AI API 프록시 라우터에 대한 서비스 약관입니다.",
- "backToHome": "집으로 돌아가기",
+ "backToHome": "홈으로 돌아가기",
"lastUpdated": "최종 업데이트: {date}",
"policyLastUpdatedDate": "2026년 2월 13일",
"listSeparator": "-",
- "questionsVisit": "질문이 있으신가요? 우리를 방문하세요",
+ "questionsVisit": "질문이 있으신가요? 다음을 방문하세요:",
"githubRepository": "GitHub 저장소",
"privacySection1Title": "1. 로컬 우선 아키텍처",
"privacySection1Text": "OmniRoute는 로컬 우선 애플리케이션으로 설계되었습니다. 모든 데이터 처리 및 저장은 전적으로 귀하의 컴퓨터에서 이루어집니다. 귀하의 정보를 수집하는 중앙 집중식 서버가 없습니다.",
@@ -9246,7 +9246,7 @@
"privacySection4Title": "4. 제3자 AI 제공업체",
"privacySection4Text": "OmniRoute를 통해 API 호출을 수행하면 요청은 구성한 AI 공급자(예: OpenAI, Anthropic, Google)로 전달됩니다. 이러한 제공업체는 귀하의 데이터를 처리하는 방법을 관리하는 자체 개인 정보 보호 정책을 가지고 있습니다. 검토해 주십시오:",
"privacyOpenAiPolicy": "OpenAI 개인정보 보호정책",
- "privacyAnthropicPolicy": "인류학적 개인정보 보호정책",
+ "privacyAnthropicPolicy": "Anthropic 개인정보 보호정책",
"privacyGooglePolicy": "Google 개인정보 보호정책",
"privacySection5Title": "5. 클라우드 동기화(선택 사항)",
"privacySection5Text": "선택적 클라우드 동기화 기능을 활성화하면 공급자 구성 및 API 키가 구성된 클라우드 엔드포인트로 전송될 수 있습니다. 이 기능은 기본적으로 비활성화되어 있으며 명시적인 선택이 필요합니다.",
@@ -9302,19 +9302,19 @@
"setupGuideCustomAgentDesc": "Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.",
"setupGuideCommandMissingTitle": "Fix 'command not found'",
"setupGuideCommandMissingDesc": "Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh.",
- "cliToolsRedirectTitle": "Cli Tools Redirect Title",
- "cliToolsRedirectDesc": "Cli Tools Redirect Desc",
- "spawnArgsPlaceholder": "Spawn Args Placeholder",
- "binaryNamePlaceholder": "Binary Name Placeholder",
- "versionCommandPlaceholder": "Version Command Placeholder",
- "architectureTitle": "Architecture Title",
- "flowLocalBinary": "Flow Local Binary",
- "flowOmniRoute": "Flow Omni Route",
- "agentNamePlaceholder": "Agent Name Placeholder",
- "architectureDescription": "Architecture Description",
- "flowExecute": "Flow Execute",
- "flowSpawn": "Flow Spawn",
- "cliToolsRedirectCta": "Cli Tools Redirect Cta",
+ "cliToolsRedirectTitle": "IDE를 구성하려고 하시나요?",
+ "cliToolsRedirectDesc": "Claude Code, Cursor, Codex 또는 다른 IDE가 OmniRoute를 프록시로 사용하도록 설정하려면 CLI 도구 페이지로 이동하세요. 이 페이지는 그 반대로, OmniRoute가 로컬 CLI 바이너리를 실행 대상으로 삼아 요청을 라우팅하도록 하는 기능을 위한 것입니다.",
+ "spawnArgsPlaceholder": "예: --quiet, --json, --no-auto-commits",
+ "binaryNamePlaceholder": "예: my-agent 또는 /usr/local/bin/llm-cli",
+ "versionCommandPlaceholder": "예: my-agent --version",
+ "architectureTitle": "에이전트 대상의 작동 방식",
+ "flowLocalBinary": "3 · 자체 인증을 사용하는 CLI 프로세스",
+ "flowOmniRoute": "1 · 요청이 OmniRoute에 도착",
+ "agentNamePlaceholder": "예: My Custom Agent",
+ "architectureDescription": "요청이 도착하면 OmniRoute는 로컬 CLI 바이너리(예: claude, codex, goose)를 실행하여 요청을 전달할 수 있습니다. CLI는 자체 자격 증명으로 요청을 처리하고 결과를 OmniRoute를 통해 반환합니다.",
+ "flowExecute": "4 · 클라이언트에 응답 반환",
+ "flowSpawn": "2 · OmniRoute가 로컬 바이너리 실행",
+ "cliToolsRedirectCta": "CLI 도구로 이동 →",
"comparisonTitle": "CLI 도구와 에이전트 대상 — 차이점은 무엇입니까?",
"comparisonCliToolsLabel": "CLI 도구 페이지",
"comparisonCliToolsTitle": "IDE는 OmniRoute를 통해 요청을 보냅니다.",
@@ -9326,7 +9326,7 @@
"agentUseCaseHint": "ACP 프로토콜을 통해 실행 대상으로 사용 가능",
"flowDiagramClient": "클라이언트 앱",
"flowDiagramClientDesc": "SDK, API 또는 업스트림 서비스",
- "flowDiagramOmniRoute": "옴니루트",
+ "flowDiagramOmniRoute": "OmniRoute",
"flowDiagramOmniRouteDesc": "요청을 받고 대상을 선택합니다.",
"flowDiagramSpawn": "스폰 프로세스",
"flowDiagramSpawnDesc": "stdio를 통해 CLI 바이너리 실행",
@@ -9364,11 +9364,11 @@
"newTaskDescription": "클라우드 에이전트로 새 작업 시작",
"selectAgent": "에이전트 선택",
"taskDescription": "작업 설명",
- "taskDescriptionPlaceholder": "상담원에게 원하는 작업을 설명하세요.",
+ "taskDescriptionPlaceholder": "에이전트가 수행할 작업을 설명하세요...",
"startTask": "작업 시작",
"tasks": "작업",
"taskDetail": "작업 세부정보",
- "noTasks": "아직 작업이 없습니다. 시작하려면 계정을 만드세요.",
+ "noTasks": "아직 작업이 없습니다. 시작하려면 작업을 만드세요.",
"noTasksTitle": "아직 작업이 없습니다",
"noTasksDesc": "시작하려면 첫 번째 작업을 생성하세요.",
"tasksTab": "작업",
@@ -9399,19 +9399,19 @@
"planReady": "계획 승인 준비 완료",
"approvePlan": "계획 승인",
"rejectPlan": "거부 및 취소",
- "sendMessagePlaceholder": "상담원에게 메시지를 보내세요...",
+ "sendMessagePlaceholder": "에이전트에게 메시지를 보내세요...",
"cancel": "취소",
"delete": "삭제",
"selectTaskPrompt": "세부정보를 보려면 작업을 선택하세요.",
"statusPending": "보류 중",
- "statusRunning": "달리기",
+ "statusRunning": "실행 중",
"statusWaitingApproval": "승인 대기 중",
"statusCompleted": "완료됨",
"statusFailed": "실패",
"statusCancelled": "취소됨",
"repositoryName": "저장소 이름",
"repositoryUrl": "저장소 URL",
- "branch": "지점",
+ "branch": "브랜치",
"agentDescriptions": {
"jules": "Google의 자율 코딩 에이전트",
"devin": "Cognition의 AI 소프트웨어 엔지니어",
@@ -9453,7 +9453,7 @@
"userGreeting": "안녕하세요! 오늘은 무엇을 도와드릴까요?"
},
"streaming": {
- "prompt": "에 관한 이야기를 써 보세요."
+ "prompt": "다음 주제에 관한 이야기를 써 보세요:"
},
"systemPrompt": {
"question": "삶의 의미는 무엇입니까?",
@@ -9571,7 +9571,7 @@
"disabled": "Disabled",
"totalRequests": "Total Requests",
"reasoningCache": "추론 재생",
- "reasoningCacheDesc": "다중 회전 도구 호출 흐름에 대한 모델 사고를 유지합니다.",
+ "reasoningCacheDesc": "멀티턴 도구 호출 흐름을 위해 모델의 사고 과정을 유지합니다.",
"reasoningEntries": "활성 항목",
"reasoningReplayRate": "재생률",
"reasoningReplays": "총 리플레이",
@@ -9581,12 +9581,12 @@
"reasoningByModel": "모델별",
"reasoningRecentEntries": "최근 항목",
"reasoningToolCallId": "도구 호출 ID",
- "reasoningChars": "캐릭터",
- "reasoningAge": "나이",
+ "reasoningChars": "문자 수",
+ "reasoningAge": "경과 시간",
"reasoningView": "보기",
"reasoningDetail": "추론 내용",
"reasoningBehavior": "행동",
- "reasoningBehaviorCapture": "스트리밍 응답에서 Reasoning_content를 캡처합니다.",
+ "reasoningBehaviorCapture": "스트리밍 응답에서 reasoning_content를 캡처합니다.",
"reasoningBehaviorReplay": "클라이언트가 생략하면 다음 턴에 다시 주입합니다.",
"reasoningBehaviorFallback": "충돌 복구를 위한 SQLite 대체 기능을 갖춘 메모리 우선",
"reasoningBehaviorTtl": "TTL: 2시간 | 최대 항목: 2,000(메모리)",
@@ -9612,7 +9612,7 @@
"levelGlobal": "글로벌",
"levelProvider": "공급자",
"levelCombo": "콤보",
- "levelKey": "열쇠",
+ "levelKey": "키",
"levelDirect": "직접(프록시 없음)",
"titleGlobal": "글로벌 프록시 구성",
"titleLevel": "{level} 프록시 — {label}",
@@ -9624,8 +9624,8 @@
"selectSavedProxyPlaceholder": "저장된 프록시 선택...",
"proxyType": "프록시 유형",
"host": "호스트",
- "hostPlaceholder": "1.2.3.4 또는 Proxy.example.com",
- "port": "항구",
+ "hostPlaceholder": "1.2.3.4 또는 proxy.example.com",
+ "port": "포트",
"authOptional": "인증(선택사항)",
"username": "사용자 이름",
"usernamePlaceholder": "사용자 이름",
@@ -9634,7 +9634,7 @@
"connected": "연결됨",
"ip": "IP:",
"connectionFailed": "연결 실패",
- "testConnection": "테스트 연결",
+ "testConnection": "연결 테스트",
"clear": "지우기",
"cancel": "취소",
"save": "저장",
@@ -9650,19 +9650,19 @@
"title": "{providerName} 연결",
"waiting": "승인을 기다리는 중",
"completeAuthInPopup": "팝업에서 승인을 완료하세요.",
- "popupClosedHint": "다시 리디렉션하지 않고 팝업이 닫히면(예: Qoder) 이 대화 상자는 수동 URL 입력 모드로 자동 전환됩니다.",
+ "popupClosedHint": "팝업이 닫히거나 콜백을 전달할 수 없는 경우 이 대화 상자는 자동으로 수동 URL 입력 모드로 전환됩니다.",
"popupBlocked": "팝업이 차단되었나요? URL을 직접 입력하세요.",
"deviceCodeVisitUrl": "아래 URL을 방문하여 코드를 입력하세요.",
"deviceCodeVerificationUrl": "확인 URL",
"deviceCodeYourCode": "귀하의 코드",
"deviceCodeWaiting": "승인을 기다리는 중...",
- "googleOAuthWarning": "원격 액세스 + Google OAuth: 기본 자격 증명은 localhost에 대한 리디렉션만 허용합니다. 승인 후 브라우저는 localhost 열기를 시도합니다. 전체 URL을 복사하여 아래에 붙여넣으세요. 이 수동 단계 없이 완전히 원격으로 사용하려면 자신의 OAuth 자격 증명을 구성하세요.",
+ "googleOAuthWarning": "원격 액세스 + Google OAuth: 기본 제공 자격 증명은 127.0.0.1과 같은 루프백 리디렉션만 허용합니다. Google 승인을 진행하는 브라우저가 해당 로컬 포트의 OmniRoute에 접근할 수 있어야 하며, 보통 OmniRoute를 로컬에서 열거나 SSH/로컬 포워딩 터널을 사용합니다. 원격 설치에 권장: 본인 컴퓨터에서 npx omniroute login antigravity를 실행하고 출력된 자격 증명 블롭을 아래 필드에 붙여넣으세요. 이 로컬 콜백 없이 완전히 원격으로 사용하려면 자체 OAuth 자격 증명을 구성하세요.",
"remoteAccessInfo": "원격 액세스: OmniRoute에 원격으로 액세스하므로 인증 후 오류 페이지가 표시됩니다(localhost를 찾을 수 없음). 이것은 정상적인 현상입니다. 브라우저 주소 표시줄에서 전체 URL을 복사하여 아래에 붙여넣으면 됩니다.",
"step1OpenUrl": "1단계: 브라우저에서 이 URL을 엽니다.",
"copy": "복사",
"step2PasteCallback": "2단계: 여기에 콜백 URL 또는 승인 코드를 붙여넣으세요.",
- "step2Hint": "승인 후 전체 콜백 URL을 붙여넣습니다. Claude Code 및 Cline의 경우 인증 코드를 직접 붙여 넣을 수도 있습니다. 코드#상태.",
- "connect": "연결하다",
+ "step2Hint": "승인 후 전체 콜백 URL을 붙여넣으세요. Claude Code 및 Cline의 경우 code#state와 같이 인증 코드를 직접 붙여넣을 수도 있습니다.",
+ "connect": "연결",
"cancel": "취소",
"success": "연결 성공!",
"successMessage": "귀하의 {providerName} 계정이 연결되었습니다.",
@@ -9671,11 +9671,11 @@
"tryAgain": "다시 시도하세요"
},
"cursorAuthModal": {
- "title": "커서 IDE 연결",
+ "title": "Cursor IDE 연결",
"autoDetecting": "토큰 자동 감지 중...",
- "readingFromCursor": "커서 IDE 또는 커서 에이전트에서 읽기",
+ "readingFromCursor": "Cursor IDE 또는 cursor-agent에서 읽는 중",
"tokensAutoDetected": "Cursor IDE에서 토큰이 자동 감지되었습니다!",
- "cursorNotDetected": "커서 IDE가 감지되지 않습니다. 토큰을 수동으로 붙여넣으세요.",
+ "cursorNotDetected": "Cursor IDE가 감지되지 않았습니다. 토큰을 수동으로 붙여넣으세요.",
"accessToken": "액세스 토큰",
"required": "*",
"accessTokenPlaceholder": "액세스 토큰이 자동으로 채워집니다...",
@@ -9713,25 +9713,25 @@
"proxyRegistry": {
"selectAllProxies": "모든 프록시 선택",
"selectProxy": "{name} 선택",
- "title": "Title",
- "description": "Description",
+ "title": "프록시 레지스트리",
+ "description": "재사용 가능한 프록시를 저장하고 할당을 추적합니다.",
"importLegacy": "Import Legacy",
"bulkAssign": "Bulk Assign",
"addProxy": "Add Proxy",
- "loading": "Loading",
- "noProxies": "No Proxies",
- "tableName": "Table Name",
- "tableEndpoint": "Table Endpoint",
- "tableStatus": "Table Status",
- "tableHealth": "Table Health",
- "tableUsage": "Table Usage",
- "tableActions": "Table Actions",
+ "loading": "프록시 로드 중...",
+ "noProxies": "아직 저장된 프록시가 없습니다.",
+ "tableName": "이름",
+ "tableEndpoint": "엔드포인트",
+ "tableStatus": "상태",
+ "tableHealth": "상태 (24h)",
+ "tableUsage": "사용량",
+ "tableActions": "작업",
"test": "Test",
"edit": "Edit",
"delete": "Delete",
- "modalCreateTitle": "Modal Create Title",
- "modalEditTitle": "Modal Edit Title",
- "labelName": "Label Name",
+ "modalCreateTitle": "프록시 생성",
+ "modalEditTitle": "프록시 편집",
+ "labelName": "이름",
"labelType": "유형",
"labelFamily": "IP 패밀리",
"familyAuto": "자동 (듀얼 스택)",
@@ -9739,7 +9739,7 @@
"familyIpv6": "IPv6 전용",
"familyHint": "Egress 주소 패밀리입니다. 자동은 듀얼 스택을 유지하며, IPv4/IPv6는 이 프록시를 해당 패밀리로 고정합니다(IPv6 전용 프록시에서 v4 유출 방지).",
"labelHost": "호스트",
- "labelPort": "항구",
+ "labelPort": "포트",
"labelUsername": "사용자 이름",
"labelPassword": "비밀번호",
"labelRegion": "지역",
@@ -9756,7 +9756,7 @@
"bulkLabelProxy": "프록시",
"bulkClearAssignment": "(할당 지우기)",
"bulkLabelScopeIds": "범위 ID(쉼표 또는 줄바꿈으로 구분)",
- "bulkScopeIdsPlaceholder": "공급자-개방형, 공급자-인류적",
+ "bulkScopeIdsPlaceholder": "provider-openai,provider-anthropic",
"bulkApply": "적용",
"labelScope": "범위",
"labelProxy": "프록시",
@@ -9767,22 +9767,22 @@
"bulkImportErrorMissingName": "NAME 누락",
"bulkImportErrorMissingHost": "호스트 누락",
"bulkImportErrorInvalidPort": "잘못된 포트(1-65535여야 함)",
- "bulkImportErrorInvalidType": "잘못된 TYPE(http, https 또는 양말5 사용)",
+ "bulkImportErrorInvalidType": "잘못된 TYPE(http, https 또는 socks5 사용)",
"bulkImportErrorInvalidStatus": "잘못된 STATUS(활성 또는 비활성 사용)",
- "errorLoadFailed": "Error Load Failed",
- "errorNameHostRequired": "Error Name Host Required",
- "errorSaveFailed": "Error Save Failed",
- "errorDeleteFailed": "Error Delete Failed",
- "errorForceDeleteConfirm": "Error Force Delete Confirm",
- "errorMigrateFailed": "Error Migrate Failed",
- "errorBulkFailed": "Error Bulk Failed",
+ "errorLoadFailed": "프록시 레지스트리를 로드하지 못했습니다",
+ "errorNameHostRequired": "이름과 호스트는 필수 항목입니다",
+ "errorSaveFailed": "프록시를 저장하지 못했습니다",
+ "errorDeleteFailed": "프록시를 삭제하지 못했습니다",
+ "errorForceDeleteConfirm": "이 프록시는 아직 할당되어 있습니다. 강제로 삭제하고 모든 할당을 제거하시겠습니까?",
+ "errorMigrateFailed": "레거시 프록시 구성을 마이그레이션하지 못했습니다",
+ "errorBulkFailed": "대량 할당을 실행하지 못했습니다",
"success": "✓",
"failure": "✗",
"failed": "Failed",
"successRate": "{rate}% 성공",
"avgLatency": "{latency}ms 평균",
- "assignmentsCount": "{count} 과제",
- "noData": "No Data",
+ "assignmentsCount": "{count}개 할당",
+ "noData": "—",
"testSuccess": "✓ {ip}",
"testLatency": "{latency}ms",
"testFailure": "✗ {error}",
@@ -9795,7 +9795,7 @@
"relayProbeSummary": "릴레이 프로브: {alive}/{tested} 활성",
"bulkImport": "대량 가져오기",
"bulkImportTitle": "대량 가져오기 프록시",
- "bulkImportDescription": "파이프로 구분된 형식을 사용하여 프록시 프로필을 붙여넣습니다. 한 줄에 하나의 프록시. 기존 프록시(동일 호스트 + 포트)가 업데이트됩니다.",
+ "bulkImportDescription": "프록시 프로필을 한 줄에 하나씩 붙여넣으세요. 지원 형식: 파이프 구분(NAME|HOST|PORT|…), 단축형(ip:port, ip:port:user:pass, user:pass@ip:port, user:pass:ip:port, protocol://ip:port, protocol://user:pass@ip:port), 프로토콜 헤더 모드(첫 줄에 프로토콜만 입력하면 이후 단축형 줄에 적용). 기존 프록시(동일 호스트 + 포트)는 업데이트됩니다.",
"bulkImportParse": "구문 분석",
"bulkImportImport": "{count} 프록시 가져오기",
"bulkImportImporting": "가져오는 중...",
@@ -9807,7 +9807,7 @@
"bulkImportErrorLine": "{line} 라인: {reason}",
"bulkImportMaxExceeded": "가져오기당 최대 100개의 프록시",
"bulkImportPreview": "미리보기",
- "clearAssignment": "(명확한 할당)",
+ "clearAssignment": "(할당 지우기)",
"bulkProxyAssignment": "대량 프록시 할당",
"testAll": "모두 테스트",
"errorTestFailed": "프록시 테스트 실패",
@@ -9842,8 +9842,8 @@
"poolSaveFailed": "풀 할당을 저장하지 못했습니다"
},
"playground": {
- "title": "Title",
- "description": "Description",
+ "title": "모델 플레이그라운드",
+ "description": "대시보드에서 직접 모든 모델을 테스트하세요. 공급자, 모델, 엔드포인트 유형을 선택한 후 요청을 보내 원시 응답을 확인하세요.",
"endpoint": "Endpoint",
"provider": "Provider",
"model": "Model",
@@ -9854,9 +9854,9 @@
"cancel": "Cancel",
"audioFile": "Audio File",
"attachImages": "Attach Images",
- "multipartFormData": "Multipart Form Data",
- "upToImages": "Up To Images",
- "selectAudioFile": "Select Audio File",
+ "multipartFormData": "multipart/form-data",
+ "upToImages": "최대 4개 이미지",
+ "selectAudioFile": "전사할 오디오 파일 선택 (mp3, wav, m4a, ogg, flac…)",
"clearAll": "Clear All",
"request": "Request",
"response": "Response",
@@ -9865,14 +9865,14 @@
"resetToDefault": "Reset To Default",
"downloadAudio": "Download Audio",
"copyText": "Copy Text",
- "transcriptionHint": "Transcription Hint",
+ "transcriptionHint": "전사(Transcription)는 multipart/form-data를 사용합니다. 위에서 오디오 파일을 업로드하세요 — 아래 JSON은 추가 매개변수(model, language)를 제어합니다.",
"imagesGenerated": "생성된 {count}개의 이미지",
"generatedImage": "생성된 이미지 {index}",
"save": "Save",
"endpointOptions": {
"chat": "Chat",
"responses": "Responses",
- "completions": "완성",
+ "completions": "Completions",
"images": "Images",
"embeddings": "Embeddings",
"speech": "Speech",
@@ -10313,7 +10313,7 @@
"title": "Quota Sharing",
"description": "Share provider quotas across API keys with % limits",
"newPool": "New pool",
- "betaTitle": "Beta — UI preview.",
+ "betaTitle": "베타",
"betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.",
"kpiActivePools": "Active pools",
"kpiKeysAllocated": "Keys allocated",
@@ -10364,7 +10364,7 @@
"betaConfigSavedPrefix": "구성은 다음 위치에 저장됩니다.",
"betaConfigSavedSuffix": "(아직 서버에 유지되지 않음) 요청별 한도 적용은 아직 프록시 파이프라인에 연결되지 않았습니다. 이 화면을 사용하면 할당량 분할을 디자인하고 시각화할 수 있습니다. 실제 시행은 DB 지속성 및 업스트림 호출 차단을 통해 향후 반복에 착수할 것입니다.",
"policyLabel": "정책:",
- "resetIn": "재설정",
+ "resetIn": "재설정까지",
"quotaTotal": "합계",
"kpiAvgUtilization": "평균 사용률",
"kpiBorrowingNow": "현재 대여 중",
@@ -10436,7 +10436,7 @@
"endpointsCollapse": "접기",
"endpointsExpand": "펼치기",
"endpointsAnthropicNote": "Anthropic 네이티브",
- "endpointsResponsesNote": "OpenAI 응답 — codex/github",
+ "endpointsResponsesNote": "OpenAI Responses — codex/github",
"endpointsWsNote": "WebSocket — codex 전용",
"betaText": "할당량 공유(Quota Share) 기능은 작동하지만 버그가 발생할 수 있습니다. 버그를 발견하셨나요? 보고해 주세요.",
"betaReportLink": "문제 보고",
@@ -10569,7 +10569,7 @@
"cloudAgentSession": "{target}의 클라우드 에이전트 세션이 시작되었습니다",
"mcpToolRegistered": "MCP 도구 {target}이(가) 등록되었습니다",
"webhookCreated": "{actor}님이 웹훅 {target}을(를) 생성했습니다",
- "webhookDeleted": "{actor}님이 웹훅 {target}을((를) 제거했습니다",
+ "webhookDeleted": "{actor}님이 웹훅 {target}을(를) 제거했습니다",
"quotaPoolCreated": "{actor}님이 할당량 풀 {target}을(를) 생성했습니다",
"quotaPoolUpdated": "{actor}님이 할당량 풀 {target}을(를) 업데이트했습니다",
"quotaPoolDeleted": "{actor}님이 할당량 풀 {target}을(를) 제거했습니다",
@@ -11242,7 +11242,7 @@
}
},
"pageTitle": "에이전트 스킬",
- "pageSubtitle": "에이전트에게 OmniRoute를 작동하는 방법 교육 — 22개 API 영역 + 20개 CLI 제품군",
+ "pageSubtitle": "에이전트에게 OmniRoute를 작동하는 방법 교육 — 23개 API 영역 + 21개 CLI 제품군",
"conceptCard": {
"agent": {
"title": "에이전트 스킬 — 아웃바운드",