From e222bcb8ebdb150aaa4ee8a3884d85ae2248d3c2 Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Sat, 14 Mar 2026 18:30:24 +0000 Subject: [PATCH] editing language translations --- admin_notification_templates.php | 47 +- includes/app.php | 2007 ++++++++++++------------------ patch_app_translations.php | 394 ------ 3 files changed, 787 insertions(+), 1661 deletions(-) delete mode 100644 patch_app_translations.php diff --git a/admin_notification_templates.php b/admin_notification_templates.php index f5ea17b..613d294 100644 --- a/admin_notification_templates.php +++ b/admin_notification_templates.php @@ -42,7 +42,7 @@ if ($action === 'edit' && $id > 0) { $template = $stmt->fetch(); if (!$template) { - set_flash('error', 'Template not found.'); + set_flash('error', t('template_not_found')); header('Location: ' . url_with_lang('admin_notification_templates.php')); exit; } @@ -56,7 +56,7 @@ if ($action === 'edit' && $id > 0) { $whatsapp_body_ar = trim($_POST['whatsapp_body_ar'] ?? ''); if ($email_subject_en === '' || $email_body_en === '') { - $errors[] = 'English subject and body are required.'; + $errors[] = t('english_required'); } if (!$errors) { @@ -73,13 +73,13 @@ if ($action === 'edit' && $id > 0) { $whatsapp_body_en, $whatsapp_body_ar, $id ]); - set_flash('success', 'Template updated successfully.'); + set_flash('success', t('template_updated')); header('Location: ' . url_with_lang('admin_notification_templates.php')); exit; } } - render_header('Edit Notification Template', 'admin', true); + render_header(t('edit_template'), 'admin', true); ?>
@@ -88,8 +88,8 @@ if ($action === 'edit' && $id > 0) {
-

Edit Template:

- Back to List +

:

+
@@ -101,40 +101,41 @@ if ($action === 'edit' && $id > 0) {
-
English
+
- +
- + -
Use placeholders like {shipment_id}, {user_name}, {offer_price}.
+
- +
-
Arabic
+
- +
- + +
- +

- +
@@ -151,7 +152,7 @@ if ($action === 'edit' && $id > 0) { $stmt = db()->query("SELECT * FROM notification_templates ORDER BY event_name ASC"); $templates = $stmt->fetchAll(); -render_header('Notification Templates', 'admin', true); +render_header(t('notification_templates'), 'admin', true); ?>
@@ -160,7 +161,7 @@ render_header('Notification Templates', 'admin', true);
-

Notification Templates

+

@@ -172,10 +173,10 @@ render_header('Notification Templates', 'admin', true); - - - - + + + + @@ -185,7 +186,7 @@ render_header('Notification Templates', 'admin', true); diff --git a/includes/app.php b/includes/app.php index 010f669..8a34bb5 100644 --- a/includes/app.php +++ b/includes/app.php @@ -1,1122 +1,625 @@ [ - 'nav_home' => 'Home', - 'nav_dashboard' => 'Dashboard', - 'nav_login' => 'Login', - 'nav_logout' => 'Logout', - 'nav_register' => 'Register', - 'welcome' => 'Welcome to Logistics Platform', - 'hero_title' => 'Fast & Reliable Logistics', - 'hero_subtitle' => 'Connecting shippers and truck owners seamlessly.', - 'track_shipment' => 'Track Shipment', - 'enter_tracking' => 'Enter Tracking ID', - 'footer_rights' => 'All rights reserved.', - 'login_title' => 'Login', - 'email_label' => 'Email Address', - 'password_label' => 'Password', - 'login_btn' => 'Sign In', - 'register_link' => "Don't have an account? Register here.", - 'dashboard_title' => 'Dashboard', - 'post_shipment' => 'Post New Shipment', - 'recent_shipments' => 'Recent Shipments', - 'status' => 'Status', - 'actions' => 'Actions', - 'view_details' => 'View Details', - 'edit' => 'Edit', - 'delete' => 'Delete', - 'profile' => 'Profile', - 'settings' => 'Settings', - 'my_shipments' => 'My Shipments', - 'find_trucks' => 'Find Trucks', - 'contact_us' => 'Contact Us', - 'about_us' => 'About Us', - 'privacy_policy' => 'Privacy Policy', - 'terms_conditions' => 'Terms & Conditions', - 'admin_panel' => 'Admin Panel', - 'users' => 'Users', - 'reports' => 'Reports', - 'logout_confirm' => 'Are you sure you want to logout?', - 'yes' => 'Yes', - 'no' => 'No', - 'cancel' => 'Cancel', - 'save' => 'Save', - 'update' => 'Update', - 'created_at' => 'Created At', - 'updated_at' => 'Updated At', - 'id' => 'ID', - 'name' => 'Name', - 'role' => 'Role', - 'approved' => 'Approved', - 'pending' => 'Pending', - 'rejected' => 'Rejected', - 'active' => 'Active', - 'inactive' => 'Inactive', - 'success_message' => 'Operation successful.', - 'error_message' => 'An error occurred. Please try again.', - 'manage_shipments' => 'Manage Shipments', - 'manage_users' => 'Manage Users', - 'manage_trucks' => 'Manage Trucks', - 'truck_owner' => 'Truck Owner', - 'shipper' => 'Shipper', - 'admin' => 'Admin', - 'notifications' => 'Notifications', - 'mark_read' => 'Mark as Read', - 'view_all' => 'View All', - 'new_shipment_alert' => 'New shipment posted!', - 'shipment_update_alert' => 'Shipment status updated.', - 'offer_received' => 'New offer received.', - 'offer_accepted' => 'Offer accepted.', - 'offer_rejected' => 'Offer rejected.', - 'payment_received' => 'Payment received.', - 'payment_pending' => 'Payment pending.', - 'payment_failed' => 'Payment failed.', - 'search' => 'Search...', - 'filter' => 'Filter', - 'sort_by' => 'Sort By', - 'date' => 'Date', - 'price' => 'Price', - 'loading' => 'Loading...', - 'no_data' => 'No data available.', - 'unauthorized' => 'Unauthorized access.', - 'page_not_found' => 'Page not found.', - 'server_error' => 'Internal Server Error.', - 'go_back' => 'Go Back', - 'home_btn' => 'Go Home', - 'reset_password' => 'Reset Password', - 'forgot_password' => 'Forgot Password?', - 'send_link' => 'Send Reset Link', - 'password_reset_sent' => 'Password reset link sent to your email.', - 'password_changed' => 'Password changed successfully.', - 'confirm_password' => 'Confirm Password', - 'current_password' => 'Current Password', - 'new_password' => 'New Password', - 'change_password' => 'Change Password', - 'personal_info' => 'Personal Information', - 'company_info' => 'Company Information', - 'truck_info' => 'Truck Information', - 'documents' => 'Documents', - 'upload_doc' => 'Upload Document', - 'download' => 'Download', - 'file_too_large' => 'File is too large.', - 'invalid_file_type' => 'Invalid file type.', - 'upload_success' => 'File uploaded successfully.', - 'delete_confirm' => 'Are you sure you want to delete this?', - 'deleted_success' => 'Deleted successfully.', - 'feature_not_available' => 'Feature not available yet.', - 'coming_soon' => 'Coming Soon', - 'contact_support' => 'Contact Support', - 'faq' => 'FAQ', - 'language' => 'Language', - 'english' => 'English', - 'arabic' => 'Arabic', - 'switch_lang' => 'Switch Language', - 'dark_mode' => 'Dark Mode', - 'light_mode' => 'Light Mode', - 'notifications_settings' => 'Notification Settings', - 'email_notif' => 'Email Notifications', - 'sms_notif' => 'SMS Notifications', - 'push_notif' => 'Push Notifications', - 'enable' => 'Enable', - 'disable' => 'Disable', - 'account_settings' => 'Account Settings', - 'delete_account' => 'Delete Account', - 'delete_account_warning' => 'This action is irreversible.', - 'feedback' => 'Feedback', - 'rate_us' => 'Rate Us', - 'copyright' => 'Copyright © ' . date('Y'), - 'powered_by' => 'Powered by Logistics Platform', - 'terms_of_service' => 'Terms of Service', - 'cookie_policy' => 'Cookie Policy', - 'careers' => 'Careers', - 'blog' => 'Blog', - 'partners' => 'Partners', - 'help_center' => 'Help Center', - 'how_it_works' => 'How It Works', - 'pricing' => 'Pricing', - 'get_started' => 'Get Started', - 'learn_more' => 'Learn More', - 'demo' => 'Request Demo', - 'subscribe' => 'Subscribe', - 'newsletter' => 'Newsletter', - 'enter_email' => 'Enter your email', - 'invalid_email' => 'Invalid email address.', - 'message_sent' => 'Message sent successfully.', - 'thank_you' => 'Thank you!', - '404_msg' => 'The page you are looking for does not exist.', - '500_msg' => 'Something went wrong on our end.', - 'maintenance_msg' => 'System is under maintenance. Please try again later.', - 'session_expired' => 'Session expired. Please login again.', - 'login_required' => 'Login required to access this page.', - 'access_denied' => 'Access denied.', - 'csrf_error' => 'Invalid security token. Please refresh and try again.', - 'validation_error' => 'Please correct the errors below.', - 'required_field' => 'This field is required.', - 'min_length' => 'Minimum length is %s characters.', - 'max_length' => 'Maximum length is %s characters.', - 'numeric_only' => 'Only numbers are allowed.', - 'alpha_only' => 'Only letters are allowed.', - 'alphanumeric_only' => 'Only letters and numbers are allowed.', - 'email_exists' => 'Email already exists.', - 'username_exists' => 'Username already exists.', - 'password_mismatch' => 'Passwords do not match.', - 'invalid_credentials' => 'Invalid email or password.', - 'account_locked' => 'Account is locked. Please contact support.', - 'too_many_attempts' => 'Too many login attempts. Please try again later.', - 'verify_email' => 'Please verify your email address.', - 'email_verified' => 'Email verified successfully.', - 'verification_link_sent' => 'Verification link sent.', - 'invalid_token' => 'Invalid or expired token.', - 'token_expired' => 'Token has expired.', - 'resend_verification' => 'Resend Verification Email', - 'dashboard_overview' => 'Overview', - 'total_shipments' => 'Total Shipments', - 'active_trucks' => 'Active Trucks', - 'pending_approvals' => 'Pending Approvals', - 'revenue' => 'Revenue', - 'recent_activity' => 'Recent Activity', - 'view_all_shipments' => 'View All Shipments', - 'view_all_users' => 'View All Users', - 'add_new' => 'Add New', - 'export' => 'Export', - 'import' => 'Import', - 'print' => 'Print', - 'copy' => 'Copy', - 'csv' => 'CSV', - 'excel' => 'Excel', - 'pdf' => 'PDF', - 'search_results' => 'Search Results', - 'no_results' => 'No results found.', - 'showing_entries' => 'Showing %s to %s of %s entries', - 'next_page' => 'Next', - 'prev_page' => 'Previous', - 'first_page' => 'First', - 'last_page' => 'Last', - 'apply' => 'Apply', - 'clear' => 'Clear', - 'filter_by' => 'Filter by', - 'status_all' => 'All Statuses', - 'role_all' => 'All Roles', - 'date_range' => 'Date Range', - 'today' => 'Today', - 'yesterday' => 'Yesterday', - 'last_7_days' => 'Last 7 Days', - 'last_30_days' => 'Last 30 Days', - 'this_month' => 'This Month', - 'last_month' => 'Last Month', - 'custom_range' => 'Custom Range', - 'start_date' => 'Start Date', - 'end_date' => 'End Date', - 'to' => 'to', - 'from' => 'From', - 'subject' => 'Subject', - 'message' => 'Message', - 'send_message' => 'Send Message', - 'reply' => 'Reply', - 'forward' => 'Forward', - 'mark_unread' => 'Mark as Unread', - 'delete_selected' => 'Delete Selected', - 'archive' => 'Archive', - 'spam' => 'Spam', - 'trash' => 'Trash', - 'compose' => 'Compose', - 'inbox' => 'Inbox', - 'sent' => 'Sent', - 'drafts' => 'Drafts', - 'important' => 'Important', - 'starred' => 'Starred', - 'labels' => 'Labels', - 'add_label' => 'Add Label', - 'remove_label' => 'Remove Label', - 'color' => 'Color', - 'description' => 'Description', - 'edit_profile' => 'Edit Profile', - 'change_avatar' => 'Change Avatar', - 'bio' => 'Bio', - 'location' => 'Location', - 'website' => 'Website', - 'social_links' => 'Social Links', - 'facebook' => 'Facebook', - 'twitter' => 'Twitter', - 'linkedin' => 'LinkedIn', - 'instagram' => 'Instagram', - 'youtube' => 'YouTube', - 'github' => 'GitHub', - 'save_changes' => 'Save Changes', - 'discard_changes' => 'Discard Changes', - 'unsaved_changes' => 'You have unsaved changes.', - 'stay_on_page' => 'Stay on Page', - 'leave_page' => 'Leave Page', - 'confirm_action' => 'Confirm Action', - 'action_cannot_undone' => 'This action cannot be undone.', - 'type_confirm' => 'Type "CONFIRM" to proceed.', - 'notifications_permission' => 'Allow notifications?', - 'allow' => 'Allow', - 'deny' => 'Deny', - 'location_permission' => 'Allow location access?', - 'camera_permission' => 'Allow camera access?', - 'mic_permission' => 'Allow microphone access?', - 'cookie_consent' => 'We use cookies to improve your experience.', - 'accept_all' => 'Accept All', - 'reject_all' => 'Reject All', - 'customize' => 'Customize', - 'preferences' => 'Preferences', - 'general' => 'General', - 'security' => 'Security', - 'billing' => 'Billing', - 'integrations' => 'Integrations', - 'api_keys' => 'API Keys', - 'generate_key' => 'Generate Key', - 'revoke_key' => 'Revoke Key', - 'webhook_url' => 'Webhook URL', - 'secret_key' => 'Secret Key', - 'documentation' => 'Documentation', - 'support_ticket' => 'Support Ticket', - 'open_ticket' => 'Open Ticket', - 'ticket_id' => 'Ticket ID', - 'priority' => 'Priority', - 'low' => 'Low', - 'medium' => 'Medium', - 'high' => 'High', - 'critical' => 'Critical', - 'status_open' => 'Open', - 'status_closed' => 'Closed', - 'status_pending' => 'Pending', - 'last_reply' => 'Last Reply', - 'assigned_to' => 'Assigned To', - 'created_by' => 'Created By', - 'resolved_at' => 'Resolved At', - 'closed_at' => 'Closed At', - 'reopen' => 'Reopen', - 'close' => 'Close', - 'add_comment' => 'Add Comment', - 'attach_file' => 'Attach File', - 'max_size' => 'Max size: %s', - 'allowed_types' => 'Allowed types: %s', - 'drag_drop' => 'Drag and drop files here', - 'browse' => 'Browse', - 'uploading' => 'Uploading...', - 'completed' => 'Completed', - 'failed' => 'Failed', - 'retry' => 'Retry', - 'cancel_upload' => 'Cancel Upload', - 'remove' => 'Remove', - 'preview' => 'Preview', - 'zoom_in' => 'Zoom In', - 'zoom_out' => 'Zoom Out', - 'rotate' => 'Rotate', - 'fullscreen' => 'Fullscreen', - 'print_preview' => 'Print Preview', - 'download_pdf' => 'Download PDF', - 'share' => 'Share', - 'copy_link' => 'Copy Link', - 'email_link' => 'Email Link', - 'embed' => 'Embed', - 'qrcode' => 'QR Code', - 'scan_qrcode' => 'Scan QR Code', - 'auth_code' => 'Authentication Code', - '2fa' => 'Two-Factor Authentication', - 'setup_2fa' => 'Setup 2FA', - 'disable_2fa' => 'Disable 2FA', - 'enter_code' => 'Enter Code', - 'backup_codes' => 'Backup Codes', - 'generate_codes' => 'Generate Codes', - 'print_codes' => 'Print Codes', - 'recovery_email' => 'Recovery Email', - 'verify_phone' => 'Verify Phone Number', - 'sms_code' => 'SMS Code', - 'resend_code' => 'Resend Code', - 'code_sent' => 'Code sent.', - 'phone_verified' => 'Phone verified.', - 'country_code' => 'Country Code', - 'phone_number' => 'Phone Number', - 'address_line1' => 'Address Line 1', - 'address_line2' => 'Address Line 2', - 'city_state' => 'City/State', - 'postal_code' => 'Postal Code', - 'country_region' => 'Country/Region', - 'billing_address' => 'Billing Address', - 'shipping_address' => 'Shipping Address', - 'same_as_billing' => 'Same as billing address', - 'add_address' => 'Add Address', - 'edit_address' => 'Edit Address', - 'delete_address' => 'Delete Address', - 'default_address' => 'Default Address', - 'set_default' => 'Set as Default', - 'payment_method' => 'Payment Method', - 'credit_card' => 'Credit Card', - 'paypal' => 'PayPal', - 'bank_transfer' => 'Bank Transfer', - 'cash_on_delivery' => 'Cash on Delivery', - 'card_number' => 'Card Number', - 'expiry_date' => 'Expiry Date', - 'cvv' => 'CVV', - 'card_holder' => 'Card Holder Name', - 'save_card' => 'Save card for future use', - 'transaction_history' => 'Transaction History', - 'invoice' => 'Invoice', - 'receipt' => 'Receipt', - 'amount' => 'Amount', - 'currency' => 'Currency', - 'tax' => 'Tax', - 'discount' => 'Discount', - 'subtotal' => 'Subtotal', - 'total' => 'Total', - 'promo_code' => 'Promo Code', - 'apply_code' => 'Apply Code', - 'invalid_code' => 'Invalid promo code.', - 'checkout' => 'Checkout', - 'place_order' => 'Place Order', - 'order_summary' => 'Order Summary', - 'cart' => 'Cart', - 'empty_cart' => 'Your cart is empty.', - 'continue_shopping' => 'Continue Shopping', - 'add_to_cart' => 'Add to Cart', - 'remove_from_cart' => 'Remove from Cart', - 'update_cart' => 'Update Cart', - 'quantity' => 'Quantity', - 'unit_price' => 'Unit Price', - 'total_price' => 'Total Price', - 'product_details' => 'Product Details', - 'specifications' => 'Specifications', - 'reviews' => 'Reviews', - 'write_review' => 'Write a Review', - 'rating' => 'Rating', - 'stars' => 'Stars', - 'related_products' => 'Related Products', - 'wishlist' => 'Wishlist', - 'add_to_wishlist' => 'Add to Wishlist', - 'remove_from_wishlist' => 'Remove from Wishlist', - 'compare' => 'Compare', - 'add_to_compare' => 'Add to Compare', - 'clear_compare' => 'Clear Compare', - 'compare_products' => 'Compare Products', - 'category' => 'Category', - 'brand' => 'Brand', - 'model' => 'Model', - 'sku' => 'SKU', - 'availability' => 'Availability', - 'in_stock' => 'In Stock', - 'out_of_stock' => 'Out of Stock', - 'pre_order' => 'Pre-Order', - 'limited_stock' => 'Limited Stock', - 'new_arrival' => 'New Arrival', - 'best_seller' => 'Best Seller', - 'featured' => 'Featured', - 'sale' => 'Sale', - 'hot' => 'Hot', - 'deal_of_day' => 'Deal of the Day', - 'timer_end' => 'Offer ends in', - 'days' => 'Days', - 'hours' => 'Hours', - 'minutes' => 'Minutes', - 'seconds' => 'Seconds', - 'subscribe_text' => 'Subscribe to our newsletter for latest updates.', - 'follow_us' => 'Follow Us', - 'app_download' => 'Download App', - 'app_store' => 'App Store', - 'google_play' => 'Google Play', - 'secure_payment' => 'Secure Payment', - 'fast_delivery' => 'Fast Delivery', - '24_7_support' => '24/7 Support', - 'money_back' => 'Money Back Guarantee', - 'easy_returns' => 'Easy Returns', - 'gift_cards' => 'Gift Cards', - 'track_order' => 'Track Order', - 'order_id' => 'Order ID', - 'shipping_info' => 'Shipping Info', - 'billing_info' => 'Billing Info', - 'order_status' => 'Order Status', - 'processing' => 'Processing', - 'shipped' => 'Shipped', - 'delivered' => 'Delivered', - 'cancelled' => 'Cancelled', - 'returned' => 'Returned', - 'refunded' => 'Refunded', - 'return_policy' => 'Return Policy', - 'shipping_policy' => 'Shipping Policy', - 'sitemap' => 'Sitemap', - 'accessibility' => 'Accessibility', - 'accessibility_statement' => 'Accessibility Statement', - 'skip_to_content' => 'Skip to Content', - 'high_contrast' => 'High Contrast', - 'text_size' => 'Text Size', - 'increase' => 'Increase', - 'decrease' => 'Decrease', - 'reset' => 'Reset', - 'print_page' => 'Print Page', - 'read_aloud' => 'Read Aloud', - 'stop' => 'Stop', - 'pause' => 'Pause', - 'resume' => 'Resume', - 'mute' => 'Mute', - 'unmute' => 'Unmute', - 'volume' => 'Volume', - 'speed' => 'Speed', - 'normal' => 'Normal', - 'fast' => 'Fast', - 'slow' => 'Slow', - 'captions' => 'Captions', - 'subtitles' => 'Subtitles', - 'audio_desc' => 'Audio Description', - 'keyboard_shortcuts' => 'Keyboard Shortcuts', - 'help' => 'Help', - 'close_menu' => 'Close Menu', - 'open_menu' => 'Open Menu', - 'menu' => 'Menu', - 'navigation' => 'Navigation', - 'breadcrumbs' => 'Breadcrumbs', - 'pagination' => 'Pagination', - 'modal' => 'Modal', - 'dialog' => 'Dialog', - 'tooltip' => 'Tooltip', - 'popover' => 'Popover', - 'alert' => 'Alert', - 'notification' => 'Notification', - 'toast' => 'Toast', - 'banner' => 'Banner', - 'sidebar' => 'Sidebar', - 'footer' => 'Footer', - 'header' => 'Header', - 'main_content' => 'Main Content', - 'admin_dashboard_title' => 'Admin Dashboard', - 'wablas_server_url' => 'Wablas Server URL', - 'wablas_api_token' => 'Wablas API Token', - 'reg_title' => 'Create Account', - 'reg_subtitle' => 'Sign up to get started', - 'reg_success_pending' => 'Registration successful. Your account is pending approval.', - 'reg_success' => 'Registration successful. You can now login.', - 'role' => 'Role', - 'shipper' => 'Shipper', - 'truck_owner' => 'Truck Owner', - 'email' => 'Email', - 'password' => 'Password', - 'phone' => 'Phone', - 'country' => 'Country', - 'select_country' => 'Select Country', - 'city' => 'City', - 'select_city' => 'Select City', - 'address' => 'Address', - 'shipper_details' => 'Shipper Details', - 'company_name' => 'Company Name', - 'truck_details' => 'Truck Details', - 'truck_type' => 'Truck Type', - 'load_capacity' => 'Load Capacity (Tons)', - 'plate_no' => 'Plate Number', - 'bank_account' => 'Bank Account', - 'bank_name' => 'Bank Name', - 'bank_branch' => 'Branch Name', - 'id_card_front' => 'ID Card (Front)', - 'id_card_back' => 'ID Card (Back)', - 'truck_reg_front' => 'Truck Registration (Front)', - 'truck_reg_back' => 'Truck Registration (Back)', - 'truck_picture' => 'Truck Picture', - 'create_account' => 'Create Account', - 'back_to_admin' => 'Back to Admin', - 'back_to_home' => 'Back to Home', - 'total_revenue' => 'Total Revenue', - 'shipments_analytics' => 'Shipments Analytics', - 'export_csv' => 'Export CSV', - 'status_posted' => 'Posted', - 'status_offered' => 'Offered', - 'status_confirmed' => 'Confirmed', - 'status_in_transit' => 'In Transit', - 'status_delivered' => 'Delivered', - 'status_pending' => 'Pending', - 'status_active' => 'Active', - 'status_rejected' => 'Rejected', - 'status_unpaid' => 'Unpaid', - 'status_paid' => 'Paid', - 'payment_thawani' => 'Thawani', - 'payment_bank' => 'Bank Transfer', - 'currency_symbol' => 'OMR', - 'total_shippers' => 'Total Shippers', - 'active_shipments' => 'Active Shipments', - 'total_truck_owners' => 'Total Truck Owners', - 'admin_dashboard' => 'Admin Dashboard', - 'overview_performance' => 'Overview & Performance', - 'no_shipments' => 'No shipments found.', - 'shipment' => 'Shipment', - 'route' => 'Route', - 'action' => 'Action', - 'manage_countries' => 'Manage Countries', - 'add_remove_countries' => 'Add/Remove Countries', - 'manage_cities' => 'Manage Cities', - 'configure_cities' => 'Configure Cities', - 'register_user' => 'Register User', - 'manually_onboard' => 'Manually Onboard User', - 'company_profile' => 'Company Profile', - 'update_branding' => 'Update Branding', - 'summary_report' => 'Summary Report', - 'view_analytics' => 'View Analytics' - ], - 'ar' => [ - 'nav_home' => 'الرئيسية', - 'nav_dashboard' => 'لوحة التحكم', - 'nav_login' => 'تسجيل الدخول', - 'nav_logout' => 'تسجيل الخروج', - 'nav_register' => 'تسجيل جديد', - 'welcome' => 'مرحباً بك في منصة الخدمات اللوجستية', - 'hero_title' => 'خدمات لوجستية سريعة وموثوقة', - 'hero_subtitle' => 'نربط الشاحنين وأصحاب الشاحنات بسلاسة.', - 'track_shipment' => 'تتبع الشحنة', - 'enter_tracking' => 'أدخل رقم التتبع', - 'footer_rights' => 'جميع الحقوق محفوظة.', - 'login_title' => 'تسجيل الدخول', - 'email_label' => 'البريد الإلكتروني', - 'password_label' => 'كلمة المرور', - 'login_btn' => 'دخول', - 'register_link' => 'ليس لديك حساب؟ سجل هنا.', - 'dashboard_title' => 'لوحة التحكم', - 'post_shipment' => 'نشر شحنة جديدة', - 'recent_shipments' => 'الشحنات الأخيرة', - 'status' => 'الحالة', - 'actions' => 'الإجراءات', - 'view_details' => 'عرض التفاصيل', - 'edit' => 'تعديل', - 'delete' => 'حذف', - 'profile' => 'الملف الشخصي', - 'settings' => 'الإعدادات', - 'my_shipments' => 'شحناتي', - 'find_trucks' => 'البحث عن شاحنات', - 'contact_us' => 'اتصل بنا', - 'about_us' => 'من نحن', - 'privacy_policy' => 'سياسة الخصوصية', - 'terms_conditions' => 'الشروط والأحكام', - 'admin_panel' => 'لوحة الإدارة', - 'users' => 'المستخدمين', - 'reports' => 'التقارير', - 'logout_confirm' => 'هل أنت متأكد من تسجيل الخروج؟', - 'yes' => 'نعم', - 'no' => 'لا', - 'cancel' => 'إلغاء', - 'save' => 'حفظ', - 'update' => 'تحديث', - 'created_at' => 'تاريخ الإنشاء', - 'updated_at' => 'تاريخ التحديث', - 'id' => 'المعرف', - 'name' => 'الاسم', - 'role' => 'الدور', - 'approved' => 'مقبول', - 'pending' => 'قيد الانتظار', - 'rejected' => 'مرفوض', - 'active' => 'نشط', - 'inactive' => 'غير نشط', - 'success_message' => 'تمت العملية بنجاح.', - 'error_message' => 'حدث خطأ. يرجى المحاولة مرة أخرى.', - 'manage_shipments' => 'إدارة الشحنات', - 'manage_users' => 'إدارة المستخدمين', - 'manage_trucks' => 'إدارة الشاحنات', - 'truck_owner' => 'مالك شاحنة', - 'shipper' => 'شاحن', - 'admin' => 'مسؤول', - 'notifications' => 'الإشعارات', - 'mark_read' => 'تحديد كمقروء', - 'view_all' => 'عرض الكل', - 'new_shipment_alert' => 'تم نشر شحنة جديدة!', - 'shipment_update_alert' => 'تم تحديث حالة الشحنة.', - 'offer_received' => 'تم استلام عرض جديد.', - 'offer_accepted' => 'تم قبول العرض.', - 'offer_rejected' => 'تم رفض العرض.', - 'payment_received' => 'تم استلام الدفعة.', - 'payment_pending' => 'الدفعة معلقة.', - 'payment_failed' => 'فشلت عملية الدفع.', - 'search' => 'بحث...', - 'filter' => 'تصفية', - 'sort_by' => 'فرز حسب', - 'date' => 'التاريخ', - 'price' => 'السعر', - 'loading' => 'جار التحميل...', - 'no_data' => 'لا توجد بيانات متاحة.', - 'unauthorized' => 'وصول غير مصرح به.', - 'page_not_found' => 'الصفحة غير موجودة.', - 'server_error' => 'خطأ في الخادم.', - 'go_back' => 'رجوع', - 'home_btn' => 'الصفحة الرئيسية', - 'reset_password' => 'إعادة تعيين كلمة المرور', - 'forgot_password' => 'نسيت كلمة المرور؟', - 'send_link' => 'إرسال رابط التعيين', - 'password_reset_sent' => 'تم إرسال رابط إعادة التعيين إلى بريدك الإلكتروني.', - 'password_changed' => 'تم تغيير كلمة المرور بنجاح.', - 'confirm_password' => 'تأكيد كلمة المرور', - 'current_password' => 'كلمة المرور الحالية', - 'new_password' => 'كلمة المرور الجديدة', - 'change_password' => 'تغيير كلمة المرور', - 'personal_info' => 'المعلومات الشخصية', - 'company_info' => 'معلومات الشركة', - 'truck_info' => 'معلومات الشاحنة', - 'documents' => 'المستندات', - 'upload_doc' => 'رفع مستند', - 'download' => 'تحميل', - 'file_too_large' => 'حجم الملف كبير جداً.', - 'invalid_file_type' => 'نوع الملف غير صالح.', - 'upload_success' => 'تم رفع الملف بنجاح.', - 'delete_confirm' => 'هل أنت متأكد من الحذف؟', - 'deleted_success' => 'تم الحذف بنجاح.', - 'feature_not_available' => 'الخدمة غير متوفرة حالياً.', - 'coming_soon' => 'قريباً', - 'contact_support' => 'اتصل بالدعم', - 'faq' => 'الأسئلة الشائعة', - 'language' => 'اللغة', - 'english' => 'إنجليزي', - 'arabic' => 'عربي', - 'switch_lang' => 'تغيير اللغة', - 'dark_mode' => 'الوضع الليلي', - 'light_mode' => 'الوضع النهاري', - 'notifications_settings' => 'إعدادات الإشعارات', - 'email_notif' => 'إشعارات البريد الإلكتروني', - 'sms_notif' => 'إشعارات الرسائل القصيرة', - 'push_notif' => 'إشعارات الدفع', - 'enable' => 'تفعيل', - 'disable' => 'تعطيل', - 'account_settings' => 'إعدادات الحساب', - 'delete_account' => 'حذف الحساب', - 'delete_account_warning' => 'هذا الإجراء لا يمكن التراجع عنه.', - 'feedback' => 'رأيك يهمنا', - 'rate_us' => 'قيمنا', - 'copyright' => 'حقوق النشر © ' . date('Y'), - 'powered_by' => 'مشغل بواسطة منصة اللوجستيات', - 'terms_of_service' => 'شروط الخدمة', - 'cookie_policy' => 'سياسة ملفات الارتباط', - 'careers' => 'وظائف', - 'blog' => 'المدونة', - 'partners' => 'الشركاء', - 'help_center' => 'مركز المساعدة', - 'how_it_works' => 'كيف نعمل', - 'pricing' => 'الأسعار', - 'get_started' => 'ابدأ الآن', - 'learn_more' => 'اعرف المزيد', - 'demo' => 'طلب عرض توضيحي', - 'subscribe' => 'اشترك', - 'newsletter' => 'النشرة البريدية', - 'enter_email' => 'أدخل بريدك الإلكتروني', - 'invalid_email' => 'بريد إلكتروني غير صالح.', - 'message_sent' => 'تم إرسال الرسالة بنجاح.', - 'thank_you' => 'شكراً لك!', - '404_msg' => 'الصفحة التي تبحث عنها غير موجودة.', - '500_msg' => 'حدث خطأ من جانبنا.', - 'maintenance_msg' => 'النظام تحت الصيانة. يرجى المحاولة لاحقاً.', - 'session_expired' => 'انتهت الجلسة. يرجى تسجيل الدخول مرة أخرى.', - 'login_required' => 'يجب تسجيل الدخول للوصول لهذه الصفحة.', - 'access_denied' => 'تم رفض الوصول.', - 'csrf_error' => 'رمز الحماية غير صالح. يرجى التحديث والمحاولة مرة أخرى.', - 'validation_error' => 'يرجى تصحيح الأخطاء أدناه.', - 'required_field' => 'هذا الحقل مطلوب.', - 'min_length' => 'الحد الأدنى للطول هو %s حرف.', - 'max_length' => 'الحد الأقصى للطول هو %s حرف.', - 'numeric_only' => 'الأرقام فقط مسموحة.', - 'alpha_only' => 'الحروف فقط مسموحة.', - 'alphanumeric_only' => 'الحروف والأرقام فقط مسموحة.', - 'email_exists' => 'البريد الإلكتروني موجود بالفعل.', - 'username_exists' => 'اسم المستخدم موجود بالفعل.', - 'password_mismatch' => 'كلمات المرور غير متطابقة.', - 'invalid_credentials' => 'البريد الإلكتروني أو كلمة المرور غير صحيحة.', - 'account_locked' => 'الحساب مقفل. يرجى الاتصال بالدعم.', - 'too_many_attempts' => 'محاولات دخول كثيرة جداً. يرجى المحاولة لاحقاً.', - 'verify_email' => 'يرجى تأكيد بريدك الإلكتروني.', - 'email_verified' => 'تم تأكيد البريد الإلكتروني بنجاح.', - 'verification_link_sent' => 'تم إرسال رابط التأكيد.', - 'invalid_token' => 'الرمز غير صالح أو منتهي.', - 'token_expired' => 'انتهت صلاحية الرمز.', - 'resend_verification' => 'إعادة إرسال بريد التأكيد', - 'dashboard_overview' => 'نظرة عامة', - 'total_shipments' => 'إجمالي الشحنات', - 'active_trucks' => 'الشاحنات النشطة', - 'pending_approvals' => 'بانتظار الموافقة', - 'revenue' => 'الإيرادات', - 'recent_activity' => 'النشاط الأخير', - 'view_all_shipments' => 'عرض كل الشحنات', - 'view_all_users' => 'عرض كل المستخدمين', - 'add_new' => 'إضافة جديد', - 'export' => 'تصدير', - 'import' => 'استيراد', - 'print' => 'طباعة', - 'copy' => 'نسخ', - 'csv' => 'CSV', - 'excel' => 'Excel', - 'pdf' => 'PDF', - 'search_results' => 'نتائج البحث', - 'no_results' => 'لا توجد نتائج.', - 'showing_entries' => 'عرض %s إلى %s من %s سجل', - 'next_page' => 'التالي', - 'prev_page' => 'السابق', - 'first_page' => 'الأول', - 'last_page' => 'الأخير', - 'apply' => 'تطبيق', - 'clear' => 'مسح', - 'filter_by' => 'تصفية حسب', - 'status_all' => 'كل الحالات', - 'role_all' => 'كل الأدوار', - 'date_range' => 'نطاق التاريخ', - 'today' => 'اليوم', - 'yesterday' => 'أمس', - 'last_7_days' => 'آخر 7 أيام', - 'last_30_days' => 'آخر 30 يوم', - 'this_month' => 'هذا الشهر', - 'last_month' => 'الشهر الماضي', - 'custom_range' => 'نطاق مخصص', - 'start_date' => 'تاريخ البدء', - 'end_date' => 'تاريخ الانتهاء', - 'to' => 'إلى', - 'from' => 'من', - 'subject' => 'الموضوع', - 'message' => 'الرسالة', - 'send_message' => 'إرسال الرسالة', - 'reply' => 'رد', - 'forward' => 'توجيه', - 'mark_unread' => 'تحديد كغير مقروء', - 'delete_selected' => 'حذف المحدد', - 'archive' => 'أرشفة', - 'spam' => 'بريد مزعج', - 'trash' => 'سلة المهملات', - 'compose' => 'إنشاء', - 'inbox' => 'الوارد', - 'sent' => 'المرسل', - 'drafts' => 'المسودات', - 'important' => 'مهم', - 'starred' => 'مميز بنجمة', - 'labels' => 'تسميات', - 'add_label' => 'إضافة تسمية', - 'remove_label' => 'إزالة تسمية', - 'color' => 'اللون', - 'description' => 'الوصف', - 'edit_profile' => 'تعديل الملف الشخصي', - 'change_avatar' => 'تغيير الصورة الرمزية', - 'bio' => 'نبذة', - 'location' => 'الموقع', - 'website' => 'الموقع الإلكتروني', - 'social_links' => 'روابط التواصل الاجتماعي', - 'facebook' => 'فيسبوك', - 'twitter' => 'تويتر', - 'linkedin' => 'لينكد إن', - 'instagram' => 'انستغرام', - 'youtube' => 'يوتيوب', - 'github' => 'جيت هب', - 'save_changes' => 'حفظ التغييرات', - 'discard_changes' => 'تجاهل التغييرات', - 'unsaved_changes' => 'لديك تغييرات غير محفوظة.', - 'stay_on_page' => 'البقاء في الصفحة', - 'leave_page' => 'مغادرة الصفحة', - 'confirm_action' => 'تأكيد الإجراء', - 'action_cannot_undone' => 'لا يمكن التراجع عن هذا الإجراء.', - 'type_confirm' => 'اكتب "CONFIRM" للمتابعة.', - 'notifications_permission' => 'هل تسمح بالإشعارات؟', - 'allow' => 'سماح', - 'deny' => 'رفض', - 'location_permission' => 'هل تسمح بالوصول للموقع؟', - 'camera_permission' => 'هل تسمح بالوصول للكاميرا؟', - 'mic_permission' => 'هل تسمح بالوصول للميكروفون؟', - 'cookie_consent' => 'نستخدم ملفات تعريف الارتباط لتحسين تجربتك.', - 'accept_all' => 'قبول الكل', - 'reject_all' => 'رفض الكل', - 'customize' => 'تخصيص', - 'preferences' => 'التفضيلات', - 'general' => 'عام', - 'security' => 'الأمان', - 'billing' => 'الفوترة', - 'integrations' => 'التكاملات', - 'api_keys' => 'مفاتيح API', - 'generate_key' => 'توليد مفتاح', - 'revoke_key' => 'إبطال مفتاح', - 'webhook_url' => 'رابط Webhook', - 'secret_key' => 'المفتاح السري', - 'documentation' => 'التوثيق', - 'support_ticket' => 'تذكرة دعم', - 'open_ticket' => 'فتح تذكرة', - 'ticket_id' => 'رقم التذكرة', - 'priority' => 'الأولوية', - 'low' => 'منخفض', - 'medium' => 'متوسط', - 'high' => 'عالي', - 'critical' => 'حرج', - 'status_open' => 'مفتوح', - 'status_closed' => 'مغلق', - 'status_pending' => 'قيد الانتظار', - 'last_reply' => 'آخر رد', - 'assigned_to' => 'مسند إلى', - 'created_by' => 'أنشئ بواسطة', - 'resolved_at' => 'تم الحل في', - 'closed_at' => 'تاريخ الإغلاق', - 'reopen' => 'إعادة فتح', - 'close' => 'إغلاق', - 'add_comment' => 'إضافة تعليق', - 'attach_file' => 'إرفاق ملف', - 'max_size' => 'الحجم الأقصى: %s', - 'allowed_types' => 'الأنواع المسموحة: %s', - 'drag_drop' => 'اسحب وأفلت الملفات هنا', - 'browse' => 'تصفح', - 'uploading' => 'جار الرفع...', - 'completed' => 'مكتمل', - 'failed' => 'فشل', - 'retry' => 'إعادة المحاولة', - 'cancel_upload' => 'إلغاء الرفع', - 'remove' => 'إزالة', - 'preview' => 'معاينة', - 'zoom_in' => 'تكبير', - 'zoom_out' => 'تصغير', - 'rotate' => 'تدوير', - 'fullscreen' => 'ملء الشاشة', - 'print_preview' => 'معاينة الطباعة', - 'download_pdf' => 'تحميل PDF', - 'share' => 'مشاركة', - 'copy_link' => 'نسخ الرابط', - 'email_link' => 'إرسال الرابط بالبريد', - 'embed' => 'تضمين', - 'qrcode' => 'رمز QR', - 'scan_qrcode' => 'مسح رمز QR', - 'auth_code' => 'رمز المصادقة', - '2fa' => 'المصادقة الثنائية', - 'setup_2fa' => 'إعداد المصادقة الثنائية', - 'disable_2fa' => 'تعطيل المصادقة الثنائية', - 'enter_code' => 'أدخل الرمز', - 'backup_codes' => 'رموز احتياطية', - 'generate_codes' => 'توليد رموز', - 'print_codes' => 'طباعة الرموز', - 'recovery_email' => 'بريد الاسترداد', - 'verify_phone' => 'تأكيد رقم الهاتف', - 'sms_code' => 'رمز SMS', - 'resend_code' => 'إعادة إرسال الرمز', - 'code_sent' => 'تم إرسال الرمز.', - 'phone_verified' => 'تم تأكيد رقم الهاتف.', - 'country_code' => 'رمز الدولة', - 'phone_number' => 'رقم الهاتف', - 'address_line1' => 'العنوان 1', - 'address_line2' => 'العنوان 2', - 'city_state' => 'المدينة/المنطقة', - 'postal_code' => 'الرمز البريدي', - 'country_region' => 'الدولة/المنطقة', - 'billing_address' => 'عنوان الفوترة', - 'shipping_address' => 'عنوان الشحن', - 'same_as_billing' => 'نفس عنوان الفوترة', - 'add_address' => 'إضافة عنوان', - 'edit_address' => 'تعديل عنوان', - 'delete_address' => 'حذف عنوان', - 'default_address' => 'العنوان الافتراضي', - 'set_default' => 'تعيين كافتراضي', - 'payment_method' => 'طريقة الدفع', - 'credit_card' => 'بطاقة ائتمان', - 'paypal' => 'باي بال', - 'bank_transfer' => 'تحويل بنكي', - 'cash_on_delivery' => 'الدفع عند الاستلام', - 'card_number' => 'رقم البطاقة', - 'expiry_date' => 'تاريخ الانتهاء', - 'cvv' => 'رمز CVV', - 'card_holder' => 'اسم حامل البطاقة', - 'save_card' => 'حفظ البطاقة للاستخدام المستقبلي', - 'transaction_history' => 'سجل المعاملات', - 'invoice' => 'فاتورة', - 'receipt' => 'إيصال', - 'amount' => 'المبلغ', - 'currency' => 'العملة', - 'tax' => 'الضريبة', - 'discount' => 'الخصم', - 'subtotal' => 'المجموع الفرعي', - 'total' => 'المجموع الكلي', - 'promo_code' => 'الرمز الترويجي', - 'apply_code' => 'تطبيق الرمز', - 'invalid_code' => 'الرمز غير صالح.', - 'checkout' => 'الدفع', - 'place_order' => 'تأكيد الطلب', - 'order_summary' => 'ملخص الطلب', - 'cart' => 'سلة التسوق', - 'empty_cart' => 'السلة فارغة.', - 'continue_shopping' => 'متابعة التسوق', - 'add_to_cart' => 'أضف إلى السلة', - 'remove_from_cart' => 'إزالة من السلة', - 'update_cart' => 'تحديث السلة', - 'quantity' => 'الكمية', - 'unit_price' => 'سعر الوحدة', - 'total_price' => 'السعر الإجمالي', - 'product_details' => 'تفاصيل المنتج', - 'specifications' => 'المواصفات', - 'reviews' => 'المراجعات', - 'write_review' => 'اكتب مراجعة', - 'rating' => 'التقييم', - 'stars' => 'نجوم', - 'related_products' => 'منتجات ذات صلة', - 'wishlist' => 'قائمة الرغبات', - 'add_to_wishlist' => 'أضف لقائمة الرغبات', - 'remove_from_wishlist' => 'إزالة من قائمة الرغبات', - 'compare' => 'مقارنة', - 'add_to_compare' => 'أضف للمقارنة', - 'clear_compare' => 'مسح المقارنة', - 'compare_products' => 'مقارنة المنتجات', - 'category' => 'الفئة', - 'brand' => 'العلامة التجارية', - 'model' => 'الموديل', - 'sku' => 'SKU', - 'availability' => 'التوفر', - 'in_stock' => 'متوفر', - 'out_of_stock' => 'غير متوفر', - 'pre_order' => 'طلب مسبق', - 'limited_stock' => 'كمية محدودة', - 'new_arrival' => 'وصل حديثاً', - 'best_seller' => 'الأكثر مبيعاً', - 'featured' => 'متميز', - 'sale' => 'تخفيضات', - 'hot' => 'رائج', - 'deal_of_day' => 'صفقة اليوم', - 'timer_end' => 'العرض ينتهي في', - 'days' => 'أيام', - 'hours' => 'ساعات', - 'minutes' => 'دقائق', - 'seconds' => 'ثواني', - 'subscribe_text' => 'Subscribe to our newsletter for latest updates.', - 'follow_us' => 'Follow Us', - 'app_download' => 'Download App', - 'app_store' => 'App Store', - 'google_play' => 'Google Play', - 'secure_payment' => 'Secure Payment', - 'fast_delivery' => 'Fast Delivery', - '24_7_support' => '24/7 Support', - 'money_back' => 'Money Back Guarantee', - 'easy_returns' => 'Easy Returns', - 'gift_cards' => 'Gift Cards', - 'track_order' => 'Track Order', - 'order_id' => 'Order ID', - 'shipping_info' => 'Shipping Info', - 'billing_info' => 'Billing Info', - 'order_status' => 'Order Status', - 'processing' => 'Processing', - 'shipped' => 'Shipped', - 'delivered' => 'Delivered', - 'cancelled' => 'Cancelled', - 'returned' => 'Returned', - 'refunded' => 'Refunded', - 'return_policy' => 'Return Policy', - 'shipping_policy' => 'Shipping Policy', - 'sitemap' => 'Sitemap', - 'accessibility' => 'Accessibility', - 'accessibility_statement' => 'Accessibility Statement', - 'skip_to_content' => 'Skip to Content', - 'high_contrast' => 'High Contrast', - 'text_size' => 'Text Size', - 'increase' => 'Increase', - 'decrease' => 'Decrease', - 'reset' => 'Reset', - 'print_page' => 'Print Page', - 'read_aloud' => 'Read Aloud', - 'stop' => 'Stop', - 'pause' => 'Pause', - 'resume' => 'Resume', - 'mute' => 'Mute', - 'unmute' => 'Unmute', - 'volume' => 'Volume', - 'speed' => 'Speed', - 'normal' => 'Normal', - 'fast' => 'Fast', - 'slow' => 'Slow', - 'captions' => 'Captions', - 'subtitles' => 'Subtitles', - 'audio_desc' => 'Audio Description', - 'keyboard_shortcuts' => 'Keyboard Shortcuts', - 'help' => 'Help', - 'close_menu' => 'Close Menu', - 'open_menu' => 'Open Menu', - 'menu' => 'Menu', - 'navigation' => 'Navigation', - 'breadcrumbs' => 'Breadcrumbs', - 'pagination' => 'Pagination', - 'modal' => 'Modal', - 'dialog' => 'Dialog', - 'tooltip' => 'Tooltip', - 'popover' => 'Popover', - 'alert' => 'Alert', - 'notification' => 'Notification', - 'toast' => 'Toast', - 'banner' => 'Banner', - 'sidebar' => 'Sidebar', - 'footer' => 'Footer', - 'header' => 'Header', - 'main_content' => 'Main Content', - 'admin_dashboard_title' => 'Admin Dashboard', - 'wablas_server_url' => 'Wablas Server URL', - 'wablas_api_token' => 'Wablas API Token', - 'reg_title' => 'Create Account', - 'reg_subtitle' => 'Sign up to get started', - 'reg_success_pending' => 'Registration successful. Your account is pending approval.', - 'reg_success' => 'Registration successful. You can now login.', - 'role' => 'Role', - 'shipper' => 'Shipper', - 'truck_owner' => 'Truck Owner', - 'email' => 'Email', - 'password' => 'Password', - 'phone' => 'Phone', - 'country' => 'Country', - 'select_country' => 'Select Country', - 'city' => 'City', - 'select_city' => 'Select City', - 'address' => 'Address', - 'shipper_details' => 'Shipper Details', - 'company_name' => 'Company Name', - 'truck_details' => 'Truck Details', - 'truck_type' => 'Truck Type', - 'load_capacity' => 'Load Capacity (Tons)', - 'plate_no' => 'Plate Number', - 'bank_account' => 'Bank Account', - 'bank_name' => 'Bank Name', - 'bank_branch' => 'Branch Name', - 'id_card_front' => 'ID Card (Front)', - 'id_card_back' => 'ID Card (Back)', - 'truck_reg_front' => 'Truck Registration (Front)', - 'truck_reg_back' => 'Truck Registration (Back)', - 'truck_picture' => 'Truck Picture', - 'create_account' => 'Create Account', - 'back_to_admin' => 'Back to Admin', - 'back_to_home' => 'Back to Home', - 'total_revenue' => 'Total Revenue', - 'shipments_analytics' => 'Shipments Analytics', - 'export_csv' => 'Export CSV', - 'status_posted' => 'تم النشر', - 'status_offered' => 'تم تقديم عرض', - 'status_confirmed' => 'مؤكدة', - 'status_in_transit' => 'قيد النقل', - 'status_delivered' => 'تم التوصيل', - 'status_pending' => 'قيد الانتظار', - 'status_active' => 'نشط', - 'status_rejected' => 'مرفوض', - 'status_unpaid' => 'غير مدفوع', - 'status_paid' => 'مدفوع', - 'payment_thawani' => 'ثواني', - 'payment_bank' => 'تحويل بنكي', - 'currency_symbol' => 'ر.ع.', - 'total_shippers' => 'إجمالي الشاحنين', - 'active_shipments' => 'الشحنات النشطة', - 'total_truck_owners' => 'إجمالي أصحاب الشاحنات', - 'admin_dashboard' => 'لوحة تحكم المسؤول', - 'overview_performance' => 'النظرة العامة والأداء', - 'no_shipments' => 'لم يتم العثور على شحنات.', - 'shipment' => 'الشحنة', - 'route' => 'المسار', - 'action' => 'الإجراء', - 'manage_countries' => 'إدارة الدول', - 'add_remove_countries' => 'إضافة/إزالة الدول', - 'manage_cities' => 'إدارة المدن', - 'configure_cities' => 'إعداد المدن', - 'register_user' => 'تسجيل مستخدم', - 'manually_onboard' => 'إضافة مستخدم يدوياً', - 'company_profile' => 'ملف الشركة', - 'update_branding' => 'تحديث الهوية', - 'summary_report' => 'تقرير ملخص', - 'view_analytics' => 'عرض التحليلات' - ] + "en" => array ( + 'app_name' => 'CargoLink', + 'nav_home' => 'Overview', + 'nav_login' => 'Login', + 'nav_shipper' => 'Shipper Desk', + 'nav_owner' => 'Truck Owner Desk', + 'nav_admin' => 'Admin Panel', + 'nav_theme' => 'Theme', + 'nav_get_started' => 'Get Started', + 'hero_title' => 'Move cargo faster with verified trucks.', + 'hero_subtitle' => 'Post shipments, collect offers, and pay via Thawani or bank transfer. Built for local and nearby cross-border moves.', + 'hero_tagline' => 'Multilingual Logistics Marketplace', + 'register_shipper' => 'Register as Shipper', + 'register_owner' => 'Register as Truck Owner', + 'cta_shipper' => 'Post a shipment', + 'cta_owner' => 'Find loads', + 'cta_admin' => 'Open admin', + 'stats_shipments' => 'Shipments posted', + 'stats_offers' => 'Active offers', + 'stats_confirmed' => 'Confirmed trips', + 'section_workflow' => 'How it works', + 'recent_shipments' => 'Recent shipments', + 'step_post' => 'Shipper posts cargo details and preferred payment.', + 'step_offer' => 'Truck owners respond with their best rate.', + 'step_confirm' => 'Admin confirms booking and status.', + 'step_confirm_desc' => 'Secure booking and track the delivery until completion.', + 'shipper_dashboard' => 'Shipper Dashboard', + 'new_shipment' => 'Create shipment', + 'shipper_name' => 'Shipper name', + 'shipper_company' => 'Company', + 'origin' => 'Origin city', + 'destination' => 'Destination city', + 'cargo' => 'Cargo description', + 'cargo_placeholder' => 'e.g. 20 Pallets of Electronics', + 'weight' => 'Weight (tons)', + 'pickup_date' => 'Pickup date', + 'delivery_date' => 'Delivery date', + 'payment_method' => 'Payment method', + 'payment_thawani' => 'Thawani online payment', + 'payment_bank' => 'Bank transfer', + 'submit_shipment' => 'Submit shipment', + 'shipments_list' => 'Your latest shipments', + 'status' => 'Status', + 'offer' => 'Best offer', + 'actions' => 'Actions', + 'view' => 'View', + 'owner_dashboard' => 'Truck Owner Dashboard', + 'available_shipments' => 'Available shipments', + 'offer_price' => 'Offer price', + 'offer_owner' => 'Truck owner name', + 'submit_offer' => 'Send offer', + 'admin_dashboard' => 'Admin Dashboard', + 'update_status' => 'Update status', + 'save' => 'Save', + 'shipment_detail' => 'Shipment detail', + 'created_at' => 'Created', + 'best_offer' => 'Best offer', + 'assign_owner' => 'Assigned owner', + 'no_shipments' => 'No shipments yet. Create the first one to get started.', + 'no_offers' => 'No offers yet.', + 'success_shipment' => 'Shipment posted successfully.', + 'success_offer' => 'Offer submitted to the shipper.', + 'success_status' => 'Status updated.', + 'error_required' => 'Please fill in all required fields.', + 'error_invalid' => 'Please enter valid values.', + 'status_posted' => 'Posted', + 'status_offered' => 'Offered', + 'status_confirmed' => 'Confirmed', + 'status_in_transit' => 'In transit', + 'status_delivered' => 'Delivered', + 'footer_note' => 'This is the initial MVP slice. Payments are not yet connected.', + 'marketing_title_1' => 'For Shippers', + 'marketing_desc_1' => 'Find the right truck for your cargo quickly and securely. Post your load and get offers instantly.', + 'marketing_title_2' => 'For Truck Owners', + 'marketing_desc_2' => 'Maximize your earnings and eliminate empty miles. Browse available shipments and offer your rate.', + 'motivation_phrase' => 'Empowering the logistics of tomorrow.', + 'why_choose_us' => 'Why Choose CargoLink?', + 'feature_1_title' => 'Fast Matching', + 'feature_1_desc' => 'Connect with available trucks or shipments in minutes.', + 'feature_2_title' => 'Secure Payments', + 'feature_2_desc' => 'Your transactions are protected with security.', + 'feature_3_title' => 'Verified Users', + 'feature_3_desc' => 'We verify all truck owners to ensure peace of mind.', + 'view_faq' => 'View FAQ', + 'faq_title' => 'Have Questions?', + 'faq_subtitle' => 'Check out our Frequently Asked Questions to learn more about how our platform works.', + 'motivation_title' => 'Ready to transform your logistics?', + 'motivation_subtitle' => 'Join our platform today to find reliable trucks or secure the best shipments in the market.', + 'company' => 'Company', + 'about_us' => 'About Us', + 'careers' => 'Careers', + 'contact' => 'Contact', + 'resources' => 'Resources', + 'help_center' => 'Help Center / FAQ', + 'terms_of_service' => 'Terms of Service', + 'privacy_policy' => 'Privacy Policy', + 'language' => 'Language', + 'all_rights_reserved' => 'All rights reserved.', + 'dashboard' => 'Dashboard', + 'shipments' => 'Shipments', + 'reports' => 'Reports', + 'summary_report' => 'Summary Report', + 'shipments_by_origin_country' => 'Shipments by Origin Country', + 'shipments_by_dest_country' => 'Shipments by Destination Country', + 'shipments_by_origin_city' => 'Shipments by Origin City', + 'shipments_by_dest_city' => 'Shipments by Destination City', + 'shipments_by_shipper' => 'Shipments by Shipper', + 'generated' => 'Generated', + 'report_type' => 'Report Type', + 'period' => 'Period', + 'analyze_performance' => 'Analyze platform performance and metrics.', + 'print' => 'Print', + 'start_date' => 'Start Date', + 'end_date' => 'End Date', + 'apply_filter' => 'Apply Filter', + 'no_paid_shipments' => 'No paid shipments found for this period.', + 'name' => 'Name', + 'total_amount' => 'Total Amount', + 'profit' => 'Profit', + 'total_label' => 'Total', + 'printed_by' => 'Printed By', + 'analytics' => 'Analytics', + 'shipper_shipments' => 'Shipper Shipments', + 'truck_owners_statements' => 'Truck Owners Statements', + 'nav_platform_users' => 'Platform Users', + 'settings' => 'Settings', + 'company_setting' => 'Company Setting', + 'integrations' => 'Integrations', + 'notification_templates' => 'Notification Templates', + 'locations' => 'Locations', + 'countries' => 'Countries', + 'cities' => 'Cities', + 'users' => 'Users', + 'shippers' => 'Shippers', + 'truck_owners' => 'Truck Owners', + 'user_registration' => 'User Registration', + 'pages' => 'Pages', + 'faqs' => 'FAQs', + 'landing_pages' => 'Landing Pages', + 'edit_homepage' => 'Edit homepage content and sections', + 'view_details' => 'View Details', + 'manage_shippers' => 'Manage Shippers', + 'manage_registered_shippers' => 'Manage registered shippers.', + 'search_placeholder_shipper' => 'Search name, email, company...', + 'all_statuses' => 'All Statuses', + 'pending' => 'Pending', + 'rejected' => 'Rejected', + 'active' => 'Active', + 'no_shippers_criteria' => 'No shippers found matching your criteria.', + 'no_shippers_registered' => 'No shippers registered yet.', + 'name_company' => 'Name / Company', + 'location' => 'Location', + 'edit_shipper' => 'Edit Shipper', + 'approve' => 'Approve', + 'reject' => 'Reject', + 'delete' => 'Delete', + 'delete_confirm_shipper' => 'Delete this shipper forever?', + 'loading' => 'Loading...', + 'manage_truck_owners' => 'Manage Truck Owners', + 'review_registrations' => 'Review registrations and approve truck owners.', + 'search_placeholder_owner' => 'Search name, email, plate...', + 'no_owners_criteria' => 'No truck owners found matching your criteria.', + 'no_owners_registered' => 'No truck owners registered yet.', + 'name_email' => 'Name / Email', + 'truck_info' => 'Truck Info', + 'documents' => 'Documents', + 'view_docs' => 'View Docs', + 'edit_owner' => 'Edit Owner', + 'delete_confirm_owner' => 'Delete this truck owner forever?', + 'docs_for' => 'Documents for', + 'truck_reg' => 'Truck Registration', + 'no_picture' => 'No picture uploaded.', + 'cap' => 'Cap', + 'manage_shipments' => 'Manage Shipments', + 'shipments_header' => 'Shipments', + 'shipments_subtitle' => 'Manage all shipments across the platform.', + 'flash_shipment_deleted' => 'Shipment deleted successfully.', + 'search_shipments_placeholder' => 'Search shipments...', + 'search_label' => 'Search', + 'sort_by' => 'Sort By', + 'sort_newest' => 'Newest First', + 'sort_oldest' => 'Oldest First', + 'sort_pickup_soonest' => 'Pickup Date (Soonest)', + 'sort_pickup_latest' => 'Pickup Date (Latest)', + 'no_shipments_found_criteria' => 'No shipments found matching your criteria.', + 'no_shipments_platform' => 'No shipments found on the platform yet.', + 'id_col' => 'ID', + 'dates_col' => 'Dates', + 'from_label' => 'From:', + 'to_label' => 'To:', + 'pick_label' => 'Pick:', + 'drop_label' => 'Drop:', + 'view_shipment' => 'View Shipment', + 'edit_shipment_tooltip' => 'Edit Shipment', + 'confirm_delete_shipment' => 'Delete this shipment?', + 'showing' => 'Showing', + 'of' => 'of', + 'previous' => 'Previous', + 'next' => 'Next', + 'error_occurred' => 'An error occurred', + 'failed_load_form' => 'Failed to load form.', + 'edit_shipment_title' => 'Edit Shipment #', + 'update_shipment_details' => 'Update shipment details and status.', + 'shipment_not_found' => 'Shipment not found', + 'shipment_updated_success' => 'Shipment updated successfully.', + 'invalid_id' => 'Invalid ID', + 'back' => 'Back', + 'shipment_details' => 'Shipment Details', + 'origin_country' => 'Origin Country', + 'destination_country' => 'Destination Country', + 'select_country_placeholder' => 'Select Country', + 'select_city_placeholder' => 'Select City', + 'loading_cities' => 'Loading...', + 'error_loading_cities' => 'Error loading cities', + 'cancel' => 'Cancel', + 'my_profile' => 'My Profile', + 'profile_picture' => 'Profile Picture', + 'change_picture' => 'Change Picture', + 'picture_hint' => 'Click the camera icon to update.', + 'full_name' => 'Full Name', + 'email_address' => 'Email Address', + 'email_hint' => 'Email cannot be changed.', + 'account_role' => 'Account Role', + 'change_password' => 'Change Password', + 'new_password' => 'New Password', + 'confirm_password' => 'Confirm Password', + 'save_changes' => 'Save Changes', + 'passwords_do_not_match' => 'Passwords do not match.', + 'password_too_short' => 'Password must be at least 6 characters.', + 'profile_updated' => 'Profile updated successfully.', + 'password_updated' => 'Password updated successfully.', + 'upload_failed' => 'File upload failed.', + 'invalid_image' => 'Invalid image format. Allowed: JPG, PNG, GIF, WEBP.', + 'login_title' => 'Login', + 'login_subtitle' => 'Access your account', + 'forgot_password' => 'Forgot Password?', + 'email_placeholder' => 'name@example.com', + 'password_placeholder' => 'Enter your password', + 'sign_in' => 'Sign In', + 'dont_have_account' => 'Don\'t have an account?', + 'register_now' => 'Register Now', + 'reset_password_title' => 'Reset Password', + 'reset_password_subtitle' => 'Enter your email to receive a reset link', + 'send_reset_link' => 'Send Reset Link', + 'back_to_login' => 'Back to Login', + 'timezone' => 'Timezone', + 'whatsapp_settings' => 'WhatsApp Settings', + 'enable_whatsapp' => 'Enable WhatsApp Notifications', + 'wablas_domain' => 'Wablas Domain', + 'wablas_api_token' => 'Wablas API Token', + 'reg_title' => 'Registration', + 'reg_subtitle' => 'Create an account to get started', + 'reg_success_pending' => 'Registration successful. Your account is pending approval.', + 'reg_success' => 'Registration successful. You can now login.', + 'role' => 'Role', + 'shipper' => 'Shipper', + 'truck_owner' => 'Truck Owner', + 'email' => 'Email', + 'password' => 'Password', + 'phone' => 'Phone Number', + 'country' => 'Country', + 'select_country' => 'Select Country', + 'city' => 'City', + 'select_city' => 'Select City', + 'address' => 'Address', + 'shipper_details' => 'Shipper Details', + 'company_name' => 'Company Name', + 'truck_details' => 'Truck Details', + 'truck_type' => 'Truck Type', + 'load_capacity' => 'Load Capacity (Tons)', + 'plate_no' => 'Plate Number', + 'bank_account' => 'Bank Account Number', + 'bank_name' => 'Bank Name', + 'bank_branch' => 'Branch Name', + 'id_card_front' => 'ID Card (Front)', + 'id_card_back' => 'ID Card (Back)', + 'truck_reg_front' => 'Truck Registration (Front)', + 'truck_reg_back' => 'Truck Registration (Back)', + 'truck_picture' => 'Truck Picture', + 'create_account' => 'Create Account', + 'back_to_admin' => 'Back to Admin', + 'back_to_home' => 'Back to Home', + 'total_revenue' => 'Total Revenue', + 'shipments_analytics' => 'Shipments Analytics', + 'export_csv' => 'Export CSV', + 'edit_template' => 'Edit Template', + 'back_to_list' => 'Back to List', + 'template_not_found' => 'Template not found.', + 'english_required' => 'English subject and body are required.', + 'template_updated' => 'Template updated successfully.', + 'english_version' => 'English', + 'arabic_version' => 'Arabic', + 'email_subject' => 'Email Subject', + 'email_body' => 'Email Body', + 'email_body_help' => 'Use placeholders like {shipment_id}, {user_name}, {offer_price}.', + 'whatsapp_body' => 'WhatsApp Body', + 'event_name' => 'Event Name', + 'subject_en' => 'Subject (EN)', + 'subject_ar' => 'Subject (AR)', +), + "ar" => array ( + 'app_name' => 'CargoLink', + 'nav_home' => 'نظرة عامة', + 'nav_login' => 'تسجيل الدخول', + 'nav_shipper' => 'لوحة الشاحن', + 'nav_owner' => 'لوحة مالك الشاحنة', + 'nav_admin' => 'لوحة الإدارة', + 'nav_theme' => 'المظهر', + 'nav_get_started' => 'ابدأ الآن', + 'hero_title' => 'انقل شحنتك بسرعة مع شاحنات موثوقة.', + 'hero_subtitle' => 'أنشئ شحنة، استلم عروضاً، وادفع عبر ثواني أو التحويل البنكي.', + 'hero_tagline' => 'منصة لوجستية متعددة اللغات', + 'register_shipper' => 'التسجيل كشاحن', + 'register_owner' => 'التسجيل كمالك شاحنة', + 'cta_shipper' => 'إنشاء شحنة', + 'cta_owner' => 'البحث عن الشحنات', + 'cta_admin' => 'الدخول للإدارة', + 'stats_shipments' => 'الشحنات المنشورة', + 'stats_offers' => 'العروض الحالية', + 'stats_confirmed' => 'الرحلات المؤكدة', + 'section_workflow' => 'طريقة العمل', + 'recent_shipments' => 'أحدث الشحنات', + 'step_post' => 'يقوم الشاحن بإدخال تفاصيل الشحنة وطريقة الدفع.', + 'step_offer' => 'يرسل أصحاب الشاحنات أفضل عروضهم.', + 'step_confirm' => 'تؤكد الإدارة الحجز وتحدث الحالة.', + 'step_confirm_desc' => 'حجز آمن وتتبع التسليم حتى الانتهاء.', + 'shipper_dashboard' => 'لوحة الشاحن', + 'new_shipment' => 'إنشاء شحنة', + 'shipper_name' => 'اسم الشاحن', + 'shipper_company' => 'الشركة', + 'origin' => 'مدينة الانطلاق', + 'destination' => 'مدينة الوصول', + 'cargo' => 'وصف الحمولة', + 'cargo_placeholder' => 'مثال: 20 منصة إلكترونيات', + 'weight' => 'الوزن (طن)', + 'pickup_date' => 'تاريخ الاستلام', + 'delivery_date' => 'تاريخ التسليم', + 'payment_method' => 'طريقة الدفع', + 'payment_thawani' => 'الدفع الإلكتروني عبر ثواني', + 'payment_bank' => 'تحويل بنكي', + 'submit_shipment' => 'إرسال الشحنة', + 'shipments_list' => 'أحدث الشحنات', + 'status' => 'الحالة', + 'offer' => 'أفضل عرض', + 'actions' => 'إجراءات', + 'view' => 'عرض', + 'owner_dashboard' => 'لوحة مالك الشاحنة', + 'available_shipments' => 'الشحنات المتاحة', + 'offer_price' => 'سعر العرض', + 'offer_owner' => 'اسم مالك الشاحنة', + 'submit_offer' => 'إرسال العرض', + 'admin_dashboard' => 'لوحة الإدارة', + 'update_status' => 'تحديث الحالة', + 'save' => 'حفظ', + 'shipment_detail' => 'تفاصيل الشحنة', + 'created_at' => 'تم الإنشاء', + 'best_offer' => 'أفضل عرض', + 'assign_owner' => 'المالك المعتمد', + 'no_shipments' => 'لا توجد شحنات بعد. ابدأ بإنشاء أول شحنة.', + 'no_offers' => 'لا توجد عروض بعد.', + 'success_shipment' => 'تم نشر الشحنة بنجاح.', + 'success_offer' => 'تم إرسال العرض إلى الشاحن.', + 'success_status' => 'تم تحديث الحالة.', + 'error_required' => 'يرجى تعبئة جميع الحقول المطلوبة.', + 'error_invalid' => 'يرجى إدخال قيم صحيحة.', + 'status_posted' => 'منشورة', + 'status_offered' => 'بعرض', + 'status_confirmed' => 'مؤكدة', + 'status_in_transit' => 'قيد النقل', + 'status_delivered' => 'تم التسليم', + 'footer_note' => 'هذه هي النسخة الأولية. الدفع غير متصل بعد.', + 'marketing_title_1' => 'للشاحنين', + 'marketing_desc_1' => 'ابحث عن الشاحنة المناسبة لحمولتك بسرعة وأمان.', + 'marketing_title_2' => 'لأصحاب الشاحنات', + 'marketing_desc_2' => 'عظّم أرباحك وتجنب العودة فارغاً.', + 'motivation_phrase' => 'تمكين الخدمات اللوجستية للمستقبل.', + 'why_choose_us' => 'لماذا تختار كارجو لينك؟', + 'feature_1_title' => 'مطابقة سريعة', + 'feature_1_desc' => 'تواصل مع الشاحنات المتاحة في دقائق.', + 'feature_2_title' => 'مدفوعات آمنة', + 'feature_2_desc' => 'معاملاتك محمية بأعلى معايير الأمان.', + 'feature_3_title' => 'مستخدمون موثوقون', + 'feature_3_desc' => 'نقوم بالتحقق من جميع أصحاب الشاحنات لضمان راحتك.', + 'view_faq' => 'عرض الأسئلة الشائعة', + 'faq_title' => 'لديك أسئلة؟', + 'faq_subtitle' => 'اطلع على الأسئلة الشائعة لمعرفة المزيد حول كيفية عمل منصتنا.', + 'motivation_title' => 'هل أنت مستعد لتحويل خدماتك اللوجستية؟', + 'motivation_subtitle' => 'انضم إلى منصتنا اليوم للعثور على شاحنات موثوقة أو تأمين أفضل الشحنات في السوق.', + 'company' => 'الشركة', + 'about_us' => 'معلومات عنا', + 'careers' => 'الوظائف', + 'contact' => 'اتصل بنا', + 'resources' => 'الموارد', + 'help_center' => 'مركز المساعدة / الأسئلة الشائعة', + 'terms_of_service' => 'شروط الخدمة', + 'privacy_policy' => 'سياسة الخصوصية', + 'language' => 'اللغة', + 'all_rights_reserved' => 'جميع الحقوق محفوظة.', + 'dashboard' => 'لوحة القيادة', + 'shipments' => 'الشحنات', + 'reports' => 'التقارير', + 'summary_report' => 'تقرير ملخص', + 'shipments_by_origin_country' => 'الشحنات حسب بلد المنشأ', + 'shipments_by_dest_country' => 'الشحنات حسب بلد الوجهة', + 'shipments_by_origin_city' => 'الشحنات حسب مدينة المنشأ', + 'shipments_by_dest_city' => 'الشحنات حسب مدينة الوجهة', + 'shipments_by_shipper' => 'الشحنات حسب الشاحن', + 'generated' => 'تم الإنشاء', + 'report_type' => 'نوع التقرير', + 'period' => 'الفترة', + 'analyze_performance' => 'تحليل أداء المنصة والمقاييس.', + 'print' => 'طباعة', + 'start_date' => 'تاريخ البدء', + 'end_date' => 'تاريخ الانتهاء', + 'apply_filter' => 'تطبيق الفلتر', + 'no_paid_shipments' => 'لم يتم العثور على شحنات مدفوعة لهذه الفترة.', + 'name' => 'الاسم', + 'total_amount' => 'المبلغ الإجمالي', + 'profit' => 'الربح', + 'total_label' => 'المجموع', + 'printed_by' => 'طبع بواسطة', + 'analytics' => 'التحليلات', + 'shipper_shipments' => 'شحنات الشاحنين', + 'truck_owners_statements' => 'كشوف حساب أصحاب الشاحنات', + 'nav_platform_users' => 'مستخدمو المنصة', + 'settings' => 'الإعدادات', + 'company_setting' => 'إعدادات الشركة', + 'integrations' => 'التكاملات', + 'notification_templates' => 'قوالب الإشعارات', + 'locations' => 'المواقع', + 'countries' => 'البلدان', + 'cities' => 'المدن', + 'users' => 'المستخدمون', + 'shippers' => 'الشاحنون', + 'truck_owners' => 'أصحاب الشاحنات', + 'user_registration' => 'تسجيل المستخدم', + 'pages' => 'الصفحات', + 'faqs' => 'الأسئلة الشائعة', + 'landing_pages' => 'إعدادات الصفحة الرئيسية', + 'edit_homepage' => 'تعديل محتوى الصفحة الرئيسية والأقسام', + 'view_details' => 'عرض التفاصيل', + 'manage_shippers' => 'إدارة الشاحنين', + 'manage_registered_shippers' => 'إدارة الشاحنين المسجلين.', + 'search_placeholder_shipper' => 'ابحث بالاسم، البريد، الشركة...', + 'all_statuses' => 'كل الحالات', + 'pending' => 'قيد الانتظار', + 'rejected' => 'مرفوض', + 'active' => 'نشط', + 'no_shippers_criteria' => 'لم يتم العثور على شاحنين مطابقين لمعاييرك.', + 'no_shippers_registered' => 'لا يوجد شاحنين مسجلين بعد.', + 'name_company' => 'الاسم / الشركة', + 'location' => 'الموقع', + 'edit_shipper' => 'تعديل الشاحن', + 'approve' => 'موافقة', + 'reject' => 'رفض', + 'delete' => 'حذف', + 'delete_confirm_shipper' => 'هل أنت متأكد من حذف هذا الشاحن نهائياً؟', + 'loading' => 'جاري التحميل...', + 'manage_truck_owners' => 'إدارة أصحاب الشاحنات', + 'review_registrations' => 'مراجعة التسجيلات والموافقة على أصحاب الشاحنات.', + 'search_placeholder_owner' => 'ابحث بالاسم، البريد، اللوحة...', + 'no_owners_criteria' => 'لم يتم العثور على أصحاب شاحنات مطابقين لمعاييرك.', + 'no_owners_registered' => 'لا يوجد أصحاب شاحنات مسجلين بعد.', + 'name_email' => 'الاسم / البريد', + 'truck_info' => 'معلومات الشاحنة', + 'documents' => 'المستندات', + 'view_docs' => 'عرض المستندات', + 'edit_owner' => 'تعديل المالك', + 'delete_confirm_owner' => 'هل أنت متأكد من حذف مالك الشاحنة هذا نهائياً؟', + 'docs_for' => 'مستندات', + 'truck_reg' => 'تسجيل الشاحنة', + 'no_picture' => 'لا توجد صورة محملة.', + 'cap' => 'السعة', + 'manage_shipments' => 'إدارة الشحنات', + 'shipments_header' => 'الشحنات', + 'shipments_subtitle' => 'إدارة جميع الشحنات عبر المنصة.', + 'flash_shipment_deleted' => 'تم حذف الشحنة بنجاح.', + 'search_shipments_placeholder' => 'البحث في الشحنات...', + 'search_label' => 'بحث', + 'sort_by' => 'ترتيب حسب', + 'sort_newest' => 'الأحدث أولاً', + 'sort_oldest' => 'الأقدم أولاً', + 'sort_pickup_soonest' => 'تاريخ الاستلام (الأقرب)', + 'sort_pickup_latest' => 'تاريخ الاستلام (الأبعد)', + 'no_shipments_found_criteria' => 'لم يتم العثور على شحنات مطابقة لمعايير البحث.', + 'no_shipments_platform' => 'لا توجد شحنات على المنصة بعد.', + 'id_col' => 'المعرف', + 'dates_col' => 'التواريخ', + 'from_label' => 'من:', + 'to_label' => 'إلى:', + 'pick_label' => 'استلام:', + 'drop_label' => 'تسليم:', + 'view_shipment' => 'عرض الشحنة', + 'edit_shipment_tooltip' => 'تعديل الشحنة', + 'confirm_delete_shipment' => 'حذف هذه الشحنة؟', + 'showing' => 'عرض', + 'of' => 'من', + 'previous' => 'السابق', + 'next' => 'التالي', + 'error_occurred' => 'حدث خطأ', + 'failed_load_form' => 'فشل تحميل النموذج.', + 'edit_shipment_title' => 'تعديل الشحنة #', + 'update_shipment_details' => 'تحديث تفاصيل الشحنة والحالة.', + 'shipment_not_found' => 'الشحنة غير موجودة', + 'shipment_updated_success' => 'تم تحديث الشحنة بنجاح.', + 'invalid_id' => 'معرف غير صحيح', + 'back' => 'رجوع', + 'shipment_details' => 'تفاصيل الشحنة', + 'origin_country' => 'بلد الانطلاق', + 'destination_country' => 'بلد الوصول', + 'select_country_placeholder' => 'اختر البلد', + 'select_city_placeholder' => 'اختر المدينة', + 'loading_cities' => 'جاري التحميل...', + 'error_loading_cities' => 'خطأ في تحميل المدن', + 'cancel' => 'إلغاء', + 'my_profile' => 'ملفي الشخصي', + 'profile_picture' => 'صورة الملف الشخصي', + 'change_picture' => 'تغيير الصورة', + 'picture_hint' => 'انقر على أيقونة الكاميرا للتحديث.', + 'full_name' => 'الاسم الكامل', + 'email_address' => 'البريد الإلكتروني', + 'email_hint' => 'لا يمكن تغيير البريد الإلكتروني.', + 'account_role' => 'نوع الحساب', + 'change_password' => 'تغيير كلمة المرور', + 'new_password' => 'كلمة المرور الجديدة', + 'confirm_password' => 'تأكيد كلمة المرور', + 'save_changes' => 'حفظ التغييرات', + 'passwords_do_not_match' => 'كلمات المرور غير متطابقة.', + 'password_too_short' => 'يجب أن تكون كلمة المرور 6 أحرف على الأقل.', + 'profile_updated' => 'تم تحديث الملف الشخصي بنجاح.', + 'password_updated' => 'تم تحديث كلمة المرور بنجاح.', + 'upload_failed' => 'فشل تحميل الملف.', + 'invalid_image' => 'تنسيق الصورة غير صالح. المسموح: JPG, PNG, GIF, WEBP.', + 'login_title' => 'تسجيل الدخول', + 'login_subtitle' => 'الدخول إلى حسابك', + 'forgot_password' => 'نسيت كلمة المرور؟', + 'email_placeholder' => 'name@example.com', + 'password_placeholder' => 'أدخل كلمة المرور', + 'sign_in' => 'تسجيل الدخول', + 'dont_have_account' => 'ليس لديك حساب؟', + 'register_now' => 'سجل الآن', + 'reset_password_title' => 'إعادة تعيين كلمة المرور', + 'reset_password_subtitle' => 'أدخل بريدك الإلكتروني لتلقي رابط إعادة التعيين', + 'send_reset_link' => 'إرسال رابط إعادة التعيين', + 'back_to_login' => 'العودة لتسجيل الدخول', + 'timezone' => 'المنطقة الزمنية', + 'whatsapp_settings' => 'إعدادات واتساب', + 'enable_whatsapp' => 'تفعيل إشعارات واتساب', + 'wablas_domain' => 'نطاق Wablas', + 'wablas_api_token' => 'رمز API لـ Wablas', + 'reg_title' => 'إنشاء حساب جديد', + 'reg_subtitle' => 'أنشئ حساباً للبدء', + 'reg_success_pending' => 'تم التسجيل بنجاح. حسابك بانتظار الموافقة.', + 'reg_success' => 'تم التسجيل بنجاح. يمكنك تسجيل الدخول الآن.', + 'role' => 'نوع الحساب', + 'shipper' => 'شاحن', + 'truck_owner' => 'مالك شاحنة', + 'email' => 'البريد الإلكتروني', + 'password' => 'كلمة المرور', + 'phone' => 'رقم الهاتف', + 'country' => 'الدولة', + 'select_country' => 'اختر الدولة', + 'city' => 'المدينة', + 'select_city' => 'اختر المدينة', + 'address' => 'العنوان', + 'shipper_details' => 'تفاصيل الشاحن', + 'company_name' => 'اسم الشركة', + 'truck_details' => 'تفاصيل الشاحنة', + 'truck_type' => 'نوع الشاحنة', + 'load_capacity' => 'سعة الحمولة (طن)', + 'plate_no' => 'رقم اللوحة', + 'bank_account' => 'رقم الحساب البنكي', + 'bank_name' => 'اسم البنك', + 'bank_branch' => 'اسم الفرع', + 'id_card_front' => 'البطاقة الشخصية (أمام)', + 'id_card_back' => 'البطاقة الشخصية (خلف)', + 'truck_reg_front' => 'ملكية الشاحنة (أمام)', + 'truck_reg_back' => 'ملكية الشاحنة (خلف)', + 'truck_picture' => 'صورة الشاحنة', + 'create_account' => 'إنشاء حساب', + 'back_to_admin' => 'العودة للإدارة', + 'back_to_home' => 'العودة للرئيسية', + 'total_revenue' => 'إجمالي الإيرادات', + 'shipments_analytics' => 'تحليلات الشحنات', + 'export_csv' => 'تصدير CSV', + 'edit_template' => 'تعديل القالب', + 'back_to_list' => 'العودة للقائمة', + 'template_not_found' => 'القالب غير موجود.', + 'english_required' => 'موضوع ونص البريد الإنجليزي مطلوبان.', + 'template_updated' => 'تم تحديث القالب بنجاح.', + 'english_version' => 'الإنجليزية', + 'arabic_version' => 'العربية', + 'email_subject' => 'موضوع البريد الإلكتروني', + 'email_body' => 'نص البريد الإلكتروني', + 'email_body_help' => 'استخدم المتغيرات مثل {shipment_id}, {user_name}, {offer_price}.', + 'whatsapp_body' => 'نص الواتساب', + 'event_name' => 'اسم الحدث', + 'subject_en' => 'الموضوع (إنجليزي)', + 'subject_ar' => 'الموضوع (عربي)', + +) ]; function t(string $key): string { global $translations, $lang; - return $translations[$lang][$key] ?? $key; + return $translations[$lang][$key] ?? ucwords(str_replace('_', ' ', $key)); } function e($value): string @@ -1126,12 +629,8 @@ function e($value): string function ensure_schema(): void { - // Make sure we have a connection - if (!db()) return; - try { db()->exec("ALTER TABLE shipments ADD COLUMN pod_path VARCHAR(255) NULL AFTER offer_owner"); } catch (Exception $e) {} - - db()->exec(" CREATE TABLE IF NOT EXISTS landing_sections ( + db()->exec("\n CREATE TABLE IF NOT EXISTS landing_sections ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, subtitle TEXT NULL, @@ -1177,120 +676,55 @@ SQL; try { db()->exec("ALTER TABLE shipments ADD COLUMN platform_fee DECIMAL(10,2) DEFAULT 0.00 AFTER offer_price"); } catch (Exception $e) {} try { db()->exec("ALTER TABLE shipments ADD COLUMN total_price DECIMAL(10,2) DEFAULT 0.00 AFTER platform_fee"); } catch (Exception $e) {} try { db()->exec("ALTER TABLE shipments ADD COLUMN payment_status ENUM('unpaid', 'paid') DEFAULT 'unpaid' AFTER status"); } catch (Exception $e) {} - - // Truck owner documents - try { db()->exec("ALTER TABLE users ADD COLUMN id_card_front VARCHAR(255) NULL"); } catch (Exception $e) {} - try { db()->exec("ALTER TABLE users ADD COLUMN id_card_back VARCHAR(255) NULL"); } catch (Exception $e) {} - try { db()->exec("ALTER TABLE users ADD COLUMN truck_reg_front VARCHAR(255) NULL"); } catch (Exception $e) {} - try { db()->exec("ALTER TABLE users ADD COLUMN truck_reg_back VARCHAR(255) NULL"); } catch (Exception $e) {} - try { db()->exec("ALTER TABLE users ADD COLUMN truck_picture VARCHAR(255) NULL"); } catch (Exception $e) {} - try { - db()->exec("CREATE TABLE IF NOT EXISTS notifications ( + db()->exec( + "CREATE TABLE IF NOT EXISTS users ( id INT AUTO_INCREMENT PRIMARY KEY, - user_id INT NOT NULL, - title VARCHAR(255) NOT NULL, - message TEXT NOT NULL, - is_read TINYINT(1) DEFAULT 0, + email VARCHAR(255) NOT NULL UNIQUE, + password VARCHAR(255) NOT NULL, + full_name VARCHAR(255) NOT NULL, + role ENUM('admin','shipper','truck_owner') NOT NULL, + status ENUM('pending','active','rejected') NOT NULL DEFAULT 'active', + profile_picture VARCHAR(255) NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP - )"); - } catch (Exception $e) {} + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4" + ); - // Add bank fields to users table if they don't exist - try { db()->exec("ALTER TABLE users ADD COLUMN bank_name VARCHAR(100) NULL AFTER truck_picture"); } catch (Exception $e) {} - try { db()->exec("ALTER TABLE users ADD COLUMN bank_branch VARCHAR(100) NULL AFTER bank_name"); } catch (Exception $e) {} - try { db()->exec("ALTER TABLE users ADD COLUMN bank_account VARCHAR(100) NULL AFTER bank_branch"); } catch (Exception $e) {} - - // Create notification_templates table - try { - db()->exec("CREATE TABLE IF NOT EXISTS notification_templates ( + db()->exec( + "CREATE TABLE IF NOT EXISTS shipper_profiles ( id INT AUTO_INCREMENT PRIMARY KEY, - code VARCHAR(50) NOT NULL UNIQUE, - name VARCHAR(100) NOT NULL, - subject VARCHAR(255) NOT NULL, - body TEXT NOT NULL, - sms_body TEXT NULL, - variables TEXT NULL COMMENT 'Comma separated list of available variables', - is_active TINYINT(1) DEFAULT 1, + user_id INT NOT NULL UNIQUE, + company_name VARCHAR(255) NOT NULL, + phone VARCHAR(40) NOT NULL, + country_id INT NULL, + city_id INT NULL, + address_line VARCHAR(255) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP - )"); - } catch (Exception $e) {} - - // Settings table - try { - db()->exec("CREATE TABLE IF NOT EXISTS settings ( + CONSTRAINT fk_shipper_user FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4" + ); + + db()->exec( + "CREATE TABLE IF NOT EXISTS truck_owner_profiles ( id INT AUTO_INCREMENT PRIMARY KEY, - setting_key VARCHAR(50) NOT NULL UNIQUE, - setting_value TEXT NULL, + user_id INT NOT NULL UNIQUE, + phone VARCHAR(40) NOT NULL, + country_id INT NULL, + city_id INT NULL, + address_line VARCHAR(255) NOT NULL, + truck_type VARCHAR(120) NOT NULL, + load_capacity DECIMAL(10,2) NOT NULL, + plate_no VARCHAR(80) NOT NULL, + bank_account VARCHAR(100) NULL, + bank_name VARCHAR(100) NULL, + bank_branch VARCHAR(100) NULL, + id_card_path TEXT NOT NULL, + truck_pic_path VARCHAR(255) NOT NULL, + registration_path TEXT NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP - )"); - } catch (Exception $e) {} - - // Permissions tables - try { - db()->exec("CREATE TABLE IF NOT EXISTS permissions ( - id INT AUTO_INCREMENT PRIMARY KEY, - name VARCHAR(50) NOT NULL UNIQUE, - description VARCHAR(255) NULL, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP - )"); - - db()->exec("CREATE TABLE IF NOT EXISTS user_permissions ( - user_id INT NOT NULL, - permission_id INT NOT NULL, - PRIMARY KEY (user_id, permission_id), - FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE, - FOREIGN KEY (permission_id) REFERENCES permissions(id) ON DELETE CASCADE - )"); - } catch (Exception $e) {} - - // Add user_id to shipments - try { db()->exec("ALTER TABLE shipments ADD COLUMN user_id INT NULL AFTER id"); } catch (Exception $e) {} - try { db()->exec("ALTER TABLE shipments ADD INDEX (user_id)"); } catch (Exception $e) {} - - // Add pod_file to shipments - try { db()->exec("ALTER TABLE shipments ADD COLUMN pod_file VARCHAR(255) NULL AFTER status"); } catch (Exception $e) {} -} - -function get_setting(string $key, $default = null) -{ - // Try to get from database first - try { - $stmt = db()->prepare("SELECT setting_value FROM settings WHERE setting_key = ?"); - $stmt->execute([$key]); - $val = $stmt->fetchColumn(); - if ($val !== false) { - return $val; - } - } catch (Throwable $e) {} - - return $default; -} - -function require_role(string $role): void -{ - if (!isset($_SESSION['user_id']) || !isset($_SESSION['user_role'])) { - header('Location: login.php'); - exit; - } - - if ($_SESSION['user_role'] !== $role && $_SESSION['user_role'] !== 'admin') { - // Admin can access everything - http_response_code(403); - die('Access Denied'); - } -} - -function get_flash(): ?array -{ - if (isset($_SESSION['flash'])) { - $flash = $_SESSION['flash']; - unset($_SESSION['flash']); - return $flash; - } - return null; + CONSTRAINT fk_owner_user FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4" + ); } function set_flash(string $type, string $message): void @@ -1298,62 +732,147 @@ function set_flash(string $type, string $message): void $_SESSION['flash'] = ['type' => $type, 'message' => $message]; } -function url_with_lang(string $url, array $params = []): string +function get_flash(): ?array { - global $lang; - $params['lang'] = $lang; - - $query = http_build_query($params); - - if (strpos($url, '?') !== false) { - return $url . '&' . $query; + if (!empty($_SESSION['flash'])) { + $flash = $_SESSION['flash']; + unset($_SESSION['flash']); + return $flash; } - return $url . '?' . $query; + return null; } -function current_url_with_lang(string $targetLang): string +function url_with_lang(string $path, array $params = []): string +{ + global $lang; + $params = array_merge(['lang' => $lang], $params); + return $path . '?' . http_build_query($params); +} + +function current_url_with_lang(string $newLang): string { $params = $_GET; - $params['lang'] = $targetLang; - $query = http_build_query($params); - $path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH); - return $path . '?' . $query; + $params['lang'] = $newLang; + $path = basename($_SERVER['PHP_SELF'] ?? 'index.php'); + return $path . '?' . http_build_query($params); } function status_label(string $status): string { - $key = 'status_' . $status; - return t($key); + $map = [ + 'posted' => t('status_posted'), + 'offered' => t('status_offered'), + 'confirmed' => t('status_confirmed'), + 'in_transit' => t('status_in_transit'), + 'delivered' => t('status_delivered'), + ]; + return $map[$status] ?? $status; +} + +function get_settings(): array +{ + static $settings = null; + if ($settings !== null) { + return $settings; + } + $settings = []; + try { + $stmt = db()->query("SELECT setting_key, setting_value FROM settings"); + while ($row = $stmt->fetch()) { + $settings[$row['setting_key']] = $row['setting_value']; + } + } catch (Throwable $e) {} + return $settings; +} + +function get_setting(string $key, $default = ''): string +{ + $settings = get_settings(); + return $settings[$key] ?? $default; +} + +function has_permission(string $permissionSlug, ?int $userId = null): bool +{ + if ($userId === null) { + if (!isset($_SESSION['user_id'])) { + return false; + } + $userId = $_SESSION['user_id']; + } + + static $cache = []; + $key = $userId . ':' . $permissionSlug; + + if (isset($cache[$key])) { + return $cache[$key]; + } + + try { + $stmt = db()->prepare( + "SELECT 1 + FROM user_permissions up + JOIN permissions p ON up.permission_id = p.id + WHERE up.user_id = ? AND p.slug = ?" + ); + $stmt->execute([$userId, $permissionSlug]); + $result = (bool) $stmt->fetchColumn(); + $cache[$key] = $result; + return $result; + } catch (Throwable $e) { + return false; + } } function format_currency(float $amount): string { - return number_format($amount, 2) . ' ' . t('currency_symbol'); + return number_format($amount, 3) . ' OMR'; } -function csrf_token(): string +function require_login(): void +{ + if (!isset($_SESSION['user_id'])) { + header('Location: ' . url_with_lang('login.php')); + exit; + } +} + +function require_role(string $role): void +{ + require_login(); + if ($_SESSION['user_role'] !== $role && $_SESSION['user_role'] !== 'admin') { + http_response_code(403); + die("Access Denied. You must be a " . ucfirst($role) . " to view this page."); + } +} + +function generate_csrf_token(): string { if (empty($_SESSION['csrf_token'])) { - try { - $_SESSION['csrf_token'] = bin2hex(random_bytes(32)); - } catch (Exception $e) { - $_SESSION['csrf_token'] = bin2hex(openssl_random_pseudo_bytes(32)); - } + $_SESSION['csrf_token'] = bin2hex(random_bytes(32)); } return $_SESSION['csrf_token']; } function csrf_field(): string { - return ''; + $token = generate_csrf_token(); + return ''; } function validate_csrf_token(): void { if ($_SERVER['REQUEST_METHOD'] === 'POST') { - if (!isset($_POST['csrf_token']) || !hash_equals(csrf_token(), $_POST['csrf_token'])) { + if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) { http_response_code(403); - die(t('csrf_error')); + die("CSRF validation failed. Please refresh the page and try again."); } } -} \ No newline at end of file +} + +// Set timezone from settings +try { + $tz = get_setting('timezone', 'UTC'); + if ($tz && in_array($tz, DateTimeZone::listIdentifiers())) { + date_default_timezone_set($tz); + } +} catch (Throwable $e) {} \ No newline at end of file diff --git a/patch_app_translations.php b/patch_app_translations.php deleted file mode 100644 index 06567fc..0000000 --- a/patch_app_translations.php +++ /dev/null @@ -1,394 +0,0 @@ - 'CargoLink', - 'nav_home' => 'Overview', - 'nav_shipper' => 'Shipper Desk', - 'nav_owner' => 'Truck Owner Desk', - 'nav_admin' => 'Admin Panel', - 'hero_title' => 'Move cargo faster with verified trucks.', - 'hero_subtitle' => 'Post shipments, collect offers, and pay via Thawani or bank transfer. Built for local and nearby cross-border moves.', - 'hero_tagline' => 'Multilingual Logistics Marketplace', - 'register_shipper' => 'Register as Shipper', - 'register_owner' => 'Register as Truck Owner', - 'cta_shipper' => 'Post a shipment', - 'cta_owner' => 'Find loads', - 'cta_admin' => 'Open admin', - 'stats_shipments' => 'Shipments posted', - 'stats_offers' => 'Active offers', - 'stats_confirmed' => 'Confirmed trips', - 'section_workflow' => 'How it works', - 'recent_shipments' => 'Recent shipments', - 'step_post' => 'Shipper posts cargo details and preferred payment.', - 'step_offer' => 'Truck owners respond with their best rate.', - 'step_confirm' => 'Admin confirms booking and status.', - 'step_confirm_desc' => 'Secure booking and track the delivery until completion.', - 'shipper_dashboard' => 'Shipper Dashboard', - 'new_shipment' => 'Create shipment', - 'shipper_name' => 'Shipper name', - 'shipper_company' => 'Company', - 'origin' => 'Origin city', - 'destination' => 'Destination city', - 'cargo' => 'Cargo description', - 'cargo_placeholder' => 'e.g. 20 Pallets of Electronics', - 'weight' => 'Weight (tons)', - 'pickup_date' => 'Pickup date', - 'delivery_date' => 'Delivery date', - 'payment_method' => 'Payment method', - 'payment_thawani' => 'Thawani online payment', - 'payment_bank' => 'Bank transfer', - 'submit_shipment' => 'Submit shipment', - 'shipments_list' => 'Your latest shipments', - 'status' => 'Status', - 'offer' => 'Best offer', - 'actions' => 'Actions', - 'view' => 'View', - 'owner_dashboard' => 'Truck Owner Dashboard', - 'available_shipments' => 'Available shipments', - 'offer_price' => 'Offer price', - 'offer_owner' => 'Truck owner name', - 'submit_offer' => 'Send offer', - 'admin_dashboard' => 'Admin Dashboard', - 'update_status' => 'Update status', - 'save' => 'Save', - 'shipment_detail' => 'Shipment detail', - 'created_at' => 'Created', - 'best_offer' => 'Best offer', - 'assign_owner' => 'Assigned owner', - 'no_shipments' => 'No shipments yet. Create the first one to get started.', - 'no_offers' => 'No offers yet.', - 'success_shipment' => 'Shipment posted successfully.', - 'success_offer' => 'Offer submitted to the shipper.', - 'success_status' => 'Status updated.', - 'error_required' => 'Please fill in all required fields.', - 'error_invalid' => 'Please enter valid values.', - 'status_posted' => 'Posted', - 'status_offered' => 'Offered', - 'status_confirmed' => 'Confirmed', - 'status_in_transit' => 'In transit', - 'status_delivered' => 'Delivered', - 'footer_note' => 'This is the initial MVP slice. Payments are not yet connected.', - 'marketing_title_1' => 'For Shippers', - 'marketing_desc_1' => 'Find the right truck for your cargo quickly and securely. Post your load and get offers instantly.', - 'marketing_title_2' => 'For Truck Owners', - 'marketing_desc_2' => 'Maximize your earnings and eliminate empty miles. Browse available shipments and offer your rate.', - 'motivation_phrase' => 'Empowering the logistics of tomorrow.', - 'why_choose_us' => 'Why Choose CargoLink?', - 'feature_1_title' => 'Fast Matching', - 'feature_1_desc' => 'Connect with available trucks or shipments in minutes.', - 'feature_2_title' => 'Secure Payments', - 'feature_2_desc' => 'Your transactions are protected with security.', - 'feature_3_title' => 'Verified Users', - 'feature_3_desc' => 'We verify all truck owners to ensure peace of mind.', - 'view_faq' => 'View FAQ', - 'faq_title' => 'Have Questions?', - 'faq_subtitle' => 'Check out our Frequently Asked Questions to learn more about how our platform works.', - 'motivation_title' => 'Ready to transform your logistics?', - 'motivation_subtitle' => 'Join our platform today to find reliable trucks or secure the best shipments in the market.', - 'company' => 'Company', - 'about_us' => 'About Us', - 'careers' => 'Careers', - 'contact' => 'Contact', - 'resources' => 'Resources', - 'help_center' => 'Help Center / FAQ', - 'terms_of_service' => 'Terms of Service', - 'privacy_policy' => 'Privacy Policy', - 'language' => 'Language', - 'all_rights_reserved' => 'All rights reserved.', - 'dashboard' => 'Dashboard', - 'settings' => 'Settings', - 'company_setting' => 'Company Setting', - 'integrations' => 'Integrations', - 'locations' => 'Locations', - 'countries' => 'Countries', - 'cities' => 'Cities', - 'users' => 'Users', - 'shippers' => 'Shippers', - 'truck_owners' => 'Truck Owners', - 'user_registration' => 'User Registration', - 'pages' => 'Pages', - 'faqs' => 'FAQs', - 'landing_pages' => 'Landing Pages', - 'login_title' => 'Welcome Back', - 'login_subtitle' => 'Sign in to your account to continue', - 'email_address' => 'Email address', - 'email_placeholder' => 'name@example.com', - 'password' => 'Password', - 'forgot_password' => 'Forgot password?', - 'password_placeholder' => 'Enter your password', - 'change_password' => 'Change Password', - 'new_password' => 'New Password', - 'confirm_password' => 'Confirm Password', - 'passwords_do_not_match' => 'Passwords do not match.', - 'password_too_short' => 'Password must be at least 6 characters.', - 'password_updated' => 'Password updated successfully.', - 'sign_in' => 'Sign In', - 'dont_have_account' => 'Don\'t have an account?', - 'register_now' => 'Register now', - 'reset_password_title' => 'Reset Password', - 'reset_password_subtitle' => 'Enter your email and we\'ll send you a link to reset your password', - 'send_reset_link' => 'Send Reset Link', - 'back_to_login' => 'Back to login', - 'invalid_image' => 'Invalid image format. Please upload JPG, PNG, GIF, or WEBP.', - 'upload_failed' => 'Failed to save uploaded file.', - 'profile_updated' => 'Profile updated successfully.', - 'my_profile' => 'My Profile', - 'profile_picture' => 'Profile Picture', - 'change_picture' => 'Change Picture', - 'picture_hint' => 'JPG, PNG, or GIF up to 5MB', - 'full_name' => 'Full Name', - 'email_hint' => 'Email address cannot be changed.', - 'account_role' => 'Account Role', - 'save_changes' => 'Save Changes', - 'reg_title' => 'Create your logistics account', - 'reg_subtitle' => 'Shippers and truck owners can self-register with full profile details.', - 'reg_success_pending' => 'Registration completed successfully. Your account is pending admin approval.', - 'reg_success' => 'Registration completed successfully.', - 'role' => 'Role', - 'shipper' => 'Shipper', - 'truck_owner' => 'Truck Owner', - 'email' => 'Email', - 'phone' => 'Phone', - 'country' => 'Country', - 'select_country' => 'Select country', - 'city' => 'City', - 'select_city' => 'Select city', - 'address' => 'Address', - 'shipper_details' => 'Shipper details', - 'company_name' => 'Company name', - 'truck_details' => 'Truck owner details', - 'truck_type' => 'Truck type', - 'load_capacity' => 'Load capacity (tons)', - 'plate_no' => 'Plate number', - 'bank_account' => 'Bank Account / IBAN', - 'bank_name' => 'Bank Name', - 'bank_branch' => 'Bank Branch', - 'id_card_front' => 'ID card (Front Face)', - 'id_card_back' => 'ID card (Back Face)', - 'truck_reg_front' => 'Truck Registration (Front Face)', - 'truck_reg_back' => 'Truck Registration (Back Face)', - 'truck_picture' => 'Clear Truck Photo (showing plate number)', - 'create_account' => 'Create account', - 'back_to_admin' => 'Back to admin', - 'welcome_back' => 'Welcome to your dashboard. Manage your cargo shipments here.', - 'total_shipments_posted' => 'Total Shipments', - 'active_shipments' => 'Active Shipments', - 'delivered_shipments' => 'Delivered Shipments', - 'route_label' => 'Route', - 'total_label' => 'total', - 'welcome_back_owner' => 'Find loads and submit your best rate.', - 'total_offers' => 'Total Offers', - 'won_shipments' => 'Won Shipments', - 'nav_platform_users' => 'Platform Users', - 'notification_templates' => 'Notification Templates', - 'manage_permissions' => 'Manage Permissions', - 'create_user' => 'Create User', - 'edit_user' => 'Edit User', - 'delete_user' => 'Delete User', - 'confirm_delete' => 'Are you sure you want to delete this user?', - 'permissions' => 'Permissions', - 'no_users' => 'No platform users found.', - 'user_created' => 'User created successfully.', - 'user_updated' => 'User updated successfully.', - 'user_deleted' => 'User deleted successfully.', - 'error_email_exists' => 'Email already exists.' -]; - -$translations_ar = [ - 'app_name' => 'CargoLink', - 'nav_home' => 'نظرة عامة', - 'nav_shipper' => 'لوحة الشاحن', - 'nav_owner' => 'لوحة مالك الشاحنة', - 'nav_admin' => 'لوحة الإدارة', - 'hero_title' => 'انقل شحنتك بسرعة مع شاحنات موثوقة.', - 'hero_subtitle' => 'أنشئ شحنة، استلم عروضاً، وادفع عبر ثواني أو التحويل البنكي.', - 'hero_tagline' => 'منصة لوجستية متعددة اللغات', - 'register_shipper' => 'التسجيل كشاحن', - 'register_owner' => 'التسجيل كمالك شاحنة', - 'cta_shipper' => 'إنشاء شحنة', - 'cta_owner' => 'البحث عن الشحنات', - 'cta_admin' => 'الدخول للإدارة', - 'stats_shipments' => 'الشحنات المنشورة', - 'stats_offers' => 'العروض الحالية', - 'stats_confirmed' => 'الرحلات المؤكدة', - 'section_workflow' => 'طريقة العمل', - 'recent_shipments' => 'أحدث الشحنات', - 'step_post' => 'يقوم الشاحن بإدخال تفاصيل الشحنة وطريقة الدفع.', - 'step_offer' => 'يرسل أصحاب الشاحنات أفضل عروضهم.', - 'step_confirm' => 'تؤكد الإدارة الحجز وتحدث الحالة.', - 'step_confirm_desc' => 'حجز آمن وتتبع التسليم حتى الانتهاء.', - 'shipper_dashboard' => 'لوحة الشاحن', - 'new_shipment' => 'إنشاء شحنة', - 'shipper_name' => 'اسم الشاحن', - 'shipper_company' => 'الشركة', - 'origin' => 'مدينة الانطلاق', - 'destination' => 'مدينة الوصول', - 'cargo' => 'وصف الحمولة', - 'cargo_placeholder' => 'مثال: 20 منصة إلكترونيات', - 'weight' => 'الوزن (طن)', - 'pickup_date' => 'تاريخ الاستلام', - 'delivery_date' => 'تاريخ التسليم', - 'payment_method' => 'طريقة الدفع', - 'payment_thawani' => 'الدفع الإلكتروني عبر ثواني', - 'payment_bank' => 'تحويل بنكي', - 'submit_shipment' => 'إرسال الشحنة', - 'shipments_list' => 'أحدث الشحنات', - 'status' => 'الحالة', - 'offer' => 'أفضل عرض', - 'actions' => 'إجراءات', - 'view' => 'عرض', - 'owner_dashboard' => 'لوحة مالك الشاحنة', - 'available_shipments' => 'الشحنات المتاحة', - 'offer_price' => 'سعر العرض', - 'offer_owner' => 'اسم مالك الشاحنة', - 'submit_offer' => 'إرسال العرض', - 'admin_dashboard' => 'لوحة الإدارة', - 'update_status' => 'تحديث الحالة', - 'save' => 'حفظ', - 'shipment_detail' => 'تفاصيل الشحنة', - 'created_at' => 'تم الإنشاء', - 'best_offer' => 'أفضل عرض', - 'assign_owner' => 'المالك المعتمد', - 'no_shipments' => 'لا توجد شحنات بعد. ابدأ بإنشاء أول شحنة.', - 'no_offers' => 'لا توجد عروض بعد.', - 'success_shipment' => 'تم نشر الشحنة بنجاح.', - 'success_offer' => 'تم إرسال العرض إلى الشاحن.', - 'success_status' => 'تم تحديث الحالة.', - 'error_required' => 'يرجى تعبئة جميع الحقول المطلوبة.', - 'error_invalid' => 'يرجى إدخال قيم صحيحة.', - 'status_posted' => 'منشورة', - 'status_offered' => 'بعرض', - 'status_confirmed' => 'مؤكدة', - 'status_in_transit' => 'قيد النقل', - 'status_delivered' => 'تم التسليم', - 'footer_note' => 'هذه هي النسخة الأولية. الدفع غير متصل بعد.', - 'marketing_title_1' => 'للشاحنين', - 'marketing_desc_1' => 'ابحث عن الشاحنة المناسبة لحمولتك بسرعة وأمان.', - 'marketing_title_2' => 'لأصحاب الشاحنات', - 'marketing_desc_2' => 'عظّم أرباحك وتجنب العودة فارغاً.', - 'motivation_phrase' => 'تمكين الخدمات اللوجستية للمستقبل.', - 'why_choose_us' => 'لماذا تختار كارجو لينك؟', - 'feature_1_title' => 'مطابقة سريعة', - 'feature_1_desc' => 'تواصل مع الشاحنات المتاحة في دقائق.', - 'feature_2_title' => 'مدفوعات آمنة', - 'feature_2_desc' => 'معاملاتك محمية بأعلى معايير الأمان.', - 'feature_3_title' => 'مستخدمون موثوقون', - 'feature_3_desc' => 'نقوم بالتحقق من جميع أصحاب الشاحنات لضمان راحتك.', - 'view_faq' => 'عرض الأسئلة الشائعة', - 'faq_title' => 'لديك أسئلة؟', - 'faq_subtitle' => 'اطلع على الأسئلة الشائعة لمعرفة المزيد حول كيفية عمل منصتنا.', - 'motivation_title' => 'هل أنت مستعد لتحويل خدماتك اللوجستية؟', - 'motivation_subtitle' => 'انضم إلى منصتنا اليوم للعثور على شاحنات موثوقة أو تأمين أفضل الشحنات في السوق.', - 'company' => 'الشركة', - 'about_us' => 'معلومات عنا', - 'careers' => 'الوظائف', - 'contact' => 'اتصل بنا', - 'resources' => 'الموارد', - 'help_center' => 'مركز المساعدة / الأسئلة الشائعة', - 'terms_of_service' => 'شروط الخدمة', - 'privacy_policy' => 'سياسة الخصوصية', - 'language' => 'اللغة', - 'all_rights_reserved' => 'جميع الحقوق محفوظة.', - 'dashboard' => 'لوحة القيادة', - 'settings' => 'الإعدادات', - 'company_setting' => 'إعدادات الشركة', - 'integrations' => 'التكاملات', - 'locations' => 'المواقع', - 'countries' => 'البلدان', - 'cities' => 'المدن', - 'users' => 'المستخدمون', - 'shippers' => 'الشاحنون', - 'truck_owners' => 'أصحاب الشاحنات', - 'user_registration' => 'تسجيل المستخدم', - 'pages' => 'الصفحات', - 'faqs' => 'الأسئلة الشائعة', - 'landing_pages' => 'إعدادات الصفحة الرئيسية', - 'login_title' => 'مرحبًا بعودتك', - 'login_subtitle' => 'قم بتسجيل الدخول إلى حسابك للمتابعة', - 'email_address' => 'البريد الإلكتروني', - 'email_placeholder' => 'name@example.com', - 'password' => 'كلمة المرور', - 'forgot_password' => 'هل نسيت كلمة المرور؟', - 'password_placeholder' => 'أدخل كلمة المرور', - 'change_password' => 'تغيير كلمة المرور', - 'new_password' => 'كلمة المرور الجديدة', - 'confirm_password' => 'تأكيد كلمة المرور', - 'passwords_do_not_match' => 'كلمات المرور غير متطابقة.', - 'password_too_short' => 'يجب أن تتكون كلمة المرور من 6 أحرف على الأقل.', - 'password_updated' => 'تم تحديث كلمة المرور بنجاح.', - 'sign_in' => 'تسجيل الدخول', - 'dont_have_account' => 'ليس لديك حساب؟', - 'register_now' => 'سجل الآن', - 'reset_password_title' => 'إعادة تعيين كلمة المرور', - 'reset_password_subtitle' => 'أدخل بريدك الإلكتروني وسنرسل لك رابطًا لإعادة تعيين كلمة المرور', - 'send_reset_link' => 'إرسال رابط إعادة التعيين', - 'back_to_login' => 'العودة لتسجيل الدخول', - 'invalid_image' => 'صيغة صورة غير صالحة. يرجى تحميل JPG أو PNG أو GIF أو WEBP.', - 'upload_failed' => 'فشل في حفظ الملف المحمل.', - 'profile_updated' => 'تم تحديث الملف الشخصي بنجاح.', - 'my_profile' => 'ملفي الشخصي', - 'profile_picture' => 'صورة الملف الشخصي', - 'change_picture' => 'تغيير الصورة', - 'picture_hint' => 'JPG، PNG، أو GIF حتى 5 ميغابايت', - 'full_name' => 'الاسم الكامل', - 'email_hint' => 'لا يمكن تغيير عنوان البريد الإلكتروني.', - 'account_role' => 'دور الحساب', - 'save_changes' => 'حفظ التغييرات', - 'reg_title' => 'أنشئ حسابك اللوجستي', - 'reg_subtitle' => 'يمكن للشاحنين وأصحاب الشاحنات التسجيل الذاتي ببيانات الملف الشخصي الكاملة.', - 'reg_success_pending' => 'اكتمل التسجيل بنجاح. حسابك في انتظار موافقة الإدارة.', - 'reg_success' => 'اكتمل التسجيل بنجاح.', - 'role' => 'الدور', - 'shipper' => 'شاحن', - 'truck_owner' => 'مالك شاحنة', - 'email' => 'البريد الإلكتروني', - 'phone' => 'الهاتف', - 'country' => 'البلد', - 'select_country' => 'اختر البلد', - 'city' => 'المدينة', - 'select_city' => 'اختر المدينة', - 'address' => 'العنوان', - 'shipper_details' => 'تفاصيل الشاحن', - 'company_name' => 'اسم الشركة', - 'truck_details' => 'تفاصيل مالك الشاحنة', - 'truck_type' => 'نوع الشاحنة', - 'load_capacity' => 'سعة الحمولة (طن)', - 'plate_no' => 'رقم اللوحة', - 'bank_account' => 'الحساب البنكي / الآيبان', - 'bank_name' => 'اسم البنك', - 'bank_branch' => 'فرع البنك', - 'id_card_front' => 'البطاقة الشخصية (الوجه الأمامي)', - 'id_card_back' => 'البطاقة الشخصية (الوجه الخلفي)', - 'truck_reg_front' => 'تسجيل الشاحنة (الوجه الأمامي)', - 'truck_reg_back' => 'تسجيل الشاحنة (الوجه الخلفي)', - 'truck_picture' => 'صورة واضحة للشاحنة (تظهر رقم اللوحة)', - 'create_account' => 'إنشاء حساب', - 'back_to_admin' => 'العودة للإدارة', - 'welcome_back' => 'مرحبًا بك في لوحة القيادة الخاصة بك. قم بإدارة شحناتك هنا.', - 'total_shipments_posted' => 'إجمالي الشحنات', - 'active_shipments' => 'الشحنات النشطة', - 'delivered_shipments' => 'الشحنات المسلمة', - 'route_label' => 'المسار', - 'total_label' => 'المجموع', - 'welcome_back_owner' => 'ابحث عن الأحمال وقدم أفضل سعر لديك.', - 'total_offers' => 'إجمالي العروض', - 'won_shipments' => 'الشحنات الفائزة', -]; - -$trans_str_en = var_export($translations_en, true); -$trans_str_ar = var_export($translations_ar, true); - -$new_translations = '$translations = [ - "en" => ' . $trans_str_en . ', - "ar" => ' . $trans_str_ar . ' -];'; - -// Find where $translations array starts and ends. -// In the current file it starts at '$translations = [' and ends before 'function t(' -$pattern = '/\$translations\s*=\s*\[.*?(?=\nfunction t\(\))/s'; -$content = preg_replace($pattern, $new_translations . "\n\n", $content); - -file_put_contents('includes/app.php', $content); -echo "Updated translations in app.php\n"; -?> \ No newline at end of file
Event NameSubject (EN)Subject (AR)Actions
- +