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.
387 lines
16 KiB
Plaintext
387 lines
16 KiB
Plaintext
{
|
||
"@@locale": "nl",
|
||
"appTitle": "De Bedrieger",
|
||
"subtitle": "Sociaal deductiespel",
|
||
"loadingWords": "Woorden laden...",
|
||
"matchRewards": "Spelbeloningen",
|
||
"newMedals": "Nieuwe medailles",
|
||
"noNewMedalsKeepFire": "Deze keer geen nieuwe medailles. Blijf je vuur opbouwen.",
|
||
"calculatingRewards": "Beloningen berekenen...",
|
||
"fireLabel": "Vuur",
|
||
"playersRange": "3-20 spelers • Zonder internet",
|
||
"createGame": "Spel aanmaken",
|
||
"joinGame": "Deelnemen aan spel",
|
||
"howToPlay": "Hoe te spelen",
|
||
"settings": "Instellingen",
|
||
"gameMode": "Spelmodus",
|
||
"singleDevice": "Eén toestel",
|
||
"multiDevice": "Meerdere toestellen",
|
||
"category": "Categorie",
|
||
"categoryAll": "Alle",
|
||
"categoryAnimals": "Dieren",
|
||
"categoryFood": "Eten",
|
||
"categoryCountries": "Landen",
|
||
"categorySports": "Sport",
|
||
"categoryProfessions": "Beroepen",
|
||
"categoryObjects": "Voorwerpen",
|
||
"categoryPlaces": "Plaatsen",
|
||
"categoryMovies": "Films",
|
||
"categoryMusic": "Muziek",
|
||
"categoryTechnology": "Technologie",
|
||
"playersCount": "Spelers ({count})",
|
||
"@playersCount": {
|
||
"placeholders": {
|
||
"count": {
|
||
"type": "int"
|
||
}
|
||
}
|
||
},
|
||
"playersRangeHint": "3-20",
|
||
"playerNameHint": "Naam van de speler",
|
||
"playerAlreadyExists": "Er bestaat al een speler met die naam",
|
||
"maxPlayersReached": "Maximaal 20 spelers",
|
||
"minPlayersRequired": "Er zijn minstens 3 spelers nodig",
|
||
"configuration": "Configuratie",
|
||
"impostors": "🎭 Bedriegers",
|
||
"impostorClue": "🔍 Aanwijzing voor bedrieger",
|
||
"impostorClueDescription": "De bedrieger kent de categorie",
|
||
"debateTime": "⏱️ Debattijd",
|
||
"noLimit": "Geen limiet",
|
||
"oneMin": "1 min",
|
||
"twoMin": "2 min",
|
||
"threeMin": "3 min",
|
||
"fiveMin": "5 min",
|
||
"startGame": "Spel starten",
|
||
"seeYourWord": "Bekijk je woord",
|
||
"eachPlayerMustSee": "Elke speler moet zijn woord in het geheim bekijken",
|
||
"roundNumber": "Ronde {round}",
|
||
"@roundNumber": {
|
||
"placeholders": {
|
||
"round": {
|
||
"type": "int"
|
||
}
|
||
}
|
||
},
|
||
"alreadySeen": "Heeft zijn woord al gezien",
|
||
"tapToSee": "Tik om te bekijken",
|
||
"allSeenStartDebate": "Iedereen heeft gezien → Start debat",
|
||
"playersRemaining": "Nog {count} spelers",
|
||
"@playersRemaining": {
|
||
"placeholders": {
|
||
"count": {
|
||
"type": "int"
|
||
}
|
||
}
|
||
},
|
||
"youAreImpostor": "Jij bent de bedrieger!",
|
||
"yourWordIs": "Jouw woord is:",
|
||
"clueCategory": "Aanwijzing: {category}",
|
||
"@clueCategory": {
|
||
"placeholders": {
|
||
"category": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"holdToSeeWord": "Houd ingedrukt om je woord te zien",
|
||
"makeSureNoOneLooks": "Zorg dat niemand anders kijkt",
|
||
"showingWord": "👁️ Wordt getoond...",
|
||
"holdToSee": "👆 Houd ingedrukt om te zien",
|
||
"seenMyWord": "Ik heb mijn woord gezien",
|
||
"debateRound": "Debat - Ronde {round}",
|
||
"@debateRound": {
|
||
"placeholders": {
|
||
"round": {
|
||
"type": "int"
|
||
}
|
||
}
|
||
},
|
||
"timeUp": "⏰ Tijd is om!",
|
||
"timeRemaining": "⏱️ Resterende tijd",
|
||
"playersInDebate": "Spelers in debat",
|
||
"activePlayersInfo": "{active} actief • {impostors} verborgen bedrieger(s)",
|
||
"@activePlayersInfo": {
|
||
"placeholders": {
|
||
"active": {
|
||
"type": "int"
|
||
},
|
||
"impostors": {
|
||
"type": "int"
|
||
}
|
||
}
|
||
},
|
||
"eliminated": "Geëlimineerd",
|
||
"notes": "Notities",
|
||
"goToVoting": "Naar stemming",
|
||
"voting": "🗳️ Stemming",
|
||
"turnToVote": "Beurt om te stemmen:",
|
||
"votesProgress": "Stemmen: {current}/{total}",
|
||
"@votesProgress": {
|
||
"placeholders": {
|
||
"current": {
|
||
"type": "int"
|
||
},
|
||
"total": {
|
||
"type": "int"
|
||
}
|
||
}
|
||
},
|
||
"whoIsImpostor": "Wie is volgens jou de bedrieger?",
|
||
"confirmVote": "Stem bevestigen",
|
||
"votingComplete": "🗳️ Stemming voltooid",
|
||
"allVoted": "Iedereen heeft gestemd!",
|
||
"tapToReveal": "Tik om het resultaat te onthullen",
|
||
"revealResult": "Resultaat onthullen",
|
||
"result": "Resultaat",
|
||
"revealing": "Onthullen...",
|
||
"wasImpostor": "Was de BEDRIEGER! 🎉",
|
||
"wasInnocent": "Was ONSCHULDIG 😱",
|
||
"votesThisRound": "Stemmen deze ronde",
|
||
"seeEndResult": "Eindresultaat bekijken",
|
||
"impostorGuessWord": "Raadt de bedrieger het woord?",
|
||
"nextRound": "Volgende ronde",
|
||
"impostorGuessTitle": "🎯 Gok van de bedrieger",
|
||
"impostorCanGuess": "De geëlimineerde bedrieger mag\nproberen het woord te raden",
|
||
"ifCorrectImpostorsWin": "Als het klopt, winnen de bedriegers!",
|
||
"guessWordHint": "Wat denk je dat het woord is?",
|
||
"dontGuess": "Niet proberen",
|
||
"guess": "Raden",
|
||
"correctGuess": "Goed geraden!",
|
||
"theWordWas": "Het woord was: {word}",
|
||
"@theWordWas": {
|
||
"placeholders": {
|
||
"word": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"impostorsWin": "De bedriegers winnen!",
|
||
"wrongGuess": "Fout geraden!",
|
||
"gameContinues": "Het spel gaat verder...",
|
||
"gameOver": "Einde van het spel",
|
||
"playersWin": "De spelers winnen!",
|
||
"theSecretWordWas": "🔍 Het woord was:",
|
||
"categoryLabel": "Categorie: {category}",
|
||
"@categoryLabel": {
|
||
"placeholders": {
|
||
"category": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"theImpostorWas": "🎭 De bedrieger was:",
|
||
"theImpostorsWere": "🎭 De bedriegers waren:",
|
||
"votingHistory": "📊 Stemgeschiedenis",
|
||
"roundElimination": "Ronde {round}: {name}",
|
||
"@roundElimination": {
|
||
"placeholders": {
|
||
"round": {
|
||
"type": "int"
|
||
},
|
||
"name": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"rematch": "Herkansing",
|
||
"mainMenu": "Hoofdmenu",
|
||
"notesTitle": "📝 Notities",
|
||
"notesSaved": "Notities opgeslagen",
|
||
"whoAreYou": "Wie ben je?",
|
||
"selectYourName": "Selecteer je naam om je privénotities te bekijken",
|
||
"notesOf": "Notities van {name}",
|
||
"@notesOf": {
|
||
"placeholders": {
|
||
"name": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"notesAboutPlayers": "Aantekeningen over elke speler",
|
||
"playerNoteHint": "Wat heeft hij gezegd? Verdacht?",
|
||
"freeNote": "Vrije notitie",
|
||
"freeNoteHint": "Persoonlijke aantekeningen...",
|
||
"rulesTitle": "📖 Hoe te spelen",
|
||
"rulesWhatIsTitle": "🎭 Wat is De Bedrieger?",
|
||
"rulesWhatIsBody": "Een sociaal deductiespel voor 3-20 spelers. Iedereen krijgt een geheim woord... behalve de bedrieger! Jouw missie: ontdek wie doet alsof.",
|
||
"rulesHowToPlayTitle": "🔍 Hoe speel je?",
|
||
"rulesHowToPlayBody": "1. Rollen worden verdeeld: iedereen krijgt hetzelfde woord, behalve de bedrieger(s).\n\n2. Debat: om de beurt beschrijft elke speler het woord ZONDER het direct te zeggen. De bedrieger moet doen alsof hij het kent.\n\n3. Stemming: na het debat stemt iedereen op wie volgens hen de bedrieger is.\n\n4. Eliminatie: de speler met de meeste stemmen wordt geëlimineerd en het wordt onthuld of het de bedrieger was of niet.\n\n5. Als het de bedrieger was, mag hij proberen het woord te raden. Als het klopt, winnen de bedriegers!",
|
||
"rulesWhoWinsTitle": "🏆 Wie wint?",
|
||
"rulesWhoWinsBody": "• Spelers: winnen als ze ALLE bedriegers elimineren.\n• Bedriegers: winnen als ze niet ontdekt worden totdat er evenveel of minder gewone spelers dan bedriegers over zijn, of als ze het woord raden na eliminatie.",
|
||
"rulesTipsPlayersTitle": "💡 Tips voor spelers",
|
||
"rulesTipsPlayersBody": "• Geef subtiele hints die laten zien dat je het woord kent, maar niet zo duidelijk dat de bedrieger ze kan gebruiken.\n• Let op wie vage of algemene antwoorden geeft.\n• Gebruik de notities om op te schrijven wat iedereen zegt.\n• Zeg het woord niet direct — dat helpt de bedrieger!",
|
||
"rulesTipsImpostorTitle": "🎭 Tips voor de bedrieger",
|
||
"rulesTipsImpostorBody": "• Luister goed naar de hints van anderen.\n• Probeer het woord af te leiden om geloofwaardige hints te geven.\n• Spreek niet als eerste als je niet zeker bent.\n• Als je de categorie als hint krijgt, gebruik die in je voordeel.\n• Beschuldig anderen om de aandacht af te leiden.",
|
||
"rulesModesTitle": "📱 Spelmodi",
|
||
"rulesModesBody": "• Eén toestel: iedereen deelt hetzelfde apparaat. Elke speler ziet zijn woord door een knop ingedrukt te houden.\n\n• Meerdere toestellen: elke speler gebruikt zijn eigen apparaat. Ze verbinden via Bluetooth/WiFi Direct zonder internet.",
|
||
"rulesExampleTitle": "✏️ Voorbeeldspel",
|
||
"rulesExampleBody": "Geheim woord: \"Pizza\"\n\n• Jan: \"Je eet het warm\" ✓\n• Sanne: \"Het komt in een doos\" ✓\n• Bram (bedrieger): \"Het is heel populair\" 🤔\n• Lisa: \"Het heeft kaas\" ✓\n\nBram gaf een heel vaag antwoord... Verdacht!",
|
||
"joinGameTitle": "Deelnemen aan spel",
|
||
"multiDeviceMode": "Modus meerdere toestellen",
|
||
"scanQrDescription": "Scan de QR-code die de host toont om verbinding te maken met het spel via Bluetooth/WiFi Direct.",
|
||
"comingSoon": "Binnenkort",
|
||
"nearbyNotAvailable": "De multitoestelverbinding met Nearby Connections vereist fysieke Android-apparaten.\n\nGebruik voorlopig de modus \"Eén toestel\" om op een gedeeld apparaat te spelen.",
|
||
"back": "Terug",
|
||
"yes": "Ja",
|
||
"no": "Nee",
|
||
"cancel": "Annuleren",
|
||
"accept": "Accepteren",
|
||
"next": "Volgende",
|
||
"settingsTitle": "Instellingen",
|
||
"language": "Taal",
|
||
"soundVolume": "Effectvolume",
|
||
"vibration": "Trillen",
|
||
"about": "Over",
|
||
"version": "Versie",
|
||
"developer": "Ontwikkelaar",
|
||
"licenses": "Licenties",
|
||
"scanThisCodeFromAnotherPhone": "Scan deze code met een andere telefoon",
|
||
"gameUsers": "Spelgebruikers",
|
||
"selectedPlayers": "Geselecteerde spelers",
|
||
"connectedPhones": "Verbonden telefoons",
|
||
"selectedOnThisPhone": "Geselecteerd op deze telefoon",
|
||
"selectedByAnotherDevice": "Geselecteerd op een ander apparaat",
|
||
"available": "Beschikbaar",
|
||
"notAvailable": "Niet beschikbaar",
|
||
"release": "Vrijgeven",
|
||
"select": "Selecteren",
|
||
"delete": "Verwijderen",
|
||
"selectAtLeastThreeUsersToStart": "Selecteer minstens 3 gebruikers om te starten.",
|
||
"hostPhoneMustSelectUser": "De host-telefoon moet minstens één gebruiker selecteren.",
|
||
"roomNoLongerInLobby": "De ruimte is niet meer in de lobby.",
|
||
"completeUserSelectionToStart": "Voltooi de gebruikersselectie om te starten.",
|
||
"preparingSecureRoom": "Beveiligde ruimte voorbereiden",
|
||
"searchingNearbyBluetoothGames": "Zoeken naar spellen in de buurt via Bluetooth",
|
||
"tapToJoin": "Tik om deel te nemen",
|
||
"bluetoothLocationPermissionsRequired": "Bluetooth- en locatietoestemming zijn nodig om spellen te zoeken.",
|
||
"bluetoothLocationPermissionsShort": "Bluetooth- en locatietoestemming zijn nodig",
|
||
"couldNotStartSearch": "Kon het zoeken niet starten. Controleer Bluetooth en locatie.",
|
||
"couldNotConnectToHost": "Kon geen verbinding maken met {host}",
|
||
"room": "Kamer",
|
||
"singleDeviceSubtitle": "Spel op dit toestel",
|
||
"singleDeviceDescription": "Ideaal om samen te spelen door de telefoon door te geven. Snel en direct ingesteld.",
|
||
"multiDeviceSubtitle": "Elke speler op zijn eigen telefoon",
|
||
"multiDeviceDescription": "Maak een premium ruimte, deel de QR-code en beheer gebruikers vanuit de lobby.",
|
||
"singleDeviceGameLabel": "Spel op dit toestel",
|
||
"multiDeviceGameLabel": "Spel met meerdere toestellen",
|
||
"mainDeviceUser": "Hoofdgebruiker van dit toestel",
|
||
"couldNotCreateRoom": "Kon de ruimte niet aanmaken. Controleer Bluetooth.",
|
||
"cannotStartWithReason": "Kan niet starten: {reason}",
|
||
"invalidRoom": "ongeldige ruimte",
|
||
"defaultPlayerName": "Speler",
|
||
"play": "Spelen",
|
||
"history": "Geschiedenis",
|
||
"mainTagline": "Vind de bedrieger voordat het te laat is",
|
||
"deviceProfile": "Apparaatprofiel",
|
||
"profileName": "Naam",
|
||
"profileNick": "Nickname",
|
||
"save": "Opslaan",
|
||
"automaticLanguage": "Automatisch",
|
||
"noSavedGames": "Er zijn nog geen opgeslagen spellen.",
|
||
"errorNoGame": "Fout: geen spel",
|
||
"disconnectedPlayersWarning": "Sommige spelers hebben een losgekoppeld apparaat.",
|
||
"assumeOnThisPhone": "Overnemen op deze mobiel",
|
||
"noResult": "Geen resultaat",
|
||
"historyGameSummary": "$players spelers • $impostors impostor(s) • $rounds ronde(s)\n$word • $category",
|
||
"@historyGameSummary": {
|
||
"placeholders": {
|
||
"players": {
|
||
"type": "int"
|
||
},
|
||
"impostors": {
|
||
"type": "int"
|
||
},
|
||
"rounds": {
|
||
"type": "int"
|
||
},
|
||
"word": {
|
||
"type": "String"
|
||
},
|
||
"category": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"voteOf": "Stem van {name}",
|
||
"@voteOf": {
|
||
"placeholders": {
|
||
"name": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"firstTurnInstruction": "{name} begint door het woord te zeggen.",
|
||
"@firstTurnInstruction": {
|
||
"placeholders": {
|
||
"name": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"debate": "🗣️ Discussie",
|
||
"scanToJoin": "Scan de QR-code om deel te nemen",
|
||
"connectedPlayers": "Verbonden spelers",
|
||
"hostGame": "Spelbeheer",
|
||
"waitingPlayersSeeWord": "Wachten tot iedereen zijn woord heeft gezien...",
|
||
"activePlayers": "Actieve spelers",
|
||
"playersVoted": "Hebben gestemd",
|
||
"waitingVoting": "Wachten op stemmen...",
|
||
"waitingForPlayers": "Wachten op spelers...",
|
||
"needMorePlayers": "Er zijn nog {count} spelers nodig",
|
||
"starting": "Starten...",
|
||
"enterNameAndScan": "Voer je naam in en scan de QR-code van de host",
|
||
"yourName": "Je naam",
|
||
"nameRequired": "Voer je naam in",
|
||
"connectingTo": "Verbinden met",
|
||
"scanQR": "QR-code scannen",
|
||
"scanHostQR": "Richt op de QR-code van de host",
|
||
"connectedWaiting": "Verbonden!",
|
||
"waitingForHost": "Wachten tot de host het spel start...",
|
||
"enterNameToSearch": "Voer je naam in om spellen in de buurt te zoeken",
|
||
"searchGames": "Spellen zoeken",
|
||
"searchingGames": "Zoeken naar spellen in de buurt...",
|
||
"noGamesFound": "Geen spellen gevonden",
|
||
"noGamesFoundHint": "Zorg dat de host de ruimte open heeft en dat jullie dichtbij zijn",
|
||
"orScanQR": "Zie je niets? Scan de QR-code van de host",
|
||
"iveSeenIt": "Ik heb het gezien",
|
||
"clueIs": "De hint is: {category}",
|
||
"debatePhaseActive": "Discussiefase bezig",
|
||
"debateInstructions": "Praat met elkaar en zeg wie jullie denken dat de bedrieger is. Vraag om een stemming als jullie klaar zijn.",
|
||
"solicitarVotacion": "Stemming aanvragen",
|
||
"votacionSolicitada": "Stemming aangevraagd",
|
||
"whoDoYouThinkIsTheImpostor": "Wie is de bedrieger?",
|
||
"selectOnePlayer": "Kies een speler om op te stemmen",
|
||
"votar": "Stemmen",
|
||
"selectYourProfile": "Je profiel",
|
||
"selectProfile": "Kies een profiel",
|
||
"createNewUser": "Nieuwe gebruiker aanmaken",
|
||
"userNameRequired": "De naam mag niet leeg zijn",
|
||
"profileSelected": "Profiel geselecteerd",
|
||
"availableProfiles": "Beschikbare profielen",
|
||
"impostorsKnowEachOther": "🎭 Bedriegers kennen elkaar",
|
||
"impostorsKnowEachOtherDescription": "Elke bedrieger ziet de namen van de anderen",
|
||
"impostorsKnowEachOtherNeedsTwo": "Geldt alleen bij 2 of meer bedriegers",
|
||
"otherImpostorsTitle": "{count, plural, =1{De andere bedrieger} other{De andere bedriegers}}",
|
||
"youAreTheOnlyImpostor": "Jij bent de enige bedrieger",
|
||
"impostorsAdjusted": "Bedriegers aangepast naar {count} op basis van het aantal spelers",
|
||
"eliminatedCannotVote": "Je bent uitgeschakeld – je stemt niet meer",
|
||
"reconnecting": "Opnieuw verbinden...",
|
||
"reconnectingHint": "Verbinding met de host verbroken. Je plek in het spel blijft behouden.",
|
||
"leaveGame": "Spel verlaten",
|
||
"playerRejoined": "{name} is terug in het spel",
|
||
"leaveGameTitle": "Het spel verlaten?",
|
||
"leaveGameSingleDevice": "Het lopende spel gaat verloren en kan niet worden hersteld.",
|
||
"leaveGameHost": "Jij bent de host: als je weggaat, eindigt het spel voor iedereen.",
|
||
"leaveGameClient": "Je verlaat het spel. Je kunt terugkomen zolang de host het openhoudt.",
|
||
"stayInGame": "Verder spelen",
|
||
"permissionsNeededTitle": "Toestemmingen nodig",
|
||
"permissionsNeededBody": "Voor de multiplayermodus hebben we nodig:",
|
||
"openAppSettingsQuestion": "De app-instellingen openen?",
|
||
"openSettings": "Instellingen openen",
|
||
"permissionLocation": "Locatie",
|
||
"permissionBluetoothAdvertise": "Bluetooth (zichtbaar maken)",
|
||
"permissionBluetoothConnect": "Bluetooth (verbinden)",
|
||
"permissionBluetoothScan": "Bluetooth (scannen)",
|
||
"permissionNearbyWifi": "Wi-Fi in de buurt"
|
||
}
|