import 'package:flutter/material.dart';

class AppLocalizations {
  final Locale locale;

  AppLocalizations(this.locale);

  static AppLocalizations of(BuildContext context) {
    return Localizations.of<AppLocalizations>(context, AppLocalizations)!;
  }

  static const LocalizationsDelegate<AppLocalizations> delegate = _AppLocalizationsDelegate();

  bool get isArabic => locale.languageCode == 'ar';

  static final Map<String, Map<String, String>> _translations = {
    'ar': {
      'app_name': 'الكابتن',
      'login': 'تسجيل الدخول',
      'phone_number': 'رقم الهاتف',
      'enter_phone': 'أدخل رقم هاتفك',
      'send_otp': 'إرسال رمز التحقق',
      'verify_otp': 'تحقق من الرمز',
      'enter_otp': 'أدخل رمز التحقق',
      'otp_sent': 'تم إرسال رمز التحقق',
      'invalid_otp': 'رمز التحقق غير صحيح',
      'home': 'الرئيسية',
      'schedule': 'الجدول',
      'notifications': 'الإشعارات',
      'profile': 'حسابي',
      'my_children': 'أبنائي',
      'today_sessions': 'جلسات اليوم',
      'outstanding_balance': 'المبلغ المستحق',
      'attendance_rate': 'نسبة الحضور',
      'next_session': 'الجلسة القادمة',
      'invoices': 'الفواتير',
      'enrollments': 'الاشتراكات',
      'evaluations': 'التقييمات',
      'documents': 'المستندات',
      'wallet': 'المحفظة',
      'shop': 'المتجر',
      'events': 'الفعاليات',
      'messages': 'الرسائل',
      'service_requests': 'الطلبات',
      'pay_now': 'ادفع الآن',
      'view_all': 'عرض الكل',
      'no_data': 'لا توجد بيانات',
      'loading': 'جارٍ التحميل...',
      'error_occurred': 'حدث خطأ',
      'retry': 'إعادة المحاولة',
      'present': 'حاضر',
      'absent': 'غائب',
      'late': 'متأخر',
      'excused': 'بعذر',
      'paid': 'مدفوعة',
      'pending': 'قيد الانتظار',
      'overdue': 'متأخرة',
      'active': 'نشط',
      'frozen': 'مجمد',
      'logout': 'تسجيل الخروج',
      'settings': 'الإعدادات',
      'language': 'اللغة',
      'register': 'تسجيل جديد',
      'pre_register': 'التسجيل المسبق',
      'welcome_back': 'أهلاً بعودتك',
      'good_morning': 'صباح الخير',
      'good_evening': 'مساء الخير',
      'branches': 'الفروع',
      'programs': 'البرامج',
      'news': 'الأخبار',
      'gallery': 'المعرض',
      'report_absence': 'تبليغ غياب',
      'send_message': 'إرسال رسالة',
      'freeze_request': 'طلب تجميد',
      'transfer_request': 'طلب نقل',
      'cancel_request': 'طلب إلغاء',
      'total_balance': 'إجمالي المستحق',
      'installments': 'الأقساط',
      'payment_plans': 'خطط الدفع',
      'explore': 'استكشف',
      'more': 'المزيد',
      'mark_all_read': 'قراءة الكل',
      'no_notifications': 'لا توجد إشعارات',
      'no_sessions': 'لا توجد جلسات',
      'no_attendance': 'لا توجد سجلات حضور',
      'no_invoices': 'لا توجد فواتير',
      'no_evaluations': 'لا توجد تقييمات',
      'no_events': 'لا توجد فعاليات',
      'no_products': 'لا توجد منتجات',
      'no_messages': 'لا توجد رسائل',
      'no_requests': 'لا توجد طلبات',
      'sessions': 'جلسات',
      'edit_profile': 'تعديل الحساب',
      'notification_settings': 'إعدادات الإشعارات',
      'about': 'عن التطبيق',
      'guardian_info': 'بيانات ولي الأمر',
      'child_info': 'بيانات المشترك',
      'review': 'مراجعة',
      'submit': 'إرسال',
      'next': 'التالي',
      'type_message': 'اكتب رسالة...',
      'attendance': 'الحضور',
    },
    'en': {
      'app_name': 'El Captain',
      'login': 'Login',
      'phone_number': 'Phone Number',
      'enter_phone': 'Enter your phone number',
      'send_otp': 'Send OTP',
      'verify_otp': 'Verify OTP',
      'enter_otp': 'Enter verification code',
      'otp_sent': 'OTP code sent',
      'invalid_otp': 'Invalid verification code',
      'home': 'Home',
      'schedule': 'Schedule',
      'notifications': 'Notifications',
      'profile': 'Profile',
      'my_children': 'My Children',
      'today_sessions': 'Today\'s Sessions',
      'outstanding_balance': 'Outstanding Balance',
      'attendance_rate': 'Attendance Rate',
      'next_session': 'Next Session',
      'invoices': 'Invoices',
      'enrollments': 'Enrollments',
      'evaluations': 'Evaluations',
      'documents': 'Documents',
      'wallet': 'Wallet',
      'shop': 'Shop',
      'events': 'Events',
      'messages': 'Messages',
      'service_requests': 'Requests',
      'pay_now': 'Pay Now',
      'view_all': 'View All',
      'no_data': 'No data available',
      'loading': 'Loading...',
      'error_occurred': 'An error occurred',
      'retry': 'Retry',
      'present': 'Present',
      'absent': 'Absent',
      'late': 'Late',
      'excused': 'Excused',
      'paid': 'Paid',
      'pending': 'Pending',
      'overdue': 'Overdue',
      'active': 'Active',
      'frozen': 'Frozen',
      'logout': 'Logout',
      'settings': 'Settings',
      'language': 'Language',
      'register': 'Register',
      'pre_register': 'Pre-Register',
      'welcome_back': 'Welcome Back',
      'good_morning': 'Good Morning',
      'good_evening': 'Good Evening',
      'branches': 'Branches',
      'programs': 'Programs',
      'news': 'News',
      'gallery': 'Gallery',
      'report_absence': 'Report Absence',
      'send_message': 'Send Message',
      'freeze_request': 'Freeze Request',
      'transfer_request': 'Transfer Request',
      'cancel_request': 'Cancel Request',
      'total_balance': 'Total Balance',
      'installments': 'Installments',
      'payment_plans': 'Payment Plans',
      'explore': 'Explore',
      'more': 'More',
      'mark_all_read': 'Mark All Read',
      'no_notifications': 'No notifications',
      'no_sessions': 'No sessions',
      'no_attendance': 'No attendance records',
      'no_invoices': 'No invoices',
      'no_evaluations': 'No evaluations',
      'no_events': 'No events',
      'no_products': 'No products',
      'no_messages': 'No messages',
      'no_requests': 'No requests',
      'sessions': 'sessions',
      'edit_profile': 'Edit Profile',
      'notification_settings': 'Notification Settings',
      'about': 'About',
      'guardian_info': 'Guardian Info',
      'child_info': 'Child Info',
      'review': 'Review',
      'submit': 'Submit',
      'next': 'Next',
      'type_message': 'Type a message...',
      'attendance': 'Attendance',
    },
  };

  String t(String key) => _translations[locale.languageCode]?[key] ?? key;
}

class _AppLocalizationsDelegate extends LocalizationsDelegate<AppLocalizations> {
  const _AppLocalizationsDelegate();

  @override
  bool isSupported(Locale locale) => ['ar', 'en'].contains(locale.languageCode);

  @override
  Future<AppLocalizations> load(Locale locale) async => AppLocalizations(locale);

  @override
  bool shouldReload(covariant LocalizationsDelegate<AppLocalizations> old) => false;
}
