Audit 8.5 (t4:381): the "REPETIR" eyebrow above the weekday circles -- never rendered before. New ARB key alarmRepeatSectionLabel. Audit 8.6 (t4:392-401): the station picker, volume, fade-in and vacation toggle now share ONE bordered card with sangred divider lines -- were four separately-spaced widgets. Restyled _CampoSelectorEmisora as a flat nav row (icon/bold label/muted value/chevron, matching FilaAjuste's own convention) so it fits inside the card instead of drawing its own outlined InputDecoration chrome -- used by BOTH the primary and fallback (Advanced) station fields. Snooze duration, "use current station", and the Advanced section stay OUTSIDE the card, exactly where they were (audit 8.8's own documented deliberate extras). A transparent Material sits inside the card's coloured box so the fade-in ListTile and the vacation SwitchListTile still paint their ink/background correctly (the same class of constraint already documented for PluriGlassSurface elsewhere in this codebase). Audit 8.7 (t4:396): the volume row is now a compact 112px track with a live percentage label -- was a bare full-width Slider with no visible value. New ArtB key alarmVolumeLabel. Item 8.8 (extra name/type-selector/snooze-selector/"use current station"/Advanced fields) stays exactly as documented: deliberate, required by the hard constraint that the editor keep its date field, fallback-station picker and sound dropdown.
1683 lines
48 KiB
Dart
1683 lines
48 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 vacationNoActiveRangeHint =>
|
||
'Сейчас нет активного периода отпуска.';
|
||
|
||
@override
|
||
String get vacationsDefaultName => 'Отпуск';
|
||
|
||
@override
|
||
String get newVacationRangeTitle => 'Новый период отпуска';
|
||
|
||
@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 => 'Посмотрите функции, советы и новости PluriWave.';
|
||
|
||
@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 => 'Начать слушать';
|
||
}
|