v0.2.0: i18n 18 idiomas + pantalla ajustes + bancos multiidioma
Internacionalización completa: - 18 ficheros .arb: es, en, fr, pt, de, it, ru, ja, ko, zh, zh_TW, ar, hi, tr, pl, nl, ca, eu - Todos los strings extraídos de todas las pantallas - Detección automática de idioma del sistema - Selector manual en pantalla de ajustes Pantalla de ajustes nueva: - Selector de idioma con banderas emoji - Vibración ON/OFF - Acerca de (versión, desarrollador) Bancos de palabras multiidioma: - palabras.json (castellano, 1000 palabras) - palabras_en.json (inglés, 1000 palabras) - palabras_fr.json (francés, 1000 palabras) - Fallback a castellano si no hay banco del idioma 13138 líneas Dart, 39 ficheros, 0 issues en flutter analyze
This commit is contained in:
224
lib/l10n/app_pt.arb
Normal file
224
lib/l10n/app_pt.arb
Normal file
@@ -0,0 +1,224 @@
|
||||
{
|
||||
"@@locale": "pt",
|
||||
|
||||
"appTitle": "O Impostor",
|
||||
"subtitle": "Jogo de dedução social",
|
||||
"loadingWords": "Carregando palavras...",
|
||||
"playersRange": "3-20 jogadores • Sem internet",
|
||||
|
||||
"createGame": "Criar partida",
|
||||
"joinGame": "Entrar na partida",
|
||||
"howToPlay": "Como jogar",
|
||||
"settings": "Configurações",
|
||||
|
||||
"gameMode": "Modo de jogo",
|
||||
"singleDevice": "Um só celular",
|
||||
"multiDevice": "Multicelular",
|
||||
|
||||
"category": "Categoria",
|
||||
"categoryAll": "Todas",
|
||||
"categoryAnimals": "Animais",
|
||||
"categoryFood": "Comida",
|
||||
"categoryCountries": "Países",
|
||||
"categorySports": "Esportes",
|
||||
"categoryProfessions": "Profissões",
|
||||
"categoryObjects": "Objetos",
|
||||
"categoryPlaces": "Lugares",
|
||||
"categoryMovies": "Filmes",
|
||||
"categoryMusic": "Música",
|
||||
"categoryTechnology": "Tecnologia",
|
||||
|
||||
"playersCount": "Jogadores ({count})",
|
||||
"@playersCount": {
|
||||
"placeholders": {
|
||||
"count": {"type": "int"}
|
||||
}
|
||||
},
|
||||
"playersRangeHint": "3-20",
|
||||
"playerNameHint": "Nome do jogador",
|
||||
"playerAlreadyExists": "Já existe um jogador com esse nome",
|
||||
"maxPlayersReached": "Máximo de 20 jogadores",
|
||||
"minPlayersRequired": "São necessários pelo menos 3 jogadores",
|
||||
|
||||
"configuration": "Configuração",
|
||||
"impostors": "🎭 Impostores",
|
||||
"impostorClue": "🔍 Dica para o impostor",
|
||||
"impostorClueDescription": "O impostor conhece a categoria",
|
||||
"debateTime": "⏱️ Tempo de debate",
|
||||
"noLimit": "Sem limite",
|
||||
"oneMin": "1 min",
|
||||
"twoMin": "2 min",
|
||||
"threeMin": "3 min",
|
||||
"fiveMin": "5 min",
|
||||
|
||||
"startGame": "Iniciar partida",
|
||||
|
||||
"seeYourWord": "Ver sua palavra",
|
||||
"eachPlayerMustSee": "Cada jogador deve ver sua palavra em segredo",
|
||||
"roundNumber": "Rodada {round}",
|
||||
"@roundNumber": {
|
||||
"placeholders": {
|
||||
"round": {"type": "int"}
|
||||
}
|
||||
},
|
||||
"alreadySeen": "Já viu sua palavra",
|
||||
"tapToSee": "Toque para ver",
|
||||
"allSeenStartDebate": "Todos viram → Iniciar debate",
|
||||
"playersRemaining": "Faltam {count} jogadores",
|
||||
"@playersRemaining": {
|
||||
"placeholders": {
|
||||
"count": {"type": "int"}
|
||||
}
|
||||
},
|
||||
|
||||
"youAreImpostor": "Você é o impostor!",
|
||||
"yourWordIs": "Sua palavra é:",
|
||||
"clueCategory": "Dica: {category}",
|
||||
"@clueCategory": {
|
||||
"placeholders": {
|
||||
"category": {"type": "String"}
|
||||
}
|
||||
},
|
||||
"holdToSeeWord": "Mantenha pressionado para ver sua palavra",
|
||||
"makeSureNoOneLooks": "Certifique-se de que ninguém mais está olhando",
|
||||
"showingWord": "👁️ Mostrando...",
|
||||
"holdToSee": "👆 Mantenha pressionado para ver",
|
||||
"seenMyWord": "Já vi minha palavra",
|
||||
|
||||
"debateRound": "Debate - Rodada {round}",
|
||||
"@debateRound": {
|
||||
"placeholders": {
|
||||
"round": {"type": "int"}
|
||||
}
|
||||
},
|
||||
"timeUp": "⏰ Tempo esgotado!",
|
||||
"timeRemaining": "⏱️ Tempo restante",
|
||||
"playersInDebate": "Jogadores no debate",
|
||||
"activePlayersInfo": "{active} ativos • {impostors} impostor(es) ocultos",
|
||||
"@activePlayersInfo": {
|
||||
"placeholders": {
|
||||
"active": {"type": "int"},
|
||||
"impostors": {"type": "int"}
|
||||
}
|
||||
},
|
||||
"eliminated": "Eliminado",
|
||||
"notes": "Notas",
|
||||
"goToVoting": "Ir para votação",
|
||||
|
||||
"voting": "🗳️ Votação",
|
||||
"turnToVote": "Vez de votar:",
|
||||
"votesProgress": "Votos: {current}/{total}",
|
||||
"@votesProgress": {
|
||||
"placeholders": {
|
||||
"current": {"type": "int"},
|
||||
"total": {"type": "int"}
|
||||
}
|
||||
},
|
||||
"whoIsImpostor": "Quem você acha que é o impostor?",
|
||||
"confirmVote": "Confirmar voto",
|
||||
"votingComplete": "🗳️ Votação completa",
|
||||
"allVoted": "Todos votaram!",
|
||||
"tapToReveal": "Toque para revelar o resultado",
|
||||
"revealResult": "Revelar resultado",
|
||||
|
||||
"result": "Resultado",
|
||||
"revealing": "Revelando...",
|
||||
"wasImpostor": "Era IMPOSTOR! 🎉",
|
||||
"wasInnocent": "Era INOCENTE 😱",
|
||||
"votesThisRound": "Votos desta rodada",
|
||||
"seeEndResult": "Ver resultado final",
|
||||
"impostorGuessWord": "O impostor adivinha a palavra?",
|
||||
"nextRound": "Próxima rodada",
|
||||
|
||||
"impostorGuessTitle": "🎯 Palpite do impostor",
|
||||
"impostorCanGuess": "O impostor eliminado pode\ntentar adivinhar a palavra",
|
||||
"ifCorrectImpostorsWin": "Se acertar, os impostores vencem!",
|
||||
"guessWordHint": "Qual você acha que é a palavra?",
|
||||
"dontGuess": "Não tentar",
|
||||
"guess": "Adivinhar",
|
||||
"correctGuess": "Acertou!",
|
||||
"theWordWas": "A palavra era: {word}",
|
||||
"@theWordWas": {
|
||||
"placeholders": {
|
||||
"word": {"type": "String"}
|
||||
}
|
||||
},
|
||||
"impostorsWin": "Os impostores vencem!",
|
||||
"wrongGuess": "Não acertou!",
|
||||
"gameContinues": "A partida continua...",
|
||||
|
||||
"gameOver": "Fim de partida",
|
||||
"playersWin": "Os jogadores vencem!",
|
||||
"theSecretWordWas": "🔍 A palavra era:",
|
||||
"categoryLabel": "Categoria: {category}",
|
||||
"@categoryLabel": {
|
||||
"placeholders": {
|
||||
"category": {"type": "String"}
|
||||
}
|
||||
},
|
||||
"theImpostorWas": "🎭 O impostor era:",
|
||||
"theImpostorsWere": "🎭 Os impostores eram:",
|
||||
"votingHistory": "📊 Histórico de votações",
|
||||
"roundElimination": "Rodada {round}: {name}",
|
||||
"@roundElimination": {
|
||||
"placeholders": {
|
||||
"round": {"type": "int"},
|
||||
"name": {"type": "String"}
|
||||
}
|
||||
},
|
||||
"rematch": "Revanche",
|
||||
"mainMenu": "Menu principal",
|
||||
|
||||
"notesTitle": "📝 Notas",
|
||||
"notesSaved": "Notas salvas",
|
||||
"whoAreYou": "Quem é você?",
|
||||
"selectYourName": "Selecione seu nome para ver suas notas privadas",
|
||||
"notesOf": "Notas de {name}",
|
||||
"@notesOf": {
|
||||
"placeholders": {
|
||||
"name": {"type": "String"}
|
||||
}
|
||||
},
|
||||
"notesAboutPlayers": "Anotações sobre cada jogador",
|
||||
"playerNoteHint": "O que disse? Suspeito?",
|
||||
"freeNote": "Nota livre",
|
||||
"freeNoteHint": "Anotações pessoais...",
|
||||
|
||||
"rulesTitle": "📖 Como jogar",
|
||||
"rulesWhatIsTitle": "🎭 O que é O Impostor?",
|
||||
"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.",
|
||||
"rulesHowToPlayTitle": "🔍 Como se joga?",
|
||||
"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!",
|
||||
"rulesWhoWinsTitle": "🏆 Quem ganha?",
|
||||
"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.",
|
||||
"rulesTipsPlayersTitle": "💡 Dicas para jogadores",
|
||||
"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!",
|
||||
"rulesTipsImpostorTitle": "🎭 Dicas para o impostor",
|
||||
"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.",
|
||||
"rulesModesTitle": "📱 Modos de jogo",
|
||||
"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.",
|
||||
"rulesExampleTitle": "✏️ Exemplo de partida",
|
||||
"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!",
|
||||
|
||||
"joinGameTitle": "Entrar na partida",
|
||||
"multiDeviceMode": "Modo multicelular",
|
||||
"scanQrDescription": "Escaneie o código QR exibido pelo anfitrião para se conectar à partida via Bluetooth/WiFi Direct.",
|
||||
"comingSoon": "Em breve",
|
||||
"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.",
|
||||
"back": "Voltar",
|
||||
|
||||
"yes": "Sim",
|
||||
"no": "Não",
|
||||
"cancel": "Cancelar",
|
||||
"accept": "Aceitar",
|
||||
"next": "Próximo",
|
||||
|
||||
"settingsTitle": "Configurações",
|
||||
"language": "Idioma",
|
||||
"soundVolume": "Volume dos efeitos",
|
||||
"vibration": "Vibração",
|
||||
"about": "Sobre",
|
||||
"version": "Versão",
|
||||
"developer": "Desenvolvedor",
|
||||
"licenses": "Licenças"
|
||||
}
|
||||
Reference in New Issue
Block a user