Files
farolero/lib/l10n/app_hi.arb
T
FreeTLab 56f07364c2
Build & Deploy Farolero / Análisis de código (push) Successful in 13s
Build & Deploy Farolero / Build APK + AAB release (push) Successful in 1m22s
feat: confirm before leaving a game, and fix untranslated strings
Exit confirmation
- A dialog in the app's own style now guards every in-game screen. The safe
  action is the prominent one, so a stray tap keeps you in the game.
- Eleven screens covered, against both the system back gesture and the close
  buttons. The message adapts: a single-device game is lost, a host ends it
  for everyone, a client can rejoin.
- The two screens the host also opens from the manager take a flag so that
  back there just closes them instead of offering to quit.

Translations
- 21 keys were still holding the English text in Arabic, Basque, Hindi,
  Japanese, Korean, Dutch, Polish, Russian, Turkish and both Chinese
  variants: 231 strings, covering the whole multi-device flow, permissions
  and the mode picker. Nothing failed, the app just showed English.
- The permissions dialog was hardcoded in Spanish; it is localized now.
- Portuguese used Spanish gerunds where pt-PT takes "a + infinitive".

Checked what looked untranslated but is not: Animals and Notes are correct
Catalan, Configuration and Vibration correct French, Version correct German.
Those are whitelisted in the new test rather than silently rewritten.

l10n_cobertura_test guards all of it: no missing or orphan keys, no empty
values, no English left outside the whitelist, and placeholders preserved.
2026-07-25 23:59:57 +02:00

387 lines
25 KiB
Plaintext

