feat: modo multidispositivo con Nearby Connections
Build & Deploy Farolero / Análisis de código (push) Successful in 9s
Build & Deploy Farolero / Build APK + AAB release (push) Successful in 1m10s

- ServicioNearby completo: P2P_STAR, auto-accept, protocolo mensajes
- PantallaLobbyHost: QR code + lista jugadores tiempo real
- PantallaUnirse: escaneo QR + conexión + sala espera
- Protocolo MensajeP2P: salaInfo, partidaInicio, fase, voto, resultado, fin
- Manejo desconexiones jugador/host
- l10n: nuevas keys es/en
- Version bump 1.1.0+5
This commit is contained in:
ShanaiaBot
2026-04-04 03:09:51 +02:00
parent f453ce6e0d
commit 23472707ad
25 changed files with 1799 additions and 165 deletions
+108 -13
View File
@@ -24,7 +24,13 @@
"categoryMusic": "Music",
"categoryTechnology": "Technology",
"playersCount": "Players ({count})",
"@playersCount": {"placeholders": {"count": {"type": "int"}}},
"@playersCount": {
"placeholders": {
"count": {
"type": "int"
}
}
},
"playersRangeHint": "3-20",
"playerNameHint": "Player name",
"playerAlreadyExists": "A player with that name already exists",
@@ -44,35 +50,77 @@
"seeYourWord": "See your word",
"eachPlayerMustSee": "Each player must see their word in secret",
"roundNumber": "Round {round}",
"@roundNumber": {"placeholders": {"round": {"type": "int"}}},
"@roundNumber": {
"placeholders": {
"round": {
"type": "int"
}
}
},
"alreadySeen": "Already seen their word",
"tapToSee": "Tap to see",
"allSeenStartDebate": "Everyone has seen → Start discussion",
"playersRemaining": "{count} players remaining",
"@playersRemaining": {"placeholders": {"count": {"type": "int"}}},
"@playersRemaining": {
"placeholders": {
"count": {
"type": "int"
}
}
},
"youAreImpostor": "You are the impostor!",
"yourWordIs": "Your word is:",
"clueCategory": "Clue: {category}",
"@clueCategory": {"placeholders": {"category": {"type": "String"}}},
"@clueCategory": {
"placeholders": {
"category": {
"type": "String"
}
}
},
"holdToSeeWord": "Hold to see your word",
"makeSureNoOneLooks": "Make sure no one else is looking",
"showingWord": "👁️ Showing...",
"holdToSee": "👆 Hold to see",
"seenMyWord": "I've seen my word",
"debateRound": "Discussion - Round {round}",
"@debateRound": {"placeholders": {"round": {"type": "int"}}},
"@debateRound": {
"placeholders": {
"round": {
"type": "int"
}
}
},
"timeUp": "⏰ Time's up!",
"timeRemaining": "⏱️ Time remaining",
"playersInDebate": "Players in discussion",
"activePlayersInfo": "{active} active • {impostors} hidden impostor(s)",
"@activePlayersInfo": {"placeholders": {"active": {"type": "int"}, "impostors": {"type": "int"}}},
"@activePlayersInfo": {
"placeholders": {
"active": {
"type": "int"
},
"impostors": {
"type": "int"
}
}
},
"eliminated": "Eliminated",
"notes": "Notes",
"goToVoting": "Go to voting",
"voting": "🗳️ Voting",
"turnToVote": "Your turn to vote:",
"votesProgress": "Votes: {current}/{total}",
"@votesProgress": {"placeholders": {"current": {"type": "int"}, "total": {"type": "int"}}},
"@votesProgress": {
"placeholders": {
"current": {
"type": "int"
},
"total": {
"type": "int"
}
}
},
"whoIsImpostor": "Who do you think is the impostor?",
"confirmVote": "Confirm vote",
"votingComplete": "🗳️ Voting complete",
@@ -95,7 +143,13 @@
"guess": "Guess",
"correctGuess": "Correct guess!",
"theWordWas": "The word was: {word}",
"@theWordWas": {"placeholders": {"word": {"type": "String"}}},
"@theWordWas": {
"placeholders": {
"word": {
"type": "String"
}
}
},
"impostorsWin": "The impostors win!",
"wrongGuess": "Wrong guess!",
"gameContinues": "The game continues...",
@@ -103,12 +157,27 @@
"playersWin": "The players win!",
"theSecretWordWas": "🔍 The word was:",
"categoryLabel": "Category: {category}",
"@categoryLabel": {"placeholders": {"category": {"type": "String"}}},
"@categoryLabel": {
"placeholders": {
"category": {
"type": "String"
}
}
},
"theImpostorWas": "🎭 The impostor was:",
"theImpostorsWere": "🎭 The impostors were:",
"votingHistory": "📊 Voting history",
"roundElimination": "Round {round}: {name}",
"@roundElimination": {"placeholders": {"round": {"type": "int"}, "name": {"type": "String"}}},
"@roundElimination": {
"placeholders": {
"round": {
"type": "int"
},
"name": {
"type": "String"
}
}
},
"rematch": "Rematch",
"mainMenu": "Main menu",
"notesTitle": "📝 Notes",
@@ -116,7 +185,13 @@
"whoAreYou": "Who are you?",
"selectYourName": "Select your name to view your private notes",
"notesOf": "{name}'s notes",
"@notesOf": {"placeholders": {"name": {"type": "String"}}},
"@notesOf": {
"placeholders": {
"name": {
"type": "String"
}
}
},
"notesAboutPlayers": "Notes about each player",
"playerNoteHint": "What did they say? Suspicious?",
"freeNote": "Free note",
@@ -154,5 +229,25 @@
"about": "About",
"version": "Version",
"developer": "Developer",
"licenses": "Licenses"
}
"licenses": "Licenses",
"scanToJoin": "Scan QR to join",
"connectedPlayers": "Connected players",
"waitingForPlayers": "Waiting for players...",
"needMorePlayers": "Need {count} more players",
"@needMorePlayers": {
"placeholders": {
"count": {
"type": "int"
}
}
},
"starting": "Starting...",
"enterNameAndScan": "Enter your name and scan the host's QR",
"yourName": "Your name",
"nameRequired": "Enter your name",
"connectingTo": "Connecting to",
"scanQR": "Scan QR",
"scanHostQR": "Point at the host's QR code",
"connectedWaiting": "Connected!",
"waitingForHost": "Waiting for the host to start the game..."
}
+64 -35
View File
@@ -1,20 +1,16 @@
{
"@@locale": "es",
"appTitle": "Farolero",
"subtitle": "Juego de deducción social",
"loadingWords": "Cargando palabras...",
"playersRange": "3-20 jugadores • Sin internet",
"createGame": "Crear partida",
"joinGame": "Unirse a partida",
"howToPlay": "Cómo jugar",
"settings": "Ajustes",
"gameMode": "Modo de juego",
"singleDevice": "Un solo móvil",
"multiDevice": "Multimóvil",
"category": "Categoría",
"categoryAll": "Todas",
"categoryAnimals": "Animales",
@@ -27,11 +23,12 @@
"categoryMovies": "Películas",
"categoryMusic": "Música",
"categoryTechnology": "Tecnología",
"playersCount": "Jugadores ({count})",
"@playersCount": {
"placeholders": {
"count": {"type": "int"}
"count": {
"type": "int"
}
}
},
"playersRangeHint": "3-20",
@@ -39,7 +36,6 @@
"playerAlreadyExists": "Ya existe un jugador con ese nombre",
"maxPlayersReached": "Máximo 20 jugadores",
"minPlayersRequired": "Se necesitan al menos 3 jugadores",
"configuration": "Configuración",
"impostors": "🎭 Impostores",
"impostorClue": "🔍 Pista para impostor",
@@ -50,15 +46,15 @@
"twoMin": "2 min",
"threeMin": "3 min",
"fiveMin": "5 min",
"startGame": "Iniciar partida",
"seeYourWord": "Ver tu palabra",
"eachPlayerMustSee": "Cada jugador debe ver su palabra en secreto",
"roundNumber": "Ronda {round}",
"@roundNumber": {
"placeholders": {
"round": {"type": "int"}
"round": {
"type": "int"
}
}
},
"alreadySeen": "Ya ha visto su palabra",
@@ -67,16 +63,19 @@
"playersRemaining": "Faltan {count} jugadores",
"@playersRemaining": {
"placeholders": {
"count": {"type": "int"}
"count": {
"type": "int"
}
}
},
"youAreImpostor": "¡Eres el impostor!",
"yourWordIs": "Tu palabra es:",
"clueCategory": "Pista: {category}",
"@clueCategory": {
"placeholders": {
"category": {"type": "String"}
"category": {
"type": "String"
}
}
},
"holdToSeeWord": "Mantén pulsado para ver tu palabra",
@@ -84,11 +83,12 @@
"showingWord": "👁️ Mostrando...",
"holdToSee": "👆 Mantén pulsado para ver",
"seenMyWord": "He visto mi palabra",
"debateRound": "Debate - Ronda {round}",
"@debateRound": {
"placeholders": {
"round": {"type": "int"}
"round": {
"type": "int"
}
}
},
"timeUp": "⏰ ¡Tiempo agotado!",
@@ -97,21 +97,28 @@
"activePlayersInfo": "{active} activos • {impostors} impostor(es) ocultos",
"@activePlayersInfo": {
"placeholders": {
"active": {"type": "int"},
"impostors": {"type": "int"}
"active": {
"type": "int"
},
"impostors": {
"type": "int"
}
}
},
"eliminated": "Eliminado",
"notes": "Notas",
"goToVoting": "Ir a votación",
"voting": "🗳️ Votación",
"turnToVote": "Turno de votar:",
"votesProgress": "Votos: {current}/{total}",
"@votesProgress": {
"placeholders": {
"current": {"type": "int"},
"total": {"type": "int"}
"current": {
"type": "int"
},
"total": {
"type": "int"
}
}
},
"whoIsImpostor": "¿Quién crees que es el impostor?",
@@ -120,7 +127,6 @@
"allVoted": "¡Todos han votado!",
"tapToReveal": "Pulsa para revelar el resultado",
"revealResult": "Revelar resultado",
"result": "Resultado",
"revealing": "Revelando...",
"wasImpostor": "¡Era IMPOSTOR! 🎉",
@@ -129,7 +135,6 @@
"seeEndResult": "Ver resultado final",
"impostorGuessWord": "¿El impostor adivina la palabra?",
"nextRound": "Siguiente ronda",
"impostorGuessTitle": "🎯 Adivinanza del impostor",
"impostorCanGuess": "El impostor eliminado puede\nintentar adivinar la palabra",
"ifCorrectImpostorsWin": "Si acierta, ¡los impostores ganan!",
@@ -140,20 +145,23 @@
"theWordWas": "La palabra era: {word}",
"@theWordWas": {
"placeholders": {
"word": {"type": "String"}
"word": {
"type": "String"
}
}
},
"impostorsWin": "¡Los impostores ganan!",
"wrongGuess": "¡No ha acertado!",
"gameContinues": "La partida continúa...",
"gameOver": "Fin de partida",
"playersWin": "¡Los jugadores ganan!",
"theSecretWordWas": "🔍 La palabra era:",
"categoryLabel": "Categoría: {category}",
"@categoryLabel": {
"placeholders": {
"category": {"type": "String"}
"category": {
"type": "String"
}
}
},
"theImpostorWas": "🎭 El impostor era:",
@@ -162,13 +170,16 @@
"roundElimination": "Ronda {round}: {name}",
"@roundElimination": {
"placeholders": {
"round": {"type": "int"},
"name": {"type": "String"}
"round": {
"type": "int"
},
"name": {
"type": "String"
}
}
},
"rematch": "Revancha",
"mainMenu": "Menú principal",
"notesTitle": "📝 Notas",
"notesSaved": "Notas guardadas",
"whoAreYou": "¿Quién eres?",
@@ -176,14 +187,15 @@
"notesOf": "Notas de {name}",
"@notesOf": {
"placeholders": {
"name": {"type": "String"}
"name": {
"type": "String"
}
}
},
"notesAboutPlayers": "Apuntes sobre cada jugador",
"playerNoteHint": "¿Qué ha dicho? ¿Sospechoso?",
"freeNote": "Nota libre",
"freeNoteHint": "Apuntes personales...",
"rulesTitle": "📖 Cómo jugar",
"rulesWhatIsTitle": "🎭 ¿Qué es Farolero?",
"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.",
@@ -199,20 +211,17 @@
"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.",
"rulesExampleTitle": "✏️ Ejemplo de partida",
"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!",
"joinGameTitle": "Unirse a partida",
"multiDeviceMode": "Modo multimóvil",
"scanQrDescription": "Escanea el código QR que muestra el host para conectarte a la partida vía Bluetooth/WiFi Direct.",
"comingSoon": "Próximamente",
"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.",
"back": "Volver",
"yes": "Sí",
"no": "No",
"cancel": "Cancelar",
"accept": "Aceptar",
"next": "Siguiente",
"settingsTitle": "Ajustes",
"language": "Idioma",
"soundVolume": "Volumen de efectos",
@@ -220,5 +229,25 @@
"about": "Acerca de",
"version": "Versión",
"developer": "Desarrollador",
"licenses": "Licencias"
}
"licenses": "Licencias",
"scanToJoin": "Escanea el QR para unirte",
"connectedPlayers": "Jugadores conectados",
"waitingForPlayers": "Esperando jugadores...",
"needMorePlayers": "Faltan {count} jugadores más",
"@needMorePlayers": {
"placeholders": {
"count": {
"type": "int"
}
}
},
"starting": "Iniciando...",
"enterNameAndScan": "Escribe tu nombre y escanea el QR del host",
"yourName": "Tu nombre",
"nameRequired": "Escribe tu nombre",
"connectingTo": "Conectando a",
"scanQR": "Escanear QR",
"scanHostQR": "Apunta al QR del host",
"connectedWaiting": "¡Conectado!",
"waitingForHost": "Esperando a que el host inicie la partida..."
}
+78
View File
@@ -992,6 +992,84 @@ abstract class AppLocalizations {
/// In es, this message translates to:
/// **'Licencias'**
String get licenses;
/// No description provided for @scanToJoin.
///
/// In es, this message translates to:
/// **'Escanea el QR para unirte'**
String get scanToJoin;
/// No description provided for @connectedPlayers.
///
/// In es, this message translates to:
/// **'Jugadores conectados'**
String get connectedPlayers;
/// No description provided for @waitingForPlayers.
///
/// In es, this message translates to:
/// **'Esperando jugadores...'**
String get waitingForPlayers;
/// No description provided for @needMorePlayers.
///
/// In es, this message translates to:
/// **'Faltan {count} jugadores más'**
String needMorePlayers(int count);
/// No description provided for @starting.
///
/// In es, this message translates to:
/// **'Iniciando...'**
String get starting;
/// No description provided for @enterNameAndScan.
///
/// In es, this message translates to:
/// **'Escribe tu nombre y escanea el QR del host'**
String get enterNameAndScan;
/// No description provided for @yourName.
///
/// In es, this message translates to:
/// **'Tu nombre'**
String get yourName;
/// No description provided for @nameRequired.
///
/// In es, this message translates to:
/// **'Escribe tu nombre'**
String get nameRequired;
/// No description provided for @connectingTo.
///
/// In es, this message translates to:
/// **'Conectando a'**
String get connectingTo;
/// No description provided for @scanQR.
///
/// In es, this message translates to:
/// **'Escanear QR'**
String get scanQR;
/// No description provided for @scanHostQR.
///
/// In es, this message translates to:
/// **'Apunta al QR del host'**
String get scanHostQR;
/// No description provided for @connectedWaiting.
///
/// In es, this message translates to:
/// **'¡Conectado!'**
String get connectedWaiting;
/// No description provided for @waitingForHost.
///
/// In es, this message translates to:
/// **'Esperando a que el host inicie la partida...'**
String get waitingForHost;
}
class _AppLocalizationsDelegate
@@ -470,4 +470,45 @@ class AppLocalizationsAr extends AppLocalizations {
@override
String get licenses => 'التراخيص';
@override
String get scanToJoin => 'Escanea el QR para unirte';
@override
String get connectedPlayers => 'Jugadores conectados';
@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...';
}
@@ -473,4 +473,45 @@ class AppLocalizationsCa extends AppLocalizations {
@override
String get licenses => 'Llicències';
@override
String get scanToJoin => 'Escanea el QR para unirte';
@override
String get connectedPlayers => 'Jugadores conectados';
@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...';
}
@@ -476,4 +476,45 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get licenses => 'Lizenzen';
@override
String get scanToJoin => 'Escanea el QR para unirte';
@override
String get connectedPlayers => 'Jugadores conectados';
@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...';
}
@@ -471,4 +471,45 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get licenses => 'Licenses';
@override
String get scanToJoin => 'Scan QR to join';
@override
String get connectedPlayers => 'Connected players';
@override
String get waitingForPlayers => 'Waiting for players...';
@override
String needMorePlayers(int count) {
return 'Need $count more players';
}
@override
String get starting => 'Starting...';
@override
String get enterNameAndScan => 'Enter your name and scan the host\'s QR';
@override
String get yourName => 'Your name';
@override
String get nameRequired => 'Enter your name';
@override
String get connectingTo => 'Connecting to';
@override
String get scanQR => 'Scan QR';
@override
String get scanHostQR => 'Point at the host\'s QR code';
@override
String get connectedWaiting => 'Connected!';
@override
String get waitingForHost => 'Waiting for the host to start the game...';
}
@@ -472,4 +472,45 @@ class AppLocalizationsEs extends AppLocalizations {
@override
String get licenses => 'Licencias';
@override
String get scanToJoin => 'Escanea el QR para unirte';
@override
String get connectedPlayers => 'Jugadores conectados';
@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...';
}
@@ -475,4 +475,45 @@ class AppLocalizationsEu extends AppLocalizations {
@override
String get licenses => 'Lizentziak';
@override
String get scanToJoin => 'Escanea el QR para unirte';
@override
String get connectedPlayers => 'Jugadores conectados';
@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...';
}
@@ -473,4 +473,45 @@ class AppLocalizationsFr extends AppLocalizations {
@override
String get licenses => 'Licences';
@override
String get scanToJoin => 'Escanea el QR para unirte';
@override
String get connectedPlayers => 'Jugadores conectados';
@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...';
}
@@ -472,4 +472,45 @@ class AppLocalizationsHi extends AppLocalizations {
@override
String get licenses => 'लाइसेंस';
@override
String get scanToJoin => 'Escanea el QR para unirte';
@override
String get connectedPlayers => 'Jugadores conectados';
@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...';
}
@@ -473,4 +473,45 @@ class AppLocalizationsIt extends AppLocalizations {
@override
String get licenses => 'Licenze';
@override
String get scanToJoin => 'Escanea el QR para unirte';
@override
String get connectedPlayers => 'Jugadores conectados';
@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...';
}
@@ -470,4 +470,45 @@ class AppLocalizationsJa extends AppLocalizations {
@override
String get licenses => 'ライセンス';
@override
String get scanToJoin => 'Escanea el QR para unirte';
@override
String get connectedPlayers => 'Jugadores conectados';
@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...';
}
@@ -470,4 +470,45 @@ class AppLocalizationsKo extends AppLocalizations {
@override
String get licenses => '라이선스';
@override
String get scanToJoin => 'Escanea el QR para unirte';
@override
String get connectedPlayers => 'Jugadores conectados';
@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...';
}
@@ -473,4 +473,45 @@ class AppLocalizationsNl extends AppLocalizations {
@override
String get licenses => 'Licenties';
@override
String get scanToJoin => 'Escanea el QR para unirte';
@override
String get connectedPlayers => 'Jugadores conectados';
@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...';
}
@@ -473,4 +473,45 @@ class AppLocalizationsPl extends AppLocalizations {
@override
String get licenses => 'Licencje';
@override
String get scanToJoin => 'Escanea el QR para unirte';
@override
String get connectedPlayers => 'Jugadores conectados';
@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...';
}
@@ -474,4 +474,45 @@ class AppLocalizationsPt extends AppLocalizations {
@override
String get licenses => 'Licenças';
@override
String get scanToJoin => 'Escanea el QR para unirte';
@override
String get connectedPlayers => 'Jugadores conectados';
@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...';
}
@@ -473,4 +473,45 @@ class AppLocalizationsRu extends AppLocalizations {
@override
String get licenses => 'Лицензии';
@override
String get scanToJoin => 'Escanea el QR para unirte';
@override
String get connectedPlayers => 'Jugadores conectados';
@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...';
}
@@ -472,4 +472,45 @@ class AppLocalizationsTr extends AppLocalizations {
@override
String get licenses => 'Lisanslar';
@override
String get scanToJoin => 'Escanea el QR para unirte';
@override
String get connectedPlayers => 'Jugadores conectados';
@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...';
}
@@ -469,6 +469,47 @@ class AppLocalizationsZh extends AppLocalizations {
@override
String get licenses => '许可证';
@override
String get scanToJoin => 'Escanea el QR para unirte';
@override
String get connectedPlayers => 'Jugadores conectados';
@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...';
}
/// The translations for Chinese, as used in Taiwan (`zh_TW`).