The premium sheet had no close affordance or way to defer, and its copy only said "Función Premium" without stating what it unlocks. Adds a header close (X) button and a "not now" secondary action so dismissal is never harder than purchasing, and replaces the bare title with a concrete, honest breakdown of the 5 things premium unlocks (no ads, Android Auto, station recording, alarm vacation ranges, unlimited alarms) plus the one-time-purchase framing. The phone equalizer is never listed, since it stays free for everyone. New l10n keys added to all 13 locales.
1915 lines
59 KiB
Dart
1915 lines
59 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 => 'PluriWave';
|
||
|
||
@override
|
||
String get navHome => 'Слушать';
|
||
|
||
@override
|
||
String get navSearch => 'Поиск';
|
||
|
||
@override
|
||
String get navFavorites => 'Избранное';
|
||
|
||
@override
|
||
String get navAlarms => 'Будильники';
|
||
|
||
@override
|
||
String get navSettings => 'Настройки';
|
||
|
||
@override
|
||
String get actionOk => 'ОК';
|
||
|
||
@override
|
||
String get sleepTimer => 'Таймер сна';
|
||
|
||
@override
|
||
String get sleepTimerDescription =>
|
||
'Плавное выключение радио с точным обратным отсчётом.';
|
||
|
||
@override
|
||
String get cancelTimer => 'Отменить таймер';
|
||
|
||
@override
|
||
String get optionOther => 'Другое';
|
||
|
||
@override
|
||
String get customDurationTitle => 'Своя длительность';
|
||
|
||
@override
|
||
String get durationGreaterThanZero => 'Выберите длительность больше нуля.';
|
||
|
||
@override
|
||
String get hoursLabel => 'Часы';
|
||
|
||
@override
|
||
String get minutesLabel => 'Минуты';
|
||
|
||
@override
|
||
String get secondsLabel => 'Секунды';
|
||
|
||
@override
|
||
String durationHoursMinutesSeconds(
|
||
Object hours,
|
||
Object minutes,
|
||
Object seconds,
|
||
) {
|
||
return '$hours ч $minutes мин $seconds сек';
|
||
}
|
||
|
||
@override
|
||
String durationMinutesSeconds(Object minutes, Object seconds) {
|
||
return '$minutes мин $seconds сек';
|
||
}
|
||
|
||
@override
|
||
String durationMinutesOnly(Object minutes) {
|
||
return '$minutes мин';
|
||
}
|
||
|
||
@override
|
||
String durationSecondsOnly(Object seconds) {
|
||
return '$seconds сек';
|
||
}
|
||
|
||
@override
|
||
String get saveQuickAccess => 'Сохранить как быстрый доступ';
|
||
|
||
@override
|
||
String get startTimer => 'Запустить таймер';
|
||
|
||
@override
|
||
String skipCurrentAlarmExecution(Object alarmName) {
|
||
return 'Этот запуск $alarmName пропущен.';
|
||
}
|
||
|
||
@override
|
||
String get settingsTitle => 'Настройки';
|
||
|
||
@override
|
||
String get settingsSubtitle =>
|
||
'Точная настройка звука, резервных копий и пользовательских станций.';
|
||
|
||
@override
|
||
String get settingsGroupAudioTitle => 'АУДИО';
|
||
|
||
@override
|
||
String get settingsGroupStationsTitle => 'СТАНЦИИ';
|
||
|
||
@override
|
||
String get settingsGroupRecordingsTitle => 'ЗАПИСИ И МУЗЫКА';
|
||
|
||
@override
|
||
String get settingsGroupApplicationTitle => 'ПРИЛОЖЕНИЕ';
|
||
|
||
@override
|
||
String get infoSectionTitle => 'Информация';
|
||
|
||
@override
|
||
String get languageSectionTitle => 'Язык';
|
||
|
||
@override
|
||
String get languageSectionDescription =>
|
||
'Выберите, как отображается язык приложения.';
|
||
|
||
@override
|
||
String get languageSystemDefault => 'Система';
|
||
|
||
@override
|
||
String get languageSpanish => 'Испанский';
|
||
|
||
@override
|
||
String get languageEnglish => 'Английский';
|
||
|
||
@override
|
||
String languageUpdated(Object languageName) {
|
||
return 'Язык обновлён: $languageName';
|
||
}
|
||
|
||
@override
|
||
String get languageUpdatedSystem => 'Язык обновлён: система';
|
||
|
||
@override
|
||
String get timerSectionTitle => 'Таймер сна';
|
||
|
||
@override
|
||
String get timerSectionAdd => 'Добавить';
|
||
|
||
@override
|
||
String get timerSectionDescription =>
|
||
'Настройте быстрые пресеты, которые появляются при автоматическом выключении радио.';
|
||
|
||
@override
|
||
String get timerSectionRestoreRecommended =>
|
||
'Восстановить рекомендуемое время';
|
||
|
||
@override
|
||
String get newQuickAccessTitle => 'Новый быстрый доступ';
|
||
|
||
@override
|
||
String get saveQuickAccessButton => 'Сохранить быстрый доступ';
|
||
|
||
@override
|
||
String get settingsSafeStatus => 'Безопасно';
|
||
|
||
@override
|
||
String get recordingsSectionTitle => 'Записи';
|
||
|
||
@override
|
||
String get recordingsFolderDialogTitle => 'Выберите папку для записей';
|
||
|
||
@override
|
||
String get recordingsPathUpdated => 'Путь записи обновлён';
|
||
|
||
@override
|
||
String recordingsPathSaveError(Object error) {
|
||
return 'Не удалось сохранить путь: $error';
|
||
}
|
||
|
||
@override
|
||
String get recordingsDefaultFolderRestored =>
|
||
'Будет использована внутренняя папка по умолчанию';
|
||
|
||
@override
|
||
String get recordingsFolderTitle => 'Папка записей';
|
||
|
||
@override
|
||
String get recordingsPathCalculating => 'Вычисление пути...';
|
||
|
||
@override
|
||
String get recordingsChangePath => 'Изменить путь';
|
||
|
||
@override
|
||
String get recordingsUseDefaultPath => 'Использовать путь по умолчанию';
|
||
|
||
@override
|
||
String get recordingsOriginalStreamHint =>
|
||
'Радио сохраняется из исходного потока без повторного сжатия.';
|
||
|
||
@override
|
||
String get equalizerActive => 'Активно';
|
||
|
||
@override
|
||
String get equalizerDisabled => 'Отключено';
|
||
|
||
@override
|
||
String get equalizerEnable => 'Включить эквалайзер';
|
||
|
||
@override
|
||
String get equalizerRealtimeSubtitle =>
|
||
'Изменения применяются к текущей станции в реальном времени.';
|
||
|
||
@override
|
||
String get equalizerPendingSubtitle =>
|
||
'Изменения сохраняются и применятся, когда Android включит эффект.';
|
||
|
||
@override
|
||
String get equalizerPerStationTitle =>
|
||
'Использовать свой EQ для этого избранного';
|
||
|
||
@override
|
||
String equalizerPerStationActive(Object stationName) {
|
||
return 'Активно для $stationName';
|
||
}
|
||
|
||
@override
|
||
String equalizerPerStationMain(Object stationName) {
|
||
return 'Используется основной EQ для $stationName';
|
||
}
|
||
|
||
@override
|
||
String get equalizerBaseExplainer =>
|
||
'Это базовый эквалайзер: он применяется ко всем станциям без собственной настройки. Свой EQ конкретной станции задаётся на экране её воспроизведения и имеет приоритет над этим.';
|
||
|
||
@override
|
||
String get equalizerActiveOutputLabel => 'Активный выход';
|
||
|
||
@override
|
||
String get equalizerActiveOutputDefault => 'Динамик этого устройства';
|
||
|
||
@override
|
||
String get equalizerStationsWithOwnEqTitle => 'Станции со своим EQ';
|
||
|
||
@override
|
||
String get equalizerStationsWithOwnEqSubtitle =>
|
||
'Игнорируют этот базовый эквалайзер';
|
||
|
||
@override
|
||
String get equalizerStationsWithOwnEqEmpty =>
|
||
'Пока ни у одной станции нет своего EQ.';
|
||
|
||
@override
|
||
String get equalizerSaveAsPresetAction => 'Сохранить как пресет';
|
||
|
||
@override
|
||
String get equalizerResetToFlatAction => 'Сбросить на плоский';
|
||
|
||
@override
|
||
String get equalizerSavePresetDialogTitle => 'Сохранить как пресет';
|
||
|
||
@override
|
||
String get equalizerSavePresetNameLabel => 'Название пресета';
|
||
|
||
@override
|
||
String get equalizerSavePresetEmptyNameError => 'Введите название пресета.';
|
||
|
||
@override
|
||
String get equalizerSavePresetConfirm => 'Сохранить';
|
||
|
||
@override
|
||
String get preferredStationTitle => 'Предпочитаемая станция';
|
||
|
||
@override
|
||
String get preferredStationDescription =>
|
||
'Предварительно выбирается при создании будильников и доступна для быстрого воспроизведения.';
|
||
|
||
@override
|
||
String get preferredStationNoStationsTitle => 'Пока нет доступных станций';
|
||
|
||
@override
|
||
String get preferredStationNoStationsSubtitle =>
|
||
'Сохраните избранные или загрузите станции, чтобы выбрать предпочитаемую.';
|
||
|
||
@override
|
||
String get preferredStationAutomaticFallback => 'Автоматический резерв';
|
||
|
||
@override
|
||
String get preferredStationDefaultFavorite => 'Избранное по умолчанию';
|
||
|
||
@override
|
||
String preferredStationCurrent(Object stationName) {
|
||
return 'Текущая предпочитаемая: $stationName';
|
||
}
|
||
|
||
@override
|
||
String preferredStationAutoUsing(Object stationName) {
|
||
return 'Нет избранных: автоматически используется $stationName';
|
||
}
|
||
|
||
@override
|
||
String get preferredStationPlay => 'Воспроизвести предпочитаемую';
|
||
|
||
@override
|
||
String get customStationsTitle => 'Пользовательские станции';
|
||
|
||
@override
|
||
String get customStationsAdd => 'Добавить';
|
||
|
||
@override
|
||
String get customStationsEmpty => 'Пользовательских станций нет.';
|
||
|
||
@override
|
||
String get playAction => 'Воспроизвести';
|
||
|
||
@override
|
||
String get deleteAction => 'Удалить';
|
||
|
||
@override
|
||
String get addStationTitle => 'Добавить станцию';
|
||
|
||
@override
|
||
String get stationNameLabel => 'Название *';
|
||
|
||
@override
|
||
String get unnamedStation => 'Станция без названия';
|
||
|
||
@override
|
||
String get requiredField => 'Обязательное поле';
|
||
|
||
@override
|
||
String get streamUrlLabel => 'URL потока *';
|
||
|
||
@override
|
||
String get invalidUrl => 'Недопустимый URL';
|
||
|
||
@override
|
||
String get countryOptionalLabel => 'Страна (необязательно)';
|
||
|
||
@override
|
||
String get saveStation => 'Сохранить станцию';
|
||
|
||
@override
|
||
String get backupSectionTitle => 'Резервная копия';
|
||
|
||
@override
|
||
String get backupExportTitle => 'Экспортировать настройки';
|
||
|
||
@override
|
||
String get backupExportSubtitle =>
|
||
'Избранное, пользовательские станции и пресеты EQ';
|
||
|
||
@override
|
||
String get backupImportTitle => 'Импортировать настройки';
|
||
|
||
@override
|
||
String get backupImportSubtitle => 'Восстановить из файла резервной копии';
|
||
|
||
@override
|
||
String get backupShareSubject => 'PluriWave — резервная копия';
|
||
|
||
@override
|
||
String backupShareText(Object date) {
|
||
return 'Настройки PluriWave, экспортированные $date';
|
||
}
|
||
|
||
@override
|
||
String backupExportError(Object error) {
|
||
return 'Ошибка при экспорте: $error';
|
||
}
|
||
|
||
@override
|
||
String get backupImportConfirmMessage =>
|
||
'Это добавит избранное, станции и пресеты из файла. Продолжить?';
|
||
|
||
@override
|
||
String get backupImportSuccess => 'Настройки успешно импортированы';
|
||
|
||
@override
|
||
String backupImportError(Object error) {
|
||
return 'Ошибка при импорте: $error';
|
||
}
|
||
|
||
@override
|
||
String get appVersionLoading => 'Загрузка версии...';
|
||
|
||
@override
|
||
String appVersionSubtitle(Object version) {
|
||
return '$version — мировое радио';
|
||
}
|
||
|
||
@override
|
||
String get savedFavoritesTitle => 'Сохранённое избранное';
|
||
|
||
@override
|
||
String get stationFilterTitle => 'Фильтр станций';
|
||
|
||
@override
|
||
String get stationFilterSubtitle =>
|
||
'Только станции, подтверждённые как активные';
|
||
|
||
@override
|
||
String get backgroundAudioTitle => 'Фоновое аудио';
|
||
|
||
@override
|
||
String get backgroundAudioSubtitle => 'Продолжается при выключенном экране';
|
||
|
||
@override
|
||
String get dash => '—';
|
||
|
||
@override
|
||
String get cancelAction => 'Отмена';
|
||
|
||
@override
|
||
String get equalizerTitle => 'Эквалайзер';
|
||
|
||
@override
|
||
String get recordingsOpenFolder => 'Открыть папку';
|
||
|
||
@override
|
||
String recordingsOpenFolderError(Object error) {
|
||
return 'Не удалось открыть папку: $error';
|
||
}
|
||
|
||
@override
|
||
String get recordingsMaxSizeTitle => 'Максимальный размер записи';
|
||
|
||
@override
|
||
String recordingsMaxSizeSubtitle(int size) {
|
||
return 'Текущий лимит: $size МБ';
|
||
}
|
||
|
||
@override
|
||
String get recordingsMaxSizeDialogTitle => 'Максимальный размер одной записи';
|
||
|
||
@override
|
||
String get recordingsMaxSizeMbLabel => 'Максимум мегабайт';
|
||
|
||
@override
|
||
String recordingsMaxSizeSaved(int size) {
|
||
return 'Лимит записи обновлён до $size МБ';
|
||
}
|
||
|
||
@override
|
||
String get recordingsLibraryTitle => 'Мои записи';
|
||
|
||
@override
|
||
String recordingsLibraryStorageCaption(int usedMb, int totalMb) {
|
||
return 'Использовано $usedMb МБ из $totalMb МБ';
|
||
}
|
||
|
||
@override
|
||
String get recordingsLibraryStorageFolderCaption =>
|
||
'Music/PluriWave · при достижении лимита удаляются старые записи';
|
||
|
||
@override
|
||
String get recordingsLibraryEmptyTitle => 'Записей пока нет';
|
||
|
||
@override
|
||
String get recordingsLibraryEmptySubtitle =>
|
||
'Записи, которые вы сохраните, появятся здесь.';
|
||
|
||
@override
|
||
String get recordingActionRename => 'Переименовать';
|
||
|
||
@override
|
||
String get recordingActionShare => 'Поделиться';
|
||
|
||
@override
|
||
String get recordingActionDelete => 'Удалить';
|
||
|
||
@override
|
||
String get recordingRenameDialogTitle => 'Переименовать запись';
|
||
|
||
@override
|
||
String get recordingRenameLabel => 'Название';
|
||
|
||
@override
|
||
String get recordingRenameEmptyError => 'Введите название';
|
||
|
||
@override
|
||
String get recordingDeleteConfirmTitle => 'Удалить запись?';
|
||
|
||
@override
|
||
String get recordingDeleteConfirmMessage => 'Это действие нельзя отменить.';
|
||
|
||
@override
|
||
String get recordingsLibrarySettingsTooltip => 'Настройки записи';
|
||
|
||
@override
|
||
String get stationOrderTitle => 'Порядок станций';
|
||
|
||
@override
|
||
String get stationOrderByName => 'По названию';
|
||
|
||
@override
|
||
String get stationOrderByQuality => 'По качеству';
|
||
|
||
@override
|
||
String get stationOrderByPopularity => 'По популярности';
|
||
|
||
@override
|
||
String get stationOrderScopeDescription =>
|
||
'Применяется к избранному, поиску, ближайшим станциям и быстрым спискам.';
|
||
|
||
@override
|
||
String get favoriteGroupsTitle => 'Списки избранного';
|
||
|
||
@override
|
||
String get favoriteGroupsDescription =>
|
||
'Создавайте короткие списки, чтобы упорядочить сохранённые станции.';
|
||
|
||
@override
|
||
String get favoriteGroupsAdd => 'Добавить список';
|
||
|
||
@override
|
||
String get favoriteGroupsEdit => 'Изменить список';
|
||
|
||
@override
|
||
String get favoriteGroupsDelete => 'Удалить список';
|
||
|
||
@override
|
||
String get favoriteGroupsNameLabel => 'Название списка';
|
||
|
||
@override
|
||
String get favoriteGroupsNameTooLong => 'Максимум 28 символов.';
|
||
|
||
@override
|
||
String get favoriteGroupsUnassigned => 'Без списка';
|
||
|
||
@override
|
||
String get favoriteGroupsProtectedHint =>
|
||
'Список по умолчанию: нельзя изменить или удалить.';
|
||
|
||
@override
|
||
String get favoriteGroupsCreated => 'Список создан';
|
||
|
||
@override
|
||
String get favoriteGroupsUpdated => 'Список обновлён';
|
||
|
||
@override
|
||
String get favoriteGroupsDeleted =>
|
||
'Список удалён; его станции вернулись в «Без списка».';
|
||
|
||
@override
|
||
String get favoriteGroupsAssign => 'Переместить в список';
|
||
|
||
@override
|
||
String favoriteGroupsAssignSubtitle(Object groupName) {
|
||
return 'Текущий список: $groupName';
|
||
}
|
||
|
||
@override
|
||
String favoriteGroupsAssigned(Object stationName, Object groupName) {
|
||
return '$stationName перемещена в $groupName';
|
||
}
|
||
|
||
@override
|
||
String get favoritesTitle => 'Избранное';
|
||
|
||
@override
|
||
String get favoritesEmptyTitle => 'Избранного пока нет';
|
||
|
||
@override
|
||
String get favoritesEmptySubtitle =>
|
||
'Нажмите на сердце у любой станции, чтобы сохранить её в коллекцию.';
|
||
|
||
@override
|
||
String get favoritesHeaderSubtitle =>
|
||
'Организуйте коллекцию по спискам и держите важные радио под рукой.';
|
||
|
||
@override
|
||
String get favoritesCollection => 'Коллекция';
|
||
|
||
@override
|
||
String favoritesSavedCount(int count) {
|
||
return '$count сохранено';
|
||
}
|
||
|
||
@override
|
||
String get favoritesRemoveTooltip => 'Удалить из избранного';
|
||
|
||
@override
|
||
String favoritesRemovedMessage(Object stationName) {
|
||
return '$stationName удалена из избранного';
|
||
}
|
||
|
||
@override
|
||
String get favoritesFilterAllLabel => 'Все';
|
||
|
||
@override
|
||
String favoriteGroupsChipLabel(Object groupName, int count) {
|
||
return '$groupName · $count';
|
||
}
|
||
|
||
@override
|
||
String get favoriteGroupsManage => 'Управление списками';
|
||
|
||
@override
|
||
String get customStationsAddCta => 'Добавить пользовательскую станцию';
|
||
|
||
@override
|
||
String get alarmPostponedCurrentExecution =>
|
||
'Будильник отложен для этого запуска.';
|
||
|
||
@override
|
||
String get searchScreenTitle => 'Поиск сигнала';
|
||
|
||
@override
|
||
String get searchScreenSubtitle =>
|
||
'Находите радио по названию, стране или языку с быстрыми фильтрами и высокой контрастностью.';
|
||
|
||
@override
|
||
String get searchFiltersLabel => 'Фильтры';
|
||
|
||
@override
|
||
String get searchHint => 'Радио Горизонт, джаз, новости...';
|
||
|
||
@override
|
||
String get searchCountryFilterLabel => 'Страна';
|
||
|
||
@override
|
||
String get searchLanguageFilterLabel => 'Язык';
|
||
|
||
@override
|
||
String get searchMinQualityFilterLabel => 'Минимальное качество';
|
||
|
||
@override
|
||
String get searchLoadingStationsLabel => 'ПОИСК СТАНЦИЙ…';
|
||
|
||
@override
|
||
String get searchEmptyTitle => 'Найдите станцию';
|
||
|
||
@override
|
||
String get searchNoResultsTitle => 'Нет результатов';
|
||
|
||
@override
|
||
String searchNoResultsForQueryTitle(Object query) {
|
||
return 'Нет результатов по запросу «$query»';
|
||
}
|
||
|
||
@override
|
||
String get searchEmptySubtitle =>
|
||
'Используйте верхнюю строку или чипы, чтобы находить сигналы со всего мира.';
|
||
|
||
@override
|
||
String get searchNoResultsSubtitle =>
|
||
'Попробуйте убрать фильтры или ввести другое название, чтобы найти активный сигнал.';
|
||
|
||
@override
|
||
String searchResultsCount(num count) {
|
||
String _temp0 = intl.Intl.pluralLogic(
|
||
count,
|
||
locale: localeName,
|
||
other: '$count результатов',
|
||
few: '$count результата',
|
||
one: '$count результат',
|
||
);
|
||
return '$_temp0';
|
||
}
|
||
|
||
@override
|
||
String searchClearFiltersAction(num count) {
|
||
String _temp0 = intl.Intl.pluralLogic(
|
||
count,
|
||
locale: localeName,
|
||
other: 'Убрать $count фильтров',
|
||
few: 'Убрать $count фильтра',
|
||
one: 'Убрать фильтр',
|
||
);
|
||
return '$_temp0';
|
||
}
|
||
|
||
@override
|
||
String get countriesScreenTitle => 'Страны';
|
||
|
||
@override
|
||
String get countriesSearchHint => 'Страна или код...';
|
||
|
||
@override
|
||
String get countriesYourLanguagesTitle => 'Ваши языки';
|
||
|
||
@override
|
||
String get countriesAllTitle => 'Все страны';
|
||
|
||
@override
|
||
String get radioCountriesError => 'Не удалось загрузить страны.';
|
||
|
||
@override
|
||
String get countrySpain => 'Испания';
|
||
|
||
@override
|
||
String get countryUsa => 'США';
|
||
|
||
@override
|
||
String get countryMexico => 'Мексика';
|
||
|
||
@override
|
||
String get countryArgentina => 'Аргентина';
|
||
|
||
@override
|
||
String get countryUk => 'Великобритания';
|
||
|
||
@override
|
||
String get countryFrance => 'Франция';
|
||
|
||
@override
|
||
String get countryGermany => 'Германия';
|
||
|
||
@override
|
||
String get countryItaly => 'Италия';
|
||
|
||
@override
|
||
String get countryBrazil => 'Бразилия';
|
||
|
||
@override
|
||
String get countryJapan => 'Япония';
|
||
|
||
@override
|
||
String get languageNameSpanish => 'испанский';
|
||
|
||
@override
|
||
String get languageNameEnglish => 'английский';
|
||
|
||
@override
|
||
String get languageNameFrench => 'французский';
|
||
|
||
@override
|
||
String get languageNameGerman => 'немецкий';
|
||
|
||
@override
|
||
String get languageNamePortuguese => 'португальский';
|
||
|
||
@override
|
||
String get languageNameItalian => 'итальянский';
|
||
|
||
@override
|
||
String get languageNameJapanese => 'японский';
|
||
|
||
@override
|
||
String get languageNameArabic => 'арабский';
|
||
|
||
@override
|
||
String get languageNameRussian => 'русский';
|
||
|
||
@override
|
||
String get homeScreenSubtitle =>
|
||
'Глобальное радио в прямом эфире с чистыми сигналами, умным избранным и визуальным стилем телевикторины.';
|
||
|
||
@override
|
||
String get exploreStations => 'Изучить станции';
|
||
|
||
@override
|
||
String stationsCount(int count) {
|
||
return '$count радиостанций';
|
||
}
|
||
|
||
@override
|
||
String get qualityHd => 'HD-качество';
|
||
|
||
@override
|
||
String get yourStationsTitle => 'Ваши станции';
|
||
|
||
@override
|
||
String get seeAllAction => 'Смотреть все';
|
||
|
||
@override
|
||
String get openFullPlayerTooltip => 'Открыть полный плеер';
|
||
|
||
@override
|
||
String get nowListeningLabel => 'Сейчас слушаете';
|
||
|
||
@override
|
||
String get nothingPlayingTitle => 'Пока ничего не воспроизводится';
|
||
|
||
@override
|
||
String get nothingPlayingSubtitle =>
|
||
'Выберите станцию из раздела «Ваши станции» или найдите её, чтобы начать.';
|
||
|
||
@override
|
||
String get nearYou => 'Рядом с вами';
|
||
|
||
@override
|
||
String nearYouInCountry(Object country) {
|
||
return 'Рядом с вами · $country';
|
||
}
|
||
|
||
@override
|
||
String get detectAction => 'Определить';
|
||
|
||
@override
|
||
String get liveRadar => 'Радар в эфире';
|
||
|
||
@override
|
||
String get genresTitle => 'Жанры';
|
||
|
||
@override
|
||
String get exploreByTitle => 'Обзор по';
|
||
|
||
@override
|
||
String get exploreTrendingTitle => 'В тренде';
|
||
|
||
@override
|
||
String get exploreTrendingSubtitle => 'Сегодня';
|
||
|
||
@override
|
||
String get exploreNewTitle => 'Новинки';
|
||
|
||
@override
|
||
String get exploreNewSubtitle => 'На этой неделе';
|
||
|
||
@override
|
||
String get popularNowTitle => 'Популярно сейчас';
|
||
|
||
@override
|
||
String get offlineBannerTitle => 'Нет подключения';
|
||
|
||
@override
|
||
String get retryAction => 'Повторить';
|
||
|
||
@override
|
||
String get noStationsAvailable => 'Нет доступных станций';
|
||
|
||
@override
|
||
String get noStationsAvailableSubtitle =>
|
||
'Попробуйте обновить или выбрать другой жанр, чтобы снова поймать сигнал.';
|
||
|
||
@override
|
||
String get genrePop => 'Поп';
|
||
|
||
@override
|
||
String get genreRock => 'Рок';
|
||
|
||
@override
|
||
String get genreJazz => 'Джаз';
|
||
|
||
@override
|
||
String get genreClassical => 'Классика';
|
||
|
||
@override
|
||
String get genreElectronic => 'Электронная';
|
||
|
||
@override
|
||
String get genreNews => 'Новости';
|
||
|
||
@override
|
||
String get genreTalk => 'Разговорные';
|
||
|
||
@override
|
||
String get genreHipHop => 'Хип-хоп';
|
||
|
||
@override
|
||
String get genreCountry => 'Кантри';
|
||
|
||
@override
|
||
String get genreMetal => 'Метал';
|
||
|
||
@override
|
||
String get genreReggae => 'Регги';
|
||
|
||
@override
|
||
String get genreLatin => 'Латинская';
|
||
|
||
@override
|
||
String get alarmScreenTitle => 'Музыкальное пробуждение';
|
||
|
||
@override
|
||
String get alarmScreenSubtitle =>
|
||
'Будильники с радио, безопасным звуком, умными отпусками и всегда видимым следующим запуском.';
|
||
|
||
@override
|
||
String get createAlarmAction => 'Создать будильник';
|
||
|
||
@override
|
||
String alarmsCount(int count) {
|
||
return '$count будильников';
|
||
}
|
||
|
||
@override
|
||
String get activeAlarmsWithoutNextTitle =>
|
||
'Активные будильники без следующего запуска';
|
||
|
||
@override
|
||
String get noActiveAlarms => 'Нет активных будильников';
|
||
|
||
@override
|
||
String get nextAlarmTitle => 'Следующий будильник';
|
||
|
||
@override
|
||
String activeAlarmsWithoutNextSubtitle(int count) {
|
||
return 'Есть $count активных будильников, но сейчас у них нет допустимой будущей даты. Проверьте дату, дни и отпуска.';
|
||
}
|
||
|
||
@override
|
||
String get createAlarmHint =>
|
||
'Создайте будильник, и PluriWave автоматически рассчитает следующий запуск.';
|
||
|
||
@override
|
||
String get alarmVacationPlay => 'Звонит в отпуске';
|
||
|
||
@override
|
||
String get alarmVacationPause => 'Пауза в отпуске';
|
||
|
||
@override
|
||
String alarmFadeInLabel(int seconds) {
|
||
return 'Плавное усиление $secondsс';
|
||
}
|
||
|
||
@override
|
||
String alarmNextExecution(Object date) {
|
||
return 'Следующий запуск: $date';
|
||
}
|
||
|
||
@override
|
||
String get alarmNoNextExecution => 'Нет активного следующего запуска.';
|
||
|
||
@override
|
||
String alarmSkippedExecution(Object date) {
|
||
return 'Один запуск был пропущен: $date.';
|
||
}
|
||
|
||
@override
|
||
String get editAction => 'Изменить';
|
||
|
||
@override
|
||
String get skipNextAction => 'Пропустить следующий';
|
||
|
||
@override
|
||
String get deleteTooltip => 'Удалить';
|
||
|
||
@override
|
||
String get alarmHeroSkipAction => 'Пропустить';
|
||
|
||
@override
|
||
String get alarmDeleteConfirmTitle => 'Удалить будильник?';
|
||
|
||
@override
|
||
String get alarmDeleteConfirmMessage => 'Это действие нельзя отменить.';
|
||
|
||
@override
|
||
String get alarmSkippedNoNextSnackbar =>
|
||
'Будильник пропущен. Следующего запуска нет.';
|
||
|
||
@override
|
||
String alarmSkippedReturnsSnackbar(Object date) {
|
||
return 'Будильник пропущен. Вернётся $date.';
|
||
}
|
||
|
||
@override
|
||
String alarmVacationPausedNoNext(Object vacationName) {
|
||
return 'Приостановлен из-за отпуска ($vacationName) и без следующего запуска.';
|
||
}
|
||
|
||
@override
|
||
String alarmVacationPausedReturns(Object vacationName, Object date) {
|
||
return 'Приостановлен из-за отпуска ($vacationName) и вернётся $date.';
|
||
}
|
||
|
||
@override
|
||
String alarmVacationReturns(Object date) {
|
||
return 'С активным отпуском снова прозвучит $date.';
|
||
}
|
||
|
||
@override
|
||
String get defaultAlarmName => 'Музыкальный будильник';
|
||
|
||
@override
|
||
String get newAlarmTitle => 'Новый будильник';
|
||
|
||
@override
|
||
String get editAlarmTitle => 'Изменить будильник';
|
||
|
||
@override
|
||
String get nameField => 'Название';
|
||
|
||
@override
|
||
String get timeField => 'Время';
|
||
|
||
@override
|
||
String get dateField => 'Дата';
|
||
|
||
@override
|
||
String get onceOption => 'Один раз';
|
||
|
||
@override
|
||
String get dailyOption => 'Ежедневно';
|
||
|
||
@override
|
||
String get weekdaysOption => 'Дни';
|
||
|
||
@override
|
||
String get soundAndVolumeSection => 'Звук и громкость';
|
||
|
||
@override
|
||
String get alarmFadeInTitle => 'Плавное усиление будильника';
|
||
|
||
@override
|
||
String get alarmFadeInOff => '0 с (без перехода)';
|
||
|
||
@override
|
||
String alarmFadeInSummary(int seconds) {
|
||
return '$seconds с (с 5% до выбранной громкости)';
|
||
}
|
||
|
||
@override
|
||
String get internalSafeSoundLabel => 'Безопасный внутренний звук';
|
||
|
||
@override
|
||
String get soundWarmSunrise => 'Тёплый рассвет';
|
||
|
||
@override
|
||
String get soundSoftBell => 'Мягкий колокольчик';
|
||
|
||
@override
|
||
String get soundDigitalPulse => 'Цифровой импульс';
|
||
|
||
@override
|
||
String get favoriteStationLabel => 'Избранная станция';
|
||
|
||
@override
|
||
String get noStationUseInternalSound =>
|
||
'Без станции: использовать внутренний звук';
|
||
|
||
@override
|
||
String get alarmFallbackStationLabel => 'Резервная станция';
|
||
|
||
@override
|
||
String get alarmStationPickerSearchHint => 'Поиск станции по названию';
|
||
|
||
@override
|
||
String get alarmSnoozeDurationTitle => 'Интервал повтора';
|
||
|
||
@override
|
||
String get snoozeAction => 'Отложить';
|
||
|
||
@override
|
||
String alarmSnoozeOptionLabel(int minutes) {
|
||
return '$minutes мин';
|
||
}
|
||
|
||
@override
|
||
String get alarmSnoozeUsualLabel => 'обычно';
|
||
|
||
@override
|
||
String get saveFavoritesAlarmHint =>
|
||
'Сохраните станции в избранное, чтобы использовать их как музыкальный будильник.';
|
||
|
||
@override
|
||
String get useCurrentStationAction => 'Использовать текущую станцию';
|
||
|
||
@override
|
||
String get playDuringVacations => 'Звонить во время отпусков';
|
||
|
||
@override
|
||
String get playDuringVacationsHint =>
|
||
'Если выключить, следующий запуск перейдёт на первый допустимый день.';
|
||
|
||
@override
|
||
String get saveAlarmAction => 'Сохранить будильник';
|
||
|
||
@override
|
||
String get chooseOneWeekdayError => 'Выберите хотя бы один день недели.';
|
||
|
||
@override
|
||
String get androidReliabilityReview => 'Проверить надёжность Android';
|
||
|
||
@override
|
||
String get statusOk => 'ОК';
|
||
|
||
@override
|
||
String get statusPending => 'ожидает';
|
||
|
||
@override
|
||
String androidReliabilityStatus(
|
||
Object exact,
|
||
Object notifications,
|
||
Object screen,
|
||
) {
|
||
return 'Надёжность: точные $exact · уведомления $notifications · экран $screen';
|
||
}
|
||
|
||
@override
|
||
String get vacationRangesTitle => 'Периоды отпусков';
|
||
|
||
@override
|
||
String get addAction => 'Добавить';
|
||
|
||
@override
|
||
String get vacationRangesHint =>
|
||
'Если у будильника включена «Пауза в отпуске», эти периоды будут автоматически пропущены.';
|
||
|
||
@override
|
||
String get noVacationRangesLoaded => 'Периоды не загружены.';
|
||
|
||
@override
|
||
String get deleteRangeTooltip => 'Удалить период';
|
||
|
||
@override
|
||
String vacationRangesCount(int count) {
|
||
return '$count периодов';
|
||
}
|
||
|
||
@override
|
||
String vacationSummaryActiveCountdown(int days) {
|
||
return 'Идёт сейчас · осталось $days дн.';
|
||
}
|
||
|
||
@override
|
||
String vacationSummaryUpcomingCountdown(int days) {
|
||
return 'Следующий период через $days дн.';
|
||
}
|
||
|
||
@override
|
||
String vacationImpactPausedLabel(Object times) {
|
||
return 'Пауза: $times';
|
||
}
|
||
|
||
@override
|
||
String vacationImpactContinuesLabel(Object times) {
|
||
return 'Продолжает звонить: $times';
|
||
}
|
||
|
||
@override
|
||
String get vacationUpcomingSectionTitle => 'ЗАПЛАНИРОВАНО';
|
||
|
||
@override
|
||
String get vacationPastSectionTitle => 'Прошедшие периоды';
|
||
|
||
@override
|
||
String get addVacationRangeCta => 'Добавить период';
|
||
|
||
@override
|
||
String get vacationExplainerBanner =>
|
||
'В эти периоды будильники с пометкой «пауза на время отпуска» не звонят. Будильники с пометкой «звонить всегда» это не затрагивает.';
|
||
|
||
@override
|
||
String get vacationNoActiveRangeHint =>
|
||
'Сейчас нет активного периода отпуска.';
|
||
|
||
@override
|
||
String get vacationsDefaultName => 'Отпуск';
|
||
|
||
@override
|
||
String get newVacationRangeTitle => 'Новый период отпуска';
|
||
|
||
@override
|
||
String get editVacationRangeTitle => 'Изменить период отпуска';
|
||
|
||
@override
|
||
String get vacationDeleteConfirmTitle => 'Удалить период отпуска?';
|
||
|
||
@override
|
||
String get vacationDeleteConfirmMessage => 'Это действие нельзя отменить.';
|
||
|
||
@override
|
||
String get startField => 'Начало';
|
||
|
||
@override
|
||
String get endField => 'Конец';
|
||
|
||
@override
|
||
String get saveRangeAction => 'Сохранить период';
|
||
|
||
@override
|
||
String get noAlarmsYetTitle => 'Будильников пока нет.';
|
||
|
||
@override
|
||
String get noAlarmsYetSubtitle =>
|
||
'Создайте один, чтобы настроить своё музыкальное пробуждение.';
|
||
|
||
@override
|
||
String get ringingInternalAudioActive =>
|
||
'Звонит с безопасным внутренним звуком.';
|
||
|
||
@override
|
||
String get ringingPreparingInternalAudio =>
|
||
'Подготовка безопасного внутреннего звука.';
|
||
|
||
@override
|
||
String get stopAlarmAction => 'Остановить будильник';
|
||
|
||
@override
|
||
String get alarmStopFailedMessage =>
|
||
'Не удалось подтвердить, что будильник остановлен. Попробуйте снова.';
|
||
|
||
@override
|
||
String get alarmForceStopAction => 'Принудительно остановить';
|
||
|
||
@override
|
||
String get alarmMissedNotificationTitle => 'Пропущенный будильник';
|
||
|
||
@override
|
||
String alarmMissedNotificationText(Object name) {
|
||
return '$name был автоматически отключён через 10 минут.';
|
||
}
|
||
|
||
@override
|
||
String get pauseAction => 'Пауза';
|
||
|
||
@override
|
||
String miniPlayerOpenLabel(Object stationName) {
|
||
return 'Открыть плеер для $stationName';
|
||
}
|
||
|
||
@override
|
||
String get playerIconLabel => 'Плеер';
|
||
|
||
@override
|
||
String get playbackStatusConnecting => 'Подключение...';
|
||
|
||
@override
|
||
String get playbackStatusLive => 'В эфире';
|
||
|
||
@override
|
||
String get playbackStatusPaused => 'Приостановлено';
|
||
|
||
@override
|
||
String get playbackStatusReconnecting => 'Переподключение...';
|
||
|
||
@override
|
||
String get playbackStatusConnectionError => 'Ошибка подключения';
|
||
|
||
@override
|
||
String get playbackStatusStopped => 'Остановлено';
|
||
|
||
@override
|
||
String stationSemanticLabel(Object stationName) {
|
||
return 'Станция $stationName';
|
||
}
|
||
|
||
@override
|
||
String get favoritesAddTooltip => 'Добавить в избранное';
|
||
|
||
@override
|
||
String favoritesAddedMessage(Object stationName) {
|
||
return '$stationName добавлена в избранное';
|
||
}
|
||
|
||
@override
|
||
String get stationIconLabel => 'Значок станции';
|
||
|
||
@override
|
||
String get liveNow => 'В эфире';
|
||
|
||
@override
|
||
String equalizerBandLabel(Object band) {
|
||
return 'Полоса $band';
|
||
}
|
||
|
||
@override
|
||
String equalizerBandValue(Object value) {
|
||
return '$value дБ';
|
||
}
|
||
|
||
@override
|
||
String get equalizerPresetFlat => 'Плоский';
|
||
|
||
@override
|
||
String get equalizerPresetRock => 'Рок';
|
||
|
||
@override
|
||
String get equalizerPresetPop => 'Поп';
|
||
|
||
@override
|
||
String get equalizerPresetBassBoost => 'Усиление басов';
|
||
|
||
@override
|
||
String get equalizerPresetJazz => 'Джаз';
|
||
|
||
@override
|
||
String get equalizerPresetVoice => 'Голос';
|
||
|
||
@override
|
||
String get equalizerPresetCustom => 'Пользовательский';
|
||
|
||
@override
|
||
String get onboardingTitle => 'Добро пожаловать в PluriWave';
|
||
|
||
@override
|
||
String get onboardingNewsTitle => 'Что нового';
|
||
|
||
@override
|
||
String get onboardingStartAction => 'Начать';
|
||
|
||
@override
|
||
String get onboardingCloseTooltip => 'Закрыть';
|
||
|
||
@override
|
||
String radioRecordingError(Object error) {
|
||
return 'Ошибка записи радио: $error';
|
||
}
|
||
|
||
@override
|
||
String get radioApiConnectionError => 'Нет подключения к API радио';
|
||
|
||
@override
|
||
String get radioSearchError => 'Ошибка поиска. Проверьте подключение.';
|
||
|
||
@override
|
||
String get radioLoadMoreStationsError =>
|
||
'Не удалось загрузить больше станций.';
|
||
|
||
@override
|
||
String get radioNearbyStationsError =>
|
||
'Не удалось обнаружить ближайшие станции. Используйте фильтры по стране.';
|
||
|
||
@override
|
||
String radioCannotPlayStation(Object stationName) {
|
||
return 'Невозможно воспроизвести \"$stationName\"';
|
||
}
|
||
|
||
@override
|
||
String get recordingSelectStationFirst =>
|
||
'Сначала выберите станцию для записи.';
|
||
|
||
@override
|
||
String recordingStartError(Object error) {
|
||
return 'Не удалось начать запись: $error';
|
||
}
|
||
|
||
@override
|
||
String get unsupportedConfigVersion => 'Неподдерживаемая версия конфигурации';
|
||
|
||
@override
|
||
String get audioErrorGeneric => 'Ошибка воспроизведения';
|
||
|
||
@override
|
||
String get audioErrorNoInternet => 'Нет подключения к интернету';
|
||
|
||
@override
|
||
String get audioErrorInvalidUrl => 'URL радио недействителен';
|
||
|
||
@override
|
||
String get audioErrorNotFound => 'Радио недоступно (ошибка 404)';
|
||
|
||
@override
|
||
String get audioErrorTimeout => 'Время ожидания подключения истекло';
|
||
|
||
@override
|
||
String get audioErrorCannotConnect => 'Не удалось подключиться к радио';
|
||
|
||
@override
|
||
String get audioErrorUnsupportedFormat => 'Неподдерживаемый формат потока';
|
||
|
||
@override
|
||
String get audioErrorDecode => 'Ошибка декодирования аудиопотока';
|
||
|
||
@override
|
||
String get audioErrorCleartext =>
|
||
'Это радио использует незашифрованный HTTP, что не разрешено';
|
||
|
||
@override
|
||
String get audioErrorSsl => 'Недействительный SSL-сертификат у радио';
|
||
|
||
@override
|
||
String get audioErrorCannotPlay => 'Это радио невозможно воспроизвести';
|
||
|
||
@override
|
||
String get audioErrorUnexpectedPlayback =>
|
||
'Неожиданная ошибка воспроизведения';
|
||
|
||
@override
|
||
String get androidExactAlarmScheduleError =>
|
||
'Android не смог запланировать точный будильник. Проверьте разрешение для точных будильников.';
|
||
|
||
@override
|
||
String get recordingPathEmptyError => 'Путь записи не может быть пустым';
|
||
|
||
@override
|
||
String get recordingMaxSizeInvalidError =>
|
||
'Максимальный размер должен быть больше нуля';
|
||
|
||
@override
|
||
String get recordingAlreadyActiveError => 'Запись уже выполняется';
|
||
|
||
@override
|
||
String get alarmRingingFallbackActive =>
|
||
'Воспроизведение с внутренним безопасным аудио.';
|
||
|
||
@override
|
||
String get alarmRingingPreparingFallback =>
|
||
'Подготавливается внутреннее безопасное аудио.';
|
||
|
||
@override
|
||
String get alarmRingingTryingStation =>
|
||
'Пытаемся воспроизвести вашу станцию в максимально доступном качестве.';
|
||
|
||
@override
|
||
String get alarmScheduleDaily => 'Каждое утро';
|
||
|
||
@override
|
||
String alarmScheduleOnce(Object date) {
|
||
return 'Один раз · $date';
|
||
}
|
||
|
||
@override
|
||
String alarmScheduleWeekdays(Object days) {
|
||
return 'Дни: $days';
|
||
}
|
||
|
||
@override
|
||
String get alarmRepeatSectionLabel => 'ПОВТОР';
|
||
|
||
@override
|
||
String get alarmVolumeLabel => 'Громкость';
|
||
|
||
@override
|
||
String get androidReliabilityTitle => 'Проверить надёжность Android';
|
||
|
||
@override
|
||
String get closeAction => 'Закрыть';
|
||
|
||
@override
|
||
String get customOption => 'Своя';
|
||
|
||
@override
|
||
String get endLabel => 'Конец';
|
||
|
||
@override
|
||
String get equalizerDisable => 'Отключить эквалайзер';
|
||
|
||
@override
|
||
String get helpTitle => 'Помощь и руководство';
|
||
|
||
@override
|
||
String get helpSubtitle => '9 экранов · смотрите снова в любое время';
|
||
|
||
@override
|
||
String get tutorialSkipAction => 'Пропустить';
|
||
|
||
@override
|
||
String get tutorialNextAction => 'Далее';
|
||
|
||
@override
|
||
String get tutorialPage1Headline => 'Сохраняйте станции и группируйте их';
|
||
|
||
@override
|
||
String get tutorialPage1Body =>
|
||
'Нажмите на сердечко, чтобы сохранить станцию. В разделе «Ваши станции» можно создавать группы, например «Каждое утро» или «Машина», и менять порядок перетаскиванием.';
|
||
|
||
@override
|
||
String get tutorialPage2Headline =>
|
||
'Общий эквалайзер и отдельный для каждой станции';
|
||
|
||
@override
|
||
String get tutorialPage2Body =>
|
||
'В настройках вы задаёте общий эквалайзер. А во время воспроизведения конкретной станции можно задать для неё собственную настройку — она будет иметь приоритет над общей.';
|
||
|
||
@override
|
||
String get tutorialPage3Headline => 'Записывайте то, что слушаете';
|
||
|
||
@override
|
||
String get tutorialPage3Body =>
|
||
'На панели инструментов плеера кнопка «Запись» сохраняет исходный поток. Ваши записи хранятся в разделе Настройки › Записи.';
|
||
|
||
@override
|
||
String get tutorialPage4Headline =>
|
||
'Будильники, которые подстраиваются под вас';
|
||
|
||
@override
|
||
String get tutorialPage4Body =>
|
||
'Просыпайтесь под любимую станцию, откладывайте на 3, 5 или 10 минут и добавляйте периоды отпуска, чтобы некоторые будильники пропускались сами.';
|
||
|
||
@override
|
||
String get tutorialPage5Headline =>
|
||
'Ваши избранные станции — и в машине тоже';
|
||
|
||
@override
|
||
String get tutorialPage5Body =>
|
||
'Подключите телефон через Android Auto, и вы найдёте Избранное, Все станции, Ваши станции и вашу локальную музыку с крупными кнопками, удобными за рулём.';
|
||
|
||
@override
|
||
String get tutorialPage6Headline => 'Переподключается сам';
|
||
|
||
@override
|
||
String get tutorialPage6Body =>
|
||
'Если сигнал пропадает, PluriWave автоматически повторяет попытку и продолжает показывать сохранённые избранные станции даже без подключения.';
|
||
|
||
@override
|
||
String get tutorialPage7Headline => 'Выбирайте, на сколько отложить';
|
||
|
||
@override
|
||
String get tutorialPage7Body =>
|
||
'Когда звонит будильник, нет единственного варианта «отложить»: выбирайте 3, 5 или 10 минут — в зависимости от того, что нужно именно сейчас.';
|
||
|
||
@override
|
||
String get tutorialPage8Headline => 'Не нашли станцию? Добавьте её сами';
|
||
|
||
@override
|
||
String get tutorialPage8Body =>
|
||
'В разделе «Ваши станции» → Добавить свою станцию вставьте URL потока станции, которой нет в поиске. Она сохранится в «Ваши станции» и будет доступна и в машине.';
|
||
|
||
@override
|
||
String get tutorialPage9Headline => 'Готово, теперь вы знаете самое важное';
|
||
|
||
@override
|
||
String get tutorialPage9BannerBody =>
|
||
'Чтобы посмотреть этот урок ещё раз: Настройки → Информация → Помощь и руководство.';
|
||
|
||
@override
|
||
String get indefiniteOption => 'Без ограничения';
|
||
|
||
@override
|
||
String get invalidNumber => 'Недопустимое число';
|
||
|
||
@override
|
||
String get nameLabel => 'Название';
|
||
|
||
@override
|
||
String get notPlaying => 'Не воспроизводится';
|
||
|
||
@override
|
||
String get oneTimeOption => 'Один раз';
|
||
|
||
@override
|
||
String get pausePlaybackTooltip => 'Пауза';
|
||
|
||
@override
|
||
String get playerQualityChangeAction => 'Изменить';
|
||
|
||
@override
|
||
String get playerToolEqLabel => 'Свой EQ';
|
||
|
||
@override
|
||
String qualityOriginal(Object quality) {
|
||
return 'Исходное качество: $quality';
|
||
}
|
||
|
||
@override
|
||
String get qualityUnknown => 'Качество не указано';
|
||
|
||
@override
|
||
String get recordAction => 'Записать';
|
||
|
||
@override
|
||
String get recordDurationTitle => 'Длительность записи';
|
||
|
||
@override
|
||
String get recordRadioSubtitle => 'Выберите длительность записи.';
|
||
|
||
@override
|
||
String get recordRadioTitle => 'Записать радио';
|
||
|
||
@override
|
||
String get recordingActiveTitle => 'Запись радио';
|
||
|
||
@override
|
||
String get recordingDirectTitle => 'Прямая запись';
|
||
|
||
@override
|
||
String get recordingsOpenFolderPlainError =>
|
||
'Не удалось открыть папку записей';
|
||
|
||
@override
|
||
String get recordingsOpenLatest => 'Открыть последнюю запись';
|
||
|
||
@override
|
||
String get recordingsOpenLatestError => 'Не удалось открыть последнюю запись';
|
||
|
||
@override
|
||
String get startLabel => 'Начало';
|
||
|
||
@override
|
||
String get startPlaybackTooltip => 'Начать воспроизведение';
|
||
|
||
@override
|
||
String get stopAction => 'Остановить';
|
||
|
||
@override
|
||
String get stopPlaybackTooltip => 'Остановить воспроизведение';
|
||
|
||
@override
|
||
String get weekdayShortMonday => 'Пн';
|
||
|
||
@override
|
||
String get weekdayShortTuesday => 'Вт';
|
||
|
||
@override
|
||
String get weekdayShortWednesday => 'Ср';
|
||
|
||
@override
|
||
String get weekdayShortThursday => 'Чт';
|
||
|
||
@override
|
||
String get weekdayShortFriday => 'Пт';
|
||
|
||
@override
|
||
String get weekdayShortSaturday => 'Сб';
|
||
|
||
@override
|
||
String get weekdayShortSunday => 'Вс';
|
||
|
||
@override
|
||
String stationCount(int count) {
|
||
String _temp0 = intl.Intl.pluralLogic(
|
||
count,
|
||
locale: localeName,
|
||
other: '$count станций',
|
||
few: '$count станции',
|
||
one: '$count станция',
|
||
);
|
||
return '$_temp0';
|
||
}
|
||
|
||
@override
|
||
String get alarmIconLabel => 'Музыкальный будильник';
|
||
|
||
@override
|
||
String get vacationIconLabel => 'Режим отпуска';
|
||
|
||
@override
|
||
String get alarmAdvancedSectionTitle => 'Дополнительно';
|
||
|
||
@override
|
||
String get alarmInlineHourLabel => 'Час';
|
||
|
||
@override
|
||
String get alarmInlineMinuteLabel => 'Минута';
|
||
|
||
@override
|
||
String get alarmVolumeRisingStatus => 'Громкость нарастает';
|
||
|
||
@override
|
||
String get streamUrlHint => 'https://stream.example.com:8000/radio';
|
||
|
||
@override
|
||
String get advancedEqSectionTitle => 'Расширенные настройки EQ';
|
||
|
||
@override
|
||
String get advancedEqEnableToggle => 'Включить EQ для каждого устройства';
|
||
|
||
@override
|
||
String get advancedEqEnableToggleSubtitle =>
|
||
'Автоматически применять другой пресет EQ при смене аудиовыхода.';
|
||
|
||
@override
|
||
String get advancedEqKnownDevicesTitle => 'Известные аудиоустройства';
|
||
|
||
@override
|
||
String get advancedEqKnownDevicesEmpty =>
|
||
'Аудиоустройства пока не зарегистрированы. Подключите устройство, чтобы начать.';
|
||
|
||
@override
|
||
String advancedEqDevicePresetLabel(Object presetName) {
|
||
return 'Пресет: $presetName';
|
||
}
|
||
|
||
@override
|
||
String preNoticeCountdown(int minutes) {
|
||
return 'Начнётся через $minutes мин';
|
||
}
|
||
|
||
@override
|
||
String snoozeCountdown(int minutes) {
|
||
return 'Прозвонит через $minutes мин';
|
||
}
|
||
|
||
@override
|
||
String get snoozeAgainAction => 'Отложить снова';
|
||
|
||
@override
|
||
String get alarmRingingNotificationTitle => 'Будильник PluriWave';
|
||
|
||
@override
|
||
String get alarmFireChannelName => 'Звонящие будильники';
|
||
|
||
@override
|
||
String get alarmFireChannelDescription =>
|
||
'Срочный звук и экран, когда должен сработать музыкальный будильник';
|
||
|
||
@override
|
||
String get alarmPreNoticeChannelName => 'Напоминания о будильнике';
|
||
|
||
@override
|
||
String get alarmPreNoticeChannelDescription =>
|
||
'Беззвучные уведомления перед будильником';
|
||
|
||
@override
|
||
String get openFolderChooserTitle => 'Открыть папку';
|
||
|
||
@override
|
||
String get openRecordingChooserTitle => 'Открыть запись';
|
||
|
||
@override
|
||
String get eqDeviceEditTitle => 'Изменить устройство';
|
||
|
||
@override
|
||
String get eqDeviceNameLabel => 'Название устройства';
|
||
|
||
@override
|
||
String get eqDeviceNameHint => 'Напр.: Колонка в гостиной';
|
||
|
||
@override
|
||
String get eqDeviceNameConfirm => 'Сохранить';
|
||
|
||
@override
|
||
String get eqDeviceConnected => 'Подключено';
|
||
|
||
@override
|
||
String get eqDeviceActiveOutput => 'Звук выводится через это устройство';
|
||
|
||
@override
|
||
String get eqDeviceRemove => 'Удалить устройство';
|
||
|
||
@override
|
||
String eqDeviceRemoved(Object device) {
|
||
return '$device удалено';
|
||
}
|
||
|
||
@override
|
||
String get localMusicSectionTitle => 'Локальная музыка (Android Auto)';
|
||
|
||
@override
|
||
String get localMusicSectionDescription =>
|
||
'Выберите папку на этом устройстве, чтобы просматривать и воспроизводить её аудиофайлы в автомобиле.';
|
||
|
||
@override
|
||
String get localMusicFolderNotConfigured => 'Папка не выбрана';
|
||
|
||
@override
|
||
String get localMusicFolderTitle => 'Папка локальной музыки';
|
||
|
||
@override
|
||
String get localMusicChoosePath => 'Выбрать папку';
|
||
|
||
@override
|
||
String get localMusicChangePath => 'Изменить папку';
|
||
|
||
@override
|
||
String get localMusicFolderUpdated => 'Папка локальной музыки обновлена';
|
||
|
||
@override
|
||
String localMusicFolderSaveError(Object error) {
|
||
return 'Не удалось сохранить папку: $error';
|
||
}
|
||
|
||
@override
|
||
String get localMusicFolderGenericName => 'Выбранная папка';
|
||
|
||
@override
|
||
String get welcomeHeadline => 'Ваш мир, в прямом эфире';
|
||
|
||
@override
|
||
String get welcomeBody =>
|
||
'53 412 станций из 238 стран. Сохраняйте любимые, берите их с собой в машину и просыпайтесь под них.';
|
||
|
||
@override
|
||
String get welcomeBullet1Title => 'Эквалайзер для каждой станции';
|
||
|
||
@override
|
||
String get welcomeBullet1Subtitle =>
|
||
'А также пресет для каждого устройства вывода';
|
||
|
||
@override
|
||
String get welcomeBullet2Title => 'Android Auto';
|
||
|
||
@override
|
||
String get welcomeBullet2Subtitle =>
|
||
'Ваши избранные и локальная музыка в машине';
|
||
|
||
@override
|
||
String get welcomeBullet3Title => 'Музыкальные будильники';
|
||
|
||
@override
|
||
String get welcomeBullet3Subtitle =>
|
||
'С плавным нарастанием громкости и режимом отпуска';
|
||
|
||
@override
|
||
String get welcomeCtaLabel => 'Начать слушать';
|
||
|
||
@override
|
||
String get eqCustomActionEnableLabel => 'Включить эквалайзер';
|
||
|
||
@override
|
||
String get eqCustomActionDisableLabel => 'Выключить эквалайзер';
|
||
|
||
@override
|
||
String eqCustomActionPresetLabel(String preset) {
|
||
return 'Пресет: $preset';
|
||
}
|
||
|
||
@override
|
||
String get alarmCardVacationPausedBadge => 'Приостановлено на время отпуска';
|
||
|
||
@override
|
||
String get alarmCardSchedulingFailedMessage =>
|
||
'Этот будильник не удалось зарегистрировать в системе, поэтому он может не сработать.';
|
||
|
||
@override
|
||
String get alarmCardPreNoticeFailedMessage =>
|
||
'Этот будильник запланирован, но не удалось настроить предварительное напоминание.';
|
||
|
||
@override
|
||
String get alarmDiagnosticsExactAlarmsTitle =>
|
||
'Точное планирование будильника';
|
||
|
||
@override
|
||
String get alarmDiagnosticsExactAlarmsHint =>
|
||
'Будильник звонит ровно в заданную минуту, даже если телефон находится в режиме сна.';
|
||
|
||
@override
|
||
String get alarmDiagnosticsNotificationsTitle => 'Уведомления';
|
||
|
||
@override
|
||
String get alarmDiagnosticsNotificationsHint =>
|
||
'Нужны, чтобы показать будильник и заблаговременное напоминание.';
|
||
|
||
@override
|
||
String get alarmDiagnosticsFullScreenTitle =>
|
||
'Полноэкранный показ будильника';
|
||
|
||
@override
|
||
String get alarmDiagnosticsFullScreenHint =>
|
||
'Экран будильника появляется автоматически, даже если телефон заблокирован.';
|
||
|
||
@override
|
||
String get alarmDiagnosticsBatteryTitle => 'Оптимизация батареи';
|
||
|
||
@override
|
||
String get alarmDiagnosticsBatteryHint =>
|
||
'Не позволяет системе закрывать PluriWave в фоновом режиме, чтобы будильник мог сработать.';
|
||
|
||
@override
|
||
String get alarmDiagnosticsNativeCountTitle =>
|
||
'Будильники, зарегистрированные в Android';
|
||
|
||
@override
|
||
String alarmDiagnosticsNativeCountValue(int count) {
|
||
return 'Сейчас зарегистрировано: $count';
|
||
}
|
||
|
||
@override
|
||
String get alarmDiagnosticsNativeCountAttentionHint =>
|
||
'У вас включён будильник, но пока ни один не зарегистрирован в системе. Откройте PluriWave заново или сначала устраните пункты выше.';
|
||
|
||
@override
|
||
String get alarmDiagnosticsManufacturerLabel => 'Производитель';
|
||
|
||
@override
|
||
String get alarmDiagnosticsSdkLabel => 'Версия Android (SDK)';
|
||
|
||
@override
|
||
String get alarmDiagnosticsNeedsAttentionStatus => 'Требует внимания';
|
||
|
||
@override
|
||
String get alarmDiagnosticsAutostartTitle =>
|
||
'Ещё один ручной шаг на этом телефоне';
|
||
|
||
@override
|
||
String alarmDiagnosticsAutostartBody(String manufacturer) {
|
||
return 'Телефоны $manufacturer часто закрывают приложения в фоновом режиме для экономии батареи. PluriWave не может включить это самостоятельно — вам нужно вручную включить автозапуск (иногда называется \"Autostart\" или \"Фоновая активность\") для PluriWave. Ищите в Настройках, в разделе Приложения или Батарея, либо в приложении безопасности телефона.';
|
||
}
|
||
|
||
@override
|
||
String get alarmDiagnosticsFixAction => 'Исправить';
|
||
|
||
@override
|
||
String get alarmDiagnosticsIntentUnavailable =>
|
||
'Не удалось открыть этот экран настроек на этом телефоне. Попробуйте найти его вручную в Настройках.';
|
||
|
||
@override
|
||
String get alarmDiagnosticsUnavailableHint =>
|
||
'Мы пока не смогли проверить настройки вашего будильника.';
|
||
|
||
@override
|
||
String get autoEqDisableOption => 'Отключить';
|
||
|
||
@override
|
||
String get funcionPremium => 'Премиум-функция';
|
||
|
||
@override
|
||
String get limiteAlarmasAlcanzado =>
|
||
'Вы достигли бесплатного лимита в 5 будильников.';
|
||
|
||
@override
|
||
String get desbloquearPremium => 'Разблокировать Премиум';
|
||
|
||
@override
|
||
String get restaurarCompras => 'Восстановить покупки';
|
||
|
||
@override
|
||
String get compraError => 'Не удалось завершить покупку. Попробуйте ещё раз.';
|
||
|
||
@override
|
||
String get restauracionSinCompras =>
|
||
'Мы не нашли предыдущих покупок на этом аккаунте.';
|
||
|
||
@override
|
||
String get premiumActivo => 'Премиум активен';
|
||
|
||
@override
|
||
String get premiumHojaTitulo => 'Разблокировать PluriWave Premium';
|
||
|
||
@override
|
||
String get premiumBeneficioSinAnuncios =>
|
||
'Никакой рекламы во всём приложении';
|
||
|
||
@override
|
||
String get premiumBeneficioAndroidAuto => 'Android Auto';
|
||
|
||
@override
|
||
String get premiumBeneficioGrabacion => 'Запись радиостанций';
|
||
|
||
@override
|
||
String get premiumBeneficioVacaciones => 'Периоды отпуска для будильников';
|
||
|
||
@override
|
||
String get premiumBeneficioAlarmasIlimitadas =>
|
||
'Неограниченное количество будильников (бесплатный план позволяет до 5)';
|
||
|
||
@override
|
||
String get premiumPagoUnico =>
|
||
'Единоразовая покупка, навсегда. Это не подписка.';
|
||
|
||
@override
|
||
String get premiumAhoraNo => 'Не сейчас';
|
||
}
|