Files
farolero/lib/l10n/app_ca.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
16 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"@@locale": "ca",
"appTitle": "L'Impostor",
"subtitle": "Joc de deducció social",
"loadingWords": "Carregant paraules...",
"matchRewards": "Recompenses de partida",
"newMedals": "Noves medalles",
"noNewMedalsKeepFire": "Sense medalles noves aquesta vegada. Continua acumulant foc.",
"calculatingRewards": "Calculant recompenses...",
"fireLabel": "Foc",
"playersRange": "3-20 jugadors • Sense internet",
"createGame": "Crear partida",
"joinGame": "Unir-se a partida",
"howToPlay": "Com jugar",
"settings": "Configuració",
"gameMode": "Mode de joc",
"singleDevice": "Un sol mòbil",
"multiDevice": "Multimòbil",
"category": "Categoria",
"categoryAll": "Totes",
"categoryAnimals": "Animals",
"categoryFood": "Menjar",
"categoryCountries": "Països",
"categorySports": "Esports",
"categoryProfessions": "Professions",
"categoryObjects": "Objectes",
"categoryPlaces": "Llocs",
"categoryMovies": "Pel·lícules",
"categoryMusic": "Música",
"categoryTechnology": "Tecnologia",
"playersCount": "Jugadors ({count})",
"@playersCount": {
"placeholders": {
"count": {
"type": "int"
}
}
},
"playersRangeHint": "3-20",
"playerNameHint": "Nom del jugador",
"playerAlreadyExists": "Ja existeix un jugador amb aquest nom",
"maxPlayersReached": "Màxim 20 jugadors",
"minPlayersRequired": "Calen almenys 3 jugadors",
"configuration": "Configuració",
"impostors": "🎭 Impostors",
"impostorClue": "🔍 Pista per a l'impostor",
"impostorClueDescription": "L'impostor coneix la categoria",
"debateTime": "⏱️ Temps de debat",
"noLimit": "Sense límit",
"oneMin": "1 min",
"twoMin": "2 min",
"threeMin": "3 min",
"fiveMin": "5 min",
"startGame": "Iniciar partida",
"seeYourWord": "Veure la teva paraula",
"eachPlayerMustSee": "Cada jugador ha de veure la seva paraula en secret",
"roundNumber": "Ronda {round}",
"@roundNumber": {
"placeholders": {
"round": {
"type": "int"
}
}
},
"alreadySeen": "Ja ha vist la seva paraula",
"tapToSee": "Toca per veure",
"allSeenStartDebate": "Tots han vist → Iniciar debat",
"playersRemaining": "Falten {count} jugadors",
"@playersRemaining": {
"placeholders": {
"count": {
"type": "int"
}
}
},
"youAreImpostor": "Ets l'impostor!",
"yourWordIs": "La teva paraula és:",
"clueCategory": "Pista: {category}",
"@clueCategory": {
"placeholders": {
"category": {
"type": "String"
}
}
},
"holdToSeeWord": "Mantén premut per veure la teva paraula",
"makeSureNoOneLooks": "Assegura't que ningú més mira",
"showingWord": "👁️ Mostrant...",
"holdToSee": "👆 Mantén premut per veure",
"seenMyWord": "He vist la meva paraula",
"debateRound": "Debat - Ronda {round}",
"@debateRound": {
"placeholders": {
"round": {
"type": "int"
}
}
},
"timeUp": "⏰ Temps esgotat!",
"timeRemaining": "⏱️ Temps restant",
"playersInDebate": "Jugadors en debat",
"activePlayersInfo": "{active} actius • {impostors} impostor(s) ocults",
"@activePlayersInfo": {
"placeholders": {
"active": {
"type": "int"
},
"impostors": {
"type": "int"
}
}
},
"eliminated": "Eliminat",
"notes": "Notes",
"goToVoting": "Anar a votació",
"voting": "🗳️ Votació",
"turnToVote": "Torn de votar:",
"votesProgress": "Vots: {current}/{total}",
"@votesProgress": {
"placeholders": {
"current": {
"type": "int"
},
"total": {
"type": "int"
}
}
},
"whoIsImpostor": "Qui creus que és l'impostor?",
"confirmVote": "Confirmar vot",
"votingComplete": "🗳️ Votació completa",
"allVoted": "Tots han votat!",
"tapToReveal": "Toca per revelar el resultat",
"revealResult": "Revelar resultat",
"result": "Resultat",
"revealing": "Revelant...",
"wasImpostor": "Era IMPOSTOR! 🎉",
"wasInnocent": "Era INNOCENT 😱",
"votesThisRound": "Vots d'aquesta ronda",
"seeEndResult": "Veure resultat final",
"impostorGuessWord": "L'impostor endevina la paraula?",
"nextRound": "Següent ronda",
"impostorGuessTitle": "🎯 Endevinalla de l'impostor",
"impostorCanGuess": "L'impostor eliminat pot\nintentar endevinar la paraula",
"ifCorrectImpostorsWin": "Si encerta, els impostors guanyen!",
"guessWordHint": "Quina creus que és la paraula?",
"dontGuess": "No intentar",
"guess": "Endevinar",
"correctGuess": "Ha encertat!",
"theWordWas": "La paraula era: {word}",
"@theWordWas": {
"placeholders": {
"word": {
"type": "String"
}
}
},
"impostorsWin": "Els impostors guanyen!",
"wrongGuess": "No ha encertat!",
"gameContinues": "La partida continua...",
"gameOver": "Fi de partida",
"playersWin": "Els jugadors guanyen!",
"theSecretWordWas": "🔍 La paraula era:",
"categoryLabel": "Categoria: {category}",
"@categoryLabel": {
"placeholders": {
"category": {
"type": "String"
}
}
},
"theImpostorWas": "🎭 L'impostor era:",
"theImpostorsWere": "🎭 Els impostors eren:",
"votingHistory": "📊 Historial de votacions",
"roundElimination": "Ronda {round}: {name}",
"@roundElimination": {
"placeholders": {
"round": {
"type": "int"
},
"name": {
"type": "String"
}
}
},
"rematch": "Revenja",
"mainMenu": "Menú principal",
"notesTitle": "📝 Notes",
"notesSaved": "Notes desades",
"whoAreYou": "Qui ets?",
"selectYourName": "Selecciona el teu nom per veure les teves notes privades",
"notesOf": "Notes de {name}",
"@notesOf": {
"placeholders": {
"name": {
"type": "String"
}
}
},
"notesAboutPlayers": "Apunts sobre cada jugador",
"playerNoteHint": "Què ha dit? Sospitós?",
"freeNote": "Nota lliure",
"freeNoteHint": "Apunts personals...",
"rulesTitle": "📖 Com jugar",
"rulesWhatIsTitle": "🎭 Què és L'Impostor?",
"rulesWhatIsBody": "Un joc de deducció social per a 3-20 jugadors. Tots reben una paraula secreta... excepte l'impostor! La teva missió: descobrir qui fingeix.",
"rulesHowToPlayTitle": "🔍 Com es juga?",
"rulesHowToPlayBody": "1. Es reparteixen els rols: tots reben la mateixa paraula, excepte l'impostor/els impostors.\n\n2. Debat: per torns, cada jugador descriu la paraula SENSE dir-la directament. L'impostor ha de fingir que la coneix.\n\n3. Votació: en acabar el debat, tots voten qui creuen que és l'impostor.\n\n4. Eliminació: el més votat queda eliminat i es revela si era impostor o no.\n\n5. Si era impostor, pot intentar endevinar la paraula. Si encerta, els impostors guanyen!",
"rulesWhoWinsTitle": "🏆 Qui guanya?",
"rulesWhoWinsBody": "• Jugadors: guanyen si eliminen TOTS els impostors.\n• Impostors: guanyen si no són descoberts fins que quedin igual o menys jugadors normals que impostors, o si endevinen la paraula en ser eliminats.",
"rulesTipsPlayersTitle": "💡 Consells per als jugadors",
"rulesTipsPlayersBody": "• Dona pistes subtils que demostrin que coneixes la paraula, però no tan evidents que l'impostor les pugui fer servir.\n• Observa qui dona respostes vagues o genèriques.\n• Fes servir les notes per apuntar el que diu cadascú.\n• No diguis la paraula directament, això ajuda l'impostor!",
"rulesTipsImpostorTitle": "🎭 Consells per a l'impostor",
"rulesTipsImpostorBody": "• Escolta atentament les pistes dels altres.\n• Intenta deduir la paraula per donar pistes creïbles.\n• No siguis el primer a parlar si no n'estàs segur.\n• Si et donen la categoria com a pista, aprofita-la.\n• Acusa els altres per desviar l'atenció.",
"rulesModesTitle": "📱 Modes de joc",
"rulesModesBody": "• Un sol mòbil: tots comparteixen el dispositiu. Cada jugador veu la seva paraula prement i mantenint un botó.\n\n• Multimòbil: cada jugador fa servir el seu propi dispositiu. Es connecten per Bluetooth/WiFi Direct sense necessitat d'internet.",
"rulesExampleTitle": "✏️ Exemple de partida",
"rulesExampleBody": "Paraula secreta: \"Pizza\"\n\n• Laia: \"Es menja calenta\" ✓\n• Jordi: \"Ve en una capsa\" ✓\n• Marta (impostor): \"És molt popular\" 🤔\n• Pau: \"Té formatge\" ✓\n\nLa Marta va donar una resposta molt genèrica... Sospitosa!",
"joinGameTitle": "Unir-se a partida",
"multiDeviceMode": "Mode multimòbil",
"scanQrDescription": "Escaneja el codi QR que mostra l'amfitrió per connectar-te a la partida via Bluetooth/WiFi Direct.",
"comingSoon": "Properament",
"nearbyNotAvailable": "La connexió multimòbil amb Nearby Connections requereix dispositius Android físics.\n\nDe moment, fes servir el mode \"Un sol mòbil\" per jugar en un dispositiu compartit.",
"back": "Tornar",
"yes": "Sí",
"no": "No",
"cancel": "Cancel·lar",
"accept": "Acceptar",
"next": "Següent",
"settingsTitle": "Configuració",
"language": "Idioma",
"soundVolume": "Volum d'efectes",
"vibration": "Vibració",
"about": "Quant a",
"version": "Versió",
"developer": "Desenvolupador",
"licenses": "Llicències",
"scanThisCodeFromAnotherPhone": "Escaneja aquest codi des dun altre mòbil",
"gameUsers": "Usuaris de la partida",
"selectedPlayers": "Jugadors seleccionats",
"connectedPhones": "Mòbils connectats",
"selectedOnThisPhone": "Seleccionat en aquest mòbil",
"selectedByAnotherDevice": "Seleccionat en un altre dispositiu",
"available": "Disponible",
"notAvailable": "No disponible",
"release": "Allibera",
"select": "Selecciona",
"delete": "Elimina",
"selectAtLeastThreeUsersToStart": "Selecciona almenys 3 usuaris per començar.",
"hostPhoneMustSelectUser": "El mòbil servidor ha de seleccionar almenys un usuari.",
"roomNoLongerInLobby": "La sala ja no és al lobby.",
"completeUserSelectionToStart": "Completa la selecció dusuaris per començar.",
"preparingSecureRoom": "Preparant la sala segura",
"searchingNearbyBluetoothGames": "Cercant partides properes per Bluetooth",
"tapToJoin": "Toca per unir-thi",
"bluetoothLocationPermissionsRequired": "Calen permisos de Bluetooth i ubicació per cercar partides.",
"bluetoothLocationPermissionsShort": "Calen permisos de Bluetooth i ubicació",
"couldNotStartSearch": "No sha pogut iniciar la cerca. Verifica el Bluetooth i la ubicació.",
"couldNotConnectToHost": "No sha pogut connectar a {host}",
"room": "Sala",
"singleDeviceSubtitle": "Partida en aquest dispositiu",
"singleDeviceDescription": "Ideal per jugar tots junts passant el mòbil. Configuració ràpida i directa.",
"multiDeviceSubtitle": "Cada jugador al seu mòbil",
"multiDeviceDescription": "Crea una sala premium, comparteix el QR i gestiona usuaris des del lobby.",
"singleDeviceGameLabel": "Partida en aquest dispositiu",
"multiDeviceGameLabel": "Partida multidispositiu",
"mainDeviceUser": "Usuari principal del dispositiu",
"couldNotCreateRoom": "No sha pogut crear la sala. Verifica el Bluetooth.",
"cannotStartWithReason": "No es pot iniciar: {reason}",
"invalidRoom": "sala invàlida",
"defaultPlayerName": "Jugador",
"play": "Jugar",
"history": "Historial",
"mainTagline": "Descobreix limpostor abans que siga massa tard",
"deviceProfile": "Perfil del dispositiu",
"profileName": "Nom",
"profileNick": "Àlies",
"save": "Desa",
"automaticLanguage": "Automàtic",
"noSavedGames": "Encara no hi ha partides desades.",
"errorNoGame": "Error: no hi ha partida",
"disconnectedPlayersWarning": "Hi ha jugadors amb el dispositiu desconnectat.",
"assumeOnThisPhone": "Assumir en aquest mòbil",
"noResult": "Sense resultat",
"historyGameSummary": "$players jugadors • $impostors impostor(s) • $rounds ronda(es)\n$word • $category",
"@historyGameSummary": {
"placeholders": {
"players": {
"type": "int"
},
"impostors": {
"type": "int"
},
"rounds": {
"type": "int"
},
"word": {
"type": "String"
},
"category": {
"type": "String"
}
}
},
"voteOf": "Vot de {name}",
"@voteOf": {
"placeholders": {
"name": {
"type": "String"
}
}
},
"firstTurnInstruction": "Comença {name} dient la seva paraula.",
"@firstTurnInstruction": {
"placeholders": {
"name": {
"type": "String"
}
}
},
"debate": "🗣️ Debat",
"scanToJoin": "Escaneja el QR per unir-te",
"connectedPlayers": "Jugadors connectats",
"hostGame": "Gestor de partida",
"waitingPlayersSeeWord": "Esperant que tothom vegi la seva paraula...",
"activePlayers": "Jugadors actius",
"playersVoted": "Han votat",
"waitingVoting": "Esperant els vots...",
"waitingForPlayers": "Esperant jugadors...",
"needMorePlayers": "Falten {count} jugadors més",
"starting": "Iniciant...",
"enterNameAndScan": "Escriu el teu nom i escaneja el QR de l'amfitrió",
"yourName": "El teu nom",
"nameRequired": "Escriu el teu nom",
"connectingTo": "Connectant a",
"scanQR": "Escanejar QR",
"scanHostQR": "Apunta al QR de l'amfitrió",
"connectedWaiting": "Connectat!",
"waitingForHost": "Esperant que l'amfitrió iniciï la partida...",
"enterNameToSearch": "Escriu el teu nom per buscar partides properes",
"searchGames": "Buscar partides",
"searchingGames": "Buscant partides properes...",
"noGamesFound": "No s'han trobat partides",
"noGamesFoundHint": "Assegura't que l'amfitrió té la sala oberta i que sou a prop",
"orScanQR": "No apareix? Escaneja el QR de l'amfitrió",
"iveSeenIt": "Ja l'he vista",
"clueIs": "La pista és: {category}",
"debatePhaseActive": "Fase de debat activa",
"debateInstructions": "Parleu entre vosaltres i digueu qui creieu que és l'impostor. Quan estigueu llestos, demaneu la votació.",
"solicitarVotacion": "Demanar votació",
"votacionSolicitada": "Votació demanada",
"whoDoYouThinkIsTheImpostor": "Qui és l'impostor?",
"selectOnePlayer": "Selecciona un jugador per votar",
"votar": "Votar",
"selectYourProfile": "El teu perfil",
"selectProfile": "Selecciona un perfil",
"createNewUser": "Crear nou usuari",
"userNameRequired": "El nom no pot estar buit",
"profileSelected": "Perfil seleccionat",
"availableProfiles": "Perfils disponibles",
"impostorsKnowEachOther": "🎭 Els impostors es coneixen",
"impostorsKnowEachOtherDescription": "Cada impostor veurà els noms de la resta",
"impostorsKnowEachOtherNeedsTwo": "Només s'aplica amb 2 o més impostors",
"otherImpostorsTitle": "{count, plural, =1{L'altre impostor} other{Els altres impostors}}",
"youAreTheOnlyImpostor": "Ets l'únic impostor",
"impostorsAdjusted": "Impostors ajustats a {count} pel nombre de jugadors",
"eliminatedCannotVote": "Estàs eliminat: ja no votes",
"reconnecting": "Reconnectant...",
"reconnectingHint": "S'ha perdut la connexió amb l'amfitrió. El teu lloc a la partida es manté.",
"leaveGame": "Sortir de la partida",
"playerRejoined": "{name} ha tornat a la partida",
"leaveGameTitle": "Vols sortir de la partida?",
"leaveGameSingleDevice": "Es perdrà la partida en curs i no la podràs recuperar.",
"leaveGameHost": "Ets l'amfitrió: si surts, la partida s'acaba per a tots els jugadors.",
"leaveGameClient": "Sortiràs de la partida. Hi podràs tornar mentre l'amfitrió la mantingui oberta.",
"stayInGame": "Continuar jugant",
"permissionsNeededTitle": "Permisos necessaris",
"permissionsNeededBody": "Per al mode multijugador necessitem:",
"openAppSettingsQuestion": "Vols obrir la configuració de l'aplicació?",
"openSettings": "Obrir configuració",
"permissionLocation": "Ubicació",
"permissionBluetoothAdvertise": "Bluetooth (anunciar)",
"permissionBluetoothConnect": "Bluetooth (connectar)",
"permissionBluetoothScan": "Bluetooth (escanejar)",
"permissionNearbyWifi": "Wi-Fi proper"
}