feat(i18n): fill the translation backlog and add the new strings

40 keys existed only in app_es.arb and fell back to Spanish everywhere else
(15 of them in English). Most were multi-device screens: hostGame, votar,
clueIs, whoDoYouThinkIsTheImpostor, waitingPlayersSeeWord.

Adds those plus the new keys for impostor awareness, the adjusted impostor
count, the eliminated-player notice and the reconnection screen.

51 keys across the 18 supported languages.
This commit is contained in:
2026-07-25 20:36:39 +02:00
parent 863690168c
commit b1b12cc8af
36 changed files with 3677 additions and 1206 deletions
+315 -53
View File
@@ -147,35 +147,34 @@ abstract class AppLocalizations {
/// **'Cargando palabras...'**
String get loadingWords;
/// No description provided for @matchRewards.
///
/// In en, this message translates to:
/// **'Game rewards'**
/// In es, this message translates to:
/// **'Recompensas de partida'**
String get matchRewards;
/// No description provided for @newMedals.
///
/// In en, this message translates to:
/// **'New medals'**
/// In es, this message translates to:
/// **'Nuevas medallas'**
String get newMedals;
/// No description provided for @noNewMedalsKeepFire.
///
/// In en, this message translates to:
/// **'No new medals this time. Keep building your fire.'**
/// In es, this message translates to:
/// **'Sin medallas nuevas esta vez. Sigue acumulando fuego.'**
String get noNewMedalsKeepFire;
/// No description provided for @calculatingRewards.
///
/// In en, this message translates to:
/// **'Calculating rewards...'**
/// In es, this message translates to:
/// **'Calculando recompensas...'**
String get calculatingRewards;
/// No description provided for @fireLabel.
///
/// In en, this message translates to:
/// **'Fire'**
/// In es, this message translates to:
/// **'Fuego'**
String get fireLabel;
/// No description provided for @playersRange.
@@ -520,19 +519,6 @@ abstract class AppLocalizations {
/// **'Jugadores en debate'**
String get playersInDebate;
/// No description provided for @voteOf.
///
/// In en, this message translates to:
/// **'Vote from {name}'**
String voteOf(String name);
/// No description provided for @firstTurnInstruction.
///
/// In en, this message translates to:
/// **'{name} starts by saying their word.'**
String firstTurnInstruction(String name);
/// No description provided for @activePlayersInfo.
///
/// In es, this message translates to:
@@ -1277,79 +1263,377 @@ abstract class AppLocalizations {
/// **'Perfiles disponibles'**
String get availableProfiles;
String get play;
String get history;
String get mainTagline;
/// No description provided for @scanThisCodeFromAnotherPhone.
///
/// In es, this message translates to:
/// **'Escanea este código desde otro móvil'**
String get scanThisCodeFromAnotherPhone;
/// No description provided for @gameUsers.
///
/// In es, this message translates to:
/// **'Usuarios de la partida'**
String get gameUsers;
/// No description provided for @selectedPlayers.
///
/// In es, this message translates to:
/// **'Jugadores seleccionados'**
String get selectedPlayers;
/// No description provided for @connectedPhones.
///
/// In es, this message translates to:
/// **'Móviles conectados'**
String get connectedPhones;
/// No description provided for @selectedOnThisPhone.
///
/// In es, this message translates to:
/// **'Seleccionado en este móvil'**
String get selectedOnThisPhone;
/// No description provided for @selectedByAnotherDevice.
///
/// In es, this message translates to:
/// **'Seleccionado en otro dispositivo'**
String get selectedByAnotherDevice;
/// No description provided for @available.
///
/// In es, this message translates to:
/// **'Disponible'**
String get available;
/// No description provided for @notAvailable.
///
/// In es, this message translates to:
/// **'No disponible'**
String get notAvailable;
/// No description provided for @release.
///
/// In es, this message translates to:
/// **'Liberar'**
String get release;
/// No description provided for @select.
///
/// In es, this message translates to:
/// **'Seleccionar'**
String get select;
/// No description provided for @delete.
///
/// In es, this message translates to:
/// **'Eliminar'**
String get delete;
/// No description provided for @selectAtLeastThreeUsersToStart.
///
/// In es, this message translates to:
/// **'Selecciona al menos 3 usuarios para iniciar.'**
String get selectAtLeastThreeUsersToStart;
/// No description provided for @hostPhoneMustSelectUser.
///
/// In es, this message translates to:
/// **'El móvil servidor debe seleccionar al menos un usuario.'**
String get hostPhoneMustSelectUser;
/// No description provided for @roomNoLongerInLobby.
///
/// In es, this message translates to:
/// **'La sala ya no está en el lobby.'**
String get roomNoLongerInLobby;
/// No description provided for @completeUserSelectionToStart.
///
/// In es, this message translates to:
/// **'Completa la selección de usuarios para iniciar.'**
String get completeUserSelectionToStart;
/// No description provided for @preparingSecureRoom.
///
/// In es, this message translates to:
/// **'Preparando la sala segura'**
String get preparingSecureRoom;
/// No description provided for @searchingNearbyBluetoothGames.
///
/// In es, this message translates to:
/// **'Buscando partidas cercanas por Bluetooth'**
String get searchingNearbyBluetoothGames;
/// No description provided for @tapToJoin.
///
/// In es, this message translates to:
/// **'Toca para unirte'**
String get tapToJoin;
/// No description provided for @bluetoothLocationPermissionsRequired.
///
/// In es, this message translates to:
/// **'Se necesitan permisos de Bluetooth y ubicación para buscar partidas.'**
String get bluetoothLocationPermissionsRequired;
/// No description provided for @bluetoothLocationPermissionsShort.
///
/// In es, this message translates to:
/// **'Se necesitan permisos de Bluetooth y ubicación'**
String get bluetoothLocationPermissionsShort;
/// No description provided for @couldNotStartSearch.
///
/// In es, this message translates to:
/// **'No se pudo iniciar la búsqueda. Verifica Bluetooth y ubicación.'**
String get couldNotStartSearch;
/// No description provided for @couldNotConnectToHost.
///
/// In es, this message translates to:
/// **'No se pudo conectar a {host}'**
String couldNotConnectToHost(String host);
/// No description provided for @room.
///
/// In es, this message translates to:
/// **'Sala'**
String get room;
/// No description provided for @singleDeviceSubtitle.
///
/// In es, this message translates to:
/// **'Partida en este dispositivo'**
String get singleDeviceSubtitle;
/// No description provided for @singleDeviceDescription.
///
/// In es, this message translates to:
/// **'Ideal para jugar todos juntos pasando el móvil. Configuración rápida y directa.'**
String get singleDeviceDescription;
/// No description provided for @multiDeviceSubtitle.
///
/// In es, this message translates to:
/// **'Cada jugador en su móvil'**
String get multiDeviceSubtitle;
/// No description provided for @multiDeviceDescription.
///
/// In es, this message translates to:
/// **'Crea una sala premium, comparte el QR y gestiona usuarios desde el lobby.'**
String get multiDeviceDescription;
/// No description provided for @singleDeviceGameLabel.
///
/// In es, this message translates to:
/// **'Partida en este dispositivo'**
String get singleDeviceGameLabel;
/// No description provided for @multiDeviceGameLabel.
///
/// In es, this message translates to:
/// **'Partida multidispositivo'**
String get multiDeviceGameLabel;
/// No description provided for @mainDeviceUser.
///
/// In es, this message translates to:
/// **'Usuario principal del dispositivo'**
String get mainDeviceUser;
/// No description provided for @couldNotCreateRoom.
///
/// In es, this message translates to:
/// **'No se pudo crear la sala. Verifica Bluetooth.'**
String get couldNotCreateRoom;
/// No description provided for @cannotStartWithReason.
///
/// In es, this message translates to:
/// **'No se puede iniciar: {reason}'**
String cannotStartWithReason(String reason);
/// No description provided for @invalidRoom.
///
/// In es, this message translates to:
/// **'sala inválida'**
String get invalidRoom;
/// No description provided for @defaultPlayerName.
///
/// In es, this message translates to:
/// **'Jugador'**
String get defaultPlayerName;
/// No description provided for @play.
///
/// In es, this message translates to:
/// **'Jugar'**
String get play;
/// No description provided for @history.
///
/// In es, this message translates to:
/// **'Historial'**
String get history;
/// No description provided for @mainTagline.
///
/// In es, this message translates to:
/// **'Descubre al impostor antes de que sea tarde'**
String get mainTagline;
/// No description provided for @deviceProfile.
///
/// In es, this message translates to:
/// **'Perfil del dispositivo'**
String get deviceProfile;
/// No description provided for @profileName.
///
/// In es, this message translates to:
/// **'Nombre'**
String get profileName;
/// No description provided for @profileNick.
///
/// In es, this message translates to:
/// **'Nick'**
String get profileNick;
/// No description provided for @save.
///
/// In es, this message translates to:
/// **'Guardar'**
String get save;
/// No description provided for @automaticLanguage.
///
/// In es, this message translates to:
/// **'Automático'**
String get automaticLanguage;
/// No description provided for @noSavedGames.
///
/// In es, this message translates to:
/// **'Todavía no hay partidas guardadas.'**
String get noSavedGames;
/// No description provided for @errorNoGame.
///
/// In es, this message translates to:
/// **'Error: sin partida'**
String get errorNoGame;
/// No description provided for @disconnectedPlayersWarning.
///
/// In es, this message translates to:
/// **'Hay jugadores con el dispositivo desconectado.'**
String get disconnectedPlayersWarning;
/// No description provided for @assumeOnThisPhone.
///
/// In es, this message translates to:
/// **'Asumir en este móvil'**
String get assumeOnThisPhone;
/// No description provided for @noResult.
///
/// In es, this message translates to:
/// **'Sin resultado'**
String get noResult;
/// No description provided for @historyGameSummary.
///
/// In es, this message translates to:
/// **'\$players jugadores • \$impostors impostor(es) • \$rounds ronda(s)\n\$word • \$category'**
String historyGameSummary(
int players,
int impostors,
int rounds,
String word,
String category,
);
/// No description provided for @voteOf.
///
/// In es, this message translates to:
/// **'Voto de {name}'**
String voteOf(String name);
/// No description provided for @firstTurnInstruction.
///
/// In es, this message translates to:
/// **'Empieza {name} diciendo su palabra.'**
String firstTurnInstruction(String name);
/// No description provided for @impostorsKnowEachOther.
///
/// In es, this message translates to:
/// **'🎭 Los impostores se conocen'**
String get impostorsKnowEachOther;
/// No description provided for @impostorsKnowEachOtherDescription.
///
/// In es, this message translates to:
/// **'Cada impostor verá los nombres del resto'**
String get impostorsKnowEachOtherDescription;
/// No description provided for @impostorsKnowEachOtherNeedsTwo.
///
/// In es, this message translates to:
/// **'Solo se aplica con 2 o más impostores'**
String get impostorsKnowEachOtherNeedsTwo;
/// No description provided for @otherImpostorsTitle.
///
/// In es, this message translates to:
/// **'{count, plural, =1{El otro impostor} other{Los otros impostores}}'**
String otherImpostorsTitle(num count);
/// No description provided for @youAreTheOnlyImpostor.
///
/// In es, this message translates to:
/// **'Eres el único impostor'**
String get youAreTheOnlyImpostor;
/// No description provided for @impostorsAdjusted.
///
/// In es, this message translates to:
/// **'Impostores ajustados a {count} por el número de jugadores'**
String impostorsAdjusted(int count);
/// No description provided for @eliminatedCannotVote.
///
/// In es, this message translates to:
/// **'Estás eliminado: ya no votas'**
String get eliminatedCannotVote;
/// No description provided for @reconnecting.
///
/// In es, this message translates to:
/// **'Reconectando...'**
String get reconnecting;
/// No description provided for @reconnectingHint.
///
/// In es, this message translates to:
/// **'Se perdió la conexión con el host. Tu sitio en la partida se mantiene.'**
String get reconnectingHint;
/// No description provided for @leaveGame.
///
/// In es, this message translates to:
/// **'Salir de la partida'**
String get leaveGame;
/// No description provided for @playerRejoined.
///
/// In es, this message translates to:
/// **'{name} ha vuelto a la partida'**
String playerRejoined(String name);
}
class _AppLocalizationsDelegate
@@ -1443,26 +1727,4 @@ AppLocalizations lookupAppLocalizations(Locale locale) {
'on GitHub with a reproducible sample app and the gen-l10n configuration '
'that was used.',
);
String get deviceProfile;
String get profileName;
String get profileNick;
String get save;
String get automaticLanguage;
String get noSavedGames;
String get errorNoGame;
String get disconnectedPlayersWarning;
String get assumeOnThisPhone;
String get noResult;
String historyGameSummary(int players, int impostors, int rounds, String word, String category);
}
}