{
  "common": {
    "save": "Lưu",
    "cancel": "Hủy bỏ",
    "delete": "Xóa",
    "loading": "Đang tải...",
    "error": "Đã xảy ra lỗi",
    "success": "thành công",
    "confirm": "Bạn có chắc không?",
    "refresh": "Làm mới",
    "close": "Đóng",
    "add": "Thêm",
    "edit": "Chỉnh sửa",
    "search": "Tìm kiếm",
    "back": "Quay lại",
    "next": "Tiếp theo",
    "submit": "Gửi",
    "reset": "Đặt lại",
    "copy": "Sao chép",
    "copied": "Đã sao chép!",
    "enabled": "Đã bật",
    "disabled": "Đã tắt",
    "active": "Đang hoạt động",
    "inactive": "Không hoạt động",
    "noData": "Không có sẵn dữ liệu",
    "nothingHere": "Nothing here yet",
    "configure": "Cấu hình",
    "manage": "Quản lý",
    "name": "Tên",
    "actions": "hành động",
    "status": "Trạng thái",
    "type": "loại",
    "model": "người mẫu",
    "models": "mô hình",
    "provider": "nhà cung cấp",
    "account": "Tài khoản",
    "time": "thời gian",
    "details": "Chi tiết",
    "created": "Đã tạo",
    "lastUsed": "Last Refreshed",
    "loadMore": "Tải thêm",
    "noResults": "Không tìm thấy kết quả nào",
    "reloadPage": "Tải lại trang",
    "connected": "Đã kết nối",
    "disconnected": "Đã ngắt kết nối",
    "notConfigured": "Chưa được định cấu hình",
    "testConnection": "Kiểm tra kết nối",
    "enable": "Kích hoạt",
    "disable": "Vô hiệu hóa",
    "columns": "Cột",
    "newest": "Mới nhất",
    "oldest": "Cũ nhất",
    "all": "Tất cả",
    "none": "không có",
    "yes": "Có",
    "no": "Không",
    "on": "__MISSING__:ON",
    "off": "__MISSING__:OFF",
    "warning": "Cảnh báo",
    "note": "Lưu ý",
    "free": "miễn phí",
    "skipToContent": "Chuyển đến nội dung",
    "maintenanceServerIssues": "Server is experiencing issues. Some features may be unavailable.",
    "maintenanceServerUnreachable": "Server is unreachable. Reconnecting...",
    "accept": "Chấp nhận",
    "accountId": "ID tài khoản",
    "alias": "Bí danh",
    "apiKeyId": "ID khóa API",
    "apiKeyName": "Tên khóa API",
    "apiKeySecret": "Bí mật khóa API",
    "authorization": "Ủy quyền",
    "content-type": "Loại nội dung",
    "content-length": "Độ dài nội dung",
    "cookie": "bánh quy",
    "file": "tập tin",
    "host": "Máy chủ",
    "id": "ID",
    "import": "Nhập khẩu",
    "limit": "giới hạn",
    "offset": "Bù đắp",
    "open": "Mở",
    "origin": "Xuất xứ",
    "promptTokens": "Mã thông báo nhắc nhở",
    "completionTokens": "Mã thông báo hoàn thành",
    "totalTokens": "Tổng số token",
    "rawModel": "Mô hình thô",
    "scope": "Phạm vi",
    "skill": "kỹ năng",
    "sortBy": "Sắp xếp theo",
    "sortOrder": "Sắp xếp thứ tự",
    "tab": "Thẻ",
    "text": "văn bản",
    "textarea": "Vùng văn bản",
    "tool": "Công cụ",
    "toolId": "Mã công cụ",
    "web": "Web",
    "whereUsed": "Nơi sử dụng",
    "whitelist": "Danh sách trắng",
    "blacklist": "Danh sách đen",
    "resolve": "giải quyết",
    "force": "Lực lượng",
    "base64url": "URL Base64",
    "hex": "lục giác",
    "range": "Phạm vi",
    "component": "thành phần",
    "redirect_uri": "URI chuyển hướng",
    "idempotency-key": "Chìa khóa bình đẳng",
    "error_description": "Mô tả lỗi",
    "code": "Mã",
    "compatible": "Tương thích",
    "chat-completions": "Hoàn thành cuộc trò chuyện",
    "oauth": "OAuth",
    "auth_token": "Mã thông báo xác thực",
    "crypto": "tiền điện tử",
    "hours": "Giờ",
    "selfsigned": "Tự ký",
    "proxy_id": "ID proxy",
    "proxyId": "ID proxy",
    "connectionId": "ID kết nối",
    "resolveConnectionId": "Giải quyết ID kết nối",
    "resolve_connection_id": "Giải quyết ID kết nối",
    "scope_id": "ID phạm vi",
    "scopeId": "ID phạm vi",
    "jwtSecret": "Bí mật JWT",
    "keytar": "Bàn phím",
    "better-sqlite3": "tốt hơn-sqlite3",
    "undici": "undic",
    "builder-id": "ID người xây dựng",
    "musicDesc": "Mô tả âm nhạc",
    "musicGeneration": "Thế hệ âm nhạc",
    "idc": "IDC",
    "cloud-status-changed": "Trạng thái đám mây đã thay đổi",
    "where_used": "Nơi sử dụng",
    "windowMs": "Cửa sổ (ms)",
    "social-github": "GitHub",
    "social-google": "Google",
    "TOOL_ALLOWLIST": "Danh sách cho phép của công cụ",
    "TOOL_DENYLIST": "Danh sách từ chối công cụ",
    "Failed to save pricing": "Không lưu được giá",
    "Failed to reset pricing": "Không thể đặt lại giá",
    "apikey": "Khóa 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": "Nhà cung cấp đại lý đám mây",
    "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": "Chỉ miễn phí",
    "addFirstProvider": "Thêm nhà cung cấp đầu tiên của bạn",
    "addFirstProviderDesc": "Kết nối nhà cung cấp AI để bắt đầu định tuyến các yêu cầu thông qua OmniRoute. Bạn có thể sử dụng nhà cung cấp miễn phí, khóa API hoặc tài khoản OAuth.",
    "learnMore": "Tìm hiểu thêm",
    "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": "Nhà cung cấp bậc miễn phí",
    "freeTierLabel": "Cấp miễn phí có sẵn",
    "freeTierProvidersDesc": "Các nhà cung cấp có cấp độ miễn phí — một số yêu cầu đăng ký khóa API, một số khác không cần thông tin xác thực nào cả.",
    "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": "Quản trị viên gamification",
    "monitorAnomaliesAndHealth": "Theo dõi sự bất thường và tình trạng hệ thống",
    "flaggedAnomalies": "Điểm bất thường được gắn cờ",
    "noAnomaliesDetected": "Không phát hiện bất thường",
    "apiKey": "Khóa API",
    "xpLastHour": "XP (1h)",
    "zScore": "Điểm Z",
    "tokensCommunityServers": "Máy chủ cộng đồng",
    "tokensServerNamePlaceholder": "Tên máy chủ",
    "tokensApiKeyPlaceholder": "Khóa API",
    "tokensTokenBalance": "Số dư mã thông báo",
    "tokensSendTokens": "Gửi mã thông báo",
    "tokensRecipientApiKeyId": "ID khóa API của người nhận",
    "tokensRecipientApiKeyIdPlaceholder": "Nhập ID khóa API của người nhận",
    "tokensReasonOptional": "Lý do (tùy chọn)",
    "tokensReasonPlaceholder": "ví dụ: tiền thưởng, phần thưởng",
    "tokensTransactionHistory": "Lịch sử giao dịch",
    "tokensNoTransactionsYet": "Chưa có giao dịch nào",
    "tokensInviteCodes": "Mã mời",
    "tokensMaxUses": "Sử dụng tối đa",
    "tokensRedeemCode": "Đổi mã",
    "tokensRedeemCodePlaceholder": "Nhập mã mời",
    "tokensYourActiveInvites": "Lời mời hoạt động của bạn",
    "tierCoverageTitle": "Mức độ bao phủ",
    "tierCoverageSubtitle": "Nhà cung cấp được định cấu hình cho mỗi tầng dự phòng",
    "batchDetailCopyId": "Sao chép giấy tờ tùy thân",
    "batchDetailClose": "Đóng",
    "batchDetailEndpoint": "Điểm cuối",
    "batchDetailModel": "người mẫu",
    "batchDetailWindow": "Cửa sổ",
    "batchDetailCreated": "Đã tạo",
    "providerTopologyEmpty": "Chưa có nhà cung cấp nào được kết nối",
    "badgeToastUnlocked": "Huy hiệu đã được mở khóa!",
    "batchListSearchPlaceholder": "Tìm kiếm theo ID, endpoint, model…",
    "batchListDeleteAllCompletedTitle": "Xóa tất cả các lô đã hoàn thành",
    "batchListBatchesTable": "Lô",
    "changelogViewerLoading": "Đang tải nhật ký thay đổi từ GitHub...",
    "profileLoading": "Đang tải hồ sơ...",
    "profileHowToEarn": "Làm thế nào để kiếm được",
    "bootstrapBannerDismiss": "Loại bỏ",
    "batchListDeleteBatchTitle": "Xóa lô và các tập tin của nó",
    "leaderboardYourRank": "Thứ hạng của bạn",
    "leaderboardLoading": "Đang tải bảng xếp hạng...",
    "batchFileDetailCopyId": "Sao chép giấy tờ tùy thân",
    "batchFileDetailClose": "Đóng",
    "batchFileDetailFailedToLoad": "Không thể tải nội dung tập tin",
    "batchFilesListSearchPlaceholder": "Tìm kiếm theo ID hoặc tên tập tin…",
    "batchFilesListFilesTable": "Tập tin",
    "batchPageLoadingMore": "Đang tải thêm…",
    "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": "Trang chủ",
    "dashboard": "Trang tổng quan",
    "providers": "Nhà cung cấp",
    "combos": "Combo",
    "usage": "Cách sử dụng",
    "analytics": "Phân tích",
    "costs": "Chi phí",
    "health": "sức khỏe",
    "proxy": "Proxy",
    "limits": "Giới hạn & hạn ngạch",
    "cliTools": "Công cụ CLI",
    "media": "Phương tiện",
    "settings": "Cài đặt",
    "translator": "Người phiên dịch",
    "playground": "Playground",
    "searchTools": "Search Tools",
    "agents": "Tác nhân",
    "cloudAgents": "Đại lý đám mây",
    "memory": "Memory",
    "skills": "Skills",
    "omniSkills": "OmniSkills",
    "agentSkills": "Kỹ năng đại lý",
    "docs": "Tài liệu",
    "issues": "vấn đề",
    "endpoints": "Điểm cuối",
    "endpointsSubtitle": "URL kết nối AI của bạn",
    "apiManager": "Trình quản lý API",
    "apiManagerSubtitle": "Quản lý khóa API và quyền truy cập",
    "embeddedServices": "__MISSING__:Embedded Services",
    "embeddedServicesSubtitle": "__MISSING__:Manage local proxy services",
    "logs": "Nhật ký",
    "webhooks": "Webhook",
    "webhooksSubtitle": "Nhận thông báo về các sự kiện",
    "combosSubtitle": "Nhóm nhà cung cấp chuyển đổi dự phòng",
    "batchSubtitle": "Xử lý nhiều yêu cầu",
    "contextCavemanSubtitle": "Nén nhanh chóng",
    "contextRtkSubtitle": "Lọc đầu ra",
    "auditLog": "Nhật ký kiểm tra",
    "shutdown": "Tắt máy",
    "restart": "Khởi động lại",
    "shutdownConfirm": "Tắt OmniRoute?",
    "restartConfirm": "Khởi động lại OmniRoute?",
    "version": "v{version}",
    "debug": "Gỡ lỗi",
    "system": "Hệ thống",
    "help": "Trợ giúp",
    "primarySection": "Main",
    "cliSection": "CLI",
    "debugSection": "Debug",
    "systemSection": "System",
    "helpSection": "Help",
    "serverDisconnected": "Máy chủ bị ngắt kết nối",
    "serverDisconnectedMsg": "Máy chủ proxy đã bị dừng hoặc đang khởi động lại.",
    "expandSidebar": "Mở rộng thanh bên",
    "collapseSidebar": "Thu gọn thanh bên",
    "themes": "Themes",
    "presetColors": "Popular colors",
    "createTheme": "Create theme",
    "chooseColor": "Pick one color",
    "themeCoral": "Coral",
    "themeBlue": "Blue",
    "themeRed": "Red",
    "themeGreen": "Green",
    "themeViolet": "Violet",
    "themeOrange": "Orange",
    "themeCyan": "Cyan",
    "cliToolsShort": "Công cụ",
    "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": "Kiểm toán A2A",
    "settingsGeneral": "General",
    "settingsAppearance": "Appearance",
    "settingsAi": "AI Settings",
    "settingsSecurity": "Security",
    "settingsFeatureFlags": "Cờ tính năng",
    "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": "Chuyển đổi khả năng của hệ thống",
    "settingsSidebar": "Sidebar",
    "settingsSidebarSubtitle": "Customize sidebar layout",
    "settingsAuthzSubtitle": "__MISSING__:Route inventory and bypass policy",
    "docsSubtitle": "Documentation",
    "issuesSubtitle": "Report a bug",
    "changelogSubtitle": "Release notes"
  },
  "webhooks": {
    "title": "Webhook",
    "description": "Định cấu hình lệnh gọi lại HTTP cho các sự kiện hệ thống.",
    "configuredWebhooks": "Webhooks được định cấu hình",
    "configuredWebhooksDesc": "Quản lý điểm cuối phân phối, sự kiện đã đăng ký, trạng thái và gửi thử nghiệm.",
    "addWebhook": "Thêm Webhook",
    "editWebhook": "Chỉnh sửa Webhook",
    "name": "Tên",
    "namePlaceholder": "Giám sát sản xuất",
    "unnamedWebhook": "Webhook chưa được đặt tên",
    "url": "URL điểm cuối",
    "events": "Sự kiện",
    "allEvents": "Tất cả sự kiện",
    "secret": "bí mật",
    "secretPlaceholder": "Để trống để tự động tạo bí mật",
    "secretEditPlaceholder": "Để trống để giữ bí mật hiện tại",
    "status": "Trạng thái",
    "active": "Đang hoạt động",
    "inactive": "Không hoạt động",
    "errored": "Đã xảy ra lỗi",
    "total": "Tổng cộng",
    "lastTriggered": "Kích hoạt lần cuối",
    "actions": "hành động",
    "enabled": "Đã bật",
    "enabledDesc": "Webhook bị vô hiệu hóa vẫn được lưu nhưng không nhận được hàng gửi.",
    "refresh": "Làm mới",
    "loading": "Đang tải webhook...",
    "never": "không bao giờ",
    "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}",
    "testWebhook": "Gửi bài kiểm tra",
    "testSuccess": "Kiểm tra webhook đã được gửi thành công.",
    "testFailed": "Kiểm tra webhook không thành công.",
    "saveSuccess": "Đã lưu thành công Webhook.",
    "saveFailed": "Không lưu được webhook.",
    "loadFailed": "Không tải được webhook.",
    "delete": "Xóa",
    "deleteConfirm": "Bạn có chắc chắn muốn xóa webhook này không?",
    "deleteSuccess": "Webhook đã được xóa thành công.",
    "deleteFailed": "Không xóa được webhook.",
    "edit": "Chỉnh sửa",
    "enable": "Kích hoạt",
    "disable": "Vô hiệu hóa",
    "noWebhooks": "Chưa có webhooks nào được định cấu hình.",
    "signatureTitle": "Chữ ký Webhook",
    "signatureDescription": "Mỗi lần phân phối bao gồm tiêu đề X-Webhook-Signature được ký bằng HMAC-SHA256 bằng bí mật webhook. Xác minh chữ ký trước khi tin cậy tải trọng.",
    "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": "Kiểm toán",
    "auditDescription": "Xem xét các sự kiện tuân thủ và lệnh gọi công cụ MCP từ một chế độ xem hoạt động.",
    "complianceTab": "Tuân thủ",
    "mcpTab": "Kiểm toán MCP",
    "title": "Kiểm tra tuân thủ",
    "description": "Các sự kiện chính sách, quyền truy cập, nhà cung cấp và bảo mật được ghi lại trong nhật ký kiểm tra tuân thủ.",
    "eventType": "Loại sự kiện",
    "eventTypePlaceholder": "Lọc theo hành động hoặc loại sự kiện",
    "severity": "Mức độ nghiêm trọng",
    "allSeverities": "Tất cả các mức độ nghiêm trọng",
    "info": "Thông tin",
    "warning": "Cảnh báo",
    "critical": "Quan trọng",
    "sourceIp": "IP nguồn",
    "userOrKey": "Người dùng/Khóa",
    "action": "hành động",
    "result": "kết quả",
    "details": "Chi tiết",
    "timestamp": "Dấu thời gian",
    "from": "Từ",
    "to": "Đến",
    "refresh": "Làm mới",
    "export": "Xuất khẩu",
    "clearFilters": "Xóa bộ lọc",
    "loading": "Đang tải sự kiện kiểm tra...",
    "showing": "Đang hiển thị {count} trong số {total} sự kiện",
    "policyViolation": "Vi phạm chính sách",
    "accessDenied": "Truy cập bị từ chối",
    "injectionBlocked": "Tiêm bị chặn",
    "noEvents": "Không có sự kiện tuân thủ nào được ghi lại.",
    "failedFetch": "Không tìm nạp được nhật ký kiểm tra tuân thủ.",
    "viewDetails": "Xem chi tiết",
    "closeDetails": "Đóng chi tiết",
    "notAvailable": "—",
    "system": "hệ thống",
    "previous": "trước đó",
    "next": "Tiếp theo",
    "mcpAudit": "Kiểm toán MCP",
    "mcpAuditDesc": "Các mục kiểm tra cuộc gọi công cụ được ghi lại bởi máy chủ MCP.",
    "failedFetchMcpAudit": "Không tìm nạp được nhật ký kiểm tra MCP.",
    "tool": "Công cụ",
    "toolPlaceholder": "Lọc theo tên công cụ",
    "duration": "Thời lượng",
    "apiKey": "Khóa API",
    "output": "đầu ra",
    "allResults": "Tất cả kết quả",
    "success": "thành công",
    "failure": "Thất bại",
    "noMcpEvents": "Không có sự kiện kiểm tra MCP nào được ghi lại.",
    "a2aAudit": "Kiểm toán A2A",
    "a2aAuditDesc": "Dấu vết kiểm tra thực hiện nhiệm vụ được ghi lại bởi máy chủ A2A.",
    "a2aShowingTasks": "Đang hiển thị {count} trong số {total} nhiệm vụ",
    "a2aSkill": "kỹ năng",
    "a2aSkillPlaceholder": "Lọc theo tên kỹ năng",
    "a2aState": "tiểu bang",
    "a2aAllStates": "Tất cả các tiểu bang",
    "a2aStateSubmitted": "Đã gửi",
    "a2aStateWorking": "Đang làm việc",
    "a2aStateCompleted": "Đã hoàn thành",
    "a2aStateFailed": "thất bại",
    "a2aStateCancelled": "Đã hủy",
    "a2aTaskId": "ID nhiệm vụ",
    "a2aEvents": "Sự kiện",
    "a2aArtifacts": "Hiện vật",
    "a2aNoTasks": "Không có tác vụ A2A nào được ghi lại.",
    "a2aLoadingTasks": "Đang tải nhiệm vụ A2A..."
  },
  "themesPage": {
    "title": "Themes",
    "description": "Choose a preset theme or create your own with a single color",
    "presetColors": "Popular colors",
    "customTheme": "Custom theme",
    "customThemeDesc": "Click create theme and pick one color",
    "createTheme": "Create theme",
    "activePreset": "Active theme"
  },
  "header": {
    "logout": "Đăng xuất",
    "language": "Ngôn ngữ",
    "providers": "Nhà cung cấp",
    "providerDescription": "Quản lý kết nối nhà cung cấp AI của bạn",
    "combos": "Combo",
    "comboDescription": "Kết hợp mô hình với dự phòng",
    "usage": "Cách sử dụng & phân tích",
    "usageDescription": "Giám sát việc sử dụng API, mức tiêu thụ mã thông báo và nhật ký yêu cầu của bạn",
    "analytics": "Phân tích",
    "analyticsDescription": "Biểu đồ, xu hướng và thông tin đánh giá",
    "cliTools": "Công cụ CLI",
    "cliToolsDescription": "Định cấu hình công cụ CLI",
    "home": "Trang chủ",
    "homeDescription": "Chào mừng đến với 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": "Cài đặt",
    "settingsDescription": "Quản lý tùy chọn của bạn",
    "openaiCompatible": "Tương thích OpenAI",
    "anthropicCompatible": "Tương thích với con người",
    "media": "Media",
    "mediaDescription": "Generate images, videos, and music",
    "themes": "Themes",
    "themesDescription": "Choose a color theme for the whole dashboard panel",
    "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers",
    "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.",
    "limitsDescription": "Configure rate limits and quotas per API key and provider",
    "runtimeDescription": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts",
    "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance",
    "batchDescription": "Process large volumes of requests asynchronously with batched API calls",
    "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.",
    "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.",
    "contextCombosDescription": "Define how engines are combined for different routing scenarios.",
    "changelogDescription": "Stay up to date with the latest platform features and announcements.",
    "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents",
    "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval",
    "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing",
    "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution",
    "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration",
    "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini",
    "playgroundDescription": "Test prompts interactively with live provider responses and format inspection",
    "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking",
    "logsDescription": "Real-time request logs, error traces, and streaming event inspector",
    "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events",
    "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications",
    "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database",
    "proxyDescription": "Configure upstream proxy settings for outbound provider connections",
    "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides",
    "batchFilesDescription": "Browse and manage batch job output files and results",
    "analyticsEvalsDescription": "Model evaluation results and performance benchmarks",
    "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking",
    "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning",
    "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations",
    "analyticsCompressionDescription": "Context compression analytics and token savings",
    "costsBudgetDescription": "Budget limits and spending alerts per API key and provider",
    "costsPricingDescription": "Custom pricing configuration for token cost calculations",
    "logsProxyDescription": "Upstream proxy request logs and traffic inspection",
    "logsConsoleDescription": "Application console output and debug logs",
    "logsActivityDescription": "Audit trail of user actions and system events",
    "auditMcpDescription": "MCP tool invocation audit trail and compliance records",
    "auditA2a": "Kiểm toán A2A",
    "auditA2aDescription": "Quá trình kiểm tra thực hiện nhiệm vụ A2A, chuyển đổi trạng thái và bản ghi yêu cầu kỹ năng",
    "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": "Cờ tính năng",
    "featureFlagsDescription": "Kiểm soát khả năng của hệ thống và các tính năng thử nghiệm",
    "featureFlagsActive": "{count} đang hoạt động",
    "featureFlagsInactive": "{count} không hoạt động",
    "featureFlagsOverrides": "{count} Ghi đè DB",
    "featureFlagsSearch": "Tìm kiếm cờ...",
    "featureFlagsCategoryAll": "Tất cả",
    "featureFlagsCategorySecurity": "Bảo mật",
    "featureFlagsCategoryNetwork": "Mạng",
    "featureFlagsCategoryPolicies": "Chính sách",
    "featureFlagsCategoryRuntime": "Thời gian chạy",
    "featureFlagsCategoryCli": "CLI",
    "featureFlagsCategoryHealth": "sức khỏe",
    "featureFlagsSourceDb": "cơ sở dữ liệu",
    "featureFlagsSourceEnv": "ENV",
    "featureFlagsSourceDefault": "DEF",
    "featureFlagsReset": "Đặt lại",
    "featureFlagsResetAll": "Đặt lại tất cả ghi đè",
    "featureFlagsResetAllConfirm": "Bạn có chắc chắn muốn đặt lại tất cả các ghi đè cờ tính năng không? Điều này sẽ hoàn nguyên tất cả các cờ về ENV hoặc giá trị mặc định của chúng.",
    "featureFlagsRestartRequired": "Cần khởi động lại để áp dụng",
    "featureFlagsNoResults": "Không có cờ nào phù hợp với tìm kiếm của bạn",
    "featureFlagsSaved": "Đã cập nhật cờ",
    "featureFlagsError": "Không thể cập nhật cờ",
    "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": "Bắt đầu nhanh",
    "quickStartDesc": "Hãy đứng dậy và chạy trong 4 bước. Kết nối nhà cung cấp, mô hình định tuyến, giám sát mọi thứ.",
    "fullDocs": "Tài liệu đầy đủ",
    "step1Title": "1. Tạo khóa API",
    "step1Desc": "Đi tới <endpoint>Endpoint</endpoint> -> Khóa đã đăng ký. Tạo một khóa cho mỗi môi trường.",
    "step2Title": "2. Kết nối nhà cung cấp",
    "step2Desc": "Thêm tài khoản trong <providers>Providers</providers>. Hỗ trợ OAuth, Khóa API và các cấp miễn phí.",
    "step3Title": "3. Chỉ vào khách hàng của bạn",
    "step3Desc": "Đặt URL cơ sở thành {url} trong ứng dụng khách IDE hoặc API của bạn.",
    "step4Title": "4. Giám sát & tối ưu hóa",
    "step4Desc": "Theo dõi mã thông báo, chi phí và lỗi trong <logs>Nhật ký yêu cầu</logs> và <analytics>Analytics</analytics>.",
    "providersOverview": "Tổng quan về nhà cung cấp",
    "configuredOf": "{configured} được định cấu hình của {total} nhà cung cấp hiện có",
    "noModelsAvailable": "Không có mô hình có sẵn cho nhà cung cấp này.",
    "noProvidersConfigured": "Chưa có nhà cung cấp nào được định cấu hình",
    "addProvider": "Thêm nhà cung cấp",
    "configureFirst": "Trước tiên hãy định cấu hình kết nối trong {providers}",
    "configureProvider": "Định cấu hình nhà cung cấp",
    "modelAvailable": "Có mẫu {count}",
    "modelsAvailable": "Có sẵn mẫu {count}",
    "connectionsActive": "{count} kết nối đang hoạt động",
    "connectionsActivePlural": "{count} kết nối đang hoạt động",
    "copyModelName": "Sao chép tên mẫu",
    "documentation": "Tài liệu",
    "healthMonitor": "Theo dõi sức khỏe",
    "reportIssue": "Báo cáo vấn đề",
    "activeError": "{active} đang hoạt động · Lỗi {errors}",
    "oauthLabel": "OAuth",
    "apiKeyLabel": "Khóa API",
    "requestsShort": "{count} yêu cầu",
    "providerModelsTitle": "{provider} - Người mẫu",
    "copiedModel": "Đã sao chép: {model}",
    "aliasLabel": "bí danh",
    "updateNow": "Cập nhật ngay",
    "updating": "Đang cập nhật...",
    "updateAvailableDesc": "Một phiên bản mới có sẵn. Nhấn vào đây để cập nhật.",
    "updateStarted": "Đã bắt đầu cập nhật...",
    "reloadingPageAutomatically": "Đang tải lại trang tự động...",
    "providerTopology": "Cấu trúc liên kết của nhà cung cấp"
  },
  "analytics": {
    "title": "Phân tích",
    "usageAnalyticsTitle": "__MISSING__:Usage Analytics",
    "diversityScoreTitle": "Đa dạng nhà cung cấp",
    "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": "Giám sát mô hình sử dụng API, mức tiêu thụ mã thông báo, chi phí và xu hướng hoạt động của bạn trên tất cả các nhà cung cấp và mô hình.",
    "evalsDescription": "Chạy bộ đánh giá để kiểm tra và xác thực điểm cuối LLM của bạn. So sánh chất lượng mô hình, phát hiện hồi quy và độ trễ điểm chuẩn.",
    "overview": "Tổng quan",
    "evals": "Đánh giá",
    "utilization": "Tỷ lệ sử dụng",
    "utilizationDescription": "Xu hướng sử dụng hạn ngạch nhà cung cấp và theo dõi giới hạn tốc độ",
    "modelStatus": "Trạng thái mẫu",
    "modelStatusCooldown": "Thời gian hồi chiêu",
    "modelStatusUnavailable": "Không có sẵn",
    "modelStatusError": "Lỗi",
    "comboHealth": "Sức khỏe Combo",
    "comboHealthDescription": "Hạn ngạch cấp combo, phân phối sử dụng và số liệu hiệu suất",
    "compressionAnalyticsTitle": "Compression Analytics",
    "compressionAnalyticsDescription": "Compression analytics — token savings, mode breakdown, and provider stats.",
    "autoRoutingTotalAutoRequests": "Tổng số yêu cầu tự động",
    "autoRoutingAvgSelectionScore": "Điểm lựa chọn trung bình",
    "autoRoutingExplorationRate": "Tỷ lệ thăm dò",
    "autoRoutingLkgpHitRate": "Tỷ lệ truy cập LKGP",
    "autoRoutingRequestsByVariant": "Yêu cầu theo biến thể",
    "autoRoutingTopRoutedProviders": "Nhà cung cấp định tuyến hàng đầu",
    "comboHealthWorstQuotaLeft": "Hạn ngạch tồi tệ nhất còn lại",
    "comboHealthUsageSkew": "Độ lệch sử dụng",
    "comboHealthSuccessRate": "Tỷ lệ thành công",
    "comboHealthQuotaHealth": "Hạn ngạch sức khỏe",
    "comboHealthRequests": "Yêu cầu",
    "comboHealthTokens": "Mã thông báo",
    "comboHealthAvgLatency": "Độ trễ trung bình",
    "comboHealthTotalRequests": "Tổng số yêu cầu",
    "comboHealthExecutionTargets": "Mục tiêu thực hiện",
    "comboHealthSuccess": "thành công",
    "comboHealthLatency": "Độ trễ",
    "comboHealthQuota": "hạn ngạch",
    "comboHealthTitle": "Combo sức khỏe",
    "comboHealthUnableToLoad": "Không thể tải sức khỏe kết hợp",
    "comboHealthGettingStarted": "Bắt đầu",
    "compressionAnalyticsTotalRequests": "Tổng số yêu cầu",
    "compressionAnalyticsTokensSaved": "Mã thông báo đã lưu",
    "compressionAnalyticsAvgSavings": "Tiết kiệm trung bình",
    "compressionAnalyticsAvgDuration": "Thời lượng trung bình",
    "compressionAnalyticsReceipts": "Biên lai",
    "compressionAnalyticsFallbacks": "Dự phòng",
    "compressionAnalyticsPromptTokens": "Mã thông báo nhắc nhở",
    "compressionAnalyticsCompletionTokens": "Mã thông báo hoàn thành",
    "compressionAnalyticsTotalTokens": "Tổng số token",
    "compressionAnalyticsCacheTokens": "Mã thông báo bộ đệm",
    "compressionAnalyticsNoDataYet": "Chưa có dữ liệu nén",
    "searchAnalyticsTotalSearches": "Tổng số tìm kiếm",
    "searchAnalyticsCacheHitRate": "Tỷ lệ truy cập bộ đệm",
    "searchAnalyticsTotalCost": "Tổng chi phí",
    "searchAnalyticsAvgResponse": "Phản hồi trung bình",
    "searchAnalyticsNoSearchesYet": "Chưa có tìm kiếm nào",
    "providerUtilizationTitle": "Việc sử dụng nhà cung cấp",
    "providerUtilizationFailedToLoad": "Không thể tải dữ liệu sử dụng",
    "providerUtilizationNoData": "Không có sẵn dữ liệu sử dụng",
    "providerUtilizationGettingStarted": "Bắt đầu",
    "providerUtilizationLatestSnapshot": "Ảnh chụp nhanh hạn ngạch mới nhất",
    "providerUtilizationRemainingCapacity": "Công suất còn lại"
  },
  "apiManager": {
    "title": "Khóa API",
    "createKey": "Tạo khóa API",
    "key": "Chìa khóa",
    "revokeKey": "Thu hồi khóa",
    "revokeConfirm": "Bạn có chắc chắn muốn thu hồi khóa API này không?",
    "noKeys": "Chưa có khóa API nào",
    "noKeysDesc": "Tạo khóa API đầu tiên để xác thực các yêu cầu tới điểm cuối của bạn",
    "keyLabel": "Nhãn khóa",
    "permissions": "Quyền",
    "expiresAt": "Hết hạn",
    "never": "không bao giờ",
    "revoke": "Thu hồi",
    "showKey": "Hiển thị khóa",
    "hideKey": "Ẩn phím",
    "copyKey": "Sao chép khóa API",
    "allModels": "Tất cả các mô hình",
    "selectedModels": "Các mẫu đã chọn",
    "readOnly": "Chỉ đọc",
    "fullAccess": "Toàn quyền truy cập",
    "keyManagement": "Quản lý khóa API",
    "keyManagementDesc": "Tạo và quản lý khóa API để xác thực các yêu cầu tới điểm cuối của bạn",
    "totalKeys": "Tổng số phím",
    "restricted": "Bị hạn chế",
    "totalRequests": "Tổng số yêu cầu",
    "modelsAvailable": "Các mẫu có sẵn",
    "registeredKeys": "Khóa đã đăng ký",
    "keysRegistered": "{count} khóa đã được đăng ký",
    "keyRegistered": "Đã đăng ký khóa {count}",
    "keysSecurityNote": "Mỗi khóa tách biệt việc theo dõi việc sử dụng và có thể được thu hồi một cách độc lập. Các khóa được che dấu sau khi tạo để bảo mật.",
    "createFirstKey": "Tạo chìa khóa đầu tiên của bạn",
    "name": "Tên",
    "usage": "Cách sử dụng",
    "created": "Đã tạo",
    "actions": "hành động",
    "reqs": "yêu cầu",
    "neverUsed": "Chưa bao giờ sử dụng",
    "deleteConfirm": "Xóa khóa API này?",
    "usageTips": "Mẹo sử dụng",
    "tipAuth": "Sử dụng các khóa API trong tiêu đề Cấp phép làm Người ghi tên YOUR_KEY",
    "tipSecure": "Khóa chỉ được hiển thị một lần trong quá trình tạo — hãy lưu trữ chúng một cách an toàn",
    "tipSeparate": "Tạo khóa riêng cho các máy khách hoặc môi trường khác nhau",
    "tipRestrict": "Hạn chế khóa cho các kiểu máy cụ thể để bảo mật tốt hơn và kiểm soát chi phí",
    "keyName": "Tên khóa",
    "keyNamePlaceholder": "ví dụ: Khóa sản xuất, Khóa phát triển",
    "keyNameDesc": "Chọn tên mô tả để xác định mục đích của khóa này",
    "managementAccessDesc": "Cho phép khóa API này quản lý cấu hình OmniRoute.",
    "selfServiceVisibility": "Khả năng hiển thị tự phục vụ",
    "selfServiceVisibilityDesc": "Kiểm soát những gì khóa này có thể xem về mức sử dụng của chính nó và hạn mức upstream dùng chung.",
    "ownUsageVisibility": "Chi phí và mức dùng token của chính nó",
    "ownUsageVisibilityDesc": "Cho phép khóa này gọi endpoint trạng thái của chính nó để xem mức dùng USD, phần trăm ngân sách và tổng token.",
    "sharedAccountQuotaVisibility": "Hạn mức tài khoản dùng chung",
    "sharedAccountQuotaVisibilityDesc": "Cho phép khóa này xem hạn mức tài khoản upstream dùng chung khi một kết nối rõ ràng được cấu hình.",
    "keyCreated": "Đã tạo khóa API",
    "keyCreatedSuccess": "Đã tạo khóa thành công!",
    "keyCreatedNote": "Sao chép và lưu trữ khóa này ngay bây giờ — nó sẽ không được hiển thị lại.",
    "done": "Xong",
    "savePermissions": "Lưu quyền",
    "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": "Cho phép tất cả",
    "restrict": "hạn chế",
    "allowAllInfo": "Chìa khóa này có thể truy cập vào tất cả các mô hình có sẵn.",
    "restrictInfo": "Khóa này có thể truy cập {selected} trong số {total} mô hình.",
    "selected": "{count} đã chọn",
    "all": "Tất cả",
    "clear": "Xóa",
    "searchModels": "Tìm kiếm mô hình theo tên hoặc nhà cung cấp...",
    "noModelsFound": "Không tìm thấy mô hình nào",
    "keyNameRequired": "Tên khóa là bắt buộc",
    "keyNameTooLong": "Tên khóa phải có {max} ký tự trở xuống",
    "keyNameInvalid": "Tên khóa chỉ có thể chứa chữ cái, số, dấu cách, dấu gạch ngang và dấu gạch dưới",
    "invalidKeyName": "Tên khóa không hợp lệ",
    "failedCreateKey": "Không tạo được khóa",
    "failedCreateKeyRetry": "Không tạo được khóa. Vui lòng thử lại.",
    "invalidKeyId": "ID khóa không hợp lệ",
    "failedDeleteKey": "Không thể xóa khóa",
    "failedDeleteKeyRetry": "Không thể xóa khóa. Vui lòng thử lại.",
    "invalidModelsSelection": "Lựa chọn mô hình không hợp lệ",
    "cannotSelectMoreThanModels": "Không thể chọn nhiều hơn {max} mẫu",
    "failedUpdatePermissions": "Không cập nhật được quyền",
    "failedUpdatePermissionsRetry": "Không cập nhật được quyền. Vui lòng thử lại.",
    "unknownProvider": "không rõ",
    "copyMaskedKey": "Sao chép khóa bị che",
    "keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key",
    "modelsCount": "{count, plural, one {# model} other {# models}}",
    "lastUsedOn": "Cuối cùng: {date}",
    "editPermissions": "Chỉnh sửa quyền",
    "deleteKey": "Xóa phím",
    "regenerateKey": "Tạo lại khóa",
    "regenerateConfirm": "Bạn có chắc chắn muốn tạo lại khóa API này không? Chìa khóa cũ sẽ bị vô hiệu ngay lập tức.",
    "failedRegenerateKey": "Không thể tạo lại khóa API",
    "failedRegenerateKeyRetry": "Không thể tạo lại khóa API. Vui lòng thử lại.",
    "model": "{count} mô hình",
    "models": "{count} mô hình",
    "permissionsTitle": "Quyền: {name}",
    "allowAllDesc": "Chìa khóa này có thể truy cập vào tất cả các mô hình có sẵn.",
    "restrictDesc": "Khóa này có thể truy cập {selectedCount} trong số {totalModels} mô hình.",
    "selectedCount": "{count} đã chọn",
    "maxActiveSessions": "Số phiên hoạt động tối đa",
    "apiManagerCustomRateLimits": "Giới hạn tỷ lệ tùy chỉnh",
    "apiManagerCustomRateLimitsDesc": "Ghi đè giới hạn mặc định toàn cầu. Để trống để sử dụng mặc định.",
    "apiManagerRateLimitRequestsPlaceholder": "Yêu cầu",
    "apiManagerRateLimitReqPer": "yêu cầu /",
    "apiManagerRateLimitSecondsPlaceholder": "Giây",
    "apiManagerRemoveLimitTitle": "Xóa giới hạn",
    "apiManagerTimezonePlaceholder": "Mỹ/Sao_Paulo",
    "noLogPayloadPrivacy": "Quyền riêng tư về tải trọng không cần đăng nhập",
    "bannedStatus": "Trạng thái bị cấm",
    "managementApiAccess": "Quyền truy cập API quản lý",
    "expirationDate": "Ngày hết hạn",
    "managementAccess": "Quyền truy cập quản lý",
    "allowedConnections": "Kết nối được phép",
    "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": "Nhật ký kiểm tra",
    "searchPlaceholder": "Hành động tìm kiếm...",
    "action": "hành động",
    "actor": "diễn viên",
    "target": "Mục tiêu",
    "ipAddress": "Địa chỉ IP",
    "timestamp": "Dấu thời gian",
    "noEntries": "Không tìm thấy mục kiểm tra nào",
    "filterByAction": "Lọc theo hành động...",
    "filterByActor": "Lọc theo diễn viên...",
    "filterEntriesAria": "Lọc các mục nhật ký kiểm tra",
    "filterByActionTypeAria": "Lọc theo loại hành động",
    "filterByActorAria": "Lọc theo diễn viên",
    "refreshAuditLogAria": "Làm mới nhật ký kiểm tra",
    "tableAria": "Mục nhật ký kiểm tra",
    "failedFetchAuditLog": "Không tìm nạp được nhật ký kiểm tra",
    "notAvailable": "—",
    "description": "Hành động hành chính và sự kiện bảo mật",
    "showing": "Hiển thị các mục {count} (bù đắp {offset})",
    "previous": "trước đó"
  },
  "media": {
    "title": "Sân chơi phương tiện",
    "subtitle": "Tạo hình ảnh, video và âm nhạc",
    "model": "Model",
    "prompt": "Prompt",
    "generate": "Tạo",
    "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": "Sao chép",
    "resetToDefault": "Đặt lại về mặc định",
    "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": "Công cụ CLI",
    "noActiveProviders": "Không có nhà cung cấp đang hoạt động",
    "noActiveProvidersDesc": "Trước tiên, vui lòng thêm và kết nối nhà cung cấp để định cấu hình công cụ CLI.",
    "mapModels": "Mô hình bản đồ",
    "testConnection": "Kiểm tra kết nối",
    "connectionStatus": "Trạng thái kết nối",
    "configureEndpoint": "Định cấu hình điểm cuối",
    "instructions": "Hướng dẫn",
    "modelMapping": "Ánh xạ mô hình",
    "baseUrl": "URL cơ sở",
    "apiKey": "Khóa API",
    "configured": "Đã định cấu hình",
    "notConfigured": "Chưa được định cấu hình",
    "notInstalled": "Chưa được cài đặt",
    "custom": "tùy chỉnh",
    "unknown": "Không xác định",
    "lastSavedAt": "Đã lưu lần cuối: {date}",
    "never": "không bao giờ",
    "justNow": "ngay bây giờ",
    "minutesAgoShort": "{count} phút trước",
    "hoursAgoShort": "{count} giờ trước",
    "daysAgoShort": "{count}ngày trước",
    "monthsAgoShort": "{count}tháng trước",
    "yearsAgoShort": "{count} năm trước",
    "runtimeCheckFailed": "Kiểm tra thời gian chạy không thành công",
    "yourApiKeyPlaceholder": "khóa-api-của bạn",
    "modelPlaceholder": "nhà cung cấp/id mô hình",
    "configurationSaved": "Đã lưu cấu hình thành công.",
    "failedToSave": "Không lưu được cấu hình.",
    "noApiKeysCreateOne": "Không có khóa API - Tạo một khóa trong trang Khóa",
    "defaultOmnirouteKey": "sk_omniroute (mặc định)",
    "selectModel": "Chọn mẫu",
    "selectModelForAlias": "Chọn kiểu máy cho {alias}",
    "selectModelForTool": "Chọn mẫu cho {tool}",
    "select": "chọn",
    "clear": "Xóa",
    "comingSoon": "Sắp có",
    "checkingRuntime": "Đang kiểm tra trạng thái thời gian chạy...",
    "guideOnlyIntegration": "Tích hợp chỉ có hướng dẫn (không yêu cầu thời gian chạy cục bộ)",
    "cliRuntimeDetected": "Đã phát hiện và sẵn sàng thời gian chạy CLI",
    "cliFoundNotRunnable": "Đã tìm thấy CLI nhưng không thể chạy được{reason}",
    "cliRuntimeNotDetected": "Thời gian chạy CLI không được phát hiện",
    "binary": "nhị phân",
    "configPath": "Đường dẫn cấu hình",
    "configPathShort": "Cấu hình",
    "failedCheckRuntimeStatus": "Không thể kiểm tra trạng thái thời gian chạy.",
    "copy": "Sao chép",
    "copied": "Đã sao chép",
    "copyConfig": "Sao chép cấu hình",
    "saveConfig": "Lưu cấu hình",
    "selectionSaved": "Đã lưu lựa chọn",
    "guide": "hướng dẫn",
    "detected": "Đã phát hiện",
    "notReady": "Chưa sẵn sàng",
    "active": "Đang hoạt động",
    "inactive": "Không hoạt động",
    "startMitm": "Bắt đầu MITM",
    "stopMitm": "Dừng MITM",
    "mitmStarted": "MITM đã bắt đầu thành công!",
    "mitmStopped": "MITM đã dừng thành công!",
    "failedStart": "Không khởi động được MITM",
    "failedStop": "Không thể dừng MITM",
    "saveMappings": "Lưu bản đồ",
    "mappingsSaved": "Đã lưu bản đồ!",
    "failedSaveMappings": "Không lưu được bản đồ",
    "howItWorks": "Nó hoạt động như thế nào:",
    "antigravityHowWorksDesc": "Phản trọng lực gửi yêu cầu đến điểm cuối của Google. MITM chặn và chuyển hướng chúng đến OmniRoute.",
    "antigravityStep1": "1. Khởi động MITM để định tuyến các yêu cầu thông qua OmniRoute.",
    "antigravityStep2Prefix": "2. Thêm",
    "antigravityStep2Suffix": "vào tệp máy chủ của bạn dưới dạng 127.0.0.1.",
    "antigravityStep3": "3. Mở AntiGravity và các yêu cầu sẽ được ủy quyền.",
    "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": "Yêu cầu mật khẩu Sudo",
    "sudoPasswordHint": "Cần có mật khẩu quản trị viên để sửa đổi cài đặt proxy hệ thống và tệp máy chủ.",
    "enterSudoPassword": "Nhập mật khẩu sudo",
    "sudoPasswordRequiredError": "Mật khẩu Sudo là bắt buộc.",
    "cancel": "Hủy bỏ",
    "confirm": "Xác nhận",
    "settingsApplied": "Cài đặt được áp dụng thành công!",
    "failedApplySettings": "Không thể áp dụng cài đặt",
    "settingsReset": "Thiết lập lại cài đặt thành công!",
    "failedResetSettings": "Không thể đặt lại cài đặt",
    "backupRestored": "Đã khôi phục bản sao lưu!",
    "failedRestore": "Không thể khôi phục",
    "checkingCli": "Đang kiểm tra {tool} CLI...",
    "cliNotRunnable": "{tool} CLI đã được cài đặt nhưng không chạy được",
    "cliNotInstalled": "{tool} CLI chưa được cài đặt",
    "cliNotDetected": "{tool} CLI không được phát hiện",
    "cliDetectedReady": "{tool} CLI đã được phát hiện và sẵn sàng",
    "cliFoundFailedHealthcheck": "{tool} CLI đã được tìm thấy nhưng quá trình kiểm tra tình trạng thời gian chạy không thành công{reason}.",
    "installCliPrompt": "Vui lòng cài đặt {tool} CLI để sử dụng tính năng này.",
    "installCodexPrompt": "Vui lòng cài đặt Codex CLI để sử dụng tính năng tự động áp dụng.",
    "hide": "Ẩn",
    "howToInstall": "Cách cài đặt",
    "installationGuide": "Hướng dẫn cài đặt",
    "platforms": "macOS/Linux/Windows:",
    "afterInstallationRun": "Sau khi cài đặt, hãy chạy",
    "toVerify": "để xác minh.",
    "current": "hiện tại",
    "baseUrlPlaceholder": "https://.../v1",
    "resetToDefault": "Đặt lại về mặc định",
    "providerModelPlaceholder": "nhà cung cấp/id mô hình",
    "apply": "Áp dụng",
    "reset": "Đặt lại",
    "manualConfig": "Cấu hình thủ công",
    "backups": "Sao lưu",
    "configBackups": "Cấu hình sao lưu",
    "noBackupsYet": "Chưa có bản sao lưu nào. Các bản sao lưu được tạo tự động trước mỗi lần Áp dụng hoặc Đặt lại.",
    "restore": "Khôi phục",
    "backupRestoredReloading": "Đã khôi phục bản sao lưu! Đang tải lại trạng thái...",
    "failedRestoreBackup": "Không thể khôi phục bản sao lưu",
    "applied": "Đã áp dụng!",
    "failed": "thất bại",
    "resetDone": "Đặt lại!",
    "omnirouteConfiguredOpenAiCompatible": "OmniRoute được định cấu hình là nhà cung cấp tương thích với OpenAI",
    "provider": "nhà cung cấp",
    "model": "người mẫu",
    "providers": "Nhà cung cấp",
    "auth": "Xác thực",
    "noApiKeysAvailable": "Không có khóa API nào",
    "usingDefaultOmniroute": "Sử dụng mặc định: sk_omniroute",
    "updateConfig": "Cập nhật cấu hình",
    "applyConfig": "Áp dụng cấu hình",
    "noBackupsAvailable": "Không có bản sao lưu nào có sẵn.",
    "profileSaved": "Đã lưu hồ sơ \"{name}\"!",
    "failedSaveProfile": "Không lưu được hồ sơ",
    "profileActivated": "Hồ sơ đã được kích hoạt!",
    "failedActivateProfile": "Không thể kích hoạt hồ sơ",
    "profiles": "Hồ sơ",
    "savedProfiles": "Hồ sơ đã lưu",
    "noProfilesYet": "Chưa có hồ sơ nào được lưu. Lưu cấu hình hiện tại dưới dạng hồ sơ bên dưới.",
    "activate": "Kích hoạt",
    "deleteProfile": "Xóa hồ sơ",
    "profileNamePlaceholder": "Tên hồ sơ (ví dụ: Tài khoản cá nhân)",
    "saveCurrent": "Lưu hiện tại",
    "codexAuthNotePrefix": "Công dụng của Codex",
    "codexAuthNoteMiddle": "với",
    "codexAuthNoteSuffix": "Nhấp vào \"Áp dụng\" để tự động định cấu hình.",
    "claudeManualConfiguration": "Claude CLI - Cấu hình thủ công",
    "codexManualConfiguration": "Codex CLI - Cấu hình thủ công",
    "droidManualConfiguration": "Factory Droid - Cấu hình thủ công",
    "openClawManualConfiguration": "Open Claw - Cấu hình thủ công",
    "clineManualConfiguration": "Cấu hình thủ công Cline",
    "kiloManualConfiguration": "Cấu hình thủ công mã Kilo",
    "whenToUseLabel": "Khi nào nên sử dụng",
    "openToolDocs": "Mở tài liệu công cụ",
    "toolUseCases": {
      "claude": "Sử dụng khi bạn muốn quy trình lập kế hoạch mạnh mẽ và các trình tái cấu trúc nhiều tệp dài với Mã Claude.",
      "codex": "Sử dụng khi nhóm của bạn được chuẩn hóa trên các luồng OpenAI Codex CLI và xác thực dựa trên hồ sơ.",
      "droid": "Sử dụng khi bạn cần một tác nhân đầu cuối nhẹ tập trung vào các vòng lặp thực thi lệnh và mã hóa nhanh.",
      "openclaw": "Sử dụng khi bạn muốn một tác nhân mã hóa kiểu Open Claw nhưng được định tuyến thông qua các chính sách OmniRoute.",
      "cline": "Sử dụng khi bạn định cấu hình các tác nhân mã hóa bên trong trình chỉnh sửa và muốn thiết lập có hướng dẫn với các mô hình OmniRoute.",
      "kilo": "Sử dụng khi quy trình làm việc của bạn phụ thuộc vào các lệnh Kilo Code và các chỉnh sửa lặp lại nhanh chóng.",
      "cursor": "Sử dụng khi mã hóa bằng Con trỏ và bạn cần các mô hình tương thích với OpenAI tùy chỉnh thông qua OmniRoute.",
      "continue": "Sử dụng khi chạy Tiếp tục trong IDE và bạn cần cấu hình nhà cung cấp dựa trên JSON di động.",
      "opencode": "Sử dụng khi bạn thích chạy tác nhân gốc trên thiết bị đầu cuối và tự động hóa theo kịch bản thông qua OpenCode.",
      "kiro": "Sử dụng khi tích hợp Kiro và điều khiển định tuyến mô hình tập trung từ OmniRoute.",
      "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.",
      "antigravity": "Sử dụng khi lưu lượng truy cập AntiGravity/Kiro phải bị chặn thông qua MITM và được định tuyến đến OmniRoute.",
      "copilot": "Sử dụng khi bạn muốn UX kiểu trò chuyện Copilot trong khi thực thi các khóa OmniRoute và quy tắc định tuyến.",
      "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": "Sử dụng khi bạn cần một trợ lý AI gốc thiết bị đầu cuối nhẹ để thực hiện các tác vụ nhanh chóng.",
      "hermes-agent": "__MISSING__:Use when you need Hermes Agent (by Nousresearch) with default, delegation, vision and auxiliary models routed through OmniRoute.",
      "custom": "Sử dụng để triển khai công cụ tùy chỉnh hoặc cấu hình chung tương thích với OpenAI."
    },
    "toolDescriptions": {
      "antigravity": "IDE chống trọng lực của Google với MITM",
      "claude": "Mã Claude nhân loại CLI",
      "codex": "OpenAI Codex CLI",
      "droid": "Trợ lý AI Droid của nhà máy",
      "openclaw": "Trợ lý AI móng vuốt mở",
      "cline": "Trợ lý mã hóa Cline AI CLI",
      "kilo": "Trợ lý AI Kilo Code CLI",
      "cursor": "Trình chỉnh sửa mã AI con trỏ",
      "continue": "Tiếp tục Trợ lý 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": "Trợ lý thiết bị đầu cuối Hermes AI",
      "hermes-agent": "__MISSING__:Hermes Agent (by Nousresearch) - Advanced terminal AI with multi-model support (delegation, vision, compression, etc.)",
      "custom": "Trình tạo cấu hình SDK hoặc CLI tương thích với OpenAI chung"
    },
    "guides": {
      "cursor": {
        "notes": {
          "0": "Yêu cầu tài khoản Cursor Pro để sử dụng tính năng này.",
          "1": "Con trỏ định tuyến các yêu cầu thông qua máy chủ của chính nó, do đó điểm cuối cục bộ không được hỗ trợ. Vui lòng bật Cloud Endpoint trong Cài đặt."
        },
        "steps": {
          "1": {
            "title": "Mở Cài đặt",
            "desc": "Đi tới Cài đặt -> Kiểu máy"
          },
          "2": {
            "title": "Kích hoạt API OpenAI",
            "desc": "Bật tùy chọn \"Khóa API OpenAI\""
          },
          "3": {
            "title": "URL cơ sở"
          },
          "4": {
            "title": "Khóa API"
          },
          "5": {
            "title": "Thêm mô hình tùy chỉnh",
            "desc": "Nhấp vào \"Xem tất cả mẫu\" -> \"Thêm mẫu tùy chỉnh\""
          },
          "6": {
            "title": "Chọn mẫu"
          }
        }
      },
      "continue": {
        "steps": {
          "1": {
            "title": "Mở cấu hình",
            "desc": "Mở tệp cấu hình Tiếp tục"
          },
          "2": {
            "title": "Khóa API"
          },
          "3": {
            "title": "Chọn mẫu"
          },
          "4": {
            "title": "Thêm cấu hình mô hình",
            "desc": "Thêm cấu hình sau vào mảng mô hình của bạn:"
          }
        },
        "notes": {
          "0": "Tiếp tục sử dụng tệp cấu hình 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 yêu cầu cấu hình khóa API.",
          "1": "Đặt URL cơ sở cho điểm cuối OmniRoute của bạn."
        }
      },
      "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 yêu cầu tài khoản 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 tùy chỉnh",
    "toolCategories": "Tool Categories",
    "visibleToolsCount": "{count} công cụ có sẵn",
    "customCliBuilderTitle": "Trình tạo CLI tương thích với OpenAI",
    "customCliBuilderDescription": "Tạo các biến env và đoạn mã JSON cho bất kỳ CLI hoặc SDK nào chấp nhận URL cơ sở, khóa API và ID mô hình tương thích với OpenAI.",
    "customCliNoModels": "Kết nối ít nhất một nhà cung cấp để điền vào bộ chọn mô hình.",
    "customCliNameLabel": "Tên CLI",
    "customCliNamePlaceholder": "ví dụ: CLI nhóm của tôi",
    "customCliDefaultModelLabel": "Mô hình mặc định",
    "customCliDefaultModelHelp": "Sử dụng bất kỳ ID hoặc kết hợp mô hình OmniRoute nào. Hầu hết các CLI tương thích với OpenAI chỉ cần URL cơ sở /v1 cộng với chuỗi mô hình.",
    "customCliKeyHelper": "Để cài đặt cục bộ OmniRoute có thể sử dụng sk_omniroute. Ở chế độ đám mây, hãy chọn một trong các khóa API quản lý của bạn.",
    "customCliAliasMappingsLabel": "Ánh xạ bí danh",
    "customCliAliasMappingsHelp": "Bí danh trợ giúp tùy chọn cho các tập lệnh bao bọc hoặc tệp cấu hình muốn có tên tốc ký ổn định.",
    "customCliAddAlias": "Thêm bí danh",
    "customCliNoMappings": "Chưa có ánh xạ bí danh nào. Thêm một tên nếu trình bao bọc hoặc tập lệnh nhóm của bạn sử dụng tên ngắn ổn định.",
    "customCliAliasPlaceholder": "ví dụ: đánh giá",
    "customCliTargetModelLabel": "Mô hình mục tiêu",
    "customCliEndpointHintLabel": "Cách nối dây điểm cuối",
    "customCliEndpointHint": "Trỏ bất kỳ ứng dụng khách nào tương thích với OpenAI tới URL cơ sở OmniRoute /v1. Điểm cuối hoàn thành cuộc trò chuyện thô là {endpoint}. Sử dụng khối JSON khi công cụ muốn một đối tượng nhà cung cấp hoặc tập lệnh env khi nó đọc các biến OPENAI_*.",
    "customCliEnvBlockTitle": "Đoạn mã Env/shell",
    "customCliJsonBlockTitle": "Khối JSON của nhà cung cấp",
    "copilotConfigGenerator": "Trình tạo cấu hình phi công phụ GitHub",
    "copilotApiKey": "Khóa API",
    "copilotFilterModelsPlaceholder": "Mô hình lọc...",
    "copilotMaxInputTokens": "Mã thông báo đầu vào tối đa",
    "copilotMaxOutputTokens": "Mã thông báo đầu ra tối đa",
    "copilotToolCalling": "Gọi công cụ",
    "copilotPasteInto": "Dán vào: ",
    "wireApiChatCompletions": "Số lần hoàn thành trò chuyện (/chat/hoàn thành)",
    "wireApiResponses": "API phản hồi (/ phản hồi)"
  },
  "combos": {
    "title": "Combo",
    "description": "Tạo các tổ hợp mô hình với hỗ trợ định tuyến và dự phòng có trọng số",
    "autoCatalogTitle": "Danh mục định tuyến tự động",
    "autoCatalogTemplateCount": "{count} mẫu",
    "autoCatalogDescription": "Các tổ hợp tự động/* tích hợp được giải quyết linh hoạt từ các nhà cung cấp được kết nối. Sử dụng bất kỳ ID nào trong số này làm trường mô hình — không cần thiết lập.",
    "autoCatalogExpand": "Mở rộng danh mục định tuyến tự động",
    "autoCatalogCollapse": "Thu gọn danh mục định tuyến tự động",
    "createCombo": "Tạo tổ hợp",
    "editCombo": "Chỉnh sửa kết hợp",
    "deleteCombo": "Xóa tổ hợp",
    "noModels": "Không có mô hình",
    "noModelsYet": "Chưa có mô hình nào được thêm vào",
    "addModel": "Thêm mô hình",
    "addModelToCombo": "Thêm Model vào Combo",
    "routingStrategy": "Chiến lược định tuyến",
    "maxRetries": "Số lần thử lại tối đa",
    "timeout": "Thời gian chờ (ms)",
    "healthcheck": "Kiểm tra sức khỏe",
    "priority": "Ưu tiên",
    "fallback": "Dự phòng",
    "roundRobin": "Vòng Robin",
    "random": "Ngẫu nhiên",
    "leastLatency": "Độ trễ ít nhất",
    "comboName": "Tên kết hợp",
    "comboNamePlaceholder": "combo của tôi",
    "deleteConfirm": "Xóa tổ hợp này?",
    "noCombosYet": "Chưa có combo nào",
    "comboCreated": "Combo được tạo thành công",
    "comboUpdated": "Combo được cập nhật thành công",
    "comboDeleted": "Đã xóa kết hợp",
    "failedCreate": "Không tạo được kết hợp",
    "failedUpdate": "Không thể cập nhật kết hợp",
    "errorCreating": "Lỗi tạo combo",
    "errorUpdating": "Lỗi cập nhật kết hợp",
    "errorDeleting": "Lỗi xóa kết hợp",
    "testFailed": "Yêu cầu kiểm tra không thành công",
    "failedToggle": "Không thể chuyển đổi kết hợp",
    "testResults": "Kết quả kiểm tra — {name}",
    "resolvedBy": "Đã giải quyết bởi:",
    "more": "+{count} khác",
    "reqs": "yêu cầu",
    "success": "sự thành công",
    "proxyConfigured": "Đã định cấu hình proxy",
    "copyComboName": "Sao chép tên tổ hợp",
    "enableCombo": "Bật kết hợp",
    "disableCombo": "Tắt kết hợp",
    "testCombo": "Kết hợp thử nghiệm",
    "duplicate": "trùng lặp",
    "proxyConfig": "Cấu hình proxy",
    "nameRequired": "Tên là bắt buộc",
    "nameInvalid": "Chỉ các chữ cái, số, -, _, / và . được phép",
    "nameHint": "Các chữ cái, số, -, _, / và . được phép",
    "priorityDesc": "Dự phòng tuần tự: thử mô hình 1 trước, sau đó đến mô hình 2, v.v.",
    "weightedDesc": "Phân phối lưu lượng truy cập theo phần trăm trọng lượng với dự phòng",
    "roundRobinDesc": "Phân phối vòng tròn: mỗi yêu cầu sẽ chuyển sang mô hình tiếp theo trong vòng quay",
    "contextRelay": "Context Relay",
    "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate",
    "randomDesc": "Lựa chọn ngẫu nhiên thống nhất, sau đó dự phòng cho các mô hình còn lại",
    "leastUsedDesc": "Chọn mô hình có ít yêu cầu nhất, cân bằng tải theo thời gian",
    "costOptimizedDesc": "Hướng tới mô hình rẻ nhất trước tiên dựa trên giá cả",
    "resetAware": "Đặt lại RR nhận biết",
    "resetAwareDesc": "Cân bằng hạn ngạch còn lại với số lần đặt lại 5 giờ và hàng tuần, sau đó tính điểm tương tự theo vòng tròn",
    "strictRandom": "Strict Random",
    "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling",
    "models": "Người mẫu",
    "autoBalance": "Tự động cân bằng",
    "advancedSettings": "Cài đặt nâng cao",
    "retryDelay": "Độ trễ thử lại (ms)",
    "concurrencyPerModel": "Đồng thời / Mô hình",
    "queueTimeout": "Hết thời gian xếp hàng (ms)",
    "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": "Để trống để sử dụng mặc định chung. Những cài đặt này ghi đè lên mỗi nhà cung cấp.",
    "failoverBeforeRetry": "Chuyển đổi dự phòng trước khi thử lại",
    "maxSetRetries": "Số lần thử lại tập hợp tối đa",
    "setRetryDelayMs": "Đặt độ trễ thử lại (ms)",
    "moveUp": "Di chuyển lên",
    "moveDown": "Di chuyển xuống",
    "removeModel": "Xóa",
    "saving": "Đang lưu...",
    "weighted": "Có trọng số",
    "leastUsed": "Ít được sử dụng nhất",
    "costOpt": "Lựa chọn chi phí",
    "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": "Bạn định tuyến trên nhiều tài khoản bằng phép đo từ xa hạn ngạch và các khoảng thời gian đặt lại khác nhau.",
        "avoid": "Đo từ xa hạn ngạch không khả dụng cho hầu hết các tài khoản.",
        "example": "Ưu tiên đặt lại tài khoản hàng tuần 60% vào ngày mai hơn là đặt lại tài khoản 80% sau này."
      },
      "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": "Sử dụng khi bạn muốn sử dụng hết hạn ngạch của một nhà cung cấp trước khi chuyển sang nhà cung cấp tiếp theo.",
        "avoid": "Tránh khi bạn cần cân bằng tải ở cấp độ yêu cầu giữa các nhà cung cấp.",
        "example": "Ví dụ: Sử dụng tất cả khoản tín dụng Deepgram $200 trước khi quay lại Groq."
      },
      "auto": {
        "when": "Sử dụng khi bạn cần định tuyến tính điểm đa yếu tố dựa trên chi phí, độ trễ và chất lượng.",
        "avoid": "Tránh khi bạn cần thứ tự ưu tiên nghiêm ngặt hoặc sự kiên trì lịch sử.",
        "example": "Ví dụ: Cân bằng yêu cầu giữa các mô hình có điểm mạnh khác nhau."
      },
      "lkgp": {
        "when": "Sử dụng khi bạn muốn định tuyến dựa trên hiệu suất và tỷ lệ thành công trước đây.",
        "avoid": "Tránh khi dữ liệu lịch sử bị hạn chế hoặc không đáng tin cậy.",
        "example": "Ví dụ: Hướng tới những người mẫu có thành tích tốt về các nhiệm vụ cụ thể."
      },
      "context-optimized": {
        "when": "Sử dụng khi bạn cần tối ưu hóa việc sử dụng cửa sổ ngữ cảnh trên các mô hình.",
        "avoid": "Tránh khi các mô hình có độ dài bối cảnh tương tự hoặc các nhiệm vụ đơn giản.",
        "example": "Ví dụ: Phân phối các cuộc hội thoại dài trên các mô hình có cửa sổ ngữ cảnh lớn hơn."
      }
    },
    "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": "Khi được bật, mọi lỗi ngược dòng sẽ kích hoạt chuyển đổi dự phòng ngay lập tức sang mục tiêu kết hợp tiếp theo, bỏ qua tất cả các lần thử lại và URL dự phòng.",
      "maxSetRetries": "Số lần thử lại toàn bộ mục tiêu khi mọi mục tiêu đều thất bại. 0 = không thử lại mức đã đặt.",
      "setRetryDelayMs": "Độ trễ giữa các lần thử lại ở mức đã đặt, giúp các vấn đề nhất thời có thời gian giải quyết."
    },
    "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": "Sẵn sàng để lưu?",
    "readinessDescription": "Xem lại danh sách kiểm tra trước khi tạo hoặc cập nhật kết hợp này.",
    "readinessCheckName": "Tên kết hợp là hợp lệ",
    "readinessCheckModels": "Ít nhất một mô hình được chọn",
    "readinessCheckWeights": "Tổng trọng số là 100%",
    "readinessCheckWeightsOptional": "Không cần quy định trọng lượng",
    "readinessCheckPricing": "Dữ liệu giá cả có sẵn",
    "readinessCheckPricingOptional": "Quy tắc đặt giá không bắt buộc",
    "saveBlockedTitle": "Lưu bị chặn cho đến khi các mục sau được khắc phục:",
    "saveBlockName": "Xác định tên kết hợp.",
    "saveBlockModels": "Thêm ít nhất một mô hình.",
    "saveBlockWeighted": "Đặt trọng số thành 100% (hiện tại: {total}%).",
    "saveBlockPricing": "Thêm giá cho ít nhất một mô hình hoặc chọn một chiến lược khác.",
    "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": "Đặt lại vòng quay tài khoản nhận biết",
        "description": "Cân bằng hạn ngạch nhà cung cấp còn lại với thời gian đặt lại.",
        "tip1": "Sử dụng các bước tài khoản hoặc định tuyến thẻ tài khoản rõ ràng cho các nhà cung cấp có hạn mức đo từ xa.",
        "tip2": "Điều chỉnh buổi tập so với mức tạ hàng tuần khi tình trạng kiệt sức trong thời gian ngắn có nhiều rủi ro hơn.",
        "tip3": "Giữ dây buộc nhỏ để các tài khoản tương đương vẫn xoay vòng một cách công bằng."
      },
      "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": "Hạn ngạch của nhà cung cấp xả thải tuần tự trước khi quay trở lại.",
        "tip1": "Sử dụng để định tuyến dựa trên hạn ngạch với chuỗi dự phòng rõ ràng.",
        "tip2": "Đặt hạn ngạch chính xác để tránh dự phòng sớm.",
        "tip3": "Hoạt động tốt nhất với các nhà cung cấp cung cấp cấp độ miễn phí hoặc nhóm tín dụng.",
        "title": "Cạn kiệt hạn ngạch"
      },
      "auto": {
        "description": "Lộ trình dựa trên việc tính điểm theo thời gian thực về chi phí, độ trễ, chất lượng và tình trạng.",
        "tip1": "Để động cơ tự động cân bằng nhiều yếu tố.",
        "tip2": "Giám sát những yếu tố thúc đẩy quyết định định tuyến trong nhật ký.",
        "tip3": "Sử dụng cho khối lượng công việc phức tạp mà không có yếu tố nào chiếm ưu thế.",
        "title": "Tối ưu hóa đa yếu tố"
      },
      "lkgp": {
        "description": "Lộ trình dựa trên hiệu suất lịch sử và mô hình thành công.",
        "tip1": "Yêu cầu có đủ lịch sử yêu cầu để dự đoán chính xác.",
        "tip2": "Tốt cho khối lượng công việc có mô hình hiệu suất mô hình nhất quán.",
        "tip3": "Theo dõi độ chính xác của dự đoán và điều chỉnh trọng số khi cần thiết.",
        "title": "Định tuyến dựa trên lịch sử"
      },
      "context-optimized": {
        "description": "Tối ưu hóa định tuyến dựa trên việc sử dụng cửa sổ ngữ cảnh và hiệu quả của mã thông báo.",
        "tip1": "Định tuyến các cuộc hội thoại dài đến các mô hình có cửa sổ ngữ cảnh lớn hơn.",
        "tip2": "Giám sát việc sử dụng ngữ cảnh để tránh lãng phí mã thông báo.",
        "tip3": "Phù hợp nhất cho AI đàm thoại yêu cầu lưu giữ ngữ cảnh rộng rãi.",
        "title": "Tối ưu hóa bối cảnh"
      },
      "context-relay": {
        "description": "Tốt nhất khi dự kiến xoay vòng tài khoản và tài khoản tiếp theo phải kế thừa bản tóm tắt nhiệm vụ được đơn giản hóa.",
        "tip1": "Sử dụng với các nhà cung cấp tài khoản luân phiên cho cùng một nhóm mô hình.",
        "tip2": "Đặt ngưỡng chuyển giao dưới mức giới hạn hạn ngạch cứng cho thời gian tạo tóm tắt.",
        "tip3": "Chỉ đặt mô hình tóm tắt chuyên dụng nếu mô hình chính quá đắt hoặc không ổn định.",
        "title": "Ưu tiên liên tục của phiên"
      },
      "p2c": {
        "description": "Định tuyến đến nhà cung cấp có lưu lượng hiện tại thấp nhất dựa trên số liệu thời gian thực.",
        "tip1": "Theo dõi số liệu sức khỏe của nhà cung cấp để đánh giá tải chính xác.",
        "tip2": "Hoạt động tốt nhất với nhóm nhà cung cấp đồng nhất.",
        "tip3": "Điều chỉnh độ nhạy để tránh dao động khi lưu lượng truy cập tăng đột biến.",
        "title": "Sức mạnh của hai sự lựa chọn"
      }
    },
    "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": "Bước nhà cung cấp/mô hình/tài khoản chính xác này đã có trong combo.",
    "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": "Hoàn thành từng giai đoạn để xác định tổ hợp, xây dựng các bước, chọn chiến lược định tuyến và xem xét kết quả.",
    "builderStepsDescription": "Xây dựng từng bước kết hợp theo thứ tự: nhà cung cấp, mô hình, sau đó là tài khoản. Điều này cho phép sử dụng lại cùng một nhà cung cấp và mô hình trên các tài khoản khác nhau.",
    "selectProvider": "Chọn nhà cung cấp",
    "selectProviderPlaceholder": "Chọn nhà cung cấp",
    "selectModel": "Chọn mẫu",
    "selectModelPlaceholder": "Chọn nhà cung cấp trước",
    "selectAccount": "Chọn tài khoản",
    "selectComboToReference": "Chọn combo để tham khảo",
    "comboReference": "Tham khảo kết hợp",
    "addComboReference": "Thêm tài liệu tham khảo kết hợp",
    "addStepBeforeContinue": "Vui lòng thêm ít nhất một bước trước khi chuyển sang giai đoạn tiếp theo.",
    "previewNextStep": "Xem trước bước tiếp theo",
    "autoSelectAccount": "Tự động chọn tài khoản khi chạy",
    "modePackBalanced": "Cân bằng",
    "modePackBudget": "Ngân sách",
    "modePackPerformance": "Hiệu suất",
    "modePackCustom": "tùy chỉnh",
    "browseLegacyCatalog": "Duyệt qua danh mục kết hợp kế thừa",
    "agentFeaturesTitle": "Tính năng đại lý",
    "agentFeaturesDescription": "Kích hoạt các tính năng nâng cao cho các đại lý sử dụng combo này",
    "agentFeaturesSystemMessageOverride": "Ghi đè thông báo hệ thống",
    "agentFeaturesSystemMessagePlaceholder": "Bạn là trợ lý chuyên nghiệp...",
    "agentFeaturesSystemMessageHint": "Ghi đè thông báo hệ thống cho đại lý",
    "agentFeaturesToolFilterRegex": "/mẫu biểu thức chính quy/",
    "agentFeaturesToolFilterHint": "Công cụ lọc biểu thức chính quy cho đại lý",
    "agentFeaturesContextCacheHint": "Bật bộ nhớ đệm trong ngữ cảnh cho các công cụ tác nhân",
    "agentFeaturesContextCacheProtection": "Bảo vệ bộ đệm khỏi đột biến công cụ tác nhân",
    "agentFeaturesContextLength": "Độ dài ngữ cảnh",
    "agentFeaturesContextLengthPlaceholder": "ví dụ: 128000",
    "agentFeaturesContextLengthHint": "Xác định cửa sổ ngữ cảnh cho tổ hợp này trong /v1/models.",
    "agentFeaturesContextLengthErrorInteger": "Độ dài ngữ cảnh phải là số nguyên hợp lệ",
    "agentFeaturesContextLengthErrorRange": "Độ dài ngữ cảnh phải nằm trong khoảng từ 1000 đến 2000000",
    "compressionOverride": "Ghi đè nén",
    "modePack": "Gói chế độ"
  },
  "costs": {
    "title": "Chi phí",
    "pageDescription": "Theo dõi chi tiêu, phân tích xu hướng và quản lý ngân sách AI của bạn trên tất cả các nhà cung cấp",
    "overview": "Tổng quan",
    "budget": "Ngân sách",
    "totalCost": "Tổng chi phí",
    "breakdown": "Phân tích chi phí",
    "noData": "Không có dữ liệu chi phí",
    "byModel": "Theo mẫu",
    "byProvider": "Theo nhà cung cấp",
    "range7d": "7 ngày",
    "range30d": "30 ngày",
    "range90d": "90 ngày",
    "rangeAll": "mọi lúc",
    "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": "Sử dụng mã thông báo",
    "totalTokens": "Tổng số token",
    "inputTokens": "Mã thông báo đầu vào",
    "outputTokens": "Mã thông báo đầu ra",
    "inputOutputRatio": "Tỷ lệ đầu vào/đầu ra",
    "tokens": "mã thông báo",
    "routingEfficiency": "Hiệu quả định tuyến",
    "fallbackCount": "Yêu cầu dự phòng",
    "fallbackRate": "Tỷ lệ dự phòng",
    "modelCoverage": "Phạm vi bảo hiểm của mô hình",
    "modelCoverageDesc": "% yêu cầu có mô hình rõ ràng",
    "outOfRequests": "trong số {total} yêu cầu",
    "costByApiKey": "Chi phí theo khóa API",
    "costByAccount": "Chi phí theo tài khoản",
    "apiKeyName": "Khóa API",
    "account": "Tài khoản",
    "requests": "Yêu cầu",
    "cost": "Chi phí",
    "dayStreak": "vệt ngày",
    "weeklyUsagePattern": "Mẫu sử dụng hàng tuần",
    "activityHeatmap": "Hoạt động (365 ngày)",
    "less": "Ít hơn",
    "more": "Thêm",
    "monthlyForecast": "Dự báo hàng tháng",
    "forecastBasis": "Dựa trên {days} ngày qua",
    "avgDailyCost": "Trung bình chi phí hàng ngày",
    "daysRemaining": "Còn {days} ngày",
    "periodComparison": "So sánh thời gian",
    "previousPeriod": "Hiệp trước",
    "currentPeriod": "Nửa hiện tại",
    "exportCSV": "Xuất dưới dạng CSV",
    "exportJSON": "Xuất dưới dạng JSON",
    "legacyFreeLabel": "__MISSING__:Legacy / Free",
    "costExplorerTitle": "Trình khám phá chi phí",
    "costExplorerDescription": "Khám phá chi tiêu theo nhà cung cấp, mô hình, khóa API, tài khoản hoặc cấp dịch vụ.",
    "groupProvider": "Nhà cung cấp",
    "groupModel": "Mô hình",
    "groupApiKey": "Khóa API",
    "groupAccount": "Tài khoản",
    "groupServiceTier": "Cấp dịch vụ",
    "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": "Chiều",
    "share": "Tỷ trọng",
    "legacyOrFree": "Cũ / miễn phí",
    "filterRows": "Lọc hàng…",
    "filterCostExplorerRows": "Lọc hàng của trình khám phá chi phí",
    "noMatchingCostRows": "Không có hàng chi phí phù hợp",
    "noMatchingCostRowsDescription": "Điều chỉnh văn bản tìm kiếm, cách nhóm hoặc khoảng thời gian đã chọn.",
    "showingCostRows": "Đang hiển thị {shown} trong tổng số {total} hàng phù hợp.",
    "showingTopCostRows": "Đang hiển thị {shown} trong tổng số {total} hàng phù hợp (top 50)."
  },
  "endpoint": {
    "title": "Điểm cuối API",
    "available": "Điểm cuối có sẵn",
    "cloudProxy": "Proxy đám mây",
    "disableConfirm": "Bạn có chắc chắn muốn tắt proxy đám mây không?",
    "baseUrl": "URL cơ sở",
    "apiKeyLabel": "Khóa API",
    "registeredKeys": "Khóa đã đăng ký",
    "chatCompletions": "Hoàn thành cuộc trò chuyện",
    "responses": "Phản hồi",
    "listModels": "Danh sách mô hình",
    "usingCloudProxy": "Sử dụng Proxy đám mây",
    "usingLocalServer": "Sử dụng máy chủ cục bộ",
    "machineId": "ID máy: {id}...",
    "disableCloud": "Tắt đám mây",
    "enableCloud": "Kích hoạt đám mây",
    "modelsAcrossEndpoints": "{models} mô hình trên {endpoints} điểm cuối",
    "loadingModels": "Loading available models...",
    "chatDesc": "Trò chuyện trực tuyến và không phát trực tuyến với tất cả các nhà cung cấp",
    "embeddings": "Nhúng",
    "embeddingsDesc": "Nhúng văn bản cho đường dẫn tìm kiếm & RAG",
    "imageGeneration": "Tạo hình ảnh",
    "imageDesc": "Tạo hình ảnh từ lời nhắc văn bản",
    "rerank": "Xếp hạng lại",
    "rerankDesc": "Sắp xếp lại tài liệu theo mức độ liên quan đến truy vấn",
    "audioTranscription": "Phiên âm âm thanh",
    "audioTranscriptionDesc": "Phiên âm tập tin âm thanh thành văn bản (Whisper)",
    "textToSpeech": "Chuyển văn bản thành giọng nói",
    "textToSpeechDesc": "Chuyển đổi văn bản thành giọng nói tự nhiên",
    "musicGeneration": "Music Generation",
    "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)",
    "moderations": "Kiểm duyệt",
    "moderationsDesc": "Kiểm duyệt nội dung và phân loại an toàn",
    "responsesDesc": "API Responses của OpenAI cho Codex và quy trình làm việc tác tử nâng cao",
    "listModelsDesc": "Liệt kê tất cả các mô hình có sẵn từ tất cả các nhà cung cấp đã kết nối",
    "settingsApiDesc": "Đọc và sửa đổi cấu hình OmniRoute qua API",
    "settingsApi": "Settings API",
    "categoryCore": "API Cốt Lõi",
    "categoryMedia": "Phương Tiện & Đa Phương Thức",
    "categorySearch": "Search & Discovery",
    "categoryUtility": "Tiện Ích & Quản Lý",
    "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": "Kích hoạt proxy đám mây",
    "whatYouGet": "Những gì bạn sẽ nhận được",
    "cloudBenefitAccess": "Truy cập API của bạn từ mọi nơi trên thế giới",
    "cloudBenefitShare": "Chia sẻ điểm cuối với nhóm của bạn một cách dễ dàng",
    "cloudBenefitPorts": "Không cần mở cổng hoặc cấu hình tường lửa",
    "cloudBenefitEdge": "Mạng biên toàn cầu nhanh",
    "cloudSessionNote": "Cloud sẽ giữ phiên xác thực của bạn trong 1 ngày. Nếu không được sử dụng, nó sẽ tự động bị xóa.",
    "cloudUnstableNote": "Cloud hiện tại không ổn định với Claude Code OAuth trong một số trường hợp.",
    "cloudConnected": "Đã kết nối Proxy đám mây!",
    "connectingToCloud": "Đang kết nối với đám mây...",
    "verifyingConnection": "Đang xác minh kết nối...",
    "connecting": "Đang kết nối...",
    "verifying": "Đang xác minh...",
    "connected": "Đã kết nối!",
    "disableCloudTitle": "Vô hiệu hóa Proxy đám mây",
    "disableWarning": "Tất cả các phiên xác thực sẽ bị xóa khỏi đám mây.",
    "syncingData": "Đang đồng bộ hóa dữ liệu mới nhất...",
    "disablingCloud": "Đang tắt đám mây...",
    "syncing": "Đang đồng bộ hóa...",
    "disabling": "Đang tắt...",
    "cloudConnectedVerified": "Cloud Proxy đã được kết nối và xác minh!",
    "connectedVerificationPending": "Đã kết nối - đang chờ xác minh",
    "connectedVerificationPendingWithError": "Đã kết nối — đang chờ xác minh: {error}",
    "cloudDisabledSuccess": "Đám mây đã được tắt thành công",
    "syncedSuccess": "Đã đồng bộ hóa thành công",
    "failedDisable": "Không thể tắt đám mây",
    "failedEnable": "Không thể bật đám mây",
    "cloudRequestTimeout": "Hết thời gian yêu cầu đám mây",
    "cloudRequestFailed": "Yêu cầu đám mây không thành công",
    "cloudWorkerUnreachable": "Không thể liên hệ với nhân viên đám mây. Đảm bảo dịch vụ đám mây đang chạy (npm run dev in /cloud).",
    "connectionFailed": "Kết nối không thành công",
    "syncFailed": "Không thể đồng bộ hóa dữ liệu đám mây",
    "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} — Mô hình",
    "noModelsForProvider": "Không có mô hình có sẵn cho nhà cung cấp này.",
    "chat": "Trò chuyện",
    "embedding": "Nhúng",
    "image": "Hình ảnh",
    "custom": "tùy chỉnh",
    "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": "Tin nhắn",
    "messagesApiDesc": "Định dạng API thông điệp nhân loại gốc dành cho các nhà cung cấp tương thích với Claude",
    "imageEdits": "Chỉnh sửa hình ảnh",
    "imageEditsDesc": "Chỉnh sửa và sửa đổi các hình ảnh hiện có bằng AI (inpainting, outpainting, các biến thể)",
    "batchApi": "API hàng loạt",
    "batchApiDesc": "Xử lý hàng loạt yêu cầu lớn không đồng bộ (tương thích với OpenAI)",
    "filesApi": "API tệp",
    "filesApiDesc": "Tải lên và quản lý tập tin để xử lý hàng loạt",
    "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": "Mật khẩu Sudo (bắt buộc trên macOS/Linux)",
    "ngrokTitle": "đường hầm ngrok",
    "ngrokRunning": "Đang chạy",
    "ngrokStarting": "Bắt đầu",
    "ngrokStoppedState": "Đã dừng",
    "ngrokNeedsAuth": "Cần xác thực",
    "ngrokNotInstalled": "Chưa được cài đặt",
    "ngrokUnsupported": "Không được hỗ trợ",
    "ngrokError": "Lỗi",
    "ngrokEnable": "Kích hoạt đường hầm",
    "ngrokDisable": "Đường hầm dừng",
    "ngrokUrlNotice": "Tạo một đường hầm ngrok công cộng.",
    "ngrokAuthTokenLabel": "Authtoken (Bắt buộc nếu NGROK_AUTHTOKEN chưa được đặt)",
    "ngrokAuthTokenPlaceholder": "Nhập mã xác thực ngrok của bạn",
    "ngrokLastError": "Lỗi cuối cùng: {error}",
    "ngrokStarted": "đường hầm ngrok bắt đầu",
    "ngrokStopped": "đường hầm ngrok đã dừng lại",
    "ngrokRequestFailed": "Không thể cập nhật đường hầm ngrok",
    "tokenSaverSubtitle": "Chi tiêu ít mã thông báo hơn cho mỗi yêu cầu.",
    "tokenSaverToolOutput": "Đầu ra công cụ",
    "tokenSaverLlmOutput": "Đầu ra LLM",
    "tokenSaverInputCompression": "nén đầu vào",
    "apiEndpointsCatalogUnavailable": "Danh mục API không có sẵn",
    "apiEndpointsSearchPlaceholder": "Tìm kiếm điểm cuối...",
    "apiEndpointsRequiresAuth": "Yêu cầu xác thực",
    "apiEndpointsNoMatch": "Không có điểm cuối nào khớp với bộ lọc của bạn",
    "localServer": "Máy chủ cục bộ",
    "cloudOmniroute": "Cloud OmniRoute",
    "copyUrl": "Sao chép 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": "Sao chép URL",
    "mcpDisabledTitle": "__MISSING__:MCP is disabled",
    "mcpDisabledDesc": "__MISSING__:Enable MCP above to configure transport mode and view server telemetry.",
    "mcpIntro": "__MISSING__:Model Context Protocol — {tools} tools across {scopes} scopes, {transports} transports (stdio / SSE / Streamable HTTP).",
    "mcpStep1": "__MISSING__:Run via {code}",
    "mcpStep2": "__MISSING__:Configure your MCP client to connect over stdio transport.",
    "mcpStep3": "__MISSING__:Invoke tools like {code1} and {code2}.",
    "pid": "PID",
    "sessionUptime": "Session uptime",
    "lastHeartbeat": "Last heartbeat",
    "activity24h": "Activity (24h)",
    "totalCalls": "Total calls",
    "successRate": "Success rate",
    "avgLatency": "Avg latency",
    "topTools": "Top tools",
    "noToolCalls24h": "No tool calls in the last 24 hours.",
    "runtimeDetails": "Runtime details",
    "transport": "Transport",
    "scopesEnforced": "Scopes enforced",
    "yes": "yes",
    "no": "no",
    "lastCall": "Last call",
    "heartbeatPath": "Heartbeat path",
    "operationalControls": "Operational controls",
    "switchCombo": "Switch combo",
    "inactive": "inactive",
    "active": "active",
    "activateCombo": "Activate combo",
    "deactivateCombo": "Deactivate combo",
    "applyResilienceProfile": "Apply resilience profile",
    "profileAggressive": "aggressive",
    "profileBalanced": "balanced",
    "profileConservative": "conservative",
    "applyProfile": "Apply profile",
    "resetCircuitBreakers": "Reset circuit breakers",
    "resetCircuitBreakersHelp": "Clears current breaker state and failure counters for providers.",
    "resetAllBreakers": "Reset all breakers",
    "toolsAndScopes": "Tools and scopes",
    "tableTool": "Tool",
    "tableScopes": "Scopes",
    "tablePhase": "Phase",
    "tableAudit": "Audit",
    "auditLog": "Audit log",
    "auditSummary": "Calls: {total} | page {page} of {totalPages}",
    "allTools": "All tools",
    "allResults": "All results",
    "success": "Success",
    "failure": "Failure",
    "apiKeyIdPlaceholder": "apiKeyId",
    "loadingAuditEntries": "Loading audit entries...",
    "noAuditEntriesForFilters": "No audit entries found for current filters.",
    "tableTimestamp": "Timestamp",
    "tableDuration": "Duration",
    "tableResult": "Result",
    "tableApiKey": "API key",
    "failed": "failed",
    "previous": "Previous",
    "next": "Next",
    "apiKeyId": "Api Key Id",
    "offset": "Offset",
    "limit": "Limit",
    "tool": "Tool"
  },
  "a2aDashboard": {
    "loading": "Loading A2A dashboard...",
    "confirmCancelTask": "Cancel task {taskId}?",
    "cancelTaskFailed": "Failed to cancel task.",
    "cancelTaskSuccess": "Task {taskId} cancelled.",
    "smokeSendFailed": "message/send smoke test failed.",
    "smokeSendSuccessWithTask": "message/send ok (task {taskId}).",
    "smokeSendSuccess": "message/send ok.",
    "smokeStreamFailed": "message/stream smoke test failed.",
    "smokeStreamSuccessWithTask": "message/stream ok (task {taskId}{stateSuffix}).",
    "smokeStreamNoTaskId": "message/stream finished without task id.",
    "health": "Health",
    "ok": "ok",
    "totalTasks": "Total tasks",
    "activeStreams": "Active streams",
    "lastTask": "Last task",
    "taskStateOverview": "Task state overview",
    "state": {
      "submitted": "submitted",
      "working": "working",
      "completed": "completed",
      "failed": "failed",
      "cancelled": "cancelled"
    },
    "agentCard": "Agent card",
    "agentCardPath": "__MISSING__:/.well-known/agent.json",
    "version": "Version",
    "url": "URL",
    "capabilities": "Capabilities",
    "agentCardNotAvailable": "Agent card not available.",
    "quickValidation": "Quick validation",
    "quickValidationDescription": "Executes smoke calls through the live `/a2a` endpoint.",
    "runMessageSend": "Run message/send",
    "runMessageStream": "Run message/stream",
    "taskManagement": "Task management",
    "taskSummary": "{total} tasks | page {page} of {totalPages}",
    "allStates": "all",
    "allSkills": "all skills",
    "loadingTasks": "Loading tasks...",
    "noTasksForFilters": "No tasks found for current filters.",
    "tableTask": "Task",
    "tableSkill": "Skill",
    "tableState": "State",
    "tableUpdated": "Updated",
    "tableActions": "Actions",
    "view": "View",
    "cancel": "Cancel",
    "previous": "Previous",
    "next": "Next",
    "taskDetail": "Task detail",
    "close": "Close",
    "metadata": "Metadata",
    "events": "Events",
    "artifacts": "Artifacts",
    "tablePhase": "Table Phase",
    "offset": "Offset",
    "limit": "Limit",
    "skill": "Skill",
    "rpcEndpoint": "BÀI ĐĂNG /a2a",
    "rpcMethodSend": "tin nhắn/gửi",
    "rpcMethodStream": "tin nhắn/luồng",
    "rpcMethodGet": "nhiệm vụ/nhận",
    "rpcMethodCancel": "nhiệm vụ/hủy bỏ",
    "serviceLabel": "A2A",
    "online": "__MISSING__:Online",
    "offline": "__MISSING__:Offline",
    "disableLabel": "__MISSING__:Disable {label}",
    "enableLabel": "__MISSING__:Enable {label}",
    "a2aDisabledTitle": "__MISSING__:A2A is disabled",
    "a2aDisabledDesc": "__MISSING__:Enable A2A above to view task telemetry, agent details, and validation tools.",
    "a2aIntro": "__MISSING__:Agent2Agent JSON-RPC 2.0 endpoint — send tasks, stream responses, cancel in-flight jobs.",
    "a2aStep1": "__MISSING__:Discover the agent card at {code}.",
    "a2aStep2": "__MISSING__:Send JSON-RPC to {code1} using {code2} or {code3}.",
    "a2aStep3": "__MISSING__:Track and cancel tasks with {code1} and {code2}."
  },
  "memory": {
    "title": "Memory Management",
    "description": "View and manage stored memory entries",
    "memories": "Memories",
    "totalEntries": "Total Entries",
    "tokensUsed": "Tokens Used",
    "hitRate": "Hit Rate",
    "loading": "Loading memories...",
    "noMemories": "No memories found",
    "search": "Search memories...",
    "allTypes": "All Types",
    "export": "Export",
    "import": "Import",
    "addMemory": "Add Memory",
    "type": "Type",
    "key": "Key",
    "content": "Content",
    "created": "Created",
    "actions": "Actions",
    "delete": "Delete",
    "factual": "Factual",
    "episodic": "Episodic",
    "procedural": "Procedural",
    "semantic": "Semantic",
    "a": "A",
    "pipelineOk": "Đường ống ổn ({latencyMs}ms)",
    "pipelineError": "Lỗi đường ống",
    "healthUnknown": "Không rõ sức khỏe",
    "checkingHealth": "Đang kiểm tra…",
    "checkHealth": "Kiểm tra sức khỏe",
    "pageInfo": "Trang {page} trên {totalPages} (tổng cộng {total})",
    "previous": "trước đó",
    "next": "Tiếp theo",
    "cancel": "Hủy bỏ",
    "save": "Lưu",
    "keyPlaceholder": "ví dụ: user.preferences.theme",
    "contentPlaceholder": "Giá trị hoặc nội dung JSON cần ghi nhớ"
  },
  "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": "Lọc kỹ năng theo tên, mô tả hoặc thẻ",
    "allModes": "Tất cả các chế độ",
    "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": "Thị trường kỹ năng",
    "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": "Cài đặt kỹ năng"
  },
  "health": {
    "title": "Tình trạng hệ thống",
    "description": "Giám sát thời gian thực phiên bản OmniRoute của bạn",
    "healthy": "khỏe mạnh",
    "degraded": "xuống cấp",
    "down": "xuống",
    "uptime": "Thời gian hoạt động",
    "memory": "Bộ nhớ",
    "memoryRss": "Bộ nhớ (RSS)",
    "heap": "Đống",
    "cpu": "CPU",
    "database": "Cơ sở dữ liệu",
    "version": "Phiên bản",
    "lastCheck": "Kiểm tra lần cuối",
    "providerHealth": "Sức khỏe nhà cung cấp",
    "systemMetrics": "Số liệu hệ thống",
    "tokenHealth": "Tình trạng mã thông báo",
    "refreshAll": "Làm mới tất cả",
    "checkNow": "Kiểm tra ngay",
    "loadingHealth": "Đang tải dữ liệu sức khỏe...",
    "failedToLoad": "Không tải được dữ liệu sức khỏe: {error}",
    "retry": "Thử lại",
    "allOperational": "Tất cả các hệ thống hoạt động",
    "issuesDetected": "Đã phát hiện sự cố hệ thống",
    "updatedAt": "Đã cập nhật {time}",
    "latency": "Độ trễ",
    "latencyP50": "p50",
    "latencyP95": "p95",
    "latencyP99": "p99",
    "millisecondsShort": "{value}ms",
    "notAvailable": "—",
    "totalRequests": "Tổng số yêu cầu",
    "noDataYet": "Chưa có dữ liệu",
    "promptCache": "Bộ nhớ đệm nhắc nhở",
    "entries": "Bài dự thi",
    "hitRate": "Tỷ lệ trúng",
    "hitsMisses": "Lượt truy cập / Bỏ lỡ",
    "signatureCache": "Bộ đệm chữ ký",
    "signatureDefaults": "Mặc định",
    "signatureTool": "Công cụ",
    "signatureFamily": "gia đình",
    "signatureSession": "Phiên",
    "recovering": "Đang phục hồi",
    "noCBData": "Không có dữ liệu ngắt mạch có sẵn. Thực hiện một số yêu cầu đầu tiên.",
    "providerHealthStatusAria": "Tình trạng sức khỏe của nhà cung cấp",
    "issuesLabel": "Đã phát hiện sự cố",
    "operational": "hoạt động",
    "providers": "Nhà cung cấp",
    "configuredProvidersLabel": "Được định cấu hình trong bảng điều khiển",
    "configuredProvidersHint": "Nhà cung cấp có thông tin xác thực được lưu trong /dashboard/providers, bất kể trạng thái thời gian chạy.",
    "activeProviders": "{count} active",
    "activeProvidersHint": "Nhà cung cấp được định cấu hình hiện đã được bật cho các yêu cầu định tuyến.",
    "monitoredProviders": "{count} monitored",
    "monitoredProvidersHint": "Các nhà cung cấp hiện được theo dõi bởi máy theo dõi tình trạng ngắt mạch.",
    "healthyCount": "{count} khỏe mạnh",
    "nodeVersion": "Nút {version}",
    "failures": "{count} thất bại",
    "failuresPlural": "{count} thất bại",
    "lastFailure": "Cuối cùng",
    "rateLimitStatus": "Trạng thái giới hạn tỷ lệ",
    "activeLimiters": "{count} bộ giới hạn hoạt động",
    "activeLimitersPlural": "{count} bộ giới hạn hoạt động",
    "queued": "Đã xếp hàng",
    "queuedCount": "{count} đã xếp hàng",
    "running": "đang chạy",
    "runningCount": "{count} đang chạy",
    "ok": "được rồi",
    "activeLockouts": "Khóa hoạt động",
    "resetConfirm": "Đặt lại tất cả các bộ ngắt mạch về trạng thái khỏe mạnh? Điều này sẽ xóa tất cả số lần lỗi và khôi phục tất cả các nhà cung cấp về trạng thái hoạt động.",
    "resetAllTitle": "Đặt lại tất cả các bộ ngắt mạch về trạng thái khỏe mạnh",
    "resetting": "Đang đặt lại...",
    "resetAll": "Đặt lại tất cả",
    "until": "Cho đến {time}",
    "limitExhausted": "Exhausted",
    "learnedFromHeaders": "Learned from headers",
    "remainingOfLimit": "{remaining}/{limit} remaining",
    "throttleStatus": "Throttle: {value}",
    "lastHeaderUpdate": "Header update: {age}",
    "databaseHealth": "Tình trạng cơ sở dữ liệu",
    "stickyBoundSessions": "Phiên bị ràng buộc",
    "sessionsByApiKey": "Phiên theo khóa API",
    "noActiveSessionsTracked": "Chưa có phiên hoạt động nào được theo dõi.",
    "noSessionQuotaMonitorsActive": "Không có màn hình hạn ngạch phiên nào đang hoạt động.",
    "gracefulDegradationStatus": "Tình trạng xuống cấp duyên dáng",
    "additionalModels": "+{count} mô hình khác",
    "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": "Đo từ xa hệ thống",
    "description": "Các tín hiệu yêu cầu, thời gian chạy, phiên và bộ nhớ luân phiên từ quy trình OmniRoute này.",
    "uptime": "Thời gian hoạt động",
    "totalRequests": "Tổng số yêu cầu",
    "avgLatency": "Độ trễ trung bình",
    "errorRate": "Tỷ lệ lỗi",
    "activeConnections": "Kết nối đang hoạt động",
    "memoryUsage": "Sử dụng bộ nhớ",
    "latencyTrend": "Xu hướng độ trễ",
    "throughputTrend": "Xu hướng thông lượng",
    "memoryTrend": "Xu hướng trí nhớ",
    "refresh": "Làm mới",
    "updatedAt": "Đã cập nhật {time}",
    "loadFailed": "Không thể tải dữ liệu đo từ xa.",
    "partialData": "Đo từ xa khả dụng một phần: {error}"
  },
  "mitm": {
    "title": "Ủy quyền MITM",
    "description": "Proxy minh bạch để chặn và định tuyến các yêu cầu của khách hàng.",
    "enable": "Kích hoạt proxy MITM",
    "enableDesc": "Bắt đầu hoặc dừng quá trình chặn cục bộ và ghi đè DNS.",
    "status": "Trạng thái",
    "running": "Đang chạy",
    "stopped": "Đã dừng",
    "start": "Bắt đầu",
    "stop": "Dừng lại",
    "refresh": "Làm mới",
    "port": "Cổng ủy quyền",
    "apiKey": "Khóa API bộ định tuyến",
    "apiKeyPlaceholder": "Tùy chọn; quay trở lại khóa cục bộ",
    "sudoPassword": "Mật khẩu Sudo",
    "cachedPassword": "Được lưu vào bộ nhớ đệm cho quá trình này",
    "saveSettings": "Lưu cài đặt",
    "settingsSaved": "Đã lưu cài đặt MITM.",
    "startedSuccess": "Proxy MITM đã bắt đầu.",
    "stoppedSuccess": "Proxy MITM đã dừng.",
    "saveFailed": "Không thể cập nhật cài đặt MITM.",
    "loadFailed": "Không thể tải cài đặt MITM.",
    "invalidPort": "Việc chặn MITM trong suốt hiện yêu cầu cổng 443.",
    "certificate": "Chứng chỉ CA",
    "certificateReady": "Chứng chỉ có sẵn để cài đặt tin cậy của khách hàng.",
    "certificateMissing": "Chứng chỉ chưa được tạo.",
    "available": "Có sẵn",
    "missing": "Thiếu",
    "downloadCert": "Tải xuống chứng chỉ CA",
    "regenerateCert": "Tạo lại chứng chỉ",
    "regenerateConfirm": "Điều này sẽ làm mất hiệu lực niềm tin của khách hàng hiện tại. Tiếp tục?",
    "regenerateSuccess": "Chứng chỉ MITM đã được tạo lại.",
    "regenerateFailed": "Không thể tạo lại chứng chỉ MITM.",
    "targetRoutes": "Tuyến đường mục tiêu",
    "interceptedRequests": "Yêu cầu bị chặn",
    "activeConnections": "Kết nối đang hoạt động",
    "dnsConfigured": "Đã định cấu hình DNS",
    "pid": "PID",
    "lastIntercept": "Đánh chặn cuối cùng",
    "target": "Mục tiêu",
    "host": "Máy chủ",
    "localPort": "Cảng địa phương",
    "endpoints": "Điểm cuối",
    "enabled": "Đã bật",
    "configured": "Đã định cấu hình",
    "yes": "Có",
    "no": "Không",
    "noTargets": "Không có tuyến đường mục tiêu nào được định cấu hình."
  },
  "limits": {
    "title": "Giới hạn & hạn ngạch",
    "rateLimit": "Giới hạn tỷ lệ",
    "remaining": "Còn lại",
    "requestsPerMinute": "Yêu cầu/phút",
    "tokensPerMinute": "Mã thông báo/phút",
    "dailyLimit": "Giới hạn hàng ngày"
  },
  "logs": {
    "title": "Nhật ký",
    "requestLogs": "Nhật ký yêu cầu",
    "proxyLogs": "Nhật ký proxy",
    "auditLog": "Nhật ký kiểm tra",
    "console": "Bảng điều khiển",
    "auditLogDesc": "Hành động hành chính và sự kiện bảo mật",
    "loading": "Đang tải...",
    "refresh": "Làm mới",
    "filterByAction": "Lọc theo hành động...",
    "filterByActor": "Lọc theo diễn viên...",
    "filterEntriesAria": "Lọc các mục nhật ký kiểm tra",
    "filterByActionTypeAria": "Lọc theo loại hành động",
    "filterByActorAria": "Lọc theo diễn viên",
    "refreshAuditLogAria": "Làm mới nhật ký kiểm tra",
    "tableAria": "Mục nhật ký kiểm tra",
    "failedFetchAuditLog": "Không tìm nạp được nhật ký kiểm tra",
    "showing": "Hiển thị các mục {count} (bù đắp {offset})",
    "search": "Tìm kiếm",
    "timestamp": "Dấu thời gian",
    "action": "hành động",
    "actor": "diễn viên",
    "target": "Mục tiêu",
    "details": "Chi tiết",
    "ipAddress": "Địa chỉ IP",
    "notAvailable": "—",
    "noEntries": "Không tìm thấy mục nhật ký kiểm tra nào",
    "previous": "trước đó",
    "next": "Tiếp theo",
    "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": "Xóa tất cả",
    "confirmClearActiveRequests": "Xóa tất cả yêu cầu đang hoạt động?",
    "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": "Chào mừng",
    "security": "Bảo mật",
    "test": "kiểm tra",
    "ready": "Sẵn sàng!",
    "setPassword": "Đặt mật khẩu",
    "addProvider": "Thêm nhà cung cấp đầu tiên của bạn",
    "getStarted": "Bắt đầu",
    "skip": "Bỏ qua",
    "skipWizard": "Bỏ qua hoàn toàn trình hướng dẫn",
    "skipPassword": "Bỏ qua việc thiết lập mật khẩu",
    "skipAndContinue": "Bỏ qua & Tiếp tục",
    "passwordLabel": "Mật khẩu",
    "confirmPassword": "Xác nhận mật khẩu",
    "enterPassword": "Nhập mật khẩu",
    "confirmPasswordPlaceholder": "Xác nhận mật khẩu",
    "passwordsMismatch": "Mật khẩu không khớp",
    "setupComplete": "Thiết lập hoàn tất!",
    "goToDashboard": "Đi tới Bảng điều khiển →",
    "welcomeDesc": "OmniRoute là proxy API AI cục bộ của bạn. Nó định tuyến các yêu cầu đến nhiều nhà cung cấp AI với tính năng cân bằng tải, chuyển đổi dự phòng và theo dõi việc sử dụng.",
    "multiProvider": "Đa nhà cung cấp",
    "usageTracking": "Theo dõi sử dụng",
    "securityDesc": "Đặt mật khẩu để bảo vệ trang tổng quan của bạn hoặc bỏ qua ngay bây giờ.",
    "providerDesc": "Kết nối nhà cung cấp AI đầu tiên của bạn. Bạn có thể thêm nhiều hơn sau.",
    "apiKeyRequired": "Khóa API (bắt buộc)",
    "customUrlOptional": "URL tùy chỉnh (tùy chọn)",
    "testDesc": "Hãy xác minh kết nối nhà cung cấp của bạn hoạt động.",
    "runTest": "Chạy kiểm tra kết nối",
    "testingConnection": "Đang kiểm tra kết nối...",
    "connectionSuccessful": "Kết nối thành công! Nhà cung cấp của bạn đã sẵn sàng.",
    "noProviderFound": "Không tìm thấy nhà cung cấp nào. Bạn có thể thêm một từ bảng điều khiển sau.",
    "testFailed": "Thử nghiệm không thành công nhưng bạn có thể định cấu hình điều này sau.",
    "couldNotTest": "Không thể kiểm tra ngay bây giờ. Bạn có thể kiểm tra từ bảng điều khiển.",
    "doneDesc": "Bạn đã hoàn tất! Phiên bản OmniRoute của bạn đã được định cấu hình và sẵn sàng thực hiện các yêu cầu AI proxy.",
    "yourEndpoint": "Điểm cuối của bạn:",
    "continue": "Tiếp tục",
    "retry": "Thử lại",
    "failedSetPassword": "Không thể đặt mật khẩu. Hãy thử lại.",
    "failedAddProvider": "Không thể thêm nhà cung cấp. Hãy thử lại.",
    "connectionError": "Lỗi kết nối. Vui lòng thử lại.",
    "provider": "nhà cung cấp",
    "apiKeyHelp": "Khóa API là mật khẩu cho các dịch vụ AI. Nhận một cái từ trang web của nhà cung cấp của bạn (ví dụ: platform.openai.com, console.anthropic.com).",
    "tier": {
      "subtitle": "OmniRoute tổ chức các nhà cung cấp thành ba cấp để việc định tuyến ưu tiên đường đi đáng tin cậy nhất, chi phí thấp nhất trước tiên.",
      "tier1": {
        "label": "Khách hàng cao cấp",
        "description": "CLI hạng nhất với các luồng xác thực gốc và mô hình lý luận."
      },
      "tier2": {
        "label": "Tối ưu hóa chi phí",
        "description": "Nhà cung cấp giá rẻ, thông lượng cao được sử dụng cho lưu lượng truy cập hàng ngày."
      },
      "tier3": {
        "label": "Dự phòng & đặc sản",
        "description": "Các điểm cuối đặc biệt hoặc được lưu trữ cục bộ được sử dụng làm phương án dự phòng."
      },
      "configure": "Định cấu hình nhà cung cấp"
    },
    "tierFlowDiagramAlt": "Sơ đồ dự phòng 3 tầng OmniRoute",
    "apiKeyMgmt": "Quản lý khóa API"
  },
  "providers": {
    "title": "Nhà cung cấp",
    "allProviders": "Tất cả nhà cung cấp",
    "audioProviders": "Nhà cung cấp âm thanh",
    "showFreeOnly": "Chỉ miễn phí",
    "addProvider": "Thêm nhà cung cấp",
    "addFirstProvider": "Thêm nhà cung cấp đầu tiên của bạn",
    "addFirstProviderDesc": "Kết nối nhà cung cấp AI để bắt đầu định tuyến các yêu cầu thông qua OmniRoute. Bạn có thể sử dụng nhà cung cấp miễn phí, khóa API hoặc tài khoản OAuth.",
    "learnMore": "Tìm hiểu thêm",
    "editProvider": "Chỉnh sửa nhà cung cấp",
    "deleteProvider": "Xóa nhà cung cấp",
    "noProviders": "Không có nhà cung cấp nào được định cấu hình",
    "modelAvailability": "Mẫu sẵn có",
    "accounts": "Tài khoản",
    "newAccount": "Tài khoản mới",
    "deleteConfirm": "Bạn có chắc chắn muốn xóa nhà cung cấp này không?",
    "testing": "Đang thử nghiệm...",
    "testConnection": "Kiểm tra kết nối",
    "testSuccess": "Kết nối thành công",
    "testFailed": "Kết nối không thành công",
    "available": "Có sẵn",
    "cooldown": "Thời gian hồi chiêu",
    "unavailable": "Không có sẵn",
    "unknown": "Không xác định",
    "oauthLabel": "OAuth",
    "compatibleLabel": "Tương thích",
    "chat": "Trò chuyện",
    "responses": "Phản hồi",
    "messages": "Tin nhắn",
    "oauthProviders": "Nhà cung cấp OAuth",
    "freeProviders": "Nhà cung cấp miễn phí",
    "apiKeyProviders": "Nhà cung cấp khóa API",
    "compatibleProviders": "Nhà cung cấp tương thích với khóa API",
    "testAll": "Kiểm tra tất cả",
    "testAllOAuth": "Kiểm tra tất cả các kết nối OAuth",
    "testAllFree": "Kiểm tra tất cả các kết nối miễn phí",
    "testAllApiKey": "Kiểm tra tất cả các kết nối Khóa API",
    "testAllCompatible": "Kiểm tra tất cả các kết nối tương thích",
    "connected": "{count} Đã kết nối",
    "errorCount": "{count} Lỗi ({code})",
    "errorCountNoCode": "{count} Lỗi",
    "warningCount": "{count} Cảnh báo",
    "noConnections": "Không có kết nối",
    "expiredBadge": "Expired",
    "expiringSoonBadge": "Expiring Soon",
    "freeTier": "Bậc miễn phí",
    "freeTierAvailable": "Cấp miễn phí có sẵn",
    "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": "Không được dùng nữa",
    "deprecatedProvider": "Nhà cung cấp này đã không còn được dùng nữa",
    "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": "Đã tắt",
    "enableProvider": "Kích hoạt nhà cung cấp",
    "disableProvider": "Vô hiệu hóa nhà cung cấp",
    "testResults": "Kết quả kiểm tra",
    "noCompatibleYet": "Chưa có nhà cung cấp tương thích nào được thêm vào",
    "compatibleHint": "Sử dụng các nút ở trên để thêm điểm cuối tương thích với OpenAI hoặc Anthropic",
    "addOpenAICompatible": "Thêm tương thích OpenAI",
    "addAnthropicCompatible": "Thêm tính tương thích với con người",
    "addNewProvider": "Thêm nhà cung cấp mới",
    "backToProviders": "Quay lại Nhà cung cấp",
    "configureNewProvider": "Định cấu hình nhà cung cấp AI mới để sử dụng với các ứng dụng của bạn.",
    "providerLabel": "nhà cung cấp",
    "selectProvider": "Chọn nhà cung cấp",
    "selectedProvider": "Nhà cung cấp đã chọn",
    "authMethod": "Phương thức xác thực",
    "apiKeyLabel": "Khóa API",
    "apiKeyRequired": "Cần có khóa API",
    "selectProviderRequired": "Vui lòng chọn nhà cung cấp",
    "enterApiKey": "Nhập khóa API của bạn",
    "apiKeySecure": "Khóa API của bạn sẽ được mã hóa và lưu trữ an toàn.",
    "oauth2Connect": "Kết nối với OAuth2",
    "oauth2Label": "OAuth2",
    "oauth2Desc": "Kết nối tài khoản của bạn bằng xác thực OAuth2.",
    "displayName": "Tên hiển thị",
    "displayNamePlaceholder": "ví dụ: API sản xuất, Môi trường phát triển",
    "displayNameHint": "Tùy chọn. Một cái tên thân thiện để xác định cấu hình này.",
    "active": "Đang hoạt động",
    "activeDescription": "Cho phép nhà cung cấp này sử dụng trong các ứng dụng của bạn",
    "cancel": "Hủy bỏ",
    "createProvider": "Tạo nhà cung cấp",
    "failedCreate": "Không tạo được nhà cung cấp",
    "errorOccurred": "Đã xảy ra lỗi. Vui lòng thử lại.",
    "modelStatus": "Tình trạng mẫu",
    "showConfiguredOnly": "Configured only",
    "allModelsOperational": "Tất cả các mô hình hoạt động",
    "modelsWithIssues": "{count} mô hình có vấn đề",
    "allModelsNormal": "Tất cả các model đều phản hồi bình thường.",
    "cooldownCleared": "Đã xóa thời gian hồi chiêu cho {model}",
    "failedClearCooldown": "Không thể xóa thời gian hồi chiêu",
    "loadingAvailability": "Đang tải tính khả dụng của mô hình...",
    "clearCooldown": "Xóa",
    "clearing": "Đang dọn dẹp...",
    "until": "Cho đến {time}",
    "providerTestFailed": "Kiểm tra nhà cung cấp không thành công",
    "providerTestTimeout": "Provider test timed out — too many connections to test at once",
    "modeTest": "{mode} Kiểm tra",
    "passedCount": "{count} đã vượt qua",
    "failedCount": "{count} không thành công",
    "testedCount": "{count} đã kiểm tra",
    "millisecondsAbbr": "{value}ms",
    "okShort": "được rồi",
    "errorShort": "LỖI",
    "noActiveConnectionsInGroup": "Không tìm thấy kết nối hoạt động nào cho nhóm này.",
    "allTestsPassed": "Tất cả {total} bài kiểm tra đã vượt qua",
    "testSummary": "{passed}/{total} đã đạt, {failed} không thành công",
    "nameLabel": "Tên",
    "prefixLabel": "Tiền tố",
    "baseUrlLabel": "URL cơ sở",
    "apiTypeLabel": "Loại API",
    "prefixHint": "Bắt buộc. Tiền tố duy nhất cho tên model.",
    "nameHint": "Bắt buộc. Một nhãn thân thiện cho nút này.",
    "baseUrlHint": "Bắt buộc.  URL cơ sở API của nhà cung cấp.",
    "anthropicPrefixPlaceholder": "ac-prod",
    "openaiPrefixPlaceholder": "oc-prod",
    "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1",
    "openaiBaseUrlPlaceholder": "https://api.openai.com/v1",
    "validateConnection": "Xác thực kết nối",
    "validating": "Đang xác thực...",
    "connectionValid": "Kết nối là hợp lệ!",
    "connectionFailed": "Kết nối không thành công. Kiểm tra URL và khóa.",
    "testKeyLabel": "Khóa API kiểm tra",
    "testKeyPlaceholder": "sk-... (chỉ để xác nhận)",
    "providerNotFound": "Không tìm thấy nhà cung cấp",
    "deleteConnectionConfirm": "Xóa kết nối này?",
    "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": "Không đặt được bí danh",
    "failedSaveConnection": "Không lưu được kết nối",
    "failedSaveConnectionRetry": "Không lưu được kết nối. Vui lòng thử lại.",
    "failedRetestConnection": "Không thể kiểm tra lại kết nối",
    "deleteCompatibleNodeConfirm": "Xóa nút tương thích {type} này?",
    "anthropicCompatibleDetails": "Chi tiết tương thích nhân loại",
    "openaiCompatibleDetails": "Chi tiết tương thích OpenAI",
    "messagesApi": "API tin nhắn",
    "responsesApi": "API phản hồi",
    "embeddings": "Embeddings",
    "audioTranscriptions": "Audio Transcriptions",
    "audioSpeech": "Audio Speech",
    "imagesGenerations": "Images Generations",
    "chatCompletions": "Hoàn thành cuộc trò chuyện",
    "importingModels": "Đang nhập khẩu...",
    "importFromModels": "Nhập từ /model",
    "modelsImported": "{count} models imported",
    "allModelsAlreadyImported": "Tất cả mô hình đã được nhập",
    "noNewModelsToImport": "Không có mô hình mới để nhập — tất cả mô hình đã có trong danh mục hoặc danh sách mô hình tùy chỉnh",
    "skippingExistingModels": "Bỏ qua {count} mô hình hiện có",
    "autoSync": "Tự động đồng bộ hóa",
    "autoSyncTooltip": "Tự động làm mới danh sách mô hình sau mỗi 24 giờ (có thể định cấu hình qua MODEL_SYNC_INTERVAL_HOURS)",
    "autoSyncEnabled": "Đã bật tự động đồng bộ hóa - các mô hình sẽ làm mới định kỳ",
    "autoSyncDisabled": "Tự động đồng bộ hóa đã bị tắt",
    "autoSyncToggleFailed": "Không chuyển đổi được tính năng tự động đồng bộ hóa",
    "clearAllModels": "Xóa tất cả các mẫu",
    "clearAllModelsConfirm": "Bạn có chắc chắn muốn xóa tất cả mô hình của nhà cung cấp này không? Điều này không thể hoàn tác được.",
    "clearAllModelsSuccess": "Tất cả các mô hình đã bị xóa",
    "clearAllModelsFailed": "Không xóa được mô hình",
    "addConnectionToImport": "Thêm kết nối để cho phép nhập.",
    "noModelsConfigured": "Không có mô hình nào được định cấu hình",
    "connectionCount": "{count} kết nối",
    "fetchingModels": "Đang tìm nạp các mẫu có sẵn...",
    "failedFetchModels": "Không tìm nạp được mô hình",
    "noModelsFound": "Không tìm thấy mô hình nào",
    "importFailed": "Nhập không thành công",
    "noNewModelsAdded": "Không có mô hình mới được thêm vào.",
    "adding": "Đang thêm...",
    "close": "Close",
    "importingModelsTitle": "Nhập mô hình",
    "copyModel": "Sao chép mô hình",
    "filterModels": "Lọc mô hình…",
    "modelsActive": "đang hoạt động",
    "showModel": "Hiển thị mô hình",
    "hideModel": "Ẩn mô hình",
    "removeModel": "Xóa mô hình",
    "rateLimitProtected": "Được bảo vệ",
    "rateLimitUnprotected": "không được bảo vệ",
    "enableRateLimitProtection": "Nhấp để bật bảo vệ giới hạn tỷ lệ",
    "disableRateLimitProtection": "Nhấp để tắt bảo vệ giới hạn tỷ lệ",
    "productionKey": "Khóa sản xuất",
    "enterNewApiKey": "Nhập khóa API mới",
    "codexApplyModalTitle": "Áp dụng cho Codex địa phương",
    "codexApplyTargetLabel": "Đường dẫn đích",
    "codexApplyBackupLabel": "Sao lưu",
    "codexApplyWarning": "Điều này sẽ thay thế auth.json hiện có. Tiếp tục?",
    "codexApplyConfirmCheckbox": "Tôi xác nhận rằng tôi muốn thay thế auth.json hiện có",
    "codexApply": "Áp dụng",
    "bulkTabSingle": "Độc thân",
    "bulkTabBulkAdd": "Thêm hàng loạt",
    "bulkAddFormatHint": "Một phím trên mỗi dòng. Định dạng: name|apiKey hoặc chỉ apiKey (được đặt tên tự động theo chỉ mục).",
    "bulkValidateKeys": "Xác thực từng khóa trước khi lưu (chậm hơn)",
    "bulkAddAllKeys": "Thêm tất cả các phím",
    "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}",
    "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}",
    "optional": "Tùy chọn",
    "anthropicCompatibleName": "Tương thích với con người",
    "openaiCompatibleName": "Tương thích OpenAI",
    "failedImportModels": "Không thể nhập mô hình",
    "noModelsReturnedFromEndpoint": "Không có mô hình nào được trả về từ điểm cuối /models.",
    "importingModelsProgress": "Đang nhập {current} trong số {total} mô hình...",
    "foundModelsStartingImport": "Đã tìm thấy mô hình {count}. Đang bắt đầu nhập...",
    "importingModelById": "Đang nhập {modelId}...",
    "importSuccessCount": "Đã nhập thành công {count, plural, one {# model} other {# models}}!",
    "noNewModelsAddedExisting": "Không có mẫu mới nào được thêm vào (tất cả đều đã tồn tại).",
    "importDoneCount": "✓ Xong! {count, plural, one {# model imported.} other {# models imported.}}",
    "unexpectedErrorOccurred": "Đã xảy ra lỗi không mong muốn",
    "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}",
    "messagesPath": "tin nhắn",
    "responsesPath": "phản hồi",
    "chatCompletionsPath": "trò chuyện/hoàn thành",
    "add": "Thêm",
    "edit": "Chỉnh sửa",
    "delete": "Xóa",
    "anthropic": "nhân loại",
    "openai": "OpenAI",
    "singleConnectionPerCompatible": "Chỉ có một kết nối được phép cho mỗi nút tương thích. Thêm một nút khác nếu bạn cần thêm kết nối.",
    "connections": "Kết nối",
    "providerProxyTitleConfigured": "Proxy của nhà cung cấp: {host}",
    "configured": "được cấu hình",
    "providerProxyConfigureHint": "Định cấu hình proxy cho tất cả các kết nối của nhà cung cấp này",
    "providerProxy": "Ủy quyền của nhà cung cấp",
    "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": "Chưa có kết nối nào",
    "addFirstConnectionHint": "Thêm kết nối đầu tiên của bạn để bắt đầu",
    "addConnection": "Thêm kết nối",
    "availableModels": "Các mẫu có sẵn",
    "builtInModels": "Built-in models",
    "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.",
    "pageAutoRefresh": "Trang sẽ tự động làm mới...",
    "statusDisabled": "bị vô hiệu hóa",
    "statusConnected": "đã kết nối",
    "statusRuntimeIssue": "vấn đề thời gian chạy",
    "statusAuthFailed": "xác thực thất bại",
    "statusRateLimited": "tỷ lệ giới hạn",
    "statusNetworkIssue": "sự cố mạng",
    "statusTestUnsupported": "kiểm tra không được hỗ trợ",
    "statusUnavailable": "không có sẵn",
    "statusFailed": "thất bại",
    "statusError": "lỗi",
    "oauthAccount": "Tài khoản OAuth",
    "errorTypeRuntime": "Thời gian chạy cục bộ",
    "errorTypeUpstreamAuth": "Xác thực ngược dòng",
    "errorTypeMissingCredential": "Thiếu thông tin xác thực",
    "errorTypeRefreshFailed": "Làm mới không thành công",
    "errorTypeTokenExpired": "Mã thông báo đã hết hạn",
    "errorTypeRateLimited": "Tỷ lệ giới hạn",
    "errorTypeUpstreamUnavailable": "Thượng nguồn không có sẵn",
    "errorTypeNetworkError": "Lỗi mạng",
    "errorTypeTestUnsupported": "Kiểm tra không được hỗ trợ",
    "errorTypeUpstreamError": "Lỗi ngược dòng",
    "proxySourceGlobal": "Toàn cầu",
    "proxySourceProvider": "nhà cung cấp",
    "proxySourceKey": "Chìa khóa",
    "proxyConfiguredBySource": "Ủy quyền ({source}): {host}",
    "autoPriority": "Tự động: {priority}",
    "proxy": "ủy nhiệm",
    "retestAuthentication": "Kiểm tra lại xác thực",
    "retest": "Kiểm tra lại",
    "disableConnection": "Tắt kết nối",
    "enableConnection": "Kích hoạt kết nối",
    "reauthenticateConnection": "Xác thực lại kết nối này",
    "proxyConfig": "Cấu hình proxy",
    "aliasExistsAlert": "Bí danh \"{alias}\" đã tồn tại. Vui lòng sử dụng một mô hình khác hoặc chỉnh sửa bí danh hiện có.",
    "openRouterAnyModelHint": "OpenRouter hỗ trợ mọi mô hình. Thêm mô hình và tạo bí danh để truy cập nhanh.",
    "modelIdFromOpenRouter": "ID mẫu (từ OpenRouter)",
    "openRouterModelPlaceholder": "nhân chủng/claude-3-opus",
    "customModels": "Mô hình tùy chỉnh",
    "customModelsHint": "Thêm ID mẫu không có trong danh sách mặc định. Chúng sẽ có sẵn để định tuyến.",
    "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": "Chuyển đổi hạn ngạch cho mỗi mô hình",
    "modelId": "Mã mẫu",
    "customModelPlaceholder": "ví dụ: gpt-4.5-turbo",
    "loading": "Đang tải...",
    "removeCustomModel": "Xóa mô hình tùy chỉnh",
    "noCustomModels": "Chưa có mô hình tùy chỉnh nào được thêm vào.",
    "allSuggestedAliasesExist": "Tất cả các bí danh được đề xuất đã tồn tại. Vui lòng chọn một mẫu khác hoặc xóa các bí danh xung đột.",
    "failedSaveCustomModel": "Không lưu được mô hình tùy chỉnh",
    "modelAddedSuccess": "Đã thêm mô hình {modelId} thành công",
    "failedAddModelTryAgain": "Không thể thêm mô hình. Vui lòng thử lại.",
    "failedSaveImportedModel": "Không lưu được mô hình đã nhập vào cơ sở dữ liệu tùy chỉnh",
    "failedImportModelsTryAgain": "Không thể nhập mô hình. Vui lòng thử lại.",
    "failedRemoveModelFromDatabase": "Không thể xóa mô hình khỏi cơ sở dữ liệu",
    "modelRemovedSuccess": "Đã xóa mô hình thành công",
    "failedDeleteModelTryAgain": "Không xóa được mô hình. Vui lòng thử lại.",
    "compatibleModelsDescription": "Thêm các mô hình tương thích {type} theo cách thủ công hoặc nhập chúng từ điểm cuối /models.",
    "anthropicCompatibleModelPlaceholder": "Claude-3-opus-20240229",
    "openaiCompatibleModelPlaceholder": "gpt-4o",
    "apiKeyValidationFailed": "Xác thực khóa API không thành công. Vui lòng kiểm tra chìa khóa của bạn và thử lại.",
    "addProviderApiKeyTitle": "Thêm khóa API {provider}",
    "checking": "Đang kiểm tra...",
    "check": "Kiểm tra",
    "valid": "hợp lệ",
    "invalid": "không hợp lệ",
    "creating": "Đang tạo...",
    "validationChecksAnthropicCompatible": "Kiểm tra xác thực {provider} bằng cách xác minh khóa API.",
    "validationChecksOpenAiCompatible": "Kiểm tra xác thực {provider} thông qua /models trên URL cơ sở của bạn.",
    "priorityLabel": "Ưu tiên",
    "saving": "Đang lưu...",
    "save": "Lưu",
    "editConnection": "Chỉnh sửa kết nối",
    "accountName": "Tên tài khoản",
    "email": "Email",
    "healthCheckMinutes": "Kiểm tra sức khỏe (phút)",
    "healthCheckHint": "Khoảng thời gian làm mới mã thông báo chủ động. 0 = bị vô hiệu hóa.",
    "selectAllModels": "Select all",
    "deselectAllModels": "Deselect all",
    "modelsActiveCount": "{active}/{total} active",
    "noModelsMatch": "No models match \"{filter}\"",
    "groupLabel": "Environment",
    "groupPlaceholder": "e.g. eKaizen, Personal",
    "failedTestConnection": "Không thể kiểm tra kết nối",
    "failed": "thất bại",
    "leaveBlankKeepCurrentApiKey": "Để trống để giữ khóa API hiện tại.",
    "editCompatibleTitle": "Chỉnh sửa {type} Tương thích",
    "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.",
    "apiKeyForCheck": "Khóa API (để kiểm tra)",
    "compatibleProdPlaceholder": "{type} Tương thích (Sản phẩm)",
    "tokenRefreshed": "Token refreshed successfully",
    "tokenRefreshFailed": "Token refresh failed",
    "applyCodexAuthLocal": "Apply auth",
    "exportCodexAuthFile": "Export auth",
    "applyClaudeAuthLocal": "Áp dụng xác thực",
    "exportClaudeAuthFile": "Xuất xác thực",
    "importClaudeAuth": "Nhập xác thực",
    "claudeApplyModalTitle": "Áp dụng cho Mã Claude địa phương",
    "claudeApplyTargetLabel": "Đường dẫn đích",
    "claudeApplyBackupLabel": "Sao lưu",
    "claudeApplyMcpHint": "Trạng thái MCP OAuth hiện tại sẽ được giữ nguyên.",
    "claudeApplyWarning": "Phần này sẽ thay thế phần claudeAiOauth hiện có. Tiếp tục?",
    "claudeApplyConfirmCheckbox": "Tôi xác nhận rằng tôi muốn thay thế phần claudeAiOauth hiện có",
    "claudeApply": "Áp dụng",
    "claudeAuthAppliedLocal": "Claude auth áp dụng tại địa phương",
    "claudeAuthApplyFailed": "Không thể áp dụng Claude auth cục bộ",
    "claudeAuthExported": "Đã xuất tệp xác thực Claude",
    "claudeAuthExportFailed": "Không thể xuất tệp xác thực Claude",
    "claudeImportModalTitle": "Nhập khẩu Claude Auth",
    "claudeImportTabSingle": "Độc thân",
    "claudeImportTabBulk": "số lượng lớn",
    "claudeImportTabUpload": "Tải tập tin lên",
    "claudeImportTabPaste": "Dán JSON",
    "claudeImportFileLabel": "Chọn .credentials.json",
    "claudeImportPasteLabel": "Dán nội dung JSON",
    "claudeImportEmailLabel": "Email tài khoản",
    "claudeImportNameLabel": "Tên kết nối (tùy chọn)",
    "claudeImportOverwriteLabel": "Thay thế kết nối hiện tại nếu tài khoản đã tồn tại",
    "claudeImportSubmit": "Nhập khẩu",
    "claudeImportSuccess": "Kết nối Claude được nhập thành công",
    "claudeImportInvalidJson": "Không thể phân tích cú pháp tệp dưới dạng JSON",
    "claudeImportInvalidShape": "Tệp này không phải là .credentials.json hợp lệ",
    "claudeImportDuplicate": "Tài khoản đã tồn tại — bật \"Thay thế hiện tại\" để ghi đè",
    "claudeImportIdentityUnverified": "Bootstrap không thể xác minh tài khoản. Bật \"Thay thế hiện tại\" hoặc cung cấp email.",
    "claudeImportFailed": "Không thể nhập Claude auth",
    "claudeImportBulkModeUpload": "Tải tập tin lên",
    "claudeImportBulkModePaste": "Dán mảng JSON",
    "claudeImportBulkModeZip": "Tải lên ZIP",
    "claudeImportBulkUploadHint": "Thả hoặc chọn tối đa 50 tệp .credentials.json (mỗi tệp 256KB, tổng cộng 10 MB).",
    "claudeImportBulkPasteHint": "Dán một mảng đối tượng: [{ json, name?, email? }, ...]",
    "claudeImportBulkZipHint": "ZIP chứa các mục .json. Tối đa 50 mục, giải nén 10 MB.",
    "claudeImportBulkSubmit": "Nhập tất cả",
    "claudeImportBulkSuccess": "Đã nhập {count} kết nối Claude",
    "claudeImportBulkFailed": "Một số mục không thể nhập được",
    "claudeImportBulkZipExtracting": "Đang giải nén ZIP…",
    "claudeImportBulkZipError": "Không thể giải nén ZIP",
    "applyGeminiAuthLocal": "Áp dụng xác thực",
    "exportGeminiAuthFile": "Xuất xác thực",
    "importGeminiAuth": "Nhập xác thực",
    "geminiApplyModalTitle": "Áp dụng cho Gemini CLI địa phương",
    "geminiApplyTargetLabel": "Đường dẫn đích",
    "geminiApplyBackupLabel": "Sao lưu",
    "geminiApplyAccountsHint": "Tài khoản đang hoạt động google_accounts.json sẽ được cập nhật để phù hợp với kết nối này.",
    "geminiApplyWarning": "Điều này sẽ thay thế oauth_creds.json hiện có và cập nhật google_accounts.json. Tiếp tục?",
    "geminiApplyConfirmCheckbox": "Tôi xác nhận rằng tôi muốn thay thế oauth_creds.json hiện có",
    "geminiApply": "Áp dụng",
    "geminiAuthAppliedLocal": "Xác thực Gemini được áp dụng cục bộ",
    "geminiAuthApplyFailed": "Không thể áp dụng xác thực Gemini cục bộ",
    "geminiAuthExported": "Đã xuất tệp xác thực Gemini",
    "geminiAuthExportFailed": "Không xuất được tệp xác thực Gemini",
    "geminiImportModalTitle": "Nhập khẩu Gemini Auth",
    "geminiImportTabSingle": "Độc thân",
    "geminiImportTabBulk": "số lượng lớn",
    "geminiImportTabUpload": "Tải tập tin lên",
    "geminiImportTabPaste": "Dán JSON",
    "geminiImportFileLabel": "Chọn oauth_creds.json",
    "geminiImportPasteLabel": "Dán nội dung JSON",
    "geminiImportEmailLabel": "Email tài khoản",
    "geminiImportNameLabel": "Tên kết nối (tùy chọn)",
    "geminiImportOverwriteLabel": "Thay thế kết nối hiện tại nếu tài khoản đã tồn tại",
    "geminiImportSubmit": "Nhập khẩu",
    "geminiImportSuccess": "Kết nối Gemini được nhập thành công",
    "geminiImportInvalidJson": "Không thể phân tích cú pháp tệp dưới dạng JSON",
    "geminiImportInvalidShape": "Tệp này không phải là oauth_creds.json hợp lệ",
    "geminiImportDuplicate": "Tài khoản đã tồn tại — bật \"Thay thế hiện tại\" để ghi đè",
    "geminiImportIdentityUnverified": "Không thể xác minh danh tính từ id_token. Bật \"Thay thế hiện tại\" hoặc cung cấp email.",
    "geminiImportFailed": "Không thể nhập xác thực Gemini",
    "geminiImportBulkModeUpload": "Tải tập tin lên",
    "geminiImportBulkModePaste": "Dán mảng JSON",
    "geminiImportBulkModeZip": "Tải lên ZIP",
    "geminiImportBulkUploadHint": "Thả hoặc chọn tối đa 50 tệp oauth_creds.json (mỗi tệp 256KB, tổng cộng 10 MB).",
    "geminiImportBulkPasteHint": "Dán một mảng đối tượng: [{ json, name?, email? }, ...]",
    "geminiImportBulkZipHint": "ZIP chứa các mục oauth_creds.json. Tối đa 50 mục, giải nén 10 MB.",
    "geminiImportBulkSubmit": "Nhập tất cả",
    "geminiImportBulkSuccess": "Đã nhập {count} kết nối Gemini",
    "geminiImportBulkFailed": "Một số mục không thể nhập được",
    "geminiImportBulkZipExtracting": "Đang giải nén ZIP…",
    "geminiImportBulkZipError": "Không thể giải nén 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": "Nhập xác thực",
    "codexImportModalTitle": "Nhập Codex Auth",
    "codexImportTabSingle": "Độc thân",
    "codexImportTabBulk": "số lượng lớn",
    "codexImportTabUpload": "Tải tập tin lên",
    "codexImportTabPaste": "Dán JSON",
    "codexImportFileLabel": "Chọn auth.json",
    "codexImportFileHint": "Chọn tệp auth.json được xuất từ Codex hoặc từ OmniRoute.",
    "codexImportPasteLabel": "Dán nội dung JSON",
    "codexImportEmailLabel": "Email tài khoản",
    "codexImportEmailHint": "Tự động phát hiện từ tập tin; chỉnh sửa nếu cần thiết.",
    "codexImportNameLabel": "Tên kết nối (tùy chọn)",
    "codexImportOverwriteLabel": "Thay thế kết nối hiện tại nếu tài khoản đã tồn tại",
    "codexImportSubmit": "Nhập khẩu",
    "codexImportSuccess": "Kết nối Codex được nhập thành công",
    "codexImportInvalidJson": "Không thể phân tích cú pháp tệp dưới dạng JSON",
    "codexImportInvalidShape": "Tệp này không phải là Codex auth.json hợp lệ",
    "codexImportDuplicate": "Tài khoản đã tồn tại — bật \"Thay thế hiện tại\" để ghi đè",
    "codexImportFailed": "Không thể nhập xác thực Codex",
    "codexImportDetectedEmail": "Đã phát hiện: {email}",
    "codexImportNoEmailDetected": "Không phát hiện thấy email trong tập tin",
    "codexImportBulkModeUpload": "Tải tập tin lên",
    "codexImportBulkModePaste": "Dán danh sách",
    "codexImportBulkModeZip": "kho lưu trữ ZIP",
    "codexImportBulkUploadHint": "Chọn nhiều tệp .json hoặc kéo và thả",
    "codexImportBulkPasteHint": "Mảng JSON [ {...}, {...} ] hoặc nhiều JSON được phân tách bằng --- trên dòng riêng",
    "codexImportBulkZipHint": "Tải lên tệp .zip chứa tệp auth.json (tối đa 50 tệp, 10 MB)",
    "codexImportBulkSubmit": "Nhập {count} tài khoản",
    "codexImportBulkLimit": "Tối đa 50 tệp cho mỗi lần nhập",
    "codexImportBulkSuccess": "{count} đã được nhập",
    "codexImportBulkFailed": "{count} không thành công",
    "codexImportBulkZipExtracting": "Đang giải nén ZIP…",
    "codexImportBulkZipError": "Không thể giải nén 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": "Doanh nghiệp & Đám mây",
    "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": "Nhà cung cấp đại lý đám mây",
    "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": "Mở t3.chat → DevTools → Ứng dụng → Bộ nhớ cục bộ → https://t3.chat, sao chép 'convex-session-id'. Sau đó mở DevTools → Network, sao chép toàn bộ tiêu đề Cookie từ bất kỳ yêu cầu trò chuyện nào. Dán cả hai giá trị vào các trường bên dưới.",
    "t3ChatWebCookiePlaceholder": "lồi-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": "ID dự án Google Cloud của bạn. Bắt buộc đối với các tài khoản có ngoại lệ. Nhập ID dự án GCP của bạn để sử dụng với Gemini CLI.",
    "geminiCliProjectIdLabel": "Mã dự án trên đám mây của Google",
    "geminiCliProjectIdPlaceholder": "my-gcp-dự án-id",
    "antigravityProjectIdHint": "Ghi đè tùy chọn cho các yêu cầu Mã đám mây chống trọng lực. Để trống để sử dụng dự án được phát hiện trong 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": "Mã dự án trên đám mây của Google",
    "antigravityProjectIdPlaceholder": "my-gcp-dự án-id",
    "grokWebCookieHint": "Grok Web Cookie Hint",
    "grokWebCookiePlaceholder": "Grok Web Cookie Placeholder",
    "herokuBaseUrlHint": "Heroku Base Url Hint",
    "hideEmail": "Hide Email",
    "imageProviders": "Image Providers",
    "videoProviders": "Tạo video",
    "embeddingRerankProviders": "Nhúng & xếp hạng lại",
    "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": "Tìm kiếm nhà cung cấp...",
    "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": "Nhà cung cấp bậc miễn phí",
    "freeTierLabel": "Cấp miễn phí có sẵn",
    "freeTierProvidersDesc": "Các nhà cung cấp có cấp độ miễn phí — một số yêu cầu đăng ký khóa API, một số khác không cần thông tin xác thực nào cả.",
    "providerSummaryAll": "Tổng cộng",
    "ideProviders": "Nhà cung cấp IDE",
    "ideProvidersDesc": "Biên tập viên có đăng ký AI tích hợp. Sử dụng trang nhà cung cấp để nhập thông tin xác thực trực tiếp từ chuỗi khóa IDE.",
    "noIdeProviders": "Không có nhà cung cấp IDE nào phù hợp với các bộ lọc hiện tại.",
    "providerDetailFastTierTooltip": "Áp dụng cấp độ Codex Fast cho tất cả các kết nối Codex theo mặc định",
    "providerDetailFastDefaultLabel": "Mặc định nhanh",
    "providerDetailBrowserManualConnect": "Kết nối trình duyệt/thủ công",
    "providerDetailAuthUrl": "URL xác thực",
    "providerDetailCallbackUrl": "URL gọi lại",
    "providerDetailValidClaudeCredentialsFile": "Tệp thông tin xác thực Claude hợp lệ",
    "providerDetailPathAutoDetectedAllOs": "Đường dẫn được tự động phát hiện trên mỗi hệ điều hành (Linux/Mac/Windows).",
    "providerDetailMyClaudeAccountPlaceholder": "Tài khoản Claude của tôi",
    "providerDetailPathAutoDetected": "Đường dẫn được tự động phát hiện trên mỗi hệ điều hành (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": "Các nhà cung cấp này sử dụng phiên web của trình duyệt, cookie hoặc mã thông báo web thay vì khóa API. Mở một nhà cung cấp để thêm thông tin xác thực phiên được yêu cầu.",
    "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": "Trình hướng dẫn giới thiệu nhà cung cấp",
    "onboardingWizardShort": "Trình hướng dẫn giới thiệu",
    "onboardingWizardDescription": "Kết nối khóa API, nhà cung cấp tương thích tùy chỉnh và OAuth bằng tính năng xác thực, tính bền vững và kiểm tra kết nối ngay lập tức.",
    "onboardingStepType": "loại",
    "onboardingStepProvider": "nhà cung cấp",
    "onboardingStepCredentials": "Thông tin xác thực",
    "onboardingStepResult": "kết quả",
    "onboardingTypeApiKeyTitle": "Nhà cung cấp khóa API",
    "onboardingTypeApiKeyText": "Sử dụng các nhà cung cấp tích hợp sẵn như OpenAI, Anthropic, Gemini, Groq, Azure, v.v.",
    "onboardingTypeCustomTitle": "Nhà cung cấp tương thích tùy chỉnh",
    "onboardingTypeCustomText": "Tạo điểm cuối tương thích với OpenAI-, Anthropic- hoặc Claude Code và thêm khóa của nó.",
    "onboardingTypeOAuthTitle": "Nhà cung cấp OAuth",
    "onboardingTypeOAuthText": "Sử dụng lại các luồng nhập cục bộ, mã thiết bị hoặc OAuth hiện có cho các nhà cung cấp mã hóa.",
    "onboardingChooseOAuthProvider": "Chọn nhà cung cấp OAuth",
    "onboardingChooseApiKeyProvider": "Chọn nhà cung cấp khóa API",
    "onboardingChooseProviderDescription": "Chọn một nhà cung cấp, sau đó trình hướng dẫn sẽ hướng dẫn bạn thông qua thông tin xác thực và kiểm tra.",
    "onboardingChangeType": "Thay đổi loại",
    "onboardingChangeProvider": "Thay đổi nhà cung cấp",
    "onboardingSearchProviders": "Tìm kiếm nhà cung cấp…",
    "onboardingApiKeyOptional": "Khóa API tùy chọn",
    "onboardingProviderConnected": "Đã kết nối nhà cung cấp",
    "onboardingProviderSavedWithWarnings": "Đã lưu nhà cung cấp kèm theo cảnh báo",
    "onboardingProviderFinished": "Quá trình giới thiệu nhà cung cấp đã hoàn tất",
    "onboardingYourProviderConnection": "Kết nối nhà cung cấp của bạn",
    "onboardingTestPassed": "Đã vượt qua bài kiểm tra",
    "onboardingTestFailed": "Kiểm tra không thành công",
    "onboardingOpenProviderDetails": "Mở chi tiết nhà cung cấp",
    "onboardingTryInPlayground": "Hãy thử ở sân chơi",
    "onboardingDefaultConnectionName": "{provider} Chính",
    "onboardingTestingConnection": "Đang kiểm tra kết nối của nhà cung cấp…",
    "onboardingValidatingCredentials": "Đang xác thực thông tin xác thực…",
    "onboardingSavingConnection": "Đang lưu kết nối nhà cung cấp…",
    "onboardingProviderFailed": "Việc giới thiệu nhà cung cấp không thành công",
    "onboardingCreatingCompatibleProvider": "Đang tạo nhà cung cấp tương thích…",
    "onboardingSavingCompatibleConnection": "Đang lưu kết nối của nhà cung cấp tương thích…",
    "onboardingCustomProviderFallbackName": "Nhà cung cấp tùy chỉnh",
    "onboardingCustomProviderFailed": "Việc giới thiệu nhà cung cấp tùy chỉnh không thành công",
    "onboardingLoadingOAuthConnection": "Đang tải kết nối OAuth…",
    "onboardingOAuthNoConnectionFound": "OAuth đã hoàn tất nhưng không tìm thấy kết nối nhà cung cấp nào.",
    "onboardingOAuthFailed": "Việc giới thiệu OAuth không thành công",
    "onboardingAddProvider": "Thêm {provider}",
    "onboardingConnectionName": "Tên kết nối",
    "onboardingApiKeyOptionalLabel": "Khóa API (tùy chọn)",
    "onboardingBaseUrlOverride": "Ghi đè URL cơ sở",
    "onboardingBaseUrlOverrideHint": "Tùy chọn. Được lưu trữ dưới dạng nhà cung cấpSpecificData.baseUrl.",
    "onboardingRegion": "Vùng",
    "onboardingSearchCx": "Tìm kiếm CX / Id động cơ",
    "onboardingProviderSpecificIdPlaceholder": "Id cụ thể của nhà cung cấp tùy chọn",
    "onboardingCustomUserAgent": "Tác nhân người dùng tùy chỉnh",
    "onboardingWorking": "Đang làm việc…",
    "onboardingValidateSaveTest": "Xác thực, lưu và kiểm tra",
    "onboardingBack": "Quay lại",
    "onboardingCreateCustomCompatibleProvider": "Tạo nhà cung cấp tương thích tùy chỉnh",
    "onboardingCreateCustomCompatibleDescription": "Trình hướng dẫn trước tiên tạo nút nhà cung cấp, sau đó lưu trữ và kiểm tra kết nối khóa API của nút đó.",
    "onboardingProtocol": "Giao thức",
    "onboardingOpenAiCompatible": "Tương thích OpenAI",
    "onboardingAnthropicCompatible": "Tương thích với con người",
    "onboardingClaudeCodeCompatible": "Tương thích mã Claude",
    "onboardingProviderPrefix": "Tiền tố nhà cung cấp",
    "onboardingProviderPrefixHint": "Được sử dụng để tạo id nhà cung cấp được quản lý.",
    "onboardingChatPath": "Đường dẫn trò chuyện",
    "onboardingModelsPath": "Đường dẫn mô hình",
    "onboardingCreateSaveTest": "Tạo, lưu và kiểm tra",
    "onboardingConnectProvider": "Kết nối {provider}",
    "onboardingOAuthFlowDescription": "OmniRoute sẽ mở luồng OAuth hiện có cho nhà cung cấp này. Sau khi đăng nhập, trình hướng dẫn sẽ tải lại kết nối đã lưu và chạy kiểm tra kết nối tương tự như trang nhà cung cấp.",
    "onboardingStartOAuthFlow": "Bắt đầu luồng OAuth",
    "passthroughModelsDescription": "{provider} chấp nhận ID mô hình gốc của nhà cung cấp. Nhập từ /models hoặc thêm ID tùy chỉnh để định tuyến.",
    "bedrockModelsDescription": "Các mô hình Amazon Bedrock được phân bổ theo khu vực AWS. Nhập từ /models hoặc thêm ID mô hình Bedrock được bật trong vùng đã chọn.",
    "bedrockModelPlaceholder": "nhân chủng học.claude-sonnet-4-6",
    "addProviderSessionCookieTitle": "Thêm cookie phiên {provider}",
    "addProviderWebTokenTitle": "Thêm mã thông báo web {provider}",
    "addProviderConnectionTitle": "Thêm kết nối {provider}",
    "webTokenCredentialLabel": "Mã thông báo phiên web",
    "webNoAuthCredentialLabel": "Không cần thông tin xác thực",
    "webCookieCredentialHint": "Cookie bắt buộc: {credential}. Dán giá trị tiêu đề Cookie từ phiên web {provider} đã đăng nhập của chính bạn. Không bao gồm tiền tố Cookie:.",
    "webTokenCredentialHint": "Thông tin xác thực: {credential}. Dán giá trị mã thông báo từ phiên web {provider} đã đăng nhập của chính bạn hoặc xuất HAR DevTools nếu nhà cung cấp hỗ trợ.",
    "webCookieEditHint": "Để trống để giữ cookie phiên hiện tại. Cookie bắt buộc: {credential}.",
    "webTokenEditHint": "Để trống để giữ mã thông báo phiên web hiện tại. Thông tin xác thực: {credential}.",
    "webSessionGuideTitle": "Cách nhận thông tin xác thực phiên",
    "webSessionGuideIntro": "{provider} sử dụng phiên web của trình duyệt thay vì khóa API.",
    "webCookieRequiredCredential": "Cookie bắt buộc: {credential}",
    "webTokenRequiredCredential": "Mã thông báo bắt buộc: {credential}",
    "webSessionGuideStep1": "Đăng nhập vào {provider} trong trình duyệt của bạn.",
    "webSessionGuideStep2": "Mở công cụ dành cho nhà phát triển trình duyệt và kiểm tra yêu cầu do ứng dụng web đưa ra.",
    "webSessionGuideStep3": "Sao chép thông tin xác thực được yêu cầu từ miền riêng của nhà cung cấp. Đối với cookie, chỉ sao chép giá trị tiêu đề Cookie và bỏ qua Cookie:.",
    "webSessionGuideStep4": "Dán nó vào đây và kiểm tra kết nối. Nếu nó ngừng hoạt động, hãy đăng nhập lại và thay thế bằng một giá trị mới.",
    "webSessionSecurityHint": "Hãy coi đây như một mật khẩu: nó có thể truy cập vào tài khoản web đã đăng nhập của bạn cho đến khi hết hạn hoặc bị thu hồi.",
    "webNoAuthGuideTitle": "Không cần thông tin xác thực",
    "webNoAuthGuideBody": "{provider} không cần khóa API hoặc cookie. Lưu kết nối để sử dụng điểm cuối web miễn phí của nó.",
    "webSessionCredentialValidationFailed": "Xác thực thông tin xác thực phiên không thành công. Đăng nhập lại, sao chép thông tin xác thực mới và thử lại.",
    "checkCookie": "Kiểm tra cookie",
    "checkWebToken": "Kiểm tra mã thông báo"
  },
  "settings": {
    "title": "Cài đặt",
    "general": "chung",
    "security": "Bảo mật",
    "appearance": "Ngoại hình",
    "routing": "Định tuyến",
    "cache": "Bộ nhớ đệm",
    "resilience": "khả năng phục hồi",
    "routingSettingsIntro": "Kiểm soát cách định tuyến, chuyển đổi và gửi yêu cầu của bạn đến nhà cung cấp 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": "Tự động thử lại, thời gian hồi chiêu và dự phòng khi nhà cung cấp thất bại.",
    "aiSettingsIntro": "Cài đặt dành riêng cho AI để tư duy ngân sách, hành vi mô hình và nén.",
    "systemPrompt": "Lời nhắc hệ thống",
    "thinkingBudget": "Suy nghĩ về ngân sách",
    "proxy": "ủy nhiệm",
    "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": "Ủy quyền MITM",
    "pricing": "Định giá",
    "storage": "Lưu trữ",
    "policies": "Chính sách",
    "ipFilter": "Bộ lọc IP",
    "comboDefaults": "Mặc định kết hợp",
    "fallbackChains": "Chuỗi dự phòng",
    "changePassword": "Thay đổi mật khẩu",
    "enablePassword": "Kích hoạt mật khẩu",
    "darkMode": "Chế độ tối",
    "lightMode": "Chế độ ánh sáng",
    "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": "ngay bây giờ",
    "modelsDevStats": "Sync Statistics",
    "modelsDevStatsDesc": "Current models.dev data coverage",
    "providers": "Nhà cung cấp",
    "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": "Chủ đề hệ thống",
    "debugToggle": "Enable Debug Mode",
    "sidebarVisibilityToggle": "Show Sidebar Items",
    "enableCache": "Bật bộ đệm",
    "cacheTTL": "Bộ nhớ đệm TTL",
    "maxCacheSize": "Kích thước bộ đệm tối đa",
    "clearCache": "Xóa bộ nhớ đệm",
    "cacheCleared": "Cache cleared successfully",
    "clearCacheFailed": "Failed to clear cache",
    "cacheHits": "Số lần truy cập bộ đệm",
    "cacheMisses": "Thiếu bộ nhớ đệm",
    "hitRate": "Tỷ lệ trúng",
    "cacheEntries": "Mục nhập bộ nhớ đệm",
    "cacheSettings": "Cache Settings",
    "semanticCache": "Semantic Cache",
    "maxEntries": "Max Entries",
    "ttlMinutes": "TTL (minutes)",
    "promptCache": "Bộ nhớ đệm nhắc nhở",
    "strategy": "Strategy",
    "preserveClientCache": "Preserve Client Cache",
    "enabled": "Enabled",
    "loading": "Loading...",
    "saving": "Đang lưu...",
    "save": "Save",
    "circuitBreaker": "Bộ ngắt mạch",
    "retryPolicy": "Chính sách thử lại",
    "maxRetries": "Số lần thử lại tối đa",
    "retryDelay": "Trì hoãn thử lại",
    "timeoutMs": "Thời gian chờ (ms)",
    "enableSystemPrompt": "Kích hoạt lời nhắc hệ thống",
    "systemPromptText": "Văn bản nhắc nhở hệ thống",
    "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": "Trang này chỉ cấu hình hành vi. Trạng thái ngắt trực tiếp được hiển thị trên trang Sức khỏe. Thử lại theo từng combo cụ thể và kiểm soát vị trí quay vòng vẫn nằm trong cài đặt kết hợp.",
    "enableThinking": "Kích hoạt tư duy",
    "maxThinkingTokens": "Mã thông báo tư duy tối đa",
    "enableProxy": "Kích hoạt proxy",
    "proxyUrl": "URL proxy",
    "pricingRates": "Định dạng giá cước",
    "currentPricing": "Tổng quan về giá hiện tại",
    "loadingPricing": "Đang tải dữ liệu giá...",
    "noPricing": "Không có dữ liệu giá cả",
    "input": "đầu vào",
    "output": "đầu ra",
    "cached": "Đã lưu vào bộ nhớ đệm",
    "reasoning": "Lý luận",
    "cacheCreation": "Tạo bộ đệm",
    "customPricing": "Giá tùy chỉnh",
    "databaseSize": "Kích thước cơ sở dữ liệu",
    "backupDb": "Sao lưu cơ sở dữ liệu",
    "restoreDb": "Khôi phục cơ sở dữ liệu",
    "exportData": "Xuất dữ liệu",
    "importData": "Nhập dữ liệu",
    "clearData": "Xóa tất cả dữ liệu",
    "clearDataConfirm": "Điều này sẽ xóa vĩnh viễn tất cả dữ liệu. Bạn có chắc không?",
    "enableRequestLogs": "Bật nhật ký yêu cầu",
    "logRetention": "Lưu giữ nhật ký",
    "ipWhitelist": "Danh sách trắng IP",
    "ipBlacklist": "Danh sách đen IP",
    "addIP": "Thêm IP",
    "savedSuccessfully": "Đã lưu cài đặt thành công",
    "ai": "trí tuệ nhân tạo",
    "advanced": "Nâng cao",
    "localMode": "Chế độ cục bộ - Tất cả dữ liệu được lưu trữ trên máy của bạn",
    "settingsSectionsAria": "Phần cài đặt",
    "switchThemes": "Chuyển đổi giữa chủ đề sáng và tối",
    "themeSelectionAria": "Lựa chọn chủ đề",
    "themeLight": "Ánh sáng",
    "themeDark": "Tối",
    "themeSystem": "Hệ thống",
    "endpointTunnelVisibility": "Khả năng hiển thị đường hầm điểm cuối",
    "endpointTunnelVisibilityDesc": "Ẩn các điều khiển đường hầm khỏi trang Điểm cuối mà không thay đổi trạng thái đường hầm.",
    "showCloudflareTunnel": "Đường hầm nhanh Cloudflare",
    "showCloudflareTunnelDesc": "Hiển thị các điều khiển Đường hầm nhanh của Cloudflare trên trang Điểm cuối.",
    "showTailscaleFunnel": "Phễu đuôi",
    "showTailscaleFunnelDesc": "Hiển thị các điều khiển Kênh Tailscale trên trang Điểm cuối.",
    "showNgrokTunnel": "đường hầm ngrok",
    "showNgrokTunnelDesc": "Hiển thị các điều khiển Đường hầm ngrok trên trang Điểm cuối.",
    "sidebarVisibility": "Hide sidebar items",
    "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter.",
    "sidebarVisibilityHint": "Any sidebar section is hidden automatically when a...",
    "hideHealthLogs": "Ẩn nhật ký kiểm tra sức khỏe",
    "hideHealthLogsDesc": "Khi BẬT, hãy chặn thông báo [HealthCheck] trong bảng điều khiển máy chủ",
    "themeAccent": "Màu chủ đề",
    "themeAccentDesc": "Chọn màu đặt sẵn hoặc tạo chủ đề của riêng bạn bằng một màu",
    "themeCreate": "Tạo chủ đề",
    "themeCustom": "Chủ đề tùy chỉnh",
    "themeBlue": "Xanh dương",
    "themeRed": "Đỏ",
    "themeGreen": "Xanh lá",
    "themeViolet": "Tím",
    "themeOrange": "Cam",
    "themeCyan": "Lục lam",
    "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": "Xóa bộ nhớ đệm",
    "flushing": "Đang xả…",
    "size": "Kích thước",
    "hits": "Lượt truy cập",
    "evictions": "Trục xuất",
    "loadingCacheStats": "Đang tải số liệu thống kê về bộ nhớ đệm…",
    "globalProxy": "Proxy toàn cầu",
    "globalProxyDesc": "Định cấu hình proxy gửi đi toàn cầu cho tất cả lệnh gọi API. Các nhà cung cấp, tổ hợp và khóa riêng lẻ có thể ghi đè điều này.",
    "noGlobalProxy": "Không có proxy toàn cầu nào được định cấu hình",
    "globalLabel": "Toàn cầu",
    "configure": "Cấu hình",
    "globalSystemPrompt": "Lời nhắc hệ thống toàn cầu",
    "saved": "Đã lưu",
    "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} ký tự",
    "thinkingBudgetTitle": "Suy nghĩ về ngân sách",
    "thinkingBudgetDesc": "Kiểm soát việc sử dụng mã thông báo lý luận AI trên tất cả các yêu cầu",
    "passthrough": "Truyền qua",
    "passthroughDesc": "Không có thay đổi - khách hàng kiểm soát ngân sách tư duy",
    "auto": "Tự động",
    "autoDesc": "Loại bỏ mọi cấu hình suy nghĩ - hãy để nhà cung cấp quyết định",
    "custom": "tùy chỉnh",
    "customDesc": "Đặt ngân sách mã thông báo cố định cho tất cả các yêu cầu",
    "adaptive": "Thích ứng",
    "adaptiveDesc": "Mở rộng ngân sách dựa trên độ phức tạp của yêu cầu",
    "effortNone": "Không có (0 mã thông báo)",
    "effortLow": "Thấp (1K token)",
    "effortMedium": "Trung bình (10K token)",
    "effortHigh": "Cao (128K token)",
    "tokenBudget": "Ngân sách mã thông báo",
    "tokens": "mã thông báo",
    "baseEffortLevel": "Mức nỗ lực cơ bản",
    "adaptiveHint": "Chế độ thích ứng sẽ chia tỷ lệ từ cấp cơ sở này dựa trên số lượng tin nhắn, mức sử dụng công cụ và độ dài lời nhắc.",
    "requireLogin": "Yêu cầu đăng nhập",
    "requireLoginDesc": "Khi BẬT, bảng điều khiển yêu cầu mật khẩu. Khi TẮT, truy cập mà không cần đăng nhập.",
    "currentPassword": "Mật khẩu hiện tại",
    "enterCurrentPassword": "Nhập mật khẩu hiện tại",
    "newPassword": "Mật khẩu mới",
    "enterNewPassword": "Nhập mật khẩu mới",
    "confirmPassword": "Xác nhận mật khẩu mới",
    "confirmPasswordPlaceholder": "Xác nhận mật khẩu mới",
    "passwordsNoMatch": "Mật khẩu không khớp",
    "passwordUpdated": "Đã cập nhật mật khẩu thành công",
    "failedUpdatePassword": "Không cập nhật được mật khẩu",
    "errorOccurred": "Đã xảy ra lỗi",
    "updatePassword": "Cập nhật mật khẩu",
    "setPassword": "Đặt mật khẩu",
    "apiEndpointProtection": "Bảo vệ điểm cuối API",
    "requireAuthModels": "Yêu cầu khóa API cho /model",
    "requireAuthModelsDesc": "Khi BẬT, điểm cuối /v1/models trả về 404 cho các yêu cầu không được xác thực. Ngăn chặn việc phát hiện mô hình bởi người dùng trái phép.",
    "authModelHeading": "Mô hình ủy quyền hoạt động",
    "authModelClient": "Điểm cuối API máy khách (/v1/*, /chat/*, /responses/*, /codex/*, /messages/*) yêu cầu khóa API Bearer.",
    "authModelManagement": "Điểm cuối quản lý (/bảng thông tin, /api/*) yêu cầu phiên bảng thông tin hoặc thông tin xác thực quản lý.",
    "authModelPublic": "Chỉ các tuyến đăng nhập, sức khỏe và bootstrap là công khai.",
    "bruteForceProtection": "Đăng nhập bảo vệ bạo lực",
    "bruteForceProtectionDesc": "Điều tiết và khóa /api/auth/login sau nhiều lần thất bại từ cùng một IP.",
    "corsAllowedOrigins": "Nguồn gốc được phép CORS",
    "corsAllowedOriginsDesc": "Danh sách nguồn gốc trình duyệt được phân tách bằng dấu phẩy được phép gọi máy chủ này. Danh sách trống = không có quyền truy cập CORS của trình duyệt (từ máy chủ đến máy chủ vẫn hoạt động). Chỉ sử dụng CORS_ALLOW_ALL=true env var để phát triển.",
    "blockedProviders": "Nhà cung cấp bị chặn",
    "blockedProvidersDesc": "Ẩn các nhà cung cấp cụ thể khỏi phản hồi /v1/models. Các nhà cung cấp bị chặn sẽ không xuất hiện trong danh sách mô hình.",
    "providersBlocked": "{count} nhà cung cấp bị chặn khỏi /models",
    "blockProviderTitle": "Chặn {provider}",
    "unblockProviderTitle": "Bỏ chặn {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": "Đường ống chuyển đổi khối hệ thống",
    "systemTransformsDesc": "Quy trình chuyển đổi theo yêu cầu của mỗi nhà cung cấp được áp dụng cho nội dung yêu cầu trước khi chuyển tiếp. Hỗ trợ bất kỳ ID nhà cung cấp nào.",
    "systemTransformsAddProvider": "Thêm nhà cung cấp",
    "systemTransformsAddProviderPlaceholder": "Chọn nhà cung cấp…",
    "systemTransformsAddProviderAllConfigured": "Tất cả các nhà cung cấp đã được định cấu hình",
    "systemTransformsRemoveProvider": "Xóa nhà cung cấp",
    "systemTransformsNoProviders": "Không có nhà cung cấp nào được định cấu hình. Thêm nhà cung cấp để bắt đầu.",
    "systemTransformsOpMoveUp": "Di chuyển lên",
    "systemTransformsOpMoveDown": "Di chuyển xuống",
    "systemTransformsOpDelete": "Xóa lệnh",
    "routingStrategy": "Chiến lược định tuyến",
    "routingAdvancedGuideTitle": "Hướng dẫn định tuyến nâng cao",
    "routingAdvancedGuideHint1": "Sử dụng Fill First để có mức độ ưu tiên có thể dự đoán được, Round Robin để đảm bảo tính công bằng và P2C để có khả năng phục hồi độ trễ.",
    "routingAdvancedGuideHint2": "Nếu các nhà cung cấp khác nhau về chất lượng/chi phí, hãy bắt đầu với Cost Opt cho công việc nền và Ít được sử dụng nhất để cân bằng độ hao mòn.",
    "fillFirst": "điền đầu tiên",
    "fillFirstDesc": "Sử dụng tài khoản theo thứ tự ưu tiên",
    "roundRobin": "Vòng Robin",
    "roundRobinDesc": "Duyệt qua tất cả các tài khoản",
    "p2c": "P2C",
    "p2cDesc": "Chọn ngẫu nhiên 2 cái, chọn cái lành mạnh hơn",
    "random": "Ngẫu nhiên",
    "randomDesc": "Tài khoản ngẫu nhiên mỗi yêu cầu",
    "leastUsed": "Ít được sử dụng nhất",
    "leastUsedDesc": "Chọn tài khoản ít được sử dụng gần đây nhất",
    "costOpt": "Lựa chọn chi phí",
    "costOptDesc": "Ưu tiên tài khoản có sẵn rẻ nhất",
    "resetAware": "Đặt lại RR nhận biết",
    "resetAwareDesc": "Ưu tiên các tài khoản có hạn ngạch còn lại tốt và thời gian đặt lại gần hơn",
    "strictRandom": "Strict Random",
    "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling",
    "stickyLimit": "Giới hạn dính",
    "stickyLimitDesc": "Cuộc gọi trên mỗi tài khoản trước khi chuyển đổi",
    "modelAliases": "Bí danh mẫu",
    "modelAliasesTitle": "Bí danh mô hình",
    "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.",
    "addCustomAlias": "Thêm Bí Danh Tùy Chỉnh",
    "deprecatedModelId": "ID mô hình ngừng sử dụng",
    "newModelId": "ID mô hình mới",
    "customAliases": "Bí Danh Tùy Chỉnh",
    "builtInAliases": "Bí Danh Tích Hợp",
    "backgroundDegradationTitle": "Giảm Cấp Tác Vụ Nền",
    "backgroundDegradationDesc": "Tự động phát hiện tác vụ nền (tiêu đề, tóm tắt) và chuyển hướng sang mô hình rẻ hơn",
    "enableDegradation": "Bật Giảm Cấp Nền",
    "enableDegradationHint": "Khi bật, các tác vụ nền như tạo tiêu đề và tóm tắt sẽ tự động được chuyển hướng sang các mô hình rẻ hơn",
    "tasksDetected": "Tác vụ được phát hiện",
    "degradationMap": "Bản Đồ Giảm Cấp Mô Hình",
    "premiumModel": "Mô hình cao cấp",
    "cheapModel": "Mô hình giá rẻ",
    "detectionPatterns": "Mẫu Phát Hiện",
    "newPattern": "vd: \"tạo tiêu đề\"",
    "aliasPatternPlaceholder": "Claude-sonnet-*",
    "aliasTargetPlaceholder": "Claude-sonnet-4-20250514",
    "pattern": "mẫu",
    "targetModel": "Mô hình mục tiêu",
    "add": "+ Thêm",
    "session": "Phiên",
    "sessionDetailsAria": "Chi tiết phiên",
    "status": "Trạng thái",
    "authenticated": "Đã xác thực",
    "guest": "khách",
    "loginTime": "Thời gian đăng nhập",
    "sessionAge": "Tuổi phiên",
    "browser": "Trình duyệt",
    "clearLocalData": "Xóa dữ liệu cục bộ",
    "logout": "Đăng xuất",
    "clearLocalDataConfirm": "Xóa tất cả dữ liệu cục bộ? Điều này sẽ thiết lập lại tùy chọn của bạn.",
    "unknown": "Không xác định",
    "systemActor": "hệ thống",
    "ipAccessControl": "Kiểm soát truy cập IP",
    "ipAccessControlDesc": "Chặn hoặc cho phép các địa chỉ IP cụ thể",
    "ipModeDisabled": "Đã tắt",
    "ipModeBlacklist": "Danh sách đen",
    "ipModeWhitelist": "Danh sách trắng",
    "ipModeWhitelistPriority": "Ưu tiên WL",
    "addIpAddress": "Thêm địa chỉ IP",
    "ipAddressPlaceholder": "192.168.1.0/24 hoặc 10.0.*.*",
    "block": "+ Chặn",
    "allow": "+ Cho phép",
    "blocked": "Đã chặn ({count})",
    "allowed": "Được phép ({count})",
    "temporaryBans": "Lệnh cấm tạm thời ({count})",
    "minLeft": "{min} phút còn lại",
    "auditLog": "Nhật ký kiểm tra",
    "searchAuditLogs": "Tìm kiếm nhật ký kiểm tra...",
    "failedLoadAuditLog": "Không tải được nhật ký kiểm tra",
    "noAuditEvents": "Không tìm thấy sự kiện kiểm tra nào",
    "action": "hành động",
    "actor": "diễn viên",
    "details": "Chi tiết",
    "time": "thời gian",
    "fallbackChainsTitle": "Chuỗi dự phòng",
    "fallbackChainsDesc": "Xác định thứ tự dự phòng của nhà cung cấp cho mỗi mô hình",
    "addChain": "+ Thêm chuỗi",
    "modelName": "Tên mẫu",
    "modelNamePlaceholder": "Claude-sonnet-4-20250514",
    "providersCommaSeparated": "Nhà cung cấp (được phân tách bằng dấu phẩy, theo thứ tự ưu tiên)",
    "providersCommaSeparatedPlaceholder": "nhân loại, openai, song tử",
    "createChain": "Tạo chuỗi",
    "noFallbackChains": "Không có chuỗi dự phòng",
    "noFallbackChainsDesc": "Tạo một chuỗi để xác định thứ tự dự phòng của nhà cung cấp cho một mô hình.",
    "loadingFallbackChains": "Đang tải chuỗi dự phòng...",
    "deleteChainConfirm": "Xóa chuỗi dự phòng cho \"{model}\"?",
    "chainCreated": "Đã tạo chuỗi cho {model}",
    "chainDeleted": "Đã xóa chuỗi cho {model}",
    "failedCreateChain": "Không tạo được chuỗi",
    "failedDeleteChain": "Không thể xóa chuỗi",
    "deleteChain": "Xóa chuỗi",
    "fillModelAndProviders": "Vui lòng điền tên model và nhà cung cấp",
    "addAtLeastOneProvider": "Thêm ít nhất một nhà cung cấp",
    "comboDefaultsTitle": "Mặc định kết hợp",
    "comboDefaultsGuideTitle": "Cách điều chỉnh mặc định kết hợp",
    "comboDefaultsGuideHint1": "Giữ số lần thử ở mức thấp trong các luồng có độ trễ thấp; chỉ tăng thời gian chờ cho các tác vụ tạo dài.",
    "comboDefaultsGuideHint2": "Sử dụng ghi đè nhà cung cấp khi một nhà cung cấp cần hành vi hết thời gian chờ/thử lại khác với mặc định chung.",
    "globalComboConfig": "Cấu hình kết hợp toàn cầu",
    "defaultStrategy": "Chiến lược mặc định",
    "defaultStrategyDesc": "Áp dụng cho các combo mới không có chiến lược rõ ràng",
    "comboStrategyAria": "Chiến lược kết hợp",
    "priority": "Ưu tiên",
    "weighted": "Có trọng số",
    "contextRelay": "Context Relay",
    "contextRelayDesc": "Hands off context between providers with automatic summarization",
    "maxRetriesLabel": "Số lần thử lại tối đa",
    "retryDelayLabel": "Độ trễ thử lại (ms)",
    "timeoutLabel": "Thời gian chờ (ms)",
    "healthCheck": "Kiểm tra sức khỏe",
    "healthCheckDesc": "Kiểm tra trước tính khả dụng của nhà cung cấp",
    "trackMetrics": "Theo dõi số liệu",
    "trackMetricsDesc": "Ghi lại số liệu yêu cầu trên mỗi kết hợp",
    "providerOverrides": "Ghi đè nhà cung cấp",
    "providerOverridesDesc": "Ghi đè thời gian chờ và thử lại trên mỗi nhà cung cấp. Cài đặt nhà cung cấp ghi đè mặc định chung.",
    "providerMaxRetriesAria": "{provider} số lần thử lại tối đa",
    "providerTimeoutAria": "{provider} hết thời gian chờ mili giây",
    "removeProviderOverrideAria": "Xóa ghi đè {provider}",
    "newProviderNamePlaceholder": "ví dụ: google, openai...",
    "newProviderNameAria": "Tên nhà cung cấp mới",
    "retries": "thử lại",
    "ms": "cô",
    "saveComboDefaults": "Lưu mặc định kết hợp",
    "maxNestingDepth": "Độ sâu lồng tối đa",
    "concurrencyPerModel": "Đồng thời / Mô hình",
    "queueTimeout": "Hết thời gian xếp hàng (ms)",
    "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": "Hồ sơ nhà cung cấp",
    "providerProfilesDesc": "Cài đặt khả năng phục hồi riêng biệt cho các nhà cung cấp OAuth (dựa trên phiên) và Khóa API (được đo lường). Nhà cung cấp OAuth có ngưỡng chặt chẽ hơn do giới hạn tốc độ thấp hơn.",
    "oauthProviders": "Nhà cung cấp OAuth",
    "apiKeyProviders": "Nhà cung cấp khóa API",
    "transientCooldown": "Thời gian hồi chiêu thoáng qua",
    "rateLimitCooldown": "Thời gian hồi chiêu giới hạn tốc độ",
    "maxBackoffLevel": "Mức chờ đợi tối đa",
    "cbThreshold": "Ngưỡng CB",
    "cbResetTime": "Thời gian đặt lại CB",
    "rateLimiting": "Giới hạn tỷ lệ",
    "rateLimitingDesc": "Nhà cung cấp Khóa API được tự động giới hạn tỷ lệ với các giá trị mặc định an toàn. Các giới hạn được học từ tiêu đề phản hồi và điều chỉnh theo thời gian.",
    "defaultSafetyNet": "Mạng lưới an toàn mặc định",
    "rpm": "vòng/phút",
    "minGap": "Khoảng cách tối thiểu",
    "maxConcurrent": "Đồng thời tối đa",
    "activeLimiters": "Bộ hạn chế hoạt động",
    "noActiveLimiters": "Chưa có giới hạn tỷ lệ hoạt động nào.",
    "reservoir": "Hồ chứa nước",
    "running": "Đang chạy",
    "queued": "Đã xếp hàng",
    "circuitBreakers": "Bộ ngắt mạch",
    "breakerStateClosed": "Đã đóng",
    "breakerStateOpen": "Mở",
    "breakerStateHalfOpen": "Nửa mở",
    "tripped": "{count} bị vấp",
    "healthy": "{count} khỏe mạnh",
    "resetAll": "Đặt lại tất cả",
    "noCircuitBreakers": "Chưa có bộ ngắt mạch nào hoạt động. Chúng được tạo tự động khi các yêu cầu chảy qua đường dẫn kết hợp.",
    "failures": "{count} lỗi",
    "policiesLocked": "Chính sách & Mã định danh bị khóa",
    "allOperational": "Tất cả các hệ thống đều hoạt động - không có khóa hoặc cầu dao bị ngắt",
    "loadingPolicies": "Đang tải chính sách...",
    "lockedIdentifiers": "Số nhận dạng bị khóa",
    "unlockedIdentifier": "Đã mở khóa: {identifier}",
    "sinceDate": "kể từ {date}",
    "forceUnlock": "Buộc mở khóa",
    "unlocking": "Đang mở khóa...",
    "failedUnlock": "Không thể mở khóa",
    "failedLoadWithStatus": "Không tải được: {status}",
    "failedLoadResilience": "Không tải được trạng thái phục hồi",
    "saveFailed": "Lưu không thành công",
    "resetFailed": "Đặt lại không thành công",
    "loadingResilience": "Đang tải trạng thái phục hồi...",
    "retry": "Thử lại",
    "systemStorage": "Hệ thống & Lưu trữ",
    "allDataLocal": "Tất cả dữ liệu được lưu trữ cục bộ trên máy của bạn",
    "databasePath": "Đường dẫn cơ sở dữ liệu",
    "exportDatabase": "Xuất cơ sở dữ liệu",
    "exportAll": "Xuất tất cả (.tar.gz)",
    "importDatabase": "Nhập cơ sở dữ liệu",
    "confirmDbImport": "Xác nhận nhập cơ sở dữ liệu",
    "confirmDbImportDesc": "Thao tác này sẽ thay thế tất cả dữ liệu hiện tại bằng nội dung từ {file}. Một bản sao lưu sẽ được tạo tự động trước khi nhập.",
    "yesImport": "Có, nhập khẩu",
    "lastBackup": "Sao lưu lần cuối",
    "noBackupYet": "Chưa có bản sao lưu nào",
    "backupNow": "Sao lưu ngay",
    "backupRestore": "Sao lưu & Khôi phục",
    "viewBackups": "Xem bản sao lưu",
    "hide": "Ẩn",
    "backupRetentionDesc": "Ảnh chụp nhanh cơ sở dữ liệu được tạo tự động trước khi khôi phục và cứ sau 15 phút khi dữ liệu thay đổi. Lưu giữ: 24 giờ + 30 lần sao lưu hàng ngày với chế độ xoay thông minh.",
    "loadingBackups": "Đang tải bản sao lưu...",
    "noBackupsYet": "Chưa có bản sao lưu nào. Bản sao lưu sẽ được tạo tự động khi dữ liệu thay đổi.",
    "backupsAvailable": "{count} bản sao lưu có sẵn",
    "refresh": "Làm mới",
    "confirm": "Xác nhận?",
    "yes": "Có",
    "no": "Không",
    "restore": "Khôi phục",
    "invalidFileType": "Loại tệp không hợp lệ. Chỉ các tệp .sqlite được chấp nhận.",
    "exportFailed": "Xuất không thành công",
    "exportFailedWithError": "Xuất không thành công: {error}",
    "fullExportFailedWithError": "Xuất toàn bộ không thành công: {error}",
    "backupCreated": "Đã tạo bản sao lưu: {file}",
    "restoreSuccess": "Đã khôi phục! {connections} kết nối, nút {nodes}, tổ hợp {combos}, khóa API {apiKeys}.",
    "importSuccess": "Cơ sở dữ liệu đã được nhập! {connections} kết nối, nút {nodes}, tổ hợp {combos}, khóa API {apiKeys}.",
    "minutesAgo": "{count} phút trước",
    "hoursAgo": "{count} giờ trước",
    "daysAgo": "{count}ngày trước",
    "backupReasonManual": "hướng dẫn sử dụng",
    "backupReasonPreRestore": "khôi phục trước",
    "connectionsCount": "{count, plural, one {# connection} other {# connections}}",
    "noChangesSinceBackup": "Không có thay đổi nào kể từ lần sao lưu cuối cùng",
    "backupFailed": "Sao lưu không thành công",
    "restoreFailed": "Khôi phục không thành công",
    "importFailed": "Nhập không thành công",
    "errorDuringRestore": "Đã xảy ra lỗi trong quá trình khôi phục",
    "errorDuringImport": "Đã xảy ra lỗi trong quá trình nhập",
    "modelPricing": "Giá mẫu",
    "modelPricingDesc": "Định cấu hình mức chi phí cho mỗi mô hình • Tất cả mức giá bằng mã thông báo $/1 triệu",
    "registry": "Đăng ký",
    "priced": "Đã định giá",
    "searchProvidersModels": "Tìm kiếm nhà cung cấp hoặc mô hình...",
    "showAll": "Hiển thị tất cả",
    "noProvidersMatch": "Không có nhà cung cấp nào phù hợp với tìm kiếm của bạn.",
    "howPricingWorks": "Cách thức hoạt động của giá",
    "cacheWrite": "Ghi bộ nhớ đệm",
    "unsaved": "chưa được lưu",
    "resetDefaults": "Đặt lại mặc định",
    "saveProvider": "Lưu nhà cung cấp",
    "model": "người mẫu",
    "models": "mô hình",
    "moreProviders": "{count} nhà cung cấp khác",
    "withPricing": "với giá được cấu hình",
    "policiesCircuitBreakers": "Chính sách & Bộ ngắt mạch",
    "activeIssuesDetected": "Đã phát hiện sự cố đang diễn ra",
    "off": "Tắt",
    "resetPricingConfirm": "Đặt lại tất cả giá cho {provider} về mặc định?",
    "pricingDescInput": "Đầu vào: mã thông báo được gửi đến mô hình",
    "pricingDescOutput": "Đầu ra: mã thông báo được tạo",
    "pricingDescCached": "Đã lưu vào bộ nhớ đệm: đầu vào được sử dụng lại (~50% tốc độ đầu vào)",
    "pricingDescReasoning": "Lý luận: mã thông báo suy nghĩ (quay lại Đầu ra)",
    "pricingDescCacheWrite": "Ghi bộ đệm: tạo các mục bộ đệm (quay lại Đầu vào)",
    "pricingDescFormula": "Chi phí = (đầu vào × tốc độ đầu vào) + (đầu ra × tốc độ đầu ra) + (được lưu vào bộ nhớ đệm × tốc độ được lưu vào bộ nhớ cache) trên một triệu mã thông báo.",
    "pricingSettingsTitle": "Cài đặt giá",
    "totalModels": "Tổng số mô hình",
    "active": "Đang hoạt động",
    "costCalculation": "Tính toán chi phí",
    "costCalculationDesc": "Chi phí được tính toán dựa trên mức sử dụng mã thông báo và mức giá được định cấu hình cho từng mô hình.",
    "pricingFormat": "Định dạng giá",
    "pricingFormatDesc": "Tất cả các mức giá đều tính bằng token $/1 triệu (đô la trên một triệu token).",
    "tokenTypes": "Các loại mã thông báo",
    "inputTokenDesc": "Mã thông báo nhắc nhở tiêu chuẩn",
    "outputTokenDesc": "Mã thông báo hoàn thành/phản hồi",
    "cachedTokenDesc": "Mã thông báo đầu vào được lưu trong bộ nhớ đệm (thường là 50% tốc độ đầu vào)",
    "reasoningTokenDesc": "Mã thông báo lý luận/suy nghĩ đặc biệt (dự phòng tốc độ đầu ra)",
    "cacheCreationTokenDesc": "Mã thông báo được sử dụng để tạo mục nhập bộ đệm (dự phòng tốc độ đầu vào)",
    "customPricingNote": "Bạn có thể ghi đè giá mặc định cho các kiểu máy cụ thể. Ghi đè tùy chỉnh được ưu tiên hơn giá được tự động phát hiện.",
    "editPricing": "Chỉnh sửa giá",
    "viewFullDetails": "Xem chi tiết đầy đủ",
    "themeCoral": "San hô",
    "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": "Không xóa được giá: {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": "Không đặt lại được giá: {reason}",
    "tab": "Tab",
    "pricingSavedProvider": "Đã lưu giá cho {provider}",
    "pricingSyncFailed": "Pricing Sync Failed",
    "pricingSaveFailedWithReason": "Không lưu được giá: {reason}",
    "pricingResetProvider": "Đặt lại giá cho {provider}",
    "nextSync": "Next Sync",
    "pricingSyncFailedWithReason": "Đồng bộ hóa giá không thành công: {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": "Cấu hình động cơ mạnh mẽ",
    "compressionAggressiveConfigDesc": "Tinh chỉnh tóm tắt, nén công cụ và ngưỡng lão hóa",
    "compressionUltraConfig": "Cấu hình Ultra Engine",
    "compressionUltraConfigDesc": "Tinh chỉnh việc cắt tỉa heuristic, dự phòng SLM và ngưỡng cho mỗi tin nhắn",
    "compressionUltraRate": "Giữ tỷ lệ",
    "compressionUltraMinScore": "Ngưỡng điểm tối thiểu",
    "compressionUltraSlmFallback": "Dự phòng cho tích cực",
    "compressionUltraModelPath": "Đường dẫn mô hình SLM",
    "compressionSummarizerEnabled": "Bật trình tóm tắt",
    "compressionMaxTokensPerMessage": "Số mã thông báo tối đa cho mỗi tin nhắn",
    "compressionMinSavings": "Ngưỡng tiết kiệm tối thiểu",
    "compressionAgingThresholds": "Ngưỡng lão hóa",
    "compressionAgingThresholdsDesc": "Số lượng tin nhắn gần đây được lưu giữ ở mỗi cấp độ cũ (cao hơn = được bảo tồn nhiều hơn)",
    "compressionToolStrategies": "Chiến lược kết quả công cụ",
    "compressionToolStrategiesDesc": "Chuyển đổi chiến lược nén cho các loại kết quả công cụ khác nhau",
    "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": "phút",
    "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": "Tùy chọn",
    "current": "hiện tại",
    "remove": "Xóa",
    "search": "Tìm kiếm",
    "oneproxyTitle": "Thị trường proxy miễn phí 1proxy",
    "oneproxyTotalProxies": "Tổng số proxy",
    "oneproxyAvgQuality": "Chất lượng trung bình",
    "resilienceScope": "Phạm vi:",
    "resilienceTrigger": "Trình kích hoạt:",
    "resilienceEffect": "Hiệu ứng:",
    "resilienceRequestQueueTitle": "Request Queue & Rate",
    "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers",
    "resilienceRequestsPerMinute": "Requests per minute",
    "resilienceMinTimeBetweenRequests": "Minimum time between requests",
    "resilienceConcurrentRequests": "Concurrent requests",
    "resilienceMaxQueueWaitTime": "Thời gian chờ xếp hàng tối đa",
    "resilienceBaseCooldown": "Base cooldown",
    "resilienceUseUpstreamRetryHints": "Use upstream retry hints",
    "resilienceDefaultPerProvider": "Default (per provider)",
    "resilienceAlwaysOn": "Always on",
    "resilienceAlwaysOff": "Always off",
    "routingRemoveEntry": "Xóa mục nhập",
    "routingNeedlesSubstrings": "Kim (chuỗi con để phù hợp)",
    "routingCaseSensitive": "Phân biệt chữ hoa chữ thường",
    "routingPrefixes": "Tiền tố",
    "routingMatch": "Trận đấu",
    "routingReplacement": "thay thế",
    "routingReplaceAllOccurrences": "Thay thế tất cả các lần xuất hiện",
    "routingPatternRegex": "Mẫu (regex)",
    "routingFlags": "Cờ",
    "routingNeedles": "kim tiêm",
    "routingBlockText": "Chặn văn bản",
    "routingIdempotencyKey": "Chìa khóa bình đẳng",
    "routingEntrypoint": "Điểm vào",
    "routingVersionFormat": "Định dạng phiên bản",
    "routingCchAlgorithm": "Thuật toán CCH",
    "routingWordsToObfuscate": "Các từ cần làm xáo trộn (ZWJ được chèn sau ký tự đầu tiên)",
    "logsSettingsTitle": "Cài đặt nhật ký",
    "detailedLogsLabel": "Đã bật nhật ký chi tiết",
    "detailedLogsDesc": "Bật ghi nhật ký yêu cầu/phản hồi chi tiết",
    "callLogPipelineLabel": "Đường dẫn nhật ký cuộc gọi",
    "callLogPipelineDesc": "Bật quy trình xử lý nhật ký cuộc gọi",
    "maxDetailSizeLabel": "Kích thước chi tiết tối đa (KB)",
    "maxDetailSizeDesc": "Kích thước tối đa cho các mục nhật ký chi tiết",
    "ringBufferSizeLabel": "Kích thước bộ đệm vòng",
    "ringBufferSizeDesc": "Kích thước của vòng đệm cho nhật ký",
    "semanticCacheEnabledLabel": "Đã bật bộ nhớ đệm ngữ nghĩa",
    "semanticCacheMaxSizeLabel": "Kích thước tối đa của bộ đệm ngữ nghĩa",
    "semanticCacheMaxSizeDesc": "Số mục nhập bộ nhớ đệm ngữ nghĩa tối đa",
    "semanticCacheTTLLabel": "Bộ nhớ đệm ngữ nghĩa TTL",
    "promptCacheEnabledLabel": "Đã bật bộ đệm nhắc nhở",
    "promptCacheEnabledDesc": "Bật bộ nhớ đệm nhanh chóng",
    "promptCacheStrategyLabel": "Chiến lược bộ nhớ đệm nhanh chóng",
    "promptCacheStrategyDesc": "Chiến lược lưu vào bộ nhớ đệm nhanh chóng",
    "alwaysPreserveClientCacheLabel": "Luôn bảo toàn bộ đệm của máy khách",
    "alwaysPreserveClientCacheDesc": "Chính sách bảo quản bộ đệm của máy khách",
    "logRetentionPolicyTitle": "Chính sách lưu giữ nhật ký",
    "resilienceUseUpstream429HintsForBreaker": "Sử dụng gợi ý ngược dòng 429 (ngắt)",
    "appearanceLogoPreviewAlt": "Xem trước biểu trưng",
    "appearanceFaviconPreviewAlt": "Xem trước biểu tượng yêu thích",
    "oneproxyLastSync": "Đồng bộ hóa lần cuối",
    "oneproxyAllProtocols": "Tất cả các giao thức",
    "oneproxyCountryCodePlaceholder": "Mã quốc gia (ví dụ: Hoa Kỳ)",
    "oneproxyMinQualityPlaceholder": "Chất lượng tối thiểu",
    "oneproxyLoadingProxies": "Đang tải proxy...",
    "oneproxyLastSyncLabel": "Đồng bộ hóa lần cuối:",
    "oneproxyProxiesFetched": "Proxy được tìm nạp:",
    "oneproxyConsecutiveFailures": "Thất bại liên tiếp:",
    "oneproxyErrorLabel": "Lỗi:",
    "oneproxyNever": "không bao giờ",
    "oneproxySyncStatusTitle": "Trạng thái đồng bộ hóa",
    "oneproxySuccess": "thành công",
    "oneproxyFailed": "thất bại",
    "routingAntigravitySignatureTitle": "Chế độ bộ nhớ đệm chữ ký phản trọng lực",
    "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": "Dấu vân tay tiêu đề (mỗi nhà cung cấp)",
    "routingServerRejectedSave": "⚠ Máy chủ từ chối lưu:",
    "routingAddTransformOp": "Thêm một op biến đổi",
    "routingClientCacheControlTitle": "Kiểm soát bộ nhớ đệm của máy khách",
    "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": "Tự động định tuyến không cấu hình",
    "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": "Biến thể tự động mặc định",
    "visionBridge": "Cầu tầm nhìn",
    "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": "Mô hình cầu",
    "visionBridgeModelPlaceholder": "openai/gpt-4o-mini",
    "visionBridgeModelHint": "__MISSING__:Any OmniRoute model ID that supports vision can be used here.",
    "visionBridgePrompt": "Nhắc nhở cầu",
    "visionBridgePromptPlaceholder": "Hãy mô tả hình ảnh này một cách ngắn gọn.",
    "visionBridgePromptHint": "__MISSING__:Sent to the vision model before the extracted description is injected back into the original request.",
    "visionBridgeTimeoutMs": "Thời gian chờ (ms)",
    "visionBridgeMaxImagesPerRequest": "Hình ảnh tối đa cho mỗi yêu cầu",
    "resilienceMaxBackoffSteps": "Max backoff steps",
    "resilienceProviderBreakerTitle": "Circuit Breaker per Provider",
    "resilienceFailureThreshold": "Failure threshold",
    "resilienceResetTimeout": "Đặt lại thời gian chờ",
    "resilienceFailureThresholdLabel": "Ngưỡng thất bại",
    "resilienceResetTimeoutLabel": "Đặt lại thời gian chờ",
    "resilienceConnectionCooldownTitle": "Connection Cooldown",
    "resilienceUseUpstreamRetryHintsLabel": "Sử dụng gợi ý thử lại ngược dòng",
    "resilienceUseUpstream429BreakerLabel": "Sử dụng gợi ý ngược dòng 429 (ngắt)",
    "resilienceMaxBackoffStepsLabel": "Bước lùi tối đa",
    "resilienceYes": "Có",
    "resilienceNo": "Không",
    "resilienceDefault": "Default",
    "storageDatabaseBackupRetention": "Lưu giữ sao lưu cơ sở dữ liệu",
    "storagePurgeData": "Xóa dữ liệu",
    "retentionQuotaSnapshots": "Ảnh chụp nhanh hạn ngạch (ngày)",
    "retentionMcpAudit": "Kiểm toán MCP (ngày)",
    "retentionA2aEvents": "Sự kiện A2A (ngày)",
    "retentionCallLogs": "Nhật ký cuộc gọi (ngày)",
    "retentionUsageHistory": "Lịch sử sử dụng (ngày)",
    "retentionMemoryEntries": "Mục nhập bộ nhớ (ngày)",
    "storageAutoVacuumMode": "Chế độ hút bụi tự động",
    "storageScheduledVacuum": "chân không theo lịch trình",
    "storageVacuumHour": "Giờ chân không (0-23)",
    "storagePageSize": "Kích thước trang (byte)",
    "storageDatabaseSize": "Kích thước cơ sở dữ liệu",
    "storagePageCount": "Số trang",
    "storageFreelistCount": "Số lượng danh sách tự do",
    "storageLastVacuum": "Chân không cuối cùng",
    "storageLastOptimization": "Tối ưu hóa lần cuối",
    "storageIntegrityCheck": "Kiểm tra tính toàn vẹn",
    "storageIntegrityOk": "✓ Được rồi",
    "storageIntegrityError": "✗ Lỗi",
    "storageUsageTokenBuffer": "Bộ đệm mã thông báo sử dụng",
    "compressionSettingsAutoTriggerMode": "Chế độ kích hoạt tự động",
    "compressionSettingsMcpDescriptionCompression": "Nén mô tả MCP",
    "compressionSettingsCavemanIntensity": "Cường độ thượng cổ",
    "compressionSettingsCavemanOutputMode": "Chế độ đầu ra Caveman",
    "compressionSettingsOutputIntensity": "Cường độ đầu ra",
    "compressionSettingsAutoClarityBypass": "Tự động bỏ qua rõ ràng",
    "resilienceWaitForCooldown": "Chờ thời gian hồi chiêu",
    "resilienceEnableServerSideWait": "Bật tính năng chờ phía máy chủ",
    "resilienceMaximumRetries": "Số lần thử lại tối đa",
    "resilienceMaximumWaitPerRetry": "Thời gian chờ tối đa cho mỗi lần thử lại",
    "memorySkillsSkillsmpMarketplace": "Thị trường SkillMP",
    "memorySkillsFailedToSave": "Không lưu được",
    "memorySkillsApiKey": "Khóa API",
    "memorySkillsActiveSkillsProvider": "Nhà cung cấp kỹ năng tích cực",
    "cliproxyapiFallback": "Dự phòng CLIProxyAPI",
    "cliproxyapiEnableFallback": "Bật dự phòng CLIProxyAPI",
    "cliproxyapiUrl": "URL CLIProxyAPI",
    "cliproxyapiStatus": "Trạng thái CLIProxyAPI",
    "cliproxyapiNotDetected": "Không được phát hiện",
    "payloadRulesTitle": "Quy tắc tải trọng",
    "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": "Các mẫu đang trong thời gian hồi chiêu",
    "modelCooldownsEmpty": "Hiện tại không có mẫu nào đang trong thời gian hồi chiêu.",
    "codexFastTierTitle": "Cấp độ nhanh của Codex",
    "codexFastTierDesc": "Đưa vào toàn cầu service_tier=priority cho các yêu cầu OpenAI Codex.",
    "codexFastTierHint": "Khi được bật, OmniRoute sẽ thêm service_tier=priority vào các yêu cầu Codex gửi đi cho các kết nối chưa chỉ định cấp. Bậc ưu tiên yêu cầu khóa API OpenAI Enterprise hoặc đường dẫn Codex ChatGPT-auth; các loại khóa khác sẽ nhận được lỗi liên quan đến cấp độ từ OpenAI. Cài đặt cho mỗi kết nối trên trang nhà cung cấp Codex được ưu tiên.",
    "codexFastTierSaveError": "Không thể cập nhật cài đặt Cấp nhanh Codex",
    "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": "Chế độ nhanh Claude",
    "claudeFastModeDesc": "Chọn các yêu cầu Claude đã chọn vào Chế độ nhanh nhân loại (tốc độ: \"nhanh\").",
    "claudeFastModeHint": "Anthropic không chính thức hỗ trợ Chế độ nhanh cho các máy khách kiểu SDK. Khi được bật, OmniRoute sẽ chuyển tiếp tiêu đề X-CPA-Force-Fast-Mode để bản dựng CLIProxyAPI được ghép nối có thể chọn tham gia giả mạo điểm nhập. Chỉ các mẫu Opus được liệt kê mới được kiểm soát bởi quá trình kiểm tra phía khách hàng của Anthropic. Cấp đăng ký, gói tối đa và số dư tín dụng Chế độ nhanh vẫn được thực thi ở phía máy chủ - Anthropic có thể trả về out_of_credits ngay cả khi bật nút chuyển đổi.",
    "claudeFastModeModelsLabel": "Áp dụng cho các mô hình ({count})",
    "claudeFastModeModelCheckbox": "Bật Chế độ nhanh cho {model}",
    "claudeFastModeSaveError": "Không thể cập nhật cài đặt Chế độ nhanh của Claude",
    "authz": {
      "title": "__MISSING__:Authz Inventory",
      "description": "__MISSING__:5-tier route classification with live bypass policy. Read shows the full taxonomy; mutations re-prompt for the management password.",
      "loading": "__MISSING__:Loading inventory…",
      "loadError": "__MISSING__:Failed to load authz inventory",
      "tier": {
        "LOCAL_ONLY": "__MISSING__:Local only",
        "ALWAYS_PROTECTED": "__MISSING__:Always protected",
        "MANAGEMENT": "__MISSING__:Management",
        "CLIENT_API": "__MISSING__:Client API",
        "PUBLIC": "__MISSING__:Public"
      },
      "bypass": {
        "section": "__MISSING__:Manage-scope bypass",
        "kill_switch": {
          "label": "__MISSING__:Bypass kill-switch",
          "desc": "__MISSING__:Master toggle. When off, no LOCAL_ONLY prefix is reachable from non-loopback regardless of the per-prefix list."
        },
        "prefix": {
          "label": "__MISSING__:Bypassable prefixes",
          "desc": "__MISSING__:LOCAL_ONLY prefixes that manage-scope API keys (or dashboard sessions) may reach from non-loopback hosts.",
          "add": "__MISSING__:Add prefix",
          "placeholder": "__MISSING__:/api/mcp/v2/",
          "empty": "__MISSING__:No prefixes configured. Bypass effectively off."
        },
        "cli_tools_runtime_note": "__MISSING__:Spawn-capable prefix. Compile-time deny; cannot be made bypassable. Shown read-only."
      },
      "password": {
        "prompt": {
          "label": "__MISSING__:Current password",
          "desc": "__MISSING__:Re-confirm to apply security-impacting changes."
        },
        "placeholder": "__MISSING__:Current management password",
        "cancel": "__MISSING__:Cancel",
        "submit": "__MISSING__:Apply"
      },
      "save": "__MISSING__:Save changes",
      "saved": "__MISSING__:Authz settings updated",
      "pending": "__MISSING__:Unsaved changes",
      "badge": {
        "bypassable": "__MISSING__:Bypassable via manage scope",
        "strict": "__MISSING__:Strict loopback",
        "auth_required": "__MISSING__:Auth required",
        "public": "__MISSING__:Public",
        "always_protected": "__MISSING__:Always protected",
        "spawn_capable": "__MISSING__:Spawn-capable"
      },
      "error": {
        "PASSWORD_REQUIRED": "__MISSING__:Current password required to apply these changes.",
        "PASSWORD_MISMATCH": "__MISSING__:Current password is incorrect.",
        "INSUFFICIENT_SCOPE": "__MISSING__:API key lacks the manage scope.",
        "BYPASS_PREFIX_NOT_ALLOWED": "__MISSING__:One or more prefixes target spawn-capable routes and cannot be bypassed.",
        "GENERIC": "__MISSING__:Failed to update authz settings."
      }
    },
    "resilienceBaseCooldownLabel": "Thời gian hồi chiêu cơ bản",
    "scopeLabel": "Phạm vi",
    "triggerLabel": "Trình kích hoạt",
    "effectLabel": "Hiệu ứng",
    "statusEnabled": "Đã bật",
    "statusDisabled": "Đã tắt",
    "resilienceRequestQueueScope": "Mỗi hàng đợi yêu cầu",
    "resilienceRequestQueueTrigger": "Trước khi gửi lên thượng nguồn",
    "resilienceRequestQueueEffect": "Xếp hàng đợi các yêu cầu, giới hạn sự đồng thời và loại bỏ các cuộc gọi",
    "resilienceRequestQueueDesc": "Lớp này chỉ kiểm soát việc xếp hàng và tốc độ. Nó không lưu trữ thời gian hồi chiêu hoặc cầu dao mở.",
    "resilienceAutoEnableApiKeyProvidersDesc": "Bật tính năng bảo vệ hàng đợi theo mặc định cho các kết nối khóa API đang hoạt động.",
    "resilienceMaxQueueWait": "Thời gian chờ xếp hàng tối đa",
    "resilienceConnectionCooldownScope": "Kết nối riêng lẻ",
    "resilienceConnectionCooldownTrigger": "Khi một kết nối trả về lỗi ngược dòng tạm thời",
    "resilienceConnectionCooldownEffect": "Tạm thời bỏ qua kết nối đó và tăng thời gian chờ cho các lỗi lặp lại",
    "resilienceConnectionCooldownDesc": "Thời gian hồi chiêu cơ bản bao gồm các lỗi kết nối tạm thời. Khi bật gợi ý thử lại ngược dòng, cửa sổ rõ ràng của nhà cung cấp sẽ ghi đè thời gian hồi chiêu cục bộ.",
    "resilienceUseUpstreamRetryHintsDesc": "Sử dụng các giá trị thử lại sau/đặt lại từ nhà cung cấp ngược tuyến khi có sẵn.",
    "resilienceUseUpstream429BreakerHints": "Sử dụng gợi ý ngược dòng 429 để có thời gian hồi chiêu của bộ ngắt",
    "resilienceUseUpstream429BreakerHintsShort": "Sử dụng gợi ý ngược dòng 429",
    "resilienceUseUpstream429BreakerHintsDesc": "Áp dụng tín hiệu Thử lại sau/hết hạn ngạch từ 429 phản hồi cho thời gian hồi chiêu của bộ ngắt mạch. Mặc định sử dụng chính sách cho mỗi nhà cung cấp: bật trực tiếp nhà cung cấp đám mây; Các nhà cung cấp proxy ngược, tự lưu trữ và được CLI hỗ trợ mặc định tắt. Độc lập với \"Sử dụng gợi ý thử lại ngược dòng\".",
    "resilienceProviderBreakerScope": "Toàn bộ nhà cung cấp",
    "resilienceProviderBreakerTrigger": "Lỗi vận chuyển/máy chủ cuối cùng sau khi hết kết nối dự phòng",
    "resilienceProviderBreakerEffect": "Tạm thời chặn nhà cung cấp đó cho đến khi hết thời gian đặt lại",
    "resilienceProviderBreakerDesc": "Trạng thái ngắt trực tiếp chỉ xuất hiện trên trang Sức khỏe. Giới hạn tốc độ 429 trong phạm vi kết nối vẫn ở trong Thời gian chờ kết nối và không ngắt bộ ngắt nhà cung cấp.",
    "resilienceResetTime": "Đặt lại thời gian",
    "resilienceWaitForCooldownTitle": "Chờ thời gian hồi chiêu",
    "resilienceWaitForCooldownScope": "Yêu cầu hiện tại của khách hàng",
    "resilienceWaitForCooldownTrigger": "Khi tất cả các kết nối ứng viên đã hạ nhiệt",
    "resilienceWaitForCooldownEffect": "Chờ trên máy chủ và thử lại khi hết thời gian hồi chiêu đầu tiên",
    "resilienceWaitForCooldownDesc": "Điều này chỉ ảnh hưởng đến yêu cầu hiện tại. Nó không lưu trữ kết nối hoặc trạng thái nhà cung cấp.",
    "resilienceEnableServerWait": "Bật tính năng chờ phía máy chủ",
    "resilienceEnableServerWaitDesc": "Khi được bật, OmniRoute sẽ đợi thời gian hồi chiêu đầu tiên hết và tự động thử lại.",
    "resilienceMaxAttempts": "Số lần thử tối đa",
    "resilienceMaxWaitPerAttempt": "Thời gian chờ tối đa cho mỗi lần thử",
    "forcedFingerprintTitle": "Always enabled for {provider} — required for OAuth account safety; cannot be turned off.",
    "forcedFingerprintBadge": "Required",
    "codexSessionAffinityTitle": "Mối quan hệ phiên Codex",
    "codexSessionAffinityDesc": "Giữ một cuộc trò chuyện Codex trên cùng một tài khoản trong nhiều giây như vậy. 0 vô hiệu hóa nó.",
    "codexSessionAffinityTtl": "Mối quan hệ TTL (giây)",
    "resetAwareQuotaCacheTitle": "Đặt lại bộ đệm hạn ngạch nhận biết",
    "resetAwareQuotaCacheDesc": "Bộ nhớ đệm hạn ngạch đo từ xa chỉ dành cho việc đặt hàng nhận biết lại. Hạn ngạch preflight vẫn bảo vệ các yêu cầu. 0/0 tiếp tục tìm nạp trực tiếp.",
    "resetAwareQuotaCacheTtl": "TTL mới (giây)",
    "resetAwareQuotaCacheMaxStale": "Thời gian cũ tối đa (giây)",
    "qdrantCleanupSuccess": "OK: đã xóa {count} điểm (lưu giữ: {days} ngày)",
    "qdrantCleanupFailed": "Dọn dẹp không thành công",
    "qdrantCleanupError": "Lỗi: {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": "Danh mục bộ lọc",
    "filterCatalogDesc": "Bộ lọc đầu ra có sẵn theo danh mục",
    "guidedConfig": "Cấu hình",
    "guidedConfigDesc": "Điều chỉnh cách RTK lọc đầu ra thiết bị đầu cuối của bạn",
    "maxLines": "Max lines",
    "maxChars": "Max chars",
    "deduplicateThreshold": "Ngưỡng trùng lặp",
    "customFilters": "Bộ lọc tùy chỉnh",
    "detectedType": "Loại được phát hiện",
    "confidence": "sự tự tin",
    "beforeAfter": "Trước / Sau",
    "trustProjectFilters": "Bộ lọc dự án tin cậy",
    "rawOutputRetention": "Duy trì đầu ra thô",
    "rawOutputNever": "không bao giờ",
    "rawOutputFailures": "Thất bại",
    "rawOutputAlways": "Luôn luôn",
    "rawOutputMaxBytes": "Số byte tối đa đầu ra thô",
    "filterTesting": "Filter Testing",
    "pasteOutput": "Paste tool output to test filtering...",
    "presetHigh": "hung hãn",
    "presetLow": "Ánh sáng",
    "presetMaxChars": "Ký tự đầu ra tối đa",
    "presetMaxLines": "Dòng đầu ra tối đa",
    "presetMedium": "Tiêu chuẩn",
    "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": "Đơn giản",
    "advancedMode": "Nâng cao",
    "searchFilters": "Bộ lọc tìm kiếm...",
    "tooltipDedup": "Làm thế nào mạnh mẽ để loại bỏ các dòng lặp đi lặp lại.",
    "tooltipMaxChars": "Ký tự tối đa trên mỗi khối đầu ra.",
    "tooltipMaxLines": "Các dòng tối đa cần tránh khỏi đầu ra lệnh. Phần thừa sẽ bị cắt bớt."
  },
  "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": "Cấu hình nâng cao",
    "advancedConfigDesc": "Tinh chỉnh hành vi nén",
    "aggressiveSettings": "Cài đặt linh hoạt",
    "aggressiveSettingsDesc": "Nén tối đa với sự đánh đổi chất lượng tiềm năng",
    "requests": "Requests",
    "tokensSaved": "Tokens saved",
    "savingsPercent": "Savings %",
    "avgLatency": "Avg latency",
    "languagePacks": "Language Packs",
    "languagePacksDesc": "Enable compression rules for specific languages.",
    "labelAutoTrigger": "Tự động nén khi ngữ cảnh vượt quá",
    "labelCompressionRate": "Cường độ nén",
    "labelMaxTokens": "Mã thông báo mục tiêu cho mỗi tin nhắn",
    "labelMinLength": "Độ dài tin nhắn tối thiểu",
    "labelMinSavings": "Mã thông báo tối thiểu để lưu",
    "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": "Chế độ đầu ra",
    "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.",
    "outputModeTitle": "Output Mode",
    "quickSettings": "Cài đặt nhanh",
    "quickSettingsDesc": "Cài đặt nén cơ bản để bắt đầu",
    "autoClarity": "Auto-Clarity Bypass",
    "bypassConditions": "Bypass conditions",
    "bypassConditionsList": "bảo mật, không thể đảo ngược, làm rõ, nhạy cảm với trật tự",
    "simpleMode": "Đơn giản",
    "advancedMode": "Nâng cao",
    "tooltipAutoTrigger": "Tự động nén khi ngữ cảnh vượt quá kích thước này.",
    "tooltipCompressionRate": "0,0 = không có, 1,0 = tối đa. 0,5 = cân bằng.",
    "tooltipMaxTokens": "Số lượng mã thông báo mục tiêu sau khi nén. Thấp hơn = hung hăng hơn.",
    "tooltipMinLength": "Tin nhắn ngắn hơn thế này sẽ không được nén. Thấp hơn = nén nhiều hơn.",
    "tooltipMinSavings": "Chỉ nén nếu nó lưu ít nhất nhiều mã thông báo này.",
    "ultraSettings": "Cài đặt cực cao",
    "ultraSettingsDesc": "Nén ngữ nghĩa được hỗ trợ bởi 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": "Người phiên dịch",
    "metaTitle": "Sân chơi phiên dịch | OmniRoute",
    "metaDescription": "Gỡ lỗi, kiểm tra và trực quan hóa bản dịch định dạng API giữa các nhà cung cấp",
    "playgroundTitle": "Sân chơi phiên dịch",
    "playground": "Sân chơi",
    "realtime": "Hoạt động dịch thời gian thực",
    "chatTester": "Trình kiểm tra trò chuyện",
    "testBench": "Ghế thử nghiệm",
    "liveMonitor": "Màn hình trực tiếp",
    "modeDescriptionPlayground": "Dán bất kỳ nội dung yêu cầu API nào và xem cách OmniRoute dịch nó giữa các định dạng nhà cung cấp (OpenAI ↔ Claude ↔ Gemini ↔ API phản hồi)",
    "modeDescriptionChatTester": "Gửi các yêu cầu trò chuyện thực tế thông qua OmniRoute và kiểm tra toàn bộ hành trình: đầu vào, yêu cầu đã dịch, phản hồi của nhà cung cấp và đầu ra đã dịch.",
    "modeDescriptionTestBench": "Chạy các kịch bản được xác định trước và so sánh khả năng tương thích giữa các nhà cung cấp và mô hình.",
    "modeDescriptionLiveMonitor": "Xem các sự kiện dịch thuật trong thời gian thực khi các yêu cầu chảy qua OmniRoute.",
    "modeDescriptionFallback": "Gỡ lỗi, kiểm tra và trực quan hóa cách OmniRoute dịch các yêu cầu API giữa các nhà cung cấp.",
    "recentTranslations": "Bản dịch gần đây",
    "noTranslations": "Chưa có bản dịch nào",
    "source": "Nguồn",
    "target": "Mục tiêu",
    "time": "thời gian",
    "model": "người mẫu",
    "status": "Trạng thái",
    "latency": "Độ trễ",
    "totalTranslations": "Tổng số bản dịch",
    "successful": "thành công",
    "errors": "Lỗi",
    "avgLatency": "Độ trễ trung bình",
    "millisecondsShort": "{value}ms",
    "notAvailableSymbol": "—",
    "liveAutoRefreshing": "Trực tiếp - Tự động làm mới",
    "paused": "Đã tạm dừng",
    "eventsAppearHint": "Các sự kiện dịch xuất hiện ở đây khi các yêu cầu chuyển qua OmniRoute. Sử dụng bất kỳ phương pháp nào sau đây để tạo sự kiện:",
    "chatTesterTab": "Tab Trình kiểm tra trò chuyện",
    "testBenchTab": "Tab Bench thử nghiệm",
    "externalApiCalls": "Lệnh gọi API bên ngoài",
    "ideCliIntegrations": "Tích hợp IDE/CLI",
    "inMemoryNote": "Lưu ý: Các sự kiện được lưu trong bộ nhớ và được đặt lại khi máy chủ khởi động lại.",
    "ok": "được rồi",
    "errorShort": "LỖI",
    "formatConverter": "Trình chuyển đổi định dạng",
    "formatConverterDescription": "Dán hoặc nhập nội dung yêu cầu JSON. Trình dịch sẽ tự động phát hiện định dạng nguồn và chuyển đổi nó sang định dạng đích. Sử dụng tính năng này để gỡ lỗi cách OmniRoute dịch các yêu cầu giữa các định dạng (OpenAI ↔ Claude ↔ Gemini ↔ API phản hồi).",
    "translationPathHubSpoke": "{source} → OpenAI (trung cấp) → {target}",
    "translationPathDirect": "{source} → {target} (người dịch trực tiếp)",
    "translationPathPassthrough": "Cùng một định dạng - không cần dịch",
    "openaiIntermediatePanel": "Trung cấp OpenAI",
    "autoFeaturesTitle": "OmniRoute tự động làm gì",
    "autoFeaturesCount": "8 tính năng",
    "featureReasoningCache": "Bộ đệm lý luận",
    "featureReasoningCacheDesc": "Tiêm lại Reason_content được lưu trong bộ nhớ đệm cho các mô hình chế độ tư duy (DeepSeek V4, Kimi K2, Qwen) khi khách hàng bỏ qua nó khỏi lịch sử hội thoại.",
    "featureSchemaCoercion": "Lược đồ cưỡng bức",
    "featureSchemaCoercionDesc": "Sửa các lược đồ công cụ bị hỏng: thêm các Thuộc tính bổ sung bị thiếu, loại bỏ các mô tả dài, chuẩn hóa các đối tượng lồng nhau.",
    "featureRoleNormalization": "Bình thường hóa vai trò",
    "featureRoleNormalizationDesc": "Nhà phát triển bản đồ→hệ thống dành cho các mục tiêu không thuộc OpenAI. Hệ thống bản đồ→người dùng cho các kiểu máy không hỗ trợ vai trò hệ thống.",
    "featureToolCallIds": "Chuẩn hóa ID cuộc gọi công cụ",
    "featureToolCallIdsDesc": "Tạo ID tool_call duy nhất khi bị thiếu. Chuẩn hóa thành định dạng 9 ký tự cho các nhà cung cấp như Mistral.",
    "featureMissingToolResponse": "Công cụ phản hồi tiêm",
    "featureMissingToolResponseDesc": "Chèn các thông báo tool_result trống khi khách hàng gửi tool_calls mà không có phản hồi tương ứng.",
    "featureThinkingBudget": "Suy nghĩ về ngân sách",
    "featureThinkingBudgetDesc": "Tự động quản lý cấu hình tư duy. Loại bỏ các tham số suy nghĩ khi tin nhắn cuối cùng không phải từ người dùng.",
    "featureDirectPaths": "Đường dẫn dịch trực tiếp",
    "featureDirectPathsDesc": "Một số cặp định dạng (Claude→Gemini) có trình dịch trực tiếp bỏ qua trung tâm OpenAI, tạo ra kết quả đầu ra chính xác hơn.",
    "featureImageMapping": "Ánh xạ kích thước hình ảnh",
    "featureImageMappingDesc": "Dịch các quy ước về kích thước hình ảnh giữa các định dạng API (ví dụ: cấp độ chi tiết OpenAI → kích thước Gemini).",
    "input": "đầu vào",
    "output": "đầu ra",
    "auto": "Tự động",
    "swapFormats": "Hoán đổi định dạng",
    "translateAction": "Dịch",
    "clear": "Xóa",
    "inputPlaceholder": "Dán nội dung yêu cầu tại đây hoặc chọn mẫu bên dưới...",
    "exampleTemplates": "Mẫu ví dụ",
    "exampleTemplatesHint": "- Bấm để tải",
    "templateLoadHint": "Mẫu tải yêu cầu ở định dạng {format}. Thay đổi định dạng nguồn để tải ở định dạng khác.",
    "compatibilityTester": "Trình kiểm tra khả năng tương thích",
    "compatibilityReport": "Báo cáo tương thích",
    "testBenchDescription": "Chạy các kịch bản được xác định trước (Trò chuyện đơn giản, Gọi công cụ, v.v.) để xác minh khả năng tương thích của bản dịch và nhà cung cấp. Chọn định dạng nguồn và nhà cung cấp mục tiêu, sau đó chạy tất cả các thử nghiệm để xem tỷ lệ phần trăm tương thích. Sử dụng công cụ này để tìm những tính năng nào hoạt động giữa các nhà cung cấp.",
    "targetProvider": "Nhà cung cấp mục tiêu",
    "runAllTests": "Chạy tất cả các bài kiểm tra",
    "runTest": "Chạy thử nghiệm",
    "reRun": "Chạy lại",
    "running": "Đang chạy...",
    "passed": "đã vượt qua",
    "failed": "thất bại",
    "passedIconLabel": "✅ Đạt",
    "chunks": "khối",
    "scenarioSimpleChat": "Trò chuyện đơn giản",
    "scenarioToolCalling": "Gọi công cụ",
    "scenarioMultiTurn": "Nhiều lượt",
    "scenarioThinking": "suy nghĩ",
    "scenarioSystemPrompt": "Lời nhắc hệ thống",
    "scenarioStreaming": "Truyền phát",
    "templateNames": {
      "simple-chat": "Trò chuyện đơn giản",
      "tool-calling": "Gọi công cụ",
      "multi-turn": "Nhiều lượt",
      "thinking": "suy nghĩ",
      "system-prompt": "Lời nhắc hệ thống",
      "streaming": "Truyền phát",
      "vision": "Tầm nhìn",
      "schema-coercion": "Lược đồ cưỡng bức"
    },
    "templateDescriptions": {
      "simple-chat": "Tin nhắn văn bản cơ bản",
      "tool-calling": "Lệnh gọi hàm/công cụ",
      "multi-turn": "Đối thoại với lịch sử",
      "thinking": "Suy nghĩ/lý luận mở rộng",
      "system-prompt": "Hướng dẫn hệ thống phức tạp",
      "streaming": "Yêu cầu phát trực tuyến SSE",
      "vision": "Yêu cầu đa phương thức với đầu vào hình ảnh",
      "schema-coercion": "Thực thi lược đồ JSON/đầu ra có cấu trúc"
    },
    "templatePayloads": {
      "simpleChat": {
        "system": "Bạn là một trợ lý hữu ích.",
        "userGreeting": "Xin chào! Bạn hôm nay thế nào?"
      },
      "toolCalling": {
        "userWeather": "Thời tiết ở São Paulo thế nào?",
        "toolDescription": "Nhận thời tiết hiện tại cho một địa điểm",
        "cityNameDescription": "Tên thành phố"
      },
      "multiTurn": {
        "system": "Bạn là một trợ lý mã hóa.",
        "userInitial": "Viết hàm sắp xếp một mảng trong Python.",
        "assistantExample": "Đây là một chức năng sắp xếp đơn giản:\n\n``` con trăn\ndef sắp xếp_array(arr):\n    trả về đã sắp xếp(arr)\n```",
        "userFollowUp": "Bây giờ hãy sắp xếp nó theo thứ tự giảm dần."
      },
      "thinking": {
        "question": "Tổng của 100 số nguyên tố đầu tiên là bao nhiêu?"
      },
      "systemPrompt": {
        "systemInstruction": "Bạn là một kỹ sư phần mềm cao cấp chuyên về hệ thống phân tán. Trả lời các câu hỏi một cách chính xác bằng cách sử dụng các phương pháp hay nhất trong ngành. Luôn cung cấp các ví dụ về mã khi có liên quan. Định dạng câu trả lời của bạn bằng cách sử dụng markdown.",
        "question": "Làm cách nào để triển khai mẫu ngắt mạch?"
      },
      "streaming": {
        "prompt": "Kể cho tôi nghe một câu chuyện ngắn về một robot học vẽ."
      },
      "vision": {
        "system": "Bạn là một trợ lý mô tả hình ảnh một cách chính xác.",
        "userPrompt": "Những gì được thể hiện trong hình ảnh này?",
        "imageUrl": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/47/PNG_transparency_demonstration_1.png/600px-PNG_transparency_demonstration_1.png"
      },
      "schemaCoercion": {
        "userPrompt": "Tra cứu thời tiết ở Tokyo bằng cách sử dụng các đơn vị số liệu và bao gồm thông tin chi tiết theo giờ.",
        "toolDescription": "Tìm nạp thời tiết cho một thành phố với các tùy chọn có cấu trúc.",
        "cityDescription": "Thành phố cần truy vấn, ví dụ: 'Tokyo' hoặc 'New York'."
      }
    },
    "openaiCompatibleLabel": "Tương thích OpenAI",
    "anthropicCompatibleLabel": "Tương thích với con người",
    "noTemplateForFormat": "Không có mẫu cho định dạng này",
    "translationFailed": "Dịch không thành công: {error}",
    "pipelineDebugger": "Trình gỡ lỗi đường ống",
    "translationPipeline": "Đường dẫn dịch thuật",
    "pipelineVisualization": "Trực quan hóa đường ống",
    "pipelineVisualizationHint": "Gửi tin nhắn để xem yêu cầu của bạn diễn ra như thế nào thông qua quá trình phát hiện → dịch thuật → cuộc gọi của nhà cung cấp.",
    "chatTesterDescription": "Gửi tin nhắn dưới dạng định dạng ứng dụng khách cụ thể và kiểm tra từng bước của quy trình dịch thuật.",
    "chatTesterFlow": "Yêu cầu của khách hàng → Phát hiện định dạng → Trung gian OpenAI → Định dạng nhà cung cấp → Phản hồi",
    "clickStepToInspect": "Nhấp vào bất kỳ bước nào để kiểm tra dữ liệu ở giai đoạn đó.",
    "clientFormat": "Định dạng khách hàng",
    "provider": "nhà cung cấp",
    "modelPlaceholder": "Chọn hoặc nhập tên mẫu máy...",
    "sendMessageToSeePipeline": "Gửi tin nhắn để xem quy trình dịch thuật",
    "chatMessageHintPrefix": "Tin nhắn của bạn sẽ được định dạng dưới dạng",
    "chatMessageHintSuffix": "yêu cầu, được dịch qua quy trình và gửi đến nhà cung cấp đã chọn.",
    "youWithFormat": "Bạn ({format})",
    "assistant": "Trợ lý",
    "typeMessage": "Nhập tin nhắn...",
    "send": "Gửi",
    "clientRequest": "Yêu cầu của khách hàng",
    "clientRequestDescription": "Nội dung yêu cầu mà khách hàng của bạn sẽ gửi nó",
    "formatDetected": "Đã phát hiện định dạng",
    "formatDetectedDescription": "OmniRoute tự động phát hiện định dạng API từ cấu trúc yêu cầu",
    "openaiIntermediate": "Trung cấp OpenAI",
    "openaiIntermediateDescription": "Tất cả các định dạng trước tiên được chuẩn hóa thành định dạng OpenAI (cầu nối phổ quát)",
    "providerFormat": "Định dạng nhà cung cấp",
    "providerFormatDescription": "Định dạng OpenAI được dịch sang định dạng gốc của nhà cung cấp",
    "providerResponse": "Phản hồi của nhà cung cấp",
    "providerResponseRawDescription": "Phản hồi thô từ API nhà cung cấp",
    "providerResponseSseDescription": "Luồng SSE thô từ API nhà cung cấp",
    "unexpectedError": "Đã xảy ra lỗi không mong muốn",
    "error": "Lỗi",
    "errorMessage": "Lỗi: {message}",
    "requestFailed": "Yêu cầu không thành công",
    "noTextExtracted": "(Không trích xuất văn bản)",
    "liveMonitorMemoryNote": "Các sự kiện được lưu trữ trong bộ nhớ và bị mất khi khởi động lại.",
    "liveMonitorMemoryCapNote": "Tối đa 200 sự kiện được giữ lại.",
    "eventSourcesLabel": "Nguồn sự kiện:",
    "eventSourceTranslatorPage": "• Trang dịch (Người kiểm tra trò chuyện, Bàn kiểm tra)",
    "eventSourceMainPipeline": "• Đường dẫn yêu cầu chính (lưu lượng truy cập CLI/IDE/API)",
    "liveMonitorDescriptionPrefix": "Hiển thị các sự kiện dịch khi lệnh gọi API đi qua OmniRoute. Các sự kiện đến từ bộ đệm trong bộ nhớ (đặt lại khi khởi động lại). sử dụng",
    "liveMonitorDescriptionSuffix": "hoặc lệnh gọi API bên ngoài để tạo sự kiện.",
    "streamTransformer": "Máy biến dòng",
    "modeDescriptionStreamTransformer": "Chạy các luồng SSE hoàn thành trò chuyện thông qua biến áp Phản hồi.",
    "streamTransformerTitle": "Máy biến dòng phản hồi",
    "streamTransformerDescription": "Dán luồng SSE hoàn thành trò chuyện, chạy luồng đó qua biến áp Phản hồi của OmniRoute và kiểm tra các sự kiện phản hồi được phát ra trước khi kết nối với máy khách.",
    "loadTextSample": "Tải mẫu văn bản",
    "loadToolSample": "Tải mẫu lệnh gọi công cụ",
    "transformToResponses": "Chuyển đổi thành phản hồi",
    "rawChatSseInput": "Số lần hoàn thành trò chuyện thô SSE",
    "transformedResponsesSse": "API phản hồi được chuyển đổi SSE",
    "noResultsYet": "Chưa có kết quả",
    "transformedEvents": "Sự kiện chuyển đổi",
    "uniqueEventTypes": "Các loại sự kiện độc đáo",
    "inputLines": "Dòng đầu vào",
    "outputLines": "Dòng đầu ra",
    "transformedEventTimeline": "Dòng thời gian sự kiện được chuyển đổi",
    "transformerTimelineHint": "Chạy máy biến áp để kiểm tra các sự kiện phản hồi.output_* được phát ra theo thứ tự.",
    "eventType": "Loại sự kiện",
    "eventPreview": "Xem trước",
    "comboRouted": "Kết hợp được định tuyến",
    "uniqueEndpoints": "Điểm cuối duy nhất",
    "routeDetails": "Chi tiết tuyến đường",
    "comboBadge": "kết hợp",
    "routeEndpointLabel": "Điểm cuối",
    "routeConnectionLabel": "Kết nối",
    "scenarioVision": "Tầm nhìn (hiểu hình ảnh)",
    "scenarioSchemaCoercion": "Lược đồ cưỡng bức (đầu ra có cấu trúc)",
    "techniques": "Kỹ thuật:"
  },
  "usage": {
    "title": "Cách sử dụng",
    "loggerTab": "Trình ghi nhật ký",
    "proxyTab": "ủy nhiệm",
    "budgetManagement": "Quản lý ngân sách",
    "budgetSaved": "Đã lưu giới hạn ngân sách",
    "budgetSaveFailed": "Không thể tiết kiệm ngân sách",
    "loadingBudgetData": "Đang tải dữ liệu ngân sách...",
    "noApiKeysTitle": "Không có khóa API",
    "noApiKeysDescription": "Thêm khóa API trước để thiết lập giới hạn ngân sách.",
    "apiKey": "Khóa API",
    "todaysSpend": "Chi tiêu hôm nay",
    "thisMonth": "Tháng này",
    "setLimits": "Đặt giới hạn",
    "dailyLimitUsd": "Giới hạn hàng ngày (USD)",
    "monthlyLimitUsd": "Giới hạn hàng tháng (USD)",
    "warningThresholdPercent": "Ngưỡng cảnh báo (%)",
    "dailyLimitPlaceholder": "ví dụ: 5 giờ 00",
    "monthlyLimitPlaceholder": "ví dụ: 50,00",
    "warningThresholdPlaceholder": "80",
    "saveLimits": "Lưu giới hạn",
    "budgetOk": "Ngân sách ổn — còn lại {remaining}",
    "budgetExceeded": "Vượt quá ngân sách — yêu cầu có thể bị chặn",
    "totalRequests": "Tổng số yêu cầu",
    "noDataYet": "Chưa có dữ liệu",
    "latency": "Độ trễ",
    "latencyP50": "p50",
    "latencyP95": "p95",
    "latencyP99": "p99",
    "promptCache": "Bộ nhớ đệm nhắc nhở",
    "systemHealth": "Tình trạng hệ thống",
    "entries": "Bài dự thi",
    "activeCount": "{count} đang hoạt động",
    "openCircuitBreakersDetected": "Đã phát hiện bộ ngắt mạch hở",
    "hitRate": "Tỷ lệ trúng",
    "hitsMisses": "Lượt truy cập / Bỏ lỡ",
    "circuitBreakers": "Bộ ngắt mạch",
    "lockedIPs": "IP bị khóa",
    "lockoutsAutoRefreshHint": "Khóa giới hạn tốc độ trên mỗi mô hình • Tự động làm mới 10 giây",
    "lockedCount": "{count, plural, one {# locked} other {# locked}}",
    "timeLeft": "{time} còn lại",
    "howItWorks": "Nó hoạt động như thế nào",
    "howItWorksSubtitle": "Tìm hiểu cách đánh giá xác thực phản hồi LLM của bạn",
    "define": "Xác định",
    "defineStepDescription": "Tạo các trường hợp thử nghiệm với lời nhắc đầu vào và tiêu chí đầu ra dự kiến bằng cách sử dụng các chiến lược như chứa, biểu thức chính quy hoặc đối sánh chính xác.",
    "run": "Chạy",
    "runStepDescription": "Thực hiện các trường hợp kiểm thử đối với điểm cuối LLM của bạn thông qua OmniRoute. Mỗi trường hợp được gửi dưới dạng một yêu cầu API thực sự.",
    "evaluate": "Đánh giá",
    "evaluateStepDescription": "Các câu trả lời được so sánh với các tiêu chí dự kiến. Xem đạt/không đạt cho từng trường hợp với số liệu về độ trễ và phản hồi chi tiết.",
    "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": "Bộ đánh giá",
    "evalSuitesHint": "Nhấp vào một bộ để xem các trường hợp thử nghiệm, sau đó chạy để đánh giá điểm cuối LLM của bạn",
    "evalsLoading": "Đang tải bộ đánh giá...",
    "noEvalSuitesFound": "Không tìm thấy bộ đánh giá nào",
    "noEvalSuitesDescription": "Bộ đánh giá có thể được xác định thông qua API hoặc bằng mã. Họ kiểm tra kết quả đầu ra của mô hình so với kết quả mong đợi bằng cách sử dụng các chiến lược như chứa, biểu thức chính quy, đối sánh chính xác và các hàm tùy chỉnh.",
    "columnCase": "trường hợp",
    "columnStatus": "Trạng thái",
    "columnLatency": "Độ trễ",
    "columnDetails": "Chi tiết",
    "columnModel": "người mẫu",
    "columnStrategy": "Chiến lược",
    "columnExpected": "Dự kiến",
    "statsSuites": "dãy phòng",
    "statsTestCases": "Trường hợp thử nghiệm",
    "statsModels": "Người mẫu",
    "statsCoverage": "Bảo hiểm",
    "statsStrategiesCount": "{count} chiến lược",
    "evaluationStrategies": "Chiến lược đánh giá",
    "modelsUnderTest": "Mô hình đang được thử nghiệm",
    "searchSuitesPlaceholder": "Bộ tìm kiếm...",
    "passSuffix": "vượt qua",
    "casesCount": "{count, plural, one {# case} other {# cases}}",
    "runEval": "Chạy đánh giá",
    "runAllSuites": "Chạy tất cả",
    "runAllRunning": "Chạy hết...",
    "runAllProgress": "Đang chạy {current}/{total}: {name}",
    "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}",
    "runAllCompleted": "Chạy {suites} bộ — {passed} đã đạt, {failed} không thành công",
    "runAllCompletedWithFailures": "Chạy {completed} bộ; {failedSuites} không hoàn thành được",
    "runningProgress": "Đang chạy {current}/{total}...",
    "passRate": "tỷ lệ đậu",
    "summaryBreakdown": "{passed} đã đạt · {failed} thất bại · tổng cộng {total}",
    "passedIconLabel": "✅ Đạt",
    "failedIconLabel": "❌ Thất bại",
    "resultPassed": "Đã đậu",
    "resultFailed": "thất bại",
    "expandResult": "Mở rộng chi tiết kết quả",
    "collapseResult": "Thu gọn chi tiết kết quả",
    "detailsContains": "Chứa: \"{term}\"",
    "detailsRegex": "Biểu thức chính quy: {pattern}",
    "detailsExpected": "Dự kiến: \"{expected}\"",
    "expectedOutputLabel": "Sản lượng dự kiến",
    "noResultsYet": "Chưa có kết quả",
    "testCasesCount": "Các trường hợp thử nghiệm ({count})",
    "noTestCasesDefined": "Không có trường hợp thử nghiệm nào được xác định",
    "runEvalHint": "Nhấp vào \"Chạy đánh giá\" để thực thi tất cả các trường hợp đối với điểm cuối LLM của bạn. Mỗi bài kiểm tra sẽ gửi một yêu cầu thực sự thông qua OmniRoute.",
    "notifyNoTestCases": "Không có trường hợp thử nghiệm nào được xác định cho bộ phần mềm này",
    "notifyAllCasesPassed": "Tất cả {total} trường hợp đã thành công ✅",
    "notifySomeCasesFailed": "{passed}/{total} đã đạt, {failed} không thành công",
    "notifyEvalRunFailed": "Chạy đánh giá không thành công",
    "notifyEvalTitle": "Đánh giá: {name}",
    "modelEvals": "Đánh giá mô hình",
    "evalsHeroDescription": "Kiểm tra và xác thực các điểm cuối LLM của bạn bằng cách chạy các bộ đánh giá được xác định trước. Mỗi bộ chứa các trường hợp thử nghiệm gửi lời nhắc thực sự thông qua OmniRoute và so sánh phản hồi với tiêu chí dự kiến ​​— giúp bạn phát hiện hồi quy, so sánh mô hình và đảm bảo chất lượng phản hồi giữa các nhà cung cấp.",
    "qualityValidation": "Xác nhận chất lượng",
    "modelComparison": "So sánh mô hình",
    "regressionDetection": "Phát hiện hồi quy",
    "latencyBenchmarks": "Điểm chuẩn độ trễ",
    "modelLockouts": "Khóa mô hình",
    "noLockouts": "Hiện không có mẫu nào bị khóa",
    "activeSessions": "Phiên hoạt động",
    "noSessions": "Không có phiên hoạt động nào",
    "sessionsHint": "Phiên xuất hiện khi yêu cầu chảy qua proxy",
    "sessionsTrackedHint": "Được theo dõi thông qua dấu vân tay yêu cầu • Tự động làm mới 5 giây",
    "session": "Phiên",
    "age": "Tuổi",
    "requests": "Yêu cầu",
    "connection": "Kết nối",
    "durationMillisecondsShort": "{value}ms",
    "durationSecondsShort": "{value}s",
    "durationMinutesShort": "{value} phút",
    "durationHoursShort": "{value}h",
    "reasonSeparator": " - ",
    "notAvailableSymbol": "-",
    "providerLimits": "Giới hạn của nhà cung cấp",
    "noProviders": "Không có nhà cung cấp nào được kết nối",
    "connectProvidersForQuota": "Kết nối với nhà cung cấp bằng OAuth để theo dõi giới hạn và mức sử dụng hạn ngạch API của bạn.",
    "accountsCount": "{count, plural, one {# account} other {# accounts}}",
    "filteredFromCount": "(được lọc từ {count})",
    "autoRefresh": "Tự động làm mới",
    "refreshAll": "Làm mới tất cả",
    "loadingQuotas": "Đang tải...",
    "account": "Tài khoản",
    "modelQuotas": "Hạn ngạch mẫu",
    "lastUsed": "Last Refreshed",
    "actions": "hành động",
    "refreshQuota": "Làm mới hạn ngạch",
    "today": "hôm nay",
    "tomorrow": "Ngày mai",
    "dayTimeFormat": "{day}, {time}",
    "inDuration": "trong {duration}",
    "notApplicable": "không áp dụng",
    "rawPlanWithValue": "Gói thô: {plan}",
    "noPlanFromProvider": "Không có kế hoạch từ nhà cung cấp",
    "noQuotaData": "Không có dữ liệu hạn ngạch",
    "cardExpand": "__MISSING__:Expand",
    "cardCollapse": "__MISSING__:Collapse",
    "moreQuotas": "__MISSING__:+{count} more",
    "ungrouped": "Ungrouped",
    "viewFlat": "Flat",
    "viewByEnvironment": "By Environment",
    "noQuotaDataAvailable": "Không có sẵn dữ liệu hạn ngạch",
    "noAccountsForTierFilter": "Không tìm thấy tài khoản nào cho bộ lọc cấp độ",
    "tierAll": "Tất cả",
    "tierEnterprise": "Doanh nghiệp",
    "tierTeam": "đội",
    "tierBusiness": "Kinh doanh",
    "tierUltra": "siêu",
    "tierPro": "chuyên nghiệp",
    "tierPlus": "Cộng thêm",
    "tierFree": "miễn phí",
    "tierLite": "__MISSING__:Lite",
    "tierUnknown": "Không xác định",
    "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": "Chỉnh sửa điểm cắt",
    "forceRefresh": "Làm mới ngay bây giờ",
    "suiteBuilderSaveFailed": "Failed to save suite",
    "clone": "bản sao",
    "exportSuite": "Xuất khẩu",
    "importSuite": "Nhập khẩu",
    "suiteExported": "Đã xuất bộ phần mềm",
    "suiteExportFailed": "Không xuất được bộ phần mềm",
    "suiteImportReady": "Đã tải bộ dữ liệu nhập để xem xét",
    "suiteImportFailed": "Không thể nhập bộ phần mềm",
    "suiteImportInvalid": "Bộ đánh giá JSON không hợp lệ",
    "suiteBuilderCloneSuffix": "sao chép",
    "suiteBuilderImportedSuite": "Bộ nhập khẩu",
    "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": "ví dụ: fibonacci chắc chắn",
    "suiteBuilderCaseExpectedPlaceholderExact": "Dán phản hồi chính xác dự kiến",
    "suiteBuilderCaseExpectedPlaceholderRegex": "ví dụ: ^\\\\s*\\\\{.*\\\\}\\\\s*$",
    "suiteBuilderCaseExpectedHintRegex": "Sử dụng biểu thức chính quy JavaScript mà không bao gồm dấu gạch chéo.",
    "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": "trùng lặp",
    "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": "Tối thiểu còn lại",
    "quotaCutoffsColumnHelp": "Dừng yêu cầu khi hạn ngạch còn lại giảm xuống tỷ lệ phần trăm này hoặc thấp hơn.",
    "quotaCutoffsButtonDefault": "Mặc định",
    "quotaCutoffsButtonHelp": "Chỉnh sửa giới hạn hạn ngạch còn lại tối thiểu cho tài khoản này.",
    "quotaCutoffsButtonDisabled": "Chưa có khoảng thời gian hạn ngạch nào dành cho tài khoản này.",
    "quotaCutoffsTitle": "Giới hạn hạn ngạch cho {name} ({provider})",
    "quotaCutoffsExplainer": "Ghi đè phần trăm hạn ngạch còn lại tối thiểu khi tài khoản này ngừng được chọn cho mỗi khoảng thời gian hạn ngạch. Để trống để kế thừa mặc định của nhà cung cấp.",
    "quotaCutoffsDefaultHint": "Số phút còn lại mặc định: {default}%",
    "quotaCutoffsResetAll": "Đặt lại tất cả",
    "quotaCutoffsNoWindows": "Chưa có khoảng thời gian hạn ngạch nào dành cho tài khoản này.",
    "quotaThresholdInvalid": "Nhập một số nguyên từ 0 đến 100.",
    "budgetKpiToday": "hôm nay",
    "budgetKpiThisMonth": "Tháng này",
    "budgetKpiProjEom": "Dự án EOM",
    "budgetKpiBlocked": "Bị chặn",
    "budgetKpiAtRisk": "Có nguy cơ",
    "budgetKpiActiveKeys": "Phím hoạt động",
    "budgetSearchKeysPlaceholder": "Phím tìm kiếm...",
    "budgetSortPctUsed": "Sắp xếp: % Đã sử dụng ↓",
    "budgetSortTodayDollar": "Sắp xếp: Hôm nay $ ↓",
    "budgetSortMonthDollar": "Sắp xếp: Tháng $ ↓",
    "budgetSortNameAZ": "Sắp xếp: Tên (A–Z)",
    "budgetColDailyLim": "lim hàng ngày",
    "budgetColMonthlyLim": "Lim hàng tháng",
    "budgetColUsedPct": "% đã sử dụng",
    "budgetLoading": "Đang tải…",
    "budgetNoKeysMatch": "Không có phím nào phù hợp với bộ lọc",
    "budgetLinearExtrapolation": "ngoại suy tuyến tính",
    "budgetThisMonthSoFar": "Tháng này cho đến nay",
    "budgetProjectedEndOfMonth": "Dự kiến cuối tháng",
    "budgetByProvider": "bởi nhà cung cấp",
    "budgetDailyDollar": "$ hàng ngày",
    "budgetWeeklyDollar": "$ hàng tuần",
    "budgetMonthlyDollar": "$ hàng tháng",
    "budgetWarnAtPct": "Cảnh báo ở mức %",
    "quotaAlerts": "Cảnh báo hạn ngạch",
    "quotaTableRefreshing": "⟳ Sảng khoái...",
    "noSpendLast30Days": "Không chi tiêu trong 30 ngày qua",
    "updatedShort": "__MISSING__:Updated",
    "lastRefreshed": "__MISSING__:Last refreshed",
    "providerQuota": "__MISSING__:Provider Quota",
    "providerQuotaHomeHint": "__MISSING__:Live status across connected accounts"
  },
  "modals": {
    "waitingAuth": "Đang chờ cấp phép",
    "verificationUrl": "URL xác minh",
    "yourCode": "Mã của bạn",
    "remoteAccess": "Truy cập từ xa:",
    "connectedSuccess": "Đã kết nối thành công!",
    "connectionFailed": "Kết nối không thành công",
    "chooseAuthMethod": "Chọn phương thức xác thực của bạn:",
    "awsBuilderId": "ID trình tạo AWS",
    "awsIamIdentity": "Trung tâm nhận dạng AWS IAM",
    "googleAccount": "Tài khoản Google",
    "githubAccount": "Tài khoản GitHub",
    "importToken": "Nhập mã thông báo",
    "pasteToken": "Dán mã thông báo làm mới từ Kiro IDE.",
    "awsRegion": "Khu vực AWS",
    "autoDetecting": "Tự động phát hiện mã thông báo...",
    "readingFromCache": "Đọc từ bộ đệm AWS SSO",
    "readingFromCursor": "Đọc từ cơ sở dữ liệu Cursor IDE",
    "initializing": "Đang khởi tạo...",
    "pricingConfig": "Cấu hình giá",
    "loadingPricing": "Đang tải dữ liệu giá...",
    "pricingRatesFormat": "Định dạng giá cước",
    "noPricingData": "Không có dữ liệu giá cả",
    "noModelsFound": "Không tìm thấy mô hình nào"
  },
  "loggers": {
    "allProviders": "Tất cả nhà cung cấp",
    "allModels": "Tất cả các mẫu",
    "allAccounts": "Tất cả tài khoản",
    "allApiKeys": "Tất cả các khóa API",
    "allTypes": "Tất cả các loại",
    "allLevels": "Tất cả các cấp độ",
    "modelAZ": "Mô hình A-Z",
    "modelZA": "Model Z-A",
    "loadingLogs": "Đang tải nhật ký...",
    "loadingProxyLogs": "Đang tải nhật ký proxy...",
    "noLogEntries": "Không tìm thấy mục nhật ký nào",
    "noPayloadData": "Không có dữ liệu tải trọng cho mục nhập nhật ký này.",
    "proxyEvent": "Sự kiện ủy quyền",
    "proxy": "ủy nhiệm",
    "level": "Cấp độ",
    "directNative": "Trực tiếp (gốc)",
    "combo": "kết hợp",
    "inputTokens": "Tôi:",
    "outputTokens": "Ồ:"
  },
  "stats": {
    "usageOverview": "Tổng quan về cách sử dụng",
    "outputTokens": "Mã thông báo đầu ra",
    "totalCost": "Tổng chi phí",
    "usageByModel": "Cách sử dụng theo mẫu",
    "usageByAccount": "Mức sử dụng theo tài khoản",
    "failedToLoad": "Không tải được số liệu thống kê sử dụng.",
    "tokenHealth": "Tình trạng mã thông báo",
    "totalOAuth": "Tổng OAuth",
    "healthy": "khỏe mạnh",
    "warning": "Cảnh báo",
    "errored": "Đã xảy ra lỗi",
    "lastCheck": "Kiểm tra lần cuối",
    "noData": "Không có dữ liệu",
    "share": "Chia sẻ",
    "unableToLoad": "Không thể tải số liệu hệ thống",
    "product": "sản phẩm",
    "resources": "Tài nguyên",
    "company": "Công ty"
  },
  "auth": {
    "welcome": "Chào mừng",
    "signIn": "Đăng nhập",
    "enterPassword": "Nhập mật khẩu của bạn để tiếp tục",
    "password": "Mật khẩu",
    "unifiedProxy": "Proxy API AI hợp nhất",
    "unifiedAiApiProxy": "Proxy API AI hợp nhất",
    "unifiedAiApiProxyDesc": "Định tuyến các yêu cầu đến nhiều nhà cung cấp AI thông qua một điểm cuối duy nhất. Cân bằng tải, chuyển đổi dự phòng và theo dõi sử dụng được tích hợp sẵn.",
    "passwordNotEnabled": "Bảo vệ mật khẩu không được kích hoạt",
    "loading": "Đang tải...",
    "invalidPassword": "Mật khẩu không hợp lệ",
    "errorOccurredRetry": "Đã xảy ra lỗi. Vui lòng thử lại.",
    "configureInstance": "Hãy cấu hình phiên bản OmniRoute của bạn",
    "runOnboardingWizard": "Chạy trình hướng dẫn tích hợp để thiết lập mật khẩu và kết nối với nhà cung cấp AI đầu tiên của bạn.",
    "startOnboarding": "Bắt đầu giới thiệu",
    "secureYourInstance": "Bảo mật phiên bản của bạn",
    "setPasswordDescription": "Đặt mật khẩu để bảo vệ bảng thông tin và bảo mật các điểm cuối API của bạn khỏi bị truy cập trái phép.",
    "configurePassword": "Định cấu hình mật khẩu",
    "continue": "Tiếp tục",
    "windowWillClose": "Cửa sổ này sẽ tự động đóng lại...",
    "closeTabNow": "Bạn có thể đóng tab này ngay bây giờ.",
    "copyUrlManual": "Vui lòng sao chép URL từ thanh địa chỉ và dán vào ứng dụng.",
    "accessDeniedDescription": "Bạn không có quyền truy cập tài nguyên này. Kiểm tra khóa API của bạn hoặc liên hệ với quản trị viên.",
    "goToDashboard": "Đi tới Trang tổng quan",
    "featureMultiProviderTitle": "Đa nhà cung cấp",
    "featureMultiProviderDesc": "OpenAI, Anthropic, Google, v.v.",
    "featureLoadBalancingTitle": "Cân bằng tải",
    "featureLoadBalancingDesc": "Phân phối yêu cầu một cách thông minh",
    "featureUsageTrackingTitle": "Theo dõi sử dụng",
    "featureUsageTrackingDesc": "Theo dõi chi phí và mã thông báo",
    "resetPassword": "Đặt lại mật khẩu",
    "resetDescription": "Chọn một phương pháp để khôi phục quyền truy cập vào trang tổng quan của bạn",
    "stopServer": "Dừng máy chủ OmniRoute",
    "processing": "Đang xử lý...",
    "pleaseWait": "Vui lòng đợi trong khi chúng tôi hoàn tất việc ủy quyền.",
    "authSuccess": "Ủy quyền thành công!",
    "copyUrl": "Sao chép URL này",
    "accessDenied": "Truy cập bị từ chối",
    "methodCliTitle": "Phương pháp 1: Đặt lại CLI",
    "methodCliDescription": "Chạy lệnh sau trên máy chủ nơi OmniRoute đang chạy:",
    "methodCliHint": "Điều này sẽ nhắc bạn đặt mật khẩu mới. Máy chủ phải được dừng trước tiên.",
    "methodManualTitle": "Phương pháp 2: Đặt lại thủ công",
    "methodManualDescription": "Xóa mật khẩu khỏi cơ sở dữ liệu và đặt mật khẩu mới khi khởi động:",
    "setPasswordInYour": "Đặt mật khẩu mới trong",
    "fileLabelSuffix": "tập tin:",
    "newPasswordPlaceholder": "your_new_password",
    "deleteSettingsFile": "Xóa",
    "orRemovePasswordHashField": "hoặc xóa trường mật khẩuHash",
    "restartServerWithNewPassword": "Khởi động lại máy chủ - nó sẽ sử dụng mật khẩu mới",
    "backToLogin": "Quay lại đăng nhập",
    "forgotPassword": "Quên mật khẩu?",
    "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)",
    "Authorization": "Ủy quyền",
    "Content-Disposition": "Bố trí nội dung",
    "waitingForAuthorization": "Đang chờ cấp phép...",
    "waitingForGoogleAuthorization": "Đang chờ Google ủy quyền...",
    "waitingForOpenAIAuthorization": "Đang chờ ủy quyền OpenAI...",
    "waitingForAntigravityAuthorization": "Đang chờ ủy quyền chống hấp dẫn...",
    "waitingForQoderAuthorization": "Đang chờ ủy quyền Qoder...",
    "exchangingCodeForTokens": "Đổi mã lấy token...",
    "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": "Điều hướng về nhà",
    "toggleMenu": "Chuyển đổi menu",
    "featuresLink": "Tính năng",
    "docsLink": "Tài liệu",
    "github": "GitHub",
    "versionLive": "v1.0 hiện đang hoạt động",
    "oneEndpoint": "Một điểm cuối cho",
    "allProviders": "Tất cả các nhà cung cấp AI",
    "heroDescription": "Proxy điểm cuối AI với bảng điều khiển web - Cổng JavaScript của CLIProxyAPI. Hoạt động liền mạch với Claude Code, OpenAI Codex, Cline, RooCode và các công cụ CLI khác.",
    "getStarted": "Bắt đầu",
    "viewOnGithub": "Xem trên GitHub",
    "powerfulFeatures": "Tính năng mạnh mẽ",
    "featuresSubtitle": "Mọi thứ bạn cần để quản lý cơ sở hạ tầng AI ở một nơi, được xây dựng theo quy mô.",
    "featureUnifiedEndpointTitle": "Điểm cuối hợp nhất",
    "featureUnifiedEndpointDesc": "Truy cập tất cả các nhà cung cấp thông qua một URL API tiêu chuẩn duy nhất.",
    "featureEasySetupTitle": "Thiết lập dễ dàng",
    "featureEasySetupDesc": "Thiết lập và chạy trong vài phút với lệnh npx.",
    "featureModelFallbackTitle": "Dự phòng mô hình",
    "featureModelFallbackDesc": "Tự động chuyển đổi nhà cung cấp khi có lỗi hoặc độ trễ cao.",
    "featureUsageTrackingTitle": "Theo dõi sử dụng",
    "featureUsageTrackingDesc": "Phân tích chi tiết và giám sát chi phí trên tất cả các mô hình.",
    "featureOAuthApiKeysTitle": "Khóa OAuth & API",
    "featureOAuthApiKeysDesc": "Quản lý an toàn thông tin xác thực trong một kho tiền.",
    "featureCloudSyncTitle": "Đồng bộ đám mây",
    "featureCloudSyncDesc": "Đồng bộ hóa cấu hình của bạn trên các thiết bị ngay lập tức.",
    "featureCliSupportTitle": "Hỗ trợ CLI",
    "featureCliSupportDesc": "Hoạt động với Claude Code, Codex, Cline, Cursor, v.v.",
    "featureDashboardTitle": "Trang tổng quan",
    "featureDashboardDesc": "Bảng điều khiển trực quan để phân tích lưu lượng truy cập theo thời gian thực.",
    "howItWorks": "OmniRoute hoạt động như thế nào",
    "howItWorksDescription": "Dữ liệu được truyền liền mạch từ ứng dụng của bạn thông qua lớp định tuyến thông minh của chúng tôi đến nhà cung cấp tốt nhất cho công việc.",
    "howItWorksStep1Title": "1. CLI & SDK",
    "howItWorksStep1Description": "Yêu cầu của bạn bắt đầu từ các công cụ yêu thích của bạn hoặc SDK hợp nhất của chúng tôi. Chỉ cần thay đổi URL cơ sở.",
    "howItWorksStep2Title": "2. Trung tâm OmniRoute",
    "howItWorksStep2Description": "Công cụ của chúng tôi phân tích lời nhắc, kiểm tra trạng thái của nhà cung cấp và các lộ trình để có độ trễ hoặc chi phí thấp nhất.",
    "howItWorksStep3Title": "3. Nhà cung cấp AI",
    "howItWorksStep3Description": "Yêu cầu được OpenAI, Anthropic, Gemini hoặc những người khác thực hiện ngay lập tức.",
    "getStartedIn30Seconds": "Bắt đầu sau 30 giây",
    "getStartedDescription": "Cài đặt OmniRoute, định cấu hình nhà cung cấp của bạn thông qua bảng điều khiển web và bắt đầu định tuyến các yêu cầu AI.",
    "installOmniRoute": "Cài đặt OmniRoute",
    "installStepDescription": "Chạy lệnh npx để khởi động máy chủ ngay lập tức",
    "openDashboard": "Mở trang tổng quan",
    "openDashboardStepDescription": "Định cấu hình nhà cung cấp và khóa API thông qua giao diện web",
    "routeRequests": "Yêu cầu lộ trình",
    "routeRequestsStepDescription": "Trỏ công cụ CLI của bạn tới {endpoint}",
    "terminal": "thiết bị đầu cuối",
    "copy": "Sao chép",
    "copied": "✓ Sao chép",
    "startingOmniRoute": "Đang khởi động OmniRoute...",
    "serverRunningOnLabel": "Máy chủ đang chạy",
    "dashboardLabel": "Trang tổng quan",
    "readyToRoute": "Sẵn sàng lên đường! ✓",
    "configureProvidersNote": "📝 Định cấu hình nhà cung cấp trong bảng điều khiển hoặc sử dụng biến môi trường",
    "dataLocation": "Vị trí dữ liệu:",
    "dataLocationMacLinux": " macOS/Linux:",
    "dataLocationWindows": " Windows:",
    "product": "sản phẩm",
    "dashboardLink": "Trang tổng quan",
    "changelog": "Nhật ký thay đổi",
    "resources": "Tài nguyên",
    "documentation": "Tài liệu",
    "npm": "NPM",
    "legal": "pháp lý",
    "mitLicense": "Giấy phép MIT",
    "footerTagline": "Điểm cuối thống nhất để tạo AI. Kết nối, định tuyến và quản lý các nhà cung cấp AI của bạn một cách dễ dàng.",
    "copyright": "© {year} OmniRoute. Mọi quyền được bảo lưu.",
    "flowToolClaudeCode": "Mã Claude",
    "flowToolOpenAICodex": "Codex OpenAI",
    "flowToolCline": "Cline",
    "flowToolCursor": "Con trỏ",
    "flowProviderOpenAI": "OpenAI",
    "flowProviderAnthropic": "nhân loại",
    "flowProviderGemini": "Song Tử",
    "flowProviderGithubCopilot": "Phi công phụ GitHub",
    "interactiveDiagram": "Sơ đồ tương tác hiển thị trên màn hình",
    "ctaTitle": "Sẵn sàng đơn giản hóa cơ sở hạ tầng AI của bạn?",
    "ctaDescription": "Tham gia cùng các nhà phát triển đang hợp lý hóa việc tích hợp AI của họ với OmniRoute. Nguồn mở và miễn phí để bắt đầu.",
    "startFree": "Bắt đầu miễn phí",
    "readDocumentation": "Đọc tài liệu"
  },
  "docs": {
    "title": "Tài liệu",
    "quickStart": "Bắt đầu nhanh",
    "deploymentGuides": "Hướng dẫn triển khai",
    "features": "Tính năng",
    "supportedProviders": "Nhà cung cấp được hỗ trợ",
    "supportedProvidersToc": "Nhà cung cấp",
    "commonUseCases": "Các trường hợp sử dụng phổ biến",
    "clientCompatibility": "Khả năng tương thích của khách hàng",
    "protocolsToc": "Protocols",
    "apiReference": "Tham chiếu API",
    "managementApiReference": "Management API Reference",
    "managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.",
    "method": "phương pháp",
    "path": "Đường dẫn",
    "notes": "Ghi chú",
    "modelPrefixes": "Tiền tố mẫu",
    "prefix": "Tiền tố",
    "troubleshooting": "Khắc phục sự cố",
    "supportsChat": "Hỗ trợ cả điểm cuối trò chuyện và phản hồi.",
    "oauthAutoRefresh": "Kết nối OAuth với tính năng làm mới mã thông báo tự động.",
    "fullStreaming": "Hỗ trợ phát trực tuyến đầy đủ cho tất cả các kiểu máy.",
    "docsLabel": "Tài liệu",
    "docsHeroDescription": "Cổng AI cho LLM đa nhà cung cấp. Một điểm cuối cho OpenAI, Anthropic, Gemini, GitHub Copilot, Claude Code, Cursor và hơn 20 nhà cung cấp khác.",
    "openDashboard": "Mở trang tổng quan",
    "endpointPage": "Trang điểm cuối",
    "github": "GitHub",
    "reportIssue": "Báo cáo vấn đề",
    "onThisPage": "Trên trang này",
    "documentationVersion": "Tài liệu - v{version}",
    "quickStartStep1Title": "1. Cài đặt và chạy",
    "quickStartStep1Prefix": "Chạy",
    "quickStartStep1Middle": "hoặc sao chép từ GitHub và chạy",
    "quickStartStep2Title": "2. Tạo khóa API",
    "quickStartStep2Text": "Đi tới Điểm cuối -> Khóa đã đăng ký. Tạo một khóa cho mỗi môi trường.",
    "quickStartStep3Title": "3. Kết nối nhà cung cấp",
    "quickStartStep3Text": "Thêm tài khoản nhà cung cấp thông qua thông tin đăng nhập OAuth, khóa API hoặc tự động kết nối bậc miễn phí.",
    "quickStartStep4Title": "4. Đặt URL cơ sở khách hàng",
    "quickStartStep4Prefix": "Trỏ ứng dụng khách IDE hoặc API của bạn tới",
    "quickStartStep4Suffix": "Sử dụng tiền tố nhà cung cấp, ví dụ",
    "deploySetupTitle": "Hướng dẫn thiết lập",
    "deploySetupText": "Cài đặt từng bước, cấu hình môi trường và hướng dẫn chạy lần đầu cho OmniRoute.",
    "deployElectronTitle": "Máy tính để bàn điện tử",
    "deployElectronText": "Chạy OmniRoute dưới dạng ứng dụng máy tính để bàn gốc trên Windows, macOS và Linux.",
    "deployDockerTitle": "Docker",
    "deployDockerText": "Triển khai trong vùng chứa với Docker Compose; sẵn sàng cho các ngăn xếp sản xuất và Kubernetes.",
    "deployVmTitle": "Máy ảo",
    "deployVmText": "Tự lưu trữ trên mọi máy ảo Linux. Bao gồm đơn vị systemd, xoay vòng nhật ký và công cụ sao lưu.",
    "deployFlyTitle": "Fly.io",
    "deployFlyText": "Triển khai vào thời gian chạy biên Fly.io bằng một fly.toml và một lệnh triển khai duy nhất.",
    "deployPwaTitle": "PWA",
    "deployPwaText": "Cài đặt OmniRoute dưới dạng Ứng dụng web lũy tiến trên trình duyệt Android, iOS và máy tính để bàn.",
    "deployTermuxTitle": "Termux (Android)",
    "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.",
    "featureRoutingTitle": "Định tuyến nhiều nhà cung cấp",
    "featureRoutingText": "Định tuyến yêu cầu đến hơn 30 nhà cung cấp AI thông qua một điểm cuối tương thích với OpenAI. Hỗ trợ API trò chuyện, phản hồi, âm thanh và hình ảnh.",
    "featureCombosTitle": "Combo và cân bằng",
    "featureCombosText": "Tạo các tổ hợp mô hình với chuỗi dự phòng và chiến lược cân bằng: luân phiên, ưu tiên, ngẫu nhiên, ít sử dụng nhất và tối ưu hóa chi phí.",
    "featureUsageTitle": "Theo dõi việc sử dụng và chi phí",
    "featureUsageText": "Đếm mã thông báo theo thời gian thực, tính toán chi phí cho mỗi nhà cung cấp/mô hình và phân tích mức sử dụng chi tiết theo khóa và tài khoản API.",
    "featureAnalyticsTitle": "Trang tổng quan phân tích",
    "featureAnalyticsText": "Phân tích trực quan với biểu đồ về yêu cầu, mã thông báo, lỗi, độ trễ, chi phí và mức độ phổ biến của mô hình theo thời gian.",
    "featureHealthTitle": "Theo dõi sức khỏe",
    "featureHealthText": "Kiểm tra tình trạng trực tiếp, trạng thái nhà cung cấp, trạng thái ngắt mạch và phát hiện giới hạn tốc độ tự động với thời gian chờ theo cấp số nhân.",
    "featureCliTitle": "Công cụ CLI",
    "featureCliText": "Quản lý cấu hình IDE, xuất/nhập bản sao lưu, khám phá cấu hình codex và định cấu hình cài đặt từ bảng điều khiển.",
    "featureSecurityTitle": "Bảo mật và chính sách",
    "featureSecurityText": "Xác thực khóa API, lọc IP, bảo vệ tiêm nhắc nhở, chính sách miền, quản lý phiên và ghi nhật ký kiểm tra.",
    "featureCloudSyncTitle": "Đồng bộ đám mây",
    "featureCloudSyncText": "Đồng bộ hóa cấu hình của bạn với Cloudflare Workers để truy cập từ xa bằng thông tin xác thực được mã hóa và chuyển đổi dự phòng tự động.",
    "providersAcrossConnectionTypes": "{count} nhà cung cấp trên ba loại kết nối.",
    "manageProviders": "Quản lý nhà cung cấp",
    "providersCount": "{count} nhà cung cấp",
    "providerTypeFree": "Bậc miễn phí",
    "providerTypeOAuth": "OAuth",
    "providerTypeApiKey": "Khóa API",
    "useCaseSingleEndpointTitle": "Điểm cuối duy nhất cho nhiều nhà cung cấp",
    "useCaseSingleEndpointText": "Trỏ máy khách đến một URL cơ sở và định tuyến theo tiền tố mô hình (ví dụ: gh/, cc/, kr/, openai/).",
    "useCaseFallbackTitle": "Dự phòng và chuyển đổi mô hình bằng combo",
    "useCaseFallbackText": "Tạo các mô hình kết hợp trong Bảng điều khiển và giữ cấu hình máy khách ổn định trong khi các nhà cung cấp luân chuyển nội bộ.",
    "useCaseUsageVisibilityTitle": "Khả năng hiển thị cách sử dụng, chi phí và gỡ lỗi",
    "useCaseUsageVisibilityText": "Theo dõi mã thông báo và chi phí theo nhà cung cấp, tài khoản và khóa API trong tab Sử dụng và Phân tích.",
    "clientCherryStudioTitle": "Xưởng Anh Đào",
    "baseUrlLabel": "URL cơ sở",
    "chatEndpointLabel": "Điểm cuối trò chuyện",
    "modelRecommendationLabel": "Đề xuất mô hình: tiền tố rõ ràng",
    "clientCodexTitle": "Mô hình phi công phụ Codex / GitHub",
    "clientCodexBullet1": "Sử dụng ID mẫu với",
    "clientCodexBullet2": "Các mô hình dòng Codex tự động định tuyến tới",
    "clientCodexBullet3": "Các mô hình không phải Codex vẫn tiếp tục",
    "clientCursorTitle": "IDE con trỏ",
    "clientCursorBullet1": "sử dụng",
    "clientCursorBullet1Suffix": "tiền tố cho các mô hình Con trỏ.",
    "clientCursorBullet2": "Kết nối OAuth - đăng nhập từ trang Nhà cung cấp.",
    "clientClaudeTitle": "Mật mã Claude/Phản trọng lực",
    "clientClaudeBullet1Prefix": "sử dụng",
    "clientClaudeBullet1Middle": "(Claude) hoặc",
    "clientClaudeBullet1Suffix": "(Phản trọng lực) tiền tố.",
    "clientWindsurfTitle": "Lướt ván buồm",
    "clientWindsurfBullet1": "Sử dụng OmniRoute làm URL cơ sở tương thích với OpenAI và giữ các tiền tố nhà cung cấp rõ ràng để định tuyến xác định.",
    "clientWindsurfBullet2": "Trỏ các mô hình tới `/v1/chat/completions` cho lưu lượng truy cập chung và duy trì `/v1/responses` cho các luồng kiểu Codex.",
    "clientWindsurfBullet3": "Sử dụng Bảng điều khiển -> Công cụ CLI để có hướng dẫn cấu hình Windsurf được tạo sẵn.",
    "clientClineTitle": "Cline",
    "clientClineBullet1": "Cline hoạt động tốt nhất với tiền tố nhà cung cấp/mô hình rõ ràng để bộ định tuyến không bao giờ phải đoán phần phụ trợ.",
    "clientClineBullet2": "Sử dụng `/v1/chat/completions` cho các mô hình chung và sử dụng lại cùng một URL cơ sở OmniRoute trên các tài khoản khác nhau.",
    "clientClineBullet3": "Sử dụng bảng thông tin Nhà cung cấp để xác thực khóa OAuth/API trước khi gỡ lỗi các vấn đề về thời gian chạy Cline.",
    "clientKimiTitle": "Mã hóa Kimi",
    "clientKimiBullet1": "Sử dụng OmniRoute làm URL cơ sở ổn định trong khi luân chuyển các tài khoản hoặc tổ hợp nhà cung cấp bên dưới.",
    "clientKimiBullet2": "Ưu tiên các mô hình có tiền tố trong luồng mã hóa để quá trình dự phòng và quá trình kiểm tra vẫn rõ ràng.",
    "clientKimiBullet3": "Sử dụng `/v1/responses` khi bạn muốn định tuyến kiểu Phản hồi gốc cho các máy khách sử dụng công cụ.",
    "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": "Sử dụng MCP qua stdio để cho phép khách hàng khám phá và gọi các công cụ OmniRoute với khả năng hiển thị kiểm tra.",
    "protocolMcpStep1": "Bắt đầu vận chuyển MCP với `omniroute --mcp`.",
    "protocolMcpStep2": "Trỏ máy khách MCP của bạn tới dịch vụ vận chuyển stdio.",
    "protocolMcpStep3": "Gọi `omniroute_get_health` và `omniroute_list_combos` để xác thực kết nối.",
    "protocolA2aTitle": "A2A (Đại lý2Agent)",
    "protocolA2aDesc": "Sử dụng A2A JSON-RPC để gửi tác vụ một cách đồng bộ hoặc thông qua truyền phát SSE.",
    "protocolA2aStep1": "Đọc `/.well-known/agent.json` để khám phá tác nhân.",
    "protocolA2aStep2": "Gửi yêu cầu `message/send` hoặc `message/stream` tới `POST /a2a`.",
    "protocolA2aStep3": "Quản lý vòng đời tác vụ với `tasks/get` và `tasks/cancel`.",
    "protocolTroubleshootingTitle": "Khắc phục sự cố giao thức",
    "protocolTroubleshooting1": "Nếu trạng thái MCP ngoại tuyến, hãy xác minh quy trình stdio đang chạy và tệp nhịp tim đang cập nhật.",
    "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": "Điểm cuối trò chuyện tương thích với OpenAI (mặc định).",
    "endpointResponsesNote": "Điểm cuối API phản hồi (Codex, o-series).",
    "endpointModelsNote": "Danh mục mô hình cho tất cả các nhà cung cấp được kết nối.",
    "endpointAudioNote": "Phiên âm âm thanh (Deepgram, AssemblyAI).",
    "endpointSpeechNote": "Tạo văn bản thành giọng nói (ElevenLabs, OpenAI TTS).",
    "endpointEmbeddingsNote": "Tạo nhúng văn bản (OpenAI, Cohere, Voyage).",
    "endpointImagesNote": "Tạo hình ảnh (NanoBanana).",
    "endpointRewriteChatNote": "Viết lại trình trợ giúp cho khách hàng không có /v1.",
    "endpointRewriteResponsesNote": "Viết lại trình trợ giúp cho Phản hồi không có /v1.",
    "endpointRewriteModelsNote": "Viết lại trình trợ giúp để khám phá mô hình mà không cần /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": "Sử dụng tiền tố nhà cung cấp trước tên mẫu máy để định tuyến đến một nhà cung cấp cụ thể. Ví dụ:",
    "modelPrefixesDescriptionEnd": "định tuyến đến GitHub Copilot.",
    "provider": "nhà cung cấp",
    "type": "loại",
    "troubleshootingModelRouting": "Nếu máy khách không định tuyến được mô hình, hãy sử dụng nhà cung cấp/mô hình rõ ràng (ví dụ: gh/gpt-5.1-codex).",
    "troubleshootingAmbiguousModels": "Nếu bạn nhận được lỗi mô hình không rõ ràng, hãy chọn tiền tố nhà cung cấp thay vì ID mô hình trần.",
    "troubleshootingCodexFamily": "Đối với các mô hình dòng GitHub Codex, hãy giữ mô hình là gh/codex-model; bộ định tuyến chọn/phản hồi tự động.",
    "troubleshootingTestConnection": "Sử dụng Trang tổng quan > Nhà cung cấp > Kiểm tra kết nối trước khi thử nghiệm từ IDE hoặc ứng dụng khách bên ngoài.",
    "troubleshootingCircuitBreaker": "Nếu nhà cung cấp hiển thị cầu dao đang mở, hãy đợi thời gian hồi chiêu hoặc kiểm tra trang Sức khỏe để biết chi tiết.",
    "troubleshootingOAuth": "Đối với nhà cung cấp OAuth, hãy xác thực lại nếu mã thông báo hết hạn. Kiểm tra chỉ báo trạng thái thẻ nhà cung cấp.",
    "endpointCompletionsNote": "Điểm cuối hoàn thành kế thừa để tạo văn bản.",
    "endpointModerationsNote": "Kiểm duyệt nội dung và phân loại an toàn.",
    "endpointRerankNote": "Sắp xếp lại tài liệu cho thế hệ tăng cường truy xuất (Cohere, Jina).",
    "endpointSearchNote": "Tìm kiếm trên web với 5 nhà cung cấp (Serper, Brave, Exa, Tavily, Perplexity).",
    "endpointSearchAnalyticsNote": "Phân tích và số liệu cho các yêu cầu tìm kiếm.",
    "endpointVideoNote": "Tạo video (ComfyUI, quy trình làm việc SD WebUI).",
    "endpointMusicNote": "Tạo nhạc thông qua quy trình làm việc của ComfyUI.",
    "endpointMessagesNote": "Điểm cuối của tin nhắn gốc nhân loại.",
    "endpointCountTokensNote": "Đếm mã thông báo cho tải trọng tin nhắn nhất định.",
    "endpointFilesNote": "Tải lên tệp cho đầu vào đa phương thức.",
    "endpointBatchesNote": "Xử lý hàng loạt các yêu cầu API số lượng lớn.",
    "endpointWsNote": "Điểm cuối WebSocket để phát trực tuyến theo thời gian thực.",
    "mgmtProvidersListNote": "Liệt kê tất cả các kết nối nhà cung cấp đã đăng ký.",
    "mgmtProvidersCreateNote": "Tạo kết nối nhà cung cấp mới.",
    "mgmtProvidersUpdateNote": "Cập nhật kết nối nhà cung cấp hiện có.",
    "mgmtProvidersDeleteNote": "Xóa kết nối nhà cung cấp.",
    "mgmtProvidersTestNote": "Kiểm tra kết nối và xác thực cho nhà cung cấp.",
    "mgmtProvidersModelsNote": "Liệt kê các mô hình có sẵn cho một nhà cung cấp cụ thể.",
    "mgmtSettingsGetNote": "Truy xuất cài đặt ứng dụng hiện tại.",
    "mgmtSettingsUpdateNote": "Cập nhật cài đặt ứng dụng.",
    "mgmtPayloadRulesGetNote": "Nhận quy tắc chuyển đổi tải trọng.",
    "mgmtPayloadRulesUpdateNote": "Cập nhật quy tắc chuyển đổi tải trọng.",
    "mcpToolsTitle": "Công cụ MCP",
    "mcpToolsDescription": "OmniRoute hiển thị các công cụ {count} thông qua Giao thức bối cảnh mô hình để điều phối tác nhân.",
    "mcpToolsCount": "{count} công cụ",
    "mcpToolsToc": "Công cụ MCP",
    "mcpToolsRoutingTitle": "Định tuyến & Khám phá",
    "mcpToolsRoutingDesc": "Kiểm tra tình trạng, quản lý kết hợp, giám sát hạn ngạch, báo cáo chi phí và truy cập danh mục mô hình.",
    "mcpToolsOperationsTitle": "Hoạt động & Chiến lược",
    "mcpToolsOperationsDesc": "Mô phỏng tuyến đường, bảo vệ ngân sách, chuyển đổi chiến lược, hồ sơ khả năng phục hồi và số liệu của nhà cung cấp.",
    "mcpToolsCacheTitle": "Quản lý bộ đệm",
    "mcpToolsCacheDesc": "Xem số liệu thống kê về bộ nhớ đệm và xóa bộ nhớ đệm ngữ nghĩa hoặc chữ ký.",
    "mcpToolsCompressionTitle": "Động cơ nén",
    "mcpToolsCompressionDesc": "Định cấu hình nén RTK/Brotli, công cụ trao đổi và kiểm tra phân tích nén bằng cách kết hợp.",
    "mcpToolsOneProxyTitle": "1Proxy / Đường hầm",
    "mcpToolsOneProxyDesc": "Quản lý proxy gửi đi, xoay vòng IP dân cư và kiểm tra tình trạng proxy.",
    "mcpToolsMemoryTitle": "Bộ nhớ",
    "mcpToolsMemoryDesc": "Tìm kiếm, thêm và xóa các mục bộ nhớ đàm thoại liên tục.",
    "mcpToolsSkillsTitle": "Kỹ năng",
    "mcpToolsSkillsDesc": "Liệt kê, kích hoạt, thực thi và giám sát việc thực hiện kỹ năng tùy chỉnh.",
    "featureAutoComboTitle": "Tự động kết hợp",
    "featureAutoComboText": "Tự động tạo các combo được tối ưu hóa dựa trên nhà cung cấp được kết nối, kiểu sử dụng và khả năng của mô hình.",
    "featureSearchTitle": "Tìm kiếm trên web",
    "featureSearchText": "Tìm kiếm trên web tích hợp với 5 nhà cung cấp (Serper, Brave, Exa, Tavily, Perplexity) bao gồm phân tích và theo dõi chi phí.",
    "featureMemoryTitle": "Hệ thống bộ nhớ",
    "featureMemoryText": "Bộ nhớ đàm thoại liên tục với khả năng trích xuất, chèn, truy xuất và tóm tắt qua các phiên.",
    "featureSkillsTitle": "Khung kỹ năng",
    "featureSkillsText": "Hệ thống kỹ năng mở rộng với các kỹ năng tích hợp và tùy chỉnh, thực thi hộp cát, chặn yêu cầu và chèn ngữ cảnh.",
    "featureAcpTitle": "Truyền thông đại lý",
    "featureAcpText": "Sổ đăng ký Giao thức Truyền thông Tác nhân (ACP) để quản lý quy trình công việc giữa các tác nhân và điều phối công cụ.",
    "protocolAcpTitle": "ACP (Truyền thông đại lý)",
    "protocolAcpDesc": "Đăng ký và quản lý các tác nhân thông qua sổ đăng ký ACP để liên lạc giữa các tác nhân và chia sẻ công cụ.",
    "protocolAcpStep1": "Điều hướng đến Bảng điều khiển → Đại lý để xem các đại lý ACP đã đăng ký.",
    "protocolAcpStep2": "Đăng ký các đại lý mới với khả năng và cấu hình điểm cuối.",
    "protocolAcpStep3": "Sử dụng Công cụ CLI để định cấu hình các kênh liên lạc của tổng đài viên."
  },
  "legal": {
    "privacyPolicy": "Chính sách bảo mật",
    "termsOfService": "Điều khoản dịch vụ",
    "providerConfigurations": "Cấu hình nhà cung cấp",
    "apiKeys": "Khóa API",
    "usageLogs": "Nhật ký sử dụng",
    "applicationSettings": "Cài đặt ứng dụng",
    "viewExportAnalytics": "Xem và xuất phân tích sử dụng",
    "clearHistory": "Xóa lịch sử sử dụng bất cứ lúc nào",
    "configureRetention": "Định cấu hình chính sách lưu giữ nhật ký",
    "backupRestore": "Sao lưu và khôi phục cơ sở dữ liệu của bạn",
    "privacyMetadataTitle": "Chính sách bảo mật | OmniRoute",
    "privacyMetadataDescription": "Chính sách quyền riêng tư dành cho bộ định tuyến proxy OmniRoute AI API.",
    "termsMetadataTitle": "Điều khoản dịch vụ | OmniRoute",
    "termsMetadataDescription": "Điều khoản dịch vụ dành cho bộ định tuyến proxy OmniRoute AI API.",
    "backToHome": "Trở về nhà",
    "lastUpdated": "Cập nhật lần cuối: {date}",
    "policyLastUpdatedDate": "Ngày 13 tháng 2 năm 2026",
    "listSeparator": "-",
    "questionsVisit": "Câu hỏi? Ghé thăm của chúng tôi",
    "githubRepository": "Kho lưu trữ GitHub",
    "privacySection1Title": "1. Kiến trúc địa phương đầu tiên",
    "privacySection1Text": "OmniRoute được thiết kế như một ứng dụng cục bộ đầu tiên. Tất cả quá trình xử lý và lưu trữ dữ liệu diễn ra hoàn toàn trên máy của bạn. Không có máy chủ tập trung thu thập thông tin của bạn.",
    "privacySection2Title": "2. Dữ liệu chúng tôi lưu trữ",
    "privacyDataStoredIn": "Dữ liệu sau được lưu trữ cục bộ trong",
    "privacyDataProviderConfigurationsDesc": "URL kết nối, loại nhà cung cấp và cài đặt ưu tiên",
    "privacyDataApiKeysDesc": "được mã hóa và lưu trữ cục bộ để xác thực với các nhà cung cấp AI",
    "privacyDataUsageLogsDesc": "số lượng yêu cầu, mức sử dụng mã thông báo, tên mô hình, dấu thời gian và thời gian phản hồi",
    "privacyDataApplicationSettingsDesc": "tùy chọn chủ đề, chiến lược định tuyến và cấu hình kết hợp",
    "privacySection3Title": "3. Không đo từ xa",
    "privacySection3Text": "OmniRoute không thu thập báo cáo đo từ xa, phân tích hoặc sự cố. Không có dữ liệu nào được gửi cho chúng tôi hoặc bất kỳ bên thứ ba nào. Kiểu sử dụng, lệnh gọi API và cấu hình của bạn vẫn hoàn toàn ở chế độ riêng tư.",
    "privacySection4Title": "4. Nhà cung cấp AI bên thứ ba",
    "privacySection4Text": "Khi bạn thực hiện lệnh gọi API thông qua OmniRoute, yêu cầu của bạn sẽ được chuyển tiếp đến nhà cung cấp AI mà bạn đã định cấu hình (ví dụ: OpenAI, Anthropic, Google). Các nhà cung cấp này có chính sách bảo mật riêng chi phối cách họ xử lý dữ liệu của bạn. Vui lòng xem lại:",
    "privacyOpenAiPolicy": "Chính sách quyền riêng tư của OpenAI",
    "privacyAnthropicPolicy": "Chính sách về quyền riêng tư của Anthropic",
    "privacyGooglePolicy": "Chính sách bảo mật của Google",
    "privacySection5Title": "5. Đồng bộ hóa đám mây (Tùy chọn)",
    "privacySection5Text": "Nếu bạn bật tính năng đồng bộ hóa đám mây tùy chọn, cấu hình nhà cung cấp và khóa API có thể được truyền đến điểm cuối đám mây đã định cấu hình. Tính năng này bị tắt theo mặc định và yêu cầu chọn tham gia rõ ràng.",
    "privacySection6Title": "6. Ghi nhật ký",
    "privacyLoggingIntro": "Nhật ký yêu cầu có thể được cấu hình thông qua cài đặt bảng điều khiển. Bạn có thể:",
    "privacySection7Title": "7. Quyền của bạn",
    "privacySection7TextStart": "Vì tất cả dữ liệu được lưu trữ cục bộ nên bạn có toàn quyền kiểm soát. Bạn có thể xóa dữ liệu của mình bất kỳ lúc nào bằng cách xóa",
    "privacySection7TextEnd": "thư mục hoặc sử dụng tính năng sao lưu và khôi phục cơ sở dữ liệu trong bảng điều khiển.",
    "termsSection1Title": "1. Tổng quan",
    "termsSection1Text": "OmniRoute là bộ định tuyến proxy AI API cục bộ đầu tiên hoạt động hoàn toàn trên máy của bạn. Nó định tuyến các yêu cầu đến nhiều nhà cung cấp AI với tính năng cân bằng tải, chuyển đổi dự phòng và theo dõi việc sử dụng.",
    "termsSection2Title": "2. Trách nhiệm của Người dùng",
    "termsResponsibilityApiKeys": "Bạn hoàn toàn chịu trách nhiệm quản lý khóa API và thông tin đăng nhập của riêng mình cho các nhà cung cấp AI bên thứ ba (OpenAI, Anthropic, Google, v.v.).",
    "termsResponsibilityCompliance": "Bạn phải tuân thủ các điều khoản dịch vụ của từng nhà cung cấp AI có API mà bạn truy cập thông qua OmniRoute.",
    "termsResponsibilitySecurity": "Bạn chịu trách nhiệm về tính bảo mật của cài đặt OmniRoute cục bộ của mình, bao gồm đặt mật khẩu và hạn chế quyền truy cập mạng.",
    "termsSection3Title": "3. Nó hoạt động như thế nào",
    "termsSection3Text": "OmniRoute hoạt động như một proxy trung gian. Các lệnh gọi API gửi tới OmniRoute sẽ được dịch và chuyển tiếp đến các nhà cung cấp AI đã định cấu hình của bạn. OmniRoute không sửa đổi nội dung yêu cầu hoặc phản hồi của bạn ngoài bản dịch giao thức cần thiết.",
    "termsSection4Title": "4. Xử lý dữ liệu",
    "termsDataStoredLocally": "Tất cả dữ liệu được lưu trữ cục bộ trên máy của bạn trong cơ sở dữ liệu SQLite.",
    "termsNoTransmission": "OmniRoute không truyền bất kỳ dữ liệu nào đến các máy chủ bên ngoài trừ khi bạn bật rõ ràng các tính năng đồng bộ hóa trên đám mây.",
    "termsDataLocationText": "Nhật ký sử dụng, khóa API và cấu hình được lưu trữ trong",
    "termsSection5Title": "5. Tuyên bố từ chối trách nhiệm",
    "termsSection5Text": "OmniRoute được cung cấp \"nguyên trạng\" mà không có bất kỳ hình thức bảo hành nào. Chúng tôi không chịu trách nhiệm về bất kỳ chi phí nào phát sinh do sử dụng API, gián đoạn dịch vụ hoặc mất dữ liệu. Luôn duy trì bản sao lưu cấu hình của bạn.",
    "termsSection6Title": "6. Nguồn mở",
    "termsSection6Text": "OmniRoute là phần mềm mã nguồn mở. Bạn có thể tự do kiểm tra, sửa đổi và phân phối nó theo các điều khoản trong giấy phép."
  },
  "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": "Công cụ CLI so với mục tiêu đại lý - Sự khác biệt là gì?",
    "comparisonCliToolsLabel": "Trang công cụ CLI",
    "comparisonCliToolsTitle": "IDE của bạn gửi yêu cầu thông qua OmniRoute",
    "comparisonCliToolsDesc": "Định cấu hình Claude Code, Codex, Cursor và các IDE khác để sử dụng OmniRoute làm URL cơ sở API của chúng. OmniRoute hoạt động như một proxy, định tuyến các yêu cầu đến các nhà cung cấp đã định cấu hình của bạn.",
    "comparisonAgentsLabel": "Trang này (Mục tiêu của đại lý)",
    "comparisonAgentsTitle": "OmniRoute gửi yêu cầu đến các công cụ CLI cục bộ",
    "comparisonAgentsDesc": "OmniRoute có thể sinh ra các tệp nhị phân CLI cục bộ (claude, codex, ngỗng) làm phần phụ trợ thực thi. Công cụ CLI xử lý yêu cầu bằng xác thực của chính nó và trả về kết quả.",
    "comparisonSummary": "Tóm lại: Công cụ CLI = bạn định cấu hình các công cụ để trỏ tới OmniRoute. Mục tiêu tác nhân = OmniRoute sử dụng các công cụ làm điểm cuối.",
    "agentUseCaseHint": "Có thể được sử dụng làm mục tiêu thực thi thông qua giao thức ACP",
    "flowDiagramClient": "Ứng dụng khách",
    "flowDiagramClientDesc": "SDK, API hoặc dịch vụ ngược dòng",
    "flowDiagramOmniRoute": "OmniRoute",
    "flowDiagramOmniRouteDesc": "Nhận yêu cầu và chọn mục tiêu",
    "flowDiagramSpawn": "Quá trình sinh sản",
    "flowDiagramSpawnDesc": "Khởi chạy nhị phân CLI qua stdio",
    "flowDiagramCli": "Đại lý CLI",
    "flowDiagramCliDesc": "Các quy trình có xác thực/mô hình riêng",
    "fingerprintSettingsHint": "Kết hợp dấu vân tay CLI (ngụy trang các yêu cầu dưới dạng công cụ CLI cụ thể) có thể được định cấu hình trong",
    "settingsRoutingLink": "Cài đặt/Định tuyến",
    "openSettings": "Cài đặt",
    "copyRawUrlTitle": "Sao chép URL thô vào clipboard",
    "copied": "Đã sao chép!",
    "copyUrl": "Sao chép URL",
    "startHere": "Bắt đầu ở đây",
    "badgeNew": "Mới",
    "viewOnGithub": "Xem trên GitHub",
    "howToUse": "Cách sử dụng",
    "browseAllSkillsOnGithub": "Duyệt tất cả các kỹ năng trên GitHub",
    "apiSkills": "Kỹ năng API",
    "cliSkills": "Kỹ năng 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": "Đại lý đám mây",
    "description": "Quản lý các tác nhân mã hóa tự trị (Jules, Devin, Codex Cloud)",
    "loading": "Đang tải nhiệm vụ...",
    "aboutTitle": "Giới thiệu về Đại lý đám mây",
    "aboutDescription": "Tác nhân đám mây là trợ lý mã hóa AI từ xa có thể thực hiện các tác vụ một cách tự động. Chúng hoạt động khác với các tác nhân CLI địa phương - bạn tương tác với chúng thông qua API của OmniRoute.",
    "howItWorksTitle": "Nó hoạt động như thế nào:",
    "howItWorksDesc": "Tạo nhiệm vụ → Đại lý phân tích và đề xuất phương án → Bạn phê duyệt → Đại lý thực thi → Kết quả trả về",
    "newTaskTitle": "Tạo nhiệm vụ mới",
    "newTaskDescription": "Bắt đầu nhiệm vụ mới với tác nhân đám mây",
    "selectAgent": "Chọn đại lý",
    "taskDescription": "Mô tả nhiệm vụ",
    "taskDescriptionPlaceholder": "Mô tả những gì bạn muốn người đại diện làm...",
    "startTask": "Bắt đầu nhiệm vụ",
    "tasks": "Nhiệm vụ",
    "taskDetail": "Chi tiết nhiệm vụ",
    "noTasks": "Chưa có nhiệm vụ nào. Tạo một cái để bắt đầu.",
    "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": "Nhiệm vụ không có tiêu đề",
    "created": "Đã tạo",
    "conversation": "Cuộc trò chuyện",
    "result": "kết quả",
    "error": "Lỗi",
    "planReady": "Kế hoạch đã sẵn sàng để phê duyệt",
    "approvePlan": "Phê duyệt kế hoạch",
    "rejectPlan": "Từ chối & Hủy bỏ",
    "sendMessagePlaceholder": "Gửi tin nhắn cho đại lý...",
    "cancel": "Hủy bỏ",
    "delete": "Xóa",
    "selectTaskPrompt": "Chọn nhiệm vụ để xem chi tiết",
    "statusPending": "Đang chờ xử lý",
    "statusRunning": "Đang chạy",
    "statusWaitingApproval": "Đang chờ phê duyệt",
    "statusCompleted": "Đã hoàn thành",
    "statusFailed": "thất bại",
    "statusCancelled": "Đã hủy",
    "repositoryName": "Tên kho lưu trữ",
    "repositoryUrl": "URL kho lưu trữ",
    "branch": "chi nhánh"
  },
  "templateNames": {
    "simple-chat": "Trò chuyện đơn giản",
    "streaming": "Truyền phát",
    "system-prompt": "Lời nhắc hệ thống",
    "thinking": "suy nghĩ",
    "tool-calling": "Gọi công cụ",
    "multi-turn": "Nhiều lượt",
    "vision": "Tầm nhìn",
    "schema-coercion": "Lược đồ cưỡng bức"
  },
  "templateDescriptions": {
    "simple-chat": "Mẫu chat cơ bản kèm tin nhắn hệ thống",
    "streaming": "Mẫu để truyền phát phản hồi",
    "system-prompt": "Mẫu có lời nhắc hệ thống tùy chỉnh",
    "thinking": "Mẫu có ngân sách lý luận/suy nghĩ",
    "tool-calling": "Mẫu để gọi công cụ/chức năng",
    "multi-turn": "Mẫu hội thoại nhiều lượt",
    "vision": "Mẫu đa phương thức có đầu vào hình ảnh",
    "schema-coercion": "Thực thi lược đồ JSON/đầu ra có cấu trúc"
  },
  "templatePayloads": {
    "simpleChat": {
      "system": "Bạn là một trợ lý AI hữu ích.",
      "userGreeting": "Xin chào! Hôm nay tôi có thể giúp gì cho bạn?"
    },
    "streaming": {
      "prompt": "Viết một câu chuyện về"
    },
    "systemPrompt": {
      "question": "Ý nghĩa của cuộc sống là gì?",
      "systemInstruction": "Đưa ra một câu trả lời sâu sắc và mang tính triết lý."
    },
    "thinking": {
      "question": "Giải thích tính toán lượng tử"
    },
    "toolCalling": {
      "cityNameDescription": "Tên của thành phố để biết thời tiết",
      "toolDescription": "Nhận thời tiết hiện tại cho một địa điểm",
      "userWeather": "Thời tiết ở Tokyo thế nào?"
    },
    "multiTurn": {
      "system": "Bạn là một trợ lý hữu ích.",
      "assistantExample": "Tôi rất vui được giúp bạn việc đó.",
      "userInitial": "Tôi cần giúp đỡ với",
      "userFollowUp": "Bạn có thể giải thích về điều đó?"
    }
  },
  "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": "Phát lại lý luận",
    "reasoningCacheDesc": "Duy trì tư duy mô hình cho các luồng gọi công cụ nhiều lượt",
    "reasoningEntries": "Mục hoạt động",
    "reasoningReplayRate": "Tỷ lệ phát lại",
    "reasoningReplays": "Tổng số lượt phát lại",
    "reasoningCharsCached": "Ký tự được lưu vào bộ nhớ đệm",
    "reasoningMisses": "Thiếu bộ nhớ đệm",
    "reasoningByProvider": "Theo nhà cung cấp",
    "reasoningByModel": "Theo mẫu",
    "reasoningRecentEntries": "Bài viết gần đây",
    "reasoningToolCallId": "ID cuộc gọi công cụ",
    "reasoningChars": "nhân vật",
    "reasoningAge": "Tuổi",
    "reasoningView": "Xem",
    "reasoningDetail": "Nội dung lý luận",
    "reasoningBehavior": "Hành vi",
    "reasoningBehaviorCapture": "Ghi lại Reason_content từ các phản hồi trực tuyến",
    "reasoningBehaviorReplay": "Tiêm lại ở lượt tiếp theo khi khách hàng bỏ qua",
    "reasoningBehaviorFallback": "Ưu tiên bộ nhớ với dự phòng SQLite để khắc phục sự cố",
    "reasoningBehaviorTtl": "TTL: 2 giờ | Mục nhập tối đa: 2.000 (bộ nhớ)",
    "reasoningBehaviorModels": "Được hỗ trợ: DeepSeek, Kimi, Qwen-Thinking, GLM",
    "reasoningClearAll": "Xóa bộ nhớ đệm lý luận",
    "reasoningClearSuccess": "Đã xóa {count} mục nhập bộ đệm lý luận",
    "reasoningClearError": "Không xóa được bộ nhớ đệm lý do",
    "reasoningNoData": "Chưa có mục lý luận nào được lưu vào bộ nhớ đệm. Các mục xuất hiện khi các mô hình tư duy sử dụng cách gọi công cụ.",
    "cachePerformanceRetry": "Thử lại",
    "cachePerformanceHitRate": "Tỷ lệ trúng",
    "cachePerformanceAvgLatency": "Độ trễ trung bình (ms)",
    "cachePerformanceP95Latency": "p95 Độ trễ (ms)",
    "retry": "Thử lại",
    "reasoningAvgChars": "Ký tự trung bình",
    "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": "Toàn cầu",
    "levelProvider": "nhà cung cấp",
    "levelCombo": "kết hợp",
    "levelKey": "Chìa khóa",
    "levelDirect": "Trực tiếp (không có proxy)",
    "titleGlobal": "Cấu hình proxy toàn cầu",
    "titleLevel": "{level} Ủy quyền — {label}",
    "loading": "Đang tải cấu hình proxy...",
    "inheritingFrom": "Kế thừa từ",
    "source": "Nguồn",
    "savedProxy": "Proxy đã lưu",
    "custom": "tùy chỉnh",
    "selectSavedProxyPlaceholder": "Chọn proxy đã lưu...",
    "proxyType": "Loại proxy",
    "host": "Máy chủ",
    "hostPlaceholder": "1.2.3.4 hoặc proxy.example.com",
    "port": "Cảng",
    "authOptional": "Xác thực (tùy chọn)",
    "username": "Tên người dùng",
    "usernamePlaceholder": "Tên người dùng",
    "password": "Mật khẩu",
    "passwordPlaceholder": "Mật khẩu",
    "connected": "Đã kết nối",
    "ip": "IP:",
    "connectionFailed": "Kết nối không thành công",
    "testConnection": "Kiểm tra kết nối",
    "clear": "Xóa",
    "cancel": "Hủy bỏ",
    "save": "Lưu",
    "errorSelectSavedProxy": "Vui lòng chọn proxy đã lưu trước.",
    "errorSelectProxyFirst": "Vui lòng chọn proxy trước.",
    "errorProxyNotFound": "Không tìm thấy proxy đã chọn.",
    "errorClearSavedProxy": "Không xóa được proxy đã lưu",
    "errorSaveProxy": "Không lưu được cấu hình proxy",
    "errorClearProxy": "Không xóa được cấu hình proxy",
    "errorSocks5Hidden": "SOCKS5 được định cấu hình nhưng bị ẩn vì NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=false."
  },
  "oauthModal": {
    "title": "Kết nối {providerName}",
    "waiting": "Đang chờ cấp phép",
    "completeAuthInPopup": "Hoàn thành ủy quyền trong cửa sổ bật lên.",
    "popupClosedHint": "Nếu cửa sổ bật lên đóng mà không chuyển hướng trở lại (ví dụ: Qoder), hộp thoại này sẽ tự động chuyển sang chế độ nhập URL thủ công.",
    "popupBlocked": "Cửa sổ bật lên bị chặn? Nhập URL theo cách thủ công",
    "deviceCodeVisitUrl": "Truy cập URL bên dưới và nhập mã:",
    "deviceCodeVerificationUrl": "URL xác minh",
    "deviceCodeYourCode": "Mã của bạn",
    "deviceCodeWaiting": "Đang chờ cấp phép...",
    "googleOAuthWarning": "Truy cập từ xa + Google OAuth: Thông tin xác thực mặc định chỉ chấp nhận chuyển hướng đến <code>localhost</code>. Sau khi ủy quyền, trình duyệt của bạn sẽ cố mở <code>localhost</code> — sao chép URL đầy đủ đó và dán vào bên dưới. Để sử dụng hoàn toàn từ xa mà không cần bước thủ công này, hãy <a>định cấu hình thông tin xác thực OAuth của riêng bạn</a>.",
    "remoteAccessInfo": "Truy cập từ xa: Vì bạn đang truy cập OmniRoute từ xa nên sau khi ủy quyền, bạn sẽ thấy một trang lỗi (không tìm thấy localhost). Điều này là bình thường — chỉ cần sao chép toàn bộ URL từ thanh địa chỉ trình duyệt của bạn và dán vào bên dưới.",
    "step1OpenUrl": "Bước 1: Mở URL này trong trình duyệt của bạn",
    "copy": "Sao chép",
    "step2PasteCallback": "Bước 2: Dán URL gọi lại hoặc mã ủy quyền tại đây",
    "step2Hint": "Sau khi ủy quyền, dán URL gọi lại đầy đủ. Đối với Mã Claude và Cline, bạn cũng có thể dán trực tiếp mã xác thực, ví dụ: <code>code#state</code>.",
    "connect": "Kết nối",
    "cancel": "Hủy bỏ",
    "success": "Kết nối thành công!",
    "successMessage": "Tài khoản {providerName} của bạn đã được kết nối.",
    "done": "Xong",
    "error": "Kết nối không thành công",
    "tryAgain": "Thử lại"
  },
  "cursorAuthModal": {
    "title": "Kết nối con trỏ IDE",
    "autoDetecting": "Tự động phát hiện mã thông báo...",
    "readingFromCursor": "Đọc từ IDE con trỏ hoặc tác nhân con trỏ",
    "tokensAutoDetected": "Mã thông báo được tự động phát hiện thành công từ Cursor IDE!",
    "cursorNotDetected": "IDE con trỏ không được phát hiện. Vui lòng dán mã thông báo của bạn theo cách thủ công.",
    "accessToken": "Mã thông báo truy cập",
    "required": "*",
    "accessTokenPlaceholder": "Mã thông báo truy cập sẽ tự động điền...",
    "machineId": "ID máy",
    "optional": "(tùy chọn)",
    "machineIdPlaceholder": "ID máy sẽ tự động điền...",
    "importing": "Đang nhập khẩu...",
    "importToken": "Nhập mã thông báo",
    "cancel": "Hủy bỏ",
    "errorAutoDetect": "Không thể tự động phát hiện mã thông báo",
    "errorAutoDetectFailed": "Tự động phát hiện mã thông báo không thành công",
    "errorEnterToken": "Vui lòng nhập mã thông báo truy cập",
    "errorImportFailed": "Nhập không thành công"
  },
  "pricingModal": {
    "title": "Cấu hình giá",
    "loading": "Đang tải dữ liệu giá...",
    "pricingRatesFormat": "Định dạng giá cước",
    "ratesDescription": "Tất cả mức giá đều được tính bằng <strong>đô la trên một triệu mã thông báo</strong> ($/1 triệu mã thông báo). Ví dụ: Tỷ lệ đầu vào 2,50 có nghĩa là 2,50 USD trên 1.000.000 mã thông báo đầu vào.",
    "model": "người mẫu",
    "input": "đầu vào",
    "output": "đầu ra",
    "cached": "Đã lưu vào bộ nhớ đệm",
    "reasoning": "Lý luận",
    "cacheCreation": "Tạo bộ đệm",
    "noPricingData": "Không có dữ liệu giá cả",
    "resetToDefaults": "Đặt lại về mặc định",
    "cancel": "Hủy bỏ",
    "saving": "Đang lưu...",
    "saveChanges": "Lưu thay đổi",
    "resetConfirm": "Đặt lại tất cả giá về mặc định? Điều này không thể hoàn tác được.",
    "errorSaveFailed": "Không lưu được giá",
    "errorResetFailed": "Không thể đặt lại giá"
  },
  "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": "loại",
    "labelHost": "Máy chủ",
    "labelPort": "Cảng",
    "labelUsername": "Tên người dùng",
    "labelPassword": "Mật khẩu",
    "labelRegion": "Vùng",
    "labelStatus": "Trạng thái",
    "labelNotes": "Ghi chú",
    "usernamePlaceholderEdit": "Để trống để giữ tên người dùng hiện tại",
    "passwordPlaceholderEdit": "Để trống để giữ mật khẩu hiện tại",
    "statusActive": "Đang hoạt động",
    "statusInactive": "Không hoạt động",
    "cancel": "Hủy bỏ",
    "save": "Lưu",
    "bulkModalTitle": "Phân công proxy số lượng lớn",
    "bulkLabelScope": "Phạm vi",
    "bulkLabelProxy": "ủy nhiệm",
    "bulkClearAssignment": "(Xóa bài tập)",
    "bulkLabelScopeIds": "ID phạm vi (được phân tách bằng dấu phẩy hoặc dòng mới)",
    "bulkScopeIdsPlaceholder": "nhà cung cấp-openai,nhà cung cấp-anthropic",
    "bulkApply": "Áp dụng",
    "labelScope": "__MISSING__:Scope",
    "labelProxy": "__MISSING__:Proxy",
    "scopeGlobal": "__MISSING__:global",
    "scopeProvider": "__MISSING__:provider",
    "scopeAccount": "__MISSING__:account",
    "scopeCombo": "__MISSING__:combo",
    "bulkImportErrorMissingName": "Thiếu TÊN",
    "bulkImportErrorMissingHost": "Thiếu máy chủ",
    "bulkImportErrorInvalidPort": "PORT không hợp lệ (phải là 1-65535)",
    "bulkImportErrorInvalidType": "LOẠI không hợp lệ (sử dụng http, https hoặc sock5)",
    "bulkImportErrorInvalidStatus": "TÌNH TRẠNG không hợp lệ (sử dụng hoạt động hoặc không hoạt động)",
    "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}% thành công",
    "avgLatency": "trung bình {latency}ms",
    "assignmentsCount": "{count} bài tập",
    "noData": "No Data",
    "testSuccess": "✓ {ip}",
    "testLatency": "{latency}ms",
    "testFailure": "✗ {error}",
    "bulkImport": "Nhập số lượng lớn",
    "bulkImportTitle": "Proxy nhập số lượng lớn",
    "bulkImportDescription": "Dán hồ sơ proxy bằng định dạng được phân cách bằng đường ống. Một proxy trên mỗi dòng. Các proxy hiện có (cùng máy chủ + cổng) sẽ được cập nhật.",
    "bulkImportParse": "Phân tích cú pháp",
    "bulkImportImport": "Nhập {count} proxy",
    "bulkImportImporting": "Đang nhập khẩu...",
    "bulkImportParsed": "{count} proxy được phân tích cú pháp",
    "bulkImportSkipped": "{count} dòng bị bỏ qua",
    "bulkImportParseErrors": "{count} lỗi",
    "bulkImportNoValidEntries": "Không tìm thấy mục hợp lệ. Hãy kiểm tra định dạng và thử lại.",
    "bulkImportSuccess": "Quá trình nhập hoàn tất: {created} đã tạo, {updated} đã cập nhật, {failed} không thành công",
    "bulkImportErrorLine": "Dòng {line}: {reason}",
    "bulkImportMaxExceeded": "Tối đa 100 proxy cho mỗi lần nhập",
    "bulkImportPreview": "Xem trước",
    "clearAssignment": "(phân công rõ ràng)",
    "bulkProxyAssignment": "Phân công proxy số lượng lớn"
  },
  "playground": {
    "title": "Title",
    "description": "Description",
    "endpoint": "Endpoint",
    "provider": "Provider",
    "model": "Model",
    "accountKey": "Account Key",
    "autoAccounts": "Tự động ({count} tài khoản)",
    "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": "Đã tạo {count} hình ảnh",
    "generatedImage": "Hình ảnh được tạo {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": "Trò chuyện đàm thoại",
    "clearChat": "Xóa cuộc trò chuyện",
    "typeMessagePlaceholder": "Nhập tin nhắn... (Shift+Enter cho dòng mới)",
    "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": "nén",
      "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": "Beta - xem trước giao diện người dùng.",
    "betaConfigSavedPrefix": "Cấu hình được lưu trong",
    "betaConfigSavedSuffix": "(chưa tồn tại trên máy chủ). Việc thực thi giới hạn theo yêu cầu vẫn chưa được đưa vào quy trình proxy. Màn hình này cho phép bạn thiết kế và trực quan hóa việc phân chia hạn ngạch; Việc thực thi thực sự sẽ diễn ra trong một lần lặp lại trong tương lai với khả năng duy trì DB và chặn cuộc gọi ngược dòng.",
    "policyLabel": "Chính sách:",
    "resetIn": "đặt lại trong",
    "quotaTotal": "tổng cộng"
  },
  "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"
  }
}
