export const viMessages = { setup: { welcomeTitle: "Chào mừng đến với %{title}", welcomeSubtitle: "Để bắt đầu, bạn cần kết nối với cơ sở dữ liệu Supabase.", encryptedTitle: "Bảo mật", encryptedDesc: "Dữ liệu được bảo vệ bằng AES-256", turboTitle: "Tốc độ", turboDesc: "Tối ưu hóa cho tốc độ và mở rộng", getStarted: "Bắt đầu ngay", connectionMode: "Chế độ kết nối", selectVector: "Chọn phương thức khởi tạo", quickIgnition: "Khởi động nhanh", autoProvision: "Tự động thiết lập qua token", manualSync: "Đồng bộ thủ công", existingCredentials: "Sử dụng thông tin có sẵn", abortAccess: "Hủy truy cập", injectCoordinates: "Nhập thông số cơ sở dữ liệu", platformUrl: "URL Nền tảng", urlHelp: "Tìm thấy trong Project Settings > API > Project URL", anonMatrixKey: "Anon / Matrix Key", keyHelp: "Tìm thấy trong Project Settings > API > anon (public) key", back: "Quay lại", engage: "Kết nối", managedTokenTitle: "Mã truy cập", managedTokenSubtitle: "Thông số API Supabase", personalAccessToken: "Mã truy cập cá nhân", generateAt: "Tạo tại", scanOrgs: "Quét tổ chức", projectConfigTitle: "Cấu hình dự án", engineParameters: "Thông số hệ thống", projectName: "Tên dự án", hostingSector: "Khu vực lưu trữ", vesselOrg: "Tổ chức", initializeSystem: "Khởi tạo hệ thống", provisioning: "Đang thiết lập", provisioningFailed: "Thiết lập thất bại", provisioningFailedDetails: "Thiết lập thất bại. Kiểm tra nhật ký phía trên để biết chi tiết.", assemblingInfrastructure: "Đang lắp ráp hạ tầng...", checkLogs: "Kiểm tra nhật ký để biết chi tiết", tryAgain: "Thử lại", useManualConnect: "Sử dụng kết nối thủ công thay thế", installationComplete: "Cài đặt hoàn tất", installingDatabase: "Đang cài đặt cơ sở dữ liệu", applyingSchemaDna: "Đang áp dụng cấu trúc dữ liệu...", systemReady: "Hệ thống đã sẵn sàng!", tokenRequired: "Yêu cầu mã truy cập", readyToInstall: "Sẵn sàng cài đặt", managementToken: "Mã quản lý", installDatabaseSchema: "Cài đặt cấu trúc cơ sở dữ liệu", retryInstallation: "Thử lại cài đặt", projectIdRequired: "Cần có ID dự án để thực hiện cài đặt.", tokenDescription: "Cần có mã truy cập Supabase để cài đặt cấu trúc cơ sở dữ liệu và đồng bộ người dùng hiện tại.", connectingProvisioning: "Đang kết nối với công cụ thiết lập Supabase...", projectReady: "✨ Dự án đã sẵn sàng! Đang khởi tạo cơ sở dữ liệu...", startingMigration: "Đang bắt đầu cài đặt cơ sở dữ liệu...", setupCompleteLog: "🎉 Cài đặt hoàn tất!", checkingDatabase: "Đang kiểm tra trạng thái cơ sở dữ liệu...", dbNotInitialized: "Cơ sở dữ liệu chưa được khởi tạo. Cần cài đặt cấu trúc dữ liệu.", dbVersionBehind: "Phiên bản cơ sở dữ liệu (%{dbVersion}) cũ hơn phiên bản ứng dụng (%{appVersion}). Khuyến nghị cập nhật.", dbLegacySchema: "Cơ sở dữ liệu sử dụng cấu trúc cũ nhưng đã được khởi tạo và đang hoạt động.", skippingMigration: "✅ Bỏ qua cài đặt. Cơ sở dữ liệu đã sẵn sàng!", reloadingApp: "Đang tải lại ứng dụng với thông tin mới...", dbReady: "✅ Cơ sở dữ liệu đã được thiết lập và sẵn sàng!", setupComplete: "Cài đặt hoàn tất!", redirecting: "Đang chuyển hướng đến CRM của bạn...", liveFeed: "Trực tiếp", awaitingSignals: "Đang chờ tín hiệu...", regions: { "us-east-1": "Mỹ (Bắc Virginia)", "us-west-1": "Mỹ (Bắc California)", "eu-central-1": "Châu Âu (Frankfurt)", "ap-southeast-1": "Châu Á - Thái Bình Dương (Singapore)", }, }, crm: { root: { database_checking: "Đang kiểm tra kết nối cơ sở dữ liệu...", }, changelog: { title: "Có gì mới", }, setup_wizard: { welcome: { title: "Chào mừng bạn đến với %{title}", subtitle: "Cấu hình cơ sở dữ liệu", description: "Để bắt đầu, bạn cần kết nối với cơ sở dữ liệu Supabase.", no_project: "Chưa có dự án Supabase?", create_free: "Tạo miễn phí tại", need_title: "Bạn cần chuẩn bị:", need_url: "URL dự án Supabase hoặc ID dự án", need_key: "Mã API (Anon hoặc Publishable key)", find_hint: "Tôi có thể tìm thấy chúng ở đâu?", continue: "Tiếp tục", }, credentials: { title: "Kết nối với Supabase", description: "Nhập thông tin dự án Supabase của bạn", url_label: "URL hoặc ID dự án", url_placeholder: "xxxxx hoặc https://xxxxx.supabase.co", url_valid: "URL Supabase hợp lệ", url_project_id: "ID dự án hợp lệ (sẽ mở rộng thành URL đầy đủ)", url_invalid_format: "Định dạng URL không hợp lệ", url_must_be_supabase: "URL phải là tên miền Supabase", url_hint: "Nhập URL đầy đủ hoặc ID dự án", url_expansion: "Sẽ mở rộng thành: %{url}", url_default_hint: "Nhập URL đầy đủ hoặc chỉ ID dự án (từ Cài đặt dự án → API)", key_label: "Mã API", key_placeholder: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", key_valid_publishable: "Định dạng khóa publishable hợp lệ", key_valid_anon: "Định dạng khóa anon hợp lệ", key_incomplete_publishable: "Khóa publishable có vẻ chưa đầy đủ", key_incomplete_anon: "Khóa anon có vẻ chưa đầy đủ", key_invalid: "Phải là mã API Supabase hợp lệ (anon hoặc publishable)", key_default_hint: "Khóa Anon hoặc Publishable (từ Cài đặt dự án → API)", back: "Quay lại", connect: "Kết nối", error_failed: "Kết nối thất bại", }, validating: { title: "Đang xác thực kết nối", description: "Đang kiểm tra thông tin Supabase của bạn...", wait: "Vui lòng chờ...", }, success: { title: "Kết nối thành công!", description: "Cơ sở dữ liệu Supabase của bạn đã được kết nối", reloading: "Đang tải lại ứng dụng...", }, }, nav: { dashboard: "Bảng điều khiển", contacts: "Liên hệ", companies: "Công ty", deals: "Giao dịch", invoices: "Hóa đơn", tasks: "Công việc", ai: "AI", users: "Người dùng", settings: "Thông tin của tôi", database: "Cơ sở dữ liệu", integrations: "Tích hợp", back: "Quay lại", }, view: { table: "Bảng", kanban: "Kanban", }, action: { new_task: "Tạo công việc", new_deal: "Tạo giao dịch", }, filter: { active: "Đang hoạt động", active_filters: "Bộ lọc đang áp dụng", contact: "Liên hệ", company: "Công ty", deal: "Giao dịch", loading: "Đang tải...", my_tasks: "Công việc của tôi", assigned_to: "Giao cho", archived: "Đã lưu trữ", priority: "Ưu tiên", remove: "Xóa bộ lọc %{filter}", search: "Tìm kiếm", status: "Trạng thái", }, dashboard: { invoice_revenue: "Doanh thu hóa đơn", deal_pipeline: "Cơ hội (Pipeline)", upcoming_tasks: "Công việc sắp tới", task_filters: { overdue: "Quá hạn", today: "Hôm nay", tomorrow: "Ngày mai", this_week: "Tuần này", later: "Để sau", }, load_more: "Tải thêm", tasks_empty: "Tạm thời không có việc.", upcoming_deal_revenue: "Doanh thu giao dịch sắp tới", revenue: "Doanh thu", outstanding_invoices: "Hóa đơn chưa thanh toán", deals_chart: { won: "Thành công", lost: "Thất bại", }, hot_contacts: "Liên hệ nóng", create_contact: "Tạo liên hệ", hot_contacts_empty: { line_1: "Chưa có liên hệ nóng.", line_2: "Tạo liên hệ để bắt đầu.", }, latest_activity: "Hoạt động mới nhất", latest_notes: "Ghi chú mới nhất", notes: { on: "trên", added: "đã thêm", deal: "Giao dịch", contact: "Liên hệ", }, pipeline: { title: "Pipeline giao dịch", }, stepper: { title: "Bắt đầu", progress: "Bước %{step}/%{total}", install: "Cài đặt ứng dụng", add_contact: "Thêm liên hệ đầu tiên", new_contact: "Liên hệ mới", add_note: "Thêm ghi chú", add_note_hint: "Thêm ghi chú cho liên hệ đầu tiên.", add_note_button: "Thêm ghi chú", }, welcome: { title: "Chào mừng", body_1: "là CRM đầy đủ tính năng có thể chạy cục bộ.", body_2: "Bao gồm liên hệ, công ty, giao dịch và công việc ngay từ đầu.", powered_by: "Được hỗ trợ bởi", fork_of: ", fork từ", by_marmelab: "bởi Marmelab.", }, }, task: { column: { expand: "Mở rộng cột %{column}", collapse: "Thu gọn cột %{column}", }, field: { task: "Công việc", type: "Loại", related_to: "Liên quan đến", description: "Mô tả", due_date: "Ngày đến hạn", completed: "Hoàn thành", priority: "Ưu tiên", status: "Trạng thái", assigned_to: "Người phụ trách", created_by: "Tạo bởi", actions: "Thao tác", }, action: { create_task: "Tạo công việc", add_task: "Thêm công việc", edit_task: "Chỉnh sửa công việc", edit: "Chỉnh sửa", mark_complete: "Đánh dấu hoàn thành", snooze_tomorrow: "Dời đến ngày mai", postpone_day: "Hoãn 1 ngày", show_details: "Xem chi tiết", postpone_tomorrow: "Hoãn đến ngày mai", postpone_next_week: "Hoãn đến tuần sau", menu: "Hành động công việc", }, notification: { marked_complete: "Đã hoàn thành công việc", snoozed_tomorrow: "Công việc được dời đến ngày mai", postponed_day: "Công việc được hoãn 1 ngày", created: "Đã tạo công việc", updated: "Đã cập nhật công việc", deleted: "Đã xóa công việc", deleted_success: "Đã xóa công việc thành công", move_failed: "Không thể di chuyển công việc. Vui lòng thử lại.", }, note: { marked_complete: "Công việc được đánh dấu hoàn thành qua thao tác nhanh", marked_complete_quick: "Đánh dấu hoàn thành qua thao tác nhanh", snoozed_to_date: "Ngày đến hạn được dời đến %{date}", postponed_to_date: "Ngày đến hạn được hoãn đến %{date}", quick_edit: "Công việc được cập nhật qua chỉnh sửa nhanh", }, section: { info: "Thông tin", related: "Liên quan", assignment: "Phân công", activity_timeline: "Dòng thời gian hoạt động", activity_description: "Theo dõi thay đổi trạng thái và cập nhật của công việc", notes: "Ghi chú", notes_description: "Thêm ghi chú và cập nhật cho công việc này", }, related: { none: "Không có liên kết", prefix: "Về:", }, entity_type: { link_to: "Liên kết với %{type}", none: "Không", contact: "Liên hệ", company: "Công ty", deal: "Giao dịch", }, due: { label: "Hạn", relative: "Hạn %{time}", no_date: "Không có hạn", overdue_one: "Trễ 1 ngày", overdue_many: "Trễ %{count} ngày", today: "Hạn hôm nay", tomorrow: "Hạn ngày mai", in_days_one: "Hạn sau 1 ngày", in_days_many: "Hạn sau %{count} ngày", }, activity: { loading: "Đang tải hoạt động...", empty: "Chưa có hoạt động.", created: "đã tạo công việc này", updated: "đã cập nhật công việc này", updated_field: "đã thay đổi %{field}", assigned: "đã giao công việc này", completed: "đã hoàn thành công việc này", reopened: "đã mở lại công việc này", duplicated: "đã nhân bản công việc này", archived: "đã lưu trữ công việc này", truncated: "Hiển thị %{count} trong %{total} hoạt động. Hoạt động cũ hơn không được hiển thị.", }, dialog: { edit: { title: "Chỉnh sửa công việc", description: "Cập nhật chi tiết công việc, phân công và liên kết", }, create: { title: "Tạo công việc mới", title_for: "Tạo công việc mới cho %{name}", this_record: "bản ghi này", description: "Thêm công việc mới với mô tả, ngày đến hạn và thông tin phân công", }, }, status: { todo: "Cần làm", in_progress: "Đang thực hiện", blocked: "Bị chặn", done: "Hoàn thành", cancelled: "Đã hủy", other: "Khác", }, priority: { low: "Thấp", medium: "Trung bình", high: "Cao", urgent: "Khẩn cấp", }, type: { none: "Không", email: "Email", demo: "Demo", lunch: "Bữa trưa", meeting: "Họp", follow_up: "Theo dõi", thank_you: "Cảm ơn", ship: "Giao hàng", call: "Cuộc gọi", }, }, note: { placeholder: "Thêm ghi chú", show_options: "Hiện tùy chọn", options_hint: "(đính kèm tệp, hoặc thay đổi chi tiết)", date: "Ngày", added: "Đã thêm ghi chú", action: { add: "Thêm ghi chú này", }, status: { cold: "Lạnh", warm: "Ấm", hot: "Nóng", in_contract: "Đang ký hợp đồng", }, }, activity: { added_note: "đã thêm ghi chú", added_note_about: "đã thêm ghi chú về", added_note_about_deal: "đã thêm ghi chú về giao dịch", at: "tại", edit_note: "Sửa ghi chú", delete_note: "Xóa ghi chú", note_deleted: "Đã xóa ghi chú", cancel: "Hủy", update_note: "Cập nhật ghi chú", added_deal: "đã thêm giao dịch", to_company: "vào công ty", added_company: "đã thêm công ty", added: "đã thêm", pagination: "Hiển thị %{from}-%{to} trong %{total} hoạt động", error_load: "Không thể tải nhật ký hoạt động", }, deal: { field: { name: "Tên giao dịch", description: "Mô tả", amount: "Số tiền", expected_closing_date: "Ngày dự kiến đóng", stage: "Giai đoạn", category: "Danh mục", account_manager: "Người sở hữu", budget: "Ngân sách", }, section: { linked_to: "Liên kết với", misc: "Khác", deal_info: "Thông tin giao dịch", company: "Công ty", contacts: "Liên hệ", assignment: "Phân công", notes: "Ghi chú", notes_description: "Theo dõi các cuộc hội thoại, quyết định và cập nhật cho giao dịch này", }, action: { edit: "Sửa giao dịch", create: "Tạo giao dịch", archive: "Lưu trữ", unarchive: "Hủy lưu trữ", view_archived: "Xem giao dịch đã lưu trữ", }, notification: { archived: "Đã lưu trữ giao dịch", unarchived: "Đã hủy lưu trữ giao dịch", error_archiving: "Lỗi: không thể lưu trữ giao dịch", error_unarchiving: "Lỗi: không thể hủy lưu trữ giao dịch", }, empty: { title: "Không tìm thấy giao dịch", description: "Có vẻ như danh sách giao dịch của bạn đang trống.", no_contacts: "Có vẻ như danh sách liên hệ của bạn đang trống.", add_contact: "Thêm liên hệ đầu tiên", before_creating: "trước khi tạo giao dịch.", }, status: { archived: "ĐÃ LƯU TRỮ", past: "Đã qua", invalid_date: "Ngày không hợp lệ", }, placeholder: { select_company: "Vui lòng chọn công ty trước để xem liên hệ", }, filter: { only_companies_i_manage: "Chỉ các công ty tôi quản lý", }, list: { archived_title: "Giao dịch đã lưu trữ", }, stage: { opportunity: "Cơ hội", proposal_sent: "Đề xuất đã gửi", in_negociation: "Đang đàm phán", won: "Thành công", lost: "Thất bại", delayed: "Trì hoãn", }, category: { other: "Khác", copywriting: "Viết nội dung", print_project: "Dự án in ấn", ui_design: "Thiết kế UI", website_design: "Thiết kế website", }, }, contact: { gender: { male: "Anh/Anh", female: "Chị/Chị", nonbinary: "Họ/Họ", }, field: { first_name: "Tên", last_name: "Họ", title: "Chức danh", company: "Công ty", email: "Email", email_addresses: "Địa chỉ email", phone_number: "Số điện thoại", phone_numbers: "Số điện thoại", linkedin_url: "URL LinkedIn", background: "Thông tin tiểu sử (tiểu sử, cách gặp gỡ, v.v.)", has_newsletter: "Đăng ký bản tin", account_manager: "Người quản lý", first_seen: "Đã thêm vào", last_seen_on: "Hoạt động gần nhất:", followed_by: "Theo dõi bởi:", subscribed_to_newsletter: "Đã đăng ký bản tin", linkedin: "LinkedIn", at: "tại", }, section: { identity: "Danh tính", position: "Vị trí", personal_info: "Thông tin cá nhân", misc: "Khác", activity_timeline: "Dòng thời gian hoạt động", activity_timeline_description: "Trạng thái xử lý thời gian thực của các hoạt động", notes: "Ghi chú", notes_description: "Bản ghi vĩnh viễn về các tương tác và kết quả", background_info: "Thông tin tiểu sử", tags: "Thẻ", tasks: "Công việc", }, action: { edit: "Sửa liên hệ", show: "Xem liên hệ", create: "Thêm liên hệ", export_vcard: "Xuất vCard", merge_with_another: "Hợp nhất with liên hệ khác", import: "Nhập", }, type: { work: "Công việc", home: "Nhà riêng", other: "Khác", }, empty: { title: "Không tìm thấy liên hệ", description: "Có vẻ như danh sách liên hệ của bạn đang trống.", }, filter: { last_activity: "Hoạt động gần nhất", today: "Hôm nay", this_week: "Tuần này", before_this_week: "Trước tuần này", before_this_month: "Trước tháng này", before_last_month: "Trước tháng trước", engagement: "Tương tác", engagement_status: { strong: "Mạnh", active: "Đang hoạt động", cooling: "Đang giảm", cold: "Lạnh", dormant: "Ngủ đông", }, validation: "Xác thực", validation_status: { valid: "Email hợp lệ", risky: "Email rủi ro", invalid: "Email không hợp lệ", }, tags: "Thẻ", tasks: "Công việc", with_pending_tasks: "Có công việc chờ xử lý", account_manager: "Người quản lý", me: "Tôi", search_placeholder: "Tìm tên, công ty...", }, health: { title: "Sức khỏe liên hệ", no_data: "Chưa có dữ liệu sức khỏe.", relationship_strength: "Độ mạnh mối quan hệ", engagement_score: "Điểm tương tác", last_activity: "Hoạt động gần nhất: ", days_ago: "%{days} ngày trước", today: "Hôm nay", yesterday: "Hôm qua", contact_validation: "Xác thực liên hệ", bounced: "(bị trả lại)", validated: "Đã xác thực", status: { valid: "Hợp lệ", risky: "Rủi ro", invalid: "Không hợp lệ", active: "Hoạt động", inactive: "Không hoạt động", not_found: "Không tìm thấy", }, }, merge: { title: "Hợp nhất liên hệ", description: "Hợp nhất liên hệ này với một liên hệ khác.", current_contact: "Liên hệ hiện tại (sẽ bị xóa)", target_contact: "Liên hệ mục tiêu (sẽ được giữ lại)", what_will_be_merged: "Những gì sẽ được hợp nhất:", notes_to_merge: "%{count} ghi chú sẽ được gán lại |||| %{count} ghi chú sẽ được gán lại", tasks_to_merge: "%{count} công việc sẽ được gán lại |||| %{count} công việc sẽ được gán lại", deals_to_merge: "%{count} giao dịch sẽ được cập nhật |||| %{count} giao dịch sẽ được cập nhật", emails_to_merge: "%{count} địa chỉ email sẽ được thêm |||| %{count} địa chỉ email sẽ được thêm", phones_to_merge: "%{count} số điện thoại sẽ được thêm |||| %{count} số điện thoại sẽ được thêm", no_data: "Không có dữ liệu bổ sung để hợp nhất", warning_title: "Cảnh báo: Thao tác hủy diệt", warning_message: "Tất cả dữ liệu sẽ được chuyển sang liên hệ thứ hai. Thao tác này không thể hoàn tác.", merging: "Đang hợp nhất...", merge_contacts: "Hợp nhất liên hệ", select_contact: "Vui lòng chọn một liên hệ để hợp nhất", success: "Hợp nhất liên hệ thành công", error: "Hợp nhất liên hệ thất bại", }, import: { title: "Nhập", description: "Nhập liên hệ từ tệp CSV", running: "Đang nhập dữ liệu, vui lòng không đóng tab này.", status: "Đã nhập %{count} / %{total} liên hệ, với %{errors} lỗi.", remaining_time: "Thời gian còn lại ước tính: %{time}.", stop: "Dừng nhập", error: "Lỗi khi nhập tệp này, vui lòng đảm bảo bạn đã cung cấp tệp CSV hợp lệ.", complete: "Hoàn tất nhập liên hệ. Đã nhập %{count} liên hệ, với %{errors} lỗi", template_hint: "Đây là tệp CSV mẫu bạn có thể dùng làm mẫu", download_sample: "Tải CSV mẫu", csv_file: "Tệp CSV", }, }, company: { sector: { communication_services: "Dịch vụ truyền thông", consumer_discretionary: "Tiêu dùng không thiết yếu", consumer_staples: "Hàng tiêu dùng thiết yếu", energy: "Năng lượng", financials: "Tài chính", health_care: "Y tế", industrials: "Công nghiệp", information_technology: "Công nghệ thông tin", materials: "Vật liệu", real_estate: "Bất động sản", utilities: "Tiện ích công cộng", }, field: { name: "Tên", website: "Trang web", phone_number: "Số điện thoại", linkedin: "LinkedIn", twitter: "Twitter/X", facebook: "Facebook", github: "GitHub", logo_url: "URL Logo", lifecycle_stage: "Giai đoạn vòng đời", company_type: "Loại công ty", qualification_status: "Trạng thái thẩm định", employee_count: "Số lượng nhân viên", revenue_range: "Khoảng doanh thu", founded_year: "Năm thành lập", tax_identifier: "Mã số thuế", address: "Địa chỉ", city: "Thành phố", zipcode: "Mã bưu điện", state: "Tỉnh/Thành", country: "Quốc gia", description: "Mô tả", account_manager: "Người quản lý", first_seen: "Đã thêm vào", followed_by: "Theo dõi bởi", size: "Quy mô", revenue: "Doanh thu", sector: "Lĩnh vực", context_links: "Liên kết ngữ cảnh", }, section: { contact: "Liên hệ", social_profiles: "Hồ sơ mạng xã hội", context: "Ngữ cảnh", address: "Địa chỉ", additional_info: "Thông tin bổ sung", advanced_settings: "Cài đặt nâng cao", external_system_integration: "Tích hợp hệ thống bên ngoài", company_info: "Thông tin công ty", main_address: "Địa chỉ chính", }, action: { edit: "Sửa công ty", show: "Xem công ty", create: "Tạo công ty", merge_with_another: "Hợp nhất với công ty khác", }, empty: { title: "Không tìm thấy công ty", description: "Có vẻ như danh sách công ty của bạn đang trống.", }, placeholder: { external_id: "vd: ID tài khoản Salesforce", company_name: "Tên công ty", create_hint: "Bắt đầu nhập để tạo công ty mới", }, error: { invalid_url: "Phải là URL hợp lệ", }, notification: { error_creating: "Đã xảy ra lỗi khi tạo công ty", }, filter: { me: "Tôi", }, health: { title: "Sức khỏe công ty", internal_engagement: "Tương tác nội bộ", engagement_score: "Điểm tương tác", last_activity: "Hoạt động gần nhất: ", today: "Hôm nay", yesterday: "Hôm qua", days_ago: "%{days} ngày trước", updated: "Đã cập nhật", external_health: "Sức khỏe bên ngoài", last_checked: "Kiểm tra lần cuối", status: { engaged: "Đang tương tác", quiet: "Yên tĩnh", at_risk: "Rủi ro", unresponsive: "Không phản hồi", healthy: "Khỏe mạnh", risky: "Rủi ro", dead: "Ngừng hoạt động", unknown: "Không xác định", }, }, size: { 1: "1 nhân viên", 10: "2-9 nhân viên", 50: "10-49 nhân viên", 250: "50-249 nhân viên", 500: "250 nhân viên trở lên", }, merge: { title: "Hợp nhất công ty", description: "Hợp nhất công ty này với một công ty khác.", current_contact: "Công ty hiện tại (sẽ bị xóa)", target_contact: "Công ty mục tiêu (sẽ được giữ lại)", what_will_be_merged: "Những gì sẽ được hợp nhất:", contacts_to_merge: "%{count} liên hệ sẽ được gán lại |||| %{count} liên hệ sẽ được gán lại", deals_to_merge: "%{count} giao dịch sẽ được gán lại |||| %{count} giao dịch sẽ được gán lại", links_to_merge: "%{count} liên kết ngữ cảnh sẽ được thêm |||| %{count} liên kết ngữ cảnh sẽ được thêm", no_data: "Không có dữ liệu bổ sung để hợp nhất", warning_title: "Cảnh báo: Thao tác hủy diệt", warning_message: "Tất cả dữ liệu sẽ được chuyển sang công ty thứ hai. Thao tác này không thể hoàn tác.", merging: "Đang hợp nhất...", merge_companies: "Hợp nhất công ty", select_company: "Vui lòng chọn một công ty để hợp nhất", success: "Hợp nhất công ty thành công", error: "Hợp nhất công ty thất bại", }, }, tag: { action: { add: "Thêm thẻ", create: "Tạo thẻ mới", }, }, integrations: { title: "Tích hợp", description: "Quản lý mã API, webhook và các kênh tiếp nhận để tích hợp RealTimeX CRM với các hệ thống bên ngoài.", tabs: { ingestion: "Kênh tiếp nhận", file_upload: "Tải tệp lên", api_keys: "Mã API", webhooks: "Webhook (Gửi đi)", }, webhooks: { description: "Webhook thông báo cho các hệ thống bên ngoài khi có sự kiện xảy ra trong CRM của bạn.", action: { create: "Tạo Webhook", create_first: "Tạo webhook đầu tiên của bạn", edit: "Sửa Webhook", delete: "Xóa", update: "Cập nhật", }, empty: "Chưa có webhook nào", loading: "Đang tải...", status: { active: "Đang hoạt động", inactive: "Ngừng hoạt động", more: "+%{count} sự kiện khác", }, fields: { name: "Tên", url: "URL Webhook", events: "Sự kiện đăng ký", created: "Đã tạo: %{date}", last_triggered: "Lần kích hoạt cuối: %{date}", failed_deliveries: "Lượt gửi thất bại: %{count}", }, dialog: { create_title: "Tạo Webhook", create_description: "Tạo một webhook mới để nhận thông báo sự kiện", edit_title: "Sửa Webhook", edit_description: "Cập nhật cấu hình webhook", delete_title: "Xóa Webhook?", delete_description: "Thao tác này sẽ xóa vĩnh viễn webhook này. Sẽ không có sự kiện nào được gửi đến đầu cuối này nữa. Thao tác này không thể hoàn tác.", }, placeholder: { name: "vd: Thông báo Slack", url: "https://example.com/webhook", }, notification: { created: "Đã tạo webhook thành công", updated: "Đã cập nhật webhook thành công", deleted: "Đã xóa webhook thành công", error_creating: "Tạo webhook thất bại", error_updating: "Cập nhật webhook thất bại", error_deleting: "Xóa webhook thất bại", }, categories: { contacts: "Liên hệ", companies: "Công ty", deals: "Giao dịch", tasks: "Công việc", invoices: "Hóa đơn", }, events: { "contact.created": "Đã tạo liên hệ", "contact.updated": "Đã cập nhật liên hệ", "contact.deleted": "Đã xóa liên hệ", "company.created": "Đã tạo công ty", "company.updated": "Đã cập nhật công ty", "company.deleted": "Đã xóa công ty", "deal.created": "Đã tạo giao dịch", "deal.updated": "Đã cập nhật giao dịch", "deal.deleted": "Đã xóa giao dịch", "deal.stage_changed": "Đã thay đổi giai đoạn giao dịch", "deal.won": "Giao dịch thành công", "deal.lost": "Giao dịch thất bại", "task.created": "Đã tạo công việc", "task.updated": "Đã cập nhật công việc", "task.assigned": "Đã giao công việc", "task.completed": "Đã hoàn thành công việc", "task.priority_changed": "Đã thay đổi ưu tiên công việc", "task.archived": "Đã lưu trữ công việc", "task.deleted": "Đã xóa công việc", "invoice.created": "Đã tạo hóa đơn", "invoice.updated": "Đã cập nhật hóa đơn", "invoice.deleted": "Đã xóa hóa đơn", "invoice.status_changed": "Hóa đơn thay đổi trạng thái", "invoice.sent": "Đã gửi hóa đơn", }, }, api_keys: { description: "Mã API cho phép các ứng dụng bên ngoài truy cập dữ liệu CRM của bạn theo lập trình.", action: { create: "Tạo mã API", create_first: "Tạo mã API đầu tiên của bạn", copy: "Sao chép", copied: "Đã sao chép mã API đầy đủ vào bộ nhớ tạm", done: "Xong", }, empty: "Chưa có mã API nào", loading: "Đang tải...", fields: { name: "Tên", created: "Đã tạo: %{date}", last_used: "Dùng lần cuối: %{date}", expires: "Hết hạn: %{date}", key_hint: "Nhấp vào sao chép để lấy mã đầy đủ không bị ẩn", not_available: "Mã API không khả dụng để sao chép", scopes: "Phạm vi", expiration: "Hết hạn (không bắt buộc)", your_api_key: "Mã API của bạn", }, dialog: { create_title: "Tạo mã API", create_description: "Tạo mã API mới để truy cập CRM API", created_title: "Đã tạo mã API", created_description: "Hãy sao chép mã này ngay - nó sẽ không hiển thị lại lần nữa!", delete_title: "Xóa mã API?", delete_description: "Thao tác này sẽ xóa vĩnh viễn mã API này. Bất kỳ ứng dụng nào sử dụng mã này sẽ ngừng hoạt động ngay lập tức. Thao tác này không thể hoàn tác.", warning_copy: "Hãy đảm bảo bạn đã sao chép mã API ngay bây giờ. Bạn sẽ không thể xem lại nó!", }, placeholder: { name: "vd: Mã API Production", }, scopes: { "contacts:read": "Liên hệ: Đọc", "contacts:write": "Liên hệ: Ghi", "companies:read": "Công ty: Đọc", "companies:write": "Công ty: Ghi", "deals:read": "Giao dịch: Đọc", "deals:write": "Giao dịch: Ghi", "tasks:read": "Công việc: Đọc", "tasks:write": "Công việc: Ghi", "invoices:read": "Hóa đơn: Đọc", "invoices:write": "Hóa đơn: Ghi", "activities:write": "Hoạt động: Ghi (Ghi chú)", }, notification: { created: "Đã tạo mã API thành công", deleted: "Đã xóa mã API thành công", error_deleting: "Xóa mã API thất bại", error_copying: "Sao chép mã API thất bại", }, }, file_upload: { title: "Tải tệp lên", description: "Tải tài liệu, hình ảnh, tệp âm thanh hoặc video lên để tạo hoạt động. Các tệp được tự động lưu trữ và liên kết với tài khoản của bạn.", action: { upload: "Tải lên", upload_all: "Tải lên tất cả", clear_completed: "Xóa các mục đã hoàn tất", drop_files: "Thả tệp vào đây...", drag_and_drop: "Kéo và thả tệp vào đây, hoặc nhấp để chọn", supports_all: "Hỗ trợ tất cả các loại tệp (tệp thực thi bị chặn vì lý do bảo mật)", }, fields: { ingestion_channel: "Kênh tiếp nhận", activity_type: "Loại hoạt động", select_channel: "Chọn kênh...", files_count: "Tệp (%{count})", }, types: { note: "Ghi chú", email: "Email", call: "Ghi âm cuộc gọi", meeting: "Ghi âm cuộc họp", other: "Khác", }, how_it_works: { title: "Cách thức hoạt động", step_1: "Các tệp được tải trực tiếp lên bộ lưu trữ an toàn (không làm đầy cơ sở dữ liệu)", step_2: "Mỗi tệp tạo một bản ghi hoạt động để theo dõi và tìm kiếm", step_3: "Các tệp lớn được xử lý tự động (không giới hạn kích thước)", step_4: "Các tệp được liên kết với kênh tiếp nhận đã chọn của bạn", step_5: "Các hoạt động xuất hiện trong Luồng hoạt động ngay lập tức", }, notification: { select_channel: "Vui lòng chọn một kênh tiếp nhận", success: "Đã tải tệp lên: %{name}", error: "Tải lên thất bại: %{name}", error_network: "Lỗi mạng", error_status: "Tải lên thất bại với trạng thái %{status}", error_dangerous: "Tệp thực thi không được phép vì lý do bảo mật", }, }, ingestion: { title: "Kênh tiếp nhận", description: "Cấu hình các kênh đầu vào (Email, Thoại, SMS) để tiếp nhận hoạt động vào CRM của bạn.", action: { create: "Tạo kênh", add: "Thêm kênh tiếp nhận", add_first: "Thêm kênh đầu tiên của bạn", copy_url: "Sao chép URL Webhook", url_copied: "Đã sao chép URL Webhook vào bộ nhớ tạm", }, empty: "Chưa có kênh tiếp nhận nào được cấu hình", loading: "Đang tải...", fields: { webhook_url: "URL Webhook", created: "Đã tạo: %{date}", }, dialog: { create_description: "Cấu hình một nguồn mới cho các hoạt động đến.", name_label: "Tên kênh", provider_label: "Nhà cung cấp", token_label: "Mã xác thực (Xác thực)", token_hint: "Bắt buộc để xác thực các yêu cầu gửi đến.", placeholder_name: "vd: Đường dây hỗ trợ US", placeholder_token: "Mã xác thực Twilio", select_provider: "Chọn nhà cung cấp", delete_title: "Xóa kênh?", delete_description: "Thao tác này sẽ dừng tất cả việc tiếp nhận từ nguồn này. Thao tác này không thể hoàn tác.", }, providers: { twilio: "Twilio (Thoại/SMS)", postmark: "Postmark (Email)", generic: "Chung / Nội bộ", }, notification: { created: "Đã tạo kênh tiếp nhận thành công", deleted: "Đã xóa kênh thành công", error_creating: "Tạo kênh thất bại: %{message}", error_deleting: "Xóa kênh thất bại", }, }, }, image_editor: { action: { change: "Thay đổi", update: "Cập nhật ảnh", delete: "Xóa", }, dialog: { title: "Tải lên và thay đổi kích thước ảnh", dropzone: "Kéo thả tệp vào đây để tải lên, hoặc nhấp để chọn tệp.", }, alt: "Nội dung có thể chỉnh sửa", }, document_viewer: { error: { docx: "Không thể hiển thị nội dung DOCX.", too_large: "Tệp quá lớn (tối đa 50MB). Kích thước: %{size}MB", not_available: "Không có bản xem trước cho loại tệp này.", access: "Không thể truy cập tệp. Điều này có thể do vấn đề mạng, hạn chế CORS hoặc liên kết đã hết hạn.", load: "Không thể tải bản xem trước tài liệu.", }, action: { download: "Tải tệp xuống", open_new_tab: "Mở trong tab mới", }, }, email_viewer: { error: { parse: "Không thể phân tích tệp email", load: "Không thể tải email", }, field: { from: "Từ", to: "Đến", cc: "Cc", date: "Ngày", subject_none: "(Không có tiêu đề)", content_none: "(Không có nội dung)", attachment: "Tệp đính kèm", attachments: "Tệp đính kèm", unknown: "Không xác định", unknown_type: "Loại không xác định", none: "Không có", }, action: { html: "HTML", text: "Văn bản thuần túy", download_attachment: "Tải tệp đính kèm", }, }, activity_feed: { empty: "Chưa có hoạt động nào.", direction: { inbound: "Đến", outbound: "Đi", }, status: { processing: "Đang xử lý", failed: "Thất bại", completed: "Hoàn thành", }, label: { processing_content: "Đang xử lý nội dung...", processing_failed: "Xử lý thất bại.", audio_recording: "Ghi âm cuộc gọi", summary: "Tóm tắt:", }, type: { email: "Email", call: "Cuộc gọi", sms: "SMS", meeting: "Cuộc họp", note: "Ghi chú", }, }, user: { action: { create: "Người dùng mới", edit: "Chỉnh sửa %{name}", resend_invite: "Gửi lại lời mời", send_password_reset: "Đặt lại mật khẩu", send_reset_link: "Gửi liên kết đặt lại", cancel: "Hủy", sending: "Đang gửi...", send_invitation: "Gửi lời mời", }, field: { administrator: "Admin", disabled: "Đã vô hiệu hóa", email_actions: "Thao tác Email", }, section: { create_title: "Tạo người dùng mới", }, empty: { title: "Không tìm thấy người dùng", description: "Có vẻ như danh sách người dùng của bạn đang trống.", }, notification: { invite_sent: "Đã gửi lại email mời thành công", created_invite_sent: "Người dùng đã được tạo. Email mời đã được gửi.", invite_error: "Gửi lại email mời thất bại", reset_sent: "Đã gửi email đặt lại mật khẩu thành công", reset_error: "Gửi email đặt lại mật khẩu thất bại", created: "Đã tạo người dùng. Họ sẽ sớm nhận được email để thiết lập mật khẩu.", create_error: "Đã xảy ra lỗi khi tạo người dùng.", updated: "Cập nhật người dùng thành công", error: "Đã xảy ra lỗi. Vui lòng thử lại.", }, dialog: { resend_invitation: { title: "Gửi lại lời mời", description: "Gửi email mời mới đến %{email}?", fresh_link: "Thao tác này sẽ gửi cho họ một liên kết mời mới để thiết lập tài khoản.", }, reset_password: { title: "Đặt lại mật khẩu", description: "Gửi email đặt lại mật khẩu đến %{email}?", reset_link: "Thao tác này sẽ gửi cho họ một liên kết để đặt lại mật khẩu.", }, }, }, auth: { login_with_code: "Đăng nhập bằng mã", enter_email_for_code: "Nhập email của bạn để nhận mã đăng nhập 6 chữ số", code_sent: "Một mã 6 chữ số đã được gửi đến email của bạn", enter_verification_code: "Nhập mã xác nhận", code_sent_to: "Chúng tôi đã gửi mã 6 chữ số đến %{email}", invalid_code: "Mã không hợp lệ hoặc đã hết hạn. Vui lòng thử lại.", verify_code: "Xác nhận mã", verifying: "Đang xác nhận...", resend_code: "Gửi lại mã", back_to_email: "Quay lại nhập email", back_to_login: "Quay lại đăng nhập", no_access: "Bạn không có quyền truy cập ứng dụng này. Vui lòng liên hệ quản trị viên.", login_successful: "Đăng nhập thành công!", set_new_password: "Đặt mật khẩu mới", choose_password_details: "Chọn một mật khẩu an toàn cho tài khoản của bạn", password_min_length: "Mật khẩu phải có ít nhất 6 ký tự", passwords_do_not_match: "Mật khẩu không khớp", password_updated: "Cập nhật mật khẩu thành công", update_password: "Cập nhật mật khẩu", updating_password: "Đang cập nhật...", failed_to_update_password: "Cập nhật mật khẩu thất bại", forgot_password_code_verified: "Mã đã được xác nhận! Vui lòng đặt mật khẩu mới.", sign_in: "Đăng nhập", login_otp_link: "Đăng nhập bằng mã email (OTP)", send_code: "Gửi mã", }, signup: { title: "Chào mừng bạn đến với %{title}", subtitle: "Tạo tài khoản người dùng đầu tiên để hoàn tất thiết lập.", action: { create: "Tạo tài khoản", creating: "Đang tạo...", }, notification: { success: "Người dùng đầu tiên đã được tạo thành công", error: "Đã xảy ra lỗi. Vui lòng thử lại.", }, }, settings: { notification: { profile_updated: "Thông tin của bạn đã được cập nhật", error: "Đã xảy ra lỗi. Vui lòng thử lại", }, action: { change_password: "Đổi mật khẩu", }, inbound_email: { title: "Email gửi đến", description: "Bạn có thể bắt đầu gửi email đến địa chỉ email gửi đến của máy chủ, ví dụ: bằng cách thêm nó vào trường Cc:. RealTimeX CRM sẽ xử lý email và thêm ghi chú vào các liên hệ tương ứng.", }, database: { title: "Kết nối cơ sở dữ liệu", description: "Quản lý cài đặt kết nối cơ sở dữ liệu Supabase của bạn", connected: "Đã kết nối", not_connected: "Chưa kết nối", no_config: "Chưa có cơ sở dữ liệu Supabase nào được cấu hình", configured_on: "Được cấu hình vào %{date}", env_hint: "Đang sử dụng cấu hình từ biến môi trường. Bạn có thể ghi đè điều này bằng cách thiết lập kết nối mới qua giao diện người dùng.", setup_hint: "Kết nối với cơ sở dữ liệu Supabase để bắt đầu sử dụng RealTimeX CRM. Bạn có thể tạo một dự án miễn phí tại", anon_key: "Mã ẩn danh (Anon Key)", confirm_clear: "Bạn có chắc chắn muốn xóa cấu hình cơ sở dữ liệu? Ứng dụng sẽ cần được cấu hình lại vào lần khởi chạy tiếp theo.", action: { change: "Thay đổi kết nối", clear: "Xóa cấu hình", connect: "Kết nối với Supabase", }, }, }, migration: { banner: { title: "Có bản cập nhật cơ sở dữ liệu", subtitle: "Lược đồ v%{version} sẵn sàng cài đặt", view_details: "Xem chi tiết", later: "Để sau", command_copied: "Đã sao chép lệnh!", dismiss: "Đóng", }, modal: { title: "Cần migration cơ sở dữ liệu", description: "Lược đồ cơ sở dữ liệu cần được cập nhật lên v%{version}. Hãy làm theo các bước dưới đây để hoàn tất migration.", overview: { title: "Điều sẽ xảy ra:", update_schema: "Lược đồ cơ sở dữ liệu sẽ được cập nhật lên v%{version}", enable_features: "Các tính năng và cải tiến mới sẽ được bật", data_safe: "Dữ liệu hiện có của bạn sẽ không bị ảnh hưởng", duration: "Quy trình thường mất dưới 2 phút", }, prerequisites: { title: "Chuẩn bị", intro: "Đảm bảo bạn có:", cli_installed: "Đã cài Supabase CLI (xem hướng dẫn bên dưới)", project_id: "ID dự án Supabase của bạn:", db_password: "Mật khẩu cơ sở dữ liệu (sẽ được yêu cầu)", }, install_cli: { title: "Cài đặt Supabase CLI (nếu chưa cài)", macos: "macOS / Linux:", windows_scoop: "Windows (Scoop):", windows_npm: "Windows (npm):", view_all: "Xem tất cả phương thức cài đặt", }, run_migration: { title: "Chạy lệnh migration", intro: "Mở terminal và chạy:", tool_intro: "Công cụ migration sẽ:", steps: { login: "Yêu cầu bạn đăng nhập Supabase (nếu chưa)", project_id: "Yêu cầu ID dự án", password: "Yêu cầu mật khẩu cơ sở dữ liệu", apply: "Tự động áp dụng tất cả migration còn lại", deploy: "Triển khai các Edge Function đã cập nhật", }, }, refresh: { title: "Làm mới ứng dụng", description: "Sau khi migration hoàn tất, hãy làm mới trang này để dùng các tính năng mới.", }, troubleshooting: { title: "Khắc phục sự cố:", logout_prefix: "Nếu đăng nhập thất bại, chạy", logout_suffix: "rồi thử lại", password: "Đảm bảo mật khẩu cơ sở dữ liệu đúng (trong Supabase Dashboard)", report: "Nếu vẫn còn lỗi, báo tại", report_link: "GitHub Issues", }, auto: { tab_title: "✨ Tự động Migrate (Khuyên dùng)", manual_tab_title: "🛠️ Hướng dẫn thủ công", title: "Migration một lần nhấp", description: "Chúng tôi sẽ tự động chạy các tập lệnh migration cho bạn.", project_id: "ID dự án", access_token: "Mã truy cập Supabase (Access Token)", generate_token: "Tạo mã truy cập", access_token_hint: "Cần thiết nếu bạn chưa đăng nhập vào CLI toàn cầu.", db_password: "Mật khẩu cơ sở dữ liệu (Tùy chọn)", db_password_placeholder: "Chỉ nhập nếu dự án của bạn chưa được liên kết", db_password_hint: "Chỉ bắt buộc nếu đây là lần đầu tiên bạn kết nối với dự án này từ máy tính này.", migrating: "Đang migrate...", start: "Bắt đầu Migration", logs_placeholder: "Nhật ký sẽ xuất hiện ở đây...", init_log: "🚀 Đang khởi tạo quá trình migration...", error_prefix: "❌ Lỗi: ", failure_toast: "Migration thất bại. Xem nhật ký để biết chi tiết.", missing_project_id: "Không thể xác định ID dự án từ cấu hình.", }, close: "Đóng", copy: { unsupported: "Không hỗ trợ sao chép trong môi trường này — hãy sao chép thủ công.", success: "Đã sao chép vào clipboard!", error: "Sao chép thất bại — hãy sao chép thủ công.", copy_label: "Sao chép", copied_label: "Đã sao chép", }, }, }, common: { activity: "Hoạt động", contacts: "1 Liên hệ |||| %{smart_count} Liên hệ", notes: "1 Ghi chú |||| %{smart_count} Ghi chú", deals: "1 Giao dịch |||| %{smart_count} Giao dịch", tasks: "1 Công việc |||| %{smart_count} Công việc", invoices: "1 Hóa đơn |||| %{smart_count} Hóa đơn", last_activity: "hoạt động gần nhất %{distance} trước", add_contact: "Thêm liên hệ", add_invoice: "Thêm hóa đơn", }, }, resources: { contacts: { name: "Liên hệ |||| Liên hệ", fields: { first_name: "Tên", last_name: "Họ", title: "Chức danh", company_id: "Công ty", email: "Email", phone_number: "Số điện thoại", linkedin_url: "LinkedIn", sales_id: "Người quản lý", nb_tasks: "Công việc", last_seen: "Hoạt động gần nhất", }, }, companies: { name: "Công ty |||| Công ty", fields: { name: "Tên", website: "Website", phone_number: "Số điện thoại", sector: "Lĩnh vực", size: "Quy mô", sales_id: "Người quản lý", nb_contacts: "Liên hệ", nb_deals: "Giao dịch", created_at: "Ngày thêm", context_links: "Liên kết ngữ cảnh", }, }, deals: { name: "Giao dịch |||| Giao dịch", fields: { name: "Tên", amount: "Số tiền", category: "Danh mục", stage: "Giai đoạn", company_id: "Công ty", sales_id: "Người phụ trách", }, }, tasks: { name: "Công việc |||| Công việc", fields: { title: "Tiêu đề", description: "Mô tả", type: "Loại", due_date: "Ngày đến hạn", status: "Trạng thái", priority: "Ưu tiên", sales_id: "Giao cho", contact_id: "Liên hệ", company_id: "Công ty", deal_id: "Giao dịch", }, }, sales: { name: "Người dùng |||| Người dùng", fields: { first_name: "Tên", last_name: "Họ", email: "Email", administrator: "Admin", disabled: "Đã vô hiệu hóa", }, }, invoices: { name: "Hóa đơn |||| Hóa đơn", fields: { invoice_number: "Số hóa đơn", reference: "Tham chiếu", company_id: "Công ty", contact_id: "Liên hệ", deal_id: "Cơ hội", status: "Trạng thái", issue_date: "Ngày phát hành", due_date: "Hạn thanh toán", paid_at: "Ngày thanh toán", currency: "Tiền tệ", subtotal: "Thành tiền", discount: "Chiết khấu", tax_total: "Thuế", total: "Tổng cộng", amount_paid: "Đã thanh toán", balance_due: "Còn nợ", notes: "Ghi chú", payment_terms: "Điều khoản thanh toán", terms_and_conditions: "Điều khoản & Điều kiện", sent_at: "Gửi lúc", viewed_at: "Đã xem", created_at: "Tạo lúc", }, status: { draft: "Nháp", sent: "Đã gửi", paid: "Đã thanh toán", overdue: "Quá hạn", cancelled: "Đã hủy", }, section: { details: "Chi tiết", billing: "Thanh toán cho", items: "Hạng mục", activity: "Hoạt động", activity_description: "Theo dõi cập nhật và trao đổi", actions: "Hành động", assigned_to: "Tạo bởi", }, item: { name: "Mục", description_placeholder: "Thêm chi tiết...", quantity: "SL", unit_price: "Đơn giá", tax: "Thuế", total: "Tổng", tax_rate: "Thuế suất", }, item_type: { service: "Dịch vụ", product: "Sản phẩm", hour: "Giờ", day: "Ngày", deposit: "Đặt cọc", }, action: { new_invoice: "Tạo Hóa đơn", add_item: "Thêm mục", edit: "Sửa hóa đơn", mark_as_sent: "Đánh dấu là đã gửi", mark_as_paid: "Đánh dấu là đã thanh toán", mark_as_cancelled: "Đánh dấu là đã hủy", print: "In", suggest_number: "Gợi ý số", export_csv: "Xuất ra CSV", send_email: "Gửi qua Email", download_pdf: "Tải xuống PDF", }, notification: { status_updated: "Trạng thái hóa đơn đã được cập nhật thành %{status}", email_sent: "Hóa đơn #%{number} đã được gửi đến khách hàng", }, helper: { invoice_number: "Mã định danh hóa đơn duy nhất", reference: "Số tham chiếu bên ngoài tùy chọn", payment_terms: "ví dụ: Net 30, Khi nhận hàng", select_company_for_contacts: "Chọn công ty để xem liên hệ", select_company_for_deals: "Chọn công ty để xem cơ hội", }, email: { subject: "Chủ đề", body: "Nội dung tin nhắn", description: "Xem lại và tùy chỉnh nội dung email trước khi gửi cho khách hàng.", body_intro: "Vui lòng xem hóa đơn #%{number} được đính kèm.", message_label: "Tin nhắn (Tùy chọn)", message_placeholder: "Thêm tin nhắn cá nhân...", message_help: "Email hóa đơn chuyên nghiệp sẽ được tạo tự động với đầy đủ chi tiết.", attachment_title: "Tệp đính kèm PDF", attachment_help: "Hóa đơn %{number}.pdf sẽ được đính kèm tự động", cc: "CC", cc_placeholder: "cc@example.com, khac@example.com", }, empty_items: "Chưa có hạng mục nào", days_overdue: "ngày quá hạn", }, }, ra: { action: { send: "Gửi", sending: "Đang gửi...", clear_array_input: "Xóa danh sách", create_item: "Tạo %{item}", remove_all_filters: "Xóa tất cả bộ lọc", reset: "Đặt lại", search_columns: "Tìm kiếm cột", select_all: "Chọn tất cả", select_all_button: "Chọn tất cả", select_row: "Chọn hàng này", update: "Cập nhật", move_up: "Di chuyển lên", move_down: "Di chuyển xuống", open: "Mở", toggle_theme: "Chuyển chế độ sáng/tối", select_columns: "Cột", update_application: "Tải lại ứng dụng", }, page: { access_denied: "Truy cập bị từ chối", authentication_error: "Lỗi xác thực", }, message: { access_denied: "Bạn không có quyền truy cập trang này", authentication_error: "Máy chủ xác thực trả về lỗi và không thể kiểm tra thông tin đăng nhập của bạn.", auth_error: "Đã xảy ra lỗi khi xác thực token.", bulk_update_content: "Bạn có chắc muốn cập nhật %{name} %{recordRepresentation}? |||| Bạn có chắc muốn cập nhật %{smart_count} mục này?", bulk_update_title: "Cập nhật %{name} %{recordRepresentation} |||| Cập nhật %{smart_count} %{name}", clear_array_input: "Bạn có chắc muốn xóa toàn bộ danh sách?", select_all_limit_reached: "Có quá nhiều phần tử để chọn tất cả. Chỉ %{max} phần tử đầu tiên được chọn.", placeholder_data_warning: "Sự cố mạng: không thể làm mới dữ liệu.", }, navigation: { no_results: "Không tìm thấy kết quả.", no_filtered_results: "Không tìm thấy %{name} với bộ lọc hiện tại.", partial_page_range_info: "%{offsetBegin}-%{offsetEnd} trong hơn %{offsetEnd}", current_page: "Trang %{page}", page: "Đi tới trang %{page}", first: "Đi tới trang đầu", last: "Đi tới trang cuối", previous: "Đi tới trang trước", skip_nav: "Bỏ qua tới nội dung", }, sort: { sort_by: "Sắp xếp theo %{field_lower_first} %{order}", ASC: "tăng dần", DESC: "giảm dần", }, auth: { user_menu: "Hồ sơ", username: "Tên đăng nhập", password: "Mật khẩu", confirm_password: "Xác nhận mật khẩu", sign_in: "Đăng nhập", sign_in_error: "Đăng nhập thất bại, vui lòng thử lại", logout: "Đăng xuất", email: "Email", }, notification: { not_authorized: "Bạn không được phép truy cập tài nguyên này.", application_update_available: "Có phiên bản mới.", offline: "Không có kết nối. Không thể tải dữ liệu.", }, validation: { unique: "Phải là duy nhất", }, saved_queries: { label: "Truy vấn đã lưu", query_name: "Tên truy vấn", new_label: "Lưu truy vấn hiện tại...", new_dialog_title: "Lưu truy vấn hiện tại dưới dạng", remove_label: "Xóa truy vấn đã lưu", remove_label_with_name: 'Xóa truy vấn "%{name}"', remove_dialog_title: "Xóa truy vấn đã lưu?", remove_message: "Bạn có chắc muốn xóa mục này khỏi danh sách truy vấn đã lưu?", help: "Lọc danh sách và lưu truy vấn này để dùng sau", }, configurable: { customize: "Tùy chỉnh", configureMode: "Cấu hình trang này", inspector: { title: "Trình kiểm tra", content: "Di chuột lên các thành phần giao diện để cấu hình", reset: "Đặt lại cấu hình", hideAll: "Ẩn tất cả", showAll: "Hiện tất cả", }, Datagrid: { title: "Bảng dữ liệu", unlabeled: "Cột chưa có nhãn #%{column}", }, SimpleForm: { title: "Biểu mẫu", unlabeled: "Trường chưa có nhãn #%{input}", }, SimpleList: { title: "Danh sách", primaryText: "Văn bản chính", secondaryText: "Văn bản phụ", tertiaryText: "Văn bản thứ ba", }, }, }, "ra-supabase": { auth: { password_reset: "Vui lòng kiểm tra email để nhận thông báo đặt lại mật khẩu.", }, reset_password: { forgot_password: "Quên mật khẩu?", forgot_password_details: "Nhập email của bạn để nhận mã 6 chữ số.", }, }, };