Files
AgentHub/client/src/i18n/locales/vi/common.json
T
nntrivi2001 daf5b7be92 feat: edit in the Changes panel, git graph history, plan quota (v2.3.0)
- Changes panel: a working file opens in a CodeMirror editor with its diff
  inline (DiffEditor.tsx, @codemirror/merge, lazy-loaded); Changes folds the
  unchanged lines, Whole file shows them; side by side at 50/50 and full
  width; a Revert per block; original from HEAD or the branch's merge base
  (`mergeBase` on GET /git/changes?range=branch)
- Every diff: green = line added whole, red = removed whole, blue = edited
  in place (--diff-mod)
- History drawn as a commit graph (#58: `parents` on GET /git/log,
  --date-order; lib/commitGraph.ts)
- Per-workspace never-stage list, drawn orange in the Files tree (--kept);
  closed Terminal rows past three deleted
- Status bar plan quota for Claude (per account) and Codex
  (GET /api/pricing/quota, server/lib/quota.js); compact hover panel that
  stays open, Refresh button with a spinner
- Settings → Appearance holds language, theme and pet; Ctrl+Shift+C copies;
  compact sidebar navigation and short session times
2026-10-06 15:38:25 +07:00

207 lines
8.4 KiB
JSON

{
"refresh": "Làm mới",
"retry": "Thử lại",
"cancel": "Hủy",
"export": "Xuất",
"loading": "Đang tải...",
"noData": "Không có dữ liệu",
"total": "Tổng",
"active": "đang hoạt động",
"total_lower": "tổng",
"subagent": "Subagent",
"subagents": "Subagent",
"subagent_label_one": "{{count}} Subagent",
"subagent_label_other": "{{count}} Subagent",
"events": "sự kiện",
"event": "sự kiện",
"sessions": "phiên",
"session": "phiên",
"agents": "Agent",
"agent": "Agent",
"live": "Trực tiếp",
"offline": "Ngoại tuyến",
"running": "đang chạy",
"dashboardRun": "Chạy",
"days": "ngày",
"hours": "giờ",
"updated": "Đã cập nhật ",
"lastUpdated": "Cập nhật lần cuối: ",
"showMore": "Hiển thị thêm (còn {{count}})",
"plusMore": "+{{count}} nữa",
"ofSessions": "% số phiên",
"save": "Lưu",
"edit": "Sửa",
"delete": "Xóa",
"actions": "Thao tác",
"close": "Đóng",
"unexpectedError": "Lỗi không xác định",
"depth": "Độ sâu",
"type": "Loại",
"statusLabel": "Trạng thái",
"status": {
"working": "Đang xử lý",
"waiting": "Đang chờ",
"completed": "Hoàn tất",
"error": "Lỗi",
"active": "Đang hoạt động",
"abandoned": "Bị bỏ dở"
},
"awaitingReason": {
"notification": {
"label": "Cần phản hồi",
"desc": "Đang bị chặn bởi lời nhắc cấp quyền hoặc yêu cầu nhập — Claude không thể tiếp tục cho đến khi bạn phản hồi."
},
"stop": {
"label": "Xong lượt",
"desc": "Claude đã trả lời xong; phiên sẽ chờ cho đến khi bạn gửi prompt tiếp theo."
},
"session_start": {
"label": "Chờ prompt",
"desc": "Phiên vừa khởi động hoặc tiếp tục và đang ở prompt trống — chưa có yêu cầu nào được gửi."
},
"interrupted": {
"label": "Bị ngắt",
"desc": "Lượt vừa rồi bị ngắt (Esc hoặc hook được khôi phục) — Claude đang chờ chỉ dẫn của bạn."
}
},
"time": {
"justNow": "vừa xong",
"mAgo": "{{count}} phút trước",
"hAgo": "{{count}} giờ trước",
"dAgo": "{{count}} ngày trước",
"justNowShort": "vừa xong",
"mAgoShort": "{{count}} phút",
"hAgoShort": "{{count}} giờ",
"dAgoShort": "{{count}} ngày"
},
"pagination": {
"previous": "Trước",
"next": "Tiếp",
"showing": "Hiển thị {{from}}-{{to}} / {{total}}"
},
"token": {
"input": "Đầu vào",
"output": "Đầu ra",
"cacheRead": "Đọc bộ nhớ đệm",
"cacheWrite": "Ghi bộ nhớ đệm",
"totalTokens": "Tổng token"
},
"cost": {
"model": "Mô hình",
"cost": "Chi phí",
"totalCost": "Tổng chi phí",
"totalEstimatedCost": "Tổng chi phí ước tính"
},
"duration": {
"h_m": "{{h}}h {{m}}m",
"m_s": "{{m}}m {{s}}s",
"s": "{{s}}s"
},
"eventDetail": {
"summary": "Tóm tắt",
"seeDetailsBelow": "Xem chi tiết đầy đủ bên dưới trong {{fields}}",
"eventId": "ID sự kiện",
"recordedAt": "Ghi lúc",
"session": "Phiên",
"sessionId": "ID phiên",
"agentId": "ID Agent",
"agent": "Agent",
"cwd": "Thư mục làm việc",
"permissionMode": "Chế độ quyền",
"toolUseId": "ID Lượt Dùng Công Cụ",
"toolName": "Công Cụ",
"toolInput": "Đầu Vào Công Cụ",
"toolResponse": "Phản Hồi Công Cụ",
"isError": "Lỗi",
"transcriptPath": "Đường Dẫn Bản Ghi",
"agentTranscriptPath": "Đường Dẫn Bản Ghi Subagent",
"hookEventName": "Tên Sự Kiện Hook",
"stopReason": "Lý Do Dừng",
"stopHookActive": "Hook Dừng Đang Bật",
"subagentType": "Loại Subagent",
"agentType": "Loại Agent",
"notificationType": "Loại Thông Báo",
"message": "Tin Nhắn",
"prompt": "Câu Lệnh",
"model": "Mô Hình",
"reason": "Lý Do",
"source": "Nguồn",
"imported": "Đã Nhập",
"type": "Loại",
"timestamp": "Thời Điểm",
"uuid": "UUID",
"durationMs": "Thời Lượng (ms)",
"compactionNumber": "Số Lần Nén",
"totalCompactions": "Tổng Số Lần Nén",
"lastAssistantMessage": "Tin Nhắn Trợ Lý Cuối",
"rawPayload": "Dữ Liệu Thô",
"copy": "Sao chép",
"copied": "Đã sao chép",
"noPayload": "Không có dữ liệu cho sự kiện này.",
"viewDetails": "Xem chi tiết",
"expand": "Mở rộng sự kiện",
"collapse": "Thu gọn sự kiện"
},
"eventFilters": {
"searchPlaceholder": "Tìm tóm tắt, công cụ, dữ liệu...",
"status": "Trạng thái",
"eventType": "Loại sự kiện",
"toolName": "Công cụ",
"agentId": "Agent",
"sessionId": "Phiên",
"from": "Từ",
"to": "Đến",
"clearAll": "Xóa bộ lọc",
"noOptions": "Không có lựa chọn",
"showing": "Hiển thị {{shown}} / {{total}}",
"loadMore": "Tải thêm",
"loading": "Đang tải...",
"noResults": "Không có sự kiện nào khớp với bộ lọc",
"grouped": "Nhóm theo lần gọi công cụ",
"flat": "Danh sách phẳng",
"groupEventCount_one": "{{count}} sự kiện",
"groupEventCount_other": "{{count}} sự kiện",
"help": {
"toggle": "Trợ giúp",
"title": "Về sự kiện, bộ lọc và nhóm",
"subtitle": "Nhấn để mở - trạng thái, vòng đời, ngữ nghĩa bộ lọc, giá trị bộ lọc",
"valuesTitle": "Mỗi bộ lọc chấp nhận gì",
"valueStatusDesc": "Lối tắt mở rộng thành event_type (Working → PreToolUse, Completed → Stop/SubagentStop/Compaction, ...).",
"valueEventTypeDesc": "Giá trị event_type thực có trong DB. Lấy từ /api/events/facets.",
"valueToolNameDesc": "Giá trị tool_name có trong DB (Bash, Edit, Read, Grep, mcp__...). Lấy từ /api/events/facets.",
"valueAgentIdDesc": "UUID đầy đủ của agent (main + subagent). Chọn để giới hạn theo các agent cụ thể.",
"valueSessionIdDesc": "UUID của phiên. Thường bạn sẽ vào /sessions/:id, nhưng cái này cho phép giao nhiều phiên.",
"valueSearchDesc": "Khớp chuỗi con trong summary, tool_name và payload JSON thô. Debounce 300ms.",
"valueDateRangeDesc": "Mốc thời gian ISO dưới/trên cho created_at của sự kiện.",
"statusesTitle": "Trạng thái",
"statusesIntro": "Trạng thái được suy ra từ event_type.",
"statusWorkingDesc": "Agent bắt đầu gọi công cụ (PreToolUse).",
"statusConnectedDesc": "Công cụ hoàn tất và trả kết quả (PostToolUse).",
"statusCompletedDesc": "Mốc vòng đời (Stop, SubagentStop, Compaction).",
"statusErrorDesc": "Sự kiện lỗi (error, APIError).",
"statusIdleDesc": "Sự kiện vòng đời / siêu dữ liệu (Notification, TurnDuration, SessionStart, SessionEnd).",
"lifecycleTitle": "Vòng đời sự kiện",
"lifecycleDesc": "Một lần gọi công cụ thường phát ra hai sự kiện chia sẻ tool_use_id:",
"lifecycleFlow": "PreToolUse (Working) → PostToolUse (Connected) → ... → Stop (Completed)",
"filtersTitle": "Cách bộ lọc hoạt động",
"filterTip1": "Các bộ lọc kết hợp AND giữa các danh mục. Trong một danh mục, nhiều lựa chọn là OR.",
"filterTip2": "Status là lối tắt mở rộng thành event_type (Working → PreToolUse, Completed → Stop/SubagentStop/Compaction, ...).",
"filterTipGrouping": "Mẹo nhóm: một hàng nhóm cần cả Pre và Post. Khi lọc theo Status, hãy chọn Working + Connected cùng lúc để giữ nguyên cặp - nếu không, nhóm chỉ hiện một nửa.",
"filterTip3": "Tìm kiếm văn bản khớp summary, tool_name và dữ liệu thô.",
"filterTip4": "Khoảng ngày áp dụng cho created_at của mỗi sự kiện."
}
},
"examples": "Ví dụ",
"help": "Trợ giúp",
"copied": "Đã sao chép",
"copyFailed": "Không sao chép được vào bộ nhớ tạm",
"dismiss": "Đóng",
"confirm": "Xác nhận",
"unsaved": {
"title": "Bỏ các thay đổi chưa lưu?",
"message": "Các chỉnh sửa của bạn chưa được lưu và sẽ bị mất.",
"discard": "Bỏ thay đổi",
"keep": "Tiếp tục sửa"
}
}