SpotiFLAC-Mobile/lib/l10n/app_localizations_ru.dart
zarzet 8e6cbcbc2a feat: YouTube customizable bitrate, improved title matching, SpotubeDL engine fallback
- Add configurable YouTube Opus (96-256kbps) and MP3 (96-320kbps) bitrates
- Improve title matching with loose normalization for symbol-heavy tracks
- Add SpotubeDL engine v2 fallback for MP3 requests
- Improve filename sanitization in track metadata screen
- Bump version to 3.6.9+82
2026-02-17 17:22:24 +07:00

3067 lines
91 KiB
Dart
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.

// ignore: unused_import
import 'package:intl/intl.dart' as intl;
import 'app_localizations.dart';
// ignore_for_file: type=lint
/// The translations for Russian (`ru`).
class AppLocalizationsRu extends AppLocalizations {
AppLocalizationsRu([String locale = 'ru']) : super(locale);
@override
String get appName => 'SpotiFLAC';
@override
String get appDescription =>
'Скачайте треки Spotify в Lossless качестве из Tidal, Qobuz и Amazon Music.';
@override
String get navHome => 'Главная';
@override
String get navLibrary => 'Библиотека';
@override
String get navHistory => 'История';
@override
String get navSettings => 'Настройки';
@override
String get navStore => 'Магазин';
@override
String get homeTitle => 'Главная';
@override
String get homeSearchHint => 'Вставьте URL Spotify или выполните поиск...';
@override
String homeSearchHintExtension(String extensionName) {
return 'Искать с помощью $extensionName...';
}
@override
String get homeSubtitle => 'Вставьте ссылку Spotify или ищите по названию';
@override
String get homeSupports =>
'Поддерживается: Трек, Альбом, Плейлист, URL исполнителя';
@override
String get homeRecent => 'Недавние';
@override
String get historyTitle => 'История';
@override
String historyDownloading(int count) {
return 'Скачивание ($count)';
}
@override
String get historyDownloaded => 'Скачано';
@override
String get historyFilterAll => 'Все';
@override
String get historyFilterAlbums => 'Альбомы';
@override
String get historyFilterSingles => 'Синглы';
@override
String historyTracksCount(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$count треков',
many: '$count треков',
few: '$count трека',
one: '$count трек',
);
return '$_temp0';
}
@override
String historyAlbumsCount(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$count альбомов',
many: '$count альбомов',
few: '$count альбома',
one: '$count альбом',
);
return '$_temp0';
}
@override
String get historyNoDownloads => 'Нет истории скачиваний';
@override
String get historyNoDownloadsSubtitle => 'Скачанные треки появятся здесь';
@override
String get historyNoAlbums => 'Нет скачанных альбомов';
@override
String get historyNoAlbumsSubtitle =>
'Скачайте несколько треков из альбома, чтобы увидеть их здесь';
@override
String get historyNoSingles => 'Нет скачанных синглов';
@override
String get historyNoSinglesSubtitle =>
'Здесь будут отображаться загрузки синглов';
@override
String get historySearchHint => 'Поиск в истории...';
@override
String get settingsTitle => 'Настройки';
@override
String get settingsDownload => 'Скачивание';
@override
String get settingsAppearance => 'Внешний вид';
@override
String get settingsOptions => 'Опции';
@override
String get settingsExtensions => 'Расширения';
@override
String get settingsAbout => 'О программе';
@override
String get downloadTitle => 'Скачивание';
@override
String get downloadLocation => 'Папка для скачивания';
@override
String get downloadLocationSubtitle => 'Выберите, куда сохранить файлы';
@override
String get downloadLocationDefault => 'Расположение по умолчанию';
@override
String get downloadDefaultService => 'Сервис по умолчанию';
@override
String get downloadDefaultServiceSubtitle =>
'Сервис, используемый для скачивания';
@override
String get downloadDefaultQuality => 'Качество по умолчанию';
@override
String get downloadAskQuality => 'Спрашивать качество перед скачиванием';
@override
String get downloadAskQualitySubtitle =>
'Показывать выбор качества для каждого скачивания';
@override
String get downloadFilenameFormat => 'Формат имени файла';
@override
String get downloadFolderOrganization => 'Организация папок';
@override
String get downloadSeparateSingles => 'Разделять синглы';
@override
String get downloadSeparateSinglesSubtitle =>
'Помещать синглы в отдельную папку';
@override
String get qualityBest => 'Лучшее из доступных';
@override
String get qualityFlac => 'FLAC';
@override
String get quality320 => '320 кбит/с';
@override
String get quality128 => '128 кбит/с';
@override
String get appearanceTitle => 'Внешний вид';
@override
String get appearanceTheme => 'Тема';
@override
String get appearanceThemeSystem => 'Системная';
@override
String get appearanceThemeLight => 'Светлая';
@override
String get appearanceThemeDark => 'Тёмная';
@override
String get appearanceDynamicColor => 'Динамический цвет';
@override
String get appearanceDynamicColorSubtitle =>
'Использовать цвета из ваших обоев';
@override
String get appearanceAccentColor => 'Акцентный цвет';
@override
String get appearanceHistoryView => 'Отображение истории';
@override
String get appearanceHistoryViewList => 'Список';
@override
String get appearanceHistoryViewGrid => 'Сетка';
@override
String get optionsTitle => 'Опции';
@override
String get optionsSearchSource => 'Поиск источника';
@override
String get optionsPrimaryProvider => 'Основной провайдер';
@override
String get optionsPrimaryProviderSubtitle =>
'Сервис, используемый при поиске по названию трека.';
@override
String optionsUsingExtension(String extensionName) {
return 'Используется расширение: $extensionName';
}
@override
String get optionsSwitchBack =>
'Нажмите Deezer или Spotify для возврата с расширения';
@override
String get optionsAutoFallback => 'Автоматический переход';
@override
String get optionsAutoFallbackSubtitle =>
'Попробовать другие сервисы при сбое загрузки';
@override
String get optionsUseExtensionProviders =>
'Использовать провайдера расширений';
@override
String get optionsUseExtensionProvidersOn =>
'Сначала будут опробованы расширения';
@override
String get optionsUseExtensionProvidersOff =>
'Использование только встроенных провайдеров';
@override
String get optionsEmbedLyrics => 'Вставить текст песни';
@override
String get optionsEmbedLyricsSubtitle =>
'Вставить синхронизированные тексты в FLAC файлы';
@override
String get optionsMaxQualityCover => 'Максимальное качество обложки';
@override
String get optionsMaxQualityCoverSubtitle =>
'Скачивать обложку в макс. разрешении';
@override
String get optionsConcurrentDownloads => 'Одновременные загрузки';
@override
String get optionsConcurrentSequential => 'Последовательно (1 за раз)';
@override
String optionsConcurrentParallel(int count) {
return '$count параллельных загрузок';
}
@override
String get optionsConcurrentWarning =>
'Параллельные загрузки могут вызвать ограничение скорости';
@override
String get optionsExtensionStore => 'Магазин расширений';
@override
String get optionsExtensionStoreSubtitle =>
'Показывать вкладку Магазин в гл. меню';
@override
String get optionsCheckUpdates => 'Проверить обновления';
@override
String get optionsCheckUpdatesSubtitle => 'Уведомлять о наличии новой версии';
@override
String get optionsUpdateChannel => 'Канал обновлений';
@override
String get optionsUpdateChannelStable => 'Только стабильные релизы';
@override
String get optionsUpdateChannelPreview => 'Предварительные версии';
@override
String get optionsUpdateChannelWarning =>
'Предварительная версия может содержать ошибки или неполные функции';
@override
String get optionsClearHistory => 'Очистить историю загрузок';
@override
String get optionsClearHistorySubtitle =>
'Удалить все скачанные треки из истории';
@override
String get optionsDetailedLogging => 'Подробный лог';
@override
String get optionsDetailedLoggingOn => 'Ведутся подробные логи';
@override
String get optionsDetailedLoggingOff => 'Включить для отчётов об ошибках';
@override
String get optionsSpotifyCredentials => 'Учётные данные Spotify';
@override
String optionsSpotifyCredentialsConfigured(String clientId) {
return 'Client ID: $clientId...';
}
@override
String get optionsSpotifyCredentialsRequired =>
'Необходимо - нажмите для настройки';
@override
String get optionsSpotifyWarning =>
'Spotify требует ваши собственные учетные данные API. Получите их бесплатно на сайте developer.spotify.com';
@override
String get optionsSpotifyDeprecationWarning =>
'Поиск Spotify устареет 3 марта 2026 года из-за изменений Spotify API. Пожалуйста, перейдите на Deezer.';
@override
String get extensionsTitle => 'Расширения';
@override
String get extensionsInstalled => 'Установленные расширения';
@override
String get extensionsNone => 'Нет установленных расширений';
@override
String get extensionsNoneSubtitle =>
'Установка расширений из вкладки Магазин';
@override
String get extensionsEnabled => 'Включено';
@override
String get extensionsDisabled => 'Выключено';
@override
String extensionsVersion(String version) {
return 'Версия $version';
}
@override
String extensionsAuthor(String author) {
return 'от $author';
}
@override
String get extensionsUninstall => 'Удалить';
@override
String get extensionsSetAsSearch => 'Установить в качестве поисковой системы';
@override
String get storeTitle => 'Магазин расширений';
@override
String get storeSearch => 'Поиск расширений...';
@override
String get storeInstall => 'Установить';
@override
String get storeInstalled => 'Установлено';
@override
String get storeUpdate => 'Обновить';
@override
String get aboutTitle => 'О программе';
@override
String get aboutContributors => 'Участники';
@override
String get aboutMobileDeveloper => 'Разработчик мобильной версии';
@override
String get aboutOriginalCreator => 'Создатель оригинального SpotiFLAC';
@override
String get aboutLogoArtist =>
'Талантливый художник, который создал наш красивый логотип приложения!';
@override
String get aboutTranslators => 'Переводчики';
@override
String get aboutSpecialThanks => 'Особая благодарность';
@override
String get aboutLinks => 'Ссылки';
@override
String get aboutMobileSource => 'Исходный код мобильной версии';
@override
String get aboutPCSource => 'Исходный код ПК версии';
@override
String get aboutReportIssue => 'Сообщить о проблеме';
@override
String get aboutReportIssueSubtitle => 'Сообщите о возникших проблемах';
@override
String get aboutFeatureRequest => 'Предложить новую функцию';
@override
String get aboutFeatureRequestSubtitle =>
'Предложить новые функции для приложения';
@override
String get aboutTelegramChannel => 'Telegram канал';
@override
String get aboutTelegramChannelSubtitle => 'Объявления и обновления';
@override
String get aboutTelegramChat => 'Сообщество в Telegram';
@override
String get aboutTelegramChatSubtitle => 'Чат с другими пользователями';
@override
String get aboutSocial => 'Соцсети';
@override
String get aboutSupport => 'Поддержка';
@override
String get aboutApp => 'Приложение';
@override
String get aboutVersion => 'Версия';
@override
String get aboutBinimumDesc =>
'Создатель QQDL & HiFi API. Без этого API загрузки Tidal не существовали бы!';
@override
String get aboutSachinsenalDesc =>
'Оригинальный создатель проекта HiFi. Основатель Tidal интеграции!';
@override
String get aboutSjdonadoDesc =>
'Создатель I Don\'t Have Spotify (IDHS). Резервный резолвер ссылки';
@override
String get aboutDoubleDouble => 'DoubleDouble';
@override
String get aboutDoubleDoubleDesc =>
'Удивительный API для загрузок Amazon Music. Спасибо за то, что сделали это бесплатно!';
@override
String get aboutDabMusic => 'DAB Music';
@override
String get aboutDabMusicDesc =>
'Лучший API для стриминга Qobuz. Без него загрузка файлов в высоком разрешении была бы невозможна!';
@override
String get aboutSpotiSaver => 'SpotiSaver';
@override
String get aboutSpotiSaverDesc =>
'Потоковая передача Tidal Hi-Res FLAC. Ключевая часть lossless головоломки!';
@override
String get aboutAppDescription =>
'Скачайте треки Spotify в Lossless качестве из Tidal, Qobuz и Amazon Music.';
@override
String get albumTitle => 'Альбом';
@override
String albumTracks(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$count треков',
many: '$count треков',
few: '$count трека',
one: '$count трек',
);
return '$_temp0';
}
@override
String get albumDownloadAll => 'Скачать всё';
@override
String get albumDownloadRemaining => 'Скачать оставшиеся';
@override
String get playlistTitle => 'Плейлист';
@override
String get artistTitle => 'Исполнитель';
@override
String get artistAlbums => 'Альбомы';
@override
String get artistSingles => 'Синглы и EP';
@override
String get artistCompilations => 'Сборники';
@override
String artistReleases(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$count релизов',
many: '$count релизов',
few: '$count релиза',
one: '$count релиз',
);
return '$_temp0';
}
@override
String get artistPopular => 'Популярное';
@override
String artistMonthlyListeners(String count) {
return '$count слушателей в месяц';
}
@override
String get trackMetadataTitle => 'Информация о треке';
@override
String get trackMetadataArtist => 'Исполнитель';
@override
String get trackMetadataAlbum => 'Альбом';
@override
String get trackMetadataDuration => 'Продолжительность';
@override
String get trackMetadataQuality => 'Качество';
@override
String get trackMetadataPath => 'Путь к файлу';
@override
String get trackMetadataDownloadedAt => 'Скачано';
@override
String get trackMetadataService => 'Сервис';
@override
String get trackMetadataPlay => 'Воспроизвести';
@override
String get trackMetadataShare => 'Поделиться';
@override
String get trackMetadataDelete => 'Удалить';
@override
String get trackMetadataRedownload => 'Скачать снова';
@override
String get trackMetadataOpenFolder => 'Открыть папку';
@override
String get setupTitle => 'Добро пожаловать в SpotiFLAC';
@override
String get setupSubtitle => 'Давайте начнем';
@override
String get setupStoragePermission => 'Доступ к хранилищу';
@override
String get setupStoragePermissionSubtitle =>
'Необходимо для сохранения загруженных файлов';
@override
String get setupStoragePermissionGranted => 'Разрешение предоставлено';
@override
String get setupStoragePermissionDenied => 'Разрешение не предоставлено';
@override
String get setupGrantPermission => 'Предоставить разрешение';
@override
String get setupDownloadLocation => 'Папка для скачивания';
@override
String get setupChooseFolder => 'Выбрать папку';
@override
String get setupContinue => 'Продолжить';
@override
String get setupSkip => 'Пропустить';
@override
String get setupStorageAccessRequired => 'Требуется доступ к хранилищу';
@override
String get setupStorageAccessMessage =>
'SpotiFLAC требуется разрешение \"Доступ ко всем файлам\" для сохранения музыкальных файлов в выбранную папку.';
@override
String get setupStorageAccessMessageAndroid11 =>
'Для Android 11+ требуется разрешение \"Доступ ко всем файлам\" для сохранения файлов в выбранную вами папку загрузки.';
@override
String get setupOpenSettings => 'Открыть настройки';
@override
String get setupPermissionDeniedMessage =>
'В разрешении отказано. Пожалуйста, предоставьте все разрешения для продолжения.';
@override
String setupPermissionRequired(String permissionType) {
return 'Требуется разрешение $permissionType';
}
@override
String setupPermissionRequiredMessage(String permissionType) {
return 'Для оптимальной работы требуется разрешение $permissionType. Вы можете изменить это позже в настройках.';
}
@override
String get setupSelectDownloadFolder => 'Выбрать папку для скачивания';
@override
String get setupUseDefaultFolder => 'Использовать папку по умолчанию?';
@override
String get setupNoFolderSelected =>
'Папка не выбрана. Хотите использовать папку Музыка по умолчанию?';
@override
String get setupUseDefault => 'По умолчанию';
@override
String get setupDownloadLocationTitle => 'Папка для скачивания';
@override
String get setupDownloadLocationIosMessage =>
'В iOS загрузки сохраняются в папке Документы приложения. Вы можете получить к ним доступ через приложение Файлы.';
@override
String get setupAppDocumentsFolder => 'Папка Документы приложения';
@override
String get setupAppDocumentsFolderSubtitle =>
'Рекомендуется - доступ через Файлы';
@override
String get setupChooseFromFiles => 'Выбрать из файлов';
@override
String get setupChooseFromFilesSubtitle =>
'Выберите iCloud или другое местоположение';
@override
String get setupIosEmptyFolderWarning =>
'Ограничение iOS: пустые папки не могут быть выбраны. Выберите папку, содержащую хотя бы один файл.';
@override
String get setupIcloudNotSupported =>
'iCloud Drive не поддерживается. Пожалуйста, используйте папку Документы.';
@override
String get setupDownloadInFlac => 'Скачать Spotify треки во FLAC';
@override
String get setupStepStorage => 'Хранилище';
@override
String get setupStepNotification => 'Уведомления';
@override
String get setupStepFolder => 'Папка';
@override
String get setupStepSpotify => 'Spotify';
@override
String get setupStepPermission => 'Разрешение';
@override
String get setupStorageGranted => 'Доступ к хранилищу предоставлен!';
@override
String get setupStorageRequired => 'Требуется доступ к хранилищу';
@override
String get setupStorageDescription =>
'SpotiFLAC требуется разрешение на хранение для сохранения скачанных файлов.';
@override
String get setupNotificationGranted =>
'Разрешение на уведомление предоставлено!';
@override
String get setupNotificationEnable => 'Включить уведомления';
@override
String get setupNotificationDescription =>
'Получайте уведомления о завершении загрузки или о необходимости привлечения внимания.';
@override
String get setupFolderSelected => 'Папка для загрузки выбрана!';
@override
String get setupFolderChoose => 'Выбрать папку для скачивания';
@override
String get setupFolderDescription =>
'Выберите папку, в которой будет сохраняться скачанная музыка.';
@override
String get setupChangeFolder => 'Сменить папку';
@override
String get setupSelectFolder => 'Выбрать папку';
@override
String get setupSpotifyApiOptional => 'Spotify API (необязательно)';
@override
String get setupSpotifyApiDescription =>
'Добавьте свои учётные данные Spotify для улучшения результатов поиска и доступа к эксклюзивному контенту Spotify.';
@override
String get setupUseSpotifyApi => 'Использовать Spotify API';
@override
String get setupEnterCredentialsBelow => 'Введите ваши учётные данные ниже';
@override
String get setupUsingDeezer => 'Использование Deezer (аккаунт не требуется)';
@override
String get setupEnterClientId => 'Введите Client ID Spotify';
@override
String get setupEnterClientSecret => 'Введите Spotify Client Secret';
@override
String get setupGetFreeCredentials =>
'Получите бесплатный API учётной записи на панели разработчика Spotify.';
@override
String get setupEnableNotifications => 'Включить уведомления';
@override
String get setupProceedToNextStep =>
'Теперь вы можете перейти к следующему шагу.';
@override
String get setupNotificationProgressDescription =>
'Вы будете получать уведомления о ходе загрузки.';
@override
String get setupNotificationBackgroundDescription =>
'Получайте уведомления о ходе и завершении загрузки. Это поможет вам отслеживать загрузки, когда приложение находится в фоновом режиме.';
@override
String get setupSkipForNow => 'Пропустить';
@override
String get setupBack => 'Назад';
@override
String get setupNext => 'Далее';
@override
String get setupGetStarted => 'Приступить к работе';
@override
String get setupSkipAndStart => 'Пропустить и начать';
@override
String get setupAllowAccessToManageFiles =>
'Пожалуйста, включите \"Разрешить доступ для управления всеми файлами\" на следующем экране.';
@override
String get setupGetCredentialsFromSpotify =>
'Получить учётные данные с developer.spotify.com';
@override
String get dialogCancel => 'Отмена';
@override
String get dialogOk => 'ОК';
@override
String get dialogSave => 'Сохранить';
@override
String get dialogDelete => 'Удалить';
@override
String get dialogRetry => 'Повторить';
@override
String get dialogClose => 'Закрыть';
@override
String get dialogYes => 'Да';
@override
String get dialogNo => 'Нет';
@override
String get dialogClear => 'Очистить';
@override
String get dialogConfirm => 'Подтвердить';
@override
String get dialogDone => 'Готово';
@override
String get dialogImport => 'Импорт';
@override
String get dialogDiscard => 'Отменить';
@override
String get dialogRemove => 'Убрать';
@override
String get dialogUninstall => 'Удалить';
@override
String get dialogDiscardChanges => 'Отменить изменения?';
@override
String get dialogUnsavedChanges =>
'Есть несохраненные изменения. Отменить их?';
@override
String get dialogDownloadFailed => 'Ошибка скачивания';
@override
String get dialogTrackLabel => 'Трек:';
@override
String get dialogArtistLabel => 'Исполнитель:';
@override
String get dialogErrorLabel => 'Ошибка:';
@override
String get dialogClearAll => 'Очистить всё';
@override
String get dialogClearAllDownloads =>
'Вы уверены, что хотите очистить все загрузки?';
@override
String get dialogRemoveFromDevice => 'Удалить с устройства?';
@override
String get dialogRemoveExtension => 'Удалить расширение';
@override
String get dialogRemoveExtensionMessage =>
'Вы уверены, что хотите удалить это расширение? Это действие не может быть отменено.';
@override
String get dialogUninstallExtension => 'Удалить расширение?';
@override
String dialogUninstallExtensionMessage(String extensionName) {
return 'Вы уверены, что хотите удалить $extensionName?';
}
@override
String get dialogClearHistoryTitle => 'Очистить историю';
@override
String get dialogClearHistoryMessage =>
'Вы уверены, что хотите удалить всю историю загрузок? Это действие необратимо.';
@override
String get dialogDeleteSelectedTitle => 'Удалить выбранные';
@override
String dialogDeleteSelectedMessage(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: 'треков',
many: 'треков',
few: 'трека',
one: 'трек',
);
return 'Удалить $count $_temp0 из истории?\n\nЭто также удалит файлы из хранилища.';
}
@override
String get dialogImportPlaylistTitle => 'Импорт плейлиста';
@override
String dialogImportPlaylistMessage(int count) {
return 'Найдено $count треков в CSV. Добавить их в очередь загрузки?';
}
@override
String csvImportTracks(int count) {
return '$count треков из CSV';
}
@override
String snackbarAddedToQueue(String trackName) {
return '\"$trackName\" добавлен в очередь';
}
@override
String snackbarAddedTracksToQueue(int count) {
return 'Добавлено $count треков в очередь';
}
@override
String snackbarAlreadyDownloaded(String trackName) {
return '\"$trackName\" уже скачан';
}
@override
String snackbarAlreadyInLibrary(String trackName) {
return '\"$trackName\" уже есть в вашей библиотеке';
}
@override
String get snackbarHistoryCleared => 'История очищена';
@override
String get snackbarCredentialsSaved => 'Учётные данные сохранены';
@override
String get snackbarCredentialsCleared => 'Учётные данные очищены';
@override
String snackbarDeletedTracks(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: 'треков',
many: 'треков',
few: 'трека',
one: 'трек',
);
return 'Удалено $count $_temp0';
}
@override
String snackbarCannotOpenFile(String error) {
return 'Невозможно открыть файл: $error';
}
@override
String get snackbarFillAllFields => 'Пожалуйста, заполните все поля';
@override
String get snackbarViewQueue => 'Просмотр очереди';
@override
String snackbarFailedToLoad(String error) {
return 'Ошибка загрузки: $error';
}
@override
String snackbarUrlCopied(String platform) {
return '$platform ссылка скопирована в буфер обмена';
}
@override
String get snackbarFileNotFound => 'Файл не найден';
@override
String get snackbarSelectExtFile =>
'Пожалуйста, выберите .spotiflac-ext-файл';
@override
String get snackbarProviderPrioritySaved => 'Приоритет провайдера сохранён';
@override
String get snackbarMetadataProviderSaved =>
'Приоритет провайдера метаданных сохранён';
@override
String snackbarExtensionInstalled(String extensionName) {
return '$extensionName установлено.';
}
@override
String snackbarExtensionUpdated(String extensionName) {
return '$extensionName Обновлено.';
}
@override
String get snackbarFailedToInstall => 'Не удалось установить расширение';
@override
String get snackbarFailedToUpdate => 'Не удалось обновить расширение';
@override
String get errorRateLimited => 'Слишком много запросов';
@override
String get errorRateLimitedMessage =>
'Слишком много запросов. Пожалуйста, подождите минуту перед повторным поиском.';
@override
String errorFailedToLoad(String item) {
return 'Ошибка загрузки $item';
}
@override
String get errorNoTracksFound => 'Треки не найдены';
@override
String errorMissingExtensionSource(String item) {
return 'Невозможно загрузить $item: отсутствует источник расширения';
}
@override
String get statusQueued => 'В очереди';
@override
String get statusDownloading => 'Скачивание';
@override
String get statusFinalizing => 'Завершение';
@override
String get statusCompleted => 'Завершено';
@override
String get statusFailed => 'Неудачно';
@override
String get statusSkipped => 'Пропущено';
@override
String get statusPaused => 'Приостановлено';
@override
String get actionPause => 'Пауза';
@override
String get actionResume => 'Возобновить';
@override
String get actionCancel => 'Отмена';
@override
String get actionStop => 'Стоп';
@override
String get actionSelect => 'Выбрать';
@override
String get actionSelectAll => 'Выбрать все';
@override
String get actionDeselect => 'Снять выделение';
@override
String get actionPaste => 'Вставить';
@override
String get actionImportCsv => 'Импорт CSV';
@override
String get actionRemoveCredentials => 'Удалить учётные данные';
@override
String get actionSaveCredentials => 'Сохранить учётные данные';
@override
String selectionSelected(int count) {
return '$count выбрано';
}
@override
String get selectionAllSelected => 'Все треки выбраны';
@override
String get selectionTapToSelect => 'Нажмите на треки для выбора';
@override
String selectionDeleteTracks(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: 'треков',
many: 'треков',
few: 'трека',
one: 'трек',
);
return 'Удалить $count $_temp0';
}
@override
String get selectionSelectToDelete => 'Выберите треки для удаления';
@override
String progressFetchingMetadata(int current, int total) {
return 'Получение метаданных... $current/$total';
}
@override
String get progressReadingCsv => 'Чтение CSV...';
@override
String get searchSongs => 'Песни';
@override
String get searchArtists => 'Исполнители';
@override
String get searchAlbums => 'Альбомы';
@override
String get searchPlaylists => 'Плейлисты';
@override
String get tooltipPlay => 'Воспроизвести';
@override
String get tooltipCancel => 'Отмена';
@override
String get tooltipStop => 'Стоп';
@override
String get tooltipRetry => 'Повторить';
@override
String get tooltipRemove => 'Убрать';
@override
String get tooltipClear => 'Очистить';
@override
String get tooltipPaste => 'Вставить';
@override
String get filenameFormat => 'Формат имени файла';
@override
String filenameFormatPreview(String preview) {
return 'Предпросмотр: $preview';
}
@override
String get filenameAvailablePlaceholders => 'Доступные заполнители:';
@override
String filenameHint(Object artist, Object title) {
return '$artist - $title';
}
@override
String get filenameShowAdvancedTags => 'Show advanced tags';
@override
String get filenameShowAdvancedTagsDescription =>
'Enable formatted tags for track padding and date patterns';
@override
String get folderOrganization => 'Организация папок';
@override
String get folderOrganizationNone => 'Без организации';
@override
String get folderOrganizationByArtist => 'По исполнителю';
@override
String get folderOrganizationByAlbum => 'По альбому';
@override
String get folderOrganizationByArtistAlbum => 'Исполнитель/Альбом';
@override
String get folderOrganizationDescription =>
'Сортировать скачанные файлы по папкам';
@override
String get folderOrganizationNoneSubtitle => 'Все файлы в папке загрузок';
@override
String get folderOrganizationByArtistSubtitle =>
'Отдельная папка для каждого исполнителя';
@override
String get folderOrganizationByAlbumSubtitle =>
'Отдельная папка для каждого альбома';
@override
String get folderOrganizationByArtistAlbumSubtitle =>
'Вложенные папки для исполнителей и альбомов';
@override
String get updateAvailable => 'Доступно обновление';
@override
String updateNewVersion(String version) {
return 'Версия $version доступна';
}
@override
String get updateDownload => 'Скачать';
@override
String get updateLater => 'Позже';
@override
String get updateChangelog => 'Список изменений';
@override
String get updateStartingDownload => 'Загрузка началась...';
@override
String get updateDownloadFailed => 'Не удалось скачать';
@override
String get updateFailedMessage => 'Сбой загрузки обновления';
@override
String get updateNewVersionReady => 'Доступна новая версия';
@override
String get updateCurrent => 'Текущая';
@override
String get updateNew => 'Новая';
@override
String get updateDownloading => 'Скачивание...';
@override
String get updateWhatsNew => 'Что нового';
@override
String get updateDownloadInstall => 'Скачать и установить';
@override
String get updateDontRemind => 'Не напоминать';
@override
String get providerPriority => 'Приоритет провайдера';
@override
String get providerPrioritySubtitle => 'Перетащите для изменения порядка';
@override
String get providerPriorityTitle => 'Приоритет провайдера';
@override
String get providerPriorityDescription =>
'Перетаскивайте, чтобы изменить порядок провайдеров загрузки. Приложение будет пробовать провайдеров сверху вниз при загрузке треков.';
@override
String get providerPriorityInfo =>
'Если трек не доступен у первого провайдера, приложение автоматически попробует следующий.';
@override
String get providerBuiltIn => 'Встроенные';
@override
String get providerExtension => 'Расширение';
@override
String get metadataProviderPriority => 'Приоритет провайдера метаданных';
@override
String get metadataProviderPrioritySubtitle =>
'Порядок, используемый при получении метаданных';
@override
String get metadataProviderPriorityTitle => 'Приоритет метаданных';
@override
String get metadataProviderPriorityDescription =>
'Перетаскивайте, чтобы изменить порядок провайдеров метаданных. Приложение будет пробовать провайдеров сверху вниз при поиске треков и извлечении метаданных.';
@override
String get metadataProviderPriorityInfo =>
'Deezer не имеет ограничений по скорости и рекомендуется в качестве основного. Spotify может ограничивать скорость после большого количества запросов.';
@override
String get metadataNoRateLimits => 'Без ограничений по скорости';
@override
String get metadataMayRateLimit => 'Есть ограничения по скорости';
@override
String get logTitle => 'Логи';
@override
String get logCopy => 'Скопировать логи';
@override
String get logClear => 'Очистить логи';
@override
String get logShare => 'Поделиться логами';
@override
String get logEmpty => 'Логов нет';
@override
String get logCopied => 'Логи скопированы в буфер обмена';
@override
String get logSearchHint => 'Поиск логов...';
@override
String get logFilterLevel => 'Уровень';
@override
String get logFilterSection => 'Фильтр';
@override
String get logShareLogs => 'Поделиться логами';
@override
String get logClearLogs => 'Очистить логи';
@override
String get logClearLogsTitle => 'Очистить логи';
@override
String get logClearLogsMessage => 'Вы уверены, что хотите очистить все логи?';
@override
String get logIspBlocking => 'ОБНАРУЖЕНА БЛОКИРОВКА ИНТЕРНЕТ ПРОВАЙДЕРОМ';
@override
String get logRateLimited => 'ОГРАНИЧЕННАЯ СКОРОСТЬ';
@override
String get logNetworkError => 'ОШИБКА СЕТИ';
@override
String get logTrackNotFound => 'ТРЕК НЕ НАЙДЕН';
@override
String get logFilterBySeverity => 'Фильтровать логи по серьезности';
@override
String get logNoLogsYet => 'Логов нет';
@override
String get logNoLogsYetSubtitle =>
'Логи появятся здесь по мере использования приложения';
@override
String get logIssueSummary => 'Краткое описание проблемы';
@override
String get logIspBlockingDescription =>
'Ваш провайдер может блокировать доступ к сервисам скачивания';
@override
String get logIspBlockingSuggestion =>
'Попробуйте использовать VPN или измените DNS на 1.1.1.1 или 8.8.8.8';
@override
String get logRateLimitedDescription => 'Слишком много запросов к сервису';
@override
String get logRateLimitedSuggestion =>
'Подождите несколько минут, прежде чем повторить попытку';
@override
String get logNetworkErrorDescription => 'Обнаружены проблемы с подключением';
@override
String get logNetworkErrorSuggestion => 'Проверьте подключение к Интернету';
@override
String get logTrackNotFoundDescription =>
'Некоторые треки не найдены в сервисах загрузки';
@override
String get logTrackNotFoundSuggestion =>
'Трек может быть недоступен в lossless формате';
@override
String logTotalErrors(int count) {
return 'Всего ошибок: $count';
}
@override
String logAffected(String domains) {
return 'Затронуто: $domains';
}
@override
String logEntriesFiltered(int count) {
return 'Записи ($count фильтровано)';
}
@override
String logEntries(int count) {
return 'Записи ($count)';
}
@override
String get credentialsTitle => 'Учётные данные Spotify';
@override
String get credentialsDescription =>
'Введите свой Client ID и Secret, чтобы использовать собственные квоты в Spotify.';
@override
String get credentialsClientId => 'Client ID';
@override
String get credentialsClientIdHint => 'Вставьте Client ID';
@override
String get credentialsClientSecret => 'Client Secret';
@override
String get credentialsClientSecretHint => 'Вставьте Client Secret';
@override
String get channelStable => 'Стабильный';
@override
String get channelPreview => 'Предварительный';
@override
String get sectionSearchSource => 'Поиск источника';
@override
String get sectionDownload => 'Скачивание';
@override
String get sectionPerformance => 'Производительность';
@override
String get sectionApp => 'Приложение';
@override
String get sectionData => 'Данные';
@override
String get sectionDebug => 'Отладка';
@override
String get sectionService => 'Сервис';
@override
String get sectionAudioQuality => 'Качество аудио';
@override
String get sectionFileSettings => 'Настройки файла';
@override
String get sectionLyrics => 'Тексты песен';
@override
String get lyricsMode => 'Режим текстов песен';
@override
String get lyricsModeDescription =>
'Выберите как сохранить тексты песен при скачивании';
@override
String get lyricsModeEmbed => 'Вставить в файл';
@override
String get lyricsModeEmbedSubtitle => 'Встроить текст в метаданные FLAC';
@override
String get lyricsModeExternal => 'Внешний файл .lrc';
@override
String get lyricsModeExternalSubtitle =>
'Отдельный файл .lrc для плееров, таких, как Samsung Music';
@override
String get lyricsModeBoth => 'Оба варианта';
@override
String get lyricsModeBothSubtitle => 'Вставить и сохранить файл .lrc';
@override
String get sectionColor => 'Цвет';
@override
String get sectionTheme => 'Тема';
@override
String get sectionLayout => 'Разметка';
@override
String get sectionLanguage => 'Язык';
@override
String get appearanceLanguage => 'Язык приложения';
@override
String get appearanceLanguageSubtitle => 'Выберите предпочитаемый язык';
@override
String get settingsAppearanceSubtitle => 'Тема, цвета, дисплей';
@override
String get settingsDownloadSubtitle =>
'Сервисы, качество, формат имени файла';
@override
String get settingsOptionsSubtitle =>
'Резерв. сервер, тексты песен, обложки, обновления';
@override
String get settingsExtensionsSubtitle => 'Управление провайдерами скачивания';
@override
String get settingsLogsSubtitle => 'Просмотреть логи для отладки';
@override
String get loadingSharedLink => 'Загрузка общедоступной ссылки...';
@override
String get pressBackAgainToExit => 'Нажмите «Назад» ещё раз, чтобы выйти';
@override
String get tracksHeader => 'Треки';
@override
String downloadAllCount(int count) {
return 'Скачать все ($count)';
}
@override
String tracksCount(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$count треков',
many: '$count треков',
few: '$count трека',
one: '$count трек',
);
return '$_temp0';
}
@override
String get trackCopyFilePath => 'Скопировать путь к файлу';
@override
String get trackRemoveFromDevice => 'Удалить с устройства';
@override
String get trackLoadLyrics => 'Загрузить текст песни';
@override
String get trackMetadata => 'Метаданные';
@override
String get trackFileInfo => 'Информация о файле';
@override
String get trackLyrics => 'Текст песни';
@override
String get trackFileNotFound => 'Файл не найден';
@override
String get trackOpenInDeezer => 'Открыть в Deezer';
@override
String get trackOpenInSpotify => 'Открыть в Spotify';
@override
String get trackTrackName => 'Название';
@override
String get trackArtist => 'Исполнитель';
@override
String get trackAlbumArtist => 'Исполнитель альбома';
@override
String get trackAlbum => 'Альбом';
@override
String get trackTrackNumber => 'Номер трека';
@override
String get trackDiscNumber => 'Номер диска';
@override
String get trackDuration => 'Продолжительность';
@override
String get trackAudioQuality => 'Качество записи';
@override
String get trackReleaseDate => 'Дата выхода';
@override
String get trackGenre => 'Жанр';
@override
String get trackLabel => 'Заголовок';
@override
String get trackCopyright => 'Авторские права';
@override
String get trackDownloaded => 'Скачано';
@override
String get trackCopyLyrics => 'Копировать текст';
@override
String get trackLyricsNotAvailable =>
'Текст песни недоступен для этого трека';
@override
String get trackLyricsTimeout =>
'Время ожидания запроса истекло. Повторите попытку позже.';
@override
String get trackLyricsLoadFailed => 'Не удалось загрузить текст песни';
@override
String get trackEmbedLyrics => 'Вставить текст песни';
@override
String get trackLyricsEmbedded => 'Текст успешно добавлен';
@override
String get trackInstrumental => 'Инструментальный трек';
@override
String get trackCopiedToClipboard => 'Скопировано в буфер обмена';
@override
String get trackDeleteConfirmTitle => 'Удалить с устройства?';
@override
String get trackDeleteConfirmMessage =>
'Это приведет к окончательному удалению загруженного файла и его удалению из истории.';
@override
String trackCannotOpen(String message) {
return 'Невозможно открыть: $message';
}
@override
String get dateToday => 'Сегодня';
@override
String get dateYesterday => 'Вчера';
@override
String dateDaysAgo(int count) {
return '$count дней назад';
}
@override
String dateWeeksAgo(int count) {
return '$count недель назад';
}
@override
String dateMonthsAgo(int count) {
return '$count месяцев назад';
}
@override
String get concurrentSequential => 'Последовательно';
@override
String get concurrentParallel2 => '2 параллельно';
@override
String get concurrentParallel3 => '3 параллельно';
@override
String get tapToSeeError => 'Нажмите, чтобы увидеть подробности ошибки';
@override
String get storeFilterAll => 'Все';
@override
String get storeFilterMetadata => 'Метаданные';
@override
String get storeFilterDownload => 'Скачивание';
@override
String get storeFilterUtility => 'Утилиты';
@override
String get storeFilterLyrics => 'Тексты песен';
@override
String get storeFilterIntegration => 'Интеграция';
@override
String get storeClearFilters => 'Очистить фильтры';
@override
String get storeNoResults => 'Расширения не найдены';
@override
String get extensionProviderPriority => 'Приоритет провайдера';
@override
String get extensionInstallButton => 'Установить расширение';
@override
String get extensionDefaultProvider => 'По умолчанию (Deezer/Spotify)';
@override
String get extensionDefaultProviderSubtitle =>
'Использовать встроенный поиск';
@override
String get extensionAuthor => 'Автор';
@override
String get extensionId => 'ID';
@override
String get extensionError => 'Ошибка';
@override
String get extensionCapabilities => 'Возможности';
@override
String get extensionMetadataProvider => 'Провайдер метаданных';
@override
String get extensionDownloadProvider => 'Провайдер скачивания';
@override
String get extensionLyricsProvider => 'Провайдер текстов';
@override
String get extensionUrlHandler => 'URL-обработчик';
@override
String get extensionQualityOptions => 'Параметры качества';
@override
String get extensionPostProcessingHooks => 'Хуки постобработки';
@override
String get extensionPermissions => 'Разрешения';
@override
String get extensionSettings => 'Настройки';
@override
String get extensionRemoveButton => 'Удалить расширение';
@override
String get extensionUpdated => 'Обновлено';
@override
String get extensionMinAppVersion => 'Мин. версия приложения';
@override
String get extensionCustomTrackMatching =>
'Соответствие пользовательских треков';
@override
String get extensionPostProcessing => 'Постобработка';
@override
String extensionHooksAvailable(int count) {
return 'Доступно $count хуков(ов)';
}
@override
String extensionPatternsCount(int count) {
return '$count шаблон(ов)';
}
@override
String extensionStrategy(String strategy) {
return 'Стратегия: $strategy';
}
@override
String get extensionsProviderPrioritySection => 'Приоритет провайдера';
@override
String get extensionsInstalledSection => 'Установленные расширения';
@override
String get extensionsNoExtensions => 'Нет установленных расширений';
@override
String get extensionsNoExtensionsSubtitle =>
'Установите .spotiflac-ext файлы для добавления новых провайдеров';
@override
String get extensionsInstallButton => 'Установить расширение';
@override
String get extensionsInfoTip =>
'Расширения могут добавлять новые метаданные и провайдеров загрузки. Устанавливайте только расширения из надежных источников.';
@override
String get extensionsInstalledSuccess => 'Расширение успешно установлено';
@override
String get extensionsDownloadPriority => 'Приоритет скачивания';
@override
String get extensionsDownloadPrioritySubtitle =>
'Установка порядок сервисов скачивания';
@override
String get extensionsNoDownloadProvider =>
'Нет расширений с провайдером загрузки';
@override
String get extensionsMetadataPriority => 'Приоритет метаданных';
@override
String get extensionsMetadataPrioritySubtitle =>
'Установка порядка поиска и источника метаданных';
@override
String get extensionsNoMetadataProvider =>
'Нет расширений с провайдером метаданных';
@override
String get extensionsSearchProvider => 'Провайдер поиска';
@override
String get extensionsNoCustomSearch =>
'Нет расширений с пользовательским поиском';
@override
String get extensionsSearchProviderDescription =>
'Выберите, какой сервис использовать для поиска треков';
@override
String get extensionsCustomSearch => 'Пользовательский поиск';
@override
String get extensionsErrorLoading => 'Ошибка загрузки расширения';
@override
String get qualityFlacLossless => 'FLAC Lossless';
@override
String get qualityFlacLosslessSubtitle => '16-бит / 44.1 кГц';
@override
String get qualityHiResFlac => 'Hi-Res FLAC';
@override
String get qualityHiResFlacSubtitle => '24-бит / до 96кГц';
@override
String get qualityHiResFlacMax => 'Hi-Res FLAC Макс.';
@override
String get qualityHiResFlacMaxSubtitle => '24-бит / до 192кГц';
@override
String get qualityLossy => 'Lossy';
@override
String get qualityLossyMp3Subtitle =>
'Opus 320 кбит/с (конвертировать из FLAC)';
@override
String get qualityLossyOpusSubtitle =>
'Opus 128 кбит/с (конвертировать из FLAC)';
@override
String get enableLossyOption => 'Включить опцию Lossy';
@override
String get enableLossyOptionSubtitleOn => 'Доступно качество с потерями';
@override
String get enableLossyOptionSubtitleOff =>
'Скачивать FLAC и конвертировать в MP3 320 кбит/с';
@override
String get lossyFormat => 'Формат с потерями';
@override
String get lossyFormatDescription => 'Выберите Lossy формат для конвертации';
@override
String get lossyFormatMp3Subtitle => '320Кбит/с, лучшая совместимость';
@override
String get lossyFormatOpusSubtitle =>
'128кбит/с, лучшее качество при меньших размерах';
@override
String get qualityNote =>
'Фактическое качество зависит от доступности треков в сервисе';
@override
String get youtubeQualityNote =>
'YouTube обеспечивает только звук с потерями(Lossy).';
@override
String get youtubeOpusBitrateTitle => 'YouTube Opus Bitrate';
@override
String get youtubeMp3BitrateTitle => 'YouTube MP3 Bitrate';
@override
String youtubeBitrateSubtitle(int bitrate, int min, int max) {
return '${bitrate}kbps ($min-$max)';
}
@override
String youtubeBitrateInputHelp(int min, int max) {
return 'Enter custom bitrate ($min-$max kbps)';
}
@override
String get youtubeBitrateFieldLabel => 'Bitrate (kbps)';
@override
String youtubeBitrateValidationError(int min, int max) {
return 'Bitrate must be between $min and $max kbps';
}
@override
String get downloadAskBeforeDownload => 'Спрашивать перед скачиванием';
@override
String get downloadDirectory => 'Папка для скачивания';
@override
String get downloadSeparateSinglesFolder => 'Отдельная папка для синглов';
@override
String get downloadAlbumFolderStructure => 'Структура папок альбома';
@override
String get downloadUseAlbumArtistForFolders =>
'Использовать исполнителя альбома для папок';
@override
String get downloadUseAlbumArtistForFoldersAlbumSubtitle =>
'Artist folders use Album Artist when available';
@override
String get downloadUseAlbumArtistForFoldersTrackSubtitle =>
'Папки исполнителя используют только трек исполнителя';
@override
String get downloadUsePrimaryArtistOnly => 'Primary artist only for folders';
@override
String get downloadUsePrimaryArtistOnlyEnabled =>
'Featured artists removed from folder name (e.g. Justin Bieber, Quavo → Justin Bieber)';
@override
String get downloadUsePrimaryArtistOnlyDisabled =>
'Full artist string used for folder name';
@override
String get downloadSaveFormat => 'Формат сохранения';
@override
String get downloadSelectService => 'Выбор сервиса';
@override
String get downloadSelectQuality => 'Выбор качества';
@override
String get downloadFrom => 'Скачивать из';
@override
String get downloadDefaultQualityLabel => 'Качество по умолчанию';
@override
String get downloadBestAvailable => 'Лучшее из доступных';
@override
String get folderNone => 'Отсутствует';
@override
String get folderNoneSubtitle =>
'Сохранить все файлы непосредственно в папку загрузки';
@override
String get folderArtist => 'Исполнитель';
@override
String get folderArtistSubtitle => 'Исполнитель/имя файла';
@override
String get folderAlbum => 'Альбом';
@override
String get folderAlbumSubtitle => 'Альбом/имя файла';
@override
String get folderArtistAlbum => 'Исполнитель/Альбом';
@override
String get folderArtistAlbumSubtitle => 'Исполнитель/ Альбом/имя файла';
@override
String get serviceTidal => 'Tidal';
@override
String get serviceQobuz => 'Qobuz';
@override
String get serviceAmazon => 'Amazon';
@override
String get serviceDeezer => 'Deezer';
@override
String get serviceSpotify => 'Spotify';
@override
String get appearanceAmoledDark => 'AMOLED';
@override
String get appearanceAmoledDarkSubtitle => 'Глубокий чёрный фон';
@override
String get appearanceChooseAccentColor => 'Выберите акцентный цвет';
@override
String get appearanceChooseTheme => 'Режим темы';
@override
String get queueTitle => 'Очередь скачиваний';
@override
String get queueClearAll => 'Очистить всё';
@override
String get queueClearAllMessage =>
'Вы уверены, что хотите очистить все загрузки?';
@override
String get queueExportFailed => 'Экспорт';
@override
String get queueExportFailedSuccess =>
'Сбой при экспорте загрузок в файл TXT';
@override
String get queueExportFailedClear => 'Не удалось очистить';
@override
String get queueExportFailedError => 'Не удалось экспортировать загрузки';
@override
String get settingsAutoExportFailed => 'Автоэкспорт неудачных загрузок';
@override
String get settingsAutoExportFailedSubtitle =>
'Автоматическое сохранение неудачных загрузок в TXT файл';
@override
String get settingsDownloadNetwork => 'Сеть для скачивания';
@override
String get settingsDownloadNetworkAny => 'WiFi и мобильная сеть';
@override
String get settingsDownloadNetworkWifiOnly => 'Только WiFi';
@override
String get settingsDownloadNetworkSubtitle =>
'Выберите, какую сеть использовать для скачивания. Когда установлено значение только WiFi — скачивания через мобильную сеть будут приостановлены.';
@override
String get queueEmpty => 'Нет загрузок в очереди';
@override
String get queueEmptySubtitle => 'Добавить треки с главного экрана';
@override
String get queueClearCompleted => 'Очистка завершена';
@override
String get queueDownloadFailed => 'Ошибка скачивания';
@override
String get queueTrackLabel => 'Трек:';
@override
String get queueArtistLabel => 'Исполнитель:';
@override
String get queueErrorLabel => 'Ошибка:';
@override
String get queueUnknownError => 'Неизвестная ошибка';
@override
String get albumFolderArtistAlbum => 'Исполнитель / Альбом';
@override
String get albumFolderArtistAlbumSubtitle =>
'Альбомы/Исполнитель/Название Альбома/';
@override
String get albumFolderArtistYearAlbum => 'Исполнитель / [Год] Альбом';
@override
String get albumFolderArtistYearAlbumSubtitle =>
'Альбомы/Исполнитель/[2005] Название Альбома/';
@override
String get albumFolderAlbumOnly => 'Только альбом';
@override
String get albumFolderAlbumOnlySubtitle => 'Альбомы/Название Альбома/';
@override
String get albumFolderYearAlbum => '[Год] Альбом';
@override
String get albumFolderYearAlbumSubtitle =>
'Альбомы/[2005] Название Альбома /';
@override
String get albumFolderArtistAlbumSingles => 'Исполнитель / Альбом + Синглы';
@override
String get albumFolderArtistAlbumSinglesSubtitle =>
'Исполнитель/Альбом и Исполнитель/Сингл/';
@override
String get downloadedAlbumDeleteSelected => 'Удалить выбранные';
@override
String downloadedAlbumDeleteMessage(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: 'треков',
many: 'треков',
few: 'трека',
one: 'трек',
);
return 'Удалить $count $_temp0 из этого альбома?\n\nЭто также удалит файлы из хранилища.';
}
@override
String get downloadedAlbumTracksHeader => 'Треки';
@override
String downloadedAlbumDownloadedCount(int count) {
return '$count скачано';
}
@override
String downloadedAlbumSelectedCount(int count) {
return '$count выбрано';
}
@override
String get downloadedAlbumAllSelected => 'Все треки выбраны';
@override
String get downloadedAlbumTapToSelect => 'Нажмите на треки для выбора';
@override
String downloadedAlbumDeleteCount(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: 'треков',
many: 'треков',
few: 'трека',
one: 'трек',
);
return 'Удалить $count $_temp0';
}
@override
String get downloadedAlbumSelectToDelete => 'Выберите треки для удаления';
@override
String downloadedAlbumDiscHeader(int discNumber) {
return 'Диск $discNumber';
}
@override
String get utilityFunctions => 'Функции утилиты';
@override
String get recentTypeArtist => 'Исполнитель';
@override
String get recentTypeAlbum => 'Альбом';
@override
String get recentTypeSong => 'Песня';
@override
String get recentTypePlaylist => 'Плейлист';
@override
String get recentEmpty => 'Нет недавних элементов';
@override
String get recentShowAllDownloads => 'Показать все загрузки';
@override
String recentPlaylistInfo(String name) {
return 'Плейлист: $name';
}
@override
String errorGeneric(String message) {
return 'Ошибка: $message';
}
@override
String get discographyDownload => 'Скачать дискографию';
@override
String get discographyDownloadAll => 'Скачать всё';
@override
String discographyDownloadAllSubtitle(int count, int albumCount) {
return '$count треков из $albumCount релизов';
}
@override
String get discographyAlbumsOnly => 'Только альбомы';
@override
String discographyAlbumsOnlySubtitle(int count, int albumCount) {
return '$count треков из $albumCount альбомов';
}
@override
String get discographySinglesOnly => 'Только синглы и EP';
@override
String discographySinglesOnlySubtitle(int count, int albumCount) {
return '$count треков из $albumCount синглов';
}
@override
String get discographySelectAlbums => 'Выбрать альбомы...';
@override
String get discographySelectAlbumsSubtitle =>
'Выберите конкретные альбомы или синглы';
@override
String get discographyFetchingTracks => 'Получение треков...';
@override
String discographyFetchingAlbum(int current, int total) {
return 'Получение $current из $total...';
}
@override
String discographySelectedCount(int count) {
return '$count выбрано';
}
@override
String get discographyDownloadSelected => 'Скачать выбранное';
@override
String discographyAddedToQueue(int count) {
return 'Добавлено $count треков в очередь';
}
@override
String discographySkippedDownloaded(int added, int skipped) {
return '$added добавлено, $skipped уже скачано';
}
@override
String get discographyNoAlbums => 'Нет доступных альбомов';
@override
String get discographyFailedToFetch =>
'Не удалось получить некоторые альбомы';
@override
String get sectionStorageAccess => 'Доступ к хранилищу';
@override
String get allFilesAccess => 'Доступ ко всем файлам';
@override
String get allFilesAccessEnabledSubtitle => 'Можно записать в любую папку';
@override
String get allFilesAccessDisabledSubtitle =>
'Ограничено только папками медиа';
@override
String get allFilesAccessDescription =>
'Включите, если вы сталкиваетесь с ошибками записи при сохранении в пользовательские папки. Android 13+ по умолчанию ограничивает доступ к определенным папкам.';
@override
String get allFilesAccessDeniedMessage =>
'В разрешении отказано. Пожалуйста, включите функцию «Доступ ко всем файлам» в настройках системы.';
@override
String get allFilesAccessDisabledMessage =>
'Доступ ко всем файлам отключен. Приложение будет использовать ограниченный доступ к хранилищу.';
@override
String get settingsLocalLibrary => 'Локальная библиотека';
@override
String get settingsLocalLibrarySubtitle =>
'Сканировать и обнаружить дубликаты';
@override
String get settingsCache => 'Хранилище и кэш';
@override
String get settingsCacheSubtitle => 'Просмотреть размер и очистить кэш';
@override
String get libraryTitle => 'Локальная библиотека';
@override
String get libraryStatus => 'Статус Библиотеки';
@override
String get libraryScanSettings => 'Настройки сканирования';
@override
String get libraryEnableLocalLibrary => 'Включить локальную библиотеку';
@override
String get libraryEnableLocalLibrarySubtitle =>
'Сканировать и отслеживать вашу существующую музыку';
@override
String get libraryFolder => 'Папка библиотеки';
@override
String get libraryFolderHint => 'Нажмите, чтобы выбрать папку';
@override
String get libraryShowDuplicateIndicator => 'Показать индикатор дубликатов';
@override
String get libraryShowDuplicateIndicatorSubtitle =>
'Показать при поиске существующих треков';
@override
String get libraryActions => 'Действия';
@override
String get libraryScan => 'Сканировать библиотеку';
@override
String get libraryScanSubtitle => 'Сканировать аудио файлы';
@override
String get libraryScanSelectFolderFirst => 'Сначала выберите папку';
@override
String get libraryCleanupMissingFiles => 'Очистка отсутствующих файлов';
@override
String get libraryCleanupMissingFilesSubtitle =>
'Удалить записи для файлов, которых больше не существует';
@override
String get libraryClear => 'Очистить библиотеку';
@override
String get libraryClearSubtitle => 'Удалить все сканированные треки';
@override
String get libraryClearConfirmTitle => 'Очистить библиотеку';
@override
String get libraryClearConfirmMessage =>
'Это удалит все сканированные треки из вашей библиотеки. Ваши фактические файлы не будут удалены.';
@override
String get libraryAbout => 'О локальной библиотеке';
@override
String get libraryAboutDescription =>
'Сканирует существующую коллекцию музыки для обнаружения дубликатов при загрузке. Поддерживает форматы FLAC, M4A, MP3, Opus и OGG. Метаданные читаются из тегов файлов, если доступны.';
@override
String libraryTracksCount(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: 'треков',
many: 'треков',
few: 'трека',
one: 'трек',
);
return '$count $_temp0';
}
@override
String libraryLastScanned(String time) {
return 'Последнее сканирование: $time';
}
@override
String get libraryLastScannedNever => 'Никогда';
@override
String get libraryScanning => 'Сканирование...';
@override
String libraryScanProgress(String progress, int total) {
return '$progress% из $total файлов';
}
@override
String get libraryInLibrary => 'В библиотеке';
@override
String libraryRemovedMissingFiles(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: 'отсутствующих файлов',
many: 'отсутствующих файлов',
few: 'трека',
one: 'отсутствующий файл',
);
return 'Удалено $count $_temp0 в библиотеке';
}
@override
String get libraryCleared => 'Библиотека очищена';
@override
String get libraryStorageAccessRequired => 'Требуется доступ к хранилищу';
@override
String get libraryStorageAccessMessage =>
'SpotiFLAC требуется доступ к хранилищу для сканирования вашей библиотеки музыки. Пожалуйста, предоставьте разрешение в настройках.';
@override
String get libraryFolderNotExist => 'Выбранной папки не существует';
@override
String get librarySourceDownloaded => 'Скачанные';
@override
String get librarySourceLocal => 'Локальные';
@override
String get libraryFilterAll => 'Все';
@override
String get libraryFilterDownloaded => 'Скачанные';
@override
String get libraryFilterLocal => 'Локальные';
@override
String get libraryFilterTitle => 'Фильтры';
@override
String get libraryFilterReset => 'Сброс';
@override
String get libraryFilterApply => 'Применить';
@override
String get libraryFilterSource => 'Источник';
@override
String get libraryFilterQuality => 'Качество';
@override
String get libraryFilterQualityHiRes => 'Hi-Res (24 бит)';
@override
String get libraryFilterQualityCD => 'CD (16 бит)';
@override
String get libraryFilterQualityLossy => 'С потерями';
@override
String get libraryFilterFormat => 'Формат';
@override
String get libraryFilterDate => 'Дата добавления';
@override
String get libraryFilterDateToday => 'Сегодня';
@override
String get libraryFilterDateWeek => 'На этой неделе';
@override
String get libraryFilterDateMonth => 'В этом месяце';
@override
String get libraryFilterDateYear => 'В этом году';
@override
String get libraryFilterSort => 'Сортировка';
@override
String get libraryFilterSortLatest => 'Последние';
@override
String get libraryFilterSortOldest => 'Старые';
@override
String libraryFilterActive(int count) {
return '$count фильтр(-ов) активно';
}
@override
String get timeJustNow => 'Только что';
@override
String timeMinutesAgo(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$count минут',
many: '$count минут',
few: '$count минуты',
one: '$count минуту',
);
return '$_temp0 назад';
}
@override
String timeHoursAgo(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$count часов',
many: '$count часов',
few: '$count часа',
one: '$count час',
);
return '$_temp0 назад';
}
@override
String get storageSwitchTitle => 'Сменить режим хранения';
@override
String get storageSwitchToSafTitle => 'Переключиться на SAF хранилище?';
@override
String get storageSwitchToAppTitle => 'Переключиться хранилище приложения?';
@override
String get storageSwitchToSafMessage =>
'Ваши скачанные файлы останутся в текущем расположении и будут доступны.\n\nНовые файлы будут сохранены в выбранной вами папке SAF.';
@override
String get storageSwitchToAppMessage =>
'Ваши скачанные файлы останутся в текущем выбранной вами папке SAF.\n\nНовые файлы будут сохранены в папке Music/SpotiFLAC.';
@override
String get storageSwitchExistingDownloads => 'Существующие загрузки';
@override
String storageSwitchExistingDownloadsInfo(int count, String mode) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$count треков',
many: '$count треков',
few: '$count трека',
one: '$count трек',
);
return '$_temp0 в $mode хранилище';
}
@override
String get storageSwitchNewDownloads => 'Новые загрузки';
@override
String storageSwitchNewDownloadsLocation(String location) {
return 'Будет сохранено в: $location';
}
@override
String get storageSwitchContinue => 'Продолжить';
@override
String get storageSwitchSelectFolder => 'Выберите папку SAF';
@override
String get storageAppStorage => 'Хранилище приложения';
@override
String get storageSafStorage => 'Хранилище SAF';
@override
String storageModeBadge(String mode) {
return 'Хранилище: $mode';
}
@override
String get storageStatsTitle => 'Статистика хранилища';
@override
String storageStatsAppCount(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$count треков',
many: '$count треков',
few: '$count трека',
one: '$count трек',
);
return '$_temp0 в хранилище приложения';
}
@override
String storageStatsSafCount(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$count треков',
many: '$count треков',
few: '$count трека',
one: '$count трек',
);
return '$_temp0 в вашей папке в SAF';
}
@override
String get storageModeInfo => 'Ваши файлы хранятся в нескольких местах';
@override
String get tutorialWelcomeTitle => 'Добро пожаловать в SpotiFLAC!';
@override
String get tutorialWelcomeDesc =>
'Давайте научимся скачивать свою любимую музыку в качестве без потерь. В этом кратком руководстве мы покажем вам основы.';
@override
String get tutorialWelcomeTip1 =>
'Скачивайте музыку из Spotify, Deezer, или вставьте любой поддерживаемый URL';
@override
String get tutorialWelcomeTip2 =>
'Скачайте FLAC с Tidal, Qobuz или Amazon Music';
@override
String get tutorialWelcomeTip3 =>
'Автоматическое встраивание метаданных, обложек и текстов песен';
@override
String get tutorialSearchTitle => 'Поиск музыки';
@override
String get tutorialSearchDesc =>
'Есть два простых способа найти музыку, которую вы хотите скачать.';
@override
String get tutorialSearchTip1 =>
'Вставьте ссылку Spotify или Deezer прямо в поле поиска';
@override
String get tutorialSearchTip2 =>
'Или введите название песни, исполнителя или альбом для поиска';
@override
String get tutorialSearchTip3 =>
'Поддержка треков, альбомов, плейлистов и страниц исполнителей';
@override
String get tutorialDownloadTitle => 'Скачивание музыки';
@override
String get tutorialDownloadDesc =>
'Скачивание музыки просто и быстро. Вот как это работает.';
@override
String get tutorialDownloadTip1 =>
'Нажмите кнопку скачать рядом с любым треком, чтобы начать скачивание';
@override
String get tutorialDownloadTip2 =>
'Выберите предпочитаемое качество (FLAC, Hi-Res или MP3)';
@override
String get tutorialDownloadTip3 =>
'Скачать все альбомы или плейлисты одним нажатием';
@override
String get tutorialLibraryTitle => 'Ваша библиотека';
@override
String get tutorialLibraryDesc =>
'Вся скачанная музыка организована во вкладке Библиотека.';
@override
String get tutorialLibraryTip1 =>
'Просмотр прогресса загрузки и очереди на вкладке Библиотека';
@override
String get tutorialLibraryTip2 =>
'Нажмите на любой трек, чтобы воспроизвести его с помощью вашего музыкального плеера';
@override
String get tutorialLibraryTip3 =>
'Переключение между списком и сеткой для лучшего просмотра';
@override
String get tutorialExtensionsTitle => 'Расширения';
@override
String get tutorialExtensionsDesc =>
'Расширьте возможности приложения с расширениями от сообщества.';
@override
String get tutorialExtensionsTip1 =>
'Browse the Store tab to discover useful extensions';
@override
String get tutorialExtensionsTip2 =>
'Добавить новых поставщиков загрузок или поиска';
@override
String get tutorialExtensionsTip3 =>
'Get lyrics, enhanced metadata, and more features';
@override
String get tutorialSettingsTitle => 'Настройте приложение под себя';
@override
String get tutorialSettingsDesc =>
'Personalize the app in Settings to match your preferences.';
@override
String get tutorialSettingsTip1 =>
'Изменить местоположение и организацию папок для скачивания';
@override
String get tutorialSettingsTip2 =>
'Настройте качество и формата аудиофайла по умолчанию';
@override
String get tutorialSettingsTip3 => 'Настроить тему и внешний вид приложения';
@override
String get tutorialReadyMessage =>
'Всё готово! Начните загружать любимую музыку прямо сейчас.';
@override
String get tutorialExample => 'EXAMPLE';
@override
String get libraryForceFullScan => 'Полное сканирование';
@override
String get libraryForceFullScanSubtitle =>
'Пересканировать все файлы, игнорировать кэш';
@override
String get cleanupOrphanedDownloads => 'Cleanup Orphaned Downloads';
@override
String get cleanupOrphanedDownloadsSubtitle =>
'Remove history entries for files that no longer exist';
@override
String cleanupOrphanedDownloadsResult(int count) {
return 'Removed $count orphaned entries from history';
}
@override
String get cleanupOrphanedDownloadsNone => 'No orphaned entries found';
@override
String get cacheTitle => 'Хранилище и кэш';
@override
String get cacheSummaryTitle => 'Просмотр кэша';
@override
String get cacheSummarySubtitle =>
'Clearing cache will not remove downloaded music files.';
@override
String cacheEstimatedTotal(String size) {
return 'Estimated cache usage: $size';
}
@override
String get cacheSectionStorage => 'Кэшированные данные';
@override
String get cacheSectionMaintenance => 'Maintenance';
@override
String get cacheAppDirectory => 'Папка кэша приложения';
@override
String get cacheAppDirectoryDesc =>
'HTTP responses, WebView data, and other temporary app data.';
@override
String get cacheTempDirectory => 'Temporary directory';
@override
String get cacheTempDirectoryDesc =>
'Temporary files from downloads and audio conversion.';
@override
String get cacheCoverImage => 'Cover image cache';
@override
String get cacheCoverImageDesc =>
'Downloaded album and track cover art. Will re-download when viewed.';
@override
String get cacheLibraryCover => 'Library cover cache';
@override
String get cacheLibraryCoverDesc =>
'Cover art extracted from local music files. Will re-extract on next scan.';
@override
String get cacheExploreFeed => 'Explore feed cache';
@override
String get cacheExploreFeedDesc =>
'Explore tab content (new releases, trending). Will refresh on next visit.';
@override
String get cacheTrackLookup => 'Track lookup cache';
@override
String get cacheTrackLookupDesc =>
'Spotify/Deezer track ID lookups. Clearing may slow next few searches.';
@override
String get cacheCleanupUnusedDesc =>
'Remove orphaned download history and library entries for missing files.';
@override
String get cacheNoData => 'Нет кэшированных данных';
@override
String cacheSizeWithFiles(String size, int count) {
return '$size в $count файлах';
}
@override
String cacheSizeOnly(String size) {
return '$size';
}
@override
String cacheEntries(int count) {
return '$count entries';
}
@override
String cacheClearSuccess(String target) {
return 'Очищено: $target';
}
@override
String get cacheClearConfirmTitle => 'Очистить кэш?';
@override
String cacheClearConfirmMessage(String target) {
return 'This will clear cached data for $target. Downloaded music files will not be deleted.';
}
@override
String get cacheClearAllConfirmTitle => 'Очистить весь кэш?';
@override
String get cacheClearAllConfirmMessage =>
'Это очистит все категории кэша на этой странице. Скачанные музыкальные файлы не будут удалены.';
@override
String get cacheClearAll => 'Очистить весь кэш';
@override
String get cacheCleanupUnused => 'Очистка неиспользуемых данных';
@override
String get cacheCleanupUnusedSubtitle =>
'Remove orphaned download history and missing library entries';
@override
String cacheCleanupResult(int downloadCount, int libraryCount) {
return 'Cleanup completed: $downloadCount orphaned downloads, $libraryCount missing library entries';
}
@override
String get cacheRefreshStats => 'Обновить статистику';
@override
String get trackSaveCoverArt => 'Сохранить обложку';
@override
String get trackSaveCoverArtSubtitle => 'Сохранить обложку как файл .jpg';
@override
String get trackSaveLyrics => 'Сохранить текст (.lrc)';
@override
String get trackSaveLyricsSubtitle =>
'Получить и сохранить текст песни в формате .lrc';
@override
String get trackSaveLyricsProgress => 'Saving lyrics...';
@override
String get trackReEnrich => 'Re-enrich Metadata';
@override
String get trackReEnrichSubtitle =>
'Re-embed metadata without re-downloading';
@override
String get trackReEnrichOnlineSubtitle =>
'Search metadata online and embed into file';
@override
String get trackEditMetadata => 'Редактировать метаданные';
@override
String trackCoverSaved(String fileName) {
return 'Обложка сохранена в $fileName';
}
@override
String get trackCoverNoSource => 'Нет доступных источников обложки';
@override
String trackLyricsSaved(String fileName) {
return 'Текст песни сохранен в $fileName';
}
@override
String get trackReEnrichProgress => 'Re-enriching metadata...';
@override
String get trackReEnrichSearching => 'Поиск метаданных в сети...';
@override
String get trackReEnrichSuccess => 'Metadata re-enriched successfully';
@override
String get trackReEnrichFfmpegFailed =>
'Ошибка встраивания метаданных FFmpeg';
@override
String trackSaveFailed(String error) {
return 'Ошибка: $error';
}
@override
String get trackConvertFormat => 'Convert Format';
@override
String get trackConvertFormatSubtitle => 'Convert to MP3 or Opus';
@override
String get trackConvertTitle => 'Convert Audio';
@override
String get trackConvertTargetFormat => 'Target Format';
@override
String get trackConvertBitrate => 'Bitrate';
@override
String get trackConvertConfirmTitle => 'Confirm Conversion';
@override
String trackConvertConfirmMessage(
String sourceFormat,
String targetFormat,
String bitrate,
) {
return 'Convert from $sourceFormat to $targetFormat at $bitrate?\n\nThe original file will be deleted after conversion.';
}
@override
String get trackConvertConverting => 'Converting audio...';
@override
String trackConvertSuccess(String format) {
return 'Converted to $format successfully';
}
@override
String get trackConvertFailed => 'Conversion failed';
}