{
  "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": "ยอมรับ",
    "accountId": "รหัสบัญชี",
    "alias": "นามแฝง",
    "apiKeyId": "รหัสคีย์ API",
    "apiKeyName": "ชื่อคีย์ API",
    "apiKeySecret": "ความลับของคีย์ API",
    "authorization": "การอนุญาต",
    "content-type": "ประเภทเนื้อหา",
    "content-length": "ความยาวของเนื้อหา",
    "cookie": "คุกกี้",
    "file": "ไฟล์",
    "host": "โฮสต์",
    "id": "บัตรประจำตัวประชาชน",
    "import": "นำเข้า",
    "limit": "ขีดจำกัด",
    "offset": "ออฟเซ็ต",
    "open": "เปิด",
    "origin": "ต้นกำเนิด",
    "promptTokens": "โทเค็นพร้อมท์",
    "completionTokens": "โทเค็นการสำเร็จ",
    "totalTokens": "โทเค็นทั้งหมด",
    "rawModel": "โมเดลดิบ",
    "scope": "ขอบเขต",
    "skill": "ทักษะ",
    "sortBy": "เรียงตาม",
    "sortOrder": "เรียงลำดับ",
    "tab": "แท็บ",
    "text": "ข้อความ",
    "textarea": "พื้นที่ข้อความ",
    "tool": "เครื่องมือ",
    "toolId": "รหัสเครื่องมือ",
    "web": "เว็บ",
    "whereUsed": "ใช้ที่ไหน",
    "whitelist": "ไวท์ลิสต์",
    "blacklist": "บัญชีดำ",
    "resolve": "แก้ไข",
    "force": "บังคับ",
    "base64url": "URL Base64",
    "hex": "ฐานสิบหก",
    "range": "พิสัย",
    "component": "ส่วนประกอบ",
    "redirect_uri": "เปลี่ยนเส้นทาง URI",
    "idempotency-key": "คีย์ Idempotency",
    "error_description": "คำอธิบายข้อผิดพลาด",
    "code": "รหัส",
    "compatible": "เข้ากันได้",
    "chat-completions": "เสร็จสิ้นการแชท",
    "oauth": "OAuth",
    "auth_token": "โทเค็นการรับรองความถูกต้อง",
    "crypto": "การเข้ารหัสลับ",
    "hours": "ชั่วโมง",
    "selfsigned": "ลงนามด้วยตนเอง",
    "proxy_id": "รหัสพร็อกซี",
    "proxyId": "รหัสพร็อกซี",
    "connectionId": "รหัสการเชื่อมต่อ",
    "resolveConnectionId": "แก้ไขรหัสการเชื่อมต่อ",
    "resolve_connection_id": "แก้ไขรหัสการเชื่อมต่อ",
    "scope_id": "รหัสขอบเขต",
    "scopeId": "รหัสขอบเขต",
    "jwtSecret": "ความลับเจดับเบิ้ลยูที",
    "keytar": "คีย์ตาร์",
    "better-sqlite3": "ดีกว่า-sqlite3",
    "undici": "อูนดิ",
    "builder-id": "รหัสผู้สร้าง",
    "musicDesc": "คำอธิบายเพลง",
    "musicGeneration": "ดนตรีเจเนอเรชั่น",
    "idc": "ไอดีซี",
    "cloud-status-changed": "สถานะคลาวด์เปลี่ยนไป",
    "where_used": "ใช้ที่ไหน",
    "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": "เชื่อมต่อผู้ให้บริการ AI เพื่อเริ่มคำขอกำหนดเส้นทางผ่าน OmniRoute คุณสามารถใช้ผู้ให้บริการฟรี, คีย์ 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": "ผู้ดูแลระบบ Gamification",
    "monitorAnomaliesAndHealth": "ตรวจสอบความผิดปกติและสุขภาพของระบบ",
    "flaggedAnomalies": "ความผิดปกติที่ถูกตั้งค่าสถานะ",
    "noAnomaliesDetected": "ไม่พบความผิดปกติ",
    "apiKey": "คีย์ API",
    "xpLastHour": "ประสบการณ์ (1ชม.)",
    "zScore": "Z-คะแนน",
    "tokensCommunityServers": "เซิร์ฟเวอร์ชุมชน",
    "tokensServerNamePlaceholder": "ชื่อเซิร์ฟเวอร์",
    "tokensApiKeyPlaceholder": "คีย์เอพีไอ",
    "tokensTokenBalance": "ยอดคงเหลือโทเค็น",
    "tokensSendTokens": "ส่งโทเค็น",
    "tokensRecipientApiKeyId": "รหัสคีย์ API ของผู้รับ",
    "tokensRecipientApiKeyIdPlaceholder": "ป้อนรหัสคีย์ API ของผู้รับ",
    "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": "Playground",
    "searchTools": "Search Tools",
    "agents": "เอเจนต์",
    "cloudAgents": "ตัวแทนคลาวด์",
    "memory": "Memory",
    "skills": "Skills",
    "omniSkills": "OmniSkills",
    "agentSkills": "ทักษะตัวแทน",
    "docs": "เอกสาร",
    "issues": "ประเด็นต่างๆ",
    "endpoints": "จุดปลายทาง",
    "endpointsSubtitle": "URL การเชื่อมต่อ AI ของคุณ",
    "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": "ธีมส์",
    "presetColors": "สียอดนิยม",
    "createTheme": "สร้างธีม",
    "chooseColor": "เลือกหนึ่งสี",
    "themeCoral": "ปะการัง",
    "themeBlue": "สีฟ้า",
    "themeRed": "สีแดง",
    "themeGreen": "สีเขียว",
    "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": "Webhooks ที่กำหนดค่าแล้ว",
    "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": "บันทึก Webhook เรียบร้อยแล้ว",
    "saveFailed": "บันทึกเว็บฮุคไม่สำเร็จ",
    "loadFailed": "โหลด webhooks ไม่สำเร็จ",
    "delete": "ลบ",
    "deleteConfirm": "คุณแน่ใจหรือไม่ว่าต้องการลบเว็บฮุคนี้",
    "deleteSuccess": "ลบ Webhook เรียบร้อยแล้ว",
    "deleteFailed": "ลบเว็บฮุคไม่สำเร็จ",
    "edit": "แก้ไข",
    "enable": "เปิดใช้งาน",
    "disable": "ปิดการใช้งาน",
    "noWebhooks": "ยังไม่มีการกำหนดค่า webhooks",
    "signatureTitle": "ลายเซ็นเว็บฮุค",
    "signatureDescription": "การจัดส่งแต่ละครั้งจะมีส่วนหัว X-Webhook-Signature ที่ลงนามกับ HMAC-SHA256 โดยใช้ความลับของเว็บฮุค ตรวจสอบลายเซ็นก่อนที่จะเชื่อถือเพย์โหลด",
    "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": "การตรวจสอบ อสม",
    "title": "การตรวจสอบการปฏิบัติตามข้อกำหนด",
    "description": "นโยบาย การเข้าถึง ผู้ให้บริการ และเหตุการณ์ด้านความปลอดภัยที่บันทึกโดยบันทึกการตรวจสอบการปฏิบัติตามข้อกำหนด",
    "eventType": "ประเภทเหตุการณ์",
    "eventTypePlaceholder": "กรองตามการกระทำหรือประเภทเหตุการณ์",
    "severity": "ความรุนแรง",
    "allSeverities": "ความรุนแรงทั้งหมด",
    "info": "ข้อมูล",
    "warning": "คำเตือน",
    "critical": "สำคัญ",
    "sourceIp": "IP ต้นทาง",
    "userOrKey": "ผู้ใช้ / คีย์",
    "action": "การดำเนินการ",
    "result": "ผลลัพธ์",
    "details": "รายละเอียด",
    "timestamp": "การประทับเวลา",
    "from": "จาก",
    "to": "ถึง",
    "refresh": "รีเฟรช",
    "export": "ส่งออก",
    "clearFilters": "ล้างตัวกรอง",
    "loading": "กำลังโหลดกิจกรรมการตรวจสอบ...",
    "showing": "กำลังแสดง {count} จาก {total} กิจกรรม",
    "policyViolation": "การละเมิดนโยบาย",
    "accessDenied": "การเข้าถึงถูกปฏิเสธ",
    "injectionBlocked": "การฉีดถูกบล็อก",
    "noEvents": "ไม่มีการบันทึกเหตุการณ์การปฏิบัติตามข้อกำหนด",
    "failedFetch": "ดึงบันทึกการตรวจสอบการปฏิบัติตามข้อกำหนดไม่สำเร็จ",
    "viewDetails": "ดูรายละเอียด",
    "closeDetails": "ปิดรายละเอียด",
    "notAvailable": "—",
    "system": "ระบบ",
    "previous": "ก่อนหน้า",
    "next": "ถัดไป",
    "mcpAudit": "การตรวจสอบ อสม",
    "mcpAuditDesc": "รายการตรวจสอบการเรียกเครื่องมือที่บันทึกโดยเซิร์ฟเวอร์ MCP",
    "failedFetchMcpAudit": "ดึงข้อมูลบันทึกการตรวจสอบ MCP ไม่สำเร็จ",
    "tool": "เครื่องมือ",
    "toolPlaceholder": "กรองตามชื่อเครื่องมือ",
    "duration": "ระยะเวลา",
    "apiKey": "คีย์ API",
    "output": "เอาท์พุต",
    "allResults": "ผลลัพธ์ทั้งหมด",
    "success": "ความสำเร็จ",
    "failure": "ความล้มเหลว",
    "noMcpEvents": "ไม่มีการบันทึกเหตุการณ์การตรวจสอบ MCP",
    "a2aAudit": "การตรวจสอบ A2A",
    "a2aAuditDesc": "เส้นทางการตรวจสอบการดำเนินการงานที่บันทึกโดยเซิร์ฟเวอร์ A2A",
    "a2aShowingTasks": "กำลังแสดง {count} จาก {total} งาน",
    "a2aSkill": "ทักษะ",
    "a2aSkillPlaceholder": "กรองตามชื่อทักษะ",
    "a2aState": "รัฐ",
    "a2aAllStates": "ทุกรัฐ",
    "a2aStateSubmitted": "ส่งแล้ว",
    "a2aStateWorking": "ทำงาน",
    "a2aStateCompleted": "เสร็จสิ้น",
    "a2aStateFailed": "ล้มเหลว",
    "a2aStateCancelled": "ยกเลิกแล้ว",
    "a2aTaskId": "รหัสงาน",
    "a2aEvents": "กิจกรรม",
    "a2aArtifacts": "สิ่งประดิษฐ์",
    "a2aNoTasks": "ไม่มีการบันทึกงาน A2A",
    "a2aLoadingTasks": "กำลังโหลดงาน A2A..."
  },
  "themesPage": {
    "title": "ธีมส์",
    "description": "Choose a preset theme or create your own with a single color",
    "presetColors": "สียอดนิยม",
    "customTheme": "Custom theme",
    "customThemeDesc": "Click create theme and pick one color",
    "createTheme": "สร้างธีม",
    "activePreset": "Active theme"
  },
  "header": {
    "logout": "ออกจากระบบ",
    "language": "ภาษา",
    "providers": "ผู้ให้บริการ",
    "providerDescription": "จัดการการเชื่อมต่อผู้ให้บริการ AI ของคุณ",
    "combos": "คอมโบ",
    "comboDescription": "คอมโบโมเดลพร้อมทางเลือกสำรอง",
    "usage": "การใช้งานและการวิเคราะห์",
    "usageDescription": "ตรวจสอบการใช้งาน API การใช้โทเค็น และบันทึกคำขอของคุณ",
    "analytics": "การวิเคราะห์",
    "analyticsDescription": "แผนภูมิ แนวโน้ม และข้อมูลเชิงลึกในการประเมิน",
    "cliTools": "เครื่องมือ CLI",
    "cliToolsDescription": "กำหนดค่าเครื่องมือ CLI",
    "home": "บ้าน",
    "homeDescription": "ยินดีต้อนรับสู่ OmniRoute",
    "endpoint": "Endpoints",
    "endpointDescription": "Manage proxy endpoints, MCP, A2A, and API endpoints",
    "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": "ธีมส์",
    "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": "คลีไอ",
    "featureFlagsCategoryHealth": "สุขภาพ",
    "featureFlagsSourceDb": "ดีบี",
    "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": "ตั้งค่า URL พื้นฐานเป็น {url} ใน IDE หรือไคลเอ็นต์ API ของคุณ",
    "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": "ใช้คีย์ API ในส่วนหัวการอนุญาตเป็น Bearer YOUR_KEY",
    "tipSecure": "ในระหว่างการสร้างคีย์จะแสดงเพียงครั้งเดียว — เก็บไว้อย่างปลอดภัย",
    "tipSeparate": "สร้างคีย์แยกต่างหากสำหรับไคลเอนต์หรือสภาพแวดล้อมที่แตกต่างกัน",
    "tipRestrict": "จำกัดคีย์ไว้ที่รุ่นเฉพาะเพื่อความปลอดภัยและการควบคุมต้นทุนที่ดีขึ้น",
    "keyName": "ชื่อคีย์",
    "keyNamePlaceholder": "เช่น คีย์การผลิต คีย์การพัฒนา",
    "keyNameDesc": "เลือกชื่อที่สื่อความหมายเพื่อระบุวัตถุประสงค์ของคีย์นี้",
    "managementAccessDesc": "อนุญาตให้คีย์ API นี้จัดการการกำหนดค่า OmniRoute",
    "selfServiceVisibility": "การมองเห็นแบบบริการตนเอง",
    "selfServiceVisibilityDesc": "ควบคุมว่าคีย์นี้สามารถดูอะไรเกี่ยวกับการใช้งานของตนเองและโควตา upstream ที่ใช้ร่วมกันได้บ้าง",
    "ownUsageVisibility": "ต้นทุนและการใช้โทเคนของตนเอง",
    "ownUsageVisibilityDesc": "อนุญาตให้คีย์นี้เรียก status endpoint ของตนเองเพื่อดูการใช้งาน USD เปอร์เซ็นต์งบประมาณ และยอดรวมโทเคนของตนเอง",
    "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": "คีย์นี้สามารถเข้าถึงโมเดล {selected} จาก {total}",
    "selected": "{count} เลือกแล้ว",
    "all": "ทั้งหมด",
    "clear": "ชัดเจน",
    "searchModels": "ค้นหารุ่นตามชื่อหรือผู้ให้บริการ...",
    "noModelsFound": "ไม่พบรุ่น",
    "keyNameRequired": "ต้องระบุชื่อคีย์",
    "keyNameTooLong": "ชื่อคีย์ต้องมีอักขระ {max} ตัวหรือน้อยกว่า",
    "keyNameInvalid": "ชื่อคีย์มีได้เฉพาะตัวอักษร ตัวเลข ช่องว่าง ขีดกลาง และขีดล่างเท่านั้น",
    "invalidKeyName": "ชื่อคีย์ไม่ถูกต้อง",
    "failedCreateKey": "ไม่สามารถสร้างคีย์ได้",
    "failedCreateKeyRetry": "ไม่สามารถสร้างคีย์ได้ โปรดลองอีกครั้ง",
    "invalidKeyId": "รหัสคีย์ไม่ถูกต้อง",
    "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": "คีย์นี้สามารถเข้าถึงโมเดล {selectedCount} จาก {totalModels}",
    "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}d ที่แล้ว",
    "monthsAgoShort": "{count}เดือนที่แล้ว",
    "yearsAgoShort": "{count}ปีที่แล้ว",
    "runtimeCheckFailed": "การตรวจสอบรันไทม์ล้มเหลว",
    "yourApiKeyPlaceholder": "รหัส API ของคุณ",
    "modelPlaceholder": "ผู้ให้บริการ/รหัสรุ่น",
    "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. เปิด Antigravity และคำขอจะถูกส่งผ่านพรอกซี",
    "mitmHowWorksDesc": "{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.",
    "mitmStep1": "1. Start MITM to route requests through OmniRoute.",
    "mitmStep2Prefix": "2. Add",
    "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": "ผู้ให้บริการ/รหัสรุ่น",
    "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": "Open Claw - การกำหนดค่าด้วยตนเอง",
    "clineManualConfiguration": "การกำหนดค่าด้วยตนเองของไคลน์",
    "kiloManualConfiguration": "การกำหนดค่าด้วยตนเองของรหัสกิโล",
    "whenToUseLabel": "เมื่อจะใช้",
    "openToolDocs": "เปิดเอกสารเครื่องมือ",
    "toolUseCases": {
      "claude": "ใช้เมื่อคุณต้องการเวิร์กโฟลว์การวางแผนที่แข็งแกร่งและรีแฟคเตอร์หลายไฟล์แบบยาวด้วย Claude Code",
      "codex": "ใช้เมื่อทีมของคุณได้รับมาตรฐานในโฟลว์ OpenAI Codex CLI และการตรวจสอบสิทธิ์ตามโปรไฟล์",
      "droid": "ใช้เมื่อคุณต้องการเอเจนต์เทอร์มินัลน้ำหนักเบาที่เน้นไปที่การเขียนโค้ดที่รวดเร็วและลูปการดำเนินการคำสั่ง",
      "openclaw": "ใช้เมื่อคุณต้องการเอเจนต์การเข้ารหัสสไตล์ Open Claw แต่กำหนดเส้นทางผ่านนโยบาย OmniRoute",
      "cline": "ใช้เมื่อคุณกำหนดค่าเอเจนต์การเขียนโค้ดภายในโปรแกรมแก้ไข และต้องการการตั้งค่าที่แนะนำด้วยโมเดล OmniRoute",
      "kilo": "ใช้เมื่อเวิร์กโฟลว์ของคุณขึ้นอยู่กับคำสั่ง Kilo Code และการแก้ไขซ้ำอย่างรวดเร็ว",
      "cursor": "ใช้เมื่อเขียนโค้ดในเคอร์เซอร์และคุณต้องการโมเดลที่เข้ากันได้กับ OpenAI แบบกำหนดเองผ่าน OmniRoute",
      "continue": "ใช้เมื่อเรียกใช้ดำเนินการต่อใน IDE และคุณต้องกำหนดค่าผู้ให้บริการที่ใช้ JSON แบบพกพา",
      "opencode": "ใช้เมื่อคุณต้องการเรียกใช้ Terminal-Native Agent และใช้สคริปต์อัตโนมัติผ่าน 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": "ใช้เมื่อคุณต้องการ UX รูปแบบการแชทของ Copilot ในขณะที่บังคับใช้คีย์ OmniRoute และกฎการกำหนดเส้นทาง",
      "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": "Google ต้านแรงโน้มถ่วง IDE พร้อม MITM",
      "claude": "รหัสมานุษยวิทยา Claude CLI",
      "codex": "OpenAI Codex CLI",
      "droid": "ผู้ช่วย AI จากโรงงาน Droid",
      "openclaw": "เปิดผู้ช่วย AI ของ Claw",
      "cline": "Cline AI ผู้ช่วยเข้ารหัส CLI",
      "kilo": "กิโลโค้ด AI Assistant 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": "ผู้ช่วยเทอร์มินัล Hermes AI",
      "hermes-agent": "__MISSING__:Hermes Agent (by Nousresearch) - Advanced terminal AI with multi-model support (delegation, vision, compression, etc.)",
      "custom": "ตัวสร้างการกำหนดค่า CLI หรือ SDK ที่เข้ากันได้กับ OpenAI ทั่วไป"
    },
    "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": "ใช้ไฟล์กำหนดค่า 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": "เครื่องมือสร้าง CLI ที่เข้ากันได้กับ OpenAI",
    "customCliBuilderDescription": "สร้าง env vars และข้อมูลโค้ด JSON สำหรับ CLI หรือ SDK ใดๆ ที่ยอมรับ URL พื้นฐาน, คีย์ API และรหัสโมเดลที่เข้ากันได้กับ OpenAI",
    "customCliNoModels": "เชื่อมต่อผู้ให้บริการอย่างน้อยหนึ่งรายเพื่อเติมตัวเลือกโมเดล",
    "customCliNameLabel": "ชื่อคลี",
    "customCliNamePlaceholder": "เช่น ทีมของฉัน CLI",
    "customCliDefaultModelLabel": "โมเดลเริ่มต้น",
    "customCliDefaultModelHelp": "ใช้รหัสรุ่น OmniRoute หรือคอมโบใดๆ CLI ที่เข้ากันได้กับ OpenAI ส่วนใหญ่ต้องการเพียง URL พื้นฐาน /v1 บวกกับสตริงโมเดล",
    "customCliKeyHelper": "สำหรับการติดตั้งในเครื่อง OmniRoute สามารถใช้ sk_omniroute ได้ ในโหมดคลาวด์ ให้เลือกคีย์ API การจัดการของคุณ",
    "customCliAliasMappingsLabel": "การแมปนามแฝง",
    "customCliAliasMappingsHelp": "นามแฝงตัวช่วยเพิ่มเติมสำหรับสคริปต์ wrapper หรือไฟล์กำหนดค่าที่ต้องการชื่อชวเลขที่เสถียร",
    "customCliAddAlias": "เพิ่มนามแฝง",
    "customCliNoMappings": "ยังไม่มีการแมปนามแฝง เพิ่มหนึ่งรายการหาก wrapper หรือสคริปต์ทีมของคุณใช้ชื่อย่อที่มั่นคง",
    "customCliAliasPlaceholder": "เช่น ทบทวน",
    "customCliTargetModelLabel": "โมเดลเป้าหมาย",
    "customCliEndpointHintLabel": "วิธีการต่อสายปลายทาง",
    "customCliEndpointHint": "ชี้ไคลเอ็นต์ที่เข้ากันได้กับ OpenAI ไปที่ URL พื้นฐาน OmniRoute /v1 จุดสิ้นสุดการแชทที่เสร็จสิ้นโดยดิบคือ {endpoint} ใช้บล็อก JSON เมื่อเครื่องมือต้องการวัตถุของผู้ให้บริการ หรือใช้สคริปต์ env เมื่ออ่านตัวแปร OPENAI_*",
    "customCliEnvBlockTitle": "Env / ข้อมูลโค้ดเชลล์",
    "customCliJsonBlockTitle": "บล็อก JSON ของผู้ให้บริการ",
    "copilotConfigGenerator": "เครื่องมือสร้างการกำหนดค่า GitHub Copilot",
    "copilotApiKey": "คีย์ API",
    "copilotFilterModelsPlaceholder": "กรองรุ่น...",
    "copilotMaxInputTokens": "โทเค็นอินพุตสูงสุด",
    "copilotMaxOutputTokens": "โทเค็นเอาต์พุตสูงสุด",
    "copilotToolCalling": "การเรียกเครื่องมือ",
    "copilotPasteInto": "วางลงใน: ",
    "wireApiChatCompletions": "เสร็จสิ้นการแชท (/แชท/เสร็จสิ้น)",
    "wireApiResponses": "API การตอบกลับ (/การตอบกลับ)"
  },
  "combos": {
    "title": "คอมโบ",
    "description": "สร้างโมเดลคอมโบด้วยการกำหนดเส้นทางแบบถ่วงน้ำหนักและการสนับสนุนทางเลือก",
    "autoCatalogTitle": "แค็ตตาล็อกการกำหนดเส้นทางอัตโนมัติ",
    "autoCatalogTemplateCount": "{count} เทมเพลต",
    "autoCatalogDescription": "คอมโบอัตโนมัติ/* ในตัวได้รับการแก้ไขแบบไดนามิกจากผู้ให้บริการที่เชื่อมต่อ ใช้รหัสเหล่านี้เป็นช่องโมเดล โดยไม่จำเป็นต้องตั้งค่าใดๆ",
    "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": "รีเซ็ต-Aware RR",
    "resetAwareDesc": "ปรับโควต้าที่เหลือให้สมดุลกับการรีเซ็ต 5 ชม. และการรีเซ็ตรายสัปดาห์ จากนั้นจึงทำคะแนนแบบ Round-Robins ที่คล้ายกัน",
    "strictRandom": "Strict Random",
    "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling",
    "models": "โมเดล",
    "autoBalance": "ปรับสมดุลอัตโนมัติ",
    "advancedSettings": "การตั้งค่าขั้นสูง",
    "retryDelay": "ความล่าช้าในการลองอีกครั้ง (มิลลิวินาที)",
    "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": "ตั้งค่าความล่าช้าในการลองใหม่ (มิลลิวินาที)",
    "moveUp": "เลื่อนขึ้น",
    "moveDown": "เลื่อนลง",
    "removeModel": "ลบ",
    "saving": "กำลังบันทึก...",
    "weighted": "ถ่วงน้ำหนัก",
    "leastUsed": "ใช้น้อยที่สุด",
    "costOpt": "ต้นทุน-การเลือก",
    "strategyGuideTitle": "How to use this strategy",
    "strategyGuideWhen": "When to use",
    "strategyGuideAvoid": "Avoid when",
    "strategyGuideExample": "Example",
    "strategyGuide": {
      "priority": {
        "when": "You have one preferred model and only want fallback on failure.",
        "avoid": "You need request distribution across models.",
        "example": "Primary coding model with cheaper backup for outages."
      },
      "weighted": {
        "when": "You need controlled traffic split across models.",
        "avoid": "You cannot maintain accurate weights over time.",
        "example": "80% stable model + 20% canary model rollout."
      },
      "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": "ต้องการให้บัญชีรายสัปดาห์ 60% รีเซ็ตในวันพรุ่งนี้ มากกว่าบัญชี 80% ที่จะรีเซ็ตในภายหลัง"
      },
      "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": "ตัวอย่าง: ใช้เครดิต Deepgram มูลค่า $200 ทั้งหมดก่อนที่จะกลับไปใช้ Groq"
      },
      "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": "/รูปแบบ regex/",
    "agentFeaturesToolFilterHint": "เครื่องมือกรอง regex สำหรับตัวแทน",
    "agentFeaturesContextCacheHint": "เปิดใช้งานแคชในบริบทสำหรับเครื่องมือตัวแทน",
    "agentFeaturesContextCacheProtection": "ป้องกันแคชจากการเปลี่ยนแปลงเครื่องมือเอเจนต์",
    "agentFeaturesContextLength": "ความยาวบริบท",
    "agentFeaturesContextLengthPlaceholder": "เช่น 128000",
    "agentFeaturesContextLengthHint": "กำหนดหน้าต่างบริบทสำหรับคอมโบนี้ใน /v1/models",
    "agentFeaturesContextLengthErrorInteger": "ความยาวของบริบทต้องเป็นจำนวนเต็มที่ถูกต้อง",
    "agentFeaturesContextLengthErrorRange": "ความยาวของบริบทต้องอยู่ระหว่าง 1,000 ถึง 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": "แสดง {shown} จาก {total} แถวที่ตรงกัน",
    "showingTopCostRows": "แสดง {shown} จาก {total} แถวที่ตรงกัน (50 อันดับแรก)"
  },
  "endpoint": {
    "title": "จุดสิ้นสุด API",
    "available": "จุดสิ้นสุดที่มีอยู่",
    "cloudProxy": "พร็อกซีคลาวด์",
    "disableConfirm": "คุณแน่ใจหรือไม่ว่าต้องการปิดใช้งานพร็อกซีระบบคลาวด์",
    "baseUrl": "URL ฐาน",
    "apiKeyLabel": "คีย์ API",
    "registeredKeys": "คีย์ที่ลงทะเบียน",
    "chatCompletions": "เสร็จสิ้นการแชท",
    "responses": "คำตอบ",
    "listModels": "รายการโมเดล",
    "usingCloudProxy": "การใช้พร็อกซีคลาวด์",
    "usingLocalServer": "การใช้เซิร์ฟเวอร์ท้องถิ่น",
    "machineId": "หมายเลขเครื่อง: {id}...",
    "disableCloud": "ปิดการใช้งานคลาวด์",
    "enableCloud": "เปิดใช้งานคลาวด์",
    "modelsAcrossEndpoints": "{models} โมเดลข้ามจุดสิ้นสุด {endpoints}",
    "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": "OpenAI Responses API สำหรับ Codex และเวิร์กโฟลว์เอเจนต์ขั้นสูง",
    "listModelsDesc": "แสดงรายการโมเดลที่ใช้ได้ทั้งหมดจากผู้ให้บริการที่เชื่อมต่อ",
    "settingsApiDesc": "อ่านและแก้ไขการกำหนดค่า OmniRoute ผ่าน API",
    "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": "เครือข่าย Edge ระดับโลกที่รวดเร็ว",
    "cloudSessionNote": "คลาวด์จะเก็บเซสชันการตรวจสอบสิทธิ์ของคุณไว้เป็นเวลา 1 วัน หากไม่ได้ใช้ก็จะถูกลบโดยอัตโนมัติ",
    "cloudUnstableNote": "ขณะนี้ระบบคลาวด์ไม่เสถียรด้วย Claude Code OAuth ในบางกรณี",
    "cloudConnected": "เชื่อมต่อพร็อกซีคลาวด์แล้ว!",
    "connectingToCloud": "กำลังเชื่อมต่อกับคลาวด์...",
    "verifyingConnection": "กำลังยืนยันการเชื่อมต่อ...",
    "connecting": "กำลังเชื่อมต่อ...",
    "verifying": "กำลังยืนยัน...",
    "connected": "เชื่อมต่อแล้ว!",
    "disableCloudTitle": "ปิดการใช้งานพร็อกซีคลาวด์",
    "disableWarning": "เซสชันการตรวจสอบสิทธิ์ทั้งหมดจะถูกลบออกจากระบบคลาวด์",
    "syncingData": "กำลังซิงค์ข้อมูลล่าสุด...",
    "disablingCloud": "กำลังปิดใช้งานระบบคลาวด์...",
    "syncing": "กำลังซิงค์...",
    "disabling": "กำลังปิดการใช้งาน...",
    "cloudConnectedVerified": "เชื่อมต่อและยืนยัน Cloud Proxy แล้ว!",
    "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": "รูปแบบ Native Anthropic Messages API สำหรับผู้ให้บริการที่เข้ากันได้กับ Claude",
    "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": "สร้างอุโมงค์งรกสาธารณะ",
    "ngrokAuthTokenLabel": "Authtoken (จำเป็นหากไม่ได้ตั้งค่า NGROK_AUTHTOKEN)",
    "ngrokAuthTokenPlaceholder": "ป้อน ngrok authtoken ของคุณ",
    "ngrokLastError": "ข้อผิดพลาดล่าสุด: {error}",
    "ngrokStarted": "อุโมงค์งรกเริ่มแล้ว",
    "ngrokStopped": "อุโมงค์งรกหยุดแล้ว",
    "ngrokRequestFailed": "ไม่สามารถอัปเดตอุโมงค์ ngrok",
    "tokenSaverSubtitle": "ใช้โทเค็นน้อยลงในทุกคำขอ",
    "tokenSaverToolOutput": "เอาท์พุตเครื่องมือ",
    "tokenSaverLlmOutput": "เอาท์พุท LLM",
    "tokenSaverInputCompression": "การบีบอัดอินพุต",
    "apiEndpointsCatalogUnavailable": "แค็ตตาล็อก API ไม่พร้อมใช้งาน",
    "apiEndpointsSearchPlaceholder": "ค้นหาปลายทาง...",
    "apiEndpointsRequiresAuth": "ต้องมีการตรวจสอบสิทธิ์",
    "apiEndpointsNoMatch": "ไม่มีปลายทางที่ตรงกับตัวกรองของคุณ",
    "localServer": "เซิร์ฟเวอร์ท้องถิ่น",
    "cloudOmniroute": "คลาวด์ OmniRoute",
    "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": "Endpoint Proxy",
    "tabApiEndpoints": "API Endpoints",
    "apiEndpointsTitle": "API Endpoints",
    "apiEndpointsDescription": "Backend API endpoints that can be consumed by other applications and services. This section will list all available REST APIs with documentation and testing capabilities.",
    "comingSoon": "Coming Soon",
    "plannedFeatures": "Planned Features",
    "featureRestApi": "REST API endpoint catalog with interactive documentation",
    "featureWebhooks": "Webhook configuration and event subscriptions",
    "featureSwagger": "OpenAPI / Swagger spec auto-generation",
    "featureAuth": "API key and OAuth scope management per endpoint"
  },
  "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": "ผลลัพธ์",
    "tableApiKey": "คีย์เอพีไอ",
    "failed": "ล้มเหลว",
    "previous": "ก่อนหน้า",
    "next": "ต่อไป",
    "apiKeyId": "Api Key Id",
    "offset": "Offset",
    "limit": "Limit",
    "tool": "Tool"
  },
  "a2aDashboard": {
    "loading": "กำลังโหลดแดชบอร์ด A2A...",
    "confirmCancelTask": "ยกเลิกงาน {taskId}?",
    "cancelTaskFailed": "ยกเลิกงานไม่สำเร็จ",
    "cancelTaskSuccess": "งาน {taskId} ถูกยกเลิก",
    "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": "ล้มเหลว",
      "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": "No tasks found for current filters.",
    "tableTask": "Task",
    "tableSkill": "Skill",
    "tableState": "State",
    "tableUpdated": "Updated",
    "tableActions": "Actions",
    "view": "View",
    "cancel": "Cancel",
    "previous": "ก่อนหน้า",
    "next": "ต่อไป",
    "taskDetail": "Task detail",
    "close": "Close",
    "metadata": "Metadata",
    "events": "Events",
    "artifacts": "Artifacts",
    "tablePhase": "Table Phase",
    "offset": "Offset",
    "limit": "Limit",
    "skill": "Skill",
    "rpcEndpoint": "โพสต์ /a2a",
    "rpcMethodSend": "ข้อความ/ส่ง",
    "rpcMethodStream": "ข้อความ/สตรีม",
    "rpcMethodGet": "งาน/รับ",
    "rpcMethodCancel": "งาน/ยกเลิก",
    "serviceLabel": "เอทูเอ",
    "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": "เช่น user.preferences.theme",
    "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": "ซีพียู",
    "database": "ฐานข้อมูล",
    "version": "เวอร์ชัน",
    "lastCheck": "ตรวจสอบครั้งสุดท้าย",
    "providerHealth": "สุขภาพของผู้ให้บริการ",
    "systemMetrics": "ตัวชี้วัดของระบบ",
    "tokenHealth": "โทเค็นสุขภาพ",
    "refreshAll": "รีเฟรชทั้งหมด",
    "checkNow": "ตรวจสอบตอนนี้",
    "loadingHealth": "กำลังโหลดข้อมูลสุขภาพ...",
    "failedToLoad": "ไม่สามารถโหลดข้อมูลสุขภาพ: {error}",
    "retry": "ลองอีกครั้ง",
    "allOperational": "ใช้งานได้ทุกระบบ",
    "issuesDetected": "ตรวจพบปัญหาของระบบ",
    "updatedAt": "อัปเดต {time}",
    "latency": "เวลาแฝง",
    "latencyP50": "หน้า 50",
    "latencyP95": "หน้า 95",
    "latencyP99": "หน้า 99",
    "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": "รหัสผ่านซูโด้",
    "cachedPassword": "แคชไว้สำหรับกระบวนการนี้",
    "saveSettings": "บันทึกการตั้งค่า",
    "settingsSaved": "บันทึกการตั้งค่า MITM แล้ว",
    "startedSuccess": "พร็อกซี MITM เริ่มต้นขึ้น",
    "stoppedSuccess": "พร็อกซี MITM หยุดทำงาน",
    "saveFailed": "ไม่สามารถอัปเดตการตั้งค่า MITM",
    "loadFailed": "ไม่สามารถโหลดการตั้งค่า MITM",
    "invalidPort": "การสกัดกั้น MITM แบบโปร่งใสในปัจจุบันต้องใช้พอร์ต 443",
    "certificate": "ใบรับรองแคลิฟอร์เนีย",
    "certificateReady": "ใบรับรองพร้อมใช้งานสำหรับการติดตั้งไคลเอ็นต์ที่เชื่อถือได้",
    "certificateMissing": "ยังไม่ได้สร้างใบรับรอง",
    "available": "มีจำหน่าย",
    "missing": "หายไป",
    "downloadCert": "ดาวน์โหลดใบรับรอง CA",
    "regenerateCert": "สร้างใบรับรองใหม่",
    "regenerateConfirm": "สิ่งนี้จะทำให้ความไว้วางใจของลูกค้าที่มีอยู่เป็นโมฆะ ดำเนินการต่อ?",
    "regenerateSuccess": "สร้างใบรับรอง MITM ใหม่แล้ว",
    "regenerateFailed": "ไม่สามารถสร้างใบรับรอง MITM ใหม่ได้",
    "targetRoutes": "เส้นทางเป้าหมาย",
    "interceptedRequests": "คำขอที่ถูกสกัดกั้น",
    "activeConnections": "การเชื่อมต่อที่ใช้งานอยู่",
    "dnsConfigured": "กำหนดค่า DNS แล้ว",
    "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 แบ่งผู้ให้บริการออกเป็นสามระดับ ดังนั้นการกำหนดเส้นทางจึงเลือกเส้นทางที่น่าเชื่อถือที่สุดและต้นทุนต่ำที่สุดก่อน",
      "tier1": {
        "label": "ลูกค้าระดับพรีเมียม",
        "description": "CLI ระดับเฟิร์สคลาสพร้อมโฟลว์การตรวจสอบสิทธิ์และโมเดลการใช้เหตุผลแบบดั้งเดิม"
      },
      "tier2": {
        "label": "ปรับต้นทุนให้เหมาะสม",
        "description": "ผู้ให้บริการราคาถูกและมีปริมาณงานสูงใช้สำหรับการรับส่งข้อมูลทุกวัน"
      },
      "tier3": {
        "label": "ทางเลือกและความพิเศษ",
        "description": "จุดสิ้นสุดที่โฮสต์ในเครื่องหรือแบบพิเศษที่ใช้เป็นทางเลือก"
      },
      "configure": "กำหนดค่าผู้ให้บริการ"
    },
    "tierFlowDiagramAlt": "แผนภาพทางเลือก OmniRoute 3 ระดับ",
    "apiKeyMgmt": "การจัดการคีย์ API"
  },
  "providers": {
    "title": "ผู้ให้บริการ",
    "allProviders": "ผู้ให้บริการทั้งหมด",
    "audioProviders": "ผู้ให้บริการเสียง",
    "showFreeOnly": "ฟรีเท่านั้น",
    "addProvider": "เพิ่มผู้ให้บริการ",
    "addFirstProvider": "เพิ่มผู้ให้บริการรายแรกของคุณ",
    "addFirstProviderDesc": "เชื่อมต่อผู้ให้บริการ AI เพื่อเริ่มคำขอกำหนดเส้นทางผ่าน OmniRoute คุณสามารถใช้ผู้ให้บริการฟรี, คีย์ 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": "เช่น Production API, Dev Environment",
    "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": "ประเภทเอพีไอ",
    "prefixHint": "จำเป็น คำนำหน้าเฉพาะสำหรับชื่อรุ่น",
    "nameHint": "จำเป็น ป้ายกำกับที่เป็นมิตรสำหรับโหนดนี้",
    "baseUrlHint": "จำเป็น  URL ฐาน API ของผู้ให้บริการ",
    "anthropicPrefixPlaceholder": "ac-ผลิตภัณฑ์",
    "openaiPrefixPlaceholder": "oc-ผลิตภัณฑ์",
    "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": "นำไปใช้กับ Local Codex",
    "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": "กำลังนำเข้าโมเดล {current} จาก {total}...",
    "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": "OpenAI",
    "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": "รหัสรุ่น (จาก OpenRouter)",
    "openRouterModelPlaceholder": "มานุษยวิทยา / Claude-3-opus",
    "customModels": "โมเดลที่กำหนดเอง",
    "customModelsHint": "เพิ่มรหัสรุ่นที่ไม่ได้อยู่ในรายการเริ่มต้น สิ่งเหล่านี้จะพร้อมใช้งานสำหรับการกำหนดเส้นทาง",
    "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": "รหัสรุ่น",
    "customModelPlaceholder": "เช่น gpt-4.5-เทอร์โบ",
    "loading": "กำลังโหลด...",
    "removeCustomModel": "ลบโมเดลที่กำหนดเอง",
    "noCustomModels": "ยังไม่มีการเพิ่มโมเดลที่กำหนดเอง",
    "allSuggestedAliasesExist": "มีนามแฝงที่แนะนำทั้งหมดอยู่แล้ว โปรดเลือกรุ่นอื่นหรือลบนามแฝงที่ขัดแย้งกัน",
    "failedSaveCustomModel": "บันทึกโมเดลที่กำหนดเองไม่สำเร็จ",
    "modelAddedSuccess": "เพิ่มโมเดล {modelId} สำเร็จแล้ว",
    "failedAddModelTryAgain": "ไม่สามารถเพิ่มโมเดล โปรดลองอีกครั้ง",
    "failedSaveImportedModel": "ไม่สามารถบันทึกแบบจำลองที่นำเข้าไปยังฐานข้อมูลที่กำหนดเอง",
    "failedImportModelsTryAgain": "ไม่สามารถนำเข้าโมเดลได้ โปรดลองอีกครั้ง",
    "failedRemoveModelFromDatabase": "ไม่สามารถลบโมเดลออกจากฐานข้อมูล",
    "modelRemovedSuccess": "ลบโมเดลสำเร็จแล้ว",
    "failedDeleteModelTryAgain": "ลบโมเดลไม่สำเร็จ โปรดลองอีกครั้ง",
    "compatibleModelsDescription": "เพิ่มโมเดลที่เข้ากันได้กับ {type} ด้วยตนเองหรือนำเข้าจากตำแหน่งข้อมูล /models",
    "anthropicCompatibleModelPlaceholder": "คลอด-3-บทประพันธ์-20240229",
    "openaiCompatibleModelPlaceholder": "GPT-4o",
    "apiKeyValidationFailed": "การตรวจสอบคีย์ API ล้มเหลว โปรดตรวจสอบรหัสของคุณแล้วลองอีกครั้ง",
    "addProviderApiKeyTitle": "เพิ่ม {provider} คีย์ API",
    "checking": "กำลังตรวจสอบ...",
    "check": "ตรวจสอบ",
    "valid": "ถูกต้อง",
    "invalid": "ไม่ถูกต้อง",
    "creating": "กำลังสร้าง...",
    "validationChecksAnthropicCompatible": "การตรวจสอบความถูกต้องจะตรวจสอบ {provider} โดยการตรวจสอบคีย์ API",
    "validationChecksOpenAiCompatible": "การตรวจสอบความถูกต้องจะตรวจสอบ {provider} ผ่าน /models บน URL ฐานของคุณ",
    "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 (สำหรับการตรวจสอบ)",
    "compatibleProdPlaceholder": "{type} เข้ากันได้ (ผลิตภัณฑ์)",
    "tokenRefreshed": "Token refreshed successfully",
    "tokenRefreshFailed": "Token refresh failed",
    "applyCodexAuthLocal": "Apply auth",
    "exportCodexAuthFile": "Export auth",
    "applyClaudeAuthLocal": "ใช้การรับรองความถูกต้อง",
    "exportClaudeAuthFile": "รับรองการส่งออก",
    "importClaudeAuth": "นำเข้าการรับรองความถูกต้อง",
    "claudeApplyModalTitle": "ใช้กับรหัส Claude ท้องถิ่น",
    "claudeApplyTargetLabel": "เส้นทางเป้าหมาย",
    "claudeApplyBackupLabel": "การสำรองข้อมูล",
    "claudeApplyMcpHint": "สถานะ MCP OAuth ที่มีอยู่จะยังคงอยู่",
    "claudeApplyWarning": "สิ่งนี้จะแทนที่ส่วน claudeAiOauth ที่มีอยู่ ดำเนินการต่อ?",
    "claudeApplyConfirmCheckbox": "ฉันยืนยันว่าฉันต้องการแทนที่ส่วน claudeAiOauth ที่มีอยู่",
    "claudeApply": "สมัคร",
    "claudeAuthAppliedLocal": "Claude auth นำไปใช้ในเครื่อง",
    "claudeAuthApplyFailed": "ล้มเหลวในการใช้การรับรองความถูกต้องของ Claude ในเครื่อง",
    "claudeAuthExported": "ส่งออกไฟล์การรับรองความถูกต้องของ Claude แล้ว",
    "claudeAuthExportFailed": "ส่งออกไฟล์การรับรองความถูกต้องของ Claude ไม่สำเร็จ",
    "claudeImportModalTitle": "นำเข้า Claude Auth",
    "claudeImportTabSingle": "โสด",
    "claudeImportTabBulk": "เป็นกลุ่ม",
    "claudeImportTabUpload": "อัพโหลดไฟล์",
    "claudeImportTabPaste": "วาง JSON",
    "claudeImportFileLabel": "เลือก .credentials.json",
    "claudeImportPasteLabel": "วางเนื้อหา JSON",
    "claudeImportEmailLabel": "อีเมลบัญชี",
    "claudeImportNameLabel": "ชื่อการเชื่อมต่อ (ไม่บังคับ)",
    "claudeImportOverwriteLabel": "แทนที่การเชื่อมต่อที่มีอยู่หากมีบัญชีอยู่แล้ว",
    "claudeImportSubmit": "นำเข้า",
    "claudeImportSuccess": "นำเข้าการเชื่อมต่อ Claude สำเร็จแล้ว",
    "claudeImportInvalidJson": "ไม่สามารถแยกวิเคราะห์ไฟล์เป็น JSON",
    "claudeImportInvalidShape": "ไฟล์นี้ไม่ใช่ .credentials.json ที่ถูกต้อง",
    "claudeImportDuplicate": "มีบัญชีอยู่แล้ว — เปิดใช้งาน \"แทนที่ที่มีอยู่\" เพื่อเขียนทับ",
    "claudeImportIdentityUnverified": "Bootstrap ไม่สามารถยืนยันบัญชีได้ เปิดใช้งาน \"แทนที่ที่มีอยู่\" หรือระบุอีเมล",
    "claudeImportFailed": "ไม่สามารถนำเข้าการรับรองความถูกต้องของ Claude",
    "claudeImportBulkModeUpload": "อัพโหลดไฟล์",
    "claudeImportBulkModePaste": "วางอาร์เรย์ JSON",
    "claudeImportBulkModeZip": "อัปโหลด ZIP",
    "claudeImportBulkUploadHint": "วางหรือรับไฟล์ .credentials.json สูงสุด 50 ไฟล์ (แต่ละไฟล์มีขนาด 256KB รวมทั้งหมด 10MB)",
    "claudeImportBulkPasteHint": "วางอาร์เรย์ของอ็อบเจ็กต์: [{ json, name?, email? }, ...]",
    "claudeImportBulkZipHint": "ZIP ที่มีรายการ .json สูงสุด 50 รายการ, 10MB แกะกล่อง",
    "claudeImportBulkSubmit": "นำเข้าทั้งหมด",
    "claudeImportBulkSuccess": "นำเข้า {count} การเชื่อมต่อของ Claude แล้ว",
    "claudeImportBulkFailed": "บางรายการไม่สามารถนำเข้าได้",
    "claudeImportBulkZipExtracting": "กำลังแตกไฟล์ ZIP...",
    "claudeImportBulkZipError": "ไม่สามารถแยก ZIP",
    "applyGeminiAuthLocal": "ใช้การรับรองความถูกต้อง",
    "exportGeminiAuthFile": "รับรองการส่งออก",
    "importGeminiAuth": "นำเข้าการรับรองความถูกต้อง",
    "geminiApplyModalTitle": "นำไปใช้กับ Local Gemini CLI",
    "geminiApplyTargetLabel": "เส้นทางเป้าหมาย",
    "geminiApplyBackupLabel": "การสำรองข้อมูล",
    "geminiApplyAccountsHint": "บัญชีที่ใช้งาน google_accounts.json จะได้รับการอัปเดตเพื่อให้ตรงกับการเชื่อมต่อนี้",
    "geminiApplyWarning": "ซึ่งจะแทนที่ oauth_creds.json ที่มีอยู่และอัปเดต google_accounts.json ดำเนินการต่อ?",
    "geminiApplyConfirmCheckbox": "ฉันยืนยันว่าฉันต้องการแทนที่ oauth_creds.json ที่มีอยู่",
    "geminiApply": "สมัคร",
    "geminiAuthAppliedLocal": "การรับรองความถูกต้องของราศีเมถุนใช้ในพื้นที่",
    "geminiAuthApplyFailed": "ล้มเหลวในการใช้การรับรองความถูกต้องของ Gemini ในเครื่อง",
    "geminiAuthExported": "ส่งออกไฟล์การรับรองความถูกต้องของราศีเมถุนแล้ว",
    "geminiAuthExportFailed": "ส่งออกไฟล์การตรวจสอบสิทธิ์ Gemini ไม่สำเร็จ",
    "geminiImportModalTitle": "นำเข้าราศีเมถุน Auth",
    "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": "อัปโหลด ZIP",
    "geminiImportBulkUploadHint": "วางหรือรับไฟล์ oauth_creds.json สูงสุด 50 ไฟล์ (ไฟล์ละ 256KB รวมขนาดทั้งหมด 10MB)",
    "geminiImportBulkPasteHint": "วางอาร์เรย์ของอ็อบเจ็กต์: [{ json, name?, email? }, ...]",
    "geminiImportBulkZipHint": "รหัสไปรษณีย์ที่มีรายการ oauth_creds.json สูงสุด 50 รายการ, 10MB แกะกล่อง",
    "geminiImportBulkSubmit": "นำเข้าทั้งหมด",
    "geminiImportBulkSuccess": "นำเข้า {count} การเชื่อมต่อราศีเมถุน",
    "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 Auth",
    "codexImportTabSingle": "โสด",
    "codexImportTabBulk": "เป็นกลุ่ม",
    "codexImportTabUpload": "อัพโหลดไฟล์",
    "codexImportTabPaste": "วาง JSON",
    "codexImportFileLabel": "เลือก auth.json",
    "codexImportFileHint": "เลือกไฟล์ auth.json ที่ส่งออกจาก Codex หรือจาก OmniRoute",
    "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": "อัปโหลดไฟล์ .zip ที่มีไฟล์ auth.json (สูงสุด 50 ไฟล์, 10 MB)",
    "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": "Account Concurrency Cap Hint",
    "accountConcurrencyCapLabel": "Account Concurrency Cap Label",
    "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": "นูน-session-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 ของคุณ จำเป็นสำหรับบัญชีที่มีข้อยกเว้น ป้อนรหัสโปรเจ็กต์ GCP เพื่อใช้กับ Gemini CLI",
    "geminiCliProjectIdLabel": "รหัสโครงการ Google Cloud",
    "geminiCliProjectIdPlaceholder": "my-gcp-project-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",
    "antigravityProjectIdPlaceholder": "my-gcp-project-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 Fast tier กับการเชื่อมต่อ Codex ทั้งหมดตามค่าเริ่มต้น",
    "providerDetailFastDefaultLabel": "ค่าเริ่มต้นที่รวดเร็ว",
    "providerDetailBrowserManualConnect": "การเชื่อมต่อเบราว์เซอร์/คู่มือ",
    "providerDetailAuthUrl": "URL รับรองความถูกต้อง",
    "providerDetailCallbackUrl": "URL โทรกลับ",
    "providerDetailValidClaudeCredentialsFile": "ไฟล์ข้อมูลรับรอง Claude ที่ถูกต้อง",
    "providerDetailPathAutoDetectedAllOs": "เส้นทางจะถูกตรวจพบอัตโนมัติตามระบบปฏิบัติการ (Linux/Mac/Windows)",
    "providerDetailMyClaudeAccountPlaceholder": "บัญชีคลอดของฉัน",
    "providerDetailPathAutoDetected": "เส้นทางถูกตรวจพบอัตโนมัติตามระบบปฏิบัติการ (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": "ไม่จำเป็น จัดเก็บเป็น providerSpecificData.baseUrl",
    "onboardingRegion": "ภูมิภาค",
    "onboardingSearchCx": "ค้นหา CX / รหัสเครื่องยนต์",
    "onboardingProviderSpecificIdPlaceholder": "ID เฉพาะผู้ให้บริการที่ไม่บังคับ",
    "onboardingCustomUserAgent": "ตัวแทนผู้ใช้ที่กำหนดเอง",
    "onboardingWorking": "กำลังทำงาน...",
    "onboardingValidateSaveTest": "ตรวจสอบ บันทึก และทดสอบ",
    "onboardingBack": "กลับ",
    "onboardingCreateCustomCompatibleProvider": "สร้างผู้ให้บริการที่เข้ากันได้แบบกำหนดเอง",
    "onboardingCreateCustomCompatibleDescription": "ตัวช่วยจะสร้างโหนดผู้ให้บริการก่อน จากนั้นจึงจัดเก็บและทดสอบการเชื่อมต่อคีย์ API",
    "onboardingProtocol": "พิธีสาร",
    "onboardingOpenAiCompatible": "รองรับ OpenAI",
    "onboardingAnthropicCompatible": "เข้ากันได้กับมานุษยวิทยา",
    "onboardingClaudeCodeCompatible": "เข้ากันได้กับรหัส Claude",
    "onboardingProviderPrefix": "คำนำหน้าผู้ให้บริการ",
    "onboardingProviderPrefixHint": "ใช้เพื่อสร้างรหัสผู้ให้บริการที่ได้รับการจัดการ",
    "onboardingChatPath": "เส้นทางการแชท",
    "onboardingModelsPath": "เส้นทางโมเดล",
    "onboardingCreateSaveTest": "สร้าง บันทึก และทดสอบ",
    "onboardingConnectProvider": "เชื่อมต่อ {provider}",
    "onboardingOAuthFlowDescription": "OmniRoute จะเปิดโฟลว์ OAuth ที่มีอยู่สำหรับผู้ให้บริการรายนี้ หลังจากเข้าสู่ระบบ ตัวช่วยจะโหลดการเชื่อมต่อที่บันทึกไว้อีกครั้ง และรันการทดสอบการเชื่อมต่อเดียวกันกับหน้าผู้ให้บริการ",
    "onboardingStartOAuthFlow": "เริ่มโฟลว์ OAuth",
    "passthroughModelsDescription": "{provider} ยอมรับ ID โมเดลดั้งเดิมของผู้ให้บริการ นำเข้าจาก /models หรือเพิ่ม ID ที่กำหนดเองสำหรับการกำหนดเส้นทาง",
    "bedrockModelsDescription": "โมเดล Amazon Bedrock มีการกำหนดขอบเขตตามภูมิภาค AWS นำเข้าจาก /models หรือเพิ่มรหัสรุ่น Bedrock ที่เปิดใช้งานในภูมิภาคที่เลือก",
    "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:",
    "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": "ตัวกรองไอพี",
    "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": "บัญชีดำไอพี",
    "addIP": "เพิ่มไอพี",
    "savedSuccessfully": "บันทึกการตั้งค่าเรียบร้อยแล้ว",
    "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 บนหน้า Endpoint",
    "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": "เมื่อเปิด ให้ระงับข้อความ [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": "ต่ำ (โทเค็น 1K)",
    "effortMedium": "ปานกลาง (โทเค็น 10,000)",
    "effortHigh": "สูง (โทเค็น 128K)",
    "tokenBudget": "งบประมาณโทเค็น",
    "tokens": "โทเค็น",
    "baseEffortLevel": "ระดับความพยายามพื้นฐาน",
    "adaptiveHint": "โหมดการปรับเปลี่ยนจะปรับขนาดจากระดับพื้นฐานนี้โดยอิงตามจำนวนข้อความ การใช้เครื่องมือ และความยาวข้อความแจ้ง",
    "requireLogin": "จำเป็นต้องเข้าสู่ระบบ",
    "requireLoginDesc": "เมื่อเปิด แดชบอร์ดต้องใช้รหัสผ่าน เมื่อปิด ให้เข้าถึงโดยไม่ต้องเข้าสู่ระบบ",
    "currentPassword": "รหัสผ่านปัจจุบัน",
    "enterCurrentPassword": "ป้อนรหัสผ่านปัจจุบัน",
    "newPassword": "รหัสผ่านใหม่",
    "enterNewPassword": "ป้อนรหัสผ่านใหม่",
    "confirmPassword": "ยืนยันรหัสผ่านใหม่",
    "confirmPasswordPlaceholder": "ยืนยันรหัสผ่านใหม่",
    "passwordsNoMatch": "รหัสผ่านไม่ตรงกัน",
    "passwordUpdated": "อัปเดตรหัสผ่านเรียบร้อยแล้ว",
    "failedUpdatePassword": "ไม่สามารถอัปเดตรหัสผ่าน",
    "errorOccurred": "เกิดข้อผิดพลาด",
    "updatePassword": "อัปเดตรหัสผ่าน",
    "setPassword": "ตั้งรหัสผ่าน",
    "apiEndpointProtection": "การป้องกันปลายทาง API",
    "requireAuthModels": "ต้องใช้คีย์ API สำหรับ /models",
    "requireAuthModelsDesc": "เมื่อเปิด ตำแหน่งข้อมูล /v1/models จะส่งคืน 404 สำหรับคำขอที่ไม่ได้รับการรับรองความถูกต้อง ป้องกันการค้นพบโมเดลโดยผู้ใช้ที่ไม่ได้รับอนุญาต",
    "authModelHeading": "รูปแบบการอนุญาตที่ใช้งานอยู่",
    "authModelClient": "ตำแหน่งข้อมูล API ของไคลเอ็นต์ (/v1/*, /chat/*, /responses/*, /codex/*, /messages/*) ต้องใช้คีย์ Bearer API",
    "authModelManagement": "ตำแหน่งข้อมูลการจัดการ (/แดชบอร์ด /api/*) จำเป็นต้องมีเซสชันแดชบอร์ดหรือข้อมูลรับรองการจัดการ",
    "authModelPublic": "เฉพาะเส้นทางการเข้าสู่ระบบ สุขภาพ และบูตสแตรปเท่านั้นที่เป็นสาธารณะ",
    "bruteForceProtection": "เข้าสู่ระบบการป้องกันแบบเดรัจฉาน",
    "bruteForceProtectionDesc": "เค้นและล็อก /api/auth/login หลังจากเกิดความล้มเหลวซ้ำๆ จาก IP เดียวกัน",
    "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": "หากผู้ให้บริการมีคุณภาพ/ต้นทุนแตกต่างกัน ให้เริ่มด้วยการเลือกต้นทุนสำหรับงานเบื้องหลังและใช้งานน้อยที่สุดสำหรับการสึกหรอที่สมดุล",
    "fillFirst": "เติมก่อน",
    "fillFirstDesc": "ใช้บัญชีตามลำดับความสำคัญ",
    "roundRobin": "ตัวกลม โรบิน",
    "roundRobinDesc": "หมุนเวียนไปตามบัญชีทั้งหมด",
    "p2c": "พีทูซี",
    "p2cDesc": "สุ่มเลือก 2 อัน ใช้อันที่ดีต่อสุขภาพกว่า",
    "random": "สุ่ม",
    "randomDesc": "บัญชีสุ่มแต่ละคำขอ",
    "leastUsed": "ใช้น้อยที่สุด",
    "leastUsedDesc": "เลือกบัญชีที่ใช้ล่าสุดน้อยที่สุด",
    "costOpt": "การเลือกใช้ต้นทุน",
    "costOptDesc": "ต้องการบัญชีที่ถูกที่สุด",
    "resetAware": "รีเซ็ต-Aware 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": "การควบคุมการเข้าถึงไอพี",
    "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": "ความล่าช้าในการลองอีกครั้ง (มิลลิวินาที)",
    "timeoutLabel": "หมดเวลา (มิลลิวินาที)",
    "healthCheck": "ตรวจสุขภาพ",
    "healthCheckDesc": "ตรวจสอบความพร้อมของผู้ให้บริการล่วงหน้า",
    "trackMetrics": "ติดตามตัวชี้วัด",
    "trackMetricsDesc": "บันทึกเมตริกคำขอต่อคอมโบ",
    "providerOverrides": "การแทนที่ผู้ให้บริการ",
    "providerOverridesDesc": "แทนที่การหมดเวลาและลองใหม่ตามผู้ให้บริการ การตั้งค่าผู้ให้บริการจะแทนที่ค่าเริ่มต้นสากล",
    "providerMaxRetriesAria": "{provider} ลองใหม่สูงสุด",
    "providerTimeoutAria": "{provider} หมดเวลา มิลลิวินาที",
    "removeProviderOverrideAria": "ลบการแทนที่ {provider} ออก",
    "newProviderNamePlaceholder": "เช่น google, openai...",
    "newProviderNameAria": "ชื่อผู้ให้บริการใหม่",
    "retries": "ลองอีกครั้ง",
    "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": "เวลารีเซ็ต CB",
    "rateLimiting": "การจำกัดอัตรา",
    "rateLimitingDesc": "ผู้ให้บริการคีย์ API จะถูกจำกัดอัตราโดยอัตโนมัติด้วยค่าเริ่มต้นที่ปลอดภัย เรียนรู้ขีดจำกัดจากส่วนหัวการตอบกลับและปรับเปลี่ยนเมื่อเวลาผ่านไป",
    "defaultSafetyNet": "เครือข่ายความปลอดภัยเริ่มต้น",
    "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}d ที่แล้ว",
    "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": "ราคา = (input × input_rate) + (output × output_rate) + (cached × cached_rate) ต่อล้านโทเค็น",
    "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": "คีย์ Idempotency",
    "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": "ตัวอย่าง Favicon",
    "oneproxyLastSync": "การซิงค์ครั้งล่าสุด",
    "oneproxyAllProtocols": "โปรโตคอลทั้งหมด",
    "oneproxyCountryCodePlaceholder": "รหัสประเทศ (เช่น US)",
    "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": "การกำหนดเส้นทางอัตโนมัติแบบ Zero-Config",
    "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": "ตลาดทักษะ MP",
    "memorySkillsFailedToSave": "บันทึกไม่สำเร็จ",
    "memorySkillsApiKey": "คีย์ API",
    "memorySkillsActiveSkillsProvider": "ผู้ให้บริการทักษะการใช้งาน",
    "cliproxyapiFallback": "CLIProxyAPI ทางเลือก",
    "cliproxyapiEnableFallback": "เปิดใช้งานทางเลือกสำรอง CLIProxyAPI",
    "cliproxyapiUrl": "URL ของ CLIProxyAPI",
    "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": "Codex เทียร์ที่รวดเร็ว",
    "codexFastTierDesc": "ฉีด service_tier=priority ทั่วโลกสำหรับคำขอ OpenAI Codex",
    "codexFastTierHint": "เมื่อเปิดใช้งาน OmniRoute จะเพิ่ม service_tier=priority ไปยังคำขอ Codex ขาออกสำหรับการเชื่อมต่อที่ไม่ได้ระบุระดับ ระดับความสำคัญต้องใช้คีย์ OpenAI Enterprise API หรือเส้นทาง ChatGPT-auth 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 ไม่รองรับ Fast Mode อย่างเป็นทางการสำหรับไคลเอนต์สไตล์ SDK เมื่อเปิดใช้งาน OmniRoute จะส่งต่อส่วนหัว X-CPA-Force-Fast-Mode เพื่อให้บิลด์ CLIProxyAPI ที่จับคู่สามารถเลือกในการปลอมแปลงจุดเข้าใช้งานได้ เฉพาะรุ่น Opus ที่ระบุไว้เท่านั้นที่ได้รับการควบคุมโดยการตรวจสอบฝั่งไคลเอ็นต์ของ Anthropic ระดับการสมัครสมาชิก แผนสูงสุด และยอดเครดิตโหมดด่วนยังคงบังคับใช้ฝั่งเซิร์ฟเวอร์ — Anthropic อาจส่งคืนเครดิตหมด แม้ว่าจะเปิดสวิตช์อยู่ก็ตาม",
    "claudeFastModeModelsLabel": "ใช้กับโมเดล ({count})",
    "claudeFastModeModelCheckbox": "เปิดใช้งานโหมดด่วนสำหรับ {model}",
    "claudeFastModeSaveError": "อัปเดตการตั้งค่า Claude Fast Mode ไม่สำเร็จ",
    "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": "ใช้สัญญาณ Retry-After / โควต้าหมดจากการตอบสนอง 429 ครั้งกับระยะเวลาคูลดาวน์ของเซอร์กิตเบรกเกอร์ ค่าเริ่มต้นใช้นโยบายต่อผู้ให้บริการ: ผู้ให้บริการคลาวด์โดยตรงเป็นค่าเริ่มต้น; Reverse-proxy, self-hosted และ CLI-backed provider เป็นค่าเริ่มต้น เป็นอิสระจาก \"ใช้คำแนะนำในการลองอัปสตรีมอีกครั้ง\"",
    "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": "แคชโควต้าระยะไกลสำหรับการสั่งซื้อแบบรับรู้การรีเซ็ตเท่านั้น โควต้า preflight ยังคงปกป้องคำขอ 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": "สนามเด็กเล่นนักแปล | OmniRoute",
    "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) เมื่อลูกค้าละเว้นจากประวัติการสนทนา",
    "featureSchemaCoercion": "แผนการบังคับ",
    "featureSchemaCoercionDesc": "แก้ไขสคีมาเครื่องมือที่ใช้งานไม่ได้: เพิ่มคุณสมบัติเพิ่มเติมที่ขาดหายไป, ทำความสะอาดคำอธิบายแบบยาว, ปรับวัตถุที่ซ้อนกันให้เป็นมาตรฐาน",
    "featureRoleNormalization": "การทำให้บทบาทเป็นมาตรฐาน",
    "featureRoleNormalizationDesc": "ผู้พัฒนาแผนที่→ระบบสำหรับเป้าหมายที่ไม่ใช่ OpenAI ระบบแผนที่→ผู้ใช้สำหรับรุ่นที่ไม่รองรับบทบาทของระบบ",
    "featureToolCallIds": "การทำให้ ID การเรียกเครื่องมือเป็นมาตรฐาน",
    "featureToolCallIdsDesc": "สร้าง tool_call ID ที่ไม่ซ้ำกันเมื่อหายไป ปรับมาตรฐานเป็นรูปแบบ 9 อักขระสำหรับผู้ให้บริการเช่น Mistral",
    "featureMissingToolResponse": "การฉีดการตอบสนองของเครื่องมือ",
    "featureMissingToolResponseDesc": "แทรกข้อความ tool_result ว่างเมื่อไคลเอ็นต์ส่ง tool_calls โดยไม่มีการตอบสนองที่สอดคล้องกัน",
    "featureThinkingBudget": "คิดงบประมาณ",
    "featureThinkingBudgetDesc": "จัดการการกำหนดค่าการคิดโดยอัตโนมัติ ลบพารามิเตอร์การคิดเมื่อข้อความสุดท้ายไม่ได้มาจากผู้ใช้",
    "featureDirectPaths": "เส้นทางการแปลโดยตรง",
    "featureDirectPathsDesc": "คู่รูปแบบบางคู่ (Claude→Gemini) มีนักแปลโดยตรงที่ข้ามฮับ OpenAI ส่งผลให้ได้ผลลัพธ์ที่แม่นยำยิ่งขึ้น",
    "featureImageMapping": "การทำแผนที่ขนาดภาพ",
    "featureImageMappingDesc": "แปลรูปแบบมิติข้อมูลรูปภาพระหว่างรูปแบบ API (เช่น ระดับรายละเอียด OpenAI → มิติราศีเมถุน)",
    "input": "อินพุต",
    "output": "เอาท์พุต",
    "auto": "อัตโนมัติ",
    "swapFormats": "สลับรูปแบบ",
    "translateAction": "แปล",
    "clear": "ชัดเจน",
    "inputPlaceholder": "วางเนื้อหาคำขอที่นี่หรือเลือกเทมเพลตด้านล่าง...",
    "exampleTemplates": "เทมเพลตตัวอย่าง",
    "exampleTemplatesHint": "— คลิกเพื่อโหลด",
    "templateLoadHint": "เทมเพลตโหลดคำขอในรูปแบบ {format} เปลี่ยนรูปแบบต้นฉบับเพื่อโหลดในรูปแบบอื่น",
    "compatibilityTester": "เครื่องทดสอบความเข้ากันได้",
    "compatibilityReport": "รายงานความเข้ากันได้",
    "testBenchDescription": "เรียกใช้สถานการณ์ที่กำหนดไว้ล่วงหน้า (Simple Chat, Tool Calling ฯลฯ) เพื่อตรวจสอบการแปลและความเข้ากันได้ของผู้ให้บริการ เลือกรูปแบบต้นทางและผู้ให้บริการเป้าหมาย จากนั้นทำการทดสอบทั้งหมดเพื่อดูเปอร์เซ็นต์ความเข้ากันได้ ใช้สิ่งนี้เพื่อค้นหาฟีเจอร์ที่ใช้ได้กับผู้ให้บริการ",
    "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": "สตรีม SSE แบบดิบจาก API ของผู้ให้บริการ",
    "unexpectedError": "เกิดข้อผิดพลาดที่ไม่คาดคิด",
    "error": "เกิดข้อผิดพลาด",
    "errorMessage": "ข้อผิดพลาด: {message}",
    "requestFailed": "คำขอล้มเหลว",
    "noTextExtracted": "(ไม่มีการแยกข้อความ)",
    "liveMonitorMemoryNote": "กิจกรรมจะถูกเก็บไว้ในหน่วยความจำและหายไปเมื่อรีสตาร์ท",
    "liveMonitorMemoryCapNote": "เก็บไว้ได้สูงสุด 200 กิจกรรม",
    "eventSourcesLabel": "แหล่งที่มาของเหตุการณ์:",
    "eventSourceTranslatorPage": "• หน้านักแปล (ผู้ทดสอบแชท, ม้านั่งทดสอบ)",
    "eventSourceMainPipeline": "• ไปป์ไลน์คำขอหลัก (การรับส่งข้อมูล CLI/IDE/API)",
    "liveMonitorDescriptionPrefix": "แสดงเหตุการณ์การแปลเมื่อมีการเรียก API ไหลผ่าน OmniRoute เหตุการณ์มาจากบัฟเฟอร์ในหน่วยความจำ (รีเซ็ตเมื่อรีสตาร์ท) ใช้",
    "liveMonitorDescriptionSuffix": "หรือการเรียก API ภายนอกเพื่อสร้างเหตุการณ์",
    "streamTransformer": "สตรีมหม้อแปลง",
    "modeDescriptionStreamTransformer": "เรียกใช้สตรีม SSE ที่เสร็จสิ้นการแชทผ่านตัวแปลงการตอบกลับ",
    "streamTransformerTitle": "กระแสตอบรับหม้อแปลง",
    "streamTransformerDescription": "วางสตรีม SSE ที่เสร็จสิ้นการแชท เรียกใช้ผ่านตัวแปลงการตอบกลับของ OmniRoute และตรวจสอบเหตุการณ์การตอบกลับที่ปล่อยออกมา* ก่อนที่จะเชื่อมต่อไคลเอนต์",
    "loadTextSample": "โหลดตัวอย่างข้อความ",
    "loadToolSample": "โหลดตัวอย่างการเรียกเครื่องมือ",
    "transformToResponses": "แปลงเป็นการตอบกลับ",
    "rawChatSseInput": "การแชทแบบ Raw เสร็จสิ้น 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": "หน้า 50",
    "latencyP95": "หน้า 95",
    "latencyP99": "หน้า 99",
    "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": "สร้างกรณีทดสอบพร้อมข้อความแจ้งอินพุตและเกณฑ์ผลลัพธ์ที่คาดหวังโดยใช้กลยุทธ์ เช่น ประกอบด้วย regex หรือการจับคู่แบบตรงทั้งหมด",
    "run": "วิ่ง",
    "runStepDescription": "ดำเนินการกรณีทดสอบกับตำแหน่งข้อมูล LLM ของคุณผ่าน OmniRoute แต่ละกรณีจะถูกส่งเป็นคำขอ 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": "กำลังโหลดห้องสวีท eval...",
    "noEvalSuitesFound": "ไม่พบห้องสวีท Eval",
    "noEvalSuitesDescription": "ชุด Eval สามารถกำหนดได้ผ่าน API หรือในโค้ด พวกเขาทดสอบผลลัพธ์ของโมเดลกับผลลัพธ์ที่คาดหวังโดยใช้กลยุทธ์ต่างๆ เช่น ประกอบด้วย regex การจับคู่แบบตรงทั้งหมด และฟังก์ชันที่กำหนดเอง",
    "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": "Regex: {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}วินาที",
    "durationMinutesShort": "{value}ม",
    "durationHoursShort": "{value}ชม",
    "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 ของชุด eval ไม่ถูกต้อง",
    "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": "โครงการอีโอเอ็ม",
    "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",
    "awsIamIdentity": "ศูนย์ข้อมูลประจำตัว AWS IAM",
    "googleAccount": "บัญชี Google",
    "githubAccount": "บัญชี GitHub",
    "importToken": "นำเข้าโทเค็น",
    "pasteToken": "วางโทเค็นการรีเฟรชจาก Kiro IDE",
    "awsRegion": "ภูมิภาค AWS",
    "autoDetecting": "กำลังตรวจจับโทเค็นอัตโนมัติ...",
    "readingFromCache": "อ่านจากแคช AWS SSO",
    "readingFromCursor": "อ่านจากฐานข้อมูล Cursor 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, มานุษยวิทยา, 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": "หรือลบฟิลด์รหัสผ่านแฮช",
    "restartServerWithNewPassword": "รีสตาร์ทเซิร์ฟเวอร์ - จะใช้รหัสผ่านใหม่",
    "backToLogin": "กลับไปที่เข้าสู่ระบบ",
    "forgotPassword": "ลืมรหัสผ่าน?",
    "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)",
    "Authorization": "การอนุญาต",
    "Content-Disposition": "การจัดการเนื้อหา",
    "waitingForAuthorization": "กำลังรอการอนุญาต...",
    "waitingForGoogleAuthorization": "กำลังรอการอนุญาตจาก Google...",
    "waitingForOpenAIAuthorization": "กำลังรอการอนุญาต OpenAI...",
    "waitingForAntigravityAuthorization": "กำลังรอการอนุญาตต้านแรงโน้มถ่วง...",
    "waitingForQoderAuthorization": "กำลังรอการอนุญาตจาก Qoder...",
    "exchangingCodeForTokens": "การเปลี่ยนรหัสเป็นโทเค็น...",
    "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": "OmniRoute",
    "navigateHome": "นำทางไปที่บ้าน",
    "toggleMenu": "สลับเมนู",
    "featuresLink": "คุณสมบัติ",
    "docsLink": "เอกสาร",
    "github": "GitHub",
    "versionLive": "v1.0 ใช้งานได้แล้ว",
    "oneEndpoint": "จุดสิ้นสุดหนึ่งสำหรับ",
    "allProviders": "ผู้ให้บริการ AI ทั้งหมด",
    "heroDescription": "พร็อกซีปลายทาง AI พร้อมเว็บแดชบอร์ด - พอร์ต JavaScript ของ CLIProxyAPI ทำงานได้อย่างราบรื่นกับ Claude Code, OpenAI Codex, Cline, RooCode และเครื่องมือ CLI อื่นๆ",
    "getStarted": "เริ่มต้นเลย",
    "viewOnGithub": "ดูบน GitHub",
    "powerfulFeatures": "คุณสมบัติอันทรงพลัง",
    "featuresSubtitle": "ทุกสิ่งที่คุณต้องการในการจัดการโครงสร้างพื้นฐาน AI ของคุณในที่เดียว สร้างขึ้นเพื่อรองรับขนาด",
    "featureUnifiedEndpointTitle": "จุดสิ้นสุดแบบรวม",
    "featureUnifiedEndpointDesc": "เข้าถึงผู้ให้บริการทั้งหมดผ่าน URL API มาตรฐานเดียว",
    "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. ศูนย์กลาง OmniRoute",
    "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": " macOS/ลินุกซ์:",
    "dataLocationWindows": " หน้าต่าง:",
    "product": "สินค้า",
    "dashboardLink": "แดชบอร์ด",
    "changelog": "บันทึกการเปลี่ยนแปลง",
    "resources": "ทรัพยากร",
    "documentation": "เอกสารประกอบ",
    "npm": "เอ็นพีเอ็ม",
    "legal": "กฎหมาย",
    "mitLicense": "ใบอนุญาตเอ็มไอที",
    "footerTagline": "จุดสิ้นสุดแบบรวมสำหรับการสร้าง AI เชื่อมต่อ กำหนดเส้นทาง และจัดการผู้ให้บริการ AI ของคุณได้อย่างง่ายดาย",
    "copyright": "© {year} OmniRoute สงวนลิขสิทธิ์.",
    "flowToolClaudeCode": "คล็อด โค้ด",
    "flowToolOpenAICodex": "OpenAI Codex",
    "flowToolCline": "ไคลน์",
    "flowToolCursor": "เคอร์เซอร์",
    "flowProviderOpenAI": "OpenAI",
    "flowProviderAnthropic": "มานุษยวิทยา",
    "flowProviderGemini": "ราศีเมถุน",
    "flowProviderGithubCopilot": "นักบิน GitHub",
    "interactiveDiagram": "แผนภาพเชิงโต้ตอบที่มองเห็นได้บนเดสก์ท็อป",
    "ctaTitle": "พร้อมที่จะลดความซับซ้อนของโครงสร้างพื้นฐาน AI ของคุณแล้วหรือยัง?",
    "ctaDescription": "เข้าร่วมกับนักพัฒนาที่กำลังปรับปรุงการบูรณาการ AI กับ OmniRoute โอเพ่นซอร์สและเริ่มต้นได้ฟรี",
    "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": "เกตเวย์ AI สำหรับ LLM ที่มีผู้ให้บริการหลายราย จุดสิ้นสุดเดียวสำหรับ 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": "เรียกใช้ OmniRoute เป็นแอปพลิเคชันเดสก์ท็อปดั้งเดิมบน Windows, macOS และ Linux",
    "deployDockerTitle": "นักเทียบท่า",
    "deployDockerText": "การปรับใช้แบบคอนเทนเนอร์ด้วย Docker Compose; พร้อมสำหรับสแต็กการผลิตและ Kubernetes",
    "deployVmTitle": "เครื่องเสมือน",
    "deployVmText": "โฮสต์ด้วยตนเองบน Linux VM ใด ๆ รวมถึงหน่วย systemd การหมุนเวียนบันทึก และเครื่องมือสำรองข้อมูล",
    "deployFlyTitle": "บิน.io",
    "deployFlyText": "ปรับใช้กับรันไทม์ Fly.io Edge ด้วยหนึ่ง fly.toml และคำสั่งปรับใช้เดียว",
    "deployPwaTitle": "กปภ",
    "deployPwaText": "ติดตั้ง OmniRoute เป็น Progressive Web App บนเบราว์เซอร์ Android, iOS และเดสก์ท็อป",
    "deployTermuxTitle": "Termux (Android)",
    "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.",
    "featureRoutingTitle": "การกำหนดเส้นทางผู้ให้บริการหลายราย",
    "featureRoutingText": "กำหนดเส้นทางคำขอไปยังผู้ให้บริการ AI กว่า 30 รายผ่านจุดสิ้นสุดที่เข้ากันได้กับ OpenAI จุดเดียว รองรับ API การแชท การตอบกลับ เสียง และรูปภาพ",
    "featureCombosTitle": "คอมโบและการปรับสมดุล",
    "featureCombosText": "สร้างโมเดลคอมโบด้วยห่วงโซ่ทางเลือกและกลยุทธ์การปรับสมดุล: การหมุนเวียนแบบวนซ้ำ ลำดับความสำคัญ สุ่ม ใช้น้อยที่สุด และปรับต้นทุนให้เหมาะสม",
    "featureUsageTitle": "การใช้งานและการติดตามต้นทุน",
    "featureUsageText": "การนับโทเค็นแบบเรียลไทม์ การคำนวณต้นทุนต่อผู้ให้บริการ/โมเดล และรายละเอียดการใช้งานโดยละเอียดตามคีย์ API และบัญชี",
    "featureAnalyticsTitle": "แดชบอร์ดการวิเคราะห์",
    "featureAnalyticsText": "การวิเคราะห์ด้วยภาพพร้อมแผนภูมิสำหรับคำขอ โทเค็น ข้อผิดพลาด เวลาแฝง ต้นทุน และความนิยมของโมเดลในช่วงเวลาหนึ่ง",
    "featureHealthTitle": "การตรวจติดตามสุขภาพ",
    "featureHealthText": "การตรวจสอบสุขภาพแบบเรียลไทม์ สถานะของผู้ให้บริการ สถานะเซอร์กิตเบรกเกอร์ และการตรวจจับขีดจำกัดอัตราอัตโนมัติพร้อมการถอยกลับแบบเอ็กซ์โพเนนเชียล",
    "featureCliTitle": "เครื่องมือ CLI",
    "featureCliText": "จัดการการกำหนดค่า IDE, ส่งออก/นำเข้าข้อมูลสำรอง, ค้นหาโปรไฟล์ Codex และกำหนดการตั้งค่าจากแดชบอร์ด",
    "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": "ใช้รหัสรุ่นด้วย",
    "clientCodexBullet2": "โมเดลตระกูล Codex กำหนดเส้นทางอัตโนมัติไปยัง",
    "clientCodexBullet3": "โมเดลที่ไม่ใช่ Codex ยังคงดำเนินต่อไป",
    "clientCursorTitle": "เคอร์เซอร์ IDE",
    "clientCursorBullet1": "ใช้",
    "clientCursorBullet1Suffix": "คำนำหน้าสำหรับโมเดลเคอร์เซอร์",
    "clientCursorBullet2": "การเชื่อมต่อ OAuth - เข้าสู่ระบบจากหน้าผู้ให้บริการ",
    "clientClaudeTitle": "คล็อดโค้ด/ต้านแรงโน้มถ่วง",
    "clientClaudeBullet1Prefix": "ใช้",
    "clientClaudeBullet1Middle": "(คลอดด์) หรือ",
    "clientClaudeBullet1Suffix": "(ต้านแรงโน้มถ่วง) คำนำหน้า",
    "clientWindsurfTitle": "วินด์เซิร์ฟ",
    "clientWindsurfBullet1": "ใช้ OmniRoute เป็น URL พื้นฐานที่เข้ากันได้กับ OpenAI และเก็บคำนำหน้าผู้ให้บริการที่ชัดเจนสำหรับการกำหนดเส้นทางที่กำหนด",
    "clientWindsurfBullet2": "ชี้โมเดลไปที่ `/v1/chat/completions` สำหรับการรับส่งข้อมูลทั่วไป และคง `/v1/responses` ไว้สำหรับโฟลว์สไตล์ Codex",
    "clientWindsurfBullet3": "ใช้แดชบอร์ด -> เครื่องมือ CLI สำหรับคำแนะนำการกำหนดค่า Windsurf สำเร็จรูป",
    "clientClineTitle": "ไคลน์",
    "clientClineBullet1": "Cline ทำงานได้ดีที่สุดกับคำนำหน้าผู้ให้บริการ/รุ่นที่ชัดเจน ดังนั้นเราเตอร์จึงไม่ต้องเดาแบ็คเอนด์",
    "clientClineBullet2": "ใช้ `/v1/chat/completions` สำหรับโมเดลทั่วไป และใช้ URL ฐาน OmniRoute เดียวกันซ้ำในบัญชีต่างๆ",
    "clientClineBullet3": "ใช้แดชบอร์ดของผู้ให้บริการเพื่อตรวจสอบความถูกต้องของคีย์ OAuth/API ก่อนที่จะดีบักปัญหารันไทม์ของ Cline",
    "clientKimiTitle": "คิมิ การเข้ารหัส",
    "clientKimiBullet1": "ใช้ OmniRoute เป็น URL ฐานที่มั่นคงขณะหมุนเวียนบัญชีหรือคอมโบผู้ให้บริการด้านล่าง",
    "clientKimiBullet2": "ต้องการโมเดลที่นำหน้าในโฟลว์การเขียนโค้ด ดังนั้นทางเลือกสำรองและเส้นทางการตรวจสอบจึงยังคงชัดเจน",
    "clientKimiBullet3": "ใช้ `/v1/responses` เมื่อคุณต้องการการกำหนดเส้นทางสไตล์ Responses ดั้งเดิมสำหรับไคลเอ็นต์ที่ใช้เครื่องมือ",
    "protocolsTitle": "Protocols: 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-series)",
    "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": "หากคุณได้รับข้อผิดพลาดโมเดลที่ไม่ชัดเจน ให้เลือกคำนำหน้าผู้ให้บริการแทนรหัสโมเดลเปล่า",
    "troubleshootingCodexFamily": "สำหรับโมเดลตระกูล GitHub Codex ให้เก็บโมเดลเป็น gh/codex-model; เราเตอร์เลือก / ตอบสนองโดยอัตโนมัติ",
    "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": "เครื่องมือเอ็มซีพี",
    "mcpToolsDescription": "OmniRoute เปิดเผยเครื่องมือ {count} ผ่าน Model Context Protocol สำหรับการจัดการตัวแทน",
    "mcpToolsCount": "{count} เครื่องมือ",
    "mcpToolsToc": "เครื่องมือเอ็มซีพี",
    "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": "รีจิสทรี Agent Communication Protocol (ACP) สำหรับจัดการเวิร์กโฟลว์ระหว่างตัวแทนและการจัดการเครื่องมือ",
    "protocolAcpTitle": "ACP (การสื่อสารตัวแทน)",
    "protocolAcpDesc": "ลงทะเบียนและจัดการตัวแทนผ่านทะเบียน ACP สำหรับการสื่อสารระหว่างตัวแทนและการแบ่งปันเครื่องมือ",
    "protocolAcpStep1": "ไปที่แดชบอร์ด → ตัวแทนเพื่อดูตัวแทน ACP ที่ลงทะเบียน",
    "protocolAcpStep2": "ลงทะเบียนตัวแทนใหม่ด้วยความสามารถและการกำหนดค่าอุปกรณ์ปลายทาง",
    "protocolAcpStep3": "ใช้เครื่องมือ CLI เพื่อกำหนดค่าช่องทางการสื่อสารของตัวแทน"
  },
  "legal": {
    "privacyPolicy": "นโยบายความเป็นส่วนตัว",
    "termsOfService": "ข้อกำหนดในการให้บริการ",
    "providerConfigurations": "การกำหนดค่าของผู้ให้บริการ",
    "apiKeys": "คีย์ API",
    "usageLogs": "บันทึกการใช้งาน",
    "applicationSettings": "การตั้งค่าแอปพลิเคชัน",
    "viewExportAnalytics": "ดูและส่งออกการวิเคราะห์การใช้งาน",
    "clearHistory": "ล้างประวัติการใช้งานได้ตลอดเวลา",
    "configureRetention": "กำหนดค่านโยบายการเก็บรักษาบันทึก",
    "backupRestore": "สำรองและกู้คืนฐานข้อมูลของคุณ",
    "privacyMetadataTitle": "นโยบายความเป็นส่วนตัว | OmniRoute",
    "privacyMetadataDescription": "นโยบายความเป็นส่วนตัวสำหรับเราเตอร์พร็อกซี OmniRoute AI API",
    "termsMetadataTitle": "เงื่อนไขการให้บริการ | OmniRoute",
    "termsMetadataDescription": "ข้อกำหนดในการให้บริการสำหรับเราเตอร์พร็อกซี OmniRoute AI API",
    "backToHome": "กลับบ้าน",
    "lastUpdated": "อัปเดตล่าสุด: {date}",
    "policyLastUpdatedDate": "13 กุมภาพันธ์ 2569",
    "listSeparator": "-",
    "questionsVisit": "มีคำถาม? เยี่ยมชมของเรา",
    "githubRepository": "พื้นที่เก็บข้อมูล GitHub",
    "privacySection1Title": "1. สถาปัตยกรรมท้องถิ่นแห่งแรก",
    "privacySection1Text": "OmniRoute ได้รับการออกแบบให้เป็นแอปพลิเคชั่นแรกในท้องถิ่น การประมวลผลและการจัดเก็บข้อมูลทั้งหมดเกิดขึ้นบนเครื่องของคุณทั้งหมด ไม่มีเซิร์ฟเวอร์ส่วนกลางที่รวบรวมข้อมูลของคุณ",
    "privacySection2Title": "2. ข้อมูลที่เราจัดเก็บ",
    "privacyDataStoredIn": "ข้อมูลต่อไปนี้ถูกจัดเก็บไว้ในเครื่อง",
    "privacyDataProviderConfigurationsDesc": "URL การเชื่อมต่อ ประเภทผู้ให้บริการ และการตั้งค่าลำดับความสำคัญ",
    "privacyDataApiKeysDesc": "เข้ารหัสและจัดเก็บไว้ในเครื่องเพื่อตรวจสอบสิทธิ์กับผู้ให้บริการ AI",
    "privacyDataUsageLogsDesc": "จำนวนคำขอ การใช้โทเค็น ชื่อโมเดล การประทับเวลา และเวลาตอบสนอง",
    "privacyDataApplicationSettingsDesc": "การตั้งค่าธีม กลยุทธ์การกำหนดเส้นทาง และการกำหนดค่าคอมโบ",
    "privacySection3Title": "3. ไม่มีการวัดและส่งข้อมูลทางไกล",
    "privacySection3Text": "OmniRoute ไม่รวบรวมการวัดและส่งข้อมูลทางไกล การวิเคราะห์ หรือรายงานข้อขัดข้อง ไม่มีการส่งข้อมูลถึงเราหรือบุคคลที่สาม รูปแบบการใช้งาน การเรียก API และการกำหนดค่าของคุณยังคงเป็นส่วนตัวโดยสมบูรณ์",
    "privacySection4Title": "4. ผู้ให้บริการ AI บุคคลที่สาม",
    "privacySection4Text": "เมื่อคุณทำการเรียก API ผ่าน OmniRoute คำขอของคุณจะถูกส่งต่อไปยังผู้ให้บริการ AI ที่คุณกำหนดค่าไว้ (เช่น OpenAI, Anthropic, Google) ผู้ให้บริการเหล่านี้มีนโยบายความเป็นส่วนตัวของตนเองที่ควบคุมวิธีจัดการข้อมูลของคุณ โปรดตรวจสอบ:",
    "privacyOpenAiPolicy": "นโยบายความเป็นส่วนตัวของ OpenAI",
    "privacyAnthropicPolicy": "นโยบายความเป็นส่วนตัวด้านมานุษยวิทยา",
    "privacyGooglePolicy": "นโยบายความเป็นส่วนตัวของ Google",
    "privacySection5Title": "5. Cloud Sync (ไม่บังคับ)",
    "privacySection5Text": "หากคุณเปิดใช้งานคุณสมบัติเสริมการซิงค์บนคลาวด์ การกำหนดค่าผู้ให้บริการและคีย์ API อาจถูกส่งไปยังจุดสิ้นสุดบนคลาวด์ที่กำหนดค่าไว้ คุณลักษณะนี้ถูกปิดใช้งานโดยค่าเริ่มต้น และจำเป็นต้องเลือกใช้อย่างชัดเจน",
    "privacySection6Title": "6. การบันทึก",
    "privacyLoggingIntro": "บันทึกคำขอสามารถกำหนดค่าได้ผ่านการตั้งค่าแดชบอร์ด คุณสามารถ:",
    "privacySection7Title": "7. สิทธิ์ของคุณ",
    "privacySection7TextStart": "เนื่องจากข้อมูลทั้งหมดถูกจัดเก็บไว้ในเครื่อง คุณจึงสามารถควบคุมได้อย่างเต็มที่ คุณสามารถลบข้อมูลของคุณได้ตลอดเวลาโดยการลบ",
    "privacySection7TextEnd": "ไดเร็กทอรีหรือใช้คุณสมบัติการสำรองและกู้คืนฐานข้อมูลในแดชบอร์ด",
    "termsSection1Title": "1. ภาพรวม",
    "termsSection1Text": "OmniRoute เป็นเราเตอร์พร็อกซี AI API ตัวแรกในเครื่องที่ทำงานบนเครื่องของคุณทั้งหมด โดยกำหนดเส้นทางคำขอไปยังผู้ให้บริการ AI หลายรายด้วยการปรับสมดุลโหลด การเฟลโอเวอร์ และการติดตามการใช้งาน",
    "termsSection2Title": "2. ความรับผิดชอบของผู้ใช้",
    "termsResponsibilityApiKeys": "คุณมีหน้าที่รับผิดชอบแต่เพียงผู้เดียวในการจัดการคีย์ API และข้อมูลรับรองของคุณเองสำหรับผู้ให้บริการ AI บุคคลที่สาม (OpenAI, Anthropic, Google ฯลฯ)",
    "termsResponsibilityCompliance": "คุณต้องปฏิบัติตามข้อกำหนดในการให้บริการของผู้ให้บริการ AI แต่ละรายซึ่งมี API ที่คุณเข้าถึงผ่าน OmniRoute",
    "termsResponsibilitySecurity": "คุณต้องรับผิดชอบต่อความปลอดภัยของการติดตั้ง OmniRoute ในพื้นที่ของคุณ รวมถึงการตั้งรหัสผ่านและการจำกัดการเข้าถึงเครือข่าย",
    "termsSection3Title": "3. มันทำงานอย่างไร",
    "termsSection3Text": "OmniRoute ทำหน้าที่เป็นพร็อกซีตัวกลาง การเรียก API ที่ส่งไปยัง OmniRoute จะถูกแปลและส่งต่อไปยังผู้ให้บริการ 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": "กำหนดค่ารหัส Claude, Codex, เคอร์เซอร์ และ IDE อื่นๆ เพื่อใช้ OmniRoute เป็น URL ฐาน API OmniRoute ทำหน้าที่เป็นพร็อกซี กำหนดเส้นทางคำขอไปยังผู้ให้บริการที่กำหนดค่าไว้ของคุณ",
    "comparisonAgentsLabel": "หน้านี้ (เป้าหมายตัวแทน)",
    "comparisonAgentsTitle": "OmniRoute ส่งคำขอไปยังเครื่องมือ CLI ในพื้นที่",
    "comparisonAgentsDesc": "OmniRoute สามารถวางไข่ไบนารี CLI ท้องถิ่น (claude, codex, goose) เป็นแบ็กเอนด์การดำเนินการ เครื่องมือ CLI ประมวลผลคำขอโดยใช้การรับรองความถูกต้องของตัวเองและส่งกลับผลลัพธ์",
    "comparisonSummary": "โดยย่อ: CLI Tools = คุณกำหนดค่าเครื่องมือให้ชี้ไปที่ OmniRoute Agent Targets = OmniRoute ใช้เครื่องมือเป็นจุดสิ้นสุด",
    "agentUseCaseHint": "สามารถใช้เป็นเป้าหมายการดำเนินการผ่านโปรโตคอล ACP",
    "flowDiagramClient": "แอปไคลเอ็นต์",
    "flowDiagramClientDesc": "SDK, API หรือบริการอัปสตรีม",
    "flowDiagramOmniRoute": "OmniRoute",
    "flowDiagramOmniRouteDesc": "รับคำขอและเลือกเป้าหมาย",
    "flowDiagramSpawn": "กระบวนการวางไข่",
    "flowDiagramSpawnDesc": "เปิดตัวไบนารี CLI ผ่าน stdio",
    "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 ในพื้นที่ - คุณโต้ตอบกับพวกเขาผ่าน API ของ OmniRoute",
    "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": "แชทง่ายๆ",
    "streaming": "สตรีมมิ่ง",
    "system-prompt": "พร้อมท์ระบบ",
    "thinking": "กำลังคิด",
    "tool-calling": "การเรียกเครื่องมือ",
    "multi-turn": "หลายเลี้ยว",
    "vision": "วิสัยทัศน์",
    "schema-coercion": "แผนการบังคับ"
  },
  "templateDescriptions": {
    "simple-chat": "เทมเพลตการแชทพื้นฐานพร้อมข้อความระบบ",
    "streaming": "เทมเพลตสำหรับการตอบกลับแบบสตรีม",
    "system-prompt": "เทมเพลตพร้อมแจ้งระบบแบบกำหนดเอง",
    "thinking": "เทมเพลตพร้อมงบประมาณการใช้เหตุผล/การคิด",
    "tool-calling": "เทมเพลตสำหรับการเรียกใช้เครื่องมือ/ฟังก์ชัน",
    "multi-turn": "เทมเพลตสำหรับการสนทนาหลายรอบ",
    "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": "รหัสเรียกเครื่องมือ",
    "reasoningChars": "ตัวละคร",
    "reasoningAge": "อายุ",
    "reasoningView": "ดู",
    "reasoningDetail": "เนื้อหาการให้เหตุผล",
    "reasoningBehavior": "พฤติกรรม",
    "reasoningBehaviorCapture": "รวบรวมเหตุผล _เนื้อหาจากการตอบกลับแบบสตรีม",
    "reasoningBehaviorReplay": "Re-injects on next turn when client omits it",
    "reasoningBehaviorFallback": "เน้นหน่วยความจำเป็นหลักพร้อมทางเลือก SQLite สำหรับการกู้คืนข้อขัดข้อง",
    "reasoningBehaviorTtl": "TTL: 2 ชั่วโมง | Max entries: 2,000 (memory)",
    "reasoningBehaviorModels": "Supported: DeepSeek, Kimi, Qwen-Thinking, GLM",
    "reasoningClearAll": "ล้างแคชการใช้เหตุผล",
    "reasoningClearSuccess": "Cleared {count} reasoning cache entries",
    "reasoningClearError": "Failed to clear reasoning cache",
    "reasoningNoData": "No reasoning entries cached yet. รายการจะปรากฏขึ้นเมื่อคิดแบบจำลองโดยใช้การเรียกเครื่องมือ",
    "cachePerformanceRetry": "ลองอีกครั้ง",
    "cachePerformanceHitRate": "อัตราการเข้าชม",
    "cachePerformanceAvgLatency": "เวลาแฝงเฉลี่ย (มิลลิวินาที)",
    "cachePerformanceP95Latency": "เวลาแฝง p95 (มิลลิวินาที)",
    "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": "Global Proxy Configuration",
    "titleLevel": "{level} Proxy — {label}",
    "loading": "Loading proxy configuration...",
    "inheritingFrom": "สืบทอดมาจาก",
    "source": "แหล่งที่มา",
    "savedProxy": "พร็อกซีที่บันทึกไว้",
    "custom": "กำหนดเอง",
    "selectSavedProxyPlaceholder": "เลือกพร็อกซีที่บันทึกไว้...",
    "proxyType": "ประเภทพร็อกซี",
    "host": "โฮสต์",
    "hostPlaceholder": "1.2.3.4 หรือ proxy.example.com",
    "port": "ท่าเรือ",
    "authOptional": "การรับรองความถูกต้อง (ไม่จำเป็น)",
    "username": "ชื่อผู้ใช้",
    "usernamePlaceholder": "ชื่อผู้ใช้",
    "password": "รหัสผ่าน",
    "passwordPlaceholder": "รหัสผ่าน",
    "connected": "เชื่อมต่อแล้ว",
    "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": "หมายเลขเครื่อง",
    "optional": "(ไม่จำเป็น)",
    "machineIdPlaceholder": "หมายเลขเครื่องจะเติมข้อมูลอัตโนมัติ...",
    "importing": "กำลังนำเข้า...",
    "importToken": "นำเข้าโทเค็น",
    "cancel": "ยกเลิก",
    "errorAutoDetect": "ไม่สามารถตรวจจับโทเค็นอัตโนมัติได้",
    "errorAutoDetectFailed": "โทเค็นการตรวจจับอัตโนมัติล้มเหลว",
    "errorEnterToken": "กรุณาใส่โทเค็นการเข้าถึง",
    "errorImportFailed": "การนำเข้าล้มเหลว"
  },
  "pricingModal": {
    "title": "การกำหนดค่าราคา",
    "loading": "กำลังโหลดข้อมูลราคา...",
    "pricingRatesFormat": "รูปแบบอัตราราคา",
    "ratesDescription": "อัตราทั้งหมดอยู่ใน <strong>ดอลลาร์ต่อล้านโทเค็น</strong> ($/1M โทเค็น) ตัวอย่าง: อัตราอินพุต 2.50 หมายถึง 2.50 ดอลลาร์ต่อโทเค็นอินพุต 1,000,000 รายการ",
    "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": "รหัสขอบเขต (คั่นด้วยเครื่องหมายจุลภาคหรือขึ้นบรรทัดใหม่)",
    "bulkScopeIdsPlaceholder": "ผู้ให้บริการ-openai,ผู้ให้บริการ-มานุษยวิทยา",
    "bulkApply": "สมัคร",
    "labelScope": "__MISSING__:Scope",
    "labelProxy": "__MISSING__:Proxy",
    "scopeGlobal": "__MISSING__:global",
    "scopeProvider": "__MISSING__:provider",
    "scopeAccount": "__MISSING__:account",
    "scopeCombo": "__MISSING__:combo",
    "bulkImportErrorMissingName": "ไม่มี NAME",
    "bulkImportErrorMissingHost": "ไม่มีโฮสต์",
    "bulkImportErrorInvalidPort": "PORT ไม่ถูกต้อง (ต้องเป็น 1-65535)",
    "bulkImportErrorInvalidType": "TYPE ไม่ถูกต้อง (ใช้ http, https หรือ Socks5)",
    "bulkImportErrorInvalidStatus": "สถานะไม่ถูกต้อง (ใช้งานอยู่หรือไม่ได้ใช้งาน)",
    "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} มิลลิวินาที",
    "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": "Clear chat",
    "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": "(ยังไม่ได้อยู่บนเซิร์ฟเวอร์) 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.",
    "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"
  }
}
