home-hosted 0.8.2 → 0.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -9
- package/dist/cli.js +456 -63
- package/dist/cli.js.map +1 -1
- package/docs/SERVERS.md +19 -1
- package/docs/UI_CREATION.md +6 -1
- package/docs/branding/logo.svg +33 -0
- package/docs/branding/social-preview.png +0 -0
- package/package.json +4 -1
- package/uis/stock/dist/assets/{de-DQxDtYp2.js → de-CiT_tMnf.js} +1 -1
- package/uis/stock/dist/assets/es-JJDGEbt0.js +1 -0
- package/uis/stock/dist/assets/{fr-DHCvxiys.js → fr-CYIAuJgb.js} +1 -1
- package/uis/stock/dist/assets/{index-C02FUAwz.js → index-BCPp9MUj.js} +4 -4
- package/uis/stock/dist/assets/{ja-DseIeS1D.js → ja-DmykOijW.js} +1 -1
- package/uis/stock/dist/assets/{ko-Dcu2b6c2.js → ko-C4EcOJB0.js} +1 -1
- package/uis/stock/dist/assets/{ru-DaAAVw09.js → ru-Dlbre_Q1.js} +1 -1
- package/uis/stock/dist/assets/{vi-D780h-t9.js → vi-DhBWYY9I.js} +1 -1
- package/uis/stock/dist/assets/{zh-CN-C8OC-N1b.js → zh-CN-BI0ZDO_Y.js} +1 -1
- package/uis/stock/dist/favicon.ico +0 -0
- package/uis/stock/dist/favicon.svg +14 -0
- package/uis/stock/dist/index.html +5 -1
- package/uis/stock/dist/ui.json +3 -3
- package/uis/stock/dist/assets/es-BP0qzCTU.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={"activity.emptyTitle":`Không có sự kiện nào trong 24 giờ qua`,"activity.emptyDescription":`Khởi động, thoát, sự cố và phục hồi xuất hiện ở đây khi chúng xảy ra.`,"activity.ran":`đã chạy {duration}`,"addServer.title":`Thêm máy chủ`,"addServer.description":`Thêm một mục vào servers.config.json của {workspace}; mọi chính sách bạn bỏ trống đều kế thừa từ giá trị mặc định.`,"addServer.thisWorkspace":`không gian làm việc này`,"addServer.identity":`Nhận dạng`,"addServer.id":`Id`,"addServer.idHint":`Chữ thường, chữ số, dấu gạch ngang và gạch dưới; được dùng trong URL và nhật ký.`,"addServer.labelHint":`Hiển thị trong bảng điều khiển; mặc định là id.`,"addServer.process":`Tiến trình`,"addServer.commandHint":`Được spawn không qua shell.`,"addServer.argumentsHint":`Mỗi dòng một tham số; khoảng trắng trong dòng được giữ nguyên.`,"addServer.portLifecycle":`Cổng & vòng đời`,"addServer.bindHint":`lan mở nó ra mạng; chỉ làm vậy khi đã có xác thực.`,"addServer.advanced":`Cài đặt nâng cao`,"addServer.advancedHint":`môi trường, sao lưu, chính sách, vòng đời, bootstrap`,"addServer.backups":`Sao lưu`,"addServer.backupIgnore":`Bỏ qua các tệp sinh tự động đã biết`,"addServer.bootstrapDescription":`Một lệnh chạy một lần trước lần khởi động đầu tiên.`,"addServer.bootstrapHint":`Cài đặt, migration, tải xuống — trước lần khởi động đầu tiên, không phải mọi lần.`,"addServer.policyResources":`Chính sách & tài nguyên`,"addServer.logBufferHint":`Để trống là dùng mặc định.`,"addServer.inheritNote":`Khởi động lại, tình trạng và dừng ban đầu khớp với {settings}; đổi một mục ở đây thì nó được ghi vào mục này thay vì tiếp tục kế thừa.`,"addServer.serverDefaults":`Cài đặt → Mặc định máy chủ`,"addServer.placeholdersTitle":`Các placeholder có sẵn cho tham số`,"addServer.submit":`Thêm vào servers.config.json`,"app.name":`home-hosted`,"app.tagline":`Bảng điều khiển giám sát tiến trình`,"bind.local":`local — 127.0.0.1`,"bind.lan":`lan — 0.0.0.0`,"bind.explicit":`{bind} — chỉ định rõ`,"common.cancel":`Huỷ`,"common.confirm":`Xác nhận`,"common.reset":`Đặt lại`,"common.keepIt":`Giữ nguyên`,"common.remove":`Gỡ bỏ`,"common.close":`Đóng`,"common.save":`Lưu`,"common.saving":`Đang lưu…`,"common.discard":`Bỏ thay đổi`,"common.delete":`Xoá`,"common.edit":`Sửa`,"common.add":`Thêm`,"common.retry":`Thử lại`,"common.copy":`Sao chép`,"common.copied":`Đã sao chép`,"common.enabled":`Đang bật`,"common.disabled":`Đang tắt`,"common.none":`Không có`,"common.unknown":`không rõ`,"common.loading":`Đang tải…`,"common.selectAll":`Chọn tất cả`,"common.selectNone":`Bỏ chọn tất cả`,"common.name":`Tên`,"common.label":`Nhãn`,"common.hostname":`Tên máy chủ`,"common.port":`Cổng`,"common.command":`Lệnh`,"common.environment":`Biến môi trường`,"common.memory":`Bộ nhớ`,"common.cpu":`CPU`,"common.disk":`Đĩa`,"common.uptime":`Thời gian hoạt động`,"common.status":`Trạng thái`,"common.actions":`Thao tác`,"common.details":`Chi tiết`,"common.overview":`Tổng quan`,"common.warning":`Cảnh báo`,"common.error":`Lỗi`,"common.confirmQuestion":`{label}?`,"common.unset":`chưa đặt`,"common.never":`chưa bao giờ`,"common.now":`vừa xong`,"common.dismiss":`Bỏ qua`,"connection.live":`Trực tiếp`,"connection.connecting":`Đang kết nối`,"connection.reconnecting":`Đang kết nối lại`,"connection.liveUpdates":`Cập nhật trực tiếp`,"editor.title":`Sửa cấu hình`,"editor.description":`Ghi các ghi đè vào {file}; phần nào để nguyên sẽ tiếp tục kế thừa giá trị mặc định.`,"editor.inSync":`đã đồng bộ`,"editor.process":`Tiến trình`,"editor.processDescription":`Thứ được spawn, ở đâu, và với môi trường nào.`,"editor.labelPlaceholder":`quay về dùng id`,"editor.argumentsHint":`Mỗi dòng một tham số; {port} {host} {home} {projectDir} {dataRoot} {id} {label} {cwd} {bind} {lanIp} sẽ được thay thế.`,"editor.portTitle":`Cổng & bind`,"editor.portDescription":`Cách cổng được preflight và nơi tiến trình truy cập được.`,"editor.bindHint":`Một IPv4 tuỳ chỉnh mà cấu hình đã đặt vẫn chọn được.`,"editor.lifecycle":`Vòng đời`,"editor.lifecycleDescription":`Supervisor có quản lý mục này hay không.`,"editor.save":`Lưu vào servers.config.json`,"editor.changesTitle":`Thay đổi chưa lưu`,"editor.changesDescription":`Những gì nút Lưu sẽ ghi vào servers.config.json.`,"editor.nothingToSave":`Không có gì để lưu.`,"health.disabled":`Không kiểm tra`,"health.unknown":`Chưa dò`,"health.healthy":`Bình thường`,"health.unhealthy":`Bất thường`,"history.start":`Đã khởi động`,"history.exit":`Đã thoát`,"history.crash":`Gặp sự cố`,"history.forcedRestart":`Buộc khởi động lại`,"history.unhealthy":`Bất thường`,"history.recovered":`Đã phục hồi`,"host.loadPerCpu":`Tải / cpu`,"host.cpuTemp":`Nhiệt độ CPU`,"host.samplingOff":`Lấy mẫu máy chủ đang tắt`,"host.samplingOffDescription":`Bật trong Cài đặt để thu thập tải, bộ nhớ, đĩa và nhiệt độ.`,"host.swap":`Swap`,"host.cpus":`CPU`,"host.loadAverage":`Tải 1 / 5 / 15`,"host.memoryUsed":`Bộ nhớ đã dùng`,"host.sampled":`Đã lấy mẫu`,"host.filesystems":`Hệ thống tệp`,"host.thresholdsBreached":`Ngưỡng bị vượt`,"killPort.trigger":`Kill thứ đang giữ cổng {port}`,"killPort.title":`Kill tiến trình trên cổng {port}?`,"killPort.body":`Nó được yêu cầu dừng trước, và chỉ bị kill nếu bỏ qua yêu cầu đó. Mọi thứ bảng điều khiển này giám sát đều bị từ chối, nên một máy chủ được quản lý không thể mất theo cách này.`,"killPort.confirm":`Kill nó`,"language.label":`Ngôn ngữ`,"language.select":`Chọn ngôn ngữ`,"lifecycle.restartTitle":`Chính sách khởi động lại`,"lifecycle.restartDescription":`Thời gian chờ tăng dần giữa các lần thử sau khi sự cố.`,"lifecycle.restartOnCrash":`Khởi động lại khi sự cố`,"lifecycle.maxRetries":`Số lần thử tối đa`,"lifecycle.maxRetriesHint":`Số lần thử trước khi máy chủ bị bỏ ở trạng thái sự cố.`,"lifecycle.baseDelay":`Độ trễ cơ sở (ms)`,"lifecycle.factor":`Hệ số tăng dần`,"lifecycle.maxDelay":`Độ trễ tối đa (ms)`,"lifecycle.resetAfter":`Đặt lại sau (ms)`,"lifecycle.resetAfterHint":`Một lần chạy dài đến mức này sẽ xoá bộ đếm số lần thử.`,"lifecycle.healthTitle":`Dò tình trạng`,"lifecycle.healthDescription":`Cách dò mức sẵn sàng sau khi tiến trình chạy lên.`,"lifecycle.probe":`Dò máy chủ này`,"lifecycle.probeType":`Kiểu dò`,"lifecycle.probePort":`Cổng TCP — chỉ kết nối`,"lifecycle.probeHttp":`Yêu cầu HTTP — kiểm tra phản hồi`,"lifecycle.interval":`Khoảng thời gian (ms)`,"lifecycle.timeout":`Thời gian chờ (ms)`,"lifecycle.unhealthyAfter":`Bất thường sau`,"lifecycle.unhealthyAfterHint":`Số lần dò thất bại liên tiếp.`,"lifecycle.forceRestartAfter":`Buộc khởi động lại sau (ms)`,"lifecycle.forceRestartAfterHint":`0 là tắt.`,"lifecycle.startTimeout":`Thời gian chờ khởi động (ms)`,"lifecycle.httpPath":`Đường dẫn HTTP`,"lifecycle.httpMethod":`Phương thức HTTP`,"lifecycle.expectStatus":`Mong đợi mã trạng thái`,"lifecycle.expectStatusHint":`Để trống là chấp nhận mọi mã thấp hơn.`,"lifecycle.expectStatusBelow":`Khoẻ khi trạng thái thấp hơn`,"lifecycle.expectBody":`Nội dung phải chứa`,"lifecycle.expectBodyPlaceholder":`chuỗi con không bắt buộc`,"lifecycle.headBodyHint":`HEAD không có nội dung phản hồi, nên phép dò này bị bỏ qua — hãy dùng GET hoặc xoá trống.`,"lifecycle.stopTitle":`Hành vi khi dừng`,"lifecycle.stopDescription":`Cách yêu cầu cây tiến trình kết thúc.`,"lifecycle.signal":`Tín hiệu`,"lifecycle.signalTerm":`SIGTERM — yêu cầu dừng`,"lifecycle.signalInt":`SIGINT — ngắt (Ctrl-C)`,"lifecycle.signalKill":`SIGKILL — kill ngay`,"lifecycle.grace":`Thời gian gia hạn (ms)`,"lifecycle.killGroup":`Kill toàn bộ nhóm tiến trình`,"lifecycle.killPortHolders":`Cũng kill bất cứ thứ gì đang giữ cổng`,"login.title":`Đăng nhập để tiếp tục`,"login.firstRunTitle":`Bảng điều khiển này chưa có mật khẩu`,"login.firstRunSubtitle":`Bất kỳ thứ gì trên máy này đều truy cập được. Hãy đặt mật khẩu ngay sau khi vào.`,"login.authOffTitle":`Xác thực đang tắt`,"login.authOffSubtitle":`Bảng điều khiển chỉ lắng nghe trên loopback, và đó là thứ duy nhất bảo vệ nó lúc này.`,"login.subtitle":`Bảng điều khiển đã được bảo vệ. Nhập mật khẩu để tiếp tục.`,"login.password":`Mật khẩu`,"login.showPassword":`Hiện mật khẩu`,"login.hidePassword":`Ẩn mật khẩu`,"login.signIn":`Đăng nhập`,"login.openDashboard":`Mở bảng điều khiển`,"login.exposed":`Đang phơi bày`,"login.defaultPasswordWarning":`Vẫn đang dùng mật khẩu mặc định {password}. Hãy đổi trong Cài đặt — việc lắng nghe ngoài 127.0.0.1 vẫn bị từ chối cho đến khi bạn đổi.`,"login.noPasswordWarning":`Chưa đặt mật khẩu. Mở Cài đặt từ máy này để thêm, hoặc chạy {command}.`,"login.sessionNote":`Phiên đăng nhập kéo dài {days} ngày sau lần truy cập cuối — mỗi yêu cầu gia hạn thêm. Đăng xuất chỉ xoá trên trình duyệt này.`,"login.servedFromThisMachine":`phục vụ từ máy này`,"logs.emptyHint":`Chưa có đầu ra.`,"logs.noMatches":`Không có gì khớp với tìm kiếm hoặc bộ lọc luồng đó.`,"logs.searchPlaceholder":`Tìm trong đầu ra này`,"logs.searchLabel":`Tìm trong đầu ra nhật ký`,"logs.clearSearch":`Xoá tìm kiếm`,"logs.prevMatch":`Kết quả trước`,"logs.nextMatch":`Kết quả tiếp theo`,"logs.showTimestamps":`Hiện dấu thời gian`,"logs.hideTimestamps":`Ẩn dấu thời gian`,"logs.timestampsShort":`ts`,"logs.pause":`Tạm dừng`,"logs.follow":`Bám theo`,"logs.clearHint":`Xoá bộ đệm trong bộ nhớ`,"logs.clearLabel":`Xoá bộ đệm nhật ký`,"logs.downloadHint":`Tải tệp đã lưu`,"logs.downloadLabel":`Tải tệp nhật ký`,"logs.outputLabel":`Đầu ra nhật ký`,"logs.jumpToLatest":`Nhảy tới mới nhất`,"logs.streaming":`đang truyền`,"logs.paused":`đã tạm dừng`,"logs.snapshot":`ảnh chụp`,"logs.linesOf":`{count} trong {total} dòng`,"logs.matches":`{count} kết quả`,"logs.rowHeight":`chiều cao dòng {height}px · dạng cửa sổ`,"logs.streamAll":`Tất cả`,"logs.streamOut":`out`,"logs.streamErr":`err`,"logs.streamSys":`sys`,"metric.emptyHint":`đang thu thập…`,"nav.global":`Toàn cục`,"nav.workspace":`Không gian làm việc`,"nav.others":`Khác`,"nav.overview":`Tổng quan`,"nav.servers":`Máy chủ`,"nav.logs":`Nhật ký`,"nav.workspaceSettings":`Cài đặt không gian làm việc`,"nav.globalOverview":`Tổng quan toàn cục`,"nav.globalSettings":`Cài đặt toàn cục`,"nav.reverseProxy":`Reverse Proxy`,"nav.navigation":`Điều hướng`,"nav.closeNavigation":`Đóng điều hướng`,"nav.hostVitals":`Chỉ số máy chủ`,"notice.configError":`Không đọc được tệp cấu hình: {error}`,"notice.configErrorHint":`Bảng điều khiển vẫn chạy cấu hình cũ; sửa {path} là nó tự nạp lại.`,"notice.defaultPassword":`Bảng điều khiển này vẫn dùng mật khẩu mặc định.`,"notice.defaultPasswordHint":`Hãy đổi trong Cài đặt toàn cục — việc lắng nghe ngoài 127.0.0.1 vẫn bị từ chối cho đến khi bạn đổi.`,"notice.noPassword":`Xác thực đang bật nhưng chưa đặt mật khẩu, nên không có gì được yêu cầu.`,"notice.noPasswordHint":`Đặt mật khẩu trong Cài đặt toàn cục để thực sự khoá bảng điều khiển.`,"notice.exposed":`Bảng điều khiển này truy cập được từ ngoài 127.0.0.1.`,"notice.exposedHint":`Hãy giữ mật khẩu mạnh, hoặc đặt một proxy kết thúc TLS phía trước.`,"notice.authOff":`Xác thực đang tắt — bảng điều khiển chỉ được bảo vệ bởi việc lắng nghe trên loopback.`,"onPortConflict.block":`block — từ chối khởi động`,"onPortConflict.warn":`warn — vẫn khởi động`,"onPortConflict.follow":`follow — tiếp nhận bản khởi động lại tách rời của chính nó`,"onPortConflict.reclaim":`reclaim — thay bằng một bản sao được giám sát`,"onPortConflict.kill":`kill — dừng bất cứ thứ gì đang giữ cổng`,"palette.placeholder":`Chuyển tới máy chủ, chạy thao tác, mở cài đặt…`,"palette.openServer":`Mở {label}`,"palette.serverLogs":`Nhật ký của {label}`,"palette.startServer":`Khởi động {label}`,"palette.stopServer":`Dừng {label}`,"palette.restartServer":`Khởi động lại {label}`,"palette.goOverview":`Tới Tổng quan`,"palette.goGlobalOverview":`Tới Tổng quan toàn cục`,"palette.goGlobalSettings":`Tới Cài đặt toàn cục`,"palette.goProxy":`Tới Reverse Proxy`,"palette.goServers":`Tới Máy chủ`,"palette.goLogs":`Tới Nhật ký`,"palette.goWorkspaceSettings":`Tới Cài đặt không gian làm việc`,"palette.startAll":`Khởi động mọi máy chủ đang bật ở đây`,"palette.stopAll":`Dừng mọi máy chủ ở đây`,"palette.switchWorkspace":`Chuyển sang {label}`,"palette.globalSetting":`Cài đặt toàn cục: {label}`,"palette.workspaceSetting":`Cài đặt không gian làm việc: {label}`,"palette.theme":`Giao diện {theme}`,"palette.groupServers":`Máy chủ`,"palette.groupActions":`Thao tác`,"palette.groupNavigate":`Điều hướng`,"palette.groupWorkspaces":`Không gian làm việc`,"palette.groupAppearance":`Giao diện`,"palette.navigate":`di chuyển`,"palette.run":`chạy`,"palette.noMatches":`Không có kết quả cho “{query}”.`,"proxy.account.automatic":`Tự động (tài khoản duy nhất có thể trả lời)`,"proxy.account.noTxt":`không hỗ trợ TXT`,"proxy.account.noCredentials":`chưa có thông tin đăng nhập`,"proxy.account.gone":`Tài khoản đó không còn được cấu hình.`,"proxy.account.emptyHint":`DNS-01 ghi bản ghi thử thách ở đây. Để trống là dùng tài khoản duy nhất có thể trả lời thử thách, nếu có.`,"proxy.account.cannotWrite":`Tài khoản {provider} không ghi được bản ghi TXT, nên không thể trả lời thử thách DNS-01.`,"proxy.account.noCredentialsYet":`Chưa có thông tin đăng nhập nào được lưu cho tài khoản {provider} này.`,"proxy.account.through":`Thử thách được ghi qua tài khoản {provider} này.`,"proxy.certificate.title":`Chứng chỉ đã tải lên`,"proxy.certificate.description":`Được phục vụ bởi các tuyến đường đặt ở “Chứng chỉ đã tải lên”. Mọi thứ khác — công khai hay nội bộ — đều do engine tự cấp chứng chỉ.`,"proxy.certificate.add":`Thêm chứng chỉ`,"proxy.certificate.emptyTitle":`Chưa tải lên chứng chỉ nào`,"proxy.certificate.emptyDescription":`Route đặt ở “Chứng chỉ đã tải lên” cần một cặp bao phủ hostname của nó, nếu không engine không có gì để phục vụ.`,"proxy.certificate.daysLeft":`còn {days} ngày`,"proxy.certificate.subject":`Chủ thể`,"proxy.certificate.issuer":`Nhà phát hành`,"proxy.certificate.validUntil":`Có hiệu lực đến`,"proxy.certificate.covers":`Bao phủ`,"proxy.certificate.noSans":`không có hostname nào trong SAN`,"proxy.certificate.removeAria":`Gỡ {name}`,"proxy.certificate.removeQuestion":`Gỡ “{name}”?`,"proxy.certificate.removeBody":`Cặp chứng chỉ bị xoá khỏi đĩa. Tuyến đường vẫn đặt ở “Chứng chỉ đã tải lên” sẽ tiếp tục phục vụ chứng chỉ riêng của engine cho đến khi bạn đổi, và bảng điều khiển từ chối thao tác này khi còn tuyến đường đang dùng nó.`,"proxy.certificate.removeIt":`Gỡ nó`,"proxy.certificate.stored":`Đã lưu “{label}”.`,"proxy.certificate.removed":`Đã gỡ “{name}”.`,"proxy.certificateDialog.title":`Thêm chứng chỉ`,"proxy.certificateDialog.description":`Cặp chứng chỉ được lưu trên đĩa dưới id của nó, và tuyến đường đặt ở “Chứng chỉ đã tải lên” có thể phục vụ nó.`,"proxy.certificateDialog.label":`Nhãn`,"proxy.certificateDialog.labelPlaceholder":`Wildcard gia đình`,"proxy.certificateDialog.id":`Id`,"proxy.certificateDialog.idHint":`đặt tên cho các tệp trên đĩa`,"proxy.certificateDialog.certFile":`Tệp chứng chỉ (.pem, .crt)`,"proxy.certificateDialog.keyFile":`Tệp khoá riêng (.pem, .key)`,"proxy.certificateDialog.pasteCert":`Hoặc dán chứng chỉ`,"proxy.certificateDialog.pasteKey":`Hoặc dán khoá riêng`,"proxy.certificateDialog.certPlaceholder":`-----BEGIN CERTIFICATE-----`,"proxy.certificateDialog.keyPlaceholder":`-----BEGIN PRIVATE KEY-----`,"proxy.certificateDialog.store":`Lưu chứng chỉ`,"proxy.certificateDialog.errorLabel":`cần có nhãn`,"proxy.certificateDialog.errorId":`id phải bắt đầu bằng chữ cái hoặc chữ số, sau đó là chữ cái, chữ số, gạch ngang hoặc gạch dưới`,"proxy.certificateDialog.errorTaken":`“{id}” đã được một chứng chỉ khác dùng`,"proxy.certificateDialog.errorCertificate":`hãy dán hoặc chọn chứng chỉ`,"proxy.certificateDialog.errorPrivateKey":`hãy dán hoặc chọn khoá riêng`,"proxy.engine.title":`Bộ máy`,"proxy.engine.description":`Bản thân proxy nghịch đảo. Bảng điều khiển tải bản build hiện tại, giám sát nó và áp dụng cấu hình qua API quản trị riêng của engine.`,"proxy.engine.notInFrame":`Trạng thái proxy chưa nằm trong khung của bảng điều khiển này.`,"proxy.engine.readFailed":`Không đọc được engine`,"proxy.engine.notInstalled":`Chưa cài engine`,"proxy.engine.installNote":`Cài đặt sẽ tải bản phát hành {engine} hiện tại mà bảng điều khiển giám sát — khoảng 46 MB, một lần. Không có gì được mở ra cho đến khi thêm tuyến đường và bật proxy.`,"proxy.engine.version":`Phiên bản`,"proxy.engine.notProbed":`chưa dò`,"proxy.engine.source":`Nguồn`,"proxy.engine.sourceCustom":`một đường dẫn được cấu hình thủ công`,"proxy.engine.sourceDownloaded":`do bảng điều khiển tải về`,"proxy.engine.size":`Kích thước`,"proxy.engine.binary":`Tệp nhị phân`,"proxy.engine.copyPath":`Sao chép đường dẫn nhị phân`,"proxy.engine.address":`Địa chỉ đang hoạt động`,"proxy.engine.process":`Tiến trình`,"proxy.engine.certificates":`Chứng chỉ`,"proxy.engine.noCert":`chưa có chứng chỉ công khai`,"proxy.engine.expiresSoon":`cái sớm nhất hết hạn sau {days} ngày`,"proxy.engine.acme":`Chứng chỉ ACME`,"proxy.engine.localCa":`CA cục bộ`,"proxy.engine.dns01":`DNS-01`,"proxy.engine.tcpUdp":`TCP/UDP`,"proxy.engine.documentation":`Tài liệu {engine}`,"proxy.engine.failed":`Engine báo lỗi`,"proxy.engine.setcapHint":`Cổng đặc quyền (dưới 1024) cần lệnh này một lần trên Linux:`,"proxy.engine.copyCommand":`Sao chép lệnh`,"proxy.engine.install":`Cài engine`,"proxy.engine.start":`Khởi động`,"proxy.engine.stop":`Dừng`,"proxy.engine.apply":`Áp dụng cấu hình`,"proxy.engine.revert":`Hoàn tác`,"proxy.engine.revertHint":`Quay về cấu hình đã được áp dụng trước lần gần nhất`,"proxy.engine.update":`Cập nhật engine`,"proxy.listener.title":`Listener & chứng chỉ`,"proxy.listener.description":`Nơi proxy lắng nghe. 80 và 443 là những cổng router chuyển tiếp và thử thách ACME mong đợi; cổng dưới 1024 cần bind đặc quyền.`,"proxy.listener.unprivilegedPorts":`cổng không đặc quyền`,"proxy.listener.run":`Chạy proxy nghịch đảo`,"proxy.listener.runHint":`Được lưu cùng nút Lưu cài đặt; bảng điều khiển khởi động hoặc dừng engine cho khớp.`,"proxy.listener.httpPort":`Cổng HTTP`,"proxy.listener.httpPortHint":`Thử thách HTTP-01 của ACME và chuyển hướng sang HTTPS.`,"proxy.listener.httpsPort":`Cổng HTTPS`,"proxy.listener.httpsPortHint":`Nơi phục vụ chứng chỉ.`,"proxy.listener.useFallback":`Dùng {http} / {https}`,"proxy.listener.useStandard":`Dùng 80 / 443`,"proxy.listener.forwardHint":`Đang chạy không đặc quyền — hãy chuyển tiếp 80 và 443 tới các cổng này trên router.`,"proxy.listener.privilegedTitle":`Cổng dưới 1024 cần bind đặc quyền`,"proxy.listener.privilegedBody":`Chạy bảng điều khiển dưới người dùng của bạn không thể bind 80 hay 443 nếu không có quyền. Hoặc cấp quyền một lần {how} rồi khởi động lại engine, hoặc giữ {http}/{https} và chuyển tiếp 80/443 từ router. Trên Windows, cổng này bind được tự do, nhưng thứ khác có thể đang giữ nó.`,"proxy.listener.privilegedWithSetcap":`bằng {command} trên tệp nhị phân của engine`,"proxy.listener.email":`Email tài khoản ACME`,"proxy.listener.emailPlaceholder":`you@example.com`,"proxy.listener.emailHint":`Let's Encrypt dùng địa chỉ này để cảnh báo khi chứng chỉ sắp hết hạn. Tên chỉ dùng nội bộ sẽ nhận CA riêng của engine và không cần địa chỉ nào.`,"proxy.listener.emailNeededTitle":`Cần một email cho HTTPS tự động`,"proxy.listener.emailNeededBody":`“{host}” là hostname công khai, nên engine hỏi một CA để lấy chứng chỉ và địa chỉ tài khoản là bắt buộc. Hãy điền vào, tắt TLS của tuyến đường, hoặc bật endpoint staging trong lúc thử nghiệm.`,"proxy.listener.staging":`Dùng endpoint staging của ACME`,"proxy.listener.stagingHint":`Chứng chỉ không được tin cậy và không tiêu tốn hạn mức trong lúc bạn thử nghiệm.`,"proxy.listener.dns01":`Trả lời thử thách bằng DNS-01`,"proxy.listener.dns01Hint":`Bảng điều khiển ghi bản ghi thử thách qua tài khoản DNS của tuyến đường, nên không cần cổng vào để lấy chứng chỉ.`,"proxy.listener.resolvers":`Kiểm tra bản ghi dựa trên`,"proxy.listener.resolversPlaceholder":`1.1.1.1, 8.8.8.8`,"proxy.listener.resolversHint":`Các nameserver mà engine đọc bản ghi từ đó; để trống là dùng của chính nó. Cần thiết khi DNS split-horizon cho nó thấy một góc nhìn khác.`,"proxy.listener.noAccountTitle":`Không có tài khoản DNS nào trả lời được thử thách`,"proxy.listener.noAccountBody":`DNS-01 đang bật, nhưng không tài khoản nào có thông tin đăng nhập dùng được. Hãy thêm một tài khoản trong Cài đặt không gian làm việc → Dynamic DNS, nếu không các tên công khai vẫn dùng thử thách qua cổng và chờ một CA không thể tiếp cận chúng.`,"proxy.listener.manyAccountsTitle":`Mỗi tuyến đường công khai phải chọn một tài khoản`,"proxy.listener.manyAccountsBody":`Có nhiều tài khoản có thể trả lời, nên “Tự động” không thể chọn. Hãy chọn một tài khoản cho mỗi tuyến đường, nếu không những tên đó vẫn dùng thử thách qua cổng.`,"proxy.listener.accountNote":`Mỗi tuyến đường tự chọn tài khoản của nó, nên các tên trong vùng khác nhau đều nhận đúng tài khoản. Tuyến đường để ở “Tự động” sẽ dùng tài khoản duy nhất mà bảng liệt kê. Tên không tài khoản nào trả lời được vẫn dùng thử thách qua cổng.`,"proxy.listener.pendingNote":`Tên công khai có chứng chỉ vẫn đang được cấp vẫn truy cập được trong lúc chờ — qua HTTPS với chứng chỉ tạm thời không được tin cậy, hoặc qua HTTP thuần với một trang nêu các cổng cần chuyển tiếp.`,"proxy.retry.inFallback":`~8 giờ`,"proxy.retryButton.force":`Buộc thử lại chứng chỉ`,"proxy.retryButton.question":`Hỏi lại CA cho {host}?`,"proxy.retryButton.body":`Trước đó engine không lấy được chứng chỉ CA cho hostname này và đang dùng CA cục bộ của nó. Nó tự thử lại mỗi {retryIn}.`,"proxy.retryButton.warning":`Thử lại ngay sẽ kill tuyến đường này và khiến nó không truy cập được một lúc, bạn có chắc muốn tiếp tục?`,"proxy.retryButton.leave":`Để vậy`,"proxy.retryButton.now":`Thử lại ngay`,"proxy.routeDialog.titleEdit":`Sửa tuyến đường`,"proxy.routeDialog.titleAdd":`Thêm tuyến đường`,"proxy.routeDialog.description":`Một hostname, đích chuyển tiếp, và cách phục vụ qua TLS.`,"proxy.routeDialog.hostname":`Hostname`,"proxy.routeDialog.hostnamePlaceholder":`gitea.example.com`,"proxy.routeDialog.path":`Tiền tố đường dẫn`,"proxy.routeDialog.pathPlaceholder":`/optional`,"proxy.routeDialog.pathHint":`Để trống là phục vụ toàn bộ host.`,"proxy.routeDialog.target":`Đích`,"proxy.routeDialog.tls":`TLS`,"proxy.routeDialog.dnsAccount":`Tài khoản DNS`,"proxy.routeDialog.localNote":`Tên chỉ dùng nội bộ được CA riêng của engine ký, nên không liên quan tài khoản DNS.`,"proxy.routeDialog.workspace":`Không gian làm việc`,"proxy.routeDialog.server":`Máy chủ`,"proxy.routeDialog.noServers":`không gian làm việc này không có máy chủ nào`,"proxy.routeDialog.stoppedNote":`Máy chủ đã dừng thì không được định tuyến: dòng đó hiển thị “Không có upstream” cho đến khi nó chạy lại.`,"proxy.routeDialog.upstream":`Upstream`,"proxy.routeDialog.upstreamPlaceholder":`http://10.0.0.5:8080`,"proxy.routeDialog.upstreamHint":`Một địa chỉ cụ thể, bao gồm cả cổng. Phần scheme là không bắt buộc.`,"proxy.routeDialog.panelNote":`Phục vụ bảng điều khiển cần bật xác thực và một mật khẩu không phải mặc định — nếu không bảng điều khiển sẽ từ chối lưu.`,"proxy.routeDialog.save":`Lưu tuyến đường`,"proxy.routes.title":`Tuyến đường`,"proxy.routes.description":`Mỗi dịch vụ một hostname công khai. Một tuyến đường có thể trỏ tới máy chủ được giám sát trong bất kỳ không gian làm việc nào, tới bảng điều khiển này, hoặc tới một upstream cụ thể.`,"proxy.routes.add":`Thêm tuyến đường`,"proxy.routes.cannotSaveTitle":`Không thể lưu các tuyến đường này ở trạng thái hiện tại`,"proxy.routes.cannotRoute":`Không thể định tuyến {host}`,"proxy.routes.emptyTitle":`Chưa có tuyến đường nào`,"proxy.routes.emptyDescription":`Hãy thêm một tuyến đường để mở một máy chủ ra qua tên miền — engine tự lấy chứng chỉ.`,"proxy.routes.addFirst":`Thêm tuyến đường đầu tiên`,"proxy.routes.columnHostname":`Hostname`,"proxy.routes.columnTarget":`Đích`,"proxy.routes.columnUpstream":`Upstream`,"proxy.routes.columnTls":`TLS`,"proxy.routes.columnState":`Trạng thái`,"proxy.routes.columnOn":`Bật`,"proxy.routes.openInTab":`Mở {url} trong thẻ mới`,"proxy.routes.noHostname":`chưa có hostname`,"proxy.routes.toggle":`Tuyến đường {name}`,"proxy.routes.edit":`Sửa {name}`,"proxy.routes.remove":`Gỡ {name}`,"proxy.status.certified":`chứng chỉ đã sẵn sàng`,"proxy.status.localCa":`CA của engine`,"proxy.status.uploaded":`cặp đã tải lên`,"proxy.status.awaitingCa":`đang chờ CA`,"proxy.status.failed":`chứng chỉ thất bại`,"proxy.status.fellBack":`Đã quay về Local CA`,"proxy.status.serving":`Đang phục vụ`,"proxy.status.disabled":`Đã tắt`,"proxy.status.noUpstream":`Không có upstream`,"proxy.status.error":`Lỗi`,"proxy.status.unapplied":`Chưa được áp dụng`,"proxy.status.off":`Tắt`,"proxy.status.stopped":`Đã dừng`,"proxy.status.starting":`Đang khởi động`,"proxy.status.running":`Đang chạy`,"proxy.status.unsupported":`Không được hỗ trợ`,"proxy.target.server":`Một máy chủ được giám sát`,"proxy.target.panel":`Bảng điều khiển này`,"proxy.target.external":`Một upstream cụ thể`,"proxy.target.controlPanel":`bảng điều khiển`,"proxy.target.noServer":`chưa chọn máy chủ`,"proxy.target.noUpstream":`không có upstream`,"proxy.tls.auto":`Tự động — engine quyết định`,"proxy.tls.off":`Tắt — HTTP thuần`,"proxy.tls.manual":`Chứng chỉ đã tải lên`,"proxy.tls.plain":`HTTP thuần`,"proxy.tls.uploaded":`chứng chỉ đã tải lên`,"proxy.tls.letsEncrypt":`Let’s Encrypt`,"proxy.tls.engineCa":`CA của engine (cục bộ)`,"proxy.tls.hintOff":`HTTP thuần: không có chứng chỉ nào được phục vụ cho hostname này.`,"proxy.tls.hintManual":`Phục vụ cặp chứng chỉ được tải lên bên dưới.`,"proxy.tls.hintEmpty":`Hostname công khai sẽ nhận chứng chỉ ACME; tên chỉ dùng nội bộ sẽ nhận CA riêng của engine.`,"proxy.tls.hintPublic":`Đây là hostname công khai, nên engine sẽ hỏi một CA để lấy chứng chỉ — cần có email tài khoản ACME.`,"proxy.tls.hintLocal":`Đây là tên chỉ dùng nội bộ, nên engine tự ký bằng CA được tin cậy cục bộ của nó.`,"proxy.validation.labelRequired":`cần có nhãn`,"proxy.validation.idPattern":`id phải bắt đầu bằng chữ cái hoặc chữ số, sau đó là chữ cái, chữ số, gạch ngang hoặc gạch dưới`,"proxy.validation.hostRequired":`cần có hostname`,"proxy.validation.hostPattern":`hostname gồm chữ cái, chữ số, dấu chấm và gạch ngang, ví dụ home.example.com`,"proxy.validation.hostTaken":`"{host}" đã được định tuyến cho đường dẫn này`,"proxy.validation.pathSlash":`tiền tố đường dẫn bắt đầu bằng /`,"proxy.validation.pathSpace":`tiền tố đường dẫn không được chứa dấu cách`,"proxy.validation.idTaken":`id tuyến đường "{id}" bị dùng hai lần`,"proxy.validation.workspaceRequired":`hãy chọn không gian làm việc sở hữu máy chủ`,"proxy.validation.serverRequired":`hãy chọn một máy chủ trong không gian làm việc đó`,"proxy.validation.url":`upstream dạng như http://10.0.0.5:8080`,"proxy.view.title":`Proxy nghịch đảo`,"proxy.view.description":`Mở các máy chủ của bạn ra qua tên miền, với HTTPS tự động qua 80/443 hoặc thử thách DNS.`,"proxy.view.dnsNote":`Với DNS-01, hãy thêm nhà cung cấp DNS của tên miền vào bất kỳ không gian làm việc nào trong Cài đặt không gian làm việc → Dynamic DNS; sau đó một tuyến đường có thể chọn tài khoản đó, từ bất kỳ không gian làm việc nào.`,"proxy.view.readFailed":`Không đọc được proxy nghịch đảo`,"proxy.view.reading":`Đang đọc proxy nghịch đảo…`,"proxy.view.engineInstalled":`Đã cài engine`,"proxy.view.engineStarting":`Engine đang khởi động`,"proxy.view.engineStopping":`Engine đang dừng`,"proxy.view.configApplied":`Đã áp dụng cấu hình`,"proxy.view.configReverted":`Đã hoàn tác cấu hình`,"proxy.view.settingsSaved":`Đã lưu cài đặt.`,"proxy.view.settingsSavedToast":`Đã lưu cài đặt`,"proxy.view.retryFailed":`thử lại thất bại`,"proxy.view.retryAsked":`đang hỏi lại CA cho {host}`,"proxy.view.fieldChanged":`trường đã thay đổi`,"proxy.view.fieldsChanged":`trường đã thay đổi`,"proxy.view.noChanges":`Không có thay đổi chưa lưu`,"proxy.view.discard":`Bỏ thay đổi`,"proxy.view.save":`Lưu cài đặt`,"serverCard.open":`Mở {url}`,"serverCard.adoptedHint":`Tiến trình này tự thay thế chính nó: bảng điều khiển tiếp nhận tiến trình kế nhiệm thay vì khởi động thêm một bản sao. Nút Dừng vẫn hoạt động, đầu ra của nó vẫn ở nơi tiến trình kế nhiệm gửi tới.`,"serverCard.detached":`tách rời`,"serverCard.persistentHint":"Mục này chạy dưới nanny riêng, nên nó vẫn chạy khi bảng điều khiển dừng, khởi động lại hoặc bị kill. `home-hosted down` báo cáo nó thay vì dừng nó; chỉ lệnh dừng tường minh mới dừng được.","serverCard.persistent":`thường trú`,"serverCard.disabled":`đã tắt`,"serverCard.autostart":`tự khởi động`,"serverCard.healthProbe":`Dò tình trạng`,"serverCard.notProbed":`chưa dò`,"serverCard.restarts":`Số lần khởi động lại`,"serverCard.pid":`PID`,"serverCard.rss":`RSS`,"serverCard.procs":`Tiến trình`,"serverCard.portFree":`trống`,"serverCard.portInUse":`đang dùng`,"serverCard.uptime24h":`24 giờ hoạt động`,"serverCard.probe":`Kiểm tra`,"serverCard.crashes24h":`sự cố trong 24 giờ`,"serverCard.lastCrash":`Sự cố gần nhất`,"serverCard.unhealthyFor":`Bất thường trong {duration}`,"serverCard.nextAttempt":`Lần thử tiếp theo {when}`,"serverCard.start":`Khởi động`,"serverCard.stop":`Dừng`,"serverCard.restart":`Khởi động lại`,"serverCard.detailsHint":`Nhật ký trực tiếp và toàn bộ telemetry`,"serverCard.moreActions":`Thêm thao tác cho {label}`,"serverCard.disable":`Tắt máy chủ`,"serverCard.enable":`Bật máy chủ`,"serverCard.removeFromAutostart":`Bỏ khỏi tự khởi động`,"serverCard.autostartWithPanel":`Tự khởi động cùng bảng điều khiển`,"serverCard.clearLogBuffer":`Xoá bộ đệm nhật ký`,"serverCard.removeServer":`Gỡ máy chủ`,"serverCard.removeTitle":`Gỡ máy chủ này?`,"serverCard.removeDescription":`{label} sẽ bị gỡ khỏi servers.config.json: tiến trình của nó bị dừng, nhật ký và lịch sử sự cố của nó cũng bị xoá theo.`,"serverCard.statusField":`trạng thái`,"serverForm.workingDirectory":`Thư mục làm việc`,"serverForm.cwdHint":`Đường dẫn tương đối được giải theo projectDir.`,"serverForm.arguments":`Tham số`,"serverForm.portHint":`Để trống nghĩa là máy chủ không có cổng để kiểm tra hay preflight.`,"serverForm.bindAddress":`Địa chỉ lắng nghe`,"serverForm.autostart":`Tự khởi động cùng up`,"serverForm.autostartHint":`Khởi động nó mỗi khi control plane chạy lên.`,"serverForm.persistent":`Thường trú`,"serverForm.persistentHint":"Vẫn chạy khi bảng điều khiển dừng; `down` báo cáo nó thay vì dừng nó.","serverForm.envHint":`KEY=value mỗi dòng, được export cho tiến trình.`,"serverForm.dataEnvs":`Data env`,"serverForm.dataEnvsHint":`ENV=path mỗi dòng — được export cho tiến trình và tự động sao lưu.`,"serverForm.envFile":`Tệp env`,"serverForm.envFilePlaceholder":`tệp KEY=value không bắt buộc`,"serverForm.envFileHint":`Được nạp khi spawn; giá trị trong đó ghi đè env.`,"serverForm.dependsOn":`Phụ thuộc vào`,"serverForm.dependsOnHint":`Phân tách bằng dấu phẩy; được khởi động trước và chờ đến khi bình thường, dừng sau cùng.`,"serverForm.backupPaths":`Đường dẫn sao lưu thêm`,"serverForm.backupPathsHint":`Mỗi dòng một đường dẫn, cho phép placeholder; data env đã được sao lưu sẵn.`,"serverForm.backupIgnore":`Bỏ qua các tệp sinh tự động đã biết khi sao lưu mục này`,"serverForm.backupIgnoreHint":`Bỏ qua node_modules, dist, .next và các cache khác mà không bản khôi phục nào dùng tới.`,"serverForm.bootstrap":`Bootstrap`,"serverForm.bootstrapDescription":`Một lệnh chạy một lần trước lần khởi động đầu tiên — cài đặt, migration, tải xuống.`,"serverForm.runBootstrap":`Chạy một bootstrap`,"serverForm.bootstrapHint":`Tắt nghĩa là mục này không có bootstrap và khoá được gửi dưới dạng null.`,"serverForm.timeoutMs":`Thời gian chờ (ms)`,"serverForm.runOnce":`Chỉ một lần mỗi phiên`,"serverForm.runOnceHint":`Tắt nghĩa là mỗi lần khởi động đều chạy lại.`,"serverForm.bootstrapArgs":`Tham số bootstrap`,"serverForm.bootstrapArgsHint":`Mỗi dòng một tham số; placeholder giống tham số chính.`,"serverForm.bootstrapEnv":`Môi trường bootstrap`,"serverForm.bootstrapEnvHint":`KEY=value mỗi dòng, chỉ export cho tiến trình bootstrap.`,"serverForm.onPortConflict":`Khi trùng cổng`,"serverForm.logBufferLines":`Số dòng đệm nhật ký`,"serverForm.maxRssMb":`RSS tối đa (MB)`,"serverForm.maxRssHint":`Khởi động lại khi vượt mức này; để trống hoặc 0 là tắt.`,"serverForm.enabledHint":`Tắt vẫn giữ mục trong cấu hình nhưng từ chối khởi động nó.`,"settings.auth.policyTitle":`Chính sách truy cập`,"settings.auth.policyDescription":`Xác thực luôn được áp dụng, dù bảng điều khiển ở loopback hay được mở ra mạng.`,"settings.auth.requirePassword":`Yêu cầu mật khẩu`,"settings.auth.requirePasswordHint":`Mọi yêu cầu đều cần một phiên đã đăng nhập.`,"settings.auth.sessionLifetime":`Thời hạn phiên (ms)`,"settings.auth.sessionLifetimeHint":`Thời gian chờ không hoạt động: 604800000 là một tuần không có hoạt động. Mỗi yêu cầu đặt lại đồng hồ này.`,"settings.auth.cookieSecure":`Cookie Secure`,"settings.auth.cookieSecureAuto":`Tự động — chỉ qua HTTPS`,"settings.auth.cookieSecureAlways":`Luôn luôn`,"settings.auth.cookieSecureNever":`Không bao giờ — HTTP thuần`,"settings.auth.trustProxy":`Đứng sau proxy nghịch đảo`,"settings.auth.trustProxyOff":`Không — bỏ qua x-forwarded-*`,"settings.auth.trustProxyLoopback":`Có, chỉ từ máy này`,"settings.auth.trustProxyAny":`Có, từ mọi nguồn gọi`,"settings.auth.trustProxyHint":`Tin x-forwarded-* cho địa chỉ và giao thức của client. 'Chỉ từ máy này' là lựa chọn an toàn cho proxy trên cùng máy. 'Từ mọi nguồn gọi' tin vào header do chính người gọi gửi, nên việc khoá đăng nhập sẽ đếm theo địa chỉ giả và có thể bị vượt qua.`,"settings.auth.maxLoginAttempts":`Số lần đăng nhập tối đa`,"settings.auth.maxLoginAttemptsHint":`Số lần thất bại trước khi bị khoá tạm thời.`,"settings.auth.lockout":`Thời gian khoá (ms)`,"settings.auth.apiTokenSet":`Đã đặt API token`,"settings.auth.apiTokenMissing":`Chưa có API token`,"settings.auth.apiTokenNote":`Script có thể gọi API bằng {code} thay vì đăng nhập.`,"settings.auth.noTokenNote":`Với script shell và agent, hãy tạo một cái bằng {command}.`,"settings.auth.defaultPasswordTitle":`Mật khẩu mặc định vẫn đang được dùng`,"settings.auth.defaultPasswordText":`Hãy đặt mật khẩu riêng ở bên dưới. Việc bind ra ngoài {address} vẫn bị từ chối cho đến khi bạn làm vậy.`,"settings.auth.blockedTitle":`Listener này đang bị từ chối`,"settings.auth.noPasswordTitle":`Xác thực đang bật nhưng chưa đặt mật khẩu`,"settings.auth.noPasswordText":`Thực tế vẫn chưa có gì được yêu cầu, và việc bind ra ngoài {address} vẫn bị từ chối cho đến khi có mật khẩu.`,"settings.auth.exposedTitle":`Truy cập được từ ngoài 127.0.0.1`,"settings.auth.exposedText":`Hãy giữ mật khẩu mạnh, hoặc đặt một proxy kết thúc TLS phía trước bảng điều khiển.`,"settings.auth.changePassword":`Đổi mật khẩu`,"settings.auth.setPassword":`Đặt mật khẩu`,"settings.auth.passwordDescription":`Được lưu dưới dạng hash scrypt trong tệp bí mật, không bao giờ trong cấu hình.`,"settings.auth.currentPassword":`Mật khẩu hiện tại`,"settings.auth.newPassword":`Mật khẩu mới`,"settings.auth.repeatPassword":`Nhập lại mật khẩu mới`,"settings.auth.passwordMismatch":`Hai mật khẩu không khớp.`,"settings.auth.updatePassword":`Cập nhật mật khẩu`,"settings.auth.setPasswordAndEnable":`Đặt mật khẩu và bật xác thực`,"settings.auth.clearPassword":`Xoá mật khẩu`,"settings.auth.clearPasswordConfirm":`Xác nhận xoá`,"settings.auth.clearPasswordTitle":`Xoá mật khẩu?`,"settings.auth.clearPasswordHint":`Xác thực sẽ bị tắt theo, và bất kỳ ai truy cập được bảng điều khiển đều vào thẳng.`,"settings.auth.shortPasswordTitle":`Đó là một mật khẩu ngắn`,"settings.auth.shortPasswordText":`Vẫn được chấp nhận, nhưng mật khẩu dài hơn là thứ duy nhất đứng giữa mạng và bảng điều khiển này.`,"settings.auth.passwordUpdated":`Đã cập nhật mật khẩu. Các phiên khác đã bị đăng xuất.`,"settings.auth.passwordCleared":`Đã xoá mật khẩu và tắt xác thực.`,"settings.backup.createTitle":`Tạo bản sao lưu`,"settings.backup.createDescription":`Chọn những gì bản lưu này sẽ ghi lại. Không có gì được ghi cho đến khi bạn tạo nó.`,"settings.backup.chooseItems":`Chọn các mục`,"settings.backup.partialCapture":`Chỉ những mục được chọn mới được ghi lại.`,"settings.backup.withoutGlobalSettings":`Nếu không có cài đặt toàn cục, bản khôi phục chỉ có thể đặt một không gian làm việc ở nơi bảng điều khiển đích đã khai báo nó.`,"settings.backup.password":`Mật khẩu (không bắt buộc)`,"settings.backup.passwordHint":`Mã hoá bản lưu; khi khôi phục sẽ hỏi đúng mật khẩu đó.`,"settings.backup.create":`Tạo bản sao lưu`,"settings.backup.chooseItemsFor":`{label} — chọn các mục`,"settings.backup.subDescription":`Một không gian làm việc có thể được lưu toàn bộ hoặc chỉ phần cài đặt, máy chủ, bí mật và các đường dẫn dữ liệu đã khai báo.`,"settings.backup.selectedOf":`đã chọn {selected} trên {total}`,"settings.backup.nothingSelectable":`Không gian làm việc này chưa khai báo gì có thể chọn.`,"settings.backup.apply":`Áp dụng`,"settings.backup.created":`Đã tạo bản sao lưu.`,"settings.backup.leafSettingsHint":`Mặc định máy chủ, thời gian giữ nhật ký và thông báo`,"settings.backup.leafServersHint":`Mọi mục trong servers.config.json`,"settings.backup.leafSecretsHint":`Token bot Telegram và thông tin đăng nhập DDNS`,"settings.backup.leafDataHint":`Một đường dẫn dữ liệu đã khai báo`,"settings.backup.pathFromOrigin":`{path} — từ {origin}`,"settings.backup.entrySettingsHint":`Listener, xác thực, thông tin máy chủ và chính sách sao lưu`,"settings.backup.entrySecretsHint":`Hash mật khẩu và hash API token`,"settings.backup.entryTlsHint":`Cặp chứng chỉ của chính bảng điều khiển`,"settings.backup.entryWorkspaceHint":`Cài đặt, máy chủ, bí mật và các đường dẫn dữ liệu đã khai báo của nó`,"settings.backup.entryGlobalSettings":`Cài đặt toàn cục`,"settings.backup.entryGlobalSecrets":`Bí mật toàn cục (mật khẩu, API token)`,"settings.backup.entryTlsCertificate":`Chứng chỉ TLS`,"settings.backup.leafSettings":`Cài đặt`,"settings.backup.leafServers":`Máy chủ`,"settings.backup.leafSecrets":`Bí mật`,"settings.backup.restoreItemLabel":`{workspace}: {item}`,"settings.backup.noteMissing":`chưa tồn tại`,"settings.backup.noteCovered":`được bao phủ bởi {path}`,"settings.backup.noteAlreadyDeclared":`đã được khai báo bởi {origin}`,"settings.backup.noteContainsBackupDir":`chứa thư mục sao lưu`,"settings.backup.noteUnknownWorkspace":`không gian làm việc không rõ`,"settings.backup.noteMissingFromArchive":`không có trong tệp lưu trữ`,"settings.backup.noteDeclaredByBackup":`được khai báo bởi cấu hình của bản sao lưu, mà bản này không khôi phục`,"settings.backup.noteNotDeclared":`không được khai báo bởi cấu hình này, cũng không bởi bản sao lưu`,"settings.backup.noteRestoredFrom":`được khôi phục từ {path}`,"settings.backups.policyTitle":`Chính sách`,"settings.backups.policyDescription":`Số bản lưu bảng điều khiển giữ lại, và các đường dẫn thêm mà mọi bản lưu đều ghi lại.`,"settings.backups.allow":`Cho phép sao lưu`,"settings.backups.allowHint":`Tắt sẽ dừng tạo bản lưu mới; những gì đã có trên đĩa vẫn tải về và khôi phục được.`,"settings.backups.offTitle":`Sao lưu đang tắt`,"settings.backups.offText":`Không có bản lưu mới nào được tạo cho đến khi bật lại. Các bản lưu bên dưới vẫn tải về, khôi phục và xoá được.`,"settings.backups.keep":`Giữ lại`,"settings.backups.keepHint":`Các bản lưu cũ hơn bị dọn sau mỗi lần sao lưu.`,"settings.backups.extraPaths":`Đường dẫn thêm`,"settings.backups.extraPathsHint":`Phân tách bằng dấu phẩy, được ghi trong mọi bản lưu ngoài những gì mỗi không gian làm việc khai báo.`,"settings.backups.extraPathsPlaceholder":`{home}/myapp-data`,"settings.backups.archiveDirectory":`Thư mục lưu trữ`,"settings.backups.copyArchiveDirectory":`Sao chép thư mục lưu trữ`,"settings.backups.changeDirectory":`Đổi nó là quyết định ở mức tệp: hãy sửa {path}.`,"settings.backups.theSettingsFile":`tệp cài đặt`,"settings.backups.capturesTitle":`Bản sao lưu ghi lại những gì`,"settings.backups.capturesDescription":`Chọn những mục này trong hộp thoại tạo. Một không gian làm việc có thể được lấy toàn bộ hoặc chỉ phần cài đặt, máy chủ, bí mật và các đường dẫn dữ liệu đã khai báo.`,"settings.backups.nothingSelectable":`Chưa có gì có thể chọn.`,"settings.backups.fromOrigin":`từ {origin}`,"settings.backups.notCaptured":`không được ghi lại`,"settings.backups.generatedSkipped":`đã bỏ qua các thư mục sinh tự động`,"settings.backups.included":`đã bao gồm`,"settings.backups.skipped":`đã bỏ qua`,"settings.backups.workspacesNote":`Bảng điều khiển này phục vụ {count} không gian làm việc; mỗi không gian làm việc là một mục có thể chọn riêng.`,"settings.backups.archivesTitle":`Bản lưu trữ`,"settings.backups.archivesDescription":`Được lưu trong thư mục sao lưu và có thể tải về bất cứ lúc nào.`,"settings.backups.create":`Tạo bản sao lưu…`,"settings.backups.restore":`Khôi phục…`,"settings.backups.noArchives":`Chưa có bản lưu nào`,"settings.backups.noArchivesEnabled":`Hãy tạo ngay một bản để ghi lại bảng điều khiển và những không gian làm việc bạn chọn.`,"settings.backups.noArchivesDisabled":`Chưa có gì được lưu trữ, và sao lưu đang tắt.`,"settings.backups.encrypted":`đã mã hoá`,"settings.backups.download":`Tải về`,"settings.backups.restoreAction":`Khôi phục`,"settings.backups.confirmDelete":`Xác nhận xoá`,"settings.backups.deleted":`Đã xoá {name}.`,"settings.backups.kindSettings":`cài đặt`,"settings.backups.kindServers":`máy chủ`,"settings.backups.kindSecrets":`bí mật`,"settings.backups.kindTls":`tls`,"settings.backups.kindData":`dữ liệu`,"settings.backups.kindWorkspace":`không gian làm việc`,"settings.ddns.statePending":`Đang chờ`,"settings.ddns.stateOk":`Đã cập nhật`,"settings.ddns.stateUnchanged":`Hiện tại`,"settings.ddns.stateSkipped":`Đã bỏ qua`,"settings.ddns.stateError":`Thất bại`,"settings.ddns.passFinished":`Lượt cập nhật Dynamic DNS đã xong`,"settings.ddns.credentialsSaved":`Đã lưu thông tin đăng nhập cho {account}`,"settings.ddns.credentialsRemoved":`Đã gỡ thông tin đăng nhập của {account}`,"settings.ddns.loadErrorTitle":`Không tải được cài đặt Dynamic DNS`,"settings.ddns.title":`Dynamic DNS`,"settings.ddns.description":`Giữ các hostname này trỏ về địa chỉ công khai của máy này. Thông tin đăng nhập nằm trong tệp bí mật, không bao giờ trong servers.config.json.`,"settings.ddns.checking":`đang kiểm tra`,"settings.ddns.needsAttention":`cần chú ý`,"settings.ddns.watching":`đang theo dõi`,"settings.ddns.updateNow":`Cập nhật ngay`,"settings.ddns.enabled":`Giữ Dynamic DNS luôn được cập nhật`,"settings.ddns.enabledHint":`Một lượt chạy theo khoảng thời gian bên dưới; nhà cung cấp chỉ được gọi khi địa chỉ thực sự thay đổi.`,"settings.ddns.interval":`Kiểm tra mỗi (ms)`,"settings.ddns.intervalHint":`60000 là một phút; mặc định là năm phút.`,"settings.ddns.ttl":`TTL (giây)`,"settings.ddns.ttlHint":`1 nghĩa là tự động ở nơi nhà cung cấp hỗ trợ.`,"settings.ddns.detectIpv4":`Phát hiện IPv4`,"settings.ddns.detectIpv4Hint":`Cần cho bản ghi A.`,"settings.ddns.detectIpv6":`Phát hiện IPv6`,"settings.ddns.detectIpv6Hint":`Cần cho bản ghi AAAA.`,"settings.ddns.accountsTitle":`Tài khoản nhà cung cấp`,"settings.ddns.accountsDescription":`Mỗi API token một mục. Thông tin đăng nhập được lưu trên máy chủ và không bao giờ trả về.`,"settings.ddns.credentialsSet":`đã lưu thông tin đăng nhập`,"settings.ddns.noCredentials":`chưa có thông tin đăng nhập`,"settings.ddns.credentials":`Thông tin đăng nhập`,"settings.ddns.removeAccountBlocked":`Hãy gỡ các hostname đang dùng tài khoản này trước`,"settings.ddns.noAccounts":`Chưa có tài khoản nào. Hãy chọn một nhà cung cấp và thêm tài khoản.`,"settings.ddns.provider":`Nhà cung cấp`,"settings.ddns.accountId":`Id tài khoản`,"settings.ddns.accountIdPlaceholder":`cloudflare-home`,"settings.ddns.accountIdHint":"Id tài khoản đặt tên cho tài khoản và là khoá lưu thông tin đăng nhập; chữ thường, chữ số, `-` và `_`.","settings.ddns.hostnamesTitle":`Hostname`,"settings.ddns.hostnamesDescription":`Toàn bộ danh sách cần giữ cập nhật — suba.domain.com, domain.xyz, v.v.`,"settings.ddns.account":`Tài khoản`,"settings.ddns.recordA":`A (IPv4)`,"settings.ddns.recordAaaa":`AAAA (IPv6)`,"settings.ddns.aaaaUnsupported":`Nhà cung cấp này không quản lý được bản ghi AAAA.`,"settings.ddns.proxied":`Qua proxy`,"settings.ddns.proxiedHint":`Cloudflare phục vụ bản ghi này qua mạng của chính nó.`,"settings.ddns.ipv6Off":`Phát hiện IPv6 đang tắt`,"settings.ddns.advanced":`Nâng cao`,"settings.ddns.advancedHint":`tên miền đã đăng ký và ghi đè TTL`,"settings.ddns.registeredDomain":`Tên miền đã đăng ký`,"settings.ddns.registeredDomainPlaceholder":`example.co.uk`,"settings.ddns.registeredDomainHint":`Chỉ dùng khi cần cho nhà cung cấp biết tên miền gốc, ví dụ tên miền ba nhãn.`,"settings.ddns.ttlOverride":`Ghi đè TTL (giây)`,"settings.ddns.ttlOverrideHint":`Để trống là dùng giá trị bên trên.`,"settings.ddns.noHostnames":`Chưa có hostname nào.`,"settings.ddns.hostnamePlaceholder":`home.example.com`,"settings.ddns.lastPass":`Lượt gần nhất`,"settings.ddns.ipv4Value":`IPv4 {address}`,"settings.ddns.ipv6Value":`IPv6 {address}`,"settings.ddns.type":`Loại`,"settings.ddns.state":`Trạng thái`,"settings.ddns.address":`Địa chỉ`,"settings.ddns.detail":`Chi tiết`,"settings.ddns.credentialsTitle":`Thông tin đăng nhập nhà cung cấp`,"settings.ddns.credentialsDescription":`Các trường đã lưu không bao giờ được gửi trả lại. Lưu sẽ thay thế toàn bộ trường của tài khoản này và chạy một lượt ngay lập tức.`,"settings.ddns.optional":`Không bắt buộc.`,"settings.ddns.whereToGet":`Lấy những thứ này ở đâu`,"settings.ddns.forget":`Quên`,"settings.ddns.forgetConfirm":`Quên chúng`,"settings.ddns.forgetTitle":`Quên thông tin đăng nhập đã lưu?`,"settings.ddns.forgetHint":`Chúng bị xoá khỏi đĩa và không đọc lại được; bạn sẽ phải dán lại.`,"settings.ddns.saveCredentials":`Lưu thông tin đăng nhập`,"settings.defaults.title":`Mặc định máy chủ`,"settings.defaults.description":`Áp dụng cho mọi mục không tự đặt giá trị riêng.`,"settings.defaults.enabledHint":`Mục mới bắt đầu ở trạng thái bật.`,"settings.defaults.autostart":`Tự khởi động cùng bảng điều khiển`,"settings.defaults.bind":`Lắng nghe trên`,"settings.defaults.bindLocal":`Local — 127.0.0.1`,"settings.defaults.bindLan":`LAN — 0.0.0.0`,"settings.defaults.onPortConflict":`Khi trùng cổng`,"settings.defaults.conflictBlock":`Chặn việc khởi động`,"settings.defaults.conflictWarn":`Cảnh báo và vẫn khởi động`,"settings.defaults.conflictFollow":`Bám theo bản khởi động lại tách rời của chính nó`,"settings.defaults.conflictReclaim":`Thay bản khởi động lại tách rời bằng một bản sao được giám sát`,"settings.defaults.conflictKill":`Kill bất cứ thứ gì đang giữ cổng`,"settings.defaults.logBufferLines":`Số dòng đệm nhật ký`,"settings.defaults.logBufferLinesHint":`Được giữ trong bộ nhớ cho mỗi máy chủ.`,"settings.host.title":`Ngưỡng`,"settings.host.description":`Ngưỡng 0 sẽ tắt cảnh báo đó. Khi vượt ngưỡng sẽ thông báo một lần, và một lần nữa khi hồi phục.`,"settings.host.enabled":`Lấy mẫu máy này`,"settings.host.enabledHint":`Tải, bộ nhớ, swap, đĩa và nhiệt độ CPU, theo khoảng thời gian bên dưới.`,"settings.host.interval":`Khoảng thời gian (ms)`,"settings.host.intervalHint":`Tần suất lấy mẫu máy chủ và kiểm tra cảnh báo.`,"settings.host.diskPaths":`Đường dẫn đĩa`,"settings.host.diskPathsHint":`Phân tách bằng dấu phẩy; các mẫu như {home} được mở rộng.`,"settings.host.diskUsed":`Đĩa đã dùng (%)`,"settings.host.memoryUsed":`Bộ nhớ đã dùng (%)`,"settings.host.swapUsed":`Swap đã dùng (%)`,"settings.host.zeroDisables":`0 sẽ tắt cảnh báo.`,"settings.host.loadPerCpu":`Tải trên mỗi CPU`,"settings.host.loadPerCpuHint":`Tải trung bình 1 phút chia cho số nhân.`,"settings.host.tempCelsius":`Nhiệt độ CPU (°C)`,"settings.host.tempCelsiusHint":`Chỉ trên Linux; bị bỏ qua ở nơi hệ điều hành không cung cấp.`,"settings.host.breachingNow":`Đang vượt ngưỡng:`,"settings.host.nothingBreaching":`Hiện không có gì vượt ngưỡng.`,"settings.interface.title":`Giao diện`,"settings.interface.description":`Bảng điều khiển là một trang tĩnh: giữ bản mặc định, hoặc phục vụ bản build của riêng bạn từ thư mục state.`,"settings.interface.currentlyServing":`Đang phục vụ`,"settings.interface.copyDirectory":`Sao chép thư mục UI`,"settings.interface.fileCount":`{count} tệp`,"settings.interface.sourceStock":`mặc định`,"settings.interface.sourceCustom":`tuỳ chỉnh`,"settings.interface.unnamed":`chưa đặt tên`,"settings.interface.panelVersion":`Phiên bản bảng điều khiển`,"settings.interface.copyPanelVersion":`Sao chép phiên bản bảng điều khiển`,"settings.interface.panelVersionHint":`Bản phát hành mà tiến trình bảng điều khiển này đang chạy — {command} in ra cùng con số đó.`,"settings.interface.panelName":`Tên bảng điều khiển`,"settings.interface.panelNameHint":`Được UI mặc định hiển thị ở thanh bên. UI tuỳ chỉnh có thể hiển thị tên riêng.`,"settings.interface.uploadLabel":`Tải lên bản build UI (.zip có index.html)`,"settings.interface.docsHint":`Xem {docs} để biết hợp đồng API. Nếu UI tuỳ chỉnh làm hỏng bảng điều khiển, {command} sẽ đưa bản mặc định trở lại từ terminal.`,"settings.interface.resetName":`Đặt lại tên`,"settings.interface.confirmRevert":`Xác nhận hoàn tác`,"settings.interface.revertToStock":`Quay về bản mặc định`,"settings.interface.install":`Cài đặt UI`,"settings.interface.installed":`Đã thay UI bằng {name} — hãy tải lại trang`,"settings.interface.yourBuild":`bản build của bạn`,"settings.interface.restored":`đã khôi phục UI mặc định — hãy tải lại trang`,"settings.interface.nothingInstalled":`chưa cài UI tuỳ chỉnh nào`,"settings.listener.title":`Bộ lắng nghe`,"settings.listener.description":`Nơi bảng điều khiển trả lời. Thay đổi đây sẽ khởi động lại bảng điều khiển và đưa trang này tới địa chỉ mới.`,"settings.listener.port":`Cổng điều khiển`,"settings.listener.portHint":`Mặc định 3999.`,"settings.listener.bind":`Lắng nghe trên`,"settings.listener.bindLocal":`Nội bộ`,"settings.listener.bindLan":`Mạng LAN`,"settings.listener.bindCustom":`Tuỳ chỉnh`,"settings.listener.bindLanHint":`0.0.0.0 — truy cập được từ toàn bộ mạng.`,"settings.listener.bindLocalHint":`127.0.0.1 — chỉ máy này.`,"settings.listener.bindCustomHint":`Một địa chỉ giao diện cụ thể do bạn nhập bên dưới.`,"settings.listener.ipv4":`Địa chỉ IPv4`,"settings.listener.ipv4Placeholder":`192.168.1.20`,"settings.listener.ipv4Error":`Hãy nhập một địa chỉ IPv4, ví dụ 192.168.1.20.`,"settings.listener.ipv4Hint":`Bind ra ngoài 127.0.0.1 cần một mật khẩu thật.`,"settings.listener.openBrowser":`Mở trình duyệt khi bảng điều khiển chạy lên`,"settings.listener.liveAddress":`Địa chỉ đang hoạt động`,"settings.listener.restartRequired":`cần khởi động lại`,"settings.listener.copyLiveAddress":`Sao chép địa chỉ đang hoạt động`,"settings.listener.liveAddressHint":`Địa chỉ listener đang bind hiện tại; thay đổi đã lưu có hiệu lực sau khi bảng điều khiển bind lại.`,"settings.logs.title":`Thời gian giữ`,"settings.logs.description":`Chế độ xem trực tiếp luôn lấy từ bộ nhớ; các tệp này tồn tại qua lần khởi động lại và nuôi trang Nhật ký.`,"settings.logs.persist":`Giữ nhật ký trên đĩa`,"settings.logs.persistHint":`Tắt để chỉ giữ mọi thứ trong bộ nhớ.`,"settings.logs.maxBytes":`Xoay vòng khi (byte)`,"settings.logs.maxBytesHint":`Mỗi máy chủ, trước khi chuyển sang .1, .2, …`,"settings.logs.keep":`Giữ các tệp đã xoay vòng`,"settings.logs.directory":`Thư mục nhật ký`,"settings.logs.copyDirectory":`Sao chép thư mục nhật ký`,"settings.logs.browseHint":`Duyệt và tải các tệp này ở trang {logs}.`,"settings.paths.dataRoot":`Thư mục gốc dữ liệu`,"settings.paths.dataRootHint":`HHOSTED_HOME — cài đặt toàn cục, không gian làm việc, TLS, bản sao lưu và UI.`,"settings.paths.globalSettings":`Cài đặt toàn cục`,"settings.paths.globalSettingsHint":`settings.json — listener, xác thực, chính sách TLS, thông tin máy chủ, sao lưu.`,"settings.paths.projectDir":`Thư mục dự án`,"settings.paths.projectDirHint":`Cơ sở cho các đường dẫn mục tương đối.`,"settings.paths.panelAddress":`Địa chỉ bảng điều khiển`,"settings.paths.panelAddressHint":`Nơi bảng điều khiển này đang hoạt động.`,"settings.paths.serversConfig":`Cấu hình máy chủ`,"settings.paths.serversConfigHint":`servers.config.json của {label}.`,"settings.paths.workspaceSettings":`Cài đặt không gian làm việc`,"settings.paths.workspaceSettingsHint":`Mặc định máy chủ, thời gian giữ nhật ký, thông báo, DDNS.`,"settings.paths.logs":`Nhật ký`,"settings.paths.logsHint":`Đầu ra được lưu cho không gian làm việc này.`,"settings.paths.copyPath":`Sao chép {label}`,"settings.paths.whereThingsLive":`Mọi thứ nằm ở đâu`,"settings.paths.whereThingsLiveDescription":`Chỉ đọc. Sao chép đường dẫn thẳng vào shell hoặc trình soạn thảo.`,"settings.paths.workspaceFiles":`Tệp của không gian làm việc`,"settings.paths.workspaceFilesDescription":`Mỗi không gian làm việc sở hữu cấu hình, cài đặt và thư mục nhật ký của riêng nó; không có gì được chia sẻ giữa chúng.`,"settings.rebind.failed":`Bảng điều khiển không trả lời tại {target}. Hãy xem console để biết listener mới.`,"settings.restore.title":`Khôi phục bản sao lưu`,"settings.restore.description":`Không có gì được ghi cho đến khi kế hoạch được áp dụng.`,"settings.restore.archive":`Bản lưu trữ`,"settings.restore.archiveHint":`Một bản lưu đã có, hoặc một tệp .zip từ máy này.`,"settings.restore.encryptedName":`{name} — đã mã hoá`,"settings.restore.uploadOption":`Tải lên một tệp…`,"settings.restore.archiveFile":`Tệp lưu trữ (.zip)`,"settings.restore.unchangedTitle":`Chưa có gì thay đổi`,"settings.restore.archiveLine":`Bản lưu trữ {name}.`,"settings.restore.uploadedArchive":`Bản lưu trữ đã tải lên.`,"settings.restore.passwordProtected":`Bản sao lưu này được bảo vệ bằng mật khẩu.`,"settings.restore.password":`Mật khẩu`,"settings.restore.checkAgain":`Kiểm tra lại với mật khẩu`,"settings.restore.choosePrompt":`Chọn những gì cần khôi phục — đã chọn {selected} trên {total}.`,"settings.restore.willRestore":`Sẽ khôi phục: {items}.`,"settings.restore.skipped":`Đã bỏ qua: {items}.`,"settings.restore.nothing":`không có gì`,"settings.restore.restartNote":`Cài đặt của chính bảng điều khiển khác đi, nên hãy khởi động lại bảng điều khiển sau đó.`,"settings.restore.reloadedNote":`Các không gian làm việc được khôi phục sẽ tải lại ngay; những mục được đánh dấu tự khởi động sẽ tự chạy.`,"settings.restore.applyStored":`Áp dụng bản khôi phục này`,"settings.restore.applyUpload":`Khôi phục tệp đã tải lên`,"settings.restore.restored":`Đã khôi phục {count} mục.`,"settings.restore.restoredWithNotes":`Đã khôi phục {count} mục — {notes}.`,"settings.restore.noteReloaded":`các máy chủ đã khôi phục đang chạy, các mục tự khởi động đang được khởi động`,"settings.restore.noteRestart":`khởi động lại bảng điều khiển để áp dụng cài đặt của chính nó`,"settings.restore.reasonSymbolicLink":`liên kết tượng trưng, đã bỏ qua`,"settings.restore.reasonNotSelected":`không được chọn`,"settings.restore.reasonUnrestorable":`không thể khôi phục ở đây`,"settings.restore.reasonInvalidSettings":`cài đặt trong tệp lưu trữ không hợp lệ`,"settings.restore.reasonInvalidServers":`máy chủ trong tệp lưu trữ không hợp lệ`,"settings.shell.noUnsavedChanges":`Không có thay đổi chưa lưu`,"settings.shell.discard":`Bỏ thay đổi`,"settings.shell.save":`Lưu cài đặt`,"settings.shell.unsavedTitle":`Thay đổi chưa lưu`,"settings.shell.nothingToSave":`Không có gì để lưu.`,"settings.telegram.title":`Telegram`,"settings.telegram.description":`Chính sách nằm trong cấu hình; token bot là một secret và không bao giờ được máy chủ trả về.`,"settings.telegram.enabled":`Gửi thông báo`,"settings.telegram.enabledHint":`Mỗi sự kiện một tin nhắn, được điều tiết bởi thời gian chờ bên dưới.`,"settings.telegram.chatId":`Id chat`,"settings.telegram.chatIdPlaceholder":`123456789 hoặc @channel`,"settings.telegram.chatIdHint":`Dùng Detect chats để điền từ các cập nhật của bot.`,"settings.telegram.cooldown":`Thời gian chờ mỗi sự kiện (ms)`,"settings.telegram.cooldownHint":`Theo từng máy chủ và lý do, nên một máy chủ dao động liên tục không thể spam.`,"settings.telegram.onCrash":`Đã hết số lần thử`,"settings.telegram.onUnhealthy":`Cổng bất thường`,"settings.telegram.onForcedRestart":`Buộc khởi động lại`,"settings.telegram.onRecovered":`Đã hồi phục`,"settings.telegram.onHost":`Chỉ số máy chủ vượt ngưỡng`,"settings.telegram.onHostHint":`Đĩa, bộ nhớ, swap, tải và nhiệt độ CPU, theo các ngưỡng trong mục Chỉ số máy chủ.`,"settings.telegram.onDdns":`Dynamic DNS thay đổi hoặc thất bại`,"settings.telegram.onDdnsHint":`Một tin nhắn cho mỗi lượt có thay đổi bản ghi, và một tin cho lượt thất bại.`,"settings.telegram.botToken":`Token bot`,"settings.telegram.tokenSet":`đã đặt token`,"settings.telegram.noToken":`chưa có token`,"settings.telegram.tokenNote":`Lấy từ @BotFather — là secret, không bao giờ nằm trong servers.config.json.`,"settings.telegram.tokenPlaceholder":`123456789:AA…`,"settings.telegram.tokenSavedPlaceholder":`Đã lưu — nhập token mới để thay thế`,"settings.telegram.saveToken":`Lưu token`,"settings.telegram.detectChats":`Phát hiện chat`,"settings.telegram.sendTest":`Gửi thử`,"settings.telegram.removeToken":`Gỡ token`,"settings.telegram.removeTokenConfirm":`Xác nhận gỡ`,"settings.telegram.removeTokenTitle":`Gỡ token bot?`,"settings.telegram.removeTokenHint":`Thông báo sẽ dừng cho đến khi bạn dán token trở lại.`,"settings.telegram.tokenSaved":`Đã lưu token.`,"settings.telegram.tokenSavedFor":`Đã lưu token cho @{username}.`,"settings.telegram.tokenRemoved":`Đã gỡ token.`,"settings.telegram.noChats":`Không tìm thấy chat nào. Hãy gửi /start cho bot trước, rồi phát hiện lại.`,"settings.telegram.testSent":`Đã gửi tin nhắn thử.`,"settings.telegram.testFailed":`Gửi tin nhắn thử thất bại.`,"settings.telegram.chatsSeen":`Các chat bot đã thấy:`,"settings.telegram.lastSend":`Lần gửi gần nhất: {result}`,"settings.tls.title":`HTTPS`,"settings.tls.description":`Tải lên một cặp PEM và bảng điều khiển sẽ phục vụ TLS trên listener của chính nó. Chứng chỉ tự ký là ổn trong mạng gia đình.`,"settings.tls.serve":`Phục vụ bảng điều khiển qua HTTPS`,"settings.tls.serveHint":`Được lưu cùng nút Lưu cài đặt; bảng điều khiển bind lại và trang này đi theo nó.`,"settings.tls.certificateTitle":`Chứng chỉ`,"settings.tls.certificateDescription":`Chứng chỉ mã hoá PEM và khoá riêng của nó. Cả hai đều nằm trong tệp bí mật.`,"settings.tls.unusableTitle":`Không dùng được chứng chỉ đã lưu`,"settings.tls.subject":`Chủ thể`,"settings.tls.issuer":`Nhà phát hành`,"settings.tls.validUntil":`Có hiệu lực đến`,"settings.tls.days":`{count} ngày`,"settings.tls.privateKey":`Khoá riêng`,"settings.tls.keyMatches":`khớp với chứng chỉ`,"settings.tls.keyMismatch":`không khớp`,"settings.tls.fingerprint":`Vân tay`,"settings.tls.copyFingerprint":`Sao chép vân tay`,"settings.tls.noCertificateTitle":`Chưa tải lên chứng chỉ`,"settings.tls.noCertificateText":`Hãy tải lên chứng chỉ PEM và khoá bên dưới, rồi lưu. HTTPS không được phục vụ cho đến khi có chứng chỉ.`,"settings.tls.certFile":`Tệp chứng chỉ (.pem, .crt)`,"settings.tls.keyFile":`Tệp khoá riêng (.pem, .key)`,"settings.tls.pasteCertificate":`Hoặc dán chứng chỉ`,"settings.tls.pasteKey":`Hoặc dán khoá riêng`,"settings.tls.saveCertificate":`Lưu chứng chỉ`,"settings.tls.removeCertificate":`Gỡ chứng chỉ`,"settings.tls.confirmRemove":`Xác nhận gỡ`,"settings.tls.removeTitle":`Gỡ chứng chỉ?`,"settings.tls.removeHint":`TLS vẫn bật nhưng không có gì để phục vụ, nên bảng điều khiển quay về http sau khi listener bind lại.`,"settings.tls.stored":`Đã lưu chứng chỉ.`,"settings.tls.removed":`Đã gỡ chứng chỉ.`,"status.stopped":`Đã dừng`,"status.starting":`Đang khởi động`,"status.running":`Đang chạy`,"status.stopping":`Đang dừng`,"status.backoff":`Đang khởi động lại`,"status.crashed":`Đã gặp sự cố`,"status.conflict":`Xung đột cổng`,"theme.label":`Giao diện: {theme}`,"theme.light":`sáng`,"theme.dark":`tối`,"theme.system":`theo hệ thống`,"topbar.search":`Tìm kiếm hoặc chạy lệnh`,"topbar.openNavigation":`Mở điều hướng`,"topbar.commandPalette":`Bảng lệnh`,"topbar.account":`Tài khoản`,"topbar.signedIn":`Đã đăng nhập`,"topbar.signOut":`Đăng xuất`,"topbar.workspaceLabel":`Không gian làm việc: {name}`,"validation.port":`Cổng phải là số nguyên từ 1 đến 65535.`,"validation.idRequired":`Cần có id — đó là khoá mà máy chủ này nằm dưới.`,"validation.idPattern":`Id phải bắt đầu bằng chữ thường hoặc chữ số và chỉ chứa chữ thường, chữ số, dấu gạch ngang và gạch dưới.`,"validation.commandRequired":`Cần có command — tệp thực thi mà supervisor spawn.`,"validation.bootstrapCommand":`Bootstrap cần có lệnh để chạy.`,"views.actions.addAServer":`Thêm một máy chủ`,"views.actions.addServer":`Thêm máy chủ`,"views.actions.startAll":`Khởi động tất cả`,"views.actions.stopAll":`Dừng tất cả`,"views.common.thisWorkspace":`không gian làm việc này`,"views.globalOverview.configError":`Không đọc được cấu hình: {error}`,"views.globalOverview.degraded":`suy giảm`,"views.globalOverview.description":`Chỉ số máy chủ và mọi máy chủ của mọi không gian làm việc, nhóm theo nơi chúng nằm.`,"views.globalOverview.emptyDescription":`Hãy chọn một không gian làm việc ở thanh trên và thêm tiến trình đầu tiên cần được giữ chạy.`,"views.globalOverview.emptyTitle":`Chưa có máy chủ nào ở bất kỳ đâu`,"views.globalOverview.groupEmptyDescription":`Hãy thêm một cái, nó sẽ xuất hiện ở đây và trên trang không gian làm việc.`,"views.globalOverview.groupRunning":`{running}/{total} đang chạy`,"views.globalOverview.hostUptime":`Thời gian hoạt động của máy chủ`,"views.globalOverview.hostVitals":`Chỉ số máy chủ`,"views.globalOverview.hostVitalsNote":`Máy này, được mọi không gian làm việc chia sẻ.`,"views.globalOverview.openWorkspace":`Mở không gian làm việc`,"views.globalOverview.panelUptime":`Thời gian hoạt động của bảng điều khiển`,"views.globalOverview.samplingOff":`đã tắt lấy mẫu`,"views.globalOverview.samplingOn":`đang lấy mẫu`,"views.globalOverview.serversTotal":`tổng cộng {count} máy chủ`,"views.globalOverview.serving":`đang phục vụ`,"views.globalOverview.workspaces":`Không gian làm việc`,"views.globalSettings.authenticationDescription":`Ai được đăng nhập vào bảng điều khiển này, và cách một phiên được tin cậy.`,"views.globalSettings.backupsDescription":`Mỗi lần lưu một bản lưu trữ, bao gồm bảng điều khiển và bất kỳ không gian làm việc bạn chọn.`,"views.globalSettings.changesDescription":`Những gì nút Lưu sẽ ghi vào tệp cài đặt của bảng điều khiển.`,"views.globalSettings.description":`Listener, truy cập, thông tin máy chủ, sao lưu, TLS và đường dẫn cho bảng điều khiển này — được mọi không gian làm việc chia sẻ.`,"views.globalSettings.hostDescription":`Ngưỡng cảnh báo cho tài nguyên của chính máy này.`,"views.globalSettings.interfaceDescription":`Phục vụ UI bảng điều khiển của riêng bạn thay vì bản mặc định.`,"views.globalSettings.languageDescription":`Ngôn ngữ hiển thị của bảng điều khiển này, cho trình duyệt này.`,"views.globalSettings.languageNote":`Lựa chọn của bạn được giữ trong trình duyệt này và áp dụng cả cho trang đăng nhập. Nó không thay đổi đầu ra nhật ký hay thông báo API của chính bảng điều khiển.`,"views.globalSettings.listenerDescription":`Nơi bảng điều khiển lắng nghe và cách nó tự công bố.`,"views.globalSettings.loadErrorTitle":`Không tải được một số giá trị chỉ có trong tệp`,"views.globalSettings.navLabel":`Các mục cài đặt toàn cục`,"views.globalSettings.pathsDescription":`Nơi home-hosted lưu các tệp của nó, toàn cục và theo từng không gian làm việc.`,"views.globalSettings.saveFailed":`Không lưu được cài đặt.`,"views.globalSettings.saved":`Đã lưu cài đặt.`,"views.globalSettings.savedRebinding":`Đã lưu cài đặt — bảng điều khiển đang chuyển sang địa chỉ mới.`,"views.globalSettings.savedToast":`Đã lưu cài đặt`,"views.globalSettings.sectionAuthentication":`Xác thực`,"views.globalSettings.sectionBackups":`Sao lưu`,"views.globalSettings.sectionHost":`Chỉ số máy chủ`,"views.globalSettings.sectionInterface":`Giao diện`,"views.globalSettings.sectionListener":`Bộ lắng nghe`,"views.globalSettings.sectionPaths":`Đường dẫn`,"views.globalSettings.sectionTls":`TLS`,"views.globalSettings.title":`Cài đặt toàn cục`,"views.globalSettings.tlsDescription":`Phục vụ bảng điều khiển qua HTTPS bằng chứng chỉ của riêng bạn.`,"views.logs.allStreams":`Mọi luồng`,"views.logs.clear":`Xoá`,"views.logs.clearDescription":`{server} — tệp trên đĩa bị cắt ngắn. Tiến trình vẫn chạy và các dòng mới được ghi từ đây trở đi.`,"views.logs.clearFile":`Xoá tệp`,"views.logs.clearNote":`Hãy tải về trước nếu vẫn cần đầu ra — thao tác này không thể hoàn tác từ bảng điều khiển.`,"views.logs.clearTitle":`Xoá tệp nhật ký đã lưu?`,"views.logs.fileEmpty":`Tệp đã lưu đang trống.`,"views.logs.loadedLines":`đã nạp {count} dòng`,"views.logs.modeLive":`Luồng trực tiếp`,"views.logs.modePersisted":`Đã lưu`,"views.logs.noServersDescription":`Hãy thêm một cái, đầu ra của nó sẽ được lưu ở đây.`,"views.logs.noServersTitle":`Không có máy chủ`,"views.logs.nothingOnDisk":`Không có gì trên đĩa cho máy chủ này — tính năng lưu đang tắt, hoặc nó chưa ghi gì.`,"views.logs.nothingPersisted":`không có gì được lưu`,"views.logs.persistedSummary":`{workspace} · {persisted} trên {total} máy chủ có trên đĩa · {size}`,"views.logs.persistedTitle":`Nhật ký đã lưu`,"views.logs.pickServerDescription":`Đầu ra đã lưu và luồng trực tiếp là theo từng máy chủ. Hãy chọn một cái trong danh sách.`,"views.logs.pickServerTitle":`Chọn một máy chủ`,"views.logs.reload":`Tải lại`,"views.logs.retentionNote":`Việc xoay vòng và thời gian giữ được đặt trong Cài đặt không gian làm việc → Nhật ký.`,"views.logs.searchAria":`Tìm trong nhật ký`,"views.logs.searchPlaceholder":`tìm trong cửa sổ đuôi`,"views.logs.searchedLines":`đã tìm trong {count} dòng`,"views.logs.streamAria":`Luồng`,"views.logs.tailAria":`Kích thước đuôi`,"views.logs.waitingOutput":`Đã kết nối — đang chờ đầu ra.`,"views.overview.acrossTree":`trên toàn bộ cây`,"views.overview.cpuNow":`{value}% cpu hiện tại`,"views.overview.crashedOrUnhealthy":`sự cố hoặc bất thường`,"views.overview.description":`Trạng thái trực tiếp của mọi máy chủ trong không gian làm việc này, được làm mới qua một luồng sự kiện duy nhất.`,"views.overview.emptyDescription":`Hãy thêm tiến trình đầu tiên mà không gian làm việc này cần giữ chạy.`,"views.overview.emptyTitle":`Không gian làm việc này không có máy chủ nào`,"views.overview.enabled":`{count} đang bật`,"views.overview.longestUptime":`Hoạt động lâu nhất`,"views.overview.needsAttention":`Cần chú ý`,"views.overview.notUp":`{count} không hoạt động`,"views.overview.nothingBroken":`không có gì hỏng`,"views.overview.nothingRunning":`không có gì đang chạy`,"views.overview.openFullList":`Mở danh sách đầy đủ`,"views.overview.peak":`đỉnh {value}`,"views.overview.processMemory":`Bộ nhớ tiến trình`,"views.overview.recentActivity":`Hoạt động gần đây`,"views.overview.running":`Đang chạy`,"views.overview.sampling":`lịch sử tài nguyên được lấy mẫu mỗi 5 giây và giữ trong phiên này`,"views.overview.stopped":`Đã dừng`,"views.overview.workspaceLabel":`không gian làm việc {id}`,"views.route.server":`Máy chủ`,"views.serverDetail.allServers":`Mọi máy chủ`,"views.serverDetail.autostart":`Tự khởi động cùng bảng điều khiển`,"views.serverDetail.backToServers":`Quay lại danh sách máy chủ`,"views.serverDetail.bind":`lắng nghe trên`,"views.serverDetail.bindCustom":`{bind} — tuỳ chỉnh`,"views.serverDetail.bindLan":`0.0.0.0 — mọi giao diện`,"views.serverDetail.bindLocal":`127.0.0.1 — chỉ máy này`,"views.serverDetail.closeEditor":`Đóng trình soạn thảo`,"views.serverDetail.copyJson":`Sao chép cấu hình JSON`,"views.serverDetail.crashes24":`sự cố trong 24 giờ`,"views.serverDetail.dependencies":`Phụ thuộc`,"views.serverDetail.detached":`tách rời`,"views.serverDetail.detachedHint":`Tiến trình này tự thay thế chính nó: bảng điều khiển tiếp nhận tiến trình kế nhiệm thay vì khởi động thêm một bản sao. Nút Dừng vẫn hoạt động, đầu ra của nó vẫn ở nơi tiến trình kế nhiệm gửi tới.`,"views.serverDetail.disableServer":`Tắt máy chủ`,"views.serverDetail.editHint":`Sửa mọi trường của mục này`,"views.serverDetail.effectiveConfig":`Cấu hình hiệu lực`,"views.serverDetail.effectiveConfigNote":`Giá trị mặc định từ Cài đặt đã được hợp nhất vào các giá trị này.`,"views.serverDetail.enableServer":`Bật máy chủ`,"views.serverDetail.eventHistory":`Lịch sử sự kiện`,"views.serverDetail.eventHistoryNote":`Được bảng điều khiển giữ trong 24 giờ.`,"views.serverDetail.fieldArgs":`args`,"views.serverDetail.fieldBackupPaths":`đường dẫn sao lưu`,"views.serverDetail.fieldBootstrap":`bootstrap`,"views.serverDetail.fieldCommand":`command`,"views.serverDetail.fieldCwd":`cwd`,"views.serverDetail.fieldDataEnvs":`data envs`,"views.serverDetail.fieldDependsOn":`phụ thuộc vào`,"views.serverDetail.fieldEnv":`env`,"views.serverDetail.fieldEnvFile":`tệp env`,"views.serverDetail.fieldHealth":`tình trạng`,"views.serverDetail.fieldLogBuffer":`bộ đệm nhật ký`,"views.serverDetail.fieldOnPortConflict":`khi trùng cổng`,"views.serverDetail.fieldPortBind":`cổng · bind`,"views.serverDetail.fieldRestart":`khởi động lại`,"views.serverDetail.fieldRssLimit":`giới hạn RSS`,"views.serverDetail.fieldStop":`dừng`,"views.serverDetail.fields":`Trường`,"views.serverDetail.goneDescription":`{id} không còn trong servers.config.json nữa. Nó có thể đã bị gỡ từ một thẻ khác.`,"views.serverDetail.goneTitle":`Máy chủ đó đã biến mất`,"views.serverDetail.health":`Tình trạng`,"views.serverDetail.healthProbe":`Dò tình trạng`,"views.serverDetail.lastCrash":`Sự cố gần nhất`,"views.serverDetail.lastProbe":`Lần dò gần nhất`,"views.serverDetail.logBufferLines":`{count} dòng`,"views.serverDetail.memoryRss":`Bộ nhớ (RSS)`,"views.serverDetail.moreActions":`Thêm thao tác cho {label}`,"views.serverDetail.neverWritten":`Máy chủ này chưa ghi gì cả.`,"views.serverDetail.nextAttempt":`Lần thử tiếp theo`,"views.serverDetail.none":`không có`,"views.serverDetail.off":`tắt`,"views.serverDetail.persistent":`thường trú`,"views.serverDetail.persistentHint":"Mục này chạy dưới nanny riêng, nên nó vẫn chạy khi bảng điều khiển dừng, khởi động lại hoặc bị kill. `home-hosted down` báo cáo nó thay vì dừng nó; chỉ nút Dừng mới làm được.","views.serverDetail.pid":`PID`,"views.serverDetail.portFree":`trống`,"views.serverDetail.portInUse":`đang dùng`,"views.serverDetail.portState":`Trạng thái cổng`,"views.serverDetail.probeFailed":`Phép dò tình trạng chưa đạt.`,"views.serverDetail.probeFailedFor":`Phép dò tình trạng chưa đạt trong {duration}.`,"views.serverDetail.processes":`Tiến trình`,"views.serverDetail.rawJson":`JSON thô`,"views.serverDetail.removeAutostart":`Bỏ khỏi tự khởi động`,"views.serverDetail.removeDescription":`{label} sẽ bị gỡ khỏi servers.config.json: tiến trình của nó bị dừng, nhật ký và lịch sử sự cố của nó cũng bị xoá theo.`,"views.serverDetail.removeNote":`Thao tác này không thể hoàn tác từ bảng điều khiển — mục đó phải được thêm lại bằng tay hoặc từ một bản sao lưu.`,"views.serverDetail.removeServer":`Gỡ máy chủ`,"views.serverDetail.removeTitle":`Gỡ máy chủ này?`,"views.serverDetail.restart":`Khởi động lại`,"views.serverDetail.restarts":`Số lần khởi động lại`,"views.serverDetail.sectionConfig":`Cấu hình`,"views.serverDetail.sectionHistory":`Lịch sử`,"views.serverDetail.sectionOutput":`Đầu ra trực tiếp`,"views.serverDetail.start":`Khởi động`,"views.serverDetail.startsOnItsOwn":`Tự khởi động. Thêm id trong {code} để sắp nó sau các máy chủ khác.`,"views.serverDetail.stop":`Dừng`,"views.serverDetail.telemetry":`Đo từ xa`,"views.serverDetail.telemetryNote":`Được lấy mẫu mỗi 5 giây khi trang này mở.`,"views.serverDetail.unhealthyFor":`Bất thường trong`,"views.serverDetail.uptime24":`Hoạt động 24 giờ`,"views.serverDetail.waitingFirstLine":`Đang chờ dòng đầu tiên…`,"views.servers.clearFilter":`Xoá bộ lọc`,"views.servers.clearFilters":`Xoá các bộ lọc`,"views.servers.description":`Mọi mục trong servers.config.json của {workspace}, kèm tài nguyên trực tiếp, tình trạng và lịch sử.`,"views.servers.emptyDescription":`Hãy thêm tiến trình đầu tiên mà bảng điều khiển này cần giám sát. Command, args, env và thư mục làm việc của nó đều nằm trong tệp cấu hình.`,"views.servers.emptyTitle":`Chưa cấu hình máy chủ nào`,"views.servers.filterAll":`Tất cả`,"views.servers.filterAria":`Lọc máy chủ`,"views.servers.filterAttention":`Cần chú ý`,"views.servers.filterDisabled":`Đã tắt`,"views.servers.filterPlaceholder":`Lọc theo id, nhãn, command hoặc cổng`,"views.servers.filterRunning":`Đang chạy`,"views.servers.filterStopped":`Đã dừng`,"views.servers.noMatchDescription":`Hãy thử trạng thái khác hoặc xoá tìm kiếm.`,"views.servers.noMatchTitle":`Không có gì khớp với bộ lọc đó`,"views.settings.changesDescription":`Những gì nút Lưu sẽ ghi vào cài đặt của {workspace}.`,"views.settings.configErrorNote":`Bảng điều khiển tiếp tục giám sát với cấu hình nó đã có; sửa tệp sẽ tự động nạp lại.`,"views.settings.configErrorTitle":`Không đọc được cấu hình của không gian làm việc`,"views.settings.configWarningTitle":`Cấu hình của không gian làm việc này có cảnh báo`,"views.settings.ddnsDescription":`Giữ các hostname luôn trỏ về địa chỉ công khai của máy này, bất kể nhà đăng ký nào đang giữ chúng.`,"views.settings.defaultsDescription":`Áp dụng cho mọi mục trong không gian làm việc này không tự đặt giá trị riêng.`,"views.settings.description":`Mặc định máy chủ, thời gian giữ nhật ký, thông báo và dynamic DNS cho {workspace}.`,"views.settings.logsDescription":`Không gian làm việc này giữ bao nhiêu đầu ra trên đĩa và trong bao lâu.`,"views.settings.navLabel":`Các mục cài đặt không gian làm việc`,"views.settings.notificationsDescription":`Cảnh báo sự cố và tình trạng cho không gian làm việc này, gửi tới một chat Telegram.`,"views.settings.saveFailed":`Không lưu được cài đặt.`,"views.settings.saved":`Đã lưu cài đặt không gian làm việc.`,"views.settings.savedToast":`Đã lưu cài đặt không gian làm việc`,"views.settings.sectionDdns":`Dynamic DNS`,"views.settings.sectionDefaults":`Mặc định máy chủ`,"views.settings.sectionLogs":`Nhật ký`,"views.settings.sectionNotifications":`Thông báo`,"workspace.new":`Không gian làm việc mới`,"workspace.rename":`Đổi tên không gian làm việc`,"workspace.create":`Tạo không gian làm việc`,"workspace.renameAction":`Đổi tên`,"workspace.createHint":`Có cài đặt, máy chủ, nhật ký, bí mật và bản sao lưu riêng — do chính bảng điều khiển này phục vụ.`,"workspace.renameHint":`Chỉ tên thay đổi; id không gian làm việc giữ nguyên nên URL và đường dẫn vẫn hoạt động.`,"workspace.nameHint":`Hiển thị ở thanh trên.`,"workspace.nameHintId":`Hiển thị ở thanh trên. Id: {id}`,"workspace.none":`Không có không gian làm việc`,"workspace.delete":`Xoá không gian làm việc`,"days.remaining":{other:`{count} ngày`},"editor.unsaved":{one:`thay đổi chưa lưu`,other:`thay đổi chưa lưu`},"editor.saveChanges":{one:`Lưu {count} thay đổi`,other:`Lưu {count} thay đổi`},"logs.lines":{other:`{count} dòng`},"palette.results":{other:`{count} kết quả`},"proxy.retry.inMinutes":{one:`~{count} phút`,other:`~{count} phút`},"proxy.retry.inHours":{one:`~{count} giờ`,other:`~{count} giờ`},"servers.total":{other:`{count} máy chủ`},"servers.running":{other:`{count} đang chạy`},"settings.backup.entriesCount":{one:`{count} mục`,other:`{count} mục`},"settings.backup.itemsSelected":{one:`đã chọn {count} mục`,other:`đã chọn {count} mục`},"settings.ddns.hostnameCount":{one:`{count} hostname`,other:`{count} hostname`},"settings.shell.fieldsChanged":{one:`trường đã thay đổi`,other:`trường đã thay đổi`},"settings.shell.saveChanges":{one:`Lưu {count} thay đổi`,other:`Lưu {count} thay đổi`},"views.globalOverview.needLook":{one:`{count} máy chủ cần xem xét`,other:`{count} máy chủ cần xem xét`},"views.logs.filesOnDisk":{one:`{count} tệp`,other:`{count} tệp`},"views.overview.needLook":{one:`{count} máy chủ cần xem xét`,other:`{count} máy chủ cần xem xét`}};export{e as default};
|
|
1
|
+
var e={"activity.emptyTitle":`Không có sự kiện nào trong 24 giờ qua`,"activity.emptyDescription":`Khởi động, thoát, sự cố và phục hồi xuất hiện ở đây khi chúng xảy ra.`,"activity.ran":`đã chạy {duration}`,"addServer.title":`Thêm máy chủ`,"addServer.description":`Thêm một mục vào servers.config.json của {workspace}; mọi chính sách bạn bỏ trống đều kế thừa từ giá trị mặc định.`,"addServer.thisWorkspace":`không gian làm việc này`,"addServer.identity":`Nhận dạng`,"addServer.id":`Id`,"addServer.idHint":`Chữ thường, chữ số, dấu gạch ngang và gạch dưới; được dùng trong URL và nhật ký.`,"addServer.labelHint":`Hiển thị trong bảng điều khiển; mặc định là id.`,"addServer.process":`Tiến trình`,"addServer.commandHint":`Được spawn không qua shell.`,"addServer.argumentsHint":`Mỗi dòng một tham số; khoảng trắng trong dòng được giữ nguyên.`,"addServer.portLifecycle":`Cổng & vòng đời`,"addServer.bindHint":`lan mở nó ra mạng; chỉ làm vậy khi đã có xác thực.`,"addServer.advanced":`Cài đặt nâng cao`,"addServer.advancedHint":`môi trường, sao lưu, chính sách, vòng đời, bootstrap`,"addServer.backups":`Sao lưu`,"addServer.backupIgnore":`Bỏ qua các tệp sinh tự động đã biết`,"addServer.bootstrapDescription":`Một lệnh chạy một lần trước lần khởi động đầu tiên.`,"addServer.bootstrapHint":`Cài đặt, migration, tải xuống — trước lần khởi động đầu tiên, không phải mọi lần.`,"addServer.policyResources":`Chính sách & tài nguyên`,"addServer.logBufferHint":`Để trống là dùng mặc định.`,"addServer.inheritNote":`Khởi động lại, tình trạng và dừng ban đầu khớp với {settings}; đổi một mục ở đây thì nó được ghi vào mục này thay vì tiếp tục kế thừa.`,"addServer.serverDefaults":`Cài đặt → Mặc định máy chủ`,"addServer.placeholdersTitle":`Các placeholder có sẵn cho tham số`,"addServer.submit":`Thêm vào servers.config.json`,"app.name":`home-hosted`,"app.tagline":`Bảng điều khiển giám sát tiến trình`,"bind.local":`local — 127.0.0.1`,"bind.lan":`lan — 0.0.0.0`,"bind.explicit":`{bind} — chỉ định rõ`,"common.cancel":`Huỷ`,"common.confirm":`Xác nhận`,"common.reset":`Đặt lại`,"common.keepIt":`Giữ nguyên`,"common.remove":`Gỡ bỏ`,"common.close":`Đóng`,"common.save":`Lưu`,"common.saving":`Đang lưu…`,"common.discard":`Bỏ thay đổi`,"common.delete":`Xoá`,"common.edit":`Sửa`,"common.add":`Thêm`,"common.retry":`Thử lại`,"common.copy":`Sao chép`,"common.copied":`Đã sao chép`,"common.enabled":`Đang bật`,"common.disabled":`Đang tắt`,"common.none":`Không có`,"common.unknown":`không rõ`,"common.loading":`Đang tải…`,"common.selectAll":`Chọn tất cả`,"common.selectNone":`Bỏ chọn tất cả`,"common.name":`Tên`,"common.label":`Nhãn`,"common.hostname":`Tên máy chủ`,"common.port":`Cổng`,"common.command":`Lệnh`,"common.environment":`Biến môi trường`,"common.memory":`Bộ nhớ`,"common.cpu":`CPU`,"common.disk":`Đĩa`,"common.uptime":`Thời gian hoạt động`,"common.status":`Trạng thái`,"common.actions":`Thao tác`,"common.details":`Chi tiết`,"common.overview":`Tổng quan`,"common.warning":`Cảnh báo`,"common.error":`Lỗi`,"common.confirmQuestion":`{label}?`,"common.unset":`chưa đặt`,"common.never":`chưa bao giờ`,"common.now":`vừa xong`,"common.dismiss":`Bỏ qua`,"connection.live":`Trực tiếp`,"connection.connecting":`Đang kết nối`,"connection.reconnecting":`Đang kết nối lại`,"connection.liveUpdates":`Cập nhật trực tiếp`,"editor.title":`Sửa cấu hình`,"editor.description":`Ghi các ghi đè vào {file}; phần nào để nguyên sẽ tiếp tục kế thừa giá trị mặc định.`,"editor.inSync":`đã đồng bộ`,"editor.process":`Tiến trình`,"editor.processDescription":`Thứ được spawn, ở đâu, và với môi trường nào.`,"editor.labelPlaceholder":`quay về dùng id`,"editor.argumentsHint":`Mỗi dòng một tham số; {port} {host} {home} {projectDir} {dataRoot} {id} {label} {cwd} {bind} {lanIp} sẽ được thay thế.`,"editor.portTitle":`Cổng & bind`,"editor.portDescription":`Cách cổng được preflight và nơi tiến trình truy cập được.`,"editor.bindHint":`Một IPv4 tuỳ chỉnh mà cấu hình đã đặt vẫn chọn được.`,"editor.lifecycle":`Vòng đời`,"editor.lifecycleDescription":`Supervisor có quản lý mục này hay không.`,"editor.save":`Lưu vào servers.config.json`,"editor.changesTitle":`Thay đổi chưa lưu`,"editor.changesDescription":`Những gì nút Lưu sẽ ghi vào servers.config.json.`,"editor.nothingToSave":`Không có gì để lưu.`,"health.disabled":`Không kiểm tra`,"health.unknown":`Chưa dò`,"health.healthy":`Bình thường`,"health.unhealthy":`Bất thường`,"history.start":`Đã khởi động`,"history.exit":`Đã thoát`,"history.crash":`Gặp sự cố`,"history.forcedRestart":`Buộc khởi động lại`,"history.unhealthy":`Bất thường`,"history.recovered":`Đã phục hồi`,"host.loadPerCpu":`Tải / cpu`,"host.cpuTemp":`Nhiệt độ CPU`,"host.samplingOff":`Lấy mẫu máy chủ đang tắt`,"host.samplingOffDescription":`Bật trong Cài đặt để thu thập tải, bộ nhớ, đĩa và nhiệt độ.`,"host.swap":`Swap`,"host.cpus":`CPU`,"host.loadAverage":`Tải 1 / 5 / 15`,"host.memoryUsed":`Bộ nhớ đã dùng`,"host.sampled":`Đã lấy mẫu`,"host.filesystems":`Hệ thống tệp`,"host.thresholdsBreached":`Ngưỡng bị vượt`,"killPort.trigger":`Kill thứ đang giữ cổng {port}`,"killPort.title":`Kill tiến trình trên cổng {port}?`,"killPort.body":`Nó được yêu cầu dừng trước, và chỉ bị kill nếu bỏ qua yêu cầu đó. Mọi thứ bảng điều khiển này giám sát đều bị từ chối, nên một máy chủ được quản lý không thể mất theo cách này.`,"killPort.confirm":`Kill nó`,"language.label":`Ngôn ngữ`,"language.select":`Chọn ngôn ngữ`,"lifecycle.restartTitle":`Chính sách khởi động lại`,"lifecycle.restartDescription":`Thời gian chờ tăng dần giữa các lần thử sau khi sự cố.`,"lifecycle.restartOnCrash":`Khởi động lại khi sự cố`,"lifecycle.maxRetries":`Số lần thử tối đa`,"lifecycle.maxRetriesHint":`Số lần thử trước khi máy chủ bị bỏ ở trạng thái sự cố.`,"lifecycle.baseDelay":`Độ trễ cơ sở (ms)`,"lifecycle.factor":`Hệ số tăng dần`,"lifecycle.maxDelay":`Độ trễ tối đa (ms)`,"lifecycle.resetAfter":`Đặt lại sau (ms)`,"lifecycle.resetAfterHint":`Một lần chạy dài đến mức này sẽ xoá bộ đếm số lần thử.`,"lifecycle.healthTitle":`Dò tình trạng`,"lifecycle.healthDescription":`Cách dò mức sẵn sàng sau khi tiến trình chạy lên.`,"lifecycle.probe":`Dò máy chủ này`,"lifecycle.probeType":`Kiểu dò`,"lifecycle.probePort":`Cổng TCP — chỉ kết nối`,"lifecycle.probeHttp":`Yêu cầu HTTP — kiểm tra phản hồi`,"lifecycle.interval":`Khoảng thời gian (ms)`,"lifecycle.timeout":`Thời gian chờ (ms)`,"lifecycle.unhealthyAfter":`Bất thường sau`,"lifecycle.unhealthyAfterHint":`Số lần dò thất bại liên tiếp.`,"lifecycle.forceRestartAfter":`Buộc khởi động lại sau (ms)`,"lifecycle.forceRestartAfterHint":`0 là tắt.`,"lifecycle.startTimeout":`Thời gian chờ khởi động (ms)`,"lifecycle.httpPath":`Đường dẫn HTTP`,"lifecycle.httpMethod":`Phương thức HTTP`,"lifecycle.expectStatus":`Mong đợi mã trạng thái`,"lifecycle.expectStatusHint":`Để trống là chấp nhận mọi mã thấp hơn.`,"lifecycle.expectStatusBelow":`Khoẻ khi trạng thái thấp hơn`,"lifecycle.expectBody":`Nội dung phải chứa`,"lifecycle.expectBodyPlaceholder":`chuỗi con không bắt buộc`,"lifecycle.headBodyHint":`HEAD không có nội dung phản hồi, nên phép dò này bị bỏ qua — hãy dùng GET hoặc xoá trống.`,"lifecycle.stopTitle":`Hành vi khi dừng`,"lifecycle.stopDescription":`Cách yêu cầu cây tiến trình kết thúc.`,"lifecycle.signal":`Tín hiệu`,"lifecycle.signalTerm":`SIGTERM — yêu cầu dừng`,"lifecycle.signalInt":`SIGINT — ngắt (Ctrl-C)`,"lifecycle.signalKill":`SIGKILL — kill ngay`,"lifecycle.grace":`Thời gian gia hạn (ms)`,"lifecycle.killGroup":`Kill toàn bộ nhóm tiến trình`,"lifecycle.killPortHolders":`Cũng kill bất cứ thứ gì đang giữ cổng`,"login.title":`Đăng nhập để tiếp tục`,"login.firstRunTitle":`Bảng điều khiển này chưa có mật khẩu`,"login.firstRunSubtitle":`Bất kỳ thứ gì trên máy này đều truy cập được. Hãy đặt mật khẩu ngay sau khi vào.`,"login.authOffTitle":`Xác thực đang tắt`,"login.authOffSubtitle":`Bảng điều khiển chỉ lắng nghe trên loopback, và đó là thứ duy nhất bảo vệ nó lúc này.`,"login.subtitle":`Bảng điều khiển đã được bảo vệ. Nhập mật khẩu để tiếp tục.`,"login.password":`Mật khẩu`,"login.showPassword":`Hiện mật khẩu`,"login.hidePassword":`Ẩn mật khẩu`,"login.signIn":`Đăng nhập`,"login.openDashboard":`Mở bảng điều khiển`,"login.exposed":`Đang phơi bày`,"login.defaultPasswordWarning":`Vẫn đang dùng mật khẩu mặc định {password}. Hãy đổi trong Cài đặt — việc lắng nghe ngoài 127.0.0.1 vẫn bị từ chối cho đến khi bạn đổi.`,"login.noPasswordWarning":`Chưa đặt mật khẩu. Mở Cài đặt từ máy này để thêm, hoặc chạy {command}.`,"login.sessionNote":`Phiên đăng nhập kéo dài {days} ngày sau lần truy cập cuối — mỗi yêu cầu gia hạn thêm. Đăng xuất chỉ xoá trên trình duyệt này.`,"login.servedFromThisMachine":`phục vụ từ máy này`,"logs.emptyHint":`Chưa có đầu ra.`,"logs.noMatches":`Không có gì khớp với tìm kiếm hoặc bộ lọc luồng đó.`,"logs.searchPlaceholder":`Tìm trong đầu ra này`,"logs.searchLabel":`Tìm trong đầu ra nhật ký`,"logs.clearSearch":`Xoá tìm kiếm`,"logs.prevMatch":`Kết quả trước`,"logs.nextMatch":`Kết quả tiếp theo`,"logs.showTimestamps":`Hiện dấu thời gian`,"logs.hideTimestamps":`Ẩn dấu thời gian`,"logs.timestampsShort":`ts`,"logs.pause":`Tạm dừng`,"logs.follow":`Bám theo`,"logs.clearHint":`Xoá bộ đệm trong bộ nhớ`,"logs.clearLabel":`Xoá bộ đệm nhật ký`,"logs.downloadHint":`Tải tệp đã lưu`,"logs.downloadLabel":`Tải tệp nhật ký`,"logs.outputLabel":`Đầu ra nhật ký`,"logs.jumpToLatest":`Nhảy tới mới nhất`,"logs.streaming":`đang truyền`,"logs.paused":`đã tạm dừng`,"logs.snapshot":`ảnh chụp`,"logs.linesOf":`{count} trong {total} dòng`,"logs.matches":`{count} kết quả`,"logs.rowHeight":`chiều cao dòng {height}px · dạng cửa sổ`,"logs.streamAll":`Tất cả`,"logs.streamOut":`out`,"logs.streamErr":`err`,"logs.streamSys":`sys`,"metric.emptyHint":`đang thu thập…`,"nav.global":`Toàn cục`,"nav.workspace":`Không gian làm việc`,"nav.others":`Khác`,"nav.overview":`Tổng quan`,"nav.servers":`Máy chủ`,"nav.logs":`Nhật ký`,"nav.workspaceSettings":`Cài đặt không gian làm việc`,"nav.globalOverview":`Tổng quan toàn cục`,"nav.globalSettings":`Cài đặt toàn cục`,"nav.reverseProxy":`Reverse Proxy`,"nav.navigation":`Điều hướng`,"nav.closeNavigation":`Đóng điều hướng`,"nav.hostVitals":`Chỉ số máy chủ`,"notice.configError":`Không đọc được tệp cấu hình: {error}`,"notice.configErrorHint":`Bảng điều khiển vẫn chạy cấu hình cũ; sửa {path} là nó tự nạp lại.`,"notice.defaultPassword":`Bảng điều khiển này vẫn dùng mật khẩu mặc định.`,"notice.defaultPasswordHint":`Hãy đổi trong Cài đặt toàn cục — việc lắng nghe ngoài 127.0.0.1 vẫn bị từ chối cho đến khi bạn đổi.`,"notice.noPassword":`Xác thực đang bật nhưng chưa đặt mật khẩu, nên không có gì được yêu cầu.`,"notice.noPasswordHint":`Đặt mật khẩu trong Cài đặt toàn cục để thực sự khoá bảng điều khiển.`,"notice.exposed":`Bảng điều khiển này truy cập được từ ngoài 127.0.0.1.`,"notice.exposedHint":`Hãy giữ mật khẩu mạnh, hoặc đặt một proxy kết thúc TLS phía trước.`,"notice.authOff":`Xác thực đang tắt — bảng điều khiển chỉ được bảo vệ bởi việc lắng nghe trên loopback.`,"onPortConflict.block":`block — từ chối khởi động`,"onPortConflict.warn":`warn — vẫn khởi động`,"onPortConflict.follow":`follow — tiếp nhận bản khởi động lại tách rời của chính nó`,"onPortConflict.reclaim":`reclaim — thay bằng một bản sao được giám sát`,"onPortConflict.kill":`kill — dừng bất cứ thứ gì đang giữ cổng`,"palette.placeholder":`Chuyển tới máy chủ, chạy thao tác, mở cài đặt…`,"palette.openServer":`Mở {label}`,"palette.serverLogs":`Nhật ký của {label}`,"palette.startServer":`Khởi động {label}`,"palette.stopServer":`Dừng {label}`,"palette.restartServer":`Khởi động lại {label}`,"palette.goOverview":`Tới Tổng quan`,"palette.goGlobalOverview":`Tới Tổng quan toàn cục`,"palette.goGlobalSettings":`Tới Cài đặt toàn cục`,"palette.goProxy":`Tới Reverse Proxy`,"palette.goServers":`Tới Máy chủ`,"palette.goLogs":`Tới Nhật ký`,"palette.goWorkspaceSettings":`Tới Cài đặt không gian làm việc`,"palette.startAll":`Khởi động mọi máy chủ đang bật ở đây`,"palette.stopAll":`Dừng mọi máy chủ ở đây`,"palette.switchWorkspace":`Chuyển sang {label}`,"palette.globalSetting":`Cài đặt toàn cục: {label}`,"palette.workspaceSetting":`Cài đặt không gian làm việc: {label}`,"palette.theme":`Giao diện {theme}`,"palette.groupServers":`Máy chủ`,"palette.groupActions":`Thao tác`,"palette.groupNavigate":`Điều hướng`,"palette.groupWorkspaces":`Không gian làm việc`,"palette.groupAppearance":`Giao diện`,"palette.navigate":`di chuyển`,"palette.run":`chạy`,"palette.noMatches":`Không có kết quả cho “{query}”.`,"proxy.account.automatic":`Tự động (tài khoản duy nhất có thể trả lời)`,"proxy.account.noTxt":`không hỗ trợ TXT`,"proxy.account.noCredentials":`chưa có thông tin đăng nhập`,"proxy.account.gone":`Tài khoản đó không còn được cấu hình.`,"proxy.account.emptyHint":`DNS-01 ghi bản ghi thử thách ở đây. Để trống là dùng tài khoản duy nhất có thể trả lời thử thách, nếu có.`,"proxy.account.cannotWrite":`Tài khoản {provider} không ghi được bản ghi TXT, nên không thể trả lời thử thách DNS-01.`,"proxy.account.noCredentialsYet":`Chưa có thông tin đăng nhập nào được lưu cho tài khoản {provider} này.`,"proxy.account.through":`Thử thách được ghi qua tài khoản {provider} này.`,"proxy.certificate.title":`Chứng chỉ đã tải lên`,"proxy.certificate.description":`Được phục vụ bởi các tuyến đường đặt ở “Chứng chỉ đã tải lên”. Mọi thứ khác — công khai hay nội bộ — đều do engine tự cấp chứng chỉ.`,"proxy.certificate.add":`Thêm chứng chỉ`,"proxy.certificate.emptyTitle":`Chưa tải lên chứng chỉ nào`,"proxy.certificate.emptyDescription":`Route đặt ở “Chứng chỉ đã tải lên” cần một cặp bao phủ hostname của nó, nếu không engine không có gì để phục vụ.`,"proxy.certificate.daysLeft":`còn {days} ngày`,"proxy.certificate.subject":`Chủ thể`,"proxy.certificate.issuer":`Nhà phát hành`,"proxy.certificate.validUntil":`Có hiệu lực đến`,"proxy.certificate.covers":`Bao phủ`,"proxy.certificate.noSans":`không có hostname nào trong SAN`,"proxy.certificate.removeAria":`Gỡ {name}`,"proxy.certificate.removeQuestion":`Gỡ “{name}”?`,"proxy.certificate.removeBody":`Cặp chứng chỉ bị xoá khỏi đĩa. Tuyến đường vẫn đặt ở “Chứng chỉ đã tải lên” sẽ tiếp tục phục vụ chứng chỉ riêng của engine cho đến khi bạn đổi, và bảng điều khiển từ chối thao tác này khi còn tuyến đường đang dùng nó.`,"proxy.certificate.removeIt":`Gỡ nó`,"proxy.certificate.stored":`Đã lưu “{label}”.`,"proxy.certificate.removed":`Đã gỡ “{name}”.`,"proxy.certificateDialog.title":`Thêm chứng chỉ`,"proxy.certificateDialog.description":`Cặp chứng chỉ được lưu trên đĩa dưới id của nó, và tuyến đường đặt ở “Chứng chỉ đã tải lên” có thể phục vụ nó.`,"proxy.certificateDialog.label":`Nhãn`,"proxy.certificateDialog.labelPlaceholder":`Wildcard gia đình`,"proxy.certificateDialog.id":`Id`,"proxy.certificateDialog.idHint":`đặt tên cho các tệp trên đĩa`,"proxy.certificateDialog.certFile":`Tệp chứng chỉ (.pem, .crt)`,"proxy.certificateDialog.keyFile":`Tệp khoá riêng (.pem, .key)`,"proxy.certificateDialog.pasteCert":`Hoặc dán chứng chỉ`,"proxy.certificateDialog.pasteKey":`Hoặc dán khoá riêng`,"proxy.certificateDialog.certPlaceholder":`-----BEGIN CERTIFICATE-----`,"proxy.certificateDialog.keyPlaceholder":`-----BEGIN PRIVATE KEY-----`,"proxy.certificateDialog.store":`Lưu chứng chỉ`,"proxy.certificateDialog.errorLabel":`cần có nhãn`,"proxy.certificateDialog.errorId":`id phải bắt đầu bằng chữ cái hoặc chữ số, sau đó là chữ cái, chữ số, gạch ngang hoặc gạch dưới`,"proxy.certificateDialog.errorTaken":`“{id}” đã được một chứng chỉ khác dùng`,"proxy.certificateDialog.errorCertificate":`hãy dán hoặc chọn chứng chỉ`,"proxy.certificateDialog.errorPrivateKey":`hãy dán hoặc chọn khoá riêng`,"proxy.engine.title":`Bộ máy`,"proxy.engine.description":`Bản thân proxy nghịch đảo. Bảng điều khiển tải bản build hiện tại, giám sát nó và áp dụng cấu hình qua API quản trị riêng của engine.`,"proxy.engine.notInFrame":`Trạng thái proxy chưa nằm trong khung của bảng điều khiển này.`,"proxy.engine.readFailed":`Không đọc được engine`,"proxy.engine.notInstalled":`Chưa cài engine`,"proxy.engine.installNote":`Cài đặt sẽ tải bản phát hành {engine} hiện tại mà bảng điều khiển giám sát — khoảng 46 MB, một lần. Không có gì được mở ra cho đến khi thêm tuyến đường và bật proxy.`,"proxy.engine.version":`Phiên bản`,"proxy.engine.notProbed":`chưa dò`,"proxy.engine.source":`Nguồn`,"proxy.engine.sourceCustom":`một đường dẫn được cấu hình thủ công`,"proxy.engine.sourceDownloaded":`do bảng điều khiển tải về`,"proxy.engine.size":`Kích thước`,"proxy.engine.binary":`Tệp nhị phân`,"proxy.engine.copyPath":`Sao chép đường dẫn nhị phân`,"proxy.engine.address":`Địa chỉ đang hoạt động`,"proxy.engine.process":`Tiến trình`,"proxy.engine.certificates":`Chứng chỉ`,"proxy.engine.noCert":`chưa có chứng chỉ công khai`,"proxy.engine.expiresSoon":`cái sớm nhất hết hạn sau {days} ngày`,"proxy.engine.acme":`Chứng chỉ ACME`,"proxy.engine.localCa":`CA cục bộ`,"proxy.engine.dns01":`DNS-01`,"proxy.engine.tcpUdp":`TCP/UDP`,"proxy.engine.documentation":`Tài liệu {engine}`,"proxy.engine.failed":`Engine báo lỗi`,"proxy.engine.setcapHint":`Cổng đặc quyền (dưới 1024) cần lệnh này một lần trên Linux:`,"proxy.engine.copyCommand":`Sao chép lệnh`,"proxy.engine.install":`Cài engine`,"proxy.engine.start":`Khởi động`,"proxy.engine.stop":`Dừng`,"proxy.engine.apply":`Áp dụng cấu hình`,"proxy.engine.revert":`Hoàn tác`,"proxy.engine.revertHint":`Quay về cấu hình đã được áp dụng trước lần gần nhất`,"proxy.engine.update":`Cập nhật engine`,"proxy.listener.title":`Listener & chứng chỉ`,"proxy.listener.description":`Nơi proxy lắng nghe. 80 và 443 là những cổng router chuyển tiếp và thử thách ACME mong đợi; cổng dưới 1024 cần bind đặc quyền.`,"proxy.listener.unprivilegedPorts":`cổng không đặc quyền`,"proxy.listener.run":`Chạy proxy nghịch đảo`,"proxy.listener.runHint":`Được lưu cùng nút Lưu cài đặt; bảng điều khiển khởi động hoặc dừng engine cho khớp.`,"proxy.listener.httpPort":`Cổng HTTP`,"proxy.listener.httpPortHint":`Thử thách HTTP-01 của ACME và chuyển hướng sang HTTPS.`,"proxy.listener.httpsPort":`Cổng HTTPS`,"proxy.listener.httpsPortHint":`Nơi phục vụ chứng chỉ.`,"proxy.listener.useFallback":`Dùng {http} / {https}`,"proxy.listener.useStandard":`Dùng 80 / 443`,"proxy.listener.forwardHint":`Đang chạy không đặc quyền — hãy chuyển tiếp 80 và 443 tới các cổng này trên router.`,"proxy.listener.privilegedTitle":`Cổng dưới 1024 cần bind đặc quyền`,"proxy.listener.privilegedBody":`Chạy bảng điều khiển dưới người dùng của bạn không thể bind 80 hay 443 nếu không có quyền. Hoặc cấp quyền một lần {how} rồi khởi động lại engine, hoặc giữ {http}/{https} và chuyển tiếp 80/443 từ router. Trên Windows, cổng này bind được tự do, nhưng thứ khác có thể đang giữ nó.`,"proxy.listener.privilegedWithSetcap":`bằng {command} trên tệp nhị phân của engine`,"proxy.listener.email":`Email tài khoản ACME`,"proxy.listener.emailPlaceholder":`you@example.com`,"proxy.listener.emailHint":`Let's Encrypt dùng địa chỉ này để cảnh báo khi chứng chỉ sắp hết hạn. Tên chỉ dùng nội bộ sẽ nhận CA riêng của engine và không cần địa chỉ nào.`,"proxy.listener.emailNeededTitle":`Cần một email cho HTTPS tự động`,"proxy.listener.emailNeededBody":`“{host}” là hostname công khai, nên engine hỏi một CA để lấy chứng chỉ và địa chỉ tài khoản là bắt buộc. Hãy điền vào, tắt TLS của tuyến đường, hoặc bật endpoint staging trong lúc thử nghiệm.`,"proxy.listener.staging":`Dùng endpoint staging của ACME`,"proxy.listener.stagingHint":`Chứng chỉ không được tin cậy và không tiêu tốn hạn mức trong lúc bạn thử nghiệm.`,"proxy.listener.dns01":`Trả lời thử thách bằng DNS-01`,"proxy.listener.dns01Hint":`Bảng điều khiển ghi bản ghi thử thách qua tài khoản DNS của tuyến đường, nên không cần cổng vào để lấy chứng chỉ.`,"proxy.listener.resolvers":`Kiểm tra bản ghi dựa trên`,"proxy.listener.resolversPlaceholder":`1.1.1.1, 8.8.8.8`,"proxy.listener.resolversHint":`Các nameserver mà engine đọc bản ghi từ đó; để trống là dùng của chính nó. Cần thiết khi DNS split-horizon cho nó thấy một góc nhìn khác.`,"proxy.listener.noAccountTitle":`Không có tài khoản DNS nào trả lời được thử thách`,"proxy.listener.noAccountBody":`DNS-01 đang bật, nhưng không tài khoản nào có thông tin đăng nhập dùng được. Hãy thêm một tài khoản trong Cài đặt không gian làm việc → Dynamic DNS, nếu không các tên công khai vẫn dùng thử thách qua cổng và chờ một CA không thể tiếp cận chúng.`,"proxy.listener.manyAccountsTitle":`Mỗi tuyến đường công khai phải chọn một tài khoản`,"proxy.listener.manyAccountsBody":`Có nhiều tài khoản có thể trả lời, nên “Tự động” không thể chọn. Hãy chọn một tài khoản cho mỗi tuyến đường, nếu không những tên đó vẫn dùng thử thách qua cổng.`,"proxy.listener.accountNote":`Mỗi tuyến đường tự chọn tài khoản của nó, nên các tên trong vùng khác nhau đều nhận đúng tài khoản. Tuyến đường để ở “Tự động” sẽ dùng tài khoản duy nhất mà bảng liệt kê. Tên không tài khoản nào trả lời được vẫn dùng thử thách qua cổng.`,"proxy.listener.pendingNote":`Tên công khai có chứng chỉ vẫn đang được cấp vẫn truy cập được trong lúc chờ — qua HTTPS với chứng chỉ tạm thời không được tin cậy, hoặc qua HTTP thuần với một trang nêu các cổng cần chuyển tiếp.`,"proxy.retry.inFallback":`~8 giờ`,"proxy.retryButton.force":`Buộc thử lại chứng chỉ`,"proxy.retryButton.question":`Hỏi lại CA cho {host}?`,"proxy.retryButton.body":`Trước đó engine không lấy được chứng chỉ CA cho hostname này và đang dùng CA cục bộ của nó. Nó tự thử lại mỗi {retryIn}.`,"proxy.retryButton.warning":`Thử lại ngay sẽ kill tuyến đường này và khiến nó không truy cập được một lúc, bạn có chắc muốn tiếp tục?`,"proxy.retryButton.leave":`Để vậy`,"proxy.retryButton.now":`Thử lại ngay`,"proxy.routeDialog.titleEdit":`Sửa tuyến đường`,"proxy.routeDialog.titleAdd":`Thêm tuyến đường`,"proxy.routeDialog.description":`Một hostname, đích chuyển tiếp, và cách phục vụ qua TLS.`,"proxy.routeDialog.hostname":`Hostname`,"proxy.routeDialog.hostnamePlaceholder":`gitea.example.com`,"proxy.routeDialog.path":`Tiền tố đường dẫn`,"proxy.routeDialog.pathPlaceholder":`/optional`,"proxy.routeDialog.pathHint":`Để trống là phục vụ toàn bộ host.`,"proxy.routeDialog.target":`Đích`,"proxy.routeDialog.tls":`TLS`,"proxy.routeDialog.dnsAccount":`Tài khoản DNS`,"proxy.routeDialog.localNote":`Tên chỉ dùng nội bộ được CA riêng của engine ký, nên không liên quan tài khoản DNS.`,"proxy.routeDialog.workspace":`Không gian làm việc`,"proxy.routeDialog.server":`Máy chủ`,"proxy.routeDialog.noServers":`không gian làm việc này không có máy chủ nào`,"proxy.routeDialog.stoppedNote":`Máy chủ đã dừng thì không được định tuyến: dòng đó hiển thị “Không có upstream” cho đến khi nó chạy lại.`,"proxy.routeDialog.upstream":`Upstream`,"proxy.routeDialog.upstreamPlaceholder":`http://10.0.0.5:8080`,"proxy.routeDialog.upstreamHint":`Một địa chỉ cụ thể, bao gồm cả cổng. Phần scheme là không bắt buộc.`,"proxy.routeDialog.panelNote":`Phục vụ bảng điều khiển cần bật xác thực và một mật khẩu không phải mặc định — nếu không bảng điều khiển sẽ từ chối lưu.`,"proxy.routeDialog.save":`Lưu tuyến đường`,"proxy.routes.title":`Tuyến đường`,"proxy.routes.description":`Mỗi dịch vụ một hostname công khai. Một tuyến đường có thể trỏ tới máy chủ được giám sát trong bất kỳ không gian làm việc nào, tới bảng điều khiển này, hoặc tới một upstream cụ thể.`,"proxy.routes.add":`Thêm tuyến đường`,"proxy.routes.cannotSaveTitle":`Không thể lưu các tuyến đường này ở trạng thái hiện tại`,"proxy.routes.cannotRoute":`Không thể định tuyến {host}`,"proxy.routes.emptyTitle":`Chưa có tuyến đường nào`,"proxy.routes.emptyDescription":`Hãy thêm một tuyến đường để mở một máy chủ ra qua tên miền — engine tự lấy chứng chỉ.`,"proxy.routes.addFirst":`Thêm tuyến đường đầu tiên`,"proxy.routes.columnHostname":`Hostname`,"proxy.routes.columnTarget":`Đích`,"proxy.routes.columnUpstream":`Upstream`,"proxy.routes.columnTls":`TLS`,"proxy.routes.columnState":`Trạng thái`,"proxy.routes.columnOn":`Bật`,"proxy.routes.openInTab":`Mở {url} trong thẻ mới`,"proxy.routes.noHostname":`chưa có hostname`,"proxy.routes.toggle":`Tuyến đường {name}`,"proxy.routes.edit":`Sửa {name}`,"proxy.routes.remove":`Gỡ {name}`,"proxy.status.certified":`chứng chỉ đã sẵn sàng`,"proxy.status.localCa":`CA của engine`,"proxy.status.uploaded":`cặp đã tải lên`,"proxy.status.awaitingCa":`đang chờ CA`,"proxy.status.failed":`chứng chỉ thất bại`,"proxy.status.fellBack":`Đã quay về Local CA`,"proxy.status.serving":`Đang phục vụ`,"proxy.status.disabled":`Đã tắt`,"proxy.status.noUpstream":`Không có upstream`,"proxy.status.error":`Lỗi`,"proxy.status.unapplied":`Chưa được áp dụng`,"proxy.status.off":`Tắt`,"proxy.status.stopped":`Đã dừng`,"proxy.status.starting":`Đang khởi động`,"proxy.status.running":`Đang chạy`,"proxy.status.unsupported":`Không được hỗ trợ`,"proxy.target.server":`Một máy chủ được giám sát`,"proxy.target.panel":`Bảng điều khiển này`,"proxy.target.external":`Một upstream cụ thể`,"proxy.target.controlPanel":`bảng điều khiển`,"proxy.target.noServer":`chưa chọn máy chủ`,"proxy.target.noUpstream":`không có upstream`,"proxy.tls.auto":`Tự động — engine quyết định`,"proxy.tls.off":`Tắt — HTTP thuần`,"proxy.tls.manual":`Chứng chỉ đã tải lên`,"proxy.tls.plain":`HTTP thuần`,"proxy.tls.uploaded":`chứng chỉ đã tải lên`,"proxy.tls.letsEncrypt":`Let’s Encrypt`,"proxy.tls.engineCa":`CA của engine (cục bộ)`,"proxy.tls.hintOff":`HTTP thuần: không có chứng chỉ nào được phục vụ cho hostname này.`,"proxy.tls.hintManual":`Phục vụ cặp chứng chỉ được tải lên bên dưới.`,"proxy.tls.hintEmpty":`Hostname công khai sẽ nhận chứng chỉ ACME; tên chỉ dùng nội bộ sẽ nhận CA riêng của engine.`,"proxy.tls.hintPublic":`Đây là hostname công khai, nên engine sẽ hỏi một CA để lấy chứng chỉ — cần có email tài khoản ACME.`,"proxy.tls.hintLocal":`Đây là tên chỉ dùng nội bộ, nên engine tự ký bằng CA được tin cậy cục bộ của nó.`,"proxy.validation.labelRequired":`cần có nhãn`,"proxy.validation.idPattern":`id phải bắt đầu bằng chữ cái hoặc chữ số, sau đó là chữ cái, chữ số, gạch ngang hoặc gạch dưới`,"proxy.validation.hostRequired":`cần có hostname`,"proxy.validation.hostPattern":`hostname gồm chữ cái, chữ số, dấu chấm và gạch ngang, ví dụ home.example.com`,"proxy.validation.hostTaken":`"{host}" đã được định tuyến cho đường dẫn này`,"proxy.validation.pathSlash":`tiền tố đường dẫn bắt đầu bằng /`,"proxy.validation.pathSpace":`tiền tố đường dẫn không được chứa dấu cách`,"proxy.validation.idTaken":`id tuyến đường "{id}" bị dùng hai lần`,"proxy.validation.workspaceRequired":`hãy chọn không gian làm việc sở hữu máy chủ`,"proxy.validation.serverRequired":`hãy chọn một máy chủ trong không gian làm việc đó`,"proxy.validation.url":`upstream dạng như http://10.0.0.5:8080`,"proxy.view.title":`Proxy nghịch đảo`,"proxy.view.description":`Mở các máy chủ của bạn ra qua tên miền, với HTTPS tự động qua 80/443 hoặc thử thách DNS.`,"proxy.view.dnsNote":`Với DNS-01, hãy thêm nhà cung cấp DNS của tên miền vào bất kỳ không gian làm việc nào trong Cài đặt không gian làm việc → Dynamic DNS; sau đó một tuyến đường có thể chọn tài khoản đó, từ bất kỳ không gian làm việc nào.`,"proxy.view.readFailed":`Không đọc được proxy nghịch đảo`,"proxy.view.reading":`Đang đọc proxy nghịch đảo…`,"proxy.view.engineInstalled":`Đã cài engine`,"proxy.view.engineStarting":`Engine đang khởi động`,"proxy.view.engineStopping":`Engine đang dừng`,"proxy.view.configApplied":`Đã áp dụng cấu hình`,"proxy.view.configReverted":`Đã hoàn tác cấu hình`,"proxy.view.settingsSaved":`Đã lưu cài đặt.`,"proxy.view.settingsSavedToast":`Đã lưu cài đặt`,"proxy.view.retryFailed":`thử lại thất bại`,"proxy.view.retryAsked":`đang hỏi lại CA cho {host}`,"proxy.view.fieldChanged":`trường đã thay đổi`,"proxy.view.fieldsChanged":`trường đã thay đổi`,"proxy.view.noChanges":`Không có thay đổi chưa lưu`,"proxy.view.discard":`Bỏ thay đổi`,"proxy.view.save":`Lưu cài đặt`,"serverCard.open":`Mở {url}`,"serverCard.adoptedHint":`Tiến trình này tự thay thế chính nó: bảng điều khiển tiếp nhận tiến trình kế nhiệm thay vì khởi động thêm một bản sao. Nút Dừng vẫn hoạt động, đầu ra của nó vẫn ở nơi tiến trình kế nhiệm gửi tới.`,"serverCard.detached":`tách rời`,"serverCard.persistentHint":"Mục này chạy dưới nanny riêng, nên nó vẫn chạy khi bảng điều khiển dừng, khởi động lại hoặc bị kill. `home-hosted down` báo cáo nó thay vì dừng nó; chỉ lệnh dừng tường minh mới dừng được.","serverCard.persistent":`thường trú`,"serverCard.disabled":`đã tắt`,"serverCard.autostart":`tự khởi động`,"serverCard.healthProbe":`Dò tình trạng`,"serverCard.notProbed":`chưa dò`,"serverCard.restarts":`Số lần khởi động lại`,"serverCard.pid":`PID`,"serverCard.rss":`RSS`,"serverCard.procs":`Tiến trình`,"serverCard.portFree":`trống`,"serverCard.portInUse":`đang dùng`,"serverCard.uptime24h":`24 giờ hoạt động`,"serverCard.probe":`Kiểm tra`,"serverCard.crashes24h":`sự cố trong 24 giờ`,"serverCard.lastCrash":`Sự cố gần nhất`,"serverCard.unhealthyFor":`Bất thường trong {duration}`,"serverCard.nextAttempt":`Lần thử tiếp theo {when}`,"serverCard.start":`Khởi động`,"serverCard.stop":`Dừng`,"serverCard.restart":`Khởi động lại`,"serverCard.detailsHint":`Nhật ký trực tiếp và toàn bộ telemetry`,"serverCard.moreActions":`Thêm thao tác cho {label}`,"serverCard.disable":`Tắt máy chủ`,"serverCard.enable":`Bật máy chủ`,"serverCard.removeFromAutostart":`Bỏ khỏi tự khởi động`,"serverCard.autostartWithPanel":`Tự khởi động cùng bảng điều khiển`,"serverCard.clearLogBuffer":`Xoá bộ đệm nhật ký`,"serverCard.removeServer":`Gỡ máy chủ`,"serverCard.removeTitle":`Gỡ máy chủ này?`,"serverCard.removeDescription":`{label} sẽ bị gỡ khỏi servers.config.json: tiến trình của nó bị dừng, nhật ký và lịch sử sự cố của nó cũng bị xoá theo.`,"serverCard.statusField":`trạng thái`,"serverForm.workingDirectory":`Thư mục làm việc`,"serverForm.cwdHint":`Đường dẫn tương đối được giải theo projectDir.`,"serverForm.arguments":`Tham số`,"serverForm.portHint":`Để trống nghĩa là máy chủ không có cổng để kiểm tra hay preflight.`,"serverForm.bindAddress":`Địa chỉ lắng nghe`,"serverForm.autostart":`Tự khởi động cùng up`,"serverForm.autostartHint":`Khởi động nó mỗi khi control plane chạy lên.`,"serverForm.persistent":`Thường trú`,"serverForm.persistentHint":"Vẫn chạy khi bảng điều khiển dừng; `down` báo cáo nó thay vì dừng nó.","serverForm.envHint":`KEY=value mỗi dòng, được export cho tiến trình.`,"serverForm.dataEnvs":`Data env`,"serverForm.dataEnvsHint":`ENV=path mỗi dòng — được export cho tiến trình và tự động sao lưu.`,"serverForm.envFile":`Tệp env`,"serverForm.envFilePlaceholder":`tệp KEY=value không bắt buộc`,"serverForm.envFileHint":`Được nạp khi spawn; giá trị trong đó ghi đè env.`,"serverForm.dependsOn":`Phụ thuộc vào`,"serverForm.dependsOnHint":`Phân tách bằng dấu phẩy; được khởi động trước và chờ đến khi bình thường, dừng sau cùng.`,"serverForm.backupPaths":`Đường dẫn sao lưu thêm`,"serverForm.backupPathsHint":`Mỗi dòng một đường dẫn, cho phép placeholder; data env đã được sao lưu sẵn.`,"serverForm.backupIgnore":`Bỏ qua các tệp sinh tự động đã biết khi sao lưu mục này`,"serverForm.backupIgnoreHint":`Bỏ qua node_modules, dist, .next và các cache khác mà không bản khôi phục nào dùng tới.`,"serverForm.bootstrap":`Bootstrap`,"serverForm.bootstrapDescription":`Một lệnh chạy một lần trước lần khởi động đầu tiên — cài đặt, migration, tải xuống.`,"serverForm.runBootstrap":`Chạy một bootstrap`,"serverForm.bootstrapHint":`Tắt nghĩa là mục này không có bootstrap và khoá được gửi dưới dạng null.`,"serverForm.timeoutMs":`Thời gian chờ (ms)`,"serverForm.runOnce":`Chỉ một lần mỗi phiên`,"serverForm.runOnceHint":`Tắt nghĩa là mỗi lần khởi động đều chạy lại.`,"serverForm.bootstrapArgs":`Tham số bootstrap`,"serverForm.bootstrapArgsHint":`Mỗi dòng một tham số; placeholder giống tham số chính.`,"serverForm.bootstrapEnv":`Môi trường bootstrap`,"serverForm.bootstrapEnvHint":`KEY=value mỗi dòng, chỉ export cho tiến trình bootstrap.`,"serverForm.onPortConflict":`Khi trùng cổng`,"serverForm.logBufferLines":`Số dòng đệm nhật ký`,"serverForm.maxRssMb":`RSS tối đa (MB)`,"serverForm.maxRssHint":`Khởi động lại khi vượt mức này; để trống hoặc 0 là tắt.`,"serverForm.enabledHint":`Tắt vẫn giữ mục trong cấu hình nhưng từ chối khởi động nó.`,"settings.auth.policyTitle":`Chính sách truy cập`,"settings.auth.policyDescription":`Xác thực luôn được áp dụng, dù bảng điều khiển ở loopback hay được mở ra mạng.`,"settings.auth.requirePassword":`Yêu cầu mật khẩu`,"settings.auth.requirePasswordHint":`Mọi yêu cầu đều cần một phiên đã đăng nhập.`,"settings.auth.sessionLifetime":`Thời hạn phiên (ms)`,"settings.auth.sessionLifetimeHint":`Thời gian chờ không hoạt động: 604800000 là một tuần không có hoạt động. Mỗi yêu cầu đặt lại đồng hồ này.`,"settings.auth.cookieSecure":`Cookie Secure`,"settings.auth.cookieSecureAuto":`Tự động — chỉ qua HTTPS`,"settings.auth.cookieSecureAlways":`Luôn luôn`,"settings.auth.cookieSecureNever":`Không bao giờ — HTTP thuần`,"settings.auth.trustProxy":`Đứng sau proxy nghịch đảo`,"settings.auth.trustProxyOff":`Không — bỏ qua x-forwarded-*`,"settings.auth.trustProxyLoopback":`Có, chỉ từ máy này`,"settings.auth.trustProxyAny":`Có, từ mọi nguồn gọi`,"settings.auth.trustProxyHint":`Tin x-forwarded-* cho địa chỉ và giao thức của client. 'Chỉ từ máy này' là lựa chọn an toàn cho proxy trên cùng máy. 'Từ mọi nguồn gọi' tin vào header do chính người gọi gửi, nên việc khoá đăng nhập sẽ đếm theo địa chỉ giả và có thể bị vượt qua.`,"settings.auth.maxLoginAttempts":`Số lần đăng nhập tối đa`,"settings.auth.maxLoginAttemptsHint":`Số lần thất bại trước khi bị khoá tạm thời.`,"settings.auth.lockout":`Thời gian khoá (ms)`,"settings.auth.apiTokenSet":`Đã đặt API token`,"settings.auth.apiTokenMissing":`Chưa có API token`,"settings.auth.apiTokenNote":`Script có thể gọi API bằng {code} thay vì đăng nhập.`,"settings.auth.noTokenNote":`Với script shell và agent, hãy tạo một cái bằng {command}.`,"settings.auth.defaultPasswordTitle":`Mật khẩu mặc định vẫn đang được dùng`,"settings.auth.defaultPasswordText":`Hãy đặt mật khẩu riêng ở bên dưới. Việc bind ra ngoài {address} vẫn bị từ chối cho đến khi bạn làm vậy.`,"settings.auth.blockedTitle":`Listener này đang bị từ chối`,"settings.auth.noPasswordTitle":`Xác thực đang bật nhưng chưa đặt mật khẩu`,"settings.auth.noPasswordText":`Thực tế vẫn chưa có gì được yêu cầu, và việc bind ra ngoài {address} vẫn bị từ chối cho đến khi có mật khẩu.`,"settings.auth.exposedTitle":`Truy cập được từ ngoài 127.0.0.1`,"settings.auth.exposedText":`Hãy giữ mật khẩu mạnh, hoặc đặt một proxy kết thúc TLS phía trước bảng điều khiển.`,"settings.auth.changePassword":`Đổi mật khẩu`,"settings.auth.setPassword":`Đặt mật khẩu`,"settings.auth.passwordDescription":`Được lưu dưới dạng hash scrypt trong tệp bí mật, không bao giờ trong cấu hình.`,"settings.auth.currentPassword":`Mật khẩu hiện tại`,"settings.auth.newPassword":`Mật khẩu mới`,"settings.auth.repeatPassword":`Nhập lại mật khẩu mới`,"settings.auth.passwordMismatch":`Hai mật khẩu không khớp.`,"settings.auth.updatePassword":`Cập nhật mật khẩu`,"settings.auth.setPasswordAndEnable":`Đặt mật khẩu và bật xác thực`,"settings.auth.clearPassword":`Xoá mật khẩu`,"settings.auth.clearPasswordConfirm":`Xác nhận xoá`,"settings.auth.clearPasswordTitle":`Xoá mật khẩu?`,"settings.auth.clearPasswordHint":`Xác thực sẽ bị tắt theo, và bất kỳ ai truy cập được bảng điều khiển đều vào thẳng.`,"settings.auth.shortPasswordTitle":`Đó là một mật khẩu ngắn`,"settings.auth.shortPasswordText":`Vẫn được chấp nhận, nhưng mật khẩu dài hơn là thứ duy nhất đứng giữa mạng và bảng điều khiển này.`,"settings.auth.passwordUpdated":`Đã cập nhật mật khẩu. Các phiên khác đã bị đăng xuất.`,"settings.auth.passwordCleared":`Đã xoá mật khẩu và tắt xác thực.`,"settings.backup.createTitle":`Tạo bản sao lưu`,"settings.backup.createDescription":`Chọn những gì bản lưu này sẽ ghi lại. Không có gì được ghi cho đến khi bạn tạo nó.`,"settings.backup.chooseItems":`Chọn các mục`,"settings.backup.partialCapture":`Chỉ những mục được chọn mới được ghi lại.`,"settings.backup.withoutGlobalSettings":`Nếu không có cài đặt toàn cục, bản khôi phục chỉ có thể đặt một không gian làm việc ở nơi bảng điều khiển đích đã khai báo nó.`,"settings.backup.password":`Mật khẩu (không bắt buộc)`,"settings.backup.passwordHint":`Mã hoá bản lưu; khi khôi phục sẽ hỏi đúng mật khẩu đó.`,"settings.backup.create":`Tạo bản sao lưu`,"settings.backup.chooseItemsFor":`{label} — chọn các mục`,"settings.backup.subDescription":`Một không gian làm việc có thể được lưu toàn bộ hoặc chỉ phần cài đặt, máy chủ, bí mật và các đường dẫn dữ liệu đã khai báo.`,"settings.backup.selectedOf":`đã chọn {selected} trên {total}`,"settings.backup.nothingSelectable":`Không gian làm việc này chưa khai báo gì có thể chọn.`,"settings.backup.apply":`Áp dụng`,"settings.backup.created":`Đã tạo bản sao lưu.`,"settings.backup.leafSettingsHint":`Mặc định máy chủ, thời gian giữ nhật ký và thông báo`,"settings.backup.leafServersHint":`Mọi mục trong servers.config.json`,"settings.backup.leafSecretsHint":`Token bot Telegram và thông tin đăng nhập DDNS`,"settings.backup.leafDataHint":`Một đường dẫn dữ liệu đã khai báo`,"settings.backup.pathFromOrigin":`{path} — từ {origin}`,"settings.backup.entrySettingsHint":`Listener, xác thực, thông tin máy chủ và chính sách sao lưu`,"settings.backup.entrySecretsHint":`Hash mật khẩu và hash API token`,"settings.backup.entryTlsHint":`Cặp chứng chỉ của chính bảng điều khiển`,"settings.backup.entryWorkspaceHint":`Cài đặt, máy chủ, bí mật và các đường dẫn dữ liệu đã khai báo của nó`,"settings.backup.entryGlobalSettings":`Cài đặt toàn cục`,"settings.backup.entryGlobalSecrets":`Bí mật toàn cục (mật khẩu, API token)`,"settings.backup.entryTlsCertificate":`Chứng chỉ TLS`,"settings.backup.leafSettings":`Cài đặt`,"settings.backup.leafServers":`Máy chủ`,"settings.backup.leafSecrets":`Bí mật`,"settings.backup.secretPassword":`Mật khẩu`,"settings.backup.secretPasswordHint":`Hash mật khẩu của chính bảng điều khiển; khôi phục nó sẽ đặt lại mật khẩu cũ`,"settings.backup.secretApiToken":`API token`,"settings.backup.secretApiTokenHint":`Token dài hạn mà các script và tác nhân sử dụng`,"settings.backup.secretTelegram":`Token bot Telegram`,"settings.backup.secretTelegramHint":`Dùng cho thông báo`,"settings.backup.secretDdns":`Thông tin đăng nhập DDNS`,"settings.backup.secretDdnsHint":`Thông tin đăng nhập của nhà cung cấp, được niêm phong cùng khoá của chúng`,"settings.backup.restoreItemLabel":`{workspace}: {item}`,"settings.backup.noteMissing":`chưa tồn tại`,"settings.backup.noteCovered":`được bao phủ bởi {path}`,"settings.backup.noteAlreadyDeclared":`đã được khai báo bởi {origin}`,"settings.backup.noteContainsBackupDir":`chứa thư mục sao lưu`,"settings.backup.noteUnknownWorkspace":`không gian làm việc không rõ`,"settings.backup.noteMissingFromArchive":`không có trong tệp lưu trữ`,"settings.backup.noteDeclaredByBackup":`được khai báo bởi cấu hình của bản sao lưu, mà bản này không khôi phục`,"settings.backup.noteNotDeclared":`không được khai báo bởi cấu hình này, cũng không bởi bản sao lưu`,"settings.backup.noteRestoredFrom":`được khôi phục từ {path}`,"settings.backups.policyTitle":`Chính sách`,"settings.backups.policyDescription":`Số bản lưu bảng điều khiển giữ lại, và các đường dẫn thêm mà mọi bản lưu đều ghi lại.`,"settings.backups.allow":`Cho phép sao lưu`,"settings.backups.allowHint":`Tắt sẽ dừng tạo bản lưu mới; những gì đã có trên đĩa vẫn tải về và khôi phục được.`,"settings.backups.offTitle":`Sao lưu đang tắt`,"settings.backups.offText":`Không có bản lưu mới nào được tạo cho đến khi bật lại. Các bản lưu bên dưới vẫn tải về, khôi phục và xoá được.`,"settings.backups.keep":`Giữ lại`,"settings.backups.keepHint":`Các bản lưu cũ hơn bị dọn sau mỗi lần sao lưu.`,"settings.backups.extraPaths":`Đường dẫn thêm`,"settings.backups.extraPathsHint":`Phân tách bằng dấu phẩy, được ghi trong mọi bản lưu ngoài những gì mỗi không gian làm việc khai báo.`,"settings.backups.extraPathsPlaceholder":`{home}/myapp-data`,"settings.backups.archiveDirectory":`Thư mục lưu trữ`,"settings.backups.copyArchiveDirectory":`Sao chép thư mục lưu trữ`,"settings.backups.changeDirectory":`Đổi nó là quyết định ở mức tệp: hãy sửa {path}.`,"settings.backups.theSettingsFile":`tệp cài đặt`,"settings.backups.capturesTitle":`Bản sao lưu ghi lại những gì`,"settings.backups.capturesDescription":`Chọn những mục này trong hộp thoại tạo. Một không gian làm việc có thể được lấy toàn bộ hoặc chỉ phần cài đặt, máy chủ, bí mật và các đường dẫn dữ liệu đã khai báo.`,"settings.backups.nothingSelectable":`Chưa có gì có thể chọn.`,"settings.backups.fromOrigin":`từ {origin}`,"settings.backups.notCaptured":`không được ghi lại`,"settings.backups.generatedSkipped":`đã bỏ qua các thư mục sinh tự động`,"settings.backups.included":`đã bao gồm`,"settings.backups.skipped":`đã bỏ qua`,"settings.backups.workspacesNote":`Bảng điều khiển này phục vụ {count} không gian làm việc; mỗi không gian làm việc là một mục có thể chọn riêng.`,"settings.backups.archivesTitle":`Bản lưu trữ`,"settings.backups.archivesDescription":`Được lưu trong thư mục sao lưu và có thể tải về bất cứ lúc nào.`,"settings.backups.create":`Tạo bản sao lưu…`,"settings.backups.restore":`Khôi phục…`,"settings.backups.noArchives":`Chưa có bản lưu nào`,"settings.backups.noArchivesEnabled":`Hãy tạo ngay một bản để ghi lại bảng điều khiển và những không gian làm việc bạn chọn.`,"settings.backups.noArchivesDisabled":`Chưa có gì được lưu trữ, và sao lưu đang tắt.`,"settings.backups.encrypted":`đã mã hoá`,"settings.backups.download":`Tải về`,"settings.backups.restoreAction":`Khôi phục`,"settings.backups.confirmDelete":`Xác nhận xoá`,"settings.backups.deleted":`Đã xoá {name}.`,"settings.backups.kindSettings":`cài đặt`,"settings.backups.kindServers":`máy chủ`,"settings.backups.kindSecrets":`bí mật`,"settings.backups.kindTls":`tls`,"settings.backups.kindData":`dữ liệu`,"settings.backups.kindWorkspace":`không gian làm việc`,"settings.ddns.statePending":`Đang chờ`,"settings.ddns.stateOk":`Đã cập nhật`,"settings.ddns.stateUnchanged":`Hiện tại`,"settings.ddns.stateSkipped":`Đã bỏ qua`,"settings.ddns.stateError":`Thất bại`,"settings.ddns.passFinished":`Lượt cập nhật Dynamic DNS đã xong`,"settings.ddns.credentialsSaved":`Đã lưu thông tin đăng nhập cho {account}`,"settings.ddns.credentialsRemoved":`Đã gỡ thông tin đăng nhập của {account}`,"settings.ddns.loadErrorTitle":`Không tải được cài đặt Dynamic DNS`,"settings.ddns.title":`Dynamic DNS`,"settings.ddns.description":`Giữ các hostname này trỏ về địa chỉ công khai của máy này. Thông tin đăng nhập nằm trong tệp bí mật, không bao giờ trong servers.config.json.`,"settings.ddns.checking":`đang kiểm tra`,"settings.ddns.needsAttention":`cần chú ý`,"settings.ddns.watching":`đang theo dõi`,"settings.ddns.updateNow":`Cập nhật ngay`,"settings.ddns.enabled":`Giữ Dynamic DNS luôn được cập nhật`,"settings.ddns.enabledHint":`Một lượt chạy theo khoảng thời gian bên dưới; nhà cung cấp chỉ được gọi khi địa chỉ thực sự thay đổi.`,"settings.ddns.interval":`Kiểm tra mỗi (ms)`,"settings.ddns.intervalHint":`60000 là một phút; mặc định là năm phút.`,"settings.ddns.ttl":`TTL (giây)`,"settings.ddns.ttlHint":`1 nghĩa là tự động ở nơi nhà cung cấp hỗ trợ.`,"settings.ddns.detectIpv4":`Phát hiện IPv4`,"settings.ddns.detectIpv4Hint":`Cần cho bản ghi A.`,"settings.ddns.detectIpv6":`Phát hiện IPv6`,"settings.ddns.detectIpv6Hint":`Cần cho bản ghi AAAA.`,"settings.ddns.accountsTitle":`Tài khoản nhà cung cấp`,"settings.ddns.accountsDescription":`Mỗi API token một mục. Thông tin đăng nhập được lưu trên máy chủ và không bao giờ trả về.`,"settings.ddns.credentialsSet":`đã lưu thông tin đăng nhập`,"settings.ddns.noCredentials":`chưa có thông tin đăng nhập`,"settings.ddns.credentials":`Thông tin đăng nhập`,"settings.ddns.removeAccountBlocked":`Hãy gỡ các hostname đang dùng tài khoản này trước`,"settings.ddns.noAccounts":`Chưa có tài khoản nào. Hãy chọn một nhà cung cấp và thêm tài khoản.`,"settings.ddns.provider":`Nhà cung cấp`,"settings.ddns.accountId":`Id tài khoản`,"settings.ddns.accountIdPlaceholder":`cloudflare-home`,"settings.ddns.accountIdHint":"Id tài khoản đặt tên cho tài khoản và là khoá lưu thông tin đăng nhập; chữ thường, chữ số, `-` và `_`.","settings.ddns.hostnamesTitle":`Hostname`,"settings.ddns.hostnamesDescription":`Toàn bộ danh sách cần giữ cập nhật — suba.domain.com, domain.xyz, v.v.`,"settings.ddns.account":`Tài khoản`,"settings.ddns.recordA":`A (IPv4)`,"settings.ddns.recordAaaa":`AAAA (IPv6)`,"settings.ddns.aaaaUnsupported":`Nhà cung cấp này không quản lý được bản ghi AAAA.`,"settings.ddns.proxied":`Qua proxy`,"settings.ddns.proxiedHint":`Cloudflare phục vụ bản ghi này qua mạng của chính nó.`,"settings.ddns.ipv6Off":`Phát hiện IPv6 đang tắt`,"settings.ddns.advanced":`Nâng cao`,"settings.ddns.advancedHint":`tên miền đã đăng ký và ghi đè TTL`,"settings.ddns.registeredDomain":`Tên miền đã đăng ký`,"settings.ddns.registeredDomainPlaceholder":`example.co.uk`,"settings.ddns.registeredDomainHint":`Chỉ dùng khi cần cho nhà cung cấp biết tên miền gốc, ví dụ tên miền ba nhãn.`,"settings.ddns.ttlOverride":`Ghi đè TTL (giây)`,"settings.ddns.ttlOverrideHint":`Để trống là dùng giá trị bên trên.`,"settings.ddns.noHostnames":`Chưa có hostname nào.`,"settings.ddns.hostnamePlaceholder":`home.example.com`,"settings.ddns.lastPass":`Lượt gần nhất`,"settings.ddns.ipv4Value":`IPv4 {address}`,"settings.ddns.ipv6Value":`IPv6 {address}`,"settings.ddns.type":`Loại`,"settings.ddns.state":`Trạng thái`,"settings.ddns.address":`Địa chỉ`,"settings.ddns.detail":`Chi tiết`,"settings.ddns.credentialsTitle":`Thông tin đăng nhập nhà cung cấp`,"settings.ddns.credentialsDescription":`Các trường đã lưu không bao giờ được gửi trả lại. Lưu sẽ thay thế toàn bộ trường của tài khoản này và chạy một lượt ngay lập tức.`,"settings.ddns.optional":`Không bắt buộc.`,"settings.ddns.whereToGet":`Lấy những thứ này ở đâu`,"settings.ddns.forget":`Quên`,"settings.ddns.forgetConfirm":`Quên chúng`,"settings.ddns.forgetTitle":`Quên thông tin đăng nhập đã lưu?`,"settings.ddns.forgetHint":`Chúng bị xoá khỏi đĩa và không đọc lại được; bạn sẽ phải dán lại.`,"settings.ddns.saveCredentials":`Lưu thông tin đăng nhập`,"settings.defaults.title":`Mặc định máy chủ`,"settings.defaults.description":`Áp dụng cho mọi mục không tự đặt giá trị riêng.`,"settings.defaults.enabledHint":`Mục mới bắt đầu ở trạng thái bật.`,"settings.defaults.autostart":`Tự khởi động cùng bảng điều khiển`,"settings.defaults.bind":`Lắng nghe trên`,"settings.defaults.bindLocal":`Local — 127.0.0.1`,"settings.defaults.bindLan":`LAN — 0.0.0.0`,"settings.defaults.onPortConflict":`Khi trùng cổng`,"settings.defaults.conflictBlock":`Chặn việc khởi động`,"settings.defaults.conflictWarn":`Cảnh báo và vẫn khởi động`,"settings.defaults.conflictFollow":`Bám theo bản khởi động lại tách rời của chính nó`,"settings.defaults.conflictReclaim":`Thay bản khởi động lại tách rời bằng một bản sao được giám sát`,"settings.defaults.conflictKill":`Kill bất cứ thứ gì đang giữ cổng`,"settings.defaults.logBufferLines":`Số dòng đệm nhật ký`,"settings.defaults.logBufferLinesHint":`Được giữ trong bộ nhớ cho mỗi máy chủ.`,"settings.host.title":`Ngưỡng`,"settings.host.description":`Ngưỡng 0 sẽ tắt cảnh báo đó. Khi vượt ngưỡng sẽ thông báo một lần, và một lần nữa khi hồi phục.`,"settings.host.enabled":`Lấy mẫu máy này`,"settings.host.enabledHint":`Tải, bộ nhớ, swap, đĩa và nhiệt độ CPU, theo khoảng thời gian bên dưới.`,"settings.host.interval":`Khoảng thời gian (ms)`,"settings.host.intervalHint":`Tần suất lấy mẫu máy chủ và kiểm tra cảnh báo.`,"settings.host.diskPaths":`Đường dẫn đĩa`,"settings.host.diskPathsHint":`Phân tách bằng dấu phẩy; các mẫu như {home} được mở rộng.`,"settings.host.diskUsed":`Đĩa đã dùng (%)`,"settings.host.memoryUsed":`Bộ nhớ đã dùng (%)`,"settings.host.swapUsed":`Swap đã dùng (%)`,"settings.host.zeroDisables":`0 sẽ tắt cảnh báo.`,"settings.host.loadPerCpu":`Tải trên mỗi CPU`,"settings.host.loadPerCpuHint":`Tải trung bình 1 phút chia cho số nhân.`,"settings.host.tempCelsius":`Nhiệt độ CPU (°C)`,"settings.host.tempCelsiusHint":`Chỉ trên Linux; bị bỏ qua ở nơi hệ điều hành không cung cấp.`,"settings.host.breachingNow":`Đang vượt ngưỡng:`,"settings.host.nothingBreaching":`Hiện không có gì vượt ngưỡng.`,"settings.interface.title":`Giao diện`,"settings.interface.description":`Bảng điều khiển là một trang tĩnh: giữ bản mặc định, hoặc phục vụ bản build của riêng bạn từ thư mục state.`,"settings.interface.currentlyServing":`Đang phục vụ`,"settings.interface.copyDirectory":`Sao chép thư mục UI`,"settings.interface.fileCount":`{count} tệp`,"settings.interface.sourceStock":`mặc định`,"settings.interface.sourceCustom":`tuỳ chỉnh`,"settings.interface.unnamed":`chưa đặt tên`,"settings.interface.panelVersion":`Phiên bản bảng điều khiển`,"settings.interface.copyPanelVersion":`Sao chép phiên bản bảng điều khiển`,"settings.interface.panelVersionHint":`Bản phát hành mà tiến trình bảng điều khiển này đang chạy — {command} in ra cùng con số đó.`,"settings.interface.panelName":`Tên bảng điều khiển`,"settings.interface.panelNameHint":`Được UI mặc định hiển thị ở thanh bên. UI tuỳ chỉnh có thể hiển thị tên riêng.`,"settings.interface.uploadLabel":`Tải lên bản build UI (.zip có index.html)`,"settings.interface.docsHint":`Xem {docs} để biết hợp đồng API. Nếu UI tuỳ chỉnh làm hỏng bảng điều khiển, {command} sẽ đưa bản mặc định trở lại từ terminal.`,"settings.interface.resetName":`Đặt lại tên`,"settings.interface.confirmRevert":`Xác nhận hoàn tác`,"settings.interface.revertToStock":`Quay về bản mặc định`,"settings.interface.install":`Cài đặt UI`,"settings.interface.installed":`Đã thay UI bằng {name} — hãy tải lại trang`,"settings.interface.yourBuild":`bản build của bạn`,"settings.interface.restored":`đã khôi phục UI mặc định — hãy tải lại trang`,"settings.interface.nothingInstalled":`chưa cài UI tuỳ chỉnh nào`,"settings.listener.title":`Bộ lắng nghe`,"settings.listener.description":`Nơi bảng điều khiển trả lời. Thay đổi đây sẽ khởi động lại bảng điều khiển và đưa trang này tới địa chỉ mới.`,"settings.listener.port":`Cổng điều khiển`,"settings.listener.portHint":`Mặc định 3999.`,"settings.listener.bind":`Lắng nghe trên`,"settings.listener.bindLocal":`Nội bộ`,"settings.listener.bindLan":`Mạng LAN`,"settings.listener.bindCustom":`Tuỳ chỉnh`,"settings.listener.bindLanHint":`0.0.0.0 — truy cập được từ toàn bộ mạng.`,"settings.listener.bindLocalHint":`127.0.0.1 — chỉ máy này.`,"settings.listener.bindCustomHint":`Một địa chỉ giao diện cụ thể do bạn nhập bên dưới.`,"settings.listener.ipv4":`Địa chỉ IPv4`,"settings.listener.ipv4Placeholder":`192.168.1.20`,"settings.listener.ipv4Error":`Hãy nhập một địa chỉ IPv4, ví dụ 192.168.1.20.`,"settings.listener.ipv4Hint":`Bind ra ngoài 127.0.0.1 cần một mật khẩu thật.`,"settings.listener.openBrowser":`Mở trình duyệt khi bảng điều khiển chạy lên`,"settings.listener.liveAddress":`Địa chỉ đang hoạt động`,"settings.listener.restartRequired":`cần khởi động lại`,"settings.listener.copyLiveAddress":`Sao chép địa chỉ đang hoạt động`,"settings.listener.liveAddressHint":`Địa chỉ listener đang bind hiện tại; thay đổi đã lưu có hiệu lực sau khi bảng điều khiển bind lại.`,"settings.logs.title":`Thời gian giữ`,"settings.logs.description":`Chế độ xem trực tiếp luôn lấy từ bộ nhớ; các tệp này tồn tại qua lần khởi động lại và nuôi trang Nhật ký.`,"settings.logs.persist":`Giữ nhật ký trên đĩa`,"settings.logs.persistHint":`Tắt để chỉ giữ mọi thứ trong bộ nhớ.`,"settings.logs.maxBytes":`Xoay vòng khi (byte)`,"settings.logs.maxBytesHint":`Mỗi máy chủ, trước khi chuyển sang .1, .2, …`,"settings.logs.keep":`Giữ các tệp đã xoay vòng`,"settings.logs.directory":`Thư mục nhật ký`,"settings.logs.copyDirectory":`Sao chép thư mục nhật ký`,"settings.logs.browseHint":`Duyệt và tải các tệp này ở trang {logs}.`,"settings.paths.dataRoot":`Thư mục gốc dữ liệu`,"settings.paths.dataRootHint":`HHOSTED_HOME — cài đặt toàn cục, không gian làm việc, TLS, bản sao lưu và UI.`,"settings.paths.globalSettings":`Cài đặt toàn cục`,"settings.paths.globalSettingsHint":`settings.json — listener, xác thực, chính sách TLS, thông tin máy chủ, sao lưu.`,"settings.paths.projectDir":`Thư mục dự án`,"settings.paths.projectDirHint":`Cơ sở cho các đường dẫn mục tương đối.`,"settings.paths.panelAddress":`Địa chỉ bảng điều khiển`,"settings.paths.panelAddressHint":`Nơi bảng điều khiển này đang hoạt động.`,"settings.paths.serversConfig":`Cấu hình máy chủ`,"settings.paths.serversConfigHint":`servers.config.json của {label}.`,"settings.paths.workspaceSettings":`Cài đặt không gian làm việc`,"settings.paths.workspaceSettingsHint":`Mặc định máy chủ, thời gian giữ nhật ký, thông báo, DDNS.`,"settings.paths.logs":`Nhật ký`,"settings.paths.logsHint":`Đầu ra được lưu cho không gian làm việc này.`,"settings.paths.copyPath":`Sao chép {label}`,"settings.paths.whereThingsLive":`Mọi thứ nằm ở đâu`,"settings.paths.whereThingsLiveDescription":`Chỉ đọc. Sao chép đường dẫn thẳng vào shell hoặc trình soạn thảo.`,"settings.paths.workspaceFiles":`Tệp của không gian làm việc`,"settings.paths.workspaceFilesDescription":`Mỗi không gian làm việc sở hữu cấu hình, cài đặt và thư mục nhật ký của riêng nó; không có gì được chia sẻ giữa chúng.`,"settings.rebind.failed":`Bảng điều khiển không trả lời tại {target}. Hãy xem console để biết listener mới.`,"settings.restore.title":`Khôi phục bản sao lưu`,"settings.restore.description":`Không có gì được ghi cho đến khi kế hoạch được áp dụng.`,"settings.restore.archive":`Bản lưu trữ`,"settings.restore.archiveHint":`Một bản lưu đã có, hoặc một tệp .zip từ máy này.`,"settings.restore.encryptedName":`{name} — đã mã hoá`,"settings.restore.uploadOption":`Tải lên một tệp…`,"settings.restore.archiveFile":`Tệp lưu trữ (.zip)`,"settings.restore.unchangedTitle":`Chưa có gì thay đổi`,"settings.restore.archiveLine":`Bản lưu trữ {name}.`,"settings.restore.uploadedArchive":`Bản lưu trữ đã tải lên.`,"settings.restore.passwordProtected":`Bản sao lưu này được bảo vệ bằng mật khẩu.`,"settings.restore.password":`Mật khẩu`,"settings.restore.checkAgain":`Kiểm tra lại với mật khẩu`,"settings.restore.choosePrompt":`Chọn những gì cần khôi phục — đã chọn {selected} trên {total}.`,"settings.restore.willRestore":`Sẽ khôi phục: {items}.`,"settings.restore.skipped":`Đã bỏ qua: {items}.`,"settings.restore.nothing":`không có gì`,"settings.restore.restartNote":`Cài đặt của chính bảng điều khiển khác đi, nên hãy khởi động lại bảng điều khiển sau đó.`,"settings.restore.reloadedNote":`Các không gian làm việc được khôi phục sẽ tải lại ngay; những mục được đánh dấu tự khởi động sẽ tự chạy.`,"settings.restore.applyStored":`Áp dụng bản khôi phục này`,"settings.restore.applyUpload":`Khôi phục tệp đã tải lên`,"settings.restore.restored":`Đã khôi phục {count} mục.`,"settings.restore.restoredWithNotes":`Đã khôi phục {count} mục — {notes}.`,"settings.restore.noteReloaded":`các máy chủ đã khôi phục đang chạy, các mục tự khởi động đang được khởi động`,"settings.restore.noteRestart":`khởi động lại bảng điều khiển để áp dụng cài đặt của chính nó`,"settings.restore.reasonSymbolicLink":`liên kết tượng trưng, đã bỏ qua`,"settings.restore.reasonNotSelected":`không được chọn`,"settings.restore.reasonUnrestorable":`không thể khôi phục ở đây`,"settings.restore.reasonInvalidSettings":`cài đặt trong tệp lưu trữ không hợp lệ`,"settings.restore.reasonInvalidServers":`máy chủ trong tệp lưu trữ không hợp lệ`,"settings.shell.noUnsavedChanges":`Không có thay đổi chưa lưu`,"settings.shell.discard":`Bỏ thay đổi`,"settings.shell.save":`Lưu cài đặt`,"settings.shell.unsavedTitle":`Thay đổi chưa lưu`,"settings.shell.nothingToSave":`Không có gì để lưu.`,"settings.telegram.title":`Telegram`,"settings.telegram.description":`Chính sách nằm trong cấu hình; token bot là một secret và không bao giờ được máy chủ trả về.`,"settings.telegram.enabled":`Gửi thông báo`,"settings.telegram.enabledHint":`Mỗi sự kiện một tin nhắn, được điều tiết bởi thời gian chờ bên dưới.`,"settings.telegram.chatId":`Id chat`,"settings.telegram.chatIdPlaceholder":`123456789 hoặc @channel`,"settings.telegram.chatIdHint":`Dùng Detect chats để điền từ các cập nhật của bot.`,"settings.telegram.cooldown":`Thời gian chờ mỗi sự kiện (ms)`,"settings.telegram.cooldownHint":`Theo từng máy chủ và lý do, nên một máy chủ dao động liên tục không thể spam.`,"settings.telegram.onCrash":`Đã hết số lần thử`,"settings.telegram.onUnhealthy":`Cổng bất thường`,"settings.telegram.onForcedRestart":`Buộc khởi động lại`,"settings.telegram.onRecovered":`Đã hồi phục`,"settings.telegram.onHost":`Chỉ số máy chủ vượt ngưỡng`,"settings.telegram.onHostHint":`Đĩa, bộ nhớ, swap, tải và nhiệt độ CPU, theo các ngưỡng trong mục Chỉ số máy chủ.`,"settings.telegram.onDdns":`Dynamic DNS thay đổi hoặc thất bại`,"settings.telegram.onDdnsHint":`Một tin nhắn cho mỗi lượt có thay đổi bản ghi, và một tin cho lượt thất bại.`,"settings.telegram.botToken":`Token bot`,"settings.telegram.tokenSet":`đã đặt token`,"settings.telegram.noToken":`chưa có token`,"settings.telegram.tokenNote":`Lấy từ @BotFather — là secret, không bao giờ nằm trong servers.config.json.`,"settings.telegram.tokenPlaceholder":`123456789:AA…`,"settings.telegram.tokenSavedPlaceholder":`Đã lưu — nhập token mới để thay thế`,"settings.telegram.saveToken":`Lưu token`,"settings.telegram.detectChats":`Phát hiện chat`,"settings.telegram.sendTest":`Gửi thử`,"settings.telegram.removeToken":`Gỡ token`,"settings.telegram.removeTokenConfirm":`Xác nhận gỡ`,"settings.telegram.removeTokenTitle":`Gỡ token bot?`,"settings.telegram.removeTokenHint":`Thông báo sẽ dừng cho đến khi bạn dán token trở lại.`,"settings.telegram.tokenSaved":`Đã lưu token.`,"settings.telegram.tokenSavedFor":`Đã lưu token cho @{username}.`,"settings.telegram.tokenRemoved":`Đã gỡ token.`,"settings.telegram.noChats":`Không tìm thấy chat nào. Hãy gửi /start cho bot trước, rồi phát hiện lại.`,"settings.telegram.testSent":`Đã gửi tin nhắn thử.`,"settings.telegram.testFailed":`Gửi tin nhắn thử thất bại.`,"settings.telegram.chatsSeen":`Các chat bot đã thấy:`,"settings.telegram.lastSend":`Lần gửi gần nhất: {result}`,"settings.tls.title":`HTTPS`,"settings.tls.description":`Tải lên một cặp PEM và bảng điều khiển sẽ phục vụ TLS trên listener của chính nó. Chứng chỉ tự ký là ổn trong mạng gia đình.`,"settings.tls.serve":`Phục vụ bảng điều khiển qua HTTPS`,"settings.tls.serveHint":`Được lưu cùng nút Lưu cài đặt; bảng điều khiển bind lại và trang này đi theo nó.`,"settings.tls.certificateTitle":`Chứng chỉ`,"settings.tls.certificateDescription":`Chứng chỉ mã hoá PEM và khoá riêng của nó. Cả hai đều nằm trong tệp bí mật.`,"settings.tls.unusableTitle":`Không dùng được chứng chỉ đã lưu`,"settings.tls.subject":`Chủ thể`,"settings.tls.issuer":`Nhà phát hành`,"settings.tls.validUntil":`Có hiệu lực đến`,"settings.tls.days":`{count} ngày`,"settings.tls.privateKey":`Khoá riêng`,"settings.tls.keyMatches":`khớp với chứng chỉ`,"settings.tls.keyMismatch":`không khớp`,"settings.tls.fingerprint":`Vân tay`,"settings.tls.copyFingerprint":`Sao chép vân tay`,"settings.tls.noCertificateTitle":`Chưa tải lên chứng chỉ`,"settings.tls.noCertificateText":`Hãy tải lên chứng chỉ PEM và khoá bên dưới, rồi lưu. HTTPS không được phục vụ cho đến khi có chứng chỉ.`,"settings.tls.certFile":`Tệp chứng chỉ (.pem, .crt)`,"settings.tls.keyFile":`Tệp khoá riêng (.pem, .key)`,"settings.tls.pasteCertificate":`Hoặc dán chứng chỉ`,"settings.tls.pasteKey":`Hoặc dán khoá riêng`,"settings.tls.saveCertificate":`Lưu chứng chỉ`,"settings.tls.removeCertificate":`Gỡ chứng chỉ`,"settings.tls.confirmRemove":`Xác nhận gỡ`,"settings.tls.removeTitle":`Gỡ chứng chỉ?`,"settings.tls.removeHint":`TLS vẫn bật nhưng không có gì để phục vụ, nên bảng điều khiển quay về http sau khi listener bind lại.`,"settings.tls.stored":`Đã lưu chứng chỉ.`,"settings.tls.removed":`Đã gỡ chứng chỉ.`,"status.stopped":`Đã dừng`,"status.starting":`Đang khởi động`,"status.running":`Đang chạy`,"status.stopping":`Đang dừng`,"status.backoff":`Đang khởi động lại`,"status.crashed":`Đã gặp sự cố`,"status.conflict":`Xung đột cổng`,"theme.label":`Giao diện: {theme}`,"theme.light":`sáng`,"theme.dark":`tối`,"theme.system":`theo hệ thống`,"topbar.search":`Tìm kiếm hoặc chạy lệnh`,"topbar.openNavigation":`Mở điều hướng`,"topbar.commandPalette":`Bảng lệnh`,"topbar.account":`Tài khoản`,"topbar.signedIn":`Đã đăng nhập`,"topbar.signOut":`Đăng xuất`,"topbar.workspaceLabel":`Không gian làm việc: {name}`,"validation.port":`Cổng phải là số nguyên từ 1 đến 65535.`,"validation.idRequired":`Cần có id — đó là khoá mà máy chủ này nằm dưới.`,"validation.idPattern":`Id phải bắt đầu bằng chữ thường hoặc chữ số và chỉ chứa chữ thường, chữ số, dấu gạch ngang và gạch dưới.`,"validation.commandRequired":`Cần có command — tệp thực thi mà supervisor spawn.`,"validation.bootstrapCommand":`Bootstrap cần có lệnh để chạy.`,"views.actions.addAServer":`Thêm một máy chủ`,"views.actions.addServer":`Thêm máy chủ`,"views.actions.startAll":`Khởi động tất cả`,"views.actions.stopAll":`Dừng tất cả`,"views.common.thisWorkspace":`không gian làm việc này`,"views.globalOverview.configError":`Không đọc được cấu hình: {error}`,"views.globalOverview.degraded":`suy giảm`,"views.globalOverview.description":`Chỉ số máy chủ và mọi máy chủ của mọi không gian làm việc, nhóm theo nơi chúng nằm.`,"views.globalOverview.emptyDescription":`Hãy chọn một không gian làm việc ở thanh trên và thêm tiến trình đầu tiên cần được giữ chạy.`,"views.globalOverview.emptyTitle":`Chưa có máy chủ nào ở bất kỳ đâu`,"views.globalOverview.groupEmptyDescription":`Hãy thêm một cái, nó sẽ xuất hiện ở đây và trên trang không gian làm việc.`,"views.globalOverview.groupRunning":`{running}/{total} đang chạy`,"views.globalOverview.hostUptime":`Thời gian hoạt động của máy chủ`,"views.globalOverview.hostVitals":`Chỉ số máy chủ`,"views.globalOverview.hostVitalsNote":`Máy này, được mọi không gian làm việc chia sẻ.`,"views.globalOverview.openWorkspace":`Mở không gian làm việc`,"views.globalOverview.panelUptime":`Thời gian hoạt động của bảng điều khiển`,"views.globalOverview.samplingOff":`đã tắt lấy mẫu`,"views.globalOverview.samplingOn":`đang lấy mẫu`,"views.globalOverview.serversTotal":`tổng cộng {count} máy chủ`,"views.globalOverview.serving":`đang phục vụ`,"views.globalOverview.workspaces":`Không gian làm việc`,"views.globalSettings.authenticationDescription":`Ai được đăng nhập vào bảng điều khiển này, và cách một phiên được tin cậy.`,"views.globalSettings.backupsDescription":`Mỗi lần lưu một bản lưu trữ, bao gồm bảng điều khiển và bất kỳ không gian làm việc bạn chọn.`,"views.globalSettings.changesDescription":`Những gì nút Lưu sẽ ghi vào tệp cài đặt của bảng điều khiển.`,"views.globalSettings.description":`Listener, truy cập, thông tin máy chủ, sao lưu, TLS và đường dẫn cho bảng điều khiển này — được mọi không gian làm việc chia sẻ.`,"views.globalSettings.hostDescription":`Ngưỡng cảnh báo cho tài nguyên của chính máy này.`,"views.globalSettings.interfaceDescription":`Phục vụ UI bảng điều khiển của riêng bạn thay vì bản mặc định.`,"views.globalSettings.languageDescription":`Ngôn ngữ hiển thị của bảng điều khiển này, cho trình duyệt này.`,"views.globalSettings.languageNote":`Lựa chọn của bạn được giữ trong trình duyệt này và áp dụng cả cho trang đăng nhập. Nó không thay đổi đầu ra nhật ký hay thông báo API của chính bảng điều khiển.`,"views.globalSettings.listenerDescription":`Nơi bảng điều khiển lắng nghe và cách nó tự công bố.`,"views.globalSettings.loadErrorTitle":`Không tải được một số giá trị chỉ có trong tệp`,"views.globalSettings.navLabel":`Các mục cài đặt toàn cục`,"views.globalSettings.pathsDescription":`Nơi home-hosted lưu các tệp của nó, toàn cục và theo từng không gian làm việc.`,"views.globalSettings.saveFailed":`Không lưu được cài đặt.`,"views.globalSettings.saved":`Đã lưu cài đặt.`,"views.globalSettings.savedRebinding":`Đã lưu cài đặt — bảng điều khiển đang chuyển sang địa chỉ mới.`,"views.globalSettings.savedToast":`Đã lưu cài đặt`,"views.globalSettings.sectionAuthentication":`Xác thực`,"views.globalSettings.sectionBackups":`Sao lưu`,"views.globalSettings.sectionHost":`Chỉ số máy chủ`,"views.globalSettings.sectionInterface":`Giao diện`,"views.globalSettings.sectionListener":`Bộ lắng nghe`,"views.globalSettings.sectionPaths":`Đường dẫn`,"views.globalSettings.sectionTls":`TLS`,"views.globalSettings.title":`Cài đặt toàn cục`,"views.globalSettings.tlsDescription":`Phục vụ bảng điều khiển qua HTTPS bằng chứng chỉ của riêng bạn.`,"views.logs.allStreams":`Mọi luồng`,"views.logs.clear":`Xoá`,"views.logs.clearDescription":`{server} — tệp trên đĩa bị cắt ngắn. Tiến trình vẫn chạy và các dòng mới được ghi từ đây trở đi.`,"views.logs.clearFile":`Xoá tệp`,"views.logs.clearNote":`Hãy tải về trước nếu vẫn cần đầu ra — thao tác này không thể hoàn tác từ bảng điều khiển.`,"views.logs.clearTitle":`Xoá tệp nhật ký đã lưu?`,"views.logs.fileEmpty":`Tệp đã lưu đang trống.`,"views.logs.loadedLines":`đã nạp {count} dòng`,"views.logs.modeLive":`Luồng trực tiếp`,"views.logs.modePersisted":`Đã lưu`,"views.logs.noServersDescription":`Hãy thêm một cái, đầu ra của nó sẽ được lưu ở đây.`,"views.logs.noServersTitle":`Không có máy chủ`,"views.logs.nothingOnDisk":`Không có gì trên đĩa cho máy chủ này — tính năng lưu đang tắt, hoặc nó chưa ghi gì.`,"views.logs.nothingPersisted":`không có gì được lưu`,"views.logs.persistedSummary":`{workspace} · {persisted} trên {total} máy chủ có trên đĩa · {size}`,"views.logs.persistedTitle":`Nhật ký đã lưu`,"views.logs.pickServerDescription":`Đầu ra đã lưu và luồng trực tiếp là theo từng máy chủ. Hãy chọn một cái trong danh sách.`,"views.logs.pickServerTitle":`Chọn một máy chủ`,"views.logs.reload":`Tải lại`,"views.logs.retentionNote":`Việc xoay vòng và thời gian giữ được đặt trong Cài đặt không gian làm việc → Nhật ký.`,"views.logs.searchAria":`Tìm trong nhật ký`,"views.logs.searchPlaceholder":`tìm trong cửa sổ đuôi`,"views.logs.searchedLines":`đã tìm trong {count} dòng`,"views.logs.streamAria":`Luồng`,"views.logs.tailAria":`Kích thước đuôi`,"views.logs.waitingOutput":`Đã kết nối — đang chờ đầu ra.`,"views.overview.acrossTree":`trên toàn bộ cây`,"views.overview.cpuNow":`{value}% cpu hiện tại`,"views.overview.crashedOrUnhealthy":`sự cố hoặc bất thường`,"views.overview.description":`Trạng thái trực tiếp của mọi máy chủ trong không gian làm việc này, được làm mới qua một luồng sự kiện duy nhất.`,"views.overview.emptyDescription":`Hãy thêm tiến trình đầu tiên mà không gian làm việc này cần giữ chạy.`,"views.overview.emptyTitle":`Không gian làm việc này không có máy chủ nào`,"views.overview.enabled":`{count} đang bật`,"views.overview.longestUptime":`Hoạt động lâu nhất`,"views.overview.needsAttention":`Cần chú ý`,"views.overview.notUp":`{count} không hoạt động`,"views.overview.nothingBroken":`không có gì hỏng`,"views.overview.nothingRunning":`không có gì đang chạy`,"views.overview.openFullList":`Mở danh sách đầy đủ`,"views.overview.peak":`đỉnh {value}`,"views.overview.processMemory":`Bộ nhớ tiến trình`,"views.overview.recentActivity":`Hoạt động gần đây`,"views.overview.running":`Đang chạy`,"views.overview.sampling":`lịch sử tài nguyên được lấy mẫu mỗi 5 giây và giữ trong phiên này`,"views.overview.stopped":`Đã dừng`,"views.overview.workspaceLabel":`không gian làm việc {id}`,"views.route.server":`Máy chủ`,"views.serverDetail.allServers":`Mọi máy chủ`,"views.serverDetail.autostart":`Tự khởi động cùng bảng điều khiển`,"views.serverDetail.backToServers":`Quay lại danh sách máy chủ`,"views.serverDetail.bind":`lắng nghe trên`,"views.serverDetail.bindCustom":`{bind} — tuỳ chỉnh`,"views.serverDetail.bindLan":`0.0.0.0 — mọi giao diện`,"views.serverDetail.bindLocal":`127.0.0.1 — chỉ máy này`,"views.serverDetail.closeEditor":`Đóng trình soạn thảo`,"views.serverDetail.copyJson":`Sao chép cấu hình JSON`,"views.serverDetail.crashes24":`sự cố trong 24 giờ`,"views.serverDetail.dependencies":`Phụ thuộc`,"views.serverDetail.detached":`tách rời`,"views.serverDetail.detachedHint":`Tiến trình này tự thay thế chính nó: bảng điều khiển tiếp nhận tiến trình kế nhiệm thay vì khởi động thêm một bản sao. Nút Dừng vẫn hoạt động, đầu ra của nó vẫn ở nơi tiến trình kế nhiệm gửi tới.`,"views.serverDetail.disableServer":`Tắt máy chủ`,"views.serverDetail.editHint":`Sửa mọi trường của mục này`,"views.serverDetail.effectiveConfig":`Cấu hình hiệu lực`,"views.serverDetail.effectiveConfigNote":`Giá trị mặc định từ Cài đặt đã được hợp nhất vào các giá trị này.`,"views.serverDetail.enableServer":`Bật máy chủ`,"views.serverDetail.eventHistory":`Lịch sử sự kiện`,"views.serverDetail.eventHistoryNote":`Được bảng điều khiển giữ trong 24 giờ.`,"views.serverDetail.fieldArgs":`args`,"views.serverDetail.fieldBackupPaths":`đường dẫn sao lưu`,"views.serverDetail.fieldBootstrap":`bootstrap`,"views.serverDetail.fieldCommand":`command`,"views.serverDetail.fieldCwd":`cwd`,"views.serverDetail.fieldDataEnvs":`data envs`,"views.serverDetail.fieldDependsOn":`phụ thuộc vào`,"views.serverDetail.fieldEnv":`env`,"views.serverDetail.fieldEnvFile":`tệp env`,"views.serverDetail.fieldHealth":`tình trạng`,"views.serverDetail.fieldLogBuffer":`bộ đệm nhật ký`,"views.serverDetail.fieldOnPortConflict":`khi trùng cổng`,"views.serverDetail.fieldPortBind":`cổng · bind`,"views.serverDetail.fieldRestart":`khởi động lại`,"views.serverDetail.fieldRssLimit":`giới hạn RSS`,"views.serverDetail.fieldStop":`dừng`,"views.serverDetail.fields":`Trường`,"views.serverDetail.goneDescription":`{id} không còn trong servers.config.json nữa. Nó có thể đã bị gỡ từ một thẻ khác.`,"views.serverDetail.goneTitle":`Máy chủ đó đã biến mất`,"views.serverDetail.health":`Tình trạng`,"views.serverDetail.healthProbe":`Dò tình trạng`,"views.serverDetail.lastCrash":`Sự cố gần nhất`,"views.serverDetail.lastProbe":`Lần dò gần nhất`,"views.serverDetail.logBufferLines":`{count} dòng`,"views.serverDetail.memoryRss":`Bộ nhớ (RSS)`,"views.serverDetail.moreActions":`Thêm thao tác cho {label}`,"views.serverDetail.neverWritten":`Máy chủ này chưa ghi gì cả.`,"views.serverDetail.nextAttempt":`Lần thử tiếp theo`,"views.serverDetail.none":`không có`,"views.serverDetail.off":`tắt`,"views.serverDetail.persistent":`thường trú`,"views.serverDetail.persistentHint":"Mục này chạy dưới nanny riêng, nên nó vẫn chạy khi bảng điều khiển dừng, khởi động lại hoặc bị kill. `home-hosted down` báo cáo nó thay vì dừng nó; chỉ nút Dừng mới làm được.","views.serverDetail.pid":`PID`,"views.serverDetail.portFree":`trống`,"views.serverDetail.portInUse":`đang dùng`,"views.serverDetail.portState":`Trạng thái cổng`,"views.serverDetail.probeFailed":`Phép dò tình trạng chưa đạt.`,"views.serverDetail.probeFailedFor":`Phép dò tình trạng chưa đạt trong {duration}.`,"views.serverDetail.processes":`Tiến trình`,"views.serverDetail.rawJson":`JSON thô`,"views.serverDetail.removeAutostart":`Bỏ khỏi tự khởi động`,"views.serverDetail.removeDescription":`{label} sẽ bị gỡ khỏi servers.config.json: tiến trình của nó bị dừng, nhật ký và lịch sử sự cố của nó cũng bị xoá theo.`,"views.serverDetail.removeNote":`Thao tác này không thể hoàn tác từ bảng điều khiển — mục đó phải được thêm lại bằng tay hoặc từ một bản sao lưu.`,"views.serverDetail.removeServer":`Gỡ máy chủ`,"views.serverDetail.removeTitle":`Gỡ máy chủ này?`,"views.serverDetail.restart":`Khởi động lại`,"views.serverDetail.restarts":`Số lần khởi động lại`,"views.serverDetail.sectionConfig":`Cấu hình`,"views.serverDetail.sectionHistory":`Lịch sử`,"views.serverDetail.sectionOutput":`Đầu ra trực tiếp`,"views.serverDetail.start":`Khởi động`,"views.serverDetail.startsOnItsOwn":`Tự khởi động. Thêm id trong {code} để sắp nó sau các máy chủ khác.`,"views.serverDetail.stop":`Dừng`,"views.serverDetail.telemetry":`Đo từ xa`,"views.serverDetail.telemetryNote":`Được lấy mẫu mỗi 5 giây khi trang này mở.`,"views.serverDetail.unhealthyFor":`Bất thường trong`,"views.serverDetail.uptime24":`Hoạt động 24 giờ`,"views.serverDetail.waitingFirstLine":`Đang chờ dòng đầu tiên…`,"views.servers.clearFilter":`Xoá bộ lọc`,"views.servers.clearFilters":`Xoá các bộ lọc`,"views.servers.description":`Mọi mục trong servers.config.json của {workspace}, kèm tài nguyên trực tiếp, tình trạng và lịch sử.`,"views.servers.emptyDescription":`Hãy thêm tiến trình đầu tiên mà bảng điều khiển này cần giám sát. Command, args, env và thư mục làm việc của nó đều nằm trong tệp cấu hình.`,"views.servers.emptyTitle":`Chưa cấu hình máy chủ nào`,"views.servers.filterAll":`Tất cả`,"views.servers.filterAria":`Lọc máy chủ`,"views.servers.filterAttention":`Cần chú ý`,"views.servers.filterDisabled":`Đã tắt`,"views.servers.filterPlaceholder":`Lọc theo id, nhãn, command hoặc cổng`,"views.servers.filterRunning":`Đang chạy`,"views.servers.filterStopped":`Đã dừng`,"views.servers.noMatchDescription":`Hãy thử trạng thái khác hoặc xoá tìm kiếm.`,"views.servers.noMatchTitle":`Không có gì khớp với bộ lọc đó`,"views.settings.changesDescription":`Những gì nút Lưu sẽ ghi vào cài đặt của {workspace}.`,"views.settings.configErrorNote":`Bảng điều khiển tiếp tục giám sát với cấu hình nó đã có; sửa tệp sẽ tự động nạp lại.`,"views.settings.configErrorTitle":`Không đọc được cấu hình của không gian làm việc`,"views.settings.configWarningTitle":`Cấu hình của không gian làm việc này có cảnh báo`,"views.settings.ddnsDescription":`Giữ các hostname luôn trỏ về địa chỉ công khai của máy này, bất kể nhà đăng ký nào đang giữ chúng.`,"views.settings.defaultsDescription":`Áp dụng cho mọi mục trong không gian làm việc này không tự đặt giá trị riêng.`,"views.settings.description":`Mặc định máy chủ, thời gian giữ nhật ký, thông báo và dynamic DNS cho {workspace}.`,"views.settings.logsDescription":`Không gian làm việc này giữ bao nhiêu đầu ra trên đĩa và trong bao lâu.`,"views.settings.navLabel":`Các mục cài đặt không gian làm việc`,"views.settings.notificationsDescription":`Cảnh báo sự cố và tình trạng cho không gian làm việc này, gửi tới một chat Telegram.`,"views.settings.saveFailed":`Không lưu được cài đặt.`,"views.settings.saved":`Đã lưu cài đặt không gian làm việc.`,"views.settings.savedToast":`Đã lưu cài đặt không gian làm việc`,"views.settings.sectionDdns":`Dynamic DNS`,"views.settings.sectionDefaults":`Mặc định máy chủ`,"views.settings.sectionLogs":`Nhật ký`,"views.settings.sectionNotifications":`Thông báo`,"workspace.new":`Không gian làm việc mới`,"workspace.rename":`Đổi tên không gian làm việc`,"workspace.create":`Tạo không gian làm việc`,"workspace.renameAction":`Đổi tên`,"workspace.createHint":`Có cài đặt, máy chủ, nhật ký, bí mật và bản sao lưu riêng — do chính bảng điều khiển này phục vụ.`,"workspace.renameHint":`Chỉ tên thay đổi; id không gian làm việc giữ nguyên nên URL và đường dẫn vẫn hoạt động.`,"workspace.nameHint":`Hiển thị ở thanh trên.`,"workspace.nameHintId":`Hiển thị ở thanh trên. Id: {id}`,"workspace.none":`Không có không gian làm việc`,"workspace.delete":`Xoá không gian làm việc`,"days.remaining":{other:`{count} ngày`},"editor.unsaved":{one:`thay đổi chưa lưu`,other:`thay đổi chưa lưu`},"editor.saveChanges":{one:`Lưu {count} thay đổi`,other:`Lưu {count} thay đổi`},"logs.lines":{other:`{count} dòng`},"palette.results":{other:`{count} kết quả`},"proxy.retry.inMinutes":{one:`~{count} phút`,other:`~{count} phút`},"proxy.retry.inHours":{one:`~{count} giờ`,other:`~{count} giờ`},"servers.total":{other:`{count} máy chủ`},"servers.running":{other:`{count} đang chạy`},"settings.backup.entriesCount":{one:`{count} mục`,other:`{count} mục`},"settings.backup.itemsSelected":{one:`đã chọn {count} mục`,other:`đã chọn {count} mục`},"settings.ddns.hostnameCount":{one:`{count} hostname`,other:`{count} hostname`},"settings.shell.fieldsChanged":{one:`trường đã thay đổi`,other:`trường đã thay đổi`},"settings.shell.saveChanges":{one:`Lưu {count} thay đổi`,other:`Lưu {count} thay đổi`},"views.globalOverview.needLook":{one:`{count} máy chủ cần xem xét`,other:`{count} máy chủ cần xem xét`},"views.logs.filesOnDisk":{one:`{count} tệp`,other:`{count} tệp`},"views.overview.needLook":{one:`{count} máy chủ cần xem xét`,other:`{count} máy chủ cần xem xét`}};export{e as default};
|