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": "pl",
|
||
"appTitle": "Oszust",
|
||
"subtitle": "Gra dedukcji społecznej",
|
||
"loadingWords": "Ładowanie słów...",
|
||
"matchRewards": "Nagrody za grę",
|
||
"newMedals": "Nowe medale",
|
||
"noNewMedalsKeepFire": "Tym razem bez nowych medali. Podtrzymuj swój ogień.",
|
||
"calculatingRewards": "Obliczanie nagród...",
|
||
"fireLabel": "Ogień",
|
||
"playersRange": "3-20 graczy • Bez internetu",
|
||
"createGame": "Utwórz grę",
|
||
"joinGame": "Dołącz do gry",
|
||
"howToPlay": "Jak grać",
|
||
"settings": "Ustawienia",
|
||
"gameMode": "Tryb gry",
|
||
"singleDevice": "Jedno urządzenie",
|
||
"multiDevice": "Wiele urządzeń",
|
||
"category": "Kategoria",
|
||
"categoryAll": "Wszystkie",
|
||
"categoryAnimals": "Zwierzęta",
|
||
"categoryFood": "Jedzenie",
|
||
"categoryCountries": "Kraje",
|
||
"categorySports": "Sport",
|
||
"categoryProfessions": "Zawody",
|
||
"categoryObjects": "Przedmioty",
|
||
"categoryPlaces": "Miejsca",
|
||
"categoryMovies": "Filmy",
|
||
"categoryMusic": "Muzyka",
|
||
"categoryTechnology": "Technologia",
|
||
"playersCount": "Gracze ({count})",
|
||
"@playersCount": {
|
||
"placeholders": {
|
||
"count": {
|
||
"type": "int"
|
||
}
|
||
}
|
||
},
|
||
"playersRangeHint": "3-20",
|
||
"playerNameHint": "Imię gracza",
|
||
"playerAlreadyExists": "Gracz o takim imieniu już istnieje",
|
||
"maxPlayersReached": "Maksymalnie 20 graczy",
|
||
"minPlayersRequired": "Potrzeba co najmniej 3 graczy",
|
||
"configuration": "Konfiguracja",
|
||
"impostors": "🎭 Oszuści",
|
||
"impostorClue": "🔍 Wskazówka dla oszusta",
|
||
"impostorClueDescription": "Oszust zna kategorię",
|
||
"debateTime": "⏱️ Czas debaty",
|
||
"noLimit": "Bez limitu",
|
||
"oneMin": "1 min",
|
||
"twoMin": "2 min",
|
||
"threeMin": "3 min",
|
||
"fiveMin": "5 min",
|
||
"startGame": "Rozpocznij grę",
|
||
"seeYourWord": "Zobacz swoje słowo",
|
||
"eachPlayerMustSee": "Każdy gracz musi zobaczyć swoje słowo w tajemnicy",
|
||
"roundNumber": "Runda {round}",
|
||
"@roundNumber": {
|
||
"placeholders": {
|
||
"round": {
|
||
"type": "int"
|
||
}
|
||
}
|
||
},
|
||
"alreadySeen": "Już widział swoje słowo",
|
||
"tapToSee": "Dotknij, aby zobaczyć",
|
||
"allSeenStartDebate": "Wszyscy widzieli → Rozpocznij debatę",
|
||
"playersRemaining": "Pozostało {count} graczy",
|
||
"@playersRemaining": {
|
||
"placeholders": {
|
||
"count": {
|
||
"type": "int"
|
||
}
|
||
}
|
||
},
|
||
"youAreImpostor": "Jesteś oszustem!",
|
||
"yourWordIs": "Twoje słowo to:",
|
||
"clueCategory": "Wskazówka: {category}",
|
||
"@clueCategory": {
|
||
"placeholders": {
|
||
"category": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"holdToSeeWord": "Przytrzymaj, aby zobaczyć swoje słowo",
|
||
"makeSureNoOneLooks": "Upewnij się, że nikt inny nie patrzy",
|
||
"showingWord": "👁️ Pokazuję...",
|
||
"holdToSee": "👆 Przytrzymaj, aby zobaczyć",
|
||
"seenMyWord": "Widziałem swoje słowo",
|
||
"debateRound": "Debata - Runda {round}",
|
||
"@debateRound": {
|
||
"placeholders": {
|
||
"round": {
|
||
"type": "int"
|
||
}
|
||
}
|
||
},
|
||
"timeUp": "⏰ Czas minął!",
|
||
"timeRemaining": "⏱️ Pozostały czas",
|
||
"playersInDebate": "Gracze w debacie",
|
||
"activePlayersInfo": "{active} aktywnych • {impostors} ukrytych oszustów",
|
||
"@activePlayersInfo": {
|
||
"placeholders": {
|
||
"active": {
|
||
"type": "int"
|
||
},
|
||
"impostors": {
|
||
"type": "int"
|
||
}
|
||
}
|
||
},
|
||
"eliminated": "Wyeliminowany",
|
||
"notes": "Notatki",
|
||
"goToVoting": "Przejdź do głosowania",
|
||
"voting": "🗳️ Głosowanie",
|
||
"turnToVote": "Kolej na głosowanie:",
|
||
"votesProgress": "Głosy: {current}/{total}",
|
||
"@votesProgress": {
|
||
"placeholders": {
|
||
"current": {
|
||
"type": "int"
|
||
},
|
||
"total": {
|
||
"type": "int"
|
||
}
|
||
}
|
||
},
|
||
"whoIsImpostor": "Kto twoim zdaniem jest oszustem?",
|
||
"confirmVote": "Potwierdź głos",
|
||
"votingComplete": "🗳️ Głosowanie zakończone",
|
||
"allVoted": "Wszyscy zagłosowali!",
|
||
"tapToReveal": "Dotknij, aby odkryć wynik",
|
||
"revealResult": "Odkryj wynik",
|
||
"result": "Wynik",
|
||
"revealing": "Odkrywam...",
|
||
"wasImpostor": "To był OSZUST! 🎉",
|
||
"wasInnocent": "Był NIEWINNY 😱",
|
||
"votesThisRound": "Głosy w tej rundzie",
|
||
"seeEndResult": "Zobacz wynik końcowy",
|
||
"impostorGuessWord": "Czy oszust odgadnie słowo?",
|
||
"nextRound": "Następna runda",
|
||
"impostorGuessTitle": "🎯 Zgadywanie oszusta",
|
||
"impostorCanGuess": "Wyeliminowany oszust może\nspróbować odgadnąć słowo",
|
||
"ifCorrectImpostorsWin": "Jeśli trafi, oszuści wygrywają!",
|
||
"guessWordHint": "Jakie twoim zdaniem jest to słowo?",
|
||
"dontGuess": "Nie próbuj",
|
||
"guess": "Zgaduj",
|
||
"correctGuess": "Trafił!",
|
||
"theWordWas": "Słowo brzmiało: {word}",
|
||
"@theWordWas": {
|
||
"placeholders": {
|
||
"word": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"impostorsWin": "Oszuści wygrywają!",
|
||
"wrongGuess": "Nie trafił!",
|
||
"gameContinues": "Gra toczy się dalej...",
|
||
"gameOver": "Koniec gry",
|
||
"playersWin": "Gracze wygrywają!",
|
||
"theSecretWordWas": "🔍 Słowo brzmiało:",
|
||
"categoryLabel": "Kategoria: {category}",
|
||
"@categoryLabel": {
|
||
"placeholders": {
|
||
"category": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"theImpostorWas": "🎭 Oszustem był:",
|
||
"theImpostorsWere": "🎭 Oszustami byli:",
|
||
"votingHistory": "📊 Historia głosowań",
|
||
"roundElimination": "Runda {round}: {name}",
|
||
"@roundElimination": {
|
||
"placeholders": {
|
||
"round": {
|
||
"type": "int"
|
||
},
|
||
"name": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"rematch": "Rewanż",
|
||
"mainMenu": "Menu główne",
|
||
"notesTitle": "📝 Notatki",
|
||
"notesSaved": "Notatki zapisane",
|
||
"whoAreYou": "Kim jesteś?",
|
||
"selectYourName": "Wybierz swoje imię, aby zobaczyć prywatne notatki",
|
||
"notesOf": "Notatki gracza {name}",
|
||
"@notesOf": {
|
||
"placeholders": {
|
||
"name": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"notesAboutPlayers": "Zapiski o każdym graczu",
|
||
"playerNoteHint": "Co powiedział? Podejrzany?",
|
||
"freeNote": "Wolna notatka",
|
||
"freeNoteHint": "Osobiste zapiski...",
|
||
"rulesTitle": "📖 Jak grać",
|
||
"rulesWhatIsTitle": "🎭 Czym jest Oszust?",
|
||
"rulesWhatIsBody": "Gra dedukcji społecznej dla 3-20 graczy. Wszyscy otrzymują tajne słowo... oprócz oszusta! Twoja misja: odkryj, kto udaje.",
|
||
"rulesHowToPlayTitle": "🔍 Jak się gra?",
|
||
"rulesHowToPlayBody": "1. Rozdanie ról: wszyscy otrzymują to samo słowo, oprócz oszusta/oszustów.\n\n2. Debata: po kolei każdy gracz opisuje słowo BEZ wypowiadania go wprost. Oszust musi udawać, że je zna.\n\n3. Głosowanie: po zakończeniu debaty wszyscy głosują na osobę, którą uważają za oszusta.\n\n4. Eliminacja: gracz z największą liczbą głosów zostaje wyeliminowany i ujawnia się, czy był oszustem.\n\n5. Jeśli to był oszust, może spróbować odgadnąć słowo. Jeśli trafi, oszuści wygrywają!",
|
||
"rulesWhoWinsTitle": "🏆 Kto wygrywa?",
|
||
"rulesWhoWinsBody": "• Gracze: wygrywają, jeśli wyeliminują WSZYSTKICH oszustów.\n• Oszuści: wygrywają, jeśli nie zostaną odkryci, dopóki zwykłych graczy nie będzie tyle samo lub mniej niż oszustów, albo jeśli odgadną słowo po eliminacji.",
|
||
"rulesTipsPlayersTitle": "💡 Wskazówki dla graczy",
|
||
"rulesTipsPlayersBody": "• Dawaj subtelne wskazówki, które pokażą, że znasz słowo, ale nie na tyle oczywiste, by oszust mógł je wykorzystać.\n• Obserwuj, kto daje niejasne lub ogólnikowe odpowiedzi.\n• Używaj notatek, by zapisywać, co mówi każdy gracz.\n• Nie mów słowa wprost — to pomaga oszustowi!",
|
||
"rulesTipsImpostorTitle": "🎭 Wskazówki dla oszusta",
|
||
"rulesTipsImpostorBody": "• Uważnie słuchaj wskazówek innych.\n• Spróbuj wydedukować słowo, by dawać wiarygodne wskazówki.\n• Nie mów pierwszy, jeśli nie jesteś pewien.\n• Jeśli dostaniesz kategorię jako wskazówkę, wykorzystaj ją.\n• Oskarżaj innych, by odwrócić uwagę.",
|
||
"rulesModesTitle": "📱 Tryby gry",
|
||
"rulesModesBody": "• Jedno urządzenie: wszyscy dzielą jedno urządzenie. Każdy gracz widzi swoje słowo, przytrzymując przycisk.\n\n• Wiele urządzeń: każdy gracz używa własnego urządzenia. Łączą się przez Bluetooth/WiFi Direct bez potrzeby internetu.",
|
||
"rulesExampleTitle": "✏️ Przykładowa gra",
|
||
"rulesExampleBody": "Tajne słowo: \"Pizza\"\n\n• Kasia: \"Je się na ciepło\" ✓\n• Tomek: \"Przychodzi w pudełku\" ✓\n• Ola (oszust): \"Jest bardzo popularna\" 🤔\n• Marek: \"Ma ser\" ✓\n\nOla dała bardzo ogólnikową odpowiedź... Podejrzana!",
|
||
"joinGameTitle": "Dołącz do gry",
|
||
"multiDeviceMode": "Tryb wielu urządzeń",
|
||
"scanQrDescription": "Zeskanuj kod QR wyświetlany przez hosta, aby połączyć się z grą przez Bluetooth/WiFi Direct.",
|
||
"comingSoon": "Wkrótce",
|
||
"nearbyNotAvailable": "Połączenie wielourządzeniowe z Nearby Connections wymaga fizycznych urządzeń z Androidem.\n\nNa razie użyj trybu \"Jedno urządzenie\", aby grać na wspólnym urządzeniu.",
|
||
"back": "Wstecz",
|
||
"yes": "Tak",
|
||
"no": "Nie",
|
||
"cancel": "Anuluj",
|
||
"accept": "Akceptuj",
|
||
"next": "Dalej",
|
||
"settingsTitle": "Ustawienia",
|
||
"language": "Język",
|
||
"soundVolume": "Głośność efektów",
|
||
"vibration": "Wibracje",
|
||
"about": "O aplikacji",
|
||
"version": "Wersja",
|
||
"developer": "Programista",
|
||
"licenses": "Licencje",
|
||
"scanThisCodeFromAnotherPhone": "Zeskanuj ten kod innym telefonem",
|
||
"gameUsers": "Użytkownicy gry",
|
||
"selectedPlayers": "Wybrani gracze",
|
||
"connectedPhones": "Połączone telefony",
|
||
"selectedOnThisPhone": "Wybrano na tym telefonie",
|
||
"selectedByAnotherDevice": "Wybrano na innym urządzeniu",
|
||
"available": "Dostępny",
|
||
"notAvailable": "Niedostępny",
|
||
"release": "Zwolnij",
|
||
"select": "Wybierz",
|
||
"delete": "Usuń",
|
||
"selectAtLeastThreeUsersToStart": "Wybierz co najmniej 3 użytkowników, aby rozpocząć.",
|
||
"hostPhoneMustSelectUser": "Telefon gospodarza musi wybrać przynajmniej jednego użytkownika.",
|
||
"roomNoLongerInLobby": "Pokój nie jest już w poczekalni.",
|
||
"completeUserSelectionToStart": "Dokończ wybór użytkowników, aby rozpocząć.",
|
||
"preparingSecureRoom": "Przygotowywanie bezpiecznego pokoju",
|
||
"searchingNearbyBluetoothGames": "Szukanie gier w pobliżu przez Bluetooth",
|
||
"tapToJoin": "Dotknij, aby dołączyć",
|
||
"bluetoothLocationPermissionsRequired": "Do wyszukiwania gier potrzebne są uprawnienia Bluetooth i lokalizacji.",
|
||
"bluetoothLocationPermissionsShort": "Potrzebne są uprawnienia Bluetooth i lokalizacji",
|
||
"couldNotStartSearch": "Nie udało się rozpocząć wyszukiwania. Sprawdź Bluetooth i lokalizację.",
|
||
"couldNotConnectToHost": "Nie udało się połączyć z {host}",
|
||
"room": "Pokój",
|
||
"singleDeviceSubtitle": "Gra na tym urządzeniu",
|
||
"singleDeviceDescription": "Idealne do wspólnej gry, podając telefon dalej. Szybka i prosta konfiguracja.",
|
||
"multiDeviceSubtitle": "Każdy gracz na swoim telefonie",
|
||
"multiDeviceDescription": "Utwórz pokój premium, udostępnij kod QR i zarządzaj graczami z poczekalni.",
|
||
"singleDeviceGameLabel": "Gra na tym urządzeniu",
|
||
"multiDeviceGameLabel": "Gra na wielu urządzeniach",
|
||
"mainDeviceUser": "Główny użytkownik urządzenia",
|
||
"couldNotCreateRoom": "Nie udało się utworzyć pokoju. Sprawdź Bluetooth.",
|
||
"cannotStartWithReason": "Nie można rozpocząć: {reason}",
|
||
"invalidRoom": "nieprawidłowy pokój",
|
||
"defaultPlayerName": "Gracz",
|
||
"play": "Graj",
|
||
"history": "Historia",
|
||
"mainTagline": "Znajdź oszusta, zanim będzie za późno",
|
||
"deviceProfile": "Profil urządzenia",
|
||
"profileName": "Nazwa",
|
||
"profileNick": "Nick",
|
||
"save": "Zapisz",
|
||
"automaticLanguage": "Automatycznie",
|
||
"noSavedGames": "Nie ma jeszcze zapisanych gier.",
|
||
"errorNoGame": "Błąd: brak gry",
|
||
"disconnectedPlayersWarning": "Niektórzy gracze mają rozłączone urządzenie.",
|
||
"assumeOnThisPhone": "Przejmij na tym telefonie",
|
||
"noResult": "Brak wyniku",
|
||
"historyGameSummary": "$players graczy • $impostors impostor(ów) • $rounds rund\n$word • $category",
|
||
"@historyGameSummary": {
|
||
"placeholders": {
|
||
"players": {
|
||
"type": "int"
|
||
},
|
||
"impostors": {
|
||
"type": "int"
|
||
},
|
||
"rounds": {
|
||
"type": "int"
|
||
},
|
||
"word": {
|
||
"type": "String"
|
||
},
|
||
"category": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"voteOf": "Głos gracza {name}",
|
||
"@voteOf": {
|
||
"placeholders": {
|
||
"name": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"firstTurnInstruction": "{name} zaczyna, mówiąc swoje słowo.",
|
||
"@firstTurnInstruction": {
|
||
"placeholders": {
|
||
"name": {
|
||
"type": "String"
|
||
}
|
||
}
|
||
},
|
||
"debate": "🗣️ Dyskusja",
|
||
"scanToJoin": "Zeskanuj kod QR, aby dołączyć",
|
||
"connectedPlayers": "Połączeni gracze",
|
||
"hostGame": "Zarządzanie grą",
|
||
"waitingPlayersSeeWord": "Czekamy, aż wszyscy zobaczą swoje słowo...",
|
||
"activePlayers": "Aktywni gracze",
|
||
"playersVoted": "Zagłosowali",
|
||
"waitingVoting": "Czekamy na głosy...",
|
||
"waitingForPlayers": "Czekamy na graczy...",
|
||
"needMorePlayers": "Brakuje jeszcze {count} graczy",
|
||
"starting": "Uruchamianie...",
|
||
"enterNameAndScan": "Wpisz swoje imię i zeskanuj kod QR gospodarza",
|
||
"yourName": "Twoje imię",
|
||
"nameRequired": "Wpisz swoje imię",
|
||
"connectingTo": "Łączenie z",
|
||
"scanQR": "Zeskanuj kod QR",
|
||
"scanHostQR": "Wyceluj w kod QR gospodarza",
|
||
"connectedWaiting": "Połączono!",
|
||
"waitingForHost": "Czekamy, aż gospodarz rozpocznie grę...",
|
||
"enterNameToSearch": "Wpisz swoje imię, aby znaleźć gry w pobliżu",
|
||
"searchGames": "Szukaj gier",
|
||
"searchingGames": "Szukanie gier w pobliżu...",
|
||
"noGamesFound": "Nie znaleziono gier",
|
||
"noGamesFoundHint": "Upewnij się, że gospodarz ma otwarty pokój i jesteście blisko siebie",
|
||
"orScanQR": "Nie widzisz gry? Zeskanuj kod QR gospodarza",
|
||
"iveSeenIt": "Już zobaczyłem",
|
||
"clueIs": "Wskazówka: {category}",
|
||
"debatePhaseActive": "Trwa faza dyskusji",
|
||
"debateInstructions": "Porozmawiajcie ze sobą i powiedzcie, kto waszym zdaniem jest oszustem. Gdy będziecie gotowi, poproście o głosowanie.",
|
||
"solicitarVotacion": "Poproś o głosowanie",
|
||
"votacionSolicitada": "Poproszono o głosowanie",
|
||
"whoDoYouThinkIsTheImpostor": "Kto jest oszustem?",
|
||
"selectOnePlayer": "Wybierz gracza, na którego głosujesz",
|
||
"votar": "Głosuj",
|
||
"selectYourProfile": "Twój profil",
|
||
"selectProfile": "Wybierz profil",
|
||
"createNewUser": "Utwórz nowego użytkownika",
|
||
"userNameRequired": "Imię nie może być puste",
|
||
"profileSelected": "Wybrano profil",
|
||
"availableProfiles": "Dostępne profile",
|
||
"impostorsKnowEachOther": "🎭 Oszuści znają się nawzajem",
|
||
"impostorsKnowEachOtherDescription": "Każdy oszust zobaczy imiona pozostałych",
|
||
"impostorsKnowEachOtherNeedsTwo": "Działa tylko przy 2 lub więcej oszustach",
|
||
"otherImpostorsTitle": "{count, plural, =1{Drugi oszust} other{Pozostali oszuści}}",
|
||
"youAreTheOnlyImpostor": "Jesteś jedynym oszustem",
|
||
"impostorsAdjusted": "Liczba oszustów dostosowana do {count} z powodu liczby graczy",
|
||
"eliminatedCannotVote": "Jesteś wyeliminowany – już nie głosujesz",
|
||
"reconnecting": "Ponowne łączenie...",
|
||
"reconnectingHint": "Utracono połączenie z gospodarzem. Twoje miejsce w grze jest zachowane.",
|
||
"leaveGame": "Opuść grę",
|
||
"playerRejoined": "{name} wrócił(a) do gry",
|
||
"leaveGameTitle": "Opuścić grę?",
|
||
"leaveGameSingleDevice": "Trwająca gra zostanie utracona i nie da się jej odzyskać.",
|
||
"leaveGameHost": "Jesteś gospodarzem: jeśli wyjdziesz, gra kończy się dla wszystkich.",
|
||
"leaveGameClient": "Opuścisz grę. Możesz wrócić, dopóki gospodarz jej nie zamknie.",
|
||
"stayInGame": "Graj dalej",
|
||
"permissionsNeededTitle": "Wymagane uprawnienia",
|
||
"permissionsNeededBody": "Do trybu wieloosobowego potrzebujemy:",
|
||
"openAppSettingsQuestion": "Otworzyć ustawienia aplikacji?",
|
||
"openSettings": "Otwórz ustawienia",
|
||
"permissionLocation": "Lokalizacja",
|
||
"permissionBluetoothAdvertise": "Bluetooth (rozgłaszanie)",
|
||
"permissionBluetoothConnect": "Bluetooth (łączenie)",
|
||
"permissionBluetoothScan": "Bluetooth (skanowanie)",
|
||
"permissionNearbyWifi": "Wi-Fi w pobliżu"
|
||
}
|