{ "action.reset": "Đặt lại worktree", "actionError": "Thao tác workspace thất bại: {{message}}", "actionErrorUnknown": "Lỗi không xác định", "add": "Thêm workspace", "addLane": "Tạo workspace từ một thư mục làm việc", "addLaneBaseLabel": "Nhánh để tạo nhánh mới", "addLaneBranchBusy": "{{branch}} — đang được checkout tại {{path}}", "addLaneBranchExistingHint": "Worktree checkout đúng nhánh này — không tạo nhánh mới, không cần nhánh gốc.", "addLaneBranchExistingLabel": "Nhánh cần checkout", "addLaneBranchHintAuto": "Để trống để server tự đặt tên nhánh theo tiêu đề.", "addLaneBranchLabel": "Tên nhánh mới", "addLaneBranchModeCurrent": "Nhánh hiện tại", "addLaneBranchModeCurrentHint": "Làm thẳng trên nhánh repo đang mở (main) — không tạo worktree, không fork nhánh. Chuyển sang chế độ Repo.", "addLaneBranchModeExisting": "Nhánh có sẵn", "addLaneBranchModeNew": "Nhánh mới", "addLaneBranchPlaceholder": "Tự động — đặt theo tiêu đề", "addLaneNoBranches": "Repo này chưa có commit nào nên worktree không có gì để rẽ nhánh. Hãy thêm nó thành workspace Repo: commit trước, rồi publish từ bảng Changes.", "addLaneNoBranchesUseRepo": "Dùng làm workspace Repo", "addLaneNoFreeBranches": "Mọi nhánh của repo này đều đang nằm trong một worktree. Hãy tạo nhánh mới.", "addLaneExists": "Thư mục này đã có workspace: #{{id}} {{title}}. Workspace đó đã được chọn; hãy chọn thư mục khác để thêm workspace mới.", "addLaneNotARepo": "Chưa phải repo git (hoặc không có quyền đọc).", "addLaneProvisionFailed": "Tạo worktree thất bại hoặc quá thời gian chờ — workspace vẫn tồn tại nhưng tự động thiết lập đã bị bỏ qua. Kiểm tra git facts của workspace, rồi chạy thiết lập agents/mcp thủ công.", "addLaneRepoHint": "Một repo git có sẵn. Dashboard tự tạo worktree mới cho workspace, không phải thư mục bạn chọn.", "addLaneRepoHintAdopt": "Một thư mục có sẵn. Dashboard theo dõi nguyên trạng — không tạo worktree, không tạo nhánh mới.", "addLaneRepoLabel": "Repo nguồn", "addLaneRepoLabelAdopt": "Thư mục", "addLaneSetupClose": "Đóng", "addLaneSetupMcp": "MCP server", "addLaneSetupProfile": "Profile", "addLaneSetupTitle": "Thiết lập", "addLaneTitleLabel": "Tiêu đề", "addLaneTitlePlaceholder": "Không bắt buộc", "addLaneNoTools": "Chưa có AI tool nào được cài và bật.", "addLaneNoToolsLink": "Mở Cài đặt → AI Tools", "addLaneWorktreeDetached": "(detached)", "addLaneWorktreesMore": "+{{count}} nữa", "addLaneWorktreesTitle": "Worktree của repo này ({{count}})", "browse.button": "Duyệt", "browse.empty": "Thư mục này trống.", "browse.fileTitle": "Duyệt chọn tệp", "browse.select": "Chọn thư mục này", "browse.back": "Quay lại (Alt+←)", "browse.create": "Tạo", "browse.editPath": "Gõ đường dẫn (Ctrl+L)", "browse.filter": "Lọc…", "browse.forward": "Tiến (Alt+→)", "browse.hint": "Nháy đúp hoặc Enter để mở · Backspace để lên · gõ chữ để nhảy tới", "browse.home": "Thư mục chính", "browse.modified": "Ngày sửa", "browse.name": "Tên", "browse.newFolder": "Thư mục mới", "browse.newFolderName": "Tên thư mục", "browse.noMatch": "Không có mục nào khớp bộ lọc.", "browse.places": "Vị trí", "browse.recent": "Gần đây", "browse.selectFile": "Chọn tệp", "browse.showHidden": "Hiện mục ẩn", "browse.hostFolder": "Thư mục máy chủ", "browse.hostFolderHint": "Duyệt thư mục của tài khoản máy chủ ({{path}}). Workspace ở đó chạy bằng tài khoản máy chủ dùng chung cho mọi admin — không phải tài khoản riêng của bạn.", "browse.up": "Lên một cấp (Backspace)", "browse.workspaces": "Workspace", "browse.title": "Duyệt chọn thư mục", "changes.back": "Tất cả file", "changes.bin": "bin", "changes.binary": "File nhị phân — không hiển thị.", "changes.collapse": "Thu gọn bảng thay đổi", "changes.closeRepo": "Đóng repository", "changes.closeOtherRepos": "Đóng các repository khác", "changes.collapseAll": "Thu gọn tất cả file", "changes.collapseAllFolders": "Thu gọn tất cả thư mục", "changes.collapseContext": "Bớt dòng xung quanh", "changes.collapseFile": "Thu gọn {{path}}", "changes.commitPlaceholder": "Nội dung commit", "changes.suggestMessage": "Gợi ý nội dung commit bằng AI (Claude, các file đã tick)", "changes.conflicted": "xung đột", "changes.discard": "Bỏ thay đổi của file này", "changes.discardConfirm": "Bấm lần nữa để bỏ — không thể hoàn tác", "changes.empty.branch": "Nhánh này không khác nhánh gốc.", "changes.empty.commit": "Commit này không đổi file nào.", "changes.empty.work": "Không có gì chưa commit.", "changes.expand": "Mở bảng thay đổi", "changes.expandAll": "Mở tất cả file", "changes.expandAllFolders": "Mở tất cả thư mục", "changes.download": "Tải xuống", "changes.upload": "Tải file lên thư mục gốc của workspace", "changes.uploadHere": "Tải file lên đây…", "changes.uploaded_one": "Đã tải {{count}} file lên {{dir}}", "changes.uploaded_other": "Đã tải {{count}} file lên {{dir}}", "changes.uploadFailed": "Không tải lên được {{name}}: {{message}}", "changes.expandContext": "Hiện thêm dòng xung quanh", "changes.expandFile": "Mở {{path}}", "changes.fileGone": "File này không còn thay đổi nào trong phạm vi đang xem.", "changes.fileTruncated": "Diff bị cắt bớt — mở file trong editor để xem phần còn lại.", "changes.commentLine": "Comment dòng {{n}} — dán vào pane của workspace này", "changes.commentOn": "Comment {{at}} — dán vào pane bạn dùng gần nhất; chưa gửi gì cho tới khi bạn nhấn Enter ở đó", "changes.commentSend": "Dán vào pane", "changes.addToChat": "Thêm vào chat", "changes.commentCancel": "Huỷ", "changes.commentNoPane": "Chưa có terminal nào của workspace này đang hiện — hãy mở session (hoặc thu hẹp khung Changes) trước", "changes.layout.split": "Hai cột", "changes.layout.unified": "Một cột", "changes.loading": "Đang đọc working copy…", "changes.mode.browse": "Tệp", "changes.mode.history": "Lịch sử", "changes.mode.overview": "Thay đổi", "changes.mode.review": "Xem toàn bộ", "changes.noCommits": "Chưa có commit nào.", "changes.noHunks": "Không có thay đổi nội dung.", "changes.noMatches": "Không có file nào khớp.", "changes.openFile": "Mở {{path}}", "changes.quickOpen": "Tìm file theo đường dẫn…", "changes.range.branch": "So với {{base}}", "changes.range.baseBranch": "nhánh gốc", "changes.range.branchHint": "{{base}}...HEAD — toàn bộ phần nhánh này thêm vào so với {{base}}", "changes.range.work": "Chưa commit", "changes.range.workHint": "Working tree so với HEAD — những gì vừa sửa mà chưa commit", "changes.refresh": "Tải lại", "changes.size.full": "Toàn màn hình", "changes.restore": "Thu nhỏ", "changes.fileCount_one": "{{count}} tệp", "changes.fileCount_other": "{{count}} tệp", "changes.dropEdits": "Bỏ các chỉnh sửa chưa lưu của file này?", "changes.stage": "Đưa file này vào index", "changes.title": "Thay đổi", "changes.truncated": "Một phần thay đổi đã bị lược bớt để bảng này còn mượt.", "changes.unavailable": "Thư mục của workspace này không phải repo git đọc được.", "changes.unavailableFolder": "Thư mục này không phải repo git đọc được.", "changes.unstage": "Bỏ file này khỏi index", "changes.changesView": "Thay đổi", "changes.wholeFile": "Toàn bộ file", "destructive.blocked.adopted": "Đây là thư mục đã nhận và không thể thay đổi bằng thao tác worktree.", "destructive.blocked.missing": "Thư mục workspace không còn, nên không thể tiếp tục thao tác này.", "destructive.blocked.unreadable": "Không thể đọc thư mục workspace như một Git worktree, nên không thể tiếp tục thao tác này.", "destructive.cancel": "Hủy", "destructive.count.bytesEstimate": "Dung lượng giải phóng (ước tính)", "destructive.count.dirty": "Tệp đã sửa", "destructive.count.events": "Sự kiện", "destructive.count.head": "HEAD", "destructive.count.sessions": "Phiên", "destructive.count.tokenRows": "Dòng token", "destructive.count.unpushed": "Commit chưa đẩy", "destructive.count.untracked": "Tệp chưa theo dõi", "destructive.force": "Tôi hiểu các commit chưa đẩy này sẽ bị loại bỏ.", "destructive.loading": "Đang tải trạng thái hiện tại…", "destructive.notice.activeSessionSkipped": "Một hoặc nhiều phiên trong workspace này vẫn đang hoạt động và sẽ được giữ lại, không bị dọn.", "destructive.notice.adopted": "Workspace này trỏ tới thư mục của bạn. Chỉ bản ghi trên bảng điều khiển bị xóa — thư mục và các tệp bên trong không bị thay đổi.", "destructive.notice.missing": "Thư mục workspace đã không còn. Việc xóa chỉ bỏ bản ghi trên bảng điều khiển; không tệp nào trên đĩa và không bản ghi Git nào bị đụng tới.", "destructive.notice.unreadable": "Không thể đọc thư mục workspace như một Git worktree. Điều đó không ảnh hưởng gì: chỉ bản ghi trên bảng điều khiển bị xóa, thư mục không bao giờ bị đụng tới.", "destructive.purge.confirm": "Xóa lịch sử", "destructive.purge.message": "Hãy xác nhận các số liệu hiện tại trước khi xóa lịch sử phiên đã lưu.", "destructive.purge.title": "Xóa lịch sử workspace?", "destructive.remove.confirm": "Xóa bản ghi workspace", "destructive.remove.message": "Chỉ bản ghi của workspace trên bảng điều khiển bị xóa. Working tree, nhánh và cơ sở dữ liệu của workspace được giữ nguyên — bạn tự xóa nếu thực sự muốn bỏ chúng.", "destructive.remove.title": "Xóa bản ghi workspace?", "destructive.reset.confirm": "Đặt lại worktree", "destructive.reset.message": "Hãy xác nhận các số liệu hiện tại trước khi đặt lại worktree này.", "destructive.reset.survives": "Các tệp Git bỏ qua như node_modules và .env được giữ lại; các tệp chưa theo dõi sẽ bị xóa.", "destructive.reset.title": "Đặt lại worktree được quản lý?", "destructive.warning.no-remote": "Chưa cấu hình Git remote, nên không có bản sao lưu ở xa. Bạn vẫn có thể tiếp tục.", "features.archived": "đã lưu trữ", "features.live": "Phiên bản trực tiếp", "features.viewingArchived": "Xem tính năng đã lưu trữ \"{{slug}}\" — workspace tiếp tục chạy; đây là ảnh chụp nhanh chỉ đọc.", "git.filesHeading_one": "{{count}} tệp thay đổi", "git.filesHeading_other": "{{count}} tệp thay đổi", "git.filesMore_one": "… và {{count}} tệp nữa", "git.filesMore_other": "… và {{count}} tệp nữa", "git.noDelta": "mới", "git.uncommitted": "{{dirty}} đã sửa · {{untracked}} chưa theo dõi", "gitBar.branchCreate": "Tạo", "gitBar.branchCreateHint": "Tạo nhánh này mà không chuyển sang", "gitBar.branchDelete": "Xoá", "gitBar.branchDeleteHint": "Xoá nhánh đang chọn (git từ chối nếu còn commit chưa merge)", "gitBar.branchNewPlaceholder": "Tên nhánh mới…", "gitBar.fetch": "Fetch", "gitBar.fetchHint": "git fetch --all --prune", "gitBar.errNoRemote": "Không có remote để push hoặc pull. Hãy thêm remote, hoặc đặt upstream cho nhánh này, trong terminal.", "gitBar.inSync": "đã đồng bộ", "gitBar.newLane": "Tạo workspace mới", "gitBar.newLaneHeld": "Nhánh đã được checkout tại {{path}} — git chỉ cho một worktree trên mỗi nhánh", "gitBar.newLaneHint": "Mở Thêm workspace để tạo worktree anh em trên nhánh đang chọn", "gitBar.noCommits": "chưa có commit", "gitBar.noUpstream": "chưa push", "gitBar.publish": "Publish…", "gitBar.publishApply": "Publish", "gitBar.publishBranch": "Publish nhánh", "gitBar.publishBranchHint": "git push -u origin HEAD — nhánh này chưa có upstream", "gitBar.publishHint": "Thêm remote tên origin rồi push nhánh này lên đó (git remote add origin + git push -u origin HEAD)", "gitBar.publishUrl": "URL remote: https://host/owner/repo.git hoặc git@host:owner/repo.git", "gitBar.pull": "Pull", "gitBar.pullHint": "git pull --ff-only — nhánh đã rẽ nhánh thì báo lỗi chứ không merge", "gitBar.push": "Push", "gitBar.nothingToPush": "Không có gì để push — {{upstream}} đã có mọi commit.", "gitBar.pushHint": "git push -u origin HEAD", "gitBar.switch": "Nhánh", "gitBar.switchApply": "Chuyển nhánh", "gitBar.switchCurrent": "hiện tại", "gitBar.switchDirty": "Hãy commit hoặc bỏ các thay đổi chưa commit trước", "gitBar.switchHint": "Đổi worktree này sang nhánh local khác", "gitBar.switchLabel": "Đổi nhánh…", "gitBar.unbornHint": "Hãy commit trước, rồi publish repo này lên remote.", "locks.held_one": "Đang giữ {{count}} khóa", "locks.held_other": "Đang giữ {{count}} khóa", "mode.repo": "Repo", "mode.repoHint": "Gắn thẳng thư mục này làm workspace, nguyên trạng — không worktree, không nhánh mới.", "mode.worktree": "Worktree", "mode.worktreeHint": "Tạo worktree git mới + nhánh mới từ repo nguồn.", "mode.clone": "Clone", "mode.cloneHint": "Clone một repository qua HTTPS hoặc SSH vào thư mục của bạn, thành workspace mới.", "clone.urlLabel": "URL repository", "clone.urlHint": "https://host/owner/repo.git, git@host:owner/repo.git hoặc ssh://… — SSH dùng key riêng của bạn (Cài đặt → Git).", "clone.parentLabel": "Clone vào thư mục", "clone.parentHint": "Repository sẽ được clone vào {{path}}", "clone.nameLabel": "Tên thư mục", "clone.cloning": "Đang clone…", "clone.loginNeeded": "{{host}} cần đăng nhập: username và mật khẩu hoặc access token.", "clone.loginRejected": "{{host}} từ chối username hoặc token này.", "clone.username": "Username", "clone.token": "Mật khẩu hoặc access token", "clone.remember": "Lưu đăng nhập này cho tài khoản của tôi", "clone.sshRefused": "{{host}} từ chối đăng nhập SSH. Hãy thêm public key của bạn vào host đó, hoặc tạo key trong Cài đặt → Git.", "clone.sshSettings": "Mở Cài đặt → Git", "moreActions": "Thêm hành động", "pipelinePicker.label": "Mẫu pipeline", "pipelinePicker.stageMismatch": "Stage \"{{stage}}\" không khớp node nào trong \"{{pipeline}}\" — khai báo một trong: {{nodes}}", "preflightError": "Không thể tải trạng thái workspace hiện tại.", "preflightErrorWithMessage": "Không thể tải trạng thái workspace hiện tại: {{message}}", "proof.ticketReport": "Báo cáo nhiệm vụ", "renameLabel": "Đổi tên workspace này", "proxy.native": "Native ({{tool}})", "proxy.label": "AI Proxy", "runtime.down": "tắt", "runtime.healthy": "khoẻ", "runtime.partial": "một phần", "runtime.slot": "slot {{slot}}", "runtime.steppedAsideTitle": "Đã lùi khỏi {{expected}} vì cổng đó đang bận", "status.failed": "thất bại", "status.idle": "rảnh", "status.provisioning": "đang khởi tạo", "status.running": "đang chạy", "title": "Workspace", "worktrees.heading_one": "{{count}} worktree", "worktrees.heading_other": "{{count}} worktree", "changes.undoHunk": "Hoàn tác đoạn này", "changes.undoHunkConfirm": "Bấm lần nữa để hoàn tác đoạn này — không thể khôi phục", "changes.undoHunkShort": "Hoàn tác", "changes.undoHunkShortConfirm": "Xác nhận", "changes.edit": "Sửa", "changes.save": "Lưu", "changes.revertBlock": "Hoàn tác", "changes.blockNotInDiff": "Thay đổi này không còn trong diff của git; hãy làm mới rồi thử lại", "changes.cancelEdit": "Huỷ", "changes.preview": "Xem trước", "changes.raw": "Mã nguồn", "changes.editorLabel": "Sửa {{path}}", "changes.prevHunk": "Thay đổi trước", "changes.nextHunk": "Thay đổi sau", "changes.hunkOf": "{{n}} / {{total}}", "changes.noEditBinary": "File nhị phân — không sửa được ở đây", "changes.imageFailed": "Không hiển thị được ảnh này (đã bị xoá, hoặc lớn hơn 20 MB).", "changes.noEditTooBig": "File quá lớn để sửa ở đây (trên 1 MB)", "changes.noEdit": "Không sửa được ở đây", "gitBar.loginTitle": "Git cần đăng nhập {{host}}", "gitBar.loginRejected": "Máy chủ từ chối (rejected) tài khoản hoặc token này.", "gitBar.loginUser": "Tên đăng nhập", "gitBar.loginPassword": "Mật khẩu hoặc access token", "gitBar.loginRemember": "Ghi nhớ cho mọi người dùng AgentHub", "gitBar.loginTokenHint": "Trên Gitea: Settings → Applications → Generate token, cấp quyền đọc/ghi repository.", "gitBar.loginInsecure": "Dashboard đang chạy http thường - token sẽ đi qua mạng không mã hoá.", "gitBar.loginSubmit": "Đăng nhập và thử lại", "gitBar.loginCancel": "Huỷ", "gitBar.merge": "Merge vào nhánh hiện tại", "gitBar.mergeHint": "Merge nhánh đang chọn vào nhánh workspace này đang đứng", "gitBar.mergeUpstream": "Merge {{upstream}}", "gitBar.mergeUpstreamHint": "Nhánh đã lệch với upstream: merge vào (conflict được giải quyết trong Changes panel)", "gitBar.mergeConfirm": "Merge {{branch}} vào {{current}}? File trong workspace sẽ thay đổi ngay - nếu có agent đang làm việc trong workspace này, hãy để nó xong trước.", "gitBar.pushConfirm": "Push {{count}} commit từ {{branch}} lên {{upstream}}? Ai có quyền vào remote đều thấy được, và không thể rút lại push từ đây.", "gitBar.publishBranchConfirm": "Publish nhánh {{branch}} lên remote? Ai có quyền vào remote đều thấy được.", "gitBar.publishConfirm": "Thêm {{url}} làm remote của repo và push {{branch}} lên đó? Ai có quyền vào remote đó đều thấy được code.", "gitBar.branchDeleteConfirm": "Xoá nhánh local {{branch}}? Git sẽ từ chối nếu nhánh còn commit chưa được merge vào đâu.", "gitBar.mergeConflicts": "Merge dừng ở {{count}} file conflict - hãy giải quyết trong danh sách bên dưới.", "gitBar.merging": "Đang {{op}}: hãy hoàn tất hoặc huỷ trước", "changes.conflictsGroup": "Conflict khi merge", "changes.mergeBanner": "Đang {{op}} - còn {{count}} file conflict", "changes.mergeReady": "Đang {{op}} - đã giải quyết hết conflict", "changes.mergeCommit": "Hoàn tất {{op}}", "changes.mergeAbort": "Huỷ {{op}}", "changes.mergeAbortConfirm": "Bấm lần nữa để huỷ {{op}}", "changes.discardShortConfirm": "Xoá?", "changes.amend": "Amend", "changes.amendPushed": "Commit cuối đã được push; amend sẽ viết lại lịch sử đã chia sẻ. Hãy revert nó trong History.", "changes.amendHint": "Gộp các file đã tick vào commit cuối (chỉ khi chưa push). Không tick file nào thì chỉ sửa message; để trống message để giữ message cũ.", "changes.amendPlaceholder": "Message mới (trống = giữ message cũ)", "changes.historyOf": "Lịch sử của nhánh", "changes.cherryPick": "Cherry-pick vào {{branch}}", "changes.revertCommit": "Revert commit này", "changes.undoCommit": "Hoàn tác commit (giữ thay đổi)", "changes.undoCommitTitle": "Hoàn tác commit cuối?", "changes.undoCommitBody": "{{short}} \"{{subject}}\" sẽ bị gỡ khỏi nhánh. Thay đổi của nó vẫn được giữ ở trạng thái staged để sửa và commit lại.", "changes.undoCommitConfirm": "Hoàn tác commit", "changes.revertConfirm": "Thêm một commit trên {{branch}} để đảo ngược {{short}} \"{{subject}}\"? File trong workspace sẽ thay đổi ngay.", "changes.cherryPickConfirm": "Áp {{short}} \"{{subject}}\" từ {{from}} vào {{branch}} thành một commit mới? File trong workspace sẽ thay đổi ngay.", "changes.amendTitle": "Amend commit cuối?", "changes.amendConfirm": "\"{{subject}}\" sẽ được thay bằng một commit mới gộp cả phần đã stage. Server sẽ từ chối nếu commit đã được push.", "changes.opConflicts": "{{op}} dừng lại ở {{count}} file conflict — hãy giải quyết trong Changes", "changes.opDone": "Đã {{op}} xong", "changes.takeOurs": "Giữ bản của mình", "changes.takeTheirs": "Lấy bản kia", "changes.markResolved": "Đánh dấu đã xong (sau khi đã sửa hết dấu conflict)", "conflict.left": "Còn {{left}}/{{total}} khối conflict", "conflict.prev": "Khối trước", "conflict.next": "Khối sau", "conflict.allOurs": "Giữ hết của mình", "conflict.allTheirs": "Lấy hết bản kia", "conflict.editByHand": "Sửa tay", "conflict.unbalanced": "Dấu conflict không khớp nhau (đã sửa tay?) - hãy dùng Sửa tay.", "conflict.unusable": "Không hiển thị được file này ở đây (nhị phân hoặc quá lớn) - hãy dùng Giữ hết của mình / Lấy hết bản kia, hoặc terminal.", "conflict.keepOurs": "Giữ của mình", "conflict.takeTheirs": "Lấy bản kia", "conflict.keepBoth": "Giữ cả hai", "conflict.chose.ours": "Đã giữ của mình", "conflict.chose.theirs": "Đã lấy bản kia", "conflict.chose.both": "Đã giữ cả hai", "conflict.undo": "Hoàn tác", "conflict.ours": "Của mình ({{label}})", "conflict.theirs": "Bản kia ({{label}})", "conflict.reset": "Huỷ", "conflict.save": "Lưu và đánh dấu đã xong", "changes.takeOursHint": "Giữ bản của mình cho cả file", "changes.takeTheirsHint": "Lấy bản kia cho cả file", "row.actions": "Thao tác workspace", "row.hint": "Nhấp đúp để đổi tên · kéo hoặc Alt+↑/↓ để sắp xếp · chuột phải để xem thao tác", "menu.rename": "Đổi tên", "menu.newHere": "Workspace mới tại đây…", "menu.copyPath": "Sao chép đường dẫn", "menu.reset": "Đặt lại worktree…", "menu.remove": "Xóa workspace…", "panel.changes": "Thay đổi", "panel.analyst": "Analyst", "replay.placeholder": "Nhắn để tiếp tục session này…", "replay.hint": "Gửi tin sẽ resume session trong một pane trống.", "replay.send": "Gửi", "sessions.resume": "Tiếp tục", "resume.openPane": "Mở pane", "resume.hint": "Tiếp tục session này trong một pane của workspace — nạp lại toàn bộ transcript vào context", "resume.title": "Tiếp tục session này?", "resume.body": "Tiếp tục sẽ nạp lại toàn bộ transcript của session vào context của model, nên các lượt sau phải trả lại chi phí cho tất cả phần đó. Session mở ở pane trống đầu tiên của {{workspace}}. Nếu chỉ cần đọc, hãy ở lại trang này.", "resume.confirm": "Tiếp tục session", "resume.fork": "Fork", "resume.forkHint": "Tiếp tục từ đây thành một session MỚI — session gốc giữ nguyên", "resume.forkTitle": "Fork session này?", "resume.forkBody": "Fork nạp lại toàn bộ transcript vào một session MỚI (id riêng), nên các lượt sau phải trả lại chi phí cho tất cả phần đó; session gốc không bị đụng tới. Session mở ở pane trống đầu tiên của {{workspace}}.", "resume.forkConfirm": "Fork session", "tree.title": "Không gian làm việc", "tree.search": "Tìm workspace và session", "tree.toolFilter": "Lọc theo tool", "tree.allTools": "Mọi tool", "tree.ownerYou": "{{name}} (bạn)", "tree.noOwner": "Không có chủ", "tree.ownerToggle": "Hiện hoặc ẩn workspace của {{name}}", "tree.readOnly": "Workspace của {{name}} — chỉ xem. Bấm một phiên để mở trang phân tích.", "tree.newSession": "Session mới", "tree.noSessions": "Chưa có session", "tree.transcriptHint": "Không còn pane — mở hội thoại; gửi tin nhắn sẽ tiếp tục (resume) session", "tree.splitHint": "Pane đang chạy — Ctrl/Cmd+click để mở ở split cạnh pane đang focus", "tree.renameSession": "Đổi tên session", "tree.archiveSession": "Lưu trữ — ẩn khỏi workspace này (không xoá gì)", "tree.pinSession": "Ghim lên đầu workspace này", "tree.unpinSession": "Bỏ ghim", "tree.pinned": "Đã ghim", "tree.worktreeSession": "Trong worktree riêng: .claude/worktrees/{{name}}", "tree.archiveWorktreeTitle": "Lưu trữ và gỡ worktree của session?", "tree.archiveWorktreeBody": "Giống Claude Desktop, lưu trữ sẽ gỡ worktree .claude/worktrees/{{name}} của session cùng branch của nó. Git sẽ từ chối nếu còn thay đổi chưa commit, và branch có commit chưa merge vào đâu sẽ được giữ lại — không mất gì chưa lưu.", "tree.archiveWorktreeConfirm": "Lưu trữ và gỡ", "tree.archived_one": "{{count}} session đã lưu trữ", "tree.archived_other": "{{count}} session đã lưu trữ", "tree.unarchive": "Bỏ lưu trữ", "home.breadcrumb": "Không gian làm việc", "home.ai": "AI", "home.openTerminal": "Mở terminal", "home.repoRoot": "Thư mục gốc của repo", "home.mainBranch": "Branch của worktree chính", "home.worktreeCount_one": "{{count}} worktree", "home.worktreeCount_other": "{{count}} worktree", "home.placeholder": "Tôi có thể giúp gì cho bạn hôm nay?", "home.start": "Bắt đầu", "home.permissionAuto": "Tự động", "home.permissionAcceptEdits": "Tự nhận sửa file", "home.permissionDefault": "Hỏi trước", "home.permissionPlan": "Lập kế hoạch", "home.permissionBypass": "Bỏ qua quyền", "home.local": "Thư mục chính", "home.localHint": "Làm việc ngay trong thư mục của workspace", "home.worktree": "Worktree mới", "home.worktreeHint": "Chạy session này trong worktree git riêng — /.claude/worktrees/, branch riêng, do Claude Code tạo và dọn", "home.allBusy": "Workspace này đã dùng hết 10 session — hãy dừng một session trước khi mở session mới.", "home.recents": "Gần đây", "home.noRecents": "Chưa có session nào — bắt đầu ở ô phía trên.", "home.instructions": "Hướng dẫn", "home.instructionsEmpty": "Thêm hướng dẫn để điều chỉnh cách agent làm việc trong workspace này. Hướng dẫn được nối vào system prompt của mỗi session mới.", "home.edit": "Sửa hướng dẫn", "home.save": "Lưu", "home.cancel": "Huỷ", "home.memory": "Bộ nhớ", "home.viewMemory": "Xem bộ nhớ", "home.memoryCount_one": "{{count}} file agent đọc", "home.memoryCount_other": "{{count}} file agent đọc", "home.memoryEmpty": "Bộ nhớ hiện ở đây khi thư mục có CLAUDE.md hoặc AGENTS.md, hoặc Claude lưu bộ nhớ cho nó.", "home.context": "Ngữ cảnh", "home.contextEmpty": "Thêm PDF, tài liệu hoặc văn bản để tham chiếu trong workspace này.", "home.contextSnapshot": "Mỗi file được sao chép lúc thêm — sửa file gốc sau đó sẽ không cập nhật theo. Hãy xóa rồi thêm lại, hoặc thêm thư mục chứa nó ở mục Thư mục để luôn đọc bản mới nhất.", "home.addFile": "Thêm file", "home.folder": "Thư mục", "home.ownFolder": "Thư mục của workspace", "home.addFolder": "Thêm thư mục", "home.folderPath": "Đường dẫn tuyệt đối của thư mục", "home.add": "Thêm", "home.cloneFolders": "Hoặc clone repo", "home.cloneHint": "Mỗi dòng một URL — từng repo được clone vào {{path}} bằng login git của bạn (Cài đặt → Git) rồi thêm vào đây.", "home.clonePlaceholder": "https://host/owner/repo.git\ngit@host:owner/other.git", "home.cloneRun": "Clone", "home.cloneRetry": "Thử lại các repo lỗi", "home.cloneDone": "Đã thêm", "home.suggested": "Worktree chưa theo dõi", "home.remove": "Gỡ", "home.missing": "không còn", "home.unsupported": "{{tool}} không nhận được hướng dẫn, file ngữ cảnh hay thư mục bổ sung: chúng vẫn được giữ, nhưng session của nó khởi động mà không có chúng.", "home.close": "Đóng", "tabs.label": "Các tab phiên", "tabs.new": "Tab mới", "tabs.newTerminal": "Terminal mới", "tabs.terminal": "Terminal", "tabs.close": "Đóng tab (dừng và lưu trữ phiên của nó)", "tabs.full": "Đã dùng hết 10 session — hãy dừng bớt một session", "tabs.agentSettings": "Cài đặt agent…", "tabs.settings": "Cài đặt", "tabs.closeSettings": "Đóng Cài đặt", "tabs.splitHint": "Ctrl/Cmd+click: mở ở split · kéo thả vào một pane để đặt vị trí", "panes.drag": "Kéo để di chuyển pane — thả vào cạnh pane khác để tách ở đó, vào giữa để đổi chỗ; giữ trên một tab khác để mở tab đó", "panes.drop.left": "Đặt bên trái", "panes.drop.right": "Đặt bên phải", "panes.drop.top": "Đặt phía trên", "panes.drop.bottom": "Đặt phía dưới", "panes.drop.swap": "Đổi chỗ", "panes.drop.replace": "Hiện ở đây — pane này sang tab riêng", "panes.pick": "Hiện session khác trong pane này", "panes.empty": "Không có session", "panes.split.right": "Tách sang phải", "panes.split.bottom": "Tách xuống dưới", "panes.full": "Một tab chứa tối đa 4 pane", "panes.newTerminal": "Terminal mới", "panes.showChat": "Xem dạng chat", "panes.showTerminal": "Xem dạng terminal", "panes.close": "Tách ra tab riêng (session vẫn chạy)", "panes.resize": "Đổi kích thước pane", "tabs.home": "Trang chủ workspace", "sessionMenu.open": "Mở", "sessionMenu.openSplit": "Mở ở pane chia đôi", "sessionMenu.details": "Chi tiết session", "sessionMenu.copyId": "Sao chép ID session", "sessionMenu.archive": "Lưu trữ", "sessionMenu.pin": "Ghim", "sessionMenu.unpin": "Bỏ ghim", "panes.show": "Hiện {{name}} ở đây", "panes.splitNew.right": "Chia sang phải với terminal mới", "panes.splitNew.bottom": "Chia xuống dưới với terminal mới", "panes.closeShort": "Tách ra tab riêng", "panes.stop": "Dừng và lưu trữ phiên", "panes.sleep": "Cho phiên ngủ (dừng, giữ lại để resume sau)", "changes.copyPath": "Sao chép đường dẫn tương đối", "changes.viewCommit": "Xem commit", "changes.copySha": "Sao chép SHA của commit", "changes.copySubject": "Sao chép commit message", "replay.live": "Session này đang mở trong một tab — hãy tiếp tục ở đó.", "replay.noResume": "{{tool}} không thể tiếp tục (resume) một session theo id, nên hội thoại này chỉ để đọc.", "replay.newSession": "Bắt đầu session mới", "tabs.state.awaiting": "Đang chờ bạn", "tabs.state.error": "Lỗi", "tabs.state.running": "Đang chạy", "tabs.renameHint": "Nhấp đúp để đổi tên", "tabs.stopTitle": "Dừng “{{name}}”?", "tabs.stopGroupTitle": "Dừng {{count}} session trong tab này?", "tabs.stopBody": "Dừng sẽ kết thúc phiên, kể cả khi đang chạy dở, và lưu trữ nó: phiên rời khỏi danh sách của workspace (bấm Bỏ lưu trữ để đưa lại). Muốn giữ lại để dùng tiếp thì hãy chọn Ngủ.", "tabs.stopConfirm": "Dừng phiên", "tabs.sleep": "Ngủ (dừng, giữ lại để resume sau)", "tabs.sleepTitle": "Cho “{{name}}” ngủ?", "tabs.sleepGroupTitle": "Cho {{count}} session trong tab này ngủ?", "tabs.sleepBody": "Ngủ sẽ dừng phiên, kể cả khi đang chạy dở, nhưng vẫn giữ nó trong danh sách của workspace. Mở phiên và gửi tin nhắn để resume.", "tabs.sleepConfirm": "Ngủ", "changes.loadMore": "Tải thêm commit", "changes.commentPasted": "Đã dán vào tab {{tab}} — nhấn Enter ở đó để gửi", "changes.splitter": "Đổi độ rộng khung thay đổi", "tree.archiveLiveTitle": "Lưu trữ một session đang chạy?", "tree.archiveLiveBody": "Tab của nó vẫn chạy; lưu trữ chỉ ẩn nó khỏi danh sách này. Bỏ lưu trữ trong mục đã lưu trữ.", "tree.state.awaiting": "đang chờ bạn", "tree.state.error": "lỗi", "tree.state.live": "đang chạy", "tree.state.idle": "đã kết thúc", "tree.showMore_one": "Hiện thêm {{count}}", "tree.showMore_other": "Hiện thêm {{count}}", "tree.seeAll": "Xem tất cả (thêm {{count}})", "tree.showLess": "Thu gọn", "home.contextPanel": "Ngữ cảnh workspace", "row.state.needsYou": "cần bạn", "row.state.error": "lỗi", "row.state.running": "đang chạy", "row.state.active": "đang hoạt động", "row.state.idle": "nghỉ", "gitBar.done.fetch": "Đã fetch", "gitBar.done.pull": "Đã pull", "gitBar.done.push": "Đã push", "gitBar.done.publish": "Đã publish", "runtime.listening": "đang lắng nghe", "runtime.notListening": "không lắng nghe", "replay.pasted": "Session đó đã mở trong một tab — tin nhắn đã được dán vào đó; nhấn Enter để gửi.", "replay.notPasted": "Session đó đang mở trong một tab nhưng không dán được tin nhắn vào đó: {{text}}", "changes.changesGroup": "Thay đổi", "changes.unversionedGroup": "File chưa theo dõi", "changes.commitTicked": "Commit ({{count}})", "changes.commitAndPush": "Commit và Push", "changes.amendAndPush": "Amend và Push", "changes.pushFailed": "Đã commit, nhưng push thất bại: {{error}}", "changes.tickFile": "Đưa {{path}} vào commit", "changes.tickFolder": "Tick mọi file trong {{path}}", "changes.commitFile": "Commit file…", "changes.jumpToSource": "Mở mã nguồn", "changes.copyPatch": "Sao chép dạng patch", "changes.noPatch": "File này không có diff dạng văn bản để sao chép", "changes.addToVcs": "Thêm vào VCS", "changes.addToGitignore": "Thêm vào .gitignore", "changes.includeBlock": "Đưa thay đổi này vào commit", "changes.prevDiff": "Khác biệt trước (Shift+F7)", "changes.nextDiff": "Khác biệt tiếp theo (F7)", "changes.prevFile": "File trước", "changes.nextFile": "File tiếp theo", "changes.showHistory": "Xem lịch sử", "changes.historyOfFile": "Lịch sử của {{path}}", "changes.historyWholeBranch": "Cả nhánh", "changes.annotate": "Annotate", "changes.noBlame": "Không có gì để annotate: file này chưa có lịch sử commit", "changes.notCommitted": "Chưa commit", "fx.title": "Quản lý file", "fx.workspace": "Workspace", "fx.files": "File", "fx.trash": "Thùng rác", "fx.close": "Đóng", "fx.up": "Thư mục cha", "fx.refresh": "Làm mới", "fx.newFolder": "Thư mục mới", "fx.newFile": "File mới", "fx.uploadFiles": "Tải file lên", "fx.uploadFolder": "Tải cả thư mục lên", "fx.download": "Tải về", "fx.downloadZip": "Tải về dạng zip", "fx.rename": "Đổi tên", "fx.copy": "Sao chép", "fx.cut": "Cắt", "fx.paste": "Dán", "fx.pasteInto": "Dán vào thư mục này", "fx.pasteFrom": "Dán {{count}} mục từ {{workspace}}", "fx.delete": "Chuyển vào Thùng rác", "fx.open": "Mở", "fx.location": "Vị trí", "fx.name": "Tên", "fx.size": "Dung lượng", "fx.modified": "Sửa lần cuối", "fx.empty": "Thư mục trống — thả file vào đây để tải lên.", "fx.itemsCount": "{{count}} mục", "fx.selectedCount": "Đã chọn {{count}}", "fx.dropHint": "Kéo file hoặc thư mục vào đây để tải lên · kéo vào một thư mục để di chuyển (Ctrl: sao chép)", "fx.uploading": "Đang tải lên {{done}}/{{total}}…", "fx.uploaded": "Đã tải lên {{count}} file.", "fx.uploadFailed": "Không tải lên được {{name}}: {{message}}", "fx.tooBig": "{{size}} vượt quá giới hạn một lần tải lên ({{max}}). Hãy tải ít file hơn mỗi lần.", "fx.trashed": "Đã chuyển {{count}} mục vào Thùng rác.", "fx.copiedDone": "Đã sao chép {{count}} mục — mở thư mục (hoặc workspace khác) rồi Dán.", "fx.cutDone": "Đã cắt {{count}} mục — mở thư mục (hoặc workspace khác) rồi Dán.", "fx.pasted": "Đã dán.", "fx.crossOnlyWorkspace": "Các mục này chỉ dán được ở nơi chúng được lấy ra (worktree của session, thư mục phụ, hoặc giữa hai home).", "fx.needsUpgrade": "Cần cập nhật helper của server — nhờ admin chạy `sudo agenthub server install-system` một lần.", "fx.conflictTitle": "Đã có sẵn", "fx.conflictBody": "Tên này đã có ở nơi đến: {{names}}", "fx.conflictAll": "Áp dụng cho tất cả file còn lại", "fx.cancel": "Huỷ", "fx.skip": "Bỏ qua", "fx.keepBoth": "Giữ cả hai", "fx.replace": "Thay thế", "fx.trashHint": "File và thư mục đã xoá, khôi phục được trong 7 ngày.", "fx.emptyTrash": "Dọn sạch Thùng rác", "fx.restore": "Khôi phục", "fx.purge": "Xoá vĩnh viễn", "fx.restored": "Đã khôi phục.", "fx.trashEmpty": "Thùng rác trống.", "changes.openExplorer": "Mở Quản lý file — quản lý, tải lên và tải về file", "changes.openInExplorer": "Mở trong Quản lý file", "fx.places": "Workspace", "fx.back": "Quay lại", "fx.forward": "Tiến tới", "fx.search": "Tìm (Ctrl+F)", "fx.searchHere": "Tìm trong thư mục này…", "fx.viewAs": "Kiểu xem", "fx.gridView": "Biểu tượng", "fx.listView": "Danh sách", "fx.new": "Mới", "fx.upload": "Tải lên", "fx.more": "Thêm", "fx.selectAll": "Chọn tất cả", "fx.showHidden": "Hiện file ẩn (Ctrl+H)", "fx.untitledFolder": "Thư mục mới", "fx.untitledFile": "chua-dat-ten.txt", "fx.copyPath": "Sao chép đường dẫn", "fx.clearSelection": "Bỏ chọn", "fx.noMatch": "Không có mục nào khớp.", "fx.loading": "Đang tải…", "fx.dropHere": "Thả để tải lên vào {{folder}}", "fx.nameField": "Tên", "fx.from": "Từ", "fx.deletedAt": "Ngày xoá", "fx.unavailable": "Dashboard này chưa có trình quản lý file — cần khởi động lại sau khi cập nhật.", "fx.noWorkspace": "Chưa có workspace nào. Hãy thêm một workspace, file của nó sẽ hiện ở đây.", "fx.myHome": "Thư mục home", "fx.userHomes": "Home của các user", "fx.readOnlyHome": "Home của user khác — chỉ xem và tải về", "fx.readOnly": "Chỉ đọc", "fx.readOnlyHint": "Đây là home của user khác: bạn chỉ xem, sao chép và tải về được, không sửa được.", "fx.homeEmpty": "Home của bạn chưa có thư mục nào — các file ẩn (.bashrc, .claude…) không hiện ở đây. Các workspace nằm ở danh sách bên trái.", "tmuxUpgrade": "Cần nâng cấp tmux: {{advice}}" }