SpotiFLAC-Mobile/lib/l10n/arb/app_ru.arb
zarzet 101ab3f521 refactor: remove built-in provider registry in favor of extensions
All search, metadata, and download providers are now exclusively
supplied by extensions. The built-in provider registry that previously
exposed Deezer/Tidal/Qobuz as hardcoded providers is fully removed.

Removed across Go, Dart, Kotlin, and Swift:
- BuiltInProviderSpec class, registry, and all accessor helpers
- SearchProviderAllJSON, GetBuiltInProvidersJSON, ParseProviderURLJSON,
  ParseDeezerURLExport Go exports and their platform channel bindings
- Built-in provider items in search dropdown, service picker, and
  provider priority UI lists
- provider_ui_utils.dart helper file

Deezer metadata enrichment (ISRC lookup, extended metadata, cover
upgrade) remains fully functional through direct DeezerClient calls
in the download pipeline — these are not part of the provider
registry and are unaffected.

Mark deezer as a retired built-in metadata provider so stale user
priority lists are cleaned up on next launch.
2026-05-05 03:55:24 +07:00

4577 lines
173 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"@@locale": "ru",
"@@last_modified": "2026-01-16",
"appName": "SpotiFLAC Mobile",
"@appName": {
"description": "App name - DO NOT TRANSLATE"
},
"navHome": "Главная",
"@navHome": {
"description": "Bottom navigation - Home tab"
},
"navLibrary": "Библиотека",
"@navLibrary": {
"description": "Bottom navigation - Library tab"
},
"navSettings": "Настройки",
"@navSettings": {
"description": "Bottom navigation - Settings tab"
},
"navStore": "Repo",
"@navStore": {
"description": "Bottom navigation - Extension store tab"
},
"homeTitle": "Главная",
"@homeTitle": {
"description": "Home screen title"
},
"homeSubtitle": "Paste a supported URL or search by name",
"@homeSubtitle": {
"description": "Subtitle shown below search box"
},
"homeSupports": "Поддерживается: Трек, Альбом, Плейлист, URL исполнителя",
"@homeSupports": {
"description": "Info text about supported URL types"
},
"homeRecent": "Недавние",
"@homeRecent": {
"description": "Section header for recent searches"
},
"historyFilterAll": "Все",
"@historyFilterAll": {
"description": "Filter chip - show all items"
},
"historyFilterAlbums": "Альбомы",
"@historyFilterAlbums": {
"description": "Filter chip - show albums only"
},
"historyFilterSingles": "Синглы",
"@historyFilterSingles": {
"description": "Filter chip - show singles only"
},
"historySearchHint": "Поиск в истории...",
"@historySearchHint": {
"description": "Search bar placeholder in history"
},
"settingsTitle": "Настройки",
"@settingsTitle": {
"description": "Settings screen title"
},
"settingsDownload": "Скачивание",
"@settingsDownload": {
"description": "Settings section - download options"
},
"settingsAppearance": "Внешний вид",
"@settingsAppearance": {
"description": "Settings section - visual customization"
},
"settingsOptions": "Опции",
"@settingsOptions": {
"description": "Settings section - app options"
},
"settingsExtensions": "Расширения",
"@settingsExtensions": {
"description": "Settings section - extension management"
},
"settingsAbout": "О программе",
"@settingsAbout": {
"description": "Settings section - app info"
},
"downloadTitle": "Скачать",
"@downloadTitle": {
"description": "Download settings page title"
},
"downloadAskQualitySubtitle": "Показывать выбор качества для каждого скачивания",
"@downloadAskQualitySubtitle": {
"description": "Subtitle for ask quality toggle"
},
"downloadFilenameFormat": "Формат имени файла",
"@downloadFilenameFormat": {
"description": "Setting for output filename pattern"
},
"downloadSingleFilenameFormat": "Single Filename Format",
"@downloadSingleFilenameFormat": {
"description": "Setting for output filename pattern for singles/EPs"
},
"downloadSingleFilenameFormatDescription": "Filename pattern for singles and EPs. Uses the same tags as the album format.",
"@downloadSingleFilenameFormatDescription": {
"description": "Subtitle description for single filename format setting"
},
"downloadFolderOrganization": "Организация папок",
"@downloadFolderOrganization": {
"description": "Title of the folder organization picker bottom sheet"
},
"appearanceTitle": "Внешний вид",
"@appearanceTitle": {
"description": "Appearance settings page title"
},
"appearanceThemeSystem": "Системная",
"@appearanceThemeSystem": {
"description": "Follow system theme"
},
"appearanceThemeLight": "Светлая",
"@appearanceThemeLight": {
"description": "Light theme"
},
"appearanceThemeDark": "Тёмная",
"@appearanceThemeDark": {
"description": "Dark theme"
},
"appearanceDynamicColor": "Динамический цвет",
"@appearanceDynamicColor": {
"description": "Material You dynamic colors"
},
"appearanceDynamicColorSubtitle": "Использовать цвета из ваших обоев",
"@appearanceDynamicColorSubtitle": {
"description": "Subtitle for dynamic color"
},
"appearanceHistoryView": "Отображение истории",
"@appearanceHistoryView": {
"description": "Layout style for history"
},
"appearanceHistoryViewList": "Список",
"@appearanceHistoryViewList": {
"description": "List layout option"
},
"appearanceHistoryViewGrid": "Сетка",
"@appearanceHistoryViewGrid": {
"description": "Grid layout option"
},
"optionsTitle": "Опции",
"@optionsTitle": {
"description": "Options settings page title"
},
"optionsPrimaryProvider": "Основной провайдер",
"@optionsPrimaryProvider": {
"description": "Main search provider setting"
},
"optionsPrimaryProviderSubtitle": "Сервис, используемый при поиске по названию трека.",
"@optionsPrimaryProviderSubtitle": {
"description": "Subtitle for primary provider"
},
"optionsUsingExtension": "Используется расширение: {extensionName}",
"@optionsUsingExtension": {
"description": "Shows active extension name",
"placeholders": {
"extensionName": {
"type": "String"
}
}
},
"optionsDefaultSearchTab": "Default Search Tab",
"@optionsDefaultSearchTab": {
"description": "Title for the preferred default search tab setting"
},
"optionsDefaultSearchTabSubtitle": "Choose which tab opens first for new search results.",
"@optionsDefaultSearchTabSubtitle": {
"description": "Subtitle for the preferred default search tab setting"
},
"optionsDefaultSearchTabAlbums": "Albums",
"@optionsDefaultSearchTabAlbums": {
"description": "Default search tab option - Albums tab"
},
"optionsDefaultSearchTabTracks": "Tracks",
"@optionsDefaultSearchTabTracks": {
"description": "Default search tab option - Tracks tab"
},
"optionsSwitchBack": "Нажмите Deezer или Spotify для возврата с расширения",
"@optionsSwitchBack": {
"description": "Hint to switch back to built-in providers"
},
"optionsAutoFallback": "Автоматический переход",
"@optionsAutoFallback": {
"description": "Auto-retry with other services"
},
"optionsAutoFallbackSubtitle": "Попробовать другие сервисы при сбое загрузки",
"@optionsAutoFallbackSubtitle": {
"description": "Subtitle for auto fallback"
},
"optionsUseExtensionProviders": "Использовать провайдера расширений",
"@optionsUseExtensionProviders": {
"description": "Enable extension download providers"
},
"optionsUseExtensionProvidersOn": "Сначала будут опробованы расширения",
"@optionsUseExtensionProvidersOn": {
"description": "Status when extension providers enabled"
},
"optionsUseExtensionProvidersOff": "Использование только встроенных провайдеров",
"@optionsUseExtensionProvidersOff": {
"description": "Status when extension providers disabled"
},
"optionsEmbedLyrics": "Вписать текст песни",
"@optionsEmbedLyrics": {
"description": "Embed lyrics in audio files"
},
"optionsEmbedLyricsSubtitle": "Вписать синхронизированные тексты во FLAC файлы",
"@optionsEmbedLyricsSubtitle": {
"description": "Subtitle for embed lyrics"
},
"optionsMaxQualityCover": "Максимальное качество обложки",
"@optionsMaxQualityCover": {
"description": "Download highest quality album art"
},
"optionsMaxQualityCoverSubtitle": "Скачивать обложку в макс. разрешении",
"@optionsMaxQualityCoverSubtitle": {
"description": "Subtitle for max quality cover"
},
"optionsReplayGain": "ReplayGain",
"@optionsReplayGain": {
"description": "Title for ReplayGain setting toggle"
},
"optionsReplayGainSubtitleOn": "Scan loudness and embed ReplayGain tags (EBU R128)",
"@optionsReplayGainSubtitleOn": {
"description": "Subtitle when ReplayGain is enabled"
},
"optionsReplayGainSubtitleOff": "Disabled: no loudness normalization tags",
"@optionsReplayGainSubtitleOff": {
"description": "Subtitle when ReplayGain is disabled"
},
"optionsArtistTagMode": "Artist Tag Mode",
"@optionsArtistTagMode": {
"description": "Setting title for how artist metadata is written into files"
},
"optionsArtistTagModeDescription": "Choose how multiple artists are written into embedded tags.",
"@optionsArtistTagModeDescription": {
"description": "Bottom-sheet description for artist tag mode setting"
},
"optionsArtistTagModeJoined": "Single joined value",
"@optionsArtistTagModeJoined": {
"description": "Artist tag mode option that joins multiple artists into one value"
},
"optionsArtistTagModeJoinedSubtitle": "Write one ARTIST value like \"Artist A, Artist B\" for maximum player compatibility.",
"@optionsArtistTagModeJoinedSubtitle": {
"description": "Subtitle for joined artist tag mode"
},
"optionsArtistTagModeSplitVorbis": "Split tags for FLAC/Opus",
"@optionsArtistTagModeSplitVorbis": {
"description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats"
},
"optionsArtistTagModeSplitVorbisSubtitle": "Write one artist tag per artist for FLAC and Opus; MP3 and M4A stay joined.",
"@optionsArtistTagModeSplitVorbisSubtitle": {
"description": "Subtitle for split Vorbis artist tag mode"
},
"optionsConcurrentDownloads": "Одновременные загрузки",
"@optionsConcurrentDownloads": {
"description": "Number of parallel downloads"
},
"optionsConcurrentSequential": "Последовательно (1 за раз)",
"@optionsConcurrentSequential": {
"description": "Download one at a time"
},
"optionsConcurrentParallel": "{count} параллельных загрузок",
"@optionsConcurrentParallel": {
"description": "Multiple parallel downloads",
"placeholders": {
"count": {
"type": "int"
}
}
},
"optionsConcurrentWarning": "Параллельные загрузки могут вызвать ограничение скорости",
"@optionsConcurrentWarning": {
"description": "Warning about rate limits"
},
"optionsExtensionStore": "Extension Repo",
"@optionsExtensionStore": {
"description": "Show/hide store tab"
},
"optionsExtensionStoreSubtitle": "Show Repo tab in navigation",
"@optionsExtensionStoreSubtitle": {
"description": "Subtitle for extension store toggle"
},
"optionsCheckUpdates": "Проверить обновления",
"@optionsCheckUpdates": {
"description": "Auto update check toggle"
},
"optionsCheckUpdatesSubtitle": "Уведомлять о наличии новой версии",
"@optionsCheckUpdatesSubtitle": {
"description": "Subtitle for update check"
},
"optionsUpdateChannel": "Канал обновлений",
"@optionsUpdateChannel": {
"description": "Stable vs preview releases"
},
"optionsUpdateChannelStable": "Только стабильные релизы",
"@optionsUpdateChannelStable": {
"description": "Only stable updates"
},
"optionsUpdateChannelPreview": "Предварительные версии",
"@optionsUpdateChannelPreview": {
"description": "Include beta/preview updates"
},
"optionsUpdateChannelWarning": "Предварительная версия может содержать ошибки или неполные функции",
"@optionsUpdateChannelWarning": {
"description": "Warning about preview channel"
},
"optionsClearHistory": "Очистить историю загрузок",
"@optionsClearHistory": {
"description": "Delete all download history"
},
"optionsClearHistorySubtitle": "Удалить все скачанные треки из истории",
"@optionsClearHistorySubtitle": {
"description": "Subtitle for clear history"
},
"optionsDetailedLogging": "Подробный лог",
"@optionsDetailedLogging": {
"description": "Enable verbose logs for debugging"
},
"optionsDetailedLoggingOn": "Ведутся подробные логи",
"@optionsDetailedLoggingOn": {
"description": "Status when logging enabled"
},
"optionsDetailedLoggingOff": "Включить для отчётов об ошибках",
"@optionsDetailedLoggingOff": {
"description": "Status when logging disabled"
},
"optionsSpotifyCredentials": "Учётные данные Spotify",
"@optionsSpotifyCredentials": {
"description": "Spotify API credentials setting"
},
"optionsSpotifyCredentialsConfigured": "Client ID: {clientId}...",
"@optionsSpotifyCredentialsConfigured": {
"description": "Shows configured client ID preview",
"placeholders": {
"clientId": {
"type": "String"
}
}
},
"optionsSpotifyCredentialsRequired": "Необходимо - нажмите для настройки",
"@optionsSpotifyCredentialsRequired": {
"description": "Prompt to set up credentials"
},
"optionsSpotifyWarning": "Spotify требует ваши собственные учетные данные API. Получите их бесплатно на сайте developer.spotify.com",
"@optionsSpotifyWarning": {
"description": "Info about Spotify API requirement"
},
"optionsSpotifyDeprecationWarning": "Поиск Spotify устареет 3 марта 2026 года из-за изменений Spotify API. Пожалуйста, перейдите на Deezer.",
"@optionsSpotifyDeprecationWarning": {
"description": "Warning about Spotify API deprecation"
},
"extensionsTitle": "Расширения",
"@extensionsTitle": {
"description": "Extensions page title"
},
"extensionsDisabled": "Выключено",
"@extensionsDisabled": {
"description": "Extension status - inactive"
},
"extensionsVersion": "Версия {version}",
"@extensionsVersion": {
"description": "Extension version display",
"placeholders": {
"version": {
"type": "String"
}
}
},
"extensionsAuthor": "от {author}",
"@extensionsAuthor": {
"description": "Extension author credit",
"placeholders": {
"author": {
"type": "String"
}
}
},
"extensionsUninstall": "Удалить",
"@extensionsUninstall": {
"description": "Uninstall extension button"
},
"storeTitle": "Extension Repo",
"@storeTitle": {
"description": "Store screen title"
},
"storeSearch": "Поиск расширений...",
"@storeSearch": {
"description": "Store search placeholder"
},
"storeInstall": "Установить",
"@storeInstall": {
"description": "Install extension button"
},
"storeInstalled": "Установлено",
"@storeInstalled": {
"description": "Already installed badge"
},
"storeUpdate": "Обновить",
"@storeUpdate": {
"description": "Update available button"
},
"aboutTitle": "О программе",
"@aboutTitle": {
"description": "About page title"
},
"aboutContributors": "Участники",
"@aboutContributors": {
"description": "Section for contributors"
},
"aboutMobileDeveloper": "Разработчик мобильной версии",
"@aboutMobileDeveloper": {
"description": "Role description for mobile dev"
},
"aboutOriginalCreator": "Создатель оригинального SpotiFLAC",
"@aboutOriginalCreator": {
"description": "Role description for original creator"
},
"aboutLogoArtist": "Талантливый художник, который создал наш красивый логотип приложения!",
"@aboutLogoArtist": {
"description": "Role description for logo artist"
},
"aboutTranslators": "Переводчики",
"@aboutTranslators": {
"description": "Section for translators"
},
"aboutSpecialThanks": "Особая благодарность",
"@aboutSpecialThanks": {
"description": "Section for special thanks"
},
"aboutLinks": "Ссылки",
"@aboutLinks": {
"description": "Section for external links"
},
"aboutMobileSource": "Исходный код мобильной версии",
"@aboutMobileSource": {
"description": "Link to mobile GitHub repo"
},
"aboutPCSource": "Исходный код ПК версии",
"@aboutPCSource": {
"description": "Link to PC GitHub repo"
},
"aboutKeepAndroidOpen": "Keep Android Open",
"@aboutKeepAndroidOpen": {
"description": "Link to Keep Android Open campaign website"
},
"aboutReportIssue": "Сообщить о проблеме",
"@aboutReportIssue": {
"description": "Link to report bugs"
},
"aboutReportIssueSubtitle": "Сообщите о возникших проблемах",
"@aboutReportIssueSubtitle": {
"description": "Subtitle for report issue"
},
"aboutFeatureRequest": "Предложить новую функцию",
"@aboutFeatureRequest": {
"description": "Link to suggest features"
},
"aboutFeatureRequestSubtitle": "Предложить новые функции для приложения",
"@aboutFeatureRequestSubtitle": {
"description": "Subtitle for feature request"
},
"aboutTelegramChannel": "Telegram канал",
"@aboutTelegramChannel": {
"description": "Link to Telegram channel"
},
"aboutTelegramChannelSubtitle": "Объявления и обновления",
"@aboutTelegramChannelSubtitle": {
"description": "Subtitle for Telegram channel"
},
"aboutTelegramChat": "Сообщество в Telegram",
"@aboutTelegramChat": {
"description": "Link to Telegram chat group"
},
"aboutTelegramChatSubtitle": "Чат с другими пользователями",
"@aboutTelegramChatSubtitle": {
"description": "Subtitle for Telegram chat"
},
"aboutSocial": "Соцсети",
"@aboutSocial": {
"description": "Section for social links"
},
"aboutApp": "Приложение",
"@aboutApp": {
"description": "Section for app info"
},
"aboutVersion": "Версия",
"@aboutVersion": {
"description": "Version info label"
},
"aboutBinimumDesc": "Создатель QQDL & HiFi API. Без него API загрузки Tidal не существовали бы!",
"@aboutBinimumDesc": {
"description": "Credit description for binimum"
},
"aboutSachinsenalDesc": "Оригинальный создатель проекта HiFi. Основатель Tidal интеграции!",
"@aboutSachinsenalDesc": {
"description": "Credit description for sachinsenal0x64"
},
"aboutSjdonadoDesc": "Создатель I Don't Have Spotify (IDHS). Резервный резолвер ссылки",
"@aboutSjdonadoDesc": {
"description": "Credit description for sjdonado"
},
"aboutAppDescription": "Скачивайте треки Spotify в lossless качестве с Tidal и Qobuz.",
"@aboutAppDescription": {
"description": "App description in header card"
},
"artistAlbums": "Альбомы",
"@artistAlbums": {
"description": "Section header for artist albums"
},
"artistSingles": "Синглы и EP",
"@artistSingles": {
"description": "Section header for singles/EPs"
},
"artistCompilations": "Сборники",
"@artistCompilations": {
"description": "Section header for compilations"
},
"artistPopular": "Популярное",
"@artistPopular": {
"description": "Section header for popular/top tracks"
},
"artistMonthlyListeners": "{count} слушателей в месяц",
"@artistMonthlyListeners": {
"description": "Monthly listener count display",
"placeholders": {
"count": {
"type": "String",
"description": "Formatted listener count"
}
}
},
"trackMetadataService": "Сервис",
"@trackMetadataService": {
"description": "Metadata field - download service used"
},
"trackMetadataPlay": "Воспроизвести",
"@trackMetadataPlay": {
"description": "Action button - play track"
},
"trackMetadataShare": "Поделиться",
"@trackMetadataShare": {
"description": "Action button - share track"
},
"trackMetadataDelete": "Удалить",
"@trackMetadataDelete": {
"description": "Action button - delete track"
},
"setupGrantPermission": "Предоставить разрешение",
"@setupGrantPermission": {
"description": "Button to request permission"
},
"setupSkip": "Пропустить",
"@setupSkip": {
"description": "Skip current step button"
},
"setupStorageAccessRequired": "Требуется доступ к хранилищу",
"@setupStorageAccessRequired": {
"description": "Title when storage access needed"
},
"setupStorageAccessMessageAndroid11": "Для Android 11+ требуется разрешение \"Доступ ко всем файлам\" для сохранения файлов в выбранную вами папку загрузки.",
"@setupStorageAccessMessageAndroid11": {
"description": "Android 11+ specific explanation"
},
"setupOpenSettings": "Открыть настройки",
"@setupOpenSettings": {
"description": "Button to open system settings"
},
"setupPermissionDeniedMessage": "В разрешении отказано. Пожалуйста, предоставьте все разрешения для продолжения.",
"@setupPermissionDeniedMessage": {
"description": "Error when permission denied"
},
"setupPermissionRequired": "Требуется разрешение {permissionType}",
"@setupPermissionRequired": {
"description": "Generic permission required title",
"placeholders": {
"permissionType": {
"type": "String",
"description": "Type of permission (Storage/Notification)"
}
}
},
"setupPermissionRequiredMessage": "Для оптимальной работы требуется разрешение {permissionType}. Вы можете изменить это позже в настройках.",
"@setupPermissionRequiredMessage": {
"description": "Generic permission required message",
"placeholders": {
"permissionType": {
"type": "String"
}
}
},
"setupUseDefaultFolder": "Использовать папку по умолчанию?",
"@setupUseDefaultFolder": {
"description": "Dialog title for default folder"
},
"setupNoFolderSelected": "Папка не выбрана. Хотите использовать папку Музыка по умолчанию?",
"@setupNoFolderSelected": {
"description": "Prompt when no folder selected"
},
"setupUseDefault": "По умолчанию",
"@setupUseDefault": {
"description": "Button to use default folder"
},
"setupDownloadLocationTitle": "Папка для скачивания",
"@setupDownloadLocationTitle": {
"description": "Download location dialog title"
},
"setupDownloadLocationIosMessage": "В iOS загрузки сохраняются в папке Документы приложения. Вы можете получить к ним доступ через приложение Файлы.",
"@setupDownloadLocationIosMessage": {
"description": "iOS-specific folder info"
},
"setupAppDocumentsFolder": "Папка Документы приложения",
"@setupAppDocumentsFolder": {
"description": "iOS documents folder option"
},
"setupAppDocumentsFolderSubtitle": "Рекомендуется - доступ через Файлы",
"@setupAppDocumentsFolderSubtitle": {
"description": "Subtitle for documents folder"
},
"setupChooseFromFiles": "Выбрать из файлов",
"@setupChooseFromFiles": {
"description": "iOS file picker option"
},
"setupChooseFromFilesSubtitle": "Выберите iCloud или другое местоположение",
"@setupChooseFromFilesSubtitle": {
"description": "Subtitle for file picker"
},
"setupIosEmptyFolderWarning": "Ограничение iOS: пустые папки не могут быть выбраны. Выберите папку, содержащую хотя бы один файл.",
"@setupIosEmptyFolderWarning": {
"description": "iOS folder selection warning"
},
"setupIcloudNotSupported": "iCloud Drive не поддерживается. Пожалуйста, используйте папку Документы.",
"@setupIcloudNotSupported": {
"description": "Error when user selects iCloud Drive on iOS"
},
"setupDownloadInFlac": "Скачать Spotify треки во FLAC",
"@setupDownloadInFlac": {
"description": "App tagline in setup"
},
"setupStorageGranted": "Доступ к хранилищу предоставлен!",
"@setupStorageGranted": {
"description": "Success message for storage permission"
},
"setupStorageRequired": "Требуется доступ к хранилищу",
"@setupStorageRequired": {
"description": "Title when storage permission needed"
},
"setupStorageDescription": "SpotiFLAC требуется разрешение на хранение для сохранения скачанных файлов.",
"@setupStorageDescription": {
"description": "Explanation for storage permission"
},
"setupNotificationGranted": "Разрешение на уведомление предоставлено!",
"@setupNotificationGranted": {
"description": "Success message for notification permission"
},
"setupNotificationEnable": "Включить уведомления",
"@setupNotificationEnable": {
"description": "Button to enable notifications"
},
"setupFolderChoose": "Выбрать папку для скачивания",
"@setupFolderChoose": {
"description": "Button to choose folder"
},
"setupFolderDescription": "Выберите папку, в которой будет сохраняться скачанная музыка.",
"@setupFolderDescription": {
"description": "Explanation for folder selection"
},
"setupSelectFolder": "Выбрать папку",
"@setupSelectFolder": {
"description": "Button to select folder"
},
"setupEnableNotifications": "Включить уведомления",
"@setupEnableNotifications": {
"description": "Button to enable notifications"
},
"setupNotificationBackgroundDescription": "Получайте уведомления о ходе и завершении загрузки. Это поможет вам отслеживать загрузки, когда приложение находится в фоновом режиме.",
"@setupNotificationBackgroundDescription": {
"description": "Detailed notification explanation"
},
"setupSkipForNow": "Пропустить",
"@setupSkipForNow": {
"description": "Skip button text"
},
"setupNext": "Далее",
"@setupNext": {
"description": "Next button text"
},
"setupGetStarted": "Приступить к работе",
"@setupGetStarted": {
"description": "Final setup button"
},
"setupAllowAccessToManageFiles": "Пожалуйста, включите \"Разрешить доступ для управления всеми файлами\" на следующем экране.",
"@setupAllowAccessToManageFiles": {
"description": "Instruction for file access permission"
},
"dialogCancel": "Отмена",
"@dialogCancel": {
"description": "Dialog button - cancel action"
},
"dialogSave": "Сохранить",
"@dialogSave": {
"description": "Dialog button - save changes"
},
"dialogDelete": "Удалить",
"@dialogDelete": {
"description": "Dialog button - delete item"
},
"dialogRetry": "Повторить",
"@dialogRetry": {
"description": "Dialog button - retry action"
},
"dialogClear": "Очистить",
"@dialogClear": {
"description": "Dialog button - clear items"
},
"dialogDone": "Готово",
"@dialogDone": {
"description": "Dialog button - action completed"
},
"dialogImport": "Импорт",
"@dialogImport": {
"description": "Dialog button - import data"
},
"dialogDownload": "Download",
"@dialogDownload": {
"description": "Confirm button in Download All dialog"
},
"dialogDiscard": "Отменить",
"@dialogDiscard": {
"description": "Dialog button - discard changes"
},
"dialogRemove": "Убрать",
"@dialogRemove": {
"description": "Dialog button - remove item"
},
"dialogUninstall": "Удалить",
"@dialogUninstall": {
"description": "Dialog button - uninstall extension"
},
"dialogDiscardChanges": "Отменить изменения?",
"@dialogDiscardChanges": {
"description": "Dialog title - unsaved changes warning"
},
"dialogUnsavedChanges": "Есть несохраненные изменения. Отменить их?",
"@dialogUnsavedChanges": {
"description": "Dialog message - unsaved changes"
},
"dialogClearAll": "Очистить всё",
"@dialogClearAll": {
"description": "Dialog title - clear all items"
},
"dialogRemoveExtension": "Удалить расширение",
"@dialogRemoveExtension": {
"description": "Dialog title - uninstall extension"
},
"dialogRemoveExtensionMessage": "Вы уверены, что хотите удалить это расширение? Это действие не может быть отменено.",
"@dialogRemoveExtensionMessage": {
"description": "Dialog message - uninstall confirmation"
},
"dialogUninstallExtension": "Удалить расширение?",
"@dialogUninstallExtension": {
"description": "Dialog title - uninstall extension"
},
"dialogUninstallExtensionMessage": "Вы уверены, что хотите удалить {extensionName}?",
"@dialogUninstallExtensionMessage": {
"description": "Dialog message - uninstall specific extension",
"placeholders": {
"extensionName": {
"type": "String"
}
}
},
"dialogClearHistoryTitle": "Очистить историю",
"@dialogClearHistoryTitle": {
"description": "Dialog title - clear download history"
},
"dialogClearHistoryMessage": "Вы уверены, что хотите удалить всю историю загрузок? Это действие необратимо.",
"@dialogClearHistoryMessage": {
"description": "Dialog message - clear history confirmation"
},
"dialogDeleteSelectedTitle": "Удалить выбранные",
"@dialogDeleteSelectedTitle": {
"description": "Dialog title - delete selected items"
},
"dialogDeleteSelectedMessage": "Удалить {count} {count, plural, one {трек} few {трека} many {треков} other{треков}} из истории?\n\nЭто также удалит файлы из хранилища.",
"@dialogDeleteSelectedMessage": {
"description": "Dialog message - delete selected tracks",
"placeholders": {
"count": {
"type": "int"
}
}
},
"dialogImportPlaylistTitle": "Импорт плейлиста",
"@dialogImportPlaylistTitle": {
"description": "Dialog title - import CSV playlist"
},
"dialogImportPlaylistMessage": "Найдено {count} треков в CSV. Добавить их в очередь загрузки?",
"csvImportTracks": "{count} трек(-ов) из CSV",
"@csvImportTracks": {
"description": "Label shown in quality picker for CSV import",
"placeholders": {
"count": {
"type": "int"
}
}
},
"@dialogImportPlaylistMessage": {
"description": "Dialog message - import playlist confirmation",
"placeholders": {
"count": {
"type": "int"
}
}
},
"snackbarAddedToQueue": "\"{trackName}\" добавлен в очередь",
"@snackbarAddedToQueue": {
"description": "Snackbar - track added to download queue",
"placeholders": {
"trackName": {
"type": "String"
}
}
},
"snackbarAddedTracksToQueue": "Добавлено {count} треков в очередь",
"@snackbarAddedTracksToQueue": {
"description": "Snackbar - multiple tracks added to queue",
"placeholders": {
"count": {
"type": "int"
}
}
},
"snackbarAlreadyDownloaded": "\"{trackName}\" уже скачан",
"@snackbarAlreadyDownloaded": {
"description": "Snackbar - track already exists",
"placeholders": {
"trackName": {
"type": "String"
}
}
},
"snackbarAlreadyInLibrary": "\"{trackName}\" уже есть в вашей библиотеке",
"@snackbarAlreadyInLibrary": {
"description": "Snackbar - track already exists in local library",
"placeholders": {
"trackName": {
"type": "String"
}
}
},
"snackbarHistoryCleared": "История очищена",
"@snackbarHistoryCleared": {
"description": "Snackbar - history deleted"
},
"snackbarCredentialsSaved": "Учётные данные сохранены",
"@snackbarCredentialsSaved": {
"description": "Snackbar - Spotify credentials saved"
},
"snackbarCredentialsCleared": "Учётные данные очищены",
"@snackbarCredentialsCleared": {
"description": "Snackbar - Spotify credentials removed"
},
"snackbarDeletedTracks": "Удалено {count} {count, plural, one {трек} few {трека} many {треков} other{треков}}",
"@snackbarDeletedTracks": {
"description": "Snackbar - tracks deleted",
"placeholders": {
"count": {
"type": "int"
}
}
},
"snackbarCannotOpenFile": "Невозможно открыть файл: {error}",
"@snackbarCannotOpenFile": {
"description": "Snackbar - file open error",
"placeholders": {
"error": {
"type": "String"
}
}
},
"snackbarFillAllFields": "Пожалуйста, заполните все поля",
"@snackbarFillAllFields": {
"description": "Snackbar - validation error"
},
"snackbarViewQueue": "Просмотр очереди",
"@snackbarViewQueue": {
"description": "Snackbar action - view download queue"
},
"snackbarUrlCopied": "{platform} ссылка скопирована в буфер обмена",
"@snackbarUrlCopied": {
"description": "Snackbar - URL copied",
"placeholders": {
"platform": {
"type": "String",
"description": "Platform name (Spotify/Deezer)"
}
}
},
"snackbarFileNotFound": "Файл не найден",
"@snackbarFileNotFound": {
"description": "Snackbar - file doesn't exist"
},
"snackbarSelectExtFile": "Пожалуйста, выберите .spotiflac-ext-файл",
"@snackbarSelectExtFile": {
"description": "Snackbar - wrong file type selected"
},
"snackbarProviderPrioritySaved": "Приоритет провайдера сохранён",
"@snackbarProviderPrioritySaved": {
"description": "Snackbar - provider order saved"
},
"snackbarMetadataProviderSaved": "Приоритет провайдера метаданных сохранён",
"@snackbarMetadataProviderSaved": {
"description": "Snackbar - metadata provider order saved"
},
"snackbarExtensionInstalled": "{extensionName} установлено.",
"@snackbarExtensionInstalled": {
"description": "Snackbar - extension installed successfully",
"placeholders": {
"extensionName": {
"type": "String"
}
}
},
"snackbarExtensionUpdated": "{extensionName} Обновлено.",
"@snackbarExtensionUpdated": {
"description": "Snackbar - extension updated successfully",
"placeholders": {
"extensionName": {
"type": "String"
}
}
},
"snackbarFailedToInstall": "Не удалось установить расширение",
"@snackbarFailedToInstall": {
"description": "Snackbar - extension install error"
},
"snackbarFailedToUpdate": "Не удалось обновить расширение",
"@snackbarFailedToUpdate": {
"description": "Snackbar - extension update error"
},
"errorRateLimited": "Слишком много запросов",
"@errorRateLimited": {
"description": "Error title - too many requests"
},
"errorRateLimitedMessage": "Слишком много запросов. Пожалуйста, подождите минуту перед повторным поиском.",
"@errorRateLimitedMessage": {
"description": "Error message - rate limit explanation"
},
"errorNoTracksFound": "Треки не найдены",
"@errorNoTracksFound": {
"description": "Error - search returned no results"
},
"errorUrlNotRecognized": "Ссылка не распознана",
"@errorUrlNotRecognized": {
"description": "Error title - URL not handled by any extension or service"
},
"errorUrlNotRecognizedMessage": "Эта ссылка не поддерживается. Убедитесь, что URL-адрес указан правильно и установлено совместимое расширение.",
"@errorUrlNotRecognizedMessage": {
"description": "Error message - URL not recognized explanation"
},
"errorUrlFetchFailed": "Не удалось загрузить контент по этой ссылке. Пожалуйста, попробуйте еще раз.",
"@errorUrlFetchFailed": {
"description": "Error message - generic URL fetch failure"
},
"errorMissingExtensionSource": "Невозможно загрузить {item}: отсутствует источник расширения",
"@errorMissingExtensionSource": {
"description": "Error - extension source not available",
"placeholders": {
"item": {
"type": "String"
}
}
},
"actionPause": "Пауза",
"@actionPause": {
"description": "Action button - pause download"
},
"actionResume": "Возобновить",
"@actionResume": {
"description": "Action button - resume download"
},
"actionCancel": "Отмена",
"@actionCancel": {
"description": "Action button - cancel operation"
},
"actionSelectAll": "Выбрать все",
"@actionSelectAll": {
"description": "Action button - select all items"
},
"actionDeselect": "Снять выделение",
"@actionDeselect": {
"description": "Action button - deselect all"
},
"actionRemoveCredentials": "Удалить учётные данные",
"@actionRemoveCredentials": {
"description": "Action button - delete Spotify credentials"
},
"actionSaveCredentials": "Сохранить учётные данные",
"@actionSaveCredentials": {
"description": "Action button - save Spotify credentials"
},
"selectionSelected": "{count} выбрано",
"@selectionSelected": {
"description": "Selection count indicator",
"placeholders": {
"count": {
"type": "int"
}
}
},
"selectionAllSelected": "Все треки выбраны",
"@selectionAllSelected": {
"description": "Status - all items selected"
},
"selectionSelectToDelete": "Выберите треки для удаления",
"@selectionSelectToDelete": {
"description": "Placeholder when nothing selected"
},
"progressFetchingMetadata": "Получение метаданных... {current}/{total}",
"@progressFetchingMetadata": {
"description": "Progress indicator - loading track info",
"placeholders": {
"current": {
"type": "int"
},
"total": {
"type": "int"
}
}
},
"progressReadingCsv": "Чтение CSV...",
"@progressReadingCsv": {
"description": "Progress indicator - parsing CSV file"
},
"searchSongs": "Песни",
"@searchSongs": {
"description": "Search result category - songs"
},
"searchArtists": "Исполнители",
"@searchArtists": {
"description": "Search result category - artists"
},
"searchAlbums": "Альбомы",
"@searchAlbums": {
"description": "Search result category - albums"
},
"searchPlaylists": "Плейлисты",
"@searchPlaylists": {
"description": "Search result category - playlists"
},
"searchSortTitle": "Sort Results",
"@searchSortTitle": {
"description": "Bottom sheet title for search sort options"
},
"searchSortDefault": "Default",
"@searchSortDefault": {
"description": "Sort option - default API order"
},
"searchSortTitleAZ": "Title (A-Z)",
"@searchSortTitleAZ": {
"description": "Sort option - title ascending"
},
"searchSortTitleZA": "Title (Z-A)",
"@searchSortTitleZA": {
"description": "Sort option - title descending"
},
"searchSortArtistAZ": "Artist (A-Z)",
"@searchSortArtistAZ": {
"description": "Sort option - artist ascending"
},
"searchSortArtistZA": "Artist (Z-A)",
"@searchSortArtistZA": {
"description": "Sort option - artist descending"
},
"searchSortDurationShort": "Duration (Shortest)",
"@searchSortDurationShort": {
"description": "Sort option - shortest duration first"
},
"searchSortDurationLong": "Duration (Longest)",
"@searchSortDurationLong": {
"description": "Sort option - longest duration first"
},
"searchSortDateOldest": "Release Date (Oldest)",
"@searchSortDateOldest": {
"description": "Sort option - oldest release first"
},
"searchSortDateNewest": "Release Date (Newest)",
"@searchSortDateNewest": {
"description": "Sort option - newest release first"
},
"tooltipPlay": "Воспроизвести",
"@tooltipPlay": {
"description": "Tooltip - play button"
},
"filenameFormat": "Формат имени файла",
"@filenameFormat": {
"description": "Setting title - filename pattern"
},
"filenameShowAdvancedTags": "Показать расширенные теги",
"@filenameShowAdvancedTags": {
"description": "Toggle label for showing advanced filename tags"
},
"filenameShowAdvancedTagsDescription": "Включить форматированные теги для отслеживания заполнения и шаблонов дат",
"@filenameShowAdvancedTagsDescription": {
"description": "Description for advanced filename tag toggle"
},
"folderOrganizationNone": "Без организации",
"@folderOrganizationNone": {
"description": "Folder option - flat structure"
},
"folderOrganizationByPlaylist": "По плейлисту",
"@folderOrganizationByPlaylist": {
"description": "Folder option - playlist folders"
},
"folderOrganizationByPlaylistSubtitle": "Отдельная папка для каждого плейлиста",
"@folderOrganizationByPlaylistSubtitle": {
"description": "Subtitle for playlist folder option"
},
"folderOrganizationByArtist": "По исполнителю",
"@folderOrganizationByArtist": {
"description": "Folder option - artist folders"
},
"folderOrganizationByAlbum": "По альбому",
"@folderOrganizationByAlbum": {
"description": "Folder option - album folders"
},
"folderOrganizationByArtistAlbum": "Исполнитель/Альбом",
"@folderOrganizationByArtistAlbum": {
"description": "Folder option - nested folders"
},
"folderOrganizationDescription": "Сортировать скачанные файлы по папкам",
"@folderOrganizationDescription": {
"description": "Folder organization sheet description"
},
"folderOrganizationNoneSubtitle": "Все файлы в папке загрузок",
"@folderOrganizationNoneSubtitle": {
"description": "Subtitle for no organization option"
},
"folderOrganizationByArtistSubtitle": "Отдельная папка для каждого исполнителя",
"@folderOrganizationByArtistSubtitle": {
"description": "Subtitle for artist folder option"
},
"folderOrganizationByAlbumSubtitle": "Отдельная папка для каждого альбома",
"@folderOrganizationByAlbumSubtitle": {
"description": "Subtitle for album folder option"
},
"folderOrganizationByArtistAlbumSubtitle": "Вложенные папки для исполнителей и альбомов",
"@folderOrganizationByArtistAlbumSubtitle": {
"description": "Subtitle for nested folder option"
},
"updateAvailable": "Доступно обновление",
"@updateAvailable": {
"description": "Update dialog title"
},
"updateLater": "Позже",
"@updateLater": {
"description": "Update button - dismiss"
},
"updateStartingDownload": "Загрузка началась...",
"@updateStartingDownload": {
"description": "Update status - initializing"
},
"updateDownloadFailed": "Не удалось скачать",
"@updateDownloadFailed": {
"description": "Update error title"
},
"updateFailedMessage": "Сбой загрузки обновления",
"@updateFailedMessage": {
"description": "Update error message"
},
"updateNewVersionReady": "Доступна новая версия",
"@updateNewVersionReady": {
"description": "Update subtitle"
},
"updateCurrent": "Текущая",
"@updateCurrent": {
"description": "Label for current version"
},
"updateNew": "Новая",
"@updateNew": {
"description": "Label for new version"
},
"updateDownloading": "Скачивание...",
"@updateDownloading": {
"description": "Update status - downloading"
},
"updateWhatsNew": "Что нового",
"@updateWhatsNew": {
"description": "Changelog section title"
},
"updateDownloadInstall": "Скачать и установить",
"@updateDownloadInstall": {
"description": "Update button - download and install"
},
"updateDontRemind": "Не напоминать",
"@updateDontRemind": {
"description": "Update button - skip this version"
},
"providerPriorityTitle": "Приоритет провайдера",
"@providerPriorityTitle": {
"description": "Provider priority page title"
},
"providerPriorityDescription": "Перетаскивайте, чтобы изменить порядок провайдеров загрузки. Приложение будет пробовать провайдеров сверху вниз при загрузке треков.",
"@providerPriorityDescription": {
"description": "Provider priority page description"
},
"providerPriorityInfo": "Если трек не доступен у первого провайдера, приложение автоматически попробует следующий.",
"@providerPriorityInfo": {
"description": "Info tip about fallback behavior"
},
"providerPriorityFallbackExtensionsTitle": "Extension Fallback",
"@providerPriorityFallbackExtensionsTitle": {
"description": "Section title for choosing which download extensions can be used as fallback providers"
},
"providerPriorityFallbackExtensionsDescription": "Choose which installed download extensions can be used during automatic fallback.",
"@providerPriorityFallbackExtensionsDescription": {
"description": "Section description for extension fallback selection"
},
"providerPriorityFallbackExtensionsHint": "Only enabled extensions with download-provider capability are listed here.",
"@providerPriorityFallbackExtensionsHint": {
"description": "Hint below the extension fallback selection list"
},
"providerBuiltIn": "Встроенные",
"@providerBuiltIn": {
"description": "Label for built-in providers (Tidal/Qobuz)"
},
"providerExtension": "Расширение",
"@providerExtension": {
"description": "Label for extension-provided providers"
},
"metadataProviderPriorityTitle": "Приоритет метаданных",
"@metadataProviderPriorityTitle": {
"description": "Metadata priority page title"
},
"metadataProviderPriorityDescription": "Перетаскивайте, чтобы изменить порядок провайдеров метаданных. Приложение будет пробовать провайдеров сверху вниз при поиске треков и извлечении метаданных.",
"@metadataProviderPriorityDescription": {
"description": "Metadata priority page description"
},
"metadataProviderPriorityInfo": "Deezer не имеет ограничений по скорости и рекомендуется в качестве основного. Spotify может ограничивать скорость после большого количества запросов.",
"@metadataProviderPriorityInfo": {
"description": "Info tip about rate limits"
},
"metadataNoRateLimits": "Без ограничений по скорости",
"@metadataNoRateLimits": {
"description": "Deezer provider description"
},
"metadataMayRateLimit": "Есть ограничения по скорости",
"@metadataMayRateLimit": {
"description": "Spotify provider description"
},
"logTitle": "Логи",
"@logTitle": {
"description": "Logs screen title"
},
"logCopied": "Логи скопированы в буфер обмена",
"@logCopied": {
"description": "Snackbar - logs copied"
},
"logSearchHint": "Поиск логов...",
"@logSearchHint": {
"description": "Log search placeholder"
},
"logFilterLevel": "Уровень",
"@logFilterLevel": {
"description": "Filter by log level"
},
"logFilterSection": "Фильтр",
"@logFilterSection": {
"description": "Filter section title"
},
"logShareLogs": "Поделиться логами",
"@logShareLogs": {
"description": "Share button tooltip"
},
"logClearLogs": "Очистить логи",
"@logClearLogs": {
"description": "Clear button tooltip"
},
"logClearLogsTitle": "Очистить логи",
"@logClearLogsTitle": {
"description": "Clear logs dialog title"
},
"logClearLogsMessage": "Вы уверены, что хотите очистить все логи?",
"@logClearLogsMessage": {
"description": "Clear logs confirmation message"
},
"logFilterBySeverity": "Фильтровать логи по серьезности",
"@logFilterBySeverity": {
"description": "Filter dialog title"
},
"logNoLogsYet": "Логов нет",
"@logNoLogsYet": {
"description": "Empty state title"
},
"logNoLogsYetSubtitle": "Логи появятся здесь по мере использования приложения",
"@logNoLogsYetSubtitle": {
"description": "Empty state subtitle"
},
"logEntriesFiltered": "Записи ({count} фильтровано)",
"@logEntriesFiltered": {
"description": "Log count with filter active",
"placeholders": {
"count": {
"type": "int"
}
}
},
"logEntries": "Записи ({count})",
"@logEntries": {
"description": "Total log count",
"placeholders": {
"count": {
"type": "int"
}
}
},
"credentialsTitle": "Учётные данные Spotify",
"@credentialsTitle": {
"description": "Credentials dialog title"
},
"credentialsDescription": "Введите свой Client ID и Secret, чтобы использовать собственные квоты в Spotify.",
"@credentialsDescription": {
"description": "Credentials dialog explanation"
},
"credentialsClientId": "Client ID",
"@credentialsClientId": {
"description": "Client ID field label - DO NOT TRANSLATE"
},
"credentialsClientIdHint": "Вставьте Client ID",
"@credentialsClientIdHint": {
"description": "Client ID placeholder"
},
"credentialsClientSecret": "Client Secret",
"@credentialsClientSecret": {
"description": "Client Secret field label - DO NOT TRANSLATE"
},
"credentialsClientSecretHint": "Вставьте Client Secret",
"@credentialsClientSecretHint": {
"description": "Client Secret placeholder"
},
"channelStable": "Стабильный",
"@channelStable": {
"description": "Update channel - stable releases"
},
"channelPreview": "Предварительный",
"@channelPreview": {
"description": "Update channel - beta/preview releases"
},
"sectionSearchSource": "Поиск источника",
"@sectionSearchSource": {
"description": "Settings section header"
},
"sectionDownload": "Скачивание",
"@sectionDownload": {
"description": "Settings section header"
},
"sectionPerformance": "Производительность",
"@sectionPerformance": {
"description": "Settings section header"
},
"sectionApp": "Приложение",
"@sectionApp": {
"description": "Settings section header"
},
"sectionData": "Данные",
"@sectionData": {
"description": "Settings section header"
},
"sectionDebug": "Отладка",
"@sectionDebug": {
"description": "Settings section header"
},
"sectionService": "Сервис",
"@sectionService": {
"description": "Settings section header"
},
"sectionAudioQuality": "Качество аудио",
"@sectionAudioQuality": {
"description": "Settings section header"
},
"sectionFileSettings": "Настройки файла",
"@sectionFileSettings": {
"description": "Settings section header"
},
"sectionLyrics": "Тексты песен",
"@sectionLyrics": {
"description": "Settings section header"
},
"lyricsMode": "Режим текстов песен",
"@lyricsMode": {
"description": "Setting - how to save lyrics"
},
"lyricsModeDescription": "Выберите как сохранить тексты песен при скачивании",
"@lyricsModeDescription": {
"description": "Lyrics mode picker description"
},
"lyricsModeEmbed": "Вписать в файл",
"@lyricsModeEmbed": {
"description": "Lyrics mode option - embed in audio file"
},
"lyricsModeEmbedSubtitle": "Встроить текст в метаданные FLAC",
"@lyricsModeEmbedSubtitle": {
"description": "Subtitle for embed option"
},
"lyricsModeExternal": "Внешний файл .lrc",
"@lyricsModeExternal": {
"description": "Lyrics mode option - separate LRC file"
},
"lyricsModeExternalSubtitle": "Отдельный файл .lrc для плееров, таких, как Samsung Music",
"@lyricsModeExternalSubtitle": {
"description": "Subtitle for external option"
},
"lyricsModeBoth": "Оба варианта",
"@lyricsModeBoth": {
"description": "Lyrics mode option - embed and external"
},
"lyricsModeBothSubtitle": "Вписать и сохранить .lrc файл",
"@lyricsModeBothSubtitle": {
"description": "Subtitle for both option"
},
"sectionColor": "Цвет",
"@sectionColor": {
"description": "Settings section header"
},
"sectionTheme": "Тема",
"@sectionTheme": {
"description": "Settings section header"
},
"sectionLayout": "Разметка",
"@sectionLayout": {
"description": "Settings section header"
},
"sectionLanguage": "Язык",
"@sectionLanguage": {
"description": "Settings section header for language"
},
"appearanceLanguage": "Язык приложения",
"@appearanceLanguage": {
"description": "Language setting title"
},
"settingsAppearanceSubtitle": "Тема, цвета, дисплей",
"@settingsAppearanceSubtitle": {
"description": "Appearance settings description"
},
"settingsDownloadSubtitle": "Сервисы, качество, формат имени файла",
"@settingsDownloadSubtitle": {
"description": "Download settings description"
},
"settingsOptionsSubtitle": "Резерв. сервер, тексты песен, обложки, обновления",
"@settingsOptionsSubtitle": {
"description": "Options settings description"
},
"settingsExtensionsSubtitle": "Управление провайдерами скачивания",
"@settingsExtensionsSubtitle": {
"description": "Extensions settings description"
},
"settingsLogsSubtitle": "Просмотреть логи для отладки",
"@settingsLogsSubtitle": {
"description": "Logs settings description"
},
"loadingSharedLink": "Загрузка общедоступной ссылки...",
"@loadingSharedLink": {
"description": "Status when opening shared URL"
},
"pressBackAgainToExit": "Нажмите «Назад» ещё раз, чтобы выйти",
"@pressBackAgainToExit": {
"description": "Exit confirmation message"
},
"downloadAllCount": "Скачать все ({count})",
"@downloadAllCount": {
"description": "Download all button with count",
"placeholders": {
"count": {
"type": "int"
}
}
},
"tracksCount": "{count, plural, one {{count} трек} few {{count} трека} many {{count} треков} other {{count} треков}}",
"@tracksCount": {
"description": "Track count display",
"placeholders": {
"count": {
"type": "int"
}
}
},
"trackCopyFilePath": "Скопировать путь к файлу",
"@trackCopyFilePath": {
"description": "Action - copy file path"
},
"trackRemoveFromDevice": "Удалить с устройства",
"@trackRemoveFromDevice": {
"description": "Action - delete downloaded file"
},
"trackLoadLyrics": "Загрузить текст песни",
"@trackLoadLyrics": {
"description": "Action - fetch lyrics"
},
"trackMetadata": "Метаданные",
"@trackMetadata": {
"description": "Tab title - track metadata"
},
"trackFileInfo": "Информация о файле",
"@trackFileInfo": {
"description": "Tab title - file information"
},
"trackLyrics": "Текст песни",
"@trackLyrics": {
"description": "Tab title - lyrics"
},
"trackFileNotFound": "Файл не найден",
"@trackFileNotFound": {
"description": "Error - file doesn't exist"
},
"trackOpenInDeezer": "Открыть в Deezer",
"@trackOpenInDeezer": {
"description": "Action - open track in Deezer app"
},
"trackOpenInSpotify": "Открыть в Spotify",
"@trackOpenInSpotify": {
"description": "Action - open track in Spotify app"
},
"trackTrackName": "Название",
"@trackTrackName": {
"description": "Metadata label - track title"
},
"trackArtist": "Исполнитель",
"@trackArtist": {
"description": "Metadata label - artist name"
},
"trackAlbumArtist": "Исполнитель альбома",
"@trackAlbumArtist": {
"description": "Metadata label - album artist"
},
"trackAlbum": "Альбом",
"@trackAlbum": {
"description": "Metadata label - album name"
},
"trackTrackNumber": "Номер трека",
"@trackTrackNumber": {
"description": "Metadata label - track number"
},
"trackDiscNumber": "Номер диска",
"@trackDiscNumber": {
"description": "Metadata label - disc number"
},
"trackDuration": "Продолжительность",
"@trackDuration": {
"description": "Metadata label - track length"
},
"trackAudioQuality": "Качество записи",
"@trackAudioQuality": {
"description": "Metadata label - audio quality"
},
"trackReleaseDate": "Дата выхода",
"@trackReleaseDate": {
"description": "Metadata label - release date"
},
"trackGenre": "Жанр",
"@trackGenre": {
"description": "Metadata label - music genre"
},
"trackLabel": "Заголовок",
"@trackLabel": {
"description": "Metadata label - record label"
},
"trackCopyright": "Авторские права",
"@trackCopyright": {
"description": "Metadata label - copyright information"
},
"trackDownloaded": "Скачано",
"@trackDownloaded": {
"description": "Metadata label - download date"
},
"trackCopyLyrics": "Копировать текст",
"@trackCopyLyrics": {
"description": "Action - copy lyrics to clipboard"
},
"trackLyricsNotAvailable": "Текст песни недоступен для этого трека",
"@trackLyricsNotAvailable": {
"description": "Message when lyrics not found"
},
"trackLyricsNotInFile": "No lyrics found in this file",
"@trackLyricsNotInFile": {
"description": "Message when no embedded lyrics in audio file"
},
"trackFetchOnlineLyrics": "Fetch from Online",
"@trackFetchOnlineLyrics": {
"description": "Action - fetch lyrics from online providers"
},
"trackLyricsTimeout": "Время ожидания запроса истекло. Повторите попытку позже.",
"@trackLyricsTimeout": {
"description": "Message when lyrics request times out"
},
"trackLyricsLoadFailed": "Не удалось загрузить текст песни",
"@trackLyricsLoadFailed": {
"description": "Message when lyrics loading fails"
},
"trackEmbedLyrics": "Вписать текст песни",
"@trackEmbedLyrics": {
"description": "Action - embed lyrics into audio file"
},
"trackLyricsEmbedded": "Текст успешно добавлен",
"@trackLyricsEmbedded": {
"description": "Snackbar - lyrics saved to file"
},
"trackInstrumental": "Инструментальный трек",
"@trackInstrumental": {
"description": "Message when track is instrumental (no lyrics)"
},
"trackCopiedToClipboard": "Скопировано в буфер обмена",
"@trackCopiedToClipboard": {
"description": "Snackbar - content copied"
},
"trackDeleteConfirmTitle": "Удалить с устройства?",
"@trackDeleteConfirmTitle": {
"description": "Delete confirmation title"
},
"trackDeleteConfirmMessage": "Это приведет к окончательному удалению загруженного файла и его удалению из истории.",
"@trackDeleteConfirmMessage": {
"description": "Delete confirmation message"
},
"dateToday": "Сегодня",
"@dateToday": {
"description": "Relative date - today"
},
"dateYesterday": "Вчера",
"@dateYesterday": {
"description": "Relative date - yesterday"
},
"dateDaysAgo": "{count} дней назад",
"@dateDaysAgo": {
"description": "Relative date - days ago",
"placeholders": {
"count": {
"type": "int"
}
}
},
"dateWeeksAgo": "{count} недель назад",
"@dateWeeksAgo": {
"description": "Relative date - weeks ago",
"placeholders": {
"count": {
"type": "int"
}
}
},
"dateMonthsAgo": "{count} месяцев назад",
"@dateMonthsAgo": {
"description": "Relative date - months ago",
"placeholders": {
"count": {
"type": "int"
}
}
},
"storeFilterAll": "Все",
"@storeFilterAll": {
"description": "Store filter - all extensions"
},
"storeFilterMetadata": "Метаданные",
"@storeFilterMetadata": {
"description": "Store filter - metadata providers"
},
"storeFilterDownload": "Скачивание",
"@storeFilterDownload": {
"description": "Store filter - download providers"
},
"storeFilterUtility": "Утилиты",
"@storeFilterUtility": {
"description": "Store filter - utility extensions"
},
"storeFilterLyrics": "Тексты песен",
"@storeFilterLyrics": {
"description": "Store filter - lyrics providers"
},
"storeFilterIntegration": "Интеграция",
"@storeFilterIntegration": {
"description": "Store filter - integrations"
},
"storeClearFilters": "Очистить фильтры",
"@storeClearFilters": {
"description": "Button to clear all filters"
},
"storeAddRepoTitle": "Add Extension Repository",
"@storeAddRepoTitle": {
"description": "Store setup screen - heading when no repo is configured"
},
"storeAddRepoDescription": "Enter a GitHub repository URL that contains a registry.json file to browse and install extensions.",
"@storeAddRepoDescription": {
"description": "Store setup screen - explanatory text"
},
"storeRepoUrlLabel": "Repository URL",
"@storeRepoUrlLabel": {
"description": "Label for the repository URL input field"
},
"storeRepoUrlHint": "https://github.com/user/repo",
"@storeRepoUrlHint": {
"description": "Hint/placeholder for the repository URL input field"
},
"storeRepoUrlHelper": "e.g. https://github.com/user/extensions-repo",
"@storeRepoUrlHelper": {
"description": "Helper text below the repository URL input field"
},
"storeAddRepoButton": "Add Repository",
"@storeAddRepoButton": {
"description": "Button to submit a new repository URL"
},
"storeChangeRepoTooltip": "Change repository",
"@storeChangeRepoTooltip": {
"description": "Tooltip for the change-repository icon button in the app bar"
},
"storeRepoDialogTitle": "Extension Repository",
"@storeRepoDialogTitle": {
"description": "Title of the change/remove repository dialog"
},
"storeRepoDialogCurrent": "Current repository:",
"@storeRepoDialogCurrent": {
"description": "Label shown above the current repository URL in the dialog"
},
"storeNewRepoUrlLabel": "New Repository URL",
"@storeNewRepoUrlLabel": {
"description": "Label for the new repository URL field inside the dialog"
},
"storeLoadError": "Failed to load repository",
"@storeLoadError": {
"description": "Error heading when the store cannot be loaded"
},
"storeEmptyNoExtensions": "No extensions available",
"@storeEmptyNoExtensions": {
"description": "Message when store has no extensions"
},
"storeEmptyNoResults": "No extensions found",
"@storeEmptyNoResults": {
"description": "Message when search/filter returns no results"
},
"extensionDefaultProvider": "Default (Deezer)",
"@extensionDefaultProvider": {
"description": "Default search provider option"
},
"extensionDefaultProviderSubtitle": "Использовать встроенный поиск",
"@extensionDefaultProviderSubtitle": {
"description": "Subtitle for default provider"
},
"extensionAuthor": "Автор",
"@extensionAuthor": {
"description": "Extension detail - author"
},
"extensionId": "ID",
"@extensionId": {
"description": "Extension detail - unique ID"
},
"extensionError": "Ошибка",
"@extensionError": {
"description": "Extension detail - error message"
},
"extensionCapabilities": "Возможности",
"@extensionCapabilities": {
"description": "Section header - extension features"
},
"extensionMetadataProvider": "Провайдер метаданных",
"@extensionMetadataProvider": {
"description": "Capability - provides metadata"
},
"extensionDownloadProvider": "Провайдер скачивания",
"@extensionDownloadProvider": {
"description": "Capability - provides downloads"
},
"extensionLyricsProvider": "Провайдер текстов",
"@extensionLyricsProvider": {
"description": "Capability - provides lyrics"
},
"extensionUrlHandler": "URL-обработчик",
"@extensionUrlHandler": {
"description": "Capability - handles URLs"
},
"extensionQualityOptions": "Параметры качества",
"@extensionQualityOptions": {
"description": "Capability - quality selection"
},
"extensionPostProcessingHooks": "Хуки постобработки",
"@extensionPostProcessingHooks": {
"description": "Capability - post-processing"
},
"extensionPermissions": "Разрешения",
"@extensionPermissions": {
"description": "Section header - required permissions"
},
"extensionSettings": "Настройки",
"@extensionSettings": {
"description": "Section header - extension settings"
},
"extensionRemoveButton": "Удалить расширение",
"@extensionRemoveButton": {
"description": "Button to uninstall extension"
},
"extensionUpdated": "Обновлено",
"@extensionUpdated": {
"description": "Extension detail - last update"
},
"extensionMinAppVersion": "Мин. версия приложения",
"@extensionMinAppVersion": {
"description": "Extension detail - minimum app version"
},
"extensionCustomTrackMatching": "Соответствие пользовательских треков",
"@extensionCustomTrackMatching": {
"description": "Capability - custom track matching algorithm"
},
"extensionPostProcessing": "Постобработка",
"@extensionPostProcessing": {
"description": "Capability - post-download processing"
},
"extensionHooksAvailable": "Доступно {count} хуков(ов)",
"@extensionHooksAvailable": {
"description": "Post-processing hooks count",
"placeholders": {
"count": {
"type": "int"
}
}
},
"extensionPatternsCount": "{count} шаблон(ов)",
"@extensionPatternsCount": {
"description": "URL patterns count",
"placeholders": {
"count": {
"type": "int"
}
}
},
"extensionStrategy": "Стратегия: {strategy}",
"@extensionStrategy": {
"description": "Track matching strategy name",
"placeholders": {
"strategy": {
"type": "String"
}
}
},
"extensionsProviderPrioritySection": "Приоритет провайдера",
"@extensionsProviderPrioritySection": {
"description": "Section header - provider priority"
},
"extensionsInstalledSection": "Установленные расширения",
"@extensionsInstalledSection": {
"description": "Section header - installed extensions"
},
"extensionsNoExtensions": "Нет установленных расширений",
"@extensionsNoExtensions": {
"description": "Empty state - no extensions"
},
"extensionsNoExtensionsSubtitle": "Установите .spotiflac-ext файлы для добавления новых провайдеров",
"@extensionsNoExtensionsSubtitle": {
"description": "Empty state subtitle"
},
"extensionsInstallButton": "Установить расширение",
"@extensionsInstallButton": {
"description": "Button to install extension from file"
},
"extensionsInfoTip": "Расширения могут добавлять новые метаданные и провайдеров загрузки. Устанавливайте только расширения из надежных источников.",
"@extensionsInfoTip": {
"description": "Security warning about extensions"
},
"extensionsInstalledSuccess": "Расширение успешно установлено",
"@extensionsInstalledSuccess": {
"description": "Success message after install"
},
"extensionsDownloadPriority": "Приоритет скачивания",
"@extensionsDownloadPriority": {
"description": "Setting - download provider order"
},
"extensionsDownloadPrioritySubtitle": "Установка порядок сервисов скачивания",
"@extensionsDownloadPrioritySubtitle": {
"description": "Subtitle for download priority"
},
"extensionsFallbackTitle": "Fallback Extensions",
"@extensionsFallbackTitle": {
"description": "Setting and page title for choosing which download extensions can be used during fallback"
},
"extensionsFallbackSubtitle": "Choose which installed download extensions can be used as fallback",
"@extensionsFallbackSubtitle": {
"description": "Subtitle for download fallback extensions menu"
},
"extensionsNoDownloadProvider": "Нет расширений с провайдером загрузки",
"@extensionsNoDownloadProvider": {
"description": "Empty state - no download providers"
},
"extensionsMetadataPriority": "Приоритет метаданных",
"@extensionsMetadataPriority": {
"description": "Setting - metadata provider order"
},
"extensionsMetadataPrioritySubtitle": "Установка порядка поиска и источника метаданных",
"@extensionsMetadataPrioritySubtitle": {
"description": "Subtitle for metadata priority"
},
"extensionsNoMetadataProvider": "Нет расширений с провайдером метаданных",
"@extensionsNoMetadataProvider": {
"description": "Empty state - no metadata providers"
},
"extensionsSearchProvider": "Провайдер поиска",
"@extensionsSearchProvider": {
"description": "Setting - search provider selection"
},
"extensionsNoCustomSearch": "Нет расширений с пользовательским поиском",
"@extensionsNoCustomSearch": {
"description": "Empty state - no search providers"
},
"extensionsSearchProviderDescription": "Выберите, какой сервис использовать для поиска треков",
"@extensionsSearchProviderDescription": {
"description": "Search provider setting description"
},
"extensionsCustomSearch": "Пользовательский поиск",
"@extensionsCustomSearch": {
"description": "Label for custom search provider"
},
"extensionsErrorLoading": "Ошибка загрузки расширения",
"@extensionsErrorLoading": {
"description": "Error message when extension fails to load"
},
"qualityFlacLossless": "FLAC Lossless",
"@qualityFlacLossless": {
"description": "Quality option - CD quality FLAC"
},
"qualityFlacLosslessSubtitle": "16-бит / 44.1 кГц",
"@qualityFlacLosslessSubtitle": {
"description": "Technical spec for lossless"
},
"qualityHiResFlac": "Hi-Res FLAC",
"@qualityHiResFlac": {
"description": "Quality option - high resolution FLAC"
},
"qualityHiResFlacSubtitle": "24-бит / до 96кГц",
"@qualityHiResFlacSubtitle": {
"description": "Technical spec for hi-res"
},
"qualityHiResFlacMax": "Hi-Res FLAC Макс.",
"@qualityHiResFlacMax": {
"description": "Quality option - maximum resolution FLAC"
},
"qualityHiResFlacMaxSubtitle": "24-бит / до 192кГц",
"@qualityHiResFlacMaxSubtitle": {
"description": "Technical spec for hi-res max"
},
"downloadLossy320": "Lossy 320kbps",
"@downloadLossy320": {
"description": "Quality option label for Tidal lossy 320kbps"
},
"downloadLossyFormat": "Lossy Format",
"@downloadLossyFormat": {
"description": "Setting title to pick output format for Tidal lossy downloads"
},
"downloadLossy320Format": "Lossy 320kbps Format",
"@downloadLossy320Format": {
"description": "Title of the Tidal lossy format picker bottom sheet"
},
"downloadLossy320FormatDesc": "Choose the output format for Tidal 320kbps lossy downloads. The original AAC stream will be converted to your selected format.",
"@downloadLossy320FormatDesc": {
"description": "Description in the Tidal lossy format picker"
},
"downloadLossyMp3": "MP3 320kbps",
"@downloadLossyMp3": {
"description": "Tidal lossy format option - MP3 320kbps"
},
"downloadLossyMp3Subtitle": "Best compatibility, ~10MB per track",
"@downloadLossyMp3Subtitle": {
"description": "Subtitle for MP3 320kbps Tidal lossy option"
},
"downloadLossyOpus256": "Opus 256kbps",
"@downloadLossyOpus256": {
"description": "Tidal lossy format option - Opus 256kbps"
},
"downloadLossyOpus256Subtitle": "Best quality Opus, ~8MB per track",
"@downloadLossyOpus256Subtitle": {
"description": "Subtitle for Opus 256kbps Tidal lossy option"
},
"downloadLossyOpus128": "Opus 128kbps",
"@downloadLossyOpus128": {
"description": "Tidal lossy format option - Opus 128kbps"
},
"downloadLossyOpus128Subtitle": "Smallest size, ~4MB per track",
"@downloadLossyOpus128Subtitle": {
"description": "Subtitle for Opus 128kbps Tidal lossy option"
},
"qualityNote": "Фактическое качество зависит от доступности треков в сервисе",
"@qualityNote": {
"description": "Note about quality availability"
},
"downloadAskBeforeDownload": "Спрашивать перед скачиванием",
"@downloadAskBeforeDownload": {
"description": "Setting - show quality picker"
},
"downloadDirectory": "Папка для скачивания",
"@downloadDirectory": {
"description": "Setting - download folder"
},
"downloadSeparateSinglesFolder": "Отдельная папка для синглов",
"@downloadSeparateSinglesFolder": {
"description": "Setting - separate folder for singles"
},
"downloadAlbumFolderStructure": "Структура папок альбома",
"@downloadAlbumFolderStructure": {
"description": "Setting - album folder organization"
},
"downloadUseAlbumArtistForFolders": "Использовать исполнителя альбома для папок",
"@downloadUseAlbumArtistForFolders": {
"description": "Setting - choose whether artist folders use Album Artist or Track Artist"
},
"downloadUsePrimaryArtistOnly": "Основной исполнитель только для папок",
"@downloadUsePrimaryArtistOnly": {
"description": "Setting - strip featured artists from folder name"
},
"downloadUsePrimaryArtistOnlyEnabled": "Список исполнителей, чьи работы были удалены из названия папки (например, Джастин Бибер, Quavo → Джастин Бибер)",
"@downloadUsePrimaryArtistOnlyEnabled": {
"description": "Subtitle when primary artist only is enabled"
},
"downloadUsePrimaryArtistOnlyDisabled": "Полная строка исполнителя, используемая для имени папки",
"@downloadUsePrimaryArtistOnlyDisabled": {
"description": "Subtitle when primary artist only is disabled"
},
"downloadSelectQuality": "Выбор качества",
"@downloadSelectQuality": {
"description": "Dialog title - choose audio quality"
},
"downloadFrom": "Скачивать из",
"@downloadFrom": {
"description": "Label - download source"
},
"appearanceAmoledDark": "AMOLED",
"@appearanceAmoledDark": {
"description": "Theme option - pure black"
},
"appearanceAmoledDarkSubtitle": "Глубокий чёрный фон",
"@appearanceAmoledDarkSubtitle": {
"description": "Subtitle for AMOLED dark"
},
"queueClearAll": "Очистить всё",
"@queueClearAll": {
"description": "Button - clear all queue items"
},
"queueClearAllMessage": "Вы уверены, что хотите очистить все загрузки?",
"@queueClearAllMessage": {
"description": "Clear queue confirmation"
},
"settingsAutoExportFailed": "Автоэкспорт неудачных загрузок",
"@settingsAutoExportFailed": {
"description": "Setting toggle for auto-export"
},
"settingsAutoExportFailedSubtitle": "Автоматическое сохранение неудачных загрузок в TXT файл",
"@settingsAutoExportFailedSubtitle": {
"description": "Subtitle for auto-export setting"
},
"settingsDownloadNetwork": "Сеть для скачивания",
"@settingsDownloadNetwork": {
"description": "Setting for network type preference"
},
"settingsDownloadNetworkAny": "WiFi и Мобильная сеть",
"@settingsDownloadNetworkAny": {
"description": "Network option - use any connection"
},
"settingsDownloadNetworkWifiOnly": "Только WiFi",
"@settingsDownloadNetworkWifiOnly": {
"description": "Network option - only use WiFi"
},
"settingsDownloadNetworkSubtitle": "Выберите, какую сеть использовать для скачивания. Когда установлено значение только WiFi — скачивания через мобильную сеть будут приостановлены.",
"@settingsDownloadNetworkSubtitle": {
"description": "Subtitle explaining network preference"
},
"albumFolderArtistAlbum": "Исполнитель / Альбом",
"@albumFolderArtistAlbum": {
"description": "Album folder option"
},
"albumFolderArtistAlbumSubtitle": "Альбомы/Исполнитель/Название Альбома/",
"@albumFolderArtistAlbumSubtitle": {
"description": "Folder structure example"
},
"albumFolderArtistYearAlbum": "Исполнитель / [Год] Альбом",
"@albumFolderArtistYearAlbum": {
"description": "Album folder option with year"
},
"albumFolderArtistYearAlbumSubtitle": "Альбомы/Исполнитель/[2005] Название Альбома/",
"@albumFolderArtistYearAlbumSubtitle": {
"description": "Folder structure example"
},
"albumFolderAlbumOnly": "Только альбом",
"@albumFolderAlbumOnly": {
"description": "Album folder option"
},
"albumFolderAlbumOnlySubtitle": "Альбомы/Название Альбома/",
"@albumFolderAlbumOnlySubtitle": {
"description": "Folder structure example"
},
"albumFolderYearAlbum": "[Год] Альбом",
"@albumFolderYearAlbum": {
"description": "Album folder option with year"
},
"albumFolderYearAlbumSubtitle": "Альбомы/[2005] Название Альбома /",
"@albumFolderYearAlbumSubtitle": {
"description": "Folder structure example"
},
"albumFolderArtistAlbumSingles": "Исполнитель / Альбом + Синглы",
"@albumFolderArtistAlbumSingles": {
"description": "Album folder option with singles inside artist"
},
"albumFolderArtistAlbumSinglesSubtitle": "Исполнитель/Альбом и Исполнитель/Сингл/",
"@albumFolderArtistAlbumSinglesSubtitle": {
"description": "Folder structure example"
},
"albumFolderArtistAlbumFlat": "Artist / Album (Singles flat)",
"@albumFolderArtistAlbumFlat": {
"description": "Album folder option with singles directly in artist folder"
},
"albumFolderArtistAlbumFlatSubtitle": "Artist/Album/ and Artist/song.flac",
"@albumFolderArtistAlbumFlatSubtitle": {
"description": "Folder structure example for flat singles"
},
"downloadedAlbumDeleteSelected": "Удалить выбранные",
"@downloadedAlbumDeleteSelected": {
"description": "Button - delete selected tracks"
},
"downloadedAlbumDeleteMessage": "Удалить {count} {count, plural, one {трек} few {трека} many {треков} other{треков}} из этого альбома?\n\nЭто также удалит файлы из хранилища.",
"@downloadedAlbumDeleteMessage": {
"description": "Delete confirmation with count",
"placeholders": {
"count": {
"type": "int"
}
}
},
"downloadedAlbumSelectedCount": "{count} выбрано",
"@downloadedAlbumSelectedCount": {
"description": "Selection count indicator",
"placeholders": {
"count": {
"type": "int"
}
}
},
"downloadedAlbumAllSelected": "Все треки выбраны",
"@downloadedAlbumAllSelected": {
"description": "Status - all items selected"
},
"downloadedAlbumTapToSelect": "Нажмите на треки для выбора",
"@downloadedAlbumTapToSelect": {
"description": "Selection hint"
},
"downloadedAlbumDeleteCount": "Удалить {count} {count, plural, one {трек} few {трека} many {треков} other{треков}}",
"@downloadedAlbumDeleteCount": {
"description": "Delete button text with count",
"placeholders": {
"count": {
"type": "int"
}
}
},
"downloadedAlbumSelectToDelete": "Выберите треки для удаления",
"@downloadedAlbumSelectToDelete": {
"description": "Placeholder when nothing selected"
},
"downloadedAlbumDiscHeader": "Диск {discNumber}",
"@downloadedAlbumDiscHeader": {
"description": "Header for disc separator in multi-disc albums",
"placeholders": {
"discNumber": {
"type": "int",
"example": "1"
}
}
},
"recentTypeArtist": "Исполнитель",
"@recentTypeArtist": {
"description": "Recent access item type - artist"
},
"recentTypeAlbum": "Альбом",
"@recentTypeAlbum": {
"description": "Recent access item type - album"
},
"recentTypeSong": "Песня",
"@recentTypeSong": {
"description": "Recent access item type - song/track"
},
"recentTypePlaylist": "Плейлист",
"@recentTypePlaylist": {
"description": "Recent access item type - playlist"
},
"recentEmpty": "Нет недавних элементов",
"@recentEmpty": {
"description": "Empty state text for recent access list"
},
"recentShowAllDownloads": "Показать все загрузки",
"@recentShowAllDownloads": {
"description": "Button label to unhide hidden downloads in recent access"
},
"recentPlaylistInfo": "Плейлист: {name}",
"@recentPlaylistInfo": {
"description": "Snackbar message when tapping playlist in recent access",
"placeholders": {
"name": {
"type": "String",
"description": "Playlist name"
}
}
},
"discographyDownload": "Скачать дискографию",
"@discographyDownload": {
"description": "Button - download artist discography"
},
"discographyDownloadAll": "Скачать всё",
"@discographyDownloadAll": {
"description": "Option - download entire discography"
},
"discographyDownloadAllSubtitle": "{count} треков из {albumCount} релизов",
"@discographyDownloadAllSubtitle": {
"description": "Subtitle showing total tracks and albums",
"placeholders": {
"count": {
"type": "int"
},
"albumCount": {
"type": "int"
}
}
},
"discographyAlbumsOnly": "Только альбомы",
"@discographyAlbumsOnly": {
"description": "Option - download only albums"
},
"discographyAlbumsOnlySubtitle": "{count} треков из {albumCount} альбомов",
"@discographyAlbumsOnlySubtitle": {
"description": "Subtitle showing album tracks count",
"placeholders": {
"count": {
"type": "int"
},
"albumCount": {
"type": "int"
}
}
},
"discographySinglesOnly": "Только синглы и EP",
"@discographySinglesOnly": {
"description": "Option - download only singles"
},
"discographySinglesOnlySubtitle": "{count} треков из {albumCount} синглов",
"@discographySinglesOnlySubtitle": {
"description": "Subtitle showing singles tracks count",
"placeholders": {
"count": {
"type": "int"
},
"albumCount": {
"type": "int"
}
}
},
"discographySelectAlbums": "Выбрать альбомы...",
"@discographySelectAlbums": {
"description": "Option - manually select albums to download"
},
"discographySelectAlbumsSubtitle": "Выберите конкретные альбомы или синглы",
"@discographySelectAlbumsSubtitle": {
"description": "Subtitle for select albums option"
},
"discographyFetchingTracks": "Получение треков...",
"@discographyFetchingTracks": {
"description": "Progress - fetching album tracks"
},
"discographyFetchingAlbum": "Получение {current} из {total}...",
"@discographyFetchingAlbum": {
"description": "Progress - fetching specific album",
"placeholders": {
"current": {
"type": "int"
},
"total": {
"type": "int"
}
}
},
"discographySelectedCount": "{count} выбрано",
"@discographySelectedCount": {
"description": "Selection count badge",
"placeholders": {
"count": {
"type": "int"
}
}
},
"discographyDownloadSelected": "Скачать выбранное",
"@discographyDownloadSelected": {
"description": "Button - download selected albums"
},
"discographyAddedToQueue": "Добавлено {count} треков в очередь",
"@discographyAddedToQueue": {
"description": "Snackbar - tracks added from discography",
"placeholders": {
"count": {
"type": "int"
}
}
},
"discographySkippedDownloaded": "{added} добавлено, {skipped} уже скачано",
"@discographySkippedDownloaded": {
"description": "Snackbar - with skipped tracks count",
"placeholders": {
"added": {
"type": "int"
},
"skipped": {
"type": "int"
}
}
},
"discographyNoAlbums": "Нет доступных альбомов",
"@discographyNoAlbums": {
"description": "Error - no albums found for artist"
},
"discographyFailedToFetch": "Не удалось получить некоторые альбомы",
"@discographyFailedToFetch": {
"description": "Error - some albums failed to load"
},
"sectionStorageAccess": "Доступ к хранилищу",
"@sectionStorageAccess": {
"description": "Section header for storage access settings"
},
"allFilesAccess": "Доступ ко всем файлам",
"@allFilesAccess": {
"description": "Toggle for MANAGE_EXTERNAL_STORAGE permission"
},
"allFilesAccessEnabledSubtitle": "Можно записать в любую папку",
"@allFilesAccessEnabledSubtitle": {
"description": "Subtitle when all files access is enabled"
},
"allFilesAccessDisabledSubtitle": "Ограничено только папками медиа",
"@allFilesAccessDisabledSubtitle": {
"description": "Subtitle when all files access is disabled"
},
"allFilesAccessDescription": "Включите, если вы сталкиваетесь с ошибками записи при сохранении в пользовательские папки. Android 13+ по умолчанию ограничивает доступ к определенным папкам.",
"@allFilesAccessDescription": {
"description": "Description explaining when to enable all files access"
},
"allFilesAccessDeniedMessage": "В разрешении отказано. Пожалуйста, включите функцию «Доступ ко всем файлам» в настройках системы.",
"@allFilesAccessDeniedMessage": {
"description": "Message when permission is permanently denied"
},
"allFilesAccessDisabledMessage": "Доступ ко всем файлам отключен. Приложение будет использовать ограниченный доступ к хранилищу.",
"@allFilesAccessDisabledMessage": {
"description": "Snackbar message when user disables all files access"
},
"settingsLocalLibrary": "Локальная библиотека",
"@settingsLocalLibrary": {
"description": "Settings menu item - local library"
},
"settingsLocalLibrarySubtitle": "Сканировать и обнаружить дубликаты",
"@settingsLocalLibrarySubtitle": {
"description": "Subtitle for local library settings"
},
"settingsCache": "Хранилище и кэш",
"@settingsCache": {
"description": "Settings menu item - cache management"
},
"settingsCacheSubtitle": "Просмотреть размер и очистить кэш",
"@settingsCacheSubtitle": {
"description": "Subtitle for cache management menu"
},
"libraryTitle": "Локальная библиотека",
"@libraryTitle": {
"description": "Library settings page title"
},
"libraryScanSettings": "Настройки сканирования",
"@libraryScanSettings": {
"description": "Section header for scan settings"
},
"libraryEnableLocalLibrary": "Включить локальную библиотеку",
"@libraryEnableLocalLibrary": {
"description": "Toggle to enable library scanning"
},
"libraryEnableLocalLibrarySubtitle": "Сканировать и отслеживать вашу существующую музыку",
"@libraryEnableLocalLibrarySubtitle": {
"description": "Subtitle for enable toggle"
},
"libraryFolder": "Папка библиотеки",
"@libraryFolder": {
"description": "Folder selection setting"
},
"libraryFolderHint": "Нажмите, чтобы выбрать папку",
"@libraryFolderHint": {
"description": "Placeholder when no folder selected"
},
"libraryShowDuplicateIndicator": "Показать индикатор дубликатов",
"@libraryShowDuplicateIndicator": {
"description": "Toggle for duplicate indicator in search"
},
"libraryShowDuplicateIndicatorSubtitle": "Показать при поиске существующих треков",
"@libraryShowDuplicateIndicatorSubtitle": {
"description": "Subtitle for duplicate indicator toggle"
},
"libraryAutoScan": "Auto Scan",
"@libraryAutoScan": {
"description": "Setting for automatic library scanning"
},
"libraryAutoScanSubtitle": "Automatically scan your library for new files",
"@libraryAutoScanSubtitle": {
"description": "Subtitle for auto scan setting"
},
"libraryAutoScanOff": "Off",
"@libraryAutoScanOff": {
"description": "Auto scan disabled"
},
"libraryAutoScanOnOpen": "Every app open",
"@libraryAutoScanOnOpen": {
"description": "Auto scan when app opens"
},
"libraryAutoScanDaily": "Daily",
"@libraryAutoScanDaily": {
"description": "Auto scan once per day"
},
"libraryAutoScanWeekly": "Weekly",
"@libraryAutoScanWeekly": {
"description": "Auto scan once per week"
},
"libraryActions": "Действия",
"@libraryActions": {
"description": "Section header for library actions"
},
"libraryScan": "Сканировать библиотеку",
"@libraryScan": {
"description": "Button to start library scan"
},
"libraryScanSubtitle": "Сканировать аудио файлы",
"@libraryScanSubtitle": {
"description": "Subtitle for scan button"
},
"libraryScanSelectFolderFirst": "Сначала выберите папку",
"@libraryScanSelectFolderFirst": {
"description": "Message when trying to scan without folder"
},
"libraryCleanupMissingFiles": "Очистка отсутствующих файлов",
"@libraryCleanupMissingFiles": {
"description": "Button to remove entries for missing files"
},
"libraryCleanupMissingFilesSubtitle": "Удалить записи для файлов, которых больше не существует",
"@libraryCleanupMissingFilesSubtitle": {
"description": "Subtitle for cleanup button"
},
"libraryClear": "Очистить библиотеку",
"@libraryClear": {
"description": "Button to clear all library entries"
},
"libraryClearSubtitle": "Удалить все сканированные треки",
"@libraryClearSubtitle": {
"description": "Subtitle for clear button"
},
"libraryClearConfirmTitle": "Очистить библиотеку",
"@libraryClearConfirmTitle": {
"description": "Dialog title for clear confirmation"
},
"libraryClearConfirmMessage": "Это удалит все сканированные треки из вашей библиотеки. Ваши фактические файлы не будут удалены.",
"@libraryClearConfirmMessage": {
"description": "Dialog message for clear confirmation"
},
"libraryAbout": "О локальной библиотеке",
"@libraryAbout": {
"description": "Section header for about info"
},
"libraryAboutDescription": "Сканирует существующую коллекцию музыки для обнаружения дубликатов при загрузке. Поддерживает форматы FLAC, M4A, MP3, Opus и OGG. Метаданные читаются из тегов файлов, если доступны.",
"@libraryAboutDescription": {
"description": "Description of local library feature"
},
"libraryTracksUnit": "{count, plural, one {трек} few {трека} many {треков} other{треков}}",
"@libraryTracksUnit": {
"description": "Unit label for tracks count (without the number itself)",
"placeholders": {
"count": {
"type": "int"
}
}
},
"libraryFilesUnit": "{count, plural, =1{file} other{files}}",
"@libraryFilesUnit": {
"description": "Unit label for files count during library scanning",
"placeholders": {
"count": {
"type": "int"
}
}
},
"libraryLastScanned": "Последнее сканирование: {time}",
"@libraryLastScanned": {
"description": "Last scan time display",
"placeholders": {
"time": {
"type": "String"
}
}
},
"libraryLastScannedNever": "Никогда",
"@libraryLastScannedNever": {
"description": "Shown when library has never been scanned"
},
"libraryScanning": "Сканирование...",
"@libraryScanning": {
"description": "Status during scan"
},
"libraryScanFinalizing": "Finalizing library...",
"@libraryScanFinalizing": {
"description": "Status shown after file scanning finishes but library persistence is still running"
},
"libraryScanProgress": "{progress}% из {total} файлов",
"@libraryScanProgress": {
"description": "Scan progress display",
"placeholders": {
"progress": {
"type": "String"
},
"total": {
"type": "int"
}
}
},
"libraryInLibrary": "В библиотеке",
"@libraryInLibrary": {
"description": "Badge shown on tracks that exist in local library"
},
"libraryRemovedMissingFiles": "Удалено {count} {count, plural, one {отсутствующий файл} few {трека} many {отсутствующих файлов} other{отсутствующих файлов}} в библиотеке",
"@libraryRemovedMissingFiles": {
"description": "Snackbar after cleanup",
"placeholders": {
"count": {
"type": "int"
}
}
},
"libraryCleared": "Библиотека очищена",
"@libraryCleared": {
"description": "Snackbar after clearing library"
},
"libraryStorageAccessRequired": "Требуется доступ к хранилищу",
"@libraryStorageAccessRequired": {
"description": "Dialog title for storage permission"
},
"libraryStorageAccessMessage": "SpotiFLAC требуется доступ к хранилищу для сканирования вашей библиотеки музыки. Пожалуйста, предоставьте разрешение в настройках.",
"@libraryStorageAccessMessage": {
"description": "Dialog message for storage permission"
},
"libraryFolderNotExist": "Выбранной папки не существует",
"@libraryFolderNotExist": {
"description": "Error when folder doesn't exist"
},
"librarySourceDownloaded": "Скачанные",
"@librarySourceDownloaded": {
"description": "Badge for tracks downloaded via SpotiFLAC"
},
"librarySourceLocal": "Локальные",
"@librarySourceLocal": {
"description": "Badge for tracks from local library scan"
},
"libraryFilterAll": "Все",
"@libraryFilterAll": {
"description": "Filter chip - show all library items"
},
"libraryFilterDownloaded": "Скачанные",
"@libraryFilterDownloaded": {
"description": "Filter chip - show only downloaded items"
},
"libraryFilterLocal": "Локальные",
"@libraryFilterLocal": {
"description": "Filter chip - show only local library items"
},
"libraryFilterTitle": "Фильтры",
"@libraryFilterTitle": {
"description": "Filter bottom sheet title"
},
"libraryFilterReset": "Сброс",
"@libraryFilterReset": {
"description": "Reset all filters button"
},
"libraryFilterApply": "Применить",
"@libraryFilterApply": {
"description": "Apply filters button"
},
"libraryFilterSource": "Источник",
"@libraryFilterSource": {
"description": "Filter section - source type"
},
"libraryFilterQuality": "Качество",
"@libraryFilterQuality": {
"description": "Filter section - audio quality"
},
"libraryFilterQualityHiRes": "Hi-Res (24 бит)",
"@libraryFilterQualityHiRes": {
"description": "Filter option - high resolution audio"
},
"libraryFilterQualityCD": "CD (16 бит)",
"@libraryFilterQualityCD": {
"description": "Filter option - CD quality audio"
},
"libraryFilterQualityLossy": "Lossy",
"@libraryFilterQualityLossy": {
"description": "Filter option - lossy compressed audio"
},
"libraryFilterFormat": "Формат",
"@libraryFilterFormat": {
"description": "Filter section - file format"
},
"libraryFilterMetadata": "Metadata",
"@libraryFilterMetadata": {
"description": "Filter section - metadata completeness"
},
"libraryFilterMetadataComplete": "Complete metadata",
"@libraryFilterMetadataComplete": {
"description": "Filter option - items with complete metadata"
},
"libraryFilterMetadataMissingAny": "Missing any metadata",
"@libraryFilterMetadataMissingAny": {
"description": "Filter option - items missing any tracked metadata field"
},
"libraryFilterMetadataMissingYear": "Missing year",
"@libraryFilterMetadataMissingYear": {
"description": "Filter option - items missing release year/date"
},
"libraryFilterMetadataMissingGenre": "Missing genre",
"@libraryFilterMetadataMissingGenre": {
"description": "Filter option - items missing genre"
},
"libraryFilterMetadataMissingAlbumArtist": "Missing album artist",
"@libraryFilterMetadataMissingAlbumArtist": {
"description": "Filter option - items missing album artist"
},
"libraryFilterSort": "Сортировка",
"@libraryFilterSort": {
"description": "Filter section - sort order"
},
"libraryFilterSortLatest": "Последние",
"@libraryFilterSortLatest": {
"description": "Sort option - newest first"
},
"libraryFilterSortOldest": "Старые",
"@libraryFilterSortOldest": {
"description": "Sort option - oldest first"
},
"libraryFilterSortAlbumAsc": "Album (A-Z)",
"@libraryFilterSortAlbumAsc": {
"description": "Sort option - album ascending"
},
"libraryFilterSortAlbumDesc": "Album (Z-A)",
"@libraryFilterSortAlbumDesc": {
"description": "Sort option - album descending"
},
"libraryFilterSortGenreAsc": "Genre (A-Z)",
"@libraryFilterSortGenreAsc": {
"description": "Sort option - genre ascending"
},
"libraryFilterSortGenreDesc": "Genre (Z-A)",
"@libraryFilterSortGenreDesc": {
"description": "Sort option - genre descending"
},
"timeJustNow": "Только что",
"@timeJustNow": {
"description": "Relative time - less than a minute ago"
},
"timeMinutesAgo": "{count, plural, one {{count} минуту} few {{count} минуты} many {{count} минут} other {{count} минут}} назад",
"@timeMinutesAgo": {
"description": "Relative time - minutes ago",
"placeholders": {
"count": {
"type": "int"
}
}
},
"timeHoursAgo": "{count, plural, one {{count} час} few {{count} часа} many {{count} часов} other {{count} часов}} назад",
"@timeHoursAgo": {
"description": "Relative time - hours ago",
"placeholders": {
"count": {
"type": "int"
}
}
},
"tutorialWelcomeTitle": "Добро пожаловать в SpotiFLAC!",
"@tutorialWelcomeTitle": {
"description": "Tutorial welcome page title"
},
"tutorialWelcomeDesc": "Давайте научимся скачивать свою любимую музыку в качестве без потерь. В этом кратком руководстве мы покажем вам основы.",
"@tutorialWelcomeDesc": {
"description": "Tutorial welcome page description"
},
"tutorialWelcomeTip1": "Скачивайте музыку из Spotify, Deezer, или вставьте любой поддерживаемый URL",
"@tutorialWelcomeTip1": {
"description": "Tutorial welcome tip 1"
},
"tutorialWelcomeTip2": "Получите аудио в качестве FLAC от Tidal, Qobuz или Deezer",
"@tutorialWelcomeTip2": {
"description": "Tutorial welcome tip 2"
},
"tutorialWelcomeTip3": "Автоматическое встраивание метаданных, обложек и текстов песен",
"@tutorialWelcomeTip3": {
"description": "Tutorial welcome tip 3"
},
"tutorialSearchTitle": "Поиск музыки",
"@tutorialSearchTitle": {
"description": "Tutorial search page title"
},
"tutorialSearchDesc": "Есть два простых способа найти музыку, которую вы хотите скачать.",
"@tutorialSearchDesc": {
"description": "Tutorial search page description"
},
"tutorialDownloadTitle": "Скачивание музыки",
"@tutorialDownloadTitle": {
"description": "Tutorial download page title"
},
"tutorialDownloadDesc": "Скачивание музыки просто и быстро. Вот как это работает.",
"@tutorialDownloadDesc": {
"description": "Tutorial download page description"
},
"tutorialLibraryTitle": "Ваша библиотека",
"@tutorialLibraryTitle": {
"description": "Tutorial library page title"
},
"tutorialLibraryDesc": "Вся скачанная музыка организована во вкладке Библиотека.",
"@tutorialLibraryDesc": {
"description": "Tutorial library page description"
},
"tutorialLibraryTip1": "Просмотр прогресса загрузки и очереди на вкладке Библиотека",
"@tutorialLibraryTip1": {
"description": "Tutorial library tip 1"
},
"tutorialLibraryTip2": "Нажмите на любой трек, чтобы воспроизвести его с помощью вашего музыкального плеера",
"@tutorialLibraryTip2": {
"description": "Tutorial library tip 2"
},
"tutorialLibraryTip3": "Переключение между списком и сеткой для лучшего просмотра",
"@tutorialLibraryTip3": {
"description": "Tutorial library tip 3"
},
"tutorialExtensionsTitle": "Расширения",
"@tutorialExtensionsTitle": {
"description": "Tutorial extensions page title"
},
"tutorialExtensionsDesc": "Расширьте возможности приложения с расширениями от сообщества.",
"@tutorialExtensionsDesc": {
"description": "Tutorial extensions page description"
},
"tutorialExtensionsTip1": "Browse the Repo tab to discover useful extensions",
"@tutorialExtensionsTip1": {
"description": "Tutorial extensions tip 1"
},
"tutorialExtensionsTip2": "Добавить новых поставщиков загрузок или поиска",
"@tutorialExtensionsTip2": {
"description": "Tutorial extensions tip 2"
},
"tutorialExtensionsTip3": "Получайте тексты песен, улучшенные метаданные и другие возможности",
"@tutorialExtensionsTip3": {
"description": "Tutorial extensions tip 3"
},
"tutorialSettingsTitle": "Настройте приложение под себя",
"@tutorialSettingsTitle": {
"description": "Tutorial settings page title"
},
"tutorialSettingsDesc": "Персонализируйте приложение в Настройках, чтобы оно соответствовало вашим предпочтениям.",
"@tutorialSettingsDesc": {
"description": "Tutorial settings page description"
},
"tutorialSettingsTip1": "Изменить местоположение и организацию папок для скачивания",
"@tutorialSettingsTip1": {
"description": "Tutorial settings tip 1"
},
"tutorialSettingsTip2": "Настройте качество и формата аудиофайла по умолчанию",
"@tutorialSettingsTip2": {
"description": "Tutorial settings tip 2"
},
"tutorialSettingsTip3": "Настроить тему и внешний вид приложения",
"@tutorialSettingsTip3": {
"description": "Tutorial settings tip 3"
},
"tutorialReadyMessage": "Всё готово! Начните загружать любимую музыку прямо сейчас.",
"@tutorialReadyMessage": {
"description": "Tutorial completion message"
},
"libraryForceFullScan": "Полное сканирование",
"@libraryForceFullScan": {
"description": "Button to force a complete rescan of library"
},
"libraryForceFullScanSubtitle": "Пересканировать все файлы, игнорировать кэш",
"@libraryForceFullScanSubtitle": {
"description": "Subtitle for force full scan button"
},
"cleanupOrphanedDownloads": "Очистка отложенных скачиваний",
"@cleanupOrphanedDownloads": {
"description": "Button to remove history entries for deleted files"
},
"cleanupOrphanedDownloadsSubtitle": "Удалить историю записи для файлов, которых больше не существует",
"@cleanupOrphanedDownloadsSubtitle": {
"description": "Subtitle for orphaned cleanup button"
},
"cleanupOrphanedDownloadsResult": "Удалено {count} утерянных записей из истории",
"@cleanupOrphanedDownloadsResult": {
"description": "Snackbar after orphan cleanup",
"placeholders": {
"count": {
"type": "int"
}
}
},
"cleanupOrphanedDownloadsNone": "Записей без описания не найдено",
"@cleanupOrphanedDownloadsNone": {
"description": "Snackbar when no orphans found"
},
"cacheTitle": "Хранилище и кэш",
"@cacheTitle": {
"description": "Cache management page title"
},
"cacheSummaryTitle": "Просмотр кэша",
"@cacheSummaryTitle": {
"description": "Heading for cache summary card"
},
"cacheSummarySubtitle": "Очистка кэша не приведет к удалению загруженных музыкальных файлов.",
"@cacheSummarySubtitle": {
"description": "Helper text for cache summary card"
},
"cacheEstimatedTotal": "Приблизительное использование кэша: {size}",
"@cacheEstimatedTotal": {
"description": "Total cache size shown in summary",
"placeholders": {
"size": {
"type": "String"
}
}
},
"cacheSectionStorage": "Кэшированные данные",
"@cacheSectionStorage": {
"description": "Section header for cache entries"
},
"cacheSectionMaintenance": "Обслуживание",
"@cacheSectionMaintenance": {
"description": "Section header for cleanup actions"
},
"cacheAppDirectory": "Папка кэша приложения",
"@cacheAppDirectory": {
"description": "Cache item title for app cache directory"
},
"cacheAppDirectoryDesc": "HTTP-ответы, данные WebView и другие временные данные приложения.",
"@cacheAppDirectoryDesc": {
"description": "Description of what app cache directory contains"
},
"cacheTempDirectory": "Временная директория",
"@cacheTempDirectory": {
"description": "Cache item title for temporary files directory"
},
"cacheTempDirectoryDesc": "Временные файлы из загрузок и аудио конвертации.",
"@cacheTempDirectoryDesc": {
"description": "Description of what temporary directory contains"
},
"cacheCoverImage": "Кэш обложек",
"@cacheCoverImage": {
"description": "Cache item title for persistent cover images"
},
"cacheCoverImageDesc": "Скачанный альбом и трек обложки. Будет заново скачан после просмотра.",
"@cacheCoverImageDesc": {
"description": "Description of what cover image cache contains"
},
"cacheLibraryCover": "Кэш обложек библиотеки",
"@cacheLibraryCover": {
"description": "Cache item title for local library cover art images"
},
"cacheLibraryCoverDesc": "Обложка извлечена из локальных музыкальных файлов. Будет повторно извлечено при следующем сканировании.",
"@cacheLibraryCoverDesc": {
"description": "Description of what library cover cache contains"
},
"cacheExploreFeed": "Просмотреть кэш ленты",
"@cacheExploreFeed": {
"description": "Cache item title for explore home feed cache"
},
"cacheExploreFeedDesc": "Изучите содержимое вкладки (новые релизы, тренды). Они обновятся при следующем посещении.",
"@cacheExploreFeedDesc": {
"description": "Description of what explore feed cache contains"
},
"cacheTrackLookup": "Отслеживать кэш поиска",
"@cacheTrackLookup": {
"description": "Cache item title for track ID lookup cache"
},
"cacheTrackLookupDesc": "Поиск ID трека в Spotify/Deezer. Очистка может замедлить следующие несколько поисков.",
"@cacheTrackLookupDesc": {
"description": "Description of what track lookup cache contains"
},
"cacheCleanupUnusedDesc": "Удалить записи из истории загрузок и библиотеки, которые остались без файлов.",
"@cacheCleanupUnusedDesc": {
"description": "Description of what cleanup unused data does"
},
"cacheNoData": "Нет кэшированных данных",
"@cacheNoData": {
"description": "Label when cache category has no data"
},
"cacheSizeWithFiles": "{size} в {count} файлах",
"@cacheSizeWithFiles": {
"description": "Cache size and file count",
"placeholders": {
"size": {
"type": "String"
},
"count": {
"type": "int"
}
}
},
"cacheSizeOnly": "{size}",
"@cacheSizeOnly": {
"description": "Cache size only",
"placeholders": {
"size": {
"type": "String"
}
}
},
"cacheEntries": "{count} записей",
"@cacheEntries": {
"description": "Track cache entry count",
"placeholders": {
"count": {
"type": "int"
}
}
},
"cacheClearSuccess": "Очищено: {target}",
"@cacheClearSuccess": {
"description": "Snackbar after clearing selected cache",
"placeholders": {
"target": {
"type": "String"
}
}
},
"cacheClearConfirmTitle": "Очистить кэш?",
"@cacheClearConfirmTitle": {
"description": "Dialog title before clearing one cache category"
},
"cacheClearConfirmMessage": "Это очистит кэш для {target}. Загруженные музыкальные файлы не будут удалены.",
"@cacheClearConfirmMessage": {
"description": "Dialog message before clearing selected cache",
"placeholders": {
"target": {
"type": "String"
}
}
},
"cacheClearAllConfirmTitle": "Очистить весь кэш?",
"@cacheClearAllConfirmTitle": {
"description": "Dialog title before clearing all caches"
},
"cacheClearAllConfirmMessage": "Это очистит все категории кэша на этой странице. Скачанные музыкальные файлы не будут удалены.",
"@cacheClearAllConfirmMessage": {
"description": "Dialog message before clearing all caches"
},
"cacheClearAll": "Очистить весь кэш",
"@cacheClearAll": {
"description": "Button label to clear all caches"
},
"cacheCleanupUnused": "Очистка неиспользуемых данных",
"@cacheCleanupUnused": {
"description": "Action title for cleaning unused entries"
},
"cacheCleanupUnusedSubtitle": "Удалить историю загрузок, оставшихся без просмотра, и отсутствующие записи в библиотеке",
"@cacheCleanupUnusedSubtitle": {
"description": "Subtitle for cleanup unused data action"
},
"cacheCleanupResult": "Очистка завершена: {downloadCount} потерянных загрузок, {libraryCount} отсутствующих записей в библиотеке",
"@cacheCleanupResult": {
"description": "Snackbar after unused data cleanup",
"placeholders": {
"downloadCount": {
"type": "int"
},
"libraryCount": {
"type": "int"
}
}
},
"cacheRefreshStats": "Обновить статистику",
"@cacheRefreshStats": {
"description": "Button label to refresh cache statistics"
},
"trackSaveCoverArt": "Сохранить обложку",
"@trackSaveCoverArt": {
"description": "Menu action - save album cover art as file"
},
"trackSaveCoverArtSubtitle": "Сохранить обложку как файл .jpg",
"@trackSaveCoverArtSubtitle": {
"description": "Subtitle for save cover art action"
},
"trackSaveLyrics": "Сохранить текст (.lrc)",
"@trackSaveLyrics": {
"description": "Menu action - save lyrics as .lrc file"
},
"trackSaveLyricsSubtitle": "Получить и сохранить текст песни в формате .lrc",
"@trackSaveLyricsSubtitle": {
"description": "Subtitle for save lyrics action"
},
"trackSaveLyricsProgress": "Сохранение текста...",
"@trackSaveLyricsProgress": {
"description": "Snackbar while saving lyrics to file"
},
"trackReEnrich": "Обновить",
"@trackReEnrich": {
"description": "Menu action - re-embed metadata into audio file"
},
"trackReEnrichOnlineSubtitle": "Поиск в сети метаданных и встраивание в файл",
"@trackReEnrichOnlineSubtitle": {
"description": "Subtitle for re-enrich metadata action for local items"
},
"trackReEnrichFieldsTitle": "Fields to update",
"@trackReEnrichFieldsTitle": {
"description": "Section title for field selection in re-enrich dialog"
},
"trackReEnrichFieldCover": "Cover Art",
"@trackReEnrichFieldCover": {
"description": "Checkbox label for cover art field in re-enrich"
},
"trackReEnrichFieldLyrics": "Lyrics",
"@trackReEnrichFieldLyrics": {
"description": "Checkbox label for lyrics field in re-enrich"
},
"trackReEnrichFieldBasicTags": "Album, Album Artist",
"@trackReEnrichFieldBasicTags": {
"description": "Checkbox label for basic tags in re-enrich (title/artist are never overwritten)"
},
"trackReEnrichFieldTrackInfo": "Track & Disc Number",
"@trackReEnrichFieldTrackInfo": {
"description": "Checkbox label for track info in re-enrich"
},
"trackReEnrichFieldReleaseInfo": "Date & ISRC",
"@trackReEnrichFieldReleaseInfo": {
"description": "Checkbox label for release info in re-enrich"
},
"trackReEnrichFieldExtra": "Genre, Label, Copyright",
"@trackReEnrichFieldExtra": {
"description": "Checkbox label for extra metadata in re-enrich"
},
"trackReEnrichSelectAll": "Select All",
"@trackReEnrichSelectAll": {
"description": "Select all fields checkbox in re-enrich"
},
"trackEditMetadata": "Редактировать метаданные",
"@trackEditMetadata": {
"description": "Menu action - edit embedded metadata"
},
"trackCoverSaved": "Обложка сохранена в {fileName}",
"@trackCoverSaved": {
"description": "Snackbar after cover art saved",
"placeholders": {
"fileName": {
"type": "String"
}
}
},
"trackCoverNoSource": "Нет доступных источников обложки",
"@trackCoverNoSource": {
"description": "Snackbar when no cover art URL or embedded cover"
},
"trackLyricsSaved": "Текст песни сохранен в {fileName}",
"@trackLyricsSaved": {
"description": "Snackbar after lyrics saved",
"placeholders": {
"fileName": {
"type": "String"
}
}
},
"trackReEnrichProgress": "Обновление метаданных...",
"@trackReEnrichProgress": {
"description": "Snackbar while re-enriching metadata"
},
"trackReEnrichSearching": "Поиск метаданных в сети...",
"@trackReEnrichSearching": {
"description": "Snackbar while searching metadata from internet for local items"
},
"trackReEnrichSuccess": "Метаданные успешно обновлены",
"@trackReEnrichSuccess": {
"description": "Snackbar after successful re-enrichment"
},
"trackReEnrichFfmpegFailed": "Ошибка встраивания метаданных FFmpeg",
"@trackReEnrichFfmpegFailed": {
"description": "Snackbar when FFmpeg embed fails for MP3/Opus"
},
"queueFlacAction": "Queue FLAC",
"@queueFlacAction": {
"description": "Action/button label for queueing FLAC redownloads for local tracks"
},
"queueFlacConfirmMessage": "Search online matches for the selected tracks and queue FLAC downloads.\n\nExisting files will not be modified or deleted.\n\nOnly high-confidence matches are queued automatically.\n\n{count} selected",
"@queueFlacConfirmMessage": {
"description": "Confirmation dialog body before queueing FLAC redownloads for local tracks",
"placeholders": {
"count": {
"type": "int"
}
}
},
"queueFlacFindingProgress": "Finding FLAC matches... ({current}/{total})",
"@queueFlacFindingProgress": {
"description": "Snackbar while resolving remote matches for local FLAC redownloads",
"placeholders": {
"current": {
"type": "int"
},
"total": {
"type": "int"
}
}
},
"queueFlacNoReliableMatches": "No reliable online matches found for the selection",
"@queueFlacNoReliableMatches": {
"description": "Snackbar when no safe FLAC redownload matches were found"
},
"queueFlacQueuedWithSkipped": "Added {addedCount} tracks to queue, skipped {skippedCount}",
"@queueFlacQueuedWithSkipped": {
"description": "Snackbar when some selected local tracks were queued for FLAC redownload and some were skipped",
"placeholders": {
"addedCount": {
"type": "int"
},
"skippedCount": {
"type": "int"
}
}
},
"trackSaveFailed": "Ошибка: {error}",
"@trackSaveFailed": {
"description": "Snackbar when save operation fails",
"placeholders": {
"error": {
"type": "String"
}
}
},
"trackConvertFormat": "Переконвертировать формат",
"@trackConvertFormat": {
"description": "Menu item - convert audio format"
},
"trackConvertFormatSubtitle": "Convert to MP3, Opus, ALAC, or FLAC",
"@trackConvertFormatSubtitle": {
"description": "Subtitle for convert format menu item"
},
"trackConvertTitle": "Конвертировать аудио",
"@trackConvertTitle": {
"description": "Title of convert bottom sheet"
},
"trackConvertTargetFormat": "Целевой формат",
"@trackConvertTargetFormat": {
"description": "Label for format selection"
},
"trackConvertBitrate": "Битрейт",
"@trackConvertBitrate": {
"description": "Label for bitrate selection"
},
"trackConvertConfirmTitle": "Подтвердить конвертацию",
"@trackConvertConfirmTitle": {
"description": "Confirmation dialog title"
},
"trackConvertConfirmMessage": "Конвертировать из {sourceFormat} в {targetFormat} {bitrate}?\n\nОригинальный файл будет удален после конвертации.",
"@trackConvertConfirmMessage": {
"description": "Confirmation dialog message",
"placeholders": {
"sourceFormat": {
"type": "String"
},
"targetFormat": {
"type": "String"
},
"bitrate": {
"type": "String"
}
}
},
"trackConvertConfirmMessageLossless": "Convert from {sourceFormat} to {targetFormat}? (Lossless — no quality loss)\n\nThe original file will be deleted after conversion.",
"@trackConvertConfirmMessageLossless": {
"description": "Confirmation dialog message for lossless-to-lossless conversion",
"placeholders": {
"sourceFormat": {
"type": "String"
},
"targetFormat": {
"type": "String"
}
}
},
"trackConvertLosslessHint": "Lossless conversion — no quality loss",
"@trackConvertLosslessHint": {
"description": "Hint shown when converting between lossless formats"
},
"trackConvertConverting": "Конвертация аудио...",
"@trackConvertConverting": {
"description": "Snackbar while converting"
},
"trackConvertSuccess": "Успешно конвертировано в {format}",
"@trackConvertSuccess": {
"description": "Snackbar after successful conversion",
"placeholders": {
"format": {
"type": "String"
}
}
},
"trackConvertFailed": "Ошибка конвертации",
"@trackConvertFailed": {
"description": "Snackbar when conversion fails"
},
"cueSplitTitle": "Разделить CUE Sheet",
"@cueSplitTitle": {
"description": "Title for CUE split bottom sheet"
},
"cueSplitSubtitle": "Разделить файл CUE+FLAC на отдельные треки",
"@cueSplitSubtitle": {
"description": "Subtitle for CUE split menu item"
},
"cueSplitAlbum": "Альбом: {album}",
"@cueSplitAlbum": {
"description": "Album name in CUE split sheet",
"placeholders": {
"album": {
"type": "String"
}
}
},
"cueSplitArtist": "Артист: {artist}",
"@cueSplitArtist": {
"description": "Artist name in CUE split sheet",
"placeholders": {
"artist": {
"type": "String"
}
}
},
"cueSplitTrackCount": "{count} треков",
"@cueSplitTrackCount": {
"description": "Number of tracks in CUE sheet",
"placeholders": {
"count": {
"type": "int"
}
}
},
"cueSplitConfirmTitle": "Разделенный CUE-альбом",
"@cueSplitConfirmTitle": {
"description": "CUE split confirmation dialog title"
},
"cueSplitConfirmMessage": "Разбить \"{album}\" на {count} отдельных FLAC-файлов?",
"@cueSplitConfirmMessage": {
"description": "CUE split confirmation dialog message",
"placeholders": {
"album": {
"type": "String"
},
"count": {
"type": "int"
}
}
},
"cueSplitSplitting": "Разделение CUE sheet... ({current}/{total})",
"@cueSplitSplitting": {
"description": "Snackbar while splitting CUE",
"placeholders": {
"current": {
"type": "int"
},
"total": {
"type": "int"
}
}
},
"cueSplitSuccess": "Успешно разделено на {count} треков",
"@cueSplitSuccess": {
"description": "Snackbar after successful CUE split",
"placeholders": {
"count": {
"type": "int"
}
}
},
"cueSplitFailed": "Разделение CUE не удалось",
"@cueSplitFailed": {
"description": "Snackbar when CUE split fails"
},
"cueSplitNoAudioFile": "Аудиофайл для этого CUE sheet не найден",
"@cueSplitNoAudioFile": {
"description": "Error when CUE audio file is missing"
},
"cueSplitButton": "Разделить на Треки",
"@cueSplitButton": {
"description": "Button text to start CUE splitting"
},
"actionCreate": "Создать",
"@actionCreate": {
"description": "Generic action button - create"
},
"collectionFoldersTitle": "Мои папки",
"@collectionFoldersTitle": {
"description": "Library section title for custom folders"
},
"collectionWishlist": "Список желаемого",
"@collectionWishlist": {
"description": "Custom folder for saved tracks to download later"
},
"collectionLoved": "Любимые",
"@collectionLoved": {
"description": "Custom folder for favorite tracks"
},
"collectionPlaylists": "Плейлисты",
"@collectionPlaylists": {
"description": "Custom user playlists folder"
},
"collectionPlaylist": "Плейлист",
"@collectionPlaylist": {
"description": "Single playlist label"
},
"collectionAddToPlaylist": "Добавить в плейлист",
"@collectionAddToPlaylist": {
"description": "Action to add a track to user playlist"
},
"collectionCreatePlaylist": "Создать плейлист",
"@collectionCreatePlaylist": {
"description": "Action to create a new playlist"
},
"collectionNoPlaylistsYet": "Плейлисты отсутствуют",
"@collectionNoPlaylistsYet": {
"description": "Empty state title when user has no playlists"
},
"collectionNoPlaylistsSubtitle": "Создайте плейлист, чтобы начать классифицировать треки",
"@collectionNoPlaylistsSubtitle": {
"description": "Empty state subtitle when user has no playlists"
},
"collectionPlaylistTracks": "{count, plural, one {{count} трек} few {{count} трека} many {{count} треков} other {{count} треков}}",
"@collectionPlaylistTracks": {
"description": "Track count label for custom playlists",
"placeholders": {
"count": {
"type": "int"
}
}
},
"collectionAddedToPlaylist": "Добавлено в \"{playlistName}\"",
"@collectionAddedToPlaylist": {
"description": "Snackbar after adding track to playlist",
"placeholders": {
"playlistName": {
"type": "String"
}
}
},
"collectionAlreadyInPlaylist": "Уже в \"{playlistName}\"",
"@collectionAlreadyInPlaylist": {
"description": "Snackbar when track already exists in playlist",
"placeholders": {
"playlistName": {
"type": "String"
}
}
},
"collectionPlaylistCreated": "Плейлист создан",
"@collectionPlaylistCreated": {
"description": "Snackbar after creating playlist"
},
"collectionPlaylistNameHint": "Название плейлиста",
"@collectionPlaylistNameHint": {
"description": "Hint text for playlist name input"
},
"collectionPlaylistNameRequired": "Имя плейлиста обязательно",
"@collectionPlaylistNameRequired": {
"description": "Validation error for empty playlist name"
},
"collectionRenamePlaylist": "Переименовать плейлист",
"@collectionRenamePlaylist": {
"description": "Action to rename playlist"
},
"collectionDeletePlaylist": "Удалить плейлист",
"@collectionDeletePlaylist": {
"description": "Action to delete playlist"
},
"collectionDeletePlaylistMessage": "Удалить \"{playlistName}\" и все треки внутри него?",
"@collectionDeletePlaylistMessage": {
"description": "Confirmation message for deleting playlist",
"placeholders": {
"playlistName": {
"type": "String"
}
}
},
"collectionPlaylistDeleted": "Плейлист удалён",
"@collectionPlaylistDeleted": {
"description": "Snackbar after deleting playlist"
},
"collectionPlaylistRenamed": "Плейлист переименован",
"@collectionPlaylistRenamed": {
"description": "Snackbar after renaming playlist"
},
"collectionWishlistEmptyTitle": "Список желаний пуст",
"@collectionWishlistEmptyTitle": {
"description": "Wishlist empty state title"
},
"collectionWishlistEmptySubtitle": "Нажмите + на треках, чтобы сохранить то, что вы хотите скачать позже",
"@collectionWishlistEmptySubtitle": {
"description": "Wishlist empty state subtitle"
},
"collectionLovedEmptyTitle": "Папка Любимые пуста",
"@collectionLovedEmptyTitle": {
"description": "Loved empty state title"
},
"collectionLovedEmptySubtitle": "Нажмите \"любовь\" на треках, чтобы сохранить ваши избранные",
"@collectionLovedEmptySubtitle": {
"description": "Loved empty state subtitle"
},
"collectionPlaylistEmptyTitle": "Плейлист пуст",
"@collectionPlaylistEmptyTitle": {
"description": "Playlist empty state title"
},
"collectionPlaylistEmptySubtitle": "Удерживайте + на любом треке, чтобы добавить его сюда",
"@collectionPlaylistEmptySubtitle": {
"description": "Playlist empty state subtitle"
},
"collectionRemoveFromPlaylist": "Удалить из плейлиста",
"@collectionRemoveFromPlaylist": {
"description": "Tooltip for removing track from playlist"
},
"collectionRemoveFromFolder": "Убрать из папки",
"@collectionRemoveFromFolder": {
"description": "Tooltip for removing track from wishlist/loved folder"
},
"collectionRemoved": "\"{trackName}\" удалён",
"@collectionRemoved": {
"description": "Snackbar after removing a track from a collection",
"placeholders": {
"trackName": {
"type": "String"
}
}
},
"collectionAddedToLoved": "\"{trackName}\" добавлен в Любимые",
"@collectionAddedToLoved": {
"description": "Snackbar after adding track to loved folder",
"placeholders": {
"trackName": {
"type": "String"
}
}
},
"collectionRemovedFromLoved": "\"{trackName}\" удалено из Любимых",
"@collectionRemovedFromLoved": {
"description": "Snackbar after removing track from loved folder",
"placeholders": {
"trackName": {
"type": "String"
}
}
},
"collectionAddedToWishlist": "\"{trackName}\" добавлен в список желаний",
"@collectionAddedToWishlist": {
"description": "Snackbar after adding track to wishlist",
"placeholders": {
"trackName": {
"type": "String"
}
}
},
"collectionRemovedFromWishlist": "\"{trackName}\" удалён из списка желаний",
"@collectionRemovedFromWishlist": {
"description": "Snackbar after removing track from wishlist",
"placeholders": {
"trackName": {
"type": "String"
}
}
},
"trackOptionAddToLoved": "Добавить в Любимое",
"@trackOptionAddToLoved": {
"description": "Bottom sheet action label - add track to loved folder"
},
"trackOptionRemoveFromLoved": "Исключить из Любимых",
"@trackOptionRemoveFromLoved": {
"description": "Bottom sheet action label - remove track from loved folder"
},
"trackOptionAddToWishlist": "Добавить в список желаний",
"@trackOptionAddToWishlist": {
"description": "Bottom sheet action label - add track to wishlist"
},
"trackOptionRemoveFromWishlist": "Удалить из списка желаний",
"@trackOptionRemoveFromWishlist": {
"description": "Bottom sheet action label - remove track from wishlist"
},
"collectionPlaylistChangeCover": "Изменить обложку",
"@collectionPlaylistChangeCover": {
"description": "Bottom sheet action to pick a custom cover image for a playlist"
},
"collectionPlaylistRemoveCover": "Удалить обложку",
"@collectionPlaylistRemoveCover": {
"description": "Bottom sheet action to remove custom cover image from a playlist"
},
"selectionShareCount": "Отправить {count} {count, plural, one {трек} few {трека} many {треков} other{треков}}",
"@selectionShareCount": {
"description": "Share button text with count in selection mode",
"placeholders": {
"count": {
"type": "int"
}
}
},
"selectionShareNoFiles": "Файлы, доступные для совместного доступа, не найдены",
"@selectionShareNoFiles": {
"description": "Snackbar when no selected files exist on disk"
},
"selectionConvertCount": "Конвертировать {count} {count, plural, one {трек} few {трека} many {треков} other{треков}}",
"@selectionConvertCount": {
"description": "Convert button text with count in selection mode",
"placeholders": {
"count": {
"type": "int"
}
}
},
"selectionConvertNoConvertible": "Не выбраны конвертируемые треки",
"@selectionConvertNoConvertible": {
"description": "Snackbar when no selected tracks support conversion"
},
"selectionBatchConvertConfirmTitle": "Пакетная конвертация",
"@selectionBatchConvertConfirmTitle": {
"description": "Confirmation dialog title for batch conversion"
},
"selectionBatchConvertConfirmMessage": "Преобразовать {count} {count, plural, =1{track} other{tracks}} в {format} с {bitrate}?",
"@selectionBatchConvertConfirmMessage": {
"description": "Confirmation dialog message for batch conversion",
"placeholders": {
"count": {
"type": "int"
},
"format": {
"type": "String"
},
"bitrate": {
"type": "String"
}
}
},
"selectionBatchConvertConfirmMessageLossless": "Convert {count} {count, plural, =1{track} other{tracks}} to {format}? (Lossless — no quality loss)\n\nOriginal files will be deleted after conversion.",
"@selectionBatchConvertConfirmMessageLossless": {
"description": "Confirmation dialog message for lossless batch conversion",
"placeholders": {
"count": {
"type": "int"
},
"format": {
"type": "String"
}
}
},
"selectionBatchConvertProgress": "Конвертация {current} из {total}...",
"@selectionBatchConvertProgress": {
"description": "Snackbar during batch conversion progress",
"placeholders": {
"current": {
"type": "int"
},
"total": {
"type": "int"
}
}
},
"selectionBatchConvertSuccess": "Конвертировано {success} треков {total} в {format}",
"@selectionBatchConvertSuccess": {
"description": "Snackbar after batch conversion completes",
"placeholders": {
"success": {
"type": "int"
},
"total": {
"type": "int"
},
"format": {
"type": "String"
}
}
},
"downloadedAlbumDownloadedCount": "{count} скачано",
"@downloadedAlbumDownloadedCount": {
"description": "Downloaded tracks count badge",
"placeholders": {
"count": {
"type": "int"
}
}
},
"downloadUseAlbumArtistForFoldersAlbumSubtitle": "Для папок исполнителей используется исполнитель альбома, если он указан",
"@downloadUseAlbumArtistForFoldersAlbumSubtitle": {
"description": "Subtitle when Album Artist is used for folder naming"
},
"downloadUseAlbumArtistForFoldersTrackSubtitle": "Папки исполнителя используют только трек исполнителя",
"@downloadUseAlbumArtistForFoldersTrackSubtitle": {
"description": "Subtitle when Track Artist is used for folder naming"
},
"lyricsProvidersTitle": "Lyrics Providers",
"@lyricsProvidersTitle": {
"description": "Title for the lyrics provider priority page"
},
"lyricsProvidersDescription": "Enable, disable and reorder lyrics sources. Providers are tried top-to-bottom until lyrics are found.",
"@lyricsProvidersDescription": {
"description": "Description on the lyrics provider priority page"
},
"lyricsProvidersInfoText": "Extension lyrics providers always run before built-in providers. At least one provider must remain enabled.",
"@lyricsProvidersInfoText": {
"description": "Info tip on lyrics provider priority page"
},
"lyricsProvidersEnabledSection": "Enabled ({count})",
"@lyricsProvidersEnabledSection": {
"description": "Section header for enabled providers",
"placeholders": {
"count": {
"type": "int"
}
}
},
"lyricsProvidersDisabledSection": "Disabled ({count})",
"@lyricsProvidersDisabledSection": {
"description": "Section header for disabled providers",
"placeholders": {
"count": {
"type": "int"
}
}
},
"lyricsProvidersAtLeastOne": "At least one provider must remain enabled",
"@lyricsProvidersAtLeastOne": {
"description": "Snackbar when user tries to disable the last enabled provider"
},
"lyricsProvidersSaved": "Lyrics provider priority saved",
"@lyricsProvidersSaved": {
"description": "Snackbar after saving lyrics provider priority"
},
"lyricsProvidersDiscardContent": "You have unsaved changes that will be lost.",
"@lyricsProvidersDiscardContent": {
"description": "Body text of the discard-changes dialog on lyrics provider page"
},
"lyricsProviderLrclibDesc": "Open-source synced lyrics database",
"@lyricsProviderLrclibDesc": {
"description": "Description for LRCLIB provider"
},
"lyricsProviderNeteaseDesc": "NetEase Cloud Music (good for Asian songs)",
"@lyricsProviderNeteaseDesc": {
"description": "Description for Netease provider"
},
"lyricsProviderMusixmatchDesc": "Largest lyrics database (multi-language)",
"@lyricsProviderMusixmatchDesc": {
"description": "Description for Musixmatch provider"
},
"lyricsProviderAppleMusicDesc": "Word-by-word synced lyrics (via proxy)",
"@lyricsProviderAppleMusicDesc": {
"description": "Description for Apple Music provider"
},
"lyricsProviderQqMusicDesc": "QQ Music (good for Chinese songs, via proxy)",
"@lyricsProviderQqMusicDesc": {
"description": "Description for QQ Music provider"
},
"lyricsProviderExtensionDesc": "Extension provider",
"@lyricsProviderExtensionDesc": {
"description": "Generic description for extension-based lyrics providers"
},
"safMigrationTitle": "Storage Update Required",
"@safMigrationTitle": {
"description": "Title of SAF migration dialog"
},
"safMigrationMessage1": "SpotiFLAC now uses Android Storage Access Framework (SAF) for downloads. This fixes \"permission denied\" errors on Android 10+.",
"@safMigrationMessage1": {
"description": "First paragraph of SAF migration dialog"
},
"safMigrationMessage2": "Please select your download folder again to switch to the new storage system.",
"@safMigrationMessage2": {
"description": "Second paragraph of SAF migration dialog"
},
"safMigrationSuccess": "Download folder updated to SAF mode",
"@safMigrationSuccess": {
"description": "Snackbar after successfully migrating to SAF"
},
"settingsDonate": "Donate",
"@settingsDonate": {
"description": "Settings menu item - donate"
},
"settingsDonateSubtitle": "Support SpotiFLAC-Mobile development",
"@settingsDonateSubtitle": {
"description": "Subtitle for donate menu item"
},
"tooltipLoveAll": "Love All",
"@tooltipLoveAll": {
"description": "Tooltip for the Love All button on album/playlist screens"
},
"tooltipAddToPlaylist": "Add to Playlist",
"@tooltipAddToPlaylist": {
"description": "Tooltip for the Add to Playlist button"
},
"snackbarRemovedTracksFromLoved": "Removed {count} tracks from Loved",
"@snackbarRemovedTracksFromLoved": {
"description": "Snackbar after removing multiple tracks from Loved folder",
"placeholders": {
"count": {
"type": "int"
}
}
},
"snackbarAddedTracksToLoved": "Added {count} tracks to Loved",
"@snackbarAddedTracksToLoved": {
"description": "Snackbar after adding multiple tracks to Loved folder",
"placeholders": {
"count": {
"type": "int"
}
}
},
"dialogDownloadAllTitle": "Download All",
"@dialogDownloadAllTitle": {
"description": "Dialog title for bulk download confirmation"
},
"dialogDownloadAllMessage": "Download {count} tracks?",
"@dialogDownloadAllMessage": {
"description": "Body of the Download All confirmation dialog",
"placeholders": {
"count": {
"type": "int"
}
}
},
"homeSkipAlreadyDownloaded": "Skip already downloaded songs",
"@homeSkipAlreadyDownloaded": {
"description": "Checkbox label in import dialog to skip already-downloaded songs"
},
"homeGoToAlbum": "Go to Album",
"@homeGoToAlbum": {
"description": "Context menu item to navigate to the album page"
},
"homeAlbumInfoUnavailable": "Album info not available",
"@homeAlbumInfoUnavailable": {
"description": "Snackbar when album info cannot be loaded"
},
"snackbarLoadingCueSheet": "Loading CUE sheet...",
"@snackbarLoadingCueSheet": {
"description": "Snackbar while loading a CUE sheet file"
},
"snackbarMetadataSaved": "Metadata saved successfully",
"@snackbarMetadataSaved": {
"description": "Snackbar after successfully saving track metadata"
},
"snackbarFailedToEmbedLyrics": "Failed to embed lyrics",
"@snackbarFailedToEmbedLyrics": {
"description": "Snackbar when lyrics embedding fails"
},
"snackbarFailedToWriteStorage": "Failed to write back to storage",
"@snackbarFailedToWriteStorage": {
"description": "Snackbar when writing metadata back to file fails"
},
"snackbarError": "Error: {error}",
"@snackbarError": {
"description": "Generic error snackbar with error detail",
"placeholders": {
"error": {
"type": "String"
}
}
},
"snackbarNoActionDefined": "No action defined for this button",
"@snackbarNoActionDefined": {
"description": "Snackbar when an extension button has no action configured"
},
"noTracksFoundForAlbum": "No tracks found for this album",
"@noTracksFoundForAlbum": {
"description": "Empty state message when an album has no tracks"
},
"downloadLocationSubtitle": "Choose storage mode for downloaded files.",
"@downloadLocationSubtitle": {
"description": "Subtitle text in Android download location bottom sheet"
},
"storageModeAppFolder": "App folder (non-SAF)",
"@storageModeAppFolder": {
"description": "Storage mode option - use legacy app folder"
},
"storageModeAppFolderSubtitle": "Use default Music/SpotiFLAC path",
"@storageModeAppFolderSubtitle": {
"description": "Subtitle for app folder storage mode"
},
"storageModeSaf": "SAF folder",
"@storageModeSaf": {
"description": "Storage mode option - use Android SAF picker"
},
"storageModeSafSubtitle": "Pick folder via Android Storage Access Framework",
"@storageModeSafSubtitle": {
"description": "Subtitle for SAF storage mode"
},
"downloadFilenameDescription": "Customize how your files are named.",
"@downloadFilenameDescription": {
"description": "Description text in filename format bottom sheet"
},
"downloadFilenameInsertTag": "Tap to insert tag:",
"@downloadFilenameInsertTag": {
"description": "Label above filename tag chips"
},
"downloadSeparateSinglesEnabled": "Albums/ and Singles/ folders",
"@downloadSeparateSinglesEnabled": {
"description": "Subtitle when separate singles folder is enabled"
},
"downloadSeparateSinglesDisabled": "All files in same structure",
"@downloadSeparateSinglesDisabled": {
"description": "Subtitle when separate singles folder is disabled"
},
"downloadArtistNameFilters": "Artist Name Filters",
"@downloadArtistNameFilters": {
"description": "Setting title for artist folder filter options"
},
"downloadCreatePlaylistSourceFolder": "Create playlist source folder",
"@downloadCreatePlaylistSourceFolder": {
"description": "Setting title for adding a playlist folder prefix before the normal organization structure"
},
"downloadCreatePlaylistSourceFolderEnabled": "Playlist downloads use Playlist/ plus your normal folder structure.",
"@downloadCreatePlaylistSourceFolderEnabled": {
"description": "Subtitle when playlist source folder prefix is enabled"
},
"downloadCreatePlaylistSourceFolderDisabled": "Playlist downloads use the normal folder structure only.",
"@downloadCreatePlaylistSourceFolderDisabled": {
"description": "Subtitle when playlist source folder prefix is disabled"
},
"downloadCreatePlaylistSourceFolderRedundant": "By Playlist already places downloads inside a playlist folder.",
"@downloadCreatePlaylistSourceFolderRedundant": {
"description": "Subtitle when playlist folder prefix setting is redundant because folder organization is already by playlist"
},
"downloadSongLinkRegion": "SongLink Region",
"@downloadSongLinkRegion": {
"description": "Setting title for SongLink country region"
},
"downloadNetworkCompatibilityMode": "Network compatibility mode",
"@downloadNetworkCompatibilityMode": {
"description": "Setting title for network compatibility toggle"
},
"downloadNetworkCompatibilityModeEnabled": "Enabled: try HTTP + accept invalid TLS certificates (unsafe)",
"@downloadNetworkCompatibilityModeEnabled": {
"description": "Subtitle when network compatibility mode is enabled"
},
"downloadNetworkCompatibilityModeDisabled": "Off: strict HTTPS certificate validation (recommended)",
"@downloadNetworkCompatibilityModeDisabled": {
"description": "Subtitle when network compatibility mode is disabled"
},
"downloadSelectServiceToEnable": "Select a built-in service to enable",
"@downloadSelectServiceToEnable": {
"description": "Hint shown instead of Ask-quality subtitle when no built-in service selected"
},
"downloadSelectTidalQobuz": "Select Tidal or Qobuz above to configure quality",
"@downloadSelectTidalQobuz": {
"description": "Info hint when non-Tidal/Qobuz service is selected"
},
"downloadEmbedLyricsDisabled": "Disabled while Embed Metadata is turned off",
"@downloadEmbedLyricsDisabled": {
"description": "Subtitle for Embed Lyrics when Embed Metadata is disabled"
},
"downloadNeteaseIncludeTranslation": "Netease: Include Translation",
"@downloadNeteaseIncludeTranslation": {
"description": "Toggle title for including Netease translated lyrics"
},
"downloadNeteaseIncludeTranslationEnabled": "Append translated lyrics when available",
"@downloadNeteaseIncludeTranslationEnabled": {
"description": "Subtitle when Netease translation is enabled"
},
"downloadNeteaseIncludeTranslationDisabled": "Use original lyrics only",
"@downloadNeteaseIncludeTranslationDisabled": {
"description": "Subtitle when Netease translation is disabled"
},
"downloadNeteaseIncludeRomanization": "Netease: Include Romanization",
"@downloadNeteaseIncludeRomanization": {
"description": "Toggle title for including Netease romanized lyrics"
},
"downloadNeteaseIncludeRomanizationEnabled": "Append romanized lyrics when available",
"@downloadNeteaseIncludeRomanizationEnabled": {
"description": "Subtitle when Netease romanization is enabled"
},
"downloadNeteaseIncludeRomanizationDisabled": "Disabled",
"@downloadNeteaseIncludeRomanizationDisabled": {
"description": "Subtitle when Netease romanization is disabled"
},
"downloadAppleQqMultiPerson": "Apple/QQ Multi-Person Word-by-Word",
"@downloadAppleQqMultiPerson": {
"description": "Toggle title for Apple/QQ multi-person word-by-word lyrics"
},
"downloadAppleQqMultiPersonEnabled": "Enable v1/v2 speaker and [bg:] tags",
"@downloadAppleQqMultiPersonEnabled": {
"description": "Subtitle when multi-person word-by-word is enabled"
},
"downloadAppleQqMultiPersonDisabled": "Simplified word-by-word formatting",
"@downloadAppleQqMultiPersonDisabled": {
"description": "Subtitle when multi-person word-by-word is disabled"
},
"downloadMusixmatchLanguage": "Musixmatch Language",
"@downloadMusixmatchLanguage": {
"description": "Setting title for Musixmatch language preference"
},
"downloadMusixmatchLanguageAuto": "Auto (original)",
"@downloadMusixmatchLanguageAuto": {
"description": "Option label when Musixmatch uses original language"
},
"downloadFilterContributing": "Filter contributing artists in Album Artist",
"@downloadFilterContributing": {
"description": "Toggle title for filtering contributing artists in Album Artist metadata"
},
"downloadFilterContributingEnabled": "Album Artist metadata uses primary artist only",
"@downloadFilterContributingEnabled": {
"description": "Subtitle when contributing artist filter is enabled"
},
"downloadFilterContributingDisabled": "Keep full Album Artist metadata value",
"@downloadFilterContributingDisabled": {
"description": "Subtitle when contributing artist filter is disabled"
},
"downloadProvidersNoneEnabled": "None enabled",
"@downloadProvidersNoneEnabled": {
"description": "Subtitle for lyrics providers setting when no providers are enabled"
},
"downloadMusixmatchLanguageCode": "Language code",
"@downloadMusixmatchLanguageCode": {
"description": "Label for the Musixmatch language code text field"
},
"downloadMusixmatchLanguageHint": "auto / en / es / ja",
"@downloadMusixmatchLanguageHint": {
"description": "Hint text for the Musixmatch language code field"
},
"downloadMusixmatchLanguageDesc": "Set preferred language code (example: en, es, ja). Leave empty for auto.",
"@downloadMusixmatchLanguageDesc": {
"description": "Description in the Musixmatch language picker"
},
"downloadMusixmatchAuto": "Auto",
"@downloadMusixmatchAuto": {
"description": "Button to reset Musixmatch language to automatic"
},
"downloadNetworkAnySubtitle": "WiFi + Mobile Data",
"@downloadNetworkAnySubtitle": {
"description": "Subtitle for 'Any' network mode option"
},
"downloadNetworkWifiOnlySubtitle": "Pause downloads on mobile data",
"@downloadNetworkWifiOnlySubtitle": {
"description": "Subtitle for 'WiFi only' network mode option"
},
"downloadSongLinkRegionDesc": "Used as userCountry for SongLink API lookup.",
"@downloadSongLinkRegionDesc": {
"description": "Description in the SongLink region picker"
},
"snackbarUnsupportedAudioFormat": "Unsupported audio format",
"@snackbarUnsupportedAudioFormat": {
"description": "Snackbar when the audio format is not supported for the requested operation"
},
"cacheRefresh": "Refresh",
"@cacheRefresh": {
"description": "Tooltip for refresh button on cache management page"
},
"dialogDownloadPlaylistsMessage": "Download {trackCount} {trackCount, plural, =1{track} other{tracks}} from {playlistCount} {playlistCount, plural, =1{playlist} other{playlists}}?",
"@dialogDownloadPlaylistsMessage": {
"description": "Dialog message for bulk playlist download confirmation",
"placeholders": {
"trackCount": {
"type": "int"
},
"playlistCount": {
"type": "int"
}
}
},
"bulkDownloadPlaylistsButton": "Download {count} {count, plural, =1{playlist} other{playlists}}",
"@bulkDownloadPlaylistsButton": {
"description": "Button label for bulk downloading selected playlists",
"placeholders": {
"count": {
"type": "int"
}
}
},
"bulkDownloadSelectPlaylists": "Select playlists to download",
"@bulkDownloadSelectPlaylists": {
"description": "Button label when no playlists are selected for download"
},
"snackbarSelectedPlaylistsEmpty": "Selected playlists have no tracks",
"@snackbarSelectedPlaylistsEmpty": {
"description": "Snackbar when selected playlists contain no tracks"
},
"playlistsCount": "{count, plural, =1{1 playlist} other{{count} playlists}}",
"@playlistsCount": {
"description": "Playlist count display",
"placeholders": {
"count": {
"type": "int"
}
}
},
"editMetadataAutoFill": "Auto-fill from online",
"@editMetadataAutoFill": {
"description": "Section title for selective online metadata auto-fill in the edit metadata sheet"
},
"editMetadataAutoFillDesc": "Select fields to fill automatically from online metadata",
"@editMetadataAutoFillDesc": {
"description": "Description for the auto-fill section"
},
"editMetadataAutoFillFetch": "Fetch & Fill",
"@editMetadataAutoFillFetch": {
"description": "Button label to fetch online metadata and fill selected fields"
},
"editMetadataAutoFillSearching": "Searching online...",
"@editMetadataAutoFillSearching": {
"description": "Snackbar shown while searching for online metadata"
},
"editMetadataAutoFillNoResults": "No matching metadata found online",
"@editMetadataAutoFillNoResults": {
"description": "Snackbar when online metadata search returns no results"
},
"editMetadataAutoFillDone": "Filled {count} {count, plural, =1{field} other{fields}} from online metadata",
"@editMetadataAutoFillDone": {
"description": "Snackbar confirming how many fields were auto-filled",
"placeholders": {
"count": {
"type": "int"
}
}
},
"editMetadataAutoFillNoneSelected": "Select at least one field to auto-fill",
"@editMetadataAutoFillNoneSelected": {
"description": "Snackbar when user taps Fetch without selecting any fields"
},
"editMetadataFieldTitle": "Title",
"@editMetadataFieldTitle": {
"description": "Chip label for title field in auto-fill selector"
},
"editMetadataFieldArtist": "Artist",
"@editMetadataFieldArtist": {
"description": "Chip label for artist field in auto-fill selector"
},
"editMetadataFieldAlbum": "Album",
"@editMetadataFieldAlbum": {
"description": "Chip label for album field in auto-fill selector"
},
"editMetadataFieldAlbumArtist": "Album Artist",
"@editMetadataFieldAlbumArtist": {
"description": "Chip label for album artist field in auto-fill selector"
},
"editMetadataFieldDate": "Date",
"@editMetadataFieldDate": {
"description": "Chip label for date field in auto-fill selector"
},
"editMetadataFieldTrackNum": "Track #",
"@editMetadataFieldTrackNum": {
"description": "Chip label for track number field in auto-fill selector"
},
"editMetadataFieldDiscNum": "Disc #",
"@editMetadataFieldDiscNum": {
"description": "Chip label for disc number field in auto-fill selector"
},
"editMetadataFieldGenre": "Genre",
"@editMetadataFieldGenre": {
"description": "Chip label for genre field in auto-fill selector"
},
"editMetadataFieldIsrc": "ISRC",
"@editMetadataFieldIsrc": {
"description": "Chip label for ISRC field in auto-fill selector"
},
"editMetadataFieldLabel": "Label",
"@editMetadataFieldLabel": {
"description": "Chip label for label field in auto-fill selector"
},
"editMetadataFieldCopyright": "Copyright",
"@editMetadataFieldCopyright": {
"description": "Chip label for copyright field in auto-fill selector"
},
"editMetadataFieldCover": "Cover Art",
"@editMetadataFieldCover": {
"description": "Chip label for cover art field in auto-fill selector"
},
"editMetadataSelectAll": "All",
"@editMetadataSelectAll": {
"description": "Button to select all fields for auto-fill"
},
"editMetadataSelectEmpty": "Empty only",
"@editMetadataSelectEmpty": {
"description": "Button to select only fields that are currently empty"
},
"queueDownloadingCount": "Downloading ({count})",
"@queueDownloadingCount": {
"description": "Header for active downloads section with count",
"placeholders": {
"count": {
"type": "int"
}
}
},
"queueDownloadedHeader": "Downloaded",
"@queueDownloadedHeader": {
"description": "Header label for downloaded items section in library"
},
"queueFilteringIndicator": "Filtering...",
"@queueFilteringIndicator": {
"description": "Shown while filter results are being computed"
},
"queueTrackCount": "{count, plural, =1{1 track} other{{count} tracks}}",
"@queueTrackCount": {
"description": "Track count label with plural support",
"placeholders": {
"count": {
"type": "int"
}
}
},
"queueAlbumCount": "{count, plural, =1{1 album} other{{count} albums}}",
"@queueAlbumCount": {
"description": "Album count label with plural support",
"placeholders": {
"count": {
"type": "int"
}
}
},
"queueEmptyAlbums": "No album downloads",
"@queueEmptyAlbums": {
"description": "Empty state title when no album downloads exist"
},
"queueEmptyAlbumsSubtitle": "Download multiple tracks from an album to see them here",
"@queueEmptyAlbumsSubtitle": {
"description": "Empty state subtitle for album downloads"
},
"queueEmptySingles": "No single downloads",
"@queueEmptySingles": {
"description": "Empty state title when no single track downloads exist"
},
"queueEmptySinglesSubtitle": "Single track downloads will appear here",
"@queueEmptySinglesSubtitle": {
"description": "Empty state subtitle for single track downloads"
},
"queueEmptyHistory": "No download history",
"@queueEmptyHistory": {
"description": "Empty state title when download history is empty"
},
"queueEmptyHistorySubtitle": "Downloaded tracks will appear here",
"@queueEmptyHistorySubtitle": {
"description": "Empty state subtitle for download history"
},
"selectionAllPlaylistsSelected": "All playlists selected",
"@selectionAllPlaylistsSelected": {
"description": "Shown when all playlists are selected in selection mode"
},
"selectionTapPlaylistsToSelect": "Tap playlists to select",
"@selectionTapPlaylistsToSelect": {
"description": "Hint shown in playlist selection mode"
},
"selectionSelectPlaylistsToDelete": "Select playlists to delete",
"@selectionSelectPlaylistsToDelete": {
"description": "Hint shown when no playlists are selected for deletion"
},
"audioAnalysisTitle": "Audio Quality Analysis",
"@audioAnalysisTitle": {
"description": "Title for audio analysis section"
},
"audioAnalysisDescription": "Verify lossless quality with spectrum analysis",
"@audioAnalysisDescription": {
"description": "Description for audio analysis tap-to-analyze prompt"
},
"audioAnalysisAnalyzing": "Analyzing audio...",
"@audioAnalysisAnalyzing": {
"description": "Loading text while analyzing audio"
},
"audioAnalysisSampleRate": "Sample Rate",
"@audioAnalysisSampleRate": {
"description": "Sample rate metric label"
},
"audioAnalysisBitDepth": "Bit Depth",
"@audioAnalysisBitDepth": {
"description": "Bit depth metric label"
},
"audioAnalysisChannels": "Channels",
"@audioAnalysisChannels": {
"description": "Channels metric label"
},
"audioAnalysisDuration": "Duration",
"@audioAnalysisDuration": {
"description": "Duration metric label"
},
"audioAnalysisNyquist": "Nyquist",
"@audioAnalysisNyquist": {
"description": "Nyquist frequency metric label"
},
"audioAnalysisFileSize": "Size",
"@audioAnalysisFileSize": {
"description": "File size metric label"
},
"audioAnalysisDynamicRange": "Dynamic Range",
"@audioAnalysisDynamicRange": {
"description": "Dynamic range metric label"
},
"audioAnalysisPeak": "Peak",
"@audioAnalysisPeak": {
"description": "Peak amplitude metric label"
},
"audioAnalysisRms": "RMS",
"@audioAnalysisRms": {
"description": "RMS level metric label"
},
"audioAnalysisSamples": "Samples",
"@audioAnalysisSamples": {
"description": "Total samples metric label"
},
"extensionsSearchWith": "Search with {providerName}",
"@extensionsSearchWith": {
"description": "Extensions page - subtitle for built-in search provider option",
"placeholders": {
"providerName": {
"type": "String"
}
}
},
"extensionsHomeFeedProvider": "Home Feed Provider",
"@extensionsHomeFeedProvider": {
"description": "Extensions page - label for home feed provider selector"
},
"extensionsHomeFeedDescription": "Choose which extension provides the home feed on the main screen",
"@extensionsHomeFeedDescription": {
"description": "Extensions page - description for home feed provider picker"
},
"extensionsHomeFeedAuto": "Auto",
"@extensionsHomeFeedAuto": {
"description": "Extensions page - home feed provider option: auto"
},
"extensionsHomeFeedAutoSubtitle": "Automatically select the best available",
"@extensionsHomeFeedAutoSubtitle": {
"description": "Extensions page - subtitle for auto home feed option"
},
"extensionsHomeFeedUse": "Use {extensionName} home feed",
"@extensionsHomeFeedUse": {
"description": "Extensions page - subtitle for a specific extension home feed option",
"placeholders": {
"extensionName": {
"type": "String"
}
}
},
"extensionsNoHomeFeedExtensions": "No extensions with home feed",
"@extensionsNoHomeFeedExtensions": {
"description": "Extensions page - shown when no installed extension has home feed"
},
"sortAlphaAsc": "A-Z",
"@sortAlphaAsc": {
"description": "Sort option - alphabetical ascending"
},
"sortAlphaDesc": "Z-A",
"@sortAlphaDesc": {
"description": "Sort option - alphabetical descending"
},
"cancelDownloadTitle": "Cancel download?",
"@cancelDownloadTitle": {
"description": "Dialog title when confirming cancellation of an active download"
},
"cancelDownloadContent": "This will cancel the active download for \"{trackName}\".",
"@cancelDownloadContent": {
"description": "Dialog body when confirming cancellation of an active download",
"placeholders": {
"trackName": {
"type": "String"
}
}
},
"cancelDownloadKeep": "Keep",
"@cancelDownloadKeep": {
"description": "Dialog button - keep the active download (do not cancel)"
},
"metadataSaveFailedFfmpeg": "Failed to save metadata via FFmpeg",
"@metadataSaveFailedFfmpeg": {
"description": "Snackbar error when FFmpeg fails to write metadata"
},
"metadataSaveFailedStorage": "Failed to write metadata back to storage",
"@metadataSaveFailedStorage": {
"description": "Snackbar error when writing metadata file back to storage fails"
},
"snackbarFolderPickerFailed": "Failed to open folder picker: {error}",
"@snackbarFolderPickerFailed": {
"description": "Snackbar shown when folder picker fails to open",
"placeholders": {
"error": {
"type": "String"
}
}
},
"errorLoadAlbum": "Failed to load album",
"@errorLoadAlbum": {
"description": "Error state shown when album fails to load"
},
"errorLoadPlaylist": "Failed to load playlist",
"@errorLoadPlaylist": {
"description": "Error state shown when playlist fails to load"
},
"errorLoadArtist": "Failed to load artist",
"@errorLoadArtist": {
"description": "Error state shown when artist fails to load"
},
"notifChannelDownloadName": "Download Progress",
"@notifChannelDownloadName": {
"description": "Android notification channel name for download progress"
},
"notifChannelDownloadDesc": "Shows download progress for tracks",
"@notifChannelDownloadDesc": {
"description": "Android notification channel description for download progress"
},
"notifChannelLibraryScanName": "Library Scan",
"@notifChannelLibraryScanName": {
"description": "Android notification channel name for library scan"
},
"notifChannelLibraryScanDesc": "Shows local library scan progress",
"@notifChannelLibraryScanDesc": {
"description": "Android notification channel description for library scan"
},
"notifDownloadingTrack": "Downloading {trackName}",
"@notifDownloadingTrack": {
"description": "Notification title while downloading a track",
"placeholders": {
"trackName": {
"type": "String"
}
}
},
"notifFinalizingTrack": "Finalizing {trackName}",
"@notifFinalizingTrack": {
"description": "Notification title while finalizing (embedding metadata) a track",
"placeholders": {
"trackName": {
"type": "String"
}
}
},
"notifEmbeddingMetadata": "Embedding metadata...",
"@notifEmbeddingMetadata": {
"description": "Notification body while embedding metadata into a downloaded track"
},
"notifAlreadyInLibraryCount": "Already in Library ({completed}/{total})",
"@notifAlreadyInLibraryCount": {
"description": "Notification title when track is already in library, with count",
"placeholders": {
"completed": {
"type": "int"
},
"total": {
"type": "int"
}
}
},
"notifAlreadyInLibrary": "Already in Library",
"@notifAlreadyInLibrary": {
"description": "Notification title when track is already in library"
},
"notifDownloadCompleteCount": "Download Complete ({completed}/{total})",
"@notifDownloadCompleteCount": {
"description": "Notification title when download is complete, with count",
"placeholders": {
"completed": {
"type": "int"
},
"total": {
"type": "int"
}
}
},
"notifDownloadComplete": "Download Complete",
"@notifDownloadComplete": {
"description": "Notification title when a single download is complete"
},
"notifDownloadsFinished": "Downloads Finished ({completed} done, {failed} failed)",
"@notifDownloadsFinished": {
"description": "Notification title when queue finishes with some failures",
"placeholders": {
"completed": {
"type": "int"
},
"failed": {
"type": "int"
}
}
},
"notifAllDownloadsComplete": "All Downloads Complete",
"@notifAllDownloadsComplete": {
"description": "Notification title when all downloads finish successfully"
},
"notifTracksDownloadedSuccess": "{count} tracks downloaded successfully",
"@notifTracksDownloadedSuccess": {
"description": "Notification body for queue complete - how many tracks were downloaded",
"placeholders": {
"count": {
"type": "int"
}
}
},
"notifScanningLibrary": "Scanning local library",
"@notifScanningLibrary": {
"description": "Notification title while scanning local library"
},
"notifLibraryScanProgressWithTotal": "{scanned}/{total} files • {percentage}%",
"@notifLibraryScanProgressWithTotal": {
"description": "Notification body for library scan progress when total is known",
"placeholders": {
"scanned": {
"type": "int"
},
"total": {
"type": "int"
},
"percentage": {
"type": "int"
}
}
},
"notifLibraryScanProgressNoTotal": "{scanned} files scanned • {percentage}%",
"@notifLibraryScanProgressNoTotal": {
"description": "Notification body for library scan progress when total is unknown",
"placeholders": {
"scanned": {
"type": "int"
},
"percentage": {
"type": "int"
}
}
},
"notifLibraryScanComplete": "Library scan complete",
"@notifLibraryScanComplete": {
"description": "Notification title when library scan finishes"
},
"notifLibraryScanCompleteBody": "{count} tracks indexed",
"@notifLibraryScanCompleteBody": {
"description": "Notification body for library scan complete - number of indexed tracks",
"placeholders": {
"count": {
"type": "int"
}
}
},
"notifLibraryScanExcluded": "{count} excluded",
"@notifLibraryScanExcluded": {
"description": "Library scan complete suffix - excluded track count",
"placeholders": {
"count": {
"type": "int"
}
}
},
"notifLibraryScanErrors": "{count} errors",
"@notifLibraryScanErrors": {
"description": "Library scan complete suffix - error count",
"placeholders": {
"count": {
"type": "int"
}
}
},
"notifLibraryScanFailed": "Library scan failed",
"@notifLibraryScanFailed": {
"description": "Notification title when library scan fails"
},
"notifLibraryScanCancelled": "Library scan cancelled",
"@notifLibraryScanCancelled": {
"description": "Notification title when library scan is cancelled by the user"
},
"notifLibraryScanStopped": "Scan stopped before completion.",
"@notifLibraryScanStopped": {
"description": "Notification body when library scan is cancelled"
},
"notifDownloadingUpdate": "Downloading SpotiFLAC Mobile v{version}",
"@notifDownloadingUpdate": {
"description": "Notification title while downloading an app update",
"placeholders": {
"version": {
"type": "String"
}
}
},
"notifUpdateProgress": "{received} / {total} MB • {percentage}%",
"@notifUpdateProgress": {
"description": "Notification body showing update download progress",
"placeholders": {
"received": {
"type": "String"
},
"total": {
"type": "String"
},
"percentage": {
"type": "int"
}
}
},
"notifUpdateReady": "Update Ready",
"@notifUpdateReady": {
"description": "Notification title when app update download is complete"
},
"notifUpdateReadyBody": "SpotiFLAC Mobile v{version} downloaded. Tap to install.",
"@notifUpdateReadyBody": {
"description": "Notification body when app update is ready to install",
"placeholders": {
"version": {
"type": "String"
}
}
},
"notifUpdateFailed": "Update Failed",
"@notifUpdateFailed": {
"description": "Notification title when app update download fails"
},
"notifUpdateFailedBody": "Could not download update. Try again later.",
"@notifUpdateFailedBody": {
"description": "Notification body when app update download fails"
},
"settingsFiles": "Files & Folders",
"@settingsFiles": {
"description": "Settings menu item - file and folder settings"
},
"settingsFilesSubtitle": "Download location, filename, folder structure",
"@settingsFilesSubtitle": {
"description": "Subtitle for files & folders settings"
},
"settingsMetadata": "Metadata",
"@settingsMetadata": {
"description": "Settings menu item - metadata settings"
},
"settingsMetadataSubtitle": "Cover art, tags, ReplayGain, providers",
"@settingsMetadataSubtitle": {
"description": "Subtitle for metadata settings"
},
"settingsLyrics": "Lyrics",
"@settingsLyrics": {
"description": "Settings menu item - lyrics settings"
},
"settingsLyricsSubtitle": "Embed, mode, providers, language options",
"@settingsLyricsSubtitle": {
"description": "Subtitle for lyrics settings"
},
"settingsApp": "App",
"@settingsApp": {
"description": "Settings menu item - app settings"
},
"settingsAppSubtitle": "Updates, data, extension repo, debug",
"@settingsAppSubtitle": {
"description": "Subtitle for app settings"
},
"sectionMetadataProviders": "Providers",
"@sectionMetadataProviders": {
"description": "Settings section header for metadata providers"
},
"sectionDuplicates": "Duplicates",
"@sectionDuplicates": {
"description": "Settings section header for deduplication"
},
"sectionLyricsProviderOptions": "Provider Options",
"@sectionLyricsProviderOptions": {
"description": "Settings section header for per-provider lyrics options"
},
"metadataProvidersTitle": "Metadata Provider Priority",
"@metadataProvidersTitle": {
"description": "Settings item title for metadata provider order"
},
"metadataProvidersSubtitle": "Drag to set search and metadata source order",
"@metadataProvidersSubtitle": {
"description": "Subtitle for metadata provider priority item"
},
"downloadDeduplication": "Skip Duplicate Downloads",
"@downloadDeduplication": {
"description": "Setting - skip tracks already in download history"
},
"downloadDeduplicationEnabled": "Already-downloaded tracks will be skipped",
"@downloadDeduplicationEnabled": {
"description": "Subtitle when deduplication is on"
},
"downloadDeduplicationDisabled": "All tracks will be downloaded regardless of history",
"@downloadDeduplicationDisabled": {
"description": "Subtitle when deduplication is off"
},
"downloadFallbackExtensions": "Fallback Extensions",
"@downloadFallbackExtensions": {
"description": "Settings item for configuring fallback extension providers"
},
"downloadFallbackExtensionsSubtitle": "Choose which extensions can be used as fallback",
"@downloadFallbackExtensionsSubtitle": {
"description": "Subtitle for fallback extensions item"
}
}