Files
pluriwave/lib/l10n/app_ru.arb
T
Javier Bautista Fernández 29f7d54e85
Build & Deploy PluriWave / Análisis de código (push) Successful in 25s
Build & Deploy PluriWave / Build APK + AAB release (push) Successful in 2m25s
fix(alarm): fail-safe alarm system overhaul (SDD alarm-system-overhaul, slice A)
Root-cause fix for the unstoppable-alarm incident (alarm rang 15 minutes,
only uninstall silenced it) plus systematic hardening of every stop path.

Native (Kotlin):
- Verified stop: stopActiveAlarm now derives its result from the real
  post-teardown state (companion instance + synchronous stopEverything +
  activeRingingId check) instead of reporting unconditional success.
- Atomic teardown: every stop path (stop action, notification button,
  snooze, missed, onDestroy, startForeground failure) funnels through one
  stopEverything() covering audio, wakelock, notification, foreground
  state and firing-record cleanup; player.release() guarded.
- Bounded ringing: 10-minute auto-silence armed via AlarmManager fires a
  FIRED->MISSED transition with a localized missed-alarm notification;
  repeating alarms keep their native rearm, deleted alarms never produce
  ghost MISSED notifications.
- Durable firing record with onStartCommand re-validation (resurrection
  guard) and boot-time stale cleanup; firing records cleared on every
  refuse/mismatch/cancel path.
- New notification-only dismissal channel (dismissAlarmNotificationOnly)
  so UI-level dedup can never kill a live ring's audio.

Flutter (Dart):
- Stop/disable/edit/delete of a ringing alarm always attempt to silence
  it; on native-query failure the stop falls back toward silence via the
  id-scoped legacy stop.
- Verified-stop results surface failures: the ringing screen keeps
  dismiss-by-design on success, but on a verified failure it stays up
  with a persistent force-stop banner (guarded against double-dismiss)
  and auto-dismisses if the ring ends externally (missed/notification).
- Missed events sync alarm bookkeeping without opening the ringing UI.
- 4 new l10n keys translated across all 13 locales (ARB guard green).

550 tests green, analyzer clean. Reviewed in 3 adversarial 4-lens rounds
(2 deterministic + 1 refuter-corroborated critical fixed); formal
gentle-ai receipt waived by maintainer authorization (correction scope
legitimately exceeded the frozen genesis paths). On-device QA checklist
in openspec/changes/alarm-system-overhaul/tasks.md pending before
archive.
2026-07-22 23:52:36 +02:00

683 lines
32 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": "PluriWave",
"navHome": "Главная",
"navSearch": "Поиск",
"navFavorites": "Избранное",
"navAlarms": "Будильники",
"navSettings": "Настройки",
"actionOk": "ОК",
"sleepTimer": "Таймер сна",
"sleepTimerDescription": "Плавное выключение радио с точным обратным отсчётом.",
"cancelTimer": "Отменить таймер",
"optionOther": "Другое",
"customDurationTitle": "Своя длительность",
"durationGreaterThanZero": "Выберите длительность больше нуля.",
"hoursLabel": "Часы",
"minutesLabel": "Минуты",
"secondsLabel": "Секунды",
"durationHoursMinutesSeconds": "{hours} ч {minutes} мин {seconds} сек",
"@durationHoursMinutesSeconds": {
"placeholders": {
"hours": {},
"minutes": {},
"seconds": {}
}
},
"durationMinutesSeconds": "{minutes} мин {seconds} сек",
"@durationMinutesSeconds": {
"placeholders": {
"minutes": {},
"seconds": {}
}
},
"durationMinutesOnly": "{minutes} мин",
"@durationMinutesOnly": {
"placeholders": {
"minutes": {}
}
},
"durationSecondsOnly": "{seconds} сек",
"@durationSecondsOnly": {
"placeholders": {
"seconds": {}
}
},
"saveQuickAccess": "Сохранить как быстрый доступ",
"startTimer": "Запустить таймер",
"skipCurrentAlarmExecution": "Этот запуск {alarmName} пропущен.",
"@skipCurrentAlarmExecution": {
"placeholders": {
"alarmName": {}
}
},
"settingsTitle": "Настройки",
"settingsSubtitle": "Точная настройка звука, резервных копий и пользовательских станций.",
"languageSectionTitle": "Язык",
"languageSectionDescription": "Выберите, как отображается язык приложения.",
"languageSystemDefault": "Система",
"languageSpanish": "Испанский",
"languageEnglish": "Английский",
"languageUpdated": "Язык обновлён: {languageName}",
"@languageUpdated": {
"placeholders": {
"languageName": {}
}
},
"languageUpdatedSystem": "Язык обновлён: система",
"timerSectionTitle": "Таймер сна",
"timerSectionAdd": "Добавить",
"timerSectionDescription": "Настройте быстрые пресеты, которые появляются при автоматическом выключении радио.",
"timerSectionRestoreRecommended": "Восстановить рекомендуемое время",
"newQuickAccessTitle": "Новый быстрый доступ",
"saveQuickAccessButton": "Сохранить быстрый доступ",
"settingsSafeStatus": "Безопасно",
"recordingsSectionTitle": "Записи",
"recordingsFolderDialogTitle": "Выберите папку для записей",
"recordingsPathUpdated": "Путь записи обновлён",
"recordingsPathSaveError": "Не удалось сохранить путь: {error}",
"recordingsDefaultFolderRestored": "Будет использована внутренняя папка по умолчанию",
"recordingsFolderTitle": "Папка записей",
"recordingsPathCalculating": "Вычисление пути...",
"recordingsChangePath": "Изменить путь",
"recordingsUseDefaultPath": "Использовать путь по умолчанию",
"recordingsOriginalStreamHint": "Радио сохраняется из исходного потока без повторного сжатия.",
"equalizerActive": "Активно",
"equalizerDisabled": "Отключено",
"equalizerEnable": "Включить эквалайзер",
"equalizerRealtimeSubtitle": "Изменения применяются к текущей станции в реальном времени.",
"equalizerPendingSubtitle": "Изменения сохраняются и применятся, когда Android включит эффект.",
"equalizerPerStationTitle": "Использовать свой EQ для этого избранного",
"equalizerPerStationActive": "Активно для {stationName}",
"equalizerPerStationMain": "Используется основной EQ для {stationName}",
"preferredStationTitle": "Предпочитаемая станция",
"preferredStationDescription": "Предварительно выбирается при создании будильников и доступна для быстрого воспроизведения.",
"preferredStationNoStationsTitle": "Пока нет доступных станций",
"preferredStationNoStationsSubtitle": "Сохраните избранные или загрузите станции, чтобы выбрать предпочитаемую.",
"preferredStationAutomaticFallback": "Автоматический резерв",
"preferredStationDefaultFavorite": "Избранное по умолчанию",
"preferredStationCurrent": "Текущая предпочитаемая: {stationName}",
"preferredStationAutoUsing": "Нет избранных: автоматически используется {stationName}",
"preferredStationPlay": "Воспроизвести предпочитаемую",
"customStationsTitle": "Пользовательские станции",
"customStationsAdd": "Добавить",
"customStationsEmpty": "Пользовательских станций нет.",
"playAction": "Воспроизвести",
"deleteAction": "Удалить",
"addStationTitle": "Добавить станцию",
"stationNameLabel": "Название *",
"unnamedStation": "Станция без названия",
"requiredField": "Обязательное поле",
"streamUrlLabel": "URL потока *",
"invalidUrl": "Недопустимый URL",
"countryOptionalLabel": "Страна (необязательно)",
"saveStation": "Сохранить станцию",
"backupSectionTitle": "Резервная копия",
"backupExportTitle": "Экспортировать настройки",
"backupExportSubtitle": "Избранное, пользовательские станции и пресеты EQ",
"backupImportTitle": "Импортировать настройки",
"backupImportSubtitle": "Восстановить из файла резервной копии",
"backupShareSubject": "PluriWave — резервная копия",
"backupShareText": "Настройки PluriWave, экспортированные {date}",
"backupExportError": "Ошибка при экспорте: {error}",
"backupImportConfirmMessage": "Это добавит избранное, станции и пресеты из файла. Продолжить?",
"backupImportSuccess": "Настройки успешно импортированы",
"backupImportError": "Ошибка при импорте: {error}",
"appVersionLoading": "Загрузка версии...",
"appVersionSubtitle": "{version} — мировое радио",
"savedFavoritesTitle": "Сохранённое избранное",
"stationFilterTitle": "Фильтр станций",
"stationFilterSubtitle": "Только станции, подтверждённые как активные",
"backgroundAudioTitle": "Фоновое аудио",
"backgroundAudioSubtitle": "Продолжается при выключенном экране",
"dash": "—",
"@recordingsPathSaveError": {
"placeholders": {
"error": {}
}
},
"@equalizerPerStationActive": {
"placeholders": {
"stationName": {}
}
},
"@equalizerPerStationMain": {
"placeholders": {
"stationName": {}
}
},
"@preferredStationCurrent": {
"placeholders": {
"stationName": {}
}
},
"@preferredStationAutoUsing": {
"placeholders": {
"stationName": {}
}
},
"@backupShareText": {
"placeholders": {
"date": {}
}
},
"@backupExportError": {
"placeholders": {
"error": {}
}
},
"@backupImportError": {
"placeholders": {
"error": {}
}
},
"@appVersionSubtitle": {
"placeholders": {
"version": {}
}
},
"cancelAction": "Отмена",
"equalizerTitle": "Эквалайзер",
"recordingsOpenFolder": "Открыть папку",
"recordingsOpenFolderError": "Не удалось открыть папку: {error}",
"recordingsMaxSizeTitle": "Максимальный размер записи",
"recordingsMaxSizeSubtitle": "Текущий лимит: {size} МБ",
"recordingsMaxSizeDialogTitle": "Максимальный размер одной записи",
"recordingsMaxSizeMbLabel": "Максимум мегабайт",
"recordingsMaxSizeSaved": "Лимит записи обновлён до {size} МБ",
"@recordingsOpenFolderError": {
"placeholders": {
"error": {}
}
},
"@recordingsMaxSizeSubtitle": {
"placeholders": {
"size": {
"type": "int"
}
}
},
"@recordingsMaxSizeSaved": {
"placeholders": {
"size": {
"type": "int"
}
}
},
"stationOrderTitle": "Порядок станций",
"stationOrderByName": "По названию",
"stationOrderByQuality": "По качеству",
"stationOrderScopeDescription": "Применяется к избранному, поиску, ближайшим станциям и быстрым спискам.",
"favoriteGroupsTitle": "Списки избранного",
"favoriteGroupsDescription": "Создавайте короткие списки, чтобы упорядочить сохранённые станции.",
"favoriteGroupsAdd": "Добавить список",
"favoriteGroupsEdit": "Изменить список",
"favoriteGroupsDelete": "Удалить список",
"favoriteGroupsNameLabel": "Название списка",
"favoriteGroupsNameTooLong": "Максимум 28 символов.",
"favoriteGroupsUnassigned": "Без списка",
"favoriteGroupsProtectedHint": "Список по умолчанию: нельзя изменить или удалить.",
"favoriteGroupsCreated": "Список создан",
"favoriteGroupsUpdated": "Список обновлён",
"favoriteGroupsDeleted": "Список удалён; его станции вернулись в «Без списка».",
"favoriteGroupsAssign": "Переместить в список",
"favoriteGroupsAssignSubtitle": "Текущий список: {groupName}",
"favoriteGroupsAssigned": "{stationName} перемещена в {groupName}",
"favoritesTitle": "Избранное",
"favoritesEmptyTitle": "Избранного пока нет",
"favoritesEmptySubtitle": "Нажмите на сердце у любой станции, чтобы сохранить её в коллекцию.",
"favoritesHeaderSubtitle": "Организуйте коллекцию по спискам и держите важные радио под рукой.",
"favoritesCollection": "Коллекция",
"favoritesSavedCount": "{count} сохранено",
"favoritesRemoveTooltip": "Удалить из избранного",
"favoritesRemovedMessage": "{stationName} удалена из избранного",
"@favoriteGroupsAssignSubtitle": {
"placeholders": {
"groupName": {}
}
},
"@favoriteGroupsAssigned": {
"placeholders": {
"stationName": {},
"groupName": {}
}
},
"@favoritesSavedCount": {
"placeholders": {
"count": {
"type": "int"
}
}
},
"@favoritesRemovedMessage": {
"placeholders": {
"stationName": {}
}
},
"alarmPostponedCurrentExecution": "Будильник отложен для этого запуска.",
"searchScreenTitle": "Поиск сигнала",
"searchScreenSubtitle": "Находите радио по названию, стране или языку с быстрыми фильтрами и высокой контрастностью.",
"searchFiltersLabel": "Фильтры",
"searchHint": "Радио Горизонт, джаз, новости...",
"searchCountryFilterLabel": "Страна",
"searchLanguageFilterLabel": "Язык",
"searchMinQualityFilterLabel": "Минимальное качество",
"searchEmptyTitle": "Найдите станцию",
"searchNoResultsTitle": "Нет результатов",
"searchEmptySubtitle": "Используйте верхнюю строку или чипы, чтобы находить сигналы со всего мира.",
"searchNoResultsSubtitle": "Попробуйте убрать фильтры или ввести другое название, чтобы найти активный сигнал.",
"countrySpain": "Испания",
"countryUsa": "США",
"countryMexico": "Мексика",
"countryArgentina": "Аргентина",
"countryUk": "Великобритания",
"countryFrance": "Франция",
"countryGermany": "Германия",
"countryItaly": "Италия",
"countryBrazil": "Бразилия",
"countryJapan": "Япония",
"languageNameSpanish": "испанский",
"languageNameEnglish": "английский",
"languageNameFrench": "французский",
"languageNameGerman": "немецкий",
"languageNamePortuguese": "португальский",
"languageNameItalian": "итальянский",
"languageNameJapanese": "японский",
"languageNameArabic": "арабский",
"languageNameRussian": "русский",
"homeScreenSubtitle": "Глобальное радио в прямом эфире с чистыми сигналами, умным избранным и визуальным стилем телевикторины.",
"exploreStations": "Изучить станции",
"stationsCount": "{count} радиостанций",
"@stationsCount": {
"placeholders": {
"count": {
"type": "int"
}
}
},
"qualityHd": "HD-качество",
"nearYou": "Рядом с вами",
"nearYouInCountry": "Рядом с вами · {country}",
"@nearYouInCountry": {
"placeholders": {
"country": {}
}
},
"detectAction": "Определить",
"liveRadar": "Радар в эфире",
"genresTitle": "Жанры",
"retryAction": "Повторить",
"noStationsAvailable": "Нет доступных станций",
"noStationsAvailableSubtitle": "Попробуйте обновить или выбрать другой жанр, чтобы снова поймать сигнал.",
"genrePop": "Поп",
"genreRock": "Рок",
"genreJazz": "Джаз",
"genreClassical": "Классика",
"genreElectronic": "Электронная",
"genreNews": "Новости",
"genreTalk": "Разговорные",
"genreHipHop": "Хип-хоп",
"genreCountry": "Кантри",
"genreMetal": "Метал",
"genreReggae": "Регги",
"genreLatin": "Латинская",
"alarmScreenTitle": "Музыкальное пробуждение",
"alarmScreenSubtitle": "Будильники с радио, безопасным звуком, умными отпусками и всегда видимым следующим запуском.",
"createAlarmAction": "Создать будильник",
"alarmsCount": "{count} будильников",
"@alarmsCount": {
"placeholders": {
"count": {
"type": "int"
}
}
},
"activeAlarmsWithoutNextTitle": "Активные будильники без следующего запуска",
"noActiveAlarms": "Нет активных будильников",
"nextAlarmTitle": "Следующий будильник",
"activeAlarmsWithoutNextSubtitle": "Есть {count} активных будильников, но сейчас у них нет допустимой будущей даты. Проверьте дату, дни и отпуска.",
"@activeAlarmsWithoutNextSubtitle": {
"placeholders": {
"count": {
"type": "int"
}
}
},
"createAlarmHint": "Создайте будильник, и PluriWave автоматически рассчитает следующий запуск.",
"alarmVacationPlay": "Звонит в отпуске",
"alarmVacationPause": "Пауза в отпуске",
"alarmFadeInLabel": "Плавное усиление {seconds}с",
"@alarmFadeInLabel": {
"placeholders": {
"seconds": {
"type": "int"
}
}
},
"alarmNextExecution": "Следующий запуск: {date}",
"@alarmNextExecution": {
"placeholders": {
"date": {}
}
},
"alarmNoNextExecution": "Нет активного следующего запуска.",
"alarmSkippedExecution": "Один запуск был пропущен: {date}.",
"@alarmSkippedExecution": {
"placeholders": {
"date": {}
}
},
"editAction": "Изменить",
"skipNextAction": "Пропустить следующий",
"deleteTooltip": "Удалить",
"alarmSkippedNoNextSnackbar": "Будильник пропущен. Следующего запуска нет.",
"alarmSkippedReturnsSnackbar": "Будильник пропущен. Вернётся {date}.",
"@alarmSkippedReturnsSnackbar": {
"placeholders": {
"date": {}
}
},
"alarmVacationPausedNoNext": "Приостановлен из-за отпуска ({vacationName}) и без следующего запуска.",
"@alarmVacationPausedNoNext": {
"placeholders": {
"vacationName": {}
}
},
"alarmVacationPausedReturns": "Приостановлен из-за отпуска ({vacationName}) и вернётся {date}.",
"@alarmVacationPausedReturns": {
"placeholders": {
"vacationName": {},
"date": {}
}
},
"alarmVacationReturns": "С активным отпуском снова прозвучит {date}.",
"@alarmVacationReturns": {
"placeholders": {
"date": {}
}
},
"defaultAlarmName": "Музыкальный будильник",
"newAlarmTitle": "Новый будильник",
"editAlarmTitle": "Изменить будильник",
"nameField": "Название",
"timeField": "Время",
"dateField": "Дата",
"onceOption": "Один раз",
"dailyOption": "Ежедневно",
"weekdaysOption": "Дни",
"soundAndVolumeSection": "Звук и громкость",
"alarmFadeInTitle": "Плавное усиление будильника",
"alarmFadeInOff": "0 с (без перехода)",
"alarmFadeInSummary": "{seconds} с (с 5% до выбранной громкости)",
"@alarmFadeInSummary": {
"placeholders": {
"seconds": {
"type": "int"
}
}
},
"internalSafeSoundLabel": "Безопасный внутренний звук",
"soundWarmSunrise": "Тёплый рассвет",
"soundSoftBell": "Мягкий колокольчик",
"soundDigitalPulse": "Цифровой импульс",
"favoriteStationLabel": "Избранная станция",
"noStationUseInternalSound": "Без станции: использовать внутренний звук",
"alarmFallbackStationLabel": "Резервная станция",
"alarmStationPickerSearchHint": "Поиск станции по названию",
"alarmSnoozeDurationTitle": "Интервал повтора",
"snoozeAction": "Отложить",
"alarmSnoozeOptionLabel": "{minutes} мин",
"@alarmSnoozeOptionLabel": {
"placeholders": {
"minutes": {
"type": "int"
}
}
},
"saveFavoritesAlarmHint": "Сохраните станции в избранное, чтобы использовать их как музыкальный будильник.",
"useCurrentStationAction": "Использовать текущую станцию",
"playDuringVacations": "Звонить во время отпусков",
"playDuringVacationsHint": "Если выключить, следующий запуск перейдёт на первый допустимый день.",
"saveAlarmAction": "Сохранить будильник",
"chooseOneWeekdayError": "Выберите хотя бы один день недели.",
"androidReliabilityReview": "Проверить надёжность Android",
"statusOk": "ОК",
"statusPending": "ожидает",
"androidReliabilityStatus": "Надёжность: точные {exact} · уведомления {notifications} · экран {screen}",
"@androidReliabilityStatus": {
"placeholders": {
"exact": {},
"notifications": {},
"screen": {}
}
},
"vacationRangesTitle": "Периоды отпусков",
"addAction": "Добавить",
"vacationRangesHint": "Если у будильника включена «Пауза в отпуске», эти периоды будут автоматически пропущены.",
"noVacationRangesLoaded": "Периоды не загружены.",
"deleteRangeTooltip": "Удалить период",
"vacationsDefaultName": "Отпуск",
"newVacationRangeTitle": "Новый период отпуска",
"startField": "Начало",
"endField": "Конец",
"saveRangeAction": "Сохранить период",
"noAlarmsYetTitle": "Будильников пока нет.",
"noAlarmsYetSubtitle": "Создайте один, чтобы настроить своё музыкальное пробуждение.",
"ringingInternalAudioActive": "Звонит с безопасным внутренним звуком.",
"ringingPreparingInternalAudio": "Подготовка безопасного внутреннего звука.",
"stopAlarmAction": "Остановить будильник",
"alarmStopFailedMessage": "Не удалось подтвердить, что будильник остановлен. Попробуйте снова.",
"alarmForceStopAction": "Принудительно остановить",
"alarmMissedNotificationTitle": "Пропущенный будильник",
"alarmMissedNotificationText": "{name} был автоматически отключён через 10 минут.",
"@alarmMissedNotificationText": {
"placeholders": {
"name": {}
}
},
"pauseAction": "Пауза",
"miniPlayerOpenLabel": "Открыть плеер для {stationName}",
"@miniPlayerOpenLabel": {
"placeholders": {
"stationName": {}
}
},
"playerIconLabel": "Плеер",
"playbackStatusConnecting": "Подключение...",
"playbackStatusLive": "В эфире",
"playbackStatusPaused": "Приостановлено",
"playbackStatusReconnecting": "Переподключение...",
"playbackStatusConnectionError": "Ошибка подключения",
"playbackStatusStopped": "Остановлено",
"stationSemanticLabel": "Станция {stationName}",
"@stationSemanticLabel": {
"placeholders": {
"stationName": {}
}
},
"favoritesAddTooltip": "Добавить в избранное",
"favoritesAddedMessage": "{stationName} добавлена в избранное",
"@favoritesAddedMessage": {
"placeholders": {
"stationName": {}
}
},
"stationIconLabel": "Значок станции",
"liveNow": "В эфире",
"equalizerBandLabel": "Полоса {band}",
"@equalizerBandLabel": {
"placeholders": {
"band": {}
}
},
"equalizerBandValue": "{value} дБ",
"@equalizerBandValue": {
"placeholders": {
"value": {}
}
},
"equalizerPresetFlat": "Плоский",
"equalizerPresetRock": "Рок",
"equalizerPresetPop": "Поп",
"equalizerPresetBassBoost": "Усиление басов",
"equalizerPresetJazz": "Джаз",
"equalizerPresetVoice": "Голос",
"equalizerPresetCustom": "Пользовательский",
"onboardingTitle": "Добро пожаловать в PluriWave",
"onboardingNewsTitle": "Что нового",
"onboardingStartAction": "Начать",
"onboardingCloseTooltip": "Закрыть",
"radioRecordingError": "Ошибка записи радио: {error}",
"@radioRecordingError": {
"placeholders": {
"error": {}
}
},
"radioApiConnectionError": "Нет подключения к API радио",
"radioSearchError": "Ошибка поиска. Проверьте подключение.",
"radioLoadMoreStationsError": "Не удалось загрузить больше станций.",
"radioNearbyStationsError": "Не удалось обнаружить ближайшие станции. Используйте фильтры по стране.",
"radioCannotPlayStation": "Невозможно воспроизвести \"{stationName}\"",
"@radioCannotPlayStation": {
"placeholders": {
"stationName": {}
}
},
"recordingSelectStationFirst": "Сначала выберите станцию для записи.",
"recordingStartError": "Не удалось начать запись: {error}",
"@recordingStartError": {
"placeholders": {
"error": {}
}
},
"unsupportedConfigVersion": "Неподдерживаемая версия конфигурации",
"audioErrorGeneric": "Ошибка воспроизведения",
"audioErrorNoInternet": "Нет подключения к интернету",
"audioErrorInvalidUrl": "URL радио недействителен",
"audioErrorNotFound": "Радио недоступно (ошибка 404)",
"audioErrorTimeout": "Время ожидания подключения истекло",
"audioErrorCannotConnect": "Не удалось подключиться к радио",
"audioErrorUnsupportedFormat": "Неподдерживаемый формат потока",
"audioErrorDecode": "Ошибка декодирования аудиопотока",
"audioErrorCleartext": "Это радио использует незашифрованный HTTP, что не разрешено",
"audioErrorSsl": "Недействительный SSL-сертификат у радио",
"audioErrorCannotPlay": "Это радио невозможно воспроизвести",
"audioErrorUnexpectedPlayback": "Неожиданная ошибка воспроизведения",
"androidExactAlarmScheduleError": "Android не смог запланировать точный будильник. Проверьте разрешение для точных будильников.",
"recordingPathEmptyError": "Путь записи не может быть пустым",
"recordingMaxSizeInvalidError": "Максимальный размер должен быть больше нуля",
"recordingAlreadyActiveError": "Запись уже выполняется",
"alarmRingingFallbackActive": "Воспроизведение с внутренним безопасным аудио.",
"alarmRingingPreparingFallback": "Подготавливается внутреннее безопасное аудио.",
"alarmRingingTryingStation": "Пытаемся воспроизвести вашу станцию в максимально доступном качестве.",
"alarmScheduleOnce": "Один раз · {date}",
"@alarmScheduleOnce": {
"placeholders": {
"date": {}
}
},
"alarmScheduleWeekdays": "Дни: {days}",
"@alarmScheduleWeekdays": {
"placeholders": {
"days": {}
}
},
"androidReliabilityTitle": "Проверить надёжность Android",
"closeAction": "Закрыть",
"customOption": "Своя",
"endLabel": "Конец",
"equalizerDisable": "Отключить эквалайзер",
"helpTitle": "Помощь и руководство",
"helpSubtitle": "Посмотрите функции, советы и новости PluriWave.",
"indefiniteOption": "Без ограничения",
"invalidNumber": "Недопустимое число",
"nameLabel": "Название",
"notPlaying": "Не воспроизводится",
"oneTimeOption": "Один раз",
"pausePlaybackTooltip": "Пауза",
"qualityOriginal": "Исходное качество: {quality}",
"@qualityOriginal": {
"placeholders": {
"quality": {}
}
},
"qualityUnknown": "Качество не указано",
"recordAction": "Записать",
"recordDurationTitle": "Длительность записи",
"recordRadioSubtitle": "Выберите длительность записи.",
"recordRadioTitle": "Записать радио",
"recordingActiveTitle": "Запись радио",
"recordingDirectTitle": "Прямая запись",
"recordingsOpenFolderPlainError": "Не удалось открыть папку записей",
"recordingsOpenLatest": "Открыть последнюю запись",
"recordingsOpenLatestError": "Не удалось открыть последнюю запись",
"startLabel": "Начало",
"startPlaybackTooltip": "Начать воспроизведение",
"stopAction": "Остановить",
"stopPlaybackTooltip": "Остановить воспроизведение",
"weekdayShortMonday": "Пн",
"weekdayShortTuesday": "Вт",
"weekdayShortWednesday": "Ср",
"weekdayShortThursday": "Чт",
"weekdayShortFriday": "Пт",
"weekdayShortSaturday": "Сб",
"weekdayShortSunday": "Вс",
"stationCount": "{count, plural, one{{count} станция} few{{count} станции} other{{count} станций}}",
"alarmIconLabel": "Музыкальный будильник",
"vacationIconLabel": "Режим отпуска",
"streamUrlHint": "https://stream.example.com:8000/radio",
"advancedEqSectionTitle": "Расширенные настройки EQ",
"advancedEqEnableToggle": "Включить EQ для каждого устройства",
"advancedEqEnableToggleSubtitle": "Автоматически применять другой пресет EQ при смене аудиовыхода.",
"advancedEqKnownDevicesTitle": "Известные аудиоустройства",
"advancedEqKnownDevicesEmpty": "Аудиоустройства пока не зарегистрированы. Подключите устройство, чтобы начать.",
"advancedEqDevicePresetLabel": "Пресет: {presetName}",
"@advancedEqDevicePresetLabel": {
"placeholders": {
"presetName": {}
}
},
"preNoticeCountdown": "Начнётся через {minutes} мин",
"snoozeCountdown": "Прозвонит через {minutes} мин",
"@snoozeCountdown": {
"placeholders": {
"minutes": {
"type": "int"
}
}
},
"snoozeAgainAction": "Отложить снова",
"alarmRingingNotificationTitle": "Будильник PluriWave",
"alarmFireChannelName": "Звонящие будильники",
"alarmFireChannelDescription": "Срочный звук и экран, когда должен сработать музыкальный будильник",
"alarmPreNoticeChannelName": "Напоминания о будильнике",
"alarmPreNoticeChannelDescription": "Беззвучные уведомления перед будильником",
"openFolderChooserTitle": "Открыть папку",
"openRecordingChooserTitle": "Открыть запись",
"@preNoticeCountdown": {
"placeholders": {
"minutes": {
"type": "int"
}
}
},
"eqDeviceEditTitle": "Изменить устройство",
"eqDeviceNameLabel": "Название устройства",
"eqDeviceNameHint": "Напр.: Колонка в гостиной",
"eqDeviceNameConfirm": "Сохранить",
"eqDeviceConnected": "Подключено",
"localMusicSectionTitle": "Локальная музыка (Android Auto)",
"localMusicSectionDescription": "Выберите папку на этом устройстве, чтобы просматривать и воспроизводить её аудиофайлы в автомобиле.",
"localMusicFolderNotConfigured": "Папка не выбрана",
"localMusicFolderTitle": "Папка локальной музыки",
"localMusicChoosePath": "Выбрать папку",
"localMusicChangePath": "Изменить папку",
"localMusicFolderUpdated": "Папка локальной музыки обновлена",
"localMusicFolderSaveError": "Не удалось сохранить папку: {error}",
"@localMusicFolderSaveError": {
"placeholders": {
"error": {}
}
},
"localMusicFolderGenericName": "Выбранная папка"
}