0a1dcfeb7f
- Stop (a tab's or pane's X, Close tab) now archives the session it held (DELETE /api/run/:id?archive=1); the new Sleep (moon left of the X, and in the tab, pane and session right-click menus) stops the pane but keeps the session listed to resume later. Shared endRuns in client/src/lib/stopSession.ts. - Git identity (#82): an account keeps an ED25519 AND an RSA key (AWS CodeCommit takes only RSA), every ssh git offers both, and a member's ~/.gitconfig gets core.sshCommand so a git typed in a terminal uses them. - Update dialog: Auto fix starts a Claude Code session on the install folder with the failed update's error. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
629 lines
39 KiB
JSON
629 lines
39 KiB
JSON
{
|
|
"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 — <repo>/.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}}"
|
|
}
|