{
  "common": {
    "save": "저장",
    "cancel": "취소",
    "delete": "삭제",
    "loading": "로드 중...",
    "error": "오류가 발생했습니다",
    "success": "성공",
    "confirm": "확실합니까?",
    "refresh": "새로고침",
    "close": "닫기",
    "add": "추가",
    "edit": "편집",
    "search": "검색",
    "back": "뒤로",
    "next": "다음",
    "submit": "제출",
    "reset": "재설정",
    "copy": "복사",
    "copied": "복사되었습니다!",
    "enabled": "활성화됨",
    "disabled": "장애인",
    "active": "활성",
    "inactive": "비활성",
    "noData": "사용 가능한 데이터가 없습니다.",
    "nothingHere": "Nothing here yet",
    "configure": "구성",
    "manage": "관리하다",
    "name": "이름",
    "actions": "작업",
    "status": "상태",
    "type": "유형",
    "model": "모델",
    "models": "모델",
    "provider": "공급자",
    "account": "계정",
    "time": "시간",
    "details": "세부정보",
    "created": "생성됨",
    "lastUsed": "Last Refreshed",
    "loadMore": "더 로드하기",
    "noResults": "검색결과가 없습니다",
    "reloadPage": "페이지 새로고침",
    "connected": "연결됨",
    "disconnected": "연결이 끊김",
    "notConfigured": "구성되지 않음",
    "testConnection": "연결 테스트",
    "enable": "활성화",
    "disable": "비활성화",
    "columns": "열",
    "newest": "최신",
    "oldest": "가장 오래된",
    "all": "모두",
    "none": "없음",
    "yes": "예",
    "no": "아니요",
    "on": "__MISSING__:ON",
    "off": "__MISSING__:OFF",
    "warning": "경고",
    "note": "참고",
    "free": "무료",
    "skipToContent": "콘텐츠로 건너뛰기",
    "maintenanceServerIssues": "Server is experiencing issues. Some features may be unavailable.",
    "maintenanceServerUnreachable": "Server is unreachable. Reconnecting...",
    "accept": "accept",
    "accountId": "accountId",
    "alias": "alias",
    "apiKeyId": "apiKeyId",
    "apiKeyName": "apiKeyName",
    "apiKeySecret": "apiKeySecret",
    "authorization": "authorization",
    "content-type": "content-type",
    "content-length": "content-length",
    "cookie": "cookie",
    "file": "file",
    "host": "host",
    "id": "id",
    "import": "import",
    "limit": "limit",
    "offset": "offset",
    "open": "open",
    "origin": "origin",
    "promptTokens": "promptTokens",
    "completionTokens": "completionTokens",
    "totalTokens": "totalTokens",
    "rawModel": "rawModel",
    "scope": "scope",
    "skill": "skill",
    "sortBy": "sortBy",
    "sortOrder": "sortOrder",
    "tab": "tab",
    "text": "text",
    "textarea": "textarea",
    "tool": "tool",
    "toolId": "toolId",
    "web": "web",
    "whereUsed": "whereUsed",
    "whitelist": "whitelist",
    "blacklist": "blacklist",
    "resolve": "resolve",
    "force": "force",
    "base64url": "base64url",
    "hex": "hex",
    "range": "range",
    "component": "component",
    "redirect_uri": "redirect_uri",
    "idempotency-key": "idempotency-key",
    "error_description": "error_description",
    "code": "code",
    "compatible": "compatible",
    "chat-completions": "chat-completions",
    "oauth": "oauth",
    "auth_token": "auth_token",
    "crypto": "crypto",
    "hours": "hours",
    "selfsigned": "selfsigned",
    "proxy_id": "proxy_id",
    "proxyId": "proxyId",
    "connectionId": "connectionId",
    "resolveConnectionId": "resolveConnectionId",
    "resolve_connection_id": "resolve_connection_id",
    "scope_id": "scope_id",
    "scopeId": "scopeId",
    "jwtSecret": "jwtSecret",
    "keytar": "keytar",
    "better-sqlite3": "better-sqlite3",
    "undici": "undici",
    "builder-id": "builder-id",
    "musicDesc": "musicDesc",
    "musicGeneration": "musicGeneration",
    "idc": "idc",
    "cloud-status-changed": "cloud-status-changed",
    "where_used": "where_used",
    "windowMs": "windowMs",
    "social-github": "GitHub",
    "social-google": "구글",
    "TOOL_ALLOWLIST": "도구 허용 목록",
    "TOOL_DENYLIST": "도구 거부 목록",
    "Failed to save pricing": "가격을 저장하지 못했습니다.",
    "Failed to reset pricing": "가격을 재설정하지 못했습니다.",
    "apikey": "API 키",
    "http": "HTTP",
    "goToDashboard": "Go to Dashboard",
    "checkSystemStatus": "Check System Status",
    "selectModel": "Select Model",
    "combos": "Combos",
    "noModelsFound": "No models found",
    "clear": "Clear",
    "done": "Done",
    "errorOccurred": "Error Occurred",
    "comboDeleted": "Combo Deleted",
    "hide": "Hide",
    "creating": "Creating",
    "comboCreated": "Combo Created",
    "swapFormats": "Swap Formats",
    "daysAgo": "Days Ago",
    "retries": "Retries",
    "errorDuringRestore": "Error During Restore",
    "eventsAppearHint": "Events Appear Hint",
    "noLockouts": "No Lockouts",
    "webSearchDesc": "Web Search Desc",
    "audioProvidersHeading": "Audio Providers Heading",
    "cloudAgentProviders": "클라우드 에이전트 제공업체",
    "minutesAgo": "Minutes Ago",
    "a": "A",
    "liveAutoRefreshing": "Live Auto Refreshing",
    "webSearch": "Web Search",
    "anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder",
    "addModelToCombo": "Add Model To Combo",
    "failedToLoad": "Failed To Load",
    "categoryMedia": "Category Media",
    "enableCloud": "Enable Cloud",
    "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon",
    "retry": "Retry",
    "embeddings": "Embeddings",
    "errorCount": "Error Count",
    "backupReasonManual": "Backup Reason Manual",
    "safeSearchModerate": "Safe Search Moderate",
    "activeLimiters": "Active Limiters",
    "a2aCardTitle": "A2A Card Title",
    "cloudWorkerUnreachable": "Cloud Worker Unreachable",
    "testFailed": "Test Failed",
    "compatibleBaseUrlHint": "Compatible Base Url Hint",
    "usageTracking": "Usage Tracking",
    "disableCloudTitle": "Disable Cloud Title",
    "noConnections": "No Connections",
    "providerHealth": "Provider Health",
    "confirmDbImport": "Confirm Db Import",
    "notAvailableSymbol": "Not Available Symbol",
    "backupsAvailable": "Backups Available",
    "providerAuto": "Provider Auto",
    "newProviderNamePlaceholder": "New Provider Name Placeholder",
    "a2aQuickStartStep2": "A2A Quick Start Step2",
    "ok": "Ok",
    "available": "Available",
    "noBackupYet": "No Backup Yet",
    "more": "More",
    "noCompatibleYet": "No Compatible Yet",
    "multiProvider": "Multi Provider",
    "repairEnvHint": "Repair Env Hint",
    "disablingCloud": "Disabling Cloud",
    "testBench": "Test Bench",
    "valid": "Valid",
    "cloudBenefitShare": "Cloud Benefit Share",
    "mcpCardTitle": "Mcp Card Title",
    "disableConfirm": "Disable Confirm",
    "filters": "Filters",
    "expirationBannerExpiredDesc": "Expiration Banner Expired Desc",
    "saveComboDefaults": "Save Combo Defaults",
    "cloudConnectedVerified": "Cloud Connected Verified",
    "uptime": "Uptime",
    "compatibleProdPlaceholder": "Compatible Prod Placeholder",
    "fallbackChainsTitle": "Fallback Chains Title",
    "oauthLabel": "Oauth Label",
    "a2aCardDescription": "A2A Card Description",
    "okShort": "Ok Short",
    "maintenance": "Maintenance",
    "formatConverter": "Format Converter",
    "zedImportNetworkError": "Zed Import Network Error",
    "apiKeyLabel": "Api Key Label",
    "noModelsForProvider": "No Models For Provider",
    "mcpCardDescription": "Mcp Card Description",
    "apiTypeLabel": "Api Type Label",
    "configuredProvidersLabel": "Configured Providers Label",
    "maxRetriesLabel": "Max Retries Label",
    "title": "Title",
    "output": "Output",
    "prefixHint": "Prefix Hint",
    "skipWizard": "Skip Wizard",
    "failedCount": "Failed Count",
    "confirmDbImportDesc": "Confirm Db Import Desc",
    "entries": "Entries",
    "until": "Until",
    "disableCombo": "Disable Combo",
    "liveMonitorDescriptionPrefix": "Live Monitor Description Prefix",
    "runningCount": "Running Count",
    "noActiveConnectionsInGroup": "No Active Connections In Group",
    "savedSuccessfully": "Saved Successfully",
    "systemStorage": "System Storage",
    "videoDesc": "Video Desc",
    "maxResults": "Max Results",
    "timeRangeMonth": "Time Range Month",
    "testSummary": "Test Summary",
    "failedSetPassword": "Failed Set Password",
    "audio": "Audio",
    "restore": "Restore",
    "disableWarning": "Disable Warning",
    "moderationsDesc": "Moderations Desc",
    "providerHealthStatusAria": "Provider Health Status Aria",
    "modelNamePlaceholder": "Model Name Placeholder",
    "mcpQuickStartStep2": "Mcp Quick Start Step2",
    "quickStart": "Quick Start",
    "fullExportFailedWithError": "Full Export Failed With Error",
    "loadingBackups": "Loading Backups",
    "anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder",
    "description": "Description",
    "noProviderFound": "No Provider Found",
    "auto": "Auto",
    "protocolsDescription": "Protocols Description",
    "cloudSessionNote": "Cloud Session Note",
    "advancedSettings": "Advanced Settings",
    "defaultStrategy": "Default Strategy",
    "purgeExpiredLogs": "Purge Expired Logs",
    "justNow": "Just Now",
    "providerTestFailed": "Provider Test Failed",
    "openaiBaseUrlPlaceholder": "Openai Base Url Placeholder",
    "image": "Image",
    "failedCreateChain": "Failed Create Chain",
    "importDatabase": "Import Database",
    "allDataLocal": "All Data Local",
    "sectionTitle": "Section Title",
    "failedToggle": "Failed Toggle",
    "editCombo": "Edit Combo",
    "testResults": "Test Results",
    "searchQuery": "Search Query",
    "addCcCompatible": "Add Cc Compatible",
    "duplicate": "Duplicate",
    "createCombo": "Create Combo",
    "searchTypeWeb": "Search Type Web",
    "addChain": "Add Chain",
    "prefixLabel": "Prefix Label",
    "listModelsDesc": "List Models Desc",
    "databaseSize": "Database Size",
    "chainCreated": "Chain Created",
    "providerTestTimeout": "Provider Test Timeout",
    "routingStrategy": "Routing Strategy",
    "translateAction": "Translate Action",
    "exportFailed": "Export Failed",
    "connectedVerificationPending": "Connected Verification Pending",
    "a2aQuickStartTitle": "A2A Quick Start Title",
    "couldNotTest": "Could Not Test",
    "testAllCompatible": "Test All Compatible",
    "anthropicCompatibleName": "Anthropic Compatible Name",
    "disabling": "Disabling",
    "failedEnable": "Failed Enable",
    "categoryUtility": "Category Utility",
    "customUrlOptional": "Custom Url Optional",
    "localProviders": "Local Providers",
    "comboNamePlaceholder": "Combo Name Placeholder",
    "memoryRss": "Memory Rss",
    "disableProvider": "Disable Provider",
    "welcomeDesc": "Welcome Desc",
    "nameLabel": "Name Label",
    "allOperational": "All Operational",
    "backupNow": "Backup Now",
    "providerMaxRetriesAria": "Provider Max Retries Aria",
    "textToSpeechDesc": "Text To Speech Desc",
    "machineId": "Machine Id",
    "globalProxy": "Global Proxy",
    "hitsMisses": "Hits Misses",
    "testDesc": "Test Desc",
    "chatDesc": "Chat Desc",
    "importSuccess": "Import Success",
    "chat": "Chat",
    "a2aQuickStartStep1": "A2A Quick Start Step1",
    "importFailed": "Import Failed",
    "inputPlaceholder": "Input Placeholder",
    "providerModelsTitle": "Provider Models Title",
    "lastBackup": "Last Backup",
    "yourEndpoint": "Your Endpoint",
    "autoDisableThresholdDesc": "Auto Disable Threshold Desc",
    "rerankDesc": "Rerank Desc",
    "modelsPathPlaceholder": "Models Path Placeholder",
    "noCombosYet": "No Combos Yet",
    "connectedVerificationPendingWithError": "Connected Verification Pending With Error",
    "comboDefaultsGuideHint1": "Combo Defaults Guide Hint1",
    "enableCloudTitle": "Enable Cloud Title",
    "configuredProvidersHint": "Configured Providers Hint",
    "paused": "Paused",
    "llmProviders": "Llm Providers",
    "enableCombo": "Enable Combo",
    "removeProviderOverrideAria": "Remove Provider Override Aria",
    "nodeVersion": "Node Version",
    "openai": "Openai",
    "exportFailedWithError": "Export Failed With Error",
    "proxyConfigured": "Proxy Configured",
    "concurrencyPerModel": "Concurrency Per Model",
    "protocolTasksLabel": "Protocol Tasks Label",
    "oauthProviders": "Oauth Providers",
    "lockedCount": "Locked Count",
    "deleteChainConfirm": "Delete Chain Confirm",
    "recentTranslations": "Recent Translations",
    "zedImportButton": "Zed Import Button",
    "responsesDesc": "Responses Desc",
    "testedCount": "Tested Count",
    "providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder",
    "signatureDefaults": "Signature Defaults",
    "errorCreating": "Error Creating",
    "timeRangeYear": "Time Range Year",
    "compatibleLabel": "Compatible Label",
    "cloudDisabledSuccess": "Cloud Disabled Success",
    "deleteConfirm": "Delete Confirm",
    "check": "Check",
    "safeSearch": "Safe Search",
    "protocolLastActivity": "Protocol Last Activity",
    "openMcpDashboard": "Open Mcp Dashboard",
    "testBenchTab": "Test Bench Tab",
    "chatPathLabel": "Chat Path Label",
    "retryDelay": "Retry Delay",
    "errorUpdating": "Error Updating",
    "ideCliIntegrations": "Ide Cli Integrations",
    "imageGeneration": "Image Generation",
    "apiKeyRequired": "Api Key Required",
    "resetAllTitle": "Reset All Title",
    "connectionError": "Connection Error",
    "modelName": "Model Name",
    "apiKeyForCheck": "Api Key For Check",
    "cloudRequestTimeout": "Cloud Request Timeout",
    "showConfiguredOnly": "Show Configured Only",
    "showFreeOnly": "무료만",
    "addFirstProvider": "첫 번째 공급자 추가",
    "addFirstProviderDesc": "OmniRoute를 통해 요청 라우팅을 시작하려면 AI 공급자를 연결하세요. 무료 공급자, API 키 또는 OAuth 계정을 사용할 수 있습니다.",
    "learnMore": "자세히 알아보기",
    "includeDomains": "Include Domains",
    "promptCache": "Prompt Cache",
    "cloudConnected": "Cloud Connected",
    "deleteChain": "Delete Chain",
    "chatPathPlaceholder": "Chat Path Placeholder",
    "databasePath": "Database Path",
    "usingLocalServer": "Using Local Server",
    "globalComboConfig": "Global Combo Config",
    "backupFailed": "Backup Failed",
    "tabProtocols": "Tab Protocols",
    "continue": "Continue",
    "categorySearch": "Category Search",
    "rateLimitStatus": "Rate Limit Status",
    "repairEnvSuccess": "Repair Env Success",
    "nameRequired": "Name Required",
    "country": "Country",
    "trackMetricsDesc": "Track Metrics Desc",
    "durationSecondsShort": "Duration Seconds Short",
    "formatConverterDescription": "Format Converter Description",
    "cloudBenefitAccess": "Cloud Benefit Access",
    "maxRetries": "Max Retries",
    "queueTimeout": "Queue Timeout",
    "addProvider": "Add Provider",
    "realtime": "Realtime",
    "totalTranslations": "Total Translations",
    "protocolActiveStreamsLabel": "Protocol Active Streams Label",
    "repairEnv": "Repair Env",
    "modelsCount": "Models Count",
    "viewBackups": "View Backups",
    "responsesApi": "Responses Api",
    "copyComboName": "Copy Combo Name",
    "failures": "Failures",
    "failedUpdate": "Failed Update",
    "imageDesc": "Image Desc",
    "failedCreate": "Failed Create",
    "remainingOfLimit": "Remaining Of Limit",
    "protocolsTitle": "Protocols Title",
    "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc",
    "source": "Source",
    "failed": "Failed",
    "apiKeyMgmt": "Api Key Mgmt",
    "mcpQuickStartStep1": "Mcp Quick Start Step1",
    "runTest": "Run Test",
    "loadingFallbackChains": "Loading Fallback Chains",
    "healthy": "Healthy",
    "version": "Version",
    "saveBlockWeighted": "Save Block Weighted",
    "zedImportNone": "Zed Import None",
    "noBackupsYet": "No Backups Yet",
    "noGlobalProxy": "No Global Proxy",
    "noModels": "No Models",
    "stickyLimit": "Sticky Limit",
    "passedCount": "Passed Count",
    "zedImportFailed": "Zed Import Failed",
    "saving": "Saving",
    "testAll": "Test All",
    "globalProxyDesc": "Global Proxy Desc",
    "latencyP99": "Latency P99",
    "connectingToCloud": "Connecting To Cloud",
    "responses": "Responses",
    "errorDeleting": "Error Deleting",
    "openaiPrefixPlaceholder": "Openai Prefix Placeholder",
    "enterPassword": "Enter Password",
    "openA2aDashboard": "Open A2A Dashboard",
    "enableProvider": "Enable Provider",
    "modeTest": "Mode Test",
    "failedDeleteChain": "Failed Delete Chain",
    "providerDesc": "Provider Desc",
    "templateLoadHint": "Template Load Hint",
    "lastFailure": "Last Failure",
    "moveDown": "Move Down",
    "providerLabel": "Provider Label",
    "clearCacheFailed": "Clear Cache Failed",
    "imagesGenerations": "Images Generations",
    "repairEnvWorking": "Repair Env Working",
    "millisecondsShort": "Milliseconds Short",
    "globalLabel": "Global Label",
    "failuresPlural": "Failures Plural",
    "completionsLegacyDesc": "Completions Legacy Desc",
    "searchProviders": "Search Providers",
    "chatPathHint": "Chat Path Hint",
    "defaultStrategyDesc": "Default Strategy Desc",
    "latencyP95": "Latency P95",
    "textToSpeech": "Text To Speech",
    "searchType": "Search Type",
    "messages": "Messages",
    "aggregatorsGateways": "Aggregators Gateways",
    "comboStrategyAria": "Combo Strategy Aria",
    "input": "Input",
    "testingConnection": "Testing Connection",
    "excludeDomains": "Exclude Domains",
    "webCookieProviders": "Web Cookie Providers",
    "allTestsPassed": "All Tests Passed",
    "openaiCompatibleName": "Openai Compatible Name",
    "warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing",
    "comboDefaultsGuideTitle": "Combo Defaults Guide Title",
    "hoursAgo": "Hours Ago",
    "notAvailable": "Not Available",
    "skipAndContinue": "Skip And Continue",
    "moderations": "Moderations",
    "proxyConfig": "Proxy Config",
    "upstreamProxyProviders": "Upstream Proxy Providers",
    "exportAll": "Export All",
    "queuedCount": "Queued Count",
    "resetAll": "Reset All",
    "noTranslations": "No Translations",
    "avgLatency": "Avg Latency",
    "throttleStatus": "Throttle Status",
    "backupRetentionDesc": "Backup Retention Desc",
    "noCBData": "No Cb Data",
    "chainDeleted": "Chain Deleted",
    "timeLeft": "Time Left",
    "expirationBannerExpired": "Expiration Banner Expired",
    "language": "Language",
    "invalidFileType": "Invalid File Type",
    "monitoredProviders": "Monitored Providers",
    "errors": "Errors",
    "heap": "Heap",
    "chatCompletions": "Chat Completions",
    "exampleTemplatesHint": "Example Templates Hint",
    "retryDelayLabel": "Retry Delay Label",
    "audioTranscription": "Audio Transcription",
    "fallbackChainsDesc": "Fallback Chains Desc",
    "exampleTemplates": "Example Templates",
    "connectionsCount": "Connections Count",
    "modelsPathLabel": "Models Path Label",
    "activeProvidersHint": "Active Providers Hint",
    "activeLockouts": "Active Lockouts",
    "invalid": "Invalid",
    "skipPassword": "Skip Password",
    "moveUp": "Move Up",
    "timeRange": "Time Range",
    "stickyLimitDesc": "Sticky Limit Desc",
    "cloudBenefitEdge": "Cloud Benefit Edge",
    "custom": "Custom",
    "verifying": "Verifying",
    "baseUrlLabel": "Base Url Label",
    "setPassword": "Set Password",
    "safeSearchStrict": "Safe Search Strict",
    "noChangesSinceBackup": "No Changes Since Backup",
    "modelsPathHint": "Models Path Hint",
    "audioTranscriptions": "Audio Transcriptions",
    "testCombo": "Test Combo",
    "mcpQuickStartTitle": "Mcp Quick Start Title",
    "comboUpdated": "Combo Updated",
    "weighted": "Weighted",
    "providers": "Providers",
    "ccCompatibleLabel": "Cc Compatible Label",
    "noFallbackChainsDesc": "No Fallback Chains Desc",
    "yesImport": "Yes Import",
    "lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint",
    "tabApis": "Tab Apis",
    "sectionDescription": "Section Description",
    "filter": "Filter",
    "purgeLogsFailed": "Purge Logs Failed",
    "latency": "Latency",
    "testAllOAuth": "Test All O Auth",
    "mcpQuickStartStep3": "Mcp Quick Start Step3",
    "repairEnvFailed": "Repair Env Failed",
    "zedImportHint": "Zed Import Hint",
    "modelsAcrossEndpoints": "Models Across Endpoints",
    "autoDisableBannedAccounts": "Auto Disable Banned Accounts",
    "securityDesc": "Security Desc",
    "listModels": "List Models",
    "backupRestore": "Backup Restore",
    "target": "Target",
    "zedImportSuccess": "Zed Import Success",
    "lastHeaderUpdate": "Last Header Update",
    "categoryCore": "Category Core",
    "noFallbackChains": "No Fallback Chains",
    "noSearchProviders": "No Search Providers",
    "autoBalance": "Auto Balance",
    "noModelsYet": "No Models Yet",
    "signatureFamily": "Signature Family",
    "externalApiCalls": "External Api Calls",
    "providerOverridesDesc": "Provider Overrides Desc",
    "signatureTool": "Signature Tool",
    "connectionFailed": "Connection Failed",
    "activeLimitersPlural": "Active Limiters Plural",
    "doneDesc": "Done Desc",
    "down": "Down",
    "noDataYet": "No Data Yet",
    "activeProviders": "Active Providers",
    "nameInvalid": "Name Invalid",
    "skip": "Skip",
    "createChain": "Create Chain",
    "audioSpeech": "Audio Speech",
    "cacheCleared": "Cache Cleared",
    "searchTypeNews": "Search Type News",
    "durationMillisecondsShort": "Duration Milliseconds Short",
    "addOpenAICompatible": "Add Open Ai Compatible",
    "chatTesterTab": "Chat Tester Tab",
    "queued": "Queued",
    "domainPlaceholder": "Domain Placeholder",
    "durationMinutesShort": "Duration Minutes Short",
    "verifyingConnection": "Verifying Connection",
    "imageProviders": "Image Providers",
    "protocolToolsLabel": "Protocol Tools Label",
    "queryPlaceholder": "Query Placeholder",
    "videoGeneration": "Video Generation",
    "timeRangeWeek": "Time Range Week",
    "limitExhausted": "Limit Exhausted",
    "failedDisable": "Failed Disable",
    "inMemoryNote": "In Memory Note",
    "compatibleHint": "Compatible Hint",
    "errorShort": "Error Short",
    "advancedHint": "Advanced Hint",
    "restoreFailed": "Restore Failed",
    "searchProvidersHeading": "Search Providers Heading",
    "comboName": "Combo Name",
    "autoDisableDescription": "Auto Disable Description",
    "embeddingsDesc": "Embeddings Desc",
    "operational": "Operational",
    "testAllApiKey": "Test All Api Key",
    "backupCreated": "Backup Created",
    "errorDuringImport": "Error During Import",
    "comboDefaultsGuideHint2": "Combo Defaults Guide Hint2",
    "connecting": "Connecting",
    "fillModelAndProviders": "Fill Model And Providers",
    "syncing": "Syncing",
    "resetConfirm": "Reset Confirm",
    "trackMetrics": "Track Metrics",
    "successful": "Successful",
    "recovering": "Recovering",
    "autoDisableThreshold": "Auto Disable Threshold",
    "anthropic": "Anthropic",
    "syncingData": "Syncing Data",
    "cloudBenefitPorts": "Cloud Benefit Ports",
    "compatibleProviders": "Compatible Providers",
    "freeTierProviders": "무료 계층 공급자",
    "freeTierLabel": "무료 등급 이용 가능",
    "freeTierProvidersDesc": "무료 등급이 있는 공급자 - 일부는 API 키 등록이 필요하고 다른 공급자는 자격 증명이 전혀 필요하지 않습니다.",
    "clearCache": "Clear Cache",
    "reqs": "Reqs",
    "addAnthropicCompatible": "Add Anthropic Compatible",
    "apiKeyProviders": "Api Key Providers",
    "tabsAria": "Tabs Aria",
    "resetting": "Resetting",
    "millisecondsAbbr": "Milliseconds Abbr",
    "backupReasonPreRestore": "Backup Reason Pre Restore",
    "disableCloud": "Disable Cloud",
    "newProviderNameAria": "New Provider Name Aria",
    "passwordsMismatch": "Passwords Mismatch",
    "a2aQuickStartStep3": "A2A Quick Start Step3",
    "liveMonitorDescriptionSuffix": "Live Monitor Description Suffix",
    "failedAddProvider": "Failed Add Provider",
    "addAtLeastOneProvider": "Add At Least One Provider",
    "reasonSeparator": "Reason Separator",
    "zedImporting": "Zed Importing",
    "confirmPasswordPlaceholder": "Confirm Password Placeholder",
    "whatYouGet": "What You Get",
    "signatureSession": "Signature Session",
    "errorCountNoCode": "Error Count No Code",
    "testing": "Testing",
    "providersCommaSeparated": "Providers Comma Separated",
    "exportDatabase": "Export Database",
    "hitRate": "Hit Rate",
    "completionsLegacy": "Completions Legacy",
    "removeModel": "Remove Model",
    "timeRangeDay": "Time Range Day",
    "cloudRequestFailed": "Cloud Request Failed",
    "updatedAt": "Updated At",
    "monitoredProvidersHint": "Monitored Providers Hint",
    "connectionSuccessful": "Connection Successful",
    "latencyP50": "Latency P50",
    "logsDeleted": "Logs Deleted",
    "chatTester": "Chat Tester",
    "safeSearchOff": "Safe Search Off",
    "nameHint": "Name Hint",
    "debugToggle": "Debug Toggle",
    "embedding": "Embedding",
    "issuesLabel": "Issues Label",
    "optionAny": "Option Any",
    "maxNestingDepth": "Max Nesting Depth",
    "rerank": "Rerank",
    "checking": "Checking",
    "getStarted": "Get Started",
    "restoreSuccess": "Restore Success",
    "issuesDetected": "Issues Detected",
    "signatureCache": "Signature Cache",
    "modelLockouts": "Model Lockouts",
    "usingCloudProxy": "Using Cloud Proxy",
    "loadingHealth": "Loading Health",
    "providerOverrides": "Provider Overrides",
    "audioTranscriptionDesc": "Audio Transcription Desc",
    "learnedFromHeaders": "Learned From Headers",
    "totalRequests": "Total Requests",
    "cloudUnstableNote": "Cloud Unstable Note",
    "gamificationAdmin": "게임화 관리자",
    "monitorAnomaliesAndHealth": "이상 현상 및 시스템 상태 모니터링",
    "flaggedAnomalies": "플래그가 지정된 이상 현상",
    "noAnomaliesDetected": "이상 징후가 감지되지 않음",
    "apiKey": "API 키",
    "xpLastHour": "경험치 (1시간)",
    "zScore": "Z-점수",
    "tokensCommunityServers": "커뮤니티 서버",
    "tokensServerNamePlaceholder": "서버 이름",
    "tokensApiKeyPlaceholder": "API 키",
    "tokensTokenBalance": "토큰 잔액",
    "tokensSendTokens": "토큰 보내기",
    "tokensRecipientApiKeyId": "수신자 API 키 ID",
    "tokensRecipientApiKeyIdPlaceholder": "수신자 API 키 ID를 입력하세요.",
    "tokensReasonOptional": "이유(선택사항)",
    "tokensReasonPlaceholder": "예를 들어 보너스, 보상",
    "tokensTransactionHistory": "거래 내역",
    "tokensNoTransactionsYet": "아직 거래가 없습니다.",
    "tokensInviteCodes": "초대 코드",
    "tokensMaxUses": "최대 사용",
    "tokensRedeemCode": "코드 사용",
    "tokensRedeemCodePlaceholder": "초대 코드를 입력하세요",
    "tokensYourActiveInvites": "귀하의 활성 초대",
    "tierCoverageTitle": "계층 적용 범위",
    "tierCoverageSubtitle": "대체 계층별로 구성된 공급자",
    "batchDetailCopyId": "신분증 복사",
    "batchDetailClose": "닫기",
    "batchDetailEndpoint": "엔드포인트",
    "batchDetailModel": "모델",
    "batchDetailWindow": "창",
    "batchDetailCreated": "생성됨",
    "providerTopologyEmpty": "아직 연결된 제공업체가 없습니다.",
    "badgeToastUnlocked": "배지 잠금 해제!",
    "batchListSearchPlaceholder": "ID, 엔드포인트, 모델로 검색…",
    "batchListDeleteAllCompletedTitle": "완료된 모든 배치 삭제",
    "batchListBatchesTable": "배치",
    "changelogViewerLoading": "GitHub에서 변경 로그를 로드하는 중...",
    "profileLoading": "프로필 로드 중...",
    "profileHowToEarn": "적립 방법",
    "bootstrapBannerDismiss": "닫기",
    "batchListDeleteBatchTitle": "배치 및 해당 파일 삭제",
    "leaderboardYourRank": "당신의 순위",
    "leaderboardLoading": "리더보드 로드 중...",
    "batchFileDetailCopyId": "신분증 복사",
    "batchFileDetailClose": "닫기",
    "batchFileDetailFailedToLoad": "파일 콘텐츠를 로드하지 못했습니다.",
    "batchFilesListSearchPlaceholder": "ID나 파일명으로 검색하세요…",
    "batchFilesListFilesTable": "파일",
    "batchPageLoadingMore": "더 로드 중…",
    "recommended": "__MISSING__:Recommended",
    "batchConceptTitle": "Batch processing",
    "batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.",
    "batchConceptHowItWorks": "How it works",
    "batchConceptBenefit50pct": "50% discount on input + output tokens",
    "batchConceptAsync24h": "Async with a 24h completion window",
    "batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings",
    "filesConceptTitle": "Batch files",
    "filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.",
    "filesConceptInput": "Input — your JSONL with one request per line",
    "filesConceptOutput": "Output — results from completed requests",
    "filesConceptError": "Errors — requests that failed",
    "filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)",
    "wizardTitle": "New batch",
    "wizardClose": "Close",
    "wizardNext": "Next",
    "wizardBack": "Back",
    "wizardCancel": "Cancel",
    "wizardCreate": "Create batch",
    "wizardCreating": "Creating…",
    "wizardStep1Destination": "Destination",
    "wizardStep2Input": "Input",
    "wizardStep3Validate": "Validate",
    "wizardStep4Cost": "Cost & create",
    "wizardProviderLabel": "Provider",
    "wizardEndpointLabel": "Endpoint",
    "wizardModelLabel": "Model",
    "wizardInputKindJsonl": "JSONL",
    "wizardInputKindCsv": "CSV (we'll convert)",
    "wizardDropOrPick": "Drop a file or click to pick",
    "wizardCsvMappingTitle": "Map CSV columns → request fields",
    "wizardCsvMappingAddField": "Add field",
    "wizardValidationOk": "All lines valid",
    "wizardValidationErrors": "Validation errors",
    "wizardValidationPreview": "Preview (first 5 requests)",
    "wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.",
    "wizardCostSync": "Sync cost",
    "wizardCostBatch": "Batch cost (-50%)",
    "wizardCostSavings": "Savings",
    "wizardCostEstimatedNotice": "Estimated cost — real billing may vary.",
    "wizardErrorUpload": "Failed to upload file. Try again.",
    "wizardErrorCreate": "Failed to create batch. Try again.",
    "wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.",
    "uploadModalTitle": "Upload batch file",
    "uploadModalDropOrPick": "Drop a .jsonl file or click to pick",
    "uploadModalUpload": "Upload",
    "uploadModalCancel": "Cancel",
    "uploadModalError": "Upload failed. Try again.",
    "uploadModalSuccess": "Uploaded",
    "uploadModalSizeLimit": "Max 512 MB",
    "batchListNewButton": "New batch",
    "batchListAutoRefresh": "Auto-refresh 30s",
    "batchListCostColumn": "Cost",
    "batchActionCancel": "Cancel",
    "batchActionDownloadOutput": "Download output",
    "batchActionDownloadErrors": "Download errors",
    "batchActionRetry": "Retry failed",
    "batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.",
    "expirationBadgeCritical": "Critical",
    "expirationBadgeWarning": "Soon",
    "expirationBadgeNormal": "Pending",
    "expirationBadgeExpired": "Expired",
    "filesListUploadButton": "Upload",
    "filesListUsedByColumn": "Used by",
    "filesListUsedByNone": "None",
    "filesListDelete": "Delete",
    "filesListDownload": "Download",
    "batchDetailActionCancel": "Cancel batch",
    "batchDetailActionRetry": "Retry failed requests",
    "batchDetailCancelling": "Cancelling…",
    "batchDetailRetrying": "Preparing retry…",
    "batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.",
    "batchActionCancelError": "Failed to cancel batch. Try again.",
    "batchActionRetryError": "Failed to retry failed requests. Try again.",
    "batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)",
    "filesListUsedByRoleInput": "input",
    "filesListUsedByRoleOutput": "output",
    "filesListUsedByRoleError": "error",
    "batchListProgressPartial": "(partial)",
    "filesListSizeColumn": "Size",
    "batchListProviderColumn": "Provider",
    "batchListProviderUnknown": "—",
    "batchListBatchCreated": "Batch {id} created — refreshing list…",
    "batchListBatchCreatedDismiss": "Dismiss",
    "batchListRefreshing": "Refreshing…",
    "batchListRefresh": "Refresh",
    "uploadFileModalRemove": "Remove",
    "uploadFileModalUploading": "Uploading…",
    "wizardInputReading": "Reading file…",
    "wizardInputReady": "Ready",
    "wizardInputLargeFileLabel": "Large file — sampling validation",
    "wizardInputCsvJsonlReady": "JSONL generated — ready to validate.",
    "wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.",
    "wizardCostWindow24h": "24h completion window",
    "wizardValidationFieldsOk": "required fields valid",
    "batchListProviderOther": "Other",
    "batchListTitle": "Batches",
    "batchListCount": "{count} batches",
    "batchListRemovingCompleted": "Removing…",
    "batchListRemoveCompleted": "Remove completed",
    "batchListTableStatus": "Status",
    "batchListTableId": "ID",
    "batchListTableEndpoint": "Endpoint",
    "batchListTableModel": "Model",
    "batchListTableProgress": "Progress",
    "batchListTableCreated": "Created",
    "batchListTableExpires": "Expires",
    "batchListLoading": "Loading…",
    "batchListEmpty": "No batches found",
    "batchListValidating": "Validating…",
    "batchStatusAll": "All statuses",
    "batchStatusInProgress": "In progress",
    "batchStatusValidating": "Validating",
    "batchStatusFinalizing": "Finalizing",
    "batchStatusCompleted": "Completed",
    "batchStatusFailed": "Failed",
    "batchStatusCancelled": "Cancelled",
    "batchStatusCancelling": "Cancelling",
    "batchStatusExpired": "Expired",
    "batchStatusCompletedWithFailures": "completed with failures",
    "batchStatusInProgressWithFailures": "in progress (with failures)",
    "batchStatusFinalizingWithFailures": "finalizing (with failures)",
    "batchStatusCancelledWithFailures": "cancelled with failures",
    "batchStatusExpiredWithFailures": "expired (partial)",
    "wizardCostEstimating": "Estimating cost…",
    "wizardCostRequests": "Requests",
    "wizardCostInputTok": "input tok",
    "wizardCostOutputTok": "output tok",
    "wizardCostWindow": "Window",
    "wizardDestinationSelectProvider": "Select a provider…",
    "wizardDestinationSelectModel": "Select a model…",
    "wizardDestinationConnectProvider": "Connect a provider"
  },
  "sidebar": {
    "home": "홈",
    "dashboard": "대시보드",
    "providers": "공급자",
    "combos": "콤보",
    "usage": "사용법",
    "analytics": "분석",
    "costs": "비용",
    "health": "건강",
    "proxy": "프록시",
    "limits": "한도 및 할당량",
    "cliTools": "CLI 도구",
    "media": "미디어",
    "settings": "설정",
    "translator": "번역기",
    "playground": "플레이그라운드",
    "searchTools": "Search Tools",
    "agents": "에이전트",
    "cloudAgents": "클라우드 에이전트",
    "memory": "Memory",
    "skills": "Skills",
    "omniSkills": "옴니스킬",
    "agentSkills": "에이전트 기술",
    "docs": "문서",
    "issues": "문제",
    "endpoints": "엔드포인트",
    "endpointsSubtitle": "귀하의 AI 연결 URL",
    "apiManager": "API 관리자",
    "apiManagerSubtitle": "API 키 및 액세스 관리",
    "embeddedServices": "__MISSING__:Embedded Services",
    "embeddedServicesSubtitle": "__MISSING__:Manage local proxy services",
    "logs": "로그",
    "webhooks": "웹훅",
    "webhooksSubtitle": "이벤트 알림 받기",
    "combosSubtitle": "장애 조치를 위한 그룹 공급자",
    "batchSubtitle": "여러 요청 처리",
    "contextCavemanSubtitle": "신속한 압축",
    "contextRtkSubtitle": "출력 필터링",
    "auditLog": "감사 로그",
    "shutdown": "종료",
    "restart": "다시 시작",
    "shutdownConfirm": "OmniRoute를 종료하시겠습니까?",
    "restartConfirm": "OmniRoute를 다시 시작하시겠습니까?",
    "version": "v{version}",
    "debug": "디버그",
    "system": "시스템",
    "help": "도움말",
    "primarySection": "Main",
    "cliSection": "CLI",
    "debugSection": "Debug",
    "systemSection": "System",
    "helpSection": "Help",
    "serverDisconnected": "서버 연결 끊김",
    "serverDisconnectedMsg": "프록시 서버가 중지되었거나 다시 시작되는 중입니다.",
    "expandSidebar": "사이드바 확장",
    "collapseSidebar": "사이드바 접기",
    "themes": "Themes",
    "presetColors": "Popular colors",
    "createTheme": "Create theme",
    "chooseColor": "Pick one color",
    "themeCoral": "Coral",
    "themeBlue": "Blue",
    "themeRed": "Red",
    "themeGreen": "Green",
    "themeViolet": "Violet",
    "themeOrange": "Orange",
    "themeCyan": "Cyan",
    "cliToolsShort": "도구",
    "cache": "Cache",
    "cacheShort": "Cache",
    "batch": "Batch Jobs",
    "themeSystem": "Theme System",
    "whitelabelingDesc": "Whitelabeling Desc",
    "switchThemes": "Switch Themes",
    "themeAccentDesc": "Theme Accent Desc",
    "uploadFavicon": "Upload Favicon",
    "themeDark": "Theme Dark",
    "customLogoDesc": "Custom Logo Desc",
    "sidebarVisibilityToggle": "Sidebar Visibility Toggle",
    "themeAccent": "Theme Accent",
    "resetFavicon": "Reset Favicon",
    "whitelabeling": "Whitelabeling",
    "darkMode": "Dark Mode",
    "uploadLogo": "Upload Logo",
    "themeLight": "Theme Light",
    "appName": "App Name",
    "appNameDesc": "App Name Desc",
    "resetLogo": "Reset Logo",
    "customFavicon": "Custom Favicon",
    "hideHealthLogs": "Hide Health Logs",
    "customLogo": "Custom Logo",
    "appearance": "Appearance",
    "themeSelectionAria": "Theme Selection Aria",
    "themeCreate": "Theme Create",
    "customFaviconDesc": "Custom Favicon Desc",
    "logoPreview": "Logo Preview",
    "themeCustom": "Theme Custom",
    "hideHealthLogsDesc": "Hide Health Logs Desc",
    "faviconPreview": "Favicon Preview",
    "changelog": "Changelog",
    "contextSection": "Context & Cache",
    "contextCaveman": "Caveman",
    "contextRtk": "RTK",
    "contextCombos": "Engine Combos",
    "routingSection": "Routing",
    "protocolsSection": "Protocols",
    "agentsAiSection": "Agents & AI",
    "cacheContextSection": "Cache & Context",
    "analyticsSection": "Analytics",
    "costsSection": "Costs",
    "monitoringSection": "Monitoring",
    "auditSecuritySection": "Audit & Security",
    "devtoolsSection": "Dev Tools",
    "configurationSection": "Configuration",
    "aiFeaturesSection": "AI Features",
    "mcp": "MCP",
    "a2a": "A2A",
    "apiEndpoints": "API Endpoints",
    "batchFiles": "Files",
    "analyticsEvals": "Evals",
    "analyticsSearch": "Search",
    "analyticsUtilization": "Utilization",
    "analyticsComboHealth": "Combo Health",
    "analyticsCompression": "Compression",
    "costsBudget": "Budget",
    "costsQuotaShare": "Quota Sharing",
    "costsPricing": "Pricing",
    "logsProxy": "Proxy Logs",
    "logsConsole": "Console",
    "logsActivity": "Activity",
    "auditMcp": "MCP Audit",
    "auditA2a": "A2A 감사",
    "settingsGeneral": "General",
    "settingsAppearance": "Appearance",
    "settingsAi": "AI Settings",
    "settingsSecurity": "Security",
    "settingsFeatureFlags": "기능 플래그",
    "settingsAuthz": "__MISSING__:Authz",
    "settingsRouting": "Routing",
    "settingsResilience": "Resilience",
    "settingsAdvanced": "Advanced",
    "omniProxySection": "OmniProxy",
    "quotaTracker": "Provider Quota",
    "providerQuota": "Provider Quota",
    "runtime": "Runtime",
    "consoleLogs": "Console Logs",
    "globalRouting": "Global Routing",
    "mitmProxy": "MITM Proxy",
    "oneProxy": "1Proxy",
    "agenticFeaturesSection": "Agentic Features",
    "otherFeaturesSection": "Other Features",
    "compressionContextGroup": "Compression Context",
    "toolsGroup": "Tools",
    "integrationsGroup": "Integrations",
    "proxyGroup": "Proxy",
    "costsParametersGroup": "Costs Parameters",
    "auditGroup": "Audit",
    "batchGroup": "Batch",
    "homeSubtitle": "Dashboard overview",
    "providersSubtitle": "Manage AI providers",
    "quotaTrackerSubtitle": "Track usage limits",
    "providerQuotaSubtitle": "Track provider usage limits",
    "runtimeSubtitle": "Realtime resilience & sessions",
    "contextCombosSubtitle": "Combine compression engines",
    "cliToolsSubtitle": "Configure CLI runtimes",
    "agentsSubtitle": "Manage local agents",
    "cloudAgentsSubtitle": "Manage cloud-based agents",
    "apiEndpointsSubtitle": "Expose custom endpoints",
    "proxySubtitle": "HTTP proxy settings",
    "mitmProxySubtitle": "MITM interception",
    "oneProxySubtitle": "Public proxy gateway",
    "leaderboard": "Leaderboard",
    "profile": "Profile",
    "tokens": "Tokens",
    "leaderboardSubtitle": "Rankings and achievements",
    "profileSubtitle": "Account and preferences",
    "tokensSubtitle": "Token usage and budgets",
    "usageSubtitle": "Traffic and usage stats",
    "analyticsComboHealthSubtitle": "Combo target reliability",
    "analyticsUtilizationSubtitle": "Provider utilization",
    "costsSubtitle": "Spend breakdown",
    "cacheSubtitle": "Cache hit rates",
    "analyticsCompressionSubtitle": "Token savings stats",
    "analyticsSearchSubtitle": "Search tool analytics",
    "analyticsEvalsSubtitle": "Eval suite results",
    "logsSubtitle": "Application logs",
    "logsProxySubtitle": "Proxy traffic logs",
    "consoleLogsSubtitle": "Console output",
    "logsActivitySubtitle": "User activity log",
    "healthSubtitle": "System health check",
    "costsPricingSubtitle": "Per-model pricing rules",
    "costsBudgetSubtitle": "Budget limits",
    "costsQuotaShareSubtitle": "Share provider quotas across keys",
    "auditLogSubtitle": "Authorization audit",
    "auditMcpSubtitle": "MCP server audit",
    "auditA2aSubtitle": "A2A protocol audit",
    "translatorSubtitle": "Format conversion",
    "playgroundSubtitle": "Test prompts live",
    "searchToolsSubtitle": "Search tool registry",
    "memorySubtitle": "Persistent agent memory",
    "omniSkillsSubtitle": "Sandbox skill registry",
    "agentSkillsSubtitle": "A2A skill registry",
    "mcpSubtitle": "MCP server controls",
    "a2aSubtitle": "A2A protocol server",
    "mediaSubtitle": "Cached media files",
    "batchFilesSubtitle": "Batch input/output files",
    "settingsSubtitle": "All settings",
    "settingsGeneralSubtitle": "App basics",
    "settingsAppearanceSubtitle": "Theme and layout",
    "settingsAiSubtitle": "AI behavior defaults",
    "globalRoutingSubtitle": "Global routing rules",
    "settingsResilienceSubtitle": "Retries and breakers",
    "settingsAdvancedSubtitle": "Power user options",
    "settingsSecuritySubtitle": "Auth and encryption",
    "settingsFeatureFlagsSubtitle": "시스템 기능 전환",
    "settingsSidebar": "Sidebar",
    "settingsSidebarSubtitle": "Customize sidebar layout",
    "settingsAuthzSubtitle": "__MISSING__:Route inventory and bypass policy",
    "docsSubtitle": "Documentation",
    "issuesSubtitle": "Report a bug",
    "changelogSubtitle": "Release notes"
  },
  "webhooks": {
    "title": "웹훅",
    "description": "시스템 이벤트에 대한 HTTP 콜백을 구성합니다.",
    "configuredWebhooks": "구성된 웹훅",
    "configuredWebhooksDesc": "배달 끝점, 구독된 이벤트, 상태 및 테스트 전송을 관리합니다.",
    "addWebhook": "웹훅 추가",
    "editWebhook": "웹훅 편집",
    "name": "이름",
    "namePlaceholder": "생산 모니터링",
    "unnamedWebhook": "이름이 지정되지 않은 웹훅",
    "url": "엔드포인트 URL",
    "events": "이벤트",
    "allEvents": "모든 이벤트",
    "secret": "비밀",
    "secretPlaceholder": "비밀을 자동 생성하려면 비워두세요.",
    "secretEditPlaceholder": "현재 비밀을 유지하려면 비워두세요.",
    "status": "상태",
    "active": "활성",
    "inactive": "비활성",
    "errored": "오류 발생",
    "total": "합계",
    "lastTriggered": "마지막으로 트리거됨",
    "actions": "작업",
    "enabled": "활성화됨",
    "enabledDesc": "비활성화된 웹후크는 저장된 상태로 유지되지만 전달을 받지 않습니다.",
    "refresh": "새로고침",
    "loading": "웹훅 로드 중...",
    "never": "절대로",
    "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}",
    "testWebhook": "테스트 보내기",
    "testSuccess": "테스트 웹훅이 성공적으로 전송되었습니다.",
    "testFailed": "웹훅 테스트에 실패했습니다.",
    "saveSuccess": "웹훅이 성공적으로 저장되었습니다.",
    "saveFailed": "웹훅을 저장하지 못했습니다.",
    "loadFailed": "웹훅을 로드하지 못했습니다.",
    "delete": "삭제",
    "deleteConfirm": "이 웹훅을 삭제하시겠습니까?",
    "deleteSuccess": "웹훅이 삭제되었습니다.",
    "deleteFailed": "웹훅을 삭제하지 못했습니다.",
    "edit": "편집",
    "enable": "활성화",
    "disable": "비활성화",
    "noWebhooks": "아직 구성된 웹훅이 없습니다.",
    "signatureTitle": "웹훅 서명",
    "signatureDescription": "각 전달에는 웹훅 비밀을 사용하여 HMAC-SHA256으로 서명된 X-Webhook-Signature 헤더가 포함되어 있습니다. 페이로드를 신뢰하기 전에 서명을 확인하세요.",
    "wizard": {
      "cancel": "__MISSING__:Cancel",
      "step1Title": "__MISSING__:Select Integration",
      "step2Title": "__MISSING__:Configure Target",
      "step3Title": "__MISSING__:Events & Test",
      "back": "__MISSING__:Back",
      "next": "__MISSING__:Next",
      "finish": "__MISSING__:Finish",
      "step1Desc": "__MISSING__:Select the target integration system for this webhook."
    },
    "howItWorks": {
      "step1": "__MISSING__:Choose an integration provider (e.g. Slack, Discord, custom webhook) and set up the connection details.",
      "step2": "__MISSING__:Configure system events to subscribe to (e.g. completion errors, model fallbacks, or usage limits).",
      "step3": "__MISSING__:Verify the configuration by sending a test payload to make sure the endpoint receives it.",
      "step4": "__MISSING__:Secure your endpoint by validating the X-Webhook-Signature HMAC-SHA256 header using the webhook's secret.",
      "title": "__MISSING__:How Webhooks Work",
      "customOnly": "__MISSING__:Only applicable for custom endpoint integrations.",
      "hmacRecipeTitle": "__MISSING__:HMAC Verification Recipe",
      "hmacRecipe": "__MISSING__:To verify webhook payloads in Node.js, compute the HMAC-SHA256 of the raw request body using your secret key. Compare it to the X-Webhook-Signature header using timingSafeEqual.",
      "timeoutNote": "__MISSING__:Webhook deliveries have a timeout of 10 seconds.",
      "retryNote": "__MISSING__:Failed deliveries are retried up to 5 times with exponential backoff.",
      "docsLink": "__MISSING__:Read the full Webhooks developer guide",
      "hmacRecipePython": "__MISSING__:Python HMAC verification: hmac.new(secret, body, hashlib.sha256).hexdigest()",
      "hmacRecipeBash": "__MISSING__:Bash HMAC verification: echo -n \"$body\" | openssl dgst -sha256 -hmac \"$secret\""
    },
    "deliveries": {
      "title": "__MISSING__:Delivery Logs",
      "loadFailed": "__MISSING__:Failed to load webhook delivery logs.",
      "empty": "__MISSING__:No deliveries recorded yet. Trigger an event or send a test payload.",
      "status": "__MISSING__:Status",
      "event": "__MISSING__:Event",
      "latency": "__MISSING__:Latency",
      "at": "__MISSING__:Sent At"
    },
    "kinds": {
      "comingSoon": "__MISSING__:Coming Soon",
      "slack": "__MISSING__:Slack",
      "slackDesc": "__MISSING__:Post system events directly into a Slack channel",
      "telegram": "__MISSING__:Telegram",
      "telegramDesc": "__MISSING__:Send event messages using a Telegram bot",
      "discord": "__MISSING__:Discord",
      "discordDesc": "__MISSING__:Deliver real-time updates directly to a Discord server",
      "custom": "__MISSING__:Custom Webhook",
      "customDesc": "__MISSING__:Deliver system event payloads to any HTTPS endpoint",
      "email": "__MISSING__:Email Notification",
      "emailDesc": "__MISSING__:Receive summary updates via email",
      "pagerduty": "__MISSING__:PagerDuty",
      "pagerdutyDesc": "__MISSING__:Trigger alerts on PagerDuty for critical system issues",
      "teams": "__MISSING__:Microsoft Teams",
      "teamsDesc": "__MISSING__:Forward system notifications to Microsoft Teams channels"
    },
    "testPayloadSent": "__MISSING__:Test Payload Sent",
    "testResponse": "__MISSING__:Test Response",
    "validateUrl": {
      "checking": "__MISSING__:Checking URL...",
      "ok": "__MISSING__:URL is valid",
      "blockedPrivate": "__MISSING__:URL is a blocked private address",
      "invalidUrl": "__MISSING__:Invalid URL format"
    },
    "custom": {
      "endpointUrl": "__MISSING__:Endpoint URL",
      "endpointUrlPlaceholder": "__MISSING__:https://api.yourdomain.com/webhook",
      "secretKey": "__MISSING__:Secret Key",
      "secretKeyPlaceholder": "__MISSING__:Enter secret key or leave blank to auto-generate",
      "secretKeyHint": "__MISSING__:Used to sign the payload header for authentication."
    },
    "discord": {
      "webhookUrl": "__MISSING__:Discord Webhook URL",
      "webhookUrlPlaceholder": "__MISSING__:https://discord.com/api/webhooks/...",
      "webhookUrlHint": "__MISSING__:The webhook URL copied from your Discord channel integration settings.",
      "tutorial": "__MISSING__:How to create a Discord webhook:"
    },
    "slack": {
      "webhookUrl": "__MISSING__:Slack Webhook URL",
      "webhookUrlPlaceholder": "__MISSING__:https://hooks.slack.com/services/...",
      "webhookUrlHint": "__MISSING__:The webhook URL copied from your Slack Incoming Webhooks integration.",
      "tutorial": "__MISSING__:How to create a Slack webhook:"
    },
    "telegram": {
      "botToken": "__MISSING__:Telegram Bot Token",
      "botTokenPlaceholder": "__MISSING__:123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ",
      "botTokenHint": "__MISSING__:The HTTP API token received from @BotFather when creating your bot.",
      "chatId": "__MISSING__:Telegram Chat ID / Channel",
      "chatIdPlaceholder": "__MISSING__:-100123456789 or @channelname",
      "chatIdHint": "__MISSING__:The unique numerical identifier or public username of the chat/channel.",
      "tutorial": "__MISSING__:How to configure Telegram webhook:"
    }
  },
  "compliance": {
    "auditTitle": "감사",
    "auditDescription": "하나의 운영 보기에서 규정 준수 이벤트 및 MCP 도구 호출을 검토합니다.",
    "complianceTab": "규정 준수",
    "mcpTab": "MCP 감사",
    "title": "규정 준수 감사",
    "description": "규정 준수 감사 로그에 기록된 정책, 액세스, 공급자 및 보안 이벤트입니다.",
    "eventType": "이벤트 유형",
    "eventTypePlaceholder": "작업 또는 이벤트 유형별로 필터링",
    "severity": "심각도",
    "allSeverities": "모든 심각도",
    "info": "정보",
    "warning": "경고",
    "critical": "심각",
    "sourceIp": "소스 IP",
    "userOrKey": "사용자/키",
    "action": "액션",
    "result": "결과",
    "details": "세부정보",
    "timestamp": "타임스탬프",
    "from": "에서",
    "to": "받는 사람",
    "refresh": "새로고침",
    "export": "수출",
    "clearFilters": "필터 지우기",
    "loading": "감사 이벤트 로드 중...",
    "showing": "{total} 이벤트 중 {count} 표시 중",
    "policyViolation": "정책 위반",
    "accessDenied": "액세스가 거부되었습니다.",
    "injectionBlocked": "주입이 차단됨",
    "noEvents": "기록된 규정 준수 이벤트가 없습니다.",
    "failedFetch": "규정 준수 감사 로그를 가져오지 못했습니다.",
    "viewDetails": "세부정보 보기",
    "closeDetails": "세부정보 닫기",
    "notAvailable": "—",
    "system": "시스템",
    "previous": "이전",
    "next": "다음",
    "mcpAudit": "MCP 감사",
    "mcpAuditDesc": "MCP 서버에 의해 기록된 도구 호출 감사 항목입니다.",
    "failedFetchMcpAudit": "MCP 감사 로그를 가져오지 못했습니다.",
    "tool": "도구",
    "toolPlaceholder": "도구 이름으로 필터링",
    "duration": "기간",
    "apiKey": "API 키",
    "output": "출력",
    "allResults": "모든 결과",
    "success": "성공",
    "failure": "실패",
    "noMcpEvents": "기록된 MCP 감사 이벤트가 없습니다.",
    "a2aAudit": "A2A 감사",
    "a2aAuditDesc": "A2A 서버에 의해 기록된 작업 실행 감사 추적입니다.",
    "a2aShowingTasks": "{total} 작업 중 {count} 표시 중",
    "a2aSkill": "스킬",
    "a2aSkillPlaceholder": "스킬 이름으로 필터링",
    "a2aState": "상태",
    "a2aAllStates": "모든 주",
    "a2aStateSubmitted": "제출됨",
    "a2aStateWorking": "일 중",
    "a2aStateCompleted": "완료됨",
    "a2aStateFailed": "실패",
    "a2aStateCancelled": "취소됨",
    "a2aTaskId": "작업 ID",
    "a2aEvents": "이벤트",
    "a2aArtifacts": "유물",
    "a2aNoTasks": "기록된 A2A 작업이 없습니다.",
    "a2aLoadingTasks": "A2A 작업 로드 중..."
  },
  "themesPage": {
    "title": "Themes",
    "description": "Choose a preset theme or create your own with a single color",
    "presetColors": "Popular colors",
    "customTheme": "Custom theme",
    "customThemeDesc": "Click create theme and pick one color",
    "createTheme": "Create theme",
    "activePreset": "Active theme"
  },
  "header": {
    "logout": "로그아웃",
    "language": "언어",
    "providers": "공급자",
    "providerDescription": "AI 공급자 연결 관리",
    "combos": "콤보",
    "comboDescription": "폴백을 사용한 모델 콤보",
    "usage": "사용 및 분석",
    "usageDescription": "API 사용량, 토큰 소비 및 요청 로그를 모니터링하세요.",
    "analytics": "분석",
    "analyticsDescription": "차트, 추세 및 평가 통찰력",
    "cliTools": "CLI 도구",
    "cliToolsDescription": "CLI 도구 구성",
    "home": "홈",
    "homeDescription": "OmniRoute에 오신 것을 환영합니다",
    "endpoint": "엔드포인트",
    "endpointDescription": "프록시 엔드포인트, MCP, A2A 및 API 엔드포인트 관리",
    "mcp": "MCP",
    "mcpDescription": "Model Context Protocol server management and tools",
    "a2a": "A2A",
    "a2aDescription": "Agent-to-Agent protocol tasks and observability",
    "settings": "설정",
    "settingsDescription": "환경설정 관리",
    "openaiCompatible": "OpenAI 호환",
    "anthropicCompatible": "인류 친화적",
    "media": "Media",
    "mediaDescription": "Generate images, videos, and music",
    "themes": "Themes",
    "themesDescription": "Choose a color theme for the whole dashboard panel",
    "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers",
    "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.",
    "limitsDescription": "Configure rate limits and quotas per API key and provider",
    "runtimeDescription": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts",
    "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance",
    "batchDescription": "Process large volumes of requests asynchronously with batched API calls",
    "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.",
    "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.",
    "contextCombosDescription": "Define how engines are combined for different routing scenarios.",
    "changelogDescription": "Stay up to date with the latest platform features and announcements.",
    "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents",
    "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval",
    "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing",
    "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution",
    "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration",
    "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini",
    "playgroundDescription": "Test prompts interactively with live provider responses and format inspection",
    "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking",
    "logsDescription": "Real-time request logs, error traces, and streaming event inspector",
    "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events",
    "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications",
    "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database",
    "proxyDescription": "Configure upstream proxy settings for outbound provider connections",
    "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides",
    "batchFilesDescription": "Browse and manage batch job output files and results",
    "analyticsEvalsDescription": "Model evaluation results and performance benchmarks",
    "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking",
    "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning",
    "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations",
    "analyticsCompressionDescription": "Context compression analytics and token savings",
    "costsBudgetDescription": "Budget limits and spending alerts per API key and provider",
    "costsPricingDescription": "Custom pricing configuration for token cost calculations",
    "logsProxyDescription": "Upstream proxy request logs and traffic inspection",
    "logsConsoleDescription": "Application console output and debug logs",
    "logsActivityDescription": "Audit trail of user actions and system events",
    "auditMcpDescription": "MCP tool invocation audit trail and compliance records",
    "auditA2a": "A2A 감사",
    "auditA2aDescription": "A2A 작업 실행 감사 추적, 상태 전환 및 기술 호출 기록",
    "settingsGeneralDescription": "Storage, database, and general instance configuration",
    "settingsAppearanceDescription": "Theme, branding, and visual customization",
    "settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings",
    "settingsSecurityDescription": "Authentication, authorization, and access control settings",
    "featureFlags": "기능 플래그",
    "featureFlagsDescription": "제어 시스템 기능 및 실험적 특징",
    "featureFlagsActive": "{count} 활성",
    "featureFlagsInactive": "{count} 비활성",
    "featureFlagsOverrides": "{count} DB 재정의",
    "featureFlagsSearch": "플래그 검색...",
    "featureFlagsCategoryAll": "모두",
    "featureFlagsCategorySecurity": "보안",
    "featureFlagsCategoryNetwork": "네트워크",
    "featureFlagsCategoryPolicies": "정책",
    "featureFlagsCategoryRuntime": "런타임",
    "featureFlagsCategoryCli": "CLI",
    "featureFlagsCategoryHealth": "건강",
    "featureFlagsSourceDb": "DB",
    "featureFlagsSourceEnv": "환경",
    "featureFlagsSourceDefault": "데프",
    "featureFlagsReset": "재설정",
    "featureFlagsResetAll": "모든 재정의 재설정",
    "featureFlagsResetAllConfirm": "모든 기능 플래그 재정의를 재설정하시겠습니까? 그러면 모든 플래그가 ENV 또는 기본값으로 되돌아갑니다.",
    "featureFlagsRestartRequired": "적용하려면 다시 시작해야 함",
    "featureFlagsNoResults": "검색어와 일치하는 플래그가 없습니다.",
    "featureFlagsSaved": "플래그가 업데이트되었습니다.",
    "featureFlagsError": "플래그를 업데이트하지 못했습니다.",
    "settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings",
    "settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration",
    "settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings",
    "mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging",
    "oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining"
  },
  "home": {
    "quickStart": "빠른 시작",
    "quickStartDesc": "4단계로 시작해 보세요. 공급자를 연결하고, 모델을 라우팅하고, 모든 것을 모니터링하세요.",
    "fullDocs": "전체 문서",
    "step1Title": "1. API 키 생성",
    "step1Desc": "<endpoint>Endpoint</endpoint> -> 등록된 키로 이동합니다. 환경당 하나의 키를 생성합니다.",
    "step2Title": "2. 공급자 연결",
    "step2Desc": "<providers>Providers</providers>에 계정을 추가하세요. OAuth, API 키 및 무료 등급을 지원합니다.",
    "step3Title": "3. 고객에게 지시하십시오",
    "step3Desc": "IDE 또는 API 클라이언트에서 기본 URL을 {url}으로 설정하세요.",
    "step4Title": "4. 모니터링 및 최적화",
    "step4Desc": "<logs>요청 로그</logs> 및 <analytics>Analytics</analytics>에서 토큰, 비용 및 오류를 추적합니다.",
    "providersOverview": "공급자 개요",
    "configuredOf": "{configured}은(는) {total} 사용 가능한 공급자로 구성되었습니다.",
    "noModelsAvailable": "이 제공업체에 사용할 수 있는 모델이 없습니다.",
    "noProvidersConfigured": "아직 구성된 제공업체가 없습니다.",
    "addProvider": "제공업체 추가",
    "configureFirst": "먼저 {providers}에서 연결을 구성하세요.",
    "configureProvider": "공급자 구성",
    "modelAvailable": "{count} 모델 사용 가능",
    "modelsAvailable": "{count} 모델 사용 가능",
    "connectionsActive": "{count} 연결 활성",
    "connectionsActivePlural": "{count} 연결이 활성화되었습니다.",
    "copyModelName": "모델명 복사",
    "documentation": "문서",
    "healthMonitor": "건강 모니터",
    "reportIssue": "문제 신고",
    "activeError": "{active} 활성 · {errors} 오류",
    "oauthLabel": "OAuth",
    "apiKeyLabel": "API 키",
    "requestsShort": "{count} 요청",
    "providerModelsTitle": "{provider} - 모델",
    "copiedModel": "복사됨: {model}",
    "aliasLabel": "별칭",
    "updateNow": "지금 업데이트",
    "updating": "업데이트 중...",
    "updateAvailableDesc": "새 버전을 사용할 수 있습니다. 클릭하여 업데이트하세요.",
    "updateStarted": "업데이트 시작됨...",
    "reloadingPageAutomatically": "페이지를 자동으로 새로고침하는 중...",
    "providerTopology": "공급자 토폴로지"
  },
  "analytics": {
    "title": "분석",
    "usageAnalyticsTitle": "__MISSING__:Usage Analytics",
    "diversityScoreTitle": "공급자 다양성",
    "diversityScoreDesc": "__MISSING__:Provider concentration snapshot for the recent traffic window.",
    "diversityShannonEntropy": "__MISSING__:Shannon entropy",
    "diversityWindow": "__MISSING__:Window: {count} reqs · Last {mins} mins",
    "diversityHealthy": "__MISSING__:Healthy Distribution",
    "diversityRiskHigh": "__MISSING__:High Vendor Lock-in Risk",
    "diversityRiskModerate": "__MISSING__:Moderate Distribution",
    "diversityScoreLabel": "__MISSING__:score",
    "diversityHigherExplanation": "__MISSING__:Higher values mean traffic is spread across multiple providers.",
    "diversityNoData": "__MISSING__:No recent usage data available.",
    "chartRequests": "__MISSING__:Requests",
    "chartInput": "__MISSING__:Input",
    "chartOutput": "__MISSING__:Output",
    "chartTotal": "__MISSING__:Total",
    "chartCost": "__MISSING__:Cost",
    "chartShare": "__MISSING__:Share",
    "chartServiceTier": "__MISSING__:Service Tier",
    "chartServiceTierSplit": "__MISSING__:Fast / Standard cost split",
    "chartCostPct": "__MISSING__:{pct}% of cost",
    "chartUsageDetail": "__MISSING__:Usage Detail",
    "chartCacheRead": "__MISSING__:Cache read",
    "chartCostByProvider": "__MISSING__:Cost by Provider",
    "chartNoCostData": "__MISSING__:No cost data",
    "chartModelUsageOverTime": "__MISSING__:Model Usage Over Time",
    "chartNoData": "__MISSING__:No data",
    "chartWeekly": "__MISSING__:Weekly",
    "chartModelBreakdown": "__MISSING__:Model Breakdown",
    "chartModel": "__MISSING__:Model",
    "chartProvider": "__MISSING__:Provider",
    "chartProviderBreakdown": "__MISSING__:Provider Breakdown",
    "filterAllKeys": "__MISSING__:All Keys",
    "filterSearchKeys": "__MISSING__:Search keys…",
    "filterNoKeysMatch": "__MISSING__:No keys match",
    "filterOneKey": "__MISSING__:1 key",
    "filterMultipleKeys": "__MISSING__:{count} keys",
    "rangeToday": "__MISSING__:Today",
    "rangeYesterday": "__MISSING__:Yesterday",
    "rangeLast3Days": "__MISSING__:Last 3 days",
    "rangeThisWeek": "__MISSING__:This week",
    "rangeLast14Days": "__MISSING__:Last 14 days",
    "rangeThisMonth": "__MISSING__:This month",
    "rangeQuickSelect": "__MISSING__:Quick Select",
    "rangeStart": "__MISSING__:Start",
    "rangeEnd": "__MISSING__:End",
    "rangeCancel": "__MISSING__:Cancel",
    "rangeApply": "__MISSING__:Apply",
    "rangeErrorInvalid": "__MISSING__:Start must be before end",
    "period1D": "__MISSING__:1D",
    "period7D": "__MISSING__:7D",
    "period30D": "__MISSING__:30D",
    "period90D": "__MISSING__:90D",
    "periodYTD": "__MISSING__:YTD",
    "periodAll": "__MISSING__:All",
    "totalTokens": "__MISSING__:Total Tokens",
    "inputTokens": "__MISSING__:Input Tokens",
    "outputTokens": "__MISSING__:Output Tokens",
    "estCost": "__MISSING__:Est. Cost",
    "infraTitle": "__MISSING__:Infrastructure",
    "infraAccounts": "__MISSING__:Accounts",
    "infraProviders": "__MISSING__:Providers",
    "infraApiKeys": "__MISSING__:API Keys",
    "infraModels": "__MISSING__:Models",
    "perfTitle": "__MISSING__:Performance",
    "perfAvgTokens": "__MISSING__:Avg Tokens/Req",
    "perfCostReq": "__MISSING__:Cost/Req",
    "perfIoRatio": "__MISSING__:I/O Ratio",
    "perfFastReq": "__MISSING__:Fast Requests",
    "highlightsTitle": "__MISSING__:Highlights",
    "highlightsTopModel": "__MISSING__:Top Model",
    "highlightsTopProvider": "__MISSING__:Top Provider",
    "highlightsBusiestDay": "__MISSING__:Busiest Day",
    "highlightsDiversity": "__MISSING__:Diversity",
    "highlightsFallbackRate": "__MISSING__:Fallback Rate",
    "customRange": "__MISSING__:Custom",
    "overviewDescription": "모든 공급자와 모델 전반에 걸쳐 API 사용 패턴, 토큰 소비, 비용, 활동 추세를 모니터링하세요.",
    "evalsDescription": "평가 모음을 실행하여 LLM 엔드포인트를 테스트하고 검증하세요. 모델 품질을 비교하고, 회귀를 감지하고, 벤치마크 대기 시간을 측정합니다.",
    "overview": "개요",
    "evals": "평가",
    "utilization": "활용률",
    "utilizationDescription": "공급자 할당량 사용 추세 및 속도 제한 추적",
    "modelStatus": "모델현황",
    "modelStatusCooldown": "쿨다운",
    "modelStatusUnavailable": "이용 불가",
    "modelStatusError": "오류",
    "comboHealth": "콤보 건강 상태",
    "comboHealthDescription": "콤보 수준 할당량, 사용 분포 및 성능 메트릭",
    "compressionAnalyticsTitle": "Compression Analytics",
    "compressionAnalyticsDescription": "Compression analytics — token savings, mode breakdown, and provider stats.",
    "autoRoutingTotalAutoRequests": "총 자동 요청",
    "autoRoutingAvgSelectionScore": "평균 선택 점수",
    "autoRoutingExplorationRate": "탐사율",
    "autoRoutingLkgpHitRate": "LKGP 적중률",
    "autoRoutingRequestsByVariant": "변형별 요청",
    "autoRoutingTopRoutedProviders": "상위 라우팅 제공업체",
    "comboHealthWorstQuotaLeft": "최악의 남은 할당량",
    "comboHealthUsageSkew": "사용량 편향",
    "comboHealthSuccessRate": "성공률",
    "comboHealthQuotaHealth": "할당량 상태",
    "comboHealthRequests": "요청사항",
    "comboHealthTokens": "토큰",
    "comboHealthAvgLatency": "평균 대기 시간",
    "comboHealthTotalRequests": "총 요청수",
    "comboHealthExecutionTargets": "실행 대상",
    "comboHealthSuccess": "성공",
    "comboHealthLatency": "대기 시간",
    "comboHealthQuota": "할당량",
    "comboHealthTitle": "콤보 건강",
    "comboHealthUnableToLoad": "콤보 체력을 로드할 수 없습니다",
    "comboHealthGettingStarted": "시작하기",
    "compressionAnalyticsTotalRequests": "총 요청",
    "compressionAnalyticsTokensSaved": "저장된 토큰",
    "compressionAnalyticsAvgSavings": "평균 절감액",
    "compressionAnalyticsAvgDuration": "평균 기간",
    "compressionAnalyticsReceipts": "영수증",
    "compressionAnalyticsFallbacks": "폴백",
    "compressionAnalyticsPromptTokens": "프롬프트 토큰",
    "compressionAnalyticsCompletionTokens": "완료 토큰",
    "compressionAnalyticsTotalTokens": "총 토큰",
    "compressionAnalyticsCacheTokens": "캐시 토큰",
    "compressionAnalyticsNoDataYet": "아직 압축 데이터가 없습니다.",
    "searchAnalyticsTotalSearches": "총 검색수",
    "searchAnalyticsCacheHitRate": "캐시 적중률",
    "searchAnalyticsTotalCost": "총 비용",
    "searchAnalyticsAvgResponse": "평균 응답",
    "searchAnalyticsNoSearchesYet": "아직 검색된 내용이 없습니다.",
    "providerUtilizationTitle": "공급자 활용도",
    "providerUtilizationFailedToLoad": "사용률 데이터를 로드하지 못했습니다.",
    "providerUtilizationNoData": "사용 가능한 데이터가 없습니다.",
    "providerUtilizationGettingStarted": "시작하기",
    "providerUtilizationLatestSnapshot": "최신 할당량 스냅샷",
    "providerUtilizationRemainingCapacity": "남은 용량"
  },
  "apiManager": {
    "title": "API 키",
    "createKey": "API 키 생성",
    "key": "열쇠",
    "revokeKey": "키 취소",
    "revokeConfirm": "이 API 키를 취소하시겠습니까?",
    "noKeys": "아직 API 키가 없습니다.",
    "noKeysDesc": "엔드포인트에 대한 요청을 인증하기 위한 첫 번째 API 키 생성",
    "keyLabel": "키 라벨",
    "permissions": "권한",
    "expiresAt": "만료",
    "never": "절대로",
    "revoke": "취소",
    "showKey": "키 표시",
    "hideKey": "키 숨기기",
    "copyKey": "API 키 복사",
    "allModels": "모든 모델",
    "selectedModels": "선택된 모델",
    "readOnly": "읽기 전용",
    "fullAccess": "전체 액세스",
    "keyManagement": "API 키 관리",
    "keyManagementDesc": "엔드포인트에 대한 요청을 인증하기 위한 API 키 생성 및 관리",
    "totalKeys": "총 키",
    "restricted": "제한됨",
    "totalRequests": "총 요청",
    "modelsAvailable": "사용 가능한 모델",
    "registeredKeys": "등록된 키",
    "keysRegistered": "{count} 키가 등록되었습니다.",
    "keyRegistered": "{count} 키가 등록되었습니다.",
    "keysSecurityNote": "각 키는 사용 추적을 분리하고 독립적으로 취소할 수 있습니다. 보안을 위해 키는 생성 후 마스크 처리됩니다.",
    "createFirstKey": "첫 번째 키 만들기",
    "name": "이름",
    "usage": "사용법",
    "created": "생성됨",
    "actions": "작업",
    "reqs": "요구 사항",
    "neverUsed": "한번도 사용하지 않음",
    "deleteConfirm": "이 API 키를 삭제하시겠습니까?",
    "usageTips": "사용 팁",
    "tipAuth": "Authorization 헤더의 API 키를 Bearer YOUR_KEY로 사용하세요.",
    "tipSecure": "키는 생성 중에 한 번만 표시되므로 안전하게 보관하세요.",
    "tipSeparate": "다양한 클라이언트 또는 환경에 대해 별도의 키 생성",
    "tipRestrict": "더 나은 보안 및 비용 관리를 위해 키를 특정 모델로 제한합니다.",
    "keyName": "키 이름",
    "keyNamePlaceholder": "예: 생산 키, 개발 키",
    "keyNameDesc": "이 키의 목적을 식별하려면 설명이 포함된 이름을 선택하세요.",
    "managementAccessDesc": "이 API 키가 OmniRoute 구성을 관리하도록 허용합니다.",
    "selfServiceVisibility": "셀프서비스 표시 권한",
    "selfServiceVisibilityDesc": "이 키가 자신의 사용량과 공유 upstream 할당량에 대해 볼 수 있는 범위를 제어합니다.",
    "ownUsageVisibility": "자체 비용 및 토큰 사용량",
    "ownUsageVisibilityDesc": "이 키가 자신의 USD 사용량, 예산 비율, 토큰 합계를 확인하기 위해 상태 endpoint를 호출하도록 허용합니다.",
    "sharedAccountQuotaVisibility": "공유 계정 할당량",
    "sharedAccountQuotaVisibilityDesc": "명시적 연결이 하나 구성된 경우 이 키가 공유 upstream 계정 할당량을 볼 수 있도록 허용합니다.",
    "keyCreated": "API 키가 생성되었습니다.",
    "keyCreatedSuccess": "키가 생성되었습니다!",
    "keyCreatedNote": "지금 이 키를 복사하여 저장하세요. 다시 표시되지 않습니다.",
    "done": "완료",
    "savePermissions": "저장 권한",
    "endpointRestrictions": "__MISSING__:Allowed Endpoints",
    "allEndpointsAllowed": "__MISSING__:This key can access all API endpoints.",
    "endpointsRestricted": "__MISSING__:Restricted to {count} endpoint{count, plural, one {} other {s}}.",
    "autoResolve": "Auto-Resolve",
    "autoResolveDesc": "Auto-resolve ambiguous model names to native provider for this API key.",
    "keyActive": "Key Active",
    "keyActiveDesc": "Enable or disable this API key. Disabled keys are immediately rejected with 403.",
    "accessSchedule": "Access Schedule",
    "accessScheduleDesc": "Restrict access to specific hours and days of the week.",
    "scheduleFrom": "From",
    "scheduleUntil": "Until",
    "scheduleDays": "Days",
    "scheduleTimezone": "Timezone",
    "scheduleTimezoneHint": "Use IANA timezone names, e.g. America/New_York, Europe/Berlin",
    "scheduleActive": "Schedule",
    "disabled": "Disabled",
    "daySun": "Sun",
    "dayMon": "Mon",
    "dayTue": "Tue",
    "dayWed": "Wed",
    "dayThu": "Thu",
    "dayFri": "Fri",
    "daySat": "Sat",
    "allowAll": "모두 허용",
    "restrict": "제한하다",
    "allowAllInfo": "이 키는 사용 가능한 모든 모델에 액세스할 수 있습니다.",
    "restrictInfo": "이 키는 {total} 모델 중 {selected}에 액세스할 수 있습니다.",
    "selected": "{count} 선택됨",
    "all": "모두",
    "clear": "지우기",
    "searchModels": "이름이나 제공업체로 모델 검색...",
    "noModelsFound": "모델을 찾을 수 없습니다.",
    "keyNameRequired": "키 이름은 필수 항목입니다.",
    "keyNameTooLong": "키 이름은 {max}자 이하여야 합니다.",
    "keyNameInvalid": "키 이름에는 문자, 숫자, 공백, 하이픈, 밑줄만 포함할 수 있습니다.",
    "invalidKeyName": "잘못된 키 이름",
    "failedCreateKey": "키를 생성하지 못했습니다.",
    "failedCreateKeyRetry": "키를 생성하지 못했습니다. 다시 시도해 주세요.",
    "invalidKeyId": "잘못된 키 ID",
    "failedDeleteKey": "키를 삭제하지 못했습니다.",
    "failedDeleteKeyRetry": "키를 삭제하지 못했습니다. 다시 시도해 주세요.",
    "invalidModelsSelection": "잘못된 모델 선택",
    "cannotSelectMoreThanModels": "{max}개 이상의 모델을 선택할 수 없습니다.",
    "failedUpdatePermissions": "권한을 업데이트하지 못했습니다.",
    "failedUpdatePermissionsRetry": "권한을 업데이트하지 못했습니다. 다시 시도해 주세요.",
    "unknownProvider": "알 수 없음",
    "copyMaskedKey": "마스크된 키 복사",
    "keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key",
    "modelsCount": "{count, plural, one {# model} other {# models}}",
    "lastUsedOn": "마지막: {date}",
    "editPermissions": "권한 편집",
    "deleteKey": "키 삭제",
    "regenerateKey": "키 재생성",
    "regenerateConfirm": "이 API 키를 다시 생성하시겠습니까? 이전 키는 즉시 무효화됩니다.",
    "failedRegenerateKey": "API 키를 다시 생성하지 못했습니다.",
    "failedRegenerateKeyRetry": "API 키를 다시 생성하지 못했습니다. 다시 시도해 주세요.",
    "model": "{count} 모델",
    "models": "{count} 모델",
    "permissionsTitle": "권한: {name}",
    "allowAllDesc": "이 키는 사용 가능한 모든 모델에 액세스할 수 있습니다.",
    "restrictDesc": "이 키는 {totalModels} 모델 중 {selectedCount}에 액세스할 수 있습니다.",
    "selectedCount": "{count} 선택됨",
    "maxActiveSessions": "최대 활성 세션",
    "apiManagerCustomRateLimits": "사용자 정의 비율 제한",
    "apiManagerCustomRateLimitsDesc": "전역 기본 제한을 재정의합니다. 기본값을 사용하려면 비워 두세요.",
    "apiManagerRateLimitRequestsPlaceholder": "요청사항",
    "apiManagerRateLimitReqPer": "요청 /",
    "apiManagerRateLimitSecondsPlaceholder": "초",
    "apiManagerRemoveLimitTitle": "한도 삭제",
    "apiManagerTimezonePlaceholder": "아메리카/상파울루",
    "noLogPayloadPrivacy": "로그 없는 페이로드 개인정보 보호",
    "bannedStatus": "금지 상태",
    "managementApiAccess": "관리 API 액세스",
    "expirationDate": "만료 날짜",
    "managementAccess": "관리 액세스",
    "allowedConnections": "허용된 연결",
    "searchPlaceholder": "__MISSING__:Search by name or token...",
    "activeOnly": "__MISSING__:Active only",
    "filterStatus": "__MISSING__:STATUS",
    "filterType": "__MISSING__:TYPE",
    "filterAll": "__MISSING__:All",
    "filterStatusActive": "__MISSING__:Active",
    "filterStatusDisabled": "__MISSING__:Disabled",
    "filterStatusBanned": "__MISSING__:Banned",
    "filterStatusExpired": "__MISSING__:Expired",
    "filterTypeStandard": "__MISSING__:Standard",
    "filterTypeManage": "__MISSING__:Manage",
    "filterTypeRestricted": "__MISSING__:Restricted",
    "shownOf": "__MISSING__:{shown} of {total} shown",
    "emptyFilterTitle": "__MISSING__:No keys match your filters",
    "emptyFilterClear": "__MISSING__:Clear filters",
    "endpointRestrictions": "Allowed Endpoints",
    "allEndpointsAllowed": "This key can access all API endpoints.",
    "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}."
  },
  "auditLog": {
    "title": "감사 로그",
    "searchPlaceholder": "검색 작업...",
    "action": "액션",
    "actor": "배우",
    "target": "대상",
    "ipAddress": "IP 주소",
    "timestamp": "타임스탬프",
    "noEntries": "감사 항목을 찾을 수 없습니다.",
    "filterByAction": "작업별로 필터링...",
    "filterByActor": "배우별로 필터링...",
    "filterEntriesAria": "감사 로그 항목 필터링",
    "filterByActionTypeAria": "작업 유형별로 필터링",
    "filterByActorAria": "배우별로 필터링",
    "refreshAuditLogAria": "감사 로그 새로 고침",
    "tableAria": "감사 로그 항목",
    "failedFetchAuditLog": "감사 로그를 가져오지 못했습니다.",
    "notAvailable": "—",
    "description": "관리 조치 및 보안 이벤트",
    "showing": "{count} 항목 표시 중(오프셋 {offset})",
    "previous": "이전"
  },
  "media": {
    "title": "미디어 플레이그라운드",
    "subtitle": "이미지, 비디오, 음악 생성",
    "model": "Model",
    "prompt": "Prompt",
    "generate": "생성",
    "generating": "Generating...",
    "loadingModels": "Loading available models...",
    "noModels": "No models available. Configure providers with media capabilities first.",
    "error": "Generation Failed",
    "result": "Result",
    "imageDescription": "Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.",
    "videoDescription": "Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.",
    "musicDescription": "Compose music using Stable Audio Open or MusicGen via ComfyUI.",
    "kinds": {
      "embedding": "__MISSING__:Embedding",
      "image": "__MISSING__:Image",
      "imageToText": "__MISSING__:Image to Text",
      "tts": "__MISSING__:Text to Speech",
      "stt": "__MISSING__:Speech to Text",
      "webSearch": "__MISSING__:Web Search",
      "webFetch": "__MISSING__:Web Fetch",
      "video": "__MISSING__:Video",
      "music": "__MISSING__:Music"
    },
    "noProviders": "__MISSING__:No providers configured for this kind yet.",
    "addConnection": "__MISSING__:Add Connection",
    "backToProviders": "__MISSING__:Back to Providers",
    "connections": "__MISSING__:{count} Connections",
    "noConnections": "__MISSING__:No connections yet — add one from the provider page.",
    "loading": "__MISSING__:Loading..."
  },
  "search": {
    "searchQuery": "Search Query",
    "searchResults": "Search Results",
    "cachedResult": "Cached",
    "searchCost": "Cost",
    "searchTools": "Search Tools",
    "searchToolsDesc": "Advanced search testing with provider comparison",
    "compareProviders": "Compare Providers",
    "rerankResults": "Rerank Results",
    "searchHistory": "Search History",
    "urlOverlap": "URL Overlap",
    "noSearchProviders": "No search providers configured. Add providers in Settings.",
    "noRerankModels": "No rerank model available",
    "webSearch": "Web Search",
    "provider": "Provider",
    "searchType": "Search Type",
    "maxResults": "Max Results",
    "filters": "Filters",
    "country": "Country",
    "language": "Language",
    "timeRange": "Time Range",
    "includeDomains": "Include Domains",
    "excludeDomains": "Exclude Domains",
    "safeSearch": "Safe Search",
    "safeSearchOff": "Off",
    "safeSearchModerate": "Moderate",
    "safeSearchStrict": "Strict",
    "queryPlaceholder": "Enter search query...",
    "providerAuto": "auto (cheapest)",
    "searchTypeWeb": "web",
    "searchTypeNews": "news",
    "optionAny": "any",
    "timeRangeDay": "Past day",
    "timeRangeWeek": "Past week",
    "timeRangeMonth": "Past month",
    "timeRangeYear": "Past year",
    "domainPlaceholder": "example.com",
    "requestTimedOut": "Request timed out ({seconds}s)",
    "networkError": "Network error",
    "formatted": "Formatted",
    "rawJson": "JSON",
    "cacheMiss": "cache miss",
    "cacheHit": "cache hit",
    "latency": "Latency",
    "cost": "Cost",
    "results": "Results",
    "rerank": "Rerank",
    "rerankModel": "Rerank Model",
    "positionDelta": "Position Change",
    "emptyState": "Send a search query to see results",
    "copy": "복사",
    "resetToDefault": "기본값으로 재설정",
    "tabSearch": "Search",
    "tabScrape": "Scrape",
    "tabCompare": "Compare",
    "modalitiesGuide": "Modalities guide",
    "searchConceptTitle": "Search",
    "searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)",
    "scrapeConceptTitle": "Scrape",
    "scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)",
    "compareConceptTitle": "Compare",
    "compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap",
    "rerankConceptTitle": "Rerank",
    "rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query",
    "autoConceptTitle": "Auto (cheapest)",
    "autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials",
    "providerCatalogTitle": "Provider Catalog",
    "kindSearch": "Search",
    "kindFetch": "Fetch/Scrape",
    "statusConfigured": "Configured",
    "statusMissing": "No credential",
    "statusRateLimited": "Rate limited",
    "configureProvider": "Configure in Providers",
    "loadingProviders": "Loading providers…",
    "failedToLoadProviders": "Failed to load providers",
    "costPerQuery": "Cost/query",
    "freeQuota": "Free quota/mo",
    "scrapeUrl": "URL to scrape",
    "scrapeUrlPlaceholder": "https://example.com",
    "scrapeExtract": "Extract",
    "scrapeExtracting": "Extracting…",
    "scrapeFullPage": "Full page",
    "scrapeFormat": "Format",
    "formatMarkdown": "Markdown",
    "formatHtml": "HTML",
    "formatText": "Text",
    "scrapePreview": "Preview",
    "scrapeRaw": "Raw",
    "scrapeContentTruncated": "(truncated, view raw)",
    "scrapeMetadata": "Metadata",
    "scrapeProvider": "Provider",
    "scrapeSize": "Size",
    "compareRun": "Compare",
    "compareRunning": "Comparing…",
    "autoProvider": "Auto (cheapest)",
    "configuredStatus": "Configured",
    "rateLimitedStatus": "Rate limited",
    "noCredential": "No credential",
    "searchTypeLabel": "Type",
    "rerankModelLabel": "Rerank model",
    "noneOption": "None",
    "size": "Size"
  },
  "cliTools": {
    "title": "CLI 도구",
    "noActiveProviders": "활성 제공업체 없음",
    "noActiveProvidersDesc": "CLI 도구를 구성하려면 먼저 공급자를 추가하고 연결하세요.",
    "mapModels": "지도 모델",
    "testConnection": "연결 테스트",
    "connectionStatus": "연결 상태",
    "configureEndpoint": "끝점 구성",
    "instructions": "지침",
    "modelMapping": "모델 매핑",
    "baseUrl": "기본 URL",
    "apiKey": "API 키",
    "configured": "구성됨",
    "notConfigured": "구성되지 않음",
    "notInstalled": "설치되지 않음",
    "custom": "맞춤",
    "unknown": "알 수 없음",
    "lastSavedAt": "마지막 저장: {date}",
    "never": "절대로",
    "justNow": "지금 막",
    "minutesAgoShort": "{count}분 전",
    "hoursAgoShort": "{count}시간 전",
    "daysAgoShort": "{count}일 전",
    "monthsAgoShort": "{count}개월 전",
    "yearsAgoShort": "{count}년 전",
    "runtimeCheckFailed": "런타임 확인 실패",
    "yourApiKeyPlaceholder": "귀하의 API 키",
    "modelPlaceholder": "공급자/모델 ID",
    "configurationSaved": "구성이 성공적으로 저장되었습니다.",
    "failedToSave": "구성을 저장하지 못했습니다.",
    "noApiKeysCreateOne": "API 키 없음 - 키 페이지에서 키 만들기",
    "defaultOmnirouteKey": "sk_omniroute(기본값)",
    "selectModel": "모델 선택",
    "selectModelForAlias": "{alias} 모델 선택",
    "selectModelForTool": "{tool}의 모델 선택",
    "select": "선택",
    "clear": "지우기",
    "comingSoon": "곧 출시 예정",
    "checkingRuntime": "런타임 상태 확인 중...",
    "guideOnlyIntegration": "가이드 전용 통합(로컬 런타임 필요 없음)",
    "cliRuntimeDetected": "CLI 런타임이 감지되어 준비됨",
    "cliFoundNotRunnable": "CLI를 찾았지만 실행할 수 없음{reason}",
    "cliRuntimeNotDetected": "CLI 런타임이 감지되지 않음",
    "binary": "바이너리",
    "configPath": "구성 경로",
    "configPathShort": "구성",
    "failedCheckRuntimeStatus": "런타임 상태를 확인하지 못했습니다.",
    "copy": "복사",
    "copied": "복사됨",
    "copyConfig": "구성 복사",
    "saveConfig": "구성 저장",
    "selectionSaved": "선택 항목이 저장되었습니다.",
    "guide": "가이드",
    "detected": "감지됨",
    "notReady": "준비되지 않음",
    "active": "활성",
    "inactive": "비활성",
    "startMitm": "MITM 시작",
    "stopMitm": "MITM 중지",
    "mitmStarted": "MITM이 성공적으로 시작되었습니다!",
    "mitmStopped": "MITM이 성공적으로 중지되었습니다!",
    "failedStart": "MITM을 시작하지 못했습니다.",
    "failedStop": "MITM을 중지하지 못했습니다.",
    "saveMappings": "매핑 저장",
    "mappingsSaved": "매핑이 저장되었습니다!",
    "failedSaveMappings": "매핑을 저장하지 못했습니다.",
    "howItWorks": "작동 방식:",
    "antigravityHowWorksDesc": "Antigravity는 Google의 엔드포인트로 요청을 보냅니다. MITM은 이를 가로채서 OmniRoute로 리디렉션합니다.",
    "antigravityStep1": "1. MITM을 시작하여 OmniRoute를 통해 요청을 라우팅합니다.",
    "antigravityStep2Prefix": "2. 추가",
    "antigravityStep2Suffix": "호스트 파일에 127.0.0.1로 저장하세요.",
    "antigravityStep3": "3. 반중력을 공개하면 요청이 프록시됩니다.",
    "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",
    "mitmStep2Suffix": "to your hosts file as 127.0.0.1.",
    "mitmStep3": "3. Open {toolName} and requests will be proxied.",
    "sudoPasswordRequiredTitle": "Sudo 비밀번호가 필요합니다",
    "sudoPasswordHint": "호스트 파일 및 시스템 프록시 설정을 수정하려면 관리자 비밀번호가 필요합니다.",
    "enterSudoPassword": "sudo 비밀번호를 입력하세요",
    "sudoPasswordRequiredError": "Sudo 비밀번호가 필요합니다.",
    "cancel": "취소",
    "confirm": "확인",
    "settingsApplied": "설정이 성공적으로 적용되었습니다!",
    "failedApplySettings": "설정을 적용하지 못했습니다.",
    "settingsReset": "설정이 재설정되었습니다!",
    "failedResetSettings": "설정을 재설정하지 못했습니다.",
    "backupRestored": "백업이 복원되었습니다!",
    "failedRestore": "복원하지 못했습니다.",
    "checkingCli": "{tool} CLI 확인 중...",
    "cliNotRunnable": "{tool} CLI가 설치되었지만 실행할 수 없음",
    "cliNotInstalled": "{tool} CLI가 설치되지 않았습니다.",
    "cliNotDetected": "{tool} CLI가 감지되지 않음",
    "cliDetectedReady": "{tool} CLI가 감지되어 준비됨",
    "cliFoundFailedHealthcheck": "{tool} CLI를 찾았지만 런타임 상태 확인에 실패했습니다{reason}.",
    "installCliPrompt": "이 기능을 사용하려면 {tool} CLI를 설치하세요.",
    "installCodexPrompt": "자동 적용 기능을 사용하려면 Codex CLI를 설치하세요.",
    "hide": "숨기기",
    "howToInstall": "설치 방법",
    "installationGuide": "설치 가이드",
    "platforms": "macOS/리눅스/윈도우:",
    "afterInstallationRun": "설치 후 실행",
    "toVerify": "확인하기 위해.",
    "current": "현재",
    "baseUrlPlaceholder": "https://.../v1",
    "resetToDefault": "기본값으로 재설정",
    "providerModelPlaceholder": "공급자/모델 ID",
    "apply": "적용",
    "reset": "재설정",
    "manualConfig": "수동 구성",
    "backups": "백업",
    "configBackups": "구성 백업",
    "noBackupsYet": "아직 백업이 없습니다. 각 적용 또는 재설정 전에 백업이 자동으로 생성됩니다.",
    "restore": "복원",
    "backupRestoredReloading": "백업이 복원되었습니다! 상태를 다시 로드하는 중...",
    "failedRestoreBackup": "백업을 복원하지 못했습니다.",
    "applied": "적용되었습니다!",
    "failed": "실패",
    "resetDone": "재설정!",
    "omnirouteConfiguredOpenAiCompatible": "OmniRoute는 OpenAI 호환 공급자로 구성됩니다.",
    "provider": "공급자",
    "model": "모델",
    "providers": "공급자",
    "auth": "인증",
    "noApiKeysAvailable": "사용 가능한 API 키가 없습니다.",
    "usingDefaultOmniroute": "기본값 사용: sk_omniroute",
    "updateConfig": "구성 업데이트",
    "applyConfig": "구성 적용",
    "noBackupsAvailable": "사용 가능한 백업이 없습니다.",
    "profileSaved": "프로필 \"{name}\"이(가) 저장되었습니다!",
    "failedSaveProfile": "프로필을 저장하지 못했습니다.",
    "profileActivated": "프로필이 활성화되었습니다!",
    "failedActivateProfile": "프로필을 활성화하지 못했습니다.",
    "profiles": "프로필",
    "savedProfiles": "저장된 프로필",
    "noProfilesYet": "아직 저장된 프로필이 없습니다. 현재 구성을 아래 프로필로 저장합니다.",
    "activate": "활성화",
    "deleteProfile": "프로필 삭제",
    "profileNamePlaceholder": "프로필 이름(예: 개인 계정)",
    "saveCurrent": "현재 저장",
    "codexAuthNotePrefix": "코덱스 사용",
    "codexAuthNoteMiddle": "와",
    "codexAuthNoteSuffix": "자동 구성하려면 \"적용\"을 클릭하세요.",
    "claudeManualConfiguration": "Claude CLI - 수동 구성",
    "codexManualConfiguration": "Codex CLI - 수동 구성",
    "droidManualConfiguration": "Factory Droid - 수동 구성",
    "openClawManualConfiguration": "오픈 클로 - 수동 구성",
    "clineManualConfiguration": "클라인 수동 구성",
    "kiloManualConfiguration": "Kilo 코드 수동 구성",
    "whenToUseLabel": "언제 사용하나요?",
    "openToolDocs": "도구 문서 열기",
    "toolUseCases": {
      "claude": "Claude Code를 사용하여 강력한 계획 워크플로와 긴 다중 파일 리팩터링을 원할 때 사용하세요.",
      "codex": "팀이 OpenAI Codex CLI 흐름 및 프로필 기반 인증으로 표준화된 경우에 사용하세요.",
      "droid": "빠른 코딩 및 명령 실행 루프에 초점을 맞춘 경량 터미널 에이전트가 필요할 때 사용하세요.",
      "openclaw": "Open Claw 스타일 코딩 에이전트를 원하지만 OmniRoute 정책을 통해 라우팅되는 경우에 사용합니다.",
      "cline": "편집기 내에서 코딩 에이전트를 구성하고 OmniRoute 모델을 사용하여 안내 설정을 원하는 경우 사용합니다.",
      "kilo": "작업 흐름이 Kilo Code 명령과 빠른 반복 편집에 의존하는 경우에 사용하세요.",
      "cursor": "Cursor에서 코딩할 때 사용하고 OmniRoute를 통해 사용자 정의 OpenAI 호환 모델이 필요합니다.",
      "continue": "IDE에서 계속을 실행할 때 사용하고 이식 가능한 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.",
      "qwen": "Use when you want Qwen Code CLI with OmniRoute-managed provider settings and multi-provider model access.",
      "hermes": "빠른 작업을 위해 경량 터미널 기반 AI 도우미가 필요할 때 사용하세요.",
      "hermes-agent": "__MISSING__:Use when you need Hermes Agent (by Nousresearch) with default, delegation, vision and auxiliary models routed through OmniRoute.",
      "custom": "사용자 정의 도구 구현 또는 일반 OpenAI 호환 구성에 사용합니다."
    },
    "toolDescriptions": {
      "antigravity": "MITM이 포함된 Google 반중력 IDE",
      "claude": "인류 클로드 코드 CLI",
      "codex": "OpenAI 코덱스 CLI",
      "droid": "팩토리 드로이드 AI 어시스턴트",
      "openclaw": "Claw AI 도우미 열기",
      "cline": "Cline AI 코딩 어시스턴트 CLI",
      "kilo": "킬로코드 AI 어시스턴트 CLI",
      "cursor": "커서 AI 코드 편집기",
      "continue": "AI 어시스턴트 계속하기",
      "opencode": "OpenCode AI coding agent (Terminal)",
      "kiro": "Amazon Kiro — AI-powered IDE",
      "windsurf": "Windsurf AI Code Editor",
      "copilot": "GitHub Copilot AI Assistant",
      "qwen": "Alibaba Qwen Code CLI",
      "amp": "Sourcegraph Amp coding assistant CLI",
      "hermes": "헤르메스 AI 터미널 어시스턴트",
      "hermes-agent": "__MISSING__:Hermes Agent (by Nousresearch) - Advanced terminal AI with multi-model support (delegation, vision, compression, etc.)",
      "custom": "일반 OpenAI 호환 CLI 또는 SDK 구성 생성기"
    },
    "guides": {
      "cursor": {
        "notes": {
          "0": "이 기능을 사용하려면 Cursor Pro 계정이 필요합니다.",
          "1": "커서는 자체 서버를 통해 요청을 라우팅하므로 로컬 엔드포인트는 지원되지 않습니다. 설정에서 Cloud Endpoint를 활성화하세요."
        },
        "steps": {
          "1": {
            "title": "설정 열기",
            "desc": "설정 -> 모델로 이동하세요."
          },
          "2": {
            "title": "OpenAI API 활성화",
            "desc": "\"OpenAI API 키\" 옵션 활성화"
          },
          "3": {
            "title": "기본 URL"
          },
          "4": {
            "title": "API 키"
          },
          "5": {
            "title": "맞춤 모델 추가",
            "desc": "\"모든 모델 보기\" -> \"사용자 정의 모델 추가\"를 클릭하세요."
          },
          "6": {
            "title": "모델 선택"
          }
        }
      },
      "continue": {
        "steps": {
          "1": {
            "title": "구성 열기",
            "desc": "계속 구성 파일 열기"
          },
          "2": {
            "title": "API 키"
          },
          "3": {
            "title": "모델 선택"
          },
          "4": {
            "title": "모델 구성 추가",
            "desc": "모델 배열에 다음 구성을 추가합니다."
          }
        },
        "notes": {
          "0": "Continue는 JSON 설정 파일을 사용합니다."
        }
      },
      "opencode": {
        "steps": {
          "1": {
            "title": "Install OpenCode",
            "desc": "Install via npm: npm install -g opencode-ai"
          },
          "2": {
            "title": "API Key"
          },
          "3": {
            "title": "Set Base URL",
            "desc": "opencode config set baseUrl {baseUrl}"
          },
          "4": {
            "title": "Select Model"
          },
          "5": {
            "title": "Use Thinking Variant",
            "desc": "For thinking models, run with --variant high/low/max (example command below)."
          }
        },
        "notes": {
          "0": "OpenCode는 API 키 구성이 필요합니다.",
          "1": "기본 URL을 OmniRoute 엔드포인트로 설정하세요."
        }
      },
      "kiro": {
        "steps": {
          "1": {
            "title": "Open Kiro Settings",
            "desc": "Go to Settings → AI Provider"
          },
          "2": {
            "title": "Base URL",
            "desc": "Paste your OmniRoute endpoint URL"
          },
          "3": {
            "title": "API Key"
          },
          "4": {
            "title": "Select Model"
          }
        },
        "notes": {
          "0": "Kiro는 Amazon 계정이 필요합니다."
        }
      },
      "windsurf": {
        "steps": {
          "1": {
            "title": "Open AI Settings",
            "desc": "Click the AI Settings icon in Windsurf or go to Settings"
          },
          "2": {
            "title": "Add Custom Provider",
            "desc": "Select \"Add custom provider\" (OpenAI-compatible)"
          },
          "3": {
            "title": "Base URL",
            "desc": "http://127.0.0.1:20128/v1"
          },
          "4": {
            "title": "API Key",
            "desc": "Select your OmniRoute API key"
          },
          "5": {
            "title": "Select Model",
            "desc": "Choose a model from the dropdown"
          }
        }
      }
    },
    "autoConfiguredTab": "Auto Configured Tab",
    "toolCategoriesDesc": "Tool Categories Desc",
    "allToolsTab": "All Tools Tab",
    "guidedClientsTab": "Guided Clients Tab",
    "mitmClientsTab": "Mitm Clients Tab",
    "customCliTab": "맞춤형 CLI",
    "toolCategories": "Tool Categories",
    "visibleToolsCount": "{count}개의 도구 사용 가능",
    "customCliBuilderTitle": "OpenAI 호환 CLI 빌더",
    "customCliBuilderDescription": "OpenAI 호환 기본 URL, API 키 및 모델 ID를 허용하는 CLI 또는 SDK에 대한 환경 변수 및 JSON 스니펫을 생성합니다.",
    "customCliNoModels": "모델 선택기를 채우려면 하나 이상의 공급자를 연결하세요.",
    "customCliNameLabel": "CLI 이름",
    "customCliNamePlaceholder": "예를 들어 내 팀 CLI",
    "customCliDefaultModelLabel": "기본 모델",
    "customCliDefaultModelHelp": "OmniRoute 모델 ID 또는 콤보를 사용하세요. 대부분의 OpenAI 호환 CLI에는 /v1 기본 URL과 모델 문자열만 필요합니다.",
    "customCliKeyHelper": "로컬 설치의 경우 OmniRoute는 sk_omniroute를 사용할 수 있습니다. 클라우드 모드에서는 관리 API 키 중 하나를 선택하세요.",
    "customCliAliasMappingsLabel": "별칭 매핑",
    "customCliAliasMappingsHelp": "안정적인 단축 이름을 원하는 래퍼 스크립트 또는 구성 파일에 대한 선택적 도우미 별칭입니다.",
    "customCliAddAlias": "별칭 추가",
    "customCliNoMappings": "아직 별칭 매핑이 없습니다. 래퍼 또는 팀 스크립트가 안정적인 짧은 이름을 사용하는 경우 하나를 추가하세요.",
    "customCliAliasPlaceholder": "예를 들어 검토",
    "customCliTargetModelLabel": "대상 모델",
    "customCliEndpointHintLabel": "끝점을 연결하는 방법",
    "customCliEndpointHint": "OpenAI 호환 클라이언트를 OmniRoute /v1 기본 URL로 지정합니다. 원시 채팅 완료 엔드포인트는 {endpoint}입니다. 도구가 공급자 개체를 원할 때는 JSON 블록을 사용하고, OPENAI_* 변수를 읽을 때는 env 스크립트를 사용하세요.",
    "customCliEnvBlockTitle": "환경/셸 조각",
    "customCliJsonBlockTitle": "공급자 JSON 블록",
    "copilotConfigGenerator": "GitHub Copilot 구성 생성기",
    "copilotApiKey": "API 키",
    "copilotFilterModelsPlaceholder": "모델 필터링...",
    "copilotMaxInputTokens": "최대 입력 토큰",
    "copilotMaxOutputTokens": "최대 출력 토큰",
    "copilotToolCalling": "도구 호출",
    "copilotPasteInto": "다음 위치에 붙여넣습니다. ",
    "wireApiChatCompletions": "채팅 완료(/chat/completions)",
    "wireApiResponses": "응답 API(/responses)"
  },
  "combos": {
    "title": "콤보",
    "description": "가중치 기반 라우팅 및 폴백 지원을 통해 모델 콤보 생성",
    "autoCatalogTitle": "자동 라우팅 카탈로그",
    "autoCatalogTemplateCount": "{count} 템플릿",
    "autoCatalogDescription": "내장된 자동/* 콤보는 연결된 공급자로부터 동적으로 해결됩니다. 이러한 ID 중 하나를 모델 필드로 사용하세요. 설정이 필요하지 않습니다.",
    "autoCatalogExpand": "자동 라우팅 카탈로그 확장",
    "autoCatalogCollapse": "자동 라우팅 카탈로그 축소",
    "createCombo": "콤보 생성",
    "editCombo": "콤보 편집",
    "deleteCombo": "콤보 삭제",
    "noModels": "모델 없음",
    "noModelsYet": "아직 추가된 모델이 없습니다.",
    "addModel": "모델 추가",
    "addModelToCombo": "콤보에 모델 추가",
    "routingStrategy": "라우팅 전략",
    "maxRetries": "최대 재시도 횟수",
    "timeout": "시간 초과(밀리초)",
    "healthcheck": "건강검진",
    "priority": "우선순위",
    "fallback": "대체",
    "roundRobin": "라운드 로빈",
    "random": "무작위",
    "leastLatency": "최소 지연 시간",
    "comboName": "콤보 이름",
    "comboNamePlaceholder": "내 콤보",
    "deleteConfirm": "이 콤보를 삭제하시겠습니까?",
    "noCombosYet": "아직 콤보가 없습니다.",
    "comboCreated": "콤보가 성공적으로 생성되었습니다.",
    "comboUpdated": "콤보가 성공적으로 업데이트되었습니다.",
    "comboDeleted": "콤보가 삭제되었습니다.",
    "failedCreate": "콤보를 생성하지 못했습니다.",
    "failedUpdate": "콤보를 업데이트하지 못했습니다.",
    "errorCreating": "콤보 생성 중 오류 발생",
    "errorUpdating": "콤보 업데이트 중 오류 발생",
    "errorDeleting": "콤보 삭제 오류",
    "testFailed": "테스트 요청 실패",
    "failedToggle": "콤보를 전환하지 못했습니다.",
    "testResults": "테스트 결과 — {name}",
    "resolvedBy": "해결 방법:",
    "more": "+{count} 더보기",
    "reqs": "요구 사항",
    "success": "성공",
    "proxyConfigured": "프록시가 구성됨",
    "copyComboName": "콤보 이름 복사",
    "enableCombo": "콤보 활성화",
    "disableCombo": "콤보 비활성화",
    "testCombo": "테스트 콤보",
    "duplicate": "중복",
    "proxyConfig": "프록시 구성",
    "nameRequired": "이름은 필수입니다",
    "nameInvalid": "문자, 숫자, -, _, / 및 .만 가능합니다. 허용됨",
    "nameHint": "문자, 숫자, -, _, / 및 . 허용됨",
    "priorityDesc": "순차적 폴백: 모델 1을 먼저 시도한 다음 2 등을 시도합니다.",
    "weightedDesc": "대체 기능을 사용하여 중량 비율로 트래픽을 분산합니다.",
    "roundRobinDesc": "순환 배포: 각 요청은 교대로 다음 모델로 이동합니다.",
    "contextRelay": "Context Relay",
    "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate",
    "randomDesc": "균일한 무작위 선택 후 나머지 모델로 대체",
    "leastUsedDesc": "시간이 지남에 따라 로드 밸런싱을 통해 요청이 가장 적은 모델을 선택합니다.",
    "costOptimizedDesc": "가격을 기준으로 가장 저렴한 모델로 먼저 라우팅",
    "resetAware": "재설정 인식 RR",
    "resetAwareDesc": "5시간 및 주간 재설정을 기준으로 남은 할당량의 균형을 맞추고 비슷한 점수를 라운드 로빈 방식으로 진행합니다.",
    "strictRandom": "Strict Random",
    "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling",
    "models": "모델",
    "autoBalance": "자동 균형",
    "advancedSettings": "고급 설정",
    "retryDelay": "재시도 지연(ms)",
    "concurrencyPerModel": "동시성/모델",
    "queueTimeout": "대기열 시간 초과(밀리초)",
    "contextRelayHandoffThreshold": "Handoff Threshold",
    "contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.",
    "contextRelayMaxMessages": "Max Messages For Summary",
    "contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.",
    "contextRelaySummaryModel": "Summary Model",
    "contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.",
    "contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.",
    "advancedHint": "전역 기본값을 사용하려면 비워 두세요. 이는 공급자별 설정을 재정의합니다.",
    "failoverBeforeRetry": "재시도 전 장애 조치",
    "maxSetRetries": "최대 세트 재시도 횟수",
    "setRetryDelayMs": "재시도 지연 설정(ms)",
    "moveUp": "위로 이동",
    "moveDown": "아래로 이동",
    "removeModel": "제거",
    "saving": "저장 중...",
    "weighted": "가중",
    "leastUsed": "가장 적게 사용됨",
    "costOpt": "비용 최적화",
    "strategyGuideTitle": "이 전략을 사용하는 방법",
    "strategyGuideWhen": "언제 사용하나요?",
    "strategyGuideAvoid": "다음과 같은 경우에는 피하세요.",
    "strategyGuideExample": "예",
    "strategyGuide": {
      "priority": {
        "when": "선호하는 모델이 하나 있고 실패 시 폴백만 원합니다.",
        "avoid": "모델 전반에 걸쳐 요청 배포가 필요합니다.",
        "example": "가동 중단 시 백업 비용이 더 저렴한 기본 코딩 모델입니다."
      },
      "weighted": {
        "when": "모델 간에 제어된 트래픽 분할이 필요합니다.",
        "avoid": "시간이 지나도 정확한 체중을 유지할 수 없습니다.",
        "example": "80% 안정적인 모델 + 20% 카나리아 모델 출시."
      },
      "round-robin": {
        "when": "You want predictable and even distribution.",
        "avoid": "Models differ too much in latency or cost.",
        "example": "Same model on multiple accounts to spread throughput."
      },
      "random": {
        "when": "You want simple distribution with minimal setup.",
        "avoid": "You need strict traffic guarantees.",
        "example": "Quick prototyping with equivalent models."
      },
      "least-used": {
        "when": "You want adaptive balancing based on live demand.",
        "avoid": "Traffic is too low to benefit from usage balancing.",
        "example": "Mixed workloads where one model often gets overloaded."
      },
      "cost-optimized": {
        "when": "Cost reduction is your top priority.",
        "avoid": "Pricing data is missing or outdated.",
        "example": "Background or batch jobs where lower cost is preferred."
      },
      "reset-aware": {
        "when": "할당량 원격 측정 및 다양한 재설정 기간을 사용하여 여러 계정에 걸쳐 라우팅합니다.",
        "avoid": "대부분의 계정에서는 할당량 원격 분석을 사용할 수 없습니다.",
        "example": "나중에 80% 계정을 재설정하는 것보다 내일 60% 주간 계정 재설정을 선호합니다."
      },
      "strict-random": {
        "when": "Use when you want perfectly even spread — each model used once before repeating.",
        "avoid": "Avoid when models have different quality or latency and order matters.",
        "example": "Example: Multiple accounts of the same model to distribute usage evenly."
      },
      "p2c": {
        "when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.",
        "avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.",
        "example": "Example: High-throughput inference across 4+ equivalent model endpoints."
      },
      "context-relay": {
        "when": "Use when long sessions must survive account rotation without losing the working context.",
        "avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.",
        "example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion."
      },
      "fill-first": {
        "when": "다음 공급자로 이동하기 전에 한 공급자의 할당량을 완전히 소진하려는 경우에 사용합니다.",
        "avoid": "공급자 간 요청 수준 로드 밸런싱이 필요한 경우에는 피하세요.",
        "example": "예: Groq로 돌아가기 전에 $200 Deepgram 크레딧을 모두 사용하세요."
      },
      "auto": {
        "when": "비용, 대기 시간, 품질을 기준으로 다단계 채점 라우팅이 필요한 경우에 사용하세요.",
        "avoid": "엄격한 우선순위 또는 기록 지속성이 필요한 경우에는 피하세요.",
        "example": "예: 서로 다른 강점을 지닌 모델 간에 요청의 균형을 맞춥니다."
      },
      "lkgp": {
        "when": "기록 성공률 및 성능을 기반으로 라우팅하려는 경우에 사용합니다.",
        "avoid": "과거 데이터가 제한적이거나 신뢰할 수 없는 경우에는 피하세요.",
        "example": "예: 특정 작업에 대한 좋은 실적을 가진 모델에게 전달합니다."
      },
      "context-optimized": {
        "when": "모델 전체에서 컨텍스트 창 사용을 최적화해야 할 때 사용합니다.",
        "avoid": "모델의 컨텍스트 길이가 비슷하거나 작업이 간단한 경우에는 피하세요.",
        "example": "예: 더 큰 컨텍스트 창을 사용하여 모델 전체에 긴 대화를 배포합니다."
      }
    },
    "advancedHelp": {
      "maxRetries": "How many retries are attempted before failing a request.",
      "retryDelay": "Initial wait between retries. Higher values reduce burst pressure.",
      "timeout": "Maximum request duration before aborting.",
      "healthcheck": "Skips unhealthy models/providers from routing decisions.",
      "concurrencyPerModel": "Max simultaneous requests allowed per model in round-robin.",
      "queueTimeout": "How long a request can wait in queue before timing out.",
      "failoverBeforeRetry": "활성화되면 업스트림 오류가 발생하면 모든 재시도 및 대체 URL을 건너뛰고 다음 콤보 대상으로 즉시 장애 조치가 실행됩니다.",
      "maxSetRetries": "모든 대상이 실패할 경우 전체 대상 세트를 재시도하는 횟수입니다. 0 = 설정 수준 재시도가 없습니다.",
      "setRetryDelayMs": "설정 수준 재시도 사이의 지연을 통해 일시적인 문제를 해결할 시간을 제공합니다."
    },
    "templatesTitle": "Quick templates",
    "templatesDescription": "Apply a starting profile, then adjust models and config.",
    "templateApply": "Apply template",
    "templateHighAvailability": "High availability",
    "templateHighAvailabilityDesc": "Priority routing with health checks and safe retries.",
    "templateCostSaver": "Cost saver",
    "templateCostSaverDesc": "Cost-optimized routing for budget-first workloads.",
    "templateBalanced": "Balanced load",
    "templateBalancedDesc": "Least-used routing to spread demand over time.",
    "usageGuideHide": "Hide",
    "usageGuideDontShowAgain": "Don't show again",
    "usageGuideShow": "Show guide",
    "quickTestTitle": "Combo ready to validate",
    "quickTestDescription": "Run a test now to confirm fallback and latency behavior.",
    "testNow": "Test now",
    "pricingCoverage": "Pricing coverage",
    "pricingCoverageHint": "Cost-optimized works best when all combo models have pricing.",
    "pricingAvailable": "Pricing available",
    "pricingMissing": "No pricing",
    "pricingAvailableShort": "priced",
    "pricingMissingShort": "no-price",
    "warningRoundRobinSingleModel": "Round-robin is most useful with at least 2 models.",
    "warningCostOptimizedPartialPricing": "Only {priced} of {total} models have pricing. Routing may be partially cost-aware.",
    "warningCostOptimizedNoPricing": "No pricing data found for this combo. Cost-optimized may route unexpectedly.",
    "filterAll": "All",
    "filterIntelligent": "Intelligent",
    "filterDeterministic": "Deterministic",
    "filterEmptyTitle": "No combos match this strategy filter.",
    "filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.",
    "filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.",
    "readinessTitle": "저장할 준비가 되셨나요?",
    "readinessDescription": "이 콤보를 생성하거나 업데이트하기 전에 체크리스트를 검토하세요.",
    "readinessCheckName": "콤보 이름이 유효합니다.",
    "readinessCheckModels": "모델이 하나 이상 선택되었습니다.",
    "readinessCheckWeights": "가중 합계는 100%입니다.",
    "readinessCheckWeightsOptional": "가중치 규칙이 필요하지 않음",
    "readinessCheckPricing": "가격 데이터를 사용할 수 있습니다.",
    "readinessCheckPricingOptional": "가격 책정 규칙이 필요하지 않음",
    "saveBlockedTitle": "다음 항목이 수정될 때까지 저장이 차단됩니다.",
    "saveBlockName": "콤보 이름을 정의합니다.",
    "saveBlockModels": "모델을 하나 이상 추가하세요.",
    "saveBlockWeighted": "가중치를 100%(현재: {total}%)로 설정합니다.",
    "saveBlockPricing": "하나 이상의 모델에 가격을 추가하거나 다른 전략을 선택하세요.",
    "recommendationsLabel": "Recommended setup",
    "applyRecommendations": "Apply recommendations",
    "recommendationsUpdated": "Recommendations updated for {strategy}.",
    "recommendationsApplied": "Recommendations applied to this combo.",
    "intelligentPanelTitle": "Intelligent Routing Dashboard",
    "intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.",
    "configOnlyStatus": "__MISSING__:Configuration View",
    "configOnlyHint": "__MISSING__:This panel shows routing inputs only. Live breaker state is available on the Health page.",
    "routingInputs": "__MISSING__:Routing Inputs",
    "routingInputsHint": "__MISSING__:Mode pack and weighting stay here; breaker runtime state stays on the Health page.",
    "emailVisibilityHint": "__MISSING__:Account emails here follow the global privacy toggle.",
    "emailVisibilityTooltip": "__MISSING__:Use the eye icon to reveal or hide account emails globally across combos, providers and quota screens.",
    "manualModel": "__MISSING__:Manual model",
    "manualModelInvalid": "__MISSING__:Enter a model as provider/model.",
    "manualModelUnknownProvider": "__MISSING__:Unknown provider prefix.",
    "builderDynamicAccountShort": "__MISSING__:Dynamic account",
    "builderNeedValidName": "__MISSING__:Define a valid combo name before continuing.",
    "statusOverview": "Status Overview",
    "normalOperation": "Normal Operation",
    "allProvidersHealthy": "Providers are reporting healthy routing conditions.",
    "incidentMode": "Incident Mode",
    "highCircuitBreakerRate": "High circuit breaker trip rate detected.",
    "activeModePack": "Active Mode Pack",
    "modePackUpdated": "Mode pack updated to {pack}.",
    "modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.",
    "providerScores": "Provider Scores",
    "allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.",
    "excludedProviders": "Excluded Providers",
    "excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.",
    "noExcludedProviders": "No providers are currently excluded.",
    "cooldownMinutes": "Cooldown: {minutes}m",
    "builderIntelligentTitle": "Intelligent Routing Configuration",
    "builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.",
    "candidatePoolLabel": "Candidate Pool",
    "candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.",
    "candidatePoolEmpty": "No active providers available yet.",
    "candidatePoolAllProviders": "All providers",
    "modePackLabel": "Mode Pack",
    "routerStrategyLabel": "Router Strategy",
    "strategyRules": "Rules (6-Factor Scoring)",
    "explorationRateLabel": "Exploration Rate",
    "explorationRateHint": "{percent}% of requests can explore non-optimal providers.",
    "budgetCapLabel": "Budget Cap (USD / request)",
    "budgetCapPlaceholder": "No limit",
    "advancedWeightsTitle": "Advanced: Scoring Weights",
    "weightQuota": "Quota",
    "weightHealth": "Health",
    "weightCostInv": "Cost",
    "weightLatencyInv": "Latency",
    "weightTaskFit": "Task Fit",
    "weightStability": "Stability",
    "weightTierPriority": "Tier",
    "reviewIntelligentTitle": "Intelligent Routing Config",
    "strategyRecommendations": {
      "priority": {
        "title": "Fail-safe baseline",
        "description": "Use one primary model and keep fallback chain short and reliable.",
        "tip1": "Put your most reliable model first.",
        "tip2": "Keep 1-2 backup models with similar quality.",
        "tip3": "Use safe retries to absorb transient provider failures."
      },
      "weighted": {
        "title": "Controlled traffic split",
        "description": "Great for canary rollouts and gradual migration between models.",
        "tip1": "Start with conservative split like 90/10.",
        "tip2": "Keep the total at 100% and auto-balance after changes.",
        "tip3": "Monitor success and latency before increasing canary weight."
      },
      "round-robin": {
        "title": "Predictable load sharing",
        "description": "Best when models are equivalent and you need smooth distribution.",
        "tip1": "Use at least 2 models.",
        "tip2": "Set concurrency limits to avoid burst overload.",
        "tip3": "Use queue timeout to fail fast under saturation."
      },
      "random": {
        "title": "Quick spread with low setup",
        "description": "Use when you need simple distribution without strict guarantees.",
        "tip1": "Use models with similar latency profiles.",
        "tip2": "Keep retries enabled to absorb random misses.",
        "tip3": "Prefer this for experimentation, not strict SLAs."
      },
      "least-used": {
        "title": "Adaptive balancing",
        "description": "Routes to less-used models to reduce hotspots over time.",
        "tip1": "Works better under continuous traffic.",
        "tip2": "Combine with health checks for safer balancing.",
        "tip3": "Track per-model usage to validate distribution gains."
      },
      "cost-optimized": {
        "title": "Budget-first routing",
        "description": "Routes to lower-cost models when pricing metadata is available.",
        "tip1": "Ensure pricing coverage for all selected models.",
        "tip2": "Keep a quality fallback for hard prompts.",
        "tip3": "Use for batch/background jobs where cost is the main KPI."
      },
      "reset-aware": {
        "title": "재설정 인식 계정 순환",
        "description": "재설정 시기와 남은 공급자 할당량의 균형을 맞춥니다.",
        "tip1": "할당량 원격 분석을 사용하는 공급자에 대해 명시적인 계정 단계 또는 계정 태그 라우팅을 사용합니다.",
        "tip2": "단기적인 피로가 더 위험한 경우 세션과 주간 가중치를 조정하세요.",
        "tip3": "동등한 계정이 여전히 공평하게 순환되도록 연결 범위를 작게 유지하십시오."
      },
      "strict-random": {
        "title": "Shuffle deck distribution",
        "description": "Each model is used exactly once per cycle before reshuffling.",
        "tip1": "Use at least 2 models for meaningful distribution.",
        "tip2": "Works best with equivalent-performance models.",
        "tip3": "Ideal for load balancing across multiple API accounts."
      },
      "fill-first": {
        "description": "후퇴하기 전에 공급업체 할당량을 순차적으로 소진합니다.",
        "tip1": "명확한 대체 체인이 있는 할당량 기반 라우팅에 사용합니다.",
        "tip2": "조기 대체를 방지하려면 할당량을 정확하게 설정하세요.",
        "tip3": "무료 등급 또는 크레딧 버킷을 제공하는 제공업체와 가장 잘 작동합니다.",
        "title": "할당량 소진"
      },
      "auto": {
        "description": "비용, 대기 시간, 품질 및 상태에 대한 실시간 점수를 기반으로 라우팅합니다.",
        "tip1": "엔진이 자동으로 여러 요소의 균형을 맞추도록 합니다.",
        "tip2": "로그에서 라우팅 결정을 내리는 요인을 모니터링합니다.",
        "tip3": "단일 요소가 지배적이지 않은 복잡한 워크로드에 사용합니다.",
        "title": "다중 요소 최적화"
      },
      "lkgp": {
        "description": "과거 성과 및 성공 패턴을 기반으로 라우팅합니다.",
        "tip1": "정확한 예측을 위해서는 충분한 요청 기록이 필요합니다.",
        "tip2": "일관된 모델 성능 패턴을 갖춘 워크로드에 적합합니다.",
        "tip3": "예측 정확도를 모니터링하고 필요에 따라 가중치를 조정하세요.",
        "title": "기록 기반 라우팅"
      },
      "context-optimized": {
        "description": "컨텍스트 창 사용 및 토큰 효율성을 기반으로 라우팅을 최적화합니다.",
        "tip1": "더 큰 컨텍스트 창이 있는 모델로 긴 대화를 라우팅합니다.",
        "tip2": "토큰 낭비를 방지하기 위해 컨텍스트 활용도를 모니터링하세요.",
        "tip3": "광범위한 컨텍스트 보존이 필요한 대화형 AI에 가장 적합합니다.",
        "title": "컨텍스트 최적화"
      },
      "context-relay": {
        "description": "계정 순환이 예상되고 다음 계정이 단순화된 작업 요약을 상속해야 하는 경우에 가장 좋습니다.",
        "tip1": "동일한 모델 제품군에 대해 계정을 순환하는 제공업체와 함께 사용하세요.",
        "tip2": "요약 생성 시간에 대한 하드 할당량 컷오프 아래로 핸드오프 임계값을 설정합니다.",
        "tip3": "기본 모델이 너무 비싸거나 불안정한 경우에만 전용 요약 모델을 설정하세요.",
        "title": "세션 연속성 우선순위"
      },
      "p2c": {
        "description": "실시간 지표를 기반으로 현재 로드가 가장 낮은 공급자에게 라우팅합니다.",
        "tip1": "정확한 부하 평가를 위해 공급자 상태 지표를 모니터링합니다.",
        "tip2": "동질적인 공급자 풀에서 가장 잘 작동합니다.",
        "tip3": "트래픽 급증 시 진동을 방지하려면 감도를 조정하세요.",
        "title": "두 가지 선택의 힘"
      }
    },
    "templateFreeStack": "Free Stack ($0)",
    "templateFreeStackDesc": "Round-robin across all free providers: Kiro (Claude), Qoder (5 models), Qwen (4 models), Gemini CLI. Zero cost, never stops coding.",
    "auto": "Auto Combo",
    "autoDesc": "Self-healing smart routing pool (Performance optimized)",
    "lkgp": "LKGP Mode",
    "lkgpDesc": "Last Known Good Provider (Predictable resilience)",
    "wizardGuideTitle": "Getting Started with Combos",
    "wizardGuideDesc": "Create model combos to route AI traffic intelligently",
    "wizardGuideHint": "or click + Create Combo above",
    "createFirstCombo": "Create Your First Combo",
    "wizardStep1Title": "Name Your Combo",
    "wizardStep1Desc": "Give your combo a unique name to identify it in routing rules",
    "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",
    "wizardStep4Title": "Review & Save",
    "wizardStep4Desc": "Review your configuration and activate the combo",
    "emailVisibilityStateOn": "On",
    "emailVisibilityStateOff": "Off",
    "reorderHandle": "Drag to reorder",
    "failedReorder": "Failed to reorder models",
    "builderFlowTitle": "Combo Builder Flow",
    "builderStage": {
      "basics": {
        "label": "Basics",
        "description": "Name and starting template"
      },
      "steps": {
        "label": "Steps",
        "description": "Provider, model, and account selection"
      },
      "strategy": {
        "label": "Strategy",
        "description": "Routing behavior and advanced settings"
      },
      "intelligent": {
        "label": "Smart Routing",
        "description": "Auto-routing candidate pool, presets, and scoring"
      },
      "review": {
        "label": "Review",
        "description": "Final validation before saving"
      }
    },
    "builderStageVisited": "Stage completed",
    "builderStageCurrent": "Current stage",
    "builderStagePending": "Pending",
    "builderStageLocked": "Locked — complete previous stage first",
    "builderTitle": "Build a Combo",
    "builderBrowseCatalog": "Browse catalog",
    "builderProvider": "Provider",
    "builderLoadingProviders": "Loading providers...",
    "builderSelectProvider": "Select provider",
    "builderModel": "Model",
    "builderSelectModel": "Select model",
    "builderProviderFirst": "Pick provider first",
    "builderAccount": "Account",
    "builderPreview": "Preview",
    "builderAddStep": "Add step",
    "builderDuplicateExact": "이 정확한 공급자/모델/계정 단계는 이미 콤보에 있습니다.",
    "builderComboRef": "Combo Ref",
    "builderAddComboRef": "Add combo reference",
    "builderComboRefStep": "Add combo reference",
    "builderPinnedAccount": "Pinned Account",
    "builderLegacyEntry": "Legacy entry",
    "reviewName": "Name",
    "reviewStrategy": "Strategy",
    "reviewSteps": "Steps",
    "reviewAccounts": "Accounts",
    "reviewProviders": "Providers",
    "reviewComboRefs": "Combo References",
    "reviewAdvanced": "Advanced Settings",
    "reviewAgentFlags": "Agent Flags",
    "reviewSequence": "Model Sequence",
    "reviewNoSteps": "No steps configured",
    "builderStagesDescription": "콤보를 정의하고, 단계를 구축하고, 라우팅 전략을 선택하고, 결과를 검토하려면 각 단계를 완료하세요.",
    "builderStepsDescription": "공급자, 모델, 계정 순으로 각 콤보 단계를 구축합니다. 이를 통해 여러 계정에서 동일한 공급자와 모델을 재사용할 수 있습니다.",
    "selectProvider": "제공업체 선택",
    "selectProviderPlaceholder": "제공업체 선택",
    "selectModel": "모델 선택",
    "selectModelPlaceholder": "먼저 제공업체를 선택하세요.",
    "selectAccount": "계정 선택",
    "selectComboToReference": "참조할 콤보 선택",
    "comboReference": "콤보 참조",
    "addComboReference": "콤보 참조 추가",
    "addStepBeforeContinue": "다음 단계로 진행하기 전에 하나 이상의 단계를 추가하세요.",
    "previewNextStep": "다음 단계 미리보기",
    "autoSelectAccount": "런타임 시 자동으로 계정 선택",
    "modePackBalanced": "균형 잡힌",
    "modePackBudget": "예산",
    "modePackPerformance": "성능",
    "modePackCustom": "맞춤",
    "browseLegacyCatalog": "레거시 콤보 카탈로그 찾아보기",
    "agentFeaturesTitle": "에이전트 기능",
    "agentFeaturesDescription": "이 콤보를 사용하여 상담원의 고급 기능을 활성화하세요.",
    "agentFeaturesSystemMessageOverride": "시스템 메시지 무시",
    "agentFeaturesSystemMessagePlaceholder": "당신은 전문 조수입니다 ...",
    "agentFeaturesSystemMessageHint": "상담원에 대한 시스템 메시지 재정의",
    "agentFeaturesToolFilterRegex": "/정규식 패턴/",
    "agentFeaturesToolFilterHint": "에이전트에 대한 도구 필터 정규식",
    "agentFeaturesContextCacheHint": "에이전트 도구에 대한 컨텍스트 내 캐시 활성화",
    "agentFeaturesContextCacheProtection": "에이전트 도구 변형으로부터 캐시를 보호하세요.",
    "agentFeaturesContextLength": "컨텍스트 길이",
    "agentFeaturesContextLengthPlaceholder": "예를 들어 128000",
    "agentFeaturesContextLengthHint": "/v1/models에서 이 콤보에 대한 컨텍스트 창을 정의합니다.",
    "agentFeaturesContextLengthErrorInteger": "컨텍스트 길이는 유효한 정수여야 합니다.",
    "agentFeaturesContextLengthErrorRange": "컨텍스트 길이는 1000에서 2000000 사이여야 합니다.",
    "compressionOverride": "압축 재정의",
    "modePack": "모드 팩"
  },
  "costs": {
    "title": "비용",
    "pageDescription": "모든 제공업체의 지출을 추적하고, 추세를 분석하고, AI 예산을 관리하세요.",
    "overview": "개요",
    "budget": "예산",
    "totalCost": "총 비용",
    "breakdown": "비용 분석",
    "noData": "비용 데이터 없음",
    "byModel": "모델별",
    "byProvider": "공급자별",
    "range7d": "7일",
    "range30d": "30일",
    "range90d": "90일",
    "rangeAll": "모든 시간",
    "spend30d": "Spend30D",
    "activeModels": "Active Models",
    "selectedWindow": "Selected Window",
    "activeProviders": "Active Providers",
    "overviewTitle": "Overview Title",
    "spend7d": "Spend7D",
    "avgCostPerRequest": "Avg Cost Per Request",
    "noCostDataDescription": "No Cost Data Description",
    "spendToday": "Spend Today",
    "overviewLoadFailed": "Overview Load Failed",
    "overviewDescription": "Overview Description",
    "providerShare": "Provider Share",
    "topProviders": "Top Providers",
    "costTrend": "Cost Trend",
    "noCostDataTitle": "No Cost Data Title",
    "topModels": "Top Models",
    "requestsInWindow": "Requests In Window",
    "tokenUsage": "토큰 사용",
    "totalTokens": "총 토큰",
    "inputTokens": "입력 토큰",
    "outputTokens": "출력 토큰",
    "inputOutputRatio": "입출력 비율",
    "tokens": "토큰",
    "routingEfficiency": "라우팅 효율성",
    "fallbackCount": "대체 요청",
    "fallbackRate": "폴백 비율",
    "modelCoverage": "모델 적용 범위",
    "modelCoverageDesc": "명시적 모델이 포함된 요청 비율",
    "outOfRequests": "{total} 요청 중",
    "costByApiKey": "API 키별 비용",
    "costByAccount": "계정별 비용",
    "apiKeyName": "API 키",
    "account": "계정",
    "requests": "요청사항",
    "cost": "비용",
    "dayStreak": "하루 연속",
    "weeklyUsagePattern": "주간 사용 패턴",
    "activityHeatmap": "활동(365일)",
    "less": "덜",
    "more": "더보기",
    "monthlyForecast": "월별 예측",
    "forecastBasis": "지난 {days}일 기준",
    "avgDailyCost": "평균 일일 비용",
    "daysRemaining": "{days}일 남음",
    "periodComparison": "기간 비교",
    "previousPeriod": "전반전",
    "currentPeriod": "현재 절반",
    "exportCSV": "CSV로 내보내기",
    "exportJSON": "JSON으로 내보내기",
    "legacyFreeLabel": "__MISSING__:Legacy / Free",
    "costExplorerTitle": "비용 탐색기",
    "costExplorerDescription": "공급자, 모델, API 키, 계정 또는 서비스 등급별 지출을 살펴보세요.",
    "groupProvider": "공급자",
    "groupModel": "모델",
    "groupApiKey": "API 키",
    "groupAccount": "계정",
    "groupServiceTier": "서비스 등급",
    "serviceTierFast": "__MISSING__:Fast",
    "serviceTierFlex": "__MISSING__:Flex",
    "serviceTierStandard": "__MISSING__:Standard",
    "serviceTierBreakdownTitle": "__MISSING__:Service Tier",
    "serviceTierBreakdownSubtitle": "__MISSING__:Fast / Flex / Standard split",
    "serviceTierUsageSaved": "__MISSING__:usage saved",
    "serviceTierCostSaved": "__MISSING__:saved",
    "serviceTierCostShareSuffix": "__MISSING__:of cost",
    "dimension": "차원",
    "share": "비중",
    "legacyOrFree": "레거시 / 무료",
    "filterRows": "행 필터링…",
    "filterCostExplorerRows": "비용 탐색기 행 필터링",
    "noMatchingCostRows": "일치하는 비용 행이 없습니다",
    "noMatchingCostRowsDescription": "검색어, 그룹화 또는 선택한 시간 범위를 조정하세요.",
    "showingCostRows": "일치하는 {total}개 행 중 {shown}개를 표시합니다.",
    "showingTopCostRows": "일치하는 {total}개 행 중 {shown}개를 표시합니다(상위 50개)."
  },
  "endpoint": {
    "title": "API 엔드포인트",
    "available": "사용 가능한 엔드포인트",
    "cloudProxy": "클라우드 프록시",
    "disableConfirm": "클라우드 프록시를 비활성화하시겠습니까?",
    "baseUrl": "기본 URL",
    "apiKeyLabel": "API 키",
    "registeredKeys": "등록된 키",
    "chatCompletions": "채팅 완료",
    "responses": "응답",
    "listModels": "모델 나열",
    "usingCloudProxy": "클라우드 프록시 사용",
    "usingLocalServer": "로컬 서버 사용",
    "machineId": "머신 ID: {id}...",
    "disableCloud": "클라우드 비활성화",
    "enableCloud": "클라우드 활성화",
    "modelsAcrossEndpoints": "{endpoints} 엔드포인트 전반의 {models} 모델",
    "loadingModels": "Loading available models...",
    "chatDesc": "모든 제공업체와의 스트리밍 및 비스트리밍 채팅",
    "embeddings": "임베딩",
    "embeddingsDesc": "검색 및 RAG 파이프라인을 위한 텍스트 임베딩",
    "imageGeneration": "이미지 생성",
    "imageDesc": "텍스트 프롬프트에서 이미지 생성",
    "rerank": "순위 재지정",
    "rerankDesc": "쿼리 관련성에 따라 문서의 순위를 다시 매깁니다.",
    "audioTranscription": "오디오 전사",
    "audioTranscriptionDesc": "오디오 파일을 텍스트로 변환(속삭임)",
    "textToSpeech": "텍스트 음성 변환",
    "textToSpeechDesc": "텍스트를 자연스러운 음성으로 변환",
    "musicGeneration": "Music Generation",
    "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)",
    "moderations": "조정",
    "moderationsDesc": "콘텐츠 조정 및 안전 분류",
    "responsesDesc": "Codex 및 고급 에이전트 워크플로용 OpenAI Responses API",
    "listModelsDesc": "연결된 모든 공급자의 사용 가능한 모든 모델 나열",
    "settingsApiDesc": "API를 통해 OmniRoute 구성 읽기 및 수정",
    "settingsApi": "Settings API",
    "categoryCore": "핵심 API",
    "categoryMedia": "미디어 및 멀티모달",
    "categorySearch": "Search & Discovery",
    "categoryUtility": "유틸리티 및 관리",
    "webSearch": "Web Search",
    "webSearchDesc": "Unified web search across multiple providers with automatic failover and caching",
    "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": "당신이 얻을 것입니다",
    "cloudBenefitAccess": "전 세계 어디에서나 API에 액세스하세요",
    "cloudBenefitShare": "팀과 쉽게 엔드포인트 공유",
    "cloudBenefitPorts": "포트를 열거나 방화벽을 구성할 필요가 없습니다.",
    "cloudBenefitEdge": "빠른 글로벌 에지 네트워크",
    "cloudSessionNote": "Cloud는 인증 세션을 1일 동안 유지합니다. 사용하지 않을 경우 자동 삭제됩니다.",
    "cloudUnstableNote": "Cloud는 현재 Claude Code OAuth를 사용하는 경우에 불안정합니다.",
    "cloudConnected": "클라우드 프록시가 연결되었습니다!",
    "connectingToCloud": "클라우드에 연결 중...",
    "verifyingConnection": "연결 확인 중...",
    "connecting": "연결 중...",
    "verifying": "확인 중...",
    "connected": "연결되었습니다!",
    "disableCloudTitle": "클라우드 프록시 비활성화",
    "disableWarning": "모든 인증 세션이 클라우드에서 삭제됩니다.",
    "syncingData": "최신 데이터 동기화 중...",
    "disablingCloud": "클라우드를 비활성화하는 중...",
    "syncing": "동기화 중...",
    "disabling": "비활성화 중...",
    "cloudConnectedVerified": "클라우드 프록시가 연결되고 확인되었습니다!",
    "connectedVerificationPending": "연결됨 — 확인 대기 중",
    "connectedVerificationPendingWithError": "연결됨 — 확인 대기 중: {error}",
    "cloudDisabledSuccess": "클라우드가 비활성화되었습니다.",
    "syncedSuccess": "성공적으로 동기화되었습니다",
    "failedDisable": "클라우드를 비활성화하지 못했습니다.",
    "failedEnable": "클라우드를 활성화하지 못했습니다.",
    "cloudRequestTimeout": "클라우드 요청 시간 초과",
    "cloudRequestFailed": "클라우드 요청 실패",
    "cloudWorkerUnreachable": "클라우드 작업자에 연결할 수 없습니다. 클라우드 서비스가 실행 중인지 확인하세요(npm run dev in /cloud).",
    "connectionFailed": "연결 실패",
    "syncFailed": "클라우드 데이터를 동기화하지 못했습니다.",
    "cloudflaredTitle": "Cloudflare Quick Tunnel",
    "cloudflaredDescription": "Create a Cloudflare Quick Tunnel for this endpoint to make it accessible from the internet without configuring DNS.",
    "cloudflaredUrlNotice": "Creates a temporary Cloudflare Quick Tunnel. URLs change after restart.",
    "cloudflaredEnable": "Enable Tunnel",
    "cloudflaredInstallAndEnable": "Install & Enable",
    "cloudflaredDisable": "Stop Tunnel",
    "cloudflaredRunning": "Running",
    "cloudflaredStarting": "Starting",
    "cloudflaredStoppedState": "Stopped",
    "cloudflaredNotInstalled": "Not installed",
    "cloudflaredUnsupported": "Unsupported",
    "cloudflaredError": "Error",
    "cloudflaredStarted": "Cloudflare tunnel started",
    "cloudflaredStopped": "Cloudflare tunnel stopped",
    "cloudflaredRequestFailed": "Failed to update Cloudflare tunnel",
    "cloudflaredTemporaryNote": "Quick Tunnel URLs are temporary and will change after restart.",
    "cloudflaredUnsupportedNote": "This platform is not supported for managed installation.",
    "cloudflaredIdleNote": "Create a temporary Cloudflare Quick Tunnel for this endpoint.",
    "cloudflaredLastError": "Last error: {error}",
    "providerModelsTitle": "{provider} — 모델",
    "noModelsForProvider": "이 제공업체에 사용할 수 있는 모델이 없습니다.",
    "chat": "채팅",
    "embedding": "임베딩",
    "image": "이미지",
    "custom": "관습",
    "modelsCount": "{count, plural, one {# model} other {# models}}",
    "sectionTitle": "Integration Surface",
    "sectionDescription": "OpenAI-compatible APIs and operational protocol endpoints",
    "tabApis": "OpenAI-compatible APIs",
    "tabProtocols": "Protocols",
    "tabsAria": "Endpoint sections",
    "protocolsTitle": "Protocols",
    "protocolsDescription": "MCP and A2A are first-class endpoints with dedicated observability and controls.",
    "mcpCardTitle": "MCP Server",
    "mcpCardDescription": "Model Context Protocol over stdio",
    "a2aCardTitle": "A2A Server",
    "a2aCardDescription": "Agent2Agent JSON-RPC endpoint",
    "protocolToolsLabel": "Tools",
    "protocolTasksLabel": "Tasks",
    "protocolActiveStreamsLabel": "Active streams",
    "protocolLastActivity": "Last activity",
    "quickStart": "Quick Start",
    "openMcpDashboard": "Open MCP management",
    "openA2aDashboard": "Open A2A management",
    "mcpQuickStartTitle": "MCP Quick Start",
    "mcpQuickStartStep1": "Run the MCP server via `omniroute --mcp`.",
    "mcpQuickStartStep2": "Configure your MCP client to connect over stdio transport.",
    "mcpQuickStartStep3": "Invoke tools such as `omniroute_get_health` and `omniroute_list_combos`.",
    "a2aQuickStartTitle": "A2A Quick Start",
    "a2aQuickStartStep1": "Discover the agent card at `/.well-known/agent.json`.",
    "a2aQuickStartStep2": "Send JSON-RPC requests to `POST /a2a` using `message/send` or `message/stream`.",
    "a2aQuickStartStep3": "Track and control tasks using `tasks/get` and `tasks/cancel`.",
    "completionsLegacy": "Completions (Legacy)",
    "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format",
    "messagesApi": "메시지",
    "messagesApiDesc": "Claude 호환 공급자를 위한 기본 Anthropic Messages API 형식",
    "imageEdits": "이미지 편집",
    "imageEditsDesc": "AI로 기존 이미지 편집 및 수정(인페인팅, 아웃페인팅, 변형)",
    "batchApi": "배치 API",
    "batchApiDesc": "대규모 요청 일괄 처리를 비동기식으로 처리(OpenAI 호환)",
    "filesApi": "파일 API",
    "filesApiDesc": "일괄 처리를 위한 파일 업로드 및 관리",
    "videoGeneration": "Video Generation",
    "videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.",
    "tailscaleRequestFailed": "Failed to load Tailscale status",
    "tailscaleEnableFailed": "Failed to enable Tailscale Funnel",
    "tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.",
    "tailscaleLoginTimedOut": "Timed out waiting for Tailscale login",
    "tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.",
    "tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled",
    "tailscaleStarted": "Tailscale Funnel enabled",
    "tailscaleDisableFailed": "Failed to disable Tailscale Funnel",
    "tailscaleStopped": "Tailscale Funnel disabled",
    "tailscaleInstallFailed": "Failed to install Tailscale",
    "tailscaleInstallProgress": "Working...",
    "tailscaleInstalled": "Tailscale installed successfully",
    "tailscaleRunning": "Running",
    "tailscaleNeedsLogin": "Needs Login",
    "tailscaleStoppedState": "Stopped",
    "tailscaleNotInstalled": "Not installed",
    "tailscaleUnsupported": "Unsupported",
    "tailscaleError": "Error",
    "tailscaleDisable": "Stop Funnel",
    "tailscaleInstallAndEnable": "Install & Enable",
    "tailscaleLoginAndEnable": "Login & Enable",
    "tailscaleEnable": "Enable Funnel",
    "tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.",
    "tailscaleTitle": "Tailscale Funnel",
    "tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.",
    "tailscaleBinaryPath": "Binary: {path}",
    "tailscaleLastError": "Last error: {error}",
    "tailscaleInstallTitle": "Install Tailscale",
    "tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.",
    "tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.",
    "tailscaleSudoPlaceholder": "Optional sudo password",
    "tailscaleInstalling": "Installing",
    "tailscaleSudoLabel": "Sudo 비밀번호(macOS/Linux에 필요)",
    "ngrokTitle": "응록 터널",
    "ngrokRunning": "달리기",
    "ngrokStarting": "시작",
    "ngrokStoppedState": "중지됨",
    "ngrokNeedsAuth": "인증 필요",
    "ngrokNotInstalled": "설치되지 않음",
    "ngrokUnsupported": "지원되지 않음",
    "ngrokError": "오류",
    "ngrokEnable": "터널 활성화",
    "ngrokDisable": "터널 중지",
    "ngrokUrlNotice": "공용 ngrok 터널을 만듭니다.",
    "ngrokAuthTokenLabel": "인증 토큰(NGROK_AUTHTOKEN이 설정되지 않은 경우 필수)",
    "ngrokAuthTokenPlaceholder": "ngrok 인증 토큰을 입력하세요",
    "ngrokLastError": "마지막 오류: {error}",
    "ngrokStarted": "ngrok 터널이 시작되었습니다",
    "ngrokStopped": "Ngrok 터널이 중지되었습니다.",
    "ngrokRequestFailed": "ngrok 터널을 업데이트하지 못했습니다.",
    "tokenSaverSubtitle": "모든 요청에 대해 더 적은 토큰을 소비하십시오.",
    "tokenSaverToolOutput": "도구 출력",
    "tokenSaverLlmOutput": "LLM 출력",
    "tokenSaverInputCompression": "입력 압축",
    "apiEndpointsCatalogUnavailable": "API 카탈로그를 사용할 수 없습니다.",
    "apiEndpointsSearchPlaceholder": "엔드포인트 검색...",
    "apiEndpointsRequiresAuth": "인증이 필요합니다",
    "apiEndpointsNoMatch": "필터와 일치하는 엔드포인트가 없습니다.",
    "localServer": "로컬 서버",
    "cloudOmniroute": "클라우드 옴니루트",
    "copyUrl": "URL 복사",
    "badgeLoopbackTooltip": "__MISSING__:This endpoint is only accessible locally (loopback only)",
    "badgeAlwaysProtectedTooltip": "__MISSING__:This endpoint is always protected and requires authorization",
    "badgeInternalTooltip": "__MISSING__:This is an internal system endpoint",
    "tierAll": "__MISSING__:All",
    "tierAuth": "__MISSING__:Authenticated",
    "tierLoopback": "__MISSING__:Loopback",
    "tierAlwaysProtected": "__MISSING__:Always Protected",
    "tierPublic": "__MISSING__:Public",
    "hideInternal": "__MISSING__:Hide Internal",
    "showInternal": "__MISSING__:Show Internal"
  },
  "endpoints": {
    "tabProxy": "엔드포인트 프록시",
    "tabApiEndpoints": "API 엔드포인트",
    "apiEndpointsTitle": "API 엔드포인트",
    "apiEndpointsDescription": "다른 애플리케이션 및 서비스에서 사용할 수 있는 백엔드 API 엔드포인트.",
    "comingSoon": "곧 출시",
    "plannedFeatures": "예정된 기능",
    "featureRestApi": "대화형 문서가 포함된 REST API 카탈로그",
    "featureWebhooks": "웹훅 구성 및 이벤트 구독",
    "featureSwagger": "OpenAPI / Swagger 사양 자동 생성",
    "featureAuth": "엔드포인트별 API 키 및 OAuth 범위 관리"
  },
  "mcpDashboard": {
    "loading": "Loading MCP dashboard...",
    "activate": "activate",
    "deactivate": "deactivate",
    "confirmSwitchCombo": "Confirm {action} combo \"{combo}\"?",
    "switchComboFailed": "Failed to switch combo state.",
    "switchComboSuccess": "Combo \"{combo}\" updated.",
    "confirmApplyProfile": "Apply resilience profile \"{profile}\"?",
    "applyProfileFailed": "Failed to apply resilience profile.",
    "applyProfileSuccess": "Profile \"{profile}\" applied.",
    "confirmResetBreakers": "Reset all circuit breakers?",
    "resetBreakersFailed": "Failed to reset circuit breakers.",
    "resetBreakersSuccess": "Circuit breakers reset.",
    "processStatus": "Process status",
    "online": "Online",
    "offline": "Offline",
    "disableLabel": "__MISSING__:Disable {label}",
    "enableLabel": "__MISSING__:Enable {label}",
    "transportMode": "__MISSING__:Transport Mode",
    "transportStdioDesc": "__MISSING__:Local — IDE spawns process via omniroute --mcp",
    "transportSseDesc": "__MISSING__:Remote — Server-Sent Events over HTTP",
    "transportStreamableHttpDesc": "__MISSING__:Remote — Modern bidirectional HTTP",
    "copy": "__MISSING__:Copy",
    "mcpDashboardCopyUrl": "URL 복사",
    "mcpDisabledTitle": "__MISSING__:MCP is disabled",
    "mcpDisabledDesc": "__MISSING__:Enable MCP above to configure transport mode and view server telemetry.",
    "mcpIntro": "__MISSING__:Model Context Protocol — {tools} tools across {scopes} scopes, {transports} transports (stdio / SSE / Streamable HTTP).",
    "mcpStep1": "__MISSING__:Run via {code}",
    "mcpStep2": "__MISSING__:Configure your MCP client to connect over stdio transport.",
    "mcpStep3": "__MISSING__:Invoke tools like {code1} and {code2}.",
    "pid": "PID",
    "sessionUptime": "Session uptime",
    "lastHeartbeat": "Last heartbeat",
    "activity24h": "Activity (24h)",
    "totalCalls": "Total calls",
    "successRate": "Success rate",
    "avgLatency": "Avg latency",
    "topTools": "Top tools",
    "noToolCalls24h": "No tool calls in the last 24 hours.",
    "runtimeDetails": "Runtime details",
    "transport": "Transport",
    "scopesEnforced": "Scopes enforced",
    "yes": "yes",
    "no": "no",
    "lastCall": "Last call",
    "heartbeatPath": "Heartbeat path",
    "operationalControls": "Operational controls",
    "switchCombo": "Switch combo",
    "inactive": "inactive",
    "active": "active",
    "activateCombo": "Activate combo",
    "deactivateCombo": "Deactivate combo",
    "applyResilienceProfile": "Apply resilience profile",
    "profileAggressive": "aggressive",
    "profileBalanced": "balanced",
    "profileConservative": "conservative",
    "applyProfile": "Apply profile",
    "resetCircuitBreakers": "Reset circuit breakers",
    "resetCircuitBreakersHelp": "Clears current breaker state and failure counters for providers.",
    "resetAllBreakers": "Reset all breakers",
    "toolsAndScopes": "Tools and scopes",
    "tableTool": "Tool",
    "tableScopes": "Scopes",
    "tablePhase": "Phase",
    "tableAudit": "Audit",
    "auditLog": "Audit log",
    "auditSummary": "Calls: {total} | page {page} of {totalPages}",
    "allTools": "All tools",
    "allResults": "All results",
    "success": "Success",
    "failure": "Failure",
    "apiKeyIdPlaceholder": "apiKeyId",
    "loadingAuditEntries": "Loading audit entries...",
    "noAuditEntriesForFilters": "No audit entries found for current filters.",
    "tableTimestamp": "Timestamp",
    "tableDuration": "Duration",
    "tableResult": "Result",
    "tableApiKey": "API key",
    "failed": "failed",
    "previous": "Previous",
    "next": "Next",
    "apiKeyId": "Api Key Id",
    "offset": "Offset",
    "limit": "Limit",
    "tool": "Tool"
  },
  "a2aDashboard": {
    "loading": "Loading A2A dashboard...",
    "confirmCancelTask": "Cancel task {taskId}?",
    "cancelTaskFailed": "Failed to cancel task.",
    "cancelTaskSuccess": "Task {taskId} cancelled.",
    "smokeSendFailed": "message/send smoke test failed.",
    "smokeSendSuccessWithTask": "message/send ok (task {taskId}).",
    "smokeSendSuccess": "message/send ok.",
    "smokeStreamFailed": "message/stream smoke test failed.",
    "smokeStreamSuccessWithTask": "message/stream ok (task {taskId}{stateSuffix}).",
    "smokeStreamNoTaskId": "message/stream finished without task id.",
    "health": "Health",
    "ok": "ok",
    "totalTasks": "Total tasks",
    "activeStreams": "Active streams",
    "lastTask": "Last task",
    "taskStateOverview": "Task state overview",
    "state": {
      "submitted": "submitted",
      "working": "working",
      "completed": "completed",
      "failed": "failed",
      "cancelled": "cancelled"
    },
    "agentCard": "Agent card",
    "agentCardPath": "__MISSING__:/.well-known/agent.json",
    "version": "Version",
    "url": "URL",
    "capabilities": "Capabilities",
    "agentCardNotAvailable": "Agent card not available.",
    "quickValidation": "Quick validation",
    "quickValidationDescription": "Executes smoke calls through the live `/a2a` endpoint.",
    "runMessageSend": "Run message/send",
    "runMessageStream": "Run message/stream",
    "taskManagement": "Task management",
    "taskSummary": "{total} tasks | page {page} of {totalPages}",
    "allStates": "all",
    "allSkills": "all skills",
    "loadingTasks": "Loading tasks...",
    "noTasksForFilters": "현재 필터에 대한 작업을 찾을 수 없습니다.",
    "tableTask": "일",
    "tableSkill": "Skill",
    "tableState": "State",
    "tableUpdated": "Updated",
    "tableActions": "행위",
    "view": "보다",
    "cancel": "Cancel",
    "previous": "Previous",
    "next": "Next",
    "taskDetail": "작업 세부정보",
    "close": "닫다",
    "metadata": "메타데이터",
    "events": "이벤트",
    "artifacts": "유물",
    "tablePhase": "Table Phase",
    "offset": "Offset",
    "limit": "Limit",
    "skill": "Skill",
    "rpcEndpoint": "포스트 /a2a",
    "rpcMethodSend": "메시지/보내기",
    "rpcMethodStream": "메시지/스트림",
    "rpcMethodGet": "작업/가져오기",
    "rpcMethodCancel": "작업/취소",
    "serviceLabel": "A2A",
    "online": "__MISSING__:Online",
    "offline": "__MISSING__:Offline",
    "disableLabel": "__MISSING__:Disable {label}",
    "enableLabel": "__MISSING__:Enable {label}",
    "a2aDisabledTitle": "__MISSING__:A2A is disabled",
    "a2aDisabledDesc": "__MISSING__:Enable A2A above to view task telemetry, agent details, and validation tools.",
    "a2aIntro": "__MISSING__:Agent2Agent JSON-RPC 2.0 endpoint — send tasks, stream responses, cancel in-flight jobs.",
    "a2aStep1": "__MISSING__:Discover the agent card at {code}.",
    "a2aStep2": "__MISSING__:Send JSON-RPC to {code1} using {code2} or {code3}.",
    "a2aStep3": "__MISSING__:Track and cancel tasks with {code1} and {code2}."
  },
  "memory": {
    "title": "Memory Management",
    "description": "View and manage stored memory entries",
    "memories": "Memories",
    "totalEntries": "Total Entries",
    "tokensUsed": "Tokens Used",
    "hitRate": "Hit Rate",
    "loading": "Loading memories...",
    "noMemories": "No memories found",
    "search": "Search memories...",
    "allTypes": "All Types",
    "export": "Export",
    "import": "Import",
    "addMemory": "Add Memory",
    "type": "Type",
    "key": "Key",
    "content": "Content",
    "created": "Created",
    "actions": "Actions",
    "delete": "Delete",
    "factual": "Factual",
    "episodic": "Episodic",
    "procedural": "Procedural",
    "semantic": "Semantic",
    "a": "A",
    "pipelineOk": "파이프라인 정상({latencyMs}ms)",
    "pipelineError": "파이프라인 오류",
    "healthUnknown": "건강 상태를 알 수 없음",
    "checkingHealth": "확인 중…",
    "checkHealth": "건강 확인",
    "pageInfo": "페이지 {page}/{totalPages}(총 {total})",
    "previous": "이전",
    "next": "다음",
    "cancel": "취소",
    "save": "저장",
    "keyPlaceholder": "예를 들어 사용자.기본 설정.테마",
    "contentPlaceholder": "기억해야 할 값 또는 JSON 콘텐츠"
  },
  "skills": {
    "title": "Skills",
    "description": "Manage and monitor AI skills",
    "skillsTab": "Skills",
    "executionsTab": "Executions",
    "sandboxTab": "Sandbox",
    "loading": "Loading skills...",
    "noSkills": "No skills found",
    "noExecutions": "No executions found",
    "enabled": "Enabled",
    "disabled": "Disabled",
    "version": "Version",
    "tableDescription": "Description",
    "skill": "Skill",
    "status": "Status",
    "duration": "Duration",
    "time": "Time",
    "sandboxConfig": "Sandbox Configuration",
    "cpuLimit": "CPU Limit",
    "cpuLimitDesc": "Maximum execution time per skill",
    "memoryLimit": "Memory Limit",
    "memoryLimitDesc": "Maximum memory allocation",
    "timeout": "Timeout",
    "timeoutDesc": "Maximum wait time for response",
    "networkAccess": "Network Access",
    "networkAccessDesc": "Allow outbound network requests",
    "mode": "Mode",
    "q": "Q",
    "filterSkillsPlaceholder": "이름, 설명 또는 태그로 기술 필터링",
    "allModes": "모든 모드",
    "totalSkills": "__MISSING__:Total Skills",
    "enabledSkills": "__MISSING__:Enabled",
    "totalExecutions": "__MISSING__:Executions",
    "successRate": "__MISSING__:Success Rate",
    "marketplaceTab": "__MISSING__:Marketplace",
    "applyFilters": "__MISSING__:Apply filters",
    "popularDefaultsLabel": "__MISSING__:Popular by default for selected provider:",
    "onMode": "__MISSING__:ON",
    "offMode": "__MISSING__:OFF",
    "autoMode": "__MISSING__:AUTO",
    "installSkillButton": "__MISSING__:Install Skill",
    "installSkillModalTitle": "__MISSING__:Install Skill",
    "installJsonPlaceholder": "__MISSING__:Paste skill manifest JSON here...",
    "installing": "__MISSING__:Installing...",
    "installSuccess": "__MISSING__:Skill installed ({id})",
    "installError": "__MISSING__:Install failed",
    "invalidJson": "__MISSING__:Invalid JSON",
    "searchMarketplacePlaceholder": "__MISSING__:Search skills...",
    "searchMarketplace": "__MISSING__:Search Marketplace",
    "marketplaceEmpty": "__MISSING__:No skills found in marketplace",
    "marketplaceError": "__MISSING__:Search failed",
    "installingFromMarketplace": "__MISSING__:Installing from marketplace...",
    "popularSkills": "__MISSING__:Popular Skills",
    "skillsMarketplace": "기술 마켓플레이스",
    "searching": "__MISSING__:Searching...",
    "pageInfo": "__MISSING__:Page {page} of {totalPages} ({total} total)",
    "previous": "__MISSING__:Previous",
    "next": "__MISSING__:Next",
    "activeProvider": "__MISSING__:Active provider:",
    "changeInSettings": "__MISSING__:Change this in Settings → Memory & Skills.",
    "installs": "__MISSING__:installs",
    "marketplaceSkillsMpHint": "__MISSING__:Configure your SkillsMP API key in Settings to browse the marketplace.",
    "marketplaceSkillsShHint": "__MISSING__:Search the skills.sh open directory to discover and install agent skills.",
    "installSkillModalDesc": "__MISSING__:Paste a skill manifest JSON or upload a .json file.",
    "uploadJson": "__MISSING__:Upload JSON",
    "cancel": "__MISSING__:Cancel",
    "installSkill": "스킬 설치"
  },
  "health": {
    "title": "시스템 상태",
    "description": "OmniRoute 인스턴스의 실시간 모니터링",
    "healthy": "건강하다",
    "degraded": "저하됨",
    "down": "아래로",
    "uptime": "가동 시간",
    "memory": "메모리",
    "memoryRss": "메모리(RSS)",
    "heap": "힙",
    "cpu": "CPU",
    "database": "데이터베이스",
    "version": "버전",
    "lastCheck": "마지막 확인",
    "providerHealth": "제공자 상태",
    "systemMetrics": "시스템 측정항목",
    "tokenHealth": "토큰 상태",
    "refreshAll": "모두 새로 고침",
    "checkNow": "지금 확인하세요",
    "loadingHealth": "건강 데이터 로드 중...",
    "failedToLoad": "상태 데이터를 로드하지 못했습니다: {error}",
    "retry": "재시도",
    "allOperational": "모든 시스템 작동",
    "issuesDetected": "시스템 문제가 감지되었습니다.",
    "updatedAt": "{time} 업데이트됨",
    "latency": "대기 시간",
    "latencyP50": "p50",
    "latencyP95": "p95",
    "latencyP99": "p99",
    "millisecondsShort": "{value}ms",
    "notAvailable": "—",
    "totalRequests": "총 요청수",
    "noDataYet": "아직 데이터가 없습니다",
    "promptCache": "프롬프트 캐시",
    "entries": "항목",
    "hitRate": "적중률",
    "hitsMisses": "안타/실패",
    "signatureCache": "서명 캐시",
    "signatureDefaults": "기본값",
    "signatureTool": "도구",
    "signatureFamily": "가족",
    "signatureSession": "세션",
    "recovering": "회복 중",
    "noCBData": "사용 가능한 회로 차단기 데이터가 없습니다. 먼저 몇 가지 요청을 해보세요.",
    "providerHealthStatusAria": "공급자 상태",
    "issuesLabel": "발견된 문제",
    "operational": "운영",
    "providers": "공급자",
    "configuredProvidersLabel": "대시보드에 구성됨",
    "configuredProvidersHint": "런타임 상태에 관계없이 /dashboard/providers에 자격 증명이 저장된 공급자입니다.",
    "activeProviders": "{count} active",
    "activeProvidersHint": "현재 요청 라우팅을 위해 활성화된 구성된 공급자입니다.",
    "monitoredProviders": "{count} monitored",
    "monitoredProvidersHint": "현재 회로 차단기 상태 모니터로 추적되는 공급자입니다.",
    "healthyCount": "{count} 건강함",
    "nodeVersion": "노드 {version}",
    "failures": "{count} 실패",
    "failuresPlural": "{count} 실패",
    "lastFailure": "마지막",
    "rateLimitStatus": "비율 제한 상태",
    "activeLimiters": "{count} 활성 제한기",
    "activeLimitersPlural": "{count} 활성 제한기",
    "queued": "대기 중",
    "queuedCount": "{count} 대기 중",
    "running": "달리기",
    "runningCount": "{count} 실행 중",
    "ok": "알았어",
    "activeLockouts": "활성 잠금",
    "resetConfirm": "모든 회로 차단기를 정상 상태로 재설정하시겠습니까? 그러면 모든 실패 횟수가 지워지고 모든 공급자가 작동 상태로 복원됩니다.",
    "resetAllTitle": "모든 회로 차단기를 정상 상태로 재설정",
    "resetting": "재설정 중...",
    "resetAll": "모두 재설정",
    "until": "{time}까지",
    "limitExhausted": "Exhausted",
    "learnedFromHeaders": "Learned from headers",
    "remainingOfLimit": "{remaining}/{limit} remaining",
    "throttleStatus": "Throttle: {value}",
    "lastHeaderUpdate": "Header update: {age}",
    "databaseHealth": "데이터베이스 상태",
    "stickyBoundSessions": "고정 바인딩된 세션",
    "sessionsByApiKey": "API 키별 세션",
    "noActiveSessionsTracked": "아직 추적된 활성 세션이 없습니다.",
    "noSessionQuotaMonitorsActive": "활성 세션 할당량 모니터가 없습니다.",
    "gracefulDegradationStatus": "우아한 저하 상태",
    "additionalModels": "+{count} 모델 더보기",
    "providerHealthMatrixTitle": "__MISSING__:Provider Health Matrix",
    "providerHealthMatrixDescription": "__MISSING__:Provider × account × model states from breakers, cooldowns, lockouts and logs.",
    "healthMatrixRange": "__MISSING__:Health matrix range",
    "providerFilter": "__MISSING__:Provider filter",
    "onlyIssues": "__MISSING__:Only issues",
    "refresh": "__MISSING__:Refresh",
    "accounts": "__MISSING__:Accounts",
    "models": "__MISSING__:Models",
    "issues": "__MISSING__:Issues",
    "loadingProviderHealthMatrix": "__MISSING__:Loading provider health matrix...",
    "failedProviderHealthMatrix": "__MISSING__:Failed to load Provider Health Matrix: {error}",
    "noProvidersMatchedFilters": "__MISSING__:No providers matched the current filters.",
    "modelPillSummary": "__MISSING__:{requests} req · {successRate} success · {latency} avg",
    "modelLockoutSummary": "__MISSING__:{reason} · {duration} left",
    "locked": "__MISSING__:locked",
    "inferred": "__MISSING__:inferred",
    "inactive": "__MISSING__:Inactive",
    "noConnectionId": "__MISSING__:no connection id",
    "accountModelSummary": "__MISSING__:{connectionId} · {count} models",
    "cooldown": "__MISSING__:cooldown",
    "durationRemaining": "__MISSING__:{duration} remaining",
    "noSyncedModelsOrTraffic": "__MISSING__:No synced models or recent traffic yet.",
    "providerRowSummary": "__MISSING__:{active}/{total} active accounts · {requests} req · {successRate} success · {latency} avg",
    "cooldownCount": "__MISSING__:{count} cooldown",
    "lockoutCount": "__MISSING__:{count} lockouts",
    "issueCount": "__MISSING__:{count} issues",
    "score": "__MISSING__:Score",
    "lastRequest": "__MISSING__:Last request",
    "lastError": "__MISSING__:Last error"
  },
  "telemetry": {
    "title": "시스템 원격 측정",
    "description": "이 OmniRoute 프로세스의 롤링 요청, 런타임, 세션 및 메모리 신호입니다.",
    "uptime": "가동 시간",
    "totalRequests": "총 요청",
    "avgLatency": "평균 지연 시간",
    "errorRate": "오류율",
    "activeConnections": "활성 연결",
    "memoryUsage": "메모리 사용량",
    "latencyTrend": "지연 시간 추세",
    "throughputTrend": "처리량 추세",
    "memoryTrend": "메모리 추세",
    "refresh": "새로고침",
    "updatedAt": "{time} 업데이트됨",
    "loadFailed": "원격 분석을 로드하지 못했습니다.",
    "partialData": "원격 분석은 부분적으로 사용 가능합니다: {error}"
  },
  "mitm": {
    "title": "MITM 프록시",
    "description": "클라이언트 요청을 가로채고 라우팅하기 위한 투명 프록시입니다.",
    "enable": "MITM 프록시 활성화",
    "enableDesc": "로컬 차단 프로세스와 DNS 재정의를 시작하거나 중지합니다.",
    "status": "상태",
    "running": "달리기",
    "stopped": "중지됨",
    "start": "시작",
    "stop": "중지",
    "refresh": "새로고침",
    "port": "프록시 포트",
    "apiKey": "라우터 API 키",
    "apiKeyPlaceholder": "선택사항; 로컬 키로 돌아갑니다",
    "sudoPassword": "Sudo 비밀번호",
    "cachedPassword": "이 프로세스를 위해 캐시됨",
    "saveSettings": "설정 저장",
    "settingsSaved": "MITM 설정이 저장되었습니다.",
    "startedSuccess": "MITM 프록시가 시작되었습니다.",
    "stoppedSuccess": "MITM 프록시가 중지되었습니다.",
    "saveFailed": "MITM 설정을 업데이트하지 못했습니다.",
    "loadFailed": "MITM 설정을 로드하지 못했습니다.",
    "invalidPort": "투명한 MITM 차단에는 현재 포트 443이 필요합니다.",
    "certificate": "CA 인증서",
    "certificateReady": "클라이언트 신뢰 설치에 인증서를 사용할 수 있습니다.",
    "certificateMissing": "인증서가 아직 생성되지 않았습니다.",
    "available": "가능",
    "missing": "누락",
    "downloadCert": "CA 인증서 다운로드",
    "regenerateCert": "인증서 재생성",
    "regenerateConfirm": "이렇게 하면 기존 클라이언트 신뢰가 무효화됩니다. 계속하다?",
    "regenerateSuccess": "MITM 인증서가 재생성되었습니다.",
    "regenerateFailed": "MITM 인증서를 재생성하지 못했습니다.",
    "targetRoutes": "대상 경로",
    "interceptedRequests": "가로채는 요청",
    "activeConnections": "활성 연결",
    "dnsConfigured": "DNS 구성됨",
    "pid": "PID",
    "lastIntercept": "마지막 인터셉트",
    "target": "대상",
    "host": "호스트",
    "localPort": "로컬 포트",
    "endpoints": "엔드포인트",
    "enabled": "활성화됨",
    "configured": "구성됨",
    "yes": "예",
    "no": "아니요",
    "noTargets": "구성된 대상 경로가 없습니다."
  },
  "limits": {
    "title": "한도 및 할당량",
    "rateLimit": "비율 제한",
    "remaining": "남은",
    "requestsPerMinute": "요청/분",
    "tokensPerMinute": "토큰/분",
    "dailyLimit": "일일 한도"
  },
  "logs": {
    "title": "로그",
    "requestLogs": "요청 로그",
    "proxyLogs": "프록시 로그",
    "auditLog": "감사 로그",
    "console": "콘솔",
    "auditLogDesc": "관리 조치 및 보안 이벤트",
    "loading": "로드 중...",
    "refresh": "새로고침",
    "filterByAction": "작업별로 필터링...",
    "filterByActor": "배우별로 필터링...",
    "filterEntriesAria": "감사 로그 항목 필터링",
    "filterByActionTypeAria": "작업 유형별로 필터링",
    "filterByActorAria": "배우별로 필터링",
    "refreshAuditLogAria": "감사 로그 새로 고침",
    "tableAria": "감사 로그 항목",
    "failedFetchAuditLog": "감사 로그를 가져오지 못했습니다.",
    "showing": "{count} 항목 표시 중(오프셋 {offset})",
    "search": "검색",
    "timestamp": "타임스탬프",
    "action": "액션",
    "actor": "배우",
    "target": "대상",
    "details": "세부정보",
    "ipAddress": "IP 주소",
    "notAvailable": "—",
    "noEntries": "감사 로그 항목이 없습니다.",
    "previous": "이전",
    "next": "다음",
    "providerWarningTitle": "Provider Warning Title",
    "viewDetails": "View Details",
    "eventMetadata": "Event Metadata",
    "eventPayload": "Event Payload",
    "requestId": "Request Id",
    "providerWarningDesc": "Provider Warning Desc",
    "a": "A",
    "offset": "Offset",
    "limit": "Limit",
    "status": "Status",
    "resourceType": "Resource Type",
    "totalEntries": "Total Entries",
    "tab": "Tab",
    "auditModalSubtitle": "Audit Modal Subtitle",
    "close": "Close",
    "runningRequests": "Active Requests",
    "runningRequestsDesc": "Real-time view of currently running upstream requests",
    "clearAll": "모두 지우기",
    "confirmClearActiveRequests": "활성 요청을 모두 삭제하시겠습니까?",
    "model": "Model",
    "provider": "Provider",
    "account": "Account",
    "elapsed": "Elapsed",
    "activeStage": "__MISSING__:Stage",
    "activeStageUnknown": "__MISSING__:Not sent to upstream yet",
    "activeStageRegistered": "__MISSING__:Registered",
    "activeStagePayloadPrepared": "__MISSING__:Payload prepared",
    "activeStageWaitingAccountSlot": "__MISSING__:Waiting for account slot",
    "activeStageWaitingRateLimit": "__MISSING__:Waiting for rate limiter",
    "activeStageRateLimitSlotAcquired": "__MISSING__:Rate limit slot acquired",
    "activeStageSendingToProvider": "__MISSING__:Sending to upstream",
    "activeStageProviderResponseStarted": "__MISSING__:Upstream response started",
    "count": "Count",
    "payloads": "Payloads",
    "viewPayloads": "View",
    "activeCount": "{count} active",
    "clientPayload": "Client Request Payload",
    "upstreamPayload": "Upstream Provider Payload",
    "upstreamNotSentYet": "Not sent to upstream yet",
    "runningRequestDetailMeta": "Account: {account} — Elapsed: {elapsed}",
    "export": "Export",
    "exporting": "Exporting...",
    "exportFailed": "Export failed",
    "timeRange": "Time Range",
    "lastNHours": "Last {hours}",
    "defaultRange": "default",
    "consoleViewer": {
      "fetchFailed": "Failed to fetch logs",
      "copyFailed": "Failed to copy log entry",
      "copyLogEntry": "Copy log entry"
    }
  },
  "onboarding": {
    "welcome": "환영합니다",
    "security": "보안",
    "test": "테스트",
    "ready": "준비됐어요!",
    "setPassword": "비밀번호 설정",
    "addProvider": "첫 번째 공급자 추가",
    "getStarted": "시작하기",
    "skip": "건너뛰기",
    "skipWizard": "마법사를 완전히 건너뛰기",
    "skipPassword": "비밀번호 설정 건너뛰기",
    "skipAndContinue": "건너뛰고 계속하기",
    "passwordLabel": "비밀번호",
    "confirmPassword": "비밀번호 확인",
    "enterPassword": "비밀번호를 입력하세요",
    "confirmPasswordPlaceholder": "비밀번호 확인",
    "passwordsMismatch": "비밀번호가 일치하지 않습니다.",
    "setupComplete": "설정 완료!",
    "goToDashboard": "대시보드로 이동 →",
    "welcomeDesc": "OmniRoute는 로컬 AI API 프록시입니다. 로드 밸런싱, 장애 조치 및 사용량 추적을 통해 요청을 여러 AI 공급자에게 라우팅합니다.",
    "multiProvider": "다중 공급자",
    "usageTracking": "사용량 추적",
    "securityDesc": "대시보드를 보호하기 위해 비밀번호를 설정하거나 지금은 건너뛰세요.",
    "providerDesc": "첫 번째 AI 공급자를 연결하세요. 나중에 더 추가할 수 있습니다.",
    "apiKeyRequired": "API 키(필수)",
    "customUrlOptional": "맞춤 URL(선택사항)",
    "testDesc": "공급자 연결이 작동하는지 확인해 보겠습니다.",
    "runTest": "연결 테스트 실행",
    "testingConnection": "연결 테스트 중...",
    "connectionSuccessful": "연결 성공! 귀하의 서비스 제공자가 준비되었습니다.",
    "noProviderFound": "공급자를 찾을 수 없습니다. 나중에 대시보드에서 추가할 수 있습니다.",
    "testFailed": "테스트에 실패했지만 나중에 구성할 수 있습니다.",
    "couldNotTest": "지금은 테스트할 수 없습니다. 대시보드에서 테스트할 수 있습니다.",
    "doneDesc": "모든 준비가 완료되었습니다. OmniRoute 인스턴스가 구성되어 AI 요청을 프록시할 준비가 되었습니다.",
    "yourEndpoint": "귀하의 엔드포인트:",
    "continue": "계속",
    "retry": "재시도",
    "failedSetPassword": "비밀번호를 설정하지 못했습니다. 다시 시도해 보세요.",
    "failedAddProvider": "공급자를 추가하지 못했습니다. 다시 시도해 보세요.",
    "connectionError": "연결 오류입니다. 다시 시도해 주세요.",
    "provider": "공급자",
    "apiKeyHelp": "API 키는 AI 서비스의 비밀번호입니다. 공급자의 웹사이트(예: platform.openai.com, console.anthropic.com)에서 하나를 받으세요.",
    "tier": {
      "subtitle": "OmniRoute는 공급자를 3개의 계층으로 구성하므로 라우팅에서는 가장 안정적이고 비용이 저렴한 경로를 먼저 선호합니다.",
      "tier1": {
        "label": "프리미엄 고객",
        "description": "기본 인증 흐름 및 추론 모델을 갖춘 최고 수준의 CLI입니다."
      },
      "tier2": {
        "label": "비용 최적화",
        "description": "일상적인 트래픽에 사용되는 저렴하고 처리량이 높은 공급자입니다."
      },
      "tier3": {
        "label": "대체 및 전문 분야",
        "description": "폴백으로 사용되는 로컬 호스팅 또는 특수 엔드포인트."
      },
      "configure": "공급자 구성"
    },
    "tierFlowDiagramAlt": "OmniRoute 3계층 대체 다이어그램",
    "apiKeyMgmt": "API 키 관리"
  },
  "providers": {
    "title": "공급자",
    "allProviders": "모든 제공자",
    "audioProviders": "오디오 제공업체",
    "showFreeOnly": "무료만",
    "addProvider": "공급자 추가",
    "addFirstProvider": "첫 번째 공급자 추가",
    "addFirstProviderDesc": "OmniRoute를 통해 요청 라우팅을 시작하려면 AI 공급자를 연결하세요. 무료 공급자, API 키 또는 OAuth 계정을 사용할 수 있습니다.",
    "learnMore": "자세히 알아보기",
    "editProvider": "제공자 편집",
    "deleteProvider": "공급자 삭제",
    "noProviders": "구성된 제공업체가 없습니다.",
    "modelAvailability": "모델 가용성",
    "accounts": "계정",
    "newAccount": "새 계정",
    "deleteConfirm": "이 제공업체를 삭제하시겠습니까?",
    "testing": "테스트 중...",
    "testConnection": "연결 테스트",
    "testSuccess": "연결 성공",
    "testFailed": "연결 실패",
    "available": "가능",
    "cooldown": "쿨다운",
    "unavailable": "이용 불가",
    "unknown": "알 수 없음",
    "oauthLabel": "OAuth",
    "compatibleLabel": "호환 가능",
    "chat": "채팅",
    "responses": "응답",
    "messages": "메시지",
    "oauthProviders": "OAuth 제공자",
    "freeProviders": "무료 제공업체",
    "apiKeyProviders": "API 키 제공자",
    "compatibleProviders": "API 키 호환 제공자",
    "testAll": "모두 테스트",
    "testAllOAuth": "모든 OAuth 연결 테스트",
    "testAllFree": "모든 무료 연결 테스트",
    "testAllApiKey": "모든 API 키 연결 테스트",
    "testAllCompatible": "모든 호환 연결 테스트",
    "connected": "{count} 연결됨",
    "errorCount": "{count} 오류({code})",
    "errorCountNoCode": "{count} 오류",
    "warningCount": "{count} 경고",
    "noConnections": "연결 없음",
    "expiredBadge": "Expired",
    "expiringSoonBadge": "Expiring Soon",
    "freeTier": "프리 티어",
    "freeTierAvailable": "무료 등급 이용 가능",
    "hasFreeTooltip": "__MISSING__:Free tier available",
    "noAuthLabel": "__MISSING__:No Auth",
    "noAuthProviders": "__MISSING__:No Auth Providers",
    "upstreamProxyLabel": "__MISSING__:Upstream Proxy",
    "freeAggregated": "__MISSING__:All providers with free tier (also shown in their native category)",
    "deprecated": "더 이상 사용되지 않음",
    "deprecatedProvider": "이 공급자는 더 이상 사용되지 않습니다.",
    "riskNotice": {
      "title": "__MISSING__:Before continuing",
      "tooltip": "__MISSING__:Provider with usage caveats — click for details",
      "oauth": "__MISSING__:This provider uses your official product session/OAuth, which is not authorized for proxy/router use.\n\nWe don't recommend intensive autonomous agent usage (OpenCloud-style, long multi-step flows, large batches) — the upstream may react by restricting or banning the account.\n\nUse at your own risk.",
      "webCookie": "__MISSING__:This provider authenticates through your web session cookies. The upstream service may invalidate the session at any time, requiring you to log in again. Not recommended for long unattended operations.\n\nUse at your own risk.",
      "deprecated": "__MISSING__:This provider was discontinued by its upstream and may stop working without notice. Existing connections may continue working until the upstream fully removes access. Consider alternatives.",
      "dontShowAgain": "__MISSING__:Don't show this again for this provider",
      "understand": "__MISSING__:I understand, continue",
      "cancel": "__MISSING__:Cancel"
    },
    "disabled": "장애인",
    "enableProvider": "공급자 활성화",
    "disableProvider": "공급자 비활성화",
    "testResults": "테스트 결과",
    "noCompatibleYet": "아직 호환되는 제공업체가 추가되지 않았습니다.",
    "compatibleHint": "위 버튼을 사용하여 OpenAI 또는 Anthropic 호환 엔드포인트를 추가하세요.",
    "addOpenAICompatible": "OpenAI 호환 추가",
    "addAnthropicCompatible": "인류 호환 추가",
    "addNewProvider": "새 공급자 추가",
    "backToProviders": "공급자로 돌아가기",
    "configureNewProvider": "애플리케이션과 함께 사용할 새 AI 공급자를 구성합니다.",
    "providerLabel": "공급자",
    "selectProvider": "제공업체 선택",
    "selectedProvider": "선택된 제공업체",
    "authMethod": "인증 방법",
    "apiKeyLabel": "API 키",
    "apiKeyRequired": "API 키가 필요합니다",
    "selectProviderRequired": "제공업체를 선택하세요.",
    "enterApiKey": "API 키를 입력하세요",
    "apiKeySecure": "귀하의 API 키는 암호화되어 안전하게 저장됩니다.",
    "oauth2Connect": "OAuth2로 연결",
    "oauth2Label": "OAuth2",
    "oauth2Desc": "OAuth2 인증을 사용하여 계정을 연결하세요.",
    "displayName": "표시 이름",
    "displayNamePlaceholder": "예: 프로덕션 API, 개발 환경",
    "displayNameHint": "선택사항. 이 구성을 식별하기 위한 친숙한 이름입니다.",
    "active": "활성",
    "activeDescription": "애플리케이션에서 이 공급자를 사용하도록 설정",
    "cancel": "취소",
    "createProvider": "공급자 생성",
    "failedCreate": "공급자를 생성하지 못했습니다.",
    "errorOccurred": "오류가 발생했습니다. 다시 시도해 주세요.",
    "modelStatus": "모델현황",
    "showConfiguredOnly": "Configured only",
    "allModelsOperational": "모든 모델 작동 가능",
    "modelsWithIssues": "문제가 있는 {count} 모델",
    "allModelsNormal": "모든 모델이 정상적으로 반응하고 있습니다.",
    "cooldownCleared": "{model}의 쿨다운이 삭제되었습니다.",
    "failedClearCooldown": "쿨다운을 지우지 못했습니다.",
    "loadingAvailability": "모델 가용성 로드 중...",
    "clearCooldown": "지우기",
    "clearing": "지우는 중...",
    "until": "{time}까지",
    "providerTestFailed": "공급자 테스트 실패",
    "providerTestTimeout": "Provider test timed out — too many connections to test at once",
    "modeTest": "{mode} 테스트",
    "passedCount": "{count} 통과됨",
    "failedCount": "{count} 실패",
    "testedCount": "{count} 테스트됨",
    "millisecondsAbbr": "{value}ms",
    "okShort": "알았어",
    "errorShort": "오류",
    "noActiveConnectionsInGroup": "이 그룹에 대한 활성 연결이 없습니다.",
    "allTestsPassed": "모든 {total} 테스트를 통과했습니다.",
    "testSummary": "{passed}/{total} 통과, {failed} 실패",
    "nameLabel": "이름",
    "prefixLabel": "접두사",
    "baseUrlLabel": "기본 URL",
    "apiTypeLabel": "API 유형",
    "prefixHint": "필수입니다. 모델 이름의 고유 접두사입니다.",
    "nameHint": "필수입니다. 이 노드에 대한 친숙한 레이블입니다.",
    "baseUrlHint": "필수입니다.  공급자 API 기본 URL.",
    "anthropicPrefixPlaceholder": "AC-PROD",
    "openaiPrefixPlaceholder": "oc-prod",
    "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1",
    "openaiBaseUrlPlaceholder": "https://api.openai.com/v1",
    "validateConnection": "연결 확인",
    "validating": "검증 중...",
    "connectionValid": "연결이 유효합니다!",
    "connectionFailed": "연결에 실패했습니다. URL과 키를 확인하세요.",
    "testKeyLabel": "테스트 API 키",
    "testKeyPlaceholder": "sk-...(검증용으로만)",
    "providerNotFound": "공급자를 찾을 수 없습니다.",
    "deleteConnectionConfirm": "이 연결을 삭제하시겠습니까?",
    "batchDeleteSelected": "Delete Selected ({count})",
    "batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.",
    "batchDeleteSuccess": "Deleted {count} connection(s)",
    "batchActivateSelected": "__MISSING__:Activate",
    "batchDeactivateSelected": "__MISSING__:Deactivate",
    "batchRetestSelected": "__MISSING__:Retest",
    "batchActivateSuccess": "__MISSING__:Activated {count} connection(s)",
    "batchDeactivateSuccess": "__MISSING__:Deactivated {count} connection(s)",
    "failedSetAlias": "별칭을 설정하지 못했습니다.",
    "failedSaveConnection": "연결을 저장하지 못했습니다.",
    "failedSaveConnectionRetry": "연결을 저장하지 못했습니다. 다시 시도해 주세요.",
    "failedRetestConnection": "연결을 다시 테스트하지 못했습니다.",
    "deleteCompatibleNodeConfirm": "이 {type} 호환 노드를 삭제하시겠습니까?",
    "anthropicCompatibleDetails": "인류 친화적인 세부 사항",
    "openaiCompatibleDetails": "OpenAI 호환 세부정보",
    "messagesApi": "메시지 API",
    "responsesApi": "응답 API",
    "embeddings": "Embeddings",
    "audioTranscriptions": "Audio Transcriptions",
    "audioSpeech": "Audio Speech",
    "imagesGenerations": "Images Generations",
    "chatCompletions": "채팅 완료",
    "importingModels": "가져오는 중...",
    "importFromModels": "/models에서 가져오기",
    "modelsImported": "{count} models imported",
    "allModelsAlreadyImported": "모든 모델이 이미 가져왔습니다",
    "noNewModelsToImport": "가져올 새 모델 없음 — 모든 모델이 이미 레지스트리 또는 사용자 정의 모델 목록에 있습니다",
    "skippingExistingModels": "{count}개의 기존 모델 건너뛰기",
    "autoSync": "자동 동기화",
    "autoSyncTooltip": "24시간마다 모델 목록 자동 업데이트 (MODEL_SYNC_INTERVAL_HOURS로 구성 가능)",
    "autoSyncEnabled": "자동 동기화 활성화 — 모델이 주기적으로 업데이트됩니다",
    "autoSyncDisabled": "자동 동기화 비활성화",
    "autoSyncToggleFailed": "자동 동기화 전환 실패",
    "clearAllModels": "모든 모델 삭제",
    "clearAllModelsConfirm": "이 공급자의 모든 모델을 제거하시겠습니까?",
    "clearAllModelsSuccess": "모든 모델 삭제됨",
    "clearAllModelsFailed": "모델 삭제 실패",
    "addConnectionToImport": "가져오기를 활성화하려면 연결을 추가하세요.",
    "noModelsConfigured": "구성된 모델이 없습니다.",
    "connectionCount": "{count} 연결",
    "fetchingModels": "사용 가능한 모델을 가져오는 중...",
    "failedFetchModels": "모델을 가져오지 못했습니다.",
    "noModelsFound": "모델을 찾을 수 없습니다.",
    "importFailed": "가져오기 실패",
    "noNewModelsAdded": "새로운 모델이 추가되지 않았습니다.",
    "adding": "추가 중...",
    "close": "Close",
    "importingModelsTitle": "모델 가져오기",
    "copyModel": "모델 복사",
    "filterModels": "모델 필터링…",
    "modelsActive": "활성",
    "showModel": "모델 표시",
    "hideModel": "모델 숨기기",
    "removeModel": "모델 삭제",
    "rateLimitProtected": "보호됨",
    "rateLimitUnprotected": "보호되지 않음",
    "enableRateLimitProtection": "속도 제한 보호를 활성화하려면 클릭하세요.",
    "disableRateLimitProtection": "속도 제한 보호를 비활성화하려면 클릭하세요.",
    "productionKey": "생산 키",
    "enterNewApiKey": "새 API 키를 입력하세요",
    "codexApplyModalTitle": "지역 코덱스에 적용",
    "codexApplyTargetLabel": "대상 경로",
    "codexApplyBackupLabel": "백업",
    "codexApplyWarning": "이는 기존 auth.json을 대체합니다. 계속하다?",
    "codexApplyConfirmCheckbox": "기존 auth.json을 교체할 것임을 확인합니다.",
    "codexApply": "적용",
    "bulkTabSingle": "싱글",
    "bulkTabBulkAdd": "대량 추가",
    "bulkAddFormatHint": "한 줄에 하나의 키입니다. 형식: name|apiKey 또는 apiKey(인덱스로 자동 이름 지정).",
    "bulkValidateKeys": "저장하기 전에 각 키의 유효성을 검사하세요(느림).",
    "bulkAddAllKeys": "모든 키 추가",
    "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}",
    "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}",
    "optional": "선택사항",
    "anthropicCompatibleName": "인류 친화적",
    "openaiCompatibleName": "OpenAI 호환",
    "failedImportModels": "모델을 가져오지 못했습니다.",
    "noModelsReturnedFromEndpoint": "/models 엔드포인트에서 반환된 모델이 없습니다.",
    "importingModelsProgress": "{total} 모델 중 {current} 가져오는 중...",
    "foundModelsStartingImport": "{count} 모델을 찾았습니다. 가져오기 시작 중...",
    "importingModelById": "{modelId} 가져오는 중...",
    "importSuccessCount": "{count, plural, one {# model} other {# models}}을(를) 성공적으로 가져왔습니다!",
    "noNewModelsAddedExisting": "새로운 모델이 추가되지 않았습니다(모두 이미 존재함).",
    "importDoneCount": "✓ 완료! {count, plural, one {# model imported.} other {# models imported.}}",
    "unexpectedErrorOccurred": "예상치 못한 오류가 발생했습니다.",
    "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}",
    "messagesPath": "메시지",
    "responsesPath": "응답",
    "chatCompletionsPath": "채팅/완료",
    "add": "추가",
    "edit": "편집",
    "delete": "삭제",
    "anthropic": "인류학",
    "openai": "오픈AI",
    "singleConnectionPerCompatible": "호환되는 노드당 하나의 연결만 허용됩니다. 더 많은 연결이 필요한 경우 다른 노드를 추가하세요.",
    "connections": "연결",
    "providerProxyTitleConfigured": "공급자 프록시: {host}",
    "configured": "구성된",
    "providerProxyConfigureHint": "이 공급자의 모든 연결에 대한 프록시 구성",
    "providerProxy": "공급자 프록시",
    "repairEnv": "Repair env",
    "repairEnvWorking": "Repairing...",
    "repairEnvHint": "Restore missing OAuth defaults into .env without overwriting existing values.",
    "repairEnvSuccess": "OAuth defaults restored",
    "repairEnvFailed": "Failed to repair .env",
    "noConnectionsYet": "아직 연결이 없습니다.",
    "addFirstConnectionHint": "시작하려면 첫 번째 연결을 추가하세요.",
    "addConnection": "연결 추가",
    "availableModels": "사용 가능한 모델",
    "builtInModels": "Built-in models",
    "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.",
    "pageAutoRefresh": "페이지가 자동으로 새로 고쳐집니다...",
    "statusDisabled": "장애인",
    "statusConnected": "연결됨",
    "statusRuntimeIssue": "런타임 문제",
    "statusAuthFailed": "인증 실패",
    "statusRateLimited": "요금 제한",
    "statusNetworkIssue": "네트워크 문제",
    "statusTestUnsupported": "지원되지 않는 테스트",
    "statusUnavailable": "이용할 수 없음",
    "statusFailed": "실패했다",
    "statusError": "오류",
    "oauthAccount": "OAuth 계정",
    "errorTypeRuntime": "로컬 런타임",
    "errorTypeUpstreamAuth": "업스트림 인증",
    "errorTypeMissingCredential": "자격증명 누락",
    "errorTypeRefreshFailed": "새로고침 실패",
    "errorTypeTokenExpired": "토큰이 만료되었습니다.",
    "errorTypeRateLimited": "요금 제한",
    "errorTypeUpstreamUnavailable": "업스트림 이용 불가",
    "errorTypeNetworkError": "네트워크 오류",
    "errorTypeTestUnsupported": "지원되지 않는 테스트",
    "errorTypeUpstreamError": "업스트림 오류",
    "proxySourceGlobal": "글로벌",
    "proxySourceProvider": "공급자",
    "proxySourceKey": "열쇠",
    "proxyConfiguredBySource": "프록시({source}): {host}",
    "autoPriority": "자동: {priority}",
    "proxy": "프록시",
    "retestAuthentication": "인증 재테스트",
    "retest": "재테스트",
    "disableConnection": "연결 비활성화",
    "enableConnection": "연결 활성화",
    "reauthenticateConnection": "이 연결을 다시 인증하세요.",
    "proxyConfig": "프록시 구성",
    "aliasExistsAlert": "별칭 \"{alias}\"이(가) 이미 존재합니다. 다른 모델을 사용하거나 기존 별칭을 수정하세요.",
    "openRouterAnyModelHint": "OpenRouter는 모든 모델을 지원합니다. 빠른 액세스를 위해 모델을 추가하고 별칭을 만듭니다.",
    "modelIdFromOpenRouter": "모델 ID(OpenRouter에서)",
    "openRouterModelPlaceholder": "인류학/claude-3-opus",
    "customModels": "맞춤형 모델",
    "customModelsHint": "기본 목록에 없는 모델 ID를 추가하세요. 라우팅에 사용할 수 있습니다.",
    "normalizeToolCallIdLabel": "Normalize tool call IDs to 9 characters (e.g. Mistral)",
    "preserveDeveloperRoleLabel": "Keep OpenAI Responses developer role (do not map to system)",
    "compatAdjustmentsTitle": "Compatibility",
    "compatButtonLabel": "Compatibility",
    "compatToolIdShort": "Tool ID 9",
    "compatDeveloperShort": "Developer role",
    "compatDoNotPreserveDeveloper": "Do not preserve developer role",
    "compatBadgeNoPreserve": "No preserve",
    "compatProtocolLabel": "Client request protocol",
    "compatProtocolHint": "These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).",
    "compatProtocolOpenAI": "OpenAI Chat Completions",
    "compatProtocolOpenAIResponses": "OpenAI Responses API",
    "compatProtocolClaude": "Anthropic Messages",
    "compatUpstreamHeadersLabel": "Extra upstream headers",
    "compatUpstreamHeadersHint": "High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.",
    "compatUpstreamHeaderName": "Header name",
    "compatUpstreamHeaderValue": "Value",
    "compatUpstreamAddRow": "Add header",
    "compatUpstreamRemoveRow": "Remove row",
    "compatBadgeUpstreamHeaders": "Headers",
    "perModelQuotaLabel": "Per Model Quota Label",
    "perModelQuotaDescription": "Per Model Quota Description",
    "perModelQuotaToggle": "모델별 할당량 토글",
    "modelId": "모델 ID",
    "customModelPlaceholder": "예를 들어 gpt-4.5-터보",
    "loading": "로드 중...",
    "removeCustomModel": "맞춤 모델 삭제",
    "noCustomModels": "아직 추가된 커스텀 모델이 없습니다.",
    "allSuggestedAliasesExist": "제안된 별칭이 모두 이미 존재합니다. 다른 모델을 선택하거나 충돌하는 별칭을 삭제하세요.",
    "failedSaveCustomModel": "커스텀 모델을 저장하지 못했습니다.",
    "modelAddedSuccess": "모델 {modelId}이(가) 성공적으로 추가되었습니다.",
    "failedAddModelTryAgain": "모델을 추가하지 못했습니다. 다시 시도해 주세요.",
    "failedSaveImportedModel": "가져온 모델을 사용자 정의 데이터베이스에 저장하지 못했습니다.",
    "failedImportModelsTryAgain": "모델을 가져오지 못했습니다. 다시 시도해 주세요.",
    "failedRemoveModelFromDatabase": "데이터베이스에서 모델을 제거하지 못했습니다.",
    "modelRemovedSuccess": "모델이 성공적으로 제거되었습니다.",
    "failedDeleteModelTryAgain": "모델을 삭제하지 못했습니다. 다시 시도해 주세요.",
    "compatibleModelsDescription": "{type} 호환 모델을 수동으로 추가하거나 /models 엔드포인트에서 가져옵니다.",
    "anthropicCompatibleModelPlaceholder": "클로드-3-opus-20240229",
    "openaiCompatibleModelPlaceholder": "gpt-4o",
    "apiKeyValidationFailed": "API 키 검증에 실패했습니다. 키를 확인하고 다시 시도해 주세요.",
    "addProviderApiKeyTitle": "{provider} API 키 추가",
    "checking": "확인 중...",
    "check": "확인",
    "valid": "유효",
    "invalid": "유효하지 않음",
    "creating": "만드는 중...",
    "validationChecksAnthropicCompatible": "검증은 API 키를 확인하여 {provider}을 확인합니다.",
    "validationChecksOpenAiCompatible": "유효성 검사는 기본 URL의 /models를 통해 {provider}을 확인합니다.",
    "priorityLabel": "우선순위",
    "saving": "저장 중...",
    "save": "저장",
    "editConnection": "연결 편집",
    "accountName": "계정 이름",
    "email": "이메일",
    "healthCheckMinutes": "상태 점검(분)",
    "healthCheckHint": "사전 토큰 새로 고침 간격. 0 = 비활성화됨.",
    "selectAllModels": "Select all",
    "deselectAllModels": "Deselect all",
    "modelsActiveCount": "{active}/{total} active",
    "noModelsMatch": "No models match \"{filter}\"",
    "groupLabel": "Environment",
    "groupPlaceholder": "e.g. eKaizen, Personal",
    "failedTestConnection": "연결을 테스트하지 못했습니다.",
    "failed": "실패",
    "leaveBlankKeepCurrentApiKey": "현재 API 키를 유지하려면 비워 두세요.",
    "editCompatibleTitle": "{type} 호환 가능 편집",
    "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.",
    "apiKeyForCheck": "API Key(확인용)",
    "compatibleProdPlaceholder": "{type} 호환 가능(프로덕션)",
    "tokenRefreshed": "Token refreshed successfully",
    "tokenRefreshFailed": "Token refresh failed",
    "applyCodexAuthLocal": "Apply auth",
    "exportCodexAuthFile": "Export auth",
    "applyClaudeAuthLocal": "인증 적용",
    "exportClaudeAuthFile": "인증 내보내기",
    "importClaudeAuth": "인증 가져오기",
    "claudeApplyModalTitle": "지역 클로드 코드에 적용",
    "claudeApplyTargetLabel": "대상 경로",
    "claudeApplyBackupLabel": "백업",
    "claudeApplyMcpHint": "기존 MCP OAuth 상태는 유지됩니다.",
    "claudeApplyWarning": "이는 기존 cludeAiOauth 섹션을 대체합니다. 계속하다?",
    "claudeApplyConfirmCheckbox": "기존 cludeAiOauth 섹션을 교체할 것임을 확인합니다.",
    "claudeApply": "적용",
    "claudeAuthAppliedLocal": "Claude 인증이 로컬로 적용됨",
    "claudeAuthApplyFailed": "Claude 인증을 로컬로 적용하지 못했습니다.",
    "claudeAuthExported": "Claude 인증 파일을 내보냈습니다.",
    "claudeAuthExportFailed": "Claude 인증 파일을 내보내지 못했습니다.",
    "claudeImportModalTitle": "클로드 인증 가져오기",
    "claudeImportTabSingle": "싱글",
    "claudeImportTabBulk": "대량",
    "claudeImportTabUpload": "파일 업로드",
    "claudeImportTabPaste": "JSON 붙여넣기",
    "claudeImportFileLabel": ".credentials.json을 선택하세요.",
    "claudeImportPasteLabel": "JSON 콘텐츠 붙여넣기",
    "claudeImportEmailLabel": "계정 이메일",
    "claudeImportNameLabel": "연결 이름(선택 사항)",
    "claudeImportOverwriteLabel": "계정이 이미 존재하는 경우 기존 연결 바꾸기",
    "claudeImportSubmit": "가져오기",
    "claudeImportSuccess": "Claude 연결을 성공적으로 가져왔습니다.",
    "claudeImportInvalidJson": "파일을 JSON으로 구문 분석할 수 없습니다.",
    "claudeImportInvalidShape": "파일이 유효한 .credentials.json이 아닙니다.",
    "claudeImportDuplicate": "계정이 이미 존재합니다. 덮어쓰려면 \"기존 교체\"를 활성화하세요.",
    "claudeImportIdentityUnverified": "부트스트랩이 계정을 확인할 수 없습니다. \"기존 교체\"를 활성화하거나 이메일을 제공하십시오.",
    "claudeImportFailed": "Claude 인증을 가져오지 못했습니다.",
    "claudeImportBulkModeUpload": "파일 업로드",
    "claudeImportBulkModePaste": "JSON 배열 붙여넣기",
    "claudeImportBulkModeZip": "우편번호 업로드",
    "claudeImportBulkUploadHint": "최대 50개의 .credentials.json 파일(각각 256KB, 총 10MB)을 삭제하거나 선택하세요.",
    "claudeImportBulkPasteHint": "객체 배열 붙여넣기: [{ json, name?, email? }, ...]",
    "claudeImportBulkZipHint": ".json 항목이 포함된 ZIP입니다. 최대 50개 항목, 압축 해제 시 10MB.",
    "claudeImportBulkSubmit": "모두 가져오기",
    "claudeImportBulkSuccess": "가져온 {count} Claude 연결",
    "claudeImportBulkFailed": "일부 항목을 가져오지 못했습니다.",
    "claudeImportBulkZipExtracting": "ZIP 추출 중…",
    "claudeImportBulkZipError": "ZIP을 추출하지 못했습니다.",
    "applyGeminiAuthLocal": "인증 적용",
    "exportGeminiAuthFile": "인증 내보내기",
    "importGeminiAuth": "인증 가져오기",
    "geminiApplyModalTitle": "로컬 Gemini CLI에 적용",
    "geminiApplyTargetLabel": "대상 경로",
    "geminiApplyBackupLabel": "백업",
    "geminiApplyAccountsHint": "google_accounts.json 활성 계정은 이 연결과 일치하도록 업데이트됩니다.",
    "geminiApplyWarning": "그러면 기존 oauth_creds.json이 대체되고 google_accounts.json이 업데이트됩니다. 계속하다?",
    "geminiApplyConfirmCheckbox": "기존 oauth_creds.json을 교체할 것임을 확인합니다.",
    "geminiApply": "적용",
    "geminiAuthAppliedLocal": "Gemini 인증이 로컬로 적용됨",
    "geminiAuthApplyFailed": "로컬에서 Gemini 인증을 적용하지 못했습니다.",
    "geminiAuthExported": "Gemini 인증 파일을 내보냈습니다.",
    "geminiAuthExportFailed": "Gemini 인증 파일을 내보내지 못했습니다.",
    "geminiImportModalTitle": "Gemini 인증 가져오기",
    "geminiImportTabSingle": "싱글",
    "geminiImportTabBulk": "대량",
    "geminiImportTabUpload": "파일 업로드",
    "geminiImportTabPaste": "JSON 붙여넣기",
    "geminiImportFileLabel": "oauth_creds.json을 선택하세요.",
    "geminiImportPasteLabel": "JSON 콘텐츠 붙여넣기",
    "geminiImportEmailLabel": "계정 이메일",
    "geminiImportNameLabel": "연결 이름(선택 사항)",
    "geminiImportOverwriteLabel": "계정이 이미 존재하는 경우 기존 연결 바꾸기",
    "geminiImportSubmit": "가져오기",
    "geminiImportSuccess": "Gemini 연결을 성공적으로 가져왔습니다.",
    "geminiImportInvalidJson": "파일을 JSON으로 구문 분석할 수 없습니다.",
    "geminiImportInvalidShape": "파일이 유효한 oauth_creds.json이 아닙니다.",
    "geminiImportDuplicate": "계정이 이미 존재합니다. 덮어쓰려면 \"기존 교체\"를 활성화하세요.",
    "geminiImportIdentityUnverified": "id_token에서 신원을 확인할 수 없습니다. \"기존 교체\"를 활성화하거나 이메일을 제공하십시오.",
    "geminiImportFailed": "Gemini 인증을 가져오지 못했습니다.",
    "geminiImportBulkModeUpload": "파일 업로드",
    "geminiImportBulkModePaste": "JSON 배열 붙여넣기",
    "geminiImportBulkModeZip": "우편번호 업로드",
    "geminiImportBulkUploadHint": "최대 50개의 oauth_creds.json 파일(각각 256KB, 총 10MB)을 삭제하거나 선택하세요.",
    "geminiImportBulkPasteHint": "객체 배열 붙여넣기: [{ json, name?, email? }, ...]",
    "geminiImportBulkZipHint": "oauth_creds.json 항목이 포함된 ZIP입니다. 최대 50개 항목, 압축 해제 시 10MB.",
    "geminiImportBulkSubmit": "모두 가져오기",
    "geminiImportBulkSuccess": "가져온 {count} Gemini 연결",
    "geminiImportBulkFailed": "일부 항목을 가져오지 못했습니다.",
    "geminiImportBulkZipExtracting": "ZIP 추출 중…",
    "geminiImportBulkZipError": "ZIP을 추출하지 못했습니다.",
    "codexAuthAppliedLocal": "Codex auth.json applied locally",
    "codexAuthApplyFailed": "Failed to apply Codex auth.json locally",
    "codexAuthExported": "Codex auth.json exported",
    "codexAuthExportFailed": "Failed to export Codex auth.json",
    "importCodexAuth": "인증 가져오기",
    "codexImportModalTitle": "Codex 인증 가져오기",
    "codexImportTabSingle": "싱글",
    "codexImportTabBulk": "대량",
    "codexImportTabUpload": "파일 업로드",
    "codexImportTabPaste": "JSON 붙여넣기",
    "codexImportFileLabel": "auth.json을 선택하세요.",
    "codexImportFileHint": "Codex 또는 OmniRoute에서 내보낸 auth.json 파일을 선택합니다.",
    "codexImportPasteLabel": "JSON 콘텐츠 붙여넣기",
    "codexImportEmailLabel": "계정 이메일",
    "codexImportEmailHint": "파일에서 자동 감지됩니다. 필요한 경우 편집하십시오.",
    "codexImportNameLabel": "연결 이름(선택 사항)",
    "codexImportOverwriteLabel": "계정이 이미 존재하는 경우 기존 연결 바꾸기",
    "codexImportSubmit": "가져오기",
    "codexImportSuccess": "Codex 연결을 성공적으로 가져왔습니다.",
    "codexImportInvalidJson": "파일을 JSON으로 구문 분석할 수 없습니다.",
    "codexImportInvalidShape": "파일이 유효한 Codex auth.json이 아닙니다.",
    "codexImportDuplicate": "계정이 이미 존재합니다. 덮어쓰려면 \"기존 교체\"를 활성화하세요.",
    "codexImportFailed": "Codex 인증을 가져오지 못했습니다.",
    "codexImportDetectedEmail": "감지됨: {email}",
    "codexImportNoEmailDetected": "파일에서 이메일이 감지되지 않았습니다.",
    "codexImportBulkModeUpload": "파일 업로드",
    "codexImportBulkModePaste": "목록 붙여넣기",
    "codexImportBulkModeZip": "ZIP 아카이브",
    "codexImportBulkUploadHint": "여러 .json 파일을 선택하거나 끌어서 놓기",
    "codexImportBulkPasteHint": "JSON 배열 [ {...}, {...} ] 또는 한 줄에 ---로 구분된 여러 JSON",
    "codexImportBulkZipHint": "auth.json 파일이 포함된 .zip 업로드(최대 50개 파일, 10MB)",
    "codexImportBulkSubmit": "{count} 계정 가져오기",
    "codexImportBulkLimit": "가져오기당 최대 50개 파일",
    "codexImportBulkSuccess": "{count} 가져옴",
    "codexImportBulkFailed": "{count} 실패",
    "codexImportBulkZipExtracting": "ZIP 추출 중…",
    "codexImportBulkZipError": "ZIP을 추출하지 못했습니다.",
    "advancedSettings": "Advanced Settings",
    "chatPathLabel": "Chat Endpoint Path",
    "chatPathPlaceholder": "/chat/completions",
    "chatPathHint": "Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)",
    "modelsPathLabel": "Models Endpoint Path",
    "modelsPathPlaceholder": "/models",
    "modelsPathHint": "Custom models path for validation (e.g. /v4/models)",
    "statusDeactivated": "Deactivated (Manual)",
    "statusBanned": "Banned / Sandbox Violation",
    "statusCreditsExhausted": "Insufficient Balance / Quota Exhausted",
    "showEmails": "Show all emails",
    "hideEmails": "Hide all emails",
    "a": "A",
    "accountConcurrencyCapHint": "이 provider 계정의 최대 동시 요청 수입니다. 비워 두거나 0으로 설정하면 제한이 없습니다. provider 자체가 부과하는 제한에 먼저 걸리지 않도록 돕습니다.",
    "accountConcurrencyCapLabel": "Provider 계정 최대 동시 요청 수",
    "accountIdHint": "Account Id Hint",
    "accountIdLabel": "Account Id Label",
    "accountIdPlaceholder": "Account Id Placeholder",
    "addAnotherApiKey": "Add another API key or paste multiple keys",
    "addCcCompatible": "Add Cc Compatible",
    "aggregatorsGateways": "Aggregators Gateways",
    "enterpriseCloud": "엔터프라이즈 및 클라우드",
    "apiFormatLabel": "Api Format Label",
    "apiKeyOptionalHint": "Api Key Optional Hint",
    "apiKeyOptionalLabel": "Api Key Optional Label",
    "apiRegionChina": "Api Region China",
    "apiRegionHint": "Api Region Hint",
    "apiRegionInternational": "Api Region International",
    "apiRegionLabel": "Api Region Label",
    "apikey": "Apikey",
    "audio": "Audio",
    "audioProvidersHeading": "Audio Providers Heading",
    "cloudAgentProviders": "클라우드 에이전트 제공업체",
    "audioShortLabel": "Audio Short Label",
    "azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint",
    "bailianBaseUrlHint": "Bailian Base Url Hint",
    "claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.",
    "claudeWebCookiePlaceholder": "sessionKey=sk-ant-...",
    "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...",
    "blockClaudeExtraUsageDescription": "Block Claude Extra Usage Description",
    "blockClaudeExtraUsageLabel": "Block Claude Extra Usage Label",
    "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",
    "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",
    "codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.",
    "codexFastServiceTierLabel": "Codex fast service tier",
    "codexWeeklyToggleTitle": "Codex Weekly Toggle Title",
    "compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder",
    "compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder",
    "compatible": "Compatible",
    "configuredCount": "Configured Count",
    "consoleApiKeyOracleHint": "Console Api Key Oracle Hint",
    "consoleApiKeyOracleLabel": "Console Api Key Oracle Label",
    "consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder",
    "cpaModeDisabledTitle": "Cpa Mode Disabled Title",
    "cpaModeEnabledTitle": "Cpa Mode Enabled Title",
    "customUserAgentHint": "Custom User Agent Hint",
    "customUserAgentLabel": "Custom User Agent Label",
    "databricksBaseUrlHint": "Databricks Base Url Hint",
    "defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.",
    "defaultThinkingStrengthLabel": "Default thinking strength",
    "deleteAllExtraApiKeys": "Delete all",
    "excludedModelsHint": "Excluded Models Hint",
    "excludedModelsLabel": "Excluded Models Label",
    "excludedModelsPlaceholder": "Excluded Models Placeholder",
    "expirationBannerExpired": "Expiration Banner Expired",
    "expirationBannerExpiredDesc": "Expiration Banner Expired Desc",
    "expirationBannerExpiringSoon": "Expiration Banner Expiring Soon",
    "expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc",
    "extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}",
    "extraApiKeysHint": "Extra Api Keys Hint",
    "extraApiKeysLabel": "Extra Api Keys Label",
    "apiKeyHealthLabel": "API Key Health",
    "apiKeyStatusActive": "Active",
    "apiKeyStatusWarning": "Warning ({count} failures)",
    "apiKeyStatusInvalid": "Invalid",
    "primaryKey": "Primary Key",
    "apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.",
    "apiKeyInvalidAlertTitle": "API Key Health Alert",
    "apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.",
    "apiKeyWarningAlertTitle": "API Key Warning",
    "googlePseInfo": "Google Pse Info",
    "geminiCliProjectIdHint": "Google Cloud 프로젝트 ID입니다. 예외가 있는 계정에 필요합니다. Gemini CLI와 함께 사용할 GCP 프로젝트 ID를 입력하세요.",
    "geminiCliProjectIdLabel": "Google Cloud 프로젝트 ID",
    "geminiCliProjectIdPlaceholder": "내-gcp-프로젝트-id",
    "antigravityProjectIdHint": "Antigravity Cloud Code 요청에 대한 선택적 재정의. Google OAuth 중에 발견된 프로젝트를 사용하려면 비워두세요.",
    "antigravityClientProfileLabel": "__MISSING__:Client profile",
    "antigravityClientProfileHint": "__MISSING__:Choose which Antigravity client identity OmniRoute presents to the API.",
    "antigravityClientProfileIde": "__MISSING__:IDE",
    "antigravityClientProfileHarness": "__MISSING__:Harness / CLI",
    "codexFastTierActiveChip": "__MISSING__:Codex Fast tier is active",
    "tierFast": "__MISSING__:Fast",
    "antigravityProjectIdLabel": "Google Cloud 프로젝트 ID",
    "antigravityProjectIdPlaceholder": "내-gcp-프로젝트-id",
    "grokWebCookieHint": "Grok Web Cookie Hint",
    "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder",
    "herokuBaseUrlHint": "Heroku Base Url Hint",
    "hideEmail": "Hide Email",
    "imageProviders": "Image Providers",
    "videoProviders": "비디오 생성",
    "embeddingRerankProviders": "임베딩 및 순위 재지정",
    "imagesShortLabel": "Images Short Label",
    "llmProviders": "Llm Providers",
    "localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint",
    "localProviderBaseUrlHint": "Local Provider Base Url Hint",
    "localProviders": "Local Providers",
    "maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error",
    "museSparkWebCookieHint": "Muse Spark Web Cookie Hint",
    "museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder",
    "oauth": "Oauth",
    "openCliTools": "Open Cli Tools",
    "openSettings": "Open Settings",
    "openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.",
    "openaiResponsesStoreLabel": "OpenAI Responses store",
    "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",
    "refreshOauthTokenTitle": "Refresh Oauth Token Title",
    "regionHint": "Region Hint",
    "regionLabel": "Region Label",
    "removeThisKey": "Remove This Key",
    "routingTagsHint": "Routing Tags Hint",
    "routingTagsLabel": "Routing Tags Label",
    "routingTagsPlaceholder": "Routing Tags Placeholder",
    "search": "Search",
    "searchEngineIdHint": "Search Engine Id Hint",
    "searchEngineIdLabel": "Search Engine Id Label",
    "searchEngineIdRequired": "Search Engine Id Required",
    "searchProvider": "Search Provider",
    "searchProviderDesc": "Search Provider Desc",
    "searchProviders": "공급자 검색...",
    "searchProvidersHeading": "Search Providers Heading",
    "searxngBaseUrlHint": "Searxng Base Url Hint",
    "searxngInfo": "Searxng Info",
    "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",
    "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",
    "tokenExpiredBadge": "Token Expired Badge",
    "tokenExpiredTitle": "Token Expired Title",
    "tokenExpiresSoonTitle": "Token Expires Soon Title",
    "tokenShort": "Token Short",
    "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",
    "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",
    "xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint",
    "zedImportButton": "Zed Import Button",
    "zedImportFailed": "Zed Import Failed",
    "zedImportHint": "Zed Import Hint",
    "zedImportNetworkError": "Zed Import Network Error",
    "zedImportNone": "Zed Import None",
    "zedImportSuccess": "Zed Import Success",
    "zedImporting": "Zed Importing",
    "freeTierProviders": "무료 계층 공급자",
    "freeTierLabel": "무료 등급 이용 가능",
    "freeTierProvidersDesc": "무료 등급이 있는 공급자 - 일부는 API 키 등록이 필요하고 다른 공급자는 자격 증명이 전혀 필요하지 않습니다.",
    "providerSummaryAll": "합계",
    "ideProviders": "IDE 제공업체",
    "ideProvidersDesc": "AI 구독이 내장된 편집자. 공급자 페이지를 사용하여 IDE 키체인에서 직접 자격 증명을 가져옵니다.",
    "noIdeProviders": "현재 필터와 일치하는 IDE 공급자가 없습니다.",
    "providerDetailFastTierTooltip": "기본적으로 모든 Codex 연결에 Codex Fast 계층 적용",
    "providerDetailFastDefaultLabel": "빠른 기본값",
    "providerDetailBrowserManualConnect": "브라우저/수동 연결",
    "providerDetailAuthUrl": "인증 URL",
    "providerDetailCallbackUrl": "콜백 URL",
    "providerDetailValidClaudeCredentialsFile": "유효한 Claude 자격 증명 파일",
    "providerDetailPathAutoDetectedAllOs": "경로는 OS(Linux/Mac/Windows)별로 자동 감지됩니다.",
    "providerDetailMyClaudeAccountPlaceholder": "내 클로드 계정",
    "providerDetailPathAutoDetected": "경로는 OS(Linux/Mac)별로 자동 감지됩니다.",
    "webFetch": "__MISSING__:Web Fetch",
    "webFetchTooltip": "__MISSING__:Providers that extract content from web URLs (HTML → Markdown, scrape, screenshot)",
    "webFetchProvidersHeading": "__MISSING__:Web Fetch Providers",
    "compatibleProvidersDesc": "__MISSING__:OpenAI-compatible and Anthropic-compatible endpoints you host or configure. Point any OpenAI SDK to your own URL and route requests here.",
    "oauthProvidersDesc": "__MISSING__:Providers authenticated via OAuth — sign in once and OmniRoute handles token rotation automatically.",
    "webCookieProvidersDesc": "이러한 공급자는 API 키 대신 브라우저 웹 세션, 쿠키 또는 웹 토큰을 사용합니다. 공급자를 열어 필수 세션 자격 증명을 추가하세요.",
    "apiKeyProvidersDesc": "__MISSING__:Standard API key providers. Add your key once and OmniRoute routes, retries, and rate-limits on your behalf.",
    "noAuthProvidersDesc": "__MISSING__:Open endpoints that require no credentials — ready to use immediately without any sign-up.",
    "upstreamProxyProvidersDesc": "__MISSING__:Route outbound traffic through an upstream proxy before it reaches the provider. Useful for corporate networks or traffic inspection.",
    "webFetchProvidersDesc": "__MISSING__:Providers that fetch and extract content from web URLs. Use them to ground prompts with live web data.",
    "aggregatorsGatewaysDesc": "__MISSING__:Multi-provider aggregators and AI gateways that expose a single unified API across dozens of underlying models.",
    "enterpriseCloudDesc": "__MISSING__:Enterprise-tier and cloud-hosted models with enhanced SLAs, compliance certifications, and dedicated capacity.",
    "cloudAgentProvidersDesc": "__MISSING__:Autonomous cloud agents that execute long-running tasks with plan approval and live status tracking.",
    "localProvidersDesc": "__MISSING__:Self-hosted models running on your own hardware. No data leaves your infrastructure.",
    "searchProvidersDesc": "__MISSING__:Web and document search providers. Attach them to LLM calls for Retrieval-Augmented Generation.",
    "audioProvidersDesc": "__MISSING__:Text-to-speech and speech-to-text providers for voice I/O and audio transcription pipelines.",
    "embeddingRerankProvidersDesc": "__MISSING__:Vector embedding and reranking providers for semantic search, RAG pipelines, and similarity scoring.",
    "imageProvidersDesc": "__MISSING__:Image generation and vision providers — create images from text or analyse existing ones.",
    "videoProvidersDesc": "__MISSING__:Video generation providers. Create short video clips from text prompts or images.",
    "onboardingWizard": "공급자 온보딩 마법사",
    "onboardingWizardShort": "온보딩 마법사",
    "onboardingWizardDescription": "유효성 검사, 지속성 및 즉각적인 연결 테스트를 통해 API 키, 사용자 정의 호환 및 OAuth 공급자를 연결하세요.",
    "onboardingStepType": "유형",
    "onboardingStepProvider": "공급자",
    "onboardingStepCredentials": "자격 증명",
    "onboardingStepResult": "결과",
    "onboardingTypeApiKeyTitle": "API 키 제공자",
    "onboardingTypeApiKeyText": "OpenAI, Anthropic, Gemini, Groq, Azure 등과 같은 기본 제공 공급자를 사용하세요.",
    "onboardingTypeCustomTitle": "맞춤형 호환 제공업체",
    "onboardingTypeCustomText": "OpenAI, Anthropic 또는 Claude Code 호환 엔드포인트를 생성하고 해당 키를 추가합니다.",
    "onboardingTypeOAuthTitle": "OAuth 제공자",
    "onboardingTypeOAuthText": "코딩 제공자를 위해 기존 OAuth, 장치 코드 또는 로컬 가져오기 흐름을 재사용합니다.",
    "onboardingChooseOAuthProvider": "OAuth 제공업체 선택",
    "onboardingChooseApiKeyProvider": "API 키 제공업체 선택",
    "onboardingChooseProviderDescription": "공급자를 선택하면 마법사가 자격 증명 및 테스트 과정을 안내합니다.",
    "onboardingChangeType": "유형 변경",
    "onboardingChangeProvider": "공급자 변경",
    "onboardingSearchProviders": "검색 공급자…",
    "onboardingApiKeyOptional": "API 키 선택사항",
    "onboardingProviderConnected": "제공업체가 연결됨",
    "onboardingProviderSavedWithWarnings": "경고와 함께 공급자가 저장되었습니다.",
    "onboardingProviderFinished": "제공업체 온보딩이 완료되었습니다.",
    "onboardingYourProviderConnection": "귀하의 공급자 연결",
    "onboardingTestPassed": "테스트 통과",
    "onboardingTestFailed": "테스트 실패",
    "onboardingOpenProviderDetails": "제공업체 세부정보 열기",
    "onboardingTryInPlayground": "놀이터에서 시험해 보세요",
    "onboardingDefaultConnectionName": "{provider} 기본",
    "onboardingTestingConnection": "제공업체 연결 테스트 중…",
    "onboardingValidatingCredentials": "사용자 인증 정보 확인 중…",
    "onboardingSavingConnection": "제공업체 연결 저장 중…",
    "onboardingProviderFailed": "제공업체 온보딩 실패",
    "onboardingCreatingCompatibleProvider": "호환되는 제공업체 생성 중…",
    "onboardingSavingCompatibleConnection": "호환되는 제공업체 연결 저장 중…",
    "onboardingCustomProviderFallbackName": "맞춤 제공업체",
    "onboardingCustomProviderFailed": "맞춤 제공업체 온보딩 실패",
    "onboardingLoadingOAuthConnection": "OAuth 연결 로드 중…",
    "onboardingOAuthNoConnectionFound": "OAuth가 완료되었지만 공급자 연결을 찾을 수 없습니다.",
    "onboardingOAuthFailed": "OAuth 온보딩 실패",
    "onboardingAddProvider": "{provider} 추가",
    "onboardingConnectionName": "연결 이름",
    "onboardingApiKeyOptionalLabel": "API 키(선택사항)",
    "onboardingBaseUrlOverride": "기본 URL 재정의",
    "onboardingBaseUrlOverrideHint": "선택사항. 공급자별 데이터.baseUrl로 저장됩니다.",
    "onboardingRegion": "지역",
    "onboardingSearchCx": "CX/엔진 ID 검색",
    "onboardingProviderSpecificIdPlaceholder": "선택적 제공업체별 ID",
    "onboardingCustomUserAgent": "맞춤형 사용자 에이전트",
    "onboardingWorking": "일하는 중…",
    "onboardingValidateSaveTest": "검증, 저장 및 테스트",
    "onboardingBack": "뒤로",
    "onboardingCreateCustomCompatibleProvider": "맞춤형 호환 제공자 생성",
    "onboardingCreateCustomCompatibleDescription": "마법사는 먼저 공급자 노드를 생성한 다음 API 키 연결을 저장하고 테스트합니다.",
    "onboardingProtocol": "프로토콜",
    "onboardingOpenAiCompatible": "OpenAI 호환",
    "onboardingAnthropicCompatible": "인류 친화적인",
    "onboardingClaudeCodeCompatible": "클로드 코드 호환",
    "onboardingProviderPrefix": "공급자 접두사",
    "onboardingProviderPrefixHint": "관리형 공급자 ID를 생성하는 데 사용됩니다.",
    "onboardingChatPath": "채팅 경로",
    "onboardingModelsPath": "모델 경로",
    "onboardingCreateSaveTest": "생성, 저장 및 테스트",
    "onboardingConnectProvider": "{provider} 연결",
    "onboardingOAuthFlowDescription": "OmniRoute는 이 공급자에 대한 기존 OAuth 흐름을 엽니다. 로그인 후 마법사는 저장된 연결을 다시 로드하고 공급자 페이지와 동일한 연결 테스트를 실행합니다.",
    "onboardingStartOAuthFlow": "OAuth 흐름 시작",
    "passthroughModelsDescription": "{provider}은 공급자 기본 모델 ID를 허용합니다. /models에서 가져오거나 라우팅을 위한 사용자 정의 ID를 추가하세요.",
    "bedrockModelsDescription": "Amazon Bedrock 모델은 AWS 지역별로 범위가 지정됩니다. /models에서 가져오거나 선택한 지역에서 활성화된 Bedrock 모델 ID를 추가하세요.",
    "bedrockModelPlaceholder": "anthropic.claude-sonnet-4-6",
    "addProviderSessionCookieTitle": "{provider} 세션 쿠키 추가",
    "addProviderWebTokenTitle": "{provider} 웹 토큰 추가",
    "addProviderConnectionTitle": "{provider} 연결 추가",
    "webTokenCredentialLabel": "웹 세션 토큰",
    "webNoAuthCredentialLabel": "자격 증명이 필요하지 않습니다",
    "webCookieCredentialHint": "필수 쿠키: {credential}. 로그인한 {provider} 웹 세션의 쿠키 헤더 값을 붙여넣습니다. Cookie: 접두사를 포함하지 마세요.",
    "webTokenCredentialHint": "자격 증명: {credential}. 로그인한 {provider} 웹 세션의 토큰 값을 붙여넣거나 공급자가 지원하는 경우 DevTools HAR 내보내기를 붙여넣습니다.",
    "webCookieEditHint": "현재 세션 쿠키를 유지하려면 비워 두세요. 필수 쿠키: {credential}.",
    "webTokenEditHint": "현재 웹 세션 토큰을 유지하려면 비워 두세요. 자격 증명: {credential}.",
    "webSessionGuideTitle": "세션 자격 증명을 얻는 방법",
    "webSessionGuideIntro": "{provider}은 API 키 대신 브라우저 웹 세션을 사용합니다.",
    "webCookieRequiredCredential": "필수 쿠키: {credential}",
    "webTokenRequiredCredential": "필수 토큰: {credential}",
    "webSessionGuideStep1": "브라우저에서 {provider}에 로그인하세요.",
    "webSessionGuideStep2": "브라우저 개발자 도구를 열고 웹 앱의 요청을 검사합니다.",
    "webSessionGuideStep3": "공급자의 자체 도메인에서 필수 자격 증명을 복사합니다. 쿠키의 경우 Cookie 헤더 값만 복사하고 Cookie:를 생략하세요.",
    "webSessionGuideStep4": "여기에 붙여넣고 연결을 확인하세요. 작동이 중지되면 다시 로그인하여 새로운 값으로 바꾸세요.",
    "webSessionSecurityHint": "이를 비밀번호처럼 취급하십시오. 비밀번호가 만료되거나 취소될 때까지 로그인한 웹 계정에 액세스할 수 있습니다.",
    "webNoAuthGuideTitle": "자격 증명이 필요하지 않습니다",
    "webNoAuthGuideBody": "{provider}에는 API 키나 쿠키가 필요하지 않습니다. 무료 웹 엔드포인트를 사용하려면 연결을 저장하세요.",
    "webSessionCredentialValidationFailed": "세션 자격 증명 유효성 검사에 실패했습니다. 다시 로그인하고 새로운 자격 증명을 복사한 후 다시 시도하세요.",
    "checkCookie": "쿠키 확인",
    "checkWebToken": "토큰 확인"
  },
  "settings": {
    "title": "설정",
    "general": "일반",
    "security": "보안",
    "appearance": "외관",
    "routing": "라우팅",
    "cache": "캐시",
    "resilience": "탄력성",
    "routingSettingsIntro": "요청이 라우팅, 변환 및 AI 공급자에게 전송되는 방식을 제어합니다.",
    "routingOpDropParagraphContainsLabel": "__MISSING__:Drop paragraph (contains)",
    "routingOpDropParagraphStartsWithLabel": "__MISSING__:Drop paragraph (starts with)",
    "routingOpReplaceTextLabel": "__MISSING__:Replace text",
    "routingOpReplaceRegexLabel": "__MISSING__:Replace regex",
    "routingOpDropBlockContainsLabel": "__MISSING__:Drop block (contains)",
    "routingOpPrependSystemBlockLabel": "__MISSING__:Prepend system block",
    "routingOpAppendSystemBlockLabel": "__MISSING__:Append system block",
    "routingOpInjectBillingHeaderLabel": "__MISSING__:Inject billing header",
    "routingOpObfuscateWordsLabel": "__MISSING__:Obfuscate words (ZWJ)",
    "routingOpDropParagraphContainsDesc": "__MISSING__:Removes any paragraph (text block split on blank lines) inside the system prompt whose text contains ANY of the listed substrings. Use to strip third-party client fingerprints like 'github.com/anomalyco/opencode' or 'docs.openwebui.com' that Anthropic's classifier flags.",
    "routingOpDropParagraphStartsWithDesc": "__MISSING__:Removes any paragraph that STARTS WITH one of the listed prefixes. Use for identity lines like 'You are OpenCode' or 'You are Open WebUI' that announce the calling client.",
    "routingOpReplaceTextDesc": "__MISSING__:Replaces a literal substring with another literal substring. Use for known trigger phrases — e.g. rewrite 'Here is some useful information about the environment you are running in:' to 'Environment context you are running in:' (an empirically-validated trigger phrase).",
    "routingOpReplaceRegexDesc": "__MISSING__:Replaces text matching a regular expression. Use when you need patterns (character classes, optional whitespace, anchors) instead of literal substrings. A malformed pattern is caught at runtime when the op runs.",
    "routingOpDropBlockContainsDesc": "__MISSING__:Removes ENTIRE system blocks (not just paragraphs) whose text contains any of the listed substrings. Use when a whole block is fingerprint-bearing and you want it gone — e.g. an injected MCP-server description.",
    "routingOpPrependSystemBlockDesc": "__MISSING__:Inserts a new text block at the FRONT of the system array. Use to add the SDK identity 'You are a Claude agent, built on Anthropic's Claude Agent SDK.' that Anthropic's classifier expects.",
    "routingOpAppendSystemBlockDesc": "__MISSING__:Inserts a new text block at the END of the system array. Use for cosmetic additions that don't need to be at position [0].",
    "routingOpInjectBillingHeaderDesc": "__MISSING__:Prepends the special 'x-anthropic-billing-header: cc_version=...; cc_entrypoint=...; cch=...;' text block that Anthropic's classifier validates. Required for CC bridge relay endpoints; for the native claude provider OmniRoute already injects its own billing line so this op is usually redundant there.",
    "routingOpObfuscateWordsDesc": "__MISSING__:Inserts a Zero-Width-Joiner character after the first letter of each listed word, so 'opencode' becomes 'o‍pencode'. Reads identical to humans but bypasses classifier word matches. Targets system blocks, user/assistant messages, and tool descriptions.",
    "routingNeedlesHint": "__MISSING__:List of substrings. A paragraph matches if it contains ANY one of them. Add one per line via 'Add entry'.",
    "routingPrefixesHint": "__MISSING__:List of strings. A paragraph matches if it starts with any one of them (leading whitespace is trimmed before matching).",
    "routingCaseSensitiveHint": "__MISSING__:When ON, 'OpenCode' and 'opencode' are different strings. When OFF (default), the comparison ignores case.",
    "routingMatchLiteralHint": "__MISSING__:Exact literal substring to find. No regex syntax — special chars like . * ? are treated as themselves.",
    "routingReplacementTextHint": "__MISSING__:Replacement string. Leave blank to delete the match. The output preserves surrounding text.",
    "routingAllOccurrencesHint": "__MISSING__:When ON (default), every instance is replaced. When OFF, only the first match is replaced.",
    "routingPatternHint": "__MISSING__:JavaScript regex source. Don't wrap in slashes — just 'foo(.*)bar'. Server rejects patterns that fail to compile.",
    "routingRegexFlagsHint": "__MISSING__:JavaScript regex flags (g = all matches, i = case-insensitive, s = dot matches newline, m = multiline). Default 'g'.",
    "routingBlockTextHint": "__MISSING__:Full text of the new system block. Use a literal string; the system block stores text only.",
    "routingIdempotencyKeyHint": "__MISSING__:Optional. If set, the op skips when a block whose text starts with this key is already present. Prevents double-prepend on retries.",
    "routingBillingEntrypointHint": "__MISSING__:Value injected as 'cc_entrypoint='. Anthropic accepts 'sdk-cli' (Agent SDK), 'cli' (Claude Code CLI), or other documented values.",
    "routingBillingVersionFormatHint": "__MISSING__:How the 3-char build hash after cc_version= is computed. 'ex-machina' = sha256 of CCH_SALT+chars-from-first-user-msg+version (per-message). 'omniroute-daystamp' = sha256 of YYYY-MM-DD+version (stable per-day).",
    "routingBillingCchAlgoHint": "__MISSING__:How the 5-char cch= token is computed. 'sha256-first-user' = sha256 of first user message text. 'xxhash64-body' = body-level signing fills it later. 'static-zero' = literal '00000' placeholder.",
    "routingObfuscateWordsHint": "__MISSING__:Lowercase words to obfuscate. ZWJ insertion is applied case-insensitively, so 'opencode' also matches 'OpenCode' and 'OPENCODE'.",
    "routingObfuscateTargetsHint": "__MISSING__:Which body regions to scan for the words: system blocks, user/assistant messages, and/or tool descriptions.",
    "routingObfuscateTargetsLabel": "__MISSING__:Targets",
    "routingSummarizeDropParagraphContains": "__MISSING__:drop paragraphs containing: {items}",
    "routingSummarizeDropParagraphStartsWith": "__MISSING__:drop paragraphs starting with: {items}",
    "routingSummarizeReplaceText": "__MISSING__:replace \"{match}\" → \"{replacement}\"",
    "routingSummarizeReplaceRegex": "__MISSING__:regex /{pattern}/{flags} → \"{replacement}\"",
    "routingSummarizeDropBlockContains": "__MISSING__:drop blocks containing: {items}",
    "routingSummarizePrependSystemBlock": "__MISSING__:prepend block: \"{text}\"",
    "routingSummarizeAppendSystemBlock": "__MISSING__:append block: \"{text}\"",
    "routingSummarizeInjectBillingHeader": "__MISSING__:inject billing header (entrypoint={entrypoint}, version={versionFormat}, cch={cchAlgo})",
    "routingSummarizeObfuscateWords": "__MISSING__:obfuscate {count} word(s) via ZWJ in {targets}",
    "routingDefaultAutoVariantLKGP": "__MISSING__:Last Known Good Provider",
    "routingDefaultAutoVariantLKGPDesc": "__MISSING__:Last Known Good Provider",
    "routingDefaultAutoVariantCoding": "__MISSING__:Quality-first for code",
    "routingDefaultAutoVariantCodingDesc": "__MISSING__:Quality-first for code",
    "routingDefaultAutoVariantFast": "__MISSING__:Low-latency routing",
    "routingDefaultAutoVariantFastDesc": "__MISSING__:Low-latency routing",
    "routingDefaultAutoVariantCheap": "__MISSING__:Cost-optimized",
    "routingDefaultAutoVariantCheapDesc": "__MISSING__:Cost-optimized",
    "routingDefaultAutoVariantOffline": "__MISSING__:High availability",
    "routingDefaultAutoVariantOfflineDesc": "__MISSING__:High availability",
    "routingDefaultAutoVariantSmart": "__MISSING__:Best discovery (10% explore)",
    "routingDefaultAutoVariantSmartDesc": "__MISSING__:Best discovery (10% explore)",
    "routingOpSummaryCount": "__MISSING__:{count, plural, =0 {no ops} one {# op} other {# ops}}",
    "routingOpEnabled": "__MISSING__:enabled",
    "routingOpDisabled": "__MISSING__:disabled",
    "routingOpStatusSeparator": "__MISSING__: · ",
    "resilienceSettingsIntro": "공급자가 실패할 경우 자동 재시도, 휴지 및 대체.",
    "aiSettingsIntro": "사고 예산, 모델 동작 및 압축을 위한 AI 관련 설정입니다.",
    "systemPrompt": "시스템 프롬프트",
    "thinkingBudget": "생각하는 예산",
    "proxy": "프록시",
    "httpProxy": "HTTP Proxy",
    "1proxy": "1proxy",
    "proxySubTabsAria": "Proxy sections",
    "requestBodyLimitTitle": "Request Body Limit",
    "requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.",
    "requestBodyLimitInputLabel": "Request body limit in MB",
    "requestBodyLimitEmptyError": "Enter a limit in MB",
    "requestBodyLimitWholeNumberError": "Use a whole number",
    "requestBodyLimitMinimumError": "Minimum is {min} MB",
    "requestBodyLimitMaximumError": "Maximum is {max} MB",
    "requestBodyLimitLoadFailed": "Failed to load request limit settings",
    "requestBodyLimitSaveSuccess": "Request body limit saved",
    "requestBodyLimitSaveFailed": "Failed to save request body limit",
    "requestBodyLimitSaving": "Saving...",
    "requestBodyLimitSave": "Save",
    "requestBodyLimitCurrent": "Current: {value}",
    "mitmProxy": "MITM 프록시",
    "pricing": "가격",
    "storage": "저장",
    "policies": "정책",
    "ipFilter": "IP 필터",
    "comboDefaults": "콤보 기본값",
    "fallbackChains": "폴백 체인",
    "changePassword": "비밀번호 변경",
    "enablePassword": "비밀번호 활성화",
    "darkMode": "다크 모드",
    "lightMode": "라이트 모드",
    "memoryTitle": "Memory",
    "memoryDesc": "Persistent cross-session conversational memory",
    "memoryEnabled": "Enable Memory",
    "memoryEnabledDesc": "When enabled, OmniRoute will inject relevant past context.",
    "maxTokens": "Max Tokens",
    "retentionDays": "Retention",
    "recent": "Recent",
    "recentDesc": "Chronological window",
    "semantic": "Semantic",
    "semanticDesc": "Vector search",
    "hybrid": "Hybrid",
    "hybridDesc": "Recent + Semantic",
    "skillsTitle": "Skills",
    "skillsDesc": "Tools for models",
    "skillsEnabled": "Enable Skills",
    "skillsEnabledDesc": "Allows agents to trigger functions.",
    "skillsComingSoon": "Skills marketplace coming soon.",
    "memorySkillsTitle": "Memory & Skills",
    "memorySkillsDesc": "Persistent context & capabilities",
    "modelsDevTitle": "Model Database",
    "modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev",
    "modelsDevEnabled": "Enable models.dev Sync",
    "modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database",
    "modelsDevInterval": "Sync Interval",
    "syncNow": "Sync Now",
    "syncing": "Syncing...",
    "lastSync": "Last sync",
    "never": "Never",
    "justNow": "지금 막",
    "modelsDevStats": "Sync Statistics",
    "modelsDevStatsDesc": "Current models.dev data coverage",
    "providers": "공급자",
    "modelsWithPricing": "Models with Pricing",
    "capabilities": "Capabilities",
    "lastSyncCount": "Last Sync Count",
    "lastSyncFull": "Last full sync",
    "modelsDevInfo": "How It Works",
    "modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.",
    "modelsDevInfoResolution": "Pricing resolution order (highest priority first):",
    "modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default",
    "systemTheme": "시스템 테마",
    "debugToggle": "Enable Debug Mode",
    "sidebarVisibilityToggle": "Show Sidebar Items",
    "enableCache": "캐시 활성화",
    "cacheTTL": "캐시 TTL",
    "maxCacheSize": "최대 캐시 크기",
    "clearCache": "캐시 지우기",
    "cacheCleared": "Cache cleared successfully",
    "clearCacheFailed": "Failed to clear cache",
    "cacheHits": "캐시 적중",
    "cacheMisses": "캐시 미스",
    "hitRate": "적중률",
    "cacheEntries": "캐시 항목",
    "cacheSettings": "Cache Settings",
    "semanticCache": "Semantic Cache",
    "maxEntries": "Max Entries",
    "ttlMinutes": "TTL (minutes)",
    "promptCache": "프롬프트 캐시",
    "strategy": "Strategy",
    "preserveClientCache": "Preserve Client Cache",
    "enabled": "Enabled",
    "loading": "Loading...",
    "saving": "저장 중...",
    "save": "Save",
    "circuitBreaker": "회로 차단기",
    "retryPolicy": "재시도 정책",
    "maxRetries": "최대 재시도 횟수",
    "retryDelay": "재시도 지연",
    "timeoutMs": "시간 초과(밀리초)",
    "enableSystemPrompt": "시스템 프롬프트 활성화",
    "systemPromptText": "시스템 프롬프트 텍스트",
    "autoDisableBannedAccounts": "Auto-Disable Banned Accounts",
    "autoDisableDescription": "Permanently mark provider connections as deactivated if they return specific terminal ban signals (e.g. HTTP 403 'verify your account'). This removes them from the combo rotation.",
    "autoDisableThreshold": "Ban Threshold",
    "autoDisableThresholdDesc": "Consecutive ban signals required before permanent deactivation.",
    "resilienceStructureTitle": "Resilience Structure",
    "resilienceStructureDesc": "이 페이지는 동작만 구성합니다. 라이브 차단기 상태는 상태 페이지에 표시됩니다. 콤보별 재시도 및 라운드 로빈 슬롯 제어는 콤보 설정에 유지됩니다.",
    "enableThinking": "사고 활성화",
    "maxThinkingTokens": "맥스 씽킹 토큰",
    "enableProxy": "프록시 활성화",
    "proxyUrl": "프록시 URL",
    "pricingRates": "가격 요율 형식",
    "currentPricing": "현재 가격 개요",
    "loadingPricing": "가격 데이터 로드 중...",
    "noPricing": "사용 가능한 가격 데이터가 없습니다.",
    "input": "입력",
    "output": "출력",
    "cached": "캐시됨",
    "reasoning": "추론",
    "cacheCreation": "캐시 생성",
    "customPricing": "맞춤형 가격",
    "databaseSize": "데이터베이스 크기",
    "backupDb": "백업 데이터베이스",
    "restoreDb": "데이터베이스 복원",
    "exportData": "데이터 내보내기",
    "importData": "데이터 가져오기",
    "clearData": "모든 데이터 지우기",
    "clearDataConfirm": "모든 데이터가 영구적으로 삭제됩니다. 확실합니까?",
    "enableRequestLogs": "요청 로그 활성화",
    "logRetention": "로그 보존",
    "ipWhitelist": "IP 화이트리스트",
    "ipBlacklist": "IP 블랙리스트",
    "addIP": "IP 추가",
    "savedSuccessfully": "설정이 성공적으로 저장되었습니다.",
    "ai": "AI",
    "advanced": "고급",
    "localMode": "로컬 모드 — 컴퓨터에 저장된 모든 데이터",
    "settingsSectionsAria": "설정 섹션",
    "switchThemes": "밝은 테마와 어두운 테마 간 전환",
    "themeSelectionAria": "테마 선택",
    "themeLight": "빛",
    "themeDark": "어둠",
    "themeSystem": "시스템",
    "endpointTunnelVisibility": "엔드포인트 터널 가시성",
    "endpointTunnelVisibilityDesc": "터널 상태를 변경하지 않고 끝점 페이지에서 터널 제어를 숨깁니다.",
    "showCloudflareTunnel": "Cloudflare 빠른 터널",
    "showCloudflareTunnelDesc": "엔드포인트 페이지에 Cloudflare Quick Tunnel 컨트롤을 표시하세요.",
    "showTailscaleFunnel": "꼬리비늘 깔때기",
    "showTailscaleFunnelDesc": "엔드포인트 페이지에 Tailscale Funnel 컨트롤을 표시합니다.",
    "showNgrokTunnel": "응록 터널",
    "showNgrokTunnelDesc": "엔드포인트 페이지에 ngrok Tunnel 컨트롤을 표시합니다.",
    "sidebarVisibility": "Hide sidebar items",
    "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter.",
    "sidebarVisibilityHint": "Any sidebar section is hidden automatically when a...",
    "hideHealthLogs": "상태 확인 로그 숨기기",
    "hideHealthLogsDesc": "ON일 때, 서버 콘솔에서 [HealthCheck] 메시지를 억제합니다.",
    "themeAccent": "테마 색상",
    "themeAccentDesc": "미리 설정된 색상을 선택하거나 단일 색상으로 나만의 테마를 만드세요",
    "themeCreate": "테마 만들기",
    "themeCustom": "사용자 지정 테마",
    "themeBlue": "파랑",
    "themeRed": "빨강",
    "themeGreen": "초록",
    "themeViolet": "보라",
    "themeOrange": "주황",
    "themeCyan": "시안",
    "whitelabeling": "Branding",
    "whitelabelingDesc": "Customize the application name and logo",
    "appName": "Application Name",
    "appNameDesc": "Display name shown in sidebar and browser tab",
    "customLogo": "Custom Logo URL",
    "customLogoDesc": "URL to your custom logo image",
    "uploadLogo": "Upload Logo",
    "resetLogo": "Reset to Default",
    "logoPreview": "Preview",
    "customFavicon": "Browser Favicon",
    "customFaviconDesc": "URL to your custom favicon (shown in browser tab)",
    "uploadFavicon": "Upload Favicon",
    "resetFavicon": "Reset Favicon",
    "faviconPreview": "Favicon Preview",
    "flushCache": "캐시 플러시",
    "flushing": "플러싱…",
    "size": "크기",
    "hits": "조회수",
    "evictions": "퇴거",
    "loadingCacheStats": "캐시 통계 로드 중…",
    "globalProxy": "글로벌 프록시",
    "globalProxyDesc": "모든 API 호출에 대해 글로벌 아웃바운드 프록시를 구성합니다. 개별 공급자, 콤보 및 키가 이를 재정의할 수 있습니다.",
    "noGlobalProxy": "글로벌 프록시가 구성되지 않았습니다.",
    "globalLabel": "글로벌",
    "configure": "구성",
    "globalSystemPrompt": "글로벌 시스템 프롬프트",
    "saved": "저장됨",
    "beforePromptLabel": "__MISSING__:Before Prompt",
    "beforePromptDesc": "__MISSING__:Injected before agent/provider system instructions",
    "beforePromptPlaceholder": "__MISSING__:Instructions inserted before agent/provider prompt...",
    "afterPromptLabel": "__MISSING__:After Prompt",
    "afterPromptDesc": "__MISSING__:Injected after agent/provider system instructions",
    "afterPromptPlaceholder": "__MISSING__:Instructions inserted after agent/provider prompt...",
    "chars": "{count}자",
    "thinkingBudgetTitle": "생각하는 예산",
    "thinkingBudgetDesc": "모든 요청에서 AI 추론 토큰 사용을 제어합니다.",
    "passthrough": "통과",
    "passthroughDesc": "변경 사항 없음 - 클라이언트가 사고 예산을 제어합니다.",
    "auto": "자동",
    "autoDesc": "모든 사고 구성 제거 - 공급자가 결정하도록 함",
    "custom": "맞춤",
    "customDesc": "모든 요청에 대해 고정 토큰 예산 설정",
    "adaptive": "적응형",
    "adaptiveDesc": "요청 복잡성에 따라 예산 규모 조정",
    "effortNone": "없음(토큰 0개)",
    "effortLow": "낮음(1,000개 토큰)",
    "effortMedium": "중간(10,000개 토큰)",
    "effortHigh": "높음(128K 토큰)",
    "tokenBudget": "토큰예산",
    "tokens": "토큰",
    "baseEffortLevel": "기본 노력 수준",
    "adaptiveHint": "적응 모드는 메시지 수, 도구 사용량 및 프롬프트 길이에 따라 이 기본 수준에서 확장됩니다.",
    "requireLogin": "로그인 필요",
    "requireLoginDesc": "ON으로 설정하면 대시보드에 비밀번호가 필요합니다. OFF시 로그인 없이 접속 가능합니다.",
    "currentPassword": "현재 비밀번호",
    "enterCurrentPassword": "현재 비밀번호를 입력하세요",
    "newPassword": "새 비밀번호",
    "enterNewPassword": "새 비밀번호를 입력하세요",
    "confirmPassword": "새 비밀번호 확인",
    "confirmPasswordPlaceholder": "새 비밀번호 확인",
    "passwordsNoMatch": "비밀번호가 일치하지 않습니다.",
    "passwordUpdated": "비밀번호가 성공적으로 업데이트되었습니다.",
    "failedUpdatePassword": "비밀번호를 업데이트하지 못했습니다.",
    "errorOccurred": "오류가 발생했습니다",
    "updatePassword": "비밀번호 업데이트",
    "setPassword": "비밀번호 설정",
    "apiEndpointProtection": "API 엔드포인트 보호",
    "requireAuthModels": "/models에 대한 API 키 필요",
    "requireAuthModelsDesc": "ON인 경우 /v1/models 엔드포인트는 인증되지 않은 요청에 대해 404를 반환합니다. 승인되지 않은 사용자가 모델을 발견하는 것을 방지합니다.",
    "authModelHeading": "활성 인증 모델",
    "authModelClient": "클라이언트 API 엔드포인트(/v1/*, /chat/*, /responses/*, /codex/*, /messages/*)에는 Bearer API 키가 필요합니다.",
    "authModelManagement": "관리 엔드포인트(/dashboard, /api/*)에는 대시보드 세션 또는 관리 자격 증명이 필요합니다.",
    "authModelPublic": "로그인, 상태 및 부트스트랩 경로만 공개됩니다.",
    "bruteForceProtection": "로그인 무차별 보호",
    "bruteForceProtectionDesc": "동일한 IP에서 반복적으로 실패하면 /api/auth/login을 제한하고 잠급니다.",
    "corsAllowedOrigins": "CORS 허용 출처",
    "corsAllowedOriginsDesc": "이 서버를 호출하도록 허용된 브라우저 출처의 쉼표로 구분된 목록입니다. 빈 목록 = 브라우저 CORS 액세스가 없습니다(서버 간은 여전히 ​​작동함). CORS_ALLOW_ALL=true env var는 개발에만 사용하세요.",
    "blockedProviders": "차단된 제공업체",
    "blockedProvidersDesc": "/v1/models 응답에서 특정 공급자를 숨깁니다. 차단된 제공업체는 모델 목록에 표시되지 않습니다.",
    "providersBlocked": "{count} 공급자가 /models에서 차단되었습니다.",
    "blockProviderTitle": "{provider} 차단",
    "unblockProviderTitle": "{provider} 차단 해제",
    "cliFingerprint": "CLI Fingerprint Matching",
    "cliFingerprintDesc": "Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.",
    "cliFingerprintEnabled": "{count} provider(s) with CLI fingerprint active",
    "enableFingerprintTitle": "Enable fingerprint for {provider}",
    "disableFingerprintTitle": "Disable fingerprint for {provider}",
    "systemTransforms": "시스템 블록 변환 파이프라인",
    "systemTransformsDesc": "전달하기 전에 요청 본문에 적용되는 변환의 공급자별 주문 파이프라인입니다. 모든 공급자 ID를 지원합니다.",
    "systemTransformsAddProvider": "제공업체 추가",
    "systemTransformsAddProviderPlaceholder": "제공업체를 선택하세요…",
    "systemTransformsAddProviderAllConfigured": "모든 제공업체가 이미 구성되어 있습니다.",
    "systemTransformsRemoveProvider": "공급자 제거",
    "systemTransformsNoProviders": "구성된 제공업체가 없습니다. 시작하려면 공급자를 추가하세요.",
    "systemTransformsOpMoveUp": "위로 이동",
    "systemTransformsOpMoveDown": "아래로 이동",
    "systemTransformsOpDelete": "삭제 작업",
    "routingStrategy": "라우팅 전략",
    "routingAdvancedGuideTitle": "고급 경로 안내",
    "routingAdvancedGuideHint1": "예측 가능한 우선순위를 위해서는 Fill First를 사용하고, 공정성을 위해서는 Round Robin을, 지연 시간 복원력을 위해서는 P2C를 사용하세요.",
    "routingAdvancedGuideHint2": "서비스 제공업체의 품질/비용이 다양한 경우 백그라운드 작업에는 비용 선택(Cost Opt)으로 시작하고 균형 잡힌 착용에는 최소 사용(Least Used)으로 시작하세요.",
    "fillFirst": "먼저 채우기",
    "fillFirstDesc": "우선순위에 따라 계정을 사용하세요",
    "roundRobin": "라운드 로빈",
    "roundRobinDesc": "모든 계정을 순환합니다.",
    "p2c": "P2C",
    "p2cDesc": "무작위로 2개를 선택하고 더 건강한 것을 사용하세요",
    "random": "무작위",
    "randomDesc": "각 요청마다 무작위 계정",
    "leastUsed": "최소 사용",
    "leastUsedDesc": "최근에 가장 적게 사용한 계정 선택",
    "costOpt": "비용 선택",
    "costOptDesc": "가장 저렴한 계정을 선호합니다",
    "resetAware": "재설정 인식 RR",
    "resetAwareDesc": "남은 할당량이 양호하고 재설정이 가까운 계정을 선호합니다.",
    "strictRandom": "Strict Random",
    "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling",
    "stickyLimit": "고정 한도",
    "stickyLimitDesc": "전환 전 계정당 통화",
    "modelAliases": "모델 별칭",
    "modelAliasesTitle": "모델 별칭",
    "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.",
    "addCustomAlias": "사용자 지정 별칭 추가",
    "deprecatedModelId": "사용 중단된 모델 ID",
    "newModelId": "새 모델 ID",
    "customAliases": "사용자 지정 별칭",
    "builtInAliases": "기본 제공 별칭",
    "backgroundDegradationTitle": "백그라운드 작업 다운그레이드",
    "backgroundDegradationDesc": "백그라운드 작업(제목, 요약)을 자동 감지하여 저렴한 모델로 라우팅",
    "enableDegradation": "백그라운드 다운그레이드 활성화",
    "enableDegradationHint": "활성화하면 제목 생성 및 요약과 같은 백그라운드 작업이 자동으로 저렴한 모델로 라우팅됩니다",
    "tasksDetected": "감지된 작업",
    "degradationMap": "모델 다운그레이드 맵",
    "premiumModel": "프리미엄 모델",
    "cheapModel": "저렴한 모델",
    "detectionPatterns": "감지 패턴",
    "newPattern": "예: \"제목 생성\"",
    "aliasPatternPlaceholder": "클로드-소네트-*",
    "aliasTargetPlaceholder": "클로드 소네트-4-20250514",
    "pattern": "패턴",
    "targetModel": "대상 모델",
    "add": "+ 추가",
    "session": "세션",
    "sessionDetailsAria": "세션 세부정보",
    "status": "상태",
    "authenticated": "인증됨",
    "guest": "손님",
    "loginTime": "로그인 시간",
    "sessionAge": "세션 연령",
    "browser": "브라우저",
    "clearLocalData": "로컬 데이터 지우기",
    "logout": "로그아웃",
    "clearLocalDataConfirm": "모든 로컬 데이터를 삭제하시겠습니까? 그러면 기본 설정이 재설정됩니다.",
    "unknown": "알 수 없음",
    "systemActor": "시스템",
    "ipAccessControl": "IP 접근 제어",
    "ipAccessControlDesc": "특정 IP 주소 차단 또는 허용",
    "ipModeDisabled": "장애인",
    "ipModeBlacklist": "블랙리스트",
    "ipModeWhitelist": "화이트리스트",
    "ipModeWhitelistPriority": "WL 우선순위",
    "addIpAddress": "IP 주소 추가",
    "ipAddressPlaceholder": "192.168.1.0/24 또는 10.0.*.*",
    "block": "+ 차단",
    "allow": "+ 허용",
    "blocked": "차단됨({count})",
    "allowed": "허용됨({count})",
    "temporaryBans": "임시 금지({count})",
    "minLeft": "{min}분 남음",
    "auditLog": "감사 로그",
    "searchAuditLogs": "감사 로그 검색...",
    "failedLoadAuditLog": "감사 로그를 로드하지 못했습니다.",
    "noAuditEvents": "감사 이벤트가 없습니다.",
    "action": "액션",
    "actor": "배우",
    "details": "세부정보",
    "time": "시간",
    "fallbackChainsTitle": "폴백 체인",
    "fallbackChainsDesc": "모델별 공급자 대체 순서 정의",
    "addChain": "+ 체인 추가",
    "modelName": "모델명",
    "modelNamePlaceholder": "클로드 소네트-4-20250514",
    "providersCommaSeparated": "공급자(쉼표로 구분, 우선순위)",
    "providersCommaSeparatedPlaceholder": "인류, openai, 쌍둥이자리",
    "createChain": "체인 생성",
    "noFallbackChains": "대체 체인 없음",
    "noFallbackChainsDesc": "모델에 대한 공급자 대체 순서를 정의하는 체인을 만듭니다.",
    "loadingFallbackChains": "대체 체인 로드 중...",
    "deleteChainConfirm": "'{model}'에 대한 대체 체인을 삭제하시겠습니까?",
    "chainCreated": "{model}용으로 생성된 체인",
    "chainDeleted": "{model}에 대한 체인이 삭제되었습니다.",
    "failedCreateChain": "체인을 생성하지 못했습니다.",
    "failedDeleteChain": "체인을 삭제하지 못했습니다.",
    "deleteChain": "체인 삭제",
    "fillModelAndProviders": "모델명과 제공업체를 입력하세요.",
    "addAtLeastOneProvider": "제공업체를 하나 이상 추가하세요.",
    "comboDefaultsTitle": "콤보 기본값",
    "comboDefaultsGuideTitle": "콤보 기본값을 조정하는 방법",
    "comboDefaultsGuideHint1": "지연 시간이 짧은 흐름에서는 재시도 횟수를 낮게 유지하세요. 긴 세대 작업에 대해서만 시간 제한을 늘립니다.",
    "comboDefaultsGuideHint2": "하나의 공급자가 전역 기본값과 다른 시간 초과/재시도 동작을 필요로 하는 경우 공급자 재정의를 사용합니다.",
    "globalComboConfig": "글로벌 콤보 구성",
    "defaultStrategy": "기본 전략",
    "defaultStrategyDesc": "명시적인 전략이 없는 새로운 콤보에 적용",
    "comboStrategyAria": "콤보 전략",
    "priority": "우선순위",
    "weighted": "가중",
    "contextRelay": "Context Relay",
    "contextRelayDesc": "Hands off context between providers with automatic summarization",
    "maxRetriesLabel": "최대 재시도 횟수",
    "retryDelayLabel": "재시도 지연(ms)",
    "timeoutLabel": "시간 초과(밀리초)",
    "healthCheck": "건강검진",
    "healthCheckDesc": "제공업체 가용성 사전 확인",
    "trackMetrics": "추적 지표",
    "trackMetricsDesc": "콤보별 요청 측정항목 기록",
    "providerOverrides": "공급자 재정의",
    "providerOverridesDesc": "공급자당 시간 초과 및 재시도를 재정의합니다. 공급자 설정은 전역 기본값을 재정의합니다.",
    "providerMaxRetriesAria": "{provider} 최대 재시도 횟수",
    "providerTimeoutAria": "{provider} 시간 초과(밀리초)",
    "removeProviderOverrideAria": "{provider} 재정의 제거",
    "newProviderNamePlaceholder": "예를 들어 구글, 오픈아이...",
    "newProviderNameAria": "새 제공업체 이름",
    "retries": "재시도",
    "ms": "ms",
    "saveComboDefaults": "콤보 기본값 저장",
    "maxNestingDepth": "최대 중첩 깊이",
    "concurrencyPerModel": "동시성/모델",
    "queueTimeout": "대기열 시간 초과(밀리초)",
    "contextRelayHandoffThreshold": "Handoff Threshold",
    "contextRelayMaxMessages": "Max Messages For Summary",
    "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 공급자는 낮은 비율 제한으로 인해 더 엄격한 기준을 적용합니다.",
    "oauthProviders": "OAuth 제공자",
    "apiKeyProviders": "API 키 제공자",
    "transientCooldown": "일시적인 쿨다운",
    "rateLimitCooldown": "비율 제한 쿨다운",
    "maxBackoffLevel": "최대 백오프 수준",
    "cbThreshold": "CB 임계값",
    "cbResetTime": "차단기 재설정 시간",
    "rateLimiting": "속도 제한",
    "rateLimitingDesc": "API 키 제공자는 안전한 기본값을 사용하여 자동으로 속도가 제한됩니다. 제한은 응답 헤더에서 학습되고 시간이 지남에 따라 조정됩니다.",
    "defaultSafetyNet": "기본 안전망",
    "rpm": "RPM",
    "minGap": "민갭",
    "maxConcurrent": "최대 동시",
    "activeLimiters": "활성 리미터",
    "noActiveLimiters": "아직 활성 속도 제한기가 없습니다.",
    "reservoir": "저수지",
    "running": "달리기",
    "queued": "대기 중",
    "circuitBreakers": "회로 차단기",
    "breakerStateClosed": "휴무",
    "breakerStateOpen": "열기",
    "breakerStateHalfOpen": "반개방형",
    "tripped": "{count}이(가) 작동되었습니다.",
    "healthy": "{count} 건강함",
    "resetAll": "모두 재설정",
    "noCircuitBreakers": "아직 활성화된 회로 차단기가 없습니다. 요청이 콤보 파이프라인을 통해 흐를 때 자동으로 생성됩니다.",
    "failures": "{count} 실패",
    "policiesLocked": "정책 및 잠긴 식별자",
    "allOperational": "모든 시스템 작동 — 잠금이나 차단기 작동 없음",
    "loadingPolicies": "정책 로드 중...",
    "lockedIdentifiers": "잠긴 식별자",
    "unlockedIdentifier": "잠금 해제됨: {identifier}",
    "sinceDate": "{date} 이후",
    "forceUnlock": "강제 잠금 해제",
    "unlocking": "잠금 해제 중...",
    "failedUnlock": "잠금 해제에 실패했습니다.",
    "failedLoadWithStatus": "로드 실패: {status}",
    "failedLoadResilience": "복원력 상태를 로드하지 못했습니다.",
    "saveFailed": "저장 실패",
    "resetFailed": "재설정 실패",
    "loadingResilience": "복원력 상태 로드 중...",
    "retry": "재시도",
    "systemStorage": "시스템 및 스토리지",
    "allDataLocal": "모든 데이터는 컴퓨터에 로컬로 저장됩니다.",
    "databasePath": "데이터베이스 경로",
    "exportDatabase": "데이터베이스 내보내기",
    "exportAll": "모두 내보내기(.tar.gz)",
    "importDatabase": "데이터베이스 가져오기",
    "confirmDbImport": "데이터베이스 가져오기 확인",
    "confirmDbImportDesc": "그러면 모든 현재 데이터가 {file}의 콘텐츠로 대체됩니다. 가져오기 전에 백업이 자동으로 생성됩니다.",
    "yesImport": "예, 수입합니다",
    "lastBackup": "마지막 백업",
    "noBackupYet": "아직 백업이 없습니다",
    "backupNow": "지금 백업",
    "backupRestore": "백업 및 복원",
    "viewBackups": "백업 보기",
    "hide": "숨기기",
    "backupRetentionDesc": "데이터베이스 스냅샷은 복원 전과 데이터가 변경될 때 15분마다 자동으로 생성됩니다. 보존: 스마트 순환을 통한 24시간 + 30일 백업.",
    "loadingBackups": "백업 로드 중...",
    "noBackupsYet": "아직 사용할 수 있는 백업이 없습니다. 데이터가 변경되면 백업이 자동으로 생성됩니다.",
    "backupsAvailable": "{count} 백업 사용 가능",
    "refresh": "새로고침",
    "confirm": "확인하시겠습니까?",
    "yes": "예",
    "no": "아니요",
    "restore": "복원",
    "invalidFileType": "파일 형식이 잘못되었습니다. .sqlite 파일만 허용됩니다.",
    "exportFailed": "내보내기 실패",
    "exportFailedWithError": "내보내기 실패: {error}",
    "fullExportFailedWithError": "전체 내보내기 실패: {error}",
    "backupCreated": "생성된 백업: {file}",
    "restoreSuccess": "복원되었습니다! {connections} 연결, {nodes} 노드, {combos} 콤보, {apiKeys} API 키.",
    "importSuccess": "데이터베이스를 가져왔습니다! {connections} 연결, {nodes} 노드, {combos} 콤보, {apiKeys} API 키.",
    "minutesAgo": "{count}분 전",
    "hoursAgo": "{count}시간 전",
    "daysAgo": "{count}일 전",
    "backupReasonManual": "매뉴얼",
    "backupReasonPreRestore": "사전 복원",
    "connectionsCount": "{count, plural, one {# connection} other {# connections}}",
    "noChangesSinceBackup": "마지막 백업 이후 변경 사항 없음",
    "backupFailed": "백업 실패",
    "restoreFailed": "복원 실패",
    "importFailed": "가져오기 실패",
    "errorDuringRestore": "복원 중 오류가 발생했습니다.",
    "errorDuringImport": "가져오는 중에 오류가 발생했습니다.",
    "modelPricing": "모델 가격",
    "modelPricingDesc": "모델별 비용 구성 • 모든 비용은 $/1M 토큰 단위",
    "registry": "레지스트리",
    "priced": "가격",
    "searchProvidersModels": "공급자 또는 모델 검색...",
    "showAll": "모두 표시",
    "noProvidersMatch": "검색어와 일치하는 제공업체가 없습니다.",
    "howPricingWorks": "가격 책정 방식",
    "cacheWrite": "캐시 쓰기",
    "unsaved": "저장되지 않은",
    "resetDefaults": "기본값 재설정",
    "saveProvider": "공급자 저장",
    "model": "모델",
    "models": "모델",
    "moreProviders": "{count} 제공업체 더보기",
    "withPricing": "가격이 구성된 경우",
    "policiesCircuitBreakers": "정책 및 회로 차단기",
    "activeIssuesDetected": "활성 문제가 감지되었습니다.",
    "off": "끄기",
    "resetPricingConfirm": "{provider}의 모든 가격을 기본값으로 재설정하시겠습니까?",
    "pricingDescInput": "입력: 모델에 전송된 토큰",
    "pricingDescOutput": "출력: 생성된 토큰",
    "pricingDescCached": "캐시됨: 재사용된 입력(입력 속도의 ~50%)",
    "pricingDescReasoning": "추론: 사고 토큰(출력으로 대체)",
    "pricingDescCacheWrite": "캐시 쓰기: 캐시 항목 생성(입력으로 대체)",
    "pricingDescFormula": "비용 = (입력 × 입력 속도) + (출력 × 출력 속도) + (캐시 × 캐시 속도) 백만 토큰당.",
    "pricingSettingsTitle": "가격 설정",
    "totalModels": "총 모델",
    "active": "활성",
    "costCalculation": "비용 계산",
    "costCalculationDesc": "비용은 토큰 사용량과 각 모델에 구성된 가격 책정 요율을 기준으로 계산됩니다.",
    "pricingFormat": "가격 형식",
    "pricingFormatDesc": "모든 요율은 $/1M 토큰(백만 토큰당 달러) 단위입니다.",
    "tokenTypes": "토큰 유형",
    "inputTokenDesc": "표준 프롬프트 토큰",
    "outputTokenDesc": "완료/응답 토큰",
    "cachedTokenDesc": "캐시된 입력 토큰(일반적으로 입력 속도의 50%)",
    "reasoningTokenDesc": "특수 추론/사고 토큰(출력 속도로 대체)",
    "cacheCreationTokenDesc": "캐시 항목을 생성하는 데 사용되는 토큰(입력 속도로 대체)",
    "customPricingNote": "특정 모델의 기본 가격을 재정의할 수 있습니다. 맞춤 재정의는 자동 감지된 가격보다 우선 적용됩니다.",
    "editPricing": "가격 편집",
    "viewFullDetails": "전체 세부정보 보기",
    "themeCoral": "코랄",
    "adaptiveVolumeRouting": "Adaptive Volume Routing",
    "adaptiveVolumeRoutingDesc": "Scale connections dynamically based on payload volume and throughput pressure.",
    "lkgpToggleTitle": "Last Known Good Provider (LKGP)",
    "lkgpToggleDesc": "When enabled, the router remembers which provider last served a successful response and tries it first on subsequent requests.",
    "clearLkgpCache": "Clear LKGP Cache",
    "lkgpCacheCleared": "LKGP cache cleared successfully",
    "lkgpCacheClearFailed": "Failed to clear LKGP cache",
    "days": "Days",
    "lkgp": "LKGP Mode",
    "lkgpDesc": "Last Known Good Provider (Predictable resilience)",
    "maintenance": "Maintenance",
    "purgeExpiredLogs": "Purge Expired Logs",
    "purgeLogsFailed": "Failed to purge logs",
    "contextOpt": "Context Optimized",
    "contextOptDesc": "Routes based on context window requirements and conversation length",
    "priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on",
    "weightedDesc": "Distributes traffic by percentage weights across providers",
    "modelRoutingTitle": "Model Routing Rules",
    "modelRoutingDesc": "Automatically route models to specific combos using glob patterns",
    "addRule": "Add Rule",
    "routeToCombo": "Route to Combo",
    "selectCombo": "Select combo...",
    "priorityHint": "Higher = checked first. Use 10+ for specific patterns.",
    "patternHint": "Use * for any chars, ? for single char. Case-insensitive.",
    "noRoutingRules": "No routing rules configured. Requests use the global combo by default.",
    "routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.",
    "deleteRoutingRule": "Delete this model routing rule?",
    "exactMatchMode": "Exact Match",
    "wildcardPatternMode": "Wildcard Pattern",
    "exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.",
    "wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.",
    "noExactAliasesConfigured": "No exact-match aliases configured.",
    "wildcardRulesTitle": "Wildcard Rules",
    "noWildcardAliasesConfigured": "No wildcard aliases configured.",
    "overview": "Overview",
    "unknownError": "Unknown Error",
    "pricingSourceLiteLLM": "Pricing Source Lite Llm",
    "clearSyncedPricingConfirm": "Clear Synced Pricing Confirm",
    "clearSyncedPricingFailed": "Clear Synced Pricing Failed",
    "pricingSourceUser": "Pricing Source User",
    "pageDescription": "Page Description",
    "pricingSyncStatus": "Pricing Sync Status",
    "whitelist": "Whitelist",
    "syncDisabled": "Sync Disabled",
    "pricingLoadFailed": "Pricing Load Failed",
    "pricingSyncDescription": "Pricing Sync Description",
    "clearSyncedPricingSuccess": "Clear Synced Pricing Success",
    "clearSyncedPricingFailedWithReason": "가격을 삭제하지 못했습니다: {reason}",
    "pricingSourceDefault": "Pricing Source Default",
    "pricingSyncSuccess": "Pricing Sync Success",
    "enableSyncError": "Enable Sync Error",
    "syncEnabled": "Sync Enabled",
    "blacklist": "Blacklist",
    "pricingSourceModelsDev": "Pricing Source Models Dev",
    "syncedModels": "Synced Models",
    "budget": "Budget",
    "pricingSyncTitle": "Pricing Sync Title",
    "pricingResetFailedWithReason": "가격 재설정 실패: {reason}",
    "tab": "Tab",
    "pricingSavedProvider": "{provider}의 가격이 저장되었습니다.",
    "pricingSyncFailed": "Pricing Sync Failed",
    "pricingSaveFailedWithReason": "가격 저장 실패: {reason}",
    "pricingResetProvider": "{provider}의 가격 재설정",
    "nextSync": "Next Sync",
    "pricingSyncFailedWithReason": "가격 동기화 실패: {reason}",
    "clearSyncedPricing": "Clear Synced Pricing",
    "compressionTitle": "Prompt Compression",
    "compressionDesc": "Reduce token usage by compressing prompts before sending to providers",
    "compressionMode": "Compression Mode",
    "compressionModeOff": "Off",
    "compressionModeOffDesc": "No compression applied",
    "compressionModeLite": "Lite",
    "compressionModeLiteDesc": "Whitespace and blank line reduction",
    "compressionModeStandard": "Standard (Caveman)",
    "compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs",
    "compressionModeAggressive": "Aggressive",
    "compressionModeAggressiveDesc": "Summarization + tool result compression + progressive aging for maximum savings",
    "compressionModeUltra": "Ultra",
    "compressionModeUltraDesc": "Maximum compression with all techniques including semantic deduplication",
    "compressionAggressiveConfig": "공격적인 엔진 구성",
    "compressionAggressiveConfigDesc": "요약, 도구 압축 및 에이징 임계값을 미세 조정합니다.",
    "compressionUltraConfig": "울트라 엔진 구성",
    "compressionUltraConfigDesc": "경험적 정리, SLM 대체 및 메시지별 임계값을 미세 조정합니다.",
    "compressionUltraRate": "요금 유지",
    "compressionUltraMinScore": "최소 점수 기준",
    "compressionUltraSlmFallback": "공격적으로 대체",
    "compressionUltraModelPath": "SLM 모델 경로",
    "compressionSummarizerEnabled": "요약기 활성화",
    "compressionMaxTokensPerMessage": "메시지당 최대 토큰",
    "compressionMinSavings": "최소 절감 임계값",
    "compressionAgingThresholds": "에이징 임계값",
    "compressionAgingThresholdsDesc": "각 에이징 계층에 보관된 최근 메시지 수(높을수록 더 많이 보존됨)",
    "compressionToolStrategies": "도구 결과 전략",
    "compressionToolStrategiesDesc": "다양한 도구 결과 유형에 대한 압축 전략 전환",
    "compressionGeneral": "General Settings",
    "compressionAutoTrigger": "Auto-Trigger Threshold",
    "compressionCacheTTL": "Cache TTL",
    "compressionPreserveSystem": "Preserve System Prompt",
    "compressionCavemanConfig": "Caveman Engine Configuration",
    "compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine",
    "compressionRoles": "Compress Message Roles",
    "compressionRoleUser": "User",
    "compressionRoleAssistant": "Assistant",
    "compressionRoleSystem": "System",
    "compressionMinLength": "Minimum Message Length",
    "compressionSkipRules": "Skip Compression Rules",
    "compressionSkipRulesDesc": "Click rules to skip them during compression",
    "compressionPreservePatterns": "Preserve Patterns",
    "compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)",
    "compressionLogTitle": "Compression Log",
    "compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.",
    "minutes": "분",
    "compressionModeRtk": "RTK",
    "compressionModeRtkDesc": "Command-aware tool output filtering",
    "compressionModeStacked": "Stacked",
    "compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression",
    "qdrantTitle": "Qdrant (Vector memory)",
    "qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.",
    "qdrantStatusActive": "Active",
    "qdrantStatusError": "Error",
    "qdrantStatusDisabled": "Disabled",
    "qdrantEnable": "Enable Qdrant",
    "qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.",
    "qdrantTesting": "Testing...",
    "qdrantTestConnection": "Test connection",
    "qdrantSaved": "Configuration saved",
    "qdrantSaveError": "Failed to save configuration",
    "qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant",
    "qdrantPort": "Port",
    "qdrantPortHint": "Qdrant default: 6333",
    "qdrantCollectionHint": "Where memory points will be stored.",
    "qdrantEmbeddingModel": "Embedding model",
    "qdrantHelpTitle": "Quick setup help",
    "qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)",
    "qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.",
    "qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.",
    "qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.",
    "qdrantHelpStep4": "4. Save, test connection, then test search.",
    "qdrantEmbeddingQuickSelect": "Quick select from discovered models...",
    "qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small",
    "qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.",
    "qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)",
    "qdrantApiKeyPlaceholderOptional": "(leave empty if not used)",
    "qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.",
    "qdrantSearchTestTitle": "Search test",
    "qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.",
    "qdrantSearchPlaceholder": "Example: user preferences, history, etc",
    "qdrantNoResults": "No results (or Qdrant is not configured).",
    "qdrantCleanupTitle": "Retention and cleanup",
    "qdrantCleanupDesc": "Removes expired and old points based on",
    "searching": "Searching...",
    "cleaning": "Cleaning...",
    "cleanNow": "Clean now",
    "optional": "선택사항",
    "current": "현재",
    "remove": "제거",
    "search": "검색",
    "oneproxyTitle": "1proxy 무료 프록시 마켓플레이스",
    "oneproxyTotalProxies": "총 프록시",
    "oneproxyAvgQuality": "평균 품질",
    "resilienceScope": "범위:",
    "resilienceTrigger": "트리거:",
    "resilienceEffect": "효과:",
    "resilienceRequestQueueTitle": "Request Queue & Rate",
    "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers",
    "resilienceRequestsPerMinute": "Requests per minute",
    "resilienceMinTimeBetweenRequests": "Minimum time between requests",
    "resilienceConcurrentRequests": "Concurrent requests",
    "resilienceMaxQueueWaitTime": "최대 대기열 대기 시간",
    "resilienceBaseCooldown": "Base cooldown",
    "resilienceUseUpstreamRetryHints": "Use upstream retry hints",
    "resilienceDefaultPerProvider": "Default (per provider)",
    "resilienceAlwaysOn": "Always on",
    "resilienceAlwaysOff": "Always off",
    "routingRemoveEntry": "항목 삭제",
    "routingNeedlesSubstrings": "바늘(일치할 하위 문자열)",
    "routingCaseSensitive": "대소문자 구분",
    "routingPrefixes": "접두사",
    "routingMatch": "경기",
    "routingReplacement": "교체",
    "routingReplaceAllOccurrences": "모든 항목 바꾸기",
    "routingPatternRegex": "패턴(정규식)",
    "routingFlags": "플래그",
    "routingNeedles": "바늘",
    "routingBlockText": "블록 텍스트",
    "routingIdempotencyKey": "멱등성 키",
    "routingEntrypoint": "진입점",
    "routingVersionFormat": "버전 형식",
    "routingCchAlgorithm": "CCH 알고리즘",
    "routingWordsToObfuscate": "난독화할 단어(첫 번째 문자 뒤에 ZWJ 삽입)",
    "logsSettingsTitle": "로그 설정",
    "detailedLogsLabel": "자세한 로그가 활성화되었습니다.",
    "detailedLogsDesc": "자세한 요청/응답 로깅 활성화",
    "callLogPipelineLabel": "통화 기록 파이프라인",
    "callLogPipelineDesc": "통화 기록 처리 파이프라인 활성화",
    "maxDetailSizeLabel": "최대 세부정보 크기(KB)",
    "maxDetailSizeDesc": "자세한 로그 항목의 최대 크기",
    "ringBufferSizeLabel": "링 버퍼 크기",
    "ringBufferSizeDesc": "로그용 링 버퍼 크기",
    "semanticCacheEnabledLabel": "의미론적 캐시 활성화",
    "semanticCacheMaxSizeLabel": "의미론적 캐시 최대 크기",
    "semanticCacheMaxSizeDesc": "의미론적 캐시 항목의 최대 개수",
    "semanticCacheTTLLabel": "의미론적 캐시 TTL",
    "promptCacheEnabledLabel": "프롬프트 캐시 활성화됨",
    "promptCacheEnabledDesc": "프롬프트 캐싱 활성화",
    "promptCacheStrategyLabel": "프롬프트 캐시 전략",
    "promptCacheStrategyDesc": "프롬프트 캐싱 전략",
    "alwaysPreserveClientCacheLabel": "항상 클라이언트 캐시 보존",
    "alwaysPreserveClientCacheDesc": "클라이언트 캐시 보존 정책",
    "logRetentionPolicyTitle": "로그 보존 정책",
    "resilienceUseUpstream429HintsForBreaker": "업스트림 429 힌트 사용(차단기)",
    "appearanceLogoPreviewAlt": "로고 미리보기",
    "appearanceFaviconPreviewAlt": "파비콘 미리보기",
    "oneproxyLastSync": "마지막 동기화",
    "oneproxyAllProtocols": "모든 프로토콜",
    "oneproxyCountryCodePlaceholder": "국가 코드(예: 미국)",
    "oneproxyMinQualityPlaceholder": "최소 품질",
    "oneproxyLoadingProxies": "프록시 로드 중...",
    "oneproxyLastSyncLabel": "마지막 동기화:",
    "oneproxyProxiesFetched": "가져온 프록시:",
    "oneproxyConsecutiveFailures": "연속 실패:",
    "oneproxyErrorLabel": "오류:",
    "oneproxyNever": "절대로",
    "oneproxySyncStatusTitle": "동기화 상태",
    "oneproxySuccess": "성공",
    "oneproxyFailed": "실패",
    "routingAntigravitySignatureTitle": "반중력 서명 캐시 모드",
    "routingAntigravitySignatureDesc": "__MISSING__:Control whether OmniRoute reuses only stored Gemini thought signatures or accepts validated client-provided signatures in Antigravity-compatible tool-call flows.",
    "routingAntigravitySignatureEnabledLabel": "__MISSING__:Enabled",
    "routingAntigravitySignatureEnabledDesc": "__MISSING__:Current behavior. Ignore client-provided signatures and keep using the stored OmniRoute flow.",
    "routingAntigravitySignatureBypassLabel": "__MISSING__:Bypass",
    "routingAntigravitySignatureBypassDesc": "__MISSING__:Accept client-provided signatures after lightweight validation and fall back to the stored signature when invalid.",
    "routingAntigravitySignatureBypassStrictLabel": "__MISSING__:Bypass Strict",
    "routingAntigravitySignatureBypassStrictDesc": "__MISSING__:Require full protobuf validation before accepting a client-provided signature.",
    "routingHeaderFingerprintTitle": "헤더 지문(공급자별)",
    "routingServerRejectedSave": "⚠ 서버가 저장을 거부했습니다:",
    "routingAddTransformOp": "변환 작업 추가",
    "routingClientCacheControlTitle": "클라이언트 캐시 제어",
    "routingClientCacheControlDesc": "__MISSING__:Configure whether OmniRoute preserves client-provided cache_control markers",
    "routingClientCacheControlAutoDesc": "__MISSING__:For deterministic Claude-compatible flows, preserve client-provided cache_control as-is. If the request has no cache_control, OmniRoute does not inject any bridge-owned markers for CC-compatible third-party proxy compatibility.",
    "routingClientCacheControlAlwaysLabel": "__MISSING__:Always Preserve",
    "routingClientCacheControlAlwaysDesc": "__MISSING__:Always forward client-provided cache_control headers to upstream providers as-is.",
    "routingClientCacheControlNeverLabel": "__MISSING__:Never Preserve",
    "routingClientCacheControlNeverDesc": "__MISSING__:Always remove client cache_control headers and let OmniRoute manage caching where native provider flows support it.",
    "routingZeroConfigTitle": "제로 구성 자동 라우팅",
    "routingZeroConfigDesc": "__MISSING__:Enable automatic provider selection using the auto/ prefix. When enabled, requests to auto, auto/coding, auto/fast, etc. will dynamically route across all connected providers.",
    "routingDefaultAutoVariant": "기본 자동 변형",
    "visionBridge": "비전브릿지",
    "visionBridgeDesc": "__MISSING__:Run an automatic vision-to-text fallback before routing image requests to text-only models.",
    "visionBridgeEnabledLabel": "__MISSING__:Enabled",
    "visionBridgeEnabledDesc": "__MISSING__:Toggle the pre-call bridge that replaces image parts with extracted text.",
    "visionBridgeModel": "교량 모델",
    "visionBridgeModelPlaceholder": "openai/gpt-4o-mini",
    "visionBridgeModelHint": "__MISSING__:Any OmniRoute model ID that supports vision can be used here.",
    "visionBridgePrompt": "브리지 프롬프트",
    "visionBridgePromptPlaceholder": "이 이미지를 간결하게 설명하세요.",
    "visionBridgePromptHint": "__MISSING__:Sent to the vision model before the extracted description is injected back into the original request.",
    "visionBridgeTimeoutMs": "시간 초과(밀리초)",
    "visionBridgeMaxImagesPerRequest": "요청당 최대 이미지",
    "resilienceMaxBackoffSteps": "Max backoff steps",
    "resilienceProviderBreakerTitle": "Circuit Breaker per Provider",
    "resilienceFailureThreshold": "Failure threshold",
    "resilienceResetTimeout": "시간 초과 재설정",
    "resilienceFailureThresholdLabel": "실패 임계값",
    "resilienceResetTimeoutLabel": "시간 초과 재설정",
    "resilienceConnectionCooldownTitle": "Connection Cooldown",
    "resilienceUseUpstreamRetryHintsLabel": "업스트림 재시도 힌트 사용",
    "resilienceUseUpstream429BreakerLabel": "업스트림 429 힌트 사용(차단기)",
    "resilienceMaxBackoffStepsLabel": "최대 백오프 단계",
    "resilienceYes": "예",
    "resilienceNo": "아니요",
    "resilienceDefault": "Default",
    "storageDatabaseBackupRetention": "데이터베이스 백업 보존",
    "storagePurgeData": "데이터 삭제",
    "retentionQuotaSnapshots": "할당량 스냅샷(일)",
    "retentionMcpAudit": "MCP 감사(일)",
    "retentionA2aEvents": "A2A 이벤트(일)",
    "retentionCallLogs": "통화 기록(일)",
    "retentionUsageHistory": "이용내역(일)",
    "retentionMemoryEntries": "메모리 항목(일)",
    "storageAutoVacuumMode": "자동 진공 모드",
    "storageScheduledVacuum": "예약된 진공",
    "storageVacuumHour": "진공 시간(0-23)",
    "storagePageSize": "페이지 크기(바이트)",
    "storageDatabaseSize": "데이터베이스 크기",
    "storagePageCount": "페이지 수",
    "storageFreelistCount": "자유 목록 수",
    "storageLastVacuum": "마지막 진공",
    "storageLastOptimization": "마지막 최적화",
    "storageIntegrityCheck": "무결성 검사",
    "storageIntegrityOk": "✓ 알았어",
    "storageIntegrityError": "✗ 오류",
    "storageUsageTokenBuffer": "사용 토큰 버퍼",
    "compressionSettingsAutoTriggerMode": "자동 트리거 모드",
    "compressionSettingsMcpDescriptionCompression": "MCP 설명 압축",
    "compressionSettingsCavemanIntensity": "원시인의 강도",
    "compressionSettingsCavemanOutputMode": "원시인 출력 모드",
    "compressionSettingsOutputIntensity": "출력 강도",
    "compressionSettingsAutoClarityBypass": "자동 선명도 우회",
    "resilienceWaitForCooldown": "쿨다운을 기다리세요",
    "resilienceEnableServerSideWait": "서버측 대기 활성화",
    "resilienceMaximumRetries": "최대 재시도",
    "resilienceMaximumWaitPerRetry": "재시도당 최대 대기 시간",
    "memorySkillsSkillsmpMarketplace": "SkillsMP 마켓플레이스",
    "memorySkillsFailedToSave": "저장하지 못했습니다.",
    "memorySkillsApiKey": "API 키",
    "memorySkillsActiveSkillsProvider": "활성 기술 제공자",
    "cliproxyapiFallback": "CLIProxyAPI 대체",
    "cliproxyapiEnableFallback": "CLIProxyAPI 대체 활성화",
    "cliproxyapiUrl": "CLIProxyAPI URL",
    "cliproxyapiStatus": "CLIProxyAPI 상태",
    "cliproxyapiNotDetected": "감지되지 않음",
    "payloadRulesTitle": "페이로드 규칙",
    "payloadRulesDesc": "__MISSING__:Configure request payload mutations by model and protocol. Changes are persisted in settings and hot reloaded into the runtime immediately after save.",
    "payloadRuleDefaultTitle": "__MISSING__:default",
    "payloadRuleDefaultDesc": "__MISSING__:Applies params only when the target path is missing from the outgoing payload.",
    "payloadRuleOverrideTitle": "__MISSING__:override",
    "payloadRuleOverrideDesc": "__MISSING__:Forces values onto the payload, replacing anything already present at that path.",
    "payloadRuleFilterTitle": "__MISSING__:filter",
    "payloadRuleFilterDesc": "__MISSING__:Removes blocked params from the payload before the upstream request is sent.",
    "payloadRuleDefaultRawTitle": "__MISSING__:defaultRaw",
    "payloadRuleDefaultRawDesc": "__MISSING__:Like default, but string values are parsed as JSON first when possible. The legacy input alias default-raw is also accepted on save.",
    "payloadEditorTitle": "__MISSING__:Editor",
    "payloadEditorDesc": "__MISSING__:Use the runtime schema shape: default, override, filter, defaultRaw. The API also accepts the legacy input key default-raw.",
    "payloadEditorReady": "__MISSING__:Ready",
    "payloadResetInfo": "__MISSING__:Editor reset to the neutral template. Save to apply it.",
    "payloadSaveSuccess": "__MISSING__:Payload rules saved and hot reloaded.",
    "payloadJsonParseError": "__MISSING__:JSON parse error: {error}",
    "payloadMustBeObject": "__MISSING__:Payload rules must be a JSON object.",
    "payloadInvalidJson": "__MISSING__:Invalid JSON payload.",
    "payloadValidJsonRequired": "__MISSING__:Payload rules must be valid JSON before saving.",
    "savePayloadRules": "__MISSING__:Save Payload Rules",
    "requestLimitsTitle": "__MISSING__:Request Limits",
    "requestLimitsDesc": "__MISSING__:Configure global request limits and concurrency guards.",
    "maxRequestSizeLabel": "__MISSING__:Max Request Size (MB)",
    "maxRequestSizeDesc": "__MISSING__:Maximum allowed size for incoming API requests.",
    "maxResponseSizeLabel": "__MISSING__:Max Response Size (MB)",
    "maxResponseSizeDesc": "__MISSING__:Maximum allowed size for outgoing API responses.",
    "maxRequestTokensLabel": "__MISSING__:Max Request Tokens",
    "maxRequestTokensDesc": "__MISSING__:Maximum total tokens allowed in a single request.",
    "maxResponseTokensLabel": "__MISSING__:Max Response Tokens",
    "maxResponseTokensDesc": "__MISSING__:Maximum total tokens allowed in a single response.",
    "modelCooldownsTitle": "쿨다운 중인 모델",
    "modelCooldownsEmpty": "현재 대기 중인 모델이 없습니다.",
    "codexFastTierTitle": "코덱스 패스트 티어",
    "codexFastTierDesc": "OpenAI Codex 요청에 대해 service_tier=priority를 전역적으로 삽입합니다.",
    "codexFastTierHint": "활성화되면 OmniRoute는 아직 계층을 지정하지 않은 연결에 대한 아웃바운드 Codex 요청에 service_tier=priority를 추가합니다. 우선 순위 계층에는 OpenAI Enterprise API 키 또는 ChatGPT 인증 Codex 경로가 필요합니다. 다른 키 유형은 OpenAI로부터 계층 관련 오류를 수신합니다. Codex 공급자 페이지의 연결별 설정이 우선적으로 적용됩니다.",
    "codexFastTierSaveError": "Codex Fast Tier 설정을 업데이트하지 못했습니다.",
    "codexFastTierTierLabel": "__MISSING__:Service tier",
    "codexFastTierTierPriority": "__MISSING__:Priority",
    "codexFastTierTierFlex": "__MISSING__:Flex",
    "codexFastTierTierDefault": "__MISSING__:Default",
    "codexFastTierModelsLabel": "__MISSING__:Fast-tier models",
    "codexFastTierModelsHint": "__MISSING__:Only checked models receive service_tier when Fast Tier is enabled.",
    "codexFastTierModelCheckbox": "__MISSING__:Enable Fast Tier for {model}",
    "claudeFastModeTitle": "클로드 패스트 모드",
    "claudeFastModeDesc": "선택한 Claude 요청을 Anthropic Fast 모드(속도:\"빠름\")로 선택하세요.",
    "claudeFastModeHint": "Anthropic은 SDK 스타일 클라이언트에 대한 빠른 모드를 공식적으로 지원하지 않습니다. 활성화되면 OmniRoute는 X-CPA-Force-Fast-Mode 헤더를 전달하므로 쌍을 이루는 CLIProxyAPI 빌드가 진입점 스푸핑을 선택할 수 있습니다. 나열된 Opus 모델만 Anthropic의 클라이언트 측 확인에 의해 통제됩니다. 구독 등급, 최대 요금제 및 빠른 모드 크레딧 잔고는 여전히 서버 측에서 시행됩니다. Anthropic은 토글이 켜져 있어도 out_of_credits를 반환할 수 있습니다.",
    "claudeFastModeModelsLabel": "모델에 적용됨({count})",
    "claudeFastModeModelCheckbox": "{model}에 대한 빠른 모드 활성화",
    "claudeFastModeSaveError": "Claude 빠른 모드 설정을 업데이트하지 못했습니다.",
    "authz": {
      "title": "__MISSING__:Authz Inventory",
      "description": "__MISSING__:5-tier route classification with live bypass policy. Read shows the full taxonomy; mutations re-prompt for the management password.",
      "loading": "__MISSING__:Loading inventory…",
      "loadError": "__MISSING__:Failed to load authz inventory",
      "tier": {
        "LOCAL_ONLY": "__MISSING__:Local only",
        "ALWAYS_PROTECTED": "__MISSING__:Always protected",
        "MANAGEMENT": "__MISSING__:Management",
        "CLIENT_API": "__MISSING__:Client API",
        "PUBLIC": "__MISSING__:Public"
      },
      "bypass": {
        "section": "__MISSING__:Manage-scope bypass",
        "kill_switch": {
          "label": "__MISSING__:Bypass kill-switch",
          "desc": "__MISSING__:Master toggle. When off, no LOCAL_ONLY prefix is reachable from non-loopback regardless of the per-prefix list."
        },
        "prefix": {
          "label": "__MISSING__:Bypassable prefixes",
          "desc": "__MISSING__:LOCAL_ONLY prefixes that manage-scope API keys (or dashboard sessions) may reach from non-loopback hosts.",
          "add": "__MISSING__:Add prefix",
          "placeholder": "__MISSING__:/api/mcp/v2/",
          "empty": "__MISSING__:No prefixes configured. Bypass effectively off."
        },
        "cli_tools_runtime_note": "__MISSING__:Spawn-capable prefix. Compile-time deny; cannot be made bypassable. Shown read-only."
      },
      "password": {
        "prompt": {
          "label": "__MISSING__:Current password",
          "desc": "__MISSING__:Re-confirm to apply security-impacting changes."
        },
        "placeholder": "__MISSING__:Current management password",
        "cancel": "__MISSING__:Cancel",
        "submit": "__MISSING__:Apply"
      },
      "save": "__MISSING__:Save changes",
      "saved": "__MISSING__:Authz settings updated",
      "pending": "__MISSING__:Unsaved changes",
      "badge": {
        "bypassable": "__MISSING__:Bypassable via manage scope",
        "strict": "__MISSING__:Strict loopback",
        "auth_required": "__MISSING__:Auth required",
        "public": "__MISSING__:Public",
        "always_protected": "__MISSING__:Always protected",
        "spawn_capable": "__MISSING__:Spawn-capable"
      },
      "error": {
        "PASSWORD_REQUIRED": "__MISSING__:Current password required to apply these changes.",
        "PASSWORD_MISMATCH": "__MISSING__:Current password is incorrect.",
        "INSUFFICIENT_SCOPE": "__MISSING__:API key lacks the manage scope.",
        "BYPASS_PREFIX_NOT_ALLOWED": "__MISSING__:One or more prefixes target spawn-capable routes and cannot be bypassed.",
        "GENERIC": "__MISSING__:Failed to update authz settings."
      }
    },
    "resilienceBaseCooldownLabel": "기본 재사용 대기시간",
    "scopeLabel": "범위",
    "triggerLabel": "트리거",
    "effectLabel": "효과",
    "statusEnabled": "활성화됨",
    "statusDisabled": "장애인",
    "resilienceRequestQueueScope": "요청당 대기열",
    "resilienceRequestQueueTrigger": "상류로 보내기 전에",
    "resilienceRequestQueueEffect": "요청을 대기열에 추가하고, 동시성을 제한하고, 통화 공간을 확보합니다.",
    "resilienceRequestQueueDesc": "이 레이어는 대기열 및 간격만 제어합니다. 쿨타임이나 개방형 회로 차단기는 저장되지 않습니다.",
    "resilienceAutoEnableApiKeyProvidersDesc": "활성 API 키 연결에 대해 기본적으로 대기열 보호를 활성화합니다.",
    "resilienceMaxQueueWait": "최대 대기열 대기 시간",
    "resilienceConnectionCooldownScope": "개별 연결",
    "resilienceConnectionCooldownTrigger": "연결이 일시적인 업스트림 오류를 반환하는 경우",
    "resilienceConnectionCooldownEffect": "해당 연결을 일시적으로 건너뛰고 반복되는 실패에 대한 백오프를 높입니다.",
    "resilienceConnectionCooldownDesc": "기본 쿨다운에는 일시적인 연결 오류가 포함됩니다. 업스트림 재시도 힌트가 활성화되면 공급자의 명시적 창이 로컬 쿨다운을 재정의합니다.",
    "resilienceUseUpstreamRetryHintsDesc": "가능한 경우 업스트림 공급자의 재시도/재설정 값을 사용합니다.",
    "resilienceUseUpstream429BreakerHints": "차단기 쿨다운을 위해 업스트림 429 힌트를 사용하세요.",
    "resilienceUseUpstream429BreakerHintsShort": "업스트림 429 힌트 사용",
    "resilienceUseUpstream429BreakerHintsDesc": "회로 차단기 휴지 기간에 대한 429 응답의 재시도 후/할당량 소진 신호를 적용합니다. 기본값은 공급자별 정책을 사용합니다. 직접 클라우드 공급자는 기본적으로 켜져 있습니다. 역방향 프록시, 자체 호스팅 및 CLI 지원 공급자는 기본적으로 꺼져 있습니다. \"업스트림 재시도 힌트 사용\"과 무관합니다.",
    "resilienceProviderBreakerScope": "전체 공급자",
    "resilienceProviderBreakerTrigger": "연결 대체가 소진된 후 최종 전송/서버 오류",
    "resilienceProviderBreakerEffect": "재설정 시간이 만료될 때까지 해당 공급자를 일시적으로 차단합니다.",
    "resilienceProviderBreakerDesc": "라이브 차단기 상태는 상태 페이지에만 나타납니다. 연결 범위의 429 속도 제한은 연결 쿨다운 상태로 유지되며 공급자 차단기를 트립하지 않습니다.",
    "resilienceResetTime": "재설정 시간",
    "resilienceWaitForCooldownTitle": "쿨다운을 기다리세요",
    "resilienceWaitForCooldownScope": "현재 클라이언트 요청",
    "resilienceWaitForCooldownTrigger": "모든 후보 연결이 이미 냉각되고 있는 경우",
    "resilienceWaitForCooldownEffect": "서버에서 기다렸다가 첫 번째 재사용 대기시간이 만료되면 다시 시도합니다.",
    "resilienceWaitForCooldownDesc": "이는 현재 요청에만 영향을 미칩니다. 연결이나 공급자 상태는 저장되지 않습니다.",
    "resilienceEnableServerWait": "서버측 대기 활성화",
    "resilienceEnableServerWaitDesc": "활성화되면 OmniRoute는 첫 번째 대기 시간이 만료될 때까지 기다렸다가 자동으로 재시도합니다.",
    "resilienceMaxAttempts": "최대 시도 횟수",
    "resilienceMaxWaitPerAttempt": "시도당 최대 대기 시간",
    "forcedFingerprintTitle": "Always enabled for {provider} — required for OAuth account safety; cannot be turned off.",
    "forcedFingerprintBadge": "Required",
    "codexSessionAffinityTitle": "Codex 세션 어피니티",
    "codexSessionAffinityDesc": "이 시간 동안 동일한 계정에서 하나의 Codex 대화를 유지합니다. 0은 비활성화합니다.",
    "codexSessionAffinityTtl": "선호도 TTL(초)",
    "resetAwareQuotaCacheTitle": "재설정 인식 할당량 캐시",
    "resetAwareQuotaCacheDesc": "재설정 인식 주문에 대해서만 할당량 원격 분석을 캐시합니다. 실행 전 할당량은 여전히 ​​요청을 보호합니다. 0/0은 계속 실시간 가져오기를 수행합니다.",
    "resetAwareQuotaCacheTtl": "새로운 TTL(초)",
    "resetAwareQuotaCacheMaxStale": "최대 오래된 시간(초)",
    "qdrantCleanupSuccess": "확인: {count} 포인트 제거됨(보존 기간: {days}일)",
    "qdrantCleanupFailed": "정리 실패",
    "qdrantCleanupError": "오류: {error}",
    "vercelRelaySuccess": "__MISSING__:Vercel Relay deployed successfully",
    "vercelRelayButton": "__MISSING__:Deploy Vercel Relay",
    "vercelRelayModalTitle": "__MISSING__:Deploy Vercel Relay",
    "vercelRelayWarning": "__MISSING__:Warning: A Vercel deployment token is required. This token will only be used to create the serverless relay and will never be stored by OmniRoute.",
    "vercelRelayTokenLabel": "__MISSING__:Vercel Access Token",
    "vercelRelayProjectNameLabel": "__MISSING__:Vercel Project Name",
    "vercelRelayFreeTierNote": "__MISSING__:Relays are lightweight proxy endpoints deployed on Vercel's free tier to bypass local network/region limitations.",
    "vercelRelayDeploying": "__MISSING__:Deploying...",
    "vercelRelayDeploy": "__MISSING__:Deploy",
    "homePinProviderQuotaToHome": "Pin Information to Home Page",
    "homeProviderQuotaLimits": "Provider Quota Limits",
    "homeProviderQuotaLimitsDesc": "Pin the Provider Quota status container (with Refresh All button) to the top of the Home page.",
    "homeQuickStart": "Quick Start",
    "homeQuickStartDesc": "Show the Quick Start panel on the Home page.",
    "homeProviderTopology": "Provider Topology",
    "homeProviderTopologyDesc": "Show the Provider Topology on the Home page."
  },
  "contextRtk": {
    "title": "RTK Engine",
    "description": "Command-aware compression for tool output, terminal logs and build results.",
    "enabled": "Enabled",
    "intensity": "Intensity",
    "intensityMinimal": "Minimal",
    "intensityStandard": "Standard",
    "intensityAggressive": "Aggressive",
    "toolResults": "Tool results",
    "assistantMessages": "Assistant messages",
    "codeBlocks": "Code blocks",
    "filterCatalog": "필터 카탈로그",
    "filterCatalogDesc": "카테고리별로 사용 가능한 출력 필터",
    "guidedConfig": "구성",
    "guidedConfigDesc": "RTK가 터미널 출력을 필터링하는 방법을 조정하세요.",
    "maxLines": "Max lines",
    "maxChars": "Max chars",
    "deduplicateThreshold": "중복 제거 임계값",
    "customFilters": "맞춤 필터",
    "detectedType": "감지된 유형",
    "confidence": "자신감",
    "beforeAfter": "전/후",
    "trustProjectFilters": "프로젝트 필터 신뢰",
    "rawOutputRetention": "원시 출력 보존",
    "rawOutputNever": "절대로",
    "rawOutputFailures": "실패",
    "rawOutputAlways": "항상",
    "rawOutputMaxBytes": "원시 출력 최대 바이트",
    "filterTesting": "Filter Testing",
    "pasteOutput": "Paste tool output to test filtering...",
    "presetHigh": "공격적",
    "presetLow": "빛",
    "presetMaxChars": "최대 출력 문자",
    "presetMaxLines": "최대 출력 라인",
    "presetMedium": "표준",
    "run": "Run",
    "result": "Result",
    "previewEmpty": "Run a sample to preview RTK output.",
    "detected": "Detected",
    "masterSwitchOffAlert": "__MISSING__:Token Saver master switch is OFF — these settings will not affect requests until you turn it on from the Endpoint page.",
    "tokensFiltered": "Tokens filtered",
    "filtersActive": "Filters active",
    "requests": "Requests",
    "avgSavings": "Avg savings",
    "simpleMode": "단순",
    "advancedMode": "고급",
    "searchFilters": "검색 필터...",
    "tooltipDedup": "반복되는 줄을 얼마나 적극적으로 제거하는지.",
    "tooltipMaxChars": "출력 블록당 최대 문자 수입니다.",
    "tooltipMaxLines": "명령 출력에서 유지할 최대 줄입니다. 초과분은 잘립니다."
  },
  "contextCombos": {
    "title": "Compression Combos",
    "description": "Define how engines are combined for different routing scenarios.",
    "createCombo": "Create Compression Combo",
    "editCombo": "Edit",
    "deleteCombo": "Delete",
    "deleteConfirm": "Delete this compression combo?",
    "pipeline": "Pipeline",
    "addStep": "Add Step",
    "removeStep": "Remove",
    "name": "Name",
    "descriptionField": "Description",
    "languagePacks": "Language Packs",
    "outputMode": "Output Mode",
    "assignToRouting": "Assign to Routing Combos",
    "noAssignments": "No routing combos available",
    "default": "Default",
    "setAsDefault": "Set as Default",
    "save": "Save",
    "cancel": "Cancel",
    "enabled": "Enabled"
  },
  "contextCaveman": {
    "title": "Caveman Engine",
    "description": "Rule-based message compression, language packs, analytics and output mode controls.",
    "advancedConfig": "고급 구성",
    "advancedConfigDesc": "압축 동작 미세 조정",
    "aggressiveSettings": "공격적인 설정",
    "aggressiveSettingsDesc": "잠재적인 품질 절충을 통한 최대 압축",
    "requests": "Requests",
    "tokensSaved": "Tokens saved",
    "savingsPercent": "Savings %",
    "avgLatency": "Avg latency",
    "languagePacks": "Language Packs",
    "languagePacksDesc": "Enable compression rules for specific languages.",
    "labelAutoTrigger": "컨텍스트가 초과되면 자동 압축",
    "labelCompressionRate": "압축 강도",
    "labelMaxTokens": "메시지당 대상 토큰",
    "labelMinLength": "최소 메시지 길이",
    "labelMinSavings": "저장할 최소 토큰",
    "enabled": "Enabled",
    "autoDetect": "Auto-detect language",
    "rulesCount": "{count} rules",
    "inputCompressionTitle": "__MISSING__:Input compression",
    "inputCompressionDesc": "__MISSING__:Rewrite chat history with shorter wording. Reduces input tokens by ~50%.",
    "analyticsTitle": "Compression Analytics",
    "noAnalytics": "No compression analytics yet.",
    "outputMode": "출력 모드",
    "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.",
    "outputModeTitle": "Output Mode",
    "quickSettings": "빠른 설정",
    "quickSettingsDesc": "시작하기 위한 기본 압축 설정",
    "autoClarity": "Auto-Clarity Bypass",
    "bypassConditions": "Bypass conditions",
    "bypassConditionsList": "보안, 되돌릴 수 없음, 설명, 순서 구분",
    "simpleMode": "단순",
    "advancedMode": "고급",
    "tooltipAutoTrigger": "컨텍스트가 이 크기를 초과하면 자동으로 압축됩니다.",
    "tooltipCompressionRate": "0.0 = 없음, 1.0 = 최대. 0.5 = 균형.",
    "tooltipMaxTokens": "압축 후 대상 토큰 수입니다. 낮음 = 더 공격적입니다.",
    "tooltipMinLength": "이보다 짧은 메시지는 압축되지 않습니다. 낮음 = 더 많은 압축.",
    "tooltipMinSavings": "최소한 이만큼의 토큰을 저장하는 경우에만 압축하세요.",
    "ultraSettings": "울트라 설정",
    "ultraSettingsDesc": "SLM 기반 의미 압축",
    "preview": {
      "lite": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.",
      "full": "Respond terse and compact. Preserve all technical substance.",
      "ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols."
    }
  },
  "translator": {
    "title": "번역기",
    "metaTitle": "번역가 놀이터 | 옴니루트",
    "metaDescription": "공급자 간의 API 형식 변환을 디버그, 테스트 및 시각화합니다.",
    "playgroundTitle": "번역가 놀이터",
    "playground": "놀이터",
    "realtime": "실시간 번역 활동",
    "chatTester": "채팅 테스터",
    "testBench": "테스트 벤치",
    "liveMonitor": "라이브 모니터",
    "modeDescriptionPlayground": "API 요청 본문을 붙여넣고 OmniRoute가 이를 공급자 형식(OpenAI ← Claude ← Gemini ← Responses API) 간에 어떻게 변환하는지 확인하세요.",
    "modeDescriptionChatTester": "OmniRoute를 통해 실제 채팅 요청을 보내고 전체 왕복(입력, 번역된 요청, 공급자 응답 및 번역된 출력)을 검사합니다.",
    "modeDescriptionTestBench": "사전 정의된 시나리오를 실행하고 공급자와 모델 간의 호환성을 비교하세요.",
    "modeDescriptionLiveMonitor": "요청이 OmniRoute를 통해 전달됨에 따라 번역 이벤트를 실시간으로 감시하세요.",
    "modeDescriptionFallback": "OmniRoute가 공급자 간 API 요청을 변환하는 방법을 디버그, 테스트 및 시각화합니다.",
    "recentTranslations": "최근 번역",
    "noTranslations": "아직 번역이 없습니다.",
    "source": "소스",
    "target": "대상",
    "time": "시간",
    "model": "모델",
    "status": "상태",
    "latency": "대기 시간",
    "totalTranslations": "총 번역",
    "successful": "성공",
    "errors": "오류",
    "avgLatency": "평균 지연 시간",
    "millisecondsShort": "{value}ms",
    "notAvailableSymbol": "—",
    "liveAutoRefreshing": "실시간 — 자동 새로고침",
    "paused": "일시중지됨",
    "eventsAppearHint": "요청이 OmniRoute를 통해 전달될 때 번역 이벤트가 여기에 표시됩니다. 이벤트를 생성하려면 다음 방법 중 하나를 사용하세요.",
    "chatTesterTab": "채팅 테스터 탭",
    "testBenchTab": "테스트 벤치 탭",
    "externalApiCalls": "외부 API 호출",
    "ideCliIntegrations": "IDE/CLI 통합",
    "inMemoryNote": "참고: 이벤트는 메모리에 저장되며 서버가 다시 시작되면 재설정됩니다.",
    "ok": "알았어",
    "errorShort": "오류",
    "formatConverter": "형식 변환기",
    "formatConverterDescription": "JSON 요청 본문을 붙여넣거나 입력하세요. 변환기는 소스 형식을 자동으로 감지하여 대상 형식으로 변환합니다. 이를 사용하여 OmniRoute가 형식(OpenAI ← Claude ⇔ Gemini ⇔ Responses API) 간 요청을 변환하는 방법을 디버깅합니다.",
    "translationPathHubSpoke": "{source} → OpenAI(중급) → {target}",
    "translationPathDirect": "{source} → {target} (직접 번역기)",
    "translationPathPassthrough": "동일한 형식 - 번역이 필요하지 않습니다.",
    "openaiIntermediatePanel": "OpenAI 중급",
    "autoFeaturesTitle": "OmniRoute가 자동으로 수행하는 작업",
    "autoFeaturesCount": "8가지 기능",
    "featureReasoningCache": "추론 캐시",
    "featureReasoningCacheDesc": "클라이언트가 대화 기록에서 이를 생략한 경우 사고 모드 모델(DeepSeek V4, Kimi K2, Qwen)에 대해 캐시된 Reasoning_content를 다시 주입합니다.",
    "featureSchemaCoercion": "스키마 강제",
    "featureSchemaCoercionDesc": "손상된 도구 스키마를 수정합니다. 누락된 추가 속성을 추가하고, 긴 설명을 삭제하고, 중첩된 개체를 정규화합니다.",
    "featureRoleNormalization": "역할 정규화",
    "featureRoleNormalizationDesc": "OpenAI가 아닌 대상을 위한 지도 개발자→시스템. 시스템 역할을 지원하지 않는 모델의 경우 시스템→사용자를 매핑합니다.",
    "featureToolCallIds": "도구 호출 ID 정규화",
    "featureToolCallIdsDesc": "누락된 경우 고유한 tool_call ID를 생성합니다. Mistral과 같은 공급자의 경우 9자 형식으로 정규화됩니다.",
    "featureMissingToolResponse": "도구 응답 주입",
    "featureMissingToolResponseDesc": "클라이언트가 해당 응답 없이 tool_call을 보낼 때 빈 tool_result 메시지를 삽입합니다.",
    "featureThinkingBudget": "생각하는 예산",
    "featureThinkingBudgetDesc": "사고 구성을 자동으로 관리합니다. 마지막 메시지가 사용자로부터 온 것이 아닐 때 사고 매개변수를 제거합니다.",
    "featureDirectPaths": "직접 번역 경로",
    "featureDirectPathsDesc": "일부 형식 쌍(Claude→Gemini)에는 OpenAI 허브를 우회하는 직접 변환기가 있어 보다 정확한 출력을 생성합니다.",
    "featureImageMapping": "이미지 크기 매핑",
    "featureImageMappingDesc": "API 형식(예: OpenAI 세부 수준 → Gemini 차원) 간의 이미지 차원 규칙을 변환합니다.",
    "input": "입력",
    "output": "출력",
    "auto": "자동",
    "swapFormats": "형식 교환",
    "translateAction": "번역하다",
    "clear": "지우기",
    "inputPlaceholder": "여기에 요청 본문을 붙여넣거나 아래에서 템플릿을 선택하세요...",
    "exampleTemplates": "예제 템플릿",
    "exampleTemplatesHint": "— 로드하려면 클릭하세요.",
    "templateLoadHint": "템플릿은 {format} 형식으로 요청을 로드합니다. 다른 형식으로 로드하려면 소스 형식을 변경하세요.",
    "compatibilityTester": "호환성 테스터",
    "compatibilityReport": "호환성 보고서",
    "testBenchDescription": "사전 정의된 시나리오(간단한 채팅, 도구 호출 등)를 실행하여 번역 및 공급자 호환성을 확인하세요. 소스 형식과 대상 공급자를 선택한 다음 모든 테스트를 실행하여 호환성 비율을 확인하세요. 이를 사용하여 공급자 간에 작동하는 기능을 찾으세요.",
    "targetProvider": "대상 제공자",
    "runAllTests": "모든 테스트 실행",
    "runTest": "테스트 실행",
    "reRun": "재실행",
    "running": "실행중...",
    "passed": "합격",
    "failed": "실패했다",
    "passedIconLabel": "✅ 합격",
    "chunks": "덩어리",
    "scenarioSimpleChat": "간단한 채팅",
    "scenarioToolCalling": "도구 호출",
    "scenarioMultiTurn": "다회전",
    "scenarioThinking": "생각",
    "scenarioSystemPrompt": "시스템 프롬프트",
    "scenarioStreaming": "스트리밍",
    "templateNames": {
      "simple-chat": "간단한 채팅",
      "tool-calling": "도구 호출",
      "multi-turn": "다회전",
      "thinking": "생각",
      "system-prompt": "시스템 프롬프트",
      "streaming": "스트리밍",
      "vision": "비전",
      "schema-coercion": "스키마 강제"
    },
    "templateDescriptions": {
      "simple-chat": "기본 문자 메시지",
      "tool-calling": "함수/도구 호출",
      "multi-turn": "역사와의 대화",
      "thinking": "확장된 사고/추론",
      "system-prompt": "복잡한 시스템 지침",
      "streaming": "SSE 스트리밍 요청",
      "vision": "이미지 입력을 통한 다중 모드 요청",
      "schema-coercion": "구조화된 출력/JSON 스키마 적용"
    },
    "templatePayloads": {
      "simpleChat": {
        "system": "당신은 도움이 되는 조수입니다.",
        "userGreeting": "안녕하세요! 오늘 기분이 어떠세요?"
      },
      "toolCalling": {
        "userWeather": "상파울루 날씨는 어떻습니까?",
        "toolDescription": "특정 위치의 현재 날씨 확인",
        "cityNameDescription": "도시 이름"
      },
      "multiTurn": {
        "system": "당신은 코딩 도우미입니다.",
        "userInitial": "Python에서 배열을 정렬하는 함수를 작성합니다.",
        "assistantExample": "다음은 간단한 정렬 기능입니다.\n\n``파이썬\ndef sort_array(arr):\n    반환 정렬(arr)\n````",
        "userFollowUp": "이제 내림차순으로 정렬해 보겠습니다."
      },
      "thinking": {
        "question": "처음 100개의 소수의 합은 얼마입니까?"
      },
      "systemPrompt": {
        "systemInstruction": "당신은 분산 시스템을 전문으로 하는 수석 소프트웨어 엔지니어입니다. 업계 모범 사례를 사용하여 질문에 간결하게 답변하세요. 관련이 있는 경우 항상 코드 예제를 제공하세요. 마크다운을 사용하여 응답 형식을 지정하세요.",
        "question": "회로 차단기 패턴을 어떻게 구현하나요?"
      },
      "streaming": {
        "prompt": "그림 그리는 법을 배우는 로봇에 대한 짧은 이야기를 들려주세요."
      },
      "vision": {
        "system": "당신은 이미지를 정확하게 설명하는 조수입니다.",
        "userPrompt": "이 이미지에는 무엇이 표시되어 있나요?",
        "imageUrl": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/47/PNG_transparency_demonstration_1.png/600px-PNG_transparency_demonstration_1.png"
      },
      "schemaCoercion": {
        "userPrompt": "미터법 단위를 사용하여 도쿄 날씨를 찾아보고 시간별 분석을 포함하세요.",
        "toolDescription": "구조화된 옵션을 통해 도시의 날씨를 가져옵니다.",
        "cityDescription": "쿼리할 도시입니다. 예: '도쿄' 또는 '뉴욕'."
      }
    },
    "openaiCompatibleLabel": "OpenAI 호환",
    "anthropicCompatibleLabel": "인류 친화적",
    "noTemplateForFormat": "이 형식에 대한 템플릿이 없습니다.",
    "translationFailed": "번역 실패: {error}",
    "pipelineDebugger": "파이프라인 디버거",
    "translationPipeline": "번역 파이프라인",
    "pipelineVisualization": "파이프라인 시각화",
    "pipelineVisualizationHint": "감지 → 번역 → 공급자 호출을 통해 요청이 어떻게 진행되는지 확인하려면 메시지를 보내세요.",
    "chatTesterDescription": "특정 클라이언트 형식으로 메시지를 보내고 번역 파이프라인의 각 단계를 검사합니다.",
    "chatTesterFlow": "클라이언트 요청 → 형식 감지 → OpenAI Intermediate → 공급자 형식 → 응답",
    "clickStepToInspect": "단계를 클릭하면 해당 단계의 데이터를 검사할 수 있습니다.",
    "clientFormat": "클라이언트 형식",
    "provider": "공급자",
    "modelPlaceholder": "모델 이름을 선택하거나 입력하세요...",
    "sendMessageToSeePipeline": "번역 파이프라인을 보려면 메시지를 보내세요.",
    "chatMessageHintPrefix": "귀하의 메시지는 다음과 같은 형식으로 지정됩니다.",
    "chatMessageHintSuffix": "요청하고 파이프라인을 통해 번역되어 선택한 공급자에게 전송됩니다.",
    "youWithFormat": "귀하({format})",
    "assistant": "어시스턴트",
    "typeMessage": "메시지를 입력하세요...",
    "send": "보내기",
    "clientRequest": "클라이언트 요청",
    "clientRequestDescription": "클라이언트가 보내는 요청 본문",
    "formatDetected": "형식이 감지되었습니다.",
    "formatDetectedDescription": "OmniRoute는 요청 구조에서 API 형식을 자동 감지합니다.",
    "openaiIntermediate": "OpenAI 중급",
    "openaiIntermediateDescription": "모든 형식은 먼저 OpenAI 형식(범용 브리지)으로 정규화됩니다.",
    "providerFormat": "공급자 형식",
    "providerFormatDescription": "OpenAI 형식은 공급자의 기본 형식으로 변환됩니다.",
    "providerResponse": "제공자 응답",
    "providerResponseRawDescription": "공급자 API의 원시 응답",
    "providerResponseSseDescription": "공급자 API의 원시 SSE 스트림",
    "unexpectedError": "예상치 못한 오류가 발생했습니다.",
    "error": "오류",
    "errorMessage": "오류: {message}",
    "requestFailed": "요청 실패",
    "noTextExtracted": "(텍스트가 추출되지 않았습니다)",
    "liveMonitorMemoryNote": "이벤트는 메모리에 저장되었다가 다시 시작하면 손실됩니다.",
    "liveMonitorMemoryCapNote": "최대 200개의 이벤트가 유지됩니다.",
    "eventSourcesLabel": "이벤트 소스:",
    "eventSourceTranslatorPage": "• 번역기 페이지(채팅 테스터, 테스트 벤치)",
    "eventSourceMainPipeline": "• 기본 요청 파이프라인(CLI/IDE/API 트래픽)",
    "liveMonitorDescriptionPrefix": "OmniRoute를 통한 API 호출 흐름으로 번역 이벤트를 표시합니다. 이벤트는 메모리 내 버퍼에서 발생합니다(다시 시작 시 재설정). 사용",
    "liveMonitorDescriptionSuffix": ", 또는 외부 API 호출을 통해 이벤트를 생성합니다.",
    "streamTransformer": "스트림 변압기",
    "modeDescriptionStreamTransformer": "응답 변환기를 통해 채팅 완료 SSE 스트림을 실행합니다.",
    "streamTransformerTitle": "응답 스트림 변환기",
    "streamTransformerDescription": "채팅 완료 SSE 스트림을 붙여넣고 OmniRoute의 응답 변환기를 통해 실행한 후 클라이언트에 연결하기 전에 내보낸 response.* 이벤트를 검사합니다.",
    "loadTextSample": "텍스트 샘플 로드",
    "loadToolSample": "도구 호출 샘플 로드",
    "transformToResponses": "응답으로 변환",
    "rawChatSseInput": "원시 채팅 완료 SSE",
    "transformedResponsesSse": "변환된 응답 API SSE",
    "noResultsYet": "아직 결과가 없습니다",
    "transformedEvents": "변형된 이벤트",
    "uniqueEventTypes": "고유한 이벤트 유형",
    "inputLines": "입력 라인",
    "outputLines": "출력 라인",
    "transformedEventTimeline": "변화된 이벤트 타임라인",
    "transformerTimelineHint": "변환기를 실행하여 내보낸 response.output_* 이벤트를 순서대로 검사합니다.",
    "eventType": "이벤트 유형",
    "eventPreview": "미리보기",
    "comboRouted": "콤보 라우팅",
    "uniqueEndpoints": "고유한 엔드포인트",
    "routeDetails": "경로 세부정보",
    "comboBadge": "콤보",
    "routeEndpointLabel": "엔드포인트",
    "routeConnectionLabel": "연결",
    "scenarioVision": "비전(이미지 이해)",
    "scenarioSchemaCoercion": "스키마 강제(구조화된 출력)",
    "techniques": "기술:"
  },
  "usage": {
    "title": "사용법",
    "loggerTab": "로거",
    "proxyTab": "프록시",
    "budgetManagement": "예산 관리",
    "budgetSaved": "예산 한도가 저장되었습니다.",
    "budgetSaveFailed": "예산을 저장하지 못했습니다.",
    "loadingBudgetData": "예산 데이터 로드 중...",
    "noApiKeysTitle": "API 키 없음",
    "noApiKeysDescription": "예산 한도를 설정하려면 먼저 API 키를 추가하세요.",
    "apiKey": "API 키",
    "todaysSpend": "오늘의 지출",
    "thisMonth": "이번 달",
    "setLimits": "한도 설정",
    "dailyLimitUsd": "일일 한도(USD)",
    "monthlyLimitUsd": "월 한도(USD)",
    "warningThresholdPercent": "경고 임계값(%)",
    "dailyLimitPlaceholder": "예를 들어 5.00",
    "monthlyLimitPlaceholder": "예를 들어 50.00",
    "warningThresholdPlaceholder": "80",
    "saveLimits": "저장 한도",
    "budgetOk": "예산 양호 — {remaining} 남음",
    "budgetExceeded": "예산 초과 - 요청이 차단될 수 있음",
    "totalRequests": "총 요청수",
    "noDataYet": "아직 데이터가 없습니다",
    "latency": "대기 시간",
    "latencyP50": "p50",
    "latencyP95": "p95",
    "latencyP99": "p99",
    "promptCache": "프롬프트 캐시",
    "systemHealth": "시스템 상태",
    "entries": "항목",
    "activeCount": "{count} 활성",
    "openCircuitBreakersDetected": "개방형 회로 차단기가 감지되었습니다.",
    "hitRate": "적중률",
    "hitsMisses": "안타/실패",
    "circuitBreakers": "회로 차단기",
    "lockedIPs": "잠긴 IP",
    "lockoutsAutoRefreshHint": "모델별 비율 제한 잠금 • 10초 자동 새로고침",
    "lockedCount": "{count, plural, one {# locked} other {# locked}}",
    "timeLeft": "{time} 남음",
    "howItWorks": "작동 방식",
    "howItWorksSubtitle": "평가를 통해 LLM 응답을 검증하는 방법 알아보기",
    "define": "정의",
    "defineStepDescription": "포함, 정규식 또는 정확한 일치와 같은 전략을 사용하여 입력 프롬프트 및 예상 출력 기준으로 테스트 사례를 만듭니다.",
    "run": "실행",
    "runStepDescription": "OmniRoute를 통해 LLM 엔드포인트에 대해 테스트 케이스를 실행하세요. 각 사례는 실제 API 요청으로 전송됩니다.",
    "evaluate": "평가하다",
    "evaluateStepDescription": "응답은 예상 기준과 비교됩니다. 지연 시간 측정항목과 자세한 피드백을 통해 각 사례의 통과/실패를 확인하세요.",
    "evalsStrategyContainsLabel": "__MISSING__:Contains",
    "evalsStrategyExactLabel": "__MISSING__:Exact Match",
    "evalsStrategyRegexLabel": "__MISSING__:Regex",
    "evalsStrategyCustomLabel": "__MISSING__:Custom Logic",
    "evalsStrategyContainsDescription": "__MISSING__:Checks if the LLM output contains the expected substring.",
    "evalsStrategyExactDescription": "__MISSING__:Checks if the LLM output exactly matches the expected value.",
    "evalsStrategyRegexDescription": "__MISSING__:Validates the LLM output against a regular expression pattern.",
    "evalsStrategyCustomDescription": "__MISSING__:Custom evaluation logic (configured via JSON).",
    "historyColumnSuiteName": "__MISSING__:Suite Name",
    "historyColumnTarget": "__MISSING__:Target",
    "historyColumnPassRate": "__MISSING__:Pass Rate",
    "historyColumnAvgLatencyMs": "__MISSING__:Avg Latency",
    "historyColumnCreatedAt": "__MISSING__:Executed",
    "evalSuites": "평가 제품군",
    "evalSuitesHint": "제품군을 클릭하여 테스트 사례를 본 다음 실행하여 LLM 엔드포인트를 평가하세요.",
    "evalsLoading": "평가 모음 로드 중...",
    "noEvalSuitesFound": "평가 제품군을 찾을 수 없습니다.",
    "noEvalSuitesDescription": "평가 제품군은 API 또는 코드를 통해 정의할 수 있습니다. 포함, 정규식, 정확한 일치 및 사용자 정의 기능과 같은 전략을 사용하여 예상 결과에 대해 모델 출력을 테스트합니다.",
    "columnCase": "케이스",
    "columnStatus": "상태",
    "columnLatency": "대기 시간",
    "columnDetails": "세부정보",
    "columnModel": "모델",
    "columnStrategy": "전략",
    "columnExpected": "예상",
    "statsSuites": "스위트",
    "statsTestCases": "테스트 케이스",
    "statsModels": "모델",
    "statsCoverage": "적용 범위",
    "statsStrategiesCount": "{count} 전략",
    "evaluationStrategies": "평가 전략",
    "modelsUnderTest": "테스트 중인 모델",
    "searchSuitesPlaceholder": "제품군 검색...",
    "passSuffix": "통과",
    "casesCount": "{count, plural, one {# case} other {# cases}}",
    "runEval": "평가 실행",
    "runAllSuites": "모두 실행",
    "runAllRunning": "모두 실행 중...",
    "runAllProgress": "{current}/{total} 실행: {name}",
    "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}",
    "runAllCompleted": "{suites} 제품군 실행 — {passed} 통과, {failed} 실패",
    "runAllCompletedWithFailures": "{completed} 제품군을 실행했습니다. {failedSuites}을(를) 완료하지 못했습니다.",
    "runningProgress": "{current}/{total} 실행 중...",
    "passRate": "합격률",
    "summaryBreakdown": "{passed} 통과 · {failed} 실패 · 총 {total}",
    "passedIconLabel": "✅ 합격",
    "failedIconLabel": "❌ 실패",
    "resultPassed": "합격",
    "resultFailed": "실패",
    "expandResult": "결과 세부정보 펼치기",
    "collapseResult": "결과 세부정보 접기",
    "detailsContains": "포함: \"{term}\"",
    "detailsRegex": "정규식: {pattern}",
    "detailsExpected": "예상: \"{expected}\"",
    "expectedOutputLabel": "예상 출력",
    "noResultsYet": "아직 결과가 없습니다",
    "testCasesCount": "테스트 케이스({count})",
    "noTestCasesDefined": "정의된 테스트 사례가 없습니다.",
    "runEvalHint": "LLM 엔드포인트에 대해 모든 사례를 실행하려면 \"평가 실행\"을 클릭하세요. 각 테스트는 OmniRoute를 통해 실제 요청을 보냅니다.",
    "notifyNoTestCases": "이 제품군에 대해 정의된 테스트 사례가 없습니다.",
    "notifyAllCasesPassed": "{total} 건 모두 통과됨 ✅",
    "notifySomeCasesFailed": "{passed}/{total} 통과, {failed} 실패",
    "notifyEvalRunFailed": "평가 실행 실패",
    "notifyEvalTitle": "평가: {name}",
    "modelEvals": "모델 평가",
    "evalsHeroDescription": "사전 정의된 평가 제품군을 실행하여 LLM 엔드포인트를 테스트하고 검증하세요. 각 제품군에는 OmniRoute를 통해 실제 프롬프트를 보내고 예상 기준과 응답을 비교하는 테스트 사례가 포함되어 있어 회귀를 감지하고, 모델을 비교하고, 공급자 전체의 응답 품질을 보장하는 데 도움이 됩니다.",
    "qualityValidation": "품질 검증",
    "modelComparison": "모델 비교",
    "regressionDetection": "회귀 감지",
    "latencyBenchmarks": "지연 시간 벤치마크",
    "modelLockouts": "모델 잠금",
    "noLockouts": "현재 잠긴 모델이 없습니다.",
    "activeSessions": "활성 세션",
    "noSessions": "활성 세션 없음",
    "sessionsHint": "세션은 프록시를 통한 요청 흐름으로 나타납니다.",
    "sessionsTrackedHint": "요청 핑거프린팅을 통해 추적됨 • 자동 새로고침 5초",
    "session": "세션",
    "age": "나이",
    "requests": "요청사항",
    "connection": "연결",
    "durationMillisecondsShort": "{value}ms",
    "durationSecondsShort": "{value}s",
    "durationMinutesShort": "{value}m",
    "durationHoursShort": "{value}h",
    "reasonSeparator": " - ",
    "notAvailableSymbol": "-",
    "providerLimits": "공급자 한도",
    "noProviders": "연결된 제공업체 없음",
    "connectProvidersForQuota": "OAuth를 통해 공급자에 연결하여 API 할당량 한도 및 사용량을 추적하세요.",
    "accountsCount": "{count, plural, one {# account} other {# accounts}}",
    "filteredFromCount": "({count}에서 필터링됨)",
    "autoRefresh": "자동 새로고침",
    "refreshAll": "모두 새로 고침",
    "loadingQuotas": "로드 중...",
    "account": "계정",
    "modelQuotas": "모델 할당량",
    "lastUsed": "Last Refreshed",
    "actions": "작업",
    "refreshQuota": "새로고침 할당량",
    "today": "오늘",
    "tomorrow": "내일",
    "dayTimeFormat": "{day}, {time}",
    "inDuration": "{duration}에서",
    "notApplicable": "해당 없음",
    "rawPlanWithValue": "기본 계획: {plan}",
    "noPlanFromProvider": "공급자의 계획 없음",
    "noQuotaData": "할당량 데이터 없음",
    "cardExpand": "__MISSING__:Expand",
    "cardCollapse": "__MISSING__:Collapse",
    "moreQuotas": "__MISSING__:+{count} more",
    "ungrouped": "Ungrouped",
    "viewFlat": "Flat",
    "viewByEnvironment": "By Environment",
    "noQuotaDataAvailable": "사용 가능한 할당량 데이터가 없습니다.",
    "noAccountsForTierFilter": "등급 필터에 대한 계정을 찾을 수 없습니다.",
    "tierAll": "모두",
    "tierEnterprise": "기업",
    "tierTeam": "팀",
    "tierBusiness": "비즈니스",
    "tierUltra": "울트라",
    "tierPro": "프로",
    "tierPlus": "플러스",
    "tierFree": "무료",
    "tierLite": "__MISSING__:Lite",
    "tierUnknown": "알 수 없음",
    "statTotal": "__MISSING__:Total",
    "statCritical": "__MISSING__:Critical",
    "statAlert": "__MISSING__:Alert",
    "statHealthy": "__MISSING__:Healthy",
    "filterPurchaseTypeLabel": "__MISSING__:Type",
    "filterTierLabel": "__MISSING__:Tier",
    "purchaseAll": "__MISSING__:All",
    "purchaseOauthSub": "__MISSING__:Subscription",
    "purchaseOauthFree": "__MISSING__:OAuth Free",
    "purchaseApiKey": "__MISSING__:API Key",
    "creditsLabel": "__MISSING__:Credits",
    "creditBalanceHint": "__MISSING__:Remaining balance",
    "unlimitedLabel": "__MISSING__:Unlimited",
    "refreshing": "__MISSING__:Refreshing",
    "resetsIn": "__MISSING__:Resets in",
    "editCutoffs": "컷오프 수정",
    "forceRefresh": "지금 새로고침",
    "suiteBuilderSaveFailed": "Failed to save suite",
    "clone": "클론",
    "exportSuite": "수출",
    "importSuite": "가져오기",
    "suiteExported": "내보낸 제품군",
    "suiteExportFailed": "제품군을 내보내지 못했습니다.",
    "suiteImportReady": "검토를 위해 도구 모음 가져오기 로드됨",
    "suiteImportFailed": "제품군을 가져오지 못했습니다.",
    "suiteImportInvalid": "잘못된 평가 모음 JSON",
    "suiteBuilderCloneSuffix": "복사",
    "suiteBuilderImportedSuite": "수입 제품군",
    "scorecardTitle": "Scorecard",
    "evalApiKey": "API Key",
    "scorecardPassRate": "Pass Rate",
    "targetTypeModel": "Model",
    "actualOutputLabel": "Actual Output",
    "evalTargetHint": "Select a model or combo to evaluate.",
    "suiteBuilderDeleted": "Suite deleted successfully",
    "suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.",
    "nextResetUtc": "Next reset (UTC)",
    "scorecardHint": "Aggregated pass rates across all evaluation suites.",
    "suiteLatestRunsHint": "Most recent evaluation runs for this suite.",
    "saving": "Saving",
    "suiteBuilderCaseModelLabel": "Model (optional)",
    "evalControlsTitle": "Evaluation Controls",
    "suiteBuilderEditTitle": "Edit Eval Suite",
    "suiteBuilderCaseStrategyLabel": "Validation Strategy",
    "notifySelectDifferentCompareTarget": "Please select a different target for comparison",
    "recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.",
    "evalCompareHint": "Optionally compare results against a second target.",
    "suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.",
    "historyEmpty": "No evaluation history yet",
    "suiteBuilderUpdated": "Suite updated successfully",
    "resetInterval": "Reset Interval",
    "suiteBuilderCreateTitle": "Create Eval Suite",
    "activePeriodSpend": "Active Period Spend",
    "evalApiKeyHint": "Select which API key to use for evaluation requests.",
    "evalCompareOptional": "Compare (optional)",
    "suiteBuilderDeleteFailed": "Failed to delete suite",
    "suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...",
    "scorecardCases": "Cases",
    "runCompletedWithScore": "Evaluation completed — {score}% pass rate",
    "suiteBuilderCustomBadge": "Custom",
    "targetSuiteDefaults": "Suite defaults",
    "suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.",
    "suiteBuilderNameLabel": "Suite Name",
    "scorecardSuites": "Suites",
    "evalCompareTarget": "Compare Target",
    "suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini",
    "evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.",
    "recentRunsTitle": "Recent Runs",
    "suiteBuilderCaseSystemPromptLabel": "System Prompt",
    "suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci",
    "suiteBuilderCaseExpectedPlaceholderContains": "예를 들어 데프 피보나치",
    "suiteBuilderCaseExpectedPlaceholderExact": "예상되는 정확한 응답을 붙여넣으세요.",
    "suiteBuilderCaseExpectedPlaceholderRegex": "예를 들어 ^\\\\s*\\\\{.*\\\\}\\\\s*$",
    "suiteBuilderCaseExpectedHintRegex": "슬래시를 줄 바꿈하지 않고 JavaScript 정규 표현식을 사용하십시오.",
    "suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite",
    "suiteBuilderAddCase": "Add Case",
    "cancel": "Cancel",
    "evalTarget": "Target",
    "suiteBuilderCaseNameLabel": "Case Name",
    "weeklyLimitUsd": "Weekly Limit (USD)",
    "suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python",
    "suiteBuilderNameRequired": "Suite name is required",
    "suiteBuilderCaseUserPromptLabel": "User Prompt",
    "daily": "Daily",
    "resultErrorLabel": "Error",
    "suiteBuilderBuiltInBadge": "Built-in",
    "suiteBuilderCaseCardTitle": "Test Case",
    "suiteBuilderDuplicateCase": "중복",
    "weeklyLimitPlaceholder": "e.g. 50.00",
    "suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.",
    "notifyEvalRunFailedWithReason": "Evaluation failed: {reason}",
    "weekly": "Weekly",
    "runEvalRunning": "Running evaluation...",
    "delete": "Delete",
    "resetTimeUtc": "Reset Time (UTC)",
    "evalApiKeyAuto": "Auto (use default)",
    "suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...",
    "targetComparisonTitle": "Target Comparison",
    "save": "Save",
    "suiteBuilderCreated": "Suite created successfully",
    "suiteLatestRuns": "Latest Runs",
    "suiteBuilderCaseExpectedLabel": "Expected Value",
    "historyLatency": "Latency",
    "suiteBuilderCaseTagsPlaceholder": "e.g. coding, python",
    "targetTypeCombo": "Combo",
    "scorecardPassed": "Passed",
    "suiteBuilderCaseTagsLabel": "Tags",
    "suiteBuilderNewSuite": "New Suite",
    "notifyEvalLoadFailed": "Failed to load evaluation data",
    "notConfigured": "Not Configured",
    "suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test",
    "intervalLabel": "Interval",
    "suiteBuilderCreateAction": "Create Suite",
    "suiteBuilderCasesHint": "Each case sends a prompt and validates the response.",
    "suiteBuilderUpdatedAt": "Updated",
    "errorBadge": "Error",
    "suiteBuilderCasesTitle": "Test Cases",
    "edit": "Edit",
    "monthly": "Monthly",
    "suiteBuilderCasesRequired": "At least one test case is required",
    "weeklyLimitSummary": "Weekly budget limit summary",
    "suiteBuilderDescriptionLabel": "Description",
    "targetComparisonHint": "Side-by-side comparison of evaluation results between targets.",
    "compareCompletedWithScore": "Comparison completed — {score}% pass rate",
    "staleQuotaTooltip": "Last refresh failed — showing cached data",
    "quotaThresholdLabel": "분 남음",
    "quotaCutoffsColumnHelp": "남은 할당량이 이 비율 이하로 떨어지면 요청을 중지합니다.",
    "quotaCutoffsButtonDefault": "기본값",
    "quotaCutoffsButtonHelp": "이 계정의 최소 남은 할당량 기준을 편집하세요.",
    "quotaCutoffsButtonDisabled": "이 계정에는 아직 할당량 기간이 없습니다.",
    "quotaCutoffsTitle": "{name}({provider})에 대한 할당량 마감",
    "quotaCutoffsExplainer": "각 할당량 창에 대해 이 계정이 선택되지 않는 최소 남은 할당량 비율을 재정의합니다. 공급자 기본값을 상속하려면 비워 두세요.",
    "quotaCutoffsDefaultHint": "남은 기본 분: {default}%",
    "quotaCutoffsResetAll": "모두 재설정",
    "quotaCutoffsNoWindows": "이 계정에는 아직 할당량 기간이 없습니다.",
    "quotaThresholdInvalid": "0부터 100까지의 정수를 입력하세요.",
    "budgetKpiToday": "오늘",
    "budgetKpiThisMonth": "이번 달",
    "budgetKpiProjEom": "EOM 프로젝트",
    "budgetKpiBlocked": "차단됨",
    "budgetKpiAtRisk": "위험에 처하다",
    "budgetKpiActiveKeys": "활성 키",
    "budgetSearchKeysPlaceholder": "검색 키...",
    "budgetSortPctUsed": "정렬: 사용률 ↓",
    "budgetSortTodayDollar": "정렬: 오늘 $ ↓",
    "budgetSortMonthDollar": "정렬: 월 $ ↓",
    "budgetSortNameAZ": "정렬: 이름(A~Z)",
    "budgetColDailyLim": "데일리림",
    "budgetColMonthlyLim": "월간 리미트",
    "budgetColUsedPct": "사용률(%)",
    "budgetLoading": "로드 중…",
    "budgetNoKeysMatch": "키 일치 필터가 없습니다.",
    "budgetLinearExtrapolation": "선형 외삽",
    "budgetThisMonthSoFar": "이번달 현재까지",
    "budgetProjectedEndOfMonth": "이달말 예정",
    "budgetByProvider": "공급자별",
    "budgetDailyDollar": "일일 $",
    "budgetWeeklyDollar": "주간 $",
    "budgetMonthlyDollar": "월 $",
    "budgetWarnAtPct": "%로 경고",
    "quotaAlerts": "할당량 알림",
    "quotaTableRefreshing": "⟳ 상쾌하다...",
    "noSpendLast30Days": "지난 30일 동안 지출이 없습니다.",
    "updatedShort": "__MISSING__:Updated",
    "lastRefreshed": "__MISSING__:Last refreshed",
    "providerQuota": "__MISSING__:Provider Quota",
    "providerQuotaHomeHint": "__MISSING__:Live status across connected accounts"
  },
  "modals": {
    "waitingAuth": "승인을 기다리는 중",
    "verificationUrl": "확인 URL",
    "yourCode": "귀하의 코드",
    "remoteAccess": "원격 액세스:",
    "connectedSuccess": "성공적으로 연결되었습니다!",
    "connectionFailed": "연결 실패",
    "chooseAuthMethod": "인증 방법을 선택하세요:",
    "awsBuilderId": "AWS 빌더 ID",
    "awsIamIdentity": "AWS IAM 자격 증명 센터",
    "googleAccount": "구글 계정",
    "githubAccount": "GitHub 계정",
    "importToken": "토큰 가져오기",
    "pasteToken": "Kiro IDE에서 새로 고침 토큰을 붙여넣습니다.",
    "awsRegion": "AWS 지역",
    "autoDetecting": "토큰 자동 감지 중...",
    "readingFromCache": "AWS SSO 캐시에서 읽기",
    "readingFromCursor": "커서 IDE 데이터베이스에서 읽기",
    "initializing": "초기화 중...",
    "pricingConfig": "가격 구성",
    "loadingPricing": "가격 데이터 로드 중...",
    "pricingRatesFormat": "가격 요율 형식",
    "noPricingData": "사용 가능한 가격 데이터가 없습니다.",
    "noModelsFound": "모델을 찾을 수 없습니다."
  },
  "loggers": {
    "allProviders": "모든 제공자",
    "allModels": "모든 모델",
    "allAccounts": "모든 계정",
    "allApiKeys": "모든 API 키",
    "allTypes": "모든 유형",
    "allLevels": "모든 레벨",
    "modelAZ": "모델 A-Z",
    "modelZA": "모델 Z-A",
    "loadingLogs": "로그 로드 중...",
    "loadingProxyLogs": "프록시 로그 로드 중...",
    "noLogEntries": "로그 항목을 찾을 수 없습니다.",
    "noPayloadData": "이 로그 항목에 사용할 수 있는 페이로드 데이터가 없습니다.",
    "proxyEvent": "프록시 이벤트",
    "proxy": "프록시",
    "level": "레벨",
    "directNative": "직접(네이티브)",
    "combo": "콤보",
    "inputTokens": "나:",
    "outputTokens": "아:"
  },
  "stats": {
    "usageOverview": "사용법 개요",
    "outputTokens": "출력 토큰",
    "totalCost": "총 비용",
    "usageByModel": "모델별 사용량",
    "usageByAccount": "계정별 사용량",
    "failedToLoad": "사용 통계를 로드하지 못했습니다.",
    "tokenHealth": "토큰 상태",
    "totalOAuth": "총 OAuth",
    "healthy": "건강하다",
    "warning": "경고",
    "errored": "오류 발생",
    "lastCheck": "마지막 확인",
    "noData": "데이터 없음",
    "share": "공유",
    "unableToLoad": "시스템 측정항목을 로드할 수 없습니다.",
    "product": "제품",
    "resources": "자원",
    "company": "회사"
  },
  "auth": {
    "welcome": "환영합니다",
    "signIn": "로그인",
    "enterPassword": "계속하려면 비밀번호를 입력하세요",
    "password": "비밀번호",
    "unifiedProxy": "통합 AI API 프록시",
    "unifiedAiApiProxy": "통합 AI API 프록시",
    "unifiedAiApiProxyDesc": "단일 엔드포인트를 통해 여러 AI 공급자에게 요청을 라우팅합니다. 로드 밸런싱, 장애 조치 및 사용 추적 기능이 내장되어 있습니다.",
    "passwordNotEnabled": "비밀번호 보호가 활성화되지 않았습니다.",
    "loading": "로드 중...",
    "invalidPassword": "잘못된 비밀번호",
    "errorOccurredRetry": "오류가 발생했습니다. 다시 시도해 주세요.",
    "configureInstance": "OmniRoute 인스턴스를 구성해 보겠습니다.",
    "runOnboardingWizard": "온보딩 마법사를 실행하여 비밀번호를 설정하고 첫 번째 AI 공급자를 연결하세요.",
    "startOnboarding": "온보딩 시작",
    "secureYourInstance": "인스턴스 보안",
    "setPasswordDescription": "대시보드를 보호하고 무단 액세스로부터 API 엔드포인트를 보호하기 위해 비밀번호를 설정하세요.",
    "configurePassword": "비밀번호 구성",
    "continue": "계속",
    "windowWillClose": "이 창은 자동으로 닫힙니다...",
    "closeTabNow": "이제 이 탭을 닫아도 됩니다.",
    "copyUrlManual": "주소 표시줄에서 URL을 복사하여 애플리케이션에 붙여넣으세요.",
    "accessDeniedDescription": "이 리소스에 액세스할 수 있는 권한이 없습니다. API 키를 확인하거나 관리자에게 문의하세요.",
    "goToDashboard": "대시보드로 이동",
    "featureMultiProviderTitle": "다중 공급자",
    "featureMultiProviderDesc": "OpenAI, Anthropic, Google 등",
    "featureLoadBalancingTitle": "로드 밸런싱",
    "featureLoadBalancingDesc": "요청을 지능적으로 분산",
    "featureUsageTrackingTitle": "사용량 추적",
    "featureUsageTrackingDesc": "비용 및 토큰 모니터링",
    "resetPassword": "비밀번호 재설정",
    "resetDescription": "대시보드에 대한 액세스를 복구하는 방법을 선택하세요.",
    "stopServer": "OmniRoute 서버 중지",
    "processing": "처리 중...",
    "pleaseWait": "승인이 완료되는 동안 잠시 기다려 주십시오.",
    "authSuccess": "승인 성공!",
    "copyUrl": "이 URL 복사",
    "accessDenied": "액세스가 거부되었습니다.",
    "methodCliTitle": "방법 1: CLI 재설정",
    "methodCliDescription": "OmniRoute가 실행 중인 서버에서 다음 명령을 실행합니다.",
    "methodCliHint": "그러면 새 비밀번호를 설정하라는 메시지가 표시됩니다. 먼저 서버를 중지해야 합니다.",
    "methodManualTitle": "방법 2: 수동 재설정",
    "methodManualDescription": "데이터베이스에서 비밀번호를 삭제하고 시작 시 새 비밀번호를 설정하세요.",
    "setPasswordInYour": "새 비밀번호를 설정하세요.",
    "fileLabelSuffix": "파일:",
    "newPasswordPlaceholder": "your_new_password",
    "deleteSettingsFile": "삭제",
    "orRemovePasswordHashField": "또는 PasswordHash 필드를 제거하세요.",
    "restartServerWithNewPassword": "서버를 다시 시작하세요. 새 비밀번호가 사용됩니다.",
    "backToLogin": "로그인으로 돌아가기",
    "forgotPassword": "비밀번호를 잊으셨나요?",
    "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)",
    "Authorization": "승인",
    "Content-Disposition": "컨텐츠 처리",
    "waitingForAuthorization": "Waiting for authorization...",
    "waitingForGoogleAuthorization": "Waiting for Google authorization...",
    "waitingForOpenAIAuthorization": "Waiting for OpenAI authorization...",
    "waitingForAntigravityAuthorization": "Waiting for Antigravity authorization...",
    "waitingForQoderAuthorization": "Waiting for Qoder authorization...",
    "exchangingCodeForTokens": "Exchanging code for tokens...",
    "nodeIncompatibleTitle": "Incompatible Node.js Version",
    "nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.",
    "nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release",
    "nodeIncompatibleHint": "OmniRoute requires Node.js 20.20.2+ (20.x LTS), 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended."
  },
  "landing": {
    "brandName": "옴니루트",
    "navigateHome": "집으로 이동",
    "toggleMenu": "토글 메뉴",
    "featuresLink": "특징",
    "docsLink": "문서",
    "github": "GitHub",
    "versionLive": "v1.0이 출시되었습니다",
    "oneEndpoint": "하나의 엔드포인트",
    "allProviders": "모든 AI 제공업체",
    "heroDescription": "웹 대시보드가 ​​포함된 AI 엔드포인트 프록시 - CLIProxyAPI의 JavaScript 포트입니다. Claude Code, OpenAI Codex, Cline, RooCode 및 기타 CLI 도구와 원활하게 작동합니다.",
    "getStarted": "시작하기",
    "viewOnGithub": "GitHub에서 보기",
    "powerfulFeatures": "강력한 기능",
    "featuresSubtitle": "AI 인프라를 한 곳에서 관리하는 데 필요한 모든 것이 확장 가능하도록 구축되었습니다.",
    "featureUnifiedEndpointTitle": "통합 엔드포인트",
    "featureUnifiedEndpointDesc": "단일 표준 API URL을 통해 모든 공급자에 액세스합니다.",
    "featureEasySetupTitle": "쉬운 설정",
    "featureEasySetupDesc": "npx 명령을 사용하여 몇 분 만에 시작하고 실행할 수 있습니다.",
    "featureModelFallbackTitle": "모델 대체",
    "featureModelFallbackDesc": "장애가 발생하거나 대기 시간이 긴 경우 공급자를 자동으로 전환합니다.",
    "featureUsageTrackingTitle": "사용량 추적",
    "featureUsageTrackingDesc": "모든 모델에 대한 자세한 분석 및 비용 모니터링.",
    "featureOAuthApiKeysTitle": "OAuth 및 API 키",
    "featureOAuthApiKeysDesc": "하나의 저장소에서 자격 증명을 안전하게 관리하세요.",
    "featureCloudSyncTitle": "클라우드 동기화",
    "featureCloudSyncDesc": "여러 장치에서 구성을 즉시 동기화하세요.",
    "featureCliSupportTitle": "CLI 지원",
    "featureCliSupportDesc": "Claude Code, Codex, Cline, Cursor 등과 함께 작동합니다.",
    "featureDashboardTitle": "대시보드",
    "featureDashboardDesc": "실시간 트래픽 분석을 위한 시각적 대시보드입니다.",
    "howItWorks": "OmniRoute 작동 방식",
    "howItWorksDescription": "데이터는 귀하의 애플리케이션에서 당사의 지능형 라우팅 계층을 통해 작업에 가장 적합한 제공업체로 원활하게 흐릅니다.",
    "howItWorksStep1Title": "1. CLI 및 SDK",
    "howItWorksStep1Description": "귀하의 요청은 귀하가 선호하는 도구 또는 당사의 통합 SDK에서 시작됩니다. 기본 URL만 변경하면 됩니다.",
    "howItWorksStep2Title": "2. 옴니루트 허브",
    "howItWorksStep2Description": "우리 엔진은 프롬프트를 분석하고 공급자 상태를 확인하며 지연 시간이나 비용이 가장 낮은 경로를 지정합니다.",
    "howItWorksStep3Title": "3. AI 제공업체",
    "howItWorksStep3Description": "요청은 OpenAI, Anthropic, Gemini 등이 즉시 이행합니다.",
    "getStartedIn30Seconds": "30초 안에 시작하세요",
    "getStartedDescription": "OmniRoute를 설치하고, 웹 대시보드를 통해 공급자를 구성하고, AI 요청 라우팅을 시작하세요.",
    "installOmniRoute": "OmniRoute 설치",
    "installStepDescription": "npx 명령을 실행하여 서버를 즉시 시작하세요.",
    "openDashboard": "대시보드 열기",
    "openDashboardStepDescription": "웹 인터페이스를 통해 공급자 및 API 키 구성",
    "routeRequests": "라우팅 요청",
    "routeRequestsStepDescription": "CLI 도구를 {endpoint}에 지정하세요.",
    "terminal": "터미널",
    "copy": "복사",
    "copied": "✓ 복사됨",
    "startingOmniRoute": "OmniRoute 시작 중...",
    "serverRunningOnLabel": "실행 중인 서버",
    "dashboardLabel": "대시보드",
    "readyToRoute": "라우팅 준비 완료! ✓",
    "configureProvidersNote": "📝 대시보드에서 공급자를 구성하거나 환경 변수를 사용하세요.",
    "dataLocation": "데이터 위치:",
    "dataLocationMacLinux": " 맥OS/리눅스:",
    "dataLocationWindows": " 윈도우:",
    "product": "제품",
    "dashboardLink": "대시보드",
    "changelog": "변경 내역",
    "resources": "자원",
    "documentation": "문서",
    "npm": "NPM",
    "legal": "법적",
    "mitLicense": "MIT 라이센스",
    "footerTagline": "AI 생성을 위한 통합 엔드포인트입니다. AI 공급자를 쉽게 연결하고 라우팅하고 관리하세요.",
    "copyright": "© {year} OmniRoute. 모든 권리 보유.",
    "flowToolClaudeCode": "클로드 코드",
    "flowToolOpenAICodex": "오픈AI 코덱스",
    "flowToolCline": "클라인",
    "flowToolCursor": "커서",
    "flowProviderOpenAI": "오픈AI",
    "flowProviderAnthropic": "인류학",
    "flowProviderGemini": "쌍둥이자리",
    "flowProviderGithubCopilot": "GitHub 코파일럿",
    "interactiveDiagram": "데스크탑에 표시되는 대화형 다이어그램",
    "ctaTitle": "AI 인프라를 단순화할 준비가 되셨나요?",
    "ctaDescription": "OmniRoute를 통해 AI 통합을 간소화하는 개발자와 함께하세요. 오픈 소스이며 무료로 시작할 수 있습니다.",
    "startFree": "무료로 시작하세요",
    "readDocumentation": "문서 읽기"
  },
  "docs": {
    "title": "문서",
    "quickStart": "빠른 시작",
    "deploymentGuides": "배포 가이드",
    "features": "특징",
    "supportedProviders": "지원되는 제공업체",
    "supportedProvidersToc": "공급자",
    "commonUseCases": "일반적인 사용 사례",
    "clientCompatibility": "클라이언트 호환성",
    "protocolsToc": "Protocols",
    "apiReference": "API 참조",
    "managementApiReference": "Management API Reference",
    "managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.",
    "method": "방법",
    "path": "경로",
    "notes": "메모",
    "modelPrefixes": "모델 접두어",
    "prefix": "접두사",
    "troubleshooting": "문제 해결",
    "supportsChat": "채팅 및 응답 엔드포인트를 모두 지원합니다.",
    "oauthAutoRefresh": "자동 토큰 새로 고침을 통한 OAuth 연결.",
    "fullStreaming": "모든 모델에 대한 전체 스트리밍 지원.",
    "docsLabel": "문서",
    "docsHeroDescription": "다중 공급자 LLM을 위한 AI 게이트웨이. OpenAI, Anthropic, Gemini, GitHub Copilot, Claude Code, Cursor 및 20개 이상의 공급자를 위한 하나의 엔드포인트입니다.",
    "openDashboard": "대시보드 열기",
    "endpointPage": "엔드포인트 페이지",
    "github": "GitHub",
    "reportIssue": "문제 보고",
    "onThisPage": "이 페이지에서",
    "documentationVersion": "문서 - v{version}",
    "quickStartStep1Title": "1. 설치 및 실행",
    "quickStartStep1Prefix": "실행",
    "quickStartStep1Middle": "또는 GitHub에서 복제하여 실행하세요.",
    "quickStartStep2Title": "2. API 키 생성",
    "quickStartStep2Text": "엔드포인트 -> 등록된 키로 이동합니다. 환경당 하나의 키를 생성합니다.",
    "quickStartStep3Title": "3. 공급자 연결",
    "quickStartStep3Text": "OAuth 로그인, API 키 또는 무료 계층 자동 연결을 통해 공급자 계정을 추가하세요.",
    "quickStartStep4Title": "4. 클라이언트 기본 URL 설정",
    "quickStartStep4Prefix": "IDE 또는 API 클라이언트를 다음으로 지정하세요.",
    "quickStartStep4Suffix": "예를 들어 공급자 접두사를 사용하십시오.",
    "deploySetupTitle": "설정 가이드",
    "deploySetupText": "OmniRoute에 대한 단계별 설치, 환경 구성 및 첫 실행 연습입니다.",
    "deployElectronTitle": "전자 데스크탑",
    "deployElectronText": "Windows, macOS 및 Linux에서 기본 데스크톱 애플리케이션으로 OmniRoute를 실행하세요.",
    "deployDockerTitle": "도커",
    "deployDockerText": "Docker Compose를 사용한 컨테이너화된 배포 프로덕션 스택과 Kubernetes를 위한 준비가 되어 있습니다.",
    "deployVmTitle": "가상 머신",
    "deployVmText": "모든 Linux VM의 자체 호스트. 시스템 단위, 로그 회전 및 백업 도구가 포함됩니다.",
    "deployFlyTitle": "Fly.io",
    "deployFlyText": "하나의 fly.toml과 단일 배포 명령을 사용하여 Fly.io 엣지 런타임에 배포하세요.",
    "deployPwaTitle": "PWA",
    "deployPwaText": "Android, iOS 및 데스크톱 브라우저에 OmniRoute를 프로그레시브 웹 앱으로 설치하세요.",
    "deployTermuxTitle": "Termux (Android)",
    "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.",
    "featureRoutingTitle": "다중 공급자 라우팅",
    "featureRoutingText": "단일 OpenAI 호환 엔드포인트를 통해 30개 이상의 AI 공급자에게 요청을 라우팅합니다. 채팅, 응답, 오디오 및 이미지 API를 지원합니다.",
    "featureCombosTitle": "콤보와 밸런싱",
    "featureCombosText": "대체 체인 및 균형 조정 전략(라운드 로빈, 우선 순위, 무작위, 최소 사용, 비용 최적화)을 사용하여 모델 콤보를 만듭니다.",
    "featureUsageTitle": "사용량 및 비용 추적",
    "featureUsageText": "실시간 토큰 계산, 공급자/모델별 비용 계산, API 키 및 계정별 세부 사용량 분석.",
    "featureAnalyticsTitle": "분석 대시보드",
    "featureAnalyticsText": "시간 경과에 따른 요청, 토큰, 오류, 대기 시간, 비용 및 모델 인기도에 대한 차트가 포함된 시각적 분석입니다.",
    "featureHealthTitle": "건강 모니터링",
    "featureHealthText": "실시간 상태 확인, 공급자 상태, 회로 차단기 상태 및 지수 백오프를 통한 자동 속도 제한 감지.",
    "featureCliTitle": "CLI 도구",
    "featureCliText": "IDE 구성을 관리하고, 백업을 내보내거나 가져오고, 코덱스 프로필을 검색하고, 대시보드에서 설정을 구성하세요.",
    "featureSecurityTitle": "보안 및 정책",
    "featureSecurityText": "API 키 인증, IP 필터링, 프롬프트 주입 가드, 도메인 정책, 세션 관리 및 감사 로깅.",
    "featureCloudSyncTitle": "클라우드 동기화",
    "featureCloudSyncText": "암호화된 자격 증명 및 자동 장애 조치를 통해 원격 액세스를 위해 구성을 Cloudflare Workers에 동기화하세요.",
    "providersAcrossConnectionTypes": "세 가지 연결 유형에 걸쳐 {count} 공급자.",
    "manageProviders": "공급자 관리",
    "providersCount": "{count} 제공업체",
    "providerTypeFree": "프리 티어",
    "providerTypeOAuth": "OAuth",
    "providerTypeApiKey": "API 키",
    "useCaseSingleEndpointTitle": "많은 공급자를 위한 단일 엔드포인트",
    "useCaseSingleEndpointText": "클라이언트를 하나의 기본 URL로 지정하고 모델 접두사(예: gh/, cc/, kr/, openai/)로 라우팅합니다.",
    "useCaseFallbackTitle": "콤보를 사용한 폴백 및 모델 전환",
    "useCaseFallbackText": "대시보드에서 콤보 모델을 생성하고 공급자가 내부적으로 순환하는 동안 클라이언트 구성을 안정적으로 유지하세요.",
    "useCaseUsageVisibilityTitle": "사용량, 비용 및 디버그 가시성",
    "useCaseUsageVisibilityText": "사용량 및 분석 탭에서 공급자, 계정, API 키별로 토큰과 비용을 추적하세요.",
    "clientCherryStudioTitle": "체리 스튜디오",
    "baseUrlLabel": "기본 URL",
    "chatEndpointLabel": "채팅 엔드포인트",
    "modelRecommendationLabel": "모델 권장사항: 명시적 접두사",
    "clientCodexTitle": "Codex / GitHub Copilot 모델",
    "clientCodexBullet1": "다음과 함께 모델 ID를 사용하세요.",
    "clientCodexBullet2": "Codex 계열 모델은 다음으로 자동 라우팅됩니다.",
    "clientCodexBullet3": "비 Codex 모델은 계속됩니다",
    "clientCursorTitle": "커서 IDE",
    "clientCursorBullet1": "사용",
    "clientCursorBullet1Suffix": "커서 모델의 접두사.",
    "clientCursorBullet2": "OAuth 연결 - 공급자 페이지에서 로그인합니다.",
    "clientClaudeTitle": "클로드 코드 / 반중력",
    "clientClaudeBullet1Prefix": "사용",
    "clientClaudeBullet1Middle": "(클로드) 또는",
    "clientClaudeBullet1Suffix": "(반중력) 접두사.",
    "clientWindsurfTitle": "윈드서핑",
    "clientWindsurfBullet1": "OmniRoute를 OpenAI 호환 기본 URL로 사용하고 결정적 라우팅을 위해 명시적인 공급자 접두사를 유지하세요.",
    "clientWindsurfBullet2": "일반 트래픽의 경우 모델이 '/v1/chat/completions'을 가리키고 Codex 스타일 흐름의 경우 '/v1/responses'를 유지합니다.",
    "clientWindsurfBullet3": "미리 만들어진 Windsurf 구성 가이드를 보려면 대시보드 -> CLI 도구를 사용하세요.",
    "clientClineTitle": "클라인",
    "clientClineBullet1": "Cline은 명시적인 공급자/모델 접두사와 함께 가장 잘 작동하므로 라우터는 백엔드를 추측할 필요가 없습니다.",
    "clientClineBullet2": "일반 모델에는 `/v1/chat/completions`를 사용하고 여러 계정에서 동일한 OmniRoute 기본 URL을 재사용합니다.",
    "clientClineBullet3": "Cline 런타임 문제를 디버깅하기 전에 공급자 대시보드를 사용하여 OAuth/API 키를 검증하세요.",
    "clientKimiTitle": "키미코딩",
    "clientKimiBullet1": "아래에서 계정이나 공급자 콤보를 순환하면서 OmniRoute를 안정적인 기본 URL로 사용하세요.",
    "clientKimiBullet2": "대체 및 감사 추적이 명시적으로 유지되도록 코딩 흐름에서 접두사가 붙은 모델을 선호합니다.",
    "clientKimiBullet3": "도구를 사용하는 클라이언트에 대해 기본 응답 스타일 라우팅을 원할 경우 `/v1/responses`를 사용하세요.",
    "protocolsTitle": "프로토콜: MCP 및 A2A",
    "protocolsDescription": "OmniRoute exposes two operational protocols in addition to OpenAI-compatible APIs: MCP for tool execution and A2A for agent-to-agent workflows.",
    "protocolMcpTitle": "MCP (Model Context Protocol)",
    "protocolMcpDesc": "Use MCP over stdio to let clients discover and call OmniRoute tools with audit visibility.",
    "protocolMcpStep1": "Start MCP transport with `omniroute --mcp`.",
    "protocolMcpStep2": "Point your MCP client to stdio transport.",
    "protocolMcpStep3": "Call `omniroute_get_health` and `omniroute_list_combos` to validate connectivity.",
    "protocolA2aTitle": "A2A (Agent2Agent)",
    "protocolA2aDesc": "Use A2A JSON-RPC to submit tasks synchronously or via SSE streaming.",
    "protocolA2aStep1": "Read `/.well-known/agent.json` for agent discovery.",
    "protocolA2aStep2": "Send `message/send` or `message/stream` requests to `POST /a2a`.",
    "protocolA2aStep3": "Manage task lifecycle with `tasks/get` and `tasks/cancel`.",
    "protocolTroubleshootingTitle": "Protocol Troubleshooting",
    "protocolTroubleshooting1": "If MCP status is offline, verify the stdio process is running and heartbeat file is updating.",
    "protocolTroubleshooting2": "If A2A tasks stay in `working`, inspect `/api/a2a/tasks/:id` and stream events for terminal state.",
    "protocolTroubleshooting3": "Use `/dashboard/mcp` and `/dashboard/a2a` for operational controls and audit visibility.",
    "endpointChatNote": "OpenAI 호환 채팅 엔드포인트(기본값)",
    "endpointResponsesNote": "응답 API 엔드포인트(Codex, o-시리즈).",
    "endpointModelsNote": "연결된 모든 공급자의 모델 카탈로그입니다.",
    "endpointAudioNote": "오디오 전사(Deepgram, AssemblyAI).",
    "endpointSpeechNote": "음성 합성 (ElevenLabs, OpenAI TTS).",
    "endpointEmbeddingsNote": "텍스트 임베딩 생성 (OpenAI, Cohere, Voyage).",
    "endpointImagesNote": "이미지 생성(NanoBanana).",
    "endpointRewriteChatNote": "/v1이 없는 클라이언트용 도우미를 다시 작성합니다.",
    "endpointRewriteResponsesNote": "/v1 없이 응답에 대한 도우미를 다시 작성합니다.",
    "endpointRewriteModelsNote": "/v1 없이 모델 검색을 위한 도우미를 다시 작성합니다.",
    "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.",
    "mgmtProxiesBulkAssignNote": "Assign or clear one proxy across many scope IDs in one request.",
    "mgmtAssignmentsListNote": "List proxy assignments by scope, scope_id, or proxy_id.",
    "mgmtAssignmentsUpdateNote": "Assign or clear proxy for global/provider/account/combo scope.",
    "mgmtLegacyMigrationNote": "Import legacy proxyConfig maps into registry assignments.",
    "modelPrefixesDescriptionStart": "특정 공급자로 라우팅하려면 모델 이름 앞에 공급자 접두사를 사용하십시오. 예:",
    "modelPrefixesDescriptionEnd": "GitHub Copilot으로 경로를 지정합니다.",
    "provider": "공급자",
    "type": "유형",
    "troubleshootingModelRouting": "클라이언트가 모델 라우팅에 실패하면 명시적인 공급자/모델을 사용하십시오(예: gh/gpt-5.1-codex).",
    "troubleshootingAmbiguousModels": "모호한 모델 오류가 발생하는 경우 기본 모델 ID 대신 공급자 접두사를 선택하세요.",
    "troubleshootingCodexFamily": "GitHub Codex 계열 모델의 경우 모델을 gh/codex-model로 유지합니다. 라우터는 /responses를 자동으로 선택합니다.",
    "troubleshootingTestConnection": "IDE 또는 외부 클라이언트에서 테스트하기 전에 대시보드 > 공급자 > 연결 테스트를 사용하세요.",
    "troubleshootingCircuitBreaker": "공급자가 회로 차단기를 열었다고 표시하는 경우 대기 시간을 기다리거나 상태 페이지에서 자세한 내용을 확인하세요.",
    "troubleshootingOAuth": "OAuth 공급자의 경우 토큰이 만료되면 다시 인증하세요. 공급자 카드 상태 표시기를 확인하십시오.",
    "endpointCompletionsNote": "텍스트 생성을 위한 레거시 완성 엔드포인트입니다.",
    "endpointModerationsNote": "콘텐츠 조정 및 안전 분류.",
    "endpointRerankNote": "검색 증강 생성을 위한 문서 순위 재지정(Cohere, Jina).",
    "endpointSearchNote": "5개 제공업체(Serper, Brave, Exa, Tavily, Perplexity)를 통한 웹 검색.",
    "endpointSearchAnalyticsNote": "검색 요청에 대한 분석 및 측정항목입니다.",
    "endpointVideoNote": "비디오 생성(ComfyUI, SD WebUI 워크플로우)",
    "endpointMusicNote": "ComfyUI 워크플로우를 통한 음악 생성.",
    "endpointMessagesNote": "인류의 기본 메시지 끝점.",
    "endpointCountTokensNote": "특정 메시지 페이로드에 대한 토큰을 계산합니다.",
    "endpointFilesNote": "다중 모드 입력을 위한 파일 업로드.",
    "endpointBatchesNote": "대량 API 요청에 대한 일괄 처리.",
    "endpointWsNote": "실시간 스트리밍을 위한 WebSocket 엔드포인트입니다.",
    "mgmtProvidersListNote": "등록된 모든 공급자 연결을 나열합니다.",
    "mgmtProvidersCreateNote": "새 공급자 연결을 만듭니다.",
    "mgmtProvidersUpdateNote": "기존 공급자 연결을 업데이트합니다.",
    "mgmtProvidersDeleteNote": "공급자 연결을 삭제합니다.",
    "mgmtProvidersTestNote": "공급자에 대한 연결 및 인증을 테스트합니다.",
    "mgmtProvidersModelsNote": "특정 제공업체에 사용 가능한 모델을 나열합니다.",
    "mgmtSettingsGetNote": "현재 애플리케이션 설정을 검색합니다.",
    "mgmtSettingsUpdateNote": "애플리케이션 설정을 업데이트합니다.",
    "mgmtPayloadRulesGetNote": "페이로드 변환 규칙을 가져옵니다.",
    "mgmtPayloadRulesUpdateNote": "페이로드 변환 규칙을 업데이트합니다.",
    "mcpToolsTitle": "MCP 도구",
    "mcpToolsDescription": "OmniRoute는 에이전트 오케스트레이션을 위해 모델 컨텍스트 프로토콜을 통해 {count} 도구를 노출합니다.",
    "mcpToolsCount": "{count} 도구",
    "mcpToolsToc": "MCP 도구",
    "mcpToolsRoutingTitle": "라우팅 및 검색",
    "mcpToolsRoutingDesc": "상태 확인, 콤보 관리, 할당량 모니터링, 비용 보고 및 모델 카탈로그 액세스.",
    "mcpToolsOperationsTitle": "운영 및 전략",
    "mcpToolsOperationsDesc": "경로 시뮬레이션, 예산 경비, 전략 전환, 탄력성 프로필 및 공급자 지표.",
    "mcpToolsCacheTitle": "캐시 관리",
    "mcpToolsCacheDesc": "캐시 통계를 보고 의미 체계 또는 서명 캐시를 플러시합니다.",
    "mcpToolsCompressionTitle": "압축 엔진",
    "mcpToolsCompressionDesc": "RTK/Brotli 압축을 구성하고, 엔진을 교체하고, 콤보별로 압축 분석을 검사합니다.",
    "mcpToolsOneProxyTitle": "1프록시/터널",
    "mcpToolsOneProxyDesc": "아웃바운드 프록시를 관리하고, 주거용 IP를 교체하고, 프록시 상태를 검사합니다.",
    "mcpToolsMemoryTitle": "메모리",
    "mcpToolsMemoryDesc": "지속적인 대화형 메모리 항목을 검색하고 추가하고 지웁니다.",
    "mcpToolsSkillsTitle": "기술",
    "mcpToolsSkillsDesc": "사용자 정의 기술 실행을 나열, 활성화, 실행 및 모니터링합니다.",
    "featureAutoComboTitle": "자동 콤보",
    "featureAutoComboText": "연결된 공급자, 사용 패턴 및 모델 기능을 기반으로 최적화된 콤보를 자동으로 생성합니다.",
    "featureSearchTitle": "웹 검색",
    "featureSearchText": "분석 및 비용 추적을 포함하여 5개 제공업체(Serper, Brave, Exa, Tavily, Perplexity)와의 통합 웹 검색입니다.",
    "featureMemoryTitle": "메모리 시스템",
    "featureMemoryText": "세션 전반에 걸쳐 추출, 주입, 검색 및 요약 기능을 갖춘 지속적인 대화 메모리입니다.",
    "featureSkillsTitle": "기술 프레임워크",
    "featureSkillsText": "기본 제공 및 사용자 정의 기술, 샌드박스 실행, 요청 차단 및 컨텍스트 주입을 갖춘 확장 가능한 기술 시스템입니다.",
    "featureAcpTitle": "에이전트 통신",
    "featureAcpText": "에이전트 간 워크플로 및 도구 오케스트레이션을 관리하기 위한 ACP(에이전트 통신 프로토콜) 레지스트리입니다.",
    "protocolAcpTitle": "ACP(에이전트 통신)",
    "protocolAcpDesc": "에이전트 간 통신 및 도구 공유를 위해 ACP 레지스트리를 통해 에이전트를 등록하고 관리합니다.",
    "protocolAcpStep1": "등록된 ACP 에이전트를 보려면 대시보드 → 에이전트로 이동하세요.",
    "protocolAcpStep2": "기능 및 엔드포인트 구성을 사용하여 새 에이전트를 등록합니다.",
    "protocolAcpStep3": "CLI 도구를 사용하여 에이전트 통신 채널을 구성합니다."
  },
  "legal": {
    "privacyPolicy": "개인 정보 보호 정책",
    "termsOfService": "서비스 약관",
    "providerConfigurations": "공급자 구성",
    "apiKeys": "API 키",
    "usageLogs": "사용 로그",
    "applicationSettings": "애플리케이션 설정",
    "viewExportAnalytics": "사용량 분석 보기 및 내보내기",
    "clearHistory": "언제든지 사용 내역 지우기",
    "configureRetention": "로그 보존 정책 구성",
    "backupRestore": "데이터베이스 백업 및 복원",
    "privacyMetadataTitle": "개인정보 보호정책 | 옴니루트",
    "privacyMetadataDescription": "OmniRoute AI API 프록시 라우터에 대한 개인정보 보호정책.",
    "termsMetadataTitle": "서비스 약관 | 옴니루트",
    "termsMetadataDescription": "OmniRoute AI API 프록시 라우터에 대한 서비스 약관입니다.",
    "backToHome": "집으로 돌아가기",
    "lastUpdated": "최종 업데이트: {date}",
    "policyLastUpdatedDate": "2026년 2월 13일",
    "listSeparator": "-",
    "questionsVisit": "질문이 있으신가요? 우리를 방문하세요",
    "githubRepository": "GitHub 저장소",
    "privacySection1Title": "1. 로컬 우선 아키텍처",
    "privacySection1Text": "OmniRoute는 로컬 우선 애플리케이션으로 설계되었습니다. 모든 데이터 처리 및 저장은 전적으로 귀하의 컴퓨터에서 이루어집니다. 귀하의 정보를 수집하는 중앙 집중식 서버가 없습니다.",
    "privacySection2Title": "2. 당사가 저장하는 데이터",
    "privacyDataStoredIn": "다음 데이터는 로컬에 저장됩니다.",
    "privacyDataProviderConfigurationsDesc": "연결 URL, 공급자 유형 및 우선순위 설정",
    "privacyDataApiKeysDesc": "AI 제공업체 인증을 위해 암호화되어 로컬에 저장됨",
    "privacyDataUsageLogsDesc": "요청 수, 토큰 사용량, 모델 이름, 타임스탬프 및 응답 시간",
    "privacyDataApplicationSettingsDesc": "테마 기본 설정, 라우팅 전략 및 콤보 구성",
    "privacySection3Title": "3. 원격 측정 없음",
    "privacySection3Text": "OmniRoute는 원격 측정, 분석 또는 충돌 보고서를 수집하지 않습니다. 어떠한 데이터도 당사나 제3자에게 전송되지 않습니다. 귀하의 사용 패턴, API 호출 및 구성은 완전히 비공개로 유지됩니다.",
    "privacySection4Title": "4. 제3자 AI 제공업체",
    "privacySection4Text": "OmniRoute를 통해 API 호출을 수행하면 요청은 구성한 AI 공급자(예: OpenAI, Anthropic, Google)로 전달됩니다. 이러한 제공업체는 귀하의 데이터를 처리하는 방법을 관리하는 자체 개인 정보 보호 정책을 가지고 있습니다. 검토해 주십시오:",
    "privacyOpenAiPolicy": "OpenAI 개인정보 보호정책",
    "privacyAnthropicPolicy": "인류학적 개인정보 보호정책",
    "privacyGooglePolicy": "Google 개인정보 보호정책",
    "privacySection5Title": "5. 클라우드 동기화(선택 사항)",
    "privacySection5Text": "선택적 클라우드 동기화 기능을 활성화하면 공급자 구성 및 API 키가 구성된 클라우드 엔드포인트로 전송될 수 있습니다. 이 기능은 기본적으로 비활성화되어 있으며 명시적인 선택이 필요합니다.",
    "privacySection6Title": "6. 로깅",
    "privacyLoggingIntro": "요청 로그는 대시보드 설정을 통해 구성할 수 있습니다. 다음을 수행할 수 있습니다.",
    "privacySection7Title": "7. 귀하의 권리",
    "privacySection7TextStart": "모든 데이터는 로컬에 저장되므로 모든 권한을 가질 수 있습니다. 언제든지 제거하여 데이터를 삭제할 수 있습니다.",
    "privacySection7TextEnd": "디렉터리를 사용하거나 대시보드의 데이터베이스 백업 및 복원 기능을 사용합니다.",
    "termsSection1Title": "1. 개요",
    "termsSection1Text": "OmniRoute는 전적으로 사용자의 머신에서 작동하는 로컬 우선 AI API 프록시 라우터입니다. 로드 밸런싱, 장애 조치 및 사용량 추적을 통해 요청을 여러 AI 공급자에게 라우팅합니다.",
    "termsSection2Title": "2. 사용자의 책임",
    "termsResponsibilityApiKeys": "제3자 AI 제공업체(OpenAI, Anthropic, Google 등)에 대한 자체 API 키 및 자격 증명을 관리하는 것은 전적으로 귀하의 책임입니다.",
    "termsResponsibilityCompliance": "귀하는 OmniRoute를 통해 API에 액세스하는 각 AI 제공업체의 서비스 약관을 준수해야 합니다.",
    "termsResponsibilitySecurity": "비밀번호 설정 및 네트워크 액세스 제한을 포함하여 로컬 OmniRoute 설치의 보안에 대한 책임은 귀하에게 있습니다.",
    "termsSection3Title": "3. 작동 원리",
    "termsSection3Text": "OmniRoute는 중개 프록시 역할을 합니다. OmniRoute로 전송된 API 호출은 변환되어 구성된 AI 공급자에게 전달됩니다. OmniRoute는 필요한 프로토콜 변환 이상으로 요청 또는 응답의 내용을 수정하지 않습니다.",
    "termsSection4Title": "4. 데이터 처리",
    "termsDataStoredLocally": "모든 데이터는 컴퓨터의 SQLite 데이터베이스에 로컬로 저장됩니다.",
    "termsNoTransmission": "OmniRoute는 클라우드 동기화 기능을 명시적으로 활성화하지 않는 한 외부 서버에 데이터를 전송하지 않습니다.",
    "termsDataLocationText": "사용 로그, API 키 및 구성은 다음 위치에 저장됩니다.",
    "termsSection5Title": "5. 면책조항",
    "termsSection5Text": "OmniRoute는 어떠한 종류의 보증도 없이 \"있는 그대로\" 제공됩니다. API 사용, 서비스 중단 또는 데이터 손실로 인해 발생하는 비용에 대해 당사는 책임을 지지 않습니다. 항상 구성의 백업을 유지하십시오.",
    "termsSection6Title": "6. 오픈 소스",
    "termsSection6Text": "OmniRoute는 오픈 소스 소프트웨어입니다. 라이센스 조건에 따라 자유롭게 검사, 수정 및 배포할 수 있습니다."
  },
  "agents": {
    "title": "CLI Agents",
    "description": "Discover installed CLI agents on your system. Add custom agents for auto-detection.",
    "refresh": "Refresh",
    "installed": "Installed",
    "notFound": "Not Found",
    "builtIn": "Built-in",
    "custom": "Custom",
    "remove": "Remove",
    "addCustomAgent": "Add Custom Agent",
    "addCustomAgentDesc": "Register any CLI tool for detection. It will be scanned automatically on refresh.",
    "agentName": "Agent Name",
    "binaryName": "Binary Name",
    "versionCommand": "Version Command",
    "spawnArgs": "Spawn Args",
    "addAgent": "Add Agent",
    "scanning": "Scanning system for CLI agents...",
    "opencodeIntegration": "OpenCode Integration",
    "opencodeDetected": "opencode {version} detected",
    "opencodeDesc": "Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.",
    "downloadConfig": "Download {file}",
    "downloaded": "Downloaded!",
    "setupGuideTitle": "Setup guide",
    "openCliTools": "Open CLI Tools",
    "setupGuideDetectCliTitle": "Detect installed CLIs",
    "setupGuideDetectCliDesc": "Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.",
    "setupGuideCustomAgentTitle": "Register custom binary",
    "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",
    "comparisonTitle": "CLI 도구와 에이전트 대상 — 차이점은 무엇입니까?",
    "comparisonCliToolsLabel": "CLI 도구 페이지",
    "comparisonCliToolsTitle": "IDE는 OmniRoute를 통해 요청을 보냅니다.",
    "comparisonCliToolsDesc": "OmniRoute를 API 기본 URL로 사용하도록 Claude Code, Codex, Cursor 및 기타 IDE를 구성합니다. OmniRoute는 프록시 역할을 하여 구성된 공급자에게 요청을 라우팅합니다.",
    "comparisonAgentsLabel": "이 페이지(에이전트 대상)",
    "comparisonAgentsTitle": "OmniRoute는 요청을 로컬 CLI 도구로 보냅니다.",
    "comparisonAgentsDesc": "OmniRoute는 로컬 CLI 바이너리(claude, codex, goose)를 실행 백엔드로 생성할 수 있습니다. CLI 도구는 자체 인증을 사용하여 요청을 처리하고 결과를 반환합니다.",
    "comparisonSummary": "간단히 말해서: CLI 도구 = OmniRoute를 가리키도록 도구를 구성합니다. 에이전트 대상 = OmniRoute는 도구를 엔드포인트로 사용합니다.",
    "agentUseCaseHint": "ACP 프로토콜을 통해 실행 대상으로 사용 가능",
    "flowDiagramClient": "클라이언트 앱",
    "flowDiagramClientDesc": "SDK, API 또는 업스트림 서비스",
    "flowDiagramOmniRoute": "옴니루트",
    "flowDiagramOmniRouteDesc": "요청을 받고 대상을 선택합니다.",
    "flowDiagramSpawn": "스폰 프로세스",
    "flowDiagramSpawnDesc": "stdio를 통해 CLI 바이너리 실행",
    "flowDiagramCli": "CLI 에이전트",
    "flowDiagramCliDesc": "자체 인증/모델이 있는 프로세스",
    "fingerprintSettingsHint": "CLI 지문 일치(특정 CLI 도구로 위장 요청)는 다음에서 구성할 수 있습니다.",
    "settingsRoutingLink": "설정/라우팅",
    "openSettings": "설정",
    "copyRawUrlTitle": "원시 URL을 클립보드에 복사",
    "copied": "복사되었습니다!",
    "copyUrl": "URL 복사",
    "startHere": "여기서 시작하세요",
    "badgeNew": "새로운",
    "viewOnGithub": "GitHub에서 보기",
    "howToUse": "사용방법",
    "browseAllSkillsOnGithub": "GitHub에서 모든 기술 찾아보기",
    "apiSkills": "API 기술",
    "cliSkills": "CLI 기술",
    "apiSkillsSubtitle": "__MISSING__:{count} skills — control OmniRoute via REST / HTTP",
    "cliSkillsSubtitle": "__MISSING__:{count} skills — control OmniRoute via the omniroute terminal binary",
    "howToUseStep1": "__MISSING__:Click <bold>{copyUrl}</bold> on the skill you want your agent to know about.",
    "howToUseStep2": "__MISSING__:In your AI agent (Claude, Cursor, Cline…), say:",
    "howToUseStep2Code": "__MISSING__:Use the skill at [pasted-url]",
    "howToUseStep3": "__MISSING__:The agent fetches the SKILL.md and learns OmniRoute's API or CLI — no manual docs needed."
  },
  "cloudAgents": {
    "title": "클라우드 에이전트",
    "description": "자율 코딩 에이전트 관리(Jules, Devin, Codex Cloud)",
    "loading": "작업 로드 중...",
    "aboutTitle": "클라우드 에이전트 정보",
    "aboutDescription": "클라우드 에이전트는 작업을 자율적으로 실행할 수 있는 원격 AI 코딩 도우미입니다. 이는 로컬 CLI 에이전트와 다르게 작동합니다. OmniRoute의 API를 통해 상호 작용합니다.",
    "howItWorksTitle": "작동 방식:",
    "howItWorksDesc": "작업 생성 → 에이전트가 계획 분석 및 제안 → 사용자 승인 → 에이전트 실행 → 결과 반환",
    "newTaskTitle": "새 작업 만들기",
    "newTaskDescription": "클라우드 에이전트로 새 작업 시작",
    "selectAgent": "에이전트 선택",
    "taskDescription": "작업 설명",
    "taskDescriptionPlaceholder": "상담원에게 원하는 작업을 설명하세요.",
    "startTask": "작업 시작",
    "tasks": "작업",
    "taskDetail": "작업 세부정보",
    "noTasks": "아직 작업이 없습니다. 시작하려면 계정을 만드세요.",
    "noTasksTitle": "__MISSING__:No tasks yet",
    "noTasksDesc": "__MISSING__:Create your first task to get started.",
    "tasksTab": "__MISSING__:Tasks",
    "agentsTab": "__MISSING__:Agents",
    "settingsTab": "__MISSING__:Settings",
    "agentsEnabled": "__MISSING__:Enabled",
    "agentsDisabled": "__MISSING__:Disabled",
    "filterAllProviders": "__MISSING__:All Providers",
    "filterAll": "__MISSING__:All",
    "autoRefreshing": "__MISSING__:Auto-refreshing",
    "viewPR": "__MISSING__:View Pull Request",
    "connected": "__MISSING__:Connected",
    "notConnected": "__MISSING__:Not connected",
    "configure": "__MISSING__:Configure",
    "settingsTitle": "__MISSING__:Cloud Agent Settings",
    "settingsDesc": "__MISSING__:Configure local preferences for cloud agents.",
    "settingEnableAgents": "__MISSING__:Enable cloud agents",
    "settingEnableAgentsDesc": "__MISSING__:Allow OmniRoute to orchestrate autonomous coding agents.",
    "settingAutoPR": "__MISSING__:Auto-create PR",
    "settingAutoPRDesc": "__MISSING__:When a task is completed, automatically create a Pull Request with the changes.",
    "settingRequireApproval": "__MISSING__:Require plan approval",
    "settingRequireApprovalDesc": "__MISSING__:Always wait for manual approval before an agent executes a proposed plan.",
    "untitledTask": "제목 없는 작업",
    "created": "생성됨",
    "conversation": "대화",
    "result": "결과",
    "error": "오류",
    "planReady": "계획 승인 준비 완료",
    "approvePlan": "계획 승인",
    "rejectPlan": "거부 및 취소",
    "sendMessagePlaceholder": "상담원에게 메시지를 보내세요...",
    "cancel": "취소",
    "delete": "삭제",
    "selectTaskPrompt": "세부정보를 보려면 작업을 선택하세요.",
    "statusPending": "보류 중",
    "statusRunning": "달리기",
    "statusWaitingApproval": "승인 대기 중",
    "statusCompleted": "완료됨",
    "statusFailed": "실패",
    "statusCancelled": "취소됨",
    "repositoryName": "저장소 이름",
    "repositoryUrl": "저장소 URL",
    "branch": "지점"
  },
  "templateNames": {
    "simple-chat": "Simple Chat",
    "streaming": "Streaming",
    "system-prompt": "System Prompt",
    "thinking": "Thinking",
    "tool-calling": "Tool Calling",
    "multi-turn": "Multi-turn",
    "vision": "비전",
    "schema-coercion": "스키마 강제"
  },
  "templateDescriptions": {
    "simple-chat": "Basic chat template",
    "streaming": "Streaming template",
    "system-prompt": "System prompt template",
    "thinking": "Thinking template",
    "tool-calling": "Tool calling template",
    "multi-turn": "Multi-turn template",
    "vision": "이미지 입력이 포함된 다중 모드 템플릿",
    "schema-coercion": "구조화된 출력/JSON 스키마 적용"
  },
  "templatePayloads": {
    "simpleChat": {
      "system": "당신은 유용한 AI 비서입니다.",
      "userGreeting": "안녕하세요! 오늘은 무엇을 도와드릴까요?"
    },
    "streaming": {
      "prompt": "에 관한 이야기를 써 보세요."
    },
    "systemPrompt": {
      "question": "삶의 의미는 무엇입니까?",
      "systemInstruction": "사려 깊고 철학적인 답변을 제공하세요."
    },
    "thinking": {
      "question": "양자 컴퓨팅 설명"
    },
    "toolCalling": {
      "cityNameDescription": "날씨를 확인할 도시의 이름",
      "toolDescription": "특정 위치의 현재 날씨 확인",
      "userWeather": "도쿄 날씨는 어떻습니까?"
    },
    "multiTurn": {
      "system": "당신은 도움이 되는 조수입니다.",
      "assistantExample": "기꺼이 도와드리겠습니다.",
      "userInitial": "도움이 필요해요",
      "userFollowUp": "그것에 대해 자세히 설명해주실 수 있나요?"
    }
  },
  "cache": {
    "title": "Cache Management",
    "description": "Monitor and manage semantic response cache, hit rates, and token savings.",
    "refresh": "Refresh",
    "clearAll": "Clear All",
    "memoryEntries": "Memory Entries",
    "memoryEntriesSub": "In-memory LRU",
    "dbEntries": "DB Entries",
    "dbEntriesSub": "Persisted (SQLite)",
    "cacheHits": "Cache Hits",
    "cacheHitsSub": "of {total} total",
    "tokensSaved": "Tokens Saved",
    "tokensSavedSub": "Estimated from hits",
    "hitRate": "Hit Rate",
    "performance": "Cache Performance",
    "autoRefresh": "Auto-refreshes every {seconds}s",
    "hits": "Hits",
    "misses": "Misses",
    "total": "Total",
    "behavior": "Cache Behavior",
    "behaviorDeterministic": "Only non-streaming requests with temperature=0 are cached.",
    "behaviorBypass": "Bypass with header {header}.",
    "behaviorTwoTier": "Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).",
    "behaviorTtl": "Default TTL: 30 minutes. Configure via {envVar}.",
    "idempotency": "Idempotency Layer",
    "activeDedupKeys": "Active Dedup Keys",
    "dedupWindow": "Dedup Window",
    "clearSuccess": "Cache cleared. {count} expired entries removed.",
    "clearError": "Failed to clear cache.",
    "unavailable": "Cache unavailable",
    "unavailableDesc": "Could not fetch cache statistics. Make sure the server is running.",
    "loadingCacheAria": "__MISSING__:Loading cache",
    "promptCache": "Prompt Cache (Provider-Side)",
    "semanticCache": "Semantic Cache",
    "promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.",
    "promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.",
    "cachedRequests": "Cached Requests",
    "cachedRequests24h": "Cached Requests (24h)",
    "cacheHitRate": "Cache Hit Rate",
    "cacheRate": "Cache Rate",
    "cacheRateDesc": "of total requests",
    "cachedTokens": "Cached Tokens",
    "cacheCreationTokens": "Cache Creation Tokens",
    "cacheMetrics": "Prompt Cache Metrics",
    "withCacheControl": "With Cache Control",
    "cachedTokensRead": "Cached Tokens (Read)",
    "cacheCreationWrite": "Cache Creation (Write)",
    "cacheReuseRatio": "Cache Reuse Ratio",
    "cacheReuseRatioDesc": "Cached tokens / Total input tokens",
    "estCostSaved": "Est. Cost Saved",
    "lastUpdated": "Last updated",
    "hoursTracked": "hours tracked",
    "busiestHour": "Busiest Hour",
    "peakCacheRate": "Peak Cache Rate",
    "trendHour": "Hour",
    "activityVolume": "Activity",
    "requestsShort": "reqs",
    "inputShort": "In",
    "cachedShort": "Cached",
    "writeShort": "Write",
    "resetting": "Resetting...",
    "resetMetrics": "Reset Metrics",
    "byProvider": "Breakdown by Provider",
    "providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.",
    "provider": "Provider",
    "requests": "Requests",
    "inputTokens": "Input Tokens",
    "cachedTokensCol": "Cached",
    "cacheCreation": "Creation",
    "trend24h": "Cache Trend (24h)",
    "peakCached": "Peak cached",
    "cached": "Cached",
    "overview": "Overview",
    "tableProvider": "__MISSING__:Provider",
    "tableModel": "__MISSING__:Model",
    "performanceTitle": "__MISSING__:Performance",
    "semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.",
    "semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.",
    "semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.",
    "searchEntries": "Search entries...",
    "search": "Search",
    "loading": "Loading...",
    "entriesLoadError": "Failed to load semantic cache entries.",
    "noEntries": "No cache entries found",
    "noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.",
    "noTrendData": "No prompt cache activity has been recorded over the last 24 hours.",
    "signature": "Signature",
    "model": "Model",
    "created": "Created",
    "expires": "Expires",
    "actions": "Actions",
    "deduplicatedRequests": "Deduplicated Requests",
    "savedCalls": "Saved API Calls",
    "totalProcessed": "Total Requests Processed",
    "disabled": "Disabled",
    "totalRequests": "Total Requests",
    "reasoningCache": "추론 재생",
    "reasoningCacheDesc": "다중 회전 도구 호출 흐름에 대한 모델 사고를 유지합니다.",
    "reasoningEntries": "활성 항목",
    "reasoningReplayRate": "재생률",
    "reasoningReplays": "총 리플레이",
    "reasoningCharsCached": "캐시된 문자",
    "reasoningMisses": "캐시 미스",
    "reasoningByProvider": "공급자별",
    "reasoningByModel": "모델별",
    "reasoningRecentEntries": "최근 항목",
    "reasoningToolCallId": "도구 호출 ID",
    "reasoningChars": "캐릭터",
    "reasoningAge": "나이",
    "reasoningView": "보기",
    "reasoningDetail": "추론 내용",
    "reasoningBehavior": "행동",
    "reasoningBehaviorCapture": "스트리밍 응답에서 Reasoning_content를 캡처합니다.",
    "reasoningBehaviorReplay": "클라이언트가 생략하면 다음 턴에 다시 주입합니다.",
    "reasoningBehaviorFallback": "충돌 복구를 위한 SQLite 대체 기능을 갖춘 메모리 우선",
    "reasoningBehaviorTtl": "TTL: 2시간 | 최대 항목: 2,000(메모리)",
    "reasoningBehaviorModels": "지원됨: DeepSeek, Kimi, Qwen-Thinking, GLM",
    "reasoningClearAll": "추론 캐시 지우기",
    "reasoningClearSuccess": "{count} 추론 캐시 항목을 삭제했습니다.",
    "reasoningClearError": "추론 캐시를 지우지 못했습니다.",
    "reasoningNoData": "아직 캐시된 추론 항목이 없습니다. 사고 모델이 도구 호출을 사용할 때 항목이 나타납니다.",
    "cachePerformanceRetry": "재시도",
    "cachePerformanceHitRate": "적중률",
    "cachePerformanceAvgLatency": "평균 지연 시간(ms)",
    "cachePerformanceP95Latency": "p95 대기 시간(ms)",
    "retry": "재시도",
    "reasoningAvgChars": "평균 문자 수",
    "tableShare": "__MISSING__:Share",
    "justNow": "__MISSING__:just now",
    "minutesAgo": "__MISSING__:{minutes}m ago",
    "hoursAgo": "__MISSING__:{hours}h ago",
    "daysAgo": "__MISSING__:{days}d ago",
    "entries": "Entries"
  },
  "proxyConfigModal": {
    "levelGlobal": "글로벌",
    "levelProvider": "공급자",
    "levelCombo": "콤보",
    "levelKey": "열쇠",
    "levelDirect": "직접(프록시 없음)",
    "titleGlobal": "글로벌 프록시 구성",
    "titleLevel": "{level} 프록시 — {label}",
    "loading": "프록시 구성 로드 중...",
    "inheritingFrom": "다음에서 상속",
    "source": "소스",
    "savedProxy": "저장된 프록시",
    "custom": "맞춤",
    "selectSavedProxyPlaceholder": "저장된 프록시 선택...",
    "proxyType": "프록시 유형",
    "host": "호스트",
    "hostPlaceholder": "1.2.3.4 또는 Proxy.example.com",
    "port": "항구",
    "authOptional": "인증(선택사항)",
    "username": "사용자 이름",
    "usernamePlaceholder": "사용자 이름",
    "password": "비밀번호",
    "passwordPlaceholder": "비밀번호",
    "connected": "연결됨",
    "ip": "IP:",
    "connectionFailed": "연결 실패",
    "testConnection": "테스트 연결",
    "clear": "지우기",
    "cancel": "취소",
    "save": "저장",
    "errorSelectSavedProxy": "먼저 저장된 프록시를 선택하세요.",
    "errorSelectProxyFirst": "먼저 프록시를 선택하세요.",
    "errorProxyNotFound": "선택한 프록시를 찾을 수 없습니다.",
    "errorClearSavedProxy": "저장된 프록시를 지우지 못했습니다.",
    "errorSaveProxy": "프록시 구성을 저장하지 못했습니다.",
    "errorClearProxy": "프록시 구성을 지우지 못했습니다.",
    "errorSocks5Hidden": "SOCKS5가 구성되었지만 NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=false로 인해 숨겨졌습니다."
  },
  "oauthModal": {
    "title": "{providerName} 연결",
    "waiting": "승인을 기다리는 중",
    "completeAuthInPopup": "팝업에서 승인을 완료하세요.",
    "popupClosedHint": "다시 리디렉션하지 않고 팝업이 닫히면(예: Qoder) 이 대화 상자는 수동 URL 입력 모드로 자동 전환됩니다.",
    "popupBlocked": "팝업이 차단되었나요? URL을 직접 입력하세요.",
    "deviceCodeVisitUrl": "아래 URL을 방문하여 코드를 입력하세요.",
    "deviceCodeVerificationUrl": "확인 URL",
    "deviceCodeYourCode": "귀하의 코드",
    "deviceCodeWaiting": "승인을 기다리는 중...",
    "googleOAuthWarning": "원격 액세스 + Google OAuth: 기본 자격 증명은 <code>localhost</code>에 대한 리디렉션만 허용합니다. 승인 후 브라우저는 <code>localhost</code> 열기를 시도합니다. 전체 URL을 복사하여 아래에 붙여넣으세요. 이 수동 단계 없이 완전히 원격으로 사용하려면 <a>자신의 OAuth 자격 증명을 구성</a>하세요.",
    "remoteAccessInfo": "원격 액세스: OmniRoute에 원격으로 액세스하므로 인증 후 오류 페이지가 표시됩니다(localhost를 찾을 수 없음). 이것은 정상적인 현상입니다. 브라우저 주소 표시줄에서 전체 URL을 복사하여 아래에 붙여넣으면 됩니다.",
    "step1OpenUrl": "1단계: 브라우저에서 이 URL을 엽니다.",
    "copy": "복사",
    "step2PasteCallback": "2단계: 여기에 콜백 URL 또는 승인 코드를 붙여넣으세요.",
    "step2Hint": "승인 후 전체 콜백 URL을 붙여넣습니다. Claude Code 및 Cline의 경우 인증 코드를 직접 붙여 넣을 수도 있습니다. <code>코드#상태</code>.",
    "connect": "연결하다",
    "cancel": "취소",
    "success": "연결 성공!",
    "successMessage": "귀하의 {providerName} 계정이 연결되었습니다.",
    "done": "완료",
    "error": "연결 실패",
    "tryAgain": "다시 시도하세요"
  },
  "cursorAuthModal": {
    "title": "커서 IDE 연결",
    "autoDetecting": "토큰 자동 감지 중...",
    "readingFromCursor": "커서 IDE 또는 커서 에이전트에서 읽기",
    "tokensAutoDetected": "Cursor IDE에서 토큰이 자동 감지되었습니다!",
    "cursorNotDetected": "커서 IDE가 감지되지 않습니다. 토큰을 수동으로 붙여넣으세요.",
    "accessToken": "액세스 토큰",
    "required": "*",
    "accessTokenPlaceholder": "액세스 토큰이 자동으로 채워집니다...",
    "machineId": "머신 ID",
    "optional": "(선택사항)",
    "machineIdPlaceholder": "컴퓨터 ID가 자동으로 채워집니다...",
    "importing": "가져오는 중...",
    "importToken": "토큰 가져오기",
    "cancel": "취소",
    "errorAutoDetect": "토큰을 자동 감지할 수 없습니다.",
    "errorAutoDetectFailed": "토큰 자동 감지 실패",
    "errorEnterToken": "액세스 토큰을 입력하세요.",
    "errorImportFailed": "가져오기 실패"
  },
  "pricingModal": {
    "title": "가격 구성",
    "loading": "가격 데이터 로드 중...",
    "pricingRatesFormat": "가격 요율 형식",
    "ratesDescription": "모든 요율은 백만 토큰당 <strong>달러</strong>($/1M 토큰)입니다. 예: 입력 비율 2.50은 입력 토큰 1,000,000개당 $2.50를 의미합니다.",
    "model": "모델",
    "input": "입력",
    "output": "출력",
    "cached": "캐시됨",
    "reasoning": "추론",
    "cacheCreation": "캐시 생성",
    "noPricingData": "사용 가능한 가격 데이터가 없습니다.",
    "resetToDefaults": "기본값으로 재설정",
    "cancel": "취소",
    "saving": "저장 중...",
    "saveChanges": "변경사항 저장",
    "resetConfirm": "모든 가격을 기본값으로 재설정하시겠습니까? 이 작업은 취소할 수 없습니다.",
    "errorSaveFailed": "가격을 저장하지 못했습니다.",
    "errorResetFailed": "가격을 재설정하지 못했습니다."
  },
  "proxyRegistry": {
    "title": "Title",
    "description": "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",
    "test": "Test",
    "edit": "Edit",
    "delete": "Delete",
    "modalCreateTitle": "Modal Create Title",
    "modalEditTitle": "Modal Edit Title",
    "labelName": "Label Name",
    "labelType": "유형",
    "labelHost": "호스트",
    "labelPort": "항구",
    "labelUsername": "사용자 이름",
    "labelPassword": "비밀번호",
    "labelRegion": "지역",
    "labelStatus": "상태",
    "labelNotes": "메모",
    "usernamePlaceholderEdit": "현재 사용자 이름을 유지하려면 비워 두세요.",
    "passwordPlaceholderEdit": "현재 비밀번호를 유지하려면 비워두세요.",
    "statusActive": "활성",
    "statusInactive": "비활성",
    "cancel": "취소",
    "save": "저장",
    "bulkModalTitle": "대량 프록시 할당",
    "bulkLabelScope": "범위",
    "bulkLabelProxy": "프록시",
    "bulkClearAssignment": "(할당 지우기)",
    "bulkLabelScopeIds": "범위 ID(쉼표 또는 줄바꿈으로 구분)",
    "bulkScopeIdsPlaceholder": "공급자-개방형, 공급자-인류적",
    "bulkApply": "적용",
    "labelScope": "__MISSING__:Scope",
    "labelProxy": "__MISSING__:Proxy",
    "scopeGlobal": "__MISSING__:global",
    "scopeProvider": "__MISSING__:provider",
    "scopeAccount": "__MISSING__:account",
    "scopeCombo": "__MISSING__:combo",
    "bulkImportErrorMissingName": "NAME 누락",
    "bulkImportErrorMissingHost": "호스트 누락",
    "bulkImportErrorInvalidPort": "잘못된 포트(1-65535여야 함)",
    "bulkImportErrorInvalidType": "잘못된 TYPE(http, https 또는 양말5 사용)",
    "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",
    "success": "✓",
    "failure": "✗",
    "failed": "Failed",
    "successRate": "{rate}% 성공",
    "avgLatency": "{latency}ms 평균",
    "assignmentsCount": "{count} 과제",
    "noData": "No Data",
    "testSuccess": "✓ {ip}",
    "testLatency": "{latency}ms",
    "testFailure": "✗ {error}",
    "bulkImport": "대량 가져오기",
    "bulkImportTitle": "대량 가져오기 프록시",
    "bulkImportDescription": "파이프로 구분된 형식을 사용하여 프록시 프로필을 붙여넣습니다. 한 줄에 하나의 프록시. 기존 프록시(동일 호스트 + 포트)가 업데이트됩니다.",
    "bulkImportParse": "구문 분석",
    "bulkImportImport": "{count} 프록시 가져오기",
    "bulkImportImporting": "가져오는 중...",
    "bulkImportParsed": "{count} 프록시가 구문 분석되었습니다.",
    "bulkImportSkipped": "{count}줄을 건너뛰었습니다.",
    "bulkImportParseErrors": "{count} 오류",
    "bulkImportNoValidEntries": "유효한 항목을 찾을 수 없습니다. 형식을 확인하고 다시 시도하세요.",
    "bulkImportSuccess": "가져오기 완료: {created} 생성됨, {updated} 업데이트됨, {failed} 실패",
    "bulkImportErrorLine": "{line} 라인: {reason}",
    "bulkImportMaxExceeded": "가져오기당 최대 100개의 프록시",
    "bulkImportPreview": "미리보기",
    "clearAssignment": "(명확한 할당)",
    "bulkProxyAssignment": "대량 프록시 할당"
  },
  "playground": {
    "title": "Title",
    "description": "Description",
    "endpoint": "Endpoint",
    "provider": "Provider",
    "model": "Model",
    "accountKey": "Account Key",
    "autoAccounts": "자동({count}개 계정)",
    "noAccounts": "No Accounts",
    "send": "Send",
    "cancel": "Cancel",
    "audioFile": "Audio File",
    "attachImages": "Attach Images",
    "multipartFormData": "Multipart Form Data",
    "upToImages": "Up To Images",
    "selectAudioFile": "Select Audio File",
    "clearAll": "Clear All",
    "request": "Request",
    "response": "Response",
    "transcription": "Transcription",
    "copy": "Copy",
    "resetToDefault": "Reset To Default",
    "downloadAudio": "Download Audio",
    "copyText": "Copy Text",
    "transcriptionHint": "Transcription Hint",
    "imagesGenerated": "생성된 {count}개의 이미지",
    "generatedImage": "생성된 이미지 {index}",
    "save": "Save",
    "endpointOptions": {
      "chat": "Chat",
      "responses": "Responses",
      "images": "Images",
      "embeddings": "Embeddings",
      "speech": "Speech",
      "transcription": "Transcription",
      "video": "Video",
      "music": "Music",
      "rerank": "Rerank",
      "search": "Search"
    },
    "conversationalChat": "대화채팅",
    "clearChat": "채팅 지우기",
    "typeMessagePlaceholder": "메시지를 입력하세요... (새 줄을 입력하려면 Shift+Enter)",
    "tabChat": "Chat",
    "tabCompare": "Compare",
    "tabApi": "API",
    "tabBuild": "Build",
    "configPane": "Config",
    "systemPrompt": "System prompt",
    "systemPromptPlaceholder": "You are a helpful assistant.",
    "modelPlaceholder": "e.g. openai/gpt-4o",
    "endpointLabel": "Endpoint",
    "parametersLabel": "Parameters",
    "collapseConfig": "Collapse config pane",
    "expandConfig": "Expand config pane",
    "temperature": "Temperature",
    "maxTokens": "Max tokens",
    "topP": "Top-p",
    "presencePenalty": "Presence penalty",
    "frequencyPenalty": "Frequency penalty",
    "seedPlaceholder": "Random (leave empty)",
    "presetsLabel": "Presets",
    "loadPreset": "Load preset",
    "savePreset": "Save preset",
    "noPresets": "No presets",
    "presetNamePlaceholder": "Preset name",
    "savingPreset": "Saving…",
    "nameRequired": "Name is required",
    "failedToSavePreset": "Failed to save preset",
    "improvePrompt": "Improve prompt",
    "improvingPrompt": "Improving…",
    "improvePromptTitle": "Improve your prompt with AI",
    "setModelFirst": "Set a model first",
    "improveQuotaWarning": "This will consume quota from the model configured in Config.",
    "improveConfirm": "Improve",
    "exportCode": "Export code",
    "exportCodeTitle": "Export Code",
    "noStateToExport": "No playground state available to export.",
    "copyCode": "Copy",
    "copiedCode": "Copied!",
    "addModel": "+ Add model",
    "runAll": "Run all",
    "cancelAll": "Cancel all",
    "maxColumnsReached": "Maximum {max} columns",
    "modelPlaceholderCompare": "Model (Cmd+K)…",
    "ttft": "TTFT",
    "tps": "TPS",
    "metricsDisclaimer": "client-side estimate",
    "tokensLabel": "Tokens",
    "costLabel": "Cost",
    "costEstimated": "(estimated)",
    "toolsLabel": "Tools",
    "addTool": "Add tool",
    "toolNamePlaceholder": "Function name",
    "toolDescPlaceholder": "Description (optional)",
    "toolParamsInvalid": "Parameters must be valid JSON",
    "structuredOutputLabel": "Structured Output",
    "enableJsonMode": "Enable JSON mode",
    "disableJsonMode": "Disable JSON mode",
    "invalidJson": "Invalid JSON",
    "running": "Running…",
    "runLabel": "Run",
    "enterToolResult": "Enter tool result…"
  },
  "miniPlayground": {
    "endpoint": "__MISSING__:Endpoint",
    "apiKey": "__MISSING__:API Key",
    "model": "__MISSING__:Model",
    "voice": "__MISSING__:Voice",
    "speed": "__MISSING__:Speed",
    "input": "__MISSING__:Input",
    "url": "__MISSING__:URL",
    "format": "__MISSING__:Format",
    "depth": "__MISSING__:Depth",
    "copyCurl": "__MISSING__:Copy cURL",
    "copied": "__MISSING__:Copied!",
    "run": "__MISSING__:Run",
    "running": "__MISSING__:Running...",
    "response": "__MISSING__:Response",
    "tunnel": "__MISSING__:Tunnel",
    "send": "__MISSING__:Send",
    "selectKey": "__MISSING__:Select key",
    "testLabel": "__MISSING__:Test",
    "expandTest": "__MISSING__:Expand test",
    "collapseTest": "__MISSING__:Collapse test",
    "revealKey": "__MISSING__:Reveal key",
    "hideKey": "__MISSING__:Hide key",
    "download": "__MISSING__:Download",
    "play": "__MISSING__:Play",
    "query": "__MISSING__:Query",
    "numResults": "__MISSING__:Max results",
    "prompt": "__MISSING__:Prompt",
    "size": "__MISSING__:Size",
    "duration": "__MISSING__:Duration",
    "question": "__MISSING__:Question",
    "audioFile": "__MISSING__:Audio file",
    "noKeysFound": "__MISSING__:No API keys found. Add one in the Keys section.",
    "exampleLabel": "__MISSING__:Example",
    "latency": "__MISSING__:{ms}ms",
    "statsLine": "__MISSING__:{ms}ms · {tokensIn} in / {tokensOut} out tokens"
  },
  "requestLogger": {
    "recording": "Recording",
    "paused": "Paused",
    "pipelineLogsOn": "Pipeline logs on",
    "pipelineLogsOff": "Pipeline logs off",
    "updatingPipelineLogs": "Updating pipeline logs...",
    "updatePipelineFailed": "Failed to update pipeline logging",
    "capturePipeline": "Capture pipeline payloads for new requests",
    "searchPlaceholder": "Search models, providers, accounts, API keys, combos...",
    "allProviders": "All providers",
    "allModels": "All models",
    "allAccounts": "All accounts",
    "allApiKeys": "All API keys",
    "total": "Total",
    "ok": "Success",
    "err": "Error",
    "combo": "Combo",
    "keys": "Keys",
    "shown": "Shown",
    "sortNewest": "Newest",
    "sortOldest": "Oldest",
    "sortTokensDesc": "Tokens ↓",
    "sortTokensAsc": "Tokens ↑",
    "sortDurationDesc": "Duration ↓",
    "sortDurationAsc": "Duration ↑",
    "sortStatusDesc": "Status ↓",
    "sortStatusAsc": "Status ↑",
    "sortModelAsc": "Model A-Z",
    "sortModelDesc": "Model Z-A",
    "sortLogs": "Sort logs",
    "refresh": "Refresh",
    "columnsLabel": "Columns",
    "cacheSem": "SEM",
    "cacheUp": "UP",
    "semantic": "Semantic",
    "upstream": "Upstream",
    "semanticCacheHit": "Semantic cache hit (served by OmniRoute)",
    "upstreamResponse": "Upstream provider response",
    "noApiKey": "No API key",
    "requestedRoutedTitle": "Requested {requested}, routed as {routed}",
    "statusFilters": {
      "all": "All",
      "error": "Errors",
      "success": "Success",
      "combo": "Combo"
    },
    "columns": {
      "status": "Status",
      "cacheSource": "Cache Source",
      "model": "Model",
      "requested": "Requested",
      "provider": "Provider",
      "protocol": "Request Protocol",
      "account": "Account",
      "apiKey": "API Key",
      "combo": "Combo",
      "tokens": "Tokens",
      "compressed": "압축",
      "tps": "TPS",
      "duration": "Duration",
      "time": "Time"
    },
    "loadingLogs": "Loading logs...",
    "noLogs": "No logs yet. Make some API calls to see them here.",
    "noMatchingLogs": "No logs matching current filters.",
    "callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}."
  },
  "proxyLogger": {
    "filterAll": "All",
    "filterErrors": "Errors",
    "filterSuccess": "Success",
    "filterTimeout": "Timeout",
    "colStatus": "Status",
    "colProxy": "Proxy",
    "colTls": "TLS",
    "colType": "Type",
    "colLevel": "Level",
    "colProvider": "Provider",
    "colTarget": "Target",
    "colLatency": "Latency",
    "colClientIp": "Client IP",
    "colTime": "Time",
    "recording": "Recording",
    "paused": "Paused",
    "searchPlaceholder": "Search host, provider, target, IP...",
    "allTypes": "All Types",
    "allLevels": "All Levels",
    "allProviders": "All Providers",
    "total": "total",
    "ok": "OK",
    "err": "ERR",
    "timeoutShort": "TMO",
    "direct": "direct",
    "newest": "Newest",
    "oldest": "Oldest",
    "latencyDesc": "Latency ↓",
    "latencyAsc": "Latency ↑",
    "refresh": "Refresh",
    "columns": "Columns",
    "loadingProxyLogs": "Loading proxy logs...",
    "noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.",
    "noMatchingLogs": "No logs match the current filters.",
    "tlsFingerprint": "Chrome 124 TLS Fingerprint"
  },
  "endpointOptions": {
    "speech": "Speech",
    "search": "Search",
    "images": "Images",
    "chat": "Chat",
    "music": "Music",
    "responses": "Responses",
    "rerank": "Rerank",
    "video": "Video",
    "embeddings": "Embeddings",
    "transcription": "Transcription"
  },
  "toolDescriptions": {
    "cline": "Cline",
    "openclaw": "Openclaw",
    "droid": "Droid",
    "codex": "Codex",
    "claude": "Claude",
    "kilo": "Kilo"
  },
  "runtime": {
    "title": "Runtime",
    "description": "Realtime observability — 3-layer resilience + sessions + quota alerts",
    "pause": "Pause",
    "resume": "Resume",
    "refreshNow": "Refresh now",
    "kpiSessions": "Sessions",
    "kpiCircuits": "Circuits",
    "kpiCooldowns": "Cooldowns",
    "kpiLockouts": "Lockouts",
    "hintStickyBound": "{count} sticky-bound",
    "hintRecovering": "{count} recovering",
    "hintAllHealthy": "all healthy",
    "hintOpen": "open",
    "hintConnsCooling": "connections cooling",
    "hintModelsBlocked": "models blocked",
    "resilienceTitle": "3-Layer Resilience",
    "resilienceSubtitle": "Mirrors the documented resilience model",
    "providersHealthy": "{percent}% providers healthy",
    "layer": "Layer {n}",
    "layer1Title": "Provider Circuit Breakers",
    "layer1Desc": "Stop traffic to providers failing at the upstream level",
    "layer2Title": "Connection Cooldowns",
    "layer2Desc": "Skip one bad account/key; other connections keep serving",
    "layer3Title": "Model Lockouts",
    "layer3Desc": "Per-model rate-limit locks; same connection still serves other models",
    "badgeAffectedOf": "{affected} of {total} affected",
    "badgeCooling": "{count} cooling",
    "badgeLocked": "{count} locked",
    "emptyCircuits": "No circuit breakers active yet",
    "emptyCooldowns": "No connection cooldowns active",
    "emptyLockouts": "No model lockouts",
    "moreCooldowns": "+{count} more cooldowns",
    "moreLockouts": "+{count} more lockouts",
    "feedTitle": "Live Feed",
    "feedSubtitle": "Last {count} events",
    "feedFilterAll": "All",
    "feedFilterCircuits": "Circuits",
    "feedFilterCooldowns": "Cooldowns",
    "feedFilterLockouts": "Lockouts",
    "feedFilterSessions": "Sessions",
    "feedFilterQuotas": "Quotas",
    "feedClear": "Clear",
    "feedEmptyWaiting": "Waiting for events... (polled every 5s)",
    "feedEmptyFiltered": "No events match this filter",
    "sessionsTitle": "Active Sessions",
    "sessionsSubtitle": "Sticky-bound request fingerprints (live)",
    "sessionsActive": "{count} active",
    "sessionsEmptyTitle": "No active sessions",
    "sessionsEmptyHint": "Sessions appear as requests flow through the proxy",
    "tblSession": "Session",
    "tblAge": "Age",
    "tblIdle": "Idle",
    "tblReqs": "Reqs",
    "tblBoundTo": "Bound to",
    "topApiKeys": "Top API keys",
    "quotaMonitorsTitle": "Quota Monitors",
    "quotaMonitorsSubtitle": "Live quota state per account window",
    "openQuota": "Open Quota",
    "allQuotasHealthy": "All quotas healthy",
    "statusExhausted": "EXHAUSTED",
    "statusAlerting": "ALERTING",
    "statusError": "ERROR",
    "moreSuffix": "+{count} more"
  },
  "quotaShare": {
    "title": "Quota Sharing",
    "description": "Share provider quotas across API keys with % limits",
    "newPool": "New pool",
    "betaTitle": "Beta — UI preview.",
    "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",
    "kpiAvgUnallocated": "Avg unallocated",
    "kpiProvidersWithQuota": "Providers w/ quota",
    "emptyTitle": "No pools configured",
    "emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.",
    "loading": "Loading…",
    "removePool": "Remove pool",
    "removeConfirm": "Remove this pool?",
    "pool": "Pool",
    "used": "used",
    "allocationsCount": "Allocations ({count})",
    "allocatedFree": "{allocated}% allocated · {free}% free",
    "noAllocations": "No keys allocated yet",
    "capLabel": "cap {value}",
    "notTrackedYet": "(not tracked yet)",
    "policy": "Policy",
    "policyHard": "hard",
    "policySoft": "soft",
    "policyBurst": "burst",
    "policyHardHint": "Block when key exhausts allocation",
    "policySoftHint": "Allow overflow, alert only",
    "policyBurstHint": "Allow burst into free pool",
    "editAllocations": "Edit allocations",
    "newPoolTitle": "New quota pool",
    "providerConnection": "Provider connection (account)",
    "selectConnection": "Select a connection…",
    "noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.",
    "quotaWindow": "Quota window",
    "selectWindow": "Select a window…",
    "alreadyUsedSuffix": "(already used)",
    "windowReset": "Reset",
    "duplicatePoolError": "A pool for this connection + window already exists",
    "cancel": "Cancel",
    "createPool": "Create pool",
    "editTitle": "Edit allocations",
    "noKeysAdded": "No keys allocated. Add one below.",
    "totalLabel": "Total: {percent}%",
    "totalExceeded": "⚠ exceeds 100%",
    "addKey": "+ Add key…",
    "equalSplit": "Equal split",
    "save": "Save allocations",
    "betaPreviewLabel": "베타 — UI 미리보기.",
    "betaConfigSavedPrefix": "구성은 다음 위치에 저장됩니다.",
    "betaConfigSavedSuffix": "(아직 서버에 유지되지 않음) 요청별 한도 적용은 아직 프록시 파이프라인에 연결되지 않았습니다. 이 화면을 사용하면 할당량 분할을 디자인하고 시각화할 수 있습니다. 실제 시행은 DB 지속성 및 업스트림 호출 차단을 통해 향후 반복에 착수할 것입니다.",
    "policyLabel": "정책:",
    "resetIn": "재설정",
    "quotaTotal": "합계"
  },
  "plugins": {
    "title": "Plugins",
    "description": "Install and manage plugins for extending OmniRoute functionality",
    "loading": "Loading plugins...",
    "scanning": "Scanning...",
    "scanForPlugins": "Scan for Plugins",
    "noPlugins": "No plugins installed",
    "noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.",
    "activate": "Activate",
    "deactivate": "Deactivate",
    "uninstall": "Uninstall",
    "uninstallConfirm": "Uninstall plugin \"{name}\"?",
    "pluginScanComplete": "Plugin scan complete",
    "pluginScanFailed": "Plugin scan failed",
    "activated": "{name} activated",
    "deactivated": "{name} deactivated",
    "activateFailed": "Failed to activate {name}",
    "deactivateFailed": "Failed to deactivate {name}",
    "uninstalled": "{name} uninstalled",
    "uninstallFailed": "Failed to uninstall {name}",
    "configure": "Configure: {name}",
    "configurePlugin": "Configure",
    "noConfigSettings": "This plugin has no configurable settings.",
    "saving": "Saving...",
    "saveConfiguration": "Save Configuration",
    "configurationSaved": "Configuration saved",
    "saveConfigurationFailed": "Failed to save configuration",
    "pluginNotFound": "Plugin not found",
    "version": "Version",
    "author": "Author",
    "description_label": "Description",
    "status": "Status",
    "enabled": "Enabled",
    "disabled": "Disabled",
    "hooks": "Hooks"
  }
}
