{
  "title": "Cấu hình",
  "description": "Quản lý gateway, mặc định agent, công cụ và tích hợp",
  "noConfig": "Chưa tải được cấu hình",
  "noConfigDescription": "Không thể tải tệp cấu hình. Gateway có thể không khả dụng.",
  "retry": "Thử lại",
  "warning": "Thay đổi ở đây ảnh hưởng đến toàn bộ agent và kênh. Cấu hình sai có thể làm hỏng gateway.",
  "save": "Lưu",
  "saving": "Đang lưu...",
  "saved": "Đã lưu",
  "failedToSave": "Lưu cấu hình thất bại",
  "saveConfig": "Lưu cấu hình",
  "usingGlobalDefaults": "Đang dùng cài đặt mặc định",

  "tabs.server": "Máy chủ",
  "tabs.behavior": "Hành vi",
  "tabs.aiDefaults": "Mặc định AI",
  "tabs.quota": "Hạn mức",
  "tabs.tools": "Công cụ",
  "tabs.integrations": "Tích hợp",

  "server.title": "Máy chủ Gateway",
  "server.description": "Cài đặt mạng, token xác thực và kiểm soát truy cập",

  "gateway.host": "Host",
  "gateway.hostTip": "Giao diện mạng mà gateway lắng nghe. Dùng 0.0.0.0 để lắng nghe trên tất cả giao diện.",
  "gateway.port": "Cổng",
  "gateway.portTip": "Cổng TCP mà máy chủ WebSocket và HTTP của gateway ràng buộc.",
  "gateway.token": "Token xác thực",
  "gateway.tokenTip": "Token Bearer bắt buộc cho tất cả kết nối client. Để trống để tắt xác thực.",
  "gateway.tokenManaged": "Token được quản lý qua biến môi trường và không thể chỉnh sửa tại đây.",
  "gateway.ownerIds": "ID chủ sở hữu",
  "gateway.ownerIdsTip": "ID người dùng được cấp quyền quản trị. Nhấn Enter để thêm nhiều ID.",
  "gateway.ownerIdsPlaceholder": "Nhập ID chủ sở hữu...",
  "gateway.allowedOrigins": "Nguồn gốc được phép",
  "gateway.allowedOriginsTip": "Nguồn gốc CORS được phép cho HTTP API. Dùng * để cho phép mọi nguồn gốc.",
  "gateway.allowedOriginsPlaceholder": "https://yourdomain.com",
  "gateway.toolStatus": "Thông báo trạng thái công cụ",
  "gateway.blockReply": "Chặn khi phản hồi",
  "gateway.maxMessageChars": "Ký tự tối đa mỗi tin",
  "gateway.maxMessageCharsTip": "Số ký tự tối đa được phép trong mỗi tin nhắn đến. Tin nhắn vượt quá giới hạn sẽ bị từ chối.",
  "gateway.rateLimitRpm": "Giới hạn tốc độ (RPM)",
  "gateway.rateLimitRpmTip": "Số yêu cầu tối đa mỗi phút mỗi người dùng. Đặt 0 để tắt giới hạn.",
  "gateway.inboundDebounceMs": "Debounce đầu vào (ms)",
  "gateway.inboundDebounceMsTip": "Độ trễ tính bằng mili giây trước khi xử lý tin nhắn mới, để gộp các tin nhắn nhanh liên tiếp. Đặt -1 để tắt.",
  "gateway.injectionAction": "Hành động phát hiện injection",

  "agents.title": "Mặc định agent",
  "agents.description": "Provider LLM, model và cài đặt runtime mặc định áp dụng cho tất cả agent trừ khi được ghi đè",
  "agents.providerTip": "Provider LLM mặc định dùng khi agent không chỉ định provider.",
  "agents.modelTip": "Model mặc định dùng khi agent không chỉ định model.",
  "agents.maxTokens": "Token tối đa",
  "agents.maxTokensTip": "Số token tối đa model có thể tạo ra trong một phản hồi.",
  "agents.temperature": "Nhiệt độ",
  "agents.temperatureTip": "Nhiệt độ lấy mẫu (0-2). Giá trị thấp hơn tạo đầu ra xác định hơn.",
  "agents.maxToolIterations": "Số lần lặp công cụ tối đa",
  "agents.maxToolIterationsTip": "Số lần lặp gọi công cụ tối đa cho mỗi yêu cầu agent.",
  "agents.contextWindow": "Cửa sổ ngữ cảnh",
  "agents.contextWindowTip": "Tổng ngân sách token cho cửa sổ ngữ cảnh model.",
  "agents.workspace": "Đường dẫn workspace",
  "agents.workspaceTip": "Thư mục gốc cho các thao tác tệp của agent. Thư mục con theo người dùng được tạo tự động.",
  "agents.restrictToWorkspace": "Giới hạn trong workspace",
  "agents.restrictToWorkspaceTip": "Ngăn agent đọc hoặc ghi tệp ngoài đường dẫn workspace.",
  "agents.intentClassify": "Phân loại ý định",
  "agents.saveError": "Lưu mặc định agent thất bại",

  "agents.subagents.title": "Subagent",
  "agents.subagents.desc": "Giới hạn tạo subagent",
  "agents.subagents.maxConcurrent": "Tối đa đồng thời",
  "agents.subagents.maxConcurrentTip": "Số subagent tối đa có thể chạy đồng thời.",
  "agents.subagents.maxSpawnDepth": "Độ sâu tạo tối đa",
  "agents.subagents.maxSpawnDepthTip": "Độ sâu lồng nhau tối đa cho chuỗi subagent.",
  "agents.subagents.maxChildrenPerAgent": "Subagent tối đa mỗi agent",
  "agents.subagents.maxChildrenPerAgentTip": "Số subagent tối đa mà một agent có thể tạo.",
  "agents.subagents.archiveAfterMin": "Lưu trữ sau (phút)",
  "agents.subagents.archiveAfterMinTip": "Số phút không hoạt động trước khi phiên subagent được lưu trữ.",
  "agents.subagents.modelOverride": "Ghi đè model",
  "agents.subagents.modelOverrideTip": "Buộc tất cả subagent dùng model cụ thể. Để trống để kế thừa từ agent cha.",
  "agents.subagents.modelOverridePlaceholder": "(kế thừa từ agent)",

  "agents.memory.title": "Bộ nhớ",
  "agents.memory.desc": "Tìm kiếm bộ nhớ ngữ nghĩa và nhúng",
  "agents.memory.enabled": "Đã bật",
  "agents.memory.embeddingProvider": "Provider nhúng",
  "agents.memory.embeddingModel": "Model nhúng",
  "agents.memory.embeddingProviderTip": "Provider dùng để tạo nhúng văn bản cho lưu trữ bộ nhớ.",
  "agents.memory.embeddingModelTip": "Tên model nhúng. Để trống để dùng mặc định của provider.",
  "agents.memory.maxResults": "Kết quả tối đa",
  "agents.memory.maxResultsTip": "Số mục bộ nhớ tối đa trả về cho mỗi truy vấn.",
  "agents.memory.minScore": "Điểm tối thiểu",
  "agents.memory.minScoreTip": "Điểm tương đồng tối thiểu (0-1) để đưa mục bộ nhớ vào kết quả.",

  "agents.compaction.title": "Nén ngữ cảnh",
  "agents.compaction.desc": "Cài đặt nén cửa sổ ngữ cảnh",
  "agents.compaction.reserveTokensFloor": "Sàn token dự trữ",
  "agents.compaction.reserveTokensFloorTip": "Bộ đệm token tối thiểu cần dự trữ cho phản hồi mới trước khi nén.",
  "agents.compaction.maxHistoryShare": "Phần lịch sử tối đa (0-1)",
  "agents.compaction.maxHistoryShareTip": "Tỷ lệ cửa sổ ngữ cảnh mà lịch sử cuộc trò chuyện có thể chiếm.",

  "agents.pruning.title": "Cắt bớt ngữ cảnh",
  "agents.pruning.desc": "Cắt bỏ kết quả công cụ cũ để giải phóng không gian ngữ cảnh",
  "agents.pruning.mode": "Chế độ",
  "agents.pruning.keepLastAssistants": "Giữ trợ lý cuối",
  "agents.pruning.keepLastAssistantsTip": "Số lượt trợ lý gần nhất luôn được giữ lại trong quá trình cắt bớt.",

  "agents.sandbox.title": "Hộp cát",
  "agents.sandbox.desc": "Hộp cát Docker để thực thi code",
  "agents.sandbox.mode": "Chế độ",
  "agents.sandbox.image": "Hình ảnh Docker",
  "agents.sandbox.imageTip": "Hình ảnh Docker dùng cho container hộp cát.",
  "agents.sandbox.memoryMb": "Bộ nhớ (MB)",
  "agents.sandbox.memoryMbTip": "Giới hạn bộ nhớ cho container hộp cát tính bằng megabyte.",
  "agents.sandbox.cpus": "CPU",
  "agents.sandbox.cpusTip": "Hạn mức CPU cho container hộp cát (vd: 1.0 = một lõi đầy đủ).",
  "agents.sandbox.timeoutSec": "Hết giờ (giây)",
  "agents.sandbox.timeoutSecTip": "Thời gian thực thi tối đa tính bằng giây trước khi hộp cát bị dừng.",
  "agents.sandbox.networkEnabled": "Bật mạng",

  "behavior.uxTitle": "Hành vi giao diện",
  "behavior.uxDescription": "Các công tắc có tác động lớn thay đổi cách gateway tương tác với người dùng",
  "behavior.toolStatusHint": "Hiện thông báo trạng thái thực thi công cụ theo thời gian thực cho người dùng trong quá trình chạy agent.",
  "behavior.toolStatusInfo": "Người dùng sẽ thấy cập nhật trực tiếp khi agent đọc tệp, chạy lệnh và gọi API.",
  "behavior.blockReplyHint": "Chờ agent hoàn thành trước khi gửi các cập nhật trạng thái trung gian.",
  "behavior.blockReplyInfo": "Chỉ phản hồi cuối được gửi. Thông báo trạng thái công cụ trung gian bị ẩn.",
  "behavior.intentClassifyHint": "Phân loại ý định người dùng trước khi định tuyến để giảm các lần gọi agent không cần thiết.",
  "behavior.intentClassifyInfo": "Agent chỉ được gọi khi bộ phân loại phát hiện ý định có thể thực hiện.",
  "behavior.pendingCompactionTitle": "Nén tin nhắn chờ",
  "behavior.pendingCompactionDescription": "Tự động tóm tắt tin nhắn nhóm cũ bằng LLM khi bộ đệm vượt ngưỡng",
  "behavior.pendingCompactionThreshold": "Ngưỡng",
  "behavior.pendingCompactionThresholdTip": "Kích hoạt nén khi nhóm tích lũy nhiều hơn số tin nhắn chờ này. Đặt 0 để dùng mặc định (50).",
  "behavior.pendingCompactionKeepRecent": "Giữ gần đây",
  "behavior.pendingCompactionKeepRecentTip": "Số tin nhắn gần đây giữ lại sau khi nén. Tin cũ hơn được thay bằng bản tóm tắt LLM. Mặc định là 15.",
  "behavior.pendingCompactionMaxTokens": "Token tối đa",
  "behavior.pendingCompactionMaxTokensTip": "Số token tối đa cho kết quả tóm tắt LLM. Mặc định 4096.",
  "behavior.pendingCompactionProvider": "Nhà cung cấp",
  "behavior.pendingCompactionProviderTip": "Nhà cung cấp LLM cho tóm tắt. Để trống sẽ dùng provider của agent kênh.",
  "behavior.pendingCompactionProviderPlaceholder": "Dùng provider của agent",
  "behavior.pendingCompactionModel": "Mô hình",
  "behavior.pendingCompactionModelTip": "Mô hình LLM cho tóm tắt. Để trống sẽ dùng model của agent kênh.",
  "behavior.pendingCompactionModelPlaceholder": "Dùng model của agent",
  "behavior.pendingCompactionInfo": "Khi nhóm chat vượt ngưỡng, LLM tự động tóm tắt các tin nhắn cũ thành một mục rút gọn, giữ nguyên các tin gần đây nhất làm ngữ cảnh.",
  "behavior.rateLimitTitle": "Giới hạn tốc độ",
  "behavior.rateLimitDescription": "Giới hạn kích thước tin nhắn đến và kiểm soát tốc độ yêu cầu mỗi người dùng",
  "behavior.sessionsTitle": "Phạm vi phiên",
  "behavior.sessionsDescription": "Kiểm soát cách phân vùng ngữ cảnh cuộc trò chuyện theo người dùng và kênh",
  "behavior.securityTitle": "Bảo mật đầu vào",
  "behavior.securityDescription": "Phát hiện injection prompt và ẩn thông tin xác thực để bảo vệ gateway",
  "behavior.injectionActionHint": "Hành động thực hiện khi phát hiện nỗ lực injection prompt trong tin nhắn đến.",
  "behavior.injectionBlockInfo": "Tất cả tin nhắn bị đánh dấu là injection sẽ bị chặn và người dùng sẽ được thông báo.",
  "behavior.injectionOffInfo": "Tính năng phát hiện injection bị tắt. Các prompt độc hại sẽ không được lọc.",
  "behavior.scrubCredentialsHint": "Tự động ẩn khóa API, token và mật khẩu tìm thấy trong đầu ra công cụ trước khi trả về agent.",
  "behavior.scrubCredentialsInfo": "Các mẫu thông tin xác thực trong phản hồi công cụ được che đi trước khi agent nhìn thấy.",
  "behavior.scrubCredentialsOffInfo": "Tính năng ẩn thông tin xác thực bị tắt. Bí mật trong đầu ra công cụ có thể bị lộ với agent.",

  "sessions.scope": "Phạm vi phiên",
  "sessions.scopeTip": "Xác định cách phân vùng phiên. 'Theo người gửi' cho mỗi người dùng một phiên riêng; 'Toàn cục' chia sẻ một phiên cho tất cả người dùng.",
  "sessions.dmScope": "Phạm vi tin nhắn riêng",
  "sessions.dmScopeTip": "Cách đặt khóa phiên tin nhắn riêng. 'Theo kênh và đối tác' là mặc định được khuyến nghị.",

  "quota.title": "Hạn mức sử dụng",
  "quota.description": "Giới hạn hạn mức tin nhắn mỗi người dùng với tùy chọn ghi đè theo provider, kênh và nhóm",
  "quota.enabled": "Bật hạn mức",
  "quota.enabledTip": "Khi được bật, người dùng bị giới hạn theo số lượng tin nhắn được định nghĩa bên dưới.",
  "quota.defaultLimits": "Giới hạn mặc định",
  "quota.defaultLimitsTip": "Hạn mức dự phòng áp dụng cho tất cả người dùng không có ghi đè cụ thể.",
  "quota.hour": "Mỗi giờ",
  "quota.hourTip": "Số tin nhắn tối đa được phép mỗi giờ.",
  "quota.day": "Mỗi ngày",
  "quota.dayTip": "Số tin nhắn tối đa được phép mỗi ngày.",
  "quota.week": "Mỗi tuần",
  "quota.weekTip": "Số tin nhắn tối đa được phép mỗi tuần.",
  "quota.keyLabel": "Khóa",
  "quota.addOverride": "Thêm ghi đè",
  "quota.allOptionsAdded": "Đã thêm tất cả tùy chọn",
  "quota.providerOverrides": "Ghi đè theo provider",
  "quota.providerOverridesTip": "Giới hạn hạn mức tùy chỉnh theo provider LLM. Ghi đè mặc định khi người dùng tương tác qua provider cụ thể.",
  "quota.channelOverrides": "Ghi đè theo kênh",
  "quota.channelOverridesTip": "Giới hạn hạn mức tùy chỉnh theo loại kênh (vd: telegram, discord).",
  "quota.groupOverrides": "Ghi đè theo nhóm",
  "quota.groupOverridesTip": "Giới hạn hạn mức tùy chỉnh cho các cuộc trò chuyện nhóm cụ thể.",
  "quota.selectProvider": "Chọn provider",
  "quota.selectChannel": "Chọn kênh",
  "quota.selectGroup": "Chọn nhóm",

  "tools.title": "Hồ sơ công cụ",
  "tools.description": "Tính khả dụng công cụ mặc định và giới hạn tốc độ gọi mỗi giờ cho tất cả agent",
  "tools.profile": "Hồ sơ",
  "tools.profileTip": "Bộ công cụ định sẵn. 'Tối thiểu' chỉ cung cấp công cụ đọc an toàn; 'Đầy đủ' bật tất cả công cụ.",
  "tools.profilePlaceholder": "Chọn hồ sơ...",
  "tools.rateLimitPerHour": "Giới hạn tốc độ (mỗi giờ)",
  "tools.rateLimitPerHourTip": "Số lần gọi công cụ tối đa được phép mỗi agent mỗi giờ. Đặt 0 để tắt.",
  "tools.allow": "Cho phép",
  "tools.allowTip": "Cho phép thêm các công cụ không có trong hồ sơ được chọn.",
  "tools.allowPlaceholder": "Chọn công cụ để cho phép...",
  "tools.deny": "Từ chối",
  "tools.denyTip": "Chặn công cụ dù có trong hồ sơ được chọn.",
  "tools.denyPlaceholder": "Chọn công cụ để từ chối...",
  "tools.alsoAllow": "Cũng cho phép",
  "tools.alsoAllowTip": "Công cụ bổ sung được phép ngoài hồ sơ. Hữu ích khi dùng hồ sơ hạn chế.",
  "tools.alsoAllowPlaceholder": "Chọn công cụ bổ sung...",
  "tools.execApproval": "Thực thi lệnh",
  "tools.execSecurity": "Chế độ bảo mật",
  "tools.execSecurityTip": "Kiểm soát lệnh shell nào agent được phép chạy. 'Danh sách cho phép' giới hạn theo các mẫu được duyệt.",
  "tools.execAskMode": "Chế độ hỏi",
  "tools.execAskModeTip": "Khi nào nhắc người dùng phê duyệt trước khi thực thi lệnh.",
  "tools.execAllowlistLabel": "Lệnh được phép (mỗi dòng một mẫu)",
  "tools.webSearch": "Tìm kiếm web",
  "tools.webFetch": "Tải web và tự động hóa trình duyệt",
  "tools.maxResults": "Kết quả tối đa",
  "tools.webFetchPolicy": "Chính sách tải web",
  "tools.webFetchPolicyTip": "Kiểm soát URL nào agent có thể tải. 'Danh sách cho phép' giới hạn chỉ các domain được duyệt.",
  "tools.allowedDomains": "Domain được phép",
  "tools.blockedDomains": "Domain bị chặn",
  "tools.blockedDomainsTip": "Các domain luôn bị chặn bất kể chính sách. Mỗi dòng một mục, hỗ trợ ký tự đại diện (*.example.com).",
  "tools.browser": "Tự động hóa trình duyệt",
  "tools.browserEnabled": "Đã bật",
  "tools.browserHeadless": "Không giao diện",
  "tools.scrubCredentials": "Ẩn thông tin xác thực",

  "tts.title": "Chuyển văn bản thành giọng nói",
  "tts.configured": "Đã cấu hình",
  "tts.disabled": "Đã tắt",
  "tts.providerInfo": "Provider: {{provider}} — Tự động: {{auto}}",
  "tts.noProvider": "Chưa cấu hình provider TTS.",
  "tts.manageLink": "Quản lý cài đặt TTS",

  "cron.title": "Trình lập lịch Cron",
  "cron.description": "Hành vi thử lại cho các tác vụ định kỳ thất bại",
  "cron.maxRetries": "Số lần thử lại tối đa",
  "cron.maxRetriesTip": "Số lần thử lại tối đa cho tác vụ cron thất bại.",
  "cron.baseDelay": "Độ trễ cơ bản",
  "cron.baseDelayTip": "Độ trễ backoff ban đầu giữa các lần thử lại (vd: 2s, 500ms).",
  "cron.maxDelay": "Độ trễ tối đa",
  "cron.maxDelayTip": "Độ trễ backoff tối đa giữa các lần thử lại (vd: 30s, 5m).",
  "cron.defaultTimezone": "Múi giờ mặc định",
  "cron.defaultTimezoneTip": "Múi giờ IANA cho biểu thức cron khi không được đặt cho từng job (vd: Asia/Ho_Chi_Minh). Để trống sẽ dùng múi giờ hệ thống.",
  "cron.defaultTimezonePlaceholder": "Múi giờ hệ thống",

  "telemetry.title": "Telemetry (OpenTelemetry)",
  "telemetry.description": "Xuất trace và metric sang backend tương thích OpenTelemetry",
  "telemetry.enabled": "Đã bật",
  "telemetry.enabledTip": "Bật xuất trace OpenTelemetry. Yêu cầu build tag 'otel'.",
  "telemetry.endpoint": "Điểm cuối",
  "telemetry.endpointTip": "Điểm cuối xuất OTLP (host:port). gRPC mặc định là 4317, HTTP là 4318.",
  "telemetry.protocol": "Giao thức",
  "telemetry.protocolTip": "Giao thức truyền tải cho bộ xuất OTLP.",
  "telemetry.serviceName": "Tên dịch vụ",
  "telemetry.serviceNameTip": "Tên dịch vụ được báo cáo trong trace. Hữu ích để lọc trong backend quan sát.",
  "telemetry.insecure": "Không bảo mật",
  "telemetry.insecureTip": "Tắt TLS cho kết nối OTLP. Chỉ dùng trong môi trường local/dev.",
  "telemetry.headers": "Header xuất",
  "telemetry.headersTip": "HTTP header bổ sung gửi kèm mỗi yêu cầu xuất OTLP (vd: khóa API cho backend lưu trữ).",
  "telemetry.headerKeyPlaceholder": "Tên header",
  "telemetry.headerValuePlaceholder": "Giá trị header",
  "telemetry.addHeader": "Thêm header",

  "bindings.title": "Ràng buộc agent",
  "bindings.description": "Định tuyến kênh, đối tác hoặc tài khoản cụ thể đến agent được chỉ định",
  "bindings.add": "Thêm ràng buộc",
  "bindings.noBindings": "Chưa có ràng buộc nào. Tất cả tin nhắn được định tuyến đến agent mặc định.",
  "bindings.agentId": "ID agent",
  "bindings.channel": "Kênh",
  "bindings.peerKind": "Loại đối tác",
  "bindings.peerId": "ID đối tác",

  "providers.title": "Khóa API provider",
  "providers.description": "Ghi đè khóa API và URL cơ sở cho các provider LLM đã cấu hình",
  "providers.noProviders": "Không tìm thấy provider nào trong tệp cấu hình.",
  "providers.apiKey": "Khóa API",
  "providers.apiBaseUrl": "URL cơ sở",
  "providers.apiBaseUrlPlaceholder": "https://api.example.com/v1",
  "providers.managedVia": "Được quản lý qua biến môi trường {{envKey}}.",

  "channels.title": "Cài đặt kênh",
  "channels.description": "Cấu hình tích hợp kênh tích hợp sẵn (token, chính sách, streaming)",
  "channels.noChannels": "Không tìm thấy kênh nào trong tệp cấu hình.",
  "channels.enabled": "Đã bật",
  "channels.token": "Token / Bí mật",
  "channels.managedVia": "Được quản lý qua biến môi trường {{envKey}}.",
  "channels.dmPolicy": "Chính sách tin nhắn riêng",
  "channels.groupPolicy": "Chính sách nhóm",
  "channels.allowFrom": "Cho phép từ",
  "channels.allowFromPlaceholder": "user_id_1, user_id_2, ...",
  "channels.dmStreaming": "Streaming tin nhắn riêng",
  "channels.dmStreamingHint": "Cập nhật tin nhắn liên tục trong DM",
  "channels.groupStreaming": "Streaming nhóm",
  "channels.groupStreamingHint": "Cập nhật tin nhắn liên tục trong nhóm",
  "channels.streaming": "Streaming",
  "channels.draftTransport": "Xem trước nháp",
  "channels.draftTransportHint": "Xem trước streaming trong DM (không thông báo mỗi lần chỉnh sửa)",
  "channels.reasoningStream": "Hiện suy luận",
  "channels.reasoningStreamHint": "Hiển thị quá trình suy nghĩ của AI thành tin nhắn riêng",
  "channels.reactionLevel": "Mức phản ứng",
  "channels.connectionMode": "Chế độ kết nối",
  "channels.reactionOff": "Tắt",
  "channels.reactionMinimal": "Tối thiểu",
  "channels.reactionFull": "Đầy đủ",
  "channels.connectionWebsocket": "WebSocket",
  "channels.connectionWebhook": "Webhook",

  "bindings.any": "Bất kỳ",

  "toast": {
    "saved": "Đã lưu cấu hình",
    "saveFailed": "Không thể lưu cấu hình"
  }
}
