{
  "common": {
    "save": "Lưu",
    "reset": "Đặt lại",
    "cancel": "Hủy",
    "confirm": "Xác nhận",
    "delete": "Xóa",
    "edit": "Chỉnh sửa",
    "create": "Tạo mới",
    "upload": "Tải lên",
    "download": "Tải xuống",
    "refresh": "Làm mới",
    "search": "Tìm kiếm",
    "enable": "Bật",
    "disable": "Tắt",
    "enabled": "Đã bật",
    "disabled": "Đã tắt",
    "preview": "Xem trước",
    "view": "Xem",
    "content": "Nội dung",
    "loading": "Đang tải...",
    "copy": "Sao chép",
    "copied": "Đã sao chép",
    "copyFailed": "Sao chép thất bại",
    "contentPlaceholder": "Nhập nội dung...",
    "help": "Trợ giúp",
    "close": "Đóng",
    "actions": "Thao tác",
    "total": "Tổng: {{count}}",
    "clear": "Xóa trắng",
    "paste": "Dán",
    "yes": "Có",
    "no": "Không"
  },
  "desktop": {
    "closeWindow": {
      "title": "Đóng cửa sổ",
      "description": "Bạn muốn thực hiện thao tác nào khi đóng cửa sổ? Thoát ứng dụng sẽ dừng tất cả tác vụ đang chạy và tác vụ đã lên lịch.",
      "remember": "Ghi nhớ lựa chọn của tôi",
      "showWindow": "Hiển thị cửa sổ",
      "minimizeToTray": "Thu nhỏ xuống khay hệ thống",
      "quitApp": "Thoát ứng dụng",
      "preference": "Đóng cửa sổ",
      "askEveryTime": "Hỏi mỗi lần"
    }
  },
  "chunkError": {
    "title": "Không thể tải trang",
    "subTitle": "Có thể do lỗi mạng hoặc ứng dụng vừa được cập nhật.",
    "genericTitle": "Đã xảy ra lỗi",
    "genericSubTitle": "Có lỗi không mong muốn khi hiển thị trang này.",
    "reload": "Tải lại"
  },
  "nav": {
    "chat": "Trò chuyện",
    "control": "Điều khiển",
    "channels": "Kênh",
    "sessions": "Phiên",
    "inbox": "Hộp thư",
    "cronJobs": "Tác vụ định kỳ",
    "heartbeat": "Heartbeat",
    "agent": "Quản lý Agent",
    "workspace": "Không gian làm việc",
    "skills": "Kỹ năng",
    "skillPool": "Kho kỹ năng",
    "market": "Chợ kỹ năng",
    "tools": "Công cụ",
    "mcp": "MCP",
    "acp": "ACP",
    "agentConfig": "Cấu hình",
    "agents": "Agent",
    "settings": "Cài đặt",
    "models": "Mô hình",
    "environments": "Biến môi trường",
    "security": "Bảo mật",
    "tokenUsage": "Lượng Token",
    "agentStats": "Thống kê",
    "voiceTranscription": "Phiên âm giọng nói",
    "debug": "Gỡ lỗi",
    "plugins": "Plugin",
    "backups": "Sao lưu",
    "pluginManager": "Quản lý Plugin"
  },
  "header": {
    "changelog": "Nhật ký thay đổi",
    "docs": "Tài liệu",
    "tutorial": "Hướng dẫn",
    "featureDemos": "Demo tính năng",
    "faq": "FAQ",
    "github": "GitHub",
    "resources": "Tài liệu",
    "updateAvailable": "Có bản cập nhật"
  },
  "sidebar": {
    "newVersion": "Phiên bản mới: v{{version}}, nhấn để cập nhật",
    "updateModal": {
      "title": "Phiên bản mới: v{{version}}",
      "viewReleases": "Xem ghi chú phát hành",
      "close": "Đóng"
    },
    "settings": {
      "language": "Ngôn ngữ",
      "theme": "Giao diện",
      "mode": "Chế độ"
    },
    "simpleMode": "Chế độ đơn giản",
    "fullMode": "Chế độ đầy đủ"
  },
  "theme": {
    "dark": "Tối",
    "light": "Sáng",
    "system": "Theo hệ thống"
  },
  "startup": {
    "starting": "Đang khởi động backend...",
    "checking": "Đang kết nối backend...",
    "error": "Backend khởi động thất bại.",
    "errorHint": "Không thể khởi chạy tiến trình backend. Kiểm tra nhật ký ứng dụng để biết thêm.",
    "errorDetails": "Xem chi tiết lỗi",
    "timeout": "Backend không khởi động trong {{seconds}} giây.",
    "timeoutHint": "Backend không phản hồi. Vui lòng thử lại hoặc kiểm tra nhật ký.",
    "retry": "Thử lại"
  },
  "login": {
    "title": "Đăng nhập",
    "description": "Nhập mật khẩu để truy cập QwenPaw Console.",
    "passwordLabel": "Mật khẩu",
    "passwordPlaceholder": "Nhập mật khẩu",
    "submit": "Đăng nhập",
    "error": "Mật khẩu không đúng",
    "sessionExpired": "Phiên đã hết hạn, vui lòng đăng nhập lại",
    "logoutSuccess": "Đã đăng xuất",
    "loggingIn": "Đang đăng nhập...",
    "logout": "Đăng xuất",
    "logoutConfirm": "Bạn có chắc muốn đăng xuất không?",
    "authDisabled": "Xác thực đang tắt",
    "authDisabledDesc": "Bật AUTH_SECRET trong file .env để bảo vệ console.",
    "changePassword": "Đổi mật khẩu",
    "currentPassword": "Mật khẩu hiện tại",
    "newPassword": "Mật khẩu mới",
    "confirmPassword": "Xác nhận mật khẩu mới",
    "changePasswordSuccess": "Đổi mật khẩu thành công",
    "changePasswordFailed": "Đổi mật khẩu thất bại"
  },
  "account": {
    "title": "Tài khoản",
    "changePassword": "Đổi mật khẩu",
    "currentPassword": "Mật khẩu hiện tại",
    "newPassword": "Mật khẩu mới",
    "confirmNewPassword": "Xác nhận mật khẩu mới",
    "passwordMismatch": "Mật khẩu xác nhận không khớp",
    "changeSuccess": "Đổi mật khẩu thành công",
    "changeFailed": "Đổi mật khẩu thất bại",
    "currentPasswordRequired": "Vui lòng nhập mật khẩu hiện tại",
    "newPasswordRequired": "Vui lòng nhập mật khẩu mới",
    "newPasswordMinLength": "Mật khẩu mới phải có ít nhất 8 ký tự",
    "confirmPasswordRequired": "Vui lòng xác nhận mật khẩu mới",
    "saving": "Đang lưu...",
    "save": "Lưu thay đổi",
    "authDisabled": "Xác thực đang tắt — đổi mật khẩu không khả dụng",
    "wrongCurrentPassword": "Mật khẩu hiện tại không đúng"
  },
  "chat": {
    "modelSelectTooltip": "Chọn mô hình",
    "newChatTooltip": "Cuộc trò chuyện mới",
    "searchTooltip": "Tìm kiếm tất cả cuộc trò chuyện",
    "chatHistoryTooltip": "Lịch sử trò chuyện",
    "allChats": "Tất cả cuộc trò chuyện",
    "createNewChat": "Tạo cuộc trò chuyện mới",
    "pinDrawer": "Ghim",
    "unpinDrawer": "Bỏ ghim",
    "statusIdle": "Rảnh",
    "statusInProgress": "Đang xử lý",
    "disclaimer": "Làm việc cho bạn, lớn lên cùng bạn",
    "greeting": "Xin chào, tôi có thể giúp gì cho bạn?",
    "description": "Tôi là trợ lý AI sẵn sàng hỗ trợ bạn.",
    "prompt1": "Hãy bắt đầu hành trình mới!",
    "prompt2": "Bạn có thể cho tôi biết những kỹ năng của mình không?",
    "inputPlaceholder": "\"↑↓\" điều hướng tin nhắn · \"/\" lệnh nhanh (\"/approve\" hoặc \"/deny\" khi phê duyệt)",
    "longTextUploadPrompt": "Vui lòng đọc tệp prompt đã tải lên và trả lời dựa trên nội dung đó.",
    "emptyOutputError": "Trợ lý đã trả về phản hồi trống.",
    "commands": {
      "clear": {
        "description": "Xóa ngữ cảnh cuộc trò chuyện"
      },
      "compact": {
        "description": "Nén ngữ cảnh trò chuyện; hỗ trợ lệnh tùy chọn"
      },
      "approve": {
        "description": "Phê duyệt yêu cầu công cụ đang chờ"
      },
      "deny": {
        "description": "Từ chối yêu cầu công cụ đang chờ"
      },
      "history": {
        "description": "Hiển thị lịch sử cuộc trò chuyện"
      },
      "mission": {
        "description": "Chế độ Mission — Phân tách nhiệm vụ cho sub-agent với ngữ cảnh tách biệt"
      },
      "goal": {
        "description": "Loop Goal — Agent theo đuổi mục tiêu liên tục, tự đánh giá qua Rubric"
      }
    },
    "turnUsagePopover": {
      "ariaLabel": "Xem token lượt và mức dùng ngữ cảnh",
      "turn": "Lượt này",
      "turnEstimated": "Lượt này ~",
      "tok": "tok",
      "inOut": "in {{inTok}} · out {{outTok}}",
      "contextLabel": "Cửa sổ ngữ cảnh:",
      "manageContext": "Quản lý ngữ cảnh",
      "compact": "Nén",
      "new": "Cuộc trò chuyện mới"
    },
    "contextMenu": {
      "open": "Mở",
      "rename": "Đổi tên",
      "pin": "Ghim",
      "unpin": "Bỏ ghim",
      "delete": "Xóa"
    },
    "queue": {
      "title": "Hàng đợi tin nhắn",
      "paused": "Đã tạm dừng",
      "sendFailed": "Gửi thất bại",
      "resume": "Tiếp tục hàng đợi",
      "pause": "Tạm dừng hàng đợi",
      "clear": "Xóa hàng đợi",
      "dragSort": "Kéo để sắp xếp lại",
      "edit": "Chỉnh sửa",
      "retry": "Thử lại",
      "skip": "Bỏ qua",
      "interruptAndSend": "Ngắt và gửi",
      "delete": "Xóa",
      "file": "Tệp",
      "noChatWarning": "Vui lòng gửi một tin nhắn đầu tiên để tạo cuộc trò chuyện trước khi sử dụng hàng đợi",
      "queueFull": "Hàng đợi đầy (tối đa {{max}} mục), vui lòng gửi hoặc xóa một số tin nhắn trước",
      "otherTabOwner": "This tab queues only; sending is handled by another tab"
    },
    "group": {
      "pinned": "Đã ghim",
      "today": "Hôm nay",
      "week": "7 ngày qua",
      "month": "30 ngày qua",
      "older": "Cũ hơn"
    },
    "sessionPanel": {
      "searchConversations": "Tìm kiếm…",
      "noResults": "Không có kết quả",
      "noConversations": "Không có hội thoại",
      "loadingConversations": "Đang tải…"
    },
    "conversationHistory": "Lịch sử hội thoại",
    "history": {
      "empty": "Không có lịch sử trò chuyện"
    },
    "sessionGroup": {
      "today": "Hôm nay",
      "recent": "7 ngày qua",
      "earlier": "Trước đó"
    }
  },
  "debug": {
    "title": "Gỡ lỗi",
    "desc": "Xem nhật ký backend để chẩn đoán sự cố. Nhật ký tự động làm mới khi trang mở.",
    "level": {
      "all": "Tất cả"
    },
    "backend": {
      "title": "Nhật ký backend",
      "autoRefresh": "Tự động làm mới",
      "newestFirst": "Mới nhất trước",
      "updatedAt": "Cập nhật lúc",
      "path": "File nhật ký",
      "notFound": "Chưa tìm thấy file nhật ký.",
      "placeholder": "Nội dung nhật ký sẽ hiển thị ở đây.",
      "loadFailed": "Không thể tải nhật ký",
      "searchPlaceholder": "Tìm trong nhật ký..."
    },
    "actions": {
      "refreshBackend": "Làm mới nhật ký",
      "refreshSuccess": "Đã làm mới nhật ký",
      "copyBackend": "Sao chép nhật ký"
    }
  },
  "inbox": {
    "title": "Hộp thư",
    "tabApprovals": "Phê duyệt",
    "tabPushMessages": "Tin nhắn đẩy",
    "tabHarvests": "Thu hoạch AI",
    "summaryApprovals": "Phê duyệt",
    "summaryPushUnread": "Tin nhắn chưa đọc",
    "summaryHarvests": "Thu hoạch",
    "from": "Từ:",
    "requestedBy": "Bởi",
    "markRead": "Đánh dấu đã đọc",
    "markAllRead": "Đánh dấu tất cả đã đọc",
    "markAllReadNoUnread": "Không có tin nhắn chưa đọc",
    "markAllReadSuccess": "Đã đánh dấu {{count}} tin nhắn đã đọc",
    "selectAllCurrentPage": "Chọn trang hiện tại",
    "selectedItems": "Đã chọn {{count}}",
    "batchDeleteButton": "Xóa hàng loạt",
    "batchOperation": "Thao tác hàng loạt",
    "exitBatch": "Thoát chế độ hàng loạt",
    "batchDeleteConfirm": "Xóa {{count}} tin nhắn đã chọn?",
    "batchDeleteSuccess": "Đã xóa {{count}} tin nhắn",
    "pushCronHeader": "Tác vụ định kỳ: {{name}}",
    "viewDetails": "Xem chi tiết",
    "deleteMessageConfirm": "Xóa tin nhắn này?",
    "viewAll": "Xem tất cả",
    "read": "Đã đọc",
    "approve": "Phê duyệt",
    "reject": "Từ chối",
    "ready": "Sẵn sàng",
    "harvestNow": "Thu hoạch ngay",
    "createHarvest": "Tạo thu hoạch",
    "createFirstHarvest": "Tạo thu hoạch đầu tiên",
    "createSuccess": "Tạo thu hoạch thành công",
    "emptyApprovals": "Không có phê duyệt nào đang chờ",
    "emptyPush": "Không có tin nhắn đẩy",
    "emptyHarvests": "Chưa có thu hoạch nào",
    "statusReadyToHarvest": "Sẵn sàng thu hoạch",
    "statusGrowing": "Đang phát triển",
    "harvestedTimes": "Đã thu hoạch {{count}} lần",
    "harvestSuccessRate": "Tỷ lệ thành công {{rate}}%",
    "messageDetailComingSoon": "Chi tiết tin nhắn — Sắp ra mắt!",
    "harvestSettingsComingSoon": "Cài đặt thu hoạch — Sắp ra mắt!",
    "messageDetailTitle": "Chi tiết thực thi",
    "detailCronTitle": "Tác vụ định kỳ: {{name}}",
    "detailHeartbeatTitle": "Heartbeat",
    "messageNotFound": "Không tìm thấy tin nhắn",
    "detailTaskName": "Tên tác vụ",
    "detailTaskId": "ID tác vụ",
    "detailStatus": "Trạng thái",
    "detailSeverity": "Mức độ",
    "detailAgent": "Agent",
    "detailSource": "Nguồn",
    "detailSourceCronJob": "Tác vụ định kỳ",
    "detailSourceHeartbeat": "Heartbeat",
    "detailTrigger": "Kích hoạt",
    "detailDuration": "Thời lượng",
    "detailExecutedAt": "Thực thi lúc",
    "detailReceivedAt": "Nhận lúc",
    "detailRunId": "ID lần chạy",
    "detailContent": "Đầu ra",
    "detailPayload": "Payload",
    "detailExecutionTrace": "Trace thực thi",
    "detailTraceEmpty": "Không có trace",
    "filterByAgent": "Lọc theo agent",
    "filterBySourceType": "Lọc theo nguồn",
    "sourceTypeCron": "Cron",
    "sourceTypeHeartbeat": "Heartbeat",
    "sourceTypeMemory": "Memory"
  },
  "acp": {
    "title": "ACP",
    "loading": "Đang tải cấu hình ACP...",
    "builtin": "Tích hợp sẵn",
    "custom": "Tùy chỉnh",
    "create": "Thêm agent tùy chỉnh",
    "createTitle": "Tạo agent ACP",
    "createSuccess": "Tạo agent ACP thành công",
    "editTitle": "Chỉnh sửa cấu hình ACP",
    "agentKey": "Khóa agent",
    "agentKeyRequired": "Vui lòng nhập khóa agent",
    "agentKeyInvalid": "Khóa agent chỉ được chứa chữ cái, số, gạch dưới và gạch ngang",
    "agentKeyExists": "Khóa agent này đã tồn tại",
    "enabled": "Đã bật",
    "command": "Lệnh",
    "commandRequired": "Vui lòng nhập lệnh",
    "args": "Tham số",
    "argsHelp": "Mỗi dòng một tham số",
    "env": "Biến môi trường",
    "envHelp": "Dùng định dạng KEY=VALUE, mỗi dòng một biến",
    "envInvalid": "Định dạng không hợp lệ, dùng KEY=VALUE",
    "nodeSettings": "Cài đặt Node",
    "nodePath": "Đường dẫn Node",
    "chooseOtherNode": "Chọn Node khác...",
    "selectNodePath": "Chọn đường dẫn Node",
    "nodePathPrompt": "Nhập đường dẫn file thực thi node",
    "nodeSaved": "Đã lưu cài đặt Node",
    "nodeLoadFailed": "Không tải được cài đặt Node",
    "nodeSaveFailed": "Đường dẫn Node không khả dụng",
    "nodeRuntime": {
      "bundled": "Node tích hợp",
      "system": "Node hệ thống",
      "custom": "Node tuỳ chỉnh"
    },
    "nodeRuntimeReason": {
      "systemNodeMissing": "Không phát hiện Node hệ thống",
      "nodeMissing": "Đường dẫn Node không tồn tại",
      "npxMissing": "Không tìm thấy npx",
      "versionCheckFailed": "Kiểm tra phiên bản thất bại",
      "unavailable": "Không khả dụng"
    }
  },
  "voiceTranscription": {
    "title": "Phiên âm giọng nói",
    "description": "Cấu hình cách xử lý tin nhắn âm thanh đến.",
    "saveSuccess": "Đã lưu chế độ âm thanh",
    "saveFailed": "Lưu chế độ âm thanh thất bại",
    "audioModeLabel": "Chế độ âm thanh",
    "audioModeDescription": "Chọn cách xử lý tin nhắn giọng nói từ các kênh trước khi gửi đến mô hình.",
    "modeAuto": "Tự động (Khuyến nghị)",
    "modeAutoDesc": "Phiên âm giọng nói thành văn bản rồi gửi đến mô hình. Tương thích với mọi mô hình.",
    "modeNative": "Âm thanh gốc",
    "modeNativeDesc": "Gửi file âm thanh trực tiếp đến mô hình. Chỉ hoạt động với mô hình hỗ trợ âm thanh (ví dụ: gpt-4o-audio)."
  },
  "heartbeat": {
    "title": "Heartbeat",
    "description": "Chạy HEARTBEAT.md theo chu kỳ để tự kiểm tra. Mặc định chạy âm thầm, hoặc gửi phản hồi đến kênh trò chuyện cuối.",
    "enabled": "Bật Heartbeat",
    "every": "Chu kỳ",
    "everyRequired": "Bắt buộc",
    "everyMin": "Phải ít nhất 1",
    "timeoutSeconds": "Thời gian chờ thực thi (giây)",
    "timeoutRequired": "Bắt buộc",
    "timeoutMin": "Phải ít nhất 1",
    "timeoutMax": "Tối đa 3600",
    "unitMinutes": "Phút",
    "unitHours": "Giờ",
    "target": "Nơi gửi phản hồi",
    "targetMain": "Chế độ im lặng (mặc định)",
    "targetLast": "Gửi đến kênh trò chuyện cuối",
    "targetInbox": "Gửi vào Hộp thư",
    "activeHours": "Giờ hoạt động (tùy chọn)",
    "activeStart": "Giờ bắt đầu",
    "activeEnd": "Giờ kết thúc",
    "loadFailed": "Tải cấu hình thất bại",
    "saveSuccess": "Đã lưu; Heartbeat đã được tải lại",
    "saveFailed": "Lưu cấu hình thất bại",
    "runNow": "Chạy ngay",
    "runNowSuccess": "Đã kích hoạt Heartbeat. Kiểm tra Hộp thư hoặc kênh đích.",
    "runNowFailed": "Kích hoạt Heartbeat thất bại"
  },
  "workspace": {
    "title": "Tệp tin",
    "workspacePath": "Workspace:",
    "noFiles": "Không có tệp tin",
    "coreFiles": "Tệp cốt lõi",
    "coreFilesDesc": "Định nghĩa nhân cách, danh tính và hướng dẫn công cụ.",
    "uploadTooltip": "Chỉ file ZIP",
    "uploadTooltipWithLimit": "Chỉ file ZIP, tối đa {{limit}}MB",
    "selectFile": "Chọn tệp để chỉnh sửa",
    "fileContent": "Nội dung tệp...",
    "uploadSuccess": "Tải lên thành công",
    "uploadFailed": "Tải lên thất bại",
    "downloadPreparing": "Đang chuẩn bị tải xuống workspace...",
    "downloadSuccess": "Tải workspace thành công",
    "downloadFailed": "Tải workspace thất bại",
    "zipOnly": "Chỉ hỗ trợ file .zip khi tải lên",
    "fileSizeExceeded": "File vượt giới hạn {{limit}}MB. Kích thước hiện tại: {{size}}MB",
    "systemPromptToggleTooltip": "Bật/tắt file này trong system prompt",
    "memoryFileWarning": "MEMORY.md thường được agent truy vấn theo yêu cầu. Đưa vào system prompt có thể làm ngữ cảnh quá dài."
  },
  "agent": {
    "parent": "Cài đặt",
    "agents": "Agent",
    "management": "Quản lý Agent",
    "pageDescription": "Tạo, cấu hình và quản lý nhiều agent AI với workspace và danh tính riêng.",
    "name": "Tên",
    "id": "ID",
    "description": "Mô tả",
    "workspace": "Đường dẫn Workspace",
    "create": "Tạo Agent",
    "createTitle": "Tạo Agent mới",
    "createSuccess": "Tạo agent thành công",
    "createFailed": "Tạo agent thất bại",
    "edit": "Chỉnh sửa",
    "editTitle": "Chỉnh sửa Agent — {{name}}",
    "updateSuccess": "Cập nhật agent thành công",
    "updateFailed": "Cập nhật agent thất bại",
    "delete": "Xóa",
    "deleteConfirm": "Xác nhận xóa Agent",
    "deleteConfirmDesc": "Agent sẽ không khả dụng sau khi xóa, nhưng tệp workspace vẫn được giữ lại",
    "deleteSuccess": "Xóa agent thành công",
    "deleteFailed": "Xóa agent thất bại",
    "selectAgent": "Chọn Agent",
    "defaultDisplayName": "Agent mặc định",
    "currentWorkspace": "Agent hiện tại",
    "switchSuccess": "Đã chuyển agent thành công",
    "switchFailed": "Chuyển agent thất bại",
    "enableSuccess": "Đã bật agent",
    "disableSuccess": "Đã tắt agent",
    "toggleFailed": "Thay đổi trạng thái agent thất bại",
    "enableAgent": "Bật {{name}}",
    "disableAgent": "Tắt {{name}}",
    "disabledAgents": "Đã tắt ({{count}})",
    "pinnedAgents": "Đã ghim",
    "otherAgents": "Trợ lý khác",
    "pinned": "Đã ghim",
    "defaultPinned": "Trợ lý mặc định luôn được ghim",
    "longPressToPin": "Nhấn giữ để ghim",
    "longPressToUnpin": "Nhấn giữ để bỏ ghim",
    "pinAgent": "Ghim trợ lý",
    "unpinAgent": "Bỏ ghim trợ lý",
    "pinSuccess": "Đã ghim trợ lý",
    "unpinSuccess": "Đã bỏ ghim trợ lý",
    "pinFailed": "Không thể cập nhật trạng thái ghim",
    "status": {
      "disabled": "Đã tắt",
      "pending": "Đang chờ khởi động",
      "starting": "Đang khởi động",
      "running": "Đang chạy",
      "failed": "Khởi động thất bại",
      "waitUntilStarted": "Có thể thao tác sau khi khởi động xong"
    },
    "copyTooltip": "Sao chép cấu hình agent",
    "copyDefaultTooltip": "Sao chép dùng agent mặc định làm mẫu",
    "copyTitle": "Sao chép cấu hình Agent",
    "copyNameLabel": "Tên agent mới",
    "copyOptionsLabel": "Nội dung sao chép",
    "copyOptionAgentJson": "agent.json (bắt buộc)",
    "copyOptionAgentJsonHint": "Luôn sao chép cấu hình nguồn đã phân tích và đặt lại ID, tên, workspace cùng channels. Đây không phải bản sao từng byte của agent.json trên đĩa.",
    "copyOptionMdFiles": "AGENTS / SOUL / PROFILE / HEARTBEAT / BOOTSTRAP.md",
    "copyOptionSkills": "skills/ + manifest",
    "copyOptionJobs": "jobs.json",
    "copyOptionJobsHint": "Chỉ sao chép định nghĩa công việc, không gồm lịch sử. Agent mới sẽ chạy theo lịch ngay sau khi tạo.",
    "copySuccess": "Sao chép cấu hình agent thành công",
    "copyFailed": "Sao chép cấu hình agent thất bại"
  },
  "environments": {
    "parent": "Cài đặt",
    "environments": "Biến môi trường",
    "title": "Biến môi trường",
    "description": "Cấu hình các biến môi trường key-value cho agent và kỹ năng.",
    "key": "Khóa",
    "value": "Giá trị",
    "variableNamePlaceholder": "TEN_BIEN",
    "valuePlaceholder": "giá trị",
    "insertRowBelow": "Thêm dòng bên dưới",
    "deleteRow": "Xóa dòng",
    "deleteVariable": "Xóa biến",
    "deleteConfirm": "Xóa \"{{name}}\"?",
    "deleteSelected": "Xóa đã chọn",
    "deleteSelectedConfirm": "Xóa {{label}}?",
    "keyRequired": "Khóa là bắt buộc",
    "invalidKeyFormat": "Định dạng khóa không hợp lệ",
    "duplicateKey": "Khóa trùng lặp",
    "saveSuccess": "Đã lưu biến môi trường",
    "saveFailed": "Lưu thất bại",
    "deleteSuccess": "Đã xóa \"{{name}}\"",
    "deleteFailed": "Xóa thất bại",
    "noVariables": "Chưa có biến môi trường nào.",
    "addVariable": "Thêm biến",
    "loading": "Đang tải…",
    "retry": "Thử lại",
    "of": "trong",
    "selected": "đã chọn"
  },
  "tools": {
    "title": "Công cụ tích hợp",
    "description": "Quản lý các công cụ tích hợp và trạng thái bật/tắt. Công cụ bị tắt sẽ không khả dụng với agent.",
    "emptyState": "Chưa có công cụ nào",
    "loadError": "Tải công cụ thất bại",
    "enableSuccess": "Bật công cụ thành công",
    "disableSuccess": "Tắt công cụ thành công",
    "toggleError": "Thay đổi trạng thái thất bại",
    "enableAll": "Bật tất cả",
    "disableAll": "Tắt tất cả",
    "enableAllSuccess": "Đã bật tất cả công cụ",
    "disableAllSuccess": "Đã tắt tất cả công cụ",
    "allEnabled": "Tất cả công cụ đã bật",
    "allDisabled": "Tất cả công cụ đã tắt",
    "asyncExecution": "Thực thi bất đồng bộ",
    "asyncExecutionEnabled": "Đã bật thực thi bất đồng bộ",
    "asyncExecutionDisabled": "Đã tắt thực thi bất đồng bộ",
    "configure": "Cấu hình",
    "configured": "Đã cấu hình",
    "requiresConfig": "Cần cấu hình",
    "configSaved": "Đã lưu cấu hình",
    "configSaveError": "Lưu cấu hình thất bại",
    "active": "đang hoạt động",
    "available": "Có sẵn",
    "noEnabled": "Không có công cụ nào được bật",
    "goEnableBtn": "Bật ngay",
    "configureAction": "Cấu hình →",
    "enableAction": "Bật →"
  },
  "mcp": {
    "title": "MCP Client",
    "create": "Tạo client",
    "formatSupport": "Định dạng hỗ trợ",
    "standardFormat": "Chuẩn (mcpServers wrapper)",
    "directFormat": "Trực tiếp (key → config object)",
    "singleFormat": "Client đơn (các trường phẳng)",
    "emptyState": "Chưa có MCP client nào",
    "loadError": "Tải MCP client thất bại",
    "createSuccess": "Tạo MCP client thành công",
    "createError": "Tạo MCP client thất bại",
    "updateSuccess": "Cập nhật MCP client thành công",
    "updateError": "Cập nhật MCP client thất bại",
    "enableSuccess": "Bật MCP client thành công",
    "disableSuccess": "Tắt MCP client thành công",
    "toggleError": "Thay đổi trạng thái thất bại",
    "deleteConfirm": "Bạn có chắc muốn xóa MCP client này không?",
    "deleteSuccess": "Xóa MCP client thành công",
    "deleteError": "Xóa MCP client thất bại",
    "maskedFieldHint": "Các trường nhạy cảm được ẩn bằng ***. Chỉnh sửa trực tiếp không được hỗ trợ — thay thế bằng giá trị mới.",
    "tools": "Công cụ & Quyền",
    "noTools": "Không có công cụ nào từ máy chủ MCP này",
    "toolsLoadError": "Tải danh sách công cụ từ máy chủ MCP thất bại",
    "toolsConnecting": "Máy chủ MCP đang kết nối, vui lòng thử lại sau",
    "toolSchema": "Mô tả & Tham số"
  },
  "market": {
    "searchPlaceholder": "Tìm kiếm kỹ năng trên các nền tảng",
    "providerUnavailable": "Nhà cung cấp không khả dụng",
    "noResults": "Không có kết quả",
    "startTyping": "Nhập từ khóa để tìm kiếm",
    "noDescription": "Chưa có mô tả",
    "browseMarket": "Duyệt chợ kỹ năng",
    "installQueue": "Hàng đợi cài đặt",
    "clearCompleted": "Xóa hoàn thành",
    "retry": "Thử lại",
    "status": {
      "queued": "Đang chờ",
      "installing": "Đang cài đặt",
      "completed": "Hoàn thành",
      "failed": "Thất bại",
      "cancelled": "Đã hủy"
    },
    "loadMore": "Tải thêm",
    "noMoreResults": "Không còn kết quả",
    "detail": {
      "title": "Chi tiết kỹ năng",
      "version": "Phiên bản",
      "author": "Tác giả",
      "sourceUrl": "URL cài đặt",
      "slug": "Slug",
      "missing": "—"
    },
    "stats": {
      "downloads": "Lượt tải",
      "stars": "Sao",
      "installs": "Lượt cài đặt",
      "likes": "Lượt thích",
      "views": "Lượt xem",
      "category": "Danh mục",
      "updatedAt": "Cập nhật"
    },
    "categoryPlaceholder": "Tìm danh mục"
  },
  "agentStats": {
    "title": "Thống kê Agent",
    "description": "Xem thống kê agent theo khoảng thời gian đã chọn.",
    "totalSessions": "Tổng phiên",
    "totalMessages": "Tổng tin nhắn",
    "userMessages": "Tin nhắn người dùng",
    "assistantMessages": "Tin nhắn trợ lý",
    "promptTokens": "Token đầu vào",
    "completionTokens": "Token đầu ra",
    "llmCalls": "Lời gọi LLM",
    "toolCalls": "Lời gọi công cụ",
    "channel": "Kênh",
    "sessionCount": "Phiên",
    "sessions": "Phiên",
    "newSessions": "Phiên mới",
    "activeSessions": "Phiên đang hoạt động",
    "messages": "Tin nhắn",
    "messageTrend": "Xu hướng tin nhắn",
    "sessionTrend": "Xu hướng phiên",
    "tokenTrend": "Xu hướng token",
    "llmAndToolTrend": "Xu hướng LLM & công cụ",
    "sessionsByChannel": "Phiên theo kênh",
    "messagesByChannel": "Tin nhắn theo kênh"
  },
  "modelSelector": {
    "placeholder": "Chọn mô hình",
    "searchPlaceholder": "Tìm kiếm mô hình...",
    "noModels": "Không có mô hình nào",
    "loading": "Đang tải mô hình...",
    "error": "Tải mô hình thất bại",
    "default": "Mặc định",
    "custom": "Tùy chỉnh",
    "refresh": "Làm mới danh sách mô hình"
  },
  "modelConfig": {
    "title": "Cấu hình mô hình",
    "temperature": "Nhiệt độ",
    "maxTokens": "Token tối đa",
    "topP": "Top P",
    "reset": "Đặt lại mặc định",
    "save": "Lưu cấu hình",
    "saveSuccess": "Đã lưu cấu hình mô hình",
    "saveFailed": "Lưu cấu hình thất bại"
  },
  "tokenUsage": {
    "title": "Lượng Token",
    "description": "Theo dõi lượng token đã sử dụng theo thời gian.",
    "promptTokens": "Token đầu vào",
    "completionTokens": "Token đầu ra",
    "totalTokens": "Tổng token",
    "noData": "Chưa có dữ liệu",
    "period": "Khoảng thời gian"
  },
  "approval": {
    "title": "Yêu cầu phê duyệt bảo mật",
    "description": "Agent đang yêu cầu phê duyệt để thực thi hành động sau:",
    "approve": "Phê duyệt",
    "deny": "Từ chối",
    "approveSuccess": "Đã phê duyệt",
    "denySuccess": "Đã từ chối",
    "expired": "Yêu cầu đã hết hạn",
    "tool": "Công cụ",
    "arguments": "Tham số",
    "approvePattern": "Luôn Cho Phép",
    "strictModeHint": "Luôn cho phép không khả dụng trong chế độ nghiêm ngặt",
    "approveExact": "Chỉ Lần Này",
    "approvalScope": "Phạm vi phê duyệt",
    "details": "Chi tiết",
    "ownerAgent": "Agent Chủ Sở Hữu",
    "executingAgent": "Agent Đang Thực Thi",
    "severity": "Mức Độ Nghiêm Trọng",
    "findings": "Phát Hiện",
    "parameters": "Tham Số",
    "source": "Nguồn",
    "builtinSource": "Tích Hợp",
    "subSession": "Sub-Agent",
    "approved": "Đã phê duyệt lệnh gọi công cụ",
    "denied": "Đã từ chối lệnh gọi công cụ",
    "approveFailed": "Không thể phê duyệt",
    "denyFailed": "Không thể từ chối",
    "timeoutAutoDenied": "Hết thời gian, tự động từ chối",
    "acknowledge": "Đã Hiểu"
  },
  "preview": {
    "error": {
      "SENSITIVE_FILE_BLOCKED": "File bị chặn bởi File Guard (bảo vệ file nhạy cảm).",
      "OUTSIDE_WORKSPACE": "File nằm ngoài phạm vi workspace. Bật \"Cho phép xem trước ngoài Workspace\" trong Cài đặt → Bảo mật → File Guard.",
      "FORBIDDEN": "Truy cập bị từ chối: không đủ quyền để xem trước file này.",
      "NOT_FOUND": "Không tìm thấy file, có thể đã bị di chuyển hoặc xóa. Nếu đang dùng đường dẫn tương đối, hãy thử dùng đường dẫn tuyệt đối.",
      "LOAD_FAILED": "Không thể tải xem trước file.",
      "LOAD_FAILED_DETAIL": "Không thể tải xem trước file: {{detail}}",
      "UNKNOWN": "Không thể xem trước file này."
    }
  },
  "pluginManager": {
    "title": "Quản lý Plugin",
    "description": "Cài đặt, quản lý và gỡ cài plugin mà không cần khởi động lại dịch vụ.",
    "installed": "Plugin đã cài đặt",
    "noPlugins": "Chưa có plugin nào được cài đặt",
    "installBtn": "Cài đặt Plugin",
    "publishBtn": "Xuất bản Plugin",
    "installTitle": "Cài đặt Plugin",
    "dropPrimary": "Thả thư mục hoặc file ZIP vào đây",
    "dropSecondary": "hoặc nhấn để chọn file ZIP",
    "orFromUrl": "hoặc từ URL",
    "installFromUrl": "Cài đặt từ URL",
    "urlPlaceholder": "https://example.com/plugin.zip",
    "zipOnly": "Chỉ file ZIP có thể kéo thả — kéo thư mục để cài đặt theo thư mục",
    "dropFailed": "Đọc thư mục thất bại",
    "restartHint": "Một số plugin (hooks, monkey-patches) có thể yêu cầu khởi động lại ứng dụng để có hiệu lực.",
    "installing": "Đang cài đặt...",
    "installSuccess": "Cài đặt plugin thành công",
    "installFailed": "Cài đặt plugin thất bại",
    "uninstall": "Gỡ cài đặt",
    "uninstallConfirm": "Gỡ cài đặt plugin \"{{name}}\"?",
    "uninstallSuccess": "Gỡ cài đặt thành công",
    "uninstallFailed": "Gỡ cài đặt thất bại",
    "enabled": "Đã bật",
    "disabled": "Đã tắt",
    "version": "Phiên bản",
    "author": "Tác giả",
    "loadError": "Tải plugin thất bại"
  },
  "codingMode": {
    "title": "Chế độ Lập trình",
    "experimental": "Tính năng thử nghiệm",
    "experimentalDesc": "Chế độ Lập trình biến QwenPaw thành một Web IDE nhẹ với trình soạn thảo code, cây thư mục, tích hợp Git và hỗ trợ lập trình bằng AI.",
    "experimentalNote": "Tính năng này đang thử nghiệm và có thể thay đổi trong các bản cập nhật sau.",
    "confirmBtn": "Xác nhận",
    "enterTooltip": "Vào Chế độ Lập trình",
    "exitTooltip": "Thoát Chế độ Lập trình",
    "btnCode": "Code",
    "btnChat": "Trò chuyện",
    "selectProject": "Chọn dự án lập trình",
    "selectProjectDesc": "Chọn dự án để làm việc, hoặc dùng workspace mặc định",
    "tabWorkspace": "Workspace mặc định",
    "tabClone": "Clone repository",
    "tabLocal": "Import dự án cục bộ",
    "tabNew": "Dự án mới",
    "workspaceDesc": "Dùng thư mục workspace của agent hiện tại",
    "cloneUrl": "URL Git Repository",
    "cloneUrlPlaceholder": "https://github.com/user/repo.git",
    "cloneName": "Tên dự án (tùy chọn)",
    "openDirDesc": "Mở thư mục cục bộ hiện có — không sao chép tệp",
    "openDirBtn": "Mở Thư Mục Này",
    "openDirLoading": "Đang tải...",
    "openDirEmpty": "Không có thư mục con",
    "openDirHome": "Trang chủ",
    "openDirRefresh": "Làm mới",
    "openDirHiddenFolders": "Thư mục ẩn"
  },
  "agentConfig": {
    "title": "Cấu hình",
    "description": "Cấu hình các tham số runtime của agent",
    "reactAgentTitle": "ReAct Agent",
    "llmRetryTitle": "Tự động thử lại LLM",
    "llmRetryEnabled": "Bật tự động thử lại",
    "llmRetryEnabledTooltip": "Tự động thử lại khi LLM gặp lỗi tạm thời như giới hạn tốc độ, timeout hoặc lỗi kết nối.",
    "llmMaxRetries": "Số lần thử lại tối đa",
    "llmMaxRetriesPlaceholder": "Nhập số lần thử lại",
    "llmMaxRetriesRequired": "Bắt buộc nhập số lần thử lại",
    "llmMaxRetriesMin": "Phải ít nhất 1 lần",
    "llmBackoffBase": "Độ trễ cơ sở (giây)",
    "llmBackoffBaseTooltip": "Độ trễ trước lần thử lại đầu tiên. Các lần sau tăng theo cấp số nhân.",
    "llmBackoffBasePlaceholder": "Nhập độ trễ cơ sở",
    "llmBackoffBaseRequired": "Bắt buộc",
    "llmBackoffBaseMin": "Phải ít nhất 0.1 giây",
    "llmBackoffCap": "Độ trễ tối đa (giây)",
    "llmBackoffCapTooltip": "Giới hạn tối đa cho độ trễ thử lại theo cấp số nhân.",
    "llmBackoffCapPlaceholder": "Nhập độ trễ tối đa",
    "llmBackoffCapRequired": "Bắt buộc",
    "llmBackoffCapMin": "Phải ít nhất 0.5 giây",
    "llmBackoffCapGteBase": "Độ trễ tối đa phải lớn hơn hoặc bằng độ trễ cơ sở",
    "llmRateLimiterTitle": "Giới hạn tốc độ LLM",
    "llmMaxConcurrent": "Số lời gọi đồng thời tối đa",
    "llmMaxConcurrentTooltip": "Số lời gọi LLM được phép chạy đồng thời. Dùng chung cho tất cả agent.",
    "llmMaxConcurrentPlaceholder": "Nhập số lời gọi đồng thời",
    "llmMaxConcurrentRequired": "Bắt buộc",
    "llmMaxConcurrentRange": "Phải ít nhất 1",
    "llmMaxQpm": "QPM tối đa (Yêu cầu/phút)",
    "llmMaxQpmTooltip": "Số yêu cầu tối đa trong 60 giây. Yêu cầu vượt quá sẽ chờ. 0 = không giới hạn.",
    "llmMaxQpmPlaceholder": "Nhập QPM tối đa (0 = không giới hạn)",
    "llmMaxQpmRequired": "Bắt buộc",
    "llmMaxQpmRange": "Phải ít nhất 0",
    "llmRateLimitPause": "Thời gian tạm dừng khi bị giới hạn (giây)",
    "llmRateLimitPauseTooltip": "Thời gian tạm dừng khi nhận lỗi 429. Bị ghi đè bởi header Retry-After của API nếu có.",
    "llmRateLimitPausePlaceholder": "Nhập thời gian tạm dừng",
    "llmRateLimitPauseRequired": "Bắt buộc",
    "llmRateLimitPauseMin": "Phải ít nhất 1 giây",
    "llmRateLimitJitter": "Jitter (giây)",
    "llmRateLimitJitterTooltip": "Thêm độ trễ ngẫu nhiên để tránh nhiều yêu cầu đồng loạt sau khi tạm dừng.",
    "llmRateLimitJitterPlaceholder": "Nhập khoảng jitter",
    "llmRateLimitJitterRequired": "Bắt buộc",
    "llmRateLimitJitterMin": "Phải ít nhất 0 giây",
    "llmAcquireTimeout": "Timeout chờ slot (giây)",
    "llmAcquireTimeoutTooltip": "Thời gian tối đa chờ để lấy slot từ rate limiter trước khi báo lỗi.",
    "llmAcquireTimeoutPlaceholder": "Nhập timeout",
    "llmAcquireTimeoutRequired": "Bắt buộc",
    "llmAcquireTimeoutMin": "Phải ít nhất 10 giây",
    "llmAcquireTimeoutGtPauseJitter": "Timeout phải lớn hơn tổng thời gian tạm dừng và jitter",
    "contextManagementTitle": "Quản lý ngữ cảnh",
    "memoryManagerBackend": "Backend quản lý bộ nhớ dài hạn",
    "memoryManagerBackendTooltip": "Chọn remelight (file cục bộ) hoặc adbpg (cơ sở dữ liệu đám mây).",
    "memoryManagerBackendRestartWarning": "Đổi backend quản lý bộ nhớ dài hạn yêu cầu khởi động lại QwenPaw.",
    "maxIters": "Số vòng lặp tối đa",
    "maxItersTooltip": "Số vòng lặp suy luận-hành động tối đa của ReAct agent",
    "maxItersPlaceholder": "Nhập số vòng lặp",
    "maxItersRequired": "Bắt buộc",
    "maxItersMin": "Phải ít nhất 1",
    "agentLoopTitle": "Cài đặt Loop Agent",
    "loopMode": {
      "builtIn": "Tích hợp",
      "builtInNote": "Pipeline đã khóa · Có thể sửa giá trị",
      "templateSectionTitle": "Mẫu Loop",
      "templateSectionDescription": "Chọn mẫu tích hợp hoặc thêm mẫu của riêng bạn.",
      "defaultTab": "Mặc định",
      "goalTab": "Mục tiêu",
      "missionTab": "Nhiệm vụ",
      "defaultDescription": "Loop ReAct được bảo vệ tiêu chuẩn ngoài chế độ cụ thể.",
      "goalDescription": "Loop liên tục có giới hạn cho mục tiêu có thể xác minh.",
      "missionDescription": "Pipeline liên tục cho nhiệm vụ dài và nhiều bước.",
      "gatePipeline": "Pipeline Gate",
      "repetitionTitle": "Bảo vệ khỏi lặp lại",
      "repetitionDescription": "Phát hiện lệnh gọi công cụ lặp lại và can thiệp.",
      "iterationTitle": "Giới hạn vòng lặp",
      "iterationDescription": "Giới hạn số vòng lặp ReAct.",
      "retryTitle": "Kiểm tra hoàn thành định tính",
      "retryDescription": "Chỉ kích hoạt khi agent trả lời bằng văn bản mà không gọi công cụ.",
      "goalTurnTitle": "Giới hạn lượt mục tiêu",
      "goalTurnDescription": "Giới hạn lượt trong một mục tiêu đang hoạt động.",
      "maxGoalTurns": "Số lượt mục tiêu tối đa",
      "goalBudgetTitle": "Ngân sách token mục tiêu",
      "goalBudgetDescription": "Dừng khi toàn bộ mục tiêu đạt ngân sách.",
      "maxGoalTokens": "Số token mục tiêu tối đa",
      "goalCompletionTitle": "Kiểm tra hoàn thành mục tiêu",
      "goalCompletionDescription": "Đọc trạng thái mục tiêu rõ ràng trước khi dừng.",
      "goalCompletionReadOnly": "Việc hoàn thành do giao thức trạng thái mục tiêu tích hợp kiểm soát.",
      "missionProgressTitle": "Kiểm tra tiến độ nhiệm vụ",
      "missionProgressDescription": "Tiếp tục đến khi mọi câu chuyện đạt hoặc chạm giới hạn.",
      "missionProgressReadOnly": "Việc hoàn thành do trạng thái Mission Story tích hợp kiểm soát.",
      "missionIterationTitle": "Giới hạn vòng lặp Mission",
      "missionIterationDescription": "Đặt giới hạn thực thi mặc định cho Mission mới.",
      "workerAttemptsTitle": "Số lần Worker thử",
      "workerAttemptsDescription": "Giới hạn số lần Worker thử lại sau khi Story không đạt xác minh.",
      "missionVerificationTitle": "Chính sách xác minh Mission",
      "missionVerificationDescription": "Đặt hướng dẫn xác minh và lệnh kiểm thử mặc định.",
      "defaultMaxMissionIterations": "Số vòng thực thi tối đa mặc định",
      "defaultMaxMissionIterationsTooltip": "Dùng khi /mission không chỉ định --max-iterations.",
      "maxRetriesPerStory": "Số lần thử lại tối đa cho mỗi Story",
      "maxRetriesPerStoryTooltip": "Số lần Worker thử lại sau kết quả FAIL hoặc PARTIAL từ Verifier.",
      "defaultVerificationInstructions": "Hướng dẫn xác minh (tùy chọn)",
      "defaultVerificationInstructionsHelp": "Hướng dẫn bằng ngôn ngữ tự nhiên áp dụng cho mọi Mission Verifier.",
      "defaultVerificationInstructionsPlaceholder": "Ví dụ: kiểm tra xử lý đường dẫn Windows và giao diện đã kết xuất.",
      "defaultVerifyCommand": "Lệnh kiểm thử mặc định (tùy chọn)",
      "defaultVerifyCommandHelp": "Verifier thử chạy bằng công cụ và quyền thông thường. /mission --verify sẽ ghi đè.",
      "defaultVerifyCommandPlaceholder": "Ví dụ: pytest -q",
      "enableRepetitionProtection": "Bật bảo vệ khỏi lặp lại",
      "removeRule": "Xóa quy tắc",
      "custom": "Tùy chỉnh",
      "customDescription": "Tạo pipeline đã lưu từ các Gate tích hợp của QwenPaw.",
      "duplicate": "Nhân bản",
      "delete": "Xóa",
      "displayName": "Tên hiển thị",
      "duplicateModeName": "Đã tồn tại chế độ Loop có tên này.",
      "slashCommand": "Lệnh slash",
      "description": "Mô tả",
      "availableToAgent": "Khả dụng cho agent này",
      "runsTopToBottom": "Chạy từ trên xuống dưới",
      "addGate": "Thêm Gate",
      "emptyPipeline": "Thêm ít nhất một Gate để chế độ này khả dụng.",
      "iterationGateTitle": "Giới hạn vòng lặp",
      "iterationGateDescription": "Dừng sau một số vòng Loop cố định.",
      "doomGateTitle": "Bảo vệ khỏi lặp lại",
      "doomGateDescription": "Phát hiện lệnh gọi lặp lại và đổi chiến lược.",
      "tokenGateTitle": "Ngân sách token",
      "tokenGateDescription": "Giới hạn token đầu vào và đầu ra.",
      "timeoutGateTitle": "Giới hạn thời gian Loop",
      "timeoutGateDescription": "Dừng ở ranh giới Loop tiếp theo sau khi hết thời gian, không ngắt công việc đang chạy.",
      "toolBudgetGateTitle": "Ngân sách gọi công cụ",
      "toolBudgetGateDescription": "Giới hạn tất cả lệnh gọi và công cụ đã chọn.",
      "retryGateTitle": "Thử lại khi dừng sớm",
      "retryGateDescription": "Nhắc agent xác minh trước khi kết thúc.",
      "rubricGateTitle": "Tiêu chí hoàn thành",
      "rubricGateDescription": "Đánh giá tiêu chí rõ ràng và sửa khi cần.",
      "qualitativeRubricTitle": "Kiểm tra hoàn thành định tính",
      "qualitativeRubricDescription": "Kiểm tra phản hồi văn bản không có lệnh gọi công cụ bằng tiêu chí ngôn ngữ tự nhiên.",
      "qualitativeRubric": "Tiêu chí hoàn thành bằng ngôn ngữ tự nhiên",
      "qualitativeRubricHelp": "Chỉ kích hoạt với phản hồi văn bản không có lệnh gọi công cụ; agent tiếp tục nếu còn việc.",
      "completionRubricTitle": "Kiểm tra tín hiệu hoàn thành",
      "completionRubricDescription": "Kiểm tra tín hiệu hoàn thành trong phản hồi văn bản không có lệnh gọi công cụ.",
      "completionRubricHelp": "Được kích hoạt sau phản hồi văn bản không có lệnh gọi công cụ. Agent xuất tín hiệu hoàn thành khi xong; nếu chưa, agent tiếp tục làm việc cho đến khi đạt số vòng đánh giá tối đa.",
      "completionPrompt": "Prompt kiểm tra hoàn thành",
      "completionPromptHelp": "Mô tả khi nào kết quả được xem là hoàn thành. QwenPaw tự động chèn hướng dẫn xuất tín hiệu hoàn thành.",
      "completionSignal": "Tín hiệu hoàn thành",
      "completionSignalHelp": "QwenPaw chèn tín hiệu này và yêu cầu chỉ xuất tín hiệu đó vào prompt kiểm tra. Loop chỉ kết thúc khi khớp toàn bộ sau khi bỏ khoảng trắng và không phân biệt hoa thường.",
      "removeCriterion": "Xóa tiêu chí {{number}}",
      "totalTokensHelp": "Giới hạn tổng token đầu vào và đầu ra dùng trong lượt này.",
      "promptTokensHelp": "Bao gồm chỉ dẫn hệ thống, ngữ cảnh hội thoại, schema công cụ và kết quả công cụ.",
      "completionTokensHelp": "Giới hạn token do mô hình tạo trong lượt này.",
      "maxIterations": "Số vòng lặp tối đa",
      "historyWindow": "Cửa sổ lịch sử",
      "similarityThreshold": "Ngưỡng tương đồng",
      "totalTokens": "Tổng token tối đa",
      "promptTokens": "Token đầu vào tối đa",
      "completionTokens": "Token đầu ra tối đa",
      "maxSeconds": "Số giây tối đa",
      "maxSecondsHelp": "Thời gian được kiểm tra sau khi phản hồi mô hình hoặc lệnh gọi công cụ hiện tại hoàn tất. Công việc đang chạy không bị ngắt.",
      "allToolCalls": "Tất cả lệnh gọi công cụ",
      "perToolLimits": "Giới hạn theo công cụ",
      "toolName": "Tên công cụ",
      "callLimitAria": "Giới hạn lệnh gọi {{name}}",
      "removeToolLimitAria": "Xóa giới hạn {{name}}",
      "addToolLimit": "Thêm giới hạn theo công cụ",
      "maxRetries": "Số lần thử lại tối đa",
      "retryInstruction": "Chỉ dẫn thử lại",
      "passThreshold": "Ngưỡng đạt",
      "maxEvaluations": "Số vòng đánh giá tối đa",
      "graderError": "Lỗi bộ đánh giá",
      "stopSafely": "Dừng an toàn",
      "verifyOnceMore": "Xác minh thêm một lần",
      "completionCriteria": "Tiêu chí hoàn thành",
      "criterionPlaceholder": "Mô tả kết quả hoàn thành có thể quan sát",
      "required": "Bắt buộc",
      "weight": "Trọng số",
      "addCriterion": "Thêm tiêu chí",
      "moveGateAria": "Di chuyển {{title}}",
      "removeGate": "Xóa Gate",
      "newModeName": "Chế độ Loop mới",
      "defaultCustomDescription": "Pipeline Gate tùy chỉnh.",
      "copyName": "Bản sao {{name}}",
      "createModeAria": "Tạo chế độ Loop tùy chỉnh",
      "createModeTitle": "Tạo chế độ Loop tùy chỉnh",
      "startingTemplate": "Mẫu khởi đầu",
      "startingPipeline": "Pipeline khởi đầu",
      "blankPipelineHint": "Bắt đầu trống và thêm gate sau",
      "safeTemplate": "Chạy an toàn",
      "researchTemplate": "Nghiên cứu có ngân sách",
      "qualityTemplate": "Ưu tiên chất lượng",
      "blankTemplate": "Pipeline trống"
    },
    "doomLoopEnabled": "Bảo vệ hành vi lặp lại",
    "doomLoopEnabledTooltip": "Tự động can thiệp khi agent bị kẹt lặp lại cùng một hành động",
    "doomLoopAfter": "Sau",
    "doomLoopRepetitions": "hành động giống nhau",
    "doomLoopStopAction": "Tạm dừng & Hỏi ý kiến",
    "doomLoopWarnAction": "Gửi nhắc nhở",
    "doomLoopSimpleMode": "Đơn giản",
    "doomLoopAdvancedMode": "Nâng cao",
    "doomLoopWindowSize": "Phạm vi phát hiện",
    "doomLoopWindowSizeTooltip": "Kiểm tra bao nhiêu hành động gần đây để phát hiện lặp lại",
    "doomLoopSimilarity": "Độ nhạy khớp",
    "doomLoopSimilarityTooltip": "Hành động phải giống nhau đến mức nào để tính là lặp lại (thấp hơn = nghiêm ngặt hơn)",
    "doomLoopStages": "Quy tắc can thiệp",
    "doomLoopAction": "Hành động",
    "doomLoopPrompt": "Tin nhắn",
    "doomLoopPromptPlaceholder": "Nội dung nhắc nhở hoặc lý do tạm dừng...",
    "doomLoopAddStage": "Thêm quy tắc",
    "iterationTitle": "Giới hạn lặp lại",
    "iterationEnabled": "Bật giới hạn lặp lại",
    "iterationEnabledTooltip": "Dừng agent sau một số lượt lặp cố định",
    "iterationMaxIterations": "Số lần lặp tối đa",
    "iterationMaxIterationsTooltip": "Số lượt lặp tối đa trước khi dừng",
    "rubricTitle": "Kiểm tra hoàn thành định tính",
    "rubricEnabled": "Bật kiểm tra hoàn thành định tính",
    "rubricEnabledTooltip": "Chỉ kích hoạt khi agent trả lời bằng văn bản mà không gọi công cụ.",
    "rubricPrompt": "Tiêu chí hoàn thành bằng ngôn ngữ tự nhiên",
    "rubricPromptTooltip": "Prompt được chèn để yêu cầu agent đánh giá hoàn thành nhiệm vụ",
    "rubricDesc": "Áp dụng tiêu chí hoàn thành bằng ngôn ngữ tự nhiên cho phản hồi văn bản không có lệnh gọi công cụ và yêu cầu agent tiếp tục nếu còn việc.",
    "rubricPromptPlaceholder": "Bạn không gọi công cụ nào. Nếu nhiệm vụ hoàn thành, hãy xác nhận. Nếu không, tiếp tục với các lệnh gọi công cụ.",
    "rubricMaxInterventions": "Số vòng đánh giá tối đa",
    "rubricMaxInterventionsTooltip": "Số lần kiểm tra hoàn thành tối đa cho phản hồi văn bản không có lệnh gọi công cụ trong một lượt.",
    "inLoopModes": "Bật trong chế độ /goal & /mission",
    "inLoopModesTooltip": "Cũng áp dụng khi chế độ /goal hoặc /mission đang hoạt động",
    "comingSoonEditable": "Cấu hình tùy chỉnh sẽ có trong phiên bản tương lai.",
    "simpleMode": "Đơn giản",
    "advancedMode": "Nâng cao",
    "comingSoon": "Sắp ra mắt",
    "reactModeTab": "Mẫu Loop - Mặc định",
    "goalModeTab": "Mẫu Loop - Goal",
    "missionModeTab": "Mẫu Loop - Mission",
    "goalModeInfoTitle": "Chế độ Goal vs Mặc định",
    "goalModeInfo": "Chế độ mặc định dừng sau khi tạo phản hồi. Chế độ Goal giữ agent lặp hướng tới mục tiêu, sử dụng đánh giá Rubric để xác định hoàn thành. Tất cả hoạt động chạy trong ngữ cảnh agent hiện tại.",
    "missionModeInfoTitle": "Chế độ Mission vs Goal",
    "missionModeInfo": "Chế độ Mission tự động phân tách nhiệm vụ phức tạp, được thực thi bởi các Worker sub-agent độc lập và xác minh bởi Verifier sub-agent. Mỗi nhiệm vụ con chạy trong ngữ cảnh riêng, ngăn ô nhiễm phiên chính.",
    "goalIterationGate": "Cổng Lặp Mục tiêu",
    "goalIterationGateDesc": "Giới hạn số lượt của agent trong phiên mục tiêu, theo dõi số lần lặp và sử dụng token.",
    "goalBudgetGate": "Cổng Ngân sách Token",
    "goalBudgetGateDesc": "Đặt giới hạn chi tiêu token cho phiên mục tiêu. Dừng agent khi vượt ngân sách.",
    "goalRubricGate": "Rubric Hoàn thành Mục tiêu",
    "goalRubricGateDesc": "Đánh giá mục tiêu đã đạt được hay chưa bằng cách kiểm tra trạng thái phiên.",
    "goalDoomGate": "Bảo vệ Lặp lại",
    "goalDoomGateDesc": "Phát hiện mẫu lặp lại trong quá trình thực hiện mục tiêu và kích hoạt can thiệp.",
    "missionProgressGate": "Cổng Tiến độ Nhiệm vụ",
    "missionProgressGateDesc": "Theo dõi hoàn thành user story PRD. Tiếp tục cho đến khi tất cả đạt hoặc đạt tối đa lần lặp.",
    "missionIterBypass": "Bỏ qua Lặp",
    "missionIterBypassDesc": "Tạm thời gỡ bỏ giới hạn lặp ReAct trong quá trình thực hiện nhiệm vụ để cho phép các giai đoạn dài.",
    "customLoopTitle": "Chế độ Vòng lặp Tùy chỉnh",
    "customLoopDesc": "Tạo chế độ vòng lặp riêng với tổ hợp cổng tùy chỉnh. Sắp ra mắt.",
    "autoContinueOnTextOnly": "Tự tiếp tục khi bước chỉ có văn bản",
    "autoContinueOnTextOnlyTooltip": "Khi mô hình kết thúc bước suy luận chỉ bằng văn bản, tự động chèn gợi ý và chạy thêm một lần.",
    "autoGenerateSessionTitle": "Tự tạo tiêu đề phiên",
    "autoGenerateSessionTitleTooltip": "Sau tin nhắn đầu tiên, gọi LLM ngắn để tạo tiêu đề súc tích.",
    "inboxPushEnabled": "Thông báo hộp thư kết quả bộ nhớ",
    "inboxPushEnabledTooltip": "Gửi kết quả tự động ghi nhớ, giấc mơ và tài nguyên vào hộp thư. Việc tắt thông báo không dừng các tác vụ bộ nhớ.",
    "autoMemoryInterval": "Khoảng tự động ghi nhớ",
    "autoMemoryIntervalTooltip": "Kích hoạt tự động ghi nhớ sau mỗi N truy vấn của người dùng. 0 tắt tự động ghi nhớ định kỳ. 1 nghĩa là tự động ghi nhớ sau mỗi truy vấn. Khuyến nghị đặt 2-5; đặt 1 cần chú ý mức tiêu thụ token cao.",
    "autoMemoryIntervalPlaceholder": "Nhập 0 để tắt tự động ghi nhớ định kỳ",
    "autoMemoryIntervalRequired": "Bắt buộc nhập khoảng tự động ghi nhớ",
    "autoMemoryIntervalMin": "Khoảng tự động ghi nhớ phải lớn hơn hoặc bằng 0",
    "autoMemorySearch": "Tìm kiếm bộ nhớ tự động (Beta)",
    "autoMemorySearchTooltip": "Tự động chạy tìm kiếm bộ nhớ ở mỗi lượt hội thoại. Mỗi truy vấn sẽ tự động gọi khả năng tìm kiếm bộ nhớ, giúp QwenPaw hiểu bạn hơn, nhưng sẽ làm tăng mức tiêu thụ token.",
    "autoMaxResults": "Số kết quả tối đa khi tự động tìm kiếm",
    "autoMaxResultsTooltip": "Số kết quả tối đa trả về khi bật tìm kiếm bộ nhớ tự động",
    "autoMaxResultsRequired": "Bắt buộc nhập số kết quả tối đa",
    "autoMaxResultsMin": "Số kết quả tối đa phải ít nhất là 1",
    "embeddingConfigTitle": "Cấu hình mô hình embedding",
    "embeddingBackend": "Loại SDK Embedding",
    "embeddingBackendTooltip": "Loại SDK dùng để gọi mô hình embedding",
    "embeddingBackendPlaceholder": "Chọn loại SDK",
    "embeddingApiKey": "API Key",
    "embeddingApiKeyTooltip": "API key cho nhà cung cấp embedding; để trống nếu không cần xác thực",
    "embeddingApiKeyPlaceholder": "Để trống nếu không cần",
    "embeddingBaseUrl": "Base URL",
    "embeddingBaseUrlTooltip": "Base URL của API embedding. Với backend tương thích OpenAI, endpoint tùy chỉnh này là tùy chọn; API Key và Tên mô hình là bắt buộc.",
    "embeddingBaseUrlPlaceholder": "https://dashscope.aliyuncs.com/compatible-mode/v1",
    "embeddingHost": "Host",
    "embeddingHostTooltip": "URL dịch vụ Ollama. Để trống để dùng host mặc định của Ollama.",
    "embeddingHostPlaceholder": "http://localhost:11434",
    "embeddingModelName": "Tên mô hình",
    "embeddingModelNameTooltip": "Tên mô hình embedding. Bắt buộc cho mọi backend embedding.",
    "embeddingModelNamePlaceholder": "text-embedding-v4",
    "embeddingEnableCache": "Bật cache embedding",
    "embeddingEnableCacheTooltip": "Cache kết quả embedding để giảm tính toán lặp lại",
    "embeddingMaxCacheSize": "Kích thước cache tối đa",
    "embeddingMaxCacheSizeTooltip": "Số mục tối đa trong cache embedding",
    "embeddingMaxCacheSizeRequired": "Bắt buộc nhập kích thước cache tối đa",
    "embeddingUseDimensions": "Dùng số chiều tùy chỉnh",
    "embeddingUseDimensionsTooltip": "Dùng số chiều embedding tùy chỉnh (chỉ một số mô hình hỗ trợ)",
    "embeddingDimensions": "Số chiều embedding",
    "embeddingDimensionsTooltip": "Số chiều của embedding; có hiệu lực khi bật số chiều tùy chỉnh",
    "embeddingDimensionsRequired": "Bắt buộc nhập số chiều embedding",
    "embeddingDimensionsMin": "Số chiều phải ít nhất là 1",
    "embeddingMaxInputLength": "Độ dài đầu vào embedding tối đa",
    "embeddingMaxInputLengthTooltip": "Độ dài đầu vào tối đa (token) cho một yêu cầu embedding",
    "embeddingMaxInputLengthRequired": "Bắt buộc nhập độ dài đầu vào embedding tối đa",
    "embeddingMaxBatchSize": "Kích thước batch tối đa",
    "embeddingMaxBatchSizeTooltip": "Số mục tối đa trong một yêu cầu embedding theo batch",
    "embeddingMaxBatchSizeRequired": "Bắt buộc nhập kích thước batch tối đa",
    "embeddingRestartWarning": "Cấu hình mô hình embedding không hỗ trợ hot reload. Hãy lưu và khởi động lại dịch vụ để áp dụng thay đổi.",
    "embeddingActivationNote": "Embedding được bật khi các trường bắt buộc của backend đã chọn được điền đầy đủ.",
    "embeddingEnableHint": "Embedding được bật khi các trường bắt buộc được điền: Tên mô hình và API Key cho backend tương thích OpenAI hoặc Gemini; Tên mô hình cho Ollama.",
    "rebuildMemoryIndex": "Xây dựng lại chỉ mục bộ nhớ",
    "rebuildMemoryIndexWarning": "Thao tác này sẽ xóa và xây dựng lại chỉ mục tìm kiếm bộ nhớ, đồng thời có thể sử dụng nhiều CPU và bộ nhớ. Chỉ nên dùng để sửa chỉ mục bị hỏng hoặc kết quả tìm kiếm bất thường.",
    "rebuildMemoryIndexConfirmTitle": "Xây dựng lại chỉ mục bộ nhớ?",
    "rebuildMemoryIndexConfirm": "Mức sử dụng CPU và bộ nhớ có thể tăng đáng kể trong quá trình xây dựng lại. Không nên thực hiện trừ khi chỉ mục bị hỏng hoặc cần sửa chữa.",
    "rebuildMemoryIndexSuccess": "Đã xây dựng lại chỉ mục bộ nhớ",
    "rebuildMemoryIndexFailed": "Không thể xây dựng lại chỉ mục bộ nhớ: {{error}}",
    "shellCommandTimeout": "Timeout lệnh shell (giây)",
    "shellCommandTimeoutTooltip": "Timeout mặc định cho công cụ execute_shell_command.",
    "shellCommandTimeoutPlaceholder": "Nhập timeout",
    "shellCommandTimeoutRequired": "Bắt buộc",
    "shellCommandTimeoutMin": "Phải ít nhất 1 giây",
    "shellCommandExecutable": "Shell thực thi",
    "shellCommandExecutableTooltip": "Đường dẫn shell dùng cho execute_shell_command. Để trống để tự phát hiện.",
    "shellCommandExecutablePlaceholder": "Ví dụ: /bin/bash hoặc powershell.exe (để trống = tự phát hiện)",
    "maxInputLength": "Độ dài đầu vào tối đa",
    "maxInputLengthTooltip": "Độ dài tối đa (token) cho cửa sổ ngữ cảnh mô hình",
    "maxInputLengthPlaceholder": "Nhập độ dài tối đa",
    "maxInputLengthRequired": "Bắt buộc",
    "maxInputLengthMin": "Phải ít nhất 1000",
    "contextCompactTitle": "Cấu hình nén ngữ cảnh",
    "contextCompactEnabled": "Bật nén ngữ cảnh",
    "contextCompactEnabledTooltip": "Tự động nén ngữ cảnh để tránh tràn cửa sổ ngữ cảnh",
    "contextCompactRatio": "Ngưỡng nén (tỉ lệ)",
    "contextCompactRatioTooltip": "Kích hoạt nén khi độ dài ngữ cảnh đạt tỉ lệ này so với tối đa",
    "contextCompactRatioRequired": "Bắt buộc",
    "contextCompactThreshold": "Ngưỡng nén (token)",
    "contextCompactThresholdTooltip": "Tự tính từ: độ dài tối đa × tỉ lệ nén.",
    "contextCompactThresholdPlaceholder": "Tự tính",
    "contextCompactReserveRatio": "Tỉ lệ dự trữ",
    "contextCompactReserveRatioTooltip": "Phần ngữ cảnh gần nhất được giữ nguyên sau khi nén",
    "contextCompactReserveRatioRequired": "Bắt buộc",
    "contextCompactReserveThreshold": "Ngưỡng dự trữ (token)",
    "contextCompactReserveThresholdTooltip": "Tự tính từ: độ dài tối đa × tỉ lệ dự trữ.",
    "contextCompactReserveThresholdPlaceholder": "Tự tính",
    "toolResultCompactRecentN": "Phạm vi kết quả gần đây",
    "toolResultCompactRecentNTooltip": "Chia danh sách tin nhắn thành 2 phân đoạn: N tin nhắn gần nhất và tin nhắn cũ hơn.",
    "toolResultCompactRecentNRequired": "Bắt buộc",
    "toolResultCompactOldThreshold": "Ngưỡng tin nhắn cũ (byte)",
    "toolResultCompactOldThresholdTooltip": "Kết quả công cụ trong tin nhắn cũ được nén khi vượt giới hạn byte này.",
    "toolResultCompactOldThresholdPlaceholder": "Nhập ngưỡng ký tự",
    "toolResultCompactOldThresholdRequired": "Bắt buộc",
    "toolResultCompactRecentThreshold": "Ngưỡng tin nhắn gần đây (byte)",
    "toolResultCompactRecentThresholdTooltip": "Kết quả công cụ trong N tin nhắn gần nhất được nén khi vượt giới hạn byte này.",
    "toolResultCompactRecentThresholdPlaceholder": "Nhập ngưỡng ký tự",
    "toolResultCompactRecentThresholdRequired": "Bắt buộc",
    "toolResultCompactRetentionDays": "Số ngày lưu file kết quả",
    "toolResultCompactRetentionDaysTooltip": "Số ngày giữ lại file kết quả công cụ đã nén, file hết hạn sẽ tự động dọn dẹp",
    "toolResultCompactRetentionDaysRequired": "Bắt buộc",
    "historyRetentionDays": "Số ngày lưu lịch sử",
    "historyRetentionDaysTooltip": "Số ngày lưu lịch sử trò chuyện lâu dài. Các bản ghi cũ hơn sẽ tự động bị xóa khi khởi động và khi tắt agent.",
    "historyRetentionDaysRequired": "Bắt buộc",
    "historyRetentionDaysForeverWarning": "Đặt 0 sẽ lưu lịch sử vĩnh viễn — dung lượng lưu trữ sẽ tăng không giới hạn.",
    "historyRetentionDaysLargeWarning": "Khoảng thời gian lưu lớn có thể chiếm nhiều dung lượng lưu trữ.",
    "exemptFileExtensions": "Phần mở rộng file miễn trừ",
    "exemptFileExtensionsTooltip": "Kết quả read_file cho các phần mở rộng này dùng ngưỡng tin nhắn gần đây",
    "exemptFileExtensionsPlaceholder": ".md, .txt, .json",
    "exemptToolNames": "Tên công cụ miễn trừ",
    "exemptToolNamesTooltip": "Kết quả từ các công cụ này dùng ngưỡng tin nhắn gần đây",
    "exemptToolNamesPlaceholder": "chat_with_agent, list_agents",
    "language": "Ngôn ngữ agent",
    "languageTooltip": "Ngôn ngữ cho các file nhân cách (SOUL.md, AGENTS.md,...). Thay đổi sẽ sao chép lại các file MD theo ngôn ngữ mới.",
    "languageConfirmTitle": "Đổi ngôn ngữ agent",
    "languageConfirmContent": "Đổi ngôn ngữ sẽ ghi đè các file sau:\n\n  SOUL.md, AGENTS.md, PROFILE.md, MEMORY.md, BOOTSTRAP.md, HEARTBEAT.md\n\nNếu bạn đã tùy chỉnh các file này, hãy sao lưu trước.",
    "languageConfirmOk": "Đổi ngôn ngữ",
    "languageSaveSuccess": "Đã cập nhật ngôn ngữ",
    "languageSaveSuccessWithFiles": "Đã cập nhật ngôn ngữ, đã sao chép {{count}} file MD",
    "languageSaveFailed": "Cập nhật ngôn ngữ thất bại",
    "saveSuccess": "Đã lưu cấu hình",
    "saveFailed": "Lưu cấu hình thất bại",
    "timezone": "Múi giờ người dùng",
    "timezoneTooltip": "Dùng cho tác vụ định kỳ, hiển thị giờ và ngữ cảnh agent. Mặc định theo múi giờ hệ thống.",
    "timezoneRequired": "Vui lòng chọn múi giờ",
    "selectTimezone": "Chọn múi giờ",
    "timezoneSaveSuccess": "Đã cập nhật múi giờ",
    "timezoneSaveFailed": "Cập nhật múi giờ thất bại",
    "loadFailed": "Tải cấu hình thất bại",
    "historyMaxLength": "Độ dài lịch sử tối đa",
    "historyMaxLengthTooltip": "Độ dài đầu ra tối đa (ký tự) cho lệnh /history",
    "historyMaxLengthRequired": "Bắt buộc",
    "historyMaxLengthMin": "Phải ít nhất 1000",
    "historyMaxLengthPlaceholder": "Nhập độ dài tối đa",
    "tokenCountModel": "Mô hình đếm token",
    "tokenCountModelTooltip": "Tên mô hình dùng để đếm token chính xác; đặt là \"default\" để dùng ước tính tích hợp",
    "tokenCountModelPlaceholder": "Tên mô hình hoặc default",
    "tokenCountUseMirror": "Dùng mirror HuggingFace",
    "tokenCountUseMirrorTooltip": "Dùng mirror HuggingFace khi tải tokenizer"
  },
  "models": {
    "llmConfiguration": "Cấu hình LLM",
    "providersTitle": "Nhà cung cấp",
    "providersDescription": "Cấu hình API key và endpoint cho từng nhà cung cấp.",
    "llmTitle": "Mô hình",
    "defaultLlm": "LLM mặc định",
    "llmDescription": "Đặt mô hình LLM mặc định toàn cục. Bạn có thể chọn mô hình riêng cho từng Agent ở trang Trò chuyện.",
    "configureProvider": "Cấu hình {{name}}",
    "baseURL": "Base URL",
    "apiKey": "API Key",
    "advancedConfig": "Cấu hình nâng cao",
    "authMode": "Chế độ xác thực",
    "authModeApiKey": "API Key (x-api-key)",
    "authModeAuthToken": "Auth Token (Authorization: Bearer)",
    "customHeaders": "Header tùy chỉnh",
    "customHeadersHint": "Thêm vào mỗi yêu cầu API, ví dụ: x-app: cli",
    "customHeaderKey": "Tên header",
    "customHeaderValue": "Giá trị header",
    "addHeader": "+ Thêm header",
    "generateConfig": "Tham số tạo văn bản",
    "generateConfigHint": "Tham số dạng JSON object, sẽ được mở rộng vào mỗi yêu cầu.",
    "relayReasoningLabel": "Chuyển tiếp suy luận",
    "relayReasoningHint": "Chuyển tiếp nội dung suy luận sang các lượt hội thoại tiếp theo",
    "thinkingModeLabel": "Bật suy nghĩ",
    "thinkingModeHint": "Bật để kích hoạt suy nghĩ/lập luận. Tắt để vô hiệu hóa suy nghĩ.",
    "thinkingBudgetLabel": "Ngân sách suy nghĩ",
    "thinkingBudgetHint": "Sử dụng ngân sách suy nghĩ mặc định của mô hình",
    "switchToManual": "Thủ công",
    "switchToAuto": "Tự động",
    "reasoningEffortLabel": "Độ sâu lập luận",
    "reasoningEffortHint": "Kiểm soát độ sâu lập luận (dòng OpenAI)",
    "saveSuccess": "Đã lưu cấu hình nhà cung cấp",
    "saveFailed": "Lưu cấu hình thất bại",
    "loadFailed": "Tải cấu hình thất bại",
    "testConnection": "Kiểm tra kết nối",
    "testSuccess": "Kết nối thành công",
    "testFailed": "Kết nối thất bại",
    "noProviders": "Chưa có nhà cung cấp nào",
    "addProvider": "Thêm nhà cung cấp",
    "getModels": "Lấy danh sách mô hình",
    "discovered": "Mô hình khả dụng:",
    "add": "Thêm",
    "local": "Cục bộ",
    "localType": "Loại",
    "localEmbedded": "Nhúng (in-process)",
    "localDownloadFirst": "Dịch vụ mô hình chưa khởi động",
    "localDownloadModel": "Tải mô hình",
    "localModelsTitle": "{{provider}} — Mô hình cục bộ",
    "localNoModels": "Chưa có mô hình nào được tải xuống",
    "localRepoId": "ID Repository mô hình",
    "localRepoIdRequired": "Vui lòng nhập ID repository mô hình",
    "localRepoIdPlaceholder": "Ví dụ: Qwen/Qwen3-0.6B-GGUF",
    "localFilename": "Tên file (tùy chọn)",
    "localFilenamePlaceholder": "Ví dụ: mistral-7b.Q4_K_M.gguf",
    "localFilenameHint": "Để trống để tự chọn lượng tử hóa tốt nhất",
    "localSource": "Nguồn",
    "localDownloadSuccess": "Tải mô hình thành công",
    "filterByModality": "Phương thức đầu vào:",
    "filterFreeOnly": "Chỉ mô hình miễn phí:",
    "selectAllProviders": "Chọn tất cả",
    "clearProviderSelection": "Bỏ chọn tất cả",
    "noMatchingProviders": "Không có nhà cung cấp phù hợp"
  },
  "security": {
    "parent": "Cài đặt",
    "security": "Bảo mật",
    "title": "Bảo mật",
    "description": "Quản lý các tính năng bảo mật cho công cụ và kỹ năng.",
    "toolGuardTitle": "Tool Guard",
    "toolGuardDescription": "Cấu hình quét bảo mật cho lời gọi công cụ. Các thao tác nguy hiểm sẽ yêu cầu phê duyệt trước khi thực thi.",
    "enabled": "Bật Tool Guard",
    "enabledTooltip": "Khi bật, lời gọi công cụ sẽ được quét các mẫu nguy hiểm trước khi thực thi",
    "guardedTools": "Công cụ được giám sát",
    "guardedToolsTooltip": "Công cụ yêu cầu phê duyệt khi phát hiện mẫu nguy hiểm. Để trống để dùng bộ mặc định tích hợp.",
    "guardedToolsPlaceholder": "Chọn công cụ hoặc nhập tên tùy chỉnh",
    "deniedTools": "Công cụ bị chặn",
    "deniedToolsTooltip": "Công cụ luôn bị từ chối mà không cần hỏi phê duyệt",
    "deniedToolsPlaceholder": "Chọn công cụ luôn từ chối",
    "saveSuccess": "Đã lưu cài đặt Tool Guard",
    "saveFailed": "Lưu cài đặt thất bại",
    "loadFailed": "Tải cài đặt thất bại",
    "fileGuard": {
      "title": "File Guard",
      "description": "Bảo vệ các file và thư mục nhạy cảm khỏi bị truy cập bởi công cụ agent.",
      "enableLabel": "Bật File Guard",
      "path": "Đường dẫn",
      "actions": "Thao tác",
      "add": "Thêm",
      "inputPlaceholder": "Nhập đường dẫn file hoặc thư mục (ví dụ: ~/.ssh/ hoặc /etc/passwd)",
      "empty": "Chưa có đường dẫn nhạy cảm tùy chỉnh nào",
      "removeConfirm": "Xóa đường dẫn này?",
      "saveSuccess": "Đã lưu cài đặt File Guard",
      "saveFailed": "Lưu cài đặt File Guard thất bại",
      "loadFailed": "Tải cài đặt File Guard thất bại"
    },
    "allowNoAuthHosts": {
      "title": "Máy chủ không cần xác thực",
      "description": "Các địa chỉ IP được phép truy cập mà không cần xác thực.",
      "add": "Thêm IP",
      "inputPlaceholder": "Nhập địa chỉ IP (ví dụ: 192.168.1.100 hoặc ::1)",
      "empty": "Chưa có địa chỉ IP nào",
      "default": "Mặc định",
      "removeConfirm": "Xóa địa chỉ IP này khỏi danh sách trắng?",
      "duplicate": "Địa chỉ IP này đã có trong danh sách",
      "invalidIP": "Định dạng địa chỉ IP không hợp lệ",
      "saveSuccess": "Đã lưu cài đặt",
      "saveFailed": "Lưu cài đặt thất bại",
      "loadFailed": "Tải cài đặt thất bại"
    },
    "skillScanner": {
      "title": "Skill Scanner",
      "description": "Tự động quét kỹ năng để phát hiện mối đe dọa bảo mật trước khi bật hoặc cài đặt.",
      "mode": "Chế độ quét",
      "modeTooltip": "Kiểm soát cách xử lý kỹ năng không an toàn: chặn, chỉ cảnh báo, hoặc tắt",
      "modeBlock": "Chặn",
      "modeWarn": "Chỉ cảnh báo",
      "modeOff": "Tắt",
      "timeout": "Timeout quét (giây)",
      "timeoutTooltip": "Thời gian tối đa chờ quét hoàn thành",
      "saveSuccess": "Đã lưu cài đặt Skill Scanner",
      "saveFailed": "Lưu thất bại",
      "loadFailed": "Tải thất bại"
    }
  },
  "channels": {
    "title": "Kênh",
    "description": "Quản lý và cấu hình các kênh nhắn tin",
    "loading": "Đang tải kênh...",
    "configSaved": "Đã lưu cấu hình",
    "configFailed": "Lưu cấu hình thất bại",
    "channelType": "Loại kênh",
    "status": "Trạng thái",
    "totalItems": "Tổng {{count}} mục",
    "botPrefix": "Tiền tố bot",
    "showToolCalls": "Hiển thị thông tin gọi công cụ",
    "showToolCallsTooltip": "Hiển thị thông tin gọi công cụ cho người dùng (tắt để ẩn)",
    "showToolResults": "Hiển thị thông tin kết quả công cụ",
    "showToolResultsTooltip": "Hiển thị thông tin kết quả công cụ cho người dùng (tắt để ẩn)",
    "toolCallMaxLength": "Độ dài hiển thị tối đa của lệnh gọi công cụ",
    "toolResultMaxLength": "Độ dài hiển thị tối đa của kết quả công cụ",
    "toolMaxLengthTooltip": "Đặt là 0 để không giới hạn độ dài",
    "showThinking": "Hiển thị suy luận",
    "showThinkingTooltip": "Hiển thị nội dung suy luận của mô hình (tắt để ẩn)",
    "noTextDebounce": "Debounce không văn bản",
    "noTextDebounceTooltip": "Khi bật, các tin nhắn chỉ chứa phương tiện (ảnh/video/tệp) sẽ được lưu tạm, đợi tin nhắn văn bản tiếp theo đến rồi gộp xử lý. Tắt để xử lý ngay tất cả tin nhắn. Tin nhắn thoại luôn được xử lý ngay.",
    "streamingEnabled": "Xuất streaming",
    "ackMessage": "Tin nhắn xác nhận",
    "ackMessageTooltip": "Gửi phản hồi tức thì khi nhận được tin nhắn, trước khi xử lý",
    "wechatSetupGuide": "Bot tài khoản WeChat cá nhân (giao thức iLink). Lần đầu khởi động sẽ in URL mã QR; quét để ủy quyền.",
    "wechatBotToken": "Bot Token",
    "wechatBotTokenTooltip": "Bearer token sau khi đăng nhập bằng mã QR. Để trống để kích hoạt đăng nhập bằng mã QR.",
    "wechatBotTokenPlaceholder": "Tự điền sau khi quét QR, hoặc dán thủ công",
    "wechatBotTokenFile": "Đường dẫn file token",
    "wechatMediaDir": "Thư mục media",
    "enabledSection": "Đã kích hoạt",
    "enabledCount": "{{count}}",
    "availableSection": "Chưa kích hoạt",
    "enableAction": "Kích hoạt",
    "noEnabledChannels": "Không có kênh nào được kích hoạt",
    "goEnableChannels": "Kích hoạt kênh",
    "slackBotToken": "Bot Token",
    "slackBotTokenTooltip": "Slack Bot User OAuth Token, bắt đầu bằng xoxb-",
    "slackAppToken": "App Token",
    "slackAppTokenTooltip": "Slack App-Level Token cho Socket Mode, bắt đầu bằng xapp-",
    "slackProxyTooltip": "URL proxy HTTP để kết nối đến Slack API"
  },
  "cronJobs": {
    "title": "Tác vụ định kỳ",
    "description": "Tạo và quản lý các tác vụ tự động thực thi theo lịch định sẵn.",
    "createJob": "Tạo tác vụ",
    "createFromTemplate": "Tạo từ mẫu",
    "editJob": "Chỉnh sửa tác vụ",
    "templateModalTitle": "Chọn mẫu tác vụ",
    "templateModalDescription": "Chọn mẫu tích hợp và điều chỉnh các tham số chính trước khi lưu.",
    "useTemplate": "Dùng mẫu này",
    "templateTagPersonal": "Cá nhân",
    "templateTagTeam": "Nhóm",
    "templateTagReminder": "Nhắc nhở",
    "templateTagCalendar": "Lịch",
    "templateTagCalendarRecommended": "Lịch (Khuyến nghị)",
    "confirmDelete": "Xác nhận xóa",
    "deleteConfirm": "Bạn có chắc muốn xóa tác vụ định kỳ này không?",
    "okText": "OK",
    "cancelText": "Hủy",
    "deleteText": "Xóa",
    "id": "ID tác vụ",
    "name": "Tên tác vụ",
    "enabled": "Trạng thái",
    "saveResultToInbox": "Lưu kết quả vào Hộp thư",
    "saveResultToInboxTooltip": "Khi bật, các lần thực thi thành công sẽ được lưu vào Hộp thư",
    "silentDelivery": "Gửi im lặng",
    "silentDeliveryTooltip": "Chạy tác vụ agent và giữ lại phiên cùng dấu vết, nhưng không gửi kết quả tới kênh."
  },
  "backup": {
    "title": "Sao lưu",
    "description": "Sao lưu và khôi phục workspace và cấu hình agent.",
    "create": "Tạo bản sao lưu",
    "import": "Nhập",
    "export": "Xuất",
    "restore": "Khôi phục",
    "delete": "Xóa",
    "batchDelete": "Xóa đã chọn",
    "batchDeleteConfirm": "Bạn có chắc muốn xóa {{count}} bản sao lưu? Không thể hoàn tác.",
    "deleteConfirm": "Bạn có chắc muốn xóa bản sao lưu này? Không thể hoàn tác.",
    "name": "Tên",
    "createdAt": "Ngày tạo",
    "scopeSummary": "Phạm vi",
    "descriptionLabel": "Mô tả",
    "noBackups": "Chưa có bản sao lưu nào.",
    "loadFailed": "Tải danh sách sao lưu thất bại",
    "createTitle": "Tạo bản sao lưu",
    "backupMode": "Chế độ sao lưu",
    "fullBackup": "Sao lưu toàn bộ",
    "fullBackupDesc": "Sao lưu tất cả bao gồm workspace của mọi agent, cài đặt toàn cục, kho kỹ năng và bí mật",
    "customBackup": "Sao lưu tùy chỉnh",
    "partialBackup": "Sao lưu một phần",
    "exportConfirm": "Xác nhận xuất",
    "importTitle": "Nhập bản sao lưu",
    "importSuccess": "Nhập sao lưu thành công",
    "importFailed": "Nhập sao lưu thất bại",
    "importConflictTitle": "Bản sao lưu đã tồn tại",
    "importConflictDesc": "Đã có bản sao lưu với ID này. Bạn có muốn ghi đè không?",
    "importReplace": "Ghi đè",
    "agents": "{{count}} Agent",
    "allAgents": "Tất cả Agent",
    "globalConfig": "Cài đặt toàn cục",
    "skillPool": "Kho kỹ năng",
    "secrets": "Bí mật",
    "selected": "Đã chọn {{count}}",
    "fileCount": "{{count}} tệp",
    "totalSize": "{{size}}",
    "progressStarting": "Đang bắt đầu sao lưu...",
    "progressAgent": "Đang sao lưu agent {{index}} / {{total}}...",
    "progressSaving": "Đang lưu file sao lưu...",
    "progressDone": "Sao lưu hoàn tất",
    "localModelsNotice": "File sao lưu không bao gồm file mô hình cục bộ. Khi di chuyển sang thiết bị khác, bạn cần tải lại các mô hình đó."
  },
  "skills": {
    "title": "Kỹ năng",
    "description": "Quản lý kỹ năng và khả năng của agent.",
    "importHub": "Tải lên qua URL",
    "supportedSources": "Nguồn được hỗ trợ:",
    "importSkills": "Nhập kỹ năng",
    "enterSkillUrl": "Nhập URL kỹ năng",
    "supportedSkillUrlSources": "Chợ kỹ năng được hỗ trợ:",
    "urlExamples": "Ví dụ URL:",
    "urlValid": "URL hợp lệ từ {{source}}",
    "invalidUrl": "URL không hợp lệ",
    "clickToFill": "Nhấn để điền URL",
    "invalidSkillUrlSource": "Vui lòng xác minh URL kỹ năng từ chợ được hỗ trợ",
    "type": "Loại",
    "installedFrom": "Được cài từ",
    "source": "Nguồn",
    "path": "Đường dẫn",
    "tags": "Nhãn",
    "builtin": "Tích hợp sẵn",
    "custom": "Tùy chỉnh",
    "addSkill": "Thêm kỹ năng",
    "createSkill": "Tạo kỹ năng",
    "uploadZip": "Tải lên qua Zip",
    "downloadFromPool": "Tải từ kho kỹ năng",
    "viewSkill": "Xem kỹ năng",
    "editSkill": "Chỉnh sửa kỹ năng",
    "skillName": "Tên kỹ năng",
    "skillNameRequired": "Vui lòng nhập tên kỹ năng",
    "deleteConfirm": "Xóa kỹ năng này?",
    "deleteSuccess": "Đã xóa kỹ năng",
    "deleteFailed": "Xóa kỹ năng thất bại",
    "loadFailed": "Tải kỹ năng thất bại",
    "saveSuccess": "Đã lưu kỹ năng",
    "saveFailed": "Lưu kỹ năng thất bại",
    "emptyState": "Chưa có kỹ năng nào",
    "enabledSkills": "Kỹ năng đã kích hoạt",
    "disabledSkills": "Kỹ năng chưa kích hoạt",
    "active": "kích hoạt"
  },
  "skillPool": {
    "description": "Kho kỹ năng cục bộ dùng chung cho kỹ năng tích hợp và tải lên từ workspace.",
    "broadcast": "Phân phối cho Agent",
    "broadcastHint": "Phân phối kỹ năng đến các agent được chọn",
    "refreshHint": "Làm mới kho kỹ năng từ đĩa",
    "deleteExternalConfirm": "Thao tác này sẽ xóa file kỹ năng ngoài tại {{path}} khỏi đĩa.",
    "deleteExternalBatchWarning": "Các kỹ năng ngoài đã chọn sẽ bị xóa vĩnh viễn khỏi đĩa.",
    "broadcastTitle": "Phân phối {{name}}",
    "importBuiltin": "Cập nhật kỹ năng tích hợp",
    "importBuiltinHint": "Cập nhật kỹ năng tích hợp lên phiên bản mới nhất",
    "importBuiltinAlertHint": "{{count}} thay đổi tích hợp cần xem xét",
    "importBuiltinSuccess": "Đã nhập kỹ năng tích hợp: {{names}}",
    "importBuiltinConflicts": "Bỏ qua do trùng tên: {{names}}",
    "importBuiltinNoChanges": "Không có thay đổi tích hợp nào để nhập",
    "emptyState": "Kho kỹ năng trống",
    "loadFailed": "Tải kho kỹ năng thất bại"
  },
  "tool": {
    "readFile": "Đọc {{file}}",
    "readFileDefault": "Đọc file",
    "writeFile": "Tạo {{file}}",
    "writeFileDefault": "Tạo file",
    "editFile": "Chỉnh sửa {{file}}",
    "editFileDefault": "Chỉnh sửa file",
    "appendFile": "Thêm vào {{file}}",
    "appendFileDefault": "Thêm vào file",
    "grepSearch": "Tìm {{pattern}}",
    "grepSearchDefault": "Tìm kiếm grep",
    "globSearch": "Glob {{pattern}}",
    "globSearchDefault": "Tìm kiếm glob",
    "viewImage": "Xem ảnh {{file}}",
    "viewImageDefault": "Xem ảnh",
    "viewVideo": "Xem video {{file}}",
    "viewVideoDefault": "Xem video",
    "desktopScreenshot": "Chụp màn hình",
    "sendFile": "Gửi {{file}}",
    "sendFileDefault": "Gửi file",
    "browserUse": "Duyệt web {{detail}}",
    "browserNavigate": "Mở {{url}}",
    "browserNavigateDefault": "Mở trang web",
    "browserClick": "Nhấn vào trang web",
    "browserType": "Nhập vào trang web",
    "browserSnapshot": "Chụp trang web",
    "browserScroll": "Cuộn trang web",
    "getCurrentTime": "Lấy thời gian hiện tại",
    "setTimer": "Đặt hẹn giờ",
    "executeShell": "Chạy lệnh shell",
    "listFiles": "Liệt kê tệp tin",
    "searchWeb": "Tìm kiếm web",
    "sendMessage": "Gửi tin nhắn",
    "createMemory": "Tạo bộ nhớ",
    "searchMemory": "Tìm bộ nhớ",
    "memorySearch": "Tìm bộ nhớ {{query}}",
    "memorySearchDefault": "Tìm bộ nhớ",
    "updateMemory": "Cập nhật bộ nhớ",
    "deleteMemory": "Xóa bộ nhớ",
    "inputProgress": "Đã nhận {{count}} ký tự",
    "rawInputPreview": "Đầu vào thô trực tiếp (4.096 ký tự cuối)"
  },
  "sessions": {
    "title": "Phiên làm việc",
    "description": "Xem và quản lý các phiên chat đang hoạt động",
    "loading": "Đang tải phiên...",
    "confirmDelete": "Xác nhận xóa",
    "deleteConfirm": "Bạn có chắc muốn xóa phiên này không?",
    "batchDeleteConfirm": "Bạn có chắc muốn xóa {{count}} phiên đã chọn không?",
    "deleteSuccess": "Xóa phiên thành công",
    "deleteFailed": "Xóa phiên thất bại",
    "batchDeleteSuccess": "Đã xóa thành công {{count}} phiên",
    "batchDeleteFailed": "Xóa hàng loạt thất bại",
    "saveSuccess": "Lưu phiên thành công",
    "saveFailed": "Lưu phiên thất bại",
    "batchDeleteButton": "Xóa hàng loạt",
    "filterTitle": "Lọc theo tiêu đề",
    "filterUserId": "Lọc theo ID người dùng",
    "filterChannel": "Lọc theo kênh",
    "allChannels": "Tất cả kênh",
    "totalItems": "Tổng {{count}} mục",
    "selectedItems": "Đã chọn {{count}} mục",
    "editSession": "Chỉnh sửa phiên",
    "pleaseInputName": "Vui lòng nhập tên phiên",
    "sessionNamePlaceholder": "Tên phiên",
    "activeTab": "Đang hoạt động",
    "archivedTab": "Đã lưu trữ",
    "archivedAtColumn": "Thời gian lưu trữ",
    "archive": {
      "action": "Lưu trữ",
      "unaction": "Bỏ lưu trữ",
      "batchAction": "Lưu trữ hàng loạt",
      "batchUnaction": "Bỏ lưu trữ hàng loạt",
      "success": "Đã lưu trữ cuộc trò chuyện",
      "successHint": "Đã lưu trữ. Xem tại Bảng điều khiển > Phiên > Đã lưu trữ.",
      "failed": "Lưu trữ thất bại",
      "unarchiveSuccess": "Đã bỏ lưu trữ",
      "unarchiveFailed": "Bỏ lưu trữ thất bại",
      "batchSuccess": "Đã lưu trữ {{count}} cuộc trò chuyện",
      "batchFailed": "Lưu trữ hàng loạt thất bại",
      "batchUnarchiveSuccess": "Đã bỏ lưu trữ {{count}} cuộc trò chuyện",
      "batchUnarchiveFailed": "Bỏ lưu trữ hàng loạt thất bại",
      "groupLabel": "Đã lưu trữ ({{count}})",
      "modalTitle": "Cuộc trò chuyện đã lưu trữ",
      "unarchiveAll": "Bỏ lưu trữ tất cả",
      "noArchived": "Không có cuộc trò chuyện đã lưu trữ"
    }
  },
  "loop": {
    "gotoSettings": "Cài đặt Loop Agent",
    "selectorTitle": "Chế độ Loop",
    "selectorHint": "Chọn cách agent tiếp tục công việc",
    "selectorAria": "Chọn chế độ Loop",
    "builtInModes": "Tích hợp",
    "customModes": "Tùy chỉnh và plugin",
    "starting": "Đang bắt đầu",
    "running": "Đang chạy",
    "awaiting_user": "Đang chờ bạn trả lời",
    "activePersistentDescription": "Chế độ này duy trì trong cuộc trò chuyện cho đến khi hoàn tất hoặc cuộc trò chuyện được đặt lại.",
    "activeCustomDescription": "Chế độ tùy chỉnh này duy trì cho đến khi dùng /mode off, /clear hoặc /new.",
    "loadError": "Không thể tải một số chế độ Loop.",
    "retry": "Thử lại",
    "modes": {
      "default": {
        "name": "Mặc định",
        "description": "Loop agent được kiểm soát tiêu chuẩn."
      },
      "goal": {
        "name": "Mục tiêu",
        "description": "Liên tục hướng tới một mục tiêu cụ thể và có thể kiểm chứng."
      },
      "mission": {
        "name": "Nhiệm vụ",
        "description": "Chạy tác vụ nhiều bước có cấu trúc và liên tục."
      }
    }
  }
}
