import { I18n } from 'i18n-js';
import * as Localization from 'expo-localization';
import AsyncStorage from '@react-native-async-storage/async-storage';

// Create i18n instance with fallback enabled
const i18n = new I18n({
  en: {
    // Navigation
    welcome: 'Welcome',
    home: 'Home',
    wallet: 'Wallet',
    citizens: 'Citizens',
    referral: 'Referral',
    profile: 'Profile',
    // Settings
    settings: 'Settings',
    notifications: 'Notifications',
    editProfile: 'Edit Profile',
    changePassword: 'Change Password',
    signOut: 'Sign Out',
    language: 'Language',
    darkMode: 'Dark Mode',
    security: 'Security',
    preferences: 'Preferences',
    about: 'About',
    biometricAuth: 'Biometric Authentication',
    twoFactorAuth: 'Two-Factor Authentication',
    pushNotifications: 'Push Notifications',
    version: 'Version',
    terms: 'Terms of Service',
    privacy: 'Privacy Policy',
    help: 'Help & Support',
    walletAddress: 'Wallet Address',
    // Language Selection
    selectYourLanguage: 'Select Your Language',
    digitalCitizenshipPlatform: 'Digital Citizenship Platform',
    continue: 'Continue',
    // Auth
    signIn: 'Sign In',
    signUp: 'Sign Up',
    email: 'Email',
    password: 'Password',
    firstName: 'First Name',
    lastName: 'Last Name',
    phone: 'Phone',
    referralCode: 'Referral Code (Optional)',
    alreadyHaveAccount: 'Already have an account?',
    dontHaveAccount: "Don't have an account?",
    // Common
    loading: 'Loading...',
    submit: 'Submit',
    cancel: 'Cancel',
    save: 'Save',
    back: 'Back',
  },
  'ku-sorani': {
    welcome: 'بەخێربێیت',
    home: 'سەرەکی',
    wallet: 'جزدان',
    citizens: 'هاوڵاتیان',
    referral: 'ئاماژە',
    profile: 'پرۆفایل',
    settings: 'ڕێکخستنەکان',
    notifications: 'ئاگادارکردنەوەکان',
    editProfile: 'دەستکاری پرۆفایل',
    changePassword: 'گۆڕینی وشەی نهێنی',
    signOut: 'چوونەدەرەوە',
    language: 'زمان',
    darkMode: 'دۆخی تاریک',
    security: 'پاراستن',
    preferences: 'هەڵبژاردنەکان',
    about: 'دەربارە',
    biometricAuth: 'دڵنیاکردنەوەی بایۆمێتریک',
    twoFactorAuth: 'دڵنیاکردنەوەی دوو فاکتەر',
    pushNotifications: 'ئاگادارکردنەوەی پووش',
    version: 'وەشان',
    terms: 'مەرجەکانی خزمەتگوزاری',
    privacy: 'سیاسەتی تایبەتێتی',
    help: 'یارمەتی و پشتگیری',
    walletAddress: 'ناونیشانی جزدان',
    selectYourLanguage: 'زمانەکەت هەڵبژێرە',
    digitalCitizenshipPlatform: 'پلاتفۆرمی هاوڵاتیبوونی دیجیتاڵی',
    continue: 'بەردەوامبوون',
    signIn: 'چوونەژوورەوە',
    signUp: 'تۆمارکردن',
    email: 'ئیمەیڵ',
    password: 'وشەی نهێنی',
    firstName: 'ناوی یەکەم',
    lastName: 'ناوی کۆتایی',
    phone: 'ژمارەی تەلەفۆن',
    referralCode: 'کۆدی ئاماژە (دڵخواز)',
    alreadyHaveAccount: 'هەژمارت هەیە؟',
    dontHaveAccount: 'هەژمارت نییە؟',
    loading: 'بارکردن...',
    submit: 'ناردن',
    cancel: 'هەڵوەشاندنەوە',
    save: 'پاشەکەوتکردن',
    back: 'گەڕانەوە',
  },
  'ku-kurmanji': {
    welcome: 'Bi xêr hatî',
    home: 'Malper',
    wallet: 'Berîk',
    citizens: 'Hemwelatî',
    referral: 'Referans',
    profile: 'Profîl',
    settings: 'Mîhengên',
    notifications: 'Agahdarî',
    editProfile: 'Profîlê Biguherîne',
    changePassword: 'Şîfreyê Biguherîne',
    signOut: 'Derkeve',
    language: 'Ziman',
    darkMode: 'Moda Tarî',
    security: 'Ewlehî',
    preferences: 'Vebijarkên',
    about: 'Derbarê',
    biometricAuth: 'Rêpêşandana Bîyometrîk',
    twoFactorAuth: 'Rêpêşandana Du-Faktorî',
    pushNotifications: 'Agahdariyên Push',
    version: 'Guherto',
    terms: 'Şertên Karûbarê',
    privacy: 'Siyaseta Taybetiyê',
    help: 'Alîkarî û Piştgirî',
    walletAddress: 'Navnîşana Berîkê',
    selectYourLanguage: 'Zimanê Xwe Hilbijêre',
    digitalCitizenshipPlatform: 'Platforma Hemwelatiya Dijîtal',
    continue: 'Bidomîne',
    signIn: 'Têketin',
    signUp: 'Tomarbûn',
    email: 'E-mail',
    password: 'Şîfre',
    firstName: 'Nav',
    lastName: 'Paşnav',
    phone: 'Telefon',
    referralCode: 'Koda Referansê (Vebijarkî)',
    alreadyHaveAccount: 'Hejmarê te heye?',
    dontHaveAccount: 'Hejmarê te tune?',
    loading: 'Tê barkirin...',
    submit: 'Bişîne',
    cancel: 'Betal bike',
    save: 'Tomar bike',
    back: 'Vegere',
  },
  ar: {
    welcome: 'مرحبا',
    home: 'الرئيسية',
    wallet: 'المحفظة',
    citizens: 'المواطنون',
    referral: 'الإحالة',
    profile: 'الملف الشخصي',
    settings: 'الإعدادات',
    notifications: 'الإشعارات',
    editProfile: 'تعديل الملف الشخصي',
    changePassword: 'تغيير كلمة المرور',
    signOut: 'تسجيل الخروج',
    language: 'اللغة',
    darkMode: 'الوضع الداكن',
    security: 'الأمان',
    preferences: 'التفضيلات',
    about: 'حول',
    biometricAuth: 'المصادقة البيومترية',
    twoFactorAuth: 'المصادقة الثنائية',
    pushNotifications: 'الإشعارات الفورية',
    version: 'الإصدار',
    terms: 'شروط الخدمة',
    privacy: 'سياسة الخصوصية',
    help: 'المساعدة والدعم',
    walletAddress: 'عنوان المحفظة',
    selectYourLanguage: 'اختر لغتك',
    digitalCitizenshipPlatform: 'منصة المواطنة الرقمية',
    continue: 'متابعة',
    signIn: 'تسجيل الدخول',
    signUp: 'إنشاء حساب',
    email: 'البريد الإلكتروني',
    password: 'كلمة المرور',
    firstName: 'الاسم الأول',
    lastName: 'اسم العائلة',
    phone: 'رقم الهاتف',
    referralCode: 'رمز الإحالة (اختياري)',
    alreadyHaveAccount: 'هل لديك حساب؟',
    dontHaveAccount: 'ليس لديك حساب؟',
    loading: 'جاري التحميل...',
    submit: 'إرسال',
    cancel: 'إلغاء',
    save: 'حفظ',
    back: 'رجوع',
  },
  tr: {
    welcome: 'Hoş geldiniz',
    home: 'Ana Sayfa',
    wallet: 'Cüzdan',
    citizens: 'Vatandaşlar',
    referral: 'Yönlendirme',
    profile: 'Profil',
    settings: 'Ayarlar',
    notifications: 'Bildirimler',
    editProfile: 'Profili Düzenle',
    changePassword: 'Şifre Değiştir',
    signOut: 'Çıkış Yap',
    language: 'Dil',
    darkMode: 'Karanlık Mod',
    security: 'Güvenlik',
    preferences: 'Tercihler',
    about: 'Hakkında',
    biometricAuth: 'Biyometrik Kimlik Doğrulama',
    twoFactorAuth: 'İki Faktörlü Kimlik Doğrulama',
    pushNotifications: 'Anlık Bildirimler',
    version: 'Sürüm',
    terms: 'Hizmet Şartları',
    privacy: 'Gizlilik Politikası',
    help: 'Yardım ve Destek',
    walletAddress: 'Cüzdan Adresi',
    selectYourLanguage: 'Dilinizi Seçin',
    digitalCitizenshipPlatform: 'Dijital Vatandaşlık Platformu',
    continue: 'Devam Et',
    signIn: 'Giriş Yap',
    signUp: 'Kayıt Ol',
    email: 'E-posta',
    password: 'Şifre',
    firstName: 'Ad',
    lastName: 'Soyad',
    phone: 'Telefon',
    referralCode: 'Yönlendirme Kodu (Opsiyonel)',
    alreadyHaveAccount: 'Hesabınız var mı?',
    dontHaveAccount: 'Hesabınız yok mu?',
    loading: 'Yükleniyor...',
    submit: 'Gönder',
    cancel: 'İptal',
    save: 'Kaydet',
    back: 'Geri',
  },
  fa: {
    welcome: 'خوش آمدید',
    home: 'خانه',
    wallet: 'کیف پول',
    citizens: 'شهروندان',
    referral: 'ارجاع',
    profile: 'پروفایل',
    settings: 'تنظیمات',
    notifications: 'اطلاعیه‌ها',
    editProfile: 'ویرایش پروفایل',
    changePassword: 'تغییر رمز عبور',
    signOut: 'خروج',
    language: 'زبان',
    darkMode: 'حالت تاریک',
    security: 'امنیت',
    preferences: 'ترجیحات',
    about: 'درباره',
    biometricAuth: 'احراز هویت بیومتریک',
    twoFactorAuth: 'احراز هویت دو مرحله‌ای',
    pushNotifications: 'اعلان‌های فوری',
    version: 'نسخه',
    terms: 'شرایط خدمات',
    privacy: 'سیاست حریم خصوصی',
    help: 'کمک و پشتیبانی',
    walletAddress: 'آدرس کیف پول',
    selectYourLanguage: 'زبان خود را انتخاب کنید',
    digitalCitizenshipPlatform: 'پلتفرم شهروندی دیجیتال',
    continue: 'ادامه',
    signIn: 'ورود',
    signUp: 'ثبت نام',
    email: 'ایمیل',
    password: 'رمز عبور',
    firstName: 'نام',
    lastName: 'نام خانوادگی',
    phone: 'تلفن',
    referralCode: 'کد ارجاع (اختیاری)',
    alreadyHaveAccount: 'حساب کاربری دارید؟',
    dontHaveAccount: 'حساب کاربری ندارید؟',
    loading: 'در حال بارگذاری...',
    submit: 'ارسال',
    cancel: 'لغو',
    save: 'ذخیره',
    back: 'بازگشت',
  },
});

// Configure i18n with safe defaults
i18n.defaultLocale = 'en';
i18n.locale = 'en'; // Start with safe default
i18n.enableFallback = true;

export const loadSavedLanguage = async () => {
  try {
    const savedLang = await AsyncStorage.getItem('appLanguage');
    if (savedLang) {
      i18n.locale = savedLang;
    }
  } catch (error) {
    console.error('Error loading language:', error);
  }
};

export const saveLanguage = async (languageCode: string) => {
  try {
    await AsyncStorage.setItem('appLanguage', languageCode);
    i18n.locale = languageCode;
  } catch (error) {
    console.error('Error saving language:', error);
  }
};

export default i18n;