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.
891 lines
27 KiB
Dart
891 lines
27 KiB
Dart
// ignore: unused_import
|
|
import 'package:intl/intl.dart' as intl;
|
|
import 'app_localizations.dart';
|
|
|
|
// ignore_for_file: type=lint
|
|
|
|
/// The translations for Russian (`ru`).
|
|
class AppLocalizationsRu extends AppLocalizations {
|
|
AppLocalizationsRu([String locale = 'ru']) : super(locale);
|
|
|
|
@override
|
|
String get appTitle => 'Самозванец';
|
|
|
|
@override
|
|
String get subtitle => 'Социальная игра на дедукцию';
|
|
|
|
@override
|
|
String get loadingWords => 'Загрузка слов...';
|
|
|
|
@override
|
|
String get matchRewards => 'Награды за игру';
|
|
|
|
@override
|
|
String get newMedals => 'Новые медали';
|
|
|
|
@override
|
|
String get noNewMedalsKeepFire =>
|
|
'В этот раз новых медалей нет. Продолжай разжигать огонь.';
|
|
|
|
@override
|
|
String get calculatingRewards => 'Подсчёт наград...';
|
|
|
|
@override
|
|
String get fireLabel => 'Огонь';
|
|
|
|
@override
|
|
String get playersRange => '3-20 игроков • Без интернета';
|
|
|
|
@override
|
|
String get createGame => 'Создать игру';
|
|
|
|
@override
|
|
String get joinGame => 'Присоединиться к игре';
|
|
|
|
@override
|
|
String get howToPlay => 'Как играть';
|
|
|
|
@override
|
|
String get settings => 'Настройки';
|
|
|
|
@override
|
|
String get gameMode => 'Режим игры';
|
|
|
|
@override
|
|
String get singleDevice => 'Одно устройство';
|
|
|
|
@override
|
|
String get multiDevice => 'Несколько устройств';
|
|
|
|
@override
|
|
String get category => 'Категория';
|
|
|
|
@override
|
|
String get categoryAll => 'Все';
|
|
|
|
@override
|
|
String get categoryAnimals => 'Животные';
|
|
|
|
@override
|
|
String get categoryFood => 'Еда';
|
|
|
|
@override
|
|
String get categoryCountries => 'Страны';
|
|
|
|
@override
|
|
String get categorySports => 'Спорт';
|
|
|
|
@override
|
|
String get categoryProfessions => 'Профессии';
|
|
|
|
@override
|
|
String get categoryObjects => 'Предметы';
|
|
|
|
@override
|
|
String get categoryPlaces => 'Места';
|
|
|
|
@override
|
|
String get categoryMovies => 'Фильмы';
|
|
|
|
@override
|
|
String get categoryMusic => 'Музыка';
|
|
|
|
@override
|
|
String get categoryTechnology => 'Технологии';
|
|
|
|
@override
|
|
String playersCount(int count) {
|
|
return 'Игроки ($count)';
|
|
}
|
|
|
|
@override
|
|
String get playersRangeHint => '3-20';
|
|
|
|
@override
|
|
String get playerNameHint => 'Имя игрока';
|
|
|
|
@override
|
|
String get playerAlreadyExists => 'Игрок с таким именем уже существует';
|
|
|
|
@override
|
|
String get maxPlayersReached => 'Максимум 20 игроков';
|
|
|
|
@override
|
|
String get minPlayersRequired => 'Нужно минимум 3 игрока';
|
|
|
|
@override
|
|
String get configuration => 'Конфигурация';
|
|
|
|
@override
|
|
String get impostors => '🎭 Самозванцы';
|
|
|
|
@override
|
|
String get impostorClue => '🔍 Подсказка для самозванца';
|
|
|
|
@override
|
|
String get impostorClueDescription => 'Самозванец знает категорию';
|
|
|
|
@override
|
|
String get debate => '🗣️ Обсуждение';
|
|
|
|
@override
|
|
String get debateTime => '⏱️ Время обсуждения';
|
|
|
|
@override
|
|
String get noLimit => 'Без ограничений';
|
|
|
|
@override
|
|
String get oneMin => '1 мин';
|
|
|
|
@override
|
|
String get twoMin => '2 мин';
|
|
|
|
@override
|
|
String get threeMin => '3 мин';
|
|
|
|
@override
|
|
String get fiveMin => '5 мин';
|
|
|
|
@override
|
|
String get startGame => 'Начать игру';
|
|
|
|
@override
|
|
String get seeYourWord => 'Посмотри своё слово';
|
|
|
|
@override
|
|
String get eachPlayerMustSee =>
|
|
'Каждый игрок должен тайно посмотреть своё слово';
|
|
|
|
@override
|
|
String roundNumber(int round) {
|
|
return 'Раунд $round';
|
|
}
|
|
|
|
@override
|
|
String get alreadySeen => 'Уже видел своё слово';
|
|
|
|
@override
|
|
String get tapToSee => 'Нажми, чтобы увидеть';
|
|
|
|
@override
|
|
String get allSeenStartDebate => 'Все увидели → Начать обсуждение';
|
|
|
|
@override
|
|
String playersRemaining(int count) {
|
|
return 'Осталось $count игроков';
|
|
}
|
|
|
|
@override
|
|
String get youAreImpostor => 'Ты самозванец!';
|
|
|
|
@override
|
|
String get yourWordIs => 'Твоё слово:';
|
|
|
|
@override
|
|
String clueCategory(String category) {
|
|
return 'Подсказка: $category';
|
|
}
|
|
|
|
@override
|
|
String get holdToSeeWord => 'Удерживай, чтобы увидеть своё слово';
|
|
|
|
@override
|
|
String get makeSureNoOneLooks => 'Убедись, что никто не подсматривает';
|
|
|
|
@override
|
|
String get showingWord => '👁️ Показываю...';
|
|
|
|
@override
|
|
String get holdToSee => '👆 Удерживай, чтобы увидеть';
|
|
|
|
@override
|
|
String get seenMyWord => 'Я увидел своё слово';
|
|
|
|
@override
|
|
String debateRound(int round) {
|
|
return 'Обсуждение - Раунд $round';
|
|
}
|
|
|
|
@override
|
|
String get timeUp => '⏰ Время вышло!';
|
|
|
|
@override
|
|
String get timeRemaining => '⏱️ Оставшееся время';
|
|
|
|
@override
|
|
String get playersInDebate => 'Игроки в обсуждении';
|
|
|
|
@override
|
|
String activePlayersInfo(int active, int impostors) {
|
|
return '$active активных • $impostors скрытый(-х) самозванец(-ев)';
|
|
}
|
|
|
|
@override
|
|
String get eliminated => 'Выбыл';
|
|
|
|
@override
|
|
String get notes => 'Заметки';
|
|
|
|
@override
|
|
String get goToVoting => 'Перейти к голосованию';
|
|
|
|
@override
|
|
String get voting => '🗳️ Голосование';
|
|
|
|
@override
|
|
String get turnToVote => 'Твоя очередь голосовать:';
|
|
|
|
@override
|
|
String votesProgress(int current, int total) {
|
|
return 'Голоса: $current/$total';
|
|
}
|
|
|
|
@override
|
|
String get whoIsImpostor => 'Кто, по-твоему, самозванец?';
|
|
|
|
@override
|
|
String get confirmVote => 'Подтвердить голос';
|
|
|
|
@override
|
|
String get votingComplete => '🗳️ Голосование завершено';
|
|
|
|
@override
|
|
String get allVoted => 'Все проголосовали!';
|
|
|
|
@override
|
|
String get tapToReveal => 'Нажми, чтобы узнать результат';
|
|
|
|
@override
|
|
String get revealResult => 'Показать результат';
|
|
|
|
@override
|
|
String get result => 'Результат';
|
|
|
|
@override
|
|
String get revealing => 'Раскрываем...';
|
|
|
|
@override
|
|
String get wasImpostor => 'Был САМОЗВАНЦЕМ! 🎉';
|
|
|
|
@override
|
|
String get wasInnocent => 'Был НЕВИНОВЕН 😱';
|
|
|
|
@override
|
|
String get votesThisRound => 'Голоса этого раунда';
|
|
|
|
@override
|
|
String get seeEndResult => 'Увидеть итоговый результат';
|
|
|
|
@override
|
|
String get impostorGuessWord => 'Самозванец угадает слово?';
|
|
|
|
@override
|
|
String get nextRound => 'Следующий раунд';
|
|
|
|
@override
|
|
String get impostorGuessTitle => '🎯 Догадка самозванца';
|
|
|
|
@override
|
|
String get impostorCanGuess =>
|
|
'Выбывший самозванец может\nпопытаться угадать слово';
|
|
|
|
@override
|
|
String get ifCorrectImpostorsWin => 'Если угадает — самозванцы побеждают!';
|
|
|
|
@override
|
|
String get guessWordHint => 'Как ты думаешь, какое слово?';
|
|
|
|
@override
|
|
String get dontGuess => 'Не пытаться';
|
|
|
|
@override
|
|
String get guess => 'Угадать';
|
|
|
|
@override
|
|
String get correctGuess => 'Угадал!';
|
|
|
|
@override
|
|
String theWordWas(String word) {
|
|
return 'Слово было: $word';
|
|
}
|
|
|
|
@override
|
|
String get impostorsWin => 'Самозванцы побеждают!';
|
|
|
|
@override
|
|
String get wrongGuess => 'Не угадал!';
|
|
|
|
@override
|
|
String get gameContinues => 'Игра продолжается...';
|
|
|
|
@override
|
|
String get gameOver => 'Конец игры';
|
|
|
|
@override
|
|
String get playersWin => 'Игроки побеждают!';
|
|
|
|
@override
|
|
String get theSecretWordWas => '🔍 Загаданное слово:';
|
|
|
|
@override
|
|
String categoryLabel(String category) {
|
|
return 'Категория: $category';
|
|
}
|
|
|
|
@override
|
|
String get theImpostorWas => '🎭 Самозванцем был:';
|
|
|
|
@override
|
|
String get theImpostorsWere => '🎭 Самозванцами были:';
|
|
|
|
@override
|
|
String get votingHistory => '📊 История голосований';
|
|
|
|
@override
|
|
String roundElimination(int round, String name) {
|
|
return 'Раунд $round: $name';
|
|
}
|
|
|
|
@override
|
|
String get rematch => 'Реванш';
|
|
|
|
@override
|
|
String get mainMenu => 'Главное меню';
|
|
|
|
@override
|
|
String get notesTitle => '📝 Заметки';
|
|
|
|
@override
|
|
String get notesSaved => 'Заметки сохранены';
|
|
|
|
@override
|
|
String get whoAreYou => 'Кто ты?';
|
|
|
|
@override
|
|
String get selectYourName =>
|
|
'Выбери своё имя, чтобы увидеть свои личные заметки';
|
|
|
|
@override
|
|
String notesOf(String name) {
|
|
return 'Заметки $name';
|
|
}
|
|
|
|
@override
|
|
String get notesAboutPlayers => 'Записи о каждом игроке';
|
|
|
|
@override
|
|
String get playerNoteHint => 'Что он сказал? Подозрительно?';
|
|
|
|
@override
|
|
String get freeNote => 'Свободная заметка';
|
|
|
|
@override
|
|
String get freeNoteHint => 'Личные записи...';
|
|
|
|
@override
|
|
String get rulesTitle => '📖 Как играть';
|
|
|
|
@override
|
|
String get rulesWhatIsTitle => '🎭 Что такое «Самозванец»?';
|
|
|
|
@override
|
|
String get rulesWhatIsBody =>
|
|
'Социальная игра на дедукцию для 3-20 игроков. Все получают секретное слово... кроме самозванца! Твоя задача: вычислить, кто притворяется.';
|
|
|
|
@override
|
|
String get rulesHowToPlayTitle => '🔍 Как играть?';
|
|
|
|
@override
|
|
String get rulesHowToPlayBody =>
|
|
'1. Раздача ролей: все получают одно и то же слово, кроме самозванца(-ев).\n\n2. Обсуждение: по очереди каждый игрок описывает слово, НЕ называя его напрямую. Самозванец должен притворяться, что знает его.\n\n3. Голосование: после обсуждения все голосуют за того, кого считают самозванцем.\n\n4. Исключение: игрок, набравший больше всего голосов, выбывает, и выясняется, был ли он самозванцем.\n\n5. Если это был самозванец, он может попытаться угадать слово. Если угадает — самозванцы побеждают!';
|
|
|
|
@override
|
|
String get rulesWhoWinsTitle => '🏆 Кто побеждает?';
|
|
|
|
@override
|
|
String get rulesWhoWinsBody =>
|
|
'• Игроки: побеждают, если вычислят ВСЕХ самозванцев.\n• Самозванцы: побеждают, если остаются нераскрытыми, пока обычных игроков не станет столько же или меньше, чем самозванцев, или если угадают слово при выбывании.';
|
|
|
|
@override
|
|
String get rulesTipsPlayersTitle => '💡 Советы для игроков';
|
|
|
|
@override
|
|
String get rulesTipsPlayersBody =>
|
|
'• Давай тонкие подсказки, доказывающие, что ты знаешь слово, но не настолько очевидные, чтобы самозванец мог ими воспользоваться.\n• Следи за тем, кто даёт расплывчатые или общие ответы.\n• Используй заметки, чтобы записывать сказанное каждым.\n• Не называй слово напрямую — это поможет самозванцу!';
|
|
|
|
@override
|
|
String get rulesTipsImpostorTitle => '🎭 Советы для самозванца';
|
|
|
|
@override
|
|
String get rulesTipsImpostorBody =>
|
|
'• Внимательно слушай подсказки остальных.\n• Попытайся вычислить слово, чтобы давать правдоподобные подсказки.\n• Не говори первым, если не уверен.\n• Если тебе дали категорию как подсказку, используй это в свою пользу.\n• Обвиняй других, чтобы отвлечь внимание.';
|
|
|
|
@override
|
|
String get rulesModesTitle => '📱 Режимы игры';
|
|
|
|
@override
|
|
String get rulesModesBody =>
|
|
'• Одно устройство: все передают телефон по кругу. Каждый игрок видит своё слово, нажав и удерживая кнопку.\n\n• Несколько устройств: каждый игрок использует собственное устройство. Подключение через Bluetooth/WiFi Direct без интернета.';
|
|
|
|
@override
|
|
String get rulesExampleTitle => '✏️ Пример раунда';
|
|
|
|
@override
|
|
String get rulesExampleBody =>
|
|
'Секретное слово: «Пицца»\n\n• Аня: «Её едят горячей» ✓\n• Кирилл: «Приходит в коробке» ✓\n• Лена (самозванец): «Очень популярная» 🤔\n• Дима: «С сыром» ✓\n\nЛена дала слишком общий ответ... Подозрительно!';
|
|
|
|
@override
|
|
String get joinGameTitle => 'Присоединиться к игре';
|
|
|
|
@override
|
|
String get multiDeviceMode => 'Режим нескольких устройств';
|
|
|
|
@override
|
|
String get scanQrDescription =>
|
|
'Отсканируй QR-код, который показывает хост, чтобы подключиться к игре через Bluetooth/WiFi Direct.';
|
|
|
|
@override
|
|
String get comingSoon => 'Скоро';
|
|
|
|
@override
|
|
String get nearbyNotAvailable =>
|
|
'Подключение нескольких устройств через Nearby Connections требует физических Android-устройств.\n\nПока что используй режим «Одно устройство» для игры на общем телефоне.';
|
|
|
|
@override
|
|
String get back => 'Назад';
|
|
|
|
@override
|
|
String get yes => 'Да';
|
|
|
|
@override
|
|
String get no => 'Нет';
|
|
|
|
@override
|
|
String get cancel => 'Отмена';
|
|
|
|
@override
|
|
String get accept => 'Принять';
|
|
|
|
@override
|
|
String get next => 'Далее';
|
|
|
|
@override
|
|
String get settingsTitle => 'Настройки';
|
|
|
|
@override
|
|
String get language => 'Язык';
|
|
|
|
@override
|
|
String get soundVolume => 'Громкость эффектов';
|
|
|
|
@override
|
|
String get vibration => 'Вибрация';
|
|
|
|
@override
|
|
String get about => 'О приложении';
|
|
|
|
@override
|
|
String get version => 'Версия';
|
|
|
|
@override
|
|
String get developer => 'Разработчик';
|
|
|
|
@override
|
|
String get licenses => 'Лицензии';
|
|
|
|
@override
|
|
String get scanToJoin => 'Отсканируйте QR-код, чтобы присоединиться';
|
|
|
|
@override
|
|
String get connectedPlayers => 'Подключённые игроки';
|
|
|
|
@override
|
|
String get hostGame => 'Управление игрой';
|
|
|
|
@override
|
|
String get waitingPlayersSeeWord => 'Ждём, пока все увидят своё слово...';
|
|
|
|
@override
|
|
String get activePlayers => 'Активные игроки';
|
|
|
|
@override
|
|
String get playersVoted => 'Проголосовали';
|
|
|
|
@override
|
|
String get waitingVoting => 'Ждём голоса...';
|
|
|
|
@override
|
|
String get waitingForPlayers => 'Ждём игроков...';
|
|
|
|
@override
|
|
String needMorePlayers(int count) {
|
|
return 'Нужно ещё $count игроков';
|
|
}
|
|
|
|
@override
|
|
String get starting => 'Запуск...';
|
|
|
|
@override
|
|
String get enterNameAndScan => 'Введите имя и отсканируйте QR-код ведущего';
|
|
|
|
@override
|
|
String get yourName => 'Ваше имя';
|
|
|
|
@override
|
|
String get nameRequired => 'Введите ваше имя';
|
|
|
|
@override
|
|
String get connectingTo => 'Подключение к';
|
|
|
|
@override
|
|
String get scanQR => 'Сканировать QR-код';
|
|
|
|
@override
|
|
String get scanHostQR => 'Наведите на QR-код ведущего';
|
|
|
|
@override
|
|
String get connectedWaiting => 'Подключено!';
|
|
|
|
@override
|
|
String get waitingForHost => 'Ждём, пока ведущий начнёт игру...';
|
|
|
|
@override
|
|
String get enterNameToSearch => 'Введите имя, чтобы найти игры поблизости';
|
|
|
|
@override
|
|
String get searchGames => 'Найти игры';
|
|
|
|
@override
|
|
String get searchingGames => 'Поиск игр поблизости...';
|
|
|
|
@override
|
|
String get noGamesFound => 'Игры не найдены';
|
|
|
|
@override
|
|
String get noGamesFoundHint =>
|
|
'Убедитесь, что ведущий открыл комнату и вы находитесь рядом';
|
|
|
|
@override
|
|
String get orScanQR => 'Не отображается? Отсканируйте QR-код ведущего';
|
|
|
|
@override
|
|
String get iveSeenIt => 'Я посмотрел';
|
|
|
|
@override
|
|
String clueIs(String category) {
|
|
return 'Подсказка: $category';
|
|
}
|
|
|
|
@override
|
|
String get debatePhaseActive => 'Идёт этап обсуждения';
|
|
|
|
@override
|
|
String get debateInstructions =>
|
|
'Обсудите между собой и скажите, кто, по-вашему, самозванец. Когда будете готовы, запросите голосование.';
|
|
|
|
@override
|
|
String get solicitarVotacion => 'Запросить голосование';
|
|
|
|
@override
|
|
String get votacionSolicitada => 'Голосование запрошено';
|
|
|
|
@override
|
|
String get whoDoYouThinkIsTheImpostor => 'Кто самозванец?';
|
|
|
|
@override
|
|
String get selectOnePlayer => 'Выберите игрока для голосования';
|
|
|
|
@override
|
|
String get votar => 'Голосовать';
|
|
|
|
@override
|
|
String get selectYourProfile => 'Ваш профиль';
|
|
|
|
@override
|
|
String get selectProfile => 'Выберите профиль';
|
|
|
|
@override
|
|
String get createNewUser => 'Создать нового пользователя';
|
|
|
|
@override
|
|
String get userNameRequired => 'Имя не может быть пустым';
|
|
|
|
@override
|
|
String get profileSelected => 'Профиль выбран';
|
|
|
|
@override
|
|
String get availableProfiles => 'Доступные профили';
|
|
|
|
@override
|
|
String get scanThisCodeFromAnotherPhone =>
|
|
'Отсканируйте этот код с другого телефона';
|
|
|
|
@override
|
|
String get gameUsers => 'Пользователи игры';
|
|
|
|
@override
|
|
String get selectedPlayers => 'Выбранные игроки';
|
|
|
|
@override
|
|
String get connectedPhones => 'Подключённые телефоны';
|
|
|
|
@override
|
|
String get selectedOnThisPhone => 'Выбрано на этом телефоне';
|
|
|
|
@override
|
|
String get selectedByAnotherDevice => 'Выбрано на другом устройстве';
|
|
|
|
@override
|
|
String get available => 'Доступно';
|
|
|
|
@override
|
|
String get notAvailable => 'Недоступно';
|
|
|
|
@override
|
|
String get release => 'Освободить';
|
|
|
|
@override
|
|
String get select => 'Выбрать';
|
|
|
|
@override
|
|
String get delete => 'Удалить';
|
|
|
|
@override
|
|
String get selectAtLeastThreeUsersToStart =>
|
|
'Выберите не менее 3 пользователей, чтобы начать.';
|
|
|
|
@override
|
|
String get hostPhoneMustSelectUser =>
|
|
'Телефон ведущего должен выбрать хотя бы одного пользователя.';
|
|
|
|
@override
|
|
String get roomNoLongerInLobby => 'Комната больше не в лобби.';
|
|
|
|
@override
|
|
String get completeUserSelectionToStart =>
|
|
'Завершите выбор пользователей, чтобы начать.';
|
|
|
|
@override
|
|
String get preparingSecureRoom => 'Подготовка защищённой комнаты';
|
|
|
|
@override
|
|
String get searchingNearbyBluetoothGames =>
|
|
'Поиск игр поблизости через Bluetooth';
|
|
|
|
@override
|
|
String get tapToJoin => 'Нажмите, чтобы присоединиться';
|
|
|
|
@override
|
|
String get bluetoothLocationPermissionsRequired =>
|
|
'Для поиска игр нужны разрешения Bluetooth и геолокации.';
|
|
|
|
@override
|
|
String get bluetoothLocationPermissionsShort =>
|
|
'Нужны разрешения Bluetooth и геолокации';
|
|
|
|
@override
|
|
String get couldNotStartSearch =>
|
|
'Не удалось начать поиск. Проверьте Bluetooth и геолокацию.';
|
|
|
|
@override
|
|
String couldNotConnectToHost(String host) {
|
|
return 'Не удалось подключиться к $host';
|
|
}
|
|
|
|
@override
|
|
String get room => 'Комната';
|
|
|
|
@override
|
|
String get singleDeviceSubtitle => 'Игра на этом устройстве';
|
|
|
|
@override
|
|
String get singleDeviceDescription =>
|
|
'Идеально, чтобы играть вместе, передавая телефон. Быстрая и простая настройка.';
|
|
|
|
@override
|
|
String get multiDeviceSubtitle => 'Каждый игрок на своём телефоне';
|
|
|
|
@override
|
|
String get multiDeviceDescription =>
|
|
'Создайте премиум-комнату, поделитесь QR-кодом и управляйте игроками из лобби.';
|
|
|
|
@override
|
|
String get singleDeviceGameLabel => 'Игра на этом устройстве';
|
|
|
|
@override
|
|
String get multiDeviceGameLabel => 'Игра на нескольких устройствах';
|
|
|
|
@override
|
|
String get mainDeviceUser => 'Основной пользователь устройства';
|
|
|
|
@override
|
|
String get couldNotCreateRoom =>
|
|
'Не удалось создать комнату. Проверьте Bluetooth.';
|
|
|
|
@override
|
|
String cannotStartWithReason(String reason) {
|
|
return 'Невозможно начать: $reason';
|
|
}
|
|
|
|
@override
|
|
String get invalidRoom => 'недопустимая комната';
|
|
|
|
@override
|
|
String get defaultPlayerName => 'Игрок';
|
|
|
|
@override
|
|
String get play => 'Играть';
|
|
|
|
@override
|
|
String get history => 'История';
|
|
|
|
@override
|
|
String get mainTagline => 'Найди самозванца, пока не стало слишком поздно';
|
|
|
|
@override
|
|
String get deviceProfile => 'Профиль устройства';
|
|
|
|
@override
|
|
String get profileName => 'Имя';
|
|
|
|
@override
|
|
String get profileNick => 'Ник';
|
|
|
|
@override
|
|
String get save => 'Сохранить';
|
|
|
|
@override
|
|
String get automaticLanguage => 'Автоматически';
|
|
|
|
@override
|
|
String get noSavedGames => 'Сохранённых игр пока нет.';
|
|
|
|
@override
|
|
String get errorNoGame => 'Ошибка: нет игры';
|
|
|
|
@override
|
|
String get disconnectedPlayersWarning =>
|
|
'У некоторых игроков устройство отключено.';
|
|
|
|
@override
|
|
String get assumeOnThisPhone => 'Взять на этом телефоне';
|
|
|
|
@override
|
|
String get noResult => 'Нет результата';
|
|
|
|
@override
|
|
String historyGameSummary(
|
|
int players,
|
|
int impostors,
|
|
int rounds,
|
|
String word,
|
|
String category,
|
|
) {
|
|
return '\$players игроков • \$impostors самозванцев • \$rounds раундов\n\$word • \$category';
|
|
}
|
|
|
|
@override
|
|
String voteOf(String name) {
|
|
return 'Голос игрока $name';
|
|
}
|
|
|
|
@override
|
|
String firstTurnInstruction(String name) {
|
|
return '$name начинает, называя своё слово.';
|
|
}
|
|
|
|
@override
|
|
String get impostorsKnowEachOther => '🎭 Самозванцы знают друг друга';
|
|
|
|
@override
|
|
String get impostorsKnowEachOtherDescription =>
|
|
'Каждый самозванец увидит имена остальных';
|
|
|
|
@override
|
|
String get impostorsKnowEachOtherNeedsTwo =>
|
|
'Работает только при 2 и более самозванцах';
|
|
|
|
@override
|
|
String otherImpostorsTitle(num count) {
|
|
String _temp0 = intl.Intl.pluralLogic(
|
|
count,
|
|
locale: localeName,
|
|
other: 'Другие самозванцы',
|
|
one: 'Другой самозванец',
|
|
);
|
|
return '$_temp0';
|
|
}
|
|
|
|
@override
|
|
String get youAreTheOnlyImpostor => 'Вы единственный самозванец';
|
|
|
|
@override
|
|
String impostorsAdjusted(int count) {
|
|
return 'Число самозванцев изменено на $count из-за количества игроков';
|
|
}
|
|
|
|
@override
|
|
String get eliminatedCannotVote => 'Вы выбыли — вы больше не голосуете';
|
|
|
|
@override
|
|
String get reconnecting => 'Переподключение...';
|
|
|
|
@override
|
|
String get reconnectingHint =>
|
|
'Соединение с ведущим потеряно. Ваше место в игре сохраняется.';
|
|
|
|
@override
|
|
String get leaveGame => 'Выйти из игры';
|
|
|
|
@override
|
|
String playerRejoined(String name) {
|
|
return '$name вернулся в игру';
|
|
}
|
|
|
|
@override
|
|
String get leaveGameTitle => 'Выйти из игры?';
|
|
|
|
@override
|
|
String get leaveGameSingleDevice =>
|
|
'Текущая партия будет потеряна без возможности восстановления.';
|
|
|
|
@override
|
|
String get leaveGameHost =>
|
|
'Вы ведущий: если вы выйдете, игра закончится для всех.';
|
|
|
|
@override
|
|
String get leaveGameClient =>
|
|
'Вы выйдете из игры. Вы сможете вернуться, пока ведущий её не закрыл.';
|
|
|
|
@override
|
|
String get stayInGame => 'Продолжить игру';
|
|
|
|
@override
|
|
String get permissionsNeededTitle => 'Нужны разрешения';
|
|
|
|
@override
|
|
String get permissionsNeededBody =>
|
|
'Для многопользовательского режима нужны:';
|
|
|
|
@override
|
|
String get openAppSettingsQuestion => 'Открыть настройки приложения?';
|
|
|
|
@override
|
|
String get openSettings => 'Открыть настройки';
|
|
|
|
@override
|
|
String get permissionLocation => 'Геолокация';
|
|
|
|
@override
|
|
String get permissionBluetoothAdvertise => 'Bluetooth (объявление)';
|
|
|
|
@override
|
|
String get permissionBluetoothConnect => 'Bluetooth (подключение)';
|
|
|
|
@override
|
|
String get permissionBluetoothScan => 'Bluetooth (сканирование)';
|
|
|
|
@override
|
|
String get permissionNearbyWifi => 'Wi-Fi поблизости';
|
|
}
|