SpotiFLAC-Mobile/lib/l10n/app_localizations_ru.dart
zarzet 1546d7da22
feat: add external LRC lyrics file support and fix locale parsing
- Add lyrics mode setting (embed/external/both) for saving lyrics
- Implement SaveLRCFile() in Go backend for all providers (Tidal, Qobuz, Amazon)
- Fix locale parsing in app.dart to handle country codes (e.g., pt_PT -> Locale('pt', 'PT'))
- Change Portuguese label from Portugal to Brasil in language settings
2026-01-19 18:57:27 +07:00

2098 lines
61 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 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 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 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 => 'Translators';
@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 aboutSupport => 'Поддержка';
@override
String get aboutBuyMeCoffee => 'Купить мне кофе';
@override
String get aboutBuyMeCoffeeSubtitle => 'Поддержать разработку на Ko-fi';
@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 aboutDoubleDouble => 'DoubleDouble';
@override
String get aboutDoubleDoubleDesc =>
'Удивительный API для загрузок Amazon Music. Спасибо за то, что сделали это бесплатно!';
@override
String get aboutDabMusic => 'DAB Music';
@override
String get aboutDabMusicDesc =>
'Лучший API для стриминга Qobuz. Без него загрузка файлов в высоком разрешении была бы невозможна!';
@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 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 snackbarAddedToQueue(String trackName) {
return '\"$trackName\" добавлен в очередь';
}
@override
String snackbarAddedTracksToQueue(int count) {
return 'Добавлено $count треков в очередь';
}
@override
String snackbarAlreadyDownloaded(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 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 => 'Lyrics';
@override
String get lyricsMode => 'Lyrics Mode';
@override
String get lyricsModeDescription =>
'Choose how lyrics are saved with your downloads';
@override
String get lyricsModeEmbed => 'Embed in file';
@override
String get lyricsModeEmbedSubtitle => 'Lyrics stored inside FLAC metadata';
@override
String get lyricsModeExternal => 'External .lrc file';
@override
String get lyricsModeExternalSubtitle =>
'Separate .lrc file for players like Samsung Music';
@override
String get lyricsModeBoth => 'Both';
@override
String get lyricsModeBothSubtitle => 'Embed and save .lrc file';
@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 trackDownloaded => 'Скачано';
@override
String get trackCopyLyrics => 'Копировать текст';
@override
String get trackLyricsNotAvailable =>
'Текст песни недоступен для этого трека';
@override
String get trackLyricsTimeout =>
'Время ожидания запроса истекло. Повторите попытку позже.';
@override
String get trackLyricsLoadFailed => 'Не удалось загрузить текст песни';
@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 qualityMp3 => 'MP3';
@override
String get qualityMp3Subtitle => '320kbps (converted from FLAC)';
@override
String get enableMp3Option => 'Enable MP3 Option';
@override
String get enableMp3OptionSubtitleOn => 'MP3 quality option is available';
@override
String get enableMp3OptionSubtitleOff =>
'Downloads FLAC then converts to 320kbps MP3';
@override
String get qualityNote =>
'Фактическое качество зависит от доступности треков в сервисе';
@override
String get downloadAskBeforeDownload => 'Спрашивать перед скачиванием';
@override
String get downloadDirectory => 'Папка для скачивания';
@override
String get downloadSeparateSinglesFolder => 'Отдельная папка для синглов';
@override
String get downloadAlbumFolderStructure => 'Структура папок альбома';
@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 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 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 'Disc $discNumber';
}
@override
String get utilityFunctions => 'Функции утилиты';
@override
String get recentTypeArtist => 'Исполнитель';
@override
String get recentTypeAlbum => 'Альбом';
@override
String get recentTypeSong => 'Песня';
@override
String get recentTypePlaylist => 'Плейлист';
@override
String recentPlaylistInfo(String name) {
return 'Плейлист: $name';
}
@override
String errorGeneric(String message) {
return 'Ошибка: $message';
}
}