import type { TranslationKeys } from './en';

const vi: TranslationKeys = {
  // ── Common ──
  'common.rename': 'Đổi tên',
  'common.duplicate': 'Nhân bản',
  'common.delete': 'Xoá',
  'common.cancel': 'Huỷ',
  'common.save': 'Lưu',
  'common.close': 'Đóng',
  'common.connect': 'Kết nối',
  'common.disconnect': 'Ngắt kết nối',
  'common.yes': 'Có',
  'common.no': 'Không',
  'common.import': 'Nhập',
  'common.export': 'Xuất',
  'common.name': 'Tên',
  'common.untitled': 'Chưa đặt tên',
  'common.best': 'Tốt nhất',
  'common.selected': '{{count}} đã chọn',

  // ── Toolbar ──
  'toolbar.select': 'Chọn',
  'toolbar.text': 'Văn bản',
  'toolbar.frame': 'Khung',
  'toolbar.hand': 'Bàn tay',
  'toolbar.undo': 'Hoàn tác',
  'toolbar.redo': 'Làm lại',
  'toolbar.variables': 'Biến',
  'toolbar.uikitBrowser': 'Trình duyệt UIKit',

  // ── Shapes ──
  'shapes.rectangle': 'Hình chữ nhật',
  'shapes.ellipse': 'Hình elip',
  'shapes.polygon': 'Đa giác',
  'shapes.line': 'Đường thẳng',
  'shapes.icon': 'Biểu tượng',
  'shapes.importImageSvg': 'Nhập ảnh hoặc SVG\u2026',
  'shapes.pen': 'Bút vẽ',
  'shapes.shapeTools': 'Công cụ hình dạng',
  'shapes.moreShapeTools': 'Thêm công cụ hình dạng',

  // ── Top Bar ──
  'topbar.hideLayers': 'Ẩn lớp',
  'topbar.showLayers': 'Hiện lớp',
  'topbar.new': 'Tạo mới',
  'topbar.open': 'Mở',
  'topbar.save': 'Lưu',
  'topbar.importFigma': 'Nhập từ Figma',
  'topbar.codePanel': 'Mã',
  'topbar.lightMode': 'Chế độ sáng',
  'topbar.darkMode': 'Chế độ tối',
  'topbar.fullscreen': 'Toàn màn hình',
  'topbar.exitFullscreen': 'Thoát toàn màn hình',
  'topbar.edited': '— Đã chỉnh sửa',
  'topbar.closeConfirmMessage': 'Bạn có muốn lưu thay đổi trước khi đóng không?',
  'topbar.closeConfirmDetail': 'Các thay đổi của bạn sẽ bị mất nếu không lưu.',
  'topbar.dontSave': 'Không lưu',
  'topbar.agentsAndMcp': 'Agent & MCP',
  'topbar.setupAgentsMcp': 'Thiết lập Agent & MCP',
  'topbar.connected': 'đã kết nối',
  'topbar.agentStatus': '{{agents}} agent{{agentSuffix}} · {{mcp}} MCP',

  // ── Bảng Git ──
  'git.openPanel': 'Mở bảng Git',
  'git.closePanel': 'Đóng bảng Git',
  'git.title': 'Git · {{fileName}}',
  'git.titleNoFile': 'Git · (Chưa chọn tệp)',
  'git.close': 'Đóng',
  'git.initializing': 'Đang khởi tạo kho…',
  'git.conflict.title': 'Xung đột hợp nhất',
  'git.conflict.description': 'Giải quyết từng xung đột bằng các thẻ bên dưới, sau đó áp dụng gộp.',
  'git.conflict.abort': 'Hủy hợp nhất',
  'git.conflict.nonOp.title': 'Gộp tạm dừng ở các tệp không phải .op',
  'git.conflict.nonOp.description':
    'Gộp .op đã hoàn tất, nhưng các tệp khác trong kho vẫn chưa được giải quyết. Giải quyết chúng bên ngoài OpenPencil, sau đó tiếp tục.',
  'git.conflict.nonOp.unresolvedHeading_one': '1 tệp cần xử lý',
  'git.conflict.nonOp.unresolvedHeading_other': '{{count}} tệp cần xử lý',
  'git.conflict.nonOp.continue': 'Tiếp tục gộp',
  'git.conflict.nonOp.abort': 'Hủy gộp',
  // ── Git xung đột — banner (Phase 7b) ──
  'git.conflict.banner.progress': '{{resolved}} / {{total}} đã giải quyết',
  'git.conflict.banner.apply': 'Áp dụng gộp',
  'git.conflict.banner.continue': 'Tiếp tục',
  'git.conflict.banner.finalizeError': 'Không thể áp dụng: {{message}}',
  'git.conflict.banner.pollError': 'Kiểm tra trạng thái tạm dừng do lỗi: {{message}}',
  // placeholder — future localization
  'git.conflict.banner.reopenMessage':
    'Bảng điều khiển được mở lại trong khi hợp nhất — vui lòng hủy và pull lại.',

  // ── Git xung đột — danh sách (Phase 7c) ──
  'git.conflict.list.heading': 'Tất cả xung đột',
  'git.conflict.list.progress': '{{resolved}} / {{total}} đã giải quyết',
  'git.conflict.list.allResolved': 'Đã giải quyết tất cả',
  'git.conflict.list.allOurs': 'Tất cả của tôi',
  'git.conflict.list.allTheirs': 'Tất cả của họ',

  // ── Git xung đột — mục (Phase 7c) ──
  'git.conflict.item.nodeConflict': 'Xung đột node',
  'git.conflict.item.fieldConflict': 'Xung đột trường',
  'git.conflict.item.resolved': 'Đã giải quyết',

  // ── Git xung đột — thẻ (Phase 7c) ──
  'git.conflict.card.ours': 'Của tôi',
  'git.conflict.card.theirs': 'Của họ',
  'git.conflict.card.base': 'Cơ sở',
  'git.conflict.card.keepMine': 'Giữ của tôi',
  'git.conflict.card.keepTheirs': 'Giữ của họ',
  'git.conflict.card.oursThumbnailAlt': 'Phiên bản của tôi',
  'git.conflict.card.theirsThumbnailAlt': 'Phiên bản của họ',

  // ── Git xung đột — trình soạn thảo JSON (Phase 7c) ──
  'git.conflict.editor.editManually': 'Chỉnh sửa thủ công',
  'git.conflict.editor.cancel': 'Hủy',
  'git.conflict.editor.apply': 'Áp dụng',
  'git.conflict.editor.invalidJson': 'JSON không hợp lệ',
  'git.conflict.editor.textareaLabel': 'Chỉnh sửa giá trị JSON',

  'git.error.dismiss': 'Bỏ qua',
  'git.error.retry': 'Thử lại',
  'git.error.title': 'Đã xảy ra lỗi',

  // ── Trạng thái trống của Git ──
  'git.empty.heading': 'Chưa có lịch sử phiên bản',
  'git.empty.optional': 'Git là tùy chọn — bỏ qua cũng không sao',
  'git.empty.requireSavedFile': 'Lưu tệp .op trước để bật lịch sử',
  'git.empty.newCard': 'Tạo mới',
  'git.empty.newCardDescription': 'Tạo lịch sử cục bộ',
  'git.empty.openCard': 'Mở',
  'git.empty.openCardDescription': 'Kho hiện có',
  'git.empty.cloneCard': 'Nhân bản',
  'git.empty.cloneCardDescription': 'Từ xa',

  // ── Biểu mẫu tác giả Git ──
  'git.author.heading': 'Tác giả commit',
  'git.author.subheading': 'Lưu commit đầu tiên cần tên và email',
  'git.author.nameLabel': 'Tên',
  'git.author.namePlaceholder': 'Tên của bạn',
  'git.author.emailLabel': 'Email',
  'git.author.emailPlaceholder': 'ban@vidu.com',
  'git.author.submit': 'Lưu',
  'git.author.cancel': 'Hủy',
  'git.author.validationName': 'Tên là bắt buộc',
  'git.author.validationEmail': 'Cần email hợp lệ',

  // ── Bộ chọn Git (Phase 4b) ──
  'git.picker.heading': 'Kho này có {{count}} tệp .op:',
  'git.picker.milestoneCount': '{{count}} cột mốc',
  'git.picker.noHistory': 'Chưa có lịch sử',
  'git.picker.lastCommit': '{{message}} · {{time}}',
  'git.picker.bindButton': 'Theo dõi tệp này',
  'git.picker.bindAndOpenButton': 'Theo dõi và mở',
  'git.picker.back': 'Quay lại',
  'git.picker.backClose': 'Hủy',
  'git.picker.empty.heading': 'Không có tệp .op trong kho này',
  'git.picker.empty.body': 'Bảng Git cần ít nhất một tệp .op để hoạt động.',
  'git.picker.empty.close': 'Đóng bảng',

  // ── Banner tự động liên kết (Phase 4b) ──
  'git.autoBind.confirmHeading': 'Đã tìm thấy {{fileName}} — mở nó?',
  'git.autoBind.openButton': 'Mở',
  'git.autoBind.dismissButton': 'Bỏ qua',

  // ── Thời gian tương đối (Phase 4b) ──
  'git.relativeTime.justNow': 'vừa xong',
  'git.relativeTime.minutesAgo': '{{count}} phút trước',
  'git.relativeTime.hoursAgo': '{{count}} giờ trước',
  'git.relativeTime.daysAgo': '{{count}} ngày trước',

  // ── Git Commit Input (Phase 4c) ──
  'git.commit.placeholder': 'Mô tả thay đổi này…',
  'git.commit.submitButton': 'Lưu mốc',
  'git.commit.saveRequiredTitle': 'Hãy lưu tài liệu trước',
  'git.commit.saveRequiredBody': 'Bạn có thay đổi chưa lưu. Lưu tài liệu để tiếp tục: {{label}}',
  'git.commit.saveRequiredSave': 'Lưu',
  'git.commit.saveRequiredCancel': 'Hủy',

  // ── Git Header (Phase 4c → 6c) ──
  'git.header.autosaveError': 'Lỗi tự động lưu',
  'git.header.autosaveErrorTitle': 'Tự động lưu gần nhất thất bại',
  'git.header.authorMissingWarning': 'Đặt tác giả commit để ghi lại quyền tác giả',
  'git.header.overflowSwitchTracked': 'Chuyển tệp theo dõi…',
  'git.header.overflowClearAuthor': 'Xóa tác giả commit',
  'git.header.overflowCloseRepo': 'Đóng kho',
  'git.header.overflowRemoteSettings': 'Cài đặt remote…',
  'git.header.overflowSshKeys': 'Khóa SSH…',
  'git.header.overflowMoreActions': 'Thêm thao tác',

  // ── Git History List (Phase 4c) ──
  'git.history.empty': 'Chưa có lịch sử',
  'git.history.autosaveGroup_one': '1 tự động lưu',
  'git.history.autosaveGroup_other': '{{count}} tự động lưu',
  'git.history.autosaveLabel': 'auto {{time}}',
  'git.history.milestoneDetailTitle': 'Chi tiết mốc',
  'git.history.restoreButton': 'Khôi phục',
  'git.history.copyHashButton': 'Sao chép hash',
  'git.history.copiedToast': 'Đã sao chép',
  // ── Git diff lịch sử (Phase 7b) ──
  'git.history.diff.loading': 'Đang tải diff…',
  'git.history.diff.initialCommit': 'Commit đầu tiên — không có cha để so sánh',
  'git.history.diff.noChanges': 'Không phát hiện thay đổi',
  'git.history.diff.error': 'Diff không khả dụng: {{message}}',
  'git.history.diff.framesChanged_one': '1 khung đã thay đổi',
  'git.history.diff.framesChanged_other': '{{count}} khung đã thay đổi',
  'git.history.diff.nodesAdded_one': '1 nút được thêm',
  'git.history.diff.nodesAdded_other': '{{count}} nút được thêm',
  'git.history.diff.nodesRemoved_one': '1 nút bị xóa',
  'git.history.diff.nodesRemoved_other': '{{count}} nút bị xóa',
  'git.history.diff.nodesModified_one': '1 nút bị sửa đổi',
  'git.history.diff.nodesModified_other': '{{count}} nút bị sửa đổi',
  'git.history.promoteButton': 'Nâng lên mốc',
  'git.history.promoteSuccessToast': 'Đã nâng lên mốc',
  'git.history.loadMore': 'Tải thêm',
  'git.autosave.messagePrefix': 'auto',
  'git.autosave.messageDiffSuffix': '',

  // ── Git Bộ chọn nhánh (Phase 5) ──
  'git.branch.listHeading': 'Nhánh',
  'git.branch.createAction': 'Nhánh mới',
  'git.branch.createPlaceholder': 'feature/login-redesign',
  'git.branch.createSubmit': 'Tạo nhánh',
  'git.branch.createEmpty': 'Nhập tên nhánh',
  'git.branch.createExists': 'Nhánh {{name}} đã tồn tại',
  'git.branch.mergeAction': 'Gộp nhánh…',
  'git.branch.mergeHeading': 'Gộp vào {{name}}',
  'git.branch.deletePrompt': 'Xóa nhánh {{name}}?',
  'git.branch.deleteLabel': 'Xóa nhánh {{name}}',
  'git.branch.deleteWarning': 'Nhánh {{name}} có commit chưa được gộp',
  'git.branch.deleteConfirm': 'Xóa',
  'git.branch.deleteForce': 'Bắt buộc xóa',
  'git.branch.cancel': 'Hủy',
  'git.branch.conflictDisabled': 'Hoàn tất gộp trước khi chuyển nhánh',
  'git.branch.noCommits': 'Chưa có commit',

  // ── Git Clone Wizard (Phase 6a) ──
  'git.wizard.clone.heading': 'Sao chép kho lưu trữ từ xa',
  'git.wizard.clone.subheading': 'Chọn URL từ xa và thư mục đích.',
  'git.wizard.clone.urlLabel': 'URL từ xa',
  'git.wizard.clone.urlPlaceholder': 'https://github.com/owner/repo.git',
  'git.wizard.clone.destLabel': 'Thư mục đích',
  'git.wizard.clone.destPlaceholder': '/đường/dẫn/clone',
  'git.wizard.clone.destPickButton': 'Duyệt…',
  'git.wizard.clone.usernameLabel': 'Tên người dùng (tùy chọn)',
  'git.wizard.clone.tokenLabel': 'Mã thông báo truy cập (tùy chọn)',
  'git.wizard.clone.tokenPlaceholder': 'ghp_… để trống cho repo công khai',
  'git.wizard.clone.anonymousHint': 'Để trống để sao chép ẩn danh (chỉ repo công khai).',
  'git.wizard.clone.sshHint': 'URL này yêu cầu xác thực bằng khóa SSH.',
  'git.wizard.clone.hostDetected': 'Đã phát hiện: {{host}} · {{mode}}',
  'git.wizard.clone.authMode.token-or-anon': 'mã thông báo hoặc ẩn danh',
  'git.wizard.clone.authMode.ssh': 'khóa SSH',
  'git.wizard.clone.cancel': 'Hủy',
  'git.wizard.clone.submit': 'Sao chép',
  'git.wizard.clone.validationUrl': 'Cần URL từ xa',
  'git.wizard.clone.validationDest': 'Cần thư mục đích',
  'git.wizard.clone.validationTokenUsername': 'Cần tên người dùng khi cung cấp mã thông báo',
  'git.wizard.clone.error.clone-network': 'Lỗi mạng khi sao chép. Kiểm tra kết nối và thử lại.',
  'git.wizard.clone.error.network': 'Lỗi mạng. Kiểm tra kết nối và thử lại.',
  'git.wizard.clone.error.timeout':
    'Sao chép hết thời gian. Thử lại hoặc dùng kho lưu trữ nhỏ hơn.',
  'git.wizard.clone.error.auth-required': 'Kho lưu trữ này cần xác thực.',
  'git.wizard.clone.error.auth-failed':
    'Xác thực thất bại. Kiểm tra tên người dùng và mã thông báo.',
  'git.wizard.clone.error.auth-token-invalid':
    'Mã thông báo truy cập bị từ chối. Tạo mã mới và thử lại.',
  'git.wizard.clone.error.clone-failed':
    'Sao chép thất bại. Hãy xác minh URL trỏ đến một kho lưu trữ thực sự.',
  'git.wizard.clone.error.clone-target-exists': 'Thư mục đích đã tồn tại hoặc không trống.',

  // ── Git Pull / Push (Phase 6b) ──
  'git.pull.label': 'Pull',
  'git.pull.tooltip': 'Pull từ origin',
  'git.pull.noRemote': 'Chưa cấu hình remote — thêm trong cài đặt Git',
  'git.pull.retry': 'Thử lại pull',
  'git.push.label': 'Push',
  'git.push.tooltip_one': 'Push 1 commit lên origin',
  'git.push.tooltip_other': 'Push {{count}} commit lên origin',
  'git.push.noRemote': 'Chưa cấu hình remote — thêm trong cài đặt Git',
  'git.push.upToDate': 'Không có gì để push — bạn đã cập nhật',
  'git.push.retry': 'Thử lại push',
  'git.push.rejectedBody': 'Remote có các commit bạn chưa có. Hãy pull trước rồi push lại.',
  'git.push.rejectedDismiss': 'Đóng',
  'git.push.rejectedPull': 'Pull ngay',
  'git.remote.dismissError': 'Đóng',

  // ── Git Cài đặt remote (Phase 6c) ──
  'git.remote.settingsLabel': 'Cài đặt remote',
  'git.remote.settingsHeading': 'Remote',
  'git.remote.back': 'Quay lại',
  'git.remote.cancel': 'Hủy',
  'git.remote.emptyNoOrigin': 'Chưa cấu hình remote nào. Thêm một cái:',
  'git.remote.urlLabel': 'URL origin',
  'git.remote.urlPlaceholder': 'https://github.com/owner/repo.git',
  'git.remote.saveButton': 'Lưu',
  'git.remote.clearButton': 'Xóa',
  'git.remote.clearConfirmHeading': 'Xóa origin?',
  'git.remote.clearConfirmBody': 'Thao tác này sẽ xóa remote origin khỏi kho lưu trữ này.',
  'git.remote.clearConfirmAction': 'Xác nhận',
  'git.remote.aheadBehind': 'Trước {{ahead}} · Sau {{behind}}',
  'git.remote.fetchButton': 'Fetch',
  'git.remote.sshIsoUnsupported':
    'Engine tích hợp không hỗ trợ truyền tải SSH. Cài đặt git hệ thống hoặc chuyển sang URL remote HTTPS.',
  'git.remote.storedAuthLabel': 'Thông tin xác thực đã lưu',
  'git.remote.storedAuth.token': 'Token',
  'git.remote.storedAuth.ssh': 'Khóa SSH',
  'git.remote.storedAuth.none': 'Không có',
  'git.remote.storedAuth.loading': 'Đang tải…',
  'git.remote.storedAuth.noHost': 'Không phát hiện máy chủ',
  'git.remote.clearAuthButton': 'Xóa thông tin xác thực đã lưu',

  // ── Git Khóa SSH (Phase 6c) ──
  'git.ssh.label': 'Khóa SSH',
  'git.ssh.heading': 'Khóa SSH',
  'git.ssh.back': 'Quay lại',
  'git.ssh.cancel': 'Hủy',
  'git.ssh.isoUnsupported':
    'Remote hiện tại dùng SSH, nhưng engine tích hợp không thể thực hiện truyền tải SSH. Cài đặt git hệ thống hoặc đổi URL remote sang HTTPS.',
  'git.ssh.emptyList': 'Chưa có khóa SSH nào.',
  'git.ssh.generateAction': 'Tạo mới',
  'git.ssh.importAction': 'Nhập khóa có sẵn',
  'git.ssh.copyPublicKey': 'Sao chép khóa công khai',
  'git.ssh.copiedHint': 'Đã sao chép',
  'git.ssh.copyUnsupported': 'Không có clipboard — vui lòng sao chép khóa này theo cách thủ công.',
  'git.ssh.deleteKey': 'Xóa {{name}}',
  'git.ssh.deletePrompt': 'Xóa khóa SSH {{name}}?',
  'git.ssh.deleteConfirm': 'Xóa',
  'git.ssh.currentHostBadge': 'máy chủ hiện tại',
  'git.ssh.hostLabel': 'Máy chủ',
  'git.ssh.hostPlaceholder': 'github.com',
  'git.ssh.commentLabel': 'Ghi chú',
  'git.ssh.commentPlaceholder': 'laptop@home',
  'git.ssh.generateSubmit': 'Tạo',
  'git.ssh.importPathLabel': 'Đường dẫn khóa riêng',
  'git.ssh.importPathPlaceholder': '/path/to/id_ed25519',
  'git.ssh.importBrowse': 'Duyệt…',
  'git.ssh.importSubmit': 'Nhập',
  'git.ssh.validationHost': 'Máy chủ là bắt buộc',
  'git.ssh.validationComment': 'Ghi chú là bắt buộc',
  'git.ssh.validationImportPath': 'Chọn tệp khóa riêng để nhập',
  'git.ssh.providerLink': 'Mở cài đặt khóa SSH {{host}}',
  'git.ssh.genericGuidance':
    'Sao chép khóa công khai và thêm vào cài đặt khóa SSH của nhà cung cấp Git của bạn.',

  // ── Git Biểu mẫu xác thực (Phase 6b) ──
  'git.auth.formLabel': 'Thông tin xác thực Git',
  'git.auth.heading': 'Xác thực với {{host}}',
  'git.auth.headingUnknown': 'Xác thực với remote này',
  'git.auth.modeToggleLabel': 'Loại thông tin xác thực',
  'git.auth.modeToken': 'Token',
  'git.auth.modeSsh': 'SSH',
  'git.auth.usernameLabel': 'Tên người dùng (tùy chọn)',
  'git.auth.tokenLabel': 'Access token',
  'git.auth.tokenPlaceholder': 'ghp_… hoặc PAT',
  'git.auth.sshKeyLabel': 'Khóa SSH',
  'git.auth.sshNoKeys': 'Không có khóa SSH khả dụng. Nhập hoặc tạo mới trong cài đặt Git trước.',
  'git.auth.rememberLabel': 'Ghi nhớ thông tin xác thực cho máy chủ này',
  'git.auth.rememberHint': 'Ghi nhớ thông tin xác thực cho máy chủ này',
  'git.auth.cancel': 'Hủy',
  'git.auth.validationToken': 'Cần access token',
  'git.auth.validationSshKey': 'Chọn một khóa SSH',
  'git.auth.error.auth-required': 'Remote này cần xác thực.',
  'git.auth.error.auth-failed': 'Xác thực thất bại. Kiểm tra thông tin và thử lại.',
  'git.auth.error.auth-token-invalid': 'Access token bị từ chối. Tạo mới và thử lại.',
  // ── Right Panel ──
  'rightPanel.design': 'Thiết kế',
  'rightPanel.code': 'Mã',
  'rightPanel.noSelection': 'Chọn một phần tử',

  // ── Pages ──
  'pages.title': 'Trang',
  'pages.addPage': 'Thêm trang',
  'pages.moveUp': 'Di chuyển lên',
  'pages.moveDown': 'Di chuyển xuống',

  // ── Status Bar ──
  'statusbar.zoomOut': 'Thu nhỏ',
  'statusbar.zoomIn': 'Phóng to',
  'statusbar.resetZoom': 'Đặt lại thu phóng',
  'statusbar.focusContent': 'Vừa toàn bộ nội dung',
  'statusbar.focusSelection': 'Tập trung vào vùng chọn',

  // ── Updater ──
  'updater.softwareUpdate': 'Cập nhật phần mềm',
  'updater.dismiss': 'Bỏ qua',
  'updater.current': 'Hiện tại',
  'updater.latest': 'Mới nhất',
  'updater.unknown': 'Không rõ',
  'updater.checking': 'Đang kiểm tra...',
  'updater.downloadProgress': 'Tiến trình tải xuống',
  'updater.checkAgain': 'Kiểm tra lại',
  'updater.restartInstall': 'Khởi động lại & Cài đặt',
  'updater.installing': 'Đang cài đặt...',
  'updater.releaseDate': 'Ngày phát hành: {{date}}',
  'updater.restartHint':
    'Khởi động lại để áp dụng bản cập nhật. Quá trình khởi động lại thường mất 10-15 giây.',
  'updater.unknownError': 'Lỗi cập nhật không xác định.',
  'updater.title.checking': 'Đang kiểm tra bản cập nhật',
  'updater.title.available': 'Đã tìm thấy bản cập nhật',
  'updater.title.downloading': 'Đang tải bản cập nhật',
  'updater.title.downloaded': 'Sẵn sàng cài đặt',
  'updater.title.error': 'Cập nhật thất bại',
  'updater.subtitle.checking': 'Đang tìm bản phát hành mới nhất...',
  'updater.subtitle.available': 'Phiên bản {{version}} đã sẵn sàng.',
  'updater.subtitle.availableGeneric': 'Đã có phiên bản mới.',
  'updater.subtitle.downloading': 'Phiên bản {{version}} đang được tải xuống trong nền.',
  'updater.subtitle.downloadingGeneric': 'Đang tải gói cập nhật trong nền.',
  'updater.subtitle.downloaded': 'Phiên bản {{version}} đã được tải xuống.',
  'updater.subtitle.downloadedGeneric': 'Bản cập nhật đã được tải xuống.',
  'updater.subtitle.error': 'Không thể kiểm tra hoặc tải bản cập nhật.',

  // ── Layers ──
  'layers.title': 'Lớp',
  'layers.empty': 'Chưa có lớp nào. Sử dụng thanh công cụ để vẽ hình.',

  // ── Layer Context Menu ──
  'layerMenu.groupSelection': 'Nhóm các đối tượng đã chọn',
  'layerMenu.createComponent': 'Tạo thành phần',
  'layerMenu.detachComponent': 'Tách thành phần',
  'layerMenu.detachInstance': 'Tách bản thể',
  'layerMenu.booleanUnion': 'Hợp nhất',
  'layerMenu.booleanSubtract': 'Trừ',
  'layerMenu.booleanIntersect': 'Giao nhau',
  'layerMenu.toggleLock': 'Bật/Tắt khoá',
  'layerMenu.toggleVisibility': 'Bật/Tắt hiển thị',

  // ── Property Panel ──
  'property.createComponent': 'Tạo thành phần',
  'property.detachComponent': 'Tách thành phần',
  'property.goToComponent': 'Đi đến thành phần',
  'property.detachInstance': 'Tách bản thể',

  // ── Fill ──
  'fill.title': 'Tô màu',
  'fill.solid': 'Đặc',
  'fill.linear': 'Tuyến tính',
  'fill.radial': 'Toả tròn',
  'fill.image': 'Hình ảnh',
  'fill.stops': 'Điểm dừng',
  'fill.angle': 'Góc',

  // ── Image ──
  'image.title': 'Hình ảnh',
  'image.fit': 'Chế độ vừa',
  'image.fill': 'Lấp đầy',
  'image.fitMode': 'Vừa khít',
  'image.crop': 'Cắt',
  'image.tile': 'Lát gạch',
  'image.clickToUpload': 'Nhấp để tải lên',
  'image.changeImage': 'Đổi hình ảnh',
  'image.adjustments': 'Điều chỉnh',
  'image.exposure': 'Phơi sáng',
  'image.contrast': 'Tương phản',
  'image.saturation': 'Độ bão hòa',
  'image.temperature': 'Nhiệt độ màu',
  'image.tint': 'Sắc thái',
  'image.highlights': 'Vùng sáng',
  'image.shadows': 'Vùng tối',
  'image.reset': 'Đặt lại',

  // ── Stroke ──
  'stroke.title': 'Viền',

  // ── Appearance ──
  'appearance.layer': 'Lớp',
  'appearance.opacity': 'Độ mờ',

  // ── Layout ──
  'layout.flexLayout': 'Bố cục Flex',
  'layout.freedom': 'Tự do (không bố cục)',
  'layout.vertical': 'Bố cục dọc',
  'layout.horizontal': 'Bố cục ngang',
  'layout.alignment': 'Căn chỉnh',
  'layout.gap': 'Khoảng cách',
  'layout.spaceBetween': 'Cách đều hai đầu',
  'layout.spaceAround': 'Cách đều xung quanh',
  'layout.dimensions': 'Kích thước',
  'layout.fillWidth': 'Lấp đầy chiều rộng',
  'layout.fillHeight': 'Lấp đầy chiều cao',
  'layout.hugWidth': 'Ôm chiều rộng',
  'layout.hugHeight': 'Ôm chiều cao',
  'layout.clipContent': 'Cắt nội dung',

  // ── Padding ──
  'padding.title': 'Lề trong',
  'padding.paddingMode': 'Chế độ lề trong',
  'padding.paddingValues': 'Giá trị lề trong',
  'padding.oneValue': 'Một giá trị cho tất cả các cạnh',
  'padding.horizontalVertical': 'Ngang/Dọc',
  'padding.topRightBottomLeft': 'Trên/Phải/Dưới/Trái',

  // ── Typography ──
  'text.typography': 'Kiểu chữ',
  'text.lineHeight': 'Chiều cao dòng',
  'text.letterSpacing': 'Khoảng cách chữ',
  'text.horizontal': 'Ngang',
  'text.vertical': 'Dọc',
  'text.alignLeft': 'Căn trái',
  'text.alignCenter': 'Căn giữa',
  'text.alignRight': 'Căn phải',
  'text.justify': 'Căn đều',
  'text.top': 'Trên',
  'text.middle': 'Giữa',
  'text.bottom': 'Dưới',
  'text.weight.thin': 'Mảnh',
  'text.weight.light': 'Nhẹ',
  'text.weight.regular': 'Thường',
  'text.weight.medium': 'Vừa',
  'text.weight.semibold': 'Hơi đậm',
  'text.weight.bold': 'Đậm',
  'text.weight.black': 'Rất đậm',
  'text.font.search': 'Tìm phông chữ\u2026',
  'text.font.bundled': 'Đi kèm',
  'text.font.system': 'Hệ thống',
  'text.font.loading': 'Đang tải phông chữ\u2026',
  'text.font.noResults': 'Không tìm thấy phông chữ',

  // ── Text Layout ──
  'textLayout.title': 'Bố cục',
  'textLayout.dimensions': 'Kích thước',
  'textLayout.resizing': 'Thay đổi kích thước',
  'textLayout.autoWidth': 'Tự động R',
  'textLayout.autoWidthDesc': 'Tự động chiều rộng \u2014 văn bản mở rộng theo chiều ngang',
  'textLayout.autoHeight': 'Tự động C',
  'textLayout.autoHeightDesc':
    'Tự động chiều cao \u2014 chiều rộng cố định, chiều cao tự điều chỉnh',
  'textLayout.fixed': 'Cố định',
  'textLayout.fixedDesc': 'Kích thước cố định \u2014 cả chiều rộng và chiều cao đều cố định',
  'textLayout.fillWidth': 'Lấp đầy chiều rộng',
  'textLayout.fillHeight': 'Lấp đầy chiều cao',

  // ── Effects ──
  'effects.title': 'Hiệu ứng',
  'effects.dropShadow': 'Đổ bóng',
  'effects.blur': 'Làm mờ',
  'effects.spread': 'Lan toả',
  'effects.color': 'Màu',

  // ── Export ──
  'export.title': 'Xuất',
  'export.format': 'Định dạng',
  'export.scale': 'Tỉ lệ',
  'export.selectedOnly': 'Chỉ xuất phần đã chọn',
  'export.exportFormat': 'Xuất {{format}}',
  'export.exportLayer': 'Xuất lớp',
  'export.pdfMultiPage': 'PDF sẽ bao gồm tất cả {{count}} trang.',

  // ── Polygon ──
  'polygon.sides': 'Cạnh',

  // ── Ellipse ──
  'ellipse.start': 'Bắt đầu',
  'ellipse.sweep': 'Quét',
  'ellipse.innerRadius': 'Bán kính trong',

  // ── Corner Radius ──
  'cornerRadius.title': 'Bán kính góc',

  // ── Size / Position ──
  'size.position': 'Vị trí',

  // ── Icon ──
  'icon.title': 'Biểu tượng',
  'icon.searchIcons': 'Tìm biểu tượng...',
  'icon.noIconsFound': 'Không tìm thấy biểu tượng',
  'icon.typeToSearch': 'Nhập để tìm biểu tượng Iconify',
  'icon.iconsCount': '{{count}} biểu tượng',

  // ── Variables Panel ──
  'variables.addTheme': 'Thêm giao diện',
  'variables.addVariant': 'Thêm biến thể',
  'variables.addVariable': 'Thêm biến',
  'variables.searchVariables': 'Tìm biến...',
  'variables.noMatch': 'Không có biến nào khớp với tìm kiếm',
  'variables.noDefined': 'Chưa có biến nào được định nghĩa',
  'variables.closeShortcut': 'Đóng (\u2318\u21e7V)',
  'variables.presets': 'Mẫu cài sẵn',
  'variables.savePreset': 'Lưu hiện tại làm mẫu…',
  'variables.loadPreset': 'Tải mẫu cài sẵn',
  'variables.importPreset': 'Nhập từ tệp…',
  'variables.exportPreset': 'Xuất ra tệp…',
  'variables.presetName': 'Tên mẫu',
  'variables.noPresets': 'Chưa có mẫu nào được lưu',

  // ── Design System (design.md) ──
  'designMd.title': 'Hệ thống thiết kế',
  'designMd.import': 'Nhập design.md',
  'designMd.export': 'Xuất design.md',
  'designMd.autoGenerate': 'Tự động tạo từ thiết kế',
  'designMd.empty': 'Chưa tải hệ thống thiết kế nào',
  'designMd.importCta': 'Nhập design.md',
  'designMd.autoGenerateCta': 'Tự động tạo',
  'designMd.visualTheme': 'Chủ đề trực quan',
  'designMd.colors': 'Màu sắc',
  'designMd.typography': 'Kiểu chữ',
  'designMd.font': 'Phông chữ',
  'designMd.headings': 'Tiêu đề',
  'designMd.body': 'Nội dung',
  'designMd.componentStyles': 'Kiểu thành phần',
  'designMd.layoutPrinciples': 'Nguyên tắc bố cục',
  'designMd.generationNotes': 'Ghi chú tạo mã',
  'designMd.syncAllToVariables': 'Đồng bộ tất cả với biến',
  'designMd.addAsVariable': '+Var',
  'designMd.copyHex': 'Sao chép hex',
  'designMd.remove': 'Xóa hệ thống thiết kế',
  'toolbar.designSystem': 'Hệ thống thiết kế',

  // ── AI Chat ──
  'ai.newChat': 'Cuộc trò chuyện mới',
  'ai.collapse': 'Thu gọn',
  'ai.tryExample': 'Thử một ví dụ để thiết kế...',
  'ai.tipSelectElements':
    'Mẹo: Chọn các phần tử trên canvas trước khi trò chuyện để cung cấp ngữ cảnh.',
  'ai.generating': 'Đang tạo...',
  'ai.designWithAgent': 'Thiết kế với Agent...',
  'ai.attachImage': 'Đính kèm hình ảnh',
  'ai.stopGenerating': 'Dừng tạo',
  'ai.sendMessage': 'Gửi tin nhắn',
  'ai.loadingModels': 'Đang tải mô hình...',
  'ai.noModelsConnected': 'Chưa kết nối mô hình nào',
  'ai.searchModels': 'Tìm kiếm mô hình...',
  'ai.noModelsFound': 'Không tìm thấy mô hình',
  'ai.quickAction.loginScreen': 'Thiết kế màn hình đăng nhập di động',
  'ai.quickAction.loginScreenPrompt':
    'Thiết kế màn hình đăng nhập di động hiện đại với ô nhập email, ô nhập mật khẩu, nút đăng nhập và các tuỳ chọn đăng nhập bằng mạng xã hội',
  'ai.quickAction.foodApp': 'Trang chủ ứng dụng ẩm thực',
  'ai.quickAction.foodAppPrompt': 'Generate a well-designed food mobile app homepage',
  'ai.quickAction.bottomNav': 'Thiết kế thanh điều hướng dưới cùng',
  'ai.quickAction.bottomNavPrompt':
    'Thiết kế thanh điều hướng dưới cùng cho ứng dụng di động với 5 tab: Trang chủ, Tìm kiếm, Thêm, Tin nhắn, Hồ sơ',
  'ai.quickAction.colorPalette': 'Gợi ý bảng màu cho ứng dụng',
  'ai.quickAction.colorPalettePrompt': 'Gợi ý bảng màu hiện đại cho ứng dụng chăm sóc thú cưng',
  'ai.startDesigning': 'Start designing with AI',
  'ai.maximize': 'Maximize',
  'ai.restore': 'Restore',
  'ai.quickAction.loginScreenDesc': 'Mobile login with social auth',
  'ai.quickAction.foodAppDesc': 'App homepage design',
  'ai.quickAction.bottomNavDesc': '5-tab navigation bar',
  'ai.quickAction.colorPaletteDesc': 'Color palette recommendation',

  // ── File Menu ──
  'fileMenu.newFile': 'New file',
  'fileMenu.openFile': 'Open file...',
  'fileMenu.save': 'Save',
  'fileMenu.saveAs': 'Save as...',
  'fileMenu.exportImage': 'Xuất hình ảnh...',
  'fileMenu.recentFiles': 'Recent files',
  'fileMenu.clearHistory': 'Clear history',
  'fileMenu.noRecentFiles': 'No recent files',
  'fileMenu.saved': 'Saved',
  'fileMenu.justNow': 'just now',
  'fileMenu.minutesAgo': '{{count}}m ago',
  'fileMenu.hoursAgo': '{{count}}h ago',
  'fileMenu.yesterday': 'yesterday',
  'fileMenu.daysAgo': '{{count}}d ago',

  // ── Unsaved Changes ──
  'unsaved.title': 'Unsaved changes',
  'unsaved.message': 'Save changes to "{{name}}"?',
  'unsaved.dontSave': "Don't Save",

  // ── Code Panel ──
  'code.reactTailwind': 'React + Tailwind',
  'code.htmlCss': 'HTML + CSS',
  'code.cssVariables': 'CSS Variables',
  'code.copyClipboard': 'Sao chép vào bộ nhớ tạm',
  'code.copied': 'Đã sao chép!',
  'code.download': 'Tải xuống tệp mã',
  'code.closeCodePanel': 'Đóng bảng mã',
  'code.genCssVars': 'Đang tạo CSS variables cho toàn bộ tài liệu',
  'code.genSelected': 'Đang tạo mã cho {{count}} phần tử đã chọn',
  'code.genDocument': 'Đang tạo mã cho toàn bộ tài liệu',
  'code.aiEnhance': 'Cải thiện bằng AI',
  'code.cancelEnhance': 'Hủy cải thiện',
  'code.resetEnhance': 'Khôi phục gốc',
  'code.enhancing': 'AI đang cải thiện mã...',
  'code.enhanced': 'Đã cải thiện bởi AI',

  // ── Save Dialog ──
  'save.saveAs': 'Lưu thành',
  'save.fileName': 'Tên tệp',

  // ── Agent Settings ──
  'agents.title': 'Thiết lập Agent & MCP',
  'agents.agentsOnCanvas': 'Agent trên Canvas',
  'agents.mcpIntegrations': 'Tích hợp MCP trong Terminal',
  'agents.transport': 'Giao thức',
  'agents.port': 'Cổng',
  'agents.mcpRestart': 'Các tích hợp MCP sẽ có hiệu lực sau khi khởi động lại terminal.',
  'agents.mcpReinstallHint':
    'Sau khi nâng cấp OpenPencil, vui lòng cài đặt lại tích hợp MCP để đảm bảo tương thích.',
  'agents.modelCount': '{{count}} mô hình',
  'agents.connectionFailed': 'Kết nối thất bại',
  'agents.serverError': 'Lỗi máy chủ {{status}}',
  'agents.failedTo': 'Không thể {{action}}',
  'agents.failedToMcp': 'Không thể {{action}} máy chủ MCP',
  'agents.failedTransport': 'Không thể cập nhật giao thức',
  'agents.failedMcpTransport': 'Không thể cập nhật giao thức MCP',
  'agents.claudeCode': 'Claude Code',
  'agents.claudeModels': 'Các mô hình Claude',
  'agents.codexCli': 'Codex CLI',
  'agents.openaiModels': 'Các mô hình OpenAI',
  'agents.opencode': 'OpenCode',
  'agents.opencodeDesc': '75+ nhà cung cấp LLM',
  'agents.copilot': 'GitHub Copilot',
  'agents.copilotDesc': 'Các mô hình GitHub Copilot',
  'agents.geminiCli': 'Gemini CLI',
  'agents.geminiDesc': 'Các mô hình Google Gemini',
  'agents.mcpServer': 'Máy chủ MCP',
  'agents.mcpServerStart': 'Khởi động',
  'agents.mcpServerStop': 'Dừng',
  'agents.mcpServerRunning': 'Đang chạy',
  'agents.mcpServerStopped': 'Đã dừng',
  'agents.mcpLanAccess': 'Truy cập LAN',
  'agents.mcpClientConfig': 'Cấu hình client',
  'agents.stdio': 'stdio',
  'agents.http': 'http',
  'agents.stdioHttp': 'stdio + http',
  'agents.autoUpdate': 'Tự động kiểm tra cập nhật',
  'agents.notInstalled': 'Chưa cài đặt',
  'agents.install': 'Cài đặt',
  'agents.installing': 'Đang cài đặt...',
  'agents.installFailed': 'Cài đặt thất bại',
  'agents.viewDocs': 'Tài liệu',
  'settings.title': 'Cài đặt',
  'settings.agents': 'Agents',
  'settings.mcp': 'MCP',
  'settings.images': 'Images',
  'settings.system': 'Hệ thống',
  'settings.autoUpdateDesc': 'Tự động kiểm tra phiên bản mới khi khởi động',
  'settings.systemDesktopOnly': 'Cài đặt hệ thống khả dụng trong ứng dụng máy tính.',
  'settings.envHint': 'Bạn có thể đặt thêm biến môi trường trong {{path}}.',

  // ── Builtin Providers ──
  'builtin.title': 'Nhà cung cấp tích hợp',
  'builtin.description': 'Cấu hình API Key trực tiếp — không cần công cụ CLI.',
  'builtin.addProvider': 'Thêm nhà cung cấp',
  'builtin.empty': 'Chưa có nhà cung cấp tích hợp nào được cấu hình.',
  'builtin.displayName': 'Tên hiển thị',
  'builtin.displayNamePlaceholder': 'vd. Anthropic Key của tôi',
  'builtin.provider': 'Nhà cung cấp',
  'builtin.region': 'Khu vực',
  'builtin.regionChina': 'Trung Quốc',
  'builtin.regionGlobal': 'Toàn cầu',
  'builtin.apiKey': 'API Key',
  'builtin.model': 'Mô hình',
  'builtin.searchModels': 'Tìm kiếm mô hình có sẵn',
  'builtin.filterModels': 'Lọc mô hình...',
  'builtin.noModels': 'Không tìm thấy mô hình',
  'builtin.baseUrl': 'Base URL',
  'builtin.baseUrlRequired': 'Base URL (bắt buộc)',
  'builtin.apiFormat': 'Định dạng API',
  'builtin.openaiCompat': 'OpenAI Compatible',
  'builtin.ready': 'Sẵn sàng',
  'builtin.add': 'Thêm',
  'builtin.searchError': 'Cần có Base URL để tìm kiếm mô hình',
  'builtin.custom': 'Tùy chỉnh',
  'builtin.apiKeyBadge': 'API Key',
  'builtin.viaApiKey': 'qua API Key của {{name}}',
  'builtin.errorProviderNotFound':
    'Không tìm thấy nhà cung cấp tích hợp. Vui lòng kiểm tra cài đặt của bạn.',
  'builtin.errorApiKeyEmpty': 'API Key đang trống. Vui lòng thêm API Key trong cài đặt.',
  'builtin.parallelAgents': 'Tác nhân phụ song song: {{count}}x (nhấn để chuyển đổi)',
  'builtin.baseUrlPlaceholder': 'https://api.example.com/v1',
  'builtin.teamDescription':
    'Chọn mô hình để tạo thiết kế. Khi được đặt, các tác vụ thiết kế sẽ tự động được giao cho agent chuyên dụng sử dụng mô hình này.',
  'builtin.teamDesignModel': 'Mô hình thiết kế',
  'builtin.teamSelectModel': 'Không (agent đơn)',

  // ── ACP Agents ──
  'acp.title': 'ACP Agent',
  'acp.description': 'Kết nối các Agent tương thích ACP bên ngoài.',
  'acp.addAgent': 'Thêm Agent',
  'acp.empty': 'Chưa có ACP Agent nào được cấu hình.',
  'acp.displayName': 'Tên hiển thị',
  'acp.displayNamePlaceholder': 'vd. Agent thiết kế của tôi',
  'acp.connectionType': 'Loại kết nối',
  'acp.local': 'Cục bộ',
  'acp.remote': 'Từ xa',
  'acp.command': 'Lệnh',
  'acp.commandPlaceholder': '/usr/bin/myagent',
  'acp.args': 'Đối số',
  'acp.argsPlaceholder': '--stdio',
  'acp.env': 'Biến môi trường',
  'acp.envPlaceholder': 'KEY=VALUE (mỗi dòng một cặp)',
  'acp.url': 'URL',
  'acp.urlPlaceholder': 'ws://localhost:8100',
  'acp.connected': 'Đã kết nối',
  'acp.notConnected': 'Chưa kết nối',
  'acp.connect': 'Kết nối',
  'acp.disconnect': 'Ngắt kết nối',
  'acp.localDesktopOnly': 'Agent cục bộ chỉ khả dụng trong ứng dụng desktop.',

  // ── Figma Import ──
  'figma.title': 'Nhập từ Figma',
  'figma.dropFile': 'Kéo thả tệp .fig vào đây',
  'figma.orBrowse': 'hoặc nhấn để duyệt',
  'figma.exportTip': 'Xuất từ Figma: File \u2192 Save local copy (.fig)',
  'figma.selectFigFile': 'Vui lòng chọn tệp .fig',
  'figma.noPages': 'Không tìm thấy trang nào trong tệp .fig',
  'figma.parseFailed': 'Không thể phân tích tệp .fig',
  'figma.convertFailed': 'Không thể chuyển đổi tệp Figma',
  'figma.parsing': 'Đang phân tích tệp .fig...',
  'figma.converting': 'Đang chuyển đổi các nút...',
  'figma.selectPage': 'Tệp này có {{count}} trang. Chọn trang để nhập:',
  'figma.layers': '{{count}} lớp',
  'figma.importAll': 'Nhập tất cả các trang',
  'figma.importComplete': 'Nhập hoàn tất!',
  'figma.moreWarnings': '...và {{count}} cảnh báo khác',
  'figma.tryAgain': 'Thử lại',
  'figma.layoutMode': 'Chế độ bố cục:',
  'figma.preserveLayout': 'Giữ nguyên bố cục Figma',
  'figma.autoLayout': 'Bố cục tự động OpenPencil',
  'figma.comingSoon': 'Sắp ra mắt',

  // ── Landing Page ──
  'landing.open': 'Open',
  'landing.pencil': 'Pencil',
  'landing.tagline': 'Công cụ thiết kế vector mã nguồn mở. Thiết kế dưới dạng mã.',
  'landing.newDesign': 'Thiết kế mới',
  'landing.shortcutHint': 'Nhấn {{key1}} + {{key2}} để tạo thiết kế mới',

  // ── 404 ──
  'notFound.message': 'Không tìm thấy trang',

  // ── Component Browser ──
  'componentBrowser.title': 'Trình duyệt UIKit',
  'componentBrowser.exportKit': 'Xuất bộ kit',
  'componentBrowser.importKit': 'Nhập bộ kit',
  'componentBrowser.kit': 'Bộ kit:',
  'componentBrowser.all': 'Tất cả',
  'componentBrowser.imported': '(đã nhập)',
  'componentBrowser.components': 'thành phần',
  'componentBrowser.searchComponents': 'Tìm thành phần...',
  'componentBrowser.deleteKit': 'Xoá {{name}}',
  'componentBrowser.category.all': 'Tất cả',
  'componentBrowser.category.buttons': 'Nút',
  'componentBrowser.category.inputs': 'Ô nhập',
  'componentBrowser.category.cards': 'Thẻ',
  'componentBrowser.category.nav': 'Điều hướng',
  'componentBrowser.category.layout': 'Bố cục',
  'componentBrowser.category.feedback': 'Phản hồi',
  'componentBrowser.category.data': 'Dữ liệu',
  'componentBrowser.category.other': 'Khác',

  // ── Variable Picker ──
  'variablePicker.boundTo': 'Gắn với --{{name}}',
  'variablePicker.bindToVariable': 'Gắn với biến',
  'variablePicker.unbind': 'Huỷ gắn biến',
  'variablePicker.noVariables': 'Chưa có biến {{type}} nào được định nghĩa',
} as const;

export default vi;
