mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-10-31 07:35:24 +00:00
feat: move snippets, keybinding actions and macros out of core into plugins
This commit is contained in:
1 parent
d9bba10612
commit
e0c30a4e6f
262 files changed
+9091
-10744
No files matched your search
@@ -409,7 +409,6 @@
|
||||
"sidebarSettings": "Cài đặt thanh bên...",
|
||||
"hosts": "Máy chủ",
|
||||
"snippets": "Đoạn mã",
|
||||
"macros": "Macro",
|
||||
"hostManager": "Quản lý máy chủ",
|
||||
"credentials": "Thông tin đăng nhập",
|
||||
"connections": "Kết nối",
|
||||
@@ -869,7 +868,6 @@
|
||||
"groupTags": "Thẻ & ghim",
|
||||
"groupTunnels": "Đường hầm",
|
||||
"groupJumpHosts": "Người dẫn chương trình Jump",
|
||||
"groupQuickActions": "Hành động nhanh chóng",
|
||||
"groupFeatureFlags": "Cờ tính năng",
|
||||
"groupAdvanced": "Cấu hình nâng cao",
|
||||
"preview": "Xem trước",
|
||||
@@ -1068,9 +1066,6 @@
|
||||
"addCredentialDesc": "Lưu trữ khóa SSH hoặc mật khẩu",
|
||||
"tmuxMonitor": "Giám sát Tmux",
|
||||
"tmuxMonitorDesc": "Giám sát phiên tmux trên các máy chủ",
|
||||
"snippets": "Những đoạn trích",
|
||||
"runSnippetDesc": "Chạy trong tab cửa sổ terminal đang hoạt động",
|
||||
"noSnippetsFound": "Không tìm thấy đoạn mã nào khớp với \"{{search}}\"",
|
||||
"recentActivity": "Hoạt động gần đây",
|
||||
"serversAndHosts": "Máy chủ & Host",
|
||||
"noHostsFound": "Không tìm thấy máy chủ nào khớp với \"{{search}}\"",
|
||||
@@ -1864,119 +1859,6 @@
|
||||
"hotkeysPrevTab": "Tab trước",
|
||||
"hotkeysJumpTab": "Chuyển đến tab"
|
||||
},
|
||||
"snippets": {
|
||||
"title": "Đoạn mã",
|
||||
"createSnippetTitle": "Tạo đoạn mã",
|
||||
"createSnippetDescription": "Tạo đoạn mã lệnh mới để thực thi nhanh",
|
||||
"nameLabel": "Tên",
|
||||
"namePlaceholder": "Ví dụ: Khởi động lại Nginx",
|
||||
"descriptionLabel": "Mô tả",
|
||||
"descriptionPlaceholder": "Mô tả tùy chọn",
|
||||
"optional": "Tùy chọn",
|
||||
"folderLabel": "Thư mục",
|
||||
"noFolder": "Không thư mục (Chưa phân loại)",
|
||||
"commandLabel": "Lệnh",
|
||||
"commandPlaceholder": "Ví dụ: sudo systemctl restart nginx",
|
||||
"typeLabel": "Kiểu",
|
||||
"typeCommand": "Yêu cầu",
|
||||
"typeNote": "Ghi chú",
|
||||
"noteLabel": "Ghi chú",
|
||||
"notePlaceholder": "Ví dụ: một lời nhắc hoặc văn bản nhắc nhở có thể tái sử dụng.",
|
||||
"cancel": "Hủy",
|
||||
"createSnippetButton": "Tạo đoạn mã",
|
||||
"createFolderTitle": "Tạo thư mục",
|
||||
"createFolderDescription": "Sắp xếp đoạn mã vào các thư mục",
|
||||
"folderNameLabel": "Tên thư mục",
|
||||
"folderNamePlaceholder": "Ví dụ: Lệnh hệ thống, Docker Scripts",
|
||||
"folderColorLabel": "Màu thư mục",
|
||||
"folderIconLabel": "Biểu tượng thư mục",
|
||||
"previewLabel": "Xem trước",
|
||||
"folderNameFallback": "Tên thư mục",
|
||||
"createFolderButton": "Tạo thư mục",
|
||||
"targetTerminals": "Terminal đích",
|
||||
"selectAll": "Tất cả",
|
||||
"selectNone": "Không chọn",
|
||||
"noTerminalTabsOpen": "Không có tab terminal nào mở",
|
||||
"searchPlaceholder": "Tìm kiếm snippet...",
|
||||
"newSnippet": "Snippet mới",
|
||||
"newFolder": "Thư mục mới",
|
||||
"run": "Chạy",
|
||||
"noSnippetsInFolder": "Không có snippet nào trong thư mục này",
|
||||
"uncategorized": "Chưa phân loại",
|
||||
"editSnippetTitle": "Chỉnh sửa snippet",
|
||||
"editSnippetDescription": "Cập nhật snippet lệnh này",
|
||||
"saveSnippetButton": "Lưu thay đổi",
|
||||
"createSuccess": "Đã tạo snippet thành công",
|
||||
"createFailed": "Tạo snippet thất bại",
|
||||
"updateSuccess": "Đã cập nhật snippet thành công",
|
||||
"updateFailed": "Cập nhật snippet thất bại",
|
||||
"deleteFailed": "Xóa snippet thất bại",
|
||||
"folderCreateSuccess": "Đã tạo thư mục thành công",
|
||||
"folderCreateFailed": "Tạo thư mục thất bại",
|
||||
"editFolderTitle": "Chỉnh sửa thư mục",
|
||||
"editFolderDescription": "Đổi tên hoặc thay đổi hình thức của thư mục này",
|
||||
"saveFolderButton": "Lưu thay đổi",
|
||||
"editFolder": "Chỉnh sửa thư mục",
|
||||
"deleteFolder": "Xóa thư mục",
|
||||
"folderDeleteSuccess": "Đã xóa thư mục \"{{name}}\"",
|
||||
"folderDeleteFailed": "Xóa thư mục thất bại",
|
||||
"folderEditSuccess": "Đã cập nhật thư mục thành công",
|
||||
"folderEditFailed": "Cập nhật thư mục thất bại",
|
||||
"confirmRunMessage": "Chạy \"{{name}}\"?",
|
||||
"confirmRunButton": "Chạy",
|
||||
"runSuccess": "Đã chạy \"{{name}}\" trên {{count}} terminal",
|
||||
"pasteSuccess": "Đã dán \"{{name}}\" vào {{count}} thiết bị đầu cuối",
|
||||
"pasteToTerminal": "Dán",
|
||||
"copySuccess": "Đã sao chép \"{{name}}\" vào clipboard",
|
||||
"shareTitle": "Chia sẻ snippet",
|
||||
"shareUser": "Người dùng",
|
||||
"shareRole": "Vai trò",
|
||||
"selectUser": "Chọn người dùng...",
|
||||
"selectRole": "Chọn vai trò...",
|
||||
"shareSuccess": "Đã chia sẻ đoạn mã thành công",
|
||||
"shareFailed": "Chia sẻ đoạn mã thất bại",
|
||||
"revokeSuccess": "Đã thu hồi quyền truy cập",
|
||||
"revokeFailed": "Thu hồi quyền truy cập thất bại",
|
||||
"currentAccess": "Quyền truy cập hiện tại",
|
||||
"shareLoadError": "Tải dữ liệu chia sẻ thất bại",
|
||||
"loading": "Đang tải...",
|
||||
"close": "Đóng",
|
||||
"reorderFailed": "Lưu thứ tự đoạn mã thất bại",
|
||||
"importExport": "Nhập / Xuất",
|
||||
"exportBtn": "Xuất JSON",
|
||||
"importBtn": "Nhập JSON",
|
||||
"exportSuccess": "Đã xuất đoạn mã thành công",
|
||||
"exportFailed": "Xuất đoạn mã thất bại",
|
||||
"importTitle": "Nhập đoạn mã",
|
||||
"importDescription": "Nhập đoạn mã và thư mục từ tệp JSON được Termix xuất ra",
|
||||
"importDropOrClick": "Kéo thả tệp JSON vào đây hoặc nhấn để duyệt",
|
||||
"importSelectedFile": "Đã chọn: {{name}}",
|
||||
"importOverwrite": "Ghi đè đoạn mã hiện có cùng tên và thư mục",
|
||||
"importStartBtn": "Nhập",
|
||||
"importSuccess": "Nhập xong: đã thêm {{snippets}} đoạn mã, cập nhật {{updated}}, bỏ qua {{skipped}}, thêm {{folders}} thư mục",
|
||||
"importFailed": "Nhập đoạn mã thất bại",
|
||||
"importInvalidFile": "Tệp không hợp lệ: cần một đối tượng JSON với mảng đoạn mã hoặc thư mục",
|
||||
"targetHostsLabel": "Máy chủ đích",
|
||||
"targetHostsHint": "Gán máy chủ để chạy đoạn mã này trực tiếp mà không cần mở terminal.",
|
||||
"noHostsAvailable": "Chưa cấu hình máy chủ nào",
|
||||
"clearTargetHosts": "Xóa tất cả",
|
||||
"hasTargetHosts": "Có máy chủ đích",
|
||||
"runOnTargets": "Chạy trên máy đích",
|
||||
"directRunSuccess": "Đã chạy \"{{name}}\" trên {{count}} máy chủ",
|
||||
"directRunPartialFail": "\"{{name}}\" chạy thất bại trên một hoặc nhiều máy chủ",
|
||||
"executionResultTitle": "Kết quả thực thi: {{name}}",
|
||||
"executionResultDescription": "Kết quả từ việc chạy đoạn mã trên từng máy đích.",
|
||||
"executionSuccess": "Thành công",
|
||||
"executionFailed": "Thất bại",
|
||||
"expandAll": "Mở rộng tất cả các thư mục",
|
||||
"collapseAll": "Thu gọn tất cả các thư mục",
|
||||
"settings": "Cài đặt đoạn mã",
|
||||
"variablesHint": "Biến: $HOST, $USER, $PORT, $NAME, ${INPUT_1:Label}",
|
||||
"variablesDialogTitle": "Chạy \"{{name}}\"",
|
||||
"variablesDialogDescription": "Hãy điền đầy đủ các giá trị cần thiết cho đoạn mã này trước khi chạy.",
|
||||
"variablesPreviewLabel": "Xem trước",
|
||||
"variablesConfirmButton": "Chạy"
|
||||
},
|
||||
"keybindings": {
|
||||
"title": "Phím tắt",
|
||||
"description": "Tùy chỉnh các phím tắt sao chép, dán và điều khiển trong terminal, hoặc gán phím để gửi văn bản hoặc chạy một đoạn mã.",
|
||||
@@ -2000,26 +1882,11 @@
|
||||
"pressKeysPlaceholder": "Nhấp chuột và nhấn phím",
|
||||
"recording": "Nhấn các phím...",
|
||||
"comboRequiredError": "Trước tiên, hãy nhấn tổ hợp phím.",
|
||||
"textRequiredError": "Nhập văn bản cần gửi",
|
||||
"controlCodeRequiredError": "Nhập một chữ cái duy nhất cho mã điều khiển.",
|
||||
"snippetRequiredError": "Chọn một đoạn trích",
|
||||
"conflictWarning": "Sự kết hợp này đã được liên kết với {{combo}}. Lưu lại sẽ khiến cả hai đều bốc cháy.",
|
||||
"actionLabel": "Hoạt động",
|
||||
"actionCopy": "Sao chép lựa chọn",
|
||||
"actionPaste": "Dán",
|
||||
"actionSendControlCode": "Gửi tín hiệu Ctrl+chữ cái",
|
||||
"actionSendText": "Gửi tin nhắn",
|
||||
"actionRunSnippet": "Chạy đoạn mã hiện có",
|
||||
"actionNextTab": "Chuyển sang tab tiếp theo",
|
||||
"actionPreviousTab": "Chuyển về tab trước",
|
||||
"actionOpenCommandPalette": "Mở tìm kiếm nhanh",
|
||||
"controlCodeLabel": "Thư",
|
||||
"textLabel": "Văn bản để gửi",
|
||||
"appendEnterLabel": "Nhấn Enter sau khi gửi",
|
||||
"snippetLabel": "Đoạn trích",
|
||||
"selectSnippetPlaceholder": "Chọn một đoạn trích",
|
||||
"orphanedSnippetWarning": "Không tìm thấy đoạn mã.",
|
||||
"clipboardPermissionNote": "Một số trình duyệt có thể yêu cầu quyền truy cập clipboard khi sử dụng lần đầu."
|
||||
"actionOpenCommandPalette": "Mở tìm kiếm nhanh"
|
||||
},
|
||||
"userProfile": {
|
||||
"donateTitle": "Duy trì Termix",
|
||||
@@ -2240,100 +2107,5 @@
|
||||
"ntfyTopicRequired": "Chủ đề là bắt buộc",
|
||||
"ntfyToken": "Mã truy cập (tùy chọn)",
|
||||
"channelSaveFailed": "Lỗi khi lưu kênh"
|
||||
},
|
||||
"macros": {
|
||||
"title": "Macro",
|
||||
"description": "Chạy một chuỗi lệnh đã lưu trong cửa sổ dòng lệnh và phản hồi lại những gì máy chủ gửi về.",
|
||||
"target": "Mục tiêu",
|
||||
"noTerminal": "Không có thiết bị đầu cuối nào đang mở",
|
||||
"empty": "Chưa có macro nào.",
|
||||
"emptyHint": "Tạo macro để tự động hóa quy trình trên thiết bị đầu cuối, chẳng hạn như đăng nhập, khởi động lại dịch vụ hoặc trả lời các lời nhắc.",
|
||||
"create": "Macro mới",
|
||||
"back": "Quay lại phần macro",
|
||||
"name": "Tên",
|
||||
"namePlaceholder": "Khởi động lại máy chủ web",
|
||||
"nameRequired": "Đặt tên cho macro trước khi lưu.",
|
||||
"descriptionLabel": "Sự miêu tả",
|
||||
"descriptionPlaceholder": "Chức năng của macro này (tùy chọn)",
|
||||
"unsaved": "Thay đổi chưa được lưu",
|
||||
"save": "Cứu",
|
||||
"saved": "Macro đã được lưu",
|
||||
"saveFailed": "Không thể lưu macro",
|
||||
"delete": "Xóa bỏ",
|
||||
"deleteTitle": "Xóa macro này?",
|
||||
"deleteBody": "\"{{name}}\" sẽ bị xóa vĩnh viễn. Không thể hoàn tác.",
|
||||
"deleted": "Macro đã bị xóa",
|
||||
"cancel": "Hủy bỏ",
|
||||
"run": "Chạy",
|
||||
"stop": "Dừng lại",
|
||||
"running": "Đang chạy...",
|
||||
"completed": "Macro đã hoàn thành",
|
||||
"failed": "Macro bị lỗi",
|
||||
"loadFailed": "Không thể tải macro",
|
||||
"needTerminal": "Trước tiên hãy mở và kết nối thiết bị đầu cuối.",
|
||||
"noSteps": "Macro này chưa có bước nào. Hãy thêm một bước bên dưới.",
|
||||
"addStep": "Thêm bước",
|
||||
"stepNumber": "Bước {{number}}",
|
||||
"removeStep": "Xóa bước",
|
||||
"confirmRunTitle": "Chạy macro này?",
|
||||
"confirmRunBody": "\"{{name}}\" sẽ gửi lệnh đến {{host}}.",
|
||||
"confirmRunAction": "Chạy macro",
|
||||
"stepTypes": {
|
||||
"send": {
|
||||
"label": "Gửi lệnh",
|
||||
"help": "Nhập văn bản vào cửa sổ dòng lệnh, giống như khi bạn tự nhập văn bản."
|
||||
},
|
||||
"wait": {
|
||||
"label": "Chờ kết quả đầu ra",
|
||||
"help": "Tạm dừng cho đến khi máy chủ in ra đoạn văn bản bạn đã đặt tên, ví dụ như lời nhắc nhập mật khẩu."
|
||||
},
|
||||
"delay": {
|
||||
"label": "Tạm dừng",
|
||||
"help": "Chờ một khoảng thời gian cố định trước khi thực hiện bước tiếp theo."
|
||||
},
|
||||
"if": {
|
||||
"label": "Nếu đầu ra chứa",
|
||||
"help": "Kiểm tra tất cả những gì máy chủ đã in ra cho đến nay, sau đó chạy một trong hai nhánh."
|
||||
},
|
||||
"repeat": {
|
||||
"label": "Lặp lại",
|
||||
"help": "Thực thi các bước bên trong nó một số lần nhất định."
|
||||
}
|
||||
},
|
||||
"send": {
|
||||
"text": "Lệnh hoặc văn bản",
|
||||
"textPlaceholder": "systemctl restart nginx",
|
||||
"pressEnter": "Nhấn Enter sau khi gửi",
|
||||
"pressEnterHelp": "Tắt tùy chọn này để nhập văn bản mà không cần gửi đi."
|
||||
},
|
||||
"wait": {
|
||||
"pattern": "Chờ cho đến khi đầu ra chứa",
|
||||
"patternPlaceholder": "mật khẩu:",
|
||||
"timeout": "Bỏ cuộc sau",
|
||||
"onTimeout": "Nếu nó không bao giờ xuất hiện",
|
||||
"stop": "Dừng macro",
|
||||
"continue": "Cứ tiếp tục đi"
|
||||
},
|
||||
"delay": {
|
||||
"duration": "Chờ đợi"
|
||||
},
|
||||
"ifStep": {
|
||||
"pattern": "Nếu đầu ra chứa",
|
||||
"patternPlaceholder": "Đang hoạt động: đang hoạt động (đang chạy)",
|
||||
"then": "Sau đó hãy làm như thế này",
|
||||
"else": "Nếu không thì hãy làm như thế này",
|
||||
"emptyBranch": "Không có bước nào"
|
||||
},
|
||||
"repeat": {
|
||||
"count": "Số lần",
|
||||
"times": "lần"
|
||||
},
|
||||
"match": {
|
||||
"useRegex": "So khớp với biểu thức chính quy",
|
||||
"useRegexHelp": "Bỏ phần này đi để văn bản khớp chính xác với nội dung đã viết.",
|
||||
"invalidRegex": "Đây không phải là biểu thức chính quy hợp lệ, nó sẽ được so khớp như văn bản thuần túy."
|
||||
},
|
||||
"seconds": "giây",
|
||||
"secondsShort": "{{count}}s"
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user