- Random.secure() para selección de impostores (no predecible) - Random.secure() también en desempate de votación - Nueva PantallaGestorHost para coordinación multi-device - Navegación: host va a gestor tras iniciar, no a pantalla de palabra - PantallaPalabraCliente: cada jugador ve su palabra en su móvil - PantallaDebateCliente: debate con timer y botón solicitar votación - PantallaVotacionCliente: voto desde el móvil del cliente - PantallaUnirse: listener que reacciona a partidaInicio y cambia de fase - Protocolo: listo/voto/solicitoVotacion via Nearby hacia el host - Nuevas cadenas l10n ES
586 lines
14 KiB
Dart
586 lines
14 KiB
Dart
// ignore: unused_import
|
|
import 'package:intl/intl.dart' as intl;
|
|
import 'app_localizations.dart';
|
|
|
|
// ignore_for_file: type=lint
|
|
|
|
/// The translations for French (`fr`).
|
|
class AppLocalizationsFr extends AppLocalizations {
|
|
AppLocalizationsFr([String locale = 'fr']) : super(locale);
|
|
|
|
@override
|
|
String get appTitle => 'Farolero';
|
|
|
|
@override
|
|
String get subtitle => 'Jeu de déduction sociale';
|
|
|
|
@override
|
|
String get loadingWords => 'Chargement des mots...';
|
|
|
|
@override
|
|
String get playersRange => '3-20 joueurs • Sans internet';
|
|
|
|
@override
|
|
String get createGame => 'Créer une partie';
|
|
|
|
@override
|
|
String get joinGame => 'Rejoindre une partie';
|
|
|
|
@override
|
|
String get howToPlay => 'Comment jouer';
|
|
|
|
@override
|
|
String get settings => 'Paramètres';
|
|
|
|
@override
|
|
String get gameMode => 'Mode de jeu';
|
|
|
|
@override
|
|
String get singleDevice => 'Un seul téléphone';
|
|
|
|
@override
|
|
String get multiDevice => 'Multi-téléphone';
|
|
|
|
@override
|
|
String get category => 'Catégorie';
|
|
|
|
@override
|
|
String get categoryAll => 'Toutes';
|
|
|
|
@override
|
|
String get categoryAnimals => 'Animaux';
|
|
|
|
@override
|
|
String get categoryFood => 'Nourriture';
|
|
|
|
@override
|
|
String get categoryCountries => 'Pays';
|
|
|
|
@override
|
|
String get categorySports => 'Sports';
|
|
|
|
@override
|
|
String get categoryProfessions => 'Métiers';
|
|
|
|
@override
|
|
String get categoryObjects => 'Objets';
|
|
|
|
@override
|
|
String get categoryPlaces => 'Lieux';
|
|
|
|
@override
|
|
String get categoryMovies => 'Films';
|
|
|
|
@override
|
|
String get categoryMusic => 'Musique';
|
|
|
|
@override
|
|
String get categoryTechnology => 'Technologie';
|
|
|
|
@override
|
|
String playersCount(int count) {
|
|
return 'Joueurs ($count)';
|
|
}
|
|
|
|
@override
|
|
String get playersRangeHint => '3-20';
|
|
|
|
@override
|
|
String get playerNameHint => 'Nom du joueur';
|
|
|
|
@override
|
|
String get playerAlreadyExists => 'Un joueur avec ce nom existe déjà';
|
|
|
|
@override
|
|
String get maxPlayersReached => 'Maximum 20 joueurs';
|
|
|
|
@override
|
|
String get minPlayersRequired => 'Il faut au moins 3 joueurs';
|
|
|
|
@override
|
|
String get configuration => 'Configuration';
|
|
|
|
@override
|
|
String get impostors => '🎭 Imposteurs';
|
|
|
|
@override
|
|
String get impostorClue => '🔍 Indice pour l\'imposteur';
|
|
|
|
@override
|
|
String get impostorClueDescription => 'L\'imposteur connaît la catégorie';
|
|
|
|
@override
|
|
String get debate => '🗣️ Debate';
|
|
|
|
@override
|
|
String get debateTime => '⏱️ Temps de débat';
|
|
|
|
@override
|
|
String get noLimit => 'Sans limite';
|
|
|
|
@override
|
|
String get oneMin => '1 min';
|
|
|
|
@override
|
|
String get twoMin => '2 min';
|
|
|
|
@override
|
|
String get threeMin => '3 min';
|
|
|
|
@override
|
|
String get fiveMin => '5 min';
|
|
|
|
@override
|
|
String get startGame => 'Lancer la partie';
|
|
|
|
@override
|
|
String get seeYourWord => 'Voir ton mot';
|
|
|
|
@override
|
|
String get eachPlayerMustSee => 'Chaque joueur doit voir son mot en secret';
|
|
|
|
@override
|
|
String roundNumber(int round) {
|
|
return 'Manche $round';
|
|
}
|
|
|
|
@override
|
|
String get alreadySeen => 'A déjà vu son mot';
|
|
|
|
@override
|
|
String get tapToSee => 'Appuie pour voir';
|
|
|
|
@override
|
|
String get allSeenStartDebate => 'Tous ont vu → Lancer le débat';
|
|
|
|
@override
|
|
String playersRemaining(int count) {
|
|
return 'Encore $count joueurs';
|
|
}
|
|
|
|
@override
|
|
String get youAreImpostor => 'Tu es l\'imposteur !';
|
|
|
|
@override
|
|
String get yourWordIs => 'Ton mot est :';
|
|
|
|
@override
|
|
String clueCategory(String category) {
|
|
return 'Indice : $category';
|
|
}
|
|
|
|
@override
|
|
String get holdToSeeWord => 'Maintiens appuyé pour voir ton mot';
|
|
|
|
@override
|
|
String get makeSureNoOneLooks =>
|
|
'Assure-toi que personne d\'autre ne regarde';
|
|
|
|
@override
|
|
String get showingWord => '👁️ Affichage...';
|
|
|
|
@override
|
|
String get holdToSee => '👆 Maintiens appuyé pour voir';
|
|
|
|
@override
|
|
String get seenMyWord => 'J\'ai vu mon mot';
|
|
|
|
@override
|
|
String debateRound(int round) {
|
|
return 'Débat - Manche $round';
|
|
}
|
|
|
|
@override
|
|
String get timeUp => '⏰ Temps écoulé !';
|
|
|
|
@override
|
|
String get timeRemaining => '⏱️ Temps restant';
|
|
|
|
@override
|
|
String get playersInDebate => 'Joueurs en débat';
|
|
|
|
@override
|
|
String activePlayersInfo(int active, int impostors) {
|
|
return '$active actifs • $impostors imposteur(s) caché(s)';
|
|
}
|
|
|
|
@override
|
|
String get eliminated => 'Éliminé';
|
|
|
|
@override
|
|
String get notes => 'Notes';
|
|
|
|
@override
|
|
String get goToVoting => 'Passer au vote';
|
|
|
|
@override
|
|
String get voting => '🗳️ Vote';
|
|
|
|
@override
|
|
String get turnToVote => 'Au tour de voter :';
|
|
|
|
@override
|
|
String votesProgress(int current, int total) {
|
|
return 'Votes : $current/$total';
|
|
}
|
|
|
|
@override
|
|
String get whoIsImpostor => 'Qui est l\'imposteur selon toi ?';
|
|
|
|
@override
|
|
String get confirmVote => 'Confirmer le vote';
|
|
|
|
@override
|
|
String get votingComplete => '🗳️ Vote terminé';
|
|
|
|
@override
|
|
String get allVoted => 'Tout le monde a voté !';
|
|
|
|
@override
|
|
String get tapToReveal => 'Appuie pour révéler le résultat';
|
|
|
|
@override
|
|
String get revealResult => 'Révéler le résultat';
|
|
|
|
@override
|
|
String get result => 'Résultat';
|
|
|
|
@override
|
|
String get revealing => 'Révélation...';
|
|
|
|
@override
|
|
String get wasImpostor => 'C\'était l\'IMPOSTEUR ! 🎉';
|
|
|
|
@override
|
|
String get wasInnocent => 'C\'était un INNOCENT 😱';
|
|
|
|
@override
|
|
String get votesThisRound => 'Votes de cette manche';
|
|
|
|
@override
|
|
String get seeEndResult => 'Voir le résultat final';
|
|
|
|
@override
|
|
String get impostorGuessWord => 'L\'imposteur devine-t-il le mot ?';
|
|
|
|
@override
|
|
String get nextRound => 'Manche suivante';
|
|
|
|
@override
|
|
String get impostorGuessTitle => '🎯 Devinette de l\'imposteur';
|
|
|
|
@override
|
|
String get impostorCanGuess =>
|
|
'L\'imposteur éliminé peut\ntenter de deviner le mot';
|
|
|
|
@override
|
|
String get ifCorrectImpostorsWin => 'S\'il trouve, les imposteurs gagnent !';
|
|
|
|
@override
|
|
String get guessWordHint => 'Quel est le mot selon toi ?';
|
|
|
|
@override
|
|
String get dontGuess => 'Ne pas tenter';
|
|
|
|
@override
|
|
String get guess => 'Deviner';
|
|
|
|
@override
|
|
String get correctGuess => 'Il a trouvé !';
|
|
|
|
@override
|
|
String theWordWas(String word) {
|
|
return 'Le mot était : $word';
|
|
}
|
|
|
|
@override
|
|
String get impostorsWin => 'Les imposteurs gagnent !';
|
|
|
|
@override
|
|
String get wrongGuess => 'Il n\'a pas trouvé !';
|
|
|
|
@override
|
|
String get gameContinues => 'La partie continue...';
|
|
|
|
@override
|
|
String get gameOver => 'Fin de partie';
|
|
|
|
@override
|
|
String get playersWin => 'Les joueurs gagnent !';
|
|
|
|
@override
|
|
String get theSecretWordWas => '🔍 Le mot était :';
|
|
|
|
@override
|
|
String categoryLabel(String category) {
|
|
return 'Catégorie : $category';
|
|
}
|
|
|
|
@override
|
|
String get theImpostorWas => '🎭 L\'imposteur était :';
|
|
|
|
@override
|
|
String get theImpostorsWere => '🎭 Les imposteurs étaient :';
|
|
|
|
@override
|
|
String get votingHistory => '📊 Historique des votes';
|
|
|
|
@override
|
|
String roundElimination(int round, String name) {
|
|
return 'Manche $round : $name';
|
|
}
|
|
|
|
@override
|
|
String get rematch => 'Revanche';
|
|
|
|
@override
|
|
String get mainMenu => 'Menu principal';
|
|
|
|
@override
|
|
String get notesTitle => '📝 Notes';
|
|
|
|
@override
|
|
String get notesSaved => 'Notes sauvegardées';
|
|
|
|
@override
|
|
String get whoAreYou => 'Qui es-tu ?';
|
|
|
|
@override
|
|
String get selectYourName =>
|
|
'Sélectionne ton nom pour voir tes notes privées';
|
|
|
|
@override
|
|
String notesOf(String name) {
|
|
return 'Notes de $name';
|
|
}
|
|
|
|
@override
|
|
String get notesAboutPlayers => 'Notes sur chaque joueur';
|
|
|
|
@override
|
|
String get playerNoteHint => 'Qu\'a-t-il dit ? Suspect ?';
|
|
|
|
@override
|
|
String get freeNote => 'Note libre';
|
|
|
|
@override
|
|
String get freeNoteHint => 'Notes personnelles...';
|
|
|
|
@override
|
|
String get rulesTitle => '📖 Comment jouer';
|
|
|
|
@override
|
|
String get rulesWhatIsTitle => '🎭 Qu\'est-ce que L\'Imposteur ?';
|
|
|
|
@override
|
|
String get rulesWhatIsBody =>
|
|
'Un jeu de déduction sociale pour 3-20 joueurs. Tout le monde reçoit un mot secret... sauf l\'imposteur ! Ta mission : découvrir qui bluff.';
|
|
|
|
@override
|
|
String get rulesHowToPlayTitle => '🔍 Comment joue-t-on ?';
|
|
|
|
@override
|
|
String get rulesHowToPlayBody =>
|
|
'1. Distribution des rôles : tout le monde reçoit le même mot, sauf le(s) imposteur(s).\n\n2. Débat : à tour de rôle, chaque joueur décrit le mot SANS le dire directement. L\'imposteur doit faire semblant de le connaître.\n\n3. Vote : à la fin du débat, tout le monde vote pour celui qu\'il pense être l\'imposteur.\n\n4. Élimination : le plus voté est éliminé et on révèle s\'il était imposteur ou non.\n\n5. Si c\'était l\'imposteur, il peut tenter de deviner le mot. S\'il trouve, les imposteurs gagnent !';
|
|
|
|
@override
|
|
String get rulesWhoWinsTitle => '🏆 Qui gagne ?';
|
|
|
|
@override
|
|
String get rulesWhoWinsBody =>
|
|
'• Joueurs : ils gagnent s\'ils éliminent TOUS les imposteurs.\n• Imposteurs : ils gagnent s\'ils ne sont pas découverts jusqu\'à ce qu\'il reste autant ou moins de joueurs normaux que d\'imposteurs, ou s\'ils devinent le mot en étant éliminés.';
|
|
|
|
@override
|
|
String get rulesTipsPlayersTitle => '💡 Conseils pour les joueurs';
|
|
|
|
@override
|
|
String get rulesTipsPlayersBody =>
|
|
'• Donne des indices subtils qui prouvent que tu connais le mot, mais pas trop évidents pour que l\'imposteur ne les utilise pas.\n• Observe qui donne des réponses vagues ou génériques.\n• Utilise les notes pour noter ce que chacun dit.\n• Ne dis pas le mot directement, ça aide l\'imposteur !';
|
|
|
|
@override
|
|
String get rulesTipsImpostorTitle => '🎭 Conseils pour l\'imposteur';
|
|
|
|
@override
|
|
String get rulesTipsImpostorBody =>
|
|
'• Écoute attentivement les indices des autres.\n• Essaie de déduire le mot pour donner des indices crédibles.\n• Ne sois pas le premier à parler si tu n\'es pas sûr.\n• Si on te donne la catégorie comme indice, utilise-la à ton avantage.\n• Accuse les autres pour détourner l\'attention.';
|
|
|
|
@override
|
|
String get rulesModesTitle => '📱 Modes de jeu';
|
|
|
|
@override
|
|
String get rulesModesBody =>
|
|
'• Un seul téléphone : tout le monde partage l\'appareil. Chaque joueur voit son mot en appuyant et maintenant un bouton.\n\n• Multi-téléphone : chaque joueur utilise son propre appareil. Ils se connectent par Bluetooth/WiFi Direct sans avoir besoin d\'internet.';
|
|
|
|
@override
|
|
String get rulesExampleTitle => '✏️ Exemple de partie';
|
|
|
|
@override
|
|
String get rulesExampleBody =>
|
|
'Mot secret : \"Pizza\"\n\n• Marie : \"Ça se mange chaud\" ✓\n• Lucas : \"Ça arrive dans une boîte\" ✓\n• Julie (imposteur) : \"C\'est très populaire\" 🤔\n• Thomas : \"Il y a du fromage\" ✓\n\nJulie a donné une réponse très générique... Suspecte !';
|
|
|
|
@override
|
|
String get joinGameTitle => 'Rejoindre une partie';
|
|
|
|
@override
|
|
String get multiDeviceMode => 'Mode multi-téléphone';
|
|
|
|
@override
|
|
String get scanQrDescription =>
|
|
'Scanne le code QR affiché par l\'hôte pour te connecter à la partie via Bluetooth/WiFi Direct.';
|
|
|
|
@override
|
|
String get comingSoon => 'Prochainement';
|
|
|
|
@override
|
|
String get nearbyNotAvailable =>
|
|
'La connexion multi-téléphone avec Nearby Connections nécessite des appareils Android physiques.\n\nPour l\'instant, utilise le mode \"Un seul téléphone\" pour jouer sur un appareil partagé.';
|
|
|
|
@override
|
|
String get back => 'Retour';
|
|
|
|
@override
|
|
String get yes => 'Oui';
|
|
|
|
@override
|
|
String get no => 'Non';
|
|
|
|
@override
|
|
String get cancel => 'Annuler';
|
|
|
|
@override
|
|
String get accept => 'Accepter';
|
|
|
|
@override
|
|
String get next => 'Suivant';
|
|
|
|
@override
|
|
String get settingsTitle => 'Paramètres';
|
|
|
|
@override
|
|
String get language => 'Langue';
|
|
|
|
@override
|
|
String get soundVolume => 'Volume des effets';
|
|
|
|
@override
|
|
String get vibration => 'Vibration';
|
|
|
|
@override
|
|
String get about => 'À propos';
|
|
|
|
@override
|
|
String get version => 'Version';
|
|
|
|
@override
|
|
String get developer => 'Développeur';
|
|
|
|
@override
|
|
String get licenses => 'Licences';
|
|
|
|
@override
|
|
String get scanToJoin => 'Escanea el QR para unirte';
|
|
|
|
@override
|
|
String get connectedPlayers => 'Jugadores conectados';
|
|
|
|
@override
|
|
String get hostGame => 'Gestor de partida';
|
|
|
|
@override
|
|
String get waitingPlayersSeeWord => 'Esperando que todos vean su palabra...';
|
|
|
|
@override
|
|
String get activePlayers => 'Jugadores activos';
|
|
|
|
@override
|
|
String get playersVoted => 'Han votado';
|
|
|
|
@override
|
|
String get waitingVoting => 'Esperando que voten...';
|
|
|
|
@override
|
|
String get waitingForPlayers => 'Esperando jugadores...';
|
|
|
|
@override
|
|
String needMorePlayers(int count) {
|
|
return 'Faltan $count jugadores más';
|
|
}
|
|
|
|
@override
|
|
String get starting => 'Iniciando...';
|
|
|
|
@override
|
|
String get enterNameAndScan => 'Escribe tu nombre y escanea el QR del host';
|
|
|
|
@override
|
|
String get yourName => 'Tu nombre';
|
|
|
|
@override
|
|
String get nameRequired => 'Escribe tu nombre';
|
|
|
|
@override
|
|
String get connectingTo => 'Conectando a';
|
|
|
|
@override
|
|
String get scanQR => 'Escanear QR';
|
|
|
|
@override
|
|
String get scanHostQR => 'Apunta al QR del host';
|
|
|
|
@override
|
|
String get connectedWaiting => '¡Conectado!';
|
|
|
|
@override
|
|
String get waitingForHost => 'Esperando a que el host inicie la partida...';
|
|
|
|
@override
|
|
String get enterNameToSearch =>
|
|
'Escribe tu nombre para buscar partidas cercanas';
|
|
|
|
@override
|
|
String get searchGames => 'Buscar partidas';
|
|
|
|
@override
|
|
String get searchingGames => 'Buscando partidas cercanas...';
|
|
|
|
@override
|
|
String get noGamesFound => 'No se encontraron partidas';
|
|
|
|
@override
|
|
String get noGamesFoundHint =>
|
|
'Asegúrate de que el host tiene la sala abierta y estáis cerca';
|
|
|
|
@override
|
|
String get orScanQR => '¿No aparece? Escanea el QR del host';
|
|
|
|
@override
|
|
String get iveSeenIt => 'Ya la he visto';
|
|
|
|
@override
|
|
String clueIs(String category) {
|
|
return 'La pista es: $category';
|
|
}
|
|
|
|
@override
|
|
String get debatePhaseActive => 'Fase de debate activa';
|
|
|
|
@override
|
|
String get debateInstructions =>
|
|
'Hablad entre vosotros y decid quién creéis que es el impostor. Cuando estéis listos, solicitad la votación.';
|
|
|
|
@override
|
|
String get solicitarVotacion => 'Solicitar votación';
|
|
|
|
@override
|
|
String get votacionSolicitada => 'Votación solicitada';
|
|
|
|
@override
|
|
String get whoDoYouThinkIsTheImpostor => '¿Quién es el impostor?';
|
|
|
|
@override
|
|
String get selectOnePlayer => 'Selecciona a un jugador para votar';
|
|
|
|
@override
|
|
String get votar => 'Votar';
|
|
}
|