import * as store from './store.js';

const strings = {
  ar: {
    'app.name': 'EL3AB',
    'nav.rank': 'الترتيب',
    'nav.social': 'الأصدقاء',
    'nav.play': 'العب',
    'nav.tournaments': 'البطولات',
    'nav.profile': 'حسابي',
    'auth.login': 'تسجيل الدخول',
    'auth.register': 'حساب جديد',
    'auth.email': 'البريد الإلكتروني',
    'auth.password': 'كلمة المرور',
    'auth.username': 'اسم المستخدم',
    'auth.login.btn': 'دخول',
    'auth.register.btn': 'إنشاء حساب',
    'auth.no_account': 'ليس لديك حساب؟',
    'auth.have_account': 'لديك حساب؟',
    'auth.logging_in': 'جاري الدخول...',
    'auth.registering': 'جاري التسجيل...',
    'play.title': 'العب',
    'play.vs_bot': 'ضد الكمبيوتر',
    'play.vs_human': 'ضد لاعب',
    'play.vs_friend': 'ضد صديق',
    'play.local': 'لعب محلي',
    'play.btn': 'ابدأ اللعب',
    'play.select_bot': 'اختر الخصم',
    'play.select_time': 'اختر الوقت',
    'play.searching': 'جاري البحث عن خصم...',
    'play.cancel': 'إلغاء',
    'game.chess': 'شطرنج',
    'game.domino': 'دومينو',
    'game.ludo': 'لودو',
    'game.backgammon': 'طاولة',
    'game.resign': 'استسلام',
    'game.draw': 'تعادل',
    'game.flip': 'قلب',
    'game.rematch': 'إعادة المباراة',
    'game.new_game': 'لعبة جديدة',
    'game.back': 'رجوع',
    'game.you_win': 'فزت!',
    'game.you_lose': 'خسرت',
    'game.draw_result': 'تعادل',
    'game.thinking': 'يفكر...',
    'game.your_turn': 'دورك',
    'game.opponent_turn': 'دور الخصم',
    'rank.title': 'الترتيب',
    'rank.leaderboard': 'لوحة المتصدرين',
    'rank.tournaments': 'البطولات',
    'social.title': 'الأصدقاء',
    'social.friends': 'الأصدقاء',
    'social.notifications': 'الإشعارات',
    'social.online': 'متصل',
    'shop.title': 'المتجر',
    'profile.title': 'حسابي',
    'profile.stats': 'الإحصائيات',
    'profile.history': 'المباريات',
    'profile.achievements': 'الإنجازات',
    'profile.settings': 'الإعدادات',
    'common.loading': 'جاري التحميل...',
    'common.error': 'حدث خطأ',
    'common.retry': 'إعادة المحاولة',
    'common.save': 'حفظ',
    'common.cancel': 'إلغاء',
    'common.confirm': 'تأكيد',
    'common.close': 'إغلاق',
    'common.search': 'بحث',
    'common.empty': 'لا توجد بيانات',
    'daily.claim': 'اجمع المكافأة',
    'daily.streak': 'أيام متتالية',
    'auth.guest_btn': 'العب كضيف',
    'auth.google_btn': 'الدخول بحساب Google',
    'auth.google_register': 'التسجيل بحساب Google',
    'auth.age_confirm': 'أؤكد أن عمري 13 سنة أو أكثر',
    'auth.agree_terms': 'بالتسجيل أنت توافق على',
    'guest.upgrade_prompt': 'سجّل حسابك للعب أونلاين',
    'guest.locked_feature': 'سجّل للوصول لهذه الميزة',
    'guest.create_account': 'إنشاء حساب',
    'settings.delete_account': 'حذف الحساب',
    'settings.delete_confirm': 'هل أنت متأكد؟ سيتم حذف جميع بياناتك نهائياً.',
    'settings.delete_password': 'أدخل كلمة المرور للتأكيد',
    'settings.privacy_policy': 'سياسة الخصوصية',
    'settings.terms': 'الشروط والأحكام',
    'settings.sound': 'الصوت',
    'settings.language': 'اللغة',
    'settings.on': 'مفعل',
    'settings.off': 'معطل',
    'settings.blocked_list': 'المحظورين',
    'block.block': 'حظر',
    'block.unblock': 'إلغاء الحظر',
    'block.mute': 'كتم',
    'block.unmute': 'إلغاء الكتم',
    'block.blocked': 'تم الحظر',
    'block.muted': 'تم الكتم',
    'block.confirm_block': 'حظر هذا اللاعب؟ لن يستطيع مراسلتك أو تحديك.',
    'block.empty': 'لا يوجد لاعبين محظورين',
    'block.cannot_message': 'لا يمكن مراسلة هذا اللاعب',
    'play.no_match_found': 'لم يتم العثور على خصم',
    'play.retry_or_cancel': 'لم يتم العثور على خصم. هل تريد المتابعة؟',
    'play.retry': 'إعادة',
    'play.challenge_friend': 'تحدّي صديق',
    'play.daily_reward': 'المكافأة اليومية',
    'play.my_tournaments': 'بطولاتي',
    'play.leaderboard': 'الترتيب',
    'play.my_games': 'مبارياتي',
    'play.puzzles': 'أحجيات',
    'game.bot': 'بوت',
    'game.loading_opponent': 'جاري التحميل...',
    'game.opponent_disconnected': 'انقطع الاتصال',
    'game.weak_connection': 'اتصال ضعيف',
    'game.draw_declined': 'الخصم رفض التعادل',
    'game.leave_confirm': 'المغادرة تحتسب كخسارة. هل أنت متأكد؟',
    'game.leave_title': 'مغادرة المباراة؟',
    'game.leave': 'مغادرة',
    'game.stay': 'البقاء',
    'chat.now': 'الآن',
    'chat.minutes_ago': 'منذ {n} دقيقة',
    'chat.hours_ago': 'منذ {n} ساعة',
    'chat.days_ago': 'منذ {n} يوم',
    'chat.mark_all_read': 'تعليم الكل كمقروء',
    'achievements.title': 'الإنجازات',
    'achievements.complete': 'مكتمل',
    'achievements.none': 'لا توجد إنجازات في هذه الفئة',
    'achievements.all': 'الكل',
    'achievements.gameplay': 'اللعب',
    'achievements.social': 'اجتماعي',
    'achievements.progression': 'التقدم',
    'achievements.collection': 'جمع'
  },
  en: {
    'app.name': 'EL3AB',
    'nav.rank': 'Rank',
    'nav.social': 'Social',
    'nav.play': 'Play',
    'nav.tournaments': 'Tournaments',
    'nav.profile': 'Profile',
    'auth.login': 'Login',
    'auth.register': 'Register',
    'auth.email': 'Email',
    'auth.password': 'Password',
    'auth.username': 'Username',
    'auth.login.btn': 'Login',
    'auth.register.btn': 'Create Account',
    'auth.no_account': "Don't have an account?",
    'auth.have_account': 'Already have an account?',
    'auth.logging_in': 'Logging in...',
    'auth.registering': 'Creating account...',
    'play.title': 'Play',
    'play.vs_bot': 'vs Bot',
    'play.vs_human': 'vs Human',
    'play.vs_friend': 'vs Friend',
    'play.local': 'Local Play',
    'play.btn': 'Play Now',
    'play.select_bot': 'Choose Opponent',
    'play.select_time': 'Time Control',
    'play.searching': 'Searching for opponent...',
    'play.cancel': 'Cancel',
    'game.chess': 'Chess',
    'game.domino': 'Domino',
    'game.ludo': 'Ludo',
    'game.backgammon': 'Backgammon',
    'game.resign': 'Resign',
    'game.draw': 'Draw',
    'game.flip': 'Flip',
    'game.rematch': 'Rematch',
    'game.new_game': 'New Game',
    'game.back': 'Back',
    'game.you_win': 'You Win!',
    'game.you_lose': 'You Lose',
    'game.draw_result': 'Draw',
    'game.thinking': 'Thinking...',
    'game.your_turn': 'Your Turn',
    'game.opponent_turn': "Opponent's Turn",
    'rank.title': 'Rankings',
    'rank.leaderboard': 'Leaderboard',
    'rank.tournaments': 'Tournaments',
    'social.title': 'Social',
    'social.friends': 'Friends',
    'social.notifications': 'Notifications',
    'social.online': 'Online',
    'shop.title': 'Shop',
    'profile.title': 'Profile',
    'profile.stats': 'Stats',
    'profile.history': 'History',
    'profile.achievements': 'Achievements',
    'profile.settings': 'Settings',
    'common.loading': 'Loading...',
    'common.error': 'Error occurred',
    'common.retry': 'Retry',
    'common.save': 'Save',
    'common.cancel': 'Cancel',
    'common.confirm': 'Confirm',
    'common.close': 'Close',
    'common.search': 'Search',
    'common.empty': 'No data',
    'daily.claim': 'Claim Reward',
    'daily.streak': 'Day Streak',
    'auth.guest_btn': 'Play as Guest',
    'auth.google_btn': 'Sign in with Google',
    'auth.google_register': 'Sign up with Google',
    'auth.age_confirm': 'I confirm I am 13 years or older',
    'auth.agree_terms': 'By registering you agree to',
    'guest.upgrade_prompt': 'Create an account to play online',
    'guest.locked_feature': 'Sign up to access this feature',
    'guest.create_account': 'Create Account',
    'settings.delete_account': 'Delete Account',
    'settings.delete_confirm': 'Are you sure? All your data will be permanently deleted.',
    'settings.delete_password': 'Enter password to confirm',
    'settings.privacy_policy': 'Privacy Policy',
    'settings.terms': 'Terms of Service',
    'settings.sound': 'Sound',
    'settings.language': 'Language',
    'settings.on': 'On',
    'settings.off': 'Off',
    'settings.blocked_list': 'Blocked Players',
    'block.block': 'Block',
    'block.unblock': 'Unblock',
    'block.mute': 'Mute',
    'block.unmute': 'Unmute',
    'block.blocked': 'Blocked',
    'block.muted': 'Muted',
    'block.confirm_block': 'Block this player? They won\'t be able to message or challenge you.',
    'block.empty': 'No blocked players',
    'block.cannot_message': 'Cannot message this player',
    'play.no_match_found': 'No opponent found',
    'play.retry_or_cancel': 'No opponent found. Keep searching?',
    'play.retry': 'Retry',
    'play.challenge_friend': 'Challenge Friend',
    'play.daily_reward': 'Daily Reward',
    'play.my_tournaments': 'My Tournaments',
    'play.leaderboard': 'Leaderboard',
    'play.my_games': 'My Games',
    'play.puzzles': 'Puzzles',
    'game.bot': 'Bot',
    'game.loading_opponent': 'Loading...',
    'game.opponent_disconnected': 'Disconnected',
    'game.weak_connection': 'Weak connection',
    'game.draw_declined': 'Opponent declined draw',
    'game.leave_confirm': 'Leaving counts as a loss. Are you sure?',
    'game.leave_title': 'Leave match?',
    'game.leave': 'Leave',
    'game.stay': 'Stay',
    'chat.now': 'Now',
    'chat.minutes_ago': '{n}m ago',
    'chat.hours_ago': '{n}h ago',
    'chat.days_ago': '{n}d ago',
    'chat.mark_all_read': 'Mark all read',
    'achievements.title': 'Achievements',
    'achievements.complete': 'Complete',
    'achievements.none': 'No achievements in this category',
    'achievements.all': 'All',
    'achievements.gameplay': 'Gameplay',
    'achievements.social': 'Social',
    'achievements.progression': 'Progression',
    'achievements.collection': 'Collection'
  }
};

export function t(key, replacements = {}) {
  const lang = store.get('language') || 'ar';
  let str = strings[lang]?.[key] || strings['ar']?.[key] || key;
  for (const [k, v] of Object.entries(replacements)) {
    str = str.replace(`{${k}}`, v);
  }
  return str;
}

export function getLang() {
  return store.get('language') || 'ar';
}

export function setLang(lang) {
  store.set('language', lang);
  document.documentElement.dir = lang === 'ar' ? 'rtl' : 'ltr';
  document.documentElement.lang = lang;
}
