export type Lang = 'fr' | 'en';

export const translations = {
  // Navbar
  'nav.dashboard': { fr: 'Dashboard', en: 'Dashboard' },
  'nav.sessions': { fr: 'Sessions', en: 'Sessions' },
  'nav.users': { fr: 'Utilisateurs', en: 'Users' },

  // Dashboard
  'dashboard.title': { fr: 'Dashboard', en: 'Dashboard' },
  'dashboard.totalSessions': { fr: 'Sessions', en: 'Sessions' },
  'dashboard.totalUsers': { fr: 'Utilisateurs', en: 'Users' },
  'dashboard.successRate': { fr: 'Taux de réussite', en: 'Success Rate' },
  'dashboard.avgPrecision': { fr: 'Précision moy.', en: 'Avg. Precision' },
  'dashboard.sessionsByType': { fr: 'Sessions par type', en: 'Sessions by Type' },
  'dashboard.monthlyActivity': { fr: 'Activité mensuelle', en: 'Monthly Activity' },
  'dashboard.recentSessions': { fr: 'Sessions récentes', en: 'Recent Sessions' },
  'dashboard.topPrecision': { fr: 'Top Précision', en: 'Top Precision' },

  // Sessions page
  'sessions.title': { fr: 'Sessions', en: 'Sessions' },
  'sessions.sessionType': { fr: 'Type de session', en: 'Session Type' },
  'sessions.allTypes': { fr: 'Tous les types', en: 'All Types' },
  'sessions.result': { fr: 'Résultat', en: 'Result' },
  'sessions.all': { fr: 'Tous', en: 'All' },
  'sessions.success': { fr: 'Réussi', en: 'Success' },
  'sessions.failed': { fr: 'Échoué', en: 'Failed' },
  'sessions.search': { fr: 'Scénario, map, nom...', en: 'Scenario, map, name...' },
  'sessions.noSession': { fr: 'Aucune session trouvée', en: 'No session found' },

  // Session detail
  'session.backToSessions': { fr: 'Retour aux sessions', en: 'Back to Sessions' },
  'session.notFound': { fr: 'Session non trouvée', en: 'Session not found' },
  'session.score': { fr: 'Score', en: 'Score' },
  'session.duration': { fr: 'Durée', en: 'Duration' },
  'session.enemiesHit': { fr: 'Ennemis touchés', en: 'Enemies Hit' },
  'session.civiliansHit': { fr: 'Civils touchés', en: 'Civilians Hit' },
  'session.damageTaken': { fr: 'Dégâts reçus', en: 'Damage Taken' },
  'session.participants': { fr: 'Participants', en: 'Participants' },
  'session.objectives': { fr: 'Objectifs', en: 'Objectives' },
  'session.hitDistribution': { fr: 'Répartition des impacts', en: 'Hit Distribution' },
  'session.shotDetails': { fr: 'Détail des tirs', en: 'Shot Details' },
  'session.global': { fr: 'Global', en: 'Global' },
  'session.personalStats': { fr: 'Statistiques personnelles', en: 'Personal Statistics' },
  'session.globalStats': { fr: 'Statistiques globales', en: 'Global Statistics' },
  'session.friendlyFire': { fr: 'Tirs amis', en: 'Friendly Fire' },
  'session.hitsReceived': { fr: 'Tirs reçus', en: 'Hits Received' },
  'session.shotsInSession': { fr: 'Tirs durant la session', en: 'Shots In Session' },
  'session.missed': { fr: 'Manqués', en: 'Missed' },

  // Table headers
  'table.date': { fr: 'Date', en: 'Date' },
  'table.type': { fr: 'Type', en: 'Type' },
  'table.scenario': { fr: 'Scénario', en: 'Scenario' },
  'table.map': { fr: 'Map', en: 'Map' },
  'table.score': { fr: 'Score', en: 'Score' },
  'table.enemies': { fr: 'Ennemis', en: 'Enemies' },
  'table.civilians': { fr: 'Civils', en: 'Civilians' },
  'table.duration': { fr: 'Durée', en: 'Duration' },
  'table.result': { fr: 'Résultat', en: 'Result' },
  'table.user': { fr: 'Utilisateur', en: 'User' },
  'table.shotsFired': { fr: 'Tirs effectués', en: 'Shots Fired' },
  'table.shotsMissed': { fr: 'Tirs manqués', en: 'Shots Missed' },
  'table.enemiesHit': { fr: 'Ennemis touchés', en: 'Enemies Hit' },
  'table.civiliansHit': { fr: 'Civils touchés', en: 'Civilians Hit' },
  'table.avgPrecision': { fr: 'Précision moy.', en: 'Avg. Precision' },
  'table.reactionTime': { fr: 'Temps réaction', en: 'Reaction Time' },
  'table.hitsReceivedIA': { fr: 'Tirs reçus (IA)', en: 'Hits from IA' },
  'table.enemiesKilled': { fr: 'Ennemis tués', en: 'Enemies Killed' },
  'table.civiliansKilled': { fr: 'Civils tués', en: 'Civilians Killed' },
  'table.username': { fr: 'Username', en: 'Username' },
  'table.name': { fr: 'Nom', en: 'Name' },
  'table.avgReaction': { fr: 'Réaction moy.', en: 'Avg. Reaction' },
  'table.lastConnection': { fr: 'Dernière connexion', en: 'Last Connection' },

  // Shot detail table
  'shot.index': { fr: '#', en: '#' },
  'shot.shooter': { fr: 'Tireur', en: 'Shooter' },
  'shot.impactType': { fr: 'Type impact', en: 'Impact Type' },
  'shot.target': { fr: 'Cible', en: 'Target' },
  'shot.boneZone': { fr: 'Os/Zone', en: 'Bone/Zone' },
  'shot.precision': { fr: 'Précision', en: 'Precision' },
  'shot.distance': { fr: 'Distance', en: 'Distance' },
  'shot.reaction': { fr: 'Réaction', en: 'Reaction' },
  'shot.killed': { fr: 'Tué', en: 'Killed' },
  'shot.time': { fr: 'Temps', en: 'Time' },

  // Users page
  'users.title': { fr: 'Utilisateurs', en: 'Users' },
  'users.search': { fr: 'Rechercher par nom, prénom ou username...', en: 'Search by name or username...' },
  'users.noUser': { fr: 'Aucun utilisateur trouvé', en: 'No user found' },

  // User detail
  'user.backToUsers': { fr: 'Retour aux utilisateurs', en: 'Back to Users' },
  'user.notFound': { fr: 'Utilisateur non trouvé', en: 'User not found' },
  'user.male': { fr: 'Homme', en: 'Male' },
  'user.female': { fr: 'Femme', en: 'Female' },
  'user.leftHanded': { fr: 'Gaucher', en: 'Left-handed' },
  'user.rightHanded': { fr: 'Droitier', en: 'Right-handed' },
  'user.height': { fr: 'Taille', en: 'Height' },
  'user.avatar': { fr: 'Avatar', en: 'Avatar' },
  'user.weapon': { fr: 'Arme', en: 'Weapon' },
  'user.sessions': { fr: 'Sessions', en: 'Sessions' },
  'user.totalTime': { fr: 'Temps total', en: 'Total Time' },
  'user.avgPrecision': { fr: 'Précision moy.', en: 'Avg. Precision' },
  'user.avgReaction': { fr: 'Réaction moy.', en: 'Avg. Reaction' },
  'user.shotsFired': { fr: 'Tirs effectués', en: 'Shots Fired' },
  'user.enemiesKilled': { fr: 'Ennemis tués', en: 'Enemies Killed' },
  'user.detailedStats': { fr: 'Statistiques globales détaillées', en: 'Detailed Global Statistics' },
  'user.shots': { fr: 'Tirs', en: 'Shots' },
  'user.hitsReceived': { fr: 'Tirs reçus', en: 'Hits Received' },
  'user.eliminations': { fr: 'Éliminations', en: 'Eliminations' },
  'user.precisionEvolution': { fr: 'Évolution Précision / Temps de réaction', en: 'Precision / Reaction Time Evolution' },
  'user.sessionTypeDistrib': { fr: 'Répartition par type de session', en: 'Distribution by Session Type' },
  'user.sessionHistory': { fr: 'Historique des sessions', en: 'Session History' },
  'user.noSession': { fr: 'Aucune session', en: 'No sessions' },

  // Detailed stats
  'stats.shotsFired': { fr: 'Tirs effectués', en: 'Shots fired' },
  'stats.shotsMissed': { fr: 'Tirs manqués', en: 'Shots missed' },
  'stats.enemiesHit': { fr: 'Ennemis touchés', en: 'Enemies hit' },
  'stats.civiliansHit': { fr: 'Civils touchés', en: 'Civilians hit' },
  'stats.policeHit': { fr: 'Police touchée', en: 'Police hit' },
  'stats.fromEnemyIA': { fr: 'Depuis IA ennemie', en: 'From enemy AI' },
  'stats.fromEnemyUsers': { fr: 'Depuis joueurs ennemis', en: 'From enemy players' },
  'stats.fromPolice': { fr: 'Depuis police (tir ami)', en: 'From police (friendly fire)' },
  'stats.enemiesKilled': { fr: 'Ennemis tués', en: 'Enemies killed' },
  'stats.civiliansKilled': { fr: 'Civils tués', en: 'Civilians killed' },
  'stats.policeKilled': { fr: 'Police tuée', en: 'Police killed' },

  // Objectives
  'obj.civilian': { fr: 'Protection civils', en: 'Civilian Protection' },
  'obj.time': { fr: 'Temps', en: 'Time' },
  'obj.enemy': { fr: 'Ennemis', en: 'Enemies' },
  'obj.health': { fr: 'Santé', en: 'Health' },
  'obj.precision': { fr: 'Précision', en: 'Precision' },
  'obj.reactTime': { fr: 'Temps de réaction', en: 'Reaction Time' },
  'obj.ammoLimit': { fr: 'Munitions', en: 'Ammo' },
  'obj.target': { fr: 'Cibles', en: 'Targets' },
  'obj.overall': { fr: 'Global', en: 'Overall' },

  // Session types
  'sessionType.0': { fr: 'Stand de Tir', en: 'Fire Range' },
  'sessionType.1': { fr: 'Challenge', en: 'Challenge' },
  'sessionType.2': { fr: 'Protection', en: 'Protect' },
  'sessionType.3': { fr: 'Désescalade', en: 'De-Escalation' },
  'sessionType.4': { fr: 'Terrorisme', en: 'Terrorism' },
  'sessionType.5': { fr: 'Incendie', en: 'Fire Extinction' },
  'sessionType.6': { fr: 'Récupération', en: 'Recovering' },
  'sessionType.7': { fr: 'Tir Longue Distance', en: 'Long Range' },

  // Hit types
  'hitType.enemy': { fr: 'Ennemi', en: 'Enemy' },
  'hitType.civilian': { fr: 'Civil', en: 'Civilian' },
  'hitType.police': { fr: 'Police', en: 'Police' },
  'hitType.object': { fr: 'Objet', en: 'Object' },
  'hitType.paperTarget': { fr: 'Cible Papier', en: 'Paper Target' },
  'hitType.target': { fr: 'Cible', en: 'Target' },
  'hitType.deadBody': { fr: 'Corps', en: 'Dead Body' },

  // Badges
  'badge.success': { fr: 'Réussi', en: 'Success' },
  'badge.failed': { fr: 'Échoué', en: 'Failed' },
  'badge.killed': { fr: 'Tué', en: 'Killed' },

  // FireRange detail
  'firerange.personalStats': { fr: 'Statistiques personnelles', en: 'Personal Statistics' },
  'firerange.shotsFired': { fr: 'Tirs effectués', en: 'Shots Fired' },
  'firerange.shotsMissed': { fr: 'Tirs manqués', en: 'Missed Shots' },
  'firerange.avgPrecision': { fr: 'Précision moyenne', en: 'Average Precision' },
  'firerange.precisionChart': { fr: 'Précision des tirs durant la session', en: 'Shots Precision During Session' },
  'firerange.targetView': { fr: 'Impacts sur la cible', en: 'Target Hits' },
  'firerange.targetsHit': { fr: 'Cibles touchées', en: 'Targets Hit' },
  'firerange.avgReaction': { fr: 'Réaction moyenne', en: 'Avg. Reaction Time' },
  'firerange.reactionChart': { fr: 'Temps de réaction durant la session', en: 'Reaction Time During Session' },

  // Charts
  'chart.sessions': { fr: 'Sessions', en: 'Sessions' },
  'chart.precision': { fr: 'Précision', en: 'Precision' },
  'chart.reactionTime': { fr: 'Temps réaction (ms)', en: 'Reaction Time (ms)' },

  // Print
  'print.btn': { fr: 'Imprimer', en: 'Print' },
  'print.generatedOn': { fr: 'Généré le', en: 'Generated on' },

  // Misc
  'loading': { fr: 'Chargement...', en: 'Loading...' },
  'noData': { fr: 'Aucune donnée', en: 'No data' },
} as const;

export type TranslationKey = keyof typeof translations;