{
"@@locale": "hi",
"appTitle": "धोखेबाज़",
"subtitle": "सामाजिक अनुमान का खेल",
"loadingWords": "शब्द लोड हो रहे हैं...",
"matchRewards": "गेम पुरस्कार",
"newMedals": "नई पदक",
"noNewMedalsKeepFire": "इस बार कोई नया पदक नहीं। अपनी आग बढ़ाते रहें।",
"calculatingRewards": "पुरस्कार गिने जा रहे हैं...",
"fireLabel": "आग",
"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": "लाइसेंस",
"scanThisCodeFromAnotherPhone": "इस कोड को दूसरे फ़ोन से स्कैन करें",
"gameUsers": "गेम उपयोगकर्ता",
"selectedPlayers": "चुने गए खिलाड़ी",
"connectedPhones": "कनेक्टेड फ़ोन",
"selectedOnThisPhone": "इस फ़ोन पर चुना गया",
"selectedByAnotherDevice": "दूसरे डिवाइस पर चुना गया",
"available": "उपलब्ध",
"notAvailable": "उपलब्ध नहीं",
"release": "छोड़ें",
"select": "चुनें",
"delete": "हटाएँ",
"selectAtLeastThreeUsersToStart": "शुरू करने के लिए कम से कम 3 उपयोगकर्ता चुनें।",
"hostPhoneMustSelectUser": "होस्ट फ़ोन को कम से कम एक उपयोगकर्ता चुनना होगा।",
"roomNoLongerInLobby": "कमरा अब लॉबी में नहीं है।",
"completeUserSelectionToStart": "शुरू करने के लिए उपयोगकर्ताओं का चयन पूरा करें।",
"preparingSecureRoom": "सुरक्षित कमरा तैयार किया जा रहा है",
"searchingNearbyBluetoothGames": "ब्लूटूथ से आस-पास के गेम खोजे जा रहे हैं",
"tapToJoin": "शामिल होने के लिए टैप करें",
"bluetoothLocationPermissionsRequired": "गेम खोजने के लिए ब्लूटूथ और लोकेशन की अनुमति चाहिए।",
"bluetoothLocationPermissionsShort": "ब्लूटूथ और लोकेशन की अनुमति चाहिए",
"couldNotStartSearch": "खोज शुरू नहीं हो सकी। ब्लूटूथ और लोकेशन जाँचें।",
"couldNotConnectToHost": "{host} से कनेक्ट नहीं हो सका",
"room": "कक्ष",
"singleDeviceSubtitle": "इसी डिवाइस पर खेल",
"singleDeviceDescription": "फ़ोन एक-दूसरे को देकर साथ खेलने के लिए बढ़िया। सेटअप तेज़ और सीधा।",
"multiDeviceSubtitle": "हर खिलाड़ी अपने फ़ोन पर",
"multiDeviceDescription": "एक प्रीमियम कमरा बनाएँ, QR साझा करें और लॉबी से उपयोगकर्ता संभालें।",
"singleDeviceGameLabel": "इसी डिवाइस पर खेल",
"multiDeviceGameLabel": "मल्टी-डिवाइस खेल",
"mainDeviceUser": "डिवाइस का मुख्य उपयोगकर्ता",
"couldNotCreateRoom": "कमरा नहीं बन सका। ब्लूटूथ जाँचें।",
"cannotStartWithReason": "शुरू नहीं हो सकता: {reason}",
"invalidRoom": "अमान्य कमरा",
"defaultPlayerName": "खिलाड़ी",
"play": "खेलें",
"history": "इतिहास",
"mainTagline": "बहुत देर होने से पहले impostor को ढूँढें",
"deviceProfile": "डिवाइस प्रोफ़ाइल",
"profileName": "नाम",
"profileNick": "निकनेम",
"save": "सहेजें",
"automaticLanguage": "स्वचालित",
"noSavedGames": "अभी तक कोई गेम सेव नहीं है।",
"errorNoGame": "त्रुटि: कोई गेम नहीं",
"disconnectedPlayersWarning": "कुछ खिलाड़ियों का डिवाइस डिसकनेक्ट है।",
"assumeOnThisPhone": "इस फ़ोन पर संभालें",
"noResult": "कोई परिणाम नहीं",
"historyGameSummary": "$players खिलाड़ी • $impostors इम्पोस्टर • $rounds राउंड\n$word • $category",
"@historyGameSummary": {
"placeholders": {
"players": {
"type": "int"
},
"impostors": {
"type": "int"
},
"rounds": {
"type": "int"
},
"word": {
"type": "String"
},
"category": {
"type": "String"
}
}
},
"voteOf": "{name} का वोट",
"@voteOf": {
"placeholders": {
"name": {
"type": "String"
}
}
},
"firstTurnInstruction": "{name} अपनी शब्द बोलकर शुरू करता है।",
"@firstTurnInstruction": {
"placeholders": {
"name": {
"type": "String"
}
}
},
"debate": "🗣️ बहस",
"scanToJoin": "शामिल होने के लिए QR स्कैन करें",
"connectedPlayers": "जुड़े हुए खिलाड़ी",
"hostGame": "गेम प्रबंधक",
"waitingPlayersSeeWord": "सभी के अपना शब्द देखने की प्रतीक्षा...",
"activePlayers": "सक्रिय खिलाड़ी",
"playersVoted": "मतदान कर चुके",
"waitingVoting": "वोटों की प्रतीक्षा...",
"waitingForPlayers": "खिलाड़ियों की प्रतीक्षा...",
"needMorePlayers": "{count} और खिलाड़ी चाहिए",
"starting": "शुरू हो रहा है...",
"enterNameAndScan": "अपना नाम लिखें और होस्ट का QR स्कैन करें",
"yourName": "आपका नाम",
"nameRequired": "अपना नाम लिखें",
"connectingTo": "कनेक्ट हो रहा है",
"scanQR": "QR स्कैन करें",
"scanHostQR": "होस्ट के QR पर कैमरा रखें",
"connectedWaiting": "कनेक्ट हो गया!",
"waitingForHost": "होस्ट के खेल शुरू करने की प्रतीक्षा...",
"enterNameToSearch": "आस-पास के गेम खोजने के लिए अपना नाम लिखें",
"searchGames": "गेम खोजें",
"searchingGames": "आस-पास के गेम खोजे जा रहे हैं...",
"noGamesFound": "कोई गेम नहीं मिला",
"noGamesFoundHint": "सुनिश्चित करें कि होस्ट का कमरा खुला है और आप पास हैं",
"orScanQR": "दिख नहीं रहा? होस्ट का QR स्कैन करें",
"iveSeenIt": "मैंने देख लिया",
"clueIs": "संकेत: {category}",
"debatePhaseActive": "बहस का चरण जारी है",
"debateInstructions": "आपस में बात करें और बताएं कि आपको कौन धोखेबाज़ लगता है। तैयार होने पर मतदान का अनुरोध करें।",
"solicitarVotacion": "मतदान का अनुरोध करें",
"votacionSolicitada": "मतदान का अनुरोध भेजा गया",
"whoDoYouThinkIsTheImpostor": "धोखेबाज़ कौन है?",
"selectOnePlayer": "वोट देने के लिए एक खिलाड़ी चुनें",
"votar": "वोट दें",
"selectYourProfile": "आपकी प्रोफ़ाइल",
"selectProfile": "एक प्रोफ़ाइल चुनें",
"createNewUser": "नया उपयोगकर्ता बनाएं",
"userNameRequired": "नाम खाली नहीं हो सकता",
"profileSelected": "प्रोफ़ाइल चुनी गई",
"availableProfiles": "उपलब्ध प्रोफ़ाइल",
"impostorsKnowEachOther": "🎭 धोखेबाज़ एक-दूसरे को जानते हैं",
"impostorsKnowEachOtherDescription": "हर धोखेबाज़ को बाकी के नाम दिखेंगे",
"impostorsKnowEachOtherNeedsTwo": "केवल 2 या अधिक धोखेबाज़ों पर लागू",
"otherImpostorsTitle": "{count, plural, =1{दूसरा धोखेबाज़} other{अन्य धोखेबाज़}}",
"youAreTheOnlyImpostor": "आप अकेले धोखेबाज़ हैं",
"impostorsAdjusted": "खिलाड़ियों की संख्या के अनुसार धोखेबाज़ {count} कर दिए गए",
"eliminatedCannotVote": "आप बाहर हो चुके हैं: अब आप वोट नहीं देते",
"reconnecting": "फिर से कनेक्ट हो रहा है...",
"reconnectingHint": "होस्ट से कनेक्शन टूट गया। खेल में आपकी जगह सुरक्षित है।",
"leaveGame": "खेल छोड़ें",
"playerRejoined": "{name} खेल में वापस आ गए",
"leaveGameTitle": "खेल छोड़ना है?",
"leaveGameSingleDevice": "चल रहा खेल ख़त्म हो जाएगा और वापस नहीं मिलेगा।",
"leaveGameHost": "आप होस्ट हैं: आपके जाने पर सभी खिलाड़ियों का खेल ख़त्म हो जाएगा।",
"leaveGameClient": "आप खेल से बाहर निकल जाएँगे। जब तक होस्ट इसे खुला रखे, आप लौट सकते हैं।",
"stayInGame": "खेलते रहें",
"permissionsNeededTitle": "अनुमतियाँ चाहिए",
"permissionsNeededBody": "मल्टीप्लेयर मोड के लिए हमें चाहिए:",
"openAppSettingsQuestion": "क्या ऐप की सेटिंग खोलें?",
"openSettings": "सेटिंग खोलें",
"permissionLocation": "लोकेशन",
"permissionBluetoothAdvertise": "ब्लूटूथ (प्रसारण)",
"permissionBluetoothConnect": "ब्लूटूथ (कनेक्ट)",
"permissionBluetoothScan": "ब्लूटूथ (स्कैन)",
"permissionNearbyWifi": "आस-पास का वाई-फ़ाई"
}