fix(i18n): normalize translations and fallbacks
Build & Deploy PluriWave / Análisis de código (push) Successful in 38s
Build & Deploy PluriWave / Build APK + AAB release (push) Successful in 2m34s

This commit is contained in:
2026-06-03 21:20:08 +02:00
parent a5475ce118
commit 089b8b4227
46 changed files with 17720 additions and 4869 deletions
+408 -234
View File
@@ -1,107 +1,135 @@
{
"@@locale": "ru",
"appTitle": "PluriWave",
"navHome": "Home",
"navSearch": "Search",
"navFavorites": "Favorites",
"navAlarms": "Alarms",
"navSettings": "Settings",
"actionOk": "OK",
"sleepTimer": "Sleep timer",
"sleepTimerDescription": "Smooth radio shutdown with an exact countdown.",
"cancelTimer": "Cancel timer",
"optionOther": "Other",
"customDurationTitle": "Custom duration",
"durationGreaterThanZero": "Choose a duration greater than zero.",
"hoursLabel": "Hours",
"minutesLabel": "Minutes",
"secondsLabel": "Seconds",
"saveQuickAccess": "Save as quick access",
"startTimer": "Start timer",
"skipCurrentAlarmExecution": "Skipped this execution of {alarmName}.",
"navHome": "Главная",
"navSearch": "Поиск",
"navFavorites": "Избранное",
"navAlarms": "Будильники",
"navSettings": "Настройки",
"actionOk": "ОК",
"sleepTimer": "Таймер сна",
"sleepTimerDescription": "Плавное выключение радио с точным обратным отсчётом.",
"cancelTimer": "Отменить таймер",
"optionOther": "Другое",
"customDurationTitle": "Своя длительность",
"durationGreaterThanZero": "Выберите длительность больше нуля.",
"hoursLabel": "Часы",
"minutesLabel": "Минуты",
"secondsLabel": "Секунды",
"durationHoursMinutesSeconds": "{hours} ? {minutes} ??? {seconds} ?",
"@durationHoursMinutesSeconds": {
"placeholders": {
"hours": {},
"minutes": {},
"seconds": {}
}
},
"durationMinutesSeconds": "{minutes} ??? {seconds} ?",
"@durationMinutesSeconds": {
"placeholders": {
"minutes": {},
"seconds": {}
}
},
"durationMinutesOnly": "{minutes} ???",
"@durationMinutesOnly": {
"placeholders": {
"minutes": {}
}
},
"durationSecondsOnly": "{seconds} ?",
"@durationSecondsOnly": {
"placeholders": {
"seconds": {}
}
},
"saveQuickAccess": "Сохранить как быстрый доступ",
"startTimer": "Запустить таймер",
"skipCurrentAlarmExecution": "Этот запуск {alarmName} пропущен.",
"@skipCurrentAlarmExecution": {
"placeholders": {
"alarmName": {}
}
},
"settingsTitle": "Settings",
"settingsSubtitle": "Fine-grained sound control, backups, and custom stations.",
"languageSectionTitle": "Language",
"languageSectionDescription": "Choose how the app language is displayed.",
"languageSystemDefault": "System",
"languageSpanish": "Spanish",
"languageEnglish": "English",
"languageUpdated": "Language updated: {languageName}",
"settingsTitle": "Настройки",
"settingsSubtitle": "Точная настройка звука, резервных копий и пользовательских станций.",
"languageSectionTitle": "Язык",
"languageSectionDescription": "Выберите, как отображается язык приложения.",
"languageSystemDefault": "Система",
"languageSpanish": "Испанский",
"languageEnglish": "Английский",
"languageUpdated": "Язык обновлён: {languageName}",
"@languageUpdated": {
"placeholders": {
"languageName": {}
}
},
"languageUpdatedSystem": "Language updated: System",
"timerSectionTitle": "Sleep timer",
"timerSectionAdd": "Add",
"timerSectionDescription": "Customize the quick presets shown when automatically stopping the radio.",
"timerSectionRestoreRecommended": "Restore recommended times",
"newQuickAccessTitle": "New quick access",
"saveQuickAccessButton": "Save quick access",
"settingsSafeStatus": "Safe",
"recordingsSectionTitle": "Recordings",
"recordingsFolderDialogTitle": "Select recordings folder",
"recordingsPathUpdated": "Recording path updated",
"recordingsPathSaveError": "Could not save the path: {error}",
"recordingsDefaultFolderRestored": "The internal default folder will be used",
"recordingsFolderTitle": "Recordings folder",
"recordingsPathCalculating": "Calculating path...",
"recordingsChangePath": "Change path",
"recordingsUseDefaultPath": "Use default path",
"recordingsOriginalStreamHint": "The radio is saved from the original stream, without recompressing.",
"equalizerActive": "Active",
"equalizerDisabled": "Disabled",
"equalizerEnable": "Enable equalizer",
"equalizerRealtimeSubtitle": "Changes are applied in real time to the current station.",
"equalizerPendingSubtitle": "Changes are saved and will apply when Android enables the effect.",
"equalizerPerStationTitle": "Use custom EQ for this favorite",
"equalizerPerStationActive": "Active for {stationName}",
"equalizerPerStationMain": "Using main EQ for {stationName}",
"preferredStationTitle": "Preferred station",
"preferredStationDescription": "Preselected for new alarms and available for quick playback.",
"preferredStationNoStationsTitle": "No stations available yet",
"preferredStationNoStationsSubtitle": "Save favorites or load stations to choose a preferred one.",
"preferredStationAutomaticFallback": "Automatic fallback",
"preferredStationDefaultFavorite": "Default favorite",
"preferredStationCurrent": "Current preferred: {stationName}",
"preferredStationAutoUsing": "No favorites: automatically using {stationName}",
"preferredStationPlay": "Play preferred",
"customStationsTitle": "Custom stations",
"customStationsAdd": "Add",
"customStationsEmpty": "No custom stations.",
"playAction": "Play",
"deleteAction": "Delete",
"addStationTitle": "Add station",
"stationNameLabel": "Name *",
"requiredField": "Required field",
"streamUrlLabel": "Stream URL *",
"invalidUrl": "Invalid URL",
"countryOptionalLabel": "Country (optional)",
"saveStation": "Save station",
"backupSectionTitle": "Backup",
"backupExportTitle": "Export configuration",
"backupExportSubtitle": "Favorites, custom stations, and EQ presets",
"backupImportTitle": "Import configuration",
"backupImportSubtitle": "Restore from a backup file",
"backupShareSubject": "PluriWave — backup",
"backupShareText": "PluriWave configuration exported on {date}",
"backupExportError": "Export error: {error}",
"backupImportConfirmMessage": "This will add favorites, stations, and presets from the file. Continue?",
"backupImportSuccess": "Configuration imported successfully",
"backupImportError": "Import error: {error}",
"appVersionLoading": "Loading version...",
"appVersionSubtitle": "{version} - World radio",
"savedFavoritesTitle": "Saved favorites",
"stationFilterTitle": "Station filter",
"stationFilterSubtitle": "Only stations verified as active",
"backgroundAudioTitle": "Background audio",
"backgroundAudioSubtitle": "Continues when the screen turns off",
"languageUpdatedSystem": "Язык обновлён: система",
"timerSectionTitle": "Таймер сна",
"timerSectionAdd": "Добавить",
"timerSectionDescription": "Настройте быстрые пресеты, которые появляются при автоматическом выключении радио.",
"timerSectionRestoreRecommended": "Восстановить рекомендуемое время",
"newQuickAccessTitle": "Новый быстрый доступ",
"saveQuickAccessButton": "Сохранить быстрый доступ",
"settingsSafeStatus": "Безопасно",
"recordingsSectionTitle": "Записи",
"recordingsFolderDialogTitle": "Выберите папку для записей",
"recordingsPathUpdated": "Путь записи обновлён",
"recordingsPathSaveError": "Не удалось сохранить путь: {error}",
"recordingsDefaultFolderRestored": "Будет использована внутренняя папка по умолчанию",
"recordingsFolderTitle": "Папка записей",
"recordingsPathCalculating": "Вычисление пути...",
"recordingsChangePath": "Изменить путь",
"recordingsUseDefaultPath": "Использовать путь по умолчанию",
"recordingsOriginalStreamHint": "Радио сохраняется из исходного потока без повторного сжатия.",
"equalizerActive": "Активно",
"equalizerDisabled": "Отключено",
"equalizerEnable": "Включить эквалайзер",
"equalizerRealtimeSubtitle": "Изменения применяются к текущей станции в реальном времени.",
"equalizerPendingSubtitle": "Изменения сохраняются и применятся, когда Android включит эффект.",
"equalizerPerStationTitle": "Использовать свой EQ для этого избранного",
"equalizerPerStationActive": "Активно для {stationName}",
"equalizerPerStationMain": "Используется основной EQ для {stationName}",
"preferredStationTitle": "Предпочитаемая станция",
"preferredStationDescription": "Предварительно выбирается при создании будильников и доступна для быстрого воспроизведения.",
"preferredStationNoStationsTitle": "Пока нет доступных станций",
"preferredStationNoStationsSubtitle": "Сохраните избранные или загрузите станции, чтобы выбрать предпочитаемую.",
"preferredStationAutomaticFallback": "Автоматический резерв",
"preferredStationDefaultFavorite": "Избранное по умолчанию",
"preferredStationCurrent": "Текущая предпочитаемая: {stationName}",
"preferredStationAutoUsing": "Нет избранных: автоматически используется {stationName}",
"preferredStationPlay": "Воспроизвести предпочитаемую",
"customStationsTitle": "Пользовательские станции",
"customStationsAdd": "Добавить",
"customStationsEmpty": "Пользовательских станций нет.",
"playAction": "Воспроизвести",
"deleteAction": "Удалить",
"addStationTitle": "Добавить станцию",
"stationNameLabel": "Название *",
"unnamedStation": "Станция без названия",
"requiredField": "Обязательное поле",
"streamUrlLabel": "URL потока *",
"invalidUrl": "Недопустимый URL",
"countryOptionalLabel": "Страна (необязательно)",
"saveStation": "Сохранить станцию",
"backupSectionTitle": "Резервная копия",
"backupExportTitle": "Экспортировать настройки",
"backupExportSubtitle": "Избранное, пользовательские станции и пресеты EQ",
"backupImportTitle": "Импортировать настройки",
"backupImportSubtitle": "Восстановить из файла резервной копии",
"backupShareSubject": "PluriWave — резервная копия",
"backupShareText": "Настройки PluriWave, экспортированные {date}",
"backupExportError": "Ошибка при экспорте: {error}",
"backupImportConfirmMessage": "Это добавит избранное, станции и пресеты из файла. Продолжить?",
"backupImportSuccess": "Настройки успешно импортированы",
"backupImportError": "Ошибка при импорте: {error}",
"appVersionLoading": "Загрузка версии...",
"appVersionSubtitle": "{version} — мировое радио",
"savedFavoritesTitle": "Сохранённое избранное",
"stationFilterTitle": "Фильтр станций",
"stationFilterSubtitle": "Только станции, подтверждённые как активные",
"backgroundAudioTitle": "Фоновое аудио",
"backgroundAudioSubtitle": "Продолжается при выключенном экране",
"dash": "—",
"@recordingsPathSaveError": {
"placeholders": {
@@ -148,15 +176,15 @@
"version": {}
}
},
"cancelAction": "Cancel",
"equalizerTitle": "Equalizer",
"recordingsOpenFolder": "Open folder",
"recordingsOpenFolderError": "Could not open the folder: {error}",
"recordingsMaxSizeTitle": "Maximum recording size",
"recordingsMaxSizeSubtitle": "Current limit: {size} MB",
"recordingsMaxSizeDialogTitle": "Maximum size per recording",
"recordingsMaxSizeMbLabel": "Maximum megabytes",
"recordingsMaxSizeSaved": "Recording limit updated to {size} MB",
"cancelAction": "Отмена",
"equalizerTitle": "Эквалайзер",
"recordingsOpenFolder": "Открыть папку",
"recordingsOpenFolderError": "Не удалось открыть папку: {error}",
"recordingsMaxSizeTitle": "Максимальный размер записи",
"recordingsMaxSizeSubtitle": "Текущий лимит: {size} МБ",
"recordingsMaxSizeDialogTitle": "Максимальный размер одной записи",
"recordingsMaxSizeMbLabel": "Максимум мегабайт",
"recordingsMaxSizeSaved": "Лимит записи обновлён до {size} МБ",
"@recordingsOpenFolderError": {
"placeholders": {
"error": {}
@@ -176,33 +204,33 @@
}
}
},
"stationOrderTitle": "Station order",
"stationOrderByName": "By name",
"stationOrderByQuality": "By quality",
"stationOrderScopeDescription": "Applies to favorites, searches, nearby stations and quick lists.",
"favoriteGroupsTitle": "Favorite lists",
"favoriteGroupsDescription": "Create short lists to organize your saved stations.",
"favoriteGroupsAdd": "Add list",
"favoriteGroupsEdit": "Edit list",
"favoriteGroupsDelete": "Delete list",
"favoriteGroupsNameLabel": "List name",
"favoriteGroupsNameTooLong": "Maximum 28 characters.",
"favoriteGroupsUnassigned": "Unassigned",
"favoriteGroupsProtectedHint": "Default list: it cannot be edited or deleted.",
"favoriteGroupsCreated": "List created",
"favoriteGroupsUpdated": "List updated",
"favoriteGroupsDeleted": "List deleted; its stations return to Unassigned.",
"favoriteGroupsAssign": "Move to list",
"favoriteGroupsAssignSubtitle": "Current list: {groupName}",
"favoriteGroupsAssigned": "{stationName} moved to {groupName}",
"favoritesTitle": "Favorites",
"favoritesEmptyTitle": "No favorites yet",
"favoritesEmptySubtitle": "Tap the heart on any station to save it to your collection.",
"favoritesHeaderSubtitle": "Organize your collection by lists and keep important radios close.",
"favoritesCollection": "Collection",
"favoritesSavedCount": "{count} saved",
"favoritesRemoveTooltip": "Remove from favorites",
"favoritesRemovedMessage": "{stationName} removed from favorites",
"stationOrderTitle": "Порядок станций",
"stationOrderByName": "По названию",
"stationOrderByQuality": "По качеству",
"stationOrderScopeDescription": "Применяется к избранному, поиску, ближайшим станциям и быстрым спискам.",
"favoriteGroupsTitle": "Списки избранного",
"favoriteGroupsDescription": "Создавайте короткие списки, чтобы упорядочить сохранённые станции.",
"favoriteGroupsAdd": "Добавить список",
"favoriteGroupsEdit": "Изменить список",
"favoriteGroupsDelete": "Удалить список",
"favoriteGroupsNameLabel": "Название списка",
"favoriteGroupsNameTooLong": "Максимум 28 символов.",
"favoriteGroupsUnassigned": "Без списка",
"favoriteGroupsProtectedHint": "Список по умолчанию: нельзя изменить или удалить.",
"favoriteGroupsCreated": "Список создан",
"favoriteGroupsUpdated": "Список обновлён",
"favoriteGroupsDeleted": "Список удалён; его станции вернулись в «Без списка».",
"favoriteGroupsAssign": "Переместить в список",
"favoriteGroupsAssignSubtitle": "Текущий список: {groupName}",
"favoriteGroupsAssigned": "{stationName} перемещена в {groupName}",
"favoritesTitle": "Избранное",
"favoritesEmptyTitle": "Избранного пока нет",
"favoritesEmptySubtitle": "Нажмите на сердце у любой станции, чтобы сохранить её в коллекцию.",
"favoritesHeaderSubtitle": "Организуйте коллекцию по спискам и держите важные радио под рукой.",
"favoritesCollection": "Коллекция",
"favoritesSavedCount": "{count} сохранено",
"favoritesRemoveTooltip": "Удалить из избранного",
"favoritesRemovedMessage": "{stationName} удалена из избранного",
"@favoriteGroupsAssignSubtitle": {
"placeholders": {
"groupName": {}
@@ -226,18 +254,18 @@
"stationName": {}
}
},
"alarmPostponedCurrentExecution": "Alarm postponed for this occurrence.",
"searchScreenTitle": "Поиск станций",
"searchScreenSubtitle": "Ищите станции по названию, стране или языку с быстрыми фильтрами и высоким контрастом.",
"alarmPostponedCurrentExecution": "Будильник отложен для этого запуска.",
"searchScreenTitle": "Поиск сигнала",
"searchScreenSubtitle": "Находите радио по названию, стране или языку с быстрыми фильтрами и высокой контрастностью.",
"searchFiltersLabel": "Фильтры",
"searchHint": "Radio Horizon, джаз, новости...",
"searchHint": "Радио Горизонт, джаз, новости...",
"searchCountryFilterLabel": "Страна",
"searchLanguageFilterLabel": "Язык",
"searchMinQualityFilterLabel": "Минимальное качество",
"searchEmptyTitle": "Найдите станцию",
"searchNoResultsTitle": "Ничего не найдено",
"searchEmptySubtitle": "Используйте верхнюю строку и быстрые кнопки, чтобы открыть станции со всего мира.",
"searchNoResultsSubtitle": "Попробуйте убрать фильтры или ввести другое название, чтобы найти активную станцию.",
"searchNoResultsTitle": "Нет результатов",
"searchEmptySubtitle": "Используйте верхнюю строку или чипы, чтобы находить сигналы со всего мира.",
"searchNoResultsSubtitle": "Попробуйте убрать фильтры или ввести другое название, чтобы найти активный сигнал.",
"countrySpain": "Испания",
"countryUsa": "США",
"countryMexico": "Мексика",
@@ -248,18 +276,18 @@
"countryItaly": "Италия",
"countryBrazil": "Бразилия",
"countryJapan": "Япония",
"languageNameSpanish": "Испанский",
"languageNameEnglish": "Английский",
"languageNameFrench": "Французский",
"languageNameGerman": "Немецкий",
"languageNamePortuguese": "Португальский",
"languageNameItalian": "Итальянский",
"languageNameJapanese": "Японский",
"languageNameArabic": "Арабский",
"languageNameRussian": "Русский",
"homeScreenSubtitle": "Live global radio with clean signals, smart favorites, and a show-style visual experience.",
"exploreStations": "Explore stations",
"stationsCount": "{count} stations",
"languageNameSpanish": "испанский",
"languageNameEnglish": "английский",
"languageNameFrench": "французский",
"languageNameGerman": "немецкий",
"languageNamePortuguese": "португальский",
"languageNameItalian": "итальянский",
"languageNameJapanese": "японский",
"languageNameArabic": "арабский",
"languageNameRussian": "русский",
"homeScreenSubtitle": "Глобальное радио в прямом эфире с чистыми сигналами, умным избранным и визуальным стилем телевикторины.",
"exploreStations": "Изучить станции",
"stationsCount": "{count} радиостанций",
"@stationsCount": {
"placeholders": {
"count": {
@@ -267,36 +295,36 @@
}
}
},
"qualityHd": "HD quality",
"nearYou": "Near you",
"nearYouInCountry": "Near you ? {country}",
"qualityHd": "HD-качество",
"nearYou": "Рядом с вами",
"nearYouInCountry": "Рядом с вами · {country}",
"@nearYouInCountry": {
"placeholders": {
"country": {}
}
},
"detectAction": "Detect",
"liveRadar": "Live radar",
"genresTitle": "Genres",
"retryAction": "Retry",
"noStationsAvailable": "No stations available",
"noStationsAvailableSubtitle": "Try refreshing or choosing another genre to capture a signal again.",
"genrePop": "Pop",
"genreRock": "Rock",
"genreJazz": "Jazz",
"genreClassical": "Classical",
"genreElectronic": "Electronic",
"genreNews": "News",
"genreTalk": "Talk",
"genreHipHop": "Hip-hop",
"genreCountry": "Country",
"genreMetal": "Metal",
"genreReggae": "Reggae",
"genreLatin": "Latin",
"alarmScreenTitle": "Music wake-up",
"alarmScreenSubtitle": "Alarms with radio, safe fallback sound, smart vacations, and the next occurrence always visible.",
"createAlarmAction": "Create alarm",
"alarmsCount": "{count} alarms",
"detectAction": "Определить",
"liveRadar": "Радар в эфире",
"genresTitle": "Жанры",
"retryAction": "Повторить",
"noStationsAvailable": "Нет доступных станций",
"noStationsAvailableSubtitle": "Попробуйте обновить или выбрать другой жанр, чтобы снова поймать сигнал.",
"genrePop": "Поп",
"genreRock": "Рок",
"genreJazz": "Джаз",
"genreClassical": "Классика",
"genreElectronic": "Электронная",
"genreNews": "Новости",
"genreTalk": "Разговорные",
"genreHipHop": "Хип-хоп",
"genreCountry": "Кантри",
"genreMetal": "Метал",
"genreReggae": "Регги",
"genreLatin": "Латинская",
"alarmScreenTitle": "Музыкальное пробуждение",
"alarmScreenSubtitle": "Будильники с радио, безопасным звуком, умными отпусками и всегда видимым следующим запуском.",
"createAlarmAction": "Создать будильник",
"alarmsCount": "{count} будильников",
"@alarmsCount": {
"placeholders": {
"count": {
@@ -304,10 +332,10 @@
}
}
},
"activeAlarmsWithoutNextTitle": "Active alarms without a next occurrence",
"noActiveAlarms": "No active alarms",
"nextAlarmTitle": "Next alarm",
"activeAlarmsWithoutNextSubtitle": "There are {count} active alarm(s), but they do not currently have a valid future date. Check date, weekdays, and vacations.",
"activeAlarmsWithoutNextTitle": "Активные будильники без следующего запуска",
"noActiveAlarms": "Нет активных будильников",
"nextAlarmTitle": "Следующий будильник",
"activeAlarmsWithoutNextSubtitle": "Есть {count} активных будильников, но сейчас у них нет допустимой будущей даты. Проверьте дату, дни и отпуска.",
"@activeAlarmsWithoutNextSubtitle": {
"placeholders": {
"count": {
@@ -315,10 +343,10 @@
}
}
},
"createAlarmHint": "Create an alarm and PluriWave will calculate the next occurrence automatically.",
"alarmVacationPlay": "Plays during vacations",
"alarmVacationPause": "Paused during vacations",
"alarmFadeInLabel": "Fade-in {seconds}s",
"createAlarmHint": "Создайте будильник, и PluriWave автоматически рассчитает следующий запуск.",
"alarmVacationPlay": "Звонит в отпуске",
"alarmVacationPause": "Пауза в отпуске",
"alarmFadeInLabel": "Плавное усиление {seconds}с",
"@alarmFadeInLabel": {
"placeholders": {
"seconds": {
@@ -326,61 +354,61 @@
}
}
},
"alarmNextExecution": "Next occurrence: {date}",
"alarmNextExecution": "Следующий запуск: {date}",
"@alarmNextExecution": {
"placeholders": {
"date": {}
}
},
"alarmNoNextExecution": "It has no active next occurrence.",
"alarmSkippedExecution": "One occurrence was skipped: {date}.",
"alarmNoNextExecution": "Нет активного следующего запуска.",
"alarmSkippedExecution": "Один запуск был пропущен: {date}.",
"@alarmSkippedExecution": {
"placeholders": {
"date": {}
}
},
"editAction": "Edit",
"skipNextAction": "Skip next",
"deleteTooltip": "Delete",
"alarmSkippedNoNextSnackbar": "Alarm skipped. There is no next occurrence left.",
"alarmSkippedReturnsSnackbar": "Alarm skipped. It will return on {date}.",
"editAction": "Изменить",
"skipNextAction": "Пропустить следующий",
"deleteTooltip": "Удалить",
"alarmSkippedNoNextSnackbar": "Будильник пропущен. Следующего запуска нет.",
"alarmSkippedReturnsSnackbar": "Будильник пропущен. Вернётся {date}.",
"@alarmSkippedReturnsSnackbar": {
"placeholders": {
"date": {}
}
},
"alarmVacationPausedNoNext": "It is paused for vacations ({vacationName}) and has no next occurrence.",
"alarmVacationPausedNoNext": "Приостановлен из-за отпуска ({vacationName}) и без следующего запуска.",
"@alarmVacationPausedNoNext": {
"placeholders": {
"vacationName": {}
}
},
"alarmVacationPausedReturns": "It is paused for vacations ({vacationName}) and returns on {date}.",
"alarmVacationPausedReturns": "Приостановлен из-за отпуска ({vacationName}) и вернётся {date}.",
"@alarmVacationPausedReturns": {
"placeholders": {
"vacationName": {},
"date": {}
}
},
"alarmVacationReturns": "With vacations enabled, it will ring again on {date}.",
"alarmVacationReturns": "С активным отпуском снова прозвучит {date}.",
"@alarmVacationReturns": {
"placeholders": {
"date": {}
}
},
"defaultAlarmName": "Music alarm",
"newAlarmTitle": "New alarm",
"editAlarmTitle": "Edit alarm",
"nameField": "Name",
"timeField": "Time",
"dateField": "Date",
"onceOption": "Once",
"dailyOption": "Daily",
"weekdaysOption": "Weekdays",
"soundAndVolumeSection": "Sound and volume",
"alarmFadeInTitle": "Alarm fade-in",
"alarmFadeInOff": "0 s (no transition)",
"alarmFadeInSummary": "{seconds} s (from 5% to the selected volume)",
"defaultAlarmName": "Музыкальный будильник",
"newAlarmTitle": "Новый будильник",
"editAlarmTitle": "Изменить будильник",
"nameField": "Название",
"timeField": "Время",
"dateField": "Дата",
"onceOption": "Один раз",
"dailyOption": "Ежедневно",
"weekdaysOption": "Дни",
"soundAndVolumeSection": "Звук и громкость",
"alarmFadeInTitle": "Плавное усиление будильника",
"alarmFadeInOff": "0 с (без перехода)",
"alarmFadeInSummary": "{seconds} с (с 5% до выбранной громкости)",
"@alarmFadeInSummary": {
"placeholders": {
"seconds": {
@@ -388,22 +416,22 @@
}
}
},
"internalSafeSoundLabel": "Internal safe sound",
"soundWarmSunrise": "Warm sunrise",
"soundSoftBell": "Soft bell",
"soundDigitalPulse": "Digital pulse",
"favoriteStationLabel": "Favorite station",
"noStationUseInternalSound": "No station: use internal sound",
"saveFavoritesAlarmHint": "Save stations in Favorites to use them as a music alarm.",
"useCurrentStationAction": "Use current station",
"playDuringVacations": "Play during vacations",
"playDuringVacationsHint": "If you turn this off, the next occurrence will jump to the first valid day.",
"saveAlarmAction": "Save alarm",
"chooseOneWeekdayError": "Choose at least one weekday.",
"androidReliabilityReview": "Review Android reliability",
"statusOk": "OK",
"statusPending": "pending",
"androidReliabilityStatus": "Reliability: exact {exact} ? notifications {notifications} ? screen {screen}",
"internalSafeSoundLabel": "Безопасный внутренний звук",
"soundWarmSunrise": "Тёплый рассвет",
"soundSoftBell": "Мягкий колокольчик",
"soundDigitalPulse": "Цифровой импульс",
"favoriteStationLabel": "Избранная станция",
"noStationUseInternalSound": "Без станции: использовать внутренний звук",
"saveFavoritesAlarmHint": "Сохраните станции в избранное, чтобы использовать их как музыкальный будильник.",
"useCurrentStationAction": "Использовать текущую станцию",
"playDuringVacations": "Звонить во время отпусков",
"playDuringVacationsHint": "Если выключить, следующий запуск перейдёт на первый допустимый день.",
"saveAlarmAction": "Сохранить будильник",
"chooseOneWeekdayError": "Выберите хотя бы один день недели.",
"androidReliabilityReview": "Проверить надёжность Android",
"statusOk": "ОК",
"statusPending": "ожидает",
"androidReliabilityStatus": "Надёжность: точные {exact} · уведомления {notifications} · экран {screen}",
"@androidReliabilityStatus": {
"placeholders": {
"exact": {},
@@ -411,19 +439,165 @@
"screen": {}
}
},
"vacationRangesTitle": "Vacation ranges",
"addAction": "Add",
"vacationRangesHint": "If an alarm is set to \"Paused during vacations\", it automatically skips these ranges.",
"noVacationRangesLoaded": "No ranges loaded.",
"deleteRangeTooltip": "Delete range",
"vacationsDefaultName": "Vacation",
"newVacationRangeTitle": "New vacation range",
"startField": "Start",
"endField": "End",
"saveRangeAction": "Save range",
"noAlarmsYetTitle": "There are no alarms yet.",
"noAlarmsYetSubtitle": "Create one to design your musical wake-up.",
"ringingInternalAudioActive": "Playing with internal safe audio.",
"ringingPreparingInternalAudio": "Preparing internal safe audio.",
"stopAlarmAction": "Stop alarm"
"vacationRangesTitle": "Периоды отпусков",
"addAction": "Добавить",
"vacationRangesHint": "Если у будильника включена «Пауза в отпуске», эти периоды будут автоматически пропущены.",
"noVacationRangesLoaded": "Периоды не загружены.",
"deleteRangeTooltip": "Удалить период",
"vacationsDefaultName": "Отпуск",
"newVacationRangeTitle": "Новый период отпуска",
"startField": "Начало",
"endField": "Конец",
"saveRangeAction": "Сохранить период",
"noAlarmsYetTitle": "Будильников пока нет.",
"noAlarmsYetSubtitle": "Создайте один, чтобы настроить своё музыкальное пробуждение.",
"ringingInternalAudioActive": "Звонит с безопасным внутренним звуком.",
"ringingPreparingInternalAudio": "Подготовка безопасного внутреннего звука.",
"stopAlarmAction": "Остановить будильник",
"pauseAction": "Пауза",
"miniPlayerOpenLabel": "Открыть плеер для {stationName}",
"@miniPlayerOpenLabel": {
"placeholders": {
"stationName": {}
}
},
"playerIconLabel": "Плеер",
"playbackStatusConnecting": "Подключение...",
"playbackStatusLive": "В эфире",
"playbackStatusPaused": "Приостановлено",
"playbackStatusConnectionError": "Ошибка подключения",
"playbackStatusStopped": "Остановлено",
"stationSemanticLabel": "Станция {stationName}",
"@stationSemanticLabel": {
"placeholders": {
"stationName": {}
}
},
"favoritesAddTooltip": "Добавить в избранное",
"favoritesAddedMessage": "{stationName} добавлена в избранное",
"@favoritesAddedMessage": {
"placeholders": {
"stationName": {}
}
},
"stationIconLabel": "Значок станции",
"liveNow": "В эфире",
"equalizerBandLabel": "Полоса {band}",
"@equalizerBandLabel": {
"placeholders": {
"band": {}
}
},
"equalizerBandValue": "{value} дБ",
"@equalizerBandValue": {
"placeholders": {
"value": {}
}
},
"equalizerPresetFlat": "Плоский",
"equalizerPresetRock": "Рок",
"equalizerPresetPop": "Поп",
"equalizerPresetBassBoost": "Усиление басов",
"equalizerPresetJazz": "Джаз",
"equalizerPresetVoice": "Голос",
"equalizerPresetCustom": "Пользовательский",
"onboardingTitle": "Добро пожаловать в PluriWave",
"onboardingNewsTitle": "Что нового",
"onboardingStartAction": "Начать",
"onboardingCloseTooltip": "Закрыть",
"radioRecordingError": "Ошибка записи радио: {error}",
"@radioRecordingError": {
"placeholders": {
"error": {}
}
},
"radioApiConnectionError": "Нет подключения к API радио",
"radioSearchError": "Ошибка поиска. Проверьте подключение.",
"radioLoadMoreStationsError": "Не удалось загрузить больше станций.",
"radioNearbyStationsError": "Не удалось обнаружить ближайшие станции. Используйте фильтры по стране.",
"radioCannotPlayStation": "Невозможно воспроизвести \"{stationName}\"",
"@radioCannotPlayStation": {
"placeholders": {
"stationName": {}
}
},
"recordingSelectStationFirst": "Сначала выберите станцию для записи.",
"recordingStartError": "Не удалось начать запись: {error}",
"@recordingStartError": {
"placeholders": {
"error": {}
}
},
"unsupportedConfigVersion": "Неподдерживаемая версия конфигурации",
"audioErrorGeneric": "Ошибка воспроизведения",
"audioErrorNoInternet": "Нет подключения к интернету",
"audioErrorInvalidUrl": "URL радио недействителен",
"audioErrorNotFound": "Радио недоступно (ошибка 404)",
"audioErrorTimeout": "Время ожидания подключения истекло",
"audioErrorCannotConnect": "Не удалось подключиться к радио",
"audioErrorUnsupportedFormat": "Неподдерживаемый формат потока",
"audioErrorDecode": "Ошибка декодирования аудиопотока",
"audioErrorCleartext": "Это радио использует незашифрованный HTTP, что не разрешено",
"audioErrorSsl": "Недействительный SSL-сертификат у радио",
"audioErrorCannotPlay": "Это радио невозможно воспроизвести",
"audioErrorUnexpectedPlayback": "Неожиданная ошибка воспроизведения",
"androidExactAlarmScheduleError": "Android не смог запланировать точный будильник. Проверьте разрешение для точных будильников.",
"recordingPathEmptyError": "Путь записи не может быть пустым",
"recordingMaxSizeInvalidError": "Максимальный размер должен быть больше нуля",
"recordingAlreadyActiveError": "Запись уже выполняется",
"alarmRingingFallbackActive": "Воспроизведение с внутренним безопасным аудио.",
"alarmRingingPreparingFallback": "Подготавливается внутреннее безопасное аудио.",
"alarmRingingTryingStation": "Пытаемся воспроизвести вашу станцию в максимально доступном качестве.",
"alarmScheduleOnce": "Один раз · {date}",
"@alarmScheduleOnce": {
"placeholders": {
"date": {}
}
},
"alarmScheduleWeekdays": "Дни: {days}",
"@alarmScheduleWeekdays": {
"placeholders": {
"days": {}
}
},
"androidReliabilityTitle": "Проверить надёжность Android",
"closeAction": "Закрыть",
"customOption": "Своя",
"endLabel": "Конец",
"equalizerDisable": "Отключить эквалайзер",
"helpTitle": "Помощь и руководство",
"helpSubtitle": "Посмотрите функции, советы и новости PluriWave.",
"indefiniteOption": "Без ограничения",
"invalidNumber": "Недопустимое число",
"nameLabel": "Название",
"notPlaying": "Не воспроизводится",
"oneTimeOption": "Один раз",
"pausePlaybackTooltip": "Пауза",
"qualityOriginal": "Исходное качество: {quality}",
"@qualityOriginal": {
"placeholders": {
"quality": {}
}
},
"qualityUnknown": "Качество не указано",
"recordAction": "Записать",
"recordDurationTitle": "Длительность записи",
"recordRadioSubtitle": "Выберите длительность записи.",
"recordRadioTitle": "Записать радио",
"recordingActiveTitle": "Запись радио",
"recordingDirectTitle": "Прямая запись",
"recordingsOpenFolderPlainError": "Не удалось открыть папку записей",
"recordingsOpenLatest": "Открыть последнюю запись",
"recordingsOpenLatestError": "Не удалось открыть последнюю запись",
"startLabel": "Начало",
"startPlaybackTooltip": "Начать воспроизведение",
"stopAction": "Остановить",
"stopPlaybackTooltip": "Остановить воспроизведение",
"weekdayShortMonday": "Пн",
"weekdayShortTuesday": "Вт",
"weekdayShortWednesday": "Ср",
"weekdayShortThursday": "Чт",
"weekdayShortFriday": "Пт",
"weekdayShortSaturday": "Сб",
"weekdayShortSunday": "Вс"
}