- 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
585 lines
14 KiB
Dart
585 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 Spanish Castilian (`es`).
|
|
class AppLocalizationsEs extends AppLocalizations {
|
|
AppLocalizationsEs([String locale = 'es']) : super(locale);
|
|
|
|
@override
|
|
String get appTitle => 'Farolero';
|
|
|
|
@override
|
|
String get subtitle => 'Juego de deducción social';
|
|
|
|
@override
|
|
String get loadingWords => 'Cargando palabras...';
|
|
|
|
@override
|
|
String get playersRange => '3-20 jugadores • Sin internet';
|
|
|
|
@override
|
|
String get createGame => 'Crear partida';
|
|
|
|
@override
|
|
String get joinGame => 'Unirse a partida';
|
|
|
|
@override
|
|
String get howToPlay => 'Cómo jugar';
|
|
|
|
@override
|
|
String get settings => 'Ajustes';
|
|
|
|
@override
|
|
String get gameMode => 'Modo de juego';
|
|
|
|
@override
|
|
String get singleDevice => 'Un solo móvil';
|
|
|
|
@override
|
|
String get multiDevice => 'Multimóvil';
|
|
|
|
@override
|
|
String get category => 'Categoría';
|
|
|
|
@override
|
|
String get categoryAll => 'Todas';
|
|
|
|
@override
|
|
String get categoryAnimals => 'Animales';
|
|
|
|
@override
|
|
String get categoryFood => 'Comida';
|
|
|
|
@override
|
|
String get categoryCountries => 'Países';
|
|
|
|
@override
|
|
String get categorySports => 'Deportes';
|
|
|
|
@override
|
|
String get categoryProfessions => 'Profesiones';
|
|
|
|
@override
|
|
String get categoryObjects => 'Objetos';
|
|
|
|
@override
|
|
String get categoryPlaces => 'Lugares';
|
|
|
|
@override
|
|
String get categoryMovies => 'Películas';
|
|
|
|
@override
|
|
String get categoryMusic => 'Música';
|
|
|
|
@override
|
|
String get categoryTechnology => 'Tecnología';
|
|
|
|
@override
|
|
String playersCount(int count) {
|
|
return 'Jugadores ($count)';
|
|
}
|
|
|
|
@override
|
|
String get playersRangeHint => '3-20';
|
|
|
|
@override
|
|
String get playerNameHint => 'Nombre del jugador';
|
|
|
|
@override
|
|
String get playerAlreadyExists => 'Ya existe un jugador con ese nombre';
|
|
|
|
@override
|
|
String get maxPlayersReached => 'Máximo 20 jugadores';
|
|
|
|
@override
|
|
String get minPlayersRequired => 'Se necesitan al menos 3 jugadores';
|
|
|
|
@override
|
|
String get configuration => 'Configuración';
|
|
|
|
@override
|
|
String get impostors => '🎭 Impostores';
|
|
|
|
@override
|
|
String get impostorClue => '🔍 Pista para impostor';
|
|
|
|
@override
|
|
String get impostorClueDescription => 'El impostor conoce la categoría';
|
|
|
|
@override
|
|
String get debate => '🗣️ Debate';
|
|
|
|
@override
|
|
String get debateTime => '⏱️ Tiempo de debate';
|
|
|
|
@override
|
|
String get noLimit => 'Sin límite';
|
|
|
|
@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 => 'Iniciar partida';
|
|
|
|
@override
|
|
String get seeYourWord => 'Ver tu palabra';
|
|
|
|
@override
|
|
String get eachPlayerMustSee => 'Cada jugador debe ver su palabra en secreto';
|
|
|
|
@override
|
|
String roundNumber(int round) {
|
|
return 'Ronda $round';
|
|
}
|
|
|
|
@override
|
|
String get alreadySeen => 'Ya ha visto su palabra';
|
|
|
|
@override
|
|
String get tapToSee => 'Pulsa para ver';
|
|
|
|
@override
|
|
String get allSeenStartDebate => 'Todos han visto → Iniciar debate';
|
|
|
|
@override
|
|
String playersRemaining(int count) {
|
|
return 'Faltan $count jugadores';
|
|
}
|
|
|
|
@override
|
|
String get youAreImpostor => '¡Eres el impostor!';
|
|
|
|
@override
|
|
String get yourWordIs => 'Tu palabra es:';
|
|
|
|
@override
|
|
String clueCategory(String category) {
|
|
return 'Pista: $category';
|
|
}
|
|
|
|
@override
|
|
String get holdToSeeWord => 'Mantén pulsado para ver tu palabra';
|
|
|
|
@override
|
|
String get makeSureNoOneLooks => 'Asegúrate de que nadie más mira';
|
|
|
|
@override
|
|
String get showingWord => '👁️ Mostrando...';
|
|
|
|
@override
|
|
String get holdToSee => '👆 Mantén pulsado para ver';
|
|
|
|
@override
|
|
String get seenMyWord => 'He visto mi palabra';
|
|
|
|
@override
|
|
String debateRound(int round) {
|
|
return 'Debate - Ronda $round';
|
|
}
|
|
|
|
@override
|
|
String get timeUp => '⏰ ¡Tiempo agotado!';
|
|
|
|
@override
|
|
String get timeRemaining => '⏱️ Tiempo restante';
|
|
|
|
@override
|
|
String get playersInDebate => 'Jugadores en debate';
|
|
|
|
@override
|
|
String activePlayersInfo(int active, int impostors) {
|
|
return '$active activos • $impostors impostor(es) ocultos';
|
|
}
|
|
|
|
@override
|
|
String get eliminated => 'Eliminado';
|
|
|
|
@override
|
|
String get notes => 'Notas';
|
|
|
|
@override
|
|
String get goToVoting => 'Ir a votación';
|
|
|
|
@override
|
|
String get voting => '🗳️ Votación';
|
|
|
|
@override
|
|
String get turnToVote => 'Turno de votar:';
|
|
|
|
@override
|
|
String votesProgress(int current, int total) {
|
|
return 'Votos: $current/$total';
|
|
}
|
|
|
|
@override
|
|
String get whoIsImpostor => '¿Quién crees que es el impostor?';
|
|
|
|
@override
|
|
String get confirmVote => 'Confirmar voto';
|
|
|
|
@override
|
|
String get votingComplete => '🗳️ Votación completa';
|
|
|
|
@override
|
|
String get allVoted => '¡Todos han votado!';
|
|
|
|
@override
|
|
String get tapToReveal => 'Pulsa para revelar el resultado';
|
|
|
|
@override
|
|
String get revealResult => 'Revelar resultado';
|
|
|
|
@override
|
|
String get result => 'Resultado';
|
|
|
|
@override
|
|
String get revealing => 'Revelando...';
|
|
|
|
@override
|
|
String get wasImpostor => '¡Era IMPOSTOR! 🎉';
|
|
|
|
@override
|
|
String get wasInnocent => 'Era INOCENTE 😱';
|
|
|
|
@override
|
|
String get votesThisRound => 'Votos de esta ronda';
|
|
|
|
@override
|
|
String get seeEndResult => 'Ver resultado final';
|
|
|
|
@override
|
|
String get impostorGuessWord => '¿El impostor adivina la palabra?';
|
|
|
|
@override
|
|
String get nextRound => 'Siguiente ronda';
|
|
|
|
@override
|
|
String get impostorGuessTitle => '🎯 Adivinanza del impostor';
|
|
|
|
@override
|
|
String get impostorCanGuess =>
|
|
'El impostor eliminado puede\nintentar adivinar la palabra';
|
|
|
|
@override
|
|
String get ifCorrectImpostorsWin => 'Si acierta, ¡los impostores ganan!';
|
|
|
|
@override
|
|
String get guessWordHint => '¿Cuál crees que es la palabra?';
|
|
|
|
@override
|
|
String get dontGuess => 'No intentar';
|
|
|
|
@override
|
|
String get guess => 'Adivinar';
|
|
|
|
@override
|
|
String get correctGuess => '¡Ha acertado!';
|
|
|
|
@override
|
|
String theWordWas(String word) {
|
|
return 'La palabra era: $word';
|
|
}
|
|
|
|
@override
|
|
String get impostorsWin => '¡Los impostores ganan!';
|
|
|
|
@override
|
|
String get wrongGuess => '¡No ha acertado!';
|
|
|
|
@override
|
|
String get gameContinues => 'La partida continúa...';
|
|
|
|
@override
|
|
String get gameOver => 'Fin de partida';
|
|
|
|
@override
|
|
String get playersWin => '¡Los jugadores ganan!';
|
|
|
|
@override
|
|
String get theSecretWordWas => '🔍 La palabra era:';
|
|
|
|
@override
|
|
String categoryLabel(String category) {
|
|
return 'Categoría: $category';
|
|
}
|
|
|
|
@override
|
|
String get theImpostorWas => '🎭 El impostor era:';
|
|
|
|
@override
|
|
String get theImpostorsWere => '🎭 Los impostores eran:';
|
|
|
|
@override
|
|
String get votingHistory => '📊 Historial de votaciones';
|
|
|
|
@override
|
|
String roundElimination(int round, String name) {
|
|
return 'Ronda $round: $name';
|
|
}
|
|
|
|
@override
|
|
String get rematch => 'Revancha';
|
|
|
|
@override
|
|
String get mainMenu => 'Menú principal';
|
|
|
|
@override
|
|
String get notesTitle => '📝 Notas';
|
|
|
|
@override
|
|
String get notesSaved => 'Notas guardadas';
|
|
|
|
@override
|
|
String get whoAreYou => '¿Quién eres?';
|
|
|
|
@override
|
|
String get selectYourName =>
|
|
'Selecciona tu nombre para ver tus notas privadas';
|
|
|
|
@override
|
|
String notesOf(String name) {
|
|
return 'Notas de $name';
|
|
}
|
|
|
|
@override
|
|
String get notesAboutPlayers => 'Apuntes sobre cada jugador';
|
|
|
|
@override
|
|
String get playerNoteHint => '¿Qué ha dicho? ¿Sospechoso?';
|
|
|
|
@override
|
|
String get freeNote => 'Nota libre';
|
|
|
|
@override
|
|
String get freeNoteHint => 'Apuntes personales...';
|
|
|
|
@override
|
|
String get rulesTitle => '📖 Cómo jugar';
|
|
|
|
@override
|
|
String get rulesWhatIsTitle => '🎭 ¿Qué es Farolero?';
|
|
|
|
@override
|
|
String get rulesWhatIsBody =>
|
|
'Un juego de deducción social para 3-20 jugadores. Todos reciben una palabra secreta... ¡excepto el impostor! Tu misión: descubrir quién finge.';
|
|
|
|
@override
|
|
String get rulesHowToPlayTitle => '🔍 ¿Cómo se juega?';
|
|
|
|
@override
|
|
String get rulesHowToPlayBody =>
|
|
'1. Se reparten los roles: todos reciben la misma palabra, excepto el/los impostores.\n\n2. Debate: por turnos, cada jugador describe la palabra SIN decirla directamente. El impostor debe fingir que la conoce.\n\n3. Votación: al terminar el debate, todos votan a quién creen que es el impostor.\n\n4. Eliminación: el más votado queda eliminado y se revela si era impostor o no.\n\n5. Si era impostor, puede intentar adivinar la palabra. Si acierta, ¡los impostores ganan!';
|
|
|
|
@override
|
|
String get rulesWhoWinsTitle => '🏆 ¿Quién gana?';
|
|
|
|
@override
|
|
String get rulesWhoWinsBody =>
|
|
'• Jugadores: ganan si eliminan a TODOS los impostores.\n• Impostores: ganan si no son descubiertos hasta que queden igual o menos jugadores normales que impostores, o si adivinan la palabra al ser eliminados.';
|
|
|
|
@override
|
|
String get rulesTipsPlayersTitle => '💡 Consejos para jugadores';
|
|
|
|
@override
|
|
String get rulesTipsPlayersBody =>
|
|
'• Da pistas sutiles que demuestren que conoces la palabra, pero no tan obvias que el impostor las use.\n• Observa quién da respuestas vagas o genéricas.\n• Usa las notas para apuntar lo que dice cada uno.\n• No digas la palabra directamente, ¡eso ayuda al impostor!';
|
|
|
|
@override
|
|
String get rulesTipsImpostorTitle => '🎭 Consejos para el impostor';
|
|
|
|
@override
|
|
String get rulesTipsImpostorBody =>
|
|
'• Escucha atentamente las pistas de los demás.\n• Intenta deducir la palabra para dar pistas creíbles.\n• No seas el primero en hablar si no estás seguro.\n• Si te dan la categoría como pista, úsala a tu favor.\n• Acusa a otros para desviar la atención.';
|
|
|
|
@override
|
|
String get rulesModesTitle => '📱 Modos de juego';
|
|
|
|
@override
|
|
String get rulesModesBody =>
|
|
'• Un solo móvil: todos comparten el dispositivo. Cada jugador ve su palabra pulsando y manteniendo un botón.\n\n• Multimóvil: cada jugador usa su propio dispositivo. Se conectan por Bluetooth/WiFi Direct sin necesidad de internet.';
|
|
|
|
@override
|
|
String get rulesExampleTitle => '✏️ Ejemplo de partida';
|
|
|
|
@override
|
|
String get rulesExampleBody =>
|
|
'Palabra secreta: \"Pizza\"\n\n• Ana: \"Se come caliente\" ✓\n• Carlos: \"Viene en una caja\" ✓\n• Eva (impostor): \"Es muy popular\" 🤔\n• David: \"Tiene queso\" ✓\n\nEva dio una respuesta muy genérica... ¡Sospechosa!';
|
|
|
|
@override
|
|
String get joinGameTitle => 'Unirse a partida';
|
|
|
|
@override
|
|
String get multiDeviceMode => 'Modo multimóvil';
|
|
|
|
@override
|
|
String get scanQrDescription =>
|
|
'Escanea el código QR que muestra el host para conectarte a la partida vía Bluetooth/WiFi Direct.';
|
|
|
|
@override
|
|
String get comingSoon => 'Próximamente';
|
|
|
|
@override
|
|
String get nearbyNotAvailable =>
|
|
'La conexión multimóvil con Nearby Connections requiere dispositivos Android físicos.\n\nPor ahora, usa el modo \"Un solo móvil\" para jugar en un dispositivo compartido.';
|
|
|
|
@override
|
|
String get back => 'Volver';
|
|
|
|
@override
|
|
String get yes => 'Sí';
|
|
|
|
@override
|
|
String get no => 'No';
|
|
|
|
@override
|
|
String get cancel => 'Cancelar';
|
|
|
|
@override
|
|
String get accept => 'Aceptar';
|
|
|
|
@override
|
|
String get next => 'Siguiente';
|
|
|
|
@override
|
|
String get settingsTitle => 'Ajustes';
|
|
|
|
@override
|
|
String get language => 'Idioma';
|
|
|
|
@override
|
|
String get soundVolume => 'Volumen de efectos';
|
|
|
|
@override
|
|
String get vibration => 'Vibración';
|
|
|
|
@override
|
|
String get about => 'Acerca de';
|
|
|
|
@override
|
|
String get version => 'Versión';
|
|
|
|
@override
|
|
String get developer => 'Desarrollador';
|
|
|
|
@override
|
|
String get licenses => 'Licencias';
|
|
|
|
@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';
|
|
}
|