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_hi.arb Normal file
View File

@@ -0,0 +1,224 @@
{
"@@locale": "hi",
"appTitle": "धोखेबाज़",
"subtitle": "सामाजिक अनुमान का खेल",
"loadingWords": "शब्द लोड हो रहे हैं...",
"playersRange": "3-20 खिलाड़ी • इंटरनेट की ज़रूरत नहीं",
"createGame": "गेम बनाएँ",
"joinGame": "गेम में शामिल हों",
"howToPlay": "कैसे खेलें",
"settings": "सेटिंग्स",
"gameMode": "गेम मोड",
"singleDevice": "एक डिवाइस",
"multiDevice": "मल्टी-डिवाइस",
"category": "श्रेणी",
"categoryAll": "सभी",
"categoryAnimals": "जानवर",
"categoryFood": "खाना",
"categoryCountries": "देश",
"categorySports": "खेल",
"categoryProfessions": "पेशे",
"categoryObjects": "वस्तुएँ",
"categoryPlaces": "स्थान",
"categoryMovies": "फ़िल्में",
"categoryMusic": "संगीत",
"categoryTechnology": "टेक्नोलॉजी",
"playersCount": "खिलाड़ी ({count})",
"@playersCount": {
"placeholders": {
"count": {"type": "int"}
}
},
"playersRangeHint": "3-20",
"playerNameHint": "खिलाड़ी का नाम",
"playerAlreadyExists": "इस नाम का खिलाड़ी पहले से मौजूद है",
"maxPlayersReached": "अधिकतम 20 खिलाड़ी",
"minPlayersRequired": "कम से कम 3 खिलाड़ी ज़रूरी हैं",
"configuration": "कॉन्फ़िगरेशन",
"impostors": "🎭 धोखेबाज़",
"impostorClue": "🔍 धोखेबाज़ के लिए संकेत",
"impostorClueDescription": "धोखेबाज़ को श्रेणी पता होगी",
"debateTime": "⏱️ बहस का समय",
"noLimit": "कोई सीमा नहीं",
"oneMin": "1 मिनट",
"twoMin": "2 मिनट",
"threeMin": "3 मिनट",
"fiveMin": "5 मिनट",
"startGame": "गेम शुरू करें",
"seeYourWord": "अपना शब्द देखें",
"eachPlayerMustSee": "हर खिलाड़ी को अपना शब्द गुपचुप देखना होगा",
"roundNumber": "राउंड {round}",
"@roundNumber": {
"placeholders": {
"round": {"type": "int"}
}
},
"alreadySeen": "अपना शब्द देख चुके हैं",
"tapToSee": "देखने के लिए टैप करें",
"allSeenStartDebate": "सबने देख लिया → बहस शुरू करें",
"playersRemaining": "{count} खिलाड़ी बाकी हैं",
"@playersRemaining": {
"placeholders": {
"count": {"type": "int"}
}
},
"youAreImpostor": "आप धोखेबाज़ हैं!",
"yourWordIs": "आपका शब्द है:",
"clueCategory": "संकेत: {category}",
"@clueCategory": {
"placeholders": {
"category": {"type": "String"}
}
},
"holdToSeeWord": "अपना शब्द देखने के लिए दबाए रखें",
"makeSureNoOneLooks": "सुनिश्चित करें कि कोई और नहीं देख रहा",
"showingWord": "👁️ दिखा रहे हैं...",
"holdToSee": "👆 देखने के लिए दबाए रखें",
"seenMyWord": "मैंने अपना शब्द देख लिया",
"debateRound": "बहस - राउंड {round}",
"@debateRound": {
"placeholders": {
"round": {"type": "int"}
}
},
"timeUp": "⏰ समय समाप्त!",
"timeRemaining": "⏱️ शेष समय",
"playersInDebate": "बहस में खिलाड़ी",
"activePlayersInfo": "{active} सक्रिय • {impostors} धोखेबाज़ छिपे हुए",
"@activePlayersInfo": {
"placeholders": {
"active": {"type": "int"},
"impostors": {"type": "int"}
}
},
"eliminated": "बाहर",
"notes": "नोट्स",
"goToVoting": "वोटिंग पर जाएँ",
"voting": "🗳️ वोटिंग",
"turnToVote": "वोट करने की बारी:",
"votesProgress": "वोट: {current}/{total}",
"@votesProgress": {
"placeholders": {
"current": {"type": "int"},
"total": {"type": "int"}
}
},
"whoIsImpostor": "आपको कौन धोखेबाज़ लगता है?",
"confirmVote": "वोट की पुष्टि करें",
"votingComplete": "🗳️ वोटिंग पूरी हुई",
"allVoted": "सबने वोट कर दिया!",
"tapToReveal": "नतीजा देखने के लिए टैप करें",
"revealResult": "नतीजा दिखाएँ",
"result": "नतीजा",
"revealing": "दिखा रहे हैं...",
"wasImpostor": "धोखेबाज़ था! 🎉",
"wasInnocent": "बेगुनाह था 😱",
"votesThisRound": "इस राउंड के वोट",
"seeEndResult": "अंतिम नतीजा देखें",
"impostorGuessWord": "क्या धोखेबाज़ शब्द का अनुमान लगाएगा?",
"nextRound": "अगला राउंड",
"impostorGuessTitle": "🎯 धोखेबाज़ का अनुमान",
"impostorCanGuess": "बाहर किया गया धोखेबाज़\nशब्द का अनुमान लगा सकता है",
"ifCorrectImpostorsWin": "अगर सही अनुमान लगाया, तो धोखेबाज़ जीतते हैं!",
"guessWordHint": "आपके अनुसार शब्द क्या है?",
"dontGuess": "अनुमान न लगाएँ",
"guess": "अनुमान लगाएँ",
"correctGuess": "सही अनुमान!",
"theWordWas": "शब्द था: {word}",
"@theWordWas": {
"placeholders": {
"word": {"type": "String"}
}
},
"impostorsWin": "धोखेबाज़ जीत गए!",
"wrongGuess": "गलत अनुमान!",
"gameContinues": "गेम जारी है...",
"gameOver": "गेम ख़त्म",
"playersWin": "खिलाड़ी जीत गए!",
"theSecretWordWas": "🔍 शब्द था:",
"categoryLabel": "श्रेणी: {category}",
"@categoryLabel": {
"placeholders": {
"category": {"type": "String"}
}
},
"theImpostorWas": "🎭 धोखेबाज़ था:",
"theImpostorsWere": "🎭 धोखेबाज़ थे:",
"votingHistory": "📊 वोटिंग का इतिहास",
"roundElimination": "राउंड {round}: {name}",
"@roundElimination": {
"placeholders": {
"round": {"type": "int"},
"name": {"type": "String"}
}
},
"rematch": "फिर से खेलें",
"mainMenu": "मुख्य मेनू",
"notesTitle": "📝 नोट्स",
"notesSaved": "नोट्स सहेजे गए",
"whoAreYou": "आप कौन हैं?",
"selectYourName": "अपने निजी नोट्स देखने के लिए अपना नाम चुनें",
"notesOf": "{name} के नोट्स",
"@notesOf": {
"placeholders": {
"name": {"type": "String"}
}
},
"notesAboutPlayers": "हर खिलाड़ी के बारे में नोट्स",
"playerNoteHint": "उसने क्या कहा? शक है?",
"freeNote": "फ्री नोट",
"freeNoteHint": "निजी नोट्स...",
"rulesTitle": "📖 कैसे खेलें",
"rulesWhatIsTitle": "🎭 धोखेबाज़ क्या है?",
"rulesWhatIsBody": "3-20 खिलाड़ियों के लिए एक सामाजिक अनुमान का खेल। सबको एक गुप्त शब्द मिलता है... धोखेबाज़ को छोड़कर! आपका मिशन: पता लगाएँ कि कौन बहाना बना रहा है।",
"rulesHowToPlayTitle": "🔍 कैसे खेलें?",
"rulesHowToPlayBody": "1. भूमिकाएँ बाँटी जाती हैं: सबको एक ही शब्द मिलता है, धोखेबाज़ को छोड़कर।\n\n2. बहस: बारी-बारी से हर खिलाड़ी शब्द का वर्णन करता है, बिना सीधे बताए। धोखेबाज़ को बहाना बनाना होता है कि वह शब्द जानता है।\n\n3. वोटिंग: बहस के बाद सभी वोट करते हैं कि धोखेबाज़ कौन है।\n\n4. बाहर करना: सबसे ज़्यादा वोट पाने वाला बाहर हो जाता है और पता चलता है कि वह धोखेबाज़ था या नहीं।\n\n5. अगर वह धोखेबाज़ था, तो वह शब्द का अनुमान लगा सकता है। सही अनुमान पर धोखेबाज़ जीतते हैं!",
"rulesWhoWinsTitle": "🏆 कौन जीतता है?",
"rulesWhoWinsBody": "• खिलाड़ी: सभी धोखेबाज़ों को बाहर करने पर जीतते हैं।\n• धोखेबाज़: अगर पकड़े नहीं गए और सामान्य खिलाड़ियों की संख्या धोखेबाज़ों के बराबर या कम हो जाए, या बाहर होने पर शब्द सही अनुमान लगा लें, तो जीतते हैं।",
"rulesTipsPlayersTitle": "💡 खिलाड़ियों के लिए सुझाव",
"rulesTipsPlayersBody": "• ऐसे सूक्ष्म संकेत दें जो साबित करें कि आप शब्द जानते हैं, लेकिन इतने स्पष्ट नहीं कि धोखेबाज़ उनका फ़ायदा उठा ले।\n• ध्यान दें कि कौन अस्पष्ट या सामान्य जवाब दे रहा है।\n• हर किसी ने क्या कहा, यह लिखने के लिए नोट्स का उपयोग करें।\n• शब्द सीधे न बताएँ, इससे धोखेबाज़ को फ़ायदा होता है!",
"rulesTipsImpostorTitle": "🎭 धोखेबाज़ के लिए सुझाव",
"rulesTipsImpostorBody": "• दूसरों के संकेत ध्यान से सुनें।\n• विश्वसनीय संकेत देने के लिए शब्द का अनुमान लगाने की कोशिश करें।\n• अगर आपको यकीन नहीं है तो पहले न बोलें।\n• अगर श्रेणी का संकेत मिले, तो उसे अपने फ़ायदे में इस्तेमाल करें।\n• ध्यान भटकाने के लिए दूसरों पर आरोप लगाएँ।",
"rulesModesTitle": "📱 गेम मोड",
"rulesModesBody": "• एक डिवाइस: सभी एक ही डिवाइस शेयर करते हैं। हर खिलाड़ी बटन दबाकर अपना शब्द देखता है।\n\n• मल्टी-डिवाइस: हर खिलाड़ी अपना डिवाइस इस्तेमाल करता है। ब्लूटूथ/WiFi Direct से जुड़ते हैं, इंटरनेट की ज़रूरत नहीं।",
"rulesExampleTitle": "✏️ गेम का उदाहरण",
"rulesExampleBody": "गुप्त शब्द: \"पिज़्ज़ा\"\n\n• आर्यन: \"गरम खाया जाता है\" ✓\n• प्रिया: \"डिब्बे में आता है\" ✓\n• नेहा (धोखेबाज़): \"बहुत लोकप्रिय है\" 🤔\n• राहुल: \"इसमें चीज़ होता है\" ✓\n\nनेहा का जवाब बहुत सामान्य था... शक़ है!",
"joinGameTitle": "गेम में शामिल हों",
"multiDeviceMode": "मल्टी-डिवाइस मोड",
"scanQrDescription": "ब्लूटूथ/WiFi Direct से गेम में जुड़ने के लिए होस्ट का QR कोड स्कैन करें।",
"comingSoon": "जल्द आ रहा है",
"nearbyNotAvailable": "Nearby Connections से मल्टी-डिवाइस कनेक्शन के लिए असली Android डिवाइस चाहिए।\n\nअभी के लिए, शेयर किए गए डिवाइस पर खेलने के लिए \"एक डिवाइस\" मोड का उपयोग करें।",
"back": "वापस",
"yes": "हाँ",
"no": "नहीं",
"cancel": "रद्द करें",
"accept": "स्वीकार करें",
"next": "अगला",
"settingsTitle": "सेटिंग्स",
"language": "भाषा",
"soundVolume": "साउंड इफ़ेक्ट्स की आवाज़",
"vibration": "कंपन",
"about": "ऐप के बारे में",
"version": "संस्करण",
"developer": "डेवलपर",
"licenses": "लाइसेंस"
}