Files
farolero/lib/l10n/app_ru.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
21 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": "ru",
"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• Несколько устройств: каждый игрок использует собственное устройство. Подключение через Bluetooth/WiFi Direct без интернета.",
"rulesExampleTitle": "✏️ Пример раунда",
"rulesExampleBody": "Секретное слово: «Пицца»\n\n• Аня: «Её едят горячей» ✓\n• Кирилл: «Приходит в коробке» ✓\n• Лена (самозванец): «Очень популярная» 🤔\n• Дима: «С сыром» ✓\n\nЛена дала слишком общий ответ... Подозрительно!",
"joinGameTitle": "Присоединиться к игре",
"multiDeviceMode": "Режим нескольких устройств",
"scanQrDescription": "Отсканируй QR-код, который показывает хост, чтобы подключиться к игре через Bluetooth/WiFi Direct.",
"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": "Поиск игр поблизости через Bluetooth",
"tapToJoin": "Нажмите, чтобы присоединиться",
"bluetoothLocationPermissionsRequired": "Для поиска игр нужны разрешения Bluetooth и геолокации.",
"bluetoothLocationPermissionsShort": "Нужны разрешения Bluetooth и геолокации",
"couldNotStartSearch": "Не удалось начать поиск. Проверьте Bluetooth и геолокацию.",
"couldNotConnectToHost": "Не удалось подключиться к {host}",
"room": "Комната",
"singleDeviceSubtitle": "Игра на этом устройстве",
"singleDeviceDescription": "Идеально, чтобы играть вместе, передавая телефон. Быстрая и простая настройка.",
"multiDeviceSubtitle": "Каждый игрок на своём телефоне",
"multiDeviceDescription": "Создайте премиум-комнату, поделитесь QR-кодом и управляйте игроками из лобби.",
"singleDeviceGameLabel": "Игра на этом устройстве",
"multiDeviceGameLabel": "Игра на нескольких устройствах",
"mainDeviceUser": "Основной пользователь устройства",
"couldNotCreateRoom": "Не удалось создать комнату. Проверьте Bluetooth.",
"cannotStartWithReason": "Невозможно начать: {reason}",
"invalidRoom": "недопустимая комната",
"defaultPlayerName": "Игрок",
"play": "Играть",
"history": "История",
"mainTagline": "Найди самозванца, пока не стало слишком поздно",
"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": "Bluetooth (объявление)",
"permissionBluetoothConnect": "Bluetooth (подключение)",
"permissionBluetoothScan": "Bluetooth (сканирование)",
"permissionNearbyWifi": "Wi-Fi поблизости"
}