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

View File

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