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:
ShanaiaBot
2026-04-04 01:18:09 +02:00
parent de2c8ffa18
commit 1bca50af1d
56 changed files with 14389 additions and 201 deletions

224
lib/l10n/app_eu.arb Normal file
View File

@@ -0,0 +1,224 @@
{
"@@locale": "eu",
"appTitle": "Inpostorrea",
"subtitle": "Dedukzio sozialeko jokoa",
"loadingWords": "Hitzak kargatzen...",
"playersRange": "3-20 jokalari • Internetik gabe",
"createGame": "Partida sortu",
"joinGame": "Partidara batu",
"howToPlay": "Nola jolastu",
"settings": "Ezarpenak",
"gameMode": "Joko-modua",
"singleDevice": "Mugikor bakarra",
"multiDevice": "Mugikor anitz",
"category": "Kategoria",
"categoryAll": "Denak",
"categoryAnimals": "Animaliak",
"categoryFood": "Janaria",
"categoryCountries": "Herrialdeak",
"categorySports": "Kirolak",
"categoryProfessions": "Lanbideak",
"categoryObjects": "Objektuak",
"categoryPlaces": "Lekuak",
"categoryMovies": "Filmak",
"categoryMusic": "Musika",
"categoryTechnology": "Teknologia",
"playersCount": "Jokalariak ({count})",
"@playersCount": {
"placeholders": {
"count": {"type": "int"}
}
},
"playersRangeHint": "3-20",
"playerNameHint": "Jokalariaren izena",
"playerAlreadyExists": "Izen hori duen jokalari bat badago dagoeneko",
"maxPlayersReached": "Gehienez 20 jokalari",
"minPlayersRequired": "Gutxienez 3 jokalari behar dira",
"configuration": "Konfigurazioa",
"impostors": "🎭 Inpostoreak",
"impostorClue": "🔍 Inpostorearentzako pista",
"impostorClueDescription": "Inpostoreak kategoria ezagutzen du",
"debateTime": "⏱️ Eztabaida-denbora",
"noLimit": "Mugarik gabe",
"oneMin": "1 min",
"twoMin": "2 min",
"threeMin": "3 min",
"fiveMin": "5 min",
"startGame": "Partida hasi",
"seeYourWord": "Ikusi zure hitza",
"eachPlayerMustSee": "Jokalari bakoitzak bere hitza ezkutuan ikusi behar du",
"roundNumber": "{round}. txanda",
"@roundNumber": {
"placeholders": {
"round": {"type": "int"}
}
},
"alreadySeen": "Bere hitza ikusi du dagoeneko",
"tapToSee": "Sakatu ikusteko",
"allSeenStartDebate": "Denek ikusi dute → Eztabaida hasi",
"playersRemaining": "{count} jokalari falta dira",
"@playersRemaining": {
"placeholders": {
"count": {"type": "int"}
}
},
"youAreImpostor": "Inpostorea zara!",
"yourWordIs": "Zure hitza da:",
"clueCategory": "Pista: {category}",
"@clueCategory": {
"placeholders": {
"category": {"type": "String"}
}
},
"holdToSeeWord": "Sakatuta eduki zure hitza ikusteko",
"makeSureNoOneLooks": "Ziurtatu inor gehiago ez dagoela begiratzen",
"showingWord": "👁️ Erakusten...",
"holdToSee": "👆 Sakatuta eduki ikusteko",
"seenMyWord": "Nire hitza ikusi dut",
"debateRound": "Eztabaida - {round}. txanda",
"@debateRound": {
"placeholders": {
"round": {"type": "int"}
}
},
"timeUp": "⏰ Denbora agortu da!",
"timeRemaining": "⏱️ Geratzen den denbora",
"playersInDebate": "Eztabaidan diren jokalariak",
"activePlayersInfo": "{active} aktibo • {impostors} inpostore ezkutu",
"@activePlayersInfo": {
"placeholders": {
"active": {"type": "int"},
"impostors": {"type": "int"}
}
},
"eliminated": "Kanporatua",
"notes": "Oharrak",
"goToVoting": "Bozkatzera joan",
"voting": "🗳️ Bozketa",
"turnToVote": "Bozkatze-txanda:",
"votesProgress": "Botoak: {current}/{total}",
"@votesProgress": {
"placeholders": {
"current": {"type": "int"},
"total": {"type": "int"}
}
},
"whoIsImpostor": "Nor da inpostorea zure ustez?",
"confirmVote": "Botoa berretsi",
"votingComplete": "🗳️ Bozketa osatua",
"allVoted": "Denek bozka eman dute!",
"tapToReveal": "Sakatu emaitza agertzeko",
"revealResult": "Emaitza agertu",
"result": "Emaitza",
"revealing": "Agertzen...",
"wasImpostor": "INPOSTOREA zen! 🎉",
"wasInnocent": "ERRUGABEA zen 😱",
"votesThisRound": "Txanda honetako botoak",
"seeEndResult": "Azken emaitza ikusi",
"impostorGuessWord": "Inpostoreak hitza asmatzen du?",
"nextRound": "Hurrengo txanda",
"impostorGuessTitle": "🎯 Inpostorearen asmaketa",
"impostorCanGuess": "Kanporatutako inpostoreak\nhitza asmatzen saia daiteke",
"ifCorrectImpostorsWin": "Asmatzen badu, inpostoreek irabazten dute!",
"guessWordHint": "Zein da hitza zure ustez?",
"dontGuess": "Ez saiatu",
"guess": "Asmatu",
"correctGuess": "Asmatu du!",
"theWordWas": "Hitza zen: {word}",
"@theWordWas": {
"placeholders": {
"word": {"type": "String"}
}
},
"impostorsWin": "Inpostoreek irabazi dute!",
"wrongGuess": "Ez du asmatu!",
"gameContinues": "Partida jarraitzen du...",
"gameOver": "Partidaren amaiera",
"playersWin": "Jokalariek irabazi dute!",
"theSecretWordWas": "🔍 Hitza zen:",
"categoryLabel": "Kategoria: {category}",
"@categoryLabel": {
"placeholders": {
"category": {"type": "String"}
}
},
"theImpostorWas": "🎭 Inpostorea zen:",
"theImpostorsWere": "🎭 Inpostoreak ziren:",
"votingHistory": "📊 Bozketen historia",
"roundElimination": "{round}. txanda: {name}",
"@roundElimination": {
"placeholders": {
"round": {"type": "int"},
"name": {"type": "String"}
}
},
"rematch": "Errebantxa",
"mainMenu": "Menu nagusia",
"notesTitle": "📝 Oharrak",
"notesSaved": "Oharrak gordeta",
"whoAreYou": "Nor zara?",
"selectYourName": "Aukeratu zure izena ohar pribatuak ikusteko",
"notesOf": "{name}-(r)en oharrak",
"@notesOf": {
"placeholders": {
"name": {"type": "String"}
}
},
"notesAboutPlayers": "Jokalari bakoitzari buruzko apunteak",
"playerNoteHint": "Zer esan du? Susmagarria?",
"freeNote": "Ohar librea",
"freeNoteHint": "Apunte pertsonalak...",
"rulesTitle": "📖 Nola jolastu",
"rulesWhatIsTitle": "🎭 Zer da Inpostorrea?",
"rulesWhatIsBody": "3-20 jokalarientzako dedukzio sozialeko jokoa. Denek hitz sekretu bat jasotzen dute... inpostorea izan ezik! Zure misioa: nor ari den itxurak egiten aurkitzea.",
"rulesHowToPlayTitle": "🔍 Nola jolasten da?",
"rulesHowToPlayBody": "1. Rolak banatzen dira: denek hitz bera jasotzen dute, inpostorea/inpostoreak izan ezik.\n\n2. Eztabaida: txandaka, jokalari bakoitzak hitza deskribatzen du zuzenean ESAN gabe. Inpostoreak ezagutzen duela itxurak egin behar du.\n\n3. Bozketa: eztabaida amaitzean, denek bozkatzen dute nor den inpostorea uste duten.\n\n4. Kanporatzea: boto gehien dituena kanporatua geratzen da eta inpostorea zen ala ez agertzen da.\n\n5. Inpostorea bazen, hitza asmatzen saia daiteke. Asmatzen badu, inpostoreek irabazten dute!",
"rulesWhoWinsTitle": "🏆 Nork irabazten du?",
"rulesWhoWinsBody": "• Jokalariak: irabazten dute inpostore GUZTIAK kanporatzen badituzte.\n• Inpostoreak: irabazten dute aurkitu gabe jarraitzen badute jokalari arruntak inpostore adina edo gutxiago diren arte, edo hitza asmatzen badute kanporatu ondoren.",
"rulesTipsPlayersTitle": "💡 Jokalarientzako aholkuak",
"rulesTipsPlayersBody": "• Eman hitza ezagutzen duzula erakusten duten pista sotilak, baina ez hain argiak inpostoreak erabil ditzan.\n• Begiratu nork ematen dituen erantzun lausoak edo generikoak.\n• Erabili oharrak bakoitzak zer esaten duen apuntatzeko.\n• Ez esan hitza zuzenean, horrek inpostoreari laguntzen dio!",
"rulesTipsImpostorTitle": "🎭 Inpostorearentzako aholkuak",
"rulesTipsImpostorBody": "• Entzun arretaz besteen pistak.\n• Saiatu hitza deduzitzen pista sinesgarriak emateko.\n• Ez izan lehena hitz egiten ziur ez bazaude.\n• Kategoria pista gisa ematen badizute, erabili zure alde.\n• Salatu besteak arreta desbideratzeko.",
"rulesModesTitle": "📱 Joko-moduak",
"rulesModesBody": "• Mugikor bakarra: denek gailua partekatzen dute. Jokalari bakoitzak bere hitza ikusten du botoi bat sakatuta edukiz.\n\n• Mugikor anitz: jokalari bakoitzak bere gailua erabiltzen du. Bluetooth/WiFi Direct bidez konektatzen dira internetik behartu gabe.",
"rulesExampleTitle": "✏️ Partida-adibidea",
"rulesExampleBody": "Hitz sekretua: \"Pizza\"\n\n• Ane: \"Beroa jaten da\" ✓\n• Mikel: \"Kutxa batean dator\" ✓\n• Irati (inpostorea): \"Oso ezaguna da\" 🤔\n• Unai: \"Gazta dauka\" ✓\n\nIratik erantzun oso generikoa eman zuen... Susmagarria!",
"joinGameTitle": "Partidara batu",
"multiDeviceMode": "Mugikor anitzeko modua",
"scanQrDescription": "Eskaneatu ostalariak erakusten duen QR kodea partidara Bluetooth/WiFi Direct bidez konektatzeko.",
"comingSoon": "Laster",
"nearbyNotAvailable": "Mugikor anitzeko konexioak Nearby Connections-ekin Android gailu fisikoak behar ditu.\n\nOraingoz, erabili \"Mugikor bakarra\" modua gailu partekatuan jolasteko.",
"back": "Atzera",
"yes": "Bai",
"no": "Ez",
"cancel": "Ezeztatu",
"accept": "Onartu",
"next": "Hurrengoa",
"settingsTitle": "Ezarpenak",
"language": "Hizkuntza",
"soundVolume": "Efektuen bolumena",
"vibration": "Bibrazioa",
"about": "Honi buruz",
"version": "Bertsioa",
"developer": "Garatzailea",
"licenses": "Lizentziak"
}