- 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
519 lines
12 KiB
Dart
519 lines
12 KiB
Dart
// ignore: unused_import
|
|
import 'package:intl/intl.dart' as intl;
|
|
import 'app_localizations.dart';
|
|
|
|
// ignore_for_file: type=lint
|
|
|
|
/// The translations for Portuguese (`pt`).
|
|
class AppLocalizationsPt extends AppLocalizations {
|
|
AppLocalizationsPt([String locale = 'pt']) : super(locale);
|
|
|
|
@override
|
|
String get appTitle => 'O Impostor';
|
|
|
|
@override
|
|
String get subtitle => 'Jogo de dedução social';
|
|
|
|
@override
|
|
String get loadingWords => 'Carregando palavras...';
|
|
|
|
@override
|
|
String get playersRange => '3-20 jogadores • Sem internet';
|
|
|
|
@override
|
|
String get createGame => 'Criar partida';
|
|
|
|
@override
|
|
String get joinGame => 'Entrar na partida';
|
|
|
|
@override
|
|
String get howToPlay => 'Como jogar';
|
|
|
|
@override
|
|
String get settings => 'Configurações';
|
|
|
|
@override
|
|
String get gameMode => 'Modo de jogo';
|
|
|
|
@override
|
|
String get singleDevice => 'Um só celular';
|
|
|
|
@override
|
|
String get multiDevice => 'Multicelular';
|
|
|
|
@override
|
|
String get category => 'Categoria';
|
|
|
|
@override
|
|
String get categoryAll => 'Todas';
|
|
|
|
@override
|
|
String get categoryAnimals => 'Animais';
|
|
|
|
@override
|
|
String get categoryFood => 'Comida';
|
|
|
|
@override
|
|
String get categoryCountries => 'Países';
|
|
|
|
@override
|
|
String get categorySports => 'Esportes';
|
|
|
|
@override
|
|
String get categoryProfessions => 'Profissões';
|
|
|
|
@override
|
|
String get categoryObjects => 'Objetos';
|
|
|
|
@override
|
|
String get categoryPlaces => 'Lugares';
|
|
|
|
@override
|
|
String get categoryMovies => 'Filmes';
|
|
|
|
@override
|
|
String get categoryMusic => 'Música';
|
|
|
|
@override
|
|
String get categoryTechnology => 'Tecnologia';
|
|
|
|
@override
|
|
String playersCount(int count) {
|
|
return 'Jogadores ($count)';
|
|
}
|
|
|
|
@override
|
|
String get playersRangeHint => '3-20';
|
|
|
|
@override
|
|
String get playerNameHint => 'Nome do jogador';
|
|
|
|
@override
|
|
String get playerAlreadyExists => 'Já existe um jogador com esse nome';
|
|
|
|
@override
|
|
String get maxPlayersReached => 'Máximo de 20 jogadores';
|
|
|
|
@override
|
|
String get minPlayersRequired => 'São necessários pelo menos 3 jogadores';
|
|
|
|
@override
|
|
String get configuration => 'Configuração';
|
|
|
|
@override
|
|
String get impostors => '🎭 Impostores';
|
|
|
|
@override
|
|
String get impostorClue => '🔍 Dica para o impostor';
|
|
|
|
@override
|
|
String get impostorClueDescription => 'O impostor conhece a categoria';
|
|
|
|
@override
|
|
String get debateTime => '⏱️ Tempo de debate';
|
|
|
|
@override
|
|
String get noLimit => 'Sem 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 => 'Iniciar partida';
|
|
|
|
@override
|
|
String get seeYourWord => 'Ver sua palavra';
|
|
|
|
@override
|
|
String get eachPlayerMustSee =>
|
|
'Cada jogador deve ver sua palavra em segredo';
|
|
|
|
@override
|
|
String roundNumber(int round) {
|
|
return 'Rodada $round';
|
|
}
|
|
|
|
@override
|
|
String get alreadySeen => 'Já viu sua palavra';
|
|
|
|
@override
|
|
String get tapToSee => 'Toque para ver';
|
|
|
|
@override
|
|
String get allSeenStartDebate => 'Todos viram → Iniciar debate';
|
|
|
|
@override
|
|
String playersRemaining(int count) {
|
|
return 'Faltam $count jogadores';
|
|
}
|
|
|
|
@override
|
|
String get youAreImpostor => 'Você é o impostor!';
|
|
|
|
@override
|
|
String get yourWordIs => 'Sua palavra é:';
|
|
|
|
@override
|
|
String clueCategory(String category) {
|
|
return 'Dica: $category';
|
|
}
|
|
|
|
@override
|
|
String get holdToSeeWord => 'Mantenha pressionado para ver sua palavra';
|
|
|
|
@override
|
|
String get makeSureNoOneLooks =>
|
|
'Certifique-se de que ninguém mais está olhando';
|
|
|
|
@override
|
|
String get showingWord => '👁️ Mostrando...';
|
|
|
|
@override
|
|
String get holdToSee => '👆 Mantenha pressionado para ver';
|
|
|
|
@override
|
|
String get seenMyWord => 'Já vi minha palavra';
|
|
|
|
@override
|
|
String debateRound(int round) {
|
|
return 'Debate - Rodada $round';
|
|
}
|
|
|
|
@override
|
|
String get timeUp => '⏰ Tempo esgotado!';
|
|
|
|
@override
|
|
String get timeRemaining => '⏱️ Tempo restante';
|
|
|
|
@override
|
|
String get playersInDebate => 'Jogadores no debate';
|
|
|
|
@override
|
|
String activePlayersInfo(int active, int impostors) {
|
|
return '$active ativos • $impostors impostor(es) ocultos';
|
|
}
|
|
|
|
@override
|
|
String get eliminated => 'Eliminado';
|
|
|
|
@override
|
|
String get notes => 'Notas';
|
|
|
|
@override
|
|
String get goToVoting => 'Ir para votação';
|
|
|
|
@override
|
|
String get voting => '🗳️ Votação';
|
|
|
|
@override
|
|
String get turnToVote => 'Vez de votar:';
|
|
|
|
@override
|
|
String votesProgress(int current, int total) {
|
|
return 'Votos: $current/$total';
|
|
}
|
|
|
|
@override
|
|
String get whoIsImpostor => 'Quem você acha que é o impostor?';
|
|
|
|
@override
|
|
String get confirmVote => 'Confirmar voto';
|
|
|
|
@override
|
|
String get votingComplete => '🗳️ Votação completa';
|
|
|
|
@override
|
|
String get allVoted => 'Todos votaram!';
|
|
|
|
@override
|
|
String get tapToReveal => 'Toque para revelar o 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 desta rodada';
|
|
|
|
@override
|
|
String get seeEndResult => 'Ver resultado final';
|
|
|
|
@override
|
|
String get impostorGuessWord => 'O impostor adivinha a palavra?';
|
|
|
|
@override
|
|
String get nextRound => 'Próxima rodada';
|
|
|
|
@override
|
|
String get impostorGuessTitle => '🎯 Palpite do impostor';
|
|
|
|
@override
|
|
String get impostorCanGuess =>
|
|
'O impostor eliminado pode\ntentar adivinhar a palavra';
|
|
|
|
@override
|
|
String get ifCorrectImpostorsWin => 'Se acertar, os impostores vencem!';
|
|
|
|
@override
|
|
String get guessWordHint => 'Qual você acha que é a palavra?';
|
|
|
|
@override
|
|
String get dontGuess => 'Não tentar';
|
|
|
|
@override
|
|
String get guess => 'Adivinhar';
|
|
|
|
@override
|
|
String get correctGuess => 'Acertou!';
|
|
|
|
@override
|
|
String theWordWas(String word) {
|
|
return 'A palavra era: $word';
|
|
}
|
|
|
|
@override
|
|
String get impostorsWin => 'Os impostores vencem!';
|
|
|
|
@override
|
|
String get wrongGuess => 'Não acertou!';
|
|
|
|
@override
|
|
String get gameContinues => 'A partida continua...';
|
|
|
|
@override
|
|
String get gameOver => 'Fim de partida';
|
|
|
|
@override
|
|
String get playersWin => 'Os jogadores vencem!';
|
|
|
|
@override
|
|
String get theSecretWordWas => '🔍 A palavra era:';
|
|
|
|
@override
|
|
String categoryLabel(String category) {
|
|
return 'Categoria: $category';
|
|
}
|
|
|
|
@override
|
|
String get theImpostorWas => '🎭 O impostor era:';
|
|
|
|
@override
|
|
String get theImpostorsWere => '🎭 Os impostores eram:';
|
|
|
|
@override
|
|
String get votingHistory => '📊 Histórico de votações';
|
|
|
|
@override
|
|
String roundElimination(int round, String name) {
|
|
return 'Rodada $round: $name';
|
|
}
|
|
|
|
@override
|
|
String get rematch => 'Revanche';
|
|
|
|
@override
|
|
String get mainMenu => 'Menu principal';
|
|
|
|
@override
|
|
String get notesTitle => '📝 Notas';
|
|
|
|
@override
|
|
String get notesSaved => 'Notas salvas';
|
|
|
|
@override
|
|
String get whoAreYou => 'Quem é você?';
|
|
|
|
@override
|
|
String get selectYourName =>
|
|
'Selecione seu nome para ver suas notas privadas';
|
|
|
|
@override
|
|
String notesOf(String name) {
|
|
return 'Notas de $name';
|
|
}
|
|
|
|
@override
|
|
String get notesAboutPlayers => 'Anotações sobre cada jogador';
|
|
|
|
@override
|
|
String get playerNoteHint => 'O que disse? Suspeito?';
|
|
|
|
@override
|
|
String get freeNote => 'Nota livre';
|
|
|
|
@override
|
|
String get freeNoteHint => 'Anotações pessoais...';
|
|
|
|
@override
|
|
String get rulesTitle => '📖 Como jogar';
|
|
|
|
@override
|
|
String get rulesWhatIsTitle => '🎭 O que é O Impostor?';
|
|
|
|
@override
|
|
String get rulesWhatIsBody =>
|
|
'Um jogo de dedução social para 3-20 jogadores. Todos recebem uma palavra secreta... exceto o impostor! Sua missão: descobrir quem está fingindo.';
|
|
|
|
@override
|
|
String get rulesHowToPlayTitle => '🔍 Como se joga?';
|
|
|
|
@override
|
|
String get rulesHowToPlayBody =>
|
|
'1. Os papéis são distribuídos: todos recebem a mesma palavra, exceto o(s) impostor(es).\n\n2. Debate: por turnos, cada jogador descreve a palavra SEM dizê-la diretamente. O impostor deve fingir que a conhece.\n\n3. Votação: ao terminar o debate, todos votam em quem acham que é o impostor.\n\n4. Eliminação: o mais votado é eliminado e revela-se se era impostor ou não.\n\n5. Se era impostor, pode tentar adivinhar a palavra. Se acertar, os impostores vencem!';
|
|
|
|
@override
|
|
String get rulesWhoWinsTitle => '🏆 Quem ganha?';
|
|
|
|
@override
|
|
String get rulesWhoWinsBody =>
|
|
'• Jogadores: vencem se eliminarem TODOS os impostores.\n• Impostores: vencem se não forem descobertos até que restem igual ou menos jogadores normais que impostores, ou se adivinharem a palavra ao serem eliminados.';
|
|
|
|
@override
|
|
String get rulesTipsPlayersTitle => '💡 Dicas para jogadores';
|
|
|
|
@override
|
|
String get rulesTipsPlayersBody =>
|
|
'• Dê dicas sutis que provem que você conhece a palavra, mas não tão óbvias que o impostor as use.\n• Observe quem dá respostas vagas ou genéricas.\n• Use as notas para anotar o que cada um diz.\n• Não diga a palavra diretamente, isso ajuda o impostor!';
|
|
|
|
@override
|
|
String get rulesTipsImpostorTitle => '🎭 Dicas para o impostor';
|
|
|
|
@override
|
|
String get rulesTipsImpostorBody =>
|
|
'• Ouça atentamente as dicas dos outros.\n• Tente deduzir a palavra para dar dicas convincentes.\n• Não seja o primeiro a falar se não tiver certeza.\n• Se receberem a categoria como dica, use a seu favor.\n• Acuse outros para desviar a atenção.';
|
|
|
|
@override
|
|
String get rulesModesTitle => '📱 Modos de jogo';
|
|
|
|
@override
|
|
String get rulesModesBody =>
|
|
'• Um só celular: todos compartilham o dispositivo. Cada jogador vê sua palavra pressionando e segurando um botão.\n\n• Multicelular: cada jogador usa seu próprio dispositivo. Conectam-se por Bluetooth/WiFi Direct sem necessidade de internet.';
|
|
|
|
@override
|
|
String get rulesExampleTitle => '✏️ Exemplo de partida';
|
|
|
|
@override
|
|
String get rulesExampleBody =>
|
|
'Palavra secreta: \"Pizza\"\n\n• João: \"Se come quente\" ✓\n• Maria: \"Vem numa caixa\" ✓\n• Pedro (impostor): \"É muito popular\" 🤔\n• Ana: \"Tem queijo\" ✓\n\nPedro deu uma resposta muito genérica... Suspeito!';
|
|
|
|
@override
|
|
String get joinGameTitle => 'Entrar na partida';
|
|
|
|
@override
|
|
String get multiDeviceMode => 'Modo multicelular';
|
|
|
|
@override
|
|
String get scanQrDescription =>
|
|
'Escaneie o código QR exibido pelo anfitrião para se conectar à partida via Bluetooth/WiFi Direct.';
|
|
|
|
@override
|
|
String get comingSoon => 'Em breve';
|
|
|
|
@override
|
|
String get nearbyNotAvailable =>
|
|
'A conexão multicelular com Nearby Connections requer dispositivos Android físicos.\n\nPor enquanto, use o modo \"Um só celular\" para jogar em um dispositivo compartilhado.';
|
|
|
|
@override
|
|
String get back => 'Voltar';
|
|
|
|
@override
|
|
String get yes => 'Sim';
|
|
|
|
@override
|
|
String get no => 'Não';
|
|
|
|
@override
|
|
String get cancel => 'Cancelar';
|
|
|
|
@override
|
|
String get accept => 'Aceitar';
|
|
|
|
@override
|
|
String get next => 'Próximo';
|
|
|
|
@override
|
|
String get settingsTitle => 'Configurações';
|
|
|
|
@override
|
|
String get language => 'Idioma';
|
|
|
|
@override
|
|
String get soundVolume => 'Volume dos efeitos';
|
|
|
|
@override
|
|
String get vibration => 'Vibração';
|
|
|
|
@override
|
|
String get about => 'Sobre';
|
|
|
|
@override
|
|
String get version => 'Versão';
|
|
|
|
@override
|
|
String get developer => 'Desenvolvedor';
|
|
|
|
@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...';
|
|
}
|