{
  "terminal": {
    "local": {
      "title": "Terminal cục bộ",
      "shell": "Shell: {{shell}}",
      "shell_unknown": "Không xác định",
      "session_ended": "Phiên đã kết thúc",
      "exit_code": "Tiến trình thoát với mã: {{code}}",
      "process_terminated": "Tiến trình đã kết thúc"
    },
    "search": {
      "visible_buffer": "Buffer hiện tại",
      "deep_history": "Lịch sử sâu",
      "deep_history_tooltip": "Tìm kiếm toàn bộ lịch sử phiên (ngoài scrollback)",
      "placeholder_active": "Search visible terminal...",
      "placeholder_deep": "Search full history...",
      "searching": "Đang tìm kiếm...",
      "searching_archived": "Đã có {{count}} kết quả khớp ({{ms}}ms), đang tìm trong lịch sử lưu trữ...",
      "error": "Lỗi",
      "no_results_history": "Không có kết quả trong lịch sử",
      "matches_count": "{{count}} kết quả ({{ms}}ms)",
      "no_results": "Không có kết quả",
      "matches_exceeded": "{{count}}+ kết quả",
      "previous_match": "Kết quả trước (Shift+Enter)",
      "next_match": "Kết quả tiếp (Enter)",
      "search_full_history": "Search full history (Enter)",
      "search_button": "Tìm kiếm",
      "close": "Đóng (Esc)",
      "case_sensitive": "Phân biệt chữ hoa",
      "regex": "Sử dụng biểu thức chính quy",
      "whole_word": "Khớp toàn từ",
      "click_to_jump": "Nhấn để nhảy đến vị trí kết quả",
      "line_number": "Dòng {{line}}",
      "recent_match": "Gần đây",
      "archived_match": "Đã lưu trữ",
      "archived_preview": "Xem trước bản lưu trữ",
      "showing_first": "Hiển thị 100 kết quả đầu tiên trong {{total}} kết quả",
      "partial_results": "Kết quả một phần: không thể tìm kiếm trong một số khối đã lưu trữ.",
      "no_matches_in_history": "Không tìm thấy kết quả trong lịch sử phiên",
      "visible_terminal": "Visible terminal",
      "full_history": "Full history",
      "visible_terminal_hint": "Search the main terminal visible scrollback.",
      "full_history_hint": "Search backend hot history and archived excerpts. Results open in Scrollback Viewer.",
      "results_map": "Results map",
      "results_map_hint": "Click to jump"
    },
    "ai": {
      "title": "OxideSens",
      "api_key_required": "Cần API Key",
      "api_key_hint": "Cấu hình API key của bạn trong Cài đặt → AI để sử dụng tính năng này.",
      "context": "Ngữ cảnh:",
      "context_selection": "Đã chọn",
      "context_visible": "Hiện tại",
      "context_none": "Không có",
      "tokens_estimate": "~{{count}} token",
      "prompt_placeholder": "Hỏi AI để được trợ giúp với lệnh...",
      "inline_placeholder": "Yêu cầu AI lệnh...",
      "selection_placeholder": "Hỏi về vùng chọn...",
      "to_send": "gửi",
      "to_insert": "chèn",
      "to_run": "chạy",
      "generating": "Đang tạo...",
      "regenerate": "Thử lại",
      "send_shortcut": "để gửi",
      "close_shortcut": "để đóng",
      "copy": "Sao chép",
      "copied": "Đã sao chép",
      "insert": "Chèn",
      "execute": "Thực thi"
    },
    "paste": {
      "title": "Phát hiện nhiều dòng ({{count}} dòng)",
      "more_lines": "... {{count}} dòng nữa",
      "confirm": "Xác nhận",
      "cancel": "Hủy",
      "paste": "Dán"
    },
    "ssh": {
      "initialized": "Đã khởi tạo OxideTerm",
      "connecting": "Đang kết nối đến {{user}}@{{host}}...",
      "connected": "Đã kết nối.",
      "reconnecting": "Đang kết nối lại đến {{user}}@{{host}}...",
      "reconnected": "Đã kết nối lại thành công!",
      "connection_closed": "Kết nối đã đóng.",
      "connection_closed_code": "Kết nối đã đóng (mã: {{code}})",
      "ws_error": "Lỗi WebSocket: {{error}}",
      "ws_reconnect_error": "Lỗi kết nối lại WebSocket",
      "ws_establish_failed": "Không thể thiết lập WebSocket: {{error}}",
      "server_error": "Lỗi máy chủ: {{error}}",
      "no_ws_url": "Không có URL WebSocket khả dụng cho phiên.",
      "connection_lost": "[OxideTerm] Mất kết nối. Đang kết nối lại...",
      "connection_lost_reconnect": "[OxideTerm] Mất kết nối SSH. Vui lòng kết nối lại.",
      "attempting_reconnect": "[OxideTerm] Đang cố gắng kết nối lại...",
      "link_restored": "[OxideTerm] Đã khôi phục kết nối. Phiên shell đã reset.",
      "connection_failed": "[OxideTerm] Kết nối thất bại vĩnh viễn.",
      "history_match": "Khớp lịch sử (Dòng {{line}})",
      "buffer_empty": "⚠ Buffer trống - hiển thị snapshot được cache:",
      "buffer_rotated": "⚠ Buffer đã xoay - ngữ cảnh trực tiếp có thể không khớp. Hiển thị cache + hiện tại:",
      "cached_match": "Kết quả được cache:",
      "current_line": "Dòng hiện tại tại vị trí {{index}}:",
      "fetch_context_failed": "⚠ Không thể lấy ngữ cảnh - hiển thị snapshot được cache:"
    },
    "trzsz": {
      "select_upload_directory_title": "Chọn thư mục để tải lên",
      "select_upload_directory_description": "Chọn thư mục cục bộ sẽ được gửi qua trzsz.",
      "select_upload_files_title": "Chọn tệp để tải lên",
      "select_upload_files_description": "Chọn một hoặc nhiều tệp cục bộ cho lần truyền trzsz này.",
      "select_download_directory_title": "Chọn nơi lưu tải xuống",
      "select_download_directory_description": "Chọn một thư mục cục bộ cho các tệp trzsz nhận về.",
      "cancelled_title": "Đã hủy truyền",
      "cancelled_description": "Lần truyền trzsz đã bị hủy trước khi hoàn tất.",
      "completed_title": "Truyền hoàn tất",
      "completed_description": "Lần truyền trzsz đã hoàn tất thành công.",
      "failed_title": "Truyền thất bại",
      "failed_description": "OxideTerm không thể hoàn tất lần truyền trzsz.",
      "connection_lost_title": "Truyền bị gián đoạn do mất kết nối",
      "connection_lost_description": "Kết nối SSH đã thay đổi trong khi một lần truyền trzsz đang hoạt động. Hãy bắt đầu lại lần truyền sau khi kết nối lại.",
      "partial_cleanup_title": "Dọn dẹp truyền chưa hoàn tất",
      "partial_cleanup_description": "Không thể dọn dẹp hoàn toàn trạng thái truyền tạm thời. Bạn vẫn có thể tiếp tục dùng terminal, nhưng có thể còn sót lại các tệp truyền cũ.",
      "version_mismatch_title": "Không khớp giao thức trzsz",
      "version_mismatch_description": "Runtime trzsz ở phía remote không tương thích với bản build OxideTerm này.",
      "path_invalid_title": "Đường dẫn tải xuống bị từ chối",
      "path_invalid_description": "OxideTerm đã chặn lần truyền trzsz này vì đường dẫn đã chọn không hợp lệ hoặc nằm ngoài thư mục gốc tải xuống được phê duyệt.",
      "symlink_not_supported_title": "Không hỗ trợ truyền symlink",
      "symlink_not_supported_description": "OxideTerm không ghi liên kết tượng trưng qua bridge trzsz hiện tại.",
      "conflict_detected_title": "Phát hiện xung đột tệp",
      "conflict_detected_description": "Đã có tệp hoặc thư mục cùng tên ở đích.",
      "directory_not_allowed_title": "Đã tắt truyền thư mục",
      "directory_not_allowed_description": "Cài đặt terminal hiện tại không cho phép truyền thư mục bằng trzsz.",
      "max_file_count_title": "Đã chọn quá nhiều tệp",
      "max_file_count_description": "Lần truyền này bao gồm {{selected}} tệp, vượt quá giới hạn cấu hình là {{max}}.",
      "max_total_bytes_title": "Vượt quá giới hạn kích thước truyền",
      "max_total_bytes_description": "Lần truyền này cần {{selected}}, vượt quá giới hạn cấu hình là {{max}}.",
      "disabled_title": "trzsz chưa được bật",
      "disabled_description": "Máy chủ từ xa đã khởi tạo truyền tệp trzsz, nhưng tính năng truyền tệp nội tuyến đang bị tắt. Hãy bật trong Cài đặt → Thiết bị đầu cuối để sử dụng trzsz."
    },
    "standby": {
      "connection_lost": "Mất kết nối",
      "reconnecting": "Đang kết nối lại...",
      "input_locked": "Đầu vào bị khóa trong quá trình kết nối lại"
    },
    "disconnected": {
      "message": "Kết nối đã ngắt",
      "retry": "Kết nối lại"
    },
    "pane": {
      "split_horizontal": "Chia theo chiều ngang",
      "split_vertical": "Chia theo chiều dọc",
      "close_pane": "Đóng khung",
      "max_panes_reached": "Đã đạt số khung tối đa ({{max}})",
      "focus_next": "Khung tiếp theo",
      "focus_previous": "Khung trước",
      "cannot_close_last": "Không thể đóng khung cuối cùng",
      "ssh_split_coming_soon": "Chia đôi terminal SSH sắp có"
    },
    "typeLocal": "NỘI BỘ",
    "typeSsh": "SSH",
    "mouse_mode_hint": "⇧ Shift + Kéo để chọn",
    "broadcast": {
      "broadcast_input": "Phát đầu vào",
      "select_targets": "Chọn mục tiêu phát",
      "select_all": "Chọn tất cả",
      "deselect_all": "Bỏ chọn tất cả",
      "no_targets": "Không có terminal nào khác",
      "target_count": "{{count}} mục tiêu",
      "local_terminal": "Terminal cục bộ",
      "enabled": "Đã bật phát",
      "disabled": "Đã tắt phát",
      "current": "Hiện tại"
    },
    "recording": {
      "start": "Ghi phiên",
      "stop": "Dừng ghi",
      "pause": "Tạm dừng ghi",
      "resume": "Tiếp tục ghi",
      "discard": "Hủy bản ghi",
      "save": "Lưu bản ghi",
      "recording": "GHI",
      "paused": "TẠM DỬNG",
      "elapsed": "{{time}}",
      "events": "{{count}} sự kiện",
      "confirm_stop_title": "Dừng ghi?",
      "confirm_stop_message": "Lưu bản ghi thành tệp asciicast (.cast)?",
      "confirm_discard_title": "Hủy bản ghi?",
      "confirm_discard_message": "Hành động này sẽ hủy bản ghi hiện tại. Không thể hoàn tác.",
      "saved": "Bản ghi đã lưu",
      "open_cast": "Mở tệp Cast",
      "security_warning": "Bản ghi có thể chứa dữ liệu nhạy cảm (mật khẩu, token). Kiểm tra trước khi chia sẻ.",
      "player": {
        "title": "Trình phát Cast",
        "play": "Phát",
        "pause": "Tạm dừng",
        "speed": "Tốc độ",
        "seek": "Tìm kiếm",
        "duration": "Thời lượng",
        "search": "Tìm trong bản ghi...",
        "no_results": "Không có kết quả",
        "matches": "{{count}} kết quả",
        "jump_to": "Nhảy đến kết quả",
        "loading": "Xây dựng snapshot...",
        "dimensions": "{{cols}}×{{rows}}",
        "close": "Đóng trình phát"
      }
    },
    "encoding_hint": {
      "title": "Terminal output may use another encoding",
      "description": "OxideTerm detected garbled text while using UTF-8. You can try {{encodings}}; nothing will change unless you choose one.",
      "use_encoding": "Use {{encoding}}"
    },
    "command_bar": {
      "command": "Command",
      "command_mode": "Command mode",
      "command_placeholder": "Run commands",
      "run_command": "Run command",
      "local_shell": "Local shell",
      "remote_shell": "Remote shell",
      "all_targets": "all",
      "recording": "REC",
      "source_runtime": "history",
      "source_local_history": "local",
      "source_ai_ledger": "AI",
      "source_history": "history",
      "source_command": "command",
      "source_option": "option",
      "source_path": "path",
      "source_ai": "AI",
      "group_history": "History",
      "group_command": "Command",
      "group_option": "Option",
      "group_path": "Path",
      "group_quick_commands": "Quick Commands",
      "source_quick_command": "quick"
    },
    "command_selection": {
      "actions": "Command selection actions",
      "copy": "Copy",
      "copy_title": "Copy command output"
    },
    "scrollback_viewer": {
      "title": "Scrollback Viewer",
      "open": "Open Scrollback Viewer",
      "live_hint": "Showing live scrollback. Archived matches open as excerpts.",
      "stats": "{{current}} live / {{total}} total · max {{max}} · {{memory}} MB",
      "search_placeholder": "Search live and archived history...",
      "search": "Search",
      "case_sensitive": "Case sensitive",
      "regex": "Regular expression",
      "whole_word": "Whole word",
      "previous_match": "Previous match",
      "next_match": "Next match",
      "refresh": "Refresh",
      "clear": "Clear scrollback",
      "close": "Close",
      "empty_title": "No live scrollback yet",
      "empty_description": "Terminal output will appear here after it scrolls into the buffer.",
      "loading_line": "Loading...",
      "matches": "Matches",
      "live_buffer_badge": "Live buffer",
      "archive_badge": "Archive",
      "line_number": "Line {{line}}",
      "archive_excerpt": "Archive excerpt",
      "clear_confirm_title": "Clear current scrollback buffer?",
      "clear_confirm_description": "Archived history is not removed.",
      "clear_confirm_action": "Clear scrollback",
      "minimap": "History minimap",
      "limited_live_hint": "Showing the latest {{shown}} live scrollback lines out of {{available}} available. Use full-history search/archive excerpts for older output."
    },
    "quick_commands": {
      "title": "Quick Commands",
      "open": "Quick Commands",
      "close": "Close Quick Commands",
      "search_placeholder": "Search quick commands...",
      "add": "Add",
      "edit": "Edit",
      "delete": "Delete",
      "run": "Run",
      "save": "Save",
      "cancel": "Cancel",
      "empty_search": "No matching quick commands",
      "empty_category": "No quick commands in this category",
      "name_placeholder": "Name",
      "command_placeholder": "Command",
      "description_placeholder": "Description",
      "host_pattern_placeholder": "Host pattern, e.g. *.prod",
      "confirm_title": "Run quick command?",
      "confirm_description": "Run: {{command}}",
      "confirm_risky_description": "This command may be destructive or sensitive. Run: {{command}}",
      "toast_executed": "Quick command sent",
      "add_group": "Add group",
      "edit_group": "Edit group",
      "delete_group": "Delete group",
      "save_group": "Save group",
      "group_name_placeholder": "Group name",
      "icon_terminal": "Terminal",
      "icon_server": "Server",
      "icon_folder": "Folder",
      "icon_docker": "Docker",
      "icon_zap": "Custom"
    }
  }
}
