export const I18N = {
  ar: {
    titleFallback: 'بطولة دويتوايلر للرماية',
    subtitle: 'فئة المسدس · مسافات: 15م ← 20م ← 25م',
    viewMode: 'وضع العرض',
    adminMode: 'لوحة الإدارة',
    liveMode: 'الوضع الحي',
    adminLogin: 'تسجيل دخول الإدارة',
    adminLoginDesc: 'أدخل بيانات الإدارة للتحكم الكامل في البطولة.',
    adminPanel: 'لوحة التحكم الإدارية',
    adminPanelDesc: 'إدارة اللاعبين، التوزيع، وإدخال النتائج لكل المراحل.',
    defaultCredentials: 'بيانات الإدارة الافتراضية: datwyler / datwyler',
    labels: {
      liveTracker: 'LIVE TRACKER',
      mode: 'الوضع',
      language: 'اللغة',
      lastSync: 'آخر مزامنة',
      loading: 'جاري تحميل بيانات البطولة...',
      players: 'لاعب',
      group: 'المجموعة',
      unassigned: 'غير معين',
      emptyLive: 'لا يوجد لاعبين في هذه المجموعة',
      allPlayers: 'جميع اللاعبين',
      top12: 'أفضل 12 متأهل',
      finalist: 'متأهل',
      notFinalist: 'غير متأهل',
      noPlayers: 'لا يوجد لاعبين بعد',
      noFinalists: 'لا يوجد متأهلون بعد',
      finalGroup1: 'المجموعة النهائية 1 (المراكز 1-6)',
      finalGroup2: 'المجموعة النهائية 2 (المراكز 7-12)',
      tieSlots: 'عدد المقاعد المتاحة من كسر التعادل',
      waiting: 'بانتظار النتيجة',
      viewProofInView: 'إظهار صور إثبات النتيجة في وضع العرض',
      liveModeVisibility: 'إعدادات شاشة الوضع الحي',
      activeLiveView: 'العرض النشط في الوضع الحي',
      rotationIntervalSec: 'مدة التدوير (ثانية)',
      rotationPlayerCount: 'عدد اللاعبين لكل صفحة تدوير',
      liveViewGroup: 'شاشة المجموعات الحية',
      liveViewPrelimTie: 'كسر تعادل التمهيدي',
      liveViewPrelimOverall: 'الترتيب العام للتمهيدي',
      liveViewFinalGroups: 'شاشة مجموعات النهائي',
      liveViewFinalTie: 'كسر تعادل النهائي',
      liveViewPodium: 'منصة التتويج',
      showGroupLive: 'إظهار شاشة المجموعات الحية',
      showPrelimTie: 'إظهار كسر تعادل التمهيدي',
      showPrelimOverall: 'إظهار ترتيب التمهيدي العام',
      showFinalGroups: 'إظهار مجموعات النهائي',
      showFinalTie: 'إظهار كسر تعادل النهائي',
      showPodium: 'إظهار منصة التتويج',
      groupDisplayMode: 'عرض المجموعات',
      finalDisplayMode: 'عرض مجموعات النهائي',
      fixedGroup: 'مجموعة ثابتة',
      fixedFinalGroup: 'المجموعة النهائية الثابتة',
      sortBy: 'الترتيب',
      zoom: 'التكبير',
      currentScore: 'النتيجة الحالية',
      aiSuggestedScore: 'النتيجة المقترحة',
      confidence: 'مستوى الثقة',
    },
    sections: {
      groupsTitle: 'عرض اللاعبين والمجموعات',
      groupsSubtitle: 'شاشة نظيفة للمتابعة المباشرة حسب المجموعة.',
      liveTitle: 'العرض الحي للمجموعة',
      liveSubtitle: 'تدوير تلقائي بين المجموعات المسجلة كل 5 ثوان.',
      overallTitle: 'الترتيب العام للمرحلة التمهيدية',
      overallSubtitle: 'يتم تمييز أفضل 12 متأهل للنهائي.',
      finalTitle: 'المرحلة النهائية',
      finalSubtitle: 'تقسيم المتأهلين إلى مجموعتين حسب الترتيب.',
      finalRanking: 'الترتيب النهائي',
      podiumTitle: 'منصة التتويج',
      podiumSubtitle: 'المراكز الثلاثة الأولى بعد فك أي تعادل.',
      playersTitle: 'إدارة اللاعبين',
      playersSubtitle: 'إضافة/تعديل/حذف لاعب، وتعديل الاسم والصورة والمجموعة.',
      groupsConfigPlaceholder: 'المجموعات الأساسية (مثال: A,B,C,D)',
      preliminaryAdminTitle: 'إدخال نتائج المرحلة التمهيدية',
      preliminaryAdminSubtitle: 'إدخال يدوي للنتيجة التمهيدية لكل لاعب.',
      prelimTieTitle: 'إدخال كسر تعادل التأهل (أفضل 12)',
      prelimTieSubtitle: 'يظهر فقط اللاعبين المتعادلين على حد التأهل.',
      finalAdminTitle: 'إدخال نتائج المرحلة النهائية',
      finalAdminSubtitle: 'إدخال نتائج النهائي للمجموعتين.',
      finalTieTitle: 'إدخال كسر تعادل منصة التتويج',
      finalTieSubtitle: 'يظهر فقط عند تعادل المراكز 1-3.',
      profileCropTitle: 'تعديل صورة اللاعب',
      profileCropSubtitle: 'حرّك وكبّر الصورة لتناسب الإطار الدائري قبل الحفظ.',
      aiAdvisorTitle: 'مساعد الذكاء الاصطناعي للنتيجة',
      liveModeTitle: 'شاشة البطولة المباشرة',
      liveModeSubtitle: 'عرض مخصص للشاشات أثناء الفعالية مع تحديث لحظي.',
      prelimRoundsTitle: 'الجولات التمهيدية',
      finalRoundsTitle: 'جولات النهائي',
    },
    table: {
      competitor: 'اللاعب',
      group: 'المجموعة',
      rank: 'الترتيب',
      score: 'النتيجة',
      total: 'المجموع',
      round1: 'جولة 1',
      round2: 'جولة 2',
      round3: 'جولة 3',
      tieScore: 'نتيجة كسر التعادل',
      verification: 'التحقق',
      status: 'الحالة',
      seed: 'التصنيف',
      medal: 'الميدالية',
      actions: 'الإجراءات',
      arabicName: 'الاسم بالعربية',
      englishName: 'الاسم بالإنجليزية',
    },
    actions: {
      refresh: 'تحديث',
      login: 'دخول',
      logout: 'تسجيل خروج',
      updateGroups: 'تحديث المجموعات',
      liveRotate: 'دوران تلقائي',
      liveFixed: 'مجموعة محددة',
      uploadProof: 'رفع إثبات',
      replaceProof: 'استبدال الإثبات',
      removeProof: 'حذف الإثبات',
      addPlayer: 'إضافة لاعب',
      removeImage: 'حذف الصورة',
      delete: 'حذف',
      resetScores: 'تصفير نتائج المرحلة',
      resetOnlyScores: 'تصفير النتائج فقط',
      resetScoresAndProofs: 'تصفير النتائج وحذف الإثبات',
      randomEvenGroups: 'توزيع عشوائي متوازن',
      searchPlayer: 'بحث بالاسم العربي أو الإنجليزي',
      cancel: 'إلغاء',
      convertArToEn: 'تحويل عربي → إنجليزي',
      convertEnToAr: 'تحويل إنجليزي → عربي',
      sortById: 'حسب الرقم',
      sortByArabic: 'حسب الاسم العربي',
      sortByEnglish: 'حسب الاسم الإنجليزي',
      sortByGroup: 'حسب المجموعة',
      aiAdvisor: 'اقتراح AI',
      quickApplyAi: 'تطبيق سريع AI',
      reAnalyze: 'إعادة التحليل',
      applySuggestedScore: 'اعتماد النتيجة المقترحة',
      applyCrop: 'تطبيق القص',
      resetPosition: 'إعادة الضبط',
      liveModeRotate: 'تدوير تلقائي',
      liveModeFixed: 'ثابت',
    },
    auth: {
      username: 'اسم المستخدم',
      password: 'كلمة المرور',
    },
    tabs: {
      groups: 'المجموعات',
      live: 'عرض حي',
      overall: 'الترتيب العام',
      final: 'النهائي',
      podium: 'التتويج',
      players: 'اللاعبون',
      preliminary: 'التمهيدي',
      prelimTie: 'كسر تعادل التأهل',
      finalTie: 'كسر تعادل التتويج',
      liveModeAdmin: 'إعدادات الوضع الحي',
    },
    messages: {
      saved: 'تم الحفظ بنجاح.',
      mustProvideNames: 'يرجى إدخال الاسم بالعربية والإنجليزية.',
      noPrelimTie: 'لا يوجد تعادل على حد التأهل.',
      noFinalTie: 'لا يوجد تعادل في المراكز 1-3.',
      prelimTieUnresolved: 'تعادل التأهل غير محسوم. أدخل نتائج كسر التعادل لتحديد أفضل 12.',
      finalTieUnresolved: 'تعادل منصة التتويج غير محسوم. أكمل إدخال كسر التعادل.',
      confirmDelete: 'هل تريد حذف اللاعب؟',
      confirmReset: 'هل تريد تصفير نتائج هذه المرحلة؟',
      resetProofPrompt: 'هل تريد أيضًا حذف صور الإثبات لهذه المرحلة؟',
      invalidScore: 'النتيجة يجب أن تكون من 0 إلى 9999.',
      unauthorized: 'انتهت صلاحية جلسة الإدارة. يرجى تسجيل الدخول مرة أخرى.',
      errorPrefix: 'حدث خطأ',
      noGroupsConfigured: 'لا توجد مجموعات أساسية مهيأة.',
      noNameToConvert: 'لا يوجد اسم للتحويل.',
      aiAnalyzing: 'جاري تحليل الصورة بالذكاء الاصطناعي...',
      noProofForAi: 'لا توجد صورة إثبات لتحليلها.',
    },
  },
  en: {
    titleFallback: 'Datwyler Shooting Event',
    subtitle: 'Pistol class · Distances: 15m ← 20m ← 25m',
    viewMode: 'View Mode',
    adminMode: 'Admin Panel',
    liveMode: 'Live Mode',
    adminLogin: 'Admin Login',
    adminLoginDesc: 'Enter admin credentials for full tournament control.',
    adminPanel: 'Admin Control Panel',
    adminPanelDesc: 'Manage players, assignments, and scoring for all stages.',
    defaultCredentials: 'Default admin credentials: datwyler / datwyler',
    labels: {
      liveTracker: 'LIVE TRACKER',
      mode: 'Mode',
      language: 'Language',
      lastSync: 'Last sync',
      loading: 'Loading tournament data...',
      players: 'Players',
      group: 'Group',
      unassigned: 'Unassigned',
      emptyLive: 'No players in this group',
      allPlayers: 'All players',
      top12: 'Top 12 finalists',
      finalist: 'Finalist',
      notFinalist: 'Not finalist',
      noPlayers: 'No players yet',
      noFinalists: 'No finalists yet',
      finalGroup1: 'Final Group 1 (Seeds 1-6)',
      finalGroup2: 'Final Group 2 (Seeds 7-12)',
      tieSlots: 'Tie-break slots',
      waiting: 'Waiting',
      viewProofInView: 'Allow proof images in view mode',
      liveModeVisibility: 'Live mode screen controls',
      activeLiveView: 'Active live view',
      rotationIntervalSec: 'Rotation interval (sec)',
      rotationPlayerCount: 'Players per rotation page',
      liveViewGroup: 'Live group board',
      liveViewPrelimTie: 'Preliminary tie-break',
      liveViewPrelimOverall: 'Preliminary overall',
      liveViewFinalGroups: 'Final groups board',
      liveViewFinalTie: 'Final tie-break',
      liveViewPodium: 'Podium',
      showGroupLive: 'Show live group board',
      showPrelimTie: 'Show preliminary tie-break',
      showPrelimOverall: 'Show preliminary overall ranking',
      showFinalGroups: 'Show final groups board',
      showFinalTie: 'Show final tie-break',
      showPodium: 'Show podium',
      groupDisplayMode: 'Group board mode',
      finalDisplayMode: 'Final board mode',
      fixedGroup: 'Fixed group',
      fixedFinalGroup: 'Fixed final group',
      sortBy: 'Sort by',
      zoom: 'Zoom',
      currentScore: 'Current score',
      aiSuggestedScore: 'AI suggested score',
      confidence: 'Confidence',
    },
    sections: {
      groupsTitle: 'Players & Groups Overview',
      groupsSubtitle: 'Clean view screen for live grouping.',
      liveTitle: 'Live Group Screen',
      liveSubtitle: 'Automatic rotation through registered groups every 5 seconds.',
      overallTitle: 'Preliminary Overall Ranking',
      overallSubtitle: 'Top 12 finalists are highlighted.',
      finalTitle: 'Final Stage',
      finalSubtitle: 'Finalists are split into two groups by rank.',
      finalRanking: 'Final Ranking',
      podiumTitle: 'Podium',
      podiumSubtitle: 'Top 3 after tie-break resolution.',
      playersTitle: 'Players Management',
      playersSubtitle: 'Add/update/remove players, names, images, and group assignment.',
      groupsConfigPlaceholder: 'Primary groups (example: A,B,C,D)',
      preliminaryAdminTitle: 'Preliminary Scoring',
      preliminaryAdminSubtitle: 'Manually input each player preliminary score.',
      prelimTieTitle: 'Qualification Tie-Break Scoring (Top 12)',
      prelimTieSubtitle: 'Only players tied at qualification cutoff are shown.',
      finalAdminTitle: 'Final Stage Scoring',
      finalAdminSubtitle: 'Input final scores for both final groups.',
      finalTieTitle: 'Podium Tie-Break Scoring',
      finalTieSubtitle: 'Shown only when places 1-3 are tied.',
      profileCropTitle: 'Adjust Player Photo',
      profileCropSubtitle: 'Move and zoom to fit the circular avatar before saving.',
      aiAdvisorTitle: 'AI Score Advisor',
      liveModeTitle: 'Event Live Screen',
      liveModeSubtitle: 'Monitor-ready display with real-time updates.',
      prelimRoundsTitle: 'Preliminary Rounds',
      finalRoundsTitle: 'Final Rounds',
    },
    table: {
      competitor: 'Player',
      group: 'Group',
      rank: 'Rank',
      score: 'Score',
      total: 'Total',
      round1: 'Round 1',
      round2: 'Round 2',
      round3: 'Round 3',
      tieScore: 'Tie-Break Score',
      verification: 'Verification',
      status: 'Status',
      seed: 'Seed',
      medal: 'Medal',
      actions: 'Actions',
      arabicName: 'Arabic Name',
      englishName: 'English Name',
    },
    actions: {
      refresh: 'Refresh',
      login: 'Login',
      logout: 'Logout',
      updateGroups: 'Update Groups',
      liveRotate: 'Auto Rotation',
      liveFixed: 'Fixed Group',
      uploadProof: 'Upload Proof',
      replaceProof: 'Replace Proof',
      removeProof: 'Remove Proof',
      addPlayer: 'Add Player',
      removeImage: 'Remove Image',
      delete: 'Delete',
      resetScores: 'Reset Stage Scores',
      resetOnlyScores: 'Reset scores only',
      resetScoresAndProofs: 'Reset scores and proofs',
      randomEvenGroups: 'Random even grouping',
      searchPlayer: 'Search by Arabic or English name',
      cancel: 'Cancel',
      convertArToEn: 'Convert Arabic → English',
      convertEnToAr: 'Convert English → Arabic',
      sortById: 'By ID',
      sortByArabic: 'By Arabic name',
      sortByEnglish: 'By English name',
      sortByGroup: 'By group',
      aiAdvisor: 'AI Advice',
      quickApplyAi: 'Quick Apply AI',
      reAnalyze: 'Re-analyze',
      applySuggestedScore: 'Apply suggested score',
      applyCrop: 'Apply crop',
      resetPosition: 'Reset position',
      liveModeRotate: 'Auto rotate',
      liveModeFixed: 'Fixed',
    },
    auth: {
      username: 'Username',
      password: 'Password',
    },
    tabs: {
      groups: 'Groups',
      live: 'Live',
      overall: 'Overall',
      final: 'Final',
      podium: 'Podium',
      players: 'Players',
      preliminary: 'Preliminary',
      prelimTie: 'Prelim Tie-Break',
      finalTie: 'Final Tie-Break',
      liveModeAdmin: 'Live Mode Settings',
    },
    messages: {
      saved: 'Saved successfully.',
      mustProvideNames: 'Arabic and English names are required.',
      noPrelimTie: 'No tie at qualification cutoff.',
      noFinalTie: 'No tie in places 1-3.',
      prelimTieUnresolved: 'Qualification tie is unresolved. Enter tie-break scores to finalize top 12.',
      finalTieUnresolved: 'Podium tie is unresolved. Complete tie-break scoring.',
      confirmDelete: 'Delete this player?',
      confirmReset: 'Reset this stage scores?',
      resetProofPrompt: 'Also remove all proof images for this stage?',
      invalidScore: 'Score must be between 0 and 9999.',
      unauthorized: 'Admin session expired. Please login again.',
      errorPrefix: 'Error',
      noGroupsConfigured: 'No primary groups configured.',
      noNameToConvert: 'No name available to convert.',
      aiAnalyzing: 'Analyzing image with AI...',
      noProofForAi: 'No proof image available to analyze.',
    },
  },
}

export function createInitialState() {
  return {
    competition: { titleAr: '', titleEn: '' },
    players: [],
    scores: {
      prelim_r1: {},
      prelim_r2: {},
      prelim_r3: {},
      prelim_tiebreak: {},
      final_r1: {},
      final_r2: {},
      final_tiebreak: {},
    },
    scoreProofs: {},
    settings: {
      viewProofInView: false,
      liveMode: {
        activeView: 'group_live',
        showGroupLive: true,
        groupDisplayMode: 'rotate',
        groupFixedCode: '',
        showPrelimTie: true,
        showPrelimOverall: true,
        showFinalGroups: true,
        finalDisplayMode: 'rotate',
        finalFixedGroup: 1,
        showFinalTie: true,
        showPodium: true,
        rotationIntervalSec: 5,
        rotationPlayerCount: 12,
      },
    },
    derived: {
      preliminaryRanking: { rows: [], tieBreak: { required: false, resolved: true, slots: 0, playerIds: [] } },
      finalists: [],
      finalGroups: { group1: [], group2: [] },
      finalRanking: { rows: [], tieBreak: { required: false, resolved: true, slots: 0, playerIds: [] } },
      podium: [],
    },
    serverTime: '',
  }
}
