feat: add i18n support for Vietnamese and English
This commit is contained in:
133
lang/en/app.php
Normal file
133
lang/en/app.php
Normal file
@@ -0,0 +1,133 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
// Navigation
|
||||
'nav_customer_care' => 'Customer Care',
|
||||
'nav_management' => 'Management',
|
||||
|
||||
// Resource labels
|
||||
'resource_feedbacks' => 'Feedbacks',
|
||||
'resource_products' => 'Products',
|
||||
'resource_customers' => 'Customers',
|
||||
'resource_contracts' => 'Contracts',
|
||||
'resource_channels' => 'Channels',
|
||||
'resource_tags' => 'Tags',
|
||||
'resource_roles' => 'Roles',
|
||||
'resource_users' => 'Users',
|
||||
|
||||
// Status
|
||||
'status_pending' => 'Pending',
|
||||
'status_processing' => 'Processing',
|
||||
'status_resolved' => 'Resolved',
|
||||
'status_closed' => 'Closed',
|
||||
'status_active' => 'Active',
|
||||
'status_inactive' => 'Inactive',
|
||||
'status_sold_out' => 'Sold Out',
|
||||
'status_completed' => 'Completed',
|
||||
'status_cancelled' => 'Cancelled',
|
||||
|
||||
// General labels
|
||||
'name' => 'Name',
|
||||
'email' => 'Email',
|
||||
'password' => 'Password',
|
||||
'phone' => 'Phone',
|
||||
'address' => 'Address',
|
||||
'slug' => 'Slug',
|
||||
'icon' => 'Icon',
|
||||
'description' => 'Description',
|
||||
'status' => 'Status',
|
||||
'customer_product' => 'Customer & Product',
|
||||
'select_customer_product' => 'Select the customer and their associated product',
|
||||
'general_feedback' => 'General feedback (not related to a product)',
|
||||
'product' => 'Product',
|
||||
'contract' => 'Contract',
|
||||
'feedback_details' => 'Feedback Details',
|
||||
'describe_feedback' => 'Describe the customer feedback',
|
||||
'assignment_status' => 'Assignment & Status',
|
||||
'assign_handler' => 'Assign handler and set initial status',
|
||||
'department' => 'Department',
|
||||
'escalated' => 'Escalated',
|
||||
'attachments' => 'Attachments',
|
||||
'upload_files' => 'Upload files related to this feedback',
|
||||
'collection' => 'Collection',
|
||||
'collection_general' => 'General',
|
||||
'collection_proof_of_resolution' => 'Proof of Resolution',
|
||||
'collection_customer_evidence' => 'Customer Evidence',
|
||||
'files' => 'Files',
|
||||
'channel' => 'Channel',
|
||||
'assigned_to' => 'Assigned To',
|
||||
'created' => 'Created',
|
||||
'general' => 'General',
|
||||
'new_status' => 'New Status',
|
||||
'assign_to' => 'Assign To',
|
||||
'target_department' => 'Target Department',
|
||||
'by' => 'By',
|
||||
'details' => 'Details',
|
||||
'unassigned' => 'Unassigned',
|
||||
'role' => 'Role',
|
||||
'role_name' => 'Role Name',
|
||||
'permissions' => 'Permissions',
|
||||
'color' => 'Color',
|
||||
'customer_information' => 'Customer Information',
|
||||
'owned_products' => 'Owned Products',
|
||||
'icon_hint' => 'Heroicon name or emoji',
|
||||
'feedbacks' => 'Feedbacks',
|
||||
'used' => 'Used',
|
||||
'owners' => 'Owners',
|
||||
'tickets' => 'Tickets',
|
||||
'signed' => 'Signed',
|
||||
'interactions' => 'Interactions',
|
||||
'services' => 'Services',
|
||||
'handovers' => 'Handovers',
|
||||
'contracts' => 'Contracts',
|
||||
'collection_date' => 'Collection Date',
|
||||
'remark' => 'Remark',
|
||||
'handover_date' => 'Handover Date',
|
||||
'start_date' => 'Start Date',
|
||||
'end_date' => 'End Date',
|
||||
'printed_at' => 'Print Date',
|
||||
'signed_status' => 'Signed Status',
|
||||
'contract_info' => 'Contract Information',
|
||||
'feedback_history' => 'Feedback History',
|
||||
'tab_all' => 'All',
|
||||
'min' => 'min',
|
||||
'na' => 'N/A',
|
||||
|
||||
// Widget labels
|
||||
'widget_tickets_awaiting_closure' => 'Tickets Awaiting Closure',
|
||||
'widget_tickets_awaiting_desc' => 'Tickets that have been resolved and are pending manager review for closure.',
|
||||
'widget_ticket' => 'Ticket',
|
||||
'widget_customer' => 'Customer',
|
||||
'widget_handler' => 'Handler',
|
||||
'widget_resolved' => 'Resolved',
|
||||
'widget_resolved_tickets' => 'Resolved Tickets',
|
||||
'widget_total_resolved_closed' => 'Total resolved/closed tickets',
|
||||
'widget_avg_processing_time' => 'Avg Processing Time',
|
||||
'widget_avg_time_desc' => 'Avg time from creation to resolution',
|
||||
'widget_no_resolved_tickets' => 'No resolved tickets yet',
|
||||
'widget_pending_tickets' => 'Pending Tickets',
|
||||
'widget_still_in_progress' => 'Still in progress',
|
||||
'widget_escalated' => 'Escalated',
|
||||
'widget_escalated_desc' => 'Tickets marked as escalated',
|
||||
'widget_avg_time_by_handler' => 'Avg Processing Time by Handler',
|
||||
'widget_avg_time_by_handler_desc' => 'Average time from ticket creation to resolution, broken down by handler.',
|
||||
'widget_avg_time_minutes' => 'Avg Time (minutes)',
|
||||
'widget_unknown' => 'Unknown',
|
||||
|
||||
// Blade views
|
||||
'blade_similar_cases' => 'Similar Cases',
|
||||
'blade_matching_tags' => 'Matching tags:',
|
||||
'blade_title' => 'Title',
|
||||
'blade_customer' => 'Customer',
|
||||
'blade_status' => 'Status',
|
||||
'blade_handler' => 'Handler',
|
||||
'blade_date' => 'Date',
|
||||
'blade_no_attachments' => 'No attachments.',
|
||||
'blade_proof_of_resolution' => 'Proof of Resolution',
|
||||
'blade_customer_evidence' => 'Customer Evidence',
|
||||
'blade_open' => 'Open',
|
||||
'blade_links_expire' => 'Click to open. Links expire after 60 minutes.',
|
||||
'blade_file_count' => ':count file(s)',
|
||||
'blade_proof' => 'Proof',
|
||||
'blade_evidence' => 'Evidence',
|
||||
];
|
||||
28
lang/en/enums.php
Normal file
28
lang/en/enums.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'handover' => [
|
||||
'not_ready' => 'Not ready',
|
||||
'ready' => 'Ready',
|
||||
'handed_over' => 'Handed over',
|
||||
'scheduled' => 'Scheduled',
|
||||
],
|
||||
|
||||
'service' => [
|
||||
'management_fee' => 'Management fee',
|
||||
'gratitude' => 'Gratitude',
|
||||
'self_business' => 'Self business',
|
||||
],
|
||||
|
||||
'contract_status' => [
|
||||
'active' => 'Active',
|
||||
'expired' => 'Expired',
|
||||
'liquidated' => 'Liquidated',
|
||||
],
|
||||
|
||||
'contract_type' => [
|
||||
'sale' => 'Sale contract',
|
||||
'lease' => 'Lease contract',
|
||||
'bcc' => 'Business cooperation contract (BCC)',
|
||||
],
|
||||
];
|
||||
54
lang/en/feedback.php
Normal file
54
lang/en/feedback.php
Normal file
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
// ClosingService
|
||||
'already_closed' => 'This ticket has already been closed.',
|
||||
'close_permission_denied' => 'Only department managers can close tickets.',
|
||||
'close_department_only' => 'You can only close tickets in your managed department.',
|
||||
'proof_required' => 'Proof of resolution is required to complete the process.',
|
||||
'already_resolved' => 'This ticket has already been resolved or closed.',
|
||||
|
||||
// TransferService
|
||||
'transfer_reason_required' => 'Please enter a transfer reason.',
|
||||
|
||||
// FileService
|
||||
'file_type_not_allowed' => 'File type :type is not allowed. Allowed: jpg, png, pdf, mp4, mov.',
|
||||
'file_size_exceeds' => 'File size exceeds :max KB.',
|
||||
|
||||
// EditFeedback page
|
||||
'transfer_department' => 'Transfer Department',
|
||||
'target_department' => 'Target Department',
|
||||
'assign_to_optional' => 'Assign To (optional)',
|
||||
'reason' => 'Reason',
|
||||
'transferred_successfully' => 'Transferred successfully',
|
||||
'close_ticket' => 'Close Ticket',
|
||||
'close_confirm' => 'Are you sure you want to close this ticket? This action CANNOT be undone.',
|
||||
'close_submit' => 'Close',
|
||||
'closed_successfully' => 'Ticket closed successfully',
|
||||
|
||||
// InteractionsRelationManager
|
||||
'interaction_history' => 'Interaction History',
|
||||
'interaction_type_note' => 'Note',
|
||||
'interaction_type_status_change' => 'Status Change',
|
||||
'interaction_type_assignment' => 'Assignment / Forward',
|
||||
'view_attachments' => 'View Attachments',
|
||||
'add_interaction' => 'Add Interaction',
|
||||
'assigned_successfully' => 'Feedback assigned successfully',
|
||||
'status_updated' => 'Status updated successfully',
|
||||
|
||||
// Notifications
|
||||
'notif_ticket_closed_subject' => 'Ticket #:id has been closed',
|
||||
'notif_ticket_closed_ticket' => 'Ticket: :title',
|
||||
'notif_ticket_closed_by' => 'Closed by: :name',
|
||||
'notif_view_ticket' => 'View Ticket',
|
||||
'notif_ticket_closed_message' => 'Ticket #:id ":title" has been closed by :actor.',
|
||||
|
||||
'notif_ticket_transferred_subject' => 'Ticket #:id has been transferred to your department',
|
||||
'notif_ticket_transferred_by' => 'Transferred by: :name',
|
||||
'notif_ticket_transferred_reason' => 'Reason: :reason',
|
||||
'notif_ticket_transferred_message' => 'Ticket #:id ":title" has been transferred to your department by :sender.',
|
||||
|
||||
// CreateFeedback
|
||||
'created_via' => 'Feedback created via :channel',
|
||||
'unknown_channel' => 'unknown channel',
|
||||
];
|
||||
133
lang/vi/app.php
Normal file
133
lang/vi/app.php
Normal file
@@ -0,0 +1,133 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
// Navigation
|
||||
'nav_customer_care' => 'Chăm sóc khách hàng',
|
||||
'nav_management' => 'Quản lý',
|
||||
|
||||
// Resource labels
|
||||
'resource_feedbacks' => 'Phản ánh',
|
||||
'resource_products' => 'Sản phẩm',
|
||||
'resource_customers' => 'Khách hàng',
|
||||
'resource_contracts' => 'Hợp đồng',
|
||||
'resource_channels' => 'Kênh phản ánh',
|
||||
'resource_tags' => 'Thẻ',
|
||||
'resource_roles' => 'Vai trò',
|
||||
'resource_users' => 'Người dùng',
|
||||
|
||||
// Status
|
||||
'status_pending' => 'Chờ xử lý',
|
||||
'status_processing' => 'Đang xử lý',
|
||||
'status_resolved' => 'Đã xử lý',
|
||||
'status_closed' => 'Đã đóng',
|
||||
'status_active' => 'Hoạt động',
|
||||
'status_inactive' => 'Không hoạt động',
|
||||
'status_sold_out' => 'Hết hàng',
|
||||
'status_completed' => 'Hoàn thành',
|
||||
'status_cancelled' => 'Đã hủy',
|
||||
|
||||
// General labels
|
||||
'name' => 'Tên',
|
||||
'email' => 'Email',
|
||||
'password' => 'Mật khẩu',
|
||||
'phone' => 'Điện thoại',
|
||||
'address' => 'Địa chỉ',
|
||||
'slug' => 'Slug',
|
||||
'icon' => 'Biểu tượng',
|
||||
'description' => 'Mô tả',
|
||||
'status' => 'Trạng thái',
|
||||
'customer_product' => 'Khách hàng & Sản phẩm',
|
||||
'select_customer_product' => 'Chọn khách hàng và sản phẩm liên quan',
|
||||
'general_feedback' => 'Phản ánh chung (không liên quan đến sản phẩm)',
|
||||
'product' => 'Sản phẩm',
|
||||
'contract' => 'Hợp đồng',
|
||||
'feedback_details' => 'Chi tiết phản ánh',
|
||||
'describe_feedback' => 'Mô tả phản ánh của khách hàng',
|
||||
'assignment_status' => 'Phân công & Trạng thái',
|
||||
'assign_handler' => 'Phân công người xử lý và trạng thái ban đầu',
|
||||
'department' => 'Phòng ban',
|
||||
'escalated' => 'Khẩn cấp',
|
||||
'attachments' => 'Tệp đính kèm',
|
||||
'upload_files' => 'Tải lên tệp liên quan đến phản ánh này',
|
||||
'collection' => 'Loại',
|
||||
'collection_general' => 'Chung',
|
||||
'collection_proof_of_resolution' => 'Bằng chứng giải quyết',
|
||||
'collection_customer_evidence' => 'Bằng chứng khách hàng',
|
||||
'files' => 'Tệp',
|
||||
'channel' => 'Kênh',
|
||||
'assigned_to' => 'Người xử lý',
|
||||
'created' => 'Ngày tạo',
|
||||
'general' => 'Chung',
|
||||
'new_status' => 'Trạng thái mới',
|
||||
'assign_to' => 'Chỉ định cho',
|
||||
'target_department' => 'Phòng ban đích',
|
||||
'by' => 'Người thực hiện',
|
||||
'details' => 'Chi tiết',
|
||||
'unassigned' => 'Chưa phân công',
|
||||
'role' => 'Vai trò',
|
||||
'role_name' => 'Tên vai trò',
|
||||
'permissions' => 'Quyền',
|
||||
'color' => 'Màu sắc',
|
||||
'customer_information' => 'Thông tin khách hàng',
|
||||
'owned_products' => 'Sản phẩm sở hữu',
|
||||
'icon_hint' => 'Tên Heroicon hoặc emoji',
|
||||
'feedbacks' => 'Phản ánh',
|
||||
'used' => 'Đã dùng',
|
||||
'owners' => 'Chủ sở hữu',
|
||||
'tickets' => 'Phiếu',
|
||||
'signed' => 'Đã ký',
|
||||
'interactions' => 'Tương tác',
|
||||
'services' => 'Dịch vụ',
|
||||
'handovers' => 'Bàn giao',
|
||||
'contracts' => 'Hợp đồng',
|
||||
'collection_date' => 'Ngày thu',
|
||||
'remark' => 'Ghi chú',
|
||||
'handover_date' => 'Ngày bàn giao',
|
||||
'start_date' => 'Ngày bắt đầu',
|
||||
'end_date' => 'Ngày kết thúc',
|
||||
'printed_at' => 'Ngày in HĐ',
|
||||
'signed_status' => 'Tình trạng ký',
|
||||
'contract_info' => 'Thông tin hợp đồng',
|
||||
'feedback_history' => 'Lịch sử phản ánh',
|
||||
'tab_all' => 'Tất cả',
|
||||
'min' => 'phút',
|
||||
'na' => 'N/A',
|
||||
|
||||
// Widget labels
|
||||
'widget_tickets_awaiting_closure' => 'Phiếu chờ đóng',
|
||||
'widget_tickets_awaiting_desc' => 'Các phiếu đã xử lý và đang chờ quản lý xem xét để đóng.',
|
||||
'widget_ticket' => 'Phiếu',
|
||||
'widget_customer' => 'Khách hàng',
|
||||
'widget_handler' => 'Người xử lý',
|
||||
'widget_resolved' => 'Đã xử lý',
|
||||
'widget_resolved_tickets' => 'Phiếu đã xử lý',
|
||||
'widget_total_resolved_closed' => 'Tổng phiếu đã xử lý/đã đóng',
|
||||
'widget_avg_processing_time' => 'Thời gian xử lý TB',
|
||||
'widget_avg_time_desc' => 'Thời gian TB từ khi tạo đến khi xử lý',
|
||||
'widget_no_resolved_tickets' => 'Chưa có phiếu đã xử lý',
|
||||
'widget_pending_tickets' => 'Phiếu đang chờ',
|
||||
'widget_still_in_progress' => 'Đang xử lý',
|
||||
'widget_escalated' => 'Khẩn cấp',
|
||||
'widget_escalated_desc' => 'Phiếu được đánh dấu khẩn cấp',
|
||||
'widget_avg_time_by_handler' => 'Thời gian xử lý TB theo người xử lý',
|
||||
'widget_avg_time_by_handler_desc' => 'Thời gian trung bình từ khi tạo phiếu đến khi xử lý, phân theo người xử lý.',
|
||||
'widget_avg_time_minutes' => 'Thời gian TB (phút)',
|
||||
'widget_unknown' => 'Không xác định',
|
||||
|
||||
// Blade views
|
||||
'blade_similar_cases' => 'Trường hợp tương tự',
|
||||
'blade_matching_tags' => 'Thẻ trùng khớp:',
|
||||
'blade_title' => 'Tiêu đề',
|
||||
'blade_customer' => 'Khách hàng',
|
||||
'blade_status' => 'Trạng thái',
|
||||
'blade_handler' => 'Người xử lý',
|
||||
'blade_date' => 'Ngày',
|
||||
'blade_no_attachments' => 'Không có tệp đính kèm.',
|
||||
'blade_proof_of_resolution' => 'Bằng chứng giải quyết',
|
||||
'blade_customer_evidence' => 'Bằng chứng khách hàng',
|
||||
'blade_open' => 'Mở',
|
||||
'blade_links_expire' => 'Nhấn để mở. Liên kết hết hạn sau 60 phút.',
|
||||
'blade_file_count' => ':count tệp',
|
||||
'blade_proof' => 'Bằng chứng',
|
||||
'blade_evidence' => 'Chứng cứ',
|
||||
];
|
||||
28
lang/vi/enums.php
Normal file
28
lang/vi/enums.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'handover' => [
|
||||
'not_ready' => 'Chưa đủ điều kiện',
|
||||
'ready' => 'Đủ điều kiện',
|
||||
'handed_over' => 'Đã bàn giao',
|
||||
'scheduled' => 'Đã lên lịch',
|
||||
],
|
||||
|
||||
'service' => [
|
||||
'management_fee' => 'Phí quản lý',
|
||||
'gratitude' => 'Tri ân',
|
||||
'self_business' => 'Tự doanh',
|
||||
],
|
||||
|
||||
'contract_status' => [
|
||||
'active' => 'Đang hiệu lực',
|
||||
'expired' => 'Hết hạn',
|
||||
'liquidated' => 'Đã thanh lý',
|
||||
],
|
||||
|
||||
'contract_type' => [
|
||||
'sale' => 'HĐ Mua bán',
|
||||
'lease' => 'HĐ Thuê',
|
||||
'bcc' => 'HĐ Hợp tác kinh doanh (BCC)',
|
||||
],
|
||||
];
|
||||
54
lang/vi/feedback.php
Normal file
54
lang/vi/feedback.php
Normal file
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
// ClosingService
|
||||
'already_closed' => 'Phiếu này đã được đóng.',
|
||||
'close_permission_denied' => 'Chỉ lãnh đạo cấp phòng mới có quyền đóng phiếu.',
|
||||
'close_department_only' => 'Bạn chỉ có thể đóng phiếu thuộc phòng ban mình quản lý.',
|
||||
'proof_required' => 'Yêu cầu cung cấp tài liệu bằng chứng để hoàn tất quy trình.',
|
||||
'already_resolved' => 'Phiếu này đã được xử lý hoặc đóng.',
|
||||
|
||||
// TransferService
|
||||
'transfer_reason_required' => 'Vui lòng nhập lý do chuyển tiếp.',
|
||||
|
||||
// FileService
|
||||
'file_type_not_allowed' => 'Loại file :type không được phép. Cho phép: jpg, png, pdf, mp4, mov.',
|
||||
'file_size_exceeds' => 'Kích thước file vượt quá :max KB.',
|
||||
|
||||
// EditFeedback page
|
||||
'transfer_department' => 'Chuyển phòng ban',
|
||||
'target_department' => 'Phòng ban đích',
|
||||
'assign_to_optional' => 'Chỉ định người xử lý (tùy chọn)',
|
||||
'reason' => 'Lý do',
|
||||
'transferred_successfully' => 'Chuyển tiếp thành công',
|
||||
'close_ticket' => 'Đóng phiếu',
|
||||
'close_confirm' => 'Bạn có chắc muốn đóng phiếu này? Hành động này KHÔNG thể hoàn tác.',
|
||||
'close_submit' => 'Đóng',
|
||||
'closed_successfully' => 'Đóng phiếu thành công',
|
||||
|
||||
// InteractionsRelationManager
|
||||
'interaction_history' => 'Lịch sử tương tác',
|
||||
'interaction_type_note' => 'Ghi chú',
|
||||
'interaction_type_status_change' => 'Thay đổi trạng thái',
|
||||
'interaction_type_assignment' => 'Phân công / Chuyển tiếp',
|
||||
'view_attachments' => 'Xem tệp đính kèm',
|
||||
'add_interaction' => 'Thêm tương tác',
|
||||
'assigned_successfully' => 'Phân công thành công',
|
||||
'status_updated' => 'Cập nhật trạng thái thành công',
|
||||
|
||||
// Notifications
|
||||
'notif_ticket_closed_subject' => 'Ticket #:id đã được đóng',
|
||||
'notif_ticket_closed_ticket' => 'Ticket: :title',
|
||||
'notif_ticket_closed_by' => 'Đóng bởi: :name',
|
||||
'notif_view_ticket' => 'Xem Ticket',
|
||||
'notif_ticket_closed_message' => 'Ticket #:id ":title" đã được đóng bởi :actor.',
|
||||
|
||||
'notif_ticket_transferred_subject' => 'Ticket #:id đã được chuyển đến phòng của bạn',
|
||||
'notif_ticket_transferred_by' => 'Người chuyển: :name',
|
||||
'notif_ticket_transferred_reason' => 'Lý do: :reason',
|
||||
'notif_ticket_transferred_message' => 'Ticket #:id ":title" đã được chuyển đến phòng của bạn bởi :sender.',
|
||||
|
||||
// CreateFeedback
|
||||
'created_via' => 'Phản ánh được tạo qua :channel',
|
||||
'unknown_channel' => 'kênh không xác định',
|
||||
];
|
||||
Reference in New Issue
Block a user