diff --git a/CHANGELOG.md b/CHANGELOG.md index 011557b5..cc2f1167 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,24 @@ # Changelog +## [3.4.0] - 2026-02-03 + +### Added + +- **Cloud Upload with WebDAV & SFTP**: Automatically upload downloaded files to your NAS or cloud storage + - Full WebDAV support (Synology DSM, Nextcloud, QNAP, ownCloud) + - Full SFTP support (any SSH server with SFTP enabled) + - Connection test with detailed error messages + - Upload queue with progress tracking + - Retry failed uploads and clear completed items + - Recent uploads list in Cloud Save settings + +### Dependencies + +- Added `webdav_client: ^1.2.2` for WebDAV protocol support +- Added `dartssh2: ^2.13.0` for SFTP protocol support + +--- + ## [3.3.6] - 2026-02-02 ### Added diff --git a/lib/constants/app_info.dart b/lib/constants/app_info.dart index ac6debde..f33f4ecc 100644 --- a/lib/constants/app_info.dart +++ b/lib/constants/app_info.dart @@ -1,8 +1,8 @@ /// App version and info constants /// Update version here only - all other files will reference this class AppInfo { - static const String version = '3.3.6'; - static const String buildNumber = '71'; + static const String version = '3.4.0'; + static const String buildNumber = '72'; static const String fullVersion = '$version+$buildNumber'; diff --git a/lib/l10n/app_localizations.dart b/lib/l10n/app_localizations.dart index f44bf75b..e28782fd 100644 --- a/lib/l10n/app_localizations.dart +++ b/lib/l10n/app_localizations.dart @@ -73,7 +73,8 @@ import 'app_localizations_zh.dart'; /// be consistent with the languages listed in the AppLocalizations.supportedLocales /// property. abstract class AppLocalizations { - AppLocalizations(String locale) : localeName = intl.Intl.canonicalizedLocale(locale.toString()); + AppLocalizations(String locale) + : localeName = intl.Intl.canonicalizedLocale(locale.toString()); final String localeName; @@ -81,7 +82,8 @@ abstract class AppLocalizations { return Localizations.of(context, AppLocalizations)!; } - static const LocalizationsDelegate delegate = _AppLocalizationsDelegate(); + static const LocalizationsDelegate delegate = + _AppLocalizationsDelegate(); /// A list of this localizations delegate along with the default localizations /// delegates. @@ -93,12 +95,13 @@ abstract class AppLocalizations { /// Additional delegates can be added by appending to this list in /// MaterialApp. This list does not have to be used at all if a custom list /// of delegates is preferred or required. - static const List> localizationsDelegates = >[ - delegate, - GlobalMaterialLocalizations.delegate, - GlobalCupertinoLocalizations.delegate, - GlobalWidgetsLocalizations.delegate, - ]; + static const List> localizationsDelegates = + >[ + delegate, + GlobalMaterialLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, + ]; /// A list of this localizations delegate's supported locales. static const List supportedLocales = [ @@ -118,7 +121,7 @@ abstract class AppLocalizations { Locale('tr'), Locale('zh'), Locale('zh', 'CN'), - Locale('zh', 'TW') + Locale('zh', 'TW'), ]; /// App name - DO NOT TRANSLATE @@ -3805,6 +3808,30 @@ abstract class AppLocalizations { /// **'Downloaded files will be automatically uploaded to your cloud storage after download completes. Original files are kept on your device.'** String get cloudSettingsInfo; + /// Section header for upload queue status + /// + /// In en, this message translates to: + /// **'Upload Queue'** + String get cloudSettingsUploadQueue; + + /// Button to retry failed uploads + /// + /// In en, this message translates to: + /// **'Retry Failed'** + String get cloudSettingsRetryFailed; + + /// Button to clear completed uploads + /// + /// In en, this message translates to: + /// **'Clear Done'** + String get cloudSettingsClearDone; + + /// Section header for recent uploads list + /// + /// In en, this message translates to: + /// **'Recent Uploads'** + String get cloudSettingsRecentUploads; + /// Empty queue state title /// /// In en, this message translates to: @@ -4160,7 +4187,8 @@ abstract class AppLocalizations { String get allFilesAccessDisabledMessage; } -class _AppLocalizationsDelegate extends LocalizationsDelegate { +class _AppLocalizationsDelegate + extends LocalizationsDelegate { const _AppLocalizationsDelegate(); @override @@ -4169,58 +4197,91 @@ class _AppLocalizationsDelegate extends LocalizationsDelegate } @override - bool isSupported(Locale locale) => ['de', 'en', 'es', 'fr', 'hi', 'id', 'ja', 'ko', 'nl', 'pt', 'ru', 'tr', 'zh'].contains(locale.languageCode); + bool isSupported(Locale locale) => [ + 'de', + 'en', + 'es', + 'fr', + 'hi', + 'id', + 'ja', + 'ko', + 'nl', + 'pt', + 'ru', + 'tr', + 'zh', + ].contains(locale.languageCode); @override bool shouldReload(_AppLocalizationsDelegate old) => false; } AppLocalizations lookupAppLocalizations(Locale locale) { - // Lookup logic when language+country codes are specified. switch (locale.languageCode) { - case 'es': { - switch (locale.countryCode) { - case 'ES': return AppLocalizationsEsEs(); - } - break; - } - case 'pt': { - switch (locale.countryCode) { - case 'PT': return AppLocalizationsPtPt(); - } - break; - } - case 'zh': { - switch (locale.countryCode) { - case 'CN': return AppLocalizationsZhCn(); -case 'TW': return AppLocalizationsZhTw(); - } - break; - } + case 'es': + { + switch (locale.countryCode) { + case 'ES': + return AppLocalizationsEsEs(); + } + break; + } + case 'pt': + { + switch (locale.countryCode) { + case 'PT': + return AppLocalizationsPtPt(); + } + break; + } + case 'zh': + { + switch (locale.countryCode) { + case 'CN': + return AppLocalizationsZhCn(); + case 'TW': + return AppLocalizationsZhTw(); + } + break; + } } // Lookup logic when only language code is specified. switch (locale.languageCode) { - case 'de': return AppLocalizationsDe(); - case 'en': return AppLocalizationsEn(); - case 'es': return AppLocalizationsEs(); - case 'fr': return AppLocalizationsFr(); - case 'hi': return AppLocalizationsHi(); - case 'id': return AppLocalizationsId(); - case 'ja': return AppLocalizationsJa(); - case 'ko': return AppLocalizationsKo(); - case 'nl': return AppLocalizationsNl(); - case 'pt': return AppLocalizationsPt(); - case 'ru': return AppLocalizationsRu(); - case 'tr': return AppLocalizationsTr(); - case 'zh': return AppLocalizationsZh(); + case 'de': + return AppLocalizationsDe(); + case 'en': + return AppLocalizationsEn(); + case 'es': + return AppLocalizationsEs(); + case 'fr': + return AppLocalizationsFr(); + case 'hi': + return AppLocalizationsHi(); + case 'id': + return AppLocalizationsId(); + case 'ja': + return AppLocalizationsJa(); + case 'ko': + return AppLocalizationsKo(); + case 'nl': + return AppLocalizationsNl(); + case 'pt': + return AppLocalizationsPt(); + case 'ru': + return AppLocalizationsRu(); + case 'tr': + return AppLocalizationsTr(); + case 'zh': + return AppLocalizationsZh(); } throw FlutterError( 'AppLocalizations.delegate failed to load unsupported locale "$locale". This is likely ' 'an issue with the localizations generation tool. Please file an issue ' 'on GitHub with a reproducible sample app and the gen-l10n configuration ' - 'that was used.' + 'that was used.', ); } diff --git a/lib/l10n/app_localizations_de.dart b/lib/l10n/app_localizations_de.dart index 7c303009..c86c18f5 100644 --- a/lib/l10n/app_localizations_de.dart +++ b/lib/l10n/app_localizations_de.dart @@ -12,7 +12,8 @@ class AppLocalizationsDe extends AppLocalizations { String get appName => 'SpotiFLAC'; @override - String get appDescription => 'Laden Sie Spotify-Titel in verlustfreier Qualität von Tidal, Qobuz und Amazon Music herunter.'; + String get appDescription => + 'Laden Sie Spotify-Titel in verlustfreier Qualität von Tidal, Qobuz und Amazon Music herunter.'; @override String get navHome => 'Startseite'; @@ -41,7 +42,8 @@ class AppLocalizationsDe extends AppLocalizations { String get homeSubtitle => 'Spotify-Link einfügen oder nach Namen suchen'; @override - String get homeSupports => 'Unterstützt: Titel, Album, Playlist, Künstler-URLs'; + String get homeSupports => + 'Unterstützt: Titel, Album, Playlist, Künstler-URLs'; @override String get homeRecent => 'Zuletzt'; @@ -92,19 +94,22 @@ class AppLocalizationsDe extends AppLocalizations { String get historyNoDownloads => 'Kein Download-Verlauf'; @override - String get historyNoDownloadsSubtitle => 'Heruntergeladene Titel werden hier angezeigt'; + String get historyNoDownloadsSubtitle => + 'Heruntergeladene Titel werden hier angezeigt'; @override String get historyNoAlbums => 'Keine Album-Downloads'; @override - String get historyNoAlbumsSubtitle => 'Laden Sie mehrere Titel eines Albums herunter, um sie hier zu sehen'; + String get historyNoAlbumsSubtitle => + 'Laden Sie mehrere Titel eines Albums herunter, um sie hier zu sehen'; @override String get historyNoSingles => 'Keine Einzel-Downloads'; @override - String get historyNoSinglesSubtitle => 'Einzelne Titel-Downloads werden hier angezeigt'; + String get historyNoSinglesSubtitle => + 'Einzelne Titel-Downloads werden hier angezeigt'; @override String get historySearchHint => 'Suchverlauf...'; @@ -134,7 +139,8 @@ class AppLocalizationsDe extends AppLocalizations { String get downloadLocation => 'Download-Speicherort'; @override - String get downloadLocationSubtitle => 'Wählen Sie den Speicherort für Dateien'; + String get downloadLocationSubtitle => + 'Wählen Sie den Speicherort für Dateien'; @override String get downloadLocationDefault => 'Standard-Speicherort'; @@ -152,7 +158,8 @@ class AppLocalizationsDe extends AppLocalizations { String get downloadAskQuality => 'Qualität vor Download abfragen'; @override - String get downloadAskQualitySubtitle => 'Qualitätsauswahl für jeden Download anzeigen'; + String get downloadAskQualitySubtitle => + 'Qualitätsauswahl für jeden Download anzeigen'; @override String get downloadFilenameFormat => 'Dateinamenformat'; @@ -164,7 +171,8 @@ class AppLocalizationsDe extends AppLocalizations { String get downloadSeparateSingles => 'Singles trennen'; @override - String get downloadSeparateSinglesSubtitle => 'Einzelne Titel in separatem Ordner speichern'; + String get downloadSeparateSinglesSubtitle => + 'Einzelne Titel in separatem Ordner speichern'; @override String get qualityBest => 'Beste Qualität'; @@ -197,7 +205,8 @@ class AppLocalizationsDe extends AppLocalizations { String get appearanceDynamicColor => 'Dynamische Farben'; @override - String get appearanceDynamicColorSubtitle => 'Farben von Ihrem Hintergrundbild verwenden'; + String get appearanceDynamicColorSubtitle => + 'Farben von Ihrem Hintergrundbild verwenden'; @override String get appearanceAccentColor => 'Akzentfarbe'; @@ -221,7 +230,8 @@ class AppLocalizationsDe extends AppLocalizations { String get optionsPrimaryProvider => 'Primärer Anbieter'; @override - String get optionsPrimaryProviderSubtitle => 'Dienst für die Suche nach Titelnamen.'; + String get optionsPrimaryProviderSubtitle => + 'Dienst für die Suche nach Titelnamen.'; @override String optionsUsingExtension(String extensionName) { @@ -229,34 +239,40 @@ class AppLocalizationsDe extends AppLocalizations { } @override - String get optionsSwitchBack => 'Tippen Sie auf Deezer oder Spotify, um von der Erweiterung zurückzuwechseln'; + String get optionsSwitchBack => + 'Tippen Sie auf Deezer oder Spotify, um von der Erweiterung zurückzuwechseln'; @override String get optionsAutoFallback => 'Automatischer Fallback'; @override - String get optionsAutoFallbackSubtitle => 'Andere Dienste versuchen, wenn Download fehlschlägt'; + String get optionsAutoFallbackSubtitle => + 'Andere Dienste versuchen, wenn Download fehlschlägt'; @override String get optionsUseExtensionProviders => 'Erweiterungs-Anbieter verwenden'; @override - String get optionsUseExtensionProvidersOn => 'Erweiterungen werden zuerst versucht'; + String get optionsUseExtensionProvidersOn => + 'Erweiterungen werden zuerst versucht'; @override - String get optionsUseExtensionProvidersOff => 'Nur integrierte Anbieter verwenden'; + String get optionsUseExtensionProvidersOff => + 'Nur integrierte Anbieter verwenden'; @override String get optionsEmbedLyrics => 'Liedtexte einbetten'; @override - String get optionsEmbedLyricsSubtitle => 'Synchronisierte Liedtexte in FLAC-Dateien einbetten'; + String get optionsEmbedLyricsSubtitle => + 'Synchronisierte Liedtexte in FLAC-Dateien einbetten'; @override String get optionsMaxQualityCover => 'Maximale Cover-Qualität'; @override - String get optionsMaxQualityCoverSubtitle => 'Cover in höchster Auflösung herunterladen'; + String get optionsMaxQualityCoverSubtitle => + 'Cover in höchster Auflösung herunterladen'; @override String get optionsConcurrentDownloads => 'Parallele Downloads'; @@ -270,19 +286,22 @@ class AppLocalizationsDe extends AppLocalizations { } @override - String get optionsConcurrentWarning => 'Parallele Downloads können Ratenlimitierung auslösen'; + String get optionsConcurrentWarning => + 'Parallele Downloads können Ratenlimitierung auslösen'; @override String get optionsExtensionStore => 'Erweiterungs-Store'; @override - String get optionsExtensionStoreSubtitle => 'Store-Tab in Navigation anzeigen'; + String get optionsExtensionStoreSubtitle => + 'Store-Tab in Navigation anzeigen'; @override String get optionsCheckUpdates => 'Nach Updates suchen'; @override - String get optionsCheckUpdatesSubtitle => 'Benachrichtigen, wenn neue Version verfügbar'; + String get optionsCheckUpdatesSubtitle => + 'Benachrichtigen, wenn neue Version verfügbar'; @override String get optionsUpdateChannel => 'Update-Kanal'; @@ -294,19 +313,22 @@ class AppLocalizationsDe extends AppLocalizations { String get optionsUpdateChannelPreview => 'Vorschau-Versionen erhalten'; @override - String get optionsUpdateChannelWarning => 'Vorschau kann Fehler oder unvollständige Funktionen enthalten'; + String get optionsUpdateChannelWarning => + 'Vorschau kann Fehler oder unvollständige Funktionen enthalten'; @override String get optionsClearHistory => 'Download-Verlauf löschen'; @override - String get optionsClearHistorySubtitle => 'Alle heruntergeladenen Titel aus dem Verlauf entfernen'; + String get optionsClearHistorySubtitle => + 'Alle heruntergeladenen Titel aus dem Verlauf entfernen'; @override String get optionsDetailedLogging => 'Detaillierte Protokollierung'; @override - String get optionsDetailedLoggingOn => 'Detaillierte Protokolle werden aufgezeichnet'; + String get optionsDetailedLoggingOn => + 'Detaillierte Protokolle werden aufgezeichnet'; @override String get optionsDetailedLoggingOff => 'Für Fehlerberichte aktivieren'; @@ -320,10 +342,12 @@ class AppLocalizationsDe extends AppLocalizations { } @override - String get optionsSpotifyCredentialsRequired => 'Erforderlich - zum Konfigurieren tippen'; + String get optionsSpotifyCredentialsRequired => + 'Erforderlich - zum Konfigurieren tippen'; @override - String get optionsSpotifyWarning => 'Spotify erfordert eigene API-Anmeldedaten. Kostenlos erhältlich auf developer.spotify.com'; + String get optionsSpotifyWarning => + 'Spotify erfordert eigene API-Anmeldedaten. Kostenlos erhältlich auf developer.spotify.com'; @override String get extensionsTitle => 'Erweiterungen'; @@ -335,7 +359,8 @@ class AppLocalizationsDe extends AppLocalizations { String get extensionsNone => 'Keine Erweiterungen installiert'; @override - String get extensionsNoneSubtitle => 'Erweiterungen aus dem Store-Tab installieren'; + String get extensionsNoneSubtitle => + 'Erweiterungen aus dem Store-Tab installieren'; @override String get extensionsEnabled => 'Aktiviert'; @@ -387,7 +412,8 @@ class AppLocalizationsDe extends AppLocalizations { String get aboutOriginalCreator => 'Schöpfer des ursprünglichen SpotiFLAC'; @override - String get aboutLogoArtist => 'Der talentierte Künstler, der unser wunderschönes App-Logo entworfen hat!'; + String get aboutLogoArtist => + 'Der talentierte Künstler, der unser wunderschönes App-Logo entworfen hat!'; @override String get aboutTranslators => 'Übersetzer'; @@ -408,13 +434,15 @@ class AppLocalizationsDe extends AppLocalizations { String get aboutReportIssue => 'Problem melden'; @override - String get aboutReportIssueSubtitle => 'Melde jedes Problem, die dir auftreten'; + String get aboutReportIssueSubtitle => + 'Melde jedes Problem, die dir auftreten'; @override String get aboutFeatureRequest => 'Feature vorschlagen'; @override - String get aboutFeatureRequestSubtitle => 'Schlage neue Funktionen für die App vor'; + String get aboutFeatureRequestSubtitle => + 'Schlage neue Funktionen für die App vor'; @override String get aboutTelegramChannel => 'Telegram Kanal'; @@ -438,7 +466,8 @@ class AppLocalizationsDe extends AppLocalizations { String get aboutBuyMeCoffee => 'Spendiere mir einen Kaffee'; @override - String get aboutBuyMeCoffeeSubtitle => 'Unterstütze die Entwicklung auf Ko-fi'; + String get aboutBuyMeCoffeeSubtitle => + 'Unterstütze die Entwicklung auf Ko-fi'; @override String get aboutApp => 'App'; @@ -447,28 +476,34 @@ class AppLocalizationsDe extends AppLocalizations { String get aboutVersion => 'Version'; @override - String get aboutBinimumDesc => 'Der Schöpfer der QQDL & HiFi API. Ohne diese API gäbe es keine Tidal-Downloads!'; + String get aboutBinimumDesc => + 'Der Schöpfer der QQDL & HiFi API. Ohne diese API gäbe es keine Tidal-Downloads!'; @override - String get aboutSachinsenalDesc => 'Der ursprüngliche Entwickler des HiFi-Projekts. Die Grundlage der Tidal-Integration!'; + String get aboutSachinsenalDesc => + 'Der ursprüngliche Entwickler des HiFi-Projekts. Die Grundlage der Tidal-Integration!'; @override - String get aboutSjdonadoDesc => 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; + String get aboutSjdonadoDesc => + 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; @override String get aboutDoubleDouble => 'DoubleDouble'; @override - String get aboutDoubleDoubleDesc => 'Wundervolle API für Amazon Music Downloads.\nVielen Dank, dass Sie sie kostenlos zur Verfügung stellen!'; + String get aboutDoubleDoubleDesc => + 'Wundervolle API für Amazon Music Downloads.\nVielen Dank, dass Sie sie kostenlos zur Verfügung stellen!'; @override String get aboutDabMusic => 'DAB Music'; @override - String get aboutDabMusicDesc => 'Die beste Qobuz-Streaming-API. Hi-Res-Downloads wären ohne diese nicht möglich!'; + String get aboutDabMusicDesc => + 'Die beste Qobuz-Streaming-API. Hi-Res-Downloads wären ohne diese nicht möglich!'; @override - String get aboutAppDescription => 'Lade Spotify-Titel in verlustfreier Qualität von Tidal, Qobuz und Amazon Music herunter.'; + String get aboutAppDescription => + 'Lade Spotify-Titel in verlustfreier Qualität von Tidal, Qobuz und Amazon Music herunter.'; @override String get albumTitle => 'Album'; @@ -573,7 +608,8 @@ class AppLocalizationsDe extends AppLocalizations { String get setupStoragePermission => 'Speicherberechtigung'; @override - String get setupStoragePermissionSubtitle => 'Benötigt um heruntergeladene Dateien zu Speichern'; + String get setupStoragePermissionSubtitle => + 'Benötigt um heruntergeladene Dateien zu Speichern'; @override String get setupStoragePermissionGranted => 'Berechtigung erteilt'; @@ -600,16 +636,19 @@ class AppLocalizationsDe extends AppLocalizations { String get setupStorageAccessRequired => 'Speicherzugriff erforderlich'; @override - String get setupStorageAccessMessage => 'SpotiFLAC benötigt die Berechtigung \"Auf alle Dateien zugreifen\", um Musikdateien in deinen gewählten Ordner zu speichern.'; + String get setupStorageAccessMessage => + 'SpotiFLAC benötigt die Berechtigung \"Auf alle Dateien zugreifen\", um Musikdateien in deinen gewählten Ordner zu speichern.'; @override - String get setupStorageAccessMessageAndroid11 => 'Android 11+ benötigt die Berechtigung „Auf alle Dateien“, um Dateien im ausgewählten Download-Ordner zu speichern.'; + String get setupStorageAccessMessageAndroid11 => + 'Android 11+ benötigt die Berechtigung „Auf alle Dateien“, um Dateien im ausgewählten Download-Ordner zu speichern.'; @override String get setupOpenSettings => 'Einstellungen öffnen'; @override - String get setupPermissionDeniedMessage => 'Berechtigung verweigert. Bitte erteilen Sie alle Berechtigungen um fortzufahren.'; + String get setupPermissionDeniedMessage => + 'Berechtigung verweigert. Bitte erteilen Sie alle Berechtigungen um fortzufahren.'; @override String setupPermissionRequired(String permissionType) { @@ -628,7 +667,8 @@ class AppLocalizationsDe extends AppLocalizations { String get setupUseDefaultFolder => 'Als Standardordner verwenden?'; @override - String get setupNoFolderSelected => 'Kein Ordner ausgewählt. Soll der Standard-Musikordner verwendet werden?'; + String get setupNoFolderSelected => + 'Kein Ordner ausgewählt. Soll der Standard-Musikordner verwendet werden?'; @override String get setupUseDefault => 'Standart benutzen'; @@ -637,25 +677,30 @@ class AppLocalizationsDe extends AppLocalizations { String get setupDownloadLocationTitle => 'Speicherort'; @override - String get setupDownloadLocationIosMessage => 'Auf iOS werden Downloads im Dokumentenverzeichnis der App gespeichert. Sie können sie über die Datei-App aufrufen.'; + String get setupDownloadLocationIosMessage => + 'Auf iOS werden Downloads im Dokumentenverzeichnis der App gespeichert. Sie können sie über die Datei-App aufrufen.'; @override String get setupAppDocumentsFolder => 'App-Dokumentenordner'; @override - String get setupAppDocumentsFolderSubtitle => 'Empfohlen - zugänglich über die Datei-App'; + String get setupAppDocumentsFolderSubtitle => + 'Empfohlen - zugänglich über die Datei-App'; @override String get setupChooseFromFiles => 'Aus Dateien auswählen'; @override - String get setupChooseFromFilesSubtitle => 'Wählen Sie iCloud oder einen anderen Ort'; + String get setupChooseFromFilesSubtitle => + 'Wählen Sie iCloud oder einen anderen Ort'; @override - String get setupIosEmptyFolderWarning => 'iOS-Einschränkung: Leere Ordner können nicht ausgewählt werden. Wählen Sie einen Ordner mit mindestens einer Datei.'; + String get setupIosEmptyFolderWarning => + 'iOS-Einschränkung: Leere Ordner können nicht ausgewählt werden. Wählen Sie einen Ordner mit mindestens einer Datei.'; @override - String get setupIcloudNotSupported => 'iCloud Drive is not supported. Please use the app Documents folder.'; + String get setupIcloudNotSupported => + 'iCloud Drive is not supported. Please use the app Documents folder.'; @override String get setupDownloadInFlac => 'Spotify Titel in FLAC herunterladen'; @@ -682,16 +727,19 @@ class AppLocalizationsDe extends AppLocalizations { String get setupStorageRequired => 'Speicherzugriff erforderlich'; @override - String get setupStorageDescription => 'SpotiFLAC benötigt Speicherrechte, um die heruntergeladenen Musikdateien zu speichern.'; + String get setupStorageDescription => + 'SpotiFLAC benötigt Speicherrechte, um die heruntergeladenen Musikdateien zu speichern.'; @override - String get setupNotificationGranted => 'Benachrichtigungs-Berechtigung erteilt'; + String get setupNotificationGranted => + 'Benachrichtigungs-Berechtigung erteilt'; @override String get setupNotificationEnable => 'Benachrichtigungen aktivieren'; @override - String get setupNotificationDescription => 'Benachrichtigt werden, wenn Downloads abgeschlossen sind.'; + String get setupNotificationDescription => + 'Benachrichtigt werden, wenn Downloads abgeschlossen sind.'; @override String get setupFolderSelected => 'Download Ordner ausgewählt!'; @@ -700,7 +748,8 @@ class AppLocalizationsDe extends AppLocalizations { String get setupFolderChoose => 'Speicherort auwählen'; @override - String get setupFolderDescription => 'Wählen Sie einen Ordner, in dem Ihre heruntergeladene Musik gespeichert wird.'; + String get setupFolderDescription => + 'Wählen Sie einen Ordner, in dem Ihre heruntergeladene Musik gespeichert wird.'; @override String get setupChangeFolder => 'Ordner ändern'; @@ -712,7 +761,8 @@ class AppLocalizationsDe extends AppLocalizations { String get setupSpotifyApiOptional => 'Spotify-API (optional)'; @override - String get setupSpotifyApiDescription => 'Add your Spotify API credentials for better search results and access to Spotify-exclusive content.'; + String get setupSpotifyApiDescription => + 'Add your Spotify API credentials for better search results and access to Spotify-exclusive content.'; @override String get setupUseSpotifyApi => 'Use Spotify API'; @@ -730,7 +780,8 @@ class AppLocalizationsDe extends AppLocalizations { String get setupEnterClientSecret => 'Enter Spotify Client Secret'; @override - String get setupGetFreeCredentials => 'Get your free API credentials from the Spotify Developer Dashboard.'; + String get setupGetFreeCredentials => + 'Get your free API credentials from the Spotify Developer Dashboard.'; @override String get setupEnableNotifications => 'Enable Notifications'; @@ -739,10 +790,12 @@ class AppLocalizationsDe extends AppLocalizations { String get setupProceedToNextStep => 'You can now proceed to the next step.'; @override - String get setupNotificationProgressDescription => 'You will receive download progress notifications.'; + String get setupNotificationProgressDescription => + 'You will receive download progress notifications.'; @override - String get setupNotificationBackgroundDescription => 'Get notified about download progress and completion. This helps you track downloads when the app is in background.'; + String get setupNotificationBackgroundDescription => + 'Get notified about download progress and completion. This helps you track downloads when the app is in background.'; @override String get setupSkipForNow => 'Skip for now'; @@ -760,10 +813,12 @@ class AppLocalizationsDe extends AppLocalizations { String get setupSkipAndStart => 'Skip & Start'; @override - String get setupAllowAccessToManageFiles => 'Please enable \"Allow access to manage all files\" in the next screen.'; + String get setupAllowAccessToManageFiles => + 'Please enable \"Allow access to manage all files\" in the next screen.'; @override - String get setupGetCredentialsFromSpotify => 'Get credentials from developer.spotify.com'; + String get setupGetCredentialsFromSpotify => + 'Get credentials from developer.spotify.com'; @override String get dialogCancel => 'Cancel'; @@ -814,7 +869,8 @@ class AppLocalizationsDe extends AppLocalizations { String get dialogDiscardChanges => 'Discard Changes?'; @override - String get dialogUnsavedChanges => 'You have unsaved changes. Do you want to discard them?'; + String get dialogUnsavedChanges => + 'You have unsaved changes. Do you want to discard them?'; @override String get dialogDownloadFailed => 'Download Failed'; @@ -832,7 +888,8 @@ class AppLocalizationsDe extends AppLocalizations { String get dialogClearAll => 'Clear All'; @override - String get dialogClearAllDownloads => 'Are you sure you want to clear all downloads?'; + String get dialogClearAllDownloads => + 'Are you sure you want to clear all downloads?'; @override String get dialogRemoveFromDevice => 'Remove from device?'; @@ -841,7 +898,8 @@ class AppLocalizationsDe extends AppLocalizations { String get dialogRemoveExtension => 'Remove Extension'; @override - String get dialogRemoveExtensionMessage => 'Are you sure you want to remove this extension? This cannot be undone.'; + String get dialogRemoveExtensionMessage => + 'Are you sure you want to remove this extension? This cannot be undone.'; @override String get dialogUninstallExtension => 'Uninstall Extension?'; @@ -855,7 +913,8 @@ class AppLocalizationsDe extends AppLocalizations { String get dialogClearHistoryTitle => 'Clear History'; @override - String get dialogClearHistoryMessage => 'Are you sure you want to clear all download history? This cannot be undone.'; + String get dialogClearHistoryMessage => + 'Are you sure you want to clear all download history? This cannot be undone.'; @override String get dialogDeleteSelectedTitle => 'Delete Selected'; @@ -950,7 +1009,8 @@ class AppLocalizationsDe extends AppLocalizations { String get snackbarProviderPrioritySaved => 'Provider priority saved'; @override - String get snackbarMetadataProviderSaved => 'Metadata provider priority saved'; + String get snackbarMetadataProviderSaved => + 'Metadata provider priority saved'; @override String snackbarExtensionInstalled(String extensionName) { @@ -972,7 +1032,8 @@ class AppLocalizationsDe extends AppLocalizations { String get errorRateLimited => 'Rate Limited'; @override - String get errorRateLimitedMessage => 'Too many requests. Please wait a moment before searching again.'; + String get errorRateLimitedMessage => + 'Too many requests. Please wait a moment before searching again.'; @override String errorFailedToLoad(String item) { @@ -1139,19 +1200,23 @@ class AppLocalizationsDe extends AppLocalizations { String get folderOrganizationByArtistAlbum => 'Artist/Album'; @override - String get folderOrganizationDescription => 'Organize downloaded files into folders'; + String get folderOrganizationDescription => + 'Organize downloaded files into folders'; @override String get folderOrganizationNoneSubtitle => 'All files in download folder'; @override - String get folderOrganizationByArtistSubtitle => 'Separate folder for each artist'; + String get folderOrganizationByArtistSubtitle => + 'Separate folder for each artist'; @override - String get folderOrganizationByAlbumSubtitle => 'Separate folder for each album'; + String get folderOrganizationByAlbumSubtitle => + 'Separate folder for each album'; @override - String get folderOrganizationByArtistAlbumSubtitle => 'Nested folders for artist and album'; + String get folderOrganizationByArtistAlbumSubtitle => + 'Nested folders for artist and album'; @override String get updateAvailable => 'Update Available'; @@ -1210,10 +1275,12 @@ class AppLocalizationsDe extends AppLocalizations { String get providerPriorityTitle => 'Provider Priority'; @override - String get providerPriorityDescription => 'Drag to reorder download providers. The app will try providers from top to bottom when downloading tracks.'; + String get providerPriorityDescription => + 'Drag to reorder download providers. The app will try providers from top to bottom when downloading tracks.'; @override - String get providerPriorityInfo => 'If a track is not available on the first provider, the app will automatically try the next one.'; + String get providerPriorityInfo => + 'If a track is not available on the first provider, the app will automatically try the next one.'; @override String get providerBuiltIn => 'Built-in'; @@ -1225,16 +1292,19 @@ class AppLocalizationsDe extends AppLocalizations { String get metadataProviderPriority => 'Metadata Provider Priority'; @override - String get metadataProviderPrioritySubtitle => 'Order used when fetching track metadata'; + String get metadataProviderPrioritySubtitle => + 'Order used when fetching track metadata'; @override String get metadataProviderPriorityTitle => 'Metadata Priority'; @override - String get metadataProviderPriorityDescription => 'Drag to reorder metadata providers. The app will try providers from top to bottom when searching for tracks and fetching metadata.'; + String get metadataProviderPriorityDescription => + 'Drag to reorder metadata providers. The app will try providers from top to bottom when searching for tracks and fetching metadata.'; @override - String get metadataProviderPriorityInfo => 'Deezer has no rate limits and is recommended as primary. Spotify may rate limit after many requests.'; + String get metadataProviderPriorityInfo => + 'Deezer has no rate limits and is recommended as primary. Spotify may rate limit after many requests.'; @override String get metadataNoRateLimits => 'No rate limits'; @@ -1306,16 +1376,19 @@ class AppLocalizationsDe extends AppLocalizations { String get logIssueSummary => 'Issue Summary'; @override - String get logIspBlockingDescription => 'Your ISP may be blocking access to download services'; + String get logIspBlockingDescription => + 'Your ISP may be blocking access to download services'; @override - String get logIspBlockingSuggestion => 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; + String get logIspBlockingSuggestion => + 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; @override String get logRateLimitedDescription => 'Too many requests to the service'; @override - String get logRateLimitedSuggestion => 'Wait a few minutes before trying again'; + String get logRateLimitedSuggestion => + 'Wait a few minutes before trying again'; @override String get logNetworkErrorDescription => 'Connection issues detected'; @@ -1324,10 +1397,12 @@ class AppLocalizationsDe extends AppLocalizations { String get logNetworkErrorSuggestion => 'Check your internet connection'; @override - String get logTrackNotFoundDescription => 'Some tracks could not be found on download services'; + String get logTrackNotFoundDescription => + 'Some tracks could not be found on download services'; @override - String get logTrackNotFoundSuggestion => 'The track may not be available in lossless quality'; + String get logTrackNotFoundSuggestion => + 'The track may not be available in lossless quality'; @override String logTotalErrors(int count) { @@ -1353,7 +1428,8 @@ class AppLocalizationsDe extends AppLocalizations { String get credentialsTitle => 'Spotify Credentials'; @override - String get credentialsDescription => 'Enter your Client ID and Secret to use your own Spotify application quota.'; + String get credentialsDescription => + 'Enter your Client ID and Secret to use your own Spotify application quota.'; @override String get credentialsClientId => 'Client ID'; @@ -1407,7 +1483,8 @@ class AppLocalizationsDe extends AppLocalizations { String get lyricsMode => 'Lyrics Mode'; @override - String get lyricsModeDescription => 'Choose how lyrics are saved with your downloads'; + String get lyricsModeDescription => + 'Choose how lyrics are saved with your downloads'; @override String get lyricsModeEmbed => 'Embed in file'; @@ -1419,7 +1496,8 @@ class AppLocalizationsDe extends AppLocalizations { String get lyricsModeExternal => 'External .lrc file'; @override - String get lyricsModeExternalSubtitle => 'Separate .lrc file for players like Samsung Music'; + String get lyricsModeExternalSubtitle => + 'Separate .lrc file for players like Samsung Music'; @override String get lyricsModeBoth => 'Both'; @@ -1579,7 +1657,8 @@ class AppLocalizationsDe extends AppLocalizations { String get trackDeleteConfirmTitle => 'Remove from device?'; @override - String get trackDeleteConfirmMessage => 'This will permanently delete the downloaded file and remove it from your history.'; + String get trackDeleteConfirmMessage => + 'This will permanently delete the downloaded file and remove it from your history.'; @override String trackCannotOpen(String message) { @@ -1731,13 +1810,15 @@ class AppLocalizationsDe extends AppLocalizations { String get extensionsNoExtensions => 'No extensions installed'; @override - String get extensionsNoExtensionsSubtitle => 'Install .spotiflac-ext files to add new providers'; + String get extensionsNoExtensionsSubtitle => + 'Install .spotiflac-ext files to add new providers'; @override String get extensionsInstallButton => 'Install Extension'; @override - String get extensionsInfoTip => 'Extensions can add new metadata and download providers. Only install extensions from trusted sources.'; + String get extensionsInfoTip => + 'Extensions can add new metadata and download providers. Only install extensions from trusted sources.'; @override String get extensionsInstalledSuccess => 'Extension installed successfully'; @@ -1749,16 +1830,19 @@ class AppLocalizationsDe extends AppLocalizations { String get extensionsDownloadPrioritySubtitle => 'Set download service order'; @override - String get extensionsNoDownloadProvider => 'No extensions with download provider'; + String get extensionsNoDownloadProvider => + 'No extensions with download provider'; @override String get extensionsMetadataPriority => 'Metadata Priority'; @override - String get extensionsMetadataPrioritySubtitle => 'Set search & metadata source order'; + String get extensionsMetadataPrioritySubtitle => + 'Set search & metadata source order'; @override - String get extensionsNoMetadataProvider => 'No extensions with metadata provider'; + String get extensionsNoMetadataProvider => + 'No extensions with metadata provider'; @override String get extensionsSearchProvider => 'Search Provider'; @@ -1767,7 +1851,8 @@ class AppLocalizationsDe extends AppLocalizations { String get extensionsNoCustomSearch => 'No extensions with custom search'; @override - String get extensionsSearchProviderDescription => 'Choose which service to use for searching tracks'; + String get extensionsSearchProviderDescription => + 'Choose which service to use for searching tracks'; @override String get extensionsCustomSearch => 'Custom search'; @@ -1809,7 +1894,8 @@ class AppLocalizationsDe extends AppLocalizations { String get enableLossyOptionSubtitleOn => 'Lossy quality option is available'; @override - String get enableLossyOptionSubtitleOff => 'Downloads FLAC then converts to lossy format'; + String get enableLossyOptionSubtitleOff => + 'Downloads FLAC then converts to lossy format'; @override String get lossyFormat => 'Lossy Format'; @@ -1821,10 +1907,12 @@ class AppLocalizationsDe extends AppLocalizations { String get lossyFormatMp3Subtitle => '320kbps, best compatibility'; @override - String get lossyFormatOpusSubtitle => '128kbps, better quality at smaller size'; + String get lossyFormatOpusSubtitle => + '128kbps, better quality at smaller size'; @override - String get qualityNote => 'Actual quality depends on track availability from the service'; + String get qualityNote => + 'Actual quality depends on track availability from the service'; @override String get downloadAskBeforeDownload => 'Ask Before Download'; @@ -1914,13 +2002,15 @@ class AppLocalizationsDe extends AppLocalizations { String get queueClearAll => 'Clear All'; @override - String get queueClearAllMessage => 'Are you sure you want to clear all downloads?'; + String get queueClearAllMessage => + 'Are you sure you want to clear all downloads?'; @override String get queueExportFailed => 'Export'; @override - String get queueExportFailedSuccess => 'Failed downloads exported to TXT file'; + String get queueExportFailedSuccess => + 'Failed downloads exported to TXT file'; @override String get queueExportFailedClear => 'Clear Failed'; @@ -1932,7 +2022,8 @@ class AppLocalizationsDe extends AppLocalizations { String get settingsAutoExportFailed => 'Auto-export failed downloads'; @override - String get settingsAutoExportFailedSubtitle => 'Save failed downloads to TXT file automatically'; + String get settingsAutoExportFailedSubtitle => + 'Save failed downloads to TXT file automatically'; @override String get settingsDownloadNetwork => 'Download Network'; @@ -1944,7 +2035,8 @@ class AppLocalizationsDe extends AppLocalizations { String get settingsDownloadNetworkWifiOnly => 'WiFi Only'; @override - String get settingsDownloadNetworkSubtitle => 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; + String get settingsDownloadNetworkSubtitle => + 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; @override String get settingsCloudSave => 'Cloud Save'; @@ -1962,7 +2054,8 @@ class AppLocalizationsDe extends AppLocalizations { String get cloudSettingsEnable => 'Enable Cloud Upload'; @override - String get cloudSettingsEnableSubtitle => 'Automatically upload files after download completes'; + String get cloudSettingsEnableSubtitle => + 'Automatically upload files after download completes'; @override String get cloudSettingsSectionProvider => 'Cloud Provider'; @@ -1971,7 +2064,8 @@ class AppLocalizationsDe extends AppLocalizations { String get cloudSettingsProvider => 'Provider'; @override - String get cloudSettingsProviderDescription => 'Select where to upload your downloaded files'; + String get cloudSettingsProviderDescription => + 'Select where to upload your downloaded files'; @override String get cloudSettingsSectionServer => 'Server Configuration'; @@ -1992,7 +2086,20 @@ class AppLocalizationsDe extends AppLocalizations { String get cloudSettingsTestConnection => 'Test Connection'; @override - String get cloudSettingsInfo => 'Downloaded files will be automatically uploaded to your cloud storage after download completes. Original files are kept on your device.'; + String get cloudSettingsInfo => + 'Downloaded files will be automatically uploaded to your cloud storage after download completes. Original files are kept on your device.'; + + @override + String get cloudSettingsUploadQueue => 'Upload Queue'; + + @override + String get cloudSettingsRetryFailed => 'Retry Failed'; + + @override + String get cloudSettingsClearDone => 'Clear Done'; + + @override + String get cloudSettingsRecentUploads => 'Recent Uploads'; @override String get queueEmpty => 'No downloads in queue'; @@ -2028,7 +2135,8 @@ class AppLocalizationsDe extends AppLocalizations { String get albumFolderArtistYearAlbum => 'Artist / [Year] Album'; @override - String get albumFolderArtistYearAlbumSubtitle => 'Albums/Artist Name/[2005] Album Name/'; + String get albumFolderArtistYearAlbumSubtitle => + 'Albums/Artist Name/[2005] Album Name/'; @override String get albumFolderAlbumOnly => 'Album Only'; @@ -2046,7 +2154,8 @@ class AppLocalizationsDe extends AppLocalizations { String get albumFolderArtistAlbumSingles => 'Artist / Album + Singles'; @override - String get albumFolderArtistAlbumSinglesSubtitle => 'Artist/Album/ and Artist/Singles/'; + String get albumFolderArtistAlbumSinglesSubtitle => + 'Artist/Album/ and Artist/Singles/'; @override String get downloadedAlbumDeleteSelected => 'Delete Selected'; @@ -2156,7 +2265,8 @@ class AppLocalizationsDe extends AppLocalizations { String get discographySelectAlbums => 'Select Albums...'; @override - String get discographySelectAlbumsSubtitle => 'Choose specific albums or singles'; + String get discographySelectAlbumsSubtitle => + 'Choose specific albums or singles'; @override String get discographyFetchingTracks => 'Fetching tracks...'; @@ -2203,11 +2313,14 @@ class AppLocalizationsDe extends AppLocalizations { String get allFilesAccessDisabledSubtitle => 'Limited to media folders only'; @override - String get allFilesAccessDescription => 'Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.'; + String get allFilesAccessDescription => + 'Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.'; @override - String get allFilesAccessDeniedMessage => 'Permission was denied. Please enable \'All files access\' manually in system settings.'; + String get allFilesAccessDeniedMessage => + 'Permission was denied. Please enable \'All files access\' manually in system settings.'; @override - String get allFilesAccessDisabledMessage => 'All Files Access disabled. The app will use limited storage access.'; + String get allFilesAccessDisabledMessage => + 'All Files Access disabled. The app will use limited storage access.'; } diff --git a/lib/l10n/app_localizations_en.dart b/lib/l10n/app_localizations_en.dart index efd25ca6..bff34348 100644 --- a/lib/l10n/app_localizations_en.dart +++ b/lib/l10n/app_localizations_en.dart @@ -12,7 +12,8 @@ class AppLocalizationsEn extends AppLocalizations { String get appName => 'SpotiFLAC'; @override - String get appDescription => 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; + String get appDescription => + 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; @override String get navHome => 'Home'; @@ -98,13 +99,15 @@ class AppLocalizationsEn extends AppLocalizations { String get historyNoAlbums => 'No album downloads'; @override - String get historyNoAlbumsSubtitle => 'Download multiple tracks from an album to see them here'; + String get historyNoAlbumsSubtitle => + 'Download multiple tracks from an album to see them here'; @override String get historyNoSingles => 'No single downloads'; @override - String get historyNoSinglesSubtitle => 'Single track downloads will appear here'; + String get historyNoSinglesSubtitle => + 'Single track downloads will appear here'; @override String get historySearchHint => 'Search history...'; @@ -152,7 +155,8 @@ class AppLocalizationsEn extends AppLocalizations { String get downloadAskQuality => 'Ask Quality Before Download'; @override - String get downloadAskQualitySubtitle => 'Show quality picker for each download'; + String get downloadAskQualitySubtitle => + 'Show quality picker for each download'; @override String get downloadFilenameFormat => 'Filename Format'; @@ -164,7 +168,8 @@ class AppLocalizationsEn extends AppLocalizations { String get downloadSeparateSingles => 'Separate Singles'; @override - String get downloadSeparateSinglesSubtitle => 'Put single tracks in a separate folder'; + String get downloadSeparateSinglesSubtitle => + 'Put single tracks in a separate folder'; @override String get qualityBest => 'Best Available'; @@ -221,7 +226,8 @@ class AppLocalizationsEn extends AppLocalizations { String get optionsPrimaryProvider => 'Primary Provider'; @override - String get optionsPrimaryProviderSubtitle => 'Service used when searching by track name.'; + String get optionsPrimaryProviderSubtitle => + 'Service used when searching by track name.'; @override String optionsUsingExtension(String extensionName) { @@ -229,13 +235,15 @@ class AppLocalizationsEn extends AppLocalizations { } @override - String get optionsSwitchBack => 'Tap Deezer or Spotify to switch back from extension'; + String get optionsSwitchBack => + 'Tap Deezer or Spotify to switch back from extension'; @override String get optionsAutoFallback => 'Auto Fallback'; @override - String get optionsAutoFallbackSubtitle => 'Try other services if download fails'; + String get optionsAutoFallbackSubtitle => + 'Try other services if download fails'; @override String get optionsUseExtensionProviders => 'Use Extension Providers'; @@ -250,13 +258,15 @@ class AppLocalizationsEn extends AppLocalizations { String get optionsEmbedLyrics => 'Embed Lyrics'; @override - String get optionsEmbedLyricsSubtitle => 'Embed synced lyrics into FLAC files'; + String get optionsEmbedLyricsSubtitle => + 'Embed synced lyrics into FLAC files'; @override String get optionsMaxQualityCover => 'Max Quality Cover'; @override - String get optionsMaxQualityCoverSubtitle => 'Download highest resolution cover art'; + String get optionsMaxQualityCoverSubtitle => + 'Download highest resolution cover art'; @override String get optionsConcurrentDownloads => 'Concurrent Downloads'; @@ -270,7 +280,8 @@ class AppLocalizationsEn extends AppLocalizations { } @override - String get optionsConcurrentWarning => 'Parallel downloads may trigger rate limiting'; + String get optionsConcurrentWarning => + 'Parallel downloads may trigger rate limiting'; @override String get optionsExtensionStore => 'Extension Store'; @@ -282,7 +293,8 @@ class AppLocalizationsEn extends AppLocalizations { String get optionsCheckUpdates => 'Check for Updates'; @override - String get optionsCheckUpdatesSubtitle => 'Notify when new version is available'; + String get optionsCheckUpdatesSubtitle => + 'Notify when new version is available'; @override String get optionsUpdateChannel => 'Update Channel'; @@ -294,13 +306,15 @@ class AppLocalizationsEn extends AppLocalizations { String get optionsUpdateChannelPreview => 'Get preview releases'; @override - String get optionsUpdateChannelWarning => 'Preview may contain bugs or incomplete features'; + String get optionsUpdateChannelWarning => + 'Preview may contain bugs or incomplete features'; @override String get optionsClearHistory => 'Clear Download History'; @override - String get optionsClearHistorySubtitle => 'Remove all downloaded tracks from history'; + String get optionsClearHistorySubtitle => + 'Remove all downloaded tracks from history'; @override String get optionsDetailedLogging => 'Detailed Logging'; @@ -323,7 +337,8 @@ class AppLocalizationsEn extends AppLocalizations { String get optionsSpotifyCredentialsRequired => 'Required - tap to configure'; @override - String get optionsSpotifyWarning => 'Spotify requires your own API credentials. Get them free from developer.spotify.com'; + String get optionsSpotifyWarning => + 'Spotify requires your own API credentials. Get them free from developer.spotify.com'; @override String get extensionsTitle => 'Extensions'; @@ -387,7 +402,8 @@ class AppLocalizationsEn extends AppLocalizations { String get aboutOriginalCreator => 'Creator of the original SpotiFLAC'; @override - String get aboutLogoArtist => 'The talented artist who created our beautiful app logo!'; + String get aboutLogoArtist => + 'The talented artist who created our beautiful app logo!'; @override String get aboutTranslators => 'Translators'; @@ -447,28 +463,34 @@ class AppLocalizationsEn extends AppLocalizations { String get aboutVersion => 'Version'; @override - String get aboutBinimumDesc => 'The creator of QQDL & HiFi API. Without this API, Tidal downloads wouldn\'t exist!'; + String get aboutBinimumDesc => + 'The creator of QQDL & HiFi API. Without this API, Tidal downloads wouldn\'t exist!'; @override - String get aboutSachinsenalDesc => 'The original HiFi project creator. The foundation of Tidal integration!'; + String get aboutSachinsenalDesc => + 'The original HiFi project creator. The foundation of Tidal integration!'; @override - String get aboutSjdonadoDesc => 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; + String get aboutSjdonadoDesc => + 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; @override String get aboutDoubleDouble => 'DoubleDouble'; @override - String get aboutDoubleDoubleDesc => 'Amazing API for Amazon Music downloads. Thank you for making it free!'; + String get aboutDoubleDoubleDesc => + 'Amazing API for Amazon Music downloads. Thank you for making it free!'; @override String get aboutDabMusic => 'DAB Music'; @override - String get aboutDabMusicDesc => 'The best Qobuz streaming API. Hi-Res downloads wouldn\'t be possible without this!'; + String get aboutDabMusicDesc => + 'The best Qobuz streaming API. Hi-Res downloads wouldn\'t be possible without this!'; @override - String get aboutAppDescription => 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; + String get aboutAppDescription => + 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; @override String get albumTitle => 'Album'; @@ -573,7 +595,8 @@ class AppLocalizationsEn extends AppLocalizations { String get setupStoragePermission => 'Storage Permission'; @override - String get setupStoragePermissionSubtitle => 'Required to save downloaded files'; + String get setupStoragePermissionSubtitle => + 'Required to save downloaded files'; @override String get setupStoragePermissionGranted => 'Permission granted'; @@ -600,16 +623,19 @@ class AppLocalizationsEn extends AppLocalizations { String get setupStorageAccessRequired => 'Storage Access Required'; @override - String get setupStorageAccessMessage => 'SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.'; + String get setupStorageAccessMessage => + 'SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.'; @override - String get setupStorageAccessMessageAndroid11 => 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; + String get setupStorageAccessMessageAndroid11 => + 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; @override String get setupOpenSettings => 'Open Settings'; @override - String get setupPermissionDeniedMessage => 'Permission denied. Please grant all permissions to continue.'; + String get setupPermissionDeniedMessage => + 'Permission denied. Please grant all permissions to continue.'; @override String setupPermissionRequired(String permissionType) { @@ -628,7 +654,8 @@ class AppLocalizationsEn extends AppLocalizations { String get setupUseDefaultFolder => 'Use Default Folder?'; @override - String get setupNoFolderSelected => 'No folder selected. Would you like to use the default Music folder?'; + String get setupNoFolderSelected => + 'No folder selected. Would you like to use the default Music folder?'; @override String get setupUseDefault => 'Use Default'; @@ -637,13 +664,15 @@ class AppLocalizationsEn extends AppLocalizations { String get setupDownloadLocationTitle => 'Download Location'; @override - String get setupDownloadLocationIosMessage => 'On iOS, downloads are saved to the app\'s Documents folder. You can access them via the Files app.'; + String get setupDownloadLocationIosMessage => + 'On iOS, downloads are saved to the app\'s Documents folder. You can access them via the Files app.'; @override String get setupAppDocumentsFolder => 'App Documents Folder'; @override - String get setupAppDocumentsFolderSubtitle => 'Recommended - accessible via Files app'; + String get setupAppDocumentsFolderSubtitle => + 'Recommended - accessible via Files app'; @override String get setupChooseFromFiles => 'Choose from Files'; @@ -652,10 +681,12 @@ class AppLocalizationsEn extends AppLocalizations { String get setupChooseFromFilesSubtitle => 'Select iCloud or other location'; @override - String get setupIosEmptyFolderWarning => 'iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.'; + String get setupIosEmptyFolderWarning => + 'iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.'; @override - String get setupIcloudNotSupported => 'iCloud Drive is not supported. Please use the app Documents folder.'; + String get setupIcloudNotSupported => + 'iCloud Drive is not supported. Please use the app Documents folder.'; @override String get setupDownloadInFlac => 'Download Spotify tracks in FLAC'; @@ -682,7 +713,8 @@ class AppLocalizationsEn extends AppLocalizations { String get setupStorageRequired => 'Storage Permission Required'; @override - String get setupStorageDescription => 'SpotiFLAC needs storage permission to save your downloaded music files.'; + String get setupStorageDescription => + 'SpotiFLAC needs storage permission to save your downloaded music files.'; @override String get setupNotificationGranted => 'Notification Permission Granted!'; @@ -691,7 +723,8 @@ class AppLocalizationsEn extends AppLocalizations { String get setupNotificationEnable => 'Enable Notifications'; @override - String get setupNotificationDescription => 'Get notified when downloads complete or require attention.'; + String get setupNotificationDescription => + 'Get notified when downloads complete or require attention.'; @override String get setupFolderSelected => 'Download Folder Selected!'; @@ -700,7 +733,8 @@ class AppLocalizationsEn extends AppLocalizations { String get setupFolderChoose => 'Choose Download Folder'; @override - String get setupFolderDescription => 'Select a folder where your downloaded music will be saved.'; + String get setupFolderDescription => + 'Select a folder where your downloaded music will be saved.'; @override String get setupChangeFolder => 'Change Folder'; @@ -712,7 +746,8 @@ class AppLocalizationsEn extends AppLocalizations { String get setupSpotifyApiOptional => 'Spotify API (Optional)'; @override - String get setupSpotifyApiDescription => 'Add your Spotify API credentials for better search results and access to Spotify-exclusive content.'; + String get setupSpotifyApiDescription => + 'Add your Spotify API credentials for better search results and access to Spotify-exclusive content.'; @override String get setupUseSpotifyApi => 'Use Spotify API'; @@ -730,7 +765,8 @@ class AppLocalizationsEn extends AppLocalizations { String get setupEnterClientSecret => 'Enter Spotify Client Secret'; @override - String get setupGetFreeCredentials => 'Get your free API credentials from the Spotify Developer Dashboard.'; + String get setupGetFreeCredentials => + 'Get your free API credentials from the Spotify Developer Dashboard.'; @override String get setupEnableNotifications => 'Enable Notifications'; @@ -739,10 +775,12 @@ class AppLocalizationsEn extends AppLocalizations { String get setupProceedToNextStep => 'You can now proceed to the next step.'; @override - String get setupNotificationProgressDescription => 'You will receive download progress notifications.'; + String get setupNotificationProgressDescription => + 'You will receive download progress notifications.'; @override - String get setupNotificationBackgroundDescription => 'Get notified about download progress and completion. This helps you track downloads when the app is in background.'; + String get setupNotificationBackgroundDescription => + 'Get notified about download progress and completion. This helps you track downloads when the app is in background.'; @override String get setupSkipForNow => 'Skip for now'; @@ -760,10 +798,12 @@ class AppLocalizationsEn extends AppLocalizations { String get setupSkipAndStart => 'Skip & Start'; @override - String get setupAllowAccessToManageFiles => 'Please enable \"Allow access to manage all files\" in the next screen.'; + String get setupAllowAccessToManageFiles => + 'Please enable \"Allow access to manage all files\" in the next screen.'; @override - String get setupGetCredentialsFromSpotify => 'Get credentials from developer.spotify.com'; + String get setupGetCredentialsFromSpotify => + 'Get credentials from developer.spotify.com'; @override String get dialogCancel => 'Cancel'; @@ -814,7 +854,8 @@ class AppLocalizationsEn extends AppLocalizations { String get dialogDiscardChanges => 'Discard Changes?'; @override - String get dialogUnsavedChanges => 'You have unsaved changes. Do you want to discard them?'; + String get dialogUnsavedChanges => + 'You have unsaved changes. Do you want to discard them?'; @override String get dialogDownloadFailed => 'Download Failed'; @@ -832,7 +873,8 @@ class AppLocalizationsEn extends AppLocalizations { String get dialogClearAll => 'Clear All'; @override - String get dialogClearAllDownloads => 'Are you sure you want to clear all downloads?'; + String get dialogClearAllDownloads => + 'Are you sure you want to clear all downloads?'; @override String get dialogRemoveFromDevice => 'Remove from device?'; @@ -841,7 +883,8 @@ class AppLocalizationsEn extends AppLocalizations { String get dialogRemoveExtension => 'Remove Extension'; @override - String get dialogRemoveExtensionMessage => 'Are you sure you want to remove this extension? This cannot be undone.'; + String get dialogRemoveExtensionMessage => + 'Are you sure you want to remove this extension? This cannot be undone.'; @override String get dialogUninstallExtension => 'Uninstall Extension?'; @@ -855,7 +898,8 @@ class AppLocalizationsEn extends AppLocalizations { String get dialogClearHistoryTitle => 'Clear History'; @override - String get dialogClearHistoryMessage => 'Are you sure you want to clear all download history? This cannot be undone.'; + String get dialogClearHistoryMessage => + 'Are you sure you want to clear all download history? This cannot be undone.'; @override String get dialogDeleteSelectedTitle => 'Delete Selected'; @@ -950,7 +994,8 @@ class AppLocalizationsEn extends AppLocalizations { String get snackbarProviderPrioritySaved => 'Provider priority saved'; @override - String get snackbarMetadataProviderSaved => 'Metadata provider priority saved'; + String get snackbarMetadataProviderSaved => + 'Metadata provider priority saved'; @override String snackbarExtensionInstalled(String extensionName) { @@ -972,7 +1017,8 @@ class AppLocalizationsEn extends AppLocalizations { String get errorRateLimited => 'Rate Limited'; @override - String get errorRateLimitedMessage => 'Too many requests. Please wait a moment before searching again.'; + String get errorRateLimitedMessage => + 'Too many requests. Please wait a moment before searching again.'; @override String errorFailedToLoad(String item) { @@ -1139,19 +1185,23 @@ class AppLocalizationsEn extends AppLocalizations { String get folderOrganizationByArtistAlbum => 'Artist/Album'; @override - String get folderOrganizationDescription => 'Organize downloaded files into folders'; + String get folderOrganizationDescription => + 'Organize downloaded files into folders'; @override String get folderOrganizationNoneSubtitle => 'All files in download folder'; @override - String get folderOrganizationByArtistSubtitle => 'Separate folder for each artist'; + String get folderOrganizationByArtistSubtitle => + 'Separate folder for each artist'; @override - String get folderOrganizationByAlbumSubtitle => 'Separate folder for each album'; + String get folderOrganizationByAlbumSubtitle => + 'Separate folder for each album'; @override - String get folderOrganizationByArtistAlbumSubtitle => 'Nested folders for artist and album'; + String get folderOrganizationByArtistAlbumSubtitle => + 'Nested folders for artist and album'; @override String get updateAvailable => 'Update Available'; @@ -1210,10 +1260,12 @@ class AppLocalizationsEn extends AppLocalizations { String get providerPriorityTitle => 'Provider Priority'; @override - String get providerPriorityDescription => 'Drag to reorder download providers. The app will try providers from top to bottom when downloading tracks.'; + String get providerPriorityDescription => + 'Drag to reorder download providers. The app will try providers from top to bottom when downloading tracks.'; @override - String get providerPriorityInfo => 'If a track is not available on the first provider, the app will automatically try the next one.'; + String get providerPriorityInfo => + 'If a track is not available on the first provider, the app will automatically try the next one.'; @override String get providerBuiltIn => 'Built-in'; @@ -1225,16 +1277,19 @@ class AppLocalizationsEn extends AppLocalizations { String get metadataProviderPriority => 'Metadata Provider Priority'; @override - String get metadataProviderPrioritySubtitle => 'Order used when fetching track metadata'; + String get metadataProviderPrioritySubtitle => + 'Order used when fetching track metadata'; @override String get metadataProviderPriorityTitle => 'Metadata Priority'; @override - String get metadataProviderPriorityDescription => 'Drag to reorder metadata providers. The app will try providers from top to bottom when searching for tracks and fetching metadata.'; + String get metadataProviderPriorityDescription => + 'Drag to reorder metadata providers. The app will try providers from top to bottom when searching for tracks and fetching metadata.'; @override - String get metadataProviderPriorityInfo => 'Deezer has no rate limits and is recommended as primary. Spotify may rate limit after many requests.'; + String get metadataProviderPriorityInfo => + 'Deezer has no rate limits and is recommended as primary. Spotify may rate limit after many requests.'; @override String get metadataNoRateLimits => 'No rate limits'; @@ -1306,16 +1361,19 @@ class AppLocalizationsEn extends AppLocalizations { String get logIssueSummary => 'Issue Summary'; @override - String get logIspBlockingDescription => 'Your ISP may be blocking access to download services'; + String get logIspBlockingDescription => + 'Your ISP may be blocking access to download services'; @override - String get logIspBlockingSuggestion => 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; + String get logIspBlockingSuggestion => + 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; @override String get logRateLimitedDescription => 'Too many requests to the service'; @override - String get logRateLimitedSuggestion => 'Wait a few minutes before trying again'; + String get logRateLimitedSuggestion => + 'Wait a few minutes before trying again'; @override String get logNetworkErrorDescription => 'Connection issues detected'; @@ -1324,10 +1382,12 @@ class AppLocalizationsEn extends AppLocalizations { String get logNetworkErrorSuggestion => 'Check your internet connection'; @override - String get logTrackNotFoundDescription => 'Some tracks could not be found on download services'; + String get logTrackNotFoundDescription => + 'Some tracks could not be found on download services'; @override - String get logTrackNotFoundSuggestion => 'The track may not be available in lossless quality'; + String get logTrackNotFoundSuggestion => + 'The track may not be available in lossless quality'; @override String logTotalErrors(int count) { @@ -1353,7 +1413,8 @@ class AppLocalizationsEn extends AppLocalizations { String get credentialsTitle => 'Spotify Credentials'; @override - String get credentialsDescription => 'Enter your Client ID and Secret to use your own Spotify application quota.'; + String get credentialsDescription => + 'Enter your Client ID and Secret to use your own Spotify application quota.'; @override String get credentialsClientId => 'Client ID'; @@ -1407,7 +1468,8 @@ class AppLocalizationsEn extends AppLocalizations { String get lyricsMode => 'Lyrics Mode'; @override - String get lyricsModeDescription => 'Choose how lyrics are saved with your downloads'; + String get lyricsModeDescription => + 'Choose how lyrics are saved with your downloads'; @override String get lyricsModeEmbed => 'Embed in file'; @@ -1419,7 +1481,8 @@ class AppLocalizationsEn extends AppLocalizations { String get lyricsModeExternal => 'External .lrc file'; @override - String get lyricsModeExternalSubtitle => 'Separate .lrc file for players like Samsung Music'; + String get lyricsModeExternalSubtitle => + 'Separate .lrc file for players like Samsung Music'; @override String get lyricsModeBoth => 'Both'; @@ -1579,7 +1642,8 @@ class AppLocalizationsEn extends AppLocalizations { String get trackDeleteConfirmTitle => 'Remove from device?'; @override - String get trackDeleteConfirmMessage => 'This will permanently delete the downloaded file and remove it from your history.'; + String get trackDeleteConfirmMessage => + 'This will permanently delete the downloaded file and remove it from your history.'; @override String trackCannotOpen(String message) { @@ -1731,13 +1795,15 @@ class AppLocalizationsEn extends AppLocalizations { String get extensionsNoExtensions => 'No extensions installed'; @override - String get extensionsNoExtensionsSubtitle => 'Install .spotiflac-ext files to add new providers'; + String get extensionsNoExtensionsSubtitle => + 'Install .spotiflac-ext files to add new providers'; @override String get extensionsInstallButton => 'Install Extension'; @override - String get extensionsInfoTip => 'Extensions can add new metadata and download providers. Only install extensions from trusted sources.'; + String get extensionsInfoTip => + 'Extensions can add new metadata and download providers. Only install extensions from trusted sources.'; @override String get extensionsInstalledSuccess => 'Extension installed successfully'; @@ -1749,16 +1815,19 @@ class AppLocalizationsEn extends AppLocalizations { String get extensionsDownloadPrioritySubtitle => 'Set download service order'; @override - String get extensionsNoDownloadProvider => 'No extensions with download provider'; + String get extensionsNoDownloadProvider => + 'No extensions with download provider'; @override String get extensionsMetadataPriority => 'Metadata Priority'; @override - String get extensionsMetadataPrioritySubtitle => 'Set search & metadata source order'; + String get extensionsMetadataPrioritySubtitle => + 'Set search & metadata source order'; @override - String get extensionsNoMetadataProvider => 'No extensions with metadata provider'; + String get extensionsNoMetadataProvider => + 'No extensions with metadata provider'; @override String get extensionsSearchProvider => 'Search Provider'; @@ -1767,7 +1836,8 @@ class AppLocalizationsEn extends AppLocalizations { String get extensionsNoCustomSearch => 'No extensions with custom search'; @override - String get extensionsSearchProviderDescription => 'Choose which service to use for searching tracks'; + String get extensionsSearchProviderDescription => + 'Choose which service to use for searching tracks'; @override String get extensionsCustomSearch => 'Custom search'; @@ -1809,7 +1879,8 @@ class AppLocalizationsEn extends AppLocalizations { String get enableLossyOptionSubtitleOn => 'Lossy quality option is available'; @override - String get enableLossyOptionSubtitleOff => 'Downloads FLAC then converts to lossy format'; + String get enableLossyOptionSubtitleOff => + 'Downloads FLAC then converts to lossy format'; @override String get lossyFormat => 'Lossy Format'; @@ -1821,10 +1892,12 @@ class AppLocalizationsEn extends AppLocalizations { String get lossyFormatMp3Subtitle => '320kbps, best compatibility'; @override - String get lossyFormatOpusSubtitle => '128kbps, better quality at smaller size'; + String get lossyFormatOpusSubtitle => + '128kbps, better quality at smaller size'; @override - String get qualityNote => 'Actual quality depends on track availability from the service'; + String get qualityNote => + 'Actual quality depends on track availability from the service'; @override String get downloadAskBeforeDownload => 'Ask Before Download'; @@ -1914,13 +1987,15 @@ class AppLocalizationsEn extends AppLocalizations { String get queueClearAll => 'Clear All'; @override - String get queueClearAllMessage => 'Are you sure you want to clear all downloads?'; + String get queueClearAllMessage => + 'Are you sure you want to clear all downloads?'; @override String get queueExportFailed => 'Export'; @override - String get queueExportFailedSuccess => 'Failed downloads exported to TXT file'; + String get queueExportFailedSuccess => + 'Failed downloads exported to TXT file'; @override String get queueExportFailedClear => 'Clear Failed'; @@ -1932,7 +2007,8 @@ class AppLocalizationsEn extends AppLocalizations { String get settingsAutoExportFailed => 'Auto-export failed downloads'; @override - String get settingsAutoExportFailedSubtitle => 'Save failed downloads to TXT file automatically'; + String get settingsAutoExportFailedSubtitle => + 'Save failed downloads to TXT file automatically'; @override String get settingsDownloadNetwork => 'Download Network'; @@ -1944,7 +2020,8 @@ class AppLocalizationsEn extends AppLocalizations { String get settingsDownloadNetworkWifiOnly => 'WiFi Only'; @override - String get settingsDownloadNetworkSubtitle => 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; + String get settingsDownloadNetworkSubtitle => + 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; @override String get settingsCloudSave => 'Cloud Save'; @@ -1962,7 +2039,8 @@ class AppLocalizationsEn extends AppLocalizations { String get cloudSettingsEnable => 'Enable Cloud Upload'; @override - String get cloudSettingsEnableSubtitle => 'Automatically upload files after download completes'; + String get cloudSettingsEnableSubtitle => + 'Automatically upload files after download completes'; @override String get cloudSettingsSectionProvider => 'Cloud Provider'; @@ -1971,7 +2049,8 @@ class AppLocalizationsEn extends AppLocalizations { String get cloudSettingsProvider => 'Provider'; @override - String get cloudSettingsProviderDescription => 'Select where to upload your downloaded files'; + String get cloudSettingsProviderDescription => + 'Select where to upload your downloaded files'; @override String get cloudSettingsSectionServer => 'Server Configuration'; @@ -1992,7 +2071,20 @@ class AppLocalizationsEn extends AppLocalizations { String get cloudSettingsTestConnection => 'Test Connection'; @override - String get cloudSettingsInfo => 'Downloaded files will be automatically uploaded to your cloud storage after download completes. Original files are kept on your device.'; + String get cloudSettingsInfo => + 'Downloaded files will be automatically uploaded to your cloud storage after download completes. Original files are kept on your device.'; + + @override + String get cloudSettingsUploadQueue => 'Upload Queue'; + + @override + String get cloudSettingsRetryFailed => 'Retry Failed'; + + @override + String get cloudSettingsClearDone => 'Clear Done'; + + @override + String get cloudSettingsRecentUploads => 'Recent Uploads'; @override String get queueEmpty => 'No downloads in queue'; @@ -2028,7 +2120,8 @@ class AppLocalizationsEn extends AppLocalizations { String get albumFolderArtistYearAlbum => 'Artist / [Year] Album'; @override - String get albumFolderArtistYearAlbumSubtitle => 'Albums/Artist Name/[2005] Album Name/'; + String get albumFolderArtistYearAlbumSubtitle => + 'Albums/Artist Name/[2005] Album Name/'; @override String get albumFolderAlbumOnly => 'Album Only'; @@ -2046,7 +2139,8 @@ class AppLocalizationsEn extends AppLocalizations { String get albumFolderArtistAlbumSingles => 'Artist / Album + Singles'; @override - String get albumFolderArtistAlbumSinglesSubtitle => 'Artist/Album/ and Artist/Singles/'; + String get albumFolderArtistAlbumSinglesSubtitle => + 'Artist/Album/ and Artist/Singles/'; @override String get downloadedAlbumDeleteSelected => 'Delete Selected'; @@ -2156,7 +2250,8 @@ class AppLocalizationsEn extends AppLocalizations { String get discographySelectAlbums => 'Select Albums...'; @override - String get discographySelectAlbumsSubtitle => 'Choose specific albums or singles'; + String get discographySelectAlbumsSubtitle => + 'Choose specific albums or singles'; @override String get discographyFetchingTracks => 'Fetching tracks...'; @@ -2203,11 +2298,14 @@ class AppLocalizationsEn extends AppLocalizations { String get allFilesAccessDisabledSubtitle => 'Limited to media folders only'; @override - String get allFilesAccessDescription => 'Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.'; + String get allFilesAccessDescription => + 'Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.'; @override - String get allFilesAccessDeniedMessage => 'Permission was denied. Please enable \'All files access\' manually in system settings.'; + String get allFilesAccessDeniedMessage => + 'Permission was denied. Please enable \'All files access\' manually in system settings.'; @override - String get allFilesAccessDisabledMessage => 'All Files Access disabled. The app will use limited storage access.'; + String get allFilesAccessDisabledMessage => + 'All Files Access disabled. The app will use limited storage access.'; } diff --git a/lib/l10n/app_localizations_es.dart b/lib/l10n/app_localizations_es.dart index 0e487fdc..0796eb72 100644 --- a/lib/l10n/app_localizations_es.dart +++ b/lib/l10n/app_localizations_es.dart @@ -12,7 +12,8 @@ class AppLocalizationsEs extends AppLocalizations { String get appName => 'SpotiFLAC'; @override - String get appDescription => 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; + String get appDescription => + 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; @override String get navHome => 'Home'; @@ -98,13 +99,15 @@ class AppLocalizationsEs extends AppLocalizations { String get historyNoAlbums => 'No album downloads'; @override - String get historyNoAlbumsSubtitle => 'Download multiple tracks from an album to see them here'; + String get historyNoAlbumsSubtitle => + 'Download multiple tracks from an album to see them here'; @override String get historyNoSingles => 'No single downloads'; @override - String get historyNoSinglesSubtitle => 'Single track downloads will appear here'; + String get historyNoSinglesSubtitle => + 'Single track downloads will appear here'; @override String get historySearchHint => 'Search history...'; @@ -152,7 +155,8 @@ class AppLocalizationsEs extends AppLocalizations { String get downloadAskQuality => 'Ask Quality Before Download'; @override - String get downloadAskQualitySubtitle => 'Show quality picker for each download'; + String get downloadAskQualitySubtitle => + 'Show quality picker for each download'; @override String get downloadFilenameFormat => 'Filename Format'; @@ -164,7 +168,8 @@ class AppLocalizationsEs extends AppLocalizations { String get downloadSeparateSingles => 'Separate Singles'; @override - String get downloadSeparateSinglesSubtitle => 'Put single tracks in a separate folder'; + String get downloadSeparateSinglesSubtitle => + 'Put single tracks in a separate folder'; @override String get qualityBest => 'Best Available'; @@ -221,7 +226,8 @@ class AppLocalizationsEs extends AppLocalizations { String get optionsPrimaryProvider => 'Primary Provider'; @override - String get optionsPrimaryProviderSubtitle => 'Service used when searching by track name.'; + String get optionsPrimaryProviderSubtitle => + 'Service used when searching by track name.'; @override String optionsUsingExtension(String extensionName) { @@ -229,13 +235,15 @@ class AppLocalizationsEs extends AppLocalizations { } @override - String get optionsSwitchBack => 'Tap Deezer or Spotify to switch back from extension'; + String get optionsSwitchBack => + 'Tap Deezer or Spotify to switch back from extension'; @override String get optionsAutoFallback => 'Auto Fallback'; @override - String get optionsAutoFallbackSubtitle => 'Try other services if download fails'; + String get optionsAutoFallbackSubtitle => + 'Try other services if download fails'; @override String get optionsUseExtensionProviders => 'Use Extension Providers'; @@ -250,13 +258,15 @@ class AppLocalizationsEs extends AppLocalizations { String get optionsEmbedLyrics => 'Embed Lyrics'; @override - String get optionsEmbedLyricsSubtitle => 'Embed synced lyrics into FLAC files'; + String get optionsEmbedLyricsSubtitle => + 'Embed synced lyrics into FLAC files'; @override String get optionsMaxQualityCover => 'Max Quality Cover'; @override - String get optionsMaxQualityCoverSubtitle => 'Download highest resolution cover art'; + String get optionsMaxQualityCoverSubtitle => + 'Download highest resolution cover art'; @override String get optionsConcurrentDownloads => 'Concurrent Downloads'; @@ -270,7 +280,8 @@ class AppLocalizationsEs extends AppLocalizations { } @override - String get optionsConcurrentWarning => 'Parallel downloads may trigger rate limiting'; + String get optionsConcurrentWarning => + 'Parallel downloads may trigger rate limiting'; @override String get optionsExtensionStore => 'Extension Store'; @@ -282,7 +293,8 @@ class AppLocalizationsEs extends AppLocalizations { String get optionsCheckUpdates => 'Check for Updates'; @override - String get optionsCheckUpdatesSubtitle => 'Notify when new version is available'; + String get optionsCheckUpdatesSubtitle => + 'Notify when new version is available'; @override String get optionsUpdateChannel => 'Update Channel'; @@ -294,13 +306,15 @@ class AppLocalizationsEs extends AppLocalizations { String get optionsUpdateChannelPreview => 'Get preview releases'; @override - String get optionsUpdateChannelWarning => 'Preview may contain bugs or incomplete features'; + String get optionsUpdateChannelWarning => + 'Preview may contain bugs or incomplete features'; @override String get optionsClearHistory => 'Clear Download History'; @override - String get optionsClearHistorySubtitle => 'Remove all downloaded tracks from history'; + String get optionsClearHistorySubtitle => + 'Remove all downloaded tracks from history'; @override String get optionsDetailedLogging => 'Detailed Logging'; @@ -323,7 +337,8 @@ class AppLocalizationsEs extends AppLocalizations { String get optionsSpotifyCredentialsRequired => 'Required - tap to configure'; @override - String get optionsSpotifyWarning => 'Spotify requires your own API credentials. Get them free from developer.spotify.com'; + String get optionsSpotifyWarning => + 'Spotify requires your own API credentials. Get them free from developer.spotify.com'; @override String get extensionsTitle => 'Extensions'; @@ -387,7 +402,8 @@ class AppLocalizationsEs extends AppLocalizations { String get aboutOriginalCreator => 'Creator of the original SpotiFLAC'; @override - String get aboutLogoArtist => 'The talented artist who created our beautiful app logo!'; + String get aboutLogoArtist => + 'The talented artist who created our beautiful app logo!'; @override String get aboutTranslators => 'Translators'; @@ -447,28 +463,34 @@ class AppLocalizationsEs extends AppLocalizations { String get aboutVersion => 'Version'; @override - String get aboutBinimumDesc => 'The creator of QQDL & HiFi API. Without this API, Tidal downloads wouldn\'t exist!'; + String get aboutBinimumDesc => + 'The creator of QQDL & HiFi API. Without this API, Tidal downloads wouldn\'t exist!'; @override - String get aboutSachinsenalDesc => 'The original HiFi project creator. The foundation of Tidal integration!'; + String get aboutSachinsenalDesc => + 'The original HiFi project creator. The foundation of Tidal integration!'; @override - String get aboutSjdonadoDesc => 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; + String get aboutSjdonadoDesc => + 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; @override String get aboutDoubleDouble => 'DoubleDouble'; @override - String get aboutDoubleDoubleDesc => 'Amazing API for Amazon Music downloads. Thank you for making it free!'; + String get aboutDoubleDoubleDesc => + 'Amazing API for Amazon Music downloads. Thank you for making it free!'; @override String get aboutDabMusic => 'DAB Music'; @override - String get aboutDabMusicDesc => 'The best Qobuz streaming API. Hi-Res downloads wouldn\'t be possible without this!'; + String get aboutDabMusicDesc => + 'The best Qobuz streaming API. Hi-Res downloads wouldn\'t be possible without this!'; @override - String get aboutAppDescription => 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; + String get aboutAppDescription => + 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; @override String get albumTitle => 'Album'; @@ -573,7 +595,8 @@ class AppLocalizationsEs extends AppLocalizations { String get setupStoragePermission => 'Storage Permission'; @override - String get setupStoragePermissionSubtitle => 'Required to save downloaded files'; + String get setupStoragePermissionSubtitle => + 'Required to save downloaded files'; @override String get setupStoragePermissionGranted => 'Permission granted'; @@ -600,16 +623,19 @@ class AppLocalizationsEs extends AppLocalizations { String get setupStorageAccessRequired => 'Storage Access Required'; @override - String get setupStorageAccessMessage => 'SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.'; + String get setupStorageAccessMessage => + 'SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.'; @override - String get setupStorageAccessMessageAndroid11 => 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; + String get setupStorageAccessMessageAndroid11 => + 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; @override String get setupOpenSettings => 'Open Settings'; @override - String get setupPermissionDeniedMessage => 'Permission denied. Please grant all permissions to continue.'; + String get setupPermissionDeniedMessage => + 'Permission denied. Please grant all permissions to continue.'; @override String setupPermissionRequired(String permissionType) { @@ -628,7 +654,8 @@ class AppLocalizationsEs extends AppLocalizations { String get setupUseDefaultFolder => 'Use Default Folder?'; @override - String get setupNoFolderSelected => 'No folder selected. Would you like to use the default Music folder?'; + String get setupNoFolderSelected => + 'No folder selected. Would you like to use the default Music folder?'; @override String get setupUseDefault => 'Use Default'; @@ -637,13 +664,15 @@ class AppLocalizationsEs extends AppLocalizations { String get setupDownloadLocationTitle => 'Download Location'; @override - String get setupDownloadLocationIosMessage => 'On iOS, downloads are saved to the app\'s Documents folder. You can access them via the Files app.'; + String get setupDownloadLocationIosMessage => + 'On iOS, downloads are saved to the app\'s Documents folder. You can access them via the Files app.'; @override String get setupAppDocumentsFolder => 'App Documents Folder'; @override - String get setupAppDocumentsFolderSubtitle => 'Recommended - accessible via Files app'; + String get setupAppDocumentsFolderSubtitle => + 'Recommended - accessible via Files app'; @override String get setupChooseFromFiles => 'Choose from Files'; @@ -652,10 +681,12 @@ class AppLocalizationsEs extends AppLocalizations { String get setupChooseFromFilesSubtitle => 'Select iCloud or other location'; @override - String get setupIosEmptyFolderWarning => 'iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.'; + String get setupIosEmptyFolderWarning => + 'iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.'; @override - String get setupIcloudNotSupported => 'iCloud Drive is not supported. Please use the app Documents folder.'; + String get setupIcloudNotSupported => + 'iCloud Drive is not supported. Please use the app Documents folder.'; @override String get setupDownloadInFlac => 'Download Spotify tracks in FLAC'; @@ -682,7 +713,8 @@ class AppLocalizationsEs extends AppLocalizations { String get setupStorageRequired => 'Storage Permission Required'; @override - String get setupStorageDescription => 'SpotiFLAC needs storage permission to save your downloaded music files.'; + String get setupStorageDescription => + 'SpotiFLAC needs storage permission to save your downloaded music files.'; @override String get setupNotificationGranted => 'Notification Permission Granted!'; @@ -691,7 +723,8 @@ class AppLocalizationsEs extends AppLocalizations { String get setupNotificationEnable => 'Enable Notifications'; @override - String get setupNotificationDescription => 'Get notified when downloads complete or require attention.'; + String get setupNotificationDescription => + 'Get notified when downloads complete or require attention.'; @override String get setupFolderSelected => 'Download Folder Selected!'; @@ -700,7 +733,8 @@ class AppLocalizationsEs extends AppLocalizations { String get setupFolderChoose => 'Choose Download Folder'; @override - String get setupFolderDescription => 'Select a folder where your downloaded music will be saved.'; + String get setupFolderDescription => + 'Select a folder where your downloaded music will be saved.'; @override String get setupChangeFolder => 'Change Folder'; @@ -712,7 +746,8 @@ class AppLocalizationsEs extends AppLocalizations { String get setupSpotifyApiOptional => 'Spotify API (Optional)'; @override - String get setupSpotifyApiDescription => 'Add your Spotify API credentials for better search results and access to Spotify-exclusive content.'; + String get setupSpotifyApiDescription => + 'Add your Spotify API credentials for better search results and access to Spotify-exclusive content.'; @override String get setupUseSpotifyApi => 'Use Spotify API'; @@ -730,7 +765,8 @@ class AppLocalizationsEs extends AppLocalizations { String get setupEnterClientSecret => 'Enter Spotify Client Secret'; @override - String get setupGetFreeCredentials => 'Get your free API credentials from the Spotify Developer Dashboard.'; + String get setupGetFreeCredentials => + 'Get your free API credentials from the Spotify Developer Dashboard.'; @override String get setupEnableNotifications => 'Enable Notifications'; @@ -739,10 +775,12 @@ class AppLocalizationsEs extends AppLocalizations { String get setupProceedToNextStep => 'You can now proceed to the next step.'; @override - String get setupNotificationProgressDescription => 'You will receive download progress notifications.'; + String get setupNotificationProgressDescription => + 'You will receive download progress notifications.'; @override - String get setupNotificationBackgroundDescription => 'Get notified about download progress and completion. This helps you track downloads when the app is in background.'; + String get setupNotificationBackgroundDescription => + 'Get notified about download progress and completion. This helps you track downloads when the app is in background.'; @override String get setupSkipForNow => 'Skip for now'; @@ -760,10 +798,12 @@ class AppLocalizationsEs extends AppLocalizations { String get setupSkipAndStart => 'Skip & Start'; @override - String get setupAllowAccessToManageFiles => 'Please enable \"Allow access to manage all files\" in the next screen.'; + String get setupAllowAccessToManageFiles => + 'Please enable \"Allow access to manage all files\" in the next screen.'; @override - String get setupGetCredentialsFromSpotify => 'Get credentials from developer.spotify.com'; + String get setupGetCredentialsFromSpotify => + 'Get credentials from developer.spotify.com'; @override String get dialogCancel => 'Cancel'; @@ -814,7 +854,8 @@ class AppLocalizationsEs extends AppLocalizations { String get dialogDiscardChanges => 'Discard Changes?'; @override - String get dialogUnsavedChanges => 'You have unsaved changes. Do you want to discard them?'; + String get dialogUnsavedChanges => + 'You have unsaved changes. Do you want to discard them?'; @override String get dialogDownloadFailed => 'Download Failed'; @@ -832,7 +873,8 @@ class AppLocalizationsEs extends AppLocalizations { String get dialogClearAll => 'Clear All'; @override - String get dialogClearAllDownloads => 'Are you sure you want to clear all downloads?'; + String get dialogClearAllDownloads => + 'Are you sure you want to clear all downloads?'; @override String get dialogRemoveFromDevice => 'Remove from device?'; @@ -841,7 +883,8 @@ class AppLocalizationsEs extends AppLocalizations { String get dialogRemoveExtension => 'Remove Extension'; @override - String get dialogRemoveExtensionMessage => 'Are you sure you want to remove this extension? This cannot be undone.'; + String get dialogRemoveExtensionMessage => + 'Are you sure you want to remove this extension? This cannot be undone.'; @override String get dialogUninstallExtension => 'Uninstall Extension?'; @@ -855,7 +898,8 @@ class AppLocalizationsEs extends AppLocalizations { String get dialogClearHistoryTitle => 'Clear History'; @override - String get dialogClearHistoryMessage => 'Are you sure you want to clear all download history? This cannot be undone.'; + String get dialogClearHistoryMessage => + 'Are you sure you want to clear all download history? This cannot be undone.'; @override String get dialogDeleteSelectedTitle => 'Delete Selected'; @@ -950,7 +994,8 @@ class AppLocalizationsEs extends AppLocalizations { String get snackbarProviderPrioritySaved => 'Provider priority saved'; @override - String get snackbarMetadataProviderSaved => 'Metadata provider priority saved'; + String get snackbarMetadataProviderSaved => + 'Metadata provider priority saved'; @override String snackbarExtensionInstalled(String extensionName) { @@ -972,7 +1017,8 @@ class AppLocalizationsEs extends AppLocalizations { String get errorRateLimited => 'Rate Limited'; @override - String get errorRateLimitedMessage => 'Too many requests. Please wait a moment before searching again.'; + String get errorRateLimitedMessage => + 'Too many requests. Please wait a moment before searching again.'; @override String errorFailedToLoad(String item) { @@ -1139,19 +1185,23 @@ class AppLocalizationsEs extends AppLocalizations { String get folderOrganizationByArtistAlbum => 'Artist/Album'; @override - String get folderOrganizationDescription => 'Organize downloaded files into folders'; + String get folderOrganizationDescription => + 'Organize downloaded files into folders'; @override String get folderOrganizationNoneSubtitle => 'All files in download folder'; @override - String get folderOrganizationByArtistSubtitle => 'Separate folder for each artist'; + String get folderOrganizationByArtistSubtitle => + 'Separate folder for each artist'; @override - String get folderOrganizationByAlbumSubtitle => 'Separate folder for each album'; + String get folderOrganizationByAlbumSubtitle => + 'Separate folder for each album'; @override - String get folderOrganizationByArtistAlbumSubtitle => 'Nested folders for artist and album'; + String get folderOrganizationByArtistAlbumSubtitle => + 'Nested folders for artist and album'; @override String get updateAvailable => 'Update Available'; @@ -1210,10 +1260,12 @@ class AppLocalizationsEs extends AppLocalizations { String get providerPriorityTitle => 'Provider Priority'; @override - String get providerPriorityDescription => 'Drag to reorder download providers. The app will try providers from top to bottom when downloading tracks.'; + String get providerPriorityDescription => + 'Drag to reorder download providers. The app will try providers from top to bottom when downloading tracks.'; @override - String get providerPriorityInfo => 'If a track is not available on the first provider, the app will automatically try the next one.'; + String get providerPriorityInfo => + 'If a track is not available on the first provider, the app will automatically try the next one.'; @override String get providerBuiltIn => 'Built-in'; @@ -1225,16 +1277,19 @@ class AppLocalizationsEs extends AppLocalizations { String get metadataProviderPriority => 'Metadata Provider Priority'; @override - String get metadataProviderPrioritySubtitle => 'Order used when fetching track metadata'; + String get metadataProviderPrioritySubtitle => + 'Order used when fetching track metadata'; @override String get metadataProviderPriorityTitle => 'Metadata Priority'; @override - String get metadataProviderPriorityDescription => 'Drag to reorder metadata providers. The app will try providers from top to bottom when searching for tracks and fetching metadata.'; + String get metadataProviderPriorityDescription => + 'Drag to reorder metadata providers. The app will try providers from top to bottom when searching for tracks and fetching metadata.'; @override - String get metadataProviderPriorityInfo => 'Deezer has no rate limits and is recommended as primary. Spotify may rate limit after many requests.'; + String get metadataProviderPriorityInfo => + 'Deezer has no rate limits and is recommended as primary. Spotify may rate limit after many requests.'; @override String get metadataNoRateLimits => 'No rate limits'; @@ -1306,16 +1361,19 @@ class AppLocalizationsEs extends AppLocalizations { String get logIssueSummary => 'Issue Summary'; @override - String get logIspBlockingDescription => 'Your ISP may be blocking access to download services'; + String get logIspBlockingDescription => + 'Your ISP may be blocking access to download services'; @override - String get logIspBlockingSuggestion => 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; + String get logIspBlockingSuggestion => + 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; @override String get logRateLimitedDescription => 'Too many requests to the service'; @override - String get logRateLimitedSuggestion => 'Wait a few minutes before trying again'; + String get logRateLimitedSuggestion => + 'Wait a few minutes before trying again'; @override String get logNetworkErrorDescription => 'Connection issues detected'; @@ -1324,10 +1382,12 @@ class AppLocalizationsEs extends AppLocalizations { String get logNetworkErrorSuggestion => 'Check your internet connection'; @override - String get logTrackNotFoundDescription => 'Some tracks could not be found on download services'; + String get logTrackNotFoundDescription => + 'Some tracks could not be found on download services'; @override - String get logTrackNotFoundSuggestion => 'The track may not be available in lossless quality'; + String get logTrackNotFoundSuggestion => + 'The track may not be available in lossless quality'; @override String logTotalErrors(int count) { @@ -1353,7 +1413,8 @@ class AppLocalizationsEs extends AppLocalizations { String get credentialsTitle => 'Spotify Credentials'; @override - String get credentialsDescription => 'Enter your Client ID and Secret to use your own Spotify application quota.'; + String get credentialsDescription => + 'Enter your Client ID and Secret to use your own Spotify application quota.'; @override String get credentialsClientId => 'Client ID'; @@ -1407,7 +1468,8 @@ class AppLocalizationsEs extends AppLocalizations { String get lyricsMode => 'Lyrics Mode'; @override - String get lyricsModeDescription => 'Choose how lyrics are saved with your downloads'; + String get lyricsModeDescription => + 'Choose how lyrics are saved with your downloads'; @override String get lyricsModeEmbed => 'Embed in file'; @@ -1419,7 +1481,8 @@ class AppLocalizationsEs extends AppLocalizations { String get lyricsModeExternal => 'External .lrc file'; @override - String get lyricsModeExternalSubtitle => 'Separate .lrc file for players like Samsung Music'; + String get lyricsModeExternalSubtitle => + 'Separate .lrc file for players like Samsung Music'; @override String get lyricsModeBoth => 'Both'; @@ -1579,7 +1642,8 @@ class AppLocalizationsEs extends AppLocalizations { String get trackDeleteConfirmTitle => 'Remove from device?'; @override - String get trackDeleteConfirmMessage => 'This will permanently delete the downloaded file and remove it from your history.'; + String get trackDeleteConfirmMessage => + 'This will permanently delete the downloaded file and remove it from your history.'; @override String trackCannotOpen(String message) { @@ -1731,13 +1795,15 @@ class AppLocalizationsEs extends AppLocalizations { String get extensionsNoExtensions => 'No extensions installed'; @override - String get extensionsNoExtensionsSubtitle => 'Install .spotiflac-ext files to add new providers'; + String get extensionsNoExtensionsSubtitle => + 'Install .spotiflac-ext files to add new providers'; @override String get extensionsInstallButton => 'Install Extension'; @override - String get extensionsInfoTip => 'Extensions can add new metadata and download providers. Only install extensions from trusted sources.'; + String get extensionsInfoTip => + 'Extensions can add new metadata and download providers. Only install extensions from trusted sources.'; @override String get extensionsInstalledSuccess => 'Extension installed successfully'; @@ -1749,16 +1815,19 @@ class AppLocalizationsEs extends AppLocalizations { String get extensionsDownloadPrioritySubtitle => 'Set download service order'; @override - String get extensionsNoDownloadProvider => 'No extensions with download provider'; + String get extensionsNoDownloadProvider => + 'No extensions with download provider'; @override String get extensionsMetadataPriority => 'Metadata Priority'; @override - String get extensionsMetadataPrioritySubtitle => 'Set search & metadata source order'; + String get extensionsMetadataPrioritySubtitle => + 'Set search & metadata source order'; @override - String get extensionsNoMetadataProvider => 'No extensions with metadata provider'; + String get extensionsNoMetadataProvider => + 'No extensions with metadata provider'; @override String get extensionsSearchProvider => 'Search Provider'; @@ -1767,7 +1836,8 @@ class AppLocalizationsEs extends AppLocalizations { String get extensionsNoCustomSearch => 'No extensions with custom search'; @override - String get extensionsSearchProviderDescription => 'Choose which service to use for searching tracks'; + String get extensionsSearchProviderDescription => + 'Choose which service to use for searching tracks'; @override String get extensionsCustomSearch => 'Custom search'; @@ -1809,7 +1879,8 @@ class AppLocalizationsEs extends AppLocalizations { String get enableLossyOptionSubtitleOn => 'Lossy quality option is available'; @override - String get enableLossyOptionSubtitleOff => 'Downloads FLAC then converts to lossy format'; + String get enableLossyOptionSubtitleOff => + 'Downloads FLAC then converts to lossy format'; @override String get lossyFormat => 'Lossy Format'; @@ -1821,10 +1892,12 @@ class AppLocalizationsEs extends AppLocalizations { String get lossyFormatMp3Subtitle => '320kbps, best compatibility'; @override - String get lossyFormatOpusSubtitle => '128kbps, better quality at smaller size'; + String get lossyFormatOpusSubtitle => + '128kbps, better quality at smaller size'; @override - String get qualityNote => 'Actual quality depends on track availability from the service'; + String get qualityNote => + 'Actual quality depends on track availability from the service'; @override String get downloadAskBeforeDownload => 'Ask Before Download'; @@ -1914,13 +1987,15 @@ class AppLocalizationsEs extends AppLocalizations { String get queueClearAll => 'Clear All'; @override - String get queueClearAllMessage => 'Are you sure you want to clear all downloads?'; + String get queueClearAllMessage => + 'Are you sure you want to clear all downloads?'; @override String get queueExportFailed => 'Export'; @override - String get queueExportFailedSuccess => 'Failed downloads exported to TXT file'; + String get queueExportFailedSuccess => + 'Failed downloads exported to TXT file'; @override String get queueExportFailedClear => 'Clear Failed'; @@ -1932,7 +2007,8 @@ class AppLocalizationsEs extends AppLocalizations { String get settingsAutoExportFailed => 'Auto-export failed downloads'; @override - String get settingsAutoExportFailedSubtitle => 'Save failed downloads to TXT file automatically'; + String get settingsAutoExportFailedSubtitle => + 'Save failed downloads to TXT file automatically'; @override String get settingsDownloadNetwork => 'Download Network'; @@ -1944,7 +2020,8 @@ class AppLocalizationsEs extends AppLocalizations { String get settingsDownloadNetworkWifiOnly => 'WiFi Only'; @override - String get settingsDownloadNetworkSubtitle => 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; + String get settingsDownloadNetworkSubtitle => + 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; @override String get settingsCloudSave => 'Cloud Save'; @@ -1962,7 +2039,8 @@ class AppLocalizationsEs extends AppLocalizations { String get cloudSettingsEnable => 'Enable Cloud Upload'; @override - String get cloudSettingsEnableSubtitle => 'Automatically upload files after download completes'; + String get cloudSettingsEnableSubtitle => + 'Automatically upload files after download completes'; @override String get cloudSettingsSectionProvider => 'Cloud Provider'; @@ -1971,7 +2049,8 @@ class AppLocalizationsEs extends AppLocalizations { String get cloudSettingsProvider => 'Provider'; @override - String get cloudSettingsProviderDescription => 'Select where to upload your downloaded files'; + String get cloudSettingsProviderDescription => + 'Select where to upload your downloaded files'; @override String get cloudSettingsSectionServer => 'Server Configuration'; @@ -1992,7 +2071,20 @@ class AppLocalizationsEs extends AppLocalizations { String get cloudSettingsTestConnection => 'Test Connection'; @override - String get cloudSettingsInfo => 'Downloaded files will be automatically uploaded to your cloud storage after download completes. Original files are kept on your device.'; + String get cloudSettingsInfo => + 'Downloaded files will be automatically uploaded to your cloud storage after download completes. Original files are kept on your device.'; + + @override + String get cloudSettingsUploadQueue => 'Upload Queue'; + + @override + String get cloudSettingsRetryFailed => 'Retry Failed'; + + @override + String get cloudSettingsClearDone => 'Clear Done'; + + @override + String get cloudSettingsRecentUploads => 'Recent Uploads'; @override String get queueEmpty => 'No downloads in queue'; @@ -2028,7 +2120,8 @@ class AppLocalizationsEs extends AppLocalizations { String get albumFolderArtistYearAlbum => 'Artist / [Year] Album'; @override - String get albumFolderArtistYearAlbumSubtitle => 'Albums/Artist Name/[2005] Album Name/'; + String get albumFolderArtistYearAlbumSubtitle => + 'Albums/Artist Name/[2005] Album Name/'; @override String get albumFolderAlbumOnly => 'Album Only'; @@ -2046,7 +2139,8 @@ class AppLocalizationsEs extends AppLocalizations { String get albumFolderArtistAlbumSingles => 'Artist / Album + Singles'; @override - String get albumFolderArtistAlbumSinglesSubtitle => 'Artist/Album/ and Artist/Singles/'; + String get albumFolderArtistAlbumSinglesSubtitle => + 'Artist/Album/ and Artist/Singles/'; @override String get downloadedAlbumDeleteSelected => 'Delete Selected'; @@ -2156,7 +2250,8 @@ class AppLocalizationsEs extends AppLocalizations { String get discographySelectAlbums => 'Select Albums...'; @override - String get discographySelectAlbumsSubtitle => 'Choose specific albums or singles'; + String get discographySelectAlbumsSubtitle => + 'Choose specific albums or singles'; @override String get discographyFetchingTracks => 'Fetching tracks...'; @@ -2203,24 +2298,28 @@ class AppLocalizationsEs extends AppLocalizations { String get allFilesAccessDisabledSubtitle => 'Limited to media folders only'; @override - String get allFilesAccessDescription => 'Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.'; + String get allFilesAccessDescription => + 'Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.'; @override - String get allFilesAccessDeniedMessage => 'Permission was denied. Please enable \'All files access\' manually in system settings.'; + String get allFilesAccessDeniedMessage => + 'Permission was denied. Please enable \'All files access\' manually in system settings.'; @override - String get allFilesAccessDisabledMessage => 'All Files Access disabled. The app will use limited storage access.'; + String get allFilesAccessDisabledMessage => + 'All Files Access disabled. The app will use limited storage access.'; } /// The translations for Spanish Castilian, as used in Spain (`es_ES`). class AppLocalizationsEsEs extends AppLocalizationsEs { - AppLocalizationsEsEs(): super('es_ES'); + AppLocalizationsEsEs() : super('es_ES'); @override String get appName => 'SpotiFLAC'; @override - String get appDescription => 'Descargue pistas de Spotify con calidad sin pérdida de Tidal, Qobuz y Amazon Music.'; + String get appDescription => + 'Descargue pistas de Spotify con calidad sin pérdida de Tidal, Qobuz y Amazon Music.'; @override String get navHome => 'Inicio'; @@ -2249,7 +2348,8 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get homeSubtitle => 'Pegar enlace de Spotify o buscar por nombre'; @override - String get homeSupports => 'Soportes: Pista, Álbum, Lista de reproducción, URLs de Artistas'; + String get homeSupports => + 'Soportes: Pista, Álbum, Lista de reproducción, URLs de Artistas'; @override String get homeRecent => 'Recientes'; @@ -2300,19 +2400,22 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get historyNoDownloads => 'No hay historial de descargas'; @override - String get historyNoDownloadsSubtitle => 'Las pistas descargadas aparecerán aquí'; + String get historyNoDownloadsSubtitle => + 'Las pistas descargadas aparecerán aquí'; @override String get historyNoAlbums => 'No hay descargas de álbum'; @override - String get historyNoAlbumsSubtitle => 'Descargar múltiples pistas de un álbum para verlas aquí'; + String get historyNoAlbumsSubtitle => + 'Descargar múltiples pistas de un álbum para verlas aquí'; @override String get historyNoSingles => 'No hay descargas'; @override - String get historyNoSinglesSubtitle => 'Las descargas de una sola pista aparecerán aquí'; + String get historyNoSinglesSubtitle => + 'Las descargas de una sola pista aparecerán aquí'; @override String get settingsTitle => 'Ajustes'; @@ -2357,7 +2460,8 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get downloadAskQuality => 'Preguntar calidad antes de descargar'; @override - String get downloadAskQualitySubtitle => 'Mostrar selector de calidad para cada descarga'; + String get downloadAskQualitySubtitle => + 'Mostrar selector de calidad para cada descarga'; @override String get downloadFilenameFormat => 'Formato del nombre del archivo'; @@ -2369,7 +2473,8 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get downloadSeparateSingles => 'Separar Pistas'; @override - String get downloadSeparateSinglesSubtitle => 'Colocar pistas individuales en una carpeta separada'; + String get downloadSeparateSinglesSubtitle => + 'Colocar pistas individuales en una carpeta separada'; @override String get qualityBest => 'Mejor disponible'; @@ -2402,7 +2507,8 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get appearanceDynamicColor => 'Color dinámico'; @override - String get appearanceDynamicColorSubtitle => 'Usar colores de tu fondo de pantalla'; + String get appearanceDynamicColorSubtitle => + 'Usar colores de tu fondo de pantalla'; @override String get appearanceAccentColor => 'Color Secundario'; @@ -2426,7 +2532,8 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get optionsPrimaryProvider => 'Proveedor Principal'; @override - String get optionsPrimaryProviderSubtitle => 'Servicio usado al buscar por nombre de la pista.'; + String get optionsPrimaryProviderSubtitle => + 'Servicio usado al buscar por nombre de la pista.'; @override String optionsUsingExtension(String extensionName) { @@ -2434,34 +2541,40 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { } @override - String get optionsSwitchBack => 'Toque Deezer o Spotify para volver desde la extensión'; + String get optionsSwitchBack => + 'Toque Deezer o Spotify para volver desde la extensión'; @override String get optionsAutoFallback => 'Alternativa automática'; @override - String get optionsAutoFallbackSubtitle => 'Pruebe otros servicios si falla la descarga'; + String get optionsAutoFallbackSubtitle => + 'Pruebe otros servicios si falla la descarga'; @override String get optionsUseExtensionProviders => 'Usar proveedores de extensiones'; @override - String get optionsUseExtensionProvidersOn => 'Las extensiones serán probadas primero'; + String get optionsUseExtensionProvidersOn => + 'Las extensiones serán probadas primero'; @override - String get optionsUseExtensionProvidersOff => 'Utilizando sólo proveedores integrados'; + String get optionsUseExtensionProvidersOff => + 'Utilizando sólo proveedores integrados'; @override String get optionsEmbedLyrics => 'Incrustar Letras'; @override - String get optionsEmbedLyricsSubtitle => 'Insertar letras sincronizadas en archivos FLAC'; + String get optionsEmbedLyricsSubtitle => + 'Insertar letras sincronizadas en archivos FLAC'; @override String get optionsMaxQualityCover => 'Carátula de calidad máxima'; @override - String get optionsMaxQualityCoverSubtitle => 'Descargar carátula de resolución máxima'; + String get optionsMaxQualityCoverSubtitle => + 'Descargar carátula de resolución máxima'; @override String get optionsConcurrentDownloads => 'Descargas Simultáneas'; @@ -2475,19 +2588,22 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { } @override - String get optionsConcurrentWarning => 'Las descargas paralelas pueden activar la limitación de velocidad'; + String get optionsConcurrentWarning => + 'Las descargas paralelas pueden activar la limitación de velocidad'; @override String get optionsExtensionStore => 'Tienda de extensiones'; @override - String get optionsExtensionStoreSubtitle => 'Mostrar pestaña de tienda en la navegación'; + String get optionsExtensionStoreSubtitle => + 'Mostrar pestaña de tienda en la navegación'; @override String get optionsCheckUpdates => 'Comprobar actualizaciones'; @override - String get optionsCheckUpdatesSubtitle => 'Notificar cuando una nueva versión esté disponible'; + String get optionsCheckUpdatesSubtitle => + 'Notificar cuando una nueva versión esté disponible'; @override String get optionsUpdateChannel => 'Tipo de actualizaciones'; @@ -2499,19 +2615,22 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get optionsUpdateChannelPreview => 'Versión preliminar'; @override - String get optionsUpdateChannelWarning => 'La Versión preliminar puede contener errores o características incompletas'; + String get optionsUpdateChannelWarning => + 'La Versión preliminar puede contener errores o características incompletas'; @override String get optionsClearHistory => 'Borrar el historial de descargas'; @override - String get optionsClearHistorySubtitle => 'Eliminar todas las pistas descargadas del historial'; + String get optionsClearHistorySubtitle => + 'Eliminar todas las pistas descargadas del historial'; @override String get optionsDetailedLogging => 'Registro detallado'; @override - String get optionsDetailedLoggingOn => 'Registros detallados están siendo registrados'; + String get optionsDetailedLoggingOn => + 'Registros detallados están siendo registrados'; @override String get optionsDetailedLoggingOff => 'Habilitar para informes de errores'; @@ -2525,10 +2644,12 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { } @override - String get optionsSpotifyCredentialsRequired => 'Requerido - toque para configurar'; + String get optionsSpotifyCredentialsRequired => + 'Requerido - toque para configurar'; @override - String get optionsSpotifyWarning => 'Spotify requiere tus propias credenciales API. Obténgalas gratis de developer.spotify.com'; + String get optionsSpotifyWarning => + 'Spotify requiere tus propias credenciales API. Obténgalas gratis de developer.spotify.com'; @override String get extensionsTitle => 'Extensiones'; @@ -2540,7 +2661,8 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get extensionsNone => 'No hay extensiones instaladas'; @override - String get extensionsNoneSubtitle => 'Instalar extensiones desde la pestaña Tienda'; + String get extensionsNoneSubtitle => + 'Instalar extensiones desde la pestaña Tienda'; @override String get extensionsEnabled => 'Habilitado'; @@ -2592,7 +2714,8 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get aboutOriginalCreator => 'Creador original de SpotiFLAC'; @override - String get aboutLogoArtist => '¡El talentoso artista que creó nuestro hermoso logo!'; + String get aboutLogoArtist => + '¡El talentoso artista que creó nuestro hermoso logo!'; @override String get aboutSpecialThanks => 'Agradecimientos especiales'; @@ -2610,13 +2733,15 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get aboutReportIssue => 'Reportar un problema'; @override - String get aboutReportIssueSubtitle => 'Reporta cualquier problema que encuentres'; + String get aboutReportIssueSubtitle => + 'Reporta cualquier problema que encuentres'; @override String get aboutFeatureRequest => 'Sugerir una función'; @override - String get aboutFeatureRequestSubtitle => 'Sugerir nuevas funciones para la aplicación'; + String get aboutFeatureRequestSubtitle => + 'Sugerir nuevas funciones para la aplicación'; @override String get aboutSupport => 'Soporte'; @@ -2634,25 +2759,30 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get aboutVersion => 'Versión'; @override - String get aboutBinimumDesc => 'El creador de la API QQDL & Hi-Fi. ¡Sin esta API, las descargas de Tidal no existiría!'; + String get aboutBinimumDesc => + 'El creador de la API QQDL & Hi-Fi. ¡Sin esta API, las descargas de Tidal no existiría!'; @override - String get aboutSachinsenalDesc => 'El creador original del proyecto Hi-Fi. ¡La base de la integración de Tidal!'; + String get aboutSachinsenalDesc => + 'El creador original del proyecto Hi-Fi. ¡La base de la integración de Tidal!'; @override String get aboutDoubleDouble => 'DoubleDouble'; @override - String get aboutDoubleDoubleDesc => 'API increible para descargas de Amazon Music. ¡Gracias por hacerla gratis!'; + String get aboutDoubleDoubleDesc => + 'API increible para descargas de Amazon Music. ¡Gracias por hacerla gratis!'; @override String get aboutDabMusic => 'Música DAB'; @override - String get aboutDabMusicDesc => 'La mejor API de streaming de Qobuz. ¡Las descargas de Hi-Res no serían posibles sin esto!'; + String get aboutDabMusicDesc => + 'La mejor API de streaming de Qobuz. ¡Las descargas de Hi-Res no serían posibles sin esto!'; @override - String get aboutAppDescription => 'Descarga pistas de Spotify con calidad sin pérdida de Tidal, Qobuz y Amazon Music.'; + String get aboutAppDescription => + 'Descarga pistas de Spotify con calidad sin pérdida de Tidal, Qobuz y Amazon Music.'; @override String get albumTitle => 'Álbum'; @@ -2757,7 +2887,8 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get setupStoragePermission => 'Permiso de almacenamiento'; @override - String get setupStoragePermissionSubtitle => 'Necesario para guardar los archivos descargados'; + String get setupStoragePermissionSubtitle => + 'Necesario para guardar los archivos descargados'; @override String get setupStoragePermissionGranted => 'Permiso aprobado'; @@ -2784,16 +2915,19 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get setupStorageAccessRequired => 'Acceso al almacenamiento requerido'; @override - String get setupStorageAccessMessage => 'SpotiFLAC necesita permiso de \"Todos los archivos de acceso\" para guardar los archivos de música en la carpeta elegida.'; + String get setupStorageAccessMessage => + 'SpotiFLAC necesita permiso de \"Todos los archivos de acceso\" para guardar los archivos de música en la carpeta elegida.'; @override - String get setupStorageAccessMessageAndroid11 => 'Android 11+ requiere permiso \"Todos los archivos de acceso\" para guardar los archivos en la carpeta de descargas elegida.'; + String get setupStorageAccessMessageAndroid11 => + 'Android 11+ requiere permiso \"Todos los archivos de acceso\" para guardar los archivos en la carpeta de descargas elegida.'; @override String get setupOpenSettings => 'Abrir ajustes'; @override - String get setupPermissionDeniedMessage => 'Permiso denegado. Por favor, conceda todos los permisos para continuar.'; + String get setupPermissionDeniedMessage => + 'Permiso denegado. Por favor, conceda todos los permisos para continuar.'; @override String setupPermissionRequired(String permissionType) { @@ -2812,7 +2946,8 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get setupUseDefaultFolder => '¿Usar carpeta por defecto?'; @override - String get setupNoFolderSelected => 'No se ha seleccionado ninguna carpeta. ¿Desea utilizar la carpeta por defecto?'; + String get setupNoFolderSelected => + 'No se ha seleccionado ninguna carpeta. ¿Desea utilizar la carpeta por defecto?'; @override String get setupUseDefault => 'Usar por defecto'; @@ -2821,22 +2956,26 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get setupDownloadLocationTitle => 'Ubicación de descarga'; @override - String get setupDownloadLocationIosMessage => 'En iOS, las descargas se guardan en la carpeta de documentos de la aplicación. Puede acceder a ellas desde la aplicación Archivos.'; + String get setupDownloadLocationIosMessage => + 'En iOS, las descargas se guardan en la carpeta de documentos de la aplicación. Puede acceder a ellas desde la aplicación Archivos.'; @override String get setupAppDocumentsFolder => 'Carpeta de documentos de App'; @override - String get setupAppDocumentsFolderSubtitle => 'Recomendado - accesible desde la aplicación Archivos'; + String get setupAppDocumentsFolderSubtitle => + 'Recomendado - accesible desde la aplicación Archivos'; @override String get setupChooseFromFiles => 'Elegir de archivos'; @override - String get setupChooseFromFilesSubtitle => 'Seleccione iCloud u otra ubicación'; + String get setupChooseFromFilesSubtitle => + 'Seleccione iCloud u otra ubicación'; @override - String get setupIosEmptyFolderWarning => 'Limitación de iOS: No se pueden seleccionar carpetas vacías. Elige una carpeta con al menos un archivo.'; + String get setupIosEmptyFolderWarning => + 'Limitación de iOS: No se pueden seleccionar carpetas vacías. Elige una carpeta con al menos un archivo.'; @override String get setupDownloadInFlac => 'Descargar pistas de Spotify en FLAC'; @@ -2863,16 +3002,19 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get setupStorageRequired => 'Permiso de almacenamiento requerido'; @override - String get setupStorageDescription => 'SpotiFLAC necesita permiso de almacenamiento para guardar sus archivos de música descargados.'; + String get setupStorageDescription => + 'SpotiFLAC necesita permiso de almacenamiento para guardar sus archivos de música descargados.'; @override - String get setupNotificationGranted => '¡Acceso a las notificaciones permitido!'; + String get setupNotificationGranted => + '¡Acceso a las notificaciones permitido!'; @override String get setupNotificationEnable => 'Activar notificaciones'; @override - String get setupNotificationDescription => 'Recibe notificaciones cuando las descargas completen o requieran atención.'; + String get setupNotificationDescription => + 'Recibe notificaciones cuando las descargas completen o requieran atención.'; @override String get setupFolderSelected => '¡Carpeta de descarga seleccionada!'; @@ -2881,7 +3023,8 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get setupFolderChoose => 'Cambiar carpeta de descargas'; @override - String get setupFolderDescription => 'Seleccione una carpeta donde se guardará la música descargada.'; + String get setupFolderDescription => + 'Seleccione una carpeta donde se guardará la música descargada.'; @override String get setupChangeFolder => 'Cambiar carpeta'; @@ -2893,13 +3036,15 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get setupSpotifyApiOptional => 'API de Spotify (opcional)'; @override - String get setupSpotifyApiDescription => 'Añade tus credenciales de la API de Spotify para mejores resultados de búsqueda y acceso al contenido exclusivo de Spotify.'; + String get setupSpotifyApiDescription => + 'Añade tus credenciales de la API de Spotify para mejores resultados de búsqueda y acceso al contenido exclusivo de Spotify.'; @override String get setupUseSpotifyApi => 'Usar API de Spotify'; @override - String get setupEnterCredentialsBelow => 'Ingresa tus credenciales a continuación'; + String get setupEnterCredentialsBelow => + 'Ingresa tus credenciales a continuación'; @override String get setupUsingDeezer => 'Usando Deezer (no se necesita cuenta)'; @@ -2911,19 +3056,23 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get setupEnterClientSecret => 'Ingresa el Client Secret de Spotify'; @override - String get setupGetFreeCredentials => 'Obtén tus credenciales gratuitas de la API desde el Spotify Developer Dashboard.'; + String get setupGetFreeCredentials => + 'Obtén tus credenciales gratuitas de la API desde el Spotify Developer Dashboard.'; @override String get setupEnableNotifications => 'Activar notificaciones'; @override - String get setupProceedToNextStep => 'Ahora puedes continuar con el siguiente paso.'; + String get setupProceedToNextStep => + 'Ahora puedes continuar con el siguiente paso.'; @override - String get setupNotificationProgressDescription => 'Recibirás notificaciones de progreso de descargas.'; + String get setupNotificationProgressDescription => + 'Recibirás notificaciones de progreso de descargas.'; @override - String get setupNotificationBackgroundDescription => 'Recibe notificaciones sobre el progreso de la descarga y la finalización. Esto te ayuda a rastrear las descargas cuando la aplicación está en segundo plano.'; + String get setupNotificationBackgroundDescription => + 'Recibe notificaciones sobre el progreso de la descarga y la finalización. Esto te ayuda a rastrear las descargas cuando la aplicación está en segundo plano.'; @override String get setupSkipForNow => 'Omitir por ahora'; @@ -2941,10 +3090,12 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get setupSkipAndStart => 'Saltar y empezar'; @override - String get setupAllowAccessToManageFiles => 'Por favor, activa \"Permitir el acceso para gestionar todos los archivos\" en la siguiente pantalla.'; + String get setupAllowAccessToManageFiles => + 'Por favor, activa \"Permitir el acceso para gestionar todos los archivos\" en la siguiente pantalla.'; @override - String get setupGetCredentialsFromSpotify => 'Obtener credenciales de developer.spotify.com'; + String get setupGetCredentialsFromSpotify => + 'Obtener credenciales de developer.spotify.com'; @override String get dialogCancel => 'Cancelar'; @@ -2995,7 +3146,8 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get dialogDiscardChanges => '¿Descartar cambios?'; @override - String get dialogUnsavedChanges => 'Tienes cambios sin guardar. ¿Quieres descartarlos?'; + String get dialogUnsavedChanges => + 'Tienes cambios sin guardar. ¿Quieres descartarlos?'; @override String get dialogDownloadFailed => 'Descarga fallida'; @@ -3013,7 +3165,8 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get dialogClearAll => 'Eliminar todo'; @override - String get dialogClearAllDownloads => '¿Estás seguro de que quieres borrar todas las descargas?'; + String get dialogClearAllDownloads => + '¿Estás seguro de que quieres borrar todas las descargas?'; @override String get dialogRemoveFromDevice => '¿Eliminar del dispositivo?'; @@ -3022,7 +3175,8 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get dialogRemoveExtension => 'Eliminar extensión'; @override - String get dialogRemoveExtensionMessage => '¿Estás seguro de que quieres eliminar esta extensión? Esto no se puede deshacer.'; + String get dialogRemoveExtensionMessage => + '¿Estás seguro de que quieres eliminar esta extensión? Esto no se puede deshacer.'; @override String get dialogUninstallExtension => '¿Desinstalar extensión?'; @@ -3036,7 +3190,8 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get dialogClearHistoryTitle => 'Borrar historial'; @override - String get dialogClearHistoryMessage => '¿Estás seguro de que quieres borrar todo el historial de descargas? Esta acción no se puede deshacer.'; + String get dialogClearHistoryMessage => + '¿Estás seguro de que quieres borrar todo el historial de descargas? Esta acción no se puede deshacer.'; @override String get dialogDeleteSelectedTitle => 'Borrar Seleccionados'; @@ -3120,13 +3275,15 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get snackbarFileNotFound => 'Archivo no encontrado'; @override - String get snackbarSelectExtFile => 'Por favor, seleccione un archivo .spotiflac-ext'; + String get snackbarSelectExtFile => + 'Por favor, seleccione un archivo .spotiflac-ext'; @override String get snackbarProviderPrioritySaved => 'Prioridad de proveedor guardada'; @override - String get snackbarMetadataProviderSaved => 'Prioridad de proveedor de metadatos guardada'; + String get snackbarMetadataProviderSaved => + 'Prioridad de proveedor de metadatos guardada'; @override String snackbarExtensionInstalled(String extensionName) { @@ -3148,7 +3305,8 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get errorRateLimited => 'Límite Excedido'; @override - String get errorRateLimitedMessage => 'Demasiadas solicitudes. Por favor, espere un momento antes de buscar de nuevo.'; + String get errorRateLimitedMessage => + 'Demasiadas solicitudes. Por favor, espere un momento antes de buscar de nuevo.'; @override String errorFailedToLoad(String item) { @@ -3315,19 +3473,24 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get folderOrganizationByArtistAlbum => 'Artista/Álbum'; @override - String get folderOrganizationDescription => 'Organizar los archivos descargados en carpetas'; + String get folderOrganizationDescription => + 'Organizar los archivos descargados en carpetas'; @override - String get folderOrganizationNoneSubtitle => 'Todos los archivos de la carpeta de descargas'; + String get folderOrganizationNoneSubtitle => + 'Todos los archivos de la carpeta de descargas'; @override - String get folderOrganizationByArtistSubtitle => 'Carpeta separada para cada artista'; + String get folderOrganizationByArtistSubtitle => + 'Carpeta separada para cada artista'; @override - String get folderOrganizationByAlbumSubtitle => 'Carpeta separada para cada artista'; + String get folderOrganizationByAlbumSubtitle => + 'Carpeta separada para cada artista'; @override - String get folderOrganizationByArtistAlbumSubtitle => 'Carpetas organizadas por artista y álbum'; + String get folderOrganizationByArtistAlbumSubtitle => + 'Carpetas organizadas por artista y álbum'; @override String get updateAvailable => 'Actualización Disponible'; @@ -3380,16 +3543,19 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get providerPriority => 'Prioridad del proveedor'; @override - String get providerPrioritySubtitle => 'Arrastre para reordenar los proveedores de descarga'; + String get providerPrioritySubtitle => + 'Arrastre para reordenar los proveedores de descarga'; @override String get providerPriorityTitle => 'Prioridad del proveedor'; @override - String get providerPriorityDescription => 'Arrastra para reordenar los proveedores de descarga. La aplicación intentará usar los proveedores de arriba hacia abajo al descargar las pistas.'; + String get providerPriorityDescription => + 'Arrastra para reordenar los proveedores de descarga. La aplicación intentará usar los proveedores de arriba hacia abajo al descargar las pistas.'; @override - String get providerPriorityInfo => 'Si una pista no está disponible en el primer proveedor, la aplicación intentará automáticamente el siguiente.'; + String get providerPriorityInfo => + 'Si una pista no está disponible en el primer proveedor, la aplicación intentará automáticamente el siguiente.'; @override String get providerBuiltIn => 'Integrado'; @@ -3401,16 +3567,19 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get metadataProviderPriority => 'Prioridad del proveedor de metadatos'; @override - String get metadataProviderPrioritySubtitle => 'Orden usado al recuperar metadatos de la pista'; + String get metadataProviderPrioritySubtitle => + 'Orden usado al recuperar metadatos de la pista'; @override String get metadataProviderPriorityTitle => 'Prioridad de los metadatos'; @override - String get metadataProviderPriorityDescription => 'Arrastra para reordenar los proveedores de metadatos. La aplicación probará los proveedores de arriba hacia abajo al buscar pistas y obtener los metadatos.'; + String get metadataProviderPriorityDescription => + 'Arrastra para reordenar los proveedores de metadatos. La aplicación probará los proveedores de arriba hacia abajo al buscar pistas y obtener los metadatos.'; @override - String get metadataProviderPriorityInfo => 'Deezer no tiene límites de tasa y se recomienda como principal. Spotify puede valorar el límite después de muchas solicitudes.'; + String get metadataProviderPriorityInfo => + 'Deezer no tiene límites de tasa y se recomienda como principal. Spotify puede valorar el límite después de muchas solicitudes.'; @override String get metadataNoRateLimits => 'Sin límites de tasa'; @@ -3455,7 +3624,8 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get logClearLogsTitle => 'Limpiar registros'; @override - String get logClearLogsMessage => '¿Estás seguro que deseas limpiar todos los registros?'; + String get logClearLogsMessage => + '¿Estás seguro que deseas limpiar todos los registros?'; @override String get logIspBlocking => 'BLOQUEO POR EL ISP DETECTADO'; @@ -3476,22 +3646,26 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get logNoLogsYet => 'No hay registros aún'; @override - String get logNoLogsYetSubtitle => 'Los registros aparecerán aquí mientras usas la aplicación'; + String get logNoLogsYetSubtitle => + 'Los registros aparecerán aquí mientras usas la aplicación'; @override String get logIssueSummary => 'Resumen de Incidencias'; @override - String get logIspBlockingDescription => 'Tu ISP puede estar bloqueando el acceso a los servicios de descarga'; + String get logIspBlockingDescription => + 'Tu ISP puede estar bloqueando el acceso a los servicios de descarga'; @override - String get logIspBlockingSuggestion => 'Intente usar una VPN o cambie el DNS a 1.1.1.1 o 8.8.8.8'; + String get logIspBlockingSuggestion => + 'Intente usar una VPN o cambie el DNS a 1.1.1.1 o 8.8.8.8'; @override String get logRateLimitedDescription => 'Demasiadas solicitudes al servicio'; @override - String get logRateLimitedSuggestion => 'Espere unos minutos antes de volver a intentarlo'; + String get logRateLimitedSuggestion => + 'Espere unos minutos antes de volver a intentarlo'; @override String get logNetworkErrorDescription => 'Problemas de conexión detectados'; @@ -3500,10 +3674,12 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get logNetworkErrorSuggestion => 'Comprueba tu conexión a internet'; @override - String get logTrackNotFoundDescription => 'No se pudieron encontrar algunas pistas en los servicios de descarga'; + String get logTrackNotFoundDescription => + 'No se pudieron encontrar algunas pistas en los servicios de descarga'; @override - String get logTrackNotFoundSuggestion => 'La pista puede no estar disponible en calidad sin pérdida'; + String get logTrackNotFoundSuggestion => + 'La pista puede no estar disponible en calidad sin pérdida'; @override String logTotalErrors(int count) { @@ -3529,7 +3705,8 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get credentialsTitle => 'Credenciales de Spotify'; @override - String get credentialsDescription => 'Introduzca su ID de cliente y secreto para utilizar su propia cuota de aplicación de Spotify.'; + String get credentialsDescription => + 'Introduzca su ID de cliente y secreto para utilizar su propia cuota de aplicación de Spotify.'; @override String get credentialsClientId => 'ID del cliente'; @@ -3598,16 +3775,20 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get settingsAppearanceSubtitle => 'Tema, colores, pantalla'; @override - String get settingsDownloadSubtitle => 'Servicio, calidad, formato del nombre del archivo'; + String get settingsDownloadSubtitle => + 'Servicio, calidad, formato del nombre del archivo'; @override - String get settingsOptionsSubtitle => 'Alternativa, letras, carátula, actualizaciones'; + String get settingsOptionsSubtitle => + 'Alternativa, letras, carátula, actualizaciones'; @override - String get settingsExtensionsSubtitle => 'Administrar proveedores de descarga'; + String get settingsExtensionsSubtitle => + 'Administrar proveedores de descarga'; @override - String get settingsLogsSubtitle => 'Ver registros de aplicaciones para depuración'; + String get settingsLogsSubtitle => + 'Ver registros de aplicaciones para depuración'; @override String get loadingSharedLink => 'Cargando enlace compartido...'; @@ -3698,7 +3879,8 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get trackLyricsNotAvailable => 'Letras no disponibles para este tema'; @override - String get trackLyricsTimeout => 'Tiempo de espera agotado. Inténtalo de nuevo más tarde.'; + String get trackLyricsTimeout => + 'Tiempo de espera agotado. Inténtalo de nuevo más tarde.'; @override String get trackLyricsLoadFailed => 'Error al cargar la letra'; @@ -3710,7 +3892,8 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get trackDeleteConfirmTitle => '¿Eliminar del dispositivo?'; @override - String get trackDeleteConfirmMessage => 'Esto eliminará permanentemente el archivo descargado y lo eliminará de tu historial.'; + String get trackDeleteConfirmMessage => + 'Esto eliminará permanentemente el archivo descargado y lo eliminará de tu historial.'; @override String trackCannotOpen(String message) { @@ -3832,7 +4015,8 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get extensionMinAppVersion => 'Versión Mínima de la aplicación'; @override - String get extensionCustomTrackMatching => 'Coincidencia de pista personalizada'; + String get extensionCustomTrackMatching => + 'Coincidencia de pista personalizada'; @override String get extensionPostProcessing => 'Post-Procesamiento'; @@ -3862,13 +4046,15 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get extensionsNoExtensions => 'No hay extensiones instaladas'; @override - String get extensionsNoExtensionsSubtitle => 'Instalar archivos .spotiflac-ext para añadir nuevos proveedores'; + String get extensionsNoExtensionsSubtitle => + 'Instalar archivos .spotiflac-ext para añadir nuevos proveedores'; @override String get extensionsInstallButton => 'Instalar extensión'; @override - String get extensionsInfoTip => 'Las extensiones pueden añadir nuevos metadatos y proveedores de descargas. Sólo instalar extensiones desde fuentes confiables.'; + String get extensionsInfoTip => + 'Las extensiones pueden añadir nuevos metadatos y proveedores de descargas. Sólo instalar extensiones desde fuentes confiables.'; @override String get extensionsInstalledSuccess => 'Extensión instalada correctamente'; @@ -3877,28 +4063,34 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get extensionsDownloadPriority => 'Prioridad de descarga'; @override - String get extensionsDownloadPrioritySubtitle => 'Establecer orden de servicio de descarga'; + String get extensionsDownloadPrioritySubtitle => + 'Establecer orden de servicio de descarga'; @override - String get extensionsNoDownloadProvider => 'No hay extensiones con proveedor de descargas'; + String get extensionsNoDownloadProvider => + 'No hay extensiones con proveedor de descargas'; @override String get extensionsMetadataPriority => 'Prioridad de los metadatos'; @override - String get extensionsMetadataPrioritySubtitle => 'Establecer orden de búsqueda y metadatos'; + String get extensionsMetadataPrioritySubtitle => + 'Establecer orden de búsqueda y metadatos'; @override - String get extensionsNoMetadataProvider => 'No hay extensiones con el proveedor de metadatos'; + String get extensionsNoMetadataProvider => + 'No hay extensiones con el proveedor de metadatos'; @override String get extensionsSearchProvider => 'Proveedor de búsqueda'; @override - String get extensionsNoCustomSearch => 'No hay extensiones con búsqueda personalizada'; + String get extensionsNoCustomSearch => + 'No hay extensiones con búsqueda personalizada'; @override - String get extensionsSearchProviderDescription => 'Elegir qué servicio usar para buscar pistas'; + String get extensionsSearchProviderDescription => + 'Elegir qué servicio usar para buscar pistas'; @override String get extensionsCustomSearch => 'Búsqueda personalizada'; @@ -3925,7 +4117,8 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get qualityHiResFlacMaxSubtitle => '24 bits / hasta 192kHz'; @override - String get qualityNote => 'La calidad real depende de la disponibilidad de la pista del servicio'; + String get qualityNote => + 'La calidad real depende de la disponibilidad de la pista del servicio'; @override String get downloadAskBeforeDownload => 'Preguntar antes de descargar'; @@ -3961,7 +4154,8 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get folderNone => 'Ninguna'; @override - String get folderNoneSubtitle => 'Guardar todos los archivos directamente para descargar la carpeta'; + String get folderNoneSubtitle => + 'Guardar todos los archivos directamente para descargar la carpeta'; @override String get folderArtist => 'Artista'; @@ -3979,7 +4173,8 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get folderArtistAlbum => 'Artista/Álbum'; @override - String get folderArtistAlbumSubtitle => 'Nombre del Artista/Nombre del Álbum/Nombre del Archivo'; + String get folderArtistAlbumSubtitle => + 'Nombre del Artista/Nombre del Álbum/Nombre del Archivo'; @override String get serviceTidal => 'Tidal'; @@ -4015,7 +4210,8 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get queueClearAll => 'Eliminar todo'; @override - String get queueClearAllMessage => '¿Estás seguro de que quieres borrar todas las descargas?'; + String get queueClearAllMessage => + '¿Estás seguro de que quieres borrar todas las descargas?'; @override String get queueEmpty => 'No hay descargas en cola'; @@ -4045,13 +4241,15 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get albumFolderArtistAlbum => 'Artista / Álbum'; @override - String get albumFolderArtistAlbumSubtitle => 'Álbumes/Nombre del Artista/Nombre del Álbum/'; + String get albumFolderArtistAlbumSubtitle => + 'Álbumes/Nombre del Artista/Nombre del Álbum/'; @override String get albumFolderArtistYearAlbum => 'Artista / [Año] Álbum'; @override - String get albumFolderArtistYearAlbumSubtitle => 'Álbumes/Nombre del Artista /[2005] Nombre del Álbum/'; + String get albumFolderArtistYearAlbumSubtitle => + 'Álbumes/Nombre del Artista /[2005] Nombre del Álbum/'; @override String get albumFolderAlbumOnly => 'Sólo álbum'; diff --git a/lib/l10n/app_localizations_fr.dart b/lib/l10n/app_localizations_fr.dart index 38379f9f..5471edbd 100644 --- a/lib/l10n/app_localizations_fr.dart +++ b/lib/l10n/app_localizations_fr.dart @@ -12,7 +12,8 @@ class AppLocalizationsFr extends AppLocalizations { String get appName => 'SpotiFLAC'; @override - String get appDescription => 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; + String get appDescription => + 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; @override String get navHome => 'Home'; @@ -98,13 +99,15 @@ class AppLocalizationsFr extends AppLocalizations { String get historyNoAlbums => 'No album downloads'; @override - String get historyNoAlbumsSubtitle => 'Download multiple tracks from an album to see them here'; + String get historyNoAlbumsSubtitle => + 'Download multiple tracks from an album to see them here'; @override String get historyNoSingles => 'No single downloads'; @override - String get historyNoSinglesSubtitle => 'Single track downloads will appear here'; + String get historyNoSinglesSubtitle => + 'Single track downloads will appear here'; @override String get historySearchHint => 'Search history...'; @@ -152,7 +155,8 @@ class AppLocalizationsFr extends AppLocalizations { String get downloadAskQuality => 'Ask Quality Before Download'; @override - String get downloadAskQualitySubtitle => 'Show quality picker for each download'; + String get downloadAskQualitySubtitle => + 'Show quality picker for each download'; @override String get downloadFilenameFormat => 'Filename Format'; @@ -164,7 +168,8 @@ class AppLocalizationsFr extends AppLocalizations { String get downloadSeparateSingles => 'Separate Singles'; @override - String get downloadSeparateSinglesSubtitle => 'Put single tracks in a separate folder'; + String get downloadSeparateSinglesSubtitle => + 'Put single tracks in a separate folder'; @override String get qualityBest => 'Best Available'; @@ -221,7 +226,8 @@ class AppLocalizationsFr extends AppLocalizations { String get optionsPrimaryProvider => 'Primary Provider'; @override - String get optionsPrimaryProviderSubtitle => 'Service used when searching by track name.'; + String get optionsPrimaryProviderSubtitle => + 'Service used when searching by track name.'; @override String optionsUsingExtension(String extensionName) { @@ -229,13 +235,15 @@ class AppLocalizationsFr extends AppLocalizations { } @override - String get optionsSwitchBack => 'Tap Deezer or Spotify to switch back from extension'; + String get optionsSwitchBack => + 'Tap Deezer or Spotify to switch back from extension'; @override String get optionsAutoFallback => 'Auto Fallback'; @override - String get optionsAutoFallbackSubtitle => 'Try other services if download fails'; + String get optionsAutoFallbackSubtitle => + 'Try other services if download fails'; @override String get optionsUseExtensionProviders => 'Use Extension Providers'; @@ -250,13 +258,15 @@ class AppLocalizationsFr extends AppLocalizations { String get optionsEmbedLyrics => 'Embed Lyrics'; @override - String get optionsEmbedLyricsSubtitle => 'Embed synced lyrics into FLAC files'; + String get optionsEmbedLyricsSubtitle => + 'Embed synced lyrics into FLAC files'; @override String get optionsMaxQualityCover => 'Max Quality Cover'; @override - String get optionsMaxQualityCoverSubtitle => 'Download highest resolution cover art'; + String get optionsMaxQualityCoverSubtitle => + 'Download highest resolution cover art'; @override String get optionsConcurrentDownloads => 'Concurrent Downloads'; @@ -270,7 +280,8 @@ class AppLocalizationsFr extends AppLocalizations { } @override - String get optionsConcurrentWarning => 'Parallel downloads may trigger rate limiting'; + String get optionsConcurrentWarning => + 'Parallel downloads may trigger rate limiting'; @override String get optionsExtensionStore => 'Extension Store'; @@ -282,7 +293,8 @@ class AppLocalizationsFr extends AppLocalizations { String get optionsCheckUpdates => 'Check for Updates'; @override - String get optionsCheckUpdatesSubtitle => 'Notify when new version is available'; + String get optionsCheckUpdatesSubtitle => + 'Notify when new version is available'; @override String get optionsUpdateChannel => 'Update Channel'; @@ -294,13 +306,15 @@ class AppLocalizationsFr extends AppLocalizations { String get optionsUpdateChannelPreview => 'Get preview releases'; @override - String get optionsUpdateChannelWarning => 'Preview may contain bugs or incomplete features'; + String get optionsUpdateChannelWarning => + 'Preview may contain bugs or incomplete features'; @override String get optionsClearHistory => 'Clear Download History'; @override - String get optionsClearHistorySubtitle => 'Remove all downloaded tracks from history'; + String get optionsClearHistorySubtitle => + 'Remove all downloaded tracks from history'; @override String get optionsDetailedLogging => 'Detailed Logging'; @@ -323,7 +337,8 @@ class AppLocalizationsFr extends AppLocalizations { String get optionsSpotifyCredentialsRequired => 'Required - tap to configure'; @override - String get optionsSpotifyWarning => 'Spotify requires your own API credentials. Get them free from developer.spotify.com'; + String get optionsSpotifyWarning => + 'Spotify requires your own API credentials. Get them free from developer.spotify.com'; @override String get extensionsTitle => 'Extensions'; @@ -387,7 +402,8 @@ class AppLocalizationsFr extends AppLocalizations { String get aboutOriginalCreator => 'Creator of the original SpotiFLAC'; @override - String get aboutLogoArtist => 'The talented artist who created our beautiful app logo!'; + String get aboutLogoArtist => + 'The talented artist who created our beautiful app logo!'; @override String get aboutTranslators => 'Translators'; @@ -447,28 +463,34 @@ class AppLocalizationsFr extends AppLocalizations { String get aboutVersion => 'Version'; @override - String get aboutBinimumDesc => 'The creator of QQDL & HiFi API. Without this API, Tidal downloads wouldn\'t exist!'; + String get aboutBinimumDesc => + 'The creator of QQDL & HiFi API. Without this API, Tidal downloads wouldn\'t exist!'; @override - String get aboutSachinsenalDesc => 'The original HiFi project creator. The foundation of Tidal integration!'; + String get aboutSachinsenalDesc => + 'The original HiFi project creator. The foundation of Tidal integration!'; @override - String get aboutSjdonadoDesc => 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; + String get aboutSjdonadoDesc => + 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; @override String get aboutDoubleDouble => 'DoubleDouble'; @override - String get aboutDoubleDoubleDesc => 'Amazing API for Amazon Music downloads. Thank you for making it free!'; + String get aboutDoubleDoubleDesc => + 'Amazing API for Amazon Music downloads. Thank you for making it free!'; @override String get aboutDabMusic => 'DAB Music'; @override - String get aboutDabMusicDesc => 'The best Qobuz streaming API. Hi-Res downloads wouldn\'t be possible without this!'; + String get aboutDabMusicDesc => + 'The best Qobuz streaming API. Hi-Res downloads wouldn\'t be possible without this!'; @override - String get aboutAppDescription => 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; + String get aboutAppDescription => + 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; @override String get albumTitle => 'Album'; @@ -573,7 +595,8 @@ class AppLocalizationsFr extends AppLocalizations { String get setupStoragePermission => 'Storage Permission'; @override - String get setupStoragePermissionSubtitle => 'Required to save downloaded files'; + String get setupStoragePermissionSubtitle => + 'Required to save downloaded files'; @override String get setupStoragePermissionGranted => 'Permission granted'; @@ -600,16 +623,19 @@ class AppLocalizationsFr extends AppLocalizations { String get setupStorageAccessRequired => 'Storage Access Required'; @override - String get setupStorageAccessMessage => 'SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.'; + String get setupStorageAccessMessage => + 'SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.'; @override - String get setupStorageAccessMessageAndroid11 => 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; + String get setupStorageAccessMessageAndroid11 => + 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; @override String get setupOpenSettings => 'Open Settings'; @override - String get setupPermissionDeniedMessage => 'Permission denied. Please grant all permissions to continue.'; + String get setupPermissionDeniedMessage => + 'Permission denied. Please grant all permissions to continue.'; @override String setupPermissionRequired(String permissionType) { @@ -628,7 +654,8 @@ class AppLocalizationsFr extends AppLocalizations { String get setupUseDefaultFolder => 'Use Default Folder?'; @override - String get setupNoFolderSelected => 'No folder selected. Would you like to use the default Music folder?'; + String get setupNoFolderSelected => + 'No folder selected. Would you like to use the default Music folder?'; @override String get setupUseDefault => 'Use Default'; @@ -637,13 +664,15 @@ class AppLocalizationsFr extends AppLocalizations { String get setupDownloadLocationTitle => 'Download Location'; @override - String get setupDownloadLocationIosMessage => 'On iOS, downloads are saved to the app\'s Documents folder. You can access them via the Files app.'; + String get setupDownloadLocationIosMessage => + 'On iOS, downloads are saved to the app\'s Documents folder. You can access them via the Files app.'; @override String get setupAppDocumentsFolder => 'App Documents Folder'; @override - String get setupAppDocumentsFolderSubtitle => 'Recommended - accessible via Files app'; + String get setupAppDocumentsFolderSubtitle => + 'Recommended - accessible via Files app'; @override String get setupChooseFromFiles => 'Choose from Files'; @@ -652,10 +681,12 @@ class AppLocalizationsFr extends AppLocalizations { String get setupChooseFromFilesSubtitle => 'Select iCloud or other location'; @override - String get setupIosEmptyFolderWarning => 'iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.'; + String get setupIosEmptyFolderWarning => + 'iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.'; @override - String get setupIcloudNotSupported => 'iCloud Drive is not supported. Please use the app Documents folder.'; + String get setupIcloudNotSupported => + 'iCloud Drive is not supported. Please use the app Documents folder.'; @override String get setupDownloadInFlac => 'Download Spotify tracks in FLAC'; @@ -682,7 +713,8 @@ class AppLocalizationsFr extends AppLocalizations { String get setupStorageRequired => 'Storage Permission Required'; @override - String get setupStorageDescription => 'SpotiFLAC needs storage permission to save your downloaded music files.'; + String get setupStorageDescription => + 'SpotiFLAC needs storage permission to save your downloaded music files.'; @override String get setupNotificationGranted => 'Notification Permission Granted!'; @@ -691,7 +723,8 @@ class AppLocalizationsFr extends AppLocalizations { String get setupNotificationEnable => 'Enable Notifications'; @override - String get setupNotificationDescription => 'Get notified when downloads complete or require attention.'; + String get setupNotificationDescription => + 'Get notified when downloads complete or require attention.'; @override String get setupFolderSelected => 'Download Folder Selected!'; @@ -700,7 +733,8 @@ class AppLocalizationsFr extends AppLocalizations { String get setupFolderChoose => 'Choose Download Folder'; @override - String get setupFolderDescription => 'Select a folder where your downloaded music will be saved.'; + String get setupFolderDescription => + 'Select a folder where your downloaded music will be saved.'; @override String get setupChangeFolder => 'Change Folder'; @@ -712,7 +746,8 @@ class AppLocalizationsFr extends AppLocalizations { String get setupSpotifyApiOptional => 'Spotify API (Optional)'; @override - String get setupSpotifyApiDescription => 'Add your Spotify API credentials for better search results and access to Spotify-exclusive content.'; + String get setupSpotifyApiDescription => + 'Add your Spotify API credentials for better search results and access to Spotify-exclusive content.'; @override String get setupUseSpotifyApi => 'Use Spotify API'; @@ -730,7 +765,8 @@ class AppLocalizationsFr extends AppLocalizations { String get setupEnterClientSecret => 'Enter Spotify Client Secret'; @override - String get setupGetFreeCredentials => 'Get your free API credentials from the Spotify Developer Dashboard.'; + String get setupGetFreeCredentials => + 'Get your free API credentials from the Spotify Developer Dashboard.'; @override String get setupEnableNotifications => 'Enable Notifications'; @@ -739,10 +775,12 @@ class AppLocalizationsFr extends AppLocalizations { String get setupProceedToNextStep => 'You can now proceed to the next step.'; @override - String get setupNotificationProgressDescription => 'You will receive download progress notifications.'; + String get setupNotificationProgressDescription => + 'You will receive download progress notifications.'; @override - String get setupNotificationBackgroundDescription => 'Get notified about download progress and completion. This helps you track downloads when the app is in background.'; + String get setupNotificationBackgroundDescription => + 'Get notified about download progress and completion. This helps you track downloads when the app is in background.'; @override String get setupSkipForNow => 'Skip for now'; @@ -760,10 +798,12 @@ class AppLocalizationsFr extends AppLocalizations { String get setupSkipAndStart => 'Skip & Start'; @override - String get setupAllowAccessToManageFiles => 'Please enable \"Allow access to manage all files\" in the next screen.'; + String get setupAllowAccessToManageFiles => + 'Please enable \"Allow access to manage all files\" in the next screen.'; @override - String get setupGetCredentialsFromSpotify => 'Get credentials from developer.spotify.com'; + String get setupGetCredentialsFromSpotify => + 'Get credentials from developer.spotify.com'; @override String get dialogCancel => 'Cancel'; @@ -814,7 +854,8 @@ class AppLocalizationsFr extends AppLocalizations { String get dialogDiscardChanges => 'Discard Changes?'; @override - String get dialogUnsavedChanges => 'You have unsaved changes. Do you want to discard them?'; + String get dialogUnsavedChanges => + 'You have unsaved changes. Do you want to discard them?'; @override String get dialogDownloadFailed => 'Download Failed'; @@ -832,7 +873,8 @@ class AppLocalizationsFr extends AppLocalizations { String get dialogClearAll => 'Clear All'; @override - String get dialogClearAllDownloads => 'Are you sure you want to clear all downloads?'; + String get dialogClearAllDownloads => + 'Are you sure you want to clear all downloads?'; @override String get dialogRemoveFromDevice => 'Remove from device?'; @@ -841,7 +883,8 @@ class AppLocalizationsFr extends AppLocalizations { String get dialogRemoveExtension => 'Remove Extension'; @override - String get dialogRemoveExtensionMessage => 'Are you sure you want to remove this extension? This cannot be undone.'; + String get dialogRemoveExtensionMessage => + 'Are you sure you want to remove this extension? This cannot be undone.'; @override String get dialogUninstallExtension => 'Uninstall Extension?'; @@ -855,7 +898,8 @@ class AppLocalizationsFr extends AppLocalizations { String get dialogClearHistoryTitle => 'Clear History'; @override - String get dialogClearHistoryMessage => 'Are you sure you want to clear all download history? This cannot be undone.'; + String get dialogClearHistoryMessage => + 'Are you sure you want to clear all download history? This cannot be undone.'; @override String get dialogDeleteSelectedTitle => 'Delete Selected'; @@ -950,7 +994,8 @@ class AppLocalizationsFr extends AppLocalizations { String get snackbarProviderPrioritySaved => 'Provider priority saved'; @override - String get snackbarMetadataProviderSaved => 'Metadata provider priority saved'; + String get snackbarMetadataProviderSaved => + 'Metadata provider priority saved'; @override String snackbarExtensionInstalled(String extensionName) { @@ -972,7 +1017,8 @@ class AppLocalizationsFr extends AppLocalizations { String get errorRateLimited => 'Rate Limited'; @override - String get errorRateLimitedMessage => 'Too many requests. Please wait a moment before searching again.'; + String get errorRateLimitedMessage => + 'Too many requests. Please wait a moment before searching again.'; @override String errorFailedToLoad(String item) { @@ -1139,19 +1185,23 @@ class AppLocalizationsFr extends AppLocalizations { String get folderOrganizationByArtistAlbum => 'Artist/Album'; @override - String get folderOrganizationDescription => 'Organize downloaded files into folders'; + String get folderOrganizationDescription => + 'Organize downloaded files into folders'; @override String get folderOrganizationNoneSubtitle => 'All files in download folder'; @override - String get folderOrganizationByArtistSubtitle => 'Separate folder for each artist'; + String get folderOrganizationByArtistSubtitle => + 'Separate folder for each artist'; @override - String get folderOrganizationByAlbumSubtitle => 'Separate folder for each album'; + String get folderOrganizationByAlbumSubtitle => + 'Separate folder for each album'; @override - String get folderOrganizationByArtistAlbumSubtitle => 'Nested folders for artist and album'; + String get folderOrganizationByArtistAlbumSubtitle => + 'Nested folders for artist and album'; @override String get updateAvailable => 'Update Available'; @@ -1210,10 +1260,12 @@ class AppLocalizationsFr extends AppLocalizations { String get providerPriorityTitle => 'Provider Priority'; @override - String get providerPriorityDescription => 'Drag to reorder download providers. The app will try providers from top to bottom when downloading tracks.'; + String get providerPriorityDescription => + 'Drag to reorder download providers. The app will try providers from top to bottom when downloading tracks.'; @override - String get providerPriorityInfo => 'If a track is not available on the first provider, the app will automatically try the next one.'; + String get providerPriorityInfo => + 'If a track is not available on the first provider, the app will automatically try the next one.'; @override String get providerBuiltIn => 'Built-in'; @@ -1225,16 +1277,19 @@ class AppLocalizationsFr extends AppLocalizations { String get metadataProviderPriority => 'Metadata Provider Priority'; @override - String get metadataProviderPrioritySubtitle => 'Order used when fetching track metadata'; + String get metadataProviderPrioritySubtitle => + 'Order used when fetching track metadata'; @override String get metadataProviderPriorityTitle => 'Metadata Priority'; @override - String get metadataProviderPriorityDescription => 'Drag to reorder metadata providers. The app will try providers from top to bottom when searching for tracks and fetching metadata.'; + String get metadataProviderPriorityDescription => + 'Drag to reorder metadata providers. The app will try providers from top to bottom when searching for tracks and fetching metadata.'; @override - String get metadataProviderPriorityInfo => 'Deezer has no rate limits and is recommended as primary. Spotify may rate limit after many requests.'; + String get metadataProviderPriorityInfo => + 'Deezer has no rate limits and is recommended as primary. Spotify may rate limit after many requests.'; @override String get metadataNoRateLimits => 'No rate limits'; @@ -1306,16 +1361,19 @@ class AppLocalizationsFr extends AppLocalizations { String get logIssueSummary => 'Issue Summary'; @override - String get logIspBlockingDescription => 'Your ISP may be blocking access to download services'; + String get logIspBlockingDescription => + 'Your ISP may be blocking access to download services'; @override - String get logIspBlockingSuggestion => 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; + String get logIspBlockingSuggestion => + 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; @override String get logRateLimitedDescription => 'Too many requests to the service'; @override - String get logRateLimitedSuggestion => 'Wait a few minutes before trying again'; + String get logRateLimitedSuggestion => + 'Wait a few minutes before trying again'; @override String get logNetworkErrorDescription => 'Connection issues detected'; @@ -1324,10 +1382,12 @@ class AppLocalizationsFr extends AppLocalizations { String get logNetworkErrorSuggestion => 'Check your internet connection'; @override - String get logTrackNotFoundDescription => 'Some tracks could not be found on download services'; + String get logTrackNotFoundDescription => + 'Some tracks could not be found on download services'; @override - String get logTrackNotFoundSuggestion => 'The track may not be available in lossless quality'; + String get logTrackNotFoundSuggestion => + 'The track may not be available in lossless quality'; @override String logTotalErrors(int count) { @@ -1353,7 +1413,8 @@ class AppLocalizationsFr extends AppLocalizations { String get credentialsTitle => 'Spotify Credentials'; @override - String get credentialsDescription => 'Enter your Client ID and Secret to use your own Spotify application quota.'; + String get credentialsDescription => + 'Enter your Client ID and Secret to use your own Spotify application quota.'; @override String get credentialsClientId => 'Client ID'; @@ -1407,7 +1468,8 @@ class AppLocalizationsFr extends AppLocalizations { String get lyricsMode => 'Lyrics Mode'; @override - String get lyricsModeDescription => 'Choose how lyrics are saved with your downloads'; + String get lyricsModeDescription => + 'Choose how lyrics are saved with your downloads'; @override String get lyricsModeEmbed => 'Embed in file'; @@ -1419,7 +1481,8 @@ class AppLocalizationsFr extends AppLocalizations { String get lyricsModeExternal => 'External .lrc file'; @override - String get lyricsModeExternalSubtitle => 'Separate .lrc file for players like Samsung Music'; + String get lyricsModeExternalSubtitle => + 'Separate .lrc file for players like Samsung Music'; @override String get lyricsModeBoth => 'Both'; @@ -1579,7 +1642,8 @@ class AppLocalizationsFr extends AppLocalizations { String get trackDeleteConfirmTitle => 'Remove from device?'; @override - String get trackDeleteConfirmMessage => 'This will permanently delete the downloaded file and remove it from your history.'; + String get trackDeleteConfirmMessage => + 'This will permanently delete the downloaded file and remove it from your history.'; @override String trackCannotOpen(String message) { @@ -1731,13 +1795,15 @@ class AppLocalizationsFr extends AppLocalizations { String get extensionsNoExtensions => 'No extensions installed'; @override - String get extensionsNoExtensionsSubtitle => 'Install .spotiflac-ext files to add new providers'; + String get extensionsNoExtensionsSubtitle => + 'Install .spotiflac-ext files to add new providers'; @override String get extensionsInstallButton => 'Install Extension'; @override - String get extensionsInfoTip => 'Extensions can add new metadata and download providers. Only install extensions from trusted sources.'; + String get extensionsInfoTip => + 'Extensions can add new metadata and download providers. Only install extensions from trusted sources.'; @override String get extensionsInstalledSuccess => 'Extension installed successfully'; @@ -1749,16 +1815,19 @@ class AppLocalizationsFr extends AppLocalizations { String get extensionsDownloadPrioritySubtitle => 'Set download service order'; @override - String get extensionsNoDownloadProvider => 'No extensions with download provider'; + String get extensionsNoDownloadProvider => + 'No extensions with download provider'; @override String get extensionsMetadataPriority => 'Metadata Priority'; @override - String get extensionsMetadataPrioritySubtitle => 'Set search & metadata source order'; + String get extensionsMetadataPrioritySubtitle => + 'Set search & metadata source order'; @override - String get extensionsNoMetadataProvider => 'No extensions with metadata provider'; + String get extensionsNoMetadataProvider => + 'No extensions with metadata provider'; @override String get extensionsSearchProvider => 'Search Provider'; @@ -1767,7 +1836,8 @@ class AppLocalizationsFr extends AppLocalizations { String get extensionsNoCustomSearch => 'No extensions with custom search'; @override - String get extensionsSearchProviderDescription => 'Choose which service to use for searching tracks'; + String get extensionsSearchProviderDescription => + 'Choose which service to use for searching tracks'; @override String get extensionsCustomSearch => 'Custom search'; @@ -1809,7 +1879,8 @@ class AppLocalizationsFr extends AppLocalizations { String get enableLossyOptionSubtitleOn => 'Lossy quality option is available'; @override - String get enableLossyOptionSubtitleOff => 'Downloads FLAC then converts to lossy format'; + String get enableLossyOptionSubtitleOff => + 'Downloads FLAC then converts to lossy format'; @override String get lossyFormat => 'Lossy Format'; @@ -1821,10 +1892,12 @@ class AppLocalizationsFr extends AppLocalizations { String get lossyFormatMp3Subtitle => '320kbps, best compatibility'; @override - String get lossyFormatOpusSubtitle => '128kbps, better quality at smaller size'; + String get lossyFormatOpusSubtitle => + '128kbps, better quality at smaller size'; @override - String get qualityNote => 'Actual quality depends on track availability from the service'; + String get qualityNote => + 'Actual quality depends on track availability from the service'; @override String get downloadAskBeforeDownload => 'Ask Before Download'; @@ -1914,13 +1987,15 @@ class AppLocalizationsFr extends AppLocalizations { String get queueClearAll => 'Clear All'; @override - String get queueClearAllMessage => 'Are you sure you want to clear all downloads?'; + String get queueClearAllMessage => + 'Are you sure you want to clear all downloads?'; @override String get queueExportFailed => 'Export'; @override - String get queueExportFailedSuccess => 'Failed downloads exported to TXT file'; + String get queueExportFailedSuccess => + 'Failed downloads exported to TXT file'; @override String get queueExportFailedClear => 'Clear Failed'; @@ -1932,7 +2007,8 @@ class AppLocalizationsFr extends AppLocalizations { String get settingsAutoExportFailed => 'Auto-export failed downloads'; @override - String get settingsAutoExportFailedSubtitle => 'Save failed downloads to TXT file automatically'; + String get settingsAutoExportFailedSubtitle => + 'Save failed downloads to TXT file automatically'; @override String get settingsDownloadNetwork => 'Download Network'; @@ -1944,7 +2020,8 @@ class AppLocalizationsFr extends AppLocalizations { String get settingsDownloadNetworkWifiOnly => 'WiFi Only'; @override - String get settingsDownloadNetworkSubtitle => 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; + String get settingsDownloadNetworkSubtitle => + 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; @override String get settingsCloudSave => 'Cloud Save'; @@ -1962,7 +2039,8 @@ class AppLocalizationsFr extends AppLocalizations { String get cloudSettingsEnable => 'Enable Cloud Upload'; @override - String get cloudSettingsEnableSubtitle => 'Automatically upload files after download completes'; + String get cloudSettingsEnableSubtitle => + 'Automatically upload files after download completes'; @override String get cloudSettingsSectionProvider => 'Cloud Provider'; @@ -1971,7 +2049,8 @@ class AppLocalizationsFr extends AppLocalizations { String get cloudSettingsProvider => 'Provider'; @override - String get cloudSettingsProviderDescription => 'Select where to upload your downloaded files'; + String get cloudSettingsProviderDescription => + 'Select where to upload your downloaded files'; @override String get cloudSettingsSectionServer => 'Server Configuration'; @@ -1992,7 +2071,20 @@ class AppLocalizationsFr extends AppLocalizations { String get cloudSettingsTestConnection => 'Test Connection'; @override - String get cloudSettingsInfo => 'Downloaded files will be automatically uploaded to your cloud storage after download completes. Original files are kept on your device.'; + String get cloudSettingsInfo => + 'Downloaded files will be automatically uploaded to your cloud storage after download completes. Original files are kept on your device.'; + + @override + String get cloudSettingsUploadQueue => 'Upload Queue'; + + @override + String get cloudSettingsRetryFailed => 'Retry Failed'; + + @override + String get cloudSettingsClearDone => 'Clear Done'; + + @override + String get cloudSettingsRecentUploads => 'Recent Uploads'; @override String get queueEmpty => 'No downloads in queue'; @@ -2028,7 +2120,8 @@ class AppLocalizationsFr extends AppLocalizations { String get albumFolderArtistYearAlbum => 'Artist / [Year] Album'; @override - String get albumFolderArtistYearAlbumSubtitle => 'Albums/Artist Name/[2005] Album Name/'; + String get albumFolderArtistYearAlbumSubtitle => + 'Albums/Artist Name/[2005] Album Name/'; @override String get albumFolderAlbumOnly => 'Album Only'; @@ -2046,7 +2139,8 @@ class AppLocalizationsFr extends AppLocalizations { String get albumFolderArtistAlbumSingles => 'Artist / Album + Singles'; @override - String get albumFolderArtistAlbumSinglesSubtitle => 'Artist/Album/ and Artist/Singles/'; + String get albumFolderArtistAlbumSinglesSubtitle => + 'Artist/Album/ and Artist/Singles/'; @override String get downloadedAlbumDeleteSelected => 'Delete Selected'; @@ -2156,7 +2250,8 @@ class AppLocalizationsFr extends AppLocalizations { String get discographySelectAlbums => 'Select Albums...'; @override - String get discographySelectAlbumsSubtitle => 'Choose specific albums or singles'; + String get discographySelectAlbumsSubtitle => + 'Choose specific albums or singles'; @override String get discographyFetchingTracks => 'Fetching tracks...'; @@ -2203,11 +2298,14 @@ class AppLocalizationsFr extends AppLocalizations { String get allFilesAccessDisabledSubtitle => 'Limited to media folders only'; @override - String get allFilesAccessDescription => 'Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.'; + String get allFilesAccessDescription => + 'Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.'; @override - String get allFilesAccessDeniedMessage => 'Permission was denied. Please enable \'All files access\' manually in system settings.'; + String get allFilesAccessDeniedMessage => + 'Permission was denied. Please enable \'All files access\' manually in system settings.'; @override - String get allFilesAccessDisabledMessage => 'All Files Access disabled. The app will use limited storage access.'; + String get allFilesAccessDisabledMessage => + 'All Files Access disabled. The app will use limited storage access.'; } diff --git a/lib/l10n/app_localizations_hi.dart b/lib/l10n/app_localizations_hi.dart index e3ab9e49..5adf0eb8 100644 --- a/lib/l10n/app_localizations_hi.dart +++ b/lib/l10n/app_localizations_hi.dart @@ -12,7 +12,8 @@ class AppLocalizationsHi extends AppLocalizations { String get appName => 'SpotiFlac'; @override - String get appDescription => 'स्पॉटीफाई ट्रैक डाउनलोड करें टाइडल, क्वाबज एवं एवं अमेजन म्यूजिक से उच्चतम क्वालिटी में।'; + String get appDescription => + 'स्पॉटीफाई ट्रैक डाउनलोड करें टाइडल, क्वाबज एवं एवं अमेजन म्यूजिक से उच्चतम क्वालिटी में।'; @override String get navHome => 'होम'; @@ -98,13 +99,15 @@ class AppLocalizationsHi extends AppLocalizations { String get historyNoAlbums => 'No album downloads'; @override - String get historyNoAlbumsSubtitle => 'Download multiple tracks from an album to see them here'; + String get historyNoAlbumsSubtitle => + 'Download multiple tracks from an album to see them here'; @override String get historyNoSingles => 'No single downloads'; @override - String get historyNoSinglesSubtitle => 'Single track downloads will appear here'; + String get historyNoSinglesSubtitle => + 'Single track downloads will appear here'; @override String get historySearchHint => 'Search history...'; @@ -152,7 +155,8 @@ class AppLocalizationsHi extends AppLocalizations { String get downloadAskQuality => 'Ask Quality Before Download'; @override - String get downloadAskQualitySubtitle => 'Show quality picker for each download'; + String get downloadAskQualitySubtitle => + 'Show quality picker for each download'; @override String get downloadFilenameFormat => 'Filename Format'; @@ -164,7 +168,8 @@ class AppLocalizationsHi extends AppLocalizations { String get downloadSeparateSingles => 'Separate Singles'; @override - String get downloadSeparateSinglesSubtitle => 'Put single tracks in a separate folder'; + String get downloadSeparateSinglesSubtitle => + 'Put single tracks in a separate folder'; @override String get qualityBest => 'Best Available'; @@ -221,7 +226,8 @@ class AppLocalizationsHi extends AppLocalizations { String get optionsPrimaryProvider => 'Primary Provider'; @override - String get optionsPrimaryProviderSubtitle => 'Service used when searching by track name.'; + String get optionsPrimaryProviderSubtitle => + 'Service used when searching by track name.'; @override String optionsUsingExtension(String extensionName) { @@ -229,13 +235,15 @@ class AppLocalizationsHi extends AppLocalizations { } @override - String get optionsSwitchBack => 'Tap Deezer or Spotify to switch back from extension'; + String get optionsSwitchBack => + 'Tap Deezer or Spotify to switch back from extension'; @override String get optionsAutoFallback => 'Auto Fallback'; @override - String get optionsAutoFallbackSubtitle => 'Try other services if download fails'; + String get optionsAutoFallbackSubtitle => + 'Try other services if download fails'; @override String get optionsUseExtensionProviders => 'Use Extension Providers'; @@ -250,13 +258,15 @@ class AppLocalizationsHi extends AppLocalizations { String get optionsEmbedLyrics => 'Embed Lyrics'; @override - String get optionsEmbedLyricsSubtitle => 'Embed synced lyrics into FLAC files'; + String get optionsEmbedLyricsSubtitle => + 'Embed synced lyrics into FLAC files'; @override String get optionsMaxQualityCover => 'Max Quality Cover'; @override - String get optionsMaxQualityCoverSubtitle => 'Download highest resolution cover art'; + String get optionsMaxQualityCoverSubtitle => + 'Download highest resolution cover art'; @override String get optionsConcurrentDownloads => 'Concurrent Downloads'; @@ -270,7 +280,8 @@ class AppLocalizationsHi extends AppLocalizations { } @override - String get optionsConcurrentWarning => 'Parallel downloads may trigger rate limiting'; + String get optionsConcurrentWarning => + 'Parallel downloads may trigger rate limiting'; @override String get optionsExtensionStore => 'Extension Store'; @@ -282,7 +293,8 @@ class AppLocalizationsHi extends AppLocalizations { String get optionsCheckUpdates => 'Check for Updates'; @override - String get optionsCheckUpdatesSubtitle => 'Notify when new version is available'; + String get optionsCheckUpdatesSubtitle => + 'Notify when new version is available'; @override String get optionsUpdateChannel => 'Update Channel'; @@ -294,13 +306,15 @@ class AppLocalizationsHi extends AppLocalizations { String get optionsUpdateChannelPreview => 'Get preview releases'; @override - String get optionsUpdateChannelWarning => 'Preview may contain bugs or incomplete features'; + String get optionsUpdateChannelWarning => + 'Preview may contain bugs or incomplete features'; @override String get optionsClearHistory => 'Clear Download History'; @override - String get optionsClearHistorySubtitle => 'Remove all downloaded tracks from history'; + String get optionsClearHistorySubtitle => + 'Remove all downloaded tracks from history'; @override String get optionsDetailedLogging => 'Detailed Logging'; @@ -323,7 +337,8 @@ class AppLocalizationsHi extends AppLocalizations { String get optionsSpotifyCredentialsRequired => 'Required - tap to configure'; @override - String get optionsSpotifyWarning => 'Spotify requires your own API credentials. Get them free from developer.spotify.com'; + String get optionsSpotifyWarning => + 'Spotify requires your own API credentials. Get them free from developer.spotify.com'; @override String get extensionsTitle => 'Extensions'; @@ -387,7 +402,8 @@ class AppLocalizationsHi extends AppLocalizations { String get aboutOriginalCreator => 'Creator of the original SpotiFLAC'; @override - String get aboutLogoArtist => 'The talented artist who created our beautiful app logo!'; + String get aboutLogoArtist => + 'The talented artist who created our beautiful app logo!'; @override String get aboutTranslators => 'Translators'; @@ -447,28 +463,34 @@ class AppLocalizationsHi extends AppLocalizations { String get aboutVersion => 'Version'; @override - String get aboutBinimumDesc => 'The creator of QQDL & HiFi API. Without this API, Tidal downloads wouldn\'t exist!'; + String get aboutBinimumDesc => + 'The creator of QQDL & HiFi API. Without this API, Tidal downloads wouldn\'t exist!'; @override - String get aboutSachinsenalDesc => 'The original HiFi project creator. The foundation of Tidal integration!'; + String get aboutSachinsenalDesc => + 'The original HiFi project creator. The foundation of Tidal integration!'; @override - String get aboutSjdonadoDesc => 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; + String get aboutSjdonadoDesc => + 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; @override String get aboutDoubleDouble => 'DoubleDouble'; @override - String get aboutDoubleDoubleDesc => 'Amazing API for Amazon Music downloads. Thank you for making it free!'; + String get aboutDoubleDoubleDesc => + 'Amazing API for Amazon Music downloads. Thank you for making it free!'; @override String get aboutDabMusic => 'DAB Music'; @override - String get aboutDabMusicDesc => 'The best Qobuz streaming API. Hi-Res downloads wouldn\'t be possible without this!'; + String get aboutDabMusicDesc => + 'The best Qobuz streaming API. Hi-Res downloads wouldn\'t be possible without this!'; @override - String get aboutAppDescription => 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; + String get aboutAppDescription => + 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; @override String get albumTitle => 'Album'; @@ -573,7 +595,8 @@ class AppLocalizationsHi extends AppLocalizations { String get setupStoragePermission => 'Storage Permission'; @override - String get setupStoragePermissionSubtitle => 'Required to save downloaded files'; + String get setupStoragePermissionSubtitle => + 'Required to save downloaded files'; @override String get setupStoragePermissionGranted => 'Permission granted'; @@ -600,16 +623,19 @@ class AppLocalizationsHi extends AppLocalizations { String get setupStorageAccessRequired => 'Storage Access Required'; @override - String get setupStorageAccessMessage => 'SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.'; + String get setupStorageAccessMessage => + 'SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.'; @override - String get setupStorageAccessMessageAndroid11 => 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; + String get setupStorageAccessMessageAndroid11 => + 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; @override String get setupOpenSettings => 'Open Settings'; @override - String get setupPermissionDeniedMessage => 'Permission denied. Please grant all permissions to continue.'; + String get setupPermissionDeniedMessage => + 'Permission denied. Please grant all permissions to continue.'; @override String setupPermissionRequired(String permissionType) { @@ -628,7 +654,8 @@ class AppLocalizationsHi extends AppLocalizations { String get setupUseDefaultFolder => 'Use Default Folder?'; @override - String get setupNoFolderSelected => 'No folder selected. Would you like to use the default Music folder?'; + String get setupNoFolderSelected => + 'No folder selected. Would you like to use the default Music folder?'; @override String get setupUseDefault => 'Use Default'; @@ -637,13 +664,15 @@ class AppLocalizationsHi extends AppLocalizations { String get setupDownloadLocationTitle => 'Download Location'; @override - String get setupDownloadLocationIosMessage => 'On iOS, downloads are saved to the app\'s Documents folder. You can access them via the Files app.'; + String get setupDownloadLocationIosMessage => + 'On iOS, downloads are saved to the app\'s Documents folder. You can access them via the Files app.'; @override String get setupAppDocumentsFolder => 'App Documents Folder'; @override - String get setupAppDocumentsFolderSubtitle => 'Recommended - accessible via Files app'; + String get setupAppDocumentsFolderSubtitle => + 'Recommended - accessible via Files app'; @override String get setupChooseFromFiles => 'Choose from Files'; @@ -652,10 +681,12 @@ class AppLocalizationsHi extends AppLocalizations { String get setupChooseFromFilesSubtitle => 'Select iCloud or other location'; @override - String get setupIosEmptyFolderWarning => 'iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.'; + String get setupIosEmptyFolderWarning => + 'iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.'; @override - String get setupIcloudNotSupported => 'iCloud Drive is not supported. Please use the app Documents folder.'; + String get setupIcloudNotSupported => + 'iCloud Drive is not supported. Please use the app Documents folder.'; @override String get setupDownloadInFlac => 'Download Spotify tracks in FLAC'; @@ -682,7 +713,8 @@ class AppLocalizationsHi extends AppLocalizations { String get setupStorageRequired => 'Storage Permission Required'; @override - String get setupStorageDescription => 'SpotiFLAC needs storage permission to save your downloaded music files.'; + String get setupStorageDescription => + 'SpotiFLAC needs storage permission to save your downloaded music files.'; @override String get setupNotificationGranted => 'Notification Permission Granted!'; @@ -691,7 +723,8 @@ class AppLocalizationsHi extends AppLocalizations { String get setupNotificationEnable => 'Enable Notifications'; @override - String get setupNotificationDescription => 'Get notified when downloads complete or require attention.'; + String get setupNotificationDescription => + 'Get notified when downloads complete or require attention.'; @override String get setupFolderSelected => 'Download Folder Selected!'; @@ -700,7 +733,8 @@ class AppLocalizationsHi extends AppLocalizations { String get setupFolderChoose => 'Choose Download Folder'; @override - String get setupFolderDescription => 'Select a folder where your downloaded music will be saved.'; + String get setupFolderDescription => + 'Select a folder where your downloaded music will be saved.'; @override String get setupChangeFolder => 'Change Folder'; @@ -712,7 +746,8 @@ class AppLocalizationsHi extends AppLocalizations { String get setupSpotifyApiOptional => 'Spotify API (Optional)'; @override - String get setupSpotifyApiDescription => 'Add your Spotify API credentials for better search results and access to Spotify-exclusive content.'; + String get setupSpotifyApiDescription => + 'Add your Spotify API credentials for better search results and access to Spotify-exclusive content.'; @override String get setupUseSpotifyApi => 'Use Spotify API'; @@ -730,7 +765,8 @@ class AppLocalizationsHi extends AppLocalizations { String get setupEnterClientSecret => 'Enter Spotify Client Secret'; @override - String get setupGetFreeCredentials => 'Get your free API credentials from the Spotify Developer Dashboard.'; + String get setupGetFreeCredentials => + 'Get your free API credentials from the Spotify Developer Dashboard.'; @override String get setupEnableNotifications => 'Enable Notifications'; @@ -739,10 +775,12 @@ class AppLocalizationsHi extends AppLocalizations { String get setupProceedToNextStep => 'You can now proceed to the next step.'; @override - String get setupNotificationProgressDescription => 'You will receive download progress notifications.'; + String get setupNotificationProgressDescription => + 'You will receive download progress notifications.'; @override - String get setupNotificationBackgroundDescription => 'Get notified about download progress and completion. This helps you track downloads when the app is in background.'; + String get setupNotificationBackgroundDescription => + 'Get notified about download progress and completion. This helps you track downloads when the app is in background.'; @override String get setupSkipForNow => 'Skip for now'; @@ -760,10 +798,12 @@ class AppLocalizationsHi extends AppLocalizations { String get setupSkipAndStart => 'Skip & Start'; @override - String get setupAllowAccessToManageFiles => 'Please enable \"Allow access to manage all files\" in the next screen.'; + String get setupAllowAccessToManageFiles => + 'Please enable \"Allow access to manage all files\" in the next screen.'; @override - String get setupGetCredentialsFromSpotify => 'Get credentials from developer.spotify.com'; + String get setupGetCredentialsFromSpotify => + 'Get credentials from developer.spotify.com'; @override String get dialogCancel => 'Cancel'; @@ -814,7 +854,8 @@ class AppLocalizationsHi extends AppLocalizations { String get dialogDiscardChanges => 'Discard Changes?'; @override - String get dialogUnsavedChanges => 'You have unsaved changes. Do you want to discard them?'; + String get dialogUnsavedChanges => + 'You have unsaved changes. Do you want to discard them?'; @override String get dialogDownloadFailed => 'Download Failed'; @@ -832,7 +873,8 @@ class AppLocalizationsHi extends AppLocalizations { String get dialogClearAll => 'Clear All'; @override - String get dialogClearAllDownloads => 'Are you sure you want to clear all downloads?'; + String get dialogClearAllDownloads => + 'Are you sure you want to clear all downloads?'; @override String get dialogRemoveFromDevice => 'Remove from device?'; @@ -841,7 +883,8 @@ class AppLocalizationsHi extends AppLocalizations { String get dialogRemoveExtension => 'Remove Extension'; @override - String get dialogRemoveExtensionMessage => 'Are you sure you want to remove this extension? This cannot be undone.'; + String get dialogRemoveExtensionMessage => + 'Are you sure you want to remove this extension? This cannot be undone.'; @override String get dialogUninstallExtension => 'Uninstall Extension?'; @@ -855,7 +898,8 @@ class AppLocalizationsHi extends AppLocalizations { String get dialogClearHistoryTitle => 'Clear History'; @override - String get dialogClearHistoryMessage => 'Are you sure you want to clear all download history? This cannot be undone.'; + String get dialogClearHistoryMessage => + 'Are you sure you want to clear all download history? This cannot be undone.'; @override String get dialogDeleteSelectedTitle => 'Delete Selected'; @@ -950,7 +994,8 @@ class AppLocalizationsHi extends AppLocalizations { String get snackbarProviderPrioritySaved => 'Provider priority saved'; @override - String get snackbarMetadataProviderSaved => 'Metadata provider priority saved'; + String get snackbarMetadataProviderSaved => + 'Metadata provider priority saved'; @override String snackbarExtensionInstalled(String extensionName) { @@ -972,7 +1017,8 @@ class AppLocalizationsHi extends AppLocalizations { String get errorRateLimited => 'Rate Limited'; @override - String get errorRateLimitedMessage => 'Too many requests. Please wait a moment before searching again.'; + String get errorRateLimitedMessage => + 'Too many requests. Please wait a moment before searching again.'; @override String errorFailedToLoad(String item) { @@ -1139,19 +1185,23 @@ class AppLocalizationsHi extends AppLocalizations { String get folderOrganizationByArtistAlbum => 'Artist/Album'; @override - String get folderOrganizationDescription => 'Organize downloaded files into folders'; + String get folderOrganizationDescription => + 'Organize downloaded files into folders'; @override String get folderOrganizationNoneSubtitle => 'All files in download folder'; @override - String get folderOrganizationByArtistSubtitle => 'Separate folder for each artist'; + String get folderOrganizationByArtistSubtitle => + 'Separate folder for each artist'; @override - String get folderOrganizationByAlbumSubtitle => 'Separate folder for each album'; + String get folderOrganizationByAlbumSubtitle => + 'Separate folder for each album'; @override - String get folderOrganizationByArtistAlbumSubtitle => 'Nested folders for artist and album'; + String get folderOrganizationByArtistAlbumSubtitle => + 'Nested folders for artist and album'; @override String get updateAvailable => 'Update Available'; @@ -1210,10 +1260,12 @@ class AppLocalizationsHi extends AppLocalizations { String get providerPriorityTitle => 'Provider Priority'; @override - String get providerPriorityDescription => 'Drag to reorder download providers. The app will try providers from top to bottom when downloading tracks.'; + String get providerPriorityDescription => + 'Drag to reorder download providers. The app will try providers from top to bottom when downloading tracks.'; @override - String get providerPriorityInfo => 'If a track is not available on the first provider, the app will automatically try the next one.'; + String get providerPriorityInfo => + 'If a track is not available on the first provider, the app will automatically try the next one.'; @override String get providerBuiltIn => 'Built-in'; @@ -1225,16 +1277,19 @@ class AppLocalizationsHi extends AppLocalizations { String get metadataProviderPriority => 'Metadata Provider Priority'; @override - String get metadataProviderPrioritySubtitle => 'Order used when fetching track metadata'; + String get metadataProviderPrioritySubtitle => + 'Order used when fetching track metadata'; @override String get metadataProviderPriorityTitle => 'Metadata Priority'; @override - String get metadataProviderPriorityDescription => 'Drag to reorder metadata providers. The app will try providers from top to bottom when searching for tracks and fetching metadata.'; + String get metadataProviderPriorityDescription => + 'Drag to reorder metadata providers. The app will try providers from top to bottom when searching for tracks and fetching metadata.'; @override - String get metadataProviderPriorityInfo => 'Deezer has no rate limits and is recommended as primary. Spotify may rate limit after many requests.'; + String get metadataProviderPriorityInfo => + 'Deezer has no rate limits and is recommended as primary. Spotify may rate limit after many requests.'; @override String get metadataNoRateLimits => 'No rate limits'; @@ -1306,16 +1361,19 @@ class AppLocalizationsHi extends AppLocalizations { String get logIssueSummary => 'Issue Summary'; @override - String get logIspBlockingDescription => 'Your ISP may be blocking access to download services'; + String get logIspBlockingDescription => + 'Your ISP may be blocking access to download services'; @override - String get logIspBlockingSuggestion => 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; + String get logIspBlockingSuggestion => + 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; @override String get logRateLimitedDescription => 'Too many requests to the service'; @override - String get logRateLimitedSuggestion => 'Wait a few minutes before trying again'; + String get logRateLimitedSuggestion => + 'Wait a few minutes before trying again'; @override String get logNetworkErrorDescription => 'Connection issues detected'; @@ -1324,10 +1382,12 @@ class AppLocalizationsHi extends AppLocalizations { String get logNetworkErrorSuggestion => 'Check your internet connection'; @override - String get logTrackNotFoundDescription => 'Some tracks could not be found on download services'; + String get logTrackNotFoundDescription => + 'Some tracks could not be found on download services'; @override - String get logTrackNotFoundSuggestion => 'The track may not be available in lossless quality'; + String get logTrackNotFoundSuggestion => + 'The track may not be available in lossless quality'; @override String logTotalErrors(int count) { @@ -1353,7 +1413,8 @@ class AppLocalizationsHi extends AppLocalizations { String get credentialsTitle => 'Spotify Credentials'; @override - String get credentialsDescription => 'Enter your Client ID and Secret to use your own Spotify application quota.'; + String get credentialsDescription => + 'Enter your Client ID and Secret to use your own Spotify application quota.'; @override String get credentialsClientId => 'Client ID'; @@ -1407,7 +1468,8 @@ class AppLocalizationsHi extends AppLocalizations { String get lyricsMode => 'Lyrics Mode'; @override - String get lyricsModeDescription => 'Choose how lyrics are saved with your downloads'; + String get lyricsModeDescription => + 'Choose how lyrics are saved with your downloads'; @override String get lyricsModeEmbed => 'Embed in file'; @@ -1419,7 +1481,8 @@ class AppLocalizationsHi extends AppLocalizations { String get lyricsModeExternal => 'External .lrc file'; @override - String get lyricsModeExternalSubtitle => 'Separate .lrc file for players like Samsung Music'; + String get lyricsModeExternalSubtitle => + 'Separate .lrc file for players like Samsung Music'; @override String get lyricsModeBoth => 'Both'; @@ -1579,7 +1642,8 @@ class AppLocalizationsHi extends AppLocalizations { String get trackDeleteConfirmTitle => 'Remove from device?'; @override - String get trackDeleteConfirmMessage => 'This will permanently delete the downloaded file and remove it from your history.'; + String get trackDeleteConfirmMessage => + 'This will permanently delete the downloaded file and remove it from your history.'; @override String trackCannotOpen(String message) { @@ -1731,13 +1795,15 @@ class AppLocalizationsHi extends AppLocalizations { String get extensionsNoExtensions => 'No extensions installed'; @override - String get extensionsNoExtensionsSubtitle => 'Install .spotiflac-ext files to add new providers'; + String get extensionsNoExtensionsSubtitle => + 'Install .spotiflac-ext files to add new providers'; @override String get extensionsInstallButton => 'Install Extension'; @override - String get extensionsInfoTip => 'Extensions can add new metadata and download providers. Only install extensions from trusted sources.'; + String get extensionsInfoTip => + 'Extensions can add new metadata and download providers. Only install extensions from trusted sources.'; @override String get extensionsInstalledSuccess => 'Extension installed successfully'; @@ -1749,16 +1815,19 @@ class AppLocalizationsHi extends AppLocalizations { String get extensionsDownloadPrioritySubtitle => 'Set download service order'; @override - String get extensionsNoDownloadProvider => 'No extensions with download provider'; + String get extensionsNoDownloadProvider => + 'No extensions with download provider'; @override String get extensionsMetadataPriority => 'Metadata Priority'; @override - String get extensionsMetadataPrioritySubtitle => 'Set search & metadata source order'; + String get extensionsMetadataPrioritySubtitle => + 'Set search & metadata source order'; @override - String get extensionsNoMetadataProvider => 'No extensions with metadata provider'; + String get extensionsNoMetadataProvider => + 'No extensions with metadata provider'; @override String get extensionsSearchProvider => 'Search Provider'; @@ -1767,7 +1836,8 @@ class AppLocalizationsHi extends AppLocalizations { String get extensionsNoCustomSearch => 'No extensions with custom search'; @override - String get extensionsSearchProviderDescription => 'Choose which service to use for searching tracks'; + String get extensionsSearchProviderDescription => + 'Choose which service to use for searching tracks'; @override String get extensionsCustomSearch => 'Custom search'; @@ -1809,7 +1879,8 @@ class AppLocalizationsHi extends AppLocalizations { String get enableLossyOptionSubtitleOn => 'Lossy quality option is available'; @override - String get enableLossyOptionSubtitleOff => 'Downloads FLAC then converts to lossy format'; + String get enableLossyOptionSubtitleOff => + 'Downloads FLAC then converts to lossy format'; @override String get lossyFormat => 'Lossy Format'; @@ -1821,10 +1892,12 @@ class AppLocalizationsHi extends AppLocalizations { String get lossyFormatMp3Subtitle => '320kbps, best compatibility'; @override - String get lossyFormatOpusSubtitle => '128kbps, better quality at smaller size'; + String get lossyFormatOpusSubtitle => + '128kbps, better quality at smaller size'; @override - String get qualityNote => 'Actual quality depends on track availability from the service'; + String get qualityNote => + 'Actual quality depends on track availability from the service'; @override String get downloadAskBeforeDownload => 'Ask Before Download'; @@ -1914,13 +1987,15 @@ class AppLocalizationsHi extends AppLocalizations { String get queueClearAll => 'Clear All'; @override - String get queueClearAllMessage => 'Are you sure you want to clear all downloads?'; + String get queueClearAllMessage => + 'Are you sure you want to clear all downloads?'; @override String get queueExportFailed => 'Export'; @override - String get queueExportFailedSuccess => 'Failed downloads exported to TXT file'; + String get queueExportFailedSuccess => + 'Failed downloads exported to TXT file'; @override String get queueExportFailedClear => 'Clear Failed'; @@ -1932,7 +2007,8 @@ class AppLocalizationsHi extends AppLocalizations { String get settingsAutoExportFailed => 'Auto-export failed downloads'; @override - String get settingsAutoExportFailedSubtitle => 'Save failed downloads to TXT file automatically'; + String get settingsAutoExportFailedSubtitle => + 'Save failed downloads to TXT file automatically'; @override String get settingsDownloadNetwork => 'Download Network'; @@ -1944,7 +2020,8 @@ class AppLocalizationsHi extends AppLocalizations { String get settingsDownloadNetworkWifiOnly => 'WiFi Only'; @override - String get settingsDownloadNetworkSubtitle => 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; + String get settingsDownloadNetworkSubtitle => + 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; @override String get settingsCloudSave => 'Cloud Save'; @@ -1962,7 +2039,8 @@ class AppLocalizationsHi extends AppLocalizations { String get cloudSettingsEnable => 'Enable Cloud Upload'; @override - String get cloudSettingsEnableSubtitle => 'Automatically upload files after download completes'; + String get cloudSettingsEnableSubtitle => + 'Automatically upload files after download completes'; @override String get cloudSettingsSectionProvider => 'Cloud Provider'; @@ -1971,7 +2049,8 @@ class AppLocalizationsHi extends AppLocalizations { String get cloudSettingsProvider => 'Provider'; @override - String get cloudSettingsProviderDescription => 'Select where to upload your downloaded files'; + String get cloudSettingsProviderDescription => + 'Select where to upload your downloaded files'; @override String get cloudSettingsSectionServer => 'Server Configuration'; @@ -1992,7 +2071,20 @@ class AppLocalizationsHi extends AppLocalizations { String get cloudSettingsTestConnection => 'Test Connection'; @override - String get cloudSettingsInfo => 'Downloaded files will be automatically uploaded to your cloud storage after download completes. Original files are kept on your device.'; + String get cloudSettingsInfo => + 'Downloaded files will be automatically uploaded to your cloud storage after download completes. Original files are kept on your device.'; + + @override + String get cloudSettingsUploadQueue => 'Upload Queue'; + + @override + String get cloudSettingsRetryFailed => 'Retry Failed'; + + @override + String get cloudSettingsClearDone => 'Clear Done'; + + @override + String get cloudSettingsRecentUploads => 'Recent Uploads'; @override String get queueEmpty => 'No downloads in queue'; @@ -2028,7 +2120,8 @@ class AppLocalizationsHi extends AppLocalizations { String get albumFolderArtistYearAlbum => 'Artist / [Year] Album'; @override - String get albumFolderArtistYearAlbumSubtitle => 'Albums/Artist Name/[2005] Album Name/'; + String get albumFolderArtistYearAlbumSubtitle => + 'Albums/Artist Name/[2005] Album Name/'; @override String get albumFolderAlbumOnly => 'Album Only'; @@ -2046,7 +2139,8 @@ class AppLocalizationsHi extends AppLocalizations { String get albumFolderArtistAlbumSingles => 'Artist / Album + Singles'; @override - String get albumFolderArtistAlbumSinglesSubtitle => 'Artist/Album/ and Artist/Singles/'; + String get albumFolderArtistAlbumSinglesSubtitle => + 'Artist/Album/ and Artist/Singles/'; @override String get downloadedAlbumDeleteSelected => 'Delete Selected'; @@ -2156,7 +2250,8 @@ class AppLocalizationsHi extends AppLocalizations { String get discographySelectAlbums => 'Select Albums...'; @override - String get discographySelectAlbumsSubtitle => 'Choose specific albums or singles'; + String get discographySelectAlbumsSubtitle => + 'Choose specific albums or singles'; @override String get discographyFetchingTracks => 'Fetching tracks...'; @@ -2203,11 +2298,14 @@ class AppLocalizationsHi extends AppLocalizations { String get allFilesAccessDisabledSubtitle => 'Limited to media folders only'; @override - String get allFilesAccessDescription => 'Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.'; + String get allFilesAccessDescription => + 'Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.'; @override - String get allFilesAccessDeniedMessage => 'Permission was denied. Please enable \'All files access\' manually in system settings.'; + String get allFilesAccessDeniedMessage => + 'Permission was denied. Please enable \'All files access\' manually in system settings.'; @override - String get allFilesAccessDisabledMessage => 'All Files Access disabled. The app will use limited storage access.'; + String get allFilesAccessDisabledMessage => + 'All Files Access disabled. The app will use limited storage access.'; } diff --git a/lib/l10n/app_localizations_id.dart b/lib/l10n/app_localizations_id.dart index ffd3490d..705a912b 100644 --- a/lib/l10n/app_localizations_id.dart +++ b/lib/l10n/app_localizations_id.dart @@ -12,7 +12,8 @@ class AppLocalizationsId extends AppLocalizations { String get appName => 'SpotiFLAC'; @override - String get appDescription => 'Unduh lagu Spotify dalam kualitas lossless dari Tidal, Qobuz, dan Amazon Music.'; + String get appDescription => + 'Unduh lagu Spotify dalam kualitas lossless dari Tidal, Qobuz, dan Amazon Music.'; @override String get navHome => 'Beranda'; @@ -92,19 +93,22 @@ class AppLocalizationsId extends AppLocalizations { String get historyNoDownloads => 'Tidak ada riwayat unduhan'; @override - String get historyNoDownloadsSubtitle => 'Lagu yang diunduh akan muncul di sini'; + String get historyNoDownloadsSubtitle => + 'Lagu yang diunduh akan muncul di sini'; @override String get historyNoAlbums => 'Tidak ada unduhan album'; @override - String get historyNoAlbumsSubtitle => 'Unduh beberapa lagu dari album untuk melihatnya di sini'; + String get historyNoAlbumsSubtitle => + 'Unduh beberapa lagu dari album untuk melihatnya di sini'; @override String get historyNoSingles => 'Tidak ada unduhan single'; @override - String get historyNoSinglesSubtitle => 'Unduhan lagu satuan akan muncul di sini'; + String get historyNoSinglesSubtitle => + 'Unduhan lagu satuan akan muncul di sini'; @override String get historySearchHint => 'Search history...'; @@ -143,7 +147,8 @@ class AppLocalizationsId extends AppLocalizations { String get downloadDefaultService => 'Layanan Default'; @override - String get downloadDefaultServiceSubtitle => 'Layanan yang digunakan untuk unduhan'; + String get downloadDefaultServiceSubtitle => + 'Layanan yang digunakan untuk unduhan'; @override String get downloadDefaultQuality => 'Kualitas Default'; @@ -152,7 +157,8 @@ class AppLocalizationsId extends AppLocalizations { String get downloadAskQuality => 'Tanya Kualitas Sebelum Unduh'; @override - String get downloadAskQualitySubtitle => 'Tampilkan pemilih kualitas untuk setiap unduhan'; + String get downloadAskQualitySubtitle => + 'Tampilkan pemilih kualitas untuk setiap unduhan'; @override String get downloadFilenameFormat => 'Format Nama File'; @@ -164,7 +170,8 @@ class AppLocalizationsId extends AppLocalizations { String get downloadSeparateSingles => 'Pisahkan Single'; @override - String get downloadSeparateSinglesSubtitle => 'Letakkan lagu satuan di folder terpisah'; + String get downloadSeparateSinglesSubtitle => + 'Letakkan lagu satuan di folder terpisah'; @override String get qualityBest => 'Terbaik'; @@ -197,7 +204,8 @@ class AppLocalizationsId extends AppLocalizations { String get appearanceDynamicColor => 'Warna Dinamis'; @override - String get appearanceDynamicColorSubtitle => 'Gunakan warna dari wallpaper Anda'; + String get appearanceDynamicColorSubtitle => + 'Gunakan warna dari wallpaper Anda'; @override String get appearanceAccentColor => 'Warna Aksen'; @@ -221,7 +229,8 @@ class AppLocalizationsId extends AppLocalizations { String get optionsPrimaryProvider => 'Provider Utama'; @override - String get optionsPrimaryProviderSubtitle => 'Layanan yang digunakan saat mencari berdasarkan nama lagu.'; + String get optionsPrimaryProviderSubtitle => + 'Layanan yang digunakan saat mencari berdasarkan nama lagu.'; @override String optionsUsingExtension(String extensionName) { @@ -229,34 +238,40 @@ class AppLocalizationsId extends AppLocalizations { } @override - String get optionsSwitchBack => 'Ketuk Deezer atau Spotify untuk beralih dari ekstensi'; + String get optionsSwitchBack => + 'Ketuk Deezer atau Spotify untuk beralih dari ekstensi'; @override String get optionsAutoFallback => 'Auto Fallback'; @override - String get optionsAutoFallbackSubtitle => 'Coba layanan lain jika unduhan gagal'; + String get optionsAutoFallbackSubtitle => + 'Coba layanan lain jika unduhan gagal'; @override String get optionsUseExtensionProviders => 'Gunakan Provider Ekstensi'; @override - String get optionsUseExtensionProvidersOn => 'Ekstensi akan dicoba terlebih dahulu'; + String get optionsUseExtensionProvidersOn => + 'Ekstensi akan dicoba terlebih dahulu'; @override - String get optionsUseExtensionProvidersOff => 'Hanya menggunakan provider bawaan'; + String get optionsUseExtensionProvidersOff => + 'Hanya menggunakan provider bawaan'; @override String get optionsEmbedLyrics => 'Sematkan Lirik'; @override - String get optionsEmbedLyricsSubtitle => 'Sematkan lirik sinkron ke file FLAC'; + String get optionsEmbedLyricsSubtitle => + 'Sematkan lirik sinkron ke file FLAC'; @override String get optionsMaxQualityCover => 'Cover Kualitas Maksimal'; @override - String get optionsMaxQualityCoverSubtitle => 'Unduh cover art resolusi tertinggi'; + String get optionsMaxQualityCoverSubtitle => + 'Unduh cover art resolusi tertinggi'; @override String get optionsConcurrentDownloads => 'Unduhan Bersamaan'; @@ -270,7 +285,8 @@ class AppLocalizationsId extends AppLocalizations { } @override - String get optionsConcurrentWarning => 'Unduhan paralel dapat memicu pembatasan rate'; + String get optionsConcurrentWarning => + 'Unduhan paralel dapat memicu pembatasan rate'; @override String get optionsExtensionStore => 'Toko Ekstensi'; @@ -294,7 +310,8 @@ class AppLocalizationsId extends AppLocalizations { String get optionsUpdateChannelPreview => 'Dapatkan rilis preview'; @override - String get optionsUpdateChannelWarning => 'Preview mungkin mengandung bug atau fitur belum lengkap'; + String get optionsUpdateChannelWarning => + 'Preview mungkin mengandung bug atau fitur belum lengkap'; @override String get optionsClearHistory => 'Hapus Riwayat Unduhan'; @@ -320,10 +337,12 @@ class AppLocalizationsId extends AppLocalizations { } @override - String get optionsSpotifyCredentialsRequired => 'Diperlukan - ketuk untuk mengatur'; + String get optionsSpotifyCredentialsRequired => + 'Diperlukan - ketuk untuk mengatur'; @override - String get optionsSpotifyWarning => 'Spotify memerlukan kredensial API Anda sendiri. Dapatkan gratis dari developer.spotify.com'; + String get optionsSpotifyWarning => + 'Spotify memerlukan kredensial API Anda sendiri. Dapatkan gratis dari developer.spotify.com'; @override String get extensionsTitle => 'Ekstensi'; @@ -387,7 +406,8 @@ class AppLocalizationsId extends AppLocalizations { String get aboutOriginalCreator => 'Pembuat SpotiFLAC asli'; @override - String get aboutLogoArtist => 'Seniman berbakat yang membuat logo aplikasi kita yang indah!'; + String get aboutLogoArtist => + 'Seniman berbakat yang membuat logo aplikasi kita yang indah!'; @override String get aboutTranslators => 'Translators'; @@ -414,7 +434,8 @@ class AppLocalizationsId extends AppLocalizations { String get aboutFeatureRequest => 'Permintaan fitur'; @override - String get aboutFeatureRequestSubtitle => 'Sarankan fitur baru untuk aplikasi'; + String get aboutFeatureRequestSubtitle => + 'Sarankan fitur baru untuk aplikasi'; @override String get aboutTelegramChannel => 'Telegram Channel'; @@ -447,28 +468,34 @@ class AppLocalizationsId extends AppLocalizations { String get aboutVersion => 'Versi'; @override - String get aboutBinimumDesc => 'Pembuat QQDL & HiFi API. Tanpa API ini, unduhan Tidal tidak akan ada!'; + String get aboutBinimumDesc => + 'Pembuat QQDL & HiFi API. Tanpa API ini, unduhan Tidal tidak akan ada!'; @override - String get aboutSachinsenalDesc => 'Pembuat proyek HiFi asli. Fondasi dari integrasi Tidal!'; + String get aboutSachinsenalDesc => + 'Pembuat proyek HiFi asli. Fondasi dari integrasi Tidal!'; @override - String get aboutSjdonadoDesc => 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; + String get aboutSjdonadoDesc => + 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; @override String get aboutDoubleDouble => 'DoubleDouble'; @override - String get aboutDoubleDoubleDesc => 'API luar biasa untuk unduhan Amazon Music. Terima kasih sudah membuatnya gratis!'; + String get aboutDoubleDoubleDesc => + 'API luar biasa untuk unduhan Amazon Music. Terima kasih sudah membuatnya gratis!'; @override String get aboutDabMusic => 'DAB Music'; @override - String get aboutDabMusicDesc => 'API streaming Qobuz terbaik. Unduhan Hi-Res tidak akan mungkin tanpa ini!'; + String get aboutDabMusicDesc => + 'API streaming Qobuz terbaik. Unduhan Hi-Res tidak akan mungkin tanpa ini!'; @override - String get aboutAppDescription => 'Unduh lagu Spotify dalam kualitas lossless dari Tidal, Qobuz, dan Amazon Music.'; + String get aboutAppDescription => + 'Unduh lagu Spotify dalam kualitas lossless dari Tidal, Qobuz, dan Amazon Music.'; @override String get albumTitle => 'Album'; @@ -573,7 +600,8 @@ class AppLocalizationsId extends AppLocalizations { String get setupStoragePermission => 'Izin Penyimpanan'; @override - String get setupStoragePermissionSubtitle => 'Diperlukan untuk menyimpan file unduhan'; + String get setupStoragePermissionSubtitle => + 'Diperlukan untuk menyimpan file unduhan'; @override String get setupStoragePermissionGranted => 'Izin diberikan'; @@ -600,16 +628,19 @@ class AppLocalizationsId extends AppLocalizations { String get setupStorageAccessRequired => 'Akses Penyimpanan Diperlukan'; @override - String get setupStorageAccessMessage => 'SpotiFLAC membutuhkan izin \"Akses semua file\" untuk menyimpan file musik ke folder pilihan Anda.'; + String get setupStorageAccessMessage => + 'SpotiFLAC membutuhkan izin \"Akses semua file\" untuk menyimpan file musik ke folder pilihan Anda.'; @override - String get setupStorageAccessMessageAndroid11 => 'Android 11+ memerlukan izin \"Akses semua file\" untuk menyimpan file ke folder unduhan pilihan Anda.'; + String get setupStorageAccessMessageAndroid11 => + 'Android 11+ memerlukan izin \"Akses semua file\" untuk menyimpan file ke folder unduhan pilihan Anda.'; @override String get setupOpenSettings => 'Buka Pengaturan'; @override - String get setupPermissionDeniedMessage => 'Izin ditolak. Harap berikan semua izin untuk melanjutkan.'; + String get setupPermissionDeniedMessage => + 'Izin ditolak. Harap berikan semua izin untuk melanjutkan.'; @override String setupPermissionRequired(String permissionType) { @@ -628,7 +659,8 @@ class AppLocalizationsId extends AppLocalizations { String get setupUseDefaultFolder => 'Gunakan Folder Default?'; @override - String get setupNoFolderSelected => 'Tidak ada folder dipilih. Apakah Anda ingin menggunakan folder Musik default?'; + String get setupNoFolderSelected => + 'Tidak ada folder dipilih. Apakah Anda ingin menggunakan folder Musik default?'; @override String get setupUseDefault => 'Gunakan Default'; @@ -637,13 +669,15 @@ class AppLocalizationsId extends AppLocalizations { String get setupDownloadLocationTitle => 'Lokasi Unduhan'; @override - String get setupDownloadLocationIosMessage => 'Di iOS, unduhan disimpan ke folder Documents aplikasi. Anda dapat mengaksesnya melalui aplikasi Files.'; + String get setupDownloadLocationIosMessage => + 'Di iOS, unduhan disimpan ke folder Documents aplikasi. Anda dapat mengaksesnya melalui aplikasi Files.'; @override String get setupAppDocumentsFolder => 'Folder Documents Aplikasi'; @override - String get setupAppDocumentsFolderSubtitle => 'Direkomendasikan - dapat diakses via aplikasi Files'; + String get setupAppDocumentsFolderSubtitle => + 'Direkomendasikan - dapat diakses via aplikasi Files'; @override String get setupChooseFromFiles => 'Pilih dari Files'; @@ -652,10 +686,12 @@ class AppLocalizationsId extends AppLocalizations { String get setupChooseFromFilesSubtitle => 'Pilih lokasi iCloud atau lainnya'; @override - String get setupIosEmptyFolderWarning => 'Batasan iOS: Folder kosong tidak dapat dipilih. Pilih folder dengan minimal satu file.'; + String get setupIosEmptyFolderWarning => + 'Batasan iOS: Folder kosong tidak dapat dipilih. Pilih folder dengan minimal satu file.'; @override - String get setupIcloudNotSupported => 'iCloud Drive is not supported. Please use the app Documents folder.'; + String get setupIcloudNotSupported => + 'iCloud Drive is not supported. Please use the app Documents folder.'; @override String get setupDownloadInFlac => 'Unduh lagu Spotify dalam format FLAC'; @@ -682,7 +718,8 @@ class AppLocalizationsId extends AppLocalizations { String get setupStorageRequired => 'Izin Penyimpanan Diperlukan'; @override - String get setupStorageDescription => 'SpotiFLAC membutuhkan izin penyimpanan untuk menyimpan file musik yang diunduh.'; + String get setupStorageDescription => + 'SpotiFLAC membutuhkan izin penyimpanan untuk menyimpan file musik yang diunduh.'; @override String get setupNotificationGranted => 'Izin Notifikasi Diberikan!'; @@ -691,7 +728,8 @@ class AppLocalizationsId extends AppLocalizations { String get setupNotificationEnable => 'Aktifkan Notifikasi'; @override - String get setupNotificationDescription => 'Dapatkan pemberitahuan saat unduhan selesai atau membutuhkan perhatian.'; + String get setupNotificationDescription => + 'Dapatkan pemberitahuan saat unduhan selesai atau membutuhkan perhatian.'; @override String get setupFolderSelected => 'Folder Unduhan Dipilih!'; @@ -700,7 +738,8 @@ class AppLocalizationsId extends AppLocalizations { String get setupFolderChoose => 'Pilih Folder Unduhan'; @override - String get setupFolderDescription => 'Pilih folder tempat musik yang diunduh akan disimpan.'; + String get setupFolderDescription => + 'Pilih folder tempat musik yang diunduh akan disimpan.'; @override String get setupChangeFolder => 'Ubah Folder'; @@ -712,7 +751,8 @@ class AppLocalizationsId extends AppLocalizations { String get setupSpotifyApiOptional => 'Spotify API (Opsional)'; @override - String get setupSpotifyApiDescription => 'Tambahkan kredensial Spotify API untuk hasil pencarian lebih baik dan akses ke konten eksklusif Spotify.'; + String get setupSpotifyApiDescription => + 'Tambahkan kredensial Spotify API untuk hasil pencarian lebih baik dan akses ke konten eksklusif Spotify.'; @override String get setupUseSpotifyApi => 'Gunakan Spotify API'; @@ -730,19 +770,23 @@ class AppLocalizationsId extends AppLocalizations { String get setupEnterClientSecret => 'Masukkan Spotify Client Secret'; @override - String get setupGetFreeCredentials => 'Dapatkan kredensial API gratis dari Spotify Developer Dashboard.'; + String get setupGetFreeCredentials => + 'Dapatkan kredensial API gratis dari Spotify Developer Dashboard.'; @override String get setupEnableNotifications => 'Aktifkan Notifikasi'; @override - String get setupProceedToNextStep => 'Anda dapat melanjutkan ke langkah berikutnya.'; + String get setupProceedToNextStep => + 'Anda dapat melanjutkan ke langkah berikutnya.'; @override - String get setupNotificationProgressDescription => 'Anda akan menerima notifikasi progres unduhan.'; + String get setupNotificationProgressDescription => + 'Anda akan menerima notifikasi progres unduhan.'; @override - String get setupNotificationBackgroundDescription => 'Dapatkan notifikasi tentang progres dan penyelesaian unduhan. Ini membantu Anda melacak unduhan saat aplikasi di latar belakang.'; + String get setupNotificationBackgroundDescription => + 'Dapatkan notifikasi tentang progres dan penyelesaian unduhan. Ini membantu Anda melacak unduhan saat aplikasi di latar belakang.'; @override String get setupSkipForNow => 'Lewati untuk sekarang'; @@ -760,10 +804,12 @@ class AppLocalizationsId extends AppLocalizations { String get setupSkipAndStart => 'Lewati & Mulai'; @override - String get setupAllowAccessToManageFiles => 'Harap aktifkan \"Izinkan akses untuk mengelola semua file\" di layar berikutnya.'; + String get setupAllowAccessToManageFiles => + 'Harap aktifkan \"Izinkan akses untuk mengelola semua file\" di layar berikutnya.'; @override - String get setupGetCredentialsFromSpotify => 'Dapatkan kredensial dari developer.spotify.com'; + String get setupGetCredentialsFromSpotify => + 'Dapatkan kredensial dari developer.spotify.com'; @override String get dialogCancel => 'Batal'; @@ -814,7 +860,8 @@ class AppLocalizationsId extends AppLocalizations { String get dialogDiscardChanges => 'Buang Perubahan?'; @override - String get dialogUnsavedChanges => 'Anda memiliki perubahan yang belum disimpan. Apakah Anda ingin membuangnya?'; + String get dialogUnsavedChanges => + 'Anda memiliki perubahan yang belum disimpan. Apakah Anda ingin membuangnya?'; @override String get dialogDownloadFailed => 'Unduhan Gagal'; @@ -832,7 +879,8 @@ class AppLocalizationsId extends AppLocalizations { String get dialogClearAll => 'Hapus Semua'; @override - String get dialogClearAllDownloads => 'Apakah Anda yakin ingin menghapus semua unduhan?'; + String get dialogClearAllDownloads => + 'Apakah Anda yakin ingin menghapus semua unduhan?'; @override String get dialogRemoveFromDevice => 'Hapus dari perangkat?'; @@ -841,7 +889,8 @@ class AppLocalizationsId extends AppLocalizations { String get dialogRemoveExtension => 'Hapus Ekstensi'; @override - String get dialogRemoveExtensionMessage => 'Apakah Anda yakin ingin menghapus ekstensi ini? Tindakan ini tidak dapat dibatalkan.'; + String get dialogRemoveExtensionMessage => + 'Apakah Anda yakin ingin menghapus ekstensi ini? Tindakan ini tidak dapat dibatalkan.'; @override String get dialogUninstallExtension => 'Copot Ekstensi?'; @@ -855,7 +904,8 @@ class AppLocalizationsId extends AppLocalizations { String get dialogClearHistoryTitle => 'Hapus Riwayat'; @override - String get dialogClearHistoryMessage => 'Apakah Anda yakin ingin menghapus semua riwayat unduhan? Ini tidak dapat dibatalkan.'; + String get dialogClearHistoryMessage => + 'Apakah Anda yakin ingin menghapus semua riwayat unduhan? Ini tidak dapat dibatalkan.'; @override String get dialogDeleteSelectedTitle => 'Hapus yang Dipilih'; @@ -950,7 +1000,8 @@ class AppLocalizationsId extends AppLocalizations { String get snackbarProviderPrioritySaved => 'Prioritas provider disimpan'; @override - String get snackbarMetadataProviderSaved => 'Prioritas provider metadata disimpan'; + String get snackbarMetadataProviderSaved => + 'Prioritas provider metadata disimpan'; @override String snackbarExtensionInstalled(String extensionName) { @@ -972,7 +1023,8 @@ class AppLocalizationsId extends AppLocalizations { String get errorRateLimited => 'Dibatasi'; @override - String get errorRateLimitedMessage => 'Terlalu banyak permintaan. Harap tunggu sebentar sebelum mencari lagi.'; + String get errorRateLimitedMessage => + 'Terlalu banyak permintaan. Harap tunggu sebentar sebelum mencari lagi.'; @override String errorFailedToLoad(String item) { @@ -1139,19 +1191,23 @@ class AppLocalizationsId extends AppLocalizations { String get folderOrganizationByArtistAlbum => 'Berdasarkan Artis & Album'; @override - String get folderOrganizationDescription => 'Atur file yang diunduh ke dalam folder'; + String get folderOrganizationDescription => + 'Atur file yang diunduh ke dalam folder'; @override String get folderOrganizationNoneSubtitle => 'Semua file di folder unduhan'; @override - String get folderOrganizationByArtistSubtitle => 'Folder terpisah untuk setiap artis'; + String get folderOrganizationByArtistSubtitle => + 'Folder terpisah untuk setiap artis'; @override - String get folderOrganizationByAlbumSubtitle => 'Folder terpisah untuk setiap album'; + String get folderOrganizationByAlbumSubtitle => + 'Folder terpisah untuk setiap album'; @override - String get folderOrganizationByArtistAlbumSubtitle => 'Folder bersarang untuk artis dan album'; + String get folderOrganizationByArtistAlbumSubtitle => + 'Folder bersarang untuk artis dan album'; @override String get updateAvailable => 'Pembaruan Tersedia'; @@ -1204,16 +1260,19 @@ class AppLocalizationsId extends AppLocalizations { String get providerPriority => 'Prioritas Provider'; @override - String get providerPrioritySubtitle => 'Seret untuk mengatur ulang provider unduhan'; + String get providerPrioritySubtitle => + 'Seret untuk mengatur ulang provider unduhan'; @override String get providerPriorityTitle => 'Prioritas Provider'; @override - String get providerPriorityDescription => 'Seret untuk mengatur ulang urutan provider unduhan. Aplikasi akan mencoba provider dari atas ke bawah saat mengunduh lagu.'; + String get providerPriorityDescription => + 'Seret untuk mengatur ulang urutan provider unduhan. Aplikasi akan mencoba provider dari atas ke bawah saat mengunduh lagu.'; @override - String get providerPriorityInfo => 'Jika lagu tidak tersedia di provider pertama, aplikasi akan otomatis mencoba yang berikutnya.'; + String get providerPriorityInfo => + 'Jika lagu tidak tersedia di provider pertama, aplikasi akan otomatis mencoba yang berikutnya.'; @override String get providerBuiltIn => 'Bawaan'; @@ -1225,16 +1284,19 @@ class AppLocalizationsId extends AppLocalizations { String get metadataProviderPriority => 'Prioritas Provider Metadata'; @override - String get metadataProviderPrioritySubtitle => 'Urutan yang digunakan saat mengambil metadata lagu'; + String get metadataProviderPrioritySubtitle => + 'Urutan yang digunakan saat mengambil metadata lagu'; @override String get metadataProviderPriorityTitle => 'Prioritas Metadata'; @override - String get metadataProviderPriorityDescription => 'Seret untuk mengatur ulang urutan provider metadata. Aplikasi akan mencoba provider dari atas ke bawah saat mencari lagu dan mengambil metadata.'; + String get metadataProviderPriorityDescription => + 'Seret untuk mengatur ulang urutan provider metadata. Aplikasi akan mencoba provider dari atas ke bawah saat mencari lagu dan mengambil metadata.'; @override - String get metadataProviderPriorityInfo => 'Deezer tidak memiliki batas rate dan direkomendasikan sebagai utama. Spotify mungkin membatasi rate setelah banyak permintaan.'; + String get metadataProviderPriorityInfo => + 'Deezer tidak memiliki batas rate dan direkomendasikan sebagai utama. Spotify mungkin membatasi rate setelah banyak permintaan.'; @override String get metadataNoRateLimits => 'Tidak ada batas rate'; @@ -1279,7 +1341,8 @@ class AppLocalizationsId extends AppLocalizations { String get logClearLogsTitle => 'Hapus Log'; @override - String get logClearLogsMessage => 'Apakah Anda yakin ingin menghapus semua log?'; + String get logClearLogsMessage => + 'Apakah Anda yakin ingin menghapus semua log?'; @override String get logIspBlocking => 'PEMBLOKIRAN ISP TERDETEKSI'; @@ -1300,22 +1363,27 @@ class AppLocalizationsId extends AppLocalizations { String get logNoLogsYet => 'Belum ada log'; @override - String get logNoLogsYetSubtitle => 'Log akan muncul di sini saat Anda menggunakan aplikasi'; + String get logNoLogsYetSubtitle => + 'Log akan muncul di sini saat Anda menggunakan aplikasi'; @override String get logIssueSummary => 'Ringkasan Masalah'; @override - String get logIspBlockingDescription => 'ISP Anda mungkin memblokir akses ke layanan unduhan'; + String get logIspBlockingDescription => + 'ISP Anda mungkin memblokir akses ke layanan unduhan'; @override - String get logIspBlockingSuggestion => 'Coba gunakan VPN atau ubah DNS ke 1.1.1.1 atau 8.8.8.8'; + String get logIspBlockingSuggestion => + 'Coba gunakan VPN atau ubah DNS ke 1.1.1.1 atau 8.8.8.8'; @override - String get logRateLimitedDescription => 'Terlalu banyak permintaan ke layanan'; + String get logRateLimitedDescription => + 'Terlalu banyak permintaan ke layanan'; @override - String get logRateLimitedSuggestion => 'Tunggu beberapa menit sebelum mencoba lagi'; + String get logRateLimitedSuggestion => + 'Tunggu beberapa menit sebelum mencoba lagi'; @override String get logNetworkErrorDescription => 'Masalah koneksi terdeteksi'; @@ -1324,10 +1392,12 @@ class AppLocalizationsId extends AppLocalizations { String get logNetworkErrorSuggestion => 'Periksa koneksi internet Anda'; @override - String get logTrackNotFoundDescription => 'Beberapa lagu tidak dapat ditemukan di layanan unduhan'; + String get logTrackNotFoundDescription => + 'Beberapa lagu tidak dapat ditemukan di layanan unduhan'; @override - String get logTrackNotFoundSuggestion => 'Lagu mungkin tidak tersedia dalam kualitas lossless'; + String get logTrackNotFoundSuggestion => + 'Lagu mungkin tidak tersedia dalam kualitas lossless'; @override String logTotalErrors(int count) { @@ -1353,7 +1423,8 @@ class AppLocalizationsId extends AppLocalizations { String get credentialsTitle => 'Kredensial Spotify'; @override - String get credentialsDescription => 'Masukkan Client ID dan Secret Anda untuk menggunakan kuota aplikasi Spotify Anda sendiri.'; + String get credentialsDescription => + 'Masukkan Client ID dan Secret Anda untuk menggunakan kuota aplikasi Spotify Anda sendiri.'; @override String get credentialsClientId => 'Client ID'; @@ -1407,7 +1478,8 @@ class AppLocalizationsId extends AppLocalizations { String get lyricsMode => 'Lyrics Mode'; @override - String get lyricsModeDescription => 'Choose how lyrics are saved with your downloads'; + String get lyricsModeDescription => + 'Choose how lyrics are saved with your downloads'; @override String get lyricsModeEmbed => 'Embed in file'; @@ -1419,7 +1491,8 @@ class AppLocalizationsId extends AppLocalizations { String get lyricsModeExternal => 'External .lrc file'; @override - String get lyricsModeExternalSubtitle => 'Separate .lrc file for players like Samsung Music'; + String get lyricsModeExternalSubtitle => + 'Separate .lrc file for players like Samsung Music'; @override String get lyricsModeBoth => 'Both'; @@ -1579,7 +1652,8 @@ class AppLocalizationsId extends AppLocalizations { String get trackDeleteConfirmTitle => 'Hapus dari perangkat?'; @override - String get trackDeleteConfirmMessage => 'Ini akan menghapus file unduhan secara permanen dan menghapusnya dari riwayat Anda.'; + String get trackDeleteConfirmMessage => + 'Ini akan menghapus file unduhan secara permanen dan menghapusnya dari riwayat Anda.'; @override String trackCannotOpen(String message) { @@ -1731,13 +1805,15 @@ class AppLocalizationsId extends AppLocalizations { String get extensionsNoExtensions => 'Tidak ada ekstensi terpasang'; @override - String get extensionsNoExtensionsSubtitle => 'Pasang file .spotiflac-ext untuk menambahkan provider baru'; + String get extensionsNoExtensionsSubtitle => + 'Pasang file .spotiflac-ext untuk menambahkan provider baru'; @override String get extensionsInstallButton => 'Pasang Ekstensi'; @override - String get extensionsInfoTip => 'Ekstensi dapat menambahkan provider metadata dan unduhan baru. Hanya pasang ekstensi dari sumber terpercaya.'; + String get extensionsInfoTip => + 'Ekstensi dapat menambahkan provider metadata dan unduhan baru. Hanya pasang ekstensi dari sumber terpercaya.'; @override String get extensionsInstalledSuccess => 'Ekstensi berhasil dipasang'; @@ -1746,28 +1822,34 @@ class AppLocalizationsId extends AppLocalizations { String get extensionsDownloadPriority => 'Prioritas Unduhan'; @override - String get extensionsDownloadPrioritySubtitle => 'Atur urutan layanan unduhan'; + String get extensionsDownloadPrioritySubtitle => + 'Atur urutan layanan unduhan'; @override - String get extensionsNoDownloadProvider => 'Tidak ada ekstensi dengan provider unduhan'; + String get extensionsNoDownloadProvider => + 'Tidak ada ekstensi dengan provider unduhan'; @override String get extensionsMetadataPriority => 'Prioritas Metadata'; @override - String get extensionsMetadataPrioritySubtitle => 'Atur urutan sumber pencarian & metadata'; + String get extensionsMetadataPrioritySubtitle => + 'Atur urutan sumber pencarian & metadata'; @override - String get extensionsNoMetadataProvider => 'Tidak ada ekstensi dengan provider metadata'; + String get extensionsNoMetadataProvider => + 'Tidak ada ekstensi dengan provider metadata'; @override String get extensionsSearchProvider => 'Provider Pencarian'; @override - String get extensionsNoCustomSearch => 'Tidak ada ekstensi dengan pencarian kustom'; + String get extensionsNoCustomSearch => + 'Tidak ada ekstensi dengan pencarian kustom'; @override - String get extensionsSearchProviderDescription => 'Pilih layanan yang digunakan untuk mencari lagu'; + String get extensionsSearchProviderDescription => + 'Pilih layanan yang digunakan untuk mencari lagu'; @override String get extensionsCustomSearch => 'Pencarian kustom'; @@ -1809,7 +1891,8 @@ class AppLocalizationsId extends AppLocalizations { String get enableLossyOptionSubtitleOn => 'Lossy quality option is available'; @override - String get enableLossyOptionSubtitleOff => 'Downloads FLAC then converts to lossy format'; + String get enableLossyOptionSubtitleOff => + 'Downloads FLAC then converts to lossy format'; @override String get lossyFormat => 'Lossy Format'; @@ -1821,10 +1904,12 @@ class AppLocalizationsId extends AppLocalizations { String get lossyFormatMp3Subtitle => '320kbps, best compatibility'; @override - String get lossyFormatOpusSubtitle => '128kbps, better quality at smaller size'; + String get lossyFormatOpusSubtitle => + '128kbps, better quality at smaller size'; @override - String get qualityNote => 'Kualitas sebenarnya tergantung ketersediaan lagu dari layanan'; + String get qualityNote => + 'Kualitas sebenarnya tergantung ketersediaan lagu dari layanan'; @override String get downloadAskBeforeDownload => 'Tanya Sebelum Unduh'; @@ -1860,7 +1945,8 @@ class AppLocalizationsId extends AppLocalizations { String get folderNone => 'Tidak ada'; @override - String get folderNoneSubtitle => 'Simpan semua file langsung ke folder unduhan'; + String get folderNoneSubtitle => + 'Simpan semua file langsung ke folder unduhan'; @override String get folderArtist => 'Artis'; @@ -1914,13 +2000,15 @@ class AppLocalizationsId extends AppLocalizations { String get queueClearAll => 'Hapus Semua'; @override - String get queueClearAllMessage => 'Apakah Anda yakin ingin menghapus semua unduhan?'; + String get queueClearAllMessage => + 'Apakah Anda yakin ingin menghapus semua unduhan?'; @override String get queueExportFailed => 'Export'; @override - String get queueExportFailedSuccess => 'Failed downloads exported to TXT file'; + String get queueExportFailedSuccess => + 'Failed downloads exported to TXT file'; @override String get queueExportFailedClear => 'Clear Failed'; @@ -1932,7 +2020,8 @@ class AppLocalizationsId extends AppLocalizations { String get settingsAutoExportFailed => 'Auto-export failed downloads'; @override - String get settingsAutoExportFailedSubtitle => 'Save failed downloads to TXT file automatically'; + String get settingsAutoExportFailedSubtitle => + 'Save failed downloads to TXT file automatically'; @override String get settingsDownloadNetwork => 'Download Network'; @@ -1944,7 +2033,8 @@ class AppLocalizationsId extends AppLocalizations { String get settingsDownloadNetworkWifiOnly => 'WiFi Only'; @override - String get settingsDownloadNetworkSubtitle => 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; + String get settingsDownloadNetworkSubtitle => + 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; @override String get settingsCloudSave => 'Cloud Save'; @@ -1962,7 +2052,8 @@ class AppLocalizationsId extends AppLocalizations { String get cloudSettingsEnable => 'Enable Cloud Upload'; @override - String get cloudSettingsEnableSubtitle => 'Automatically upload files after download completes'; + String get cloudSettingsEnableSubtitle => + 'Automatically upload files after download completes'; @override String get cloudSettingsSectionProvider => 'Cloud Provider'; @@ -1971,7 +2062,8 @@ class AppLocalizationsId extends AppLocalizations { String get cloudSettingsProvider => 'Provider'; @override - String get cloudSettingsProviderDescription => 'Select where to upload your downloaded files'; + String get cloudSettingsProviderDescription => + 'Select where to upload your downloaded files'; @override String get cloudSettingsSectionServer => 'Server Configuration'; @@ -1992,7 +2084,20 @@ class AppLocalizationsId extends AppLocalizations { String get cloudSettingsTestConnection => 'Test Connection'; @override - String get cloudSettingsInfo => 'Downloaded files will be automatically uploaded to your cloud storage after download completes. Original files are kept on your device.'; + String get cloudSettingsInfo => + 'Downloaded files will be automatically uploaded to your cloud storage after download completes. Original files are kept on your device.'; + + @override + String get cloudSettingsUploadQueue => 'Upload Queue'; + + @override + String get cloudSettingsRetryFailed => 'Retry Failed'; + + @override + String get cloudSettingsClearDone => 'Clear Done'; + + @override + String get cloudSettingsRecentUploads => 'Recent Uploads'; @override String get queueEmpty => 'Tidak ada unduhan dalam antrian'; @@ -2028,7 +2133,8 @@ class AppLocalizationsId extends AppLocalizations { String get albumFolderArtistYearAlbum => 'Artis / [Tahun] Album'; @override - String get albumFolderArtistYearAlbumSubtitle => 'Albums/Nama Artis/[2005] Nama Album/'; + String get albumFolderArtistYearAlbumSubtitle => + 'Albums/Nama Artis/[2005] Nama Album/'; @override String get albumFolderAlbumOnly => 'Album Saja'; @@ -2046,7 +2152,8 @@ class AppLocalizationsId extends AppLocalizations { String get albumFolderArtistAlbumSingles => 'Artist / Album + Singles'; @override - String get albumFolderArtistAlbumSinglesSubtitle => 'Artist/Album/ and Artist/Singles/'; + String get albumFolderArtistAlbumSinglesSubtitle => + 'Artist/Album/ and Artist/Singles/'; @override String get downloadedAlbumDeleteSelected => 'Hapus yang Dipilih'; @@ -2156,7 +2263,8 @@ class AppLocalizationsId extends AppLocalizations { String get discographySelectAlbums => 'Select Albums...'; @override - String get discographySelectAlbumsSubtitle => 'Choose specific albums or singles'; + String get discographySelectAlbumsSubtitle => + 'Choose specific albums or singles'; @override String get discographyFetchingTracks => 'Fetching tracks...'; @@ -2203,11 +2311,14 @@ class AppLocalizationsId extends AppLocalizations { String get allFilesAccessDisabledSubtitle => 'Limited to media folders only'; @override - String get allFilesAccessDescription => 'Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.'; + String get allFilesAccessDescription => + 'Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.'; @override - String get allFilesAccessDeniedMessage => 'Permission was denied. Please enable \'All files access\' manually in system settings.'; + String get allFilesAccessDeniedMessage => + 'Permission was denied. Please enable \'All files access\' manually in system settings.'; @override - String get allFilesAccessDisabledMessage => 'All Files Access disabled. The app will use limited storage access.'; + String get allFilesAccessDisabledMessage => + 'All Files Access disabled. The app will use limited storage access.'; } diff --git a/lib/l10n/app_localizations_ja.dart b/lib/l10n/app_localizations_ja.dart index cb47a9d4..21f11f1b 100644 --- a/lib/l10n/app_localizations_ja.dart +++ b/lib/l10n/app_localizations_ja.dart @@ -12,7 +12,8 @@ class AppLocalizationsJa extends AppLocalizations { String get appName => 'SpotiFLAC'; @override - String get appDescription => 'Tidal、Qobuz、Amazon Music から Spotify のトラックをロスレス品質でダウンロードします。'; + String get appDescription => + 'Tidal、Qobuz、Amazon Music から Spotify のトラックをロスレス品質でダウンロードします。'; @override String get navHome => 'ホーム'; @@ -98,13 +99,15 @@ class AppLocalizationsJa extends AppLocalizations { String get historyNoAlbums => 'アルバムのダウンロードはありません'; @override - String get historyNoAlbumsSubtitle => 'Download multiple tracks from an album to see them here'; + String get historyNoAlbumsSubtitle => + 'Download multiple tracks from an album to see them here'; @override String get historyNoSingles => 'シングルのダウンロードはありません'; @override - String get historyNoSinglesSubtitle => 'Single track downloads will appear here'; + String get historyNoSinglesSubtitle => + 'Single track downloads will appear here'; @override String get historySearchHint => '検索履歴...'; @@ -152,7 +155,8 @@ class AppLocalizationsJa extends AppLocalizations { String get downloadAskQuality => 'ダウンロード前に品質を確認する'; @override - String get downloadAskQualitySubtitle => 'Show quality picker for each download'; + String get downloadAskQualitySubtitle => + 'Show quality picker for each download'; @override String get downloadFilenameFormat => 'ファイル名の形式'; @@ -164,7 +168,8 @@ class AppLocalizationsJa extends AppLocalizations { String get downloadSeparateSingles => 'シングルを分割'; @override - String get downloadSeparateSinglesSubtitle => 'Put single tracks in a separate folder'; + String get downloadSeparateSinglesSubtitle => + 'Put single tracks in a separate folder'; @override String get qualityBest => 'おすすめ'; @@ -221,7 +226,8 @@ class AppLocalizationsJa extends AppLocalizations { String get optionsPrimaryProvider => 'プライマリーのプロバイダー'; @override - String get optionsPrimaryProviderSubtitle => 'Service used when searching by track name.'; + String get optionsPrimaryProviderSubtitle => + 'Service used when searching by track name.'; @override String optionsUsingExtension(String extensionName) { @@ -229,13 +235,15 @@ class AppLocalizationsJa extends AppLocalizations { } @override - String get optionsSwitchBack => 'Tap Deezer or Spotify to switch back from extension'; + String get optionsSwitchBack => + 'Tap Deezer or Spotify to switch back from extension'; @override String get optionsAutoFallback => 'Auto Fallback'; @override - String get optionsAutoFallbackSubtitle => 'Try other services if download fails'; + String get optionsAutoFallbackSubtitle => + 'Try other services if download fails'; @override String get optionsUseExtensionProviders => '拡張のプロバイダーを使用する'; @@ -270,7 +278,8 @@ class AppLocalizationsJa extends AppLocalizations { } @override - String get optionsConcurrentWarning => 'Parallel downloads may trigger rate limiting'; + String get optionsConcurrentWarning => + 'Parallel downloads may trigger rate limiting'; @override String get optionsExtensionStore => '拡張ストア'; @@ -282,7 +291,8 @@ class AppLocalizationsJa extends AppLocalizations { String get optionsCheckUpdates => '更新を確認'; @override - String get optionsCheckUpdatesSubtitle => 'Notify when new version is available'; + String get optionsCheckUpdatesSubtitle => + 'Notify when new version is available'; @override String get optionsUpdateChannel => '更新チャンネル'; @@ -294,7 +304,8 @@ class AppLocalizationsJa extends AppLocalizations { String get optionsUpdateChannelPreview => 'プレビューリリースを入手'; @override - String get optionsUpdateChannelWarning => 'Preview may contain bugs or incomplete features'; + String get optionsUpdateChannelWarning => + 'Preview may contain bugs or incomplete features'; @override String get optionsClearHistory => 'ダウンロード履歴を消去'; @@ -323,7 +334,8 @@ class AppLocalizationsJa extends AppLocalizations { String get optionsSpotifyCredentialsRequired => '必須 - タップで設定'; @override - String get optionsSpotifyWarning => 'Spotify は独自の API 認証情報が必要です。developer.spotify.com から取得できます。'; + String get optionsSpotifyWarning => + 'Spotify は独自の API 認証情報が必要です。developer.spotify.com から取得できます。'; @override String get extensionsTitle => '拡張'; @@ -447,28 +459,34 @@ class AppLocalizationsJa extends AppLocalizations { String get aboutVersion => 'バージョン'; @override - String get aboutBinimumDesc => 'The creator of QQDL & HiFi API. Without this API, Tidal downloads wouldn\'t exist!'; + String get aboutBinimumDesc => + 'The creator of QQDL & HiFi API. Without this API, Tidal downloads wouldn\'t exist!'; @override - String get aboutSachinsenalDesc => 'The original HiFi project creator. The foundation of Tidal integration!'; + String get aboutSachinsenalDesc => + 'The original HiFi project creator. The foundation of Tidal integration!'; @override - String get aboutSjdonadoDesc => 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; + String get aboutSjdonadoDesc => + 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; @override String get aboutDoubleDouble => 'DoubleDouble'; @override - String get aboutDoubleDoubleDesc => 'Amazing API for Amazon Music downloads. Thank you for making it free!'; + String get aboutDoubleDoubleDesc => + 'Amazing API for Amazon Music downloads. Thank you for making it free!'; @override String get aboutDabMusic => 'DAB Music'; @override - String get aboutDabMusicDesc => 'The best Qobuz streaming API. Hi-Res downloads wouldn\'t be possible without this!'; + String get aboutDabMusicDesc => + 'The best Qobuz streaming API. Hi-Res downloads wouldn\'t be possible without this!'; @override - String get aboutAppDescription => 'Tidal、Qobuz、Amazon Music から Spotify のトラックをロスレス品質でダウンロードします。'; + String get aboutAppDescription => + 'Tidal、Qobuz、Amazon Music から Spotify のトラックをロスレス品質でダウンロードします。'; @override String get albumTitle => 'アルバム'; @@ -600,16 +618,19 @@ class AppLocalizationsJa extends AppLocalizations { String get setupStorageAccessRequired => 'ストレージアクセスが必要です'; @override - String get setupStorageAccessMessage => 'SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.'; + String get setupStorageAccessMessage => + 'SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.'; @override - String get setupStorageAccessMessageAndroid11 => 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; + String get setupStorageAccessMessageAndroid11 => + 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; @override String get setupOpenSettings => '設定を開く'; @override - String get setupPermissionDeniedMessage => 'Permission denied. Please grant all permissions to continue.'; + String get setupPermissionDeniedMessage => + 'Permission denied. Please grant all permissions to continue.'; @override String setupPermissionRequired(String permissionType) { @@ -628,7 +649,8 @@ class AppLocalizationsJa extends AppLocalizations { String get setupUseDefaultFolder => 'デフォルトのフォルダを使用しますか?'; @override - String get setupNoFolderSelected => 'No folder selected. Would you like to use the default Music folder?'; + String get setupNoFolderSelected => + 'No folder selected. Would you like to use the default Music folder?'; @override String get setupUseDefault => 'デフォルトを使用する'; @@ -637,13 +659,15 @@ class AppLocalizationsJa extends AppLocalizations { String get setupDownloadLocationTitle => 'ダウンロード先'; @override - String get setupDownloadLocationIosMessage => 'On iOS, downloads are saved to the app\'s Documents folder. You can access them via the Files app.'; + String get setupDownloadLocationIosMessage => + 'On iOS, downloads are saved to the app\'s Documents folder. You can access them via the Files app.'; @override String get setupAppDocumentsFolder => 'アプリのドキュメントフォルダ'; @override - String get setupAppDocumentsFolderSubtitle => 'Recommended - accessible via Files app'; + String get setupAppDocumentsFolderSubtitle => + 'Recommended - accessible via Files app'; @override String get setupChooseFromFiles => 'ファイルから選択'; @@ -652,10 +676,12 @@ class AppLocalizationsJa extends AppLocalizations { String get setupChooseFromFilesSubtitle => 'iCloud またはその他の場所を選択'; @override - String get setupIosEmptyFolderWarning => 'iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.'; + String get setupIosEmptyFolderWarning => + 'iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.'; @override - String get setupIcloudNotSupported => 'iCloud Drive is not supported. Please use the app Documents folder.'; + String get setupIcloudNotSupported => + 'iCloud Drive is not supported. Please use the app Documents folder.'; @override String get setupDownloadInFlac => 'Spotify のトラックを FLAC でダウンロード'; @@ -682,7 +708,8 @@ class AppLocalizationsJa extends AppLocalizations { String get setupStorageRequired => 'ストレージの権限が必要です'; @override - String get setupStorageDescription => 'SpotiFLAC はダウンロードした音楽ファイルを保存するためにストレージの権限が必要です。'; + String get setupStorageDescription => + 'SpotiFLAC はダウンロードした音楽ファイルを保存するためにストレージの権限が必要です。'; @override String get setupNotificationGranted => '通知の権限が許可されました!'; @@ -691,7 +718,8 @@ class AppLocalizationsJa extends AppLocalizations { String get setupNotificationEnable => '通知を有効化する'; @override - String get setupNotificationDescription => 'Get notified when downloads complete or require attention.'; + String get setupNotificationDescription => + 'Get notified when downloads complete or require attention.'; @override String get setupFolderSelected => 'ダウンロードフォルダが選択済みです!'; @@ -700,7 +728,8 @@ class AppLocalizationsJa extends AppLocalizations { String get setupFolderChoose => 'ダウンロードフォルダを選択'; @override - String get setupFolderDescription => 'Select a folder where your downloaded music will be saved.'; + String get setupFolderDescription => + 'Select a folder where your downloaded music will be saved.'; @override String get setupChangeFolder => 'フォルダを変更'; @@ -712,7 +741,8 @@ class AppLocalizationsJa extends AppLocalizations { String get setupSpotifyApiOptional => 'Spotify API (任意)'; @override - String get setupSpotifyApiDescription => 'Add your Spotify API credentials for better search results and access to Spotify-exclusive content.'; + String get setupSpotifyApiDescription => + 'Add your Spotify API credentials for better search results and access to Spotify-exclusive content.'; @override String get setupUseSpotifyApi => 'Spotify API を使用する'; @@ -730,7 +760,8 @@ class AppLocalizationsJa extends AppLocalizations { String get setupEnterClientSecret => 'Spotify クライアントシークレットを入力'; @override - String get setupGetFreeCredentials => 'Spotify 開発者ダッシュボードから無料の API 認証情報を取得します。'; + String get setupGetFreeCredentials => + 'Spotify 開発者ダッシュボードから無料の API 認証情報を取得します。'; @override String get setupEnableNotifications => '通知を有効化する'; @@ -739,10 +770,12 @@ class AppLocalizationsJa extends AppLocalizations { String get setupProceedToNextStep => 'You can now proceed to the next step.'; @override - String get setupNotificationProgressDescription => 'You will receive download progress notifications.'; + String get setupNotificationProgressDescription => + 'You will receive download progress notifications.'; @override - String get setupNotificationBackgroundDescription => 'Get notified about download progress and completion. This helps you track downloads when the app is in background.'; + String get setupNotificationBackgroundDescription => + 'Get notified about download progress and completion. This helps you track downloads when the app is in background.'; @override String get setupSkipForNow => '今はスキップ'; @@ -760,10 +793,12 @@ class AppLocalizationsJa extends AppLocalizations { String get setupSkipAndStart => 'スキップと開始'; @override - String get setupAllowAccessToManageFiles => 'Please enable \"Allow access to manage all files\" in the next screen.'; + String get setupAllowAccessToManageFiles => + 'Please enable \"Allow access to manage all files\" in the next screen.'; @override - String get setupGetCredentialsFromSpotify => 'developer.spotify.com から認証情報を取得します'; + String get setupGetCredentialsFromSpotify => + 'developer.spotify.com から認証情報を取得します'; @override String get dialogCancel => 'キャンセル'; @@ -814,7 +849,8 @@ class AppLocalizationsJa extends AppLocalizations { String get dialogDiscardChanges => '変更を破棄しますか?'; @override - String get dialogUnsavedChanges => 'You have unsaved changes. Do you want to discard them?'; + String get dialogUnsavedChanges => + 'You have unsaved changes. Do you want to discard them?'; @override String get dialogDownloadFailed => 'ダウンロードに失敗しました'; @@ -832,7 +868,8 @@ class AppLocalizationsJa extends AppLocalizations { String get dialogClearAll => 'すべて消去'; @override - String get dialogClearAllDownloads => 'Are you sure you want to clear all downloads?'; + String get dialogClearAllDownloads => + 'Are you sure you want to clear all downloads?'; @override String get dialogRemoveFromDevice => 'デバイスから削除しますか?'; @@ -841,7 +878,8 @@ class AppLocalizationsJa extends AppLocalizations { String get dialogRemoveExtension => '拡張を削除'; @override - String get dialogRemoveExtensionMessage => 'Are you sure you want to remove this extension? This cannot be undone.'; + String get dialogRemoveExtensionMessage => + 'Are you sure you want to remove this extension? This cannot be undone.'; @override String get dialogUninstallExtension => '拡張をアンインストールしますか?'; @@ -855,7 +893,8 @@ class AppLocalizationsJa extends AppLocalizations { String get dialogClearHistoryTitle => '履歴を消去'; @override - String get dialogClearHistoryMessage => 'Are you sure you want to clear all download history? This cannot be undone.'; + String get dialogClearHistoryMessage => + 'Are you sure you want to clear all download history? This cannot be undone.'; @override String get dialogDeleteSelectedTitle => '選択済みを削除'; @@ -972,7 +1011,8 @@ class AppLocalizationsJa extends AppLocalizations { String get errorRateLimited => 'レート制限'; @override - String get errorRateLimitedMessage => 'Too many requests. Please wait a moment before searching again.'; + String get errorRateLimitedMessage => + 'Too many requests. Please wait a moment before searching again.'; @override String errorFailedToLoad(String item) { @@ -1145,13 +1185,16 @@ class AppLocalizationsJa extends AppLocalizations { String get folderOrganizationNoneSubtitle => 'ダウンロードフォルダ内のすべてのファイル'; @override - String get folderOrganizationByArtistSubtitle => 'Separate folder for each artist'; + String get folderOrganizationByArtistSubtitle => + 'Separate folder for each artist'; @override - String get folderOrganizationByAlbumSubtitle => 'Separate folder for each album'; + String get folderOrganizationByAlbumSubtitle => + 'Separate folder for each album'; @override - String get folderOrganizationByArtistAlbumSubtitle => 'Nested folders for artist and album'; + String get folderOrganizationByArtistAlbumSubtitle => + 'Nested folders for artist and album'; @override String get updateAvailable => '更新が利用可能です'; @@ -1210,10 +1253,12 @@ class AppLocalizationsJa extends AppLocalizations { String get providerPriorityTitle => 'プロバイダーの優先度'; @override - String get providerPriorityDescription => 'Drag to reorder download providers. The app will try providers from top to bottom when downloading tracks.'; + String get providerPriorityDescription => + 'Drag to reorder download providers. The app will try providers from top to bottom when downloading tracks.'; @override - String get providerPriorityInfo => 'If a track is not available on the first provider, the app will automatically try the next one.'; + String get providerPriorityInfo => + 'If a track is not available on the first provider, the app will automatically try the next one.'; @override String get providerBuiltIn => '内蔵'; @@ -1225,16 +1270,19 @@ class AppLocalizationsJa extends AppLocalizations { String get metadataProviderPriority => 'メタデータプロバイダーの優先度'; @override - String get metadataProviderPrioritySubtitle => 'Order used when fetching track metadata'; + String get metadataProviderPrioritySubtitle => + 'Order used when fetching track metadata'; @override String get metadataProviderPriorityTitle => 'メタデータの優先度'; @override - String get metadataProviderPriorityDescription => 'Drag to reorder metadata providers. The app will try providers from top to bottom when searching for tracks and fetching metadata.'; + String get metadataProviderPriorityDescription => + 'Drag to reorder metadata providers. The app will try providers from top to bottom when searching for tracks and fetching metadata.'; @override - String get metadataProviderPriorityInfo => 'Deezer has no rate limits and is recommended as primary. Spotify may rate limit after many requests.'; + String get metadataProviderPriorityInfo => + 'Deezer has no rate limits and is recommended as primary. Spotify may rate limit after many requests.'; @override String get metadataNoRateLimits => 'レート制限はありません'; @@ -1306,16 +1354,19 @@ class AppLocalizationsJa extends AppLocalizations { String get logIssueSummary => '問題の概要'; @override - String get logIspBlockingDescription => 'ISP がダウンロードサービスのアクセスをブロックしている可能性があります'; + String get logIspBlockingDescription => + 'ISP がダウンロードサービスのアクセスをブロックしている可能性があります'; @override - String get logIspBlockingSuggestion => 'VPN を使用するか DNS を 1.1.1.1 または 8.8.8.8 に変更をお試しください'; + String get logIspBlockingSuggestion => + 'VPN を使用するか DNS を 1.1.1.1 または 8.8.8.8 に変更をお試しください'; @override String get logRateLimitedDescription => 'サービスへのリクエストが多すぎます'; @override - String get logRateLimitedSuggestion => 'Wait a few minutes before trying again'; + String get logRateLimitedSuggestion => + 'Wait a few minutes before trying again'; @override String get logNetworkErrorDescription => '接続の問題が検出されました'; @@ -1324,10 +1375,12 @@ class AppLocalizationsJa extends AppLocalizations { String get logNetworkErrorSuggestion => 'インターネット接続を確認してください'; @override - String get logTrackNotFoundDescription => 'Some tracks could not be found on download services'; + String get logTrackNotFoundDescription => + 'Some tracks could not be found on download services'; @override - String get logTrackNotFoundSuggestion => 'The track may not be available in lossless quality'; + String get logTrackNotFoundSuggestion => + 'The track may not be available in lossless quality'; @override String logTotalErrors(int count) { @@ -1353,7 +1406,8 @@ class AppLocalizationsJa extends AppLocalizations { String get credentialsTitle => 'Spotify の認証情報'; @override - String get credentialsDescription => 'Enter your Client ID and Secret to use your own Spotify application quota.'; + String get credentialsDescription => + 'Enter your Client ID and Secret to use your own Spotify application quota.'; @override String get credentialsClientId => 'クライアント ID'; @@ -1407,7 +1461,8 @@ class AppLocalizationsJa extends AppLocalizations { String get lyricsMode => '歌詞モード'; @override - String get lyricsModeDescription => 'Choose how lyrics are saved with your downloads'; + String get lyricsModeDescription => + 'Choose how lyrics are saved with your downloads'; @override String get lyricsModeEmbed => 'Embed in file'; @@ -1419,7 +1474,8 @@ class AppLocalizationsJa extends AppLocalizations { String get lyricsModeExternal => '外部 .lrc ファイル'; @override - String get lyricsModeExternalSubtitle => 'Separate .lrc file for players like Samsung Music'; + String get lyricsModeExternalSubtitle => + 'Separate .lrc file for players like Samsung Music'; @override String get lyricsModeBoth => '両方'; @@ -1579,7 +1635,8 @@ class AppLocalizationsJa extends AppLocalizations { String get trackDeleteConfirmTitle => 'デバイスから削除しますか?'; @override - String get trackDeleteConfirmMessage => 'This will permanently delete the downloaded file and remove it from your history.'; + String get trackDeleteConfirmMessage => + 'This will permanently delete the downloaded file and remove it from your history.'; @override String trackCannotOpen(String message) { @@ -1731,13 +1788,15 @@ class AppLocalizationsJa extends AppLocalizations { String get extensionsNoExtensions => '拡張はインストールされていません'; @override - String get extensionsNoExtensionsSubtitle => '新しいプロバイダーを追加するには .spotiflac-ext ファイルをインストールします'; + String get extensionsNoExtensionsSubtitle => + '新しいプロバイダーを追加するには .spotiflac-ext ファイルをインストールします'; @override String get extensionsInstallButton => '拡張をインストール'; @override - String get extensionsInfoTip => '拡張は新しいメタデータとダウンロードプロバイダーを追加することがあります。信頼できるソースからの拡張のみをインストールしてください。'; + String get extensionsInfoTip => + '拡張は新しいメタデータとダウンロードプロバイダーを追加することがあります。信頼できるソースからの拡張のみをインストールしてください。'; @override String get extensionsInstalledSuccess => '拡張のインストールが成功しました'; @@ -1809,7 +1868,8 @@ class AppLocalizationsJa extends AppLocalizations { String get enableLossyOptionSubtitleOn => 'Lossy quality option is available'; @override - String get enableLossyOptionSubtitleOff => 'Downloads FLAC then converts to lossy format'; + String get enableLossyOptionSubtitleOff => + 'Downloads FLAC then converts to lossy format'; @override String get lossyFormat => 'Lossy Format'; @@ -1821,7 +1881,8 @@ class AppLocalizationsJa extends AppLocalizations { String get lossyFormatMp3Subtitle => '320kbps, best compatibility'; @override - String get lossyFormatOpusSubtitle => '128kbps, better quality at smaller size'; + String get lossyFormatOpusSubtitle => + '128kbps, better quality at smaller size'; @override String get qualityNote => '実際の品質はサービスからのトラックの可用性に依存します'; @@ -1920,7 +1981,8 @@ class AppLocalizationsJa extends AppLocalizations { String get queueExportFailed => 'Export'; @override - String get queueExportFailedSuccess => 'Failed downloads exported to TXT file'; + String get queueExportFailedSuccess => + 'Failed downloads exported to TXT file'; @override String get queueExportFailedClear => 'Clear Failed'; @@ -1932,7 +1994,8 @@ class AppLocalizationsJa extends AppLocalizations { String get settingsAutoExportFailed => 'Auto-export failed downloads'; @override - String get settingsAutoExportFailedSubtitle => 'Save failed downloads to TXT file automatically'; + String get settingsAutoExportFailedSubtitle => + 'Save failed downloads to TXT file automatically'; @override String get settingsDownloadNetwork => 'Download Network'; @@ -1944,7 +2007,8 @@ class AppLocalizationsJa extends AppLocalizations { String get settingsDownloadNetworkWifiOnly => 'WiFi Only'; @override - String get settingsDownloadNetworkSubtitle => 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; + String get settingsDownloadNetworkSubtitle => + 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; @override String get settingsCloudSave => 'Cloud Save'; @@ -1962,7 +2026,8 @@ class AppLocalizationsJa extends AppLocalizations { String get cloudSettingsEnable => 'Enable Cloud Upload'; @override - String get cloudSettingsEnableSubtitle => 'Automatically upload files after download completes'; + String get cloudSettingsEnableSubtitle => + 'Automatically upload files after download completes'; @override String get cloudSettingsSectionProvider => 'Cloud Provider'; @@ -1971,7 +2036,8 @@ class AppLocalizationsJa extends AppLocalizations { String get cloudSettingsProvider => 'Provider'; @override - String get cloudSettingsProviderDescription => 'Select where to upload your downloaded files'; + String get cloudSettingsProviderDescription => + 'Select where to upload your downloaded files'; @override String get cloudSettingsSectionServer => 'Server Configuration'; @@ -1992,7 +2058,20 @@ class AppLocalizationsJa extends AppLocalizations { String get cloudSettingsTestConnection => 'Test Connection'; @override - String get cloudSettingsInfo => 'Downloaded files will be automatically uploaded to your cloud storage after download completes. Original files are kept on your device.'; + String get cloudSettingsInfo => + 'Downloaded files will be automatically uploaded to your cloud storage after download completes. Original files are kept on your device.'; + + @override + String get cloudSettingsUploadQueue => 'Upload Queue'; + + @override + String get cloudSettingsRetryFailed => 'Retry Failed'; + + @override + String get cloudSettingsClearDone => 'Clear Done'; + + @override + String get cloudSettingsRecentUploads => 'Recent Uploads'; @override String get queueEmpty => 'キューにダウンロードがありません'; @@ -2046,7 +2125,8 @@ class AppLocalizationsJa extends AppLocalizations { String get albumFolderArtistAlbumSingles => 'Artist / Album + Singles'; @override - String get albumFolderArtistAlbumSinglesSubtitle => 'Artist/Album/ and Artist/Singles/'; + String get albumFolderArtistAlbumSinglesSubtitle => + 'Artist/Album/ and Artist/Singles/'; @override String get downloadedAlbumDeleteSelected => '選択済みを削除'; @@ -2156,7 +2236,8 @@ class AppLocalizationsJa extends AppLocalizations { String get discographySelectAlbums => 'アルバムを選択...'; @override - String get discographySelectAlbumsSubtitle => 'Choose specific albums or singles'; + String get discographySelectAlbumsSubtitle => + 'Choose specific albums or singles'; @override String get discographyFetchingTracks => 'トラックを取得中です...'; @@ -2203,11 +2284,14 @@ class AppLocalizationsJa extends AppLocalizations { String get allFilesAccessDisabledSubtitle => 'Limited to media folders only'; @override - String get allFilesAccessDescription => 'Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.'; + String get allFilesAccessDescription => + 'Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.'; @override - String get allFilesAccessDeniedMessage => 'Permission was denied. Please enable \'All files access\' manually in system settings.'; + String get allFilesAccessDeniedMessage => + 'Permission was denied. Please enable \'All files access\' manually in system settings.'; @override - String get allFilesAccessDisabledMessage => 'All Files Access disabled. The app will use limited storage access.'; + String get allFilesAccessDisabledMessage => + 'All Files Access disabled. The app will use limited storage access.'; } diff --git a/lib/l10n/app_localizations_ko.dart b/lib/l10n/app_localizations_ko.dart index 9dbfb52f..fc7d42b0 100644 --- a/lib/l10n/app_localizations_ko.dart +++ b/lib/l10n/app_localizations_ko.dart @@ -12,7 +12,8 @@ class AppLocalizationsKo extends AppLocalizations { String get appName => 'SpotiFLAC'; @override - String get appDescription => 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; + String get appDescription => + 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; @override String get navHome => 'Home'; @@ -98,13 +99,15 @@ class AppLocalizationsKo extends AppLocalizations { String get historyNoAlbums => 'No album downloads'; @override - String get historyNoAlbumsSubtitle => 'Download multiple tracks from an album to see them here'; + String get historyNoAlbumsSubtitle => + 'Download multiple tracks from an album to see them here'; @override String get historyNoSingles => 'No single downloads'; @override - String get historyNoSinglesSubtitle => 'Single track downloads will appear here'; + String get historyNoSinglesSubtitle => + 'Single track downloads will appear here'; @override String get historySearchHint => 'Search history...'; @@ -152,7 +155,8 @@ class AppLocalizationsKo extends AppLocalizations { String get downloadAskQuality => 'Ask Quality Before Download'; @override - String get downloadAskQualitySubtitle => 'Show quality picker for each download'; + String get downloadAskQualitySubtitle => + 'Show quality picker for each download'; @override String get downloadFilenameFormat => 'Filename Format'; @@ -164,7 +168,8 @@ class AppLocalizationsKo extends AppLocalizations { String get downloadSeparateSingles => 'Separate Singles'; @override - String get downloadSeparateSinglesSubtitle => 'Put single tracks in a separate folder'; + String get downloadSeparateSinglesSubtitle => + 'Put single tracks in a separate folder'; @override String get qualityBest => 'Best Available'; @@ -221,7 +226,8 @@ class AppLocalizationsKo extends AppLocalizations { String get optionsPrimaryProvider => 'Primary Provider'; @override - String get optionsPrimaryProviderSubtitle => 'Service used when searching by track name.'; + String get optionsPrimaryProviderSubtitle => + 'Service used when searching by track name.'; @override String optionsUsingExtension(String extensionName) { @@ -229,13 +235,15 @@ class AppLocalizationsKo extends AppLocalizations { } @override - String get optionsSwitchBack => 'Tap Deezer or Spotify to switch back from extension'; + String get optionsSwitchBack => + 'Tap Deezer or Spotify to switch back from extension'; @override String get optionsAutoFallback => 'Auto Fallback'; @override - String get optionsAutoFallbackSubtitle => 'Try other services if download fails'; + String get optionsAutoFallbackSubtitle => + 'Try other services if download fails'; @override String get optionsUseExtensionProviders => 'Use Extension Providers'; @@ -250,13 +258,15 @@ class AppLocalizationsKo extends AppLocalizations { String get optionsEmbedLyrics => 'Embed Lyrics'; @override - String get optionsEmbedLyricsSubtitle => 'Embed synced lyrics into FLAC files'; + String get optionsEmbedLyricsSubtitle => + 'Embed synced lyrics into FLAC files'; @override String get optionsMaxQualityCover => 'Max Quality Cover'; @override - String get optionsMaxQualityCoverSubtitle => 'Download highest resolution cover art'; + String get optionsMaxQualityCoverSubtitle => + 'Download highest resolution cover art'; @override String get optionsConcurrentDownloads => 'Concurrent Downloads'; @@ -270,7 +280,8 @@ class AppLocalizationsKo extends AppLocalizations { } @override - String get optionsConcurrentWarning => 'Parallel downloads may trigger rate limiting'; + String get optionsConcurrentWarning => + 'Parallel downloads may trigger rate limiting'; @override String get optionsExtensionStore => 'Extension Store'; @@ -282,7 +293,8 @@ class AppLocalizationsKo extends AppLocalizations { String get optionsCheckUpdates => 'Check for Updates'; @override - String get optionsCheckUpdatesSubtitle => 'Notify when new version is available'; + String get optionsCheckUpdatesSubtitle => + 'Notify when new version is available'; @override String get optionsUpdateChannel => 'Update Channel'; @@ -294,13 +306,15 @@ class AppLocalizationsKo extends AppLocalizations { String get optionsUpdateChannelPreview => 'Get preview releases'; @override - String get optionsUpdateChannelWarning => 'Preview may contain bugs or incomplete features'; + String get optionsUpdateChannelWarning => + 'Preview may contain bugs or incomplete features'; @override String get optionsClearHistory => 'Clear Download History'; @override - String get optionsClearHistorySubtitle => 'Remove all downloaded tracks from history'; + String get optionsClearHistorySubtitle => + 'Remove all downloaded tracks from history'; @override String get optionsDetailedLogging => 'Detailed Logging'; @@ -323,7 +337,8 @@ class AppLocalizationsKo extends AppLocalizations { String get optionsSpotifyCredentialsRequired => 'Required - tap to configure'; @override - String get optionsSpotifyWarning => 'Spotify requires your own API credentials. Get them free from developer.spotify.com'; + String get optionsSpotifyWarning => + 'Spotify requires your own API credentials. Get them free from developer.spotify.com'; @override String get extensionsTitle => 'Extensions'; @@ -387,7 +402,8 @@ class AppLocalizationsKo extends AppLocalizations { String get aboutOriginalCreator => 'Creator of the original SpotiFLAC'; @override - String get aboutLogoArtist => 'The talented artist who created our beautiful app logo!'; + String get aboutLogoArtist => + 'The talented artist who created our beautiful app logo!'; @override String get aboutTranslators => 'Translators'; @@ -447,28 +463,34 @@ class AppLocalizationsKo extends AppLocalizations { String get aboutVersion => 'Version'; @override - String get aboutBinimumDesc => 'The creator of QQDL & HiFi API. Without this API, Tidal downloads wouldn\'t exist!'; + String get aboutBinimumDesc => + 'The creator of QQDL & HiFi API. Without this API, Tidal downloads wouldn\'t exist!'; @override - String get aboutSachinsenalDesc => 'The original HiFi project creator. The foundation of Tidal integration!'; + String get aboutSachinsenalDesc => + 'The original HiFi project creator. The foundation of Tidal integration!'; @override - String get aboutSjdonadoDesc => 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; + String get aboutSjdonadoDesc => + 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; @override String get aboutDoubleDouble => 'DoubleDouble'; @override - String get aboutDoubleDoubleDesc => 'Amazing API for Amazon Music downloads. Thank you for making it free!'; + String get aboutDoubleDoubleDesc => + 'Amazing API for Amazon Music downloads. Thank you for making it free!'; @override String get aboutDabMusic => 'DAB Music'; @override - String get aboutDabMusicDesc => 'The best Qobuz streaming API. Hi-Res downloads wouldn\'t be possible without this!'; + String get aboutDabMusicDesc => + 'The best Qobuz streaming API. Hi-Res downloads wouldn\'t be possible without this!'; @override - String get aboutAppDescription => 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; + String get aboutAppDescription => + 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; @override String get albumTitle => 'Album'; @@ -573,7 +595,8 @@ class AppLocalizationsKo extends AppLocalizations { String get setupStoragePermission => 'Storage Permission'; @override - String get setupStoragePermissionSubtitle => 'Required to save downloaded files'; + String get setupStoragePermissionSubtitle => + 'Required to save downloaded files'; @override String get setupStoragePermissionGranted => 'Permission granted'; @@ -600,16 +623,19 @@ class AppLocalizationsKo extends AppLocalizations { String get setupStorageAccessRequired => 'Storage Access Required'; @override - String get setupStorageAccessMessage => 'SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.'; + String get setupStorageAccessMessage => + 'SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.'; @override - String get setupStorageAccessMessageAndroid11 => 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; + String get setupStorageAccessMessageAndroid11 => + 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; @override String get setupOpenSettings => 'Open Settings'; @override - String get setupPermissionDeniedMessage => 'Permission denied. Please grant all permissions to continue.'; + String get setupPermissionDeniedMessage => + 'Permission denied. Please grant all permissions to continue.'; @override String setupPermissionRequired(String permissionType) { @@ -628,7 +654,8 @@ class AppLocalizationsKo extends AppLocalizations { String get setupUseDefaultFolder => 'Use Default Folder?'; @override - String get setupNoFolderSelected => 'No folder selected. Would you like to use the default Music folder?'; + String get setupNoFolderSelected => + 'No folder selected. Would you like to use the default Music folder?'; @override String get setupUseDefault => 'Use Default'; @@ -637,13 +664,15 @@ class AppLocalizationsKo extends AppLocalizations { String get setupDownloadLocationTitle => 'Download Location'; @override - String get setupDownloadLocationIosMessage => 'On iOS, downloads are saved to the app\'s Documents folder. You can access them via the Files app.'; + String get setupDownloadLocationIosMessage => + 'On iOS, downloads are saved to the app\'s Documents folder. You can access them via the Files app.'; @override String get setupAppDocumentsFolder => 'App Documents Folder'; @override - String get setupAppDocumentsFolderSubtitle => 'Recommended - accessible via Files app'; + String get setupAppDocumentsFolderSubtitle => + 'Recommended - accessible via Files app'; @override String get setupChooseFromFiles => 'Choose from Files'; @@ -652,10 +681,12 @@ class AppLocalizationsKo extends AppLocalizations { String get setupChooseFromFilesSubtitle => 'Select iCloud or other location'; @override - String get setupIosEmptyFolderWarning => 'iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.'; + String get setupIosEmptyFolderWarning => + 'iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.'; @override - String get setupIcloudNotSupported => 'iCloud Drive is not supported. Please use the app Documents folder.'; + String get setupIcloudNotSupported => + 'iCloud Drive is not supported. Please use the app Documents folder.'; @override String get setupDownloadInFlac => 'Download Spotify tracks in FLAC'; @@ -682,7 +713,8 @@ class AppLocalizationsKo extends AppLocalizations { String get setupStorageRequired => 'Storage Permission Required'; @override - String get setupStorageDescription => 'SpotiFLAC needs storage permission to save your downloaded music files.'; + String get setupStorageDescription => + 'SpotiFLAC needs storage permission to save your downloaded music files.'; @override String get setupNotificationGranted => 'Notification Permission Granted!'; @@ -691,7 +723,8 @@ class AppLocalizationsKo extends AppLocalizations { String get setupNotificationEnable => 'Enable Notifications'; @override - String get setupNotificationDescription => 'Get notified when downloads complete or require attention.'; + String get setupNotificationDescription => + 'Get notified when downloads complete or require attention.'; @override String get setupFolderSelected => 'Download Folder Selected!'; @@ -700,7 +733,8 @@ class AppLocalizationsKo extends AppLocalizations { String get setupFolderChoose => 'Choose Download Folder'; @override - String get setupFolderDescription => 'Select a folder where your downloaded music will be saved.'; + String get setupFolderDescription => + 'Select a folder where your downloaded music will be saved.'; @override String get setupChangeFolder => 'Change Folder'; @@ -712,7 +746,8 @@ class AppLocalizationsKo extends AppLocalizations { String get setupSpotifyApiOptional => 'Spotify API (Optional)'; @override - String get setupSpotifyApiDescription => 'Add your Spotify API credentials for better search results and access to Spotify-exclusive content.'; + String get setupSpotifyApiDescription => + 'Add your Spotify API credentials for better search results and access to Spotify-exclusive content.'; @override String get setupUseSpotifyApi => 'Use Spotify API'; @@ -730,7 +765,8 @@ class AppLocalizationsKo extends AppLocalizations { String get setupEnterClientSecret => 'Enter Spotify Client Secret'; @override - String get setupGetFreeCredentials => 'Get your free API credentials from the Spotify Developer Dashboard.'; + String get setupGetFreeCredentials => + 'Get your free API credentials from the Spotify Developer Dashboard.'; @override String get setupEnableNotifications => 'Enable Notifications'; @@ -739,10 +775,12 @@ class AppLocalizationsKo extends AppLocalizations { String get setupProceedToNextStep => 'You can now proceed to the next step.'; @override - String get setupNotificationProgressDescription => 'You will receive download progress notifications.'; + String get setupNotificationProgressDescription => + 'You will receive download progress notifications.'; @override - String get setupNotificationBackgroundDescription => 'Get notified about download progress and completion. This helps you track downloads when the app is in background.'; + String get setupNotificationBackgroundDescription => + 'Get notified about download progress and completion. This helps you track downloads when the app is in background.'; @override String get setupSkipForNow => 'Skip for now'; @@ -760,10 +798,12 @@ class AppLocalizationsKo extends AppLocalizations { String get setupSkipAndStart => 'Skip & Start'; @override - String get setupAllowAccessToManageFiles => 'Please enable \"Allow access to manage all files\" in the next screen.'; + String get setupAllowAccessToManageFiles => + 'Please enable \"Allow access to manage all files\" in the next screen.'; @override - String get setupGetCredentialsFromSpotify => 'Get credentials from developer.spotify.com'; + String get setupGetCredentialsFromSpotify => + 'Get credentials from developer.spotify.com'; @override String get dialogCancel => 'Cancel'; @@ -814,7 +854,8 @@ class AppLocalizationsKo extends AppLocalizations { String get dialogDiscardChanges => 'Discard Changes?'; @override - String get dialogUnsavedChanges => 'You have unsaved changes. Do you want to discard them?'; + String get dialogUnsavedChanges => + 'You have unsaved changes. Do you want to discard them?'; @override String get dialogDownloadFailed => 'Download Failed'; @@ -832,7 +873,8 @@ class AppLocalizationsKo extends AppLocalizations { String get dialogClearAll => 'Clear All'; @override - String get dialogClearAllDownloads => 'Are you sure you want to clear all downloads?'; + String get dialogClearAllDownloads => + 'Are you sure you want to clear all downloads?'; @override String get dialogRemoveFromDevice => 'Remove from device?'; @@ -841,7 +883,8 @@ class AppLocalizationsKo extends AppLocalizations { String get dialogRemoveExtension => 'Remove Extension'; @override - String get dialogRemoveExtensionMessage => 'Are you sure you want to remove this extension? This cannot be undone.'; + String get dialogRemoveExtensionMessage => + 'Are you sure you want to remove this extension? This cannot be undone.'; @override String get dialogUninstallExtension => 'Uninstall Extension?'; @@ -855,7 +898,8 @@ class AppLocalizationsKo extends AppLocalizations { String get dialogClearHistoryTitle => 'Clear History'; @override - String get dialogClearHistoryMessage => 'Are you sure you want to clear all download history? This cannot be undone.'; + String get dialogClearHistoryMessage => + 'Are you sure you want to clear all download history? This cannot be undone.'; @override String get dialogDeleteSelectedTitle => 'Delete Selected'; @@ -950,7 +994,8 @@ class AppLocalizationsKo extends AppLocalizations { String get snackbarProviderPrioritySaved => 'Provider priority saved'; @override - String get snackbarMetadataProviderSaved => 'Metadata provider priority saved'; + String get snackbarMetadataProviderSaved => + 'Metadata provider priority saved'; @override String snackbarExtensionInstalled(String extensionName) { @@ -972,7 +1017,8 @@ class AppLocalizationsKo extends AppLocalizations { String get errorRateLimited => 'Rate Limited'; @override - String get errorRateLimitedMessage => 'Too many requests. Please wait a moment before searching again.'; + String get errorRateLimitedMessage => + 'Too many requests. Please wait a moment before searching again.'; @override String errorFailedToLoad(String item) { @@ -1139,19 +1185,23 @@ class AppLocalizationsKo extends AppLocalizations { String get folderOrganizationByArtistAlbum => 'Artist/Album'; @override - String get folderOrganizationDescription => 'Organize downloaded files into folders'; + String get folderOrganizationDescription => + 'Organize downloaded files into folders'; @override String get folderOrganizationNoneSubtitle => 'All files in download folder'; @override - String get folderOrganizationByArtistSubtitle => 'Separate folder for each artist'; + String get folderOrganizationByArtistSubtitle => + 'Separate folder for each artist'; @override - String get folderOrganizationByAlbumSubtitle => 'Separate folder for each album'; + String get folderOrganizationByAlbumSubtitle => + 'Separate folder for each album'; @override - String get folderOrganizationByArtistAlbumSubtitle => 'Nested folders for artist and album'; + String get folderOrganizationByArtistAlbumSubtitle => + 'Nested folders for artist and album'; @override String get updateAvailable => 'Update Available'; @@ -1210,10 +1260,12 @@ class AppLocalizationsKo extends AppLocalizations { String get providerPriorityTitle => 'Provider Priority'; @override - String get providerPriorityDescription => 'Drag to reorder download providers. The app will try providers from top to bottom when downloading tracks.'; + String get providerPriorityDescription => + 'Drag to reorder download providers. The app will try providers from top to bottom when downloading tracks.'; @override - String get providerPriorityInfo => 'If a track is not available on the first provider, the app will automatically try the next one.'; + String get providerPriorityInfo => + 'If a track is not available on the first provider, the app will automatically try the next one.'; @override String get providerBuiltIn => 'Built-in'; @@ -1225,16 +1277,19 @@ class AppLocalizationsKo extends AppLocalizations { String get metadataProviderPriority => 'Metadata Provider Priority'; @override - String get metadataProviderPrioritySubtitle => 'Order used when fetching track metadata'; + String get metadataProviderPrioritySubtitle => + 'Order used when fetching track metadata'; @override String get metadataProviderPriorityTitle => 'Metadata Priority'; @override - String get metadataProviderPriorityDescription => 'Drag to reorder metadata providers. The app will try providers from top to bottom when searching for tracks and fetching metadata.'; + String get metadataProviderPriorityDescription => + 'Drag to reorder metadata providers. The app will try providers from top to bottom when searching for tracks and fetching metadata.'; @override - String get metadataProviderPriorityInfo => 'Deezer has no rate limits and is recommended as primary. Spotify may rate limit after many requests.'; + String get metadataProviderPriorityInfo => + 'Deezer has no rate limits and is recommended as primary. Spotify may rate limit after many requests.'; @override String get metadataNoRateLimits => 'No rate limits'; @@ -1306,16 +1361,19 @@ class AppLocalizationsKo extends AppLocalizations { String get logIssueSummary => 'Issue Summary'; @override - String get logIspBlockingDescription => 'Your ISP may be blocking access to download services'; + String get logIspBlockingDescription => + 'Your ISP may be blocking access to download services'; @override - String get logIspBlockingSuggestion => 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; + String get logIspBlockingSuggestion => + 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; @override String get logRateLimitedDescription => 'Too many requests to the service'; @override - String get logRateLimitedSuggestion => 'Wait a few minutes before trying again'; + String get logRateLimitedSuggestion => + 'Wait a few minutes before trying again'; @override String get logNetworkErrorDescription => 'Connection issues detected'; @@ -1324,10 +1382,12 @@ class AppLocalizationsKo extends AppLocalizations { String get logNetworkErrorSuggestion => 'Check your internet connection'; @override - String get logTrackNotFoundDescription => 'Some tracks could not be found on download services'; + String get logTrackNotFoundDescription => + 'Some tracks could not be found on download services'; @override - String get logTrackNotFoundSuggestion => 'The track may not be available in lossless quality'; + String get logTrackNotFoundSuggestion => + 'The track may not be available in lossless quality'; @override String logTotalErrors(int count) { @@ -1353,7 +1413,8 @@ class AppLocalizationsKo extends AppLocalizations { String get credentialsTitle => 'Spotify Credentials'; @override - String get credentialsDescription => 'Enter your Client ID and Secret to use your own Spotify application quota.'; + String get credentialsDescription => + 'Enter your Client ID and Secret to use your own Spotify application quota.'; @override String get credentialsClientId => 'Client ID'; @@ -1407,7 +1468,8 @@ class AppLocalizationsKo extends AppLocalizations { String get lyricsMode => 'Lyrics Mode'; @override - String get lyricsModeDescription => 'Choose how lyrics are saved with your downloads'; + String get lyricsModeDescription => + 'Choose how lyrics are saved with your downloads'; @override String get lyricsModeEmbed => 'Embed in file'; @@ -1419,7 +1481,8 @@ class AppLocalizationsKo extends AppLocalizations { String get lyricsModeExternal => 'External .lrc file'; @override - String get lyricsModeExternalSubtitle => 'Separate .lrc file for players like Samsung Music'; + String get lyricsModeExternalSubtitle => + 'Separate .lrc file for players like Samsung Music'; @override String get lyricsModeBoth => 'Both'; @@ -1579,7 +1642,8 @@ class AppLocalizationsKo extends AppLocalizations { String get trackDeleteConfirmTitle => 'Remove from device?'; @override - String get trackDeleteConfirmMessage => 'This will permanently delete the downloaded file and remove it from your history.'; + String get trackDeleteConfirmMessage => + 'This will permanently delete the downloaded file and remove it from your history.'; @override String trackCannotOpen(String message) { @@ -1731,13 +1795,15 @@ class AppLocalizationsKo extends AppLocalizations { String get extensionsNoExtensions => 'No extensions installed'; @override - String get extensionsNoExtensionsSubtitle => 'Install .spotiflac-ext files to add new providers'; + String get extensionsNoExtensionsSubtitle => + 'Install .spotiflac-ext files to add new providers'; @override String get extensionsInstallButton => 'Install Extension'; @override - String get extensionsInfoTip => 'Extensions can add new metadata and download providers. Only install extensions from trusted sources.'; + String get extensionsInfoTip => + 'Extensions can add new metadata and download providers. Only install extensions from trusted sources.'; @override String get extensionsInstalledSuccess => 'Extension installed successfully'; @@ -1749,16 +1815,19 @@ class AppLocalizationsKo extends AppLocalizations { String get extensionsDownloadPrioritySubtitle => 'Set download service order'; @override - String get extensionsNoDownloadProvider => 'No extensions with download provider'; + String get extensionsNoDownloadProvider => + 'No extensions with download provider'; @override String get extensionsMetadataPriority => 'Metadata Priority'; @override - String get extensionsMetadataPrioritySubtitle => 'Set search & metadata source order'; + String get extensionsMetadataPrioritySubtitle => + 'Set search & metadata source order'; @override - String get extensionsNoMetadataProvider => 'No extensions with metadata provider'; + String get extensionsNoMetadataProvider => + 'No extensions with metadata provider'; @override String get extensionsSearchProvider => 'Search Provider'; @@ -1767,7 +1836,8 @@ class AppLocalizationsKo extends AppLocalizations { String get extensionsNoCustomSearch => 'No extensions with custom search'; @override - String get extensionsSearchProviderDescription => 'Choose which service to use for searching tracks'; + String get extensionsSearchProviderDescription => + 'Choose which service to use for searching tracks'; @override String get extensionsCustomSearch => 'Custom search'; @@ -1809,7 +1879,8 @@ class AppLocalizationsKo extends AppLocalizations { String get enableLossyOptionSubtitleOn => 'Lossy quality option is available'; @override - String get enableLossyOptionSubtitleOff => 'Downloads FLAC then converts to lossy format'; + String get enableLossyOptionSubtitleOff => + 'Downloads FLAC then converts to lossy format'; @override String get lossyFormat => 'Lossy Format'; @@ -1821,10 +1892,12 @@ class AppLocalizationsKo extends AppLocalizations { String get lossyFormatMp3Subtitle => '320kbps, best compatibility'; @override - String get lossyFormatOpusSubtitle => '128kbps, better quality at smaller size'; + String get lossyFormatOpusSubtitle => + '128kbps, better quality at smaller size'; @override - String get qualityNote => 'Actual quality depends on track availability from the service'; + String get qualityNote => + 'Actual quality depends on track availability from the service'; @override String get downloadAskBeforeDownload => 'Ask Before Download'; @@ -1914,13 +1987,15 @@ class AppLocalizationsKo extends AppLocalizations { String get queueClearAll => 'Clear All'; @override - String get queueClearAllMessage => 'Are you sure you want to clear all downloads?'; + String get queueClearAllMessage => + 'Are you sure you want to clear all downloads?'; @override String get queueExportFailed => 'Export'; @override - String get queueExportFailedSuccess => 'Failed downloads exported to TXT file'; + String get queueExportFailedSuccess => + 'Failed downloads exported to TXT file'; @override String get queueExportFailedClear => 'Clear Failed'; @@ -1932,7 +2007,8 @@ class AppLocalizationsKo extends AppLocalizations { String get settingsAutoExportFailed => 'Auto-export failed downloads'; @override - String get settingsAutoExportFailedSubtitle => 'Save failed downloads to TXT file automatically'; + String get settingsAutoExportFailedSubtitle => + 'Save failed downloads to TXT file automatically'; @override String get settingsDownloadNetwork => 'Download Network'; @@ -1944,7 +2020,8 @@ class AppLocalizationsKo extends AppLocalizations { String get settingsDownloadNetworkWifiOnly => 'WiFi Only'; @override - String get settingsDownloadNetworkSubtitle => 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; + String get settingsDownloadNetworkSubtitle => + 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; @override String get settingsCloudSave => 'Cloud Save'; @@ -1962,7 +2039,8 @@ class AppLocalizationsKo extends AppLocalizations { String get cloudSettingsEnable => 'Enable Cloud Upload'; @override - String get cloudSettingsEnableSubtitle => 'Automatically upload files after download completes'; + String get cloudSettingsEnableSubtitle => + 'Automatically upload files after download completes'; @override String get cloudSettingsSectionProvider => 'Cloud Provider'; @@ -1971,7 +2049,8 @@ class AppLocalizationsKo extends AppLocalizations { String get cloudSettingsProvider => 'Provider'; @override - String get cloudSettingsProviderDescription => 'Select where to upload your downloaded files'; + String get cloudSettingsProviderDescription => + 'Select where to upload your downloaded files'; @override String get cloudSettingsSectionServer => 'Server Configuration'; @@ -1992,7 +2071,20 @@ class AppLocalizationsKo extends AppLocalizations { String get cloudSettingsTestConnection => 'Test Connection'; @override - String get cloudSettingsInfo => 'Downloaded files will be automatically uploaded to your cloud storage after download completes. Original files are kept on your device.'; + String get cloudSettingsInfo => + 'Downloaded files will be automatically uploaded to your cloud storage after download completes. Original files are kept on your device.'; + + @override + String get cloudSettingsUploadQueue => 'Upload Queue'; + + @override + String get cloudSettingsRetryFailed => 'Retry Failed'; + + @override + String get cloudSettingsClearDone => 'Clear Done'; + + @override + String get cloudSettingsRecentUploads => 'Recent Uploads'; @override String get queueEmpty => 'No downloads in queue'; @@ -2028,7 +2120,8 @@ class AppLocalizationsKo extends AppLocalizations { String get albumFolderArtistYearAlbum => 'Artist / [Year] Album'; @override - String get albumFolderArtistYearAlbumSubtitle => 'Albums/Artist Name/[2005] Album Name/'; + String get albumFolderArtistYearAlbumSubtitle => + 'Albums/Artist Name/[2005] Album Name/'; @override String get albumFolderAlbumOnly => 'Album Only'; @@ -2046,7 +2139,8 @@ class AppLocalizationsKo extends AppLocalizations { String get albumFolderArtistAlbumSingles => 'Artist / Album + Singles'; @override - String get albumFolderArtistAlbumSinglesSubtitle => 'Artist/Album/ and Artist/Singles/'; + String get albumFolderArtistAlbumSinglesSubtitle => + 'Artist/Album/ and Artist/Singles/'; @override String get downloadedAlbumDeleteSelected => 'Delete Selected'; @@ -2156,7 +2250,8 @@ class AppLocalizationsKo extends AppLocalizations { String get discographySelectAlbums => 'Select Albums...'; @override - String get discographySelectAlbumsSubtitle => 'Choose specific albums or singles'; + String get discographySelectAlbumsSubtitle => + 'Choose specific albums or singles'; @override String get discographyFetchingTracks => 'Fetching tracks...'; @@ -2203,11 +2298,14 @@ class AppLocalizationsKo extends AppLocalizations { String get allFilesAccessDisabledSubtitle => 'Limited to media folders only'; @override - String get allFilesAccessDescription => 'Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.'; + String get allFilesAccessDescription => + 'Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.'; @override - String get allFilesAccessDeniedMessage => 'Permission was denied. Please enable \'All files access\' manually in system settings.'; + String get allFilesAccessDeniedMessage => + 'Permission was denied. Please enable \'All files access\' manually in system settings.'; @override - String get allFilesAccessDisabledMessage => 'All Files Access disabled. The app will use limited storage access.'; + String get allFilesAccessDisabledMessage => + 'All Files Access disabled. The app will use limited storage access.'; } diff --git a/lib/l10n/app_localizations_nl.dart b/lib/l10n/app_localizations_nl.dart index e374693f..78b5d332 100644 --- a/lib/l10n/app_localizations_nl.dart +++ b/lib/l10n/app_localizations_nl.dart @@ -12,7 +12,8 @@ class AppLocalizationsNl extends AppLocalizations { String get appName => 'SpotiFLAC'; @override - String get appDescription => 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; + String get appDescription => + 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; @override String get navHome => 'Home'; @@ -98,13 +99,15 @@ class AppLocalizationsNl extends AppLocalizations { String get historyNoAlbums => 'No album downloads'; @override - String get historyNoAlbumsSubtitle => 'Download multiple tracks from an album to see them here'; + String get historyNoAlbumsSubtitle => + 'Download multiple tracks from an album to see them here'; @override String get historyNoSingles => 'No single downloads'; @override - String get historyNoSinglesSubtitle => 'Single track downloads will appear here'; + String get historyNoSinglesSubtitle => + 'Single track downloads will appear here'; @override String get historySearchHint => 'Search history...'; @@ -152,7 +155,8 @@ class AppLocalizationsNl extends AppLocalizations { String get downloadAskQuality => 'Ask Quality Before Download'; @override - String get downloadAskQualitySubtitle => 'Show quality picker for each download'; + String get downloadAskQualitySubtitle => + 'Show quality picker for each download'; @override String get downloadFilenameFormat => 'Filename Format'; @@ -164,7 +168,8 @@ class AppLocalizationsNl extends AppLocalizations { String get downloadSeparateSingles => 'Separate Singles'; @override - String get downloadSeparateSinglesSubtitle => 'Put single tracks in a separate folder'; + String get downloadSeparateSinglesSubtitle => + 'Put single tracks in a separate folder'; @override String get qualityBest => 'Best Available'; @@ -221,7 +226,8 @@ class AppLocalizationsNl extends AppLocalizations { String get optionsPrimaryProvider => 'Primary Provider'; @override - String get optionsPrimaryProviderSubtitle => 'Service used when searching by track name.'; + String get optionsPrimaryProviderSubtitle => + 'Service used when searching by track name.'; @override String optionsUsingExtension(String extensionName) { @@ -229,13 +235,15 @@ class AppLocalizationsNl extends AppLocalizations { } @override - String get optionsSwitchBack => 'Tap Deezer or Spotify to switch back from extension'; + String get optionsSwitchBack => + 'Tap Deezer or Spotify to switch back from extension'; @override String get optionsAutoFallback => 'Auto Fallback'; @override - String get optionsAutoFallbackSubtitle => 'Try other services if download fails'; + String get optionsAutoFallbackSubtitle => + 'Try other services if download fails'; @override String get optionsUseExtensionProviders => 'Use Extension Providers'; @@ -250,13 +258,15 @@ class AppLocalizationsNl extends AppLocalizations { String get optionsEmbedLyrics => 'Embed Lyrics'; @override - String get optionsEmbedLyricsSubtitle => 'Embed synced lyrics into FLAC files'; + String get optionsEmbedLyricsSubtitle => + 'Embed synced lyrics into FLAC files'; @override String get optionsMaxQualityCover => 'Max Quality Cover'; @override - String get optionsMaxQualityCoverSubtitle => 'Download highest resolution cover art'; + String get optionsMaxQualityCoverSubtitle => + 'Download highest resolution cover art'; @override String get optionsConcurrentDownloads => 'Concurrent Downloads'; @@ -270,7 +280,8 @@ class AppLocalizationsNl extends AppLocalizations { } @override - String get optionsConcurrentWarning => 'Parallel downloads may trigger rate limiting'; + String get optionsConcurrentWarning => + 'Parallel downloads may trigger rate limiting'; @override String get optionsExtensionStore => 'Extension Store'; @@ -282,7 +293,8 @@ class AppLocalizationsNl extends AppLocalizations { String get optionsCheckUpdates => 'Check for Updates'; @override - String get optionsCheckUpdatesSubtitle => 'Notify when new version is available'; + String get optionsCheckUpdatesSubtitle => + 'Notify when new version is available'; @override String get optionsUpdateChannel => 'Update Channel'; @@ -294,13 +306,15 @@ class AppLocalizationsNl extends AppLocalizations { String get optionsUpdateChannelPreview => 'Get preview releases'; @override - String get optionsUpdateChannelWarning => 'Preview may contain bugs or incomplete features'; + String get optionsUpdateChannelWarning => + 'Preview may contain bugs or incomplete features'; @override String get optionsClearHistory => 'Clear Download History'; @override - String get optionsClearHistorySubtitle => 'Remove all downloaded tracks from history'; + String get optionsClearHistorySubtitle => + 'Remove all downloaded tracks from history'; @override String get optionsDetailedLogging => 'Detailed Logging'; @@ -323,7 +337,8 @@ class AppLocalizationsNl extends AppLocalizations { String get optionsSpotifyCredentialsRequired => 'Required - tap to configure'; @override - String get optionsSpotifyWarning => 'Spotify requires your own API credentials. Get them free from developer.spotify.com'; + String get optionsSpotifyWarning => + 'Spotify requires your own API credentials. Get them free from developer.spotify.com'; @override String get extensionsTitle => 'Extensions'; @@ -387,7 +402,8 @@ class AppLocalizationsNl extends AppLocalizations { String get aboutOriginalCreator => 'Creator of the original SpotiFLAC'; @override - String get aboutLogoArtist => 'The talented artist who created our beautiful app logo!'; + String get aboutLogoArtist => + 'The talented artist who created our beautiful app logo!'; @override String get aboutTranslators => 'Translators'; @@ -447,28 +463,34 @@ class AppLocalizationsNl extends AppLocalizations { String get aboutVersion => 'Version'; @override - String get aboutBinimumDesc => 'The creator of QQDL & HiFi API. Without this API, Tidal downloads wouldn\'t exist!'; + String get aboutBinimumDesc => + 'The creator of QQDL & HiFi API. Without this API, Tidal downloads wouldn\'t exist!'; @override - String get aboutSachinsenalDesc => 'The original HiFi project creator. The foundation of Tidal integration!'; + String get aboutSachinsenalDesc => + 'The original HiFi project creator. The foundation of Tidal integration!'; @override - String get aboutSjdonadoDesc => 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; + String get aboutSjdonadoDesc => + 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; @override String get aboutDoubleDouble => 'DoubleDouble'; @override - String get aboutDoubleDoubleDesc => 'Amazing API for Amazon Music downloads. Thank you for making it free!'; + String get aboutDoubleDoubleDesc => + 'Amazing API for Amazon Music downloads. Thank you for making it free!'; @override String get aboutDabMusic => 'DAB Music'; @override - String get aboutDabMusicDesc => 'The best Qobuz streaming API. Hi-Res downloads wouldn\'t be possible without this!'; + String get aboutDabMusicDesc => + 'The best Qobuz streaming API. Hi-Res downloads wouldn\'t be possible without this!'; @override - String get aboutAppDescription => 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; + String get aboutAppDescription => + 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; @override String get albumTitle => 'Album'; @@ -573,7 +595,8 @@ class AppLocalizationsNl extends AppLocalizations { String get setupStoragePermission => 'Storage Permission'; @override - String get setupStoragePermissionSubtitle => 'Required to save downloaded files'; + String get setupStoragePermissionSubtitle => + 'Required to save downloaded files'; @override String get setupStoragePermissionGranted => 'Permission granted'; @@ -600,16 +623,19 @@ class AppLocalizationsNl extends AppLocalizations { String get setupStorageAccessRequired => 'Storage Access Required'; @override - String get setupStorageAccessMessage => 'SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.'; + String get setupStorageAccessMessage => + 'SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.'; @override - String get setupStorageAccessMessageAndroid11 => 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; + String get setupStorageAccessMessageAndroid11 => + 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; @override String get setupOpenSettings => 'Open Settings'; @override - String get setupPermissionDeniedMessage => 'Permission denied. Please grant all permissions to continue.'; + String get setupPermissionDeniedMessage => + 'Permission denied. Please grant all permissions to continue.'; @override String setupPermissionRequired(String permissionType) { @@ -628,7 +654,8 @@ class AppLocalizationsNl extends AppLocalizations { String get setupUseDefaultFolder => 'Use Default Folder?'; @override - String get setupNoFolderSelected => 'No folder selected. Would you like to use the default Music folder?'; + String get setupNoFolderSelected => + 'No folder selected. Would you like to use the default Music folder?'; @override String get setupUseDefault => 'Use Default'; @@ -637,13 +664,15 @@ class AppLocalizationsNl extends AppLocalizations { String get setupDownloadLocationTitle => 'Download Location'; @override - String get setupDownloadLocationIosMessage => 'On iOS, downloads are saved to the app\'s Documents folder. You can access them via the Files app.'; + String get setupDownloadLocationIosMessage => + 'On iOS, downloads are saved to the app\'s Documents folder. You can access them via the Files app.'; @override String get setupAppDocumentsFolder => 'App Documents Folder'; @override - String get setupAppDocumentsFolderSubtitle => 'Recommended - accessible via Files app'; + String get setupAppDocumentsFolderSubtitle => + 'Recommended - accessible via Files app'; @override String get setupChooseFromFiles => 'Choose from Files'; @@ -652,10 +681,12 @@ class AppLocalizationsNl extends AppLocalizations { String get setupChooseFromFilesSubtitle => 'Select iCloud or other location'; @override - String get setupIosEmptyFolderWarning => 'iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.'; + String get setupIosEmptyFolderWarning => + 'iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.'; @override - String get setupIcloudNotSupported => 'iCloud Drive is not supported. Please use the app Documents folder.'; + String get setupIcloudNotSupported => + 'iCloud Drive is not supported. Please use the app Documents folder.'; @override String get setupDownloadInFlac => 'Download Spotify tracks in FLAC'; @@ -682,7 +713,8 @@ class AppLocalizationsNl extends AppLocalizations { String get setupStorageRequired => 'Storage Permission Required'; @override - String get setupStorageDescription => 'SpotiFLAC needs storage permission to save your downloaded music files.'; + String get setupStorageDescription => + 'SpotiFLAC needs storage permission to save your downloaded music files.'; @override String get setupNotificationGranted => 'Notification Permission Granted!'; @@ -691,7 +723,8 @@ class AppLocalizationsNl extends AppLocalizations { String get setupNotificationEnable => 'Enable Notifications'; @override - String get setupNotificationDescription => 'Get notified when downloads complete or require attention.'; + String get setupNotificationDescription => + 'Get notified when downloads complete or require attention.'; @override String get setupFolderSelected => 'Download Folder Selected!'; @@ -700,7 +733,8 @@ class AppLocalizationsNl extends AppLocalizations { String get setupFolderChoose => 'Choose Download Folder'; @override - String get setupFolderDescription => 'Select a folder where your downloaded music will be saved.'; + String get setupFolderDescription => + 'Select a folder where your downloaded music will be saved.'; @override String get setupChangeFolder => 'Change Folder'; @@ -712,7 +746,8 @@ class AppLocalizationsNl extends AppLocalizations { String get setupSpotifyApiOptional => 'Spotify API (Optional)'; @override - String get setupSpotifyApiDescription => 'Add your Spotify API credentials for better search results and access to Spotify-exclusive content.'; + String get setupSpotifyApiDescription => + 'Add your Spotify API credentials for better search results and access to Spotify-exclusive content.'; @override String get setupUseSpotifyApi => 'Use Spotify API'; @@ -730,7 +765,8 @@ class AppLocalizationsNl extends AppLocalizations { String get setupEnterClientSecret => 'Enter Spotify Client Secret'; @override - String get setupGetFreeCredentials => 'Get your free API credentials from the Spotify Developer Dashboard.'; + String get setupGetFreeCredentials => + 'Get your free API credentials from the Spotify Developer Dashboard.'; @override String get setupEnableNotifications => 'Enable Notifications'; @@ -739,10 +775,12 @@ class AppLocalizationsNl extends AppLocalizations { String get setupProceedToNextStep => 'You can now proceed to the next step.'; @override - String get setupNotificationProgressDescription => 'You will receive download progress notifications.'; + String get setupNotificationProgressDescription => + 'You will receive download progress notifications.'; @override - String get setupNotificationBackgroundDescription => 'Get notified about download progress and completion. This helps you track downloads when the app is in background.'; + String get setupNotificationBackgroundDescription => + 'Get notified about download progress and completion. This helps you track downloads when the app is in background.'; @override String get setupSkipForNow => 'Skip for now'; @@ -760,10 +798,12 @@ class AppLocalizationsNl extends AppLocalizations { String get setupSkipAndStart => 'Skip & Start'; @override - String get setupAllowAccessToManageFiles => 'Please enable \"Allow access to manage all files\" in the next screen.'; + String get setupAllowAccessToManageFiles => + 'Please enable \"Allow access to manage all files\" in the next screen.'; @override - String get setupGetCredentialsFromSpotify => 'Get credentials from developer.spotify.com'; + String get setupGetCredentialsFromSpotify => + 'Get credentials from developer.spotify.com'; @override String get dialogCancel => 'Cancel'; @@ -814,7 +854,8 @@ class AppLocalizationsNl extends AppLocalizations { String get dialogDiscardChanges => 'Discard Changes?'; @override - String get dialogUnsavedChanges => 'You have unsaved changes. Do you want to discard them?'; + String get dialogUnsavedChanges => + 'You have unsaved changes. Do you want to discard them?'; @override String get dialogDownloadFailed => 'Download Failed'; @@ -832,7 +873,8 @@ class AppLocalizationsNl extends AppLocalizations { String get dialogClearAll => 'Clear All'; @override - String get dialogClearAllDownloads => 'Are you sure you want to clear all downloads?'; + String get dialogClearAllDownloads => + 'Are you sure you want to clear all downloads?'; @override String get dialogRemoveFromDevice => 'Remove from device?'; @@ -841,7 +883,8 @@ class AppLocalizationsNl extends AppLocalizations { String get dialogRemoveExtension => 'Remove Extension'; @override - String get dialogRemoveExtensionMessage => 'Are you sure you want to remove this extension? This cannot be undone.'; + String get dialogRemoveExtensionMessage => + 'Are you sure you want to remove this extension? This cannot be undone.'; @override String get dialogUninstallExtension => 'Uninstall Extension?'; @@ -855,7 +898,8 @@ class AppLocalizationsNl extends AppLocalizations { String get dialogClearHistoryTitle => 'Clear History'; @override - String get dialogClearHistoryMessage => 'Are you sure you want to clear all download history? This cannot be undone.'; + String get dialogClearHistoryMessage => + 'Are you sure you want to clear all download history? This cannot be undone.'; @override String get dialogDeleteSelectedTitle => 'Delete Selected'; @@ -950,7 +994,8 @@ class AppLocalizationsNl extends AppLocalizations { String get snackbarProviderPrioritySaved => 'Provider priority saved'; @override - String get snackbarMetadataProviderSaved => 'Metadata provider priority saved'; + String get snackbarMetadataProviderSaved => + 'Metadata provider priority saved'; @override String snackbarExtensionInstalled(String extensionName) { @@ -972,7 +1017,8 @@ class AppLocalizationsNl extends AppLocalizations { String get errorRateLimited => 'Rate Limited'; @override - String get errorRateLimitedMessage => 'Too many requests. Please wait a moment before searching again.'; + String get errorRateLimitedMessage => + 'Too many requests. Please wait a moment before searching again.'; @override String errorFailedToLoad(String item) { @@ -1139,19 +1185,23 @@ class AppLocalizationsNl extends AppLocalizations { String get folderOrganizationByArtistAlbum => 'Artist/Album'; @override - String get folderOrganizationDescription => 'Organize downloaded files into folders'; + String get folderOrganizationDescription => + 'Organize downloaded files into folders'; @override String get folderOrganizationNoneSubtitle => 'All files in download folder'; @override - String get folderOrganizationByArtistSubtitle => 'Separate folder for each artist'; + String get folderOrganizationByArtistSubtitle => + 'Separate folder for each artist'; @override - String get folderOrganizationByAlbumSubtitle => 'Separate folder for each album'; + String get folderOrganizationByAlbumSubtitle => + 'Separate folder for each album'; @override - String get folderOrganizationByArtistAlbumSubtitle => 'Nested folders for artist and album'; + String get folderOrganizationByArtistAlbumSubtitle => + 'Nested folders for artist and album'; @override String get updateAvailable => 'Update Available'; @@ -1210,10 +1260,12 @@ class AppLocalizationsNl extends AppLocalizations { String get providerPriorityTitle => 'Provider Priority'; @override - String get providerPriorityDescription => 'Drag to reorder download providers. The app will try providers from top to bottom when downloading tracks.'; + String get providerPriorityDescription => + 'Drag to reorder download providers. The app will try providers from top to bottom when downloading tracks.'; @override - String get providerPriorityInfo => 'If a track is not available on the first provider, the app will automatically try the next one.'; + String get providerPriorityInfo => + 'If a track is not available on the first provider, the app will automatically try the next one.'; @override String get providerBuiltIn => 'Built-in'; @@ -1225,16 +1277,19 @@ class AppLocalizationsNl extends AppLocalizations { String get metadataProviderPriority => 'Metadata Provider Priority'; @override - String get metadataProviderPrioritySubtitle => 'Order used when fetching track metadata'; + String get metadataProviderPrioritySubtitle => + 'Order used when fetching track metadata'; @override String get metadataProviderPriorityTitle => 'Metadata Priority'; @override - String get metadataProviderPriorityDescription => 'Drag to reorder metadata providers. The app will try providers from top to bottom when searching for tracks and fetching metadata.'; + String get metadataProviderPriorityDescription => + 'Drag to reorder metadata providers. The app will try providers from top to bottom when searching for tracks and fetching metadata.'; @override - String get metadataProviderPriorityInfo => 'Deezer has no rate limits and is recommended as primary. Spotify may rate limit after many requests.'; + String get metadataProviderPriorityInfo => + 'Deezer has no rate limits and is recommended as primary. Spotify may rate limit after many requests.'; @override String get metadataNoRateLimits => 'No rate limits'; @@ -1306,16 +1361,19 @@ class AppLocalizationsNl extends AppLocalizations { String get logIssueSummary => 'Issue Summary'; @override - String get logIspBlockingDescription => 'Your ISP may be blocking access to download services'; + String get logIspBlockingDescription => + 'Your ISP may be blocking access to download services'; @override - String get logIspBlockingSuggestion => 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; + String get logIspBlockingSuggestion => + 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; @override String get logRateLimitedDescription => 'Too many requests to the service'; @override - String get logRateLimitedSuggestion => 'Wait a few minutes before trying again'; + String get logRateLimitedSuggestion => + 'Wait a few minutes before trying again'; @override String get logNetworkErrorDescription => 'Connection issues detected'; @@ -1324,10 +1382,12 @@ class AppLocalizationsNl extends AppLocalizations { String get logNetworkErrorSuggestion => 'Check your internet connection'; @override - String get logTrackNotFoundDescription => 'Some tracks could not be found on download services'; + String get logTrackNotFoundDescription => + 'Some tracks could not be found on download services'; @override - String get logTrackNotFoundSuggestion => 'The track may not be available in lossless quality'; + String get logTrackNotFoundSuggestion => + 'The track may not be available in lossless quality'; @override String logTotalErrors(int count) { @@ -1353,7 +1413,8 @@ class AppLocalizationsNl extends AppLocalizations { String get credentialsTitle => 'Spotify Credentials'; @override - String get credentialsDescription => 'Enter your Client ID and Secret to use your own Spotify application quota.'; + String get credentialsDescription => + 'Enter your Client ID and Secret to use your own Spotify application quota.'; @override String get credentialsClientId => 'Client ID'; @@ -1407,7 +1468,8 @@ class AppLocalizationsNl extends AppLocalizations { String get lyricsMode => 'Lyrics Mode'; @override - String get lyricsModeDescription => 'Choose how lyrics are saved with your downloads'; + String get lyricsModeDescription => + 'Choose how lyrics are saved with your downloads'; @override String get lyricsModeEmbed => 'Embed in file'; @@ -1419,7 +1481,8 @@ class AppLocalizationsNl extends AppLocalizations { String get lyricsModeExternal => 'External .lrc file'; @override - String get lyricsModeExternalSubtitle => 'Separate .lrc file for players like Samsung Music'; + String get lyricsModeExternalSubtitle => + 'Separate .lrc file for players like Samsung Music'; @override String get lyricsModeBoth => 'Both'; @@ -1579,7 +1642,8 @@ class AppLocalizationsNl extends AppLocalizations { String get trackDeleteConfirmTitle => 'Remove from device?'; @override - String get trackDeleteConfirmMessage => 'This will permanently delete the downloaded file and remove it from your history.'; + String get trackDeleteConfirmMessage => + 'This will permanently delete the downloaded file and remove it from your history.'; @override String trackCannotOpen(String message) { @@ -1731,13 +1795,15 @@ class AppLocalizationsNl extends AppLocalizations { String get extensionsNoExtensions => 'No extensions installed'; @override - String get extensionsNoExtensionsSubtitle => 'Install .spotiflac-ext files to add new providers'; + String get extensionsNoExtensionsSubtitle => + 'Install .spotiflac-ext files to add new providers'; @override String get extensionsInstallButton => 'Install Extension'; @override - String get extensionsInfoTip => 'Extensions can add new metadata and download providers. Only install extensions from trusted sources.'; + String get extensionsInfoTip => + 'Extensions can add new metadata and download providers. Only install extensions from trusted sources.'; @override String get extensionsInstalledSuccess => 'Extension installed successfully'; @@ -1749,16 +1815,19 @@ class AppLocalizationsNl extends AppLocalizations { String get extensionsDownloadPrioritySubtitle => 'Set download service order'; @override - String get extensionsNoDownloadProvider => 'No extensions with download provider'; + String get extensionsNoDownloadProvider => + 'No extensions with download provider'; @override String get extensionsMetadataPriority => 'Metadata Priority'; @override - String get extensionsMetadataPrioritySubtitle => 'Set search & metadata source order'; + String get extensionsMetadataPrioritySubtitle => + 'Set search & metadata source order'; @override - String get extensionsNoMetadataProvider => 'No extensions with metadata provider'; + String get extensionsNoMetadataProvider => + 'No extensions with metadata provider'; @override String get extensionsSearchProvider => 'Search Provider'; @@ -1767,7 +1836,8 @@ class AppLocalizationsNl extends AppLocalizations { String get extensionsNoCustomSearch => 'No extensions with custom search'; @override - String get extensionsSearchProviderDescription => 'Choose which service to use for searching tracks'; + String get extensionsSearchProviderDescription => + 'Choose which service to use for searching tracks'; @override String get extensionsCustomSearch => 'Custom search'; @@ -1809,7 +1879,8 @@ class AppLocalizationsNl extends AppLocalizations { String get enableLossyOptionSubtitleOn => 'Lossy quality option is available'; @override - String get enableLossyOptionSubtitleOff => 'Downloads FLAC then converts to lossy format'; + String get enableLossyOptionSubtitleOff => + 'Downloads FLAC then converts to lossy format'; @override String get lossyFormat => 'Lossy Format'; @@ -1821,10 +1892,12 @@ class AppLocalizationsNl extends AppLocalizations { String get lossyFormatMp3Subtitle => '320kbps, best compatibility'; @override - String get lossyFormatOpusSubtitle => '128kbps, better quality at smaller size'; + String get lossyFormatOpusSubtitle => + '128kbps, better quality at smaller size'; @override - String get qualityNote => 'Actual quality depends on track availability from the service'; + String get qualityNote => + 'Actual quality depends on track availability from the service'; @override String get downloadAskBeforeDownload => 'Ask Before Download'; @@ -1914,13 +1987,15 @@ class AppLocalizationsNl extends AppLocalizations { String get queueClearAll => 'Clear All'; @override - String get queueClearAllMessage => 'Are you sure you want to clear all downloads?'; + String get queueClearAllMessage => + 'Are you sure you want to clear all downloads?'; @override String get queueExportFailed => 'Export'; @override - String get queueExportFailedSuccess => 'Failed downloads exported to TXT file'; + String get queueExportFailedSuccess => + 'Failed downloads exported to TXT file'; @override String get queueExportFailedClear => 'Clear Failed'; @@ -1932,7 +2007,8 @@ class AppLocalizationsNl extends AppLocalizations { String get settingsAutoExportFailed => 'Auto-export failed downloads'; @override - String get settingsAutoExportFailedSubtitle => 'Save failed downloads to TXT file automatically'; + String get settingsAutoExportFailedSubtitle => + 'Save failed downloads to TXT file automatically'; @override String get settingsDownloadNetwork => 'Download Network'; @@ -1944,7 +2020,8 @@ class AppLocalizationsNl extends AppLocalizations { String get settingsDownloadNetworkWifiOnly => 'WiFi Only'; @override - String get settingsDownloadNetworkSubtitle => 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; + String get settingsDownloadNetworkSubtitle => + 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; @override String get settingsCloudSave => 'Cloud Save'; @@ -1962,7 +2039,8 @@ class AppLocalizationsNl extends AppLocalizations { String get cloudSettingsEnable => 'Enable Cloud Upload'; @override - String get cloudSettingsEnableSubtitle => 'Automatically upload files after download completes'; + String get cloudSettingsEnableSubtitle => + 'Automatically upload files after download completes'; @override String get cloudSettingsSectionProvider => 'Cloud Provider'; @@ -1971,7 +2049,8 @@ class AppLocalizationsNl extends AppLocalizations { String get cloudSettingsProvider => 'Provider'; @override - String get cloudSettingsProviderDescription => 'Select where to upload your downloaded files'; + String get cloudSettingsProviderDescription => + 'Select where to upload your downloaded files'; @override String get cloudSettingsSectionServer => 'Server Configuration'; @@ -1992,7 +2071,20 @@ class AppLocalizationsNl extends AppLocalizations { String get cloudSettingsTestConnection => 'Test Connection'; @override - String get cloudSettingsInfo => 'Downloaded files will be automatically uploaded to your cloud storage after download completes. Original files are kept on your device.'; + String get cloudSettingsInfo => + 'Downloaded files will be automatically uploaded to your cloud storage after download completes. Original files are kept on your device.'; + + @override + String get cloudSettingsUploadQueue => 'Upload Queue'; + + @override + String get cloudSettingsRetryFailed => 'Retry Failed'; + + @override + String get cloudSettingsClearDone => 'Clear Done'; + + @override + String get cloudSettingsRecentUploads => 'Recent Uploads'; @override String get queueEmpty => 'No downloads in queue'; @@ -2028,7 +2120,8 @@ class AppLocalizationsNl extends AppLocalizations { String get albumFolderArtistYearAlbum => 'Artist / [Year] Album'; @override - String get albumFolderArtistYearAlbumSubtitle => 'Albums/Artist Name/[2005] Album Name/'; + String get albumFolderArtistYearAlbumSubtitle => + 'Albums/Artist Name/[2005] Album Name/'; @override String get albumFolderAlbumOnly => 'Album Only'; @@ -2046,7 +2139,8 @@ class AppLocalizationsNl extends AppLocalizations { String get albumFolderArtistAlbumSingles => 'Artist / Album + Singles'; @override - String get albumFolderArtistAlbumSinglesSubtitle => 'Artist/Album/ and Artist/Singles/'; + String get albumFolderArtistAlbumSinglesSubtitle => + 'Artist/Album/ and Artist/Singles/'; @override String get downloadedAlbumDeleteSelected => 'Delete Selected'; @@ -2156,7 +2250,8 @@ class AppLocalizationsNl extends AppLocalizations { String get discographySelectAlbums => 'Select Albums...'; @override - String get discographySelectAlbumsSubtitle => 'Choose specific albums or singles'; + String get discographySelectAlbumsSubtitle => + 'Choose specific albums or singles'; @override String get discographyFetchingTracks => 'Fetching tracks...'; @@ -2203,11 +2298,14 @@ class AppLocalizationsNl extends AppLocalizations { String get allFilesAccessDisabledSubtitle => 'Limited to media folders only'; @override - String get allFilesAccessDescription => 'Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.'; + String get allFilesAccessDescription => + 'Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.'; @override - String get allFilesAccessDeniedMessage => 'Permission was denied. Please enable \'All files access\' manually in system settings.'; + String get allFilesAccessDeniedMessage => + 'Permission was denied. Please enable \'All files access\' manually in system settings.'; @override - String get allFilesAccessDisabledMessage => 'All Files Access disabled. The app will use limited storage access.'; + String get allFilesAccessDisabledMessage => + 'All Files Access disabled. The app will use limited storage access.'; } diff --git a/lib/l10n/app_localizations_pt.dart b/lib/l10n/app_localizations_pt.dart index 17ac0e66..86ff1c13 100644 --- a/lib/l10n/app_localizations_pt.dart +++ b/lib/l10n/app_localizations_pt.dart @@ -12,7 +12,8 @@ class AppLocalizationsPt extends AppLocalizations { String get appName => 'SpotiFLAC'; @override - String get appDescription => 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; + String get appDescription => + 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; @override String get navHome => 'Home'; @@ -98,13 +99,15 @@ class AppLocalizationsPt extends AppLocalizations { String get historyNoAlbums => 'No album downloads'; @override - String get historyNoAlbumsSubtitle => 'Download multiple tracks from an album to see them here'; + String get historyNoAlbumsSubtitle => + 'Download multiple tracks from an album to see them here'; @override String get historyNoSingles => 'No single downloads'; @override - String get historyNoSinglesSubtitle => 'Single track downloads will appear here'; + String get historyNoSinglesSubtitle => + 'Single track downloads will appear here'; @override String get historySearchHint => 'Search history...'; @@ -152,7 +155,8 @@ class AppLocalizationsPt extends AppLocalizations { String get downloadAskQuality => 'Ask Quality Before Download'; @override - String get downloadAskQualitySubtitle => 'Show quality picker for each download'; + String get downloadAskQualitySubtitle => + 'Show quality picker for each download'; @override String get downloadFilenameFormat => 'Filename Format'; @@ -164,7 +168,8 @@ class AppLocalizationsPt extends AppLocalizations { String get downloadSeparateSingles => 'Separate Singles'; @override - String get downloadSeparateSinglesSubtitle => 'Put single tracks in a separate folder'; + String get downloadSeparateSinglesSubtitle => + 'Put single tracks in a separate folder'; @override String get qualityBest => 'Best Available'; @@ -221,7 +226,8 @@ class AppLocalizationsPt extends AppLocalizations { String get optionsPrimaryProvider => 'Primary Provider'; @override - String get optionsPrimaryProviderSubtitle => 'Service used when searching by track name.'; + String get optionsPrimaryProviderSubtitle => + 'Service used when searching by track name.'; @override String optionsUsingExtension(String extensionName) { @@ -229,13 +235,15 @@ class AppLocalizationsPt extends AppLocalizations { } @override - String get optionsSwitchBack => 'Tap Deezer or Spotify to switch back from extension'; + String get optionsSwitchBack => + 'Tap Deezer or Spotify to switch back from extension'; @override String get optionsAutoFallback => 'Auto Fallback'; @override - String get optionsAutoFallbackSubtitle => 'Try other services if download fails'; + String get optionsAutoFallbackSubtitle => + 'Try other services if download fails'; @override String get optionsUseExtensionProviders => 'Use Extension Providers'; @@ -250,13 +258,15 @@ class AppLocalizationsPt extends AppLocalizations { String get optionsEmbedLyrics => 'Embed Lyrics'; @override - String get optionsEmbedLyricsSubtitle => 'Embed synced lyrics into FLAC files'; + String get optionsEmbedLyricsSubtitle => + 'Embed synced lyrics into FLAC files'; @override String get optionsMaxQualityCover => 'Max Quality Cover'; @override - String get optionsMaxQualityCoverSubtitle => 'Download highest resolution cover art'; + String get optionsMaxQualityCoverSubtitle => + 'Download highest resolution cover art'; @override String get optionsConcurrentDownloads => 'Concurrent Downloads'; @@ -270,7 +280,8 @@ class AppLocalizationsPt extends AppLocalizations { } @override - String get optionsConcurrentWarning => 'Parallel downloads may trigger rate limiting'; + String get optionsConcurrentWarning => + 'Parallel downloads may trigger rate limiting'; @override String get optionsExtensionStore => 'Extension Store'; @@ -282,7 +293,8 @@ class AppLocalizationsPt extends AppLocalizations { String get optionsCheckUpdates => 'Check for Updates'; @override - String get optionsCheckUpdatesSubtitle => 'Notify when new version is available'; + String get optionsCheckUpdatesSubtitle => + 'Notify when new version is available'; @override String get optionsUpdateChannel => 'Update Channel'; @@ -294,13 +306,15 @@ class AppLocalizationsPt extends AppLocalizations { String get optionsUpdateChannelPreview => 'Get preview releases'; @override - String get optionsUpdateChannelWarning => 'Preview may contain bugs or incomplete features'; + String get optionsUpdateChannelWarning => + 'Preview may contain bugs or incomplete features'; @override String get optionsClearHistory => 'Clear Download History'; @override - String get optionsClearHistorySubtitle => 'Remove all downloaded tracks from history'; + String get optionsClearHistorySubtitle => + 'Remove all downloaded tracks from history'; @override String get optionsDetailedLogging => 'Detailed Logging'; @@ -323,7 +337,8 @@ class AppLocalizationsPt extends AppLocalizations { String get optionsSpotifyCredentialsRequired => 'Required - tap to configure'; @override - String get optionsSpotifyWarning => 'Spotify requires your own API credentials. Get them free from developer.spotify.com'; + String get optionsSpotifyWarning => + 'Spotify requires your own API credentials. Get them free from developer.spotify.com'; @override String get extensionsTitle => 'Extensions'; @@ -387,7 +402,8 @@ class AppLocalizationsPt extends AppLocalizations { String get aboutOriginalCreator => 'Creator of the original SpotiFLAC'; @override - String get aboutLogoArtist => 'The talented artist who created our beautiful app logo!'; + String get aboutLogoArtist => + 'The talented artist who created our beautiful app logo!'; @override String get aboutTranslators => 'Translators'; @@ -447,28 +463,34 @@ class AppLocalizationsPt extends AppLocalizations { String get aboutVersion => 'Version'; @override - String get aboutBinimumDesc => 'The creator of QQDL & HiFi API. Without this API, Tidal downloads wouldn\'t exist!'; + String get aboutBinimumDesc => + 'The creator of QQDL & HiFi API. Without this API, Tidal downloads wouldn\'t exist!'; @override - String get aboutSachinsenalDesc => 'The original HiFi project creator. The foundation of Tidal integration!'; + String get aboutSachinsenalDesc => + 'The original HiFi project creator. The foundation of Tidal integration!'; @override - String get aboutSjdonadoDesc => 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; + String get aboutSjdonadoDesc => + 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; @override String get aboutDoubleDouble => 'DoubleDouble'; @override - String get aboutDoubleDoubleDesc => 'Amazing API for Amazon Music downloads. Thank you for making it free!'; + String get aboutDoubleDoubleDesc => + 'Amazing API for Amazon Music downloads. Thank you for making it free!'; @override String get aboutDabMusic => 'DAB Music'; @override - String get aboutDabMusicDesc => 'The best Qobuz streaming API. Hi-Res downloads wouldn\'t be possible without this!'; + String get aboutDabMusicDesc => + 'The best Qobuz streaming API. Hi-Res downloads wouldn\'t be possible without this!'; @override - String get aboutAppDescription => 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; + String get aboutAppDescription => + 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; @override String get albumTitle => 'Album'; @@ -573,7 +595,8 @@ class AppLocalizationsPt extends AppLocalizations { String get setupStoragePermission => 'Storage Permission'; @override - String get setupStoragePermissionSubtitle => 'Required to save downloaded files'; + String get setupStoragePermissionSubtitle => + 'Required to save downloaded files'; @override String get setupStoragePermissionGranted => 'Permission granted'; @@ -600,16 +623,19 @@ class AppLocalizationsPt extends AppLocalizations { String get setupStorageAccessRequired => 'Storage Access Required'; @override - String get setupStorageAccessMessage => 'SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.'; + String get setupStorageAccessMessage => + 'SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.'; @override - String get setupStorageAccessMessageAndroid11 => 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; + String get setupStorageAccessMessageAndroid11 => + 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; @override String get setupOpenSettings => 'Open Settings'; @override - String get setupPermissionDeniedMessage => 'Permission denied. Please grant all permissions to continue.'; + String get setupPermissionDeniedMessage => + 'Permission denied. Please grant all permissions to continue.'; @override String setupPermissionRequired(String permissionType) { @@ -628,7 +654,8 @@ class AppLocalizationsPt extends AppLocalizations { String get setupUseDefaultFolder => 'Use Default Folder?'; @override - String get setupNoFolderSelected => 'No folder selected. Would you like to use the default Music folder?'; + String get setupNoFolderSelected => + 'No folder selected. Would you like to use the default Music folder?'; @override String get setupUseDefault => 'Use Default'; @@ -637,13 +664,15 @@ class AppLocalizationsPt extends AppLocalizations { String get setupDownloadLocationTitle => 'Download Location'; @override - String get setupDownloadLocationIosMessage => 'On iOS, downloads are saved to the app\'s Documents folder. You can access them via the Files app.'; + String get setupDownloadLocationIosMessage => + 'On iOS, downloads are saved to the app\'s Documents folder. You can access them via the Files app.'; @override String get setupAppDocumentsFolder => 'App Documents Folder'; @override - String get setupAppDocumentsFolderSubtitle => 'Recommended - accessible via Files app'; + String get setupAppDocumentsFolderSubtitle => + 'Recommended - accessible via Files app'; @override String get setupChooseFromFiles => 'Choose from Files'; @@ -652,10 +681,12 @@ class AppLocalizationsPt extends AppLocalizations { String get setupChooseFromFilesSubtitle => 'Select iCloud or other location'; @override - String get setupIosEmptyFolderWarning => 'iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.'; + String get setupIosEmptyFolderWarning => + 'iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.'; @override - String get setupIcloudNotSupported => 'iCloud Drive is not supported. Please use the app Documents folder.'; + String get setupIcloudNotSupported => + 'iCloud Drive is not supported. Please use the app Documents folder.'; @override String get setupDownloadInFlac => 'Download Spotify tracks in FLAC'; @@ -682,7 +713,8 @@ class AppLocalizationsPt extends AppLocalizations { String get setupStorageRequired => 'Storage Permission Required'; @override - String get setupStorageDescription => 'SpotiFLAC needs storage permission to save your downloaded music files.'; + String get setupStorageDescription => + 'SpotiFLAC needs storage permission to save your downloaded music files.'; @override String get setupNotificationGranted => 'Notification Permission Granted!'; @@ -691,7 +723,8 @@ class AppLocalizationsPt extends AppLocalizations { String get setupNotificationEnable => 'Enable Notifications'; @override - String get setupNotificationDescription => 'Get notified when downloads complete or require attention.'; + String get setupNotificationDescription => + 'Get notified when downloads complete or require attention.'; @override String get setupFolderSelected => 'Download Folder Selected!'; @@ -700,7 +733,8 @@ class AppLocalizationsPt extends AppLocalizations { String get setupFolderChoose => 'Choose Download Folder'; @override - String get setupFolderDescription => 'Select a folder where your downloaded music will be saved.'; + String get setupFolderDescription => + 'Select a folder where your downloaded music will be saved.'; @override String get setupChangeFolder => 'Change Folder'; @@ -712,7 +746,8 @@ class AppLocalizationsPt extends AppLocalizations { String get setupSpotifyApiOptional => 'Spotify API (Optional)'; @override - String get setupSpotifyApiDescription => 'Add your Spotify API credentials for better search results and access to Spotify-exclusive content.'; + String get setupSpotifyApiDescription => + 'Add your Spotify API credentials for better search results and access to Spotify-exclusive content.'; @override String get setupUseSpotifyApi => 'Use Spotify API'; @@ -730,7 +765,8 @@ class AppLocalizationsPt extends AppLocalizations { String get setupEnterClientSecret => 'Enter Spotify Client Secret'; @override - String get setupGetFreeCredentials => 'Get your free API credentials from the Spotify Developer Dashboard.'; + String get setupGetFreeCredentials => + 'Get your free API credentials from the Spotify Developer Dashboard.'; @override String get setupEnableNotifications => 'Enable Notifications'; @@ -739,10 +775,12 @@ class AppLocalizationsPt extends AppLocalizations { String get setupProceedToNextStep => 'You can now proceed to the next step.'; @override - String get setupNotificationProgressDescription => 'You will receive download progress notifications.'; + String get setupNotificationProgressDescription => + 'You will receive download progress notifications.'; @override - String get setupNotificationBackgroundDescription => 'Get notified about download progress and completion. This helps you track downloads when the app is in background.'; + String get setupNotificationBackgroundDescription => + 'Get notified about download progress and completion. This helps you track downloads when the app is in background.'; @override String get setupSkipForNow => 'Skip for now'; @@ -760,10 +798,12 @@ class AppLocalizationsPt extends AppLocalizations { String get setupSkipAndStart => 'Skip & Start'; @override - String get setupAllowAccessToManageFiles => 'Please enable \"Allow access to manage all files\" in the next screen.'; + String get setupAllowAccessToManageFiles => + 'Please enable \"Allow access to manage all files\" in the next screen.'; @override - String get setupGetCredentialsFromSpotify => 'Get credentials from developer.spotify.com'; + String get setupGetCredentialsFromSpotify => + 'Get credentials from developer.spotify.com'; @override String get dialogCancel => 'Cancel'; @@ -814,7 +854,8 @@ class AppLocalizationsPt extends AppLocalizations { String get dialogDiscardChanges => 'Discard Changes?'; @override - String get dialogUnsavedChanges => 'You have unsaved changes. Do you want to discard them?'; + String get dialogUnsavedChanges => + 'You have unsaved changes. Do you want to discard them?'; @override String get dialogDownloadFailed => 'Download Failed'; @@ -832,7 +873,8 @@ class AppLocalizationsPt extends AppLocalizations { String get dialogClearAll => 'Clear All'; @override - String get dialogClearAllDownloads => 'Are you sure you want to clear all downloads?'; + String get dialogClearAllDownloads => + 'Are you sure you want to clear all downloads?'; @override String get dialogRemoveFromDevice => 'Remove from device?'; @@ -841,7 +883,8 @@ class AppLocalizationsPt extends AppLocalizations { String get dialogRemoveExtension => 'Remove Extension'; @override - String get dialogRemoveExtensionMessage => 'Are you sure you want to remove this extension? This cannot be undone.'; + String get dialogRemoveExtensionMessage => + 'Are you sure you want to remove this extension? This cannot be undone.'; @override String get dialogUninstallExtension => 'Uninstall Extension?'; @@ -855,7 +898,8 @@ class AppLocalizationsPt extends AppLocalizations { String get dialogClearHistoryTitle => 'Clear History'; @override - String get dialogClearHistoryMessage => 'Are you sure you want to clear all download history? This cannot be undone.'; + String get dialogClearHistoryMessage => + 'Are you sure you want to clear all download history? This cannot be undone.'; @override String get dialogDeleteSelectedTitle => 'Delete Selected'; @@ -950,7 +994,8 @@ class AppLocalizationsPt extends AppLocalizations { String get snackbarProviderPrioritySaved => 'Provider priority saved'; @override - String get snackbarMetadataProviderSaved => 'Metadata provider priority saved'; + String get snackbarMetadataProviderSaved => + 'Metadata provider priority saved'; @override String snackbarExtensionInstalled(String extensionName) { @@ -972,7 +1017,8 @@ class AppLocalizationsPt extends AppLocalizations { String get errorRateLimited => 'Rate Limited'; @override - String get errorRateLimitedMessage => 'Too many requests. Please wait a moment before searching again.'; + String get errorRateLimitedMessage => + 'Too many requests. Please wait a moment before searching again.'; @override String errorFailedToLoad(String item) { @@ -1139,19 +1185,23 @@ class AppLocalizationsPt extends AppLocalizations { String get folderOrganizationByArtistAlbum => 'Artist/Album'; @override - String get folderOrganizationDescription => 'Organize downloaded files into folders'; + String get folderOrganizationDescription => + 'Organize downloaded files into folders'; @override String get folderOrganizationNoneSubtitle => 'All files in download folder'; @override - String get folderOrganizationByArtistSubtitle => 'Separate folder for each artist'; + String get folderOrganizationByArtistSubtitle => + 'Separate folder for each artist'; @override - String get folderOrganizationByAlbumSubtitle => 'Separate folder for each album'; + String get folderOrganizationByAlbumSubtitle => + 'Separate folder for each album'; @override - String get folderOrganizationByArtistAlbumSubtitle => 'Nested folders for artist and album'; + String get folderOrganizationByArtistAlbumSubtitle => + 'Nested folders for artist and album'; @override String get updateAvailable => 'Update Available'; @@ -1210,10 +1260,12 @@ class AppLocalizationsPt extends AppLocalizations { String get providerPriorityTitle => 'Provider Priority'; @override - String get providerPriorityDescription => 'Drag to reorder download providers. The app will try providers from top to bottom when downloading tracks.'; + String get providerPriorityDescription => + 'Drag to reorder download providers. The app will try providers from top to bottom when downloading tracks.'; @override - String get providerPriorityInfo => 'If a track is not available on the first provider, the app will automatically try the next one.'; + String get providerPriorityInfo => + 'If a track is not available on the first provider, the app will automatically try the next one.'; @override String get providerBuiltIn => 'Built-in'; @@ -1225,16 +1277,19 @@ class AppLocalizationsPt extends AppLocalizations { String get metadataProviderPriority => 'Metadata Provider Priority'; @override - String get metadataProviderPrioritySubtitle => 'Order used when fetching track metadata'; + String get metadataProviderPrioritySubtitle => + 'Order used when fetching track metadata'; @override String get metadataProviderPriorityTitle => 'Metadata Priority'; @override - String get metadataProviderPriorityDescription => 'Drag to reorder metadata providers. The app will try providers from top to bottom when searching for tracks and fetching metadata.'; + String get metadataProviderPriorityDescription => + 'Drag to reorder metadata providers. The app will try providers from top to bottom when searching for tracks and fetching metadata.'; @override - String get metadataProviderPriorityInfo => 'Deezer has no rate limits and is recommended as primary. Spotify may rate limit after many requests.'; + String get metadataProviderPriorityInfo => + 'Deezer has no rate limits and is recommended as primary. Spotify may rate limit after many requests.'; @override String get metadataNoRateLimits => 'No rate limits'; @@ -1306,16 +1361,19 @@ class AppLocalizationsPt extends AppLocalizations { String get logIssueSummary => 'Issue Summary'; @override - String get logIspBlockingDescription => 'Your ISP may be blocking access to download services'; + String get logIspBlockingDescription => + 'Your ISP may be blocking access to download services'; @override - String get logIspBlockingSuggestion => 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; + String get logIspBlockingSuggestion => + 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; @override String get logRateLimitedDescription => 'Too many requests to the service'; @override - String get logRateLimitedSuggestion => 'Wait a few minutes before trying again'; + String get logRateLimitedSuggestion => + 'Wait a few minutes before trying again'; @override String get logNetworkErrorDescription => 'Connection issues detected'; @@ -1324,10 +1382,12 @@ class AppLocalizationsPt extends AppLocalizations { String get logNetworkErrorSuggestion => 'Check your internet connection'; @override - String get logTrackNotFoundDescription => 'Some tracks could not be found on download services'; + String get logTrackNotFoundDescription => + 'Some tracks could not be found on download services'; @override - String get logTrackNotFoundSuggestion => 'The track may not be available in lossless quality'; + String get logTrackNotFoundSuggestion => + 'The track may not be available in lossless quality'; @override String logTotalErrors(int count) { @@ -1353,7 +1413,8 @@ class AppLocalizationsPt extends AppLocalizations { String get credentialsTitle => 'Spotify Credentials'; @override - String get credentialsDescription => 'Enter your Client ID and Secret to use your own Spotify application quota.'; + String get credentialsDescription => + 'Enter your Client ID and Secret to use your own Spotify application quota.'; @override String get credentialsClientId => 'Client ID'; @@ -1407,7 +1468,8 @@ class AppLocalizationsPt extends AppLocalizations { String get lyricsMode => 'Lyrics Mode'; @override - String get lyricsModeDescription => 'Choose how lyrics are saved with your downloads'; + String get lyricsModeDescription => + 'Choose how lyrics are saved with your downloads'; @override String get lyricsModeEmbed => 'Embed in file'; @@ -1419,7 +1481,8 @@ class AppLocalizationsPt extends AppLocalizations { String get lyricsModeExternal => 'External .lrc file'; @override - String get lyricsModeExternalSubtitle => 'Separate .lrc file for players like Samsung Music'; + String get lyricsModeExternalSubtitle => + 'Separate .lrc file for players like Samsung Music'; @override String get lyricsModeBoth => 'Both'; @@ -1579,7 +1642,8 @@ class AppLocalizationsPt extends AppLocalizations { String get trackDeleteConfirmTitle => 'Remove from device?'; @override - String get trackDeleteConfirmMessage => 'This will permanently delete the downloaded file and remove it from your history.'; + String get trackDeleteConfirmMessage => + 'This will permanently delete the downloaded file and remove it from your history.'; @override String trackCannotOpen(String message) { @@ -1731,13 +1795,15 @@ class AppLocalizationsPt extends AppLocalizations { String get extensionsNoExtensions => 'No extensions installed'; @override - String get extensionsNoExtensionsSubtitle => 'Install .spotiflac-ext files to add new providers'; + String get extensionsNoExtensionsSubtitle => + 'Install .spotiflac-ext files to add new providers'; @override String get extensionsInstallButton => 'Install Extension'; @override - String get extensionsInfoTip => 'Extensions can add new metadata and download providers. Only install extensions from trusted sources.'; + String get extensionsInfoTip => + 'Extensions can add new metadata and download providers. Only install extensions from trusted sources.'; @override String get extensionsInstalledSuccess => 'Extension installed successfully'; @@ -1749,16 +1815,19 @@ class AppLocalizationsPt extends AppLocalizations { String get extensionsDownloadPrioritySubtitle => 'Set download service order'; @override - String get extensionsNoDownloadProvider => 'No extensions with download provider'; + String get extensionsNoDownloadProvider => + 'No extensions with download provider'; @override String get extensionsMetadataPriority => 'Metadata Priority'; @override - String get extensionsMetadataPrioritySubtitle => 'Set search & metadata source order'; + String get extensionsMetadataPrioritySubtitle => + 'Set search & metadata source order'; @override - String get extensionsNoMetadataProvider => 'No extensions with metadata provider'; + String get extensionsNoMetadataProvider => + 'No extensions with metadata provider'; @override String get extensionsSearchProvider => 'Search Provider'; @@ -1767,7 +1836,8 @@ class AppLocalizationsPt extends AppLocalizations { String get extensionsNoCustomSearch => 'No extensions with custom search'; @override - String get extensionsSearchProviderDescription => 'Choose which service to use for searching tracks'; + String get extensionsSearchProviderDescription => + 'Choose which service to use for searching tracks'; @override String get extensionsCustomSearch => 'Custom search'; @@ -1809,7 +1879,8 @@ class AppLocalizationsPt extends AppLocalizations { String get enableLossyOptionSubtitleOn => 'Lossy quality option is available'; @override - String get enableLossyOptionSubtitleOff => 'Downloads FLAC then converts to lossy format'; + String get enableLossyOptionSubtitleOff => + 'Downloads FLAC then converts to lossy format'; @override String get lossyFormat => 'Lossy Format'; @@ -1821,10 +1892,12 @@ class AppLocalizationsPt extends AppLocalizations { String get lossyFormatMp3Subtitle => '320kbps, best compatibility'; @override - String get lossyFormatOpusSubtitle => '128kbps, better quality at smaller size'; + String get lossyFormatOpusSubtitle => + '128kbps, better quality at smaller size'; @override - String get qualityNote => 'Actual quality depends on track availability from the service'; + String get qualityNote => + 'Actual quality depends on track availability from the service'; @override String get downloadAskBeforeDownload => 'Ask Before Download'; @@ -1914,13 +1987,15 @@ class AppLocalizationsPt extends AppLocalizations { String get queueClearAll => 'Clear All'; @override - String get queueClearAllMessage => 'Are you sure you want to clear all downloads?'; + String get queueClearAllMessage => + 'Are you sure you want to clear all downloads?'; @override String get queueExportFailed => 'Export'; @override - String get queueExportFailedSuccess => 'Failed downloads exported to TXT file'; + String get queueExportFailedSuccess => + 'Failed downloads exported to TXT file'; @override String get queueExportFailedClear => 'Clear Failed'; @@ -1932,7 +2007,8 @@ class AppLocalizationsPt extends AppLocalizations { String get settingsAutoExportFailed => 'Auto-export failed downloads'; @override - String get settingsAutoExportFailedSubtitle => 'Save failed downloads to TXT file automatically'; + String get settingsAutoExportFailedSubtitle => + 'Save failed downloads to TXT file automatically'; @override String get settingsDownloadNetwork => 'Download Network'; @@ -1944,7 +2020,8 @@ class AppLocalizationsPt extends AppLocalizations { String get settingsDownloadNetworkWifiOnly => 'WiFi Only'; @override - String get settingsDownloadNetworkSubtitle => 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; + String get settingsDownloadNetworkSubtitle => + 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; @override String get settingsCloudSave => 'Cloud Save'; @@ -1962,7 +2039,8 @@ class AppLocalizationsPt extends AppLocalizations { String get cloudSettingsEnable => 'Enable Cloud Upload'; @override - String get cloudSettingsEnableSubtitle => 'Automatically upload files after download completes'; + String get cloudSettingsEnableSubtitle => + 'Automatically upload files after download completes'; @override String get cloudSettingsSectionProvider => 'Cloud Provider'; @@ -1971,7 +2049,8 @@ class AppLocalizationsPt extends AppLocalizations { String get cloudSettingsProvider => 'Provider'; @override - String get cloudSettingsProviderDescription => 'Select where to upload your downloaded files'; + String get cloudSettingsProviderDescription => + 'Select where to upload your downloaded files'; @override String get cloudSettingsSectionServer => 'Server Configuration'; @@ -1992,7 +2071,20 @@ class AppLocalizationsPt extends AppLocalizations { String get cloudSettingsTestConnection => 'Test Connection'; @override - String get cloudSettingsInfo => 'Downloaded files will be automatically uploaded to your cloud storage after download completes. Original files are kept on your device.'; + String get cloudSettingsInfo => + 'Downloaded files will be automatically uploaded to your cloud storage after download completes. Original files are kept on your device.'; + + @override + String get cloudSettingsUploadQueue => 'Upload Queue'; + + @override + String get cloudSettingsRetryFailed => 'Retry Failed'; + + @override + String get cloudSettingsClearDone => 'Clear Done'; + + @override + String get cloudSettingsRecentUploads => 'Recent Uploads'; @override String get queueEmpty => 'No downloads in queue'; @@ -2028,7 +2120,8 @@ class AppLocalizationsPt extends AppLocalizations { String get albumFolderArtistYearAlbum => 'Artist / [Year] Album'; @override - String get albumFolderArtistYearAlbumSubtitle => 'Albums/Artist Name/[2005] Album Name/'; + String get albumFolderArtistYearAlbumSubtitle => + 'Albums/Artist Name/[2005] Album Name/'; @override String get albumFolderAlbumOnly => 'Album Only'; @@ -2046,7 +2139,8 @@ class AppLocalizationsPt extends AppLocalizations { String get albumFolderArtistAlbumSingles => 'Artist / Album + Singles'; @override - String get albumFolderArtistAlbumSinglesSubtitle => 'Artist/Album/ and Artist/Singles/'; + String get albumFolderArtistAlbumSinglesSubtitle => + 'Artist/Album/ and Artist/Singles/'; @override String get downloadedAlbumDeleteSelected => 'Delete Selected'; @@ -2156,7 +2250,8 @@ class AppLocalizationsPt extends AppLocalizations { String get discographySelectAlbums => 'Select Albums...'; @override - String get discographySelectAlbumsSubtitle => 'Choose specific albums or singles'; + String get discographySelectAlbumsSubtitle => + 'Choose specific albums or singles'; @override String get discographyFetchingTracks => 'Fetching tracks...'; @@ -2203,24 +2298,28 @@ class AppLocalizationsPt extends AppLocalizations { String get allFilesAccessDisabledSubtitle => 'Limited to media folders only'; @override - String get allFilesAccessDescription => 'Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.'; + String get allFilesAccessDescription => + 'Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.'; @override - String get allFilesAccessDeniedMessage => 'Permission was denied. Please enable \'All files access\' manually in system settings.'; + String get allFilesAccessDeniedMessage => + 'Permission was denied. Please enable \'All files access\' manually in system settings.'; @override - String get allFilesAccessDisabledMessage => 'All Files Access disabled. The app will use limited storage access.'; + String get allFilesAccessDisabledMessage => + 'All Files Access disabled. The app will use limited storage access.'; } /// The translations for Portuguese, as used in Portugal (`pt_PT`). class AppLocalizationsPtPt extends AppLocalizationsPt { - AppLocalizationsPtPt(): super('pt_PT'); + AppLocalizationsPtPt() : super('pt_PT'); @override String get appName => 'SpotiFLAC'; @override - String get appDescription => 'Baixe faixas do Spotify em qualidade sem perdas de Tidal, Qobuz e Amazon Music.'; + String get appDescription => + 'Baixe faixas do Spotify em qualidade sem perdas de Tidal, Qobuz e Amazon Music.'; @override String get navHome => 'Início'; @@ -2249,7 +2348,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get homeSubtitle => 'Cole um link do Spotify ou procure por nome'; @override - String get homeSupports => 'Suporte: Faixas, Álbuns, Playlists, URLs de Artista'; + String get homeSupports => + 'Suporte: Faixas, Álbuns, Playlists, URLs de Artista'; @override String get homeRecent => 'Recentes'; @@ -2306,13 +2406,15 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get historyNoAlbums => 'Sem álbuns baixados'; @override - String get historyNoAlbumsSubtitle => 'Baixe várias faixas de um álbum para vê-las aqui'; + String get historyNoAlbumsSubtitle => + 'Baixe várias faixas de um álbum para vê-las aqui'; @override String get historyNoSingles => 'Sem singles baixados'; @override - String get historyNoSinglesSubtitle => 'Os downloads de faixa individuais aparecerão aqui'; + String get historyNoSinglesSubtitle => + 'Os downloads de faixa individuais aparecerão aqui'; @override String get settingsTitle => 'Configurações'; @@ -2357,7 +2459,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get downloadAskQuality => 'Perguntar qualidade antes de baixar'; @override - String get downloadAskQualitySubtitle => 'Mostrar seletor de qualidade para cada download'; + String get downloadAskQualitySubtitle => + 'Mostrar seletor de qualidade para cada download'; @override String get downloadFilenameFormat => 'Formato do Nome do Arquivo'; @@ -2369,7 +2472,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get downloadSeparateSingles => 'Separar Singles'; @override - String get downloadSeparateSinglesSubtitle => 'Colocar singles numa pasta separada'; + String get downloadSeparateSinglesSubtitle => + 'Colocar singles numa pasta separada'; @override String get qualityBest => 'Melhor Disponível'; @@ -2402,7 +2506,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get appearanceDynamicColor => 'Cores Dinâmicas'; @override - String get appearanceDynamicColorSubtitle => 'Usar cores do seu papel de parede'; + String get appearanceDynamicColorSubtitle => + 'Usar cores do seu papel de parede'; @override String get appearanceAccentColor => 'Cor de Destaque'; @@ -2426,7 +2531,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get optionsPrimaryProvider => 'Provedor Primário'; @override - String get optionsPrimaryProviderSubtitle => 'Serviço usado ao pesquisar por nome da faixa.'; + String get optionsPrimaryProviderSubtitle => + 'Serviço usado ao pesquisar por nome da faixa.'; @override String optionsUsingExtension(String extensionName) { @@ -2434,34 +2540,40 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { } @override - String get optionsSwitchBack => 'Toque no Deezer ou Spotify para alternar de volta da extensão'; + String get optionsSwitchBack => + 'Toque no Deezer ou Spotify para alternar de volta da extensão'; @override String get optionsAutoFallback => 'Fallback Automático'; @override - String get optionsAutoFallbackSubtitle => 'Tentar outros serviços se o download falhar'; + String get optionsAutoFallbackSubtitle => + 'Tentar outros serviços se o download falhar'; @override String get optionsUseExtensionProviders => 'Usar Provedores de Extensão'; @override - String get optionsUseExtensionProvidersOn => 'Extensões serão tentadas primeiro'; + String get optionsUseExtensionProvidersOn => + 'Extensões serão tentadas primeiro'; @override - String get optionsUseExtensionProvidersOff => 'Usando apenas provedores integrados'; + String get optionsUseExtensionProvidersOff => + 'Usando apenas provedores integrados'; @override String get optionsEmbedLyrics => 'Incorporar Letras'; @override - String get optionsEmbedLyricsSubtitle => 'Incorporar letras sincronizadas aos arquivos FLAC'; + String get optionsEmbedLyricsSubtitle => + 'Incorporar letras sincronizadas aos arquivos FLAC'; @override String get optionsMaxQualityCover => 'Capa de Qualidade Máxima'; @override - String get optionsMaxQualityCoverSubtitle => 'Baixar capa do álbum com a mais alta resolução'; + String get optionsMaxQualityCoverSubtitle => + 'Baixar capa do álbum com a mais alta resolução'; @override String get optionsConcurrentDownloads => 'Downloads Simultâneos'; @@ -2475,19 +2587,22 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { } @override - String get optionsConcurrentWarning => 'Downloads simultâneos podem causar um limite da taxa (ratelimit)'; + String get optionsConcurrentWarning => + 'Downloads simultâneos podem causar um limite da taxa (ratelimit)'; @override String get optionsExtensionStore => 'Loja de Extensões'; @override - String get optionsExtensionStoreSubtitle => 'Mostrar aba da Loja na navegação'; + String get optionsExtensionStoreSubtitle => + 'Mostrar aba da Loja na navegação'; @override String get optionsCheckUpdates => 'Procurar Atualizações'; @override - String get optionsCheckUpdatesSubtitle => 'Notificar quando uma nova versão estiver disponível'; + String get optionsCheckUpdatesSubtitle => + 'Notificar quando uma nova versão estiver disponível'; @override String get optionsUpdateChannel => 'Canal de Atualização'; @@ -2499,19 +2614,22 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get optionsUpdateChannelPreview => 'Obter versões de prévia'; @override - String get optionsUpdateChannelWarning => 'A prévia pode conter erros ou recursos incompletos'; + String get optionsUpdateChannelWarning => + 'A prévia pode conter erros ou recursos incompletos'; @override String get optionsClearHistory => 'Limpar Histórico de Download'; @override - String get optionsClearHistorySubtitle => 'Remover todas as faixas baixadas do histórico'; + String get optionsClearHistorySubtitle => + 'Remover todas as faixas baixadas do histórico'; @override String get optionsDetailedLogging => 'Registro detalhado'; @override - String get optionsDetailedLoggingOn => 'Registros detalhados estão sendo gravados'; + String get optionsDetailedLoggingOn => + 'Registros detalhados estão sendo gravados'; @override String get optionsDetailedLoggingOff => 'Habilitar para relatórios de erros'; @@ -2525,10 +2643,12 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { } @override - String get optionsSpotifyCredentialsRequired => 'Obrigatório - toque para configurar'; + String get optionsSpotifyCredentialsRequired => + 'Obrigatório - toque para configurar'; @override - String get optionsSpotifyWarning => 'O Spotify requer as suas próprias credenciais de API. Consiga gratuitamente em developer.spotify.com'; + String get optionsSpotifyWarning => + 'O Spotify requer as suas próprias credenciais de API. Consiga gratuitamente em developer.spotify.com'; @override String get extensionsTitle => 'Extensões'; @@ -2540,7 +2660,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get extensionsNone => 'Nenhuma extensão instalada'; @override - String get extensionsNoneSubtitle => 'Instalar extensões a partir da aba Loja'; + String get extensionsNoneSubtitle => + 'Instalar extensões a partir da aba Loja'; @override String get extensionsEnabled => 'Habilitado'; @@ -2592,7 +2713,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get aboutOriginalCreator => 'Criador do SpotiFLAC original'; @override - String get aboutLogoArtist => 'O artista talentoso que criou o nosso lindo logotipo do aplicativo!'; + String get aboutLogoArtist => + 'O artista talentoso que criou o nosso lindo logotipo do aplicativo!'; @override String get aboutSpecialThanks => 'Agradecimentos Especiais'; @@ -2610,13 +2732,15 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get aboutReportIssue => 'Reportar um problema'; @override - String get aboutReportIssueSubtitle => 'Reporte qualquer problema que encontrar'; + String get aboutReportIssueSubtitle => + 'Reporte qualquer problema que encontrar'; @override String get aboutFeatureRequest => 'Solicitação de recurso'; @override - String get aboutFeatureRequestSubtitle => 'Sugira novos recursos para o aplicativo'; + String get aboutFeatureRequestSubtitle => + 'Sugira novos recursos para o aplicativo'; @override String get aboutSupport => 'Apoiar'; @@ -2634,25 +2758,30 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get aboutVersion => 'Versão'; @override - String get aboutBinimumDesc => 'O criador da API QQDL e HiFi. Sem esta API, os downloads Tidal não existiriam!'; + String get aboutBinimumDesc => + 'O criador da API QQDL e HiFi. Sem esta API, os downloads Tidal não existiriam!'; @override - String get aboutSachinsenalDesc => 'O criador original do projeto HiFi. A base da integração do Tidal!'; + String get aboutSachinsenalDesc => + 'O criador original do projeto HiFi. A base da integração do Tidal!'; @override String get aboutDoubleDouble => 'DoubleDouble'; @override - String get aboutDoubleDoubleDesc => 'API incrível para downloads do Amazon Music. Obrigado por fazê-lo gratuitamente!'; + String get aboutDoubleDoubleDesc => + 'API incrível para downloads do Amazon Music. Obrigado por fazê-lo gratuitamente!'; @override String get aboutDabMusic => 'DAB Music'; @override - String get aboutDabMusicDesc => 'A melhor API de streaming do Qobuz. Downloads de alta resolução não seriam possíveis sem isso!'; + String get aboutDabMusicDesc => + 'A melhor API de streaming do Qobuz. Downloads de alta resolução não seriam possíveis sem isso!'; @override - String get aboutAppDescription => 'Baixe faixas do Spotify em qualidade sem perdas do Tidal, Qobuz e Amazon Music.'; + String get aboutAppDescription => + 'Baixe faixas do Spotify em qualidade sem perdas do Tidal, Qobuz e Amazon Music.'; @override String get albumTitle => 'Álbum'; @@ -2757,7 +2886,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get setupStoragePermission => 'Permissão de Armazenamento'; @override - String get setupStoragePermissionSubtitle => 'Necessária para salvar arquivos baixados'; + String get setupStoragePermissionSubtitle => + 'Necessária para salvar arquivos baixados'; @override String get setupStoragePermissionGranted => 'Permissão concedida'; @@ -2784,16 +2914,19 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get setupStorageAccessRequired => 'Acesso ao Armazenamento Necessário'; @override - String get setupStorageAccessMessage => 'O SpotiFLAC precisa da permissão \"Acesso a todos os arquivos\" para salvar arquivos de música na sua pasta escolhida.'; + String get setupStorageAccessMessage => + 'O SpotiFLAC precisa da permissão \"Acesso a todos os arquivos\" para salvar arquivos de música na sua pasta escolhida.'; @override - String get setupStorageAccessMessageAndroid11 => 'O Android 11+ requer a permissão \"Acesso a Todos os Arquivos\" para salvar arquivos na pasta de download escolhida.'; + String get setupStorageAccessMessageAndroid11 => + 'O Android 11+ requer a permissão \"Acesso a Todos os Arquivos\" para salvar arquivos na pasta de download escolhida.'; @override String get setupOpenSettings => 'Abrir Configurações'; @override - String get setupPermissionDeniedMessage => 'Permissão negada. Por favor, conceda todas as permissões para continuar.'; + String get setupPermissionDeniedMessage => + 'Permissão negada. Por favor, conceda todas as permissões para continuar.'; @override String setupPermissionRequired(String permissionType) { @@ -2812,7 +2945,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get setupUseDefaultFolder => 'Usar Pasta Padrão?'; @override - String get setupNoFolderSelected => 'Nenhuma pasta selecionada. Você gostaria de usar a pasta padrão de música?'; + String get setupNoFolderSelected => + 'Nenhuma pasta selecionada. Você gostaria de usar a pasta padrão de música?'; @override String get setupUseDefault => 'Usar Padrão'; @@ -2821,22 +2955,26 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get setupDownloadLocationTitle => 'Local do Download'; @override - String get setupDownloadLocationIosMessage => 'No iOS, downloads são salvos na pasta Documentos do aplicativo. Você pode acessá-los através do app Arquivos.'; + String get setupDownloadLocationIosMessage => + 'No iOS, downloads são salvos na pasta Documentos do aplicativo. Você pode acessá-los através do app Arquivos.'; @override String get setupAppDocumentsFolder => 'Pasta Documentos do App'; @override - String get setupAppDocumentsFolderSubtitle => 'Recomendado - acessível através do aplicativo Arquivos'; + String get setupAppDocumentsFolderSubtitle => + 'Recomendado - acessível através do aplicativo Arquivos'; @override String get setupChooseFromFiles => 'Escolher dos Arquivos'; @override - String get setupChooseFromFilesSubtitle => 'Selecione o iCloud ou outro local'; + String get setupChooseFromFilesSubtitle => + 'Selecione o iCloud ou outro local'; @override - String get setupIosEmptyFolderWarning => 'Limitação do iOS: Pastas vazias não podem ser selecionadas. Escolha uma pasta com pelo menos um arquivo.'; + String get setupIosEmptyFolderWarning => + 'Limitação do iOS: Pastas vazias não podem ser selecionadas. Escolha uma pasta com pelo menos um arquivo.'; @override String get setupDownloadInFlac => 'Baixe faixas do Spotify em FLAC'; @@ -2863,7 +3001,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get setupStorageRequired => 'Permissão de Armazenamento Necessária'; @override - String get setupStorageDescription => 'O SpotiFLAC precisa de permissão de armazenamento para salvar os seus arquivos de música baixados.'; + String get setupStorageDescription => + 'O SpotiFLAC precisa de permissão de armazenamento para salvar os seus arquivos de música baixados.'; @override String get setupNotificationGranted => 'Permissão de Notificações Concedida!'; @@ -2872,7 +3011,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get setupNotificationEnable => 'Habilitar Notificações'; @override - String get setupNotificationDescription => 'Seja notificado quando os downloads completarem ou exigirem atenção.'; + String get setupNotificationDescription => + 'Seja notificado quando os downloads completarem ou exigirem atenção.'; @override String get setupFolderSelected => 'Pasta para Download Selecionada!'; @@ -2881,7 +3021,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get setupFolderChoose => 'Escolher Pasta de Download'; @override - String get setupFolderDescription => 'Selecione uma pasta onde as suas músicas baixadas serão salvas.'; + String get setupFolderDescription => + 'Selecione uma pasta onde as suas músicas baixadas serão salvas.'; @override String get setupChangeFolder => 'Alterar Pasta'; @@ -2893,7 +3034,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get setupSpotifyApiOptional => 'API do Spotify (opcional)'; @override - String get setupSpotifyApiDescription => 'Adicione as suas credenciais da API do Spotify para obter melhores resultados de busca e acesso a conteúdo exclusivo do Spotify.'; + String get setupSpotifyApiDescription => + 'Adicione as suas credenciais da API do Spotify para obter melhores resultados de busca e acesso a conteúdo exclusivo do Spotify.'; @override String get setupUseSpotifyApi => 'Usar API do Spotify'; @@ -2911,19 +3053,23 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get setupEnterClientSecret => 'Insira o Spotify Client Secret'; @override - String get setupGetFreeCredentials => 'Receba as suas credenciais de API gratuitas na Spotify Developer Dashboard.'; + String get setupGetFreeCredentials => + 'Receba as suas credenciais de API gratuitas na Spotify Developer Dashboard.'; @override String get setupEnableNotifications => 'Habilitar Notificações'; @override - String get setupProceedToNextStep => 'Você já pode prosseguir para o próximo passo.'; + String get setupProceedToNextStep => + 'Você já pode prosseguir para o próximo passo.'; @override - String get setupNotificationProgressDescription => 'Você receberá notificações de progresso dos downloads.'; + String get setupNotificationProgressDescription => + 'Você receberá notificações de progresso dos downloads.'; @override - String get setupNotificationBackgroundDescription => 'Seja notificado sobre o progresso e conclusão do download. Isso ajuda você a acompanhar os downloads quando o app estiver em segundo plano.'; + String get setupNotificationBackgroundDescription => + 'Seja notificado sobre o progresso e conclusão do download. Isso ajuda você a acompanhar os downloads quando o app estiver em segundo plano.'; @override String get setupSkipForNow => 'Ignorar por enquanto'; @@ -2941,10 +3087,12 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get setupSkipAndStart => 'Ignorar e Iniciar'; @override - String get setupAllowAccessToManageFiles => 'Por favor, habilite \"Permitir acesso para gerenciar todos os arquivos\" na próxima tela.'; + String get setupAllowAccessToManageFiles => + 'Por favor, habilite \"Permitir acesso para gerenciar todos os arquivos\" na próxima tela.'; @override - String get setupGetCredentialsFromSpotify => 'Obter credenciais do developer.spotify.com'; + String get setupGetCredentialsFromSpotify => + 'Obter credenciais do developer.spotify.com'; @override String get dialogCancel => 'Cancelar'; @@ -2995,7 +3143,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get dialogDiscardChanges => 'Descartar Alterações?'; @override - String get dialogUnsavedChanges => 'Você tem alterações não salvas. Deseja descartá-las?'; + String get dialogUnsavedChanges => + 'Você tem alterações não salvas. Deseja descartá-las?'; @override String get dialogDownloadFailed => 'Download Falhou'; @@ -3013,7 +3162,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get dialogClearAll => 'Limpar Tudo'; @override - String get dialogClearAllDownloads => 'Você tem certeza que deseja limpar todos os downloads?'; + String get dialogClearAllDownloads => + 'Você tem certeza que deseja limpar todos os downloads?'; @override String get dialogRemoveFromDevice => 'Remover do dispositivo?'; @@ -3022,7 +3172,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get dialogRemoveExtension => 'Remover Extensão'; @override - String get dialogRemoveExtensionMessage => 'Tem certeza de que deseja remover esta extensão? Isso não pode ser desfeito.'; + String get dialogRemoveExtensionMessage => + 'Tem certeza de que deseja remover esta extensão? Isso não pode ser desfeito.'; @override String get dialogUninstallExtension => 'Desinstalar Extensão?'; @@ -3036,7 +3187,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get dialogClearHistoryTitle => 'Limpar Histórico'; @override - String get dialogClearHistoryMessage => 'Tem certeza de que deseja limpar todo o histórico de downloads? Isso não pode ser desfeito.'; + String get dialogClearHistoryMessage => + 'Tem certeza de que deseja limpar todo o histórico de downloads? Isso não pode ser desfeito.'; @override String get dialogDeleteSelectedTitle => 'Apagar Selecionados'; @@ -3120,13 +3272,15 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get snackbarFileNotFound => 'Arquivo não encontrado'; @override - String get snackbarSelectExtFile => 'Por favor, selecione um arquivo .spotiflac-ext'; + String get snackbarSelectExtFile => + 'Por favor, selecione um arquivo .spotiflac-ext'; @override String get snackbarProviderPrioritySaved => 'Prioridade de provedor salva'; @override - String get snackbarMetadataProviderSaved => 'Prioridade de provedor de metadados salva'; + String get snackbarMetadataProviderSaved => + 'Prioridade de provedor de metadados salva'; @override String snackbarExtensionInstalled(String extensionName) { @@ -3148,7 +3302,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get errorRateLimited => 'Taxa Limitada'; @override - String get errorRateLimitedMessage => 'Muitas solicitações. Por favor, aguarde um momento antes de pesquisar novamente.'; + String get errorRateLimitedMessage => + 'Muitas solicitações. Por favor, aguarde um momento antes de pesquisar novamente.'; @override String errorFailedToLoad(String item) { @@ -3315,19 +3470,24 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get folderOrganizationByArtistAlbum => 'Artista/Álbum'; @override - String get folderOrganizationDescription => 'Organizar arquivos baixados em pastas'; + String get folderOrganizationDescription => + 'Organizar arquivos baixados em pastas'; @override - String get folderOrganizationNoneSubtitle => 'Todos os arquivos na pasta de download'; + String get folderOrganizationNoneSubtitle => + 'Todos os arquivos na pasta de download'; @override - String get folderOrganizationByArtistSubtitle => 'Pasta separada para cada artista'; + String get folderOrganizationByArtistSubtitle => + 'Pasta separada para cada artista'; @override - String get folderOrganizationByAlbumSubtitle => 'Pasta separada para cada álbum'; + String get folderOrganizationByAlbumSubtitle => + 'Pasta separada para cada álbum'; @override - String get folderOrganizationByArtistAlbumSubtitle => 'Pastas aninhadas para artista e álbum'; + String get folderOrganizationByArtistAlbumSubtitle => + 'Pastas aninhadas para artista e álbum'; @override String get updateAvailable => 'Atualização Disponível'; @@ -3380,16 +3540,19 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get providerPriority => 'Prioridade de Provedor'; @override - String get providerPrioritySubtitle => 'Arraste para reordenar os provedores de download'; + String get providerPrioritySubtitle => + 'Arraste para reordenar os provedores de download'; @override String get providerPriorityTitle => 'Prioridade de Provedor'; @override - String get providerPriorityDescription => 'Arraste para reordenar provedores de download. O aplicativo irá tentar provedores de cima para baixo ao baixar as faixas.'; + String get providerPriorityDescription => + 'Arraste para reordenar provedores de download. O aplicativo irá tentar provedores de cima para baixo ao baixar as faixas.'; @override - String get providerPriorityInfo => 'Se uma faixa não estiver disponível no primeiro provedor, o aplicativo irá tentar automaticamente a próxima.'; + String get providerPriorityInfo => + 'Se uma faixa não estiver disponível no primeiro provedor, o aplicativo irá tentar automaticamente a próxima.'; @override String get providerBuiltIn => 'Embutido'; @@ -3401,16 +3564,19 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get metadataProviderPriority => 'Prioridade de Provedor de Metadados'; @override - String get metadataProviderPrioritySubtitle => 'Ordem usada para obter metadados de faixa'; + String get metadataProviderPrioritySubtitle => + 'Ordem usada para obter metadados de faixa'; @override String get metadataProviderPriorityTitle => 'Prioridade de Metadados'; @override - String get metadataProviderPriorityDescription => 'Arraste para reordenar provedores de metadados. O aplicativo tentará provedores de cima para baixo ao procurar por faixas e buscar metadados.'; + String get metadataProviderPriorityDescription => + 'Arraste para reordenar provedores de metadados. O aplicativo tentará provedores de cima para baixo ao procurar por faixas e buscar metadados.'; @override - String get metadataProviderPriorityInfo => 'O Deezer não tem limites de taxa e é recomendado como principal. O Spotify pode limitar a taxa após muitas solicitações.'; + String get metadataProviderPriorityInfo => + 'O Deezer não tem limites de taxa e é recomendado como principal. O Spotify pode limitar a taxa após muitas solicitações.'; @override String get metadataNoRateLimits => 'Sem limites de taxa'; @@ -3455,7 +3621,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get logClearLogsTitle => 'Limpar Registros'; @override - String get logClearLogsMessage => 'Tem certeza de que deseja limpar todos os registros?'; + String get logClearLogsMessage => + 'Tem certeza de que deseja limpar todos os registros?'; @override String get logIspBlocking => 'BLOQUEIO DE ISP DETECTADO'; @@ -3476,34 +3643,41 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get logNoLogsYet => 'Ainda não há registros'; @override - String get logNoLogsYetSubtitle => 'Os registros aparecerão aqui enquanto você usa o aplicativo'; + String get logNoLogsYetSubtitle => + 'Os registros aparecerão aqui enquanto você usa o aplicativo'; @override String get logIssueSummary => 'Resumo do Problemas'; @override - String get logIspBlockingDescription => 'O seu provedor pode estar bloqueando o acesso aos serviços de download'; + String get logIspBlockingDescription => + 'O seu provedor pode estar bloqueando o acesso aos serviços de download'; @override - String get logIspBlockingSuggestion => 'Tente usar uma VPN ou altere o DNS para 1.1.1 ou 8.8.8.8'; + String get logIspBlockingSuggestion => + 'Tente usar uma VPN ou altere o DNS para 1.1.1 ou 8.8.8.8'; @override String get logRateLimitedDescription => 'Muitas solicitações ao serviço'; @override - String get logRateLimitedSuggestion => 'Aguarde alguns minutos antes de tentar novamente'; + String get logRateLimitedSuggestion => + 'Aguarde alguns minutos antes de tentar novamente'; @override String get logNetworkErrorDescription => 'Problemas de conexão detectados'; @override - String get logNetworkErrorSuggestion => 'Verifique a sua conexão com a internet'; + String get logNetworkErrorSuggestion => + 'Verifique a sua conexão com a internet'; @override - String get logTrackNotFoundDescription => 'Algumas faixas não foram encontradas nos serviços de download'; + String get logTrackNotFoundDescription => + 'Algumas faixas não foram encontradas nos serviços de download'; @override - String get logTrackNotFoundSuggestion => 'A faixa pode não estar disponível em qualidade lossless'; + String get logTrackNotFoundSuggestion => + 'A faixa pode não estar disponível em qualidade lossless'; @override String logTotalErrors(int count) { @@ -3529,7 +3703,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get credentialsTitle => 'Credenciais do Spotify'; @override - String get credentialsDescription => 'Insira o seu Client ID e Secret para usar a sua própria cota de aplicativo do Spotify.'; + String get credentialsDescription => + 'Insira o seu Client ID e Secret para usar a sua própria cota de aplicativo do Spotify.'; @override String get credentialsClientId => 'Client ID'; @@ -3598,10 +3773,12 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get settingsAppearanceSubtitle => 'Tema, cores, exibição'; @override - String get settingsDownloadSubtitle => 'Serviço, qualidade, formato de nome de arquivo'; + String get settingsDownloadSubtitle => + 'Serviço, qualidade, formato de nome de arquivo'; @override - String get settingsOptionsSubtitle => 'Fallback, letras, arte de capa, atualizações'; + String get settingsOptionsSubtitle => + 'Fallback, letras, arte de capa, atualizações'; @override String get settingsExtensionsSubtitle => 'Gerenciar provedores de download'; @@ -3695,10 +3872,12 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get trackCopyLyrics => 'Copiar letras'; @override - String get trackLyricsNotAvailable => 'Letras não disponíveis para esta faixa'; + String get trackLyricsNotAvailable => + 'Letras não disponíveis para esta faixa'; @override - String get trackLyricsTimeout => 'A solicitação expirou. Tente novamente mais tarde.'; + String get trackLyricsTimeout => + 'A solicitação expirou. Tente novamente mais tarde.'; @override String get trackLyricsLoadFailed => 'Falha ao carregar letras'; @@ -3710,7 +3889,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get trackDeleteConfirmTitle => 'Remover do dispositivo?'; @override - String get trackDeleteConfirmMessage => 'Isso apagará permanentemente o arquivo baixado e o removerá do seu histórico.'; + String get trackDeleteConfirmMessage => + 'Isso apagará permanentemente o arquivo baixado e o removerá do seu histórico.'; @override String trackCannotOpen(String message) { @@ -3832,7 +4012,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get extensionMinAppVersion => 'Versão Mínima do App'; @override - String get extensionCustomTrackMatching => 'Correspondência de Faixa Personalizada'; + String get extensionCustomTrackMatching => + 'Correspondência de Faixa Personalizada'; @override String get extensionPostProcessing => 'Pós-Processamento'; @@ -3862,13 +4043,15 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get extensionsNoExtensions => 'Nenhuma extensão instalada'; @override - String get extensionsNoExtensionsSubtitle => 'Instale arquivos .spotiflac-ext para adicionar novos provedores'; + String get extensionsNoExtensionsSubtitle => + 'Instale arquivos .spotiflac-ext para adicionar novos provedores'; @override String get extensionsInstallButton => 'Instalar Extensão'; @override - String get extensionsInfoTip => 'Extensões podem adicionar novos metadados e baixar provedores. Somente instale extensões a partir de fontes confiáveis.'; + String get extensionsInfoTip => + 'Extensões podem adicionar novos metadados e baixar provedores. Somente instale extensões a partir de fontes confiáveis.'; @override String get extensionsInstalledSuccess => 'Extensão instalada com sucesso'; @@ -3877,28 +4060,34 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get extensionsDownloadPriority => 'Prioridade de Download'; @override - String get extensionsDownloadPrioritySubtitle => 'Definir ordem do serviço de download'; + String get extensionsDownloadPrioritySubtitle => + 'Definir ordem do serviço de download'; @override - String get extensionsNoDownloadProvider => 'Nenhuma extensão com provedor de download'; + String get extensionsNoDownloadProvider => + 'Nenhuma extensão com provedor de download'; @override String get extensionsMetadataPriority => 'Prioridade de Metadados'; @override - String get extensionsMetadataPrioritySubtitle => 'Definir ordem de origem de pesquisa e metadados'; + String get extensionsMetadataPrioritySubtitle => + 'Definir ordem de origem de pesquisa e metadados'; @override - String get extensionsNoMetadataProvider => 'Nenhuma extensão com provedor de metadados'; + String get extensionsNoMetadataProvider => + 'Nenhuma extensão com provedor de metadados'; @override String get extensionsSearchProvider => 'Provedor de Pesquisa'; @override - String get extensionsNoCustomSearch => 'Nenhuma extensão com pesquisa personalizada'; + String get extensionsNoCustomSearch => + 'Nenhuma extensão com pesquisa personalizada'; @override - String get extensionsSearchProviderDescription => 'Escolha qual serviço utilizar para pesquisar faixas'; + String get extensionsSearchProviderDescription => + 'Escolha qual serviço utilizar para pesquisar faixas'; @override String get extensionsCustomSearch => 'Busca personalizada'; @@ -3925,7 +4114,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get qualityHiResFlacMaxSubtitle => '24-bit / até 192kHz'; @override - String get qualityNote => 'A qualidade real depende da faixa que estiver disponível no serviço'; + String get qualityNote => + 'A qualidade real depende da faixa que estiver disponível no serviço'; @override String get downloadAskBeforeDownload => 'Perguntar qualidade antes de baixar'; @@ -3961,7 +4151,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get folderNone => 'Nenhum'; @override - String get folderNoneSubtitle => 'Salvar todos os arquivos diretamente na pasta de download'; + String get folderNoneSubtitle => + 'Salvar todos os arquivos diretamente na pasta de download'; @override String get folderArtist => 'Artista'; @@ -3979,7 +4170,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get folderArtistAlbum => 'Artista/Álbum'; @override - String get folderArtistAlbumSubtitle => 'Nome do Artista/Nome do Álbum/nome do arquivo'; + String get folderArtistAlbumSubtitle => + 'Nome do Artista/Nome do Álbum/nome do arquivo'; @override String get serviceTidal => 'Tidal'; @@ -4015,7 +4207,8 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get queueClearAll => 'Limpar Tudo'; @override - String get queueClearAllMessage => 'Tem certeza de que deseja limpar todos os downloads?'; + String get queueClearAllMessage => + 'Tem certeza de que deseja limpar todos os downloads?'; @override String get queueEmpty => 'Nenhum download na fila'; @@ -4045,13 +4238,15 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get albumFolderArtistAlbum => 'Artista / Álbum'; @override - String get albumFolderArtistAlbumSubtitle => 'Álbuns/Nome do Artista/Nome do Álbum/'; + String get albumFolderArtistAlbumSubtitle => + 'Álbuns/Nome do Artista/Nome do Álbum/'; @override String get albumFolderArtistYearAlbum => 'Artista / [Ano] Álbum'; @override - String get albumFolderArtistYearAlbumSubtitle => 'Álbuns/Nome do Artista/[2005] Nome do Álbum/'; + String get albumFolderArtistYearAlbumSubtitle => + 'Álbuns/Nome do Artista/[2005] Nome do Álbum/'; @override String get albumFolderAlbumOnly => 'Apenas Álbum'; diff --git a/lib/l10n/app_localizations_ru.dart b/lib/l10n/app_localizations_ru.dart index 68c85b8b..c7f0853e 100644 --- a/lib/l10n/app_localizations_ru.dart +++ b/lib/l10n/app_localizations_ru.dart @@ -12,7 +12,8 @@ class AppLocalizationsRu extends AppLocalizations { String get appName => 'SpotiFLAC'; @override - String get appDescription => 'Скачайте треки Spotify в Lossless качестве из Tidal, Qobuz и Amazon Music.'; + String get appDescription => + 'Скачайте треки Spotify в Lossless качестве из Tidal, Qobuz и Amazon Music.'; @override String get navHome => 'Главная'; @@ -41,7 +42,8 @@ class AppLocalizationsRu extends AppLocalizations { String get homeSubtitle => 'Вставьте ссылку Spotify или ищите по названию'; @override - String get homeSupports => 'Поддерживается: Трек, Альбом, Плейлист, URL исполнителя'; + String get homeSupports => + 'Поддерживается: Трек, Альбом, Плейлист, URL исполнителя'; @override String get homeRecent => 'Недавние'; @@ -102,13 +104,15 @@ class AppLocalizationsRu extends AppLocalizations { String get historyNoAlbums => 'Нет скачанных альбомов'; @override - String get historyNoAlbumsSubtitle => 'Скачайте несколько треков из альбома, чтобы увидеть их здесь'; + String get historyNoAlbumsSubtitle => + 'Скачайте несколько треков из альбома, чтобы увидеть их здесь'; @override String get historyNoSingles => 'Нет скачанных синглов'; @override - String get historyNoSinglesSubtitle => 'Здесь будут отображаться загрузки синглов'; + String get historyNoSinglesSubtitle => + 'Здесь будут отображаться загрузки синглов'; @override String get historySearchHint => 'Поиск в истории...'; @@ -147,7 +151,8 @@ class AppLocalizationsRu extends AppLocalizations { String get downloadDefaultService => 'Сервис по умолчанию'; @override - String get downloadDefaultServiceSubtitle => 'Сервис, используемый для скачивания'; + String get downloadDefaultServiceSubtitle => + 'Сервис, используемый для скачивания'; @override String get downloadDefaultQuality => 'Качество по умолчанию'; @@ -156,7 +161,8 @@ class AppLocalizationsRu extends AppLocalizations { String get downloadAskQuality => 'Спрашивать качество перед скачиванием'; @override - String get downloadAskQualitySubtitle => 'Показывать выбор качества для каждого скачивания'; + String get downloadAskQualitySubtitle => + 'Показывать выбор качества для каждого скачивания'; @override String get downloadFilenameFormat => 'Формат имени файла'; @@ -168,7 +174,8 @@ class AppLocalizationsRu extends AppLocalizations { String get downloadSeparateSingles => 'Разделять синглы'; @override - String get downloadSeparateSinglesSubtitle => 'Помещать синглы в отдельную папку'; + String get downloadSeparateSinglesSubtitle => + 'Помещать синглы в отдельную папку'; @override String get qualityBest => 'Лучшее из доступных'; @@ -201,7 +208,8 @@ class AppLocalizationsRu extends AppLocalizations { String get appearanceDynamicColor => 'Динамический цвет'; @override - String get appearanceDynamicColorSubtitle => 'Использовать цвета из ваших обоев'; + String get appearanceDynamicColorSubtitle => + 'Использовать цвета из ваших обоев'; @override String get appearanceAccentColor => 'Акцентный цвет'; @@ -225,7 +233,8 @@ class AppLocalizationsRu extends AppLocalizations { String get optionsPrimaryProvider => 'Основной провайдер'; @override - String get optionsPrimaryProviderSubtitle => 'Сервис, используемый при поиске по названию трека.'; + String get optionsPrimaryProviderSubtitle => + 'Сервис, используемый при поиске по названию трека.'; @override String optionsUsingExtension(String extensionName) { @@ -233,34 +242,41 @@ class AppLocalizationsRu extends AppLocalizations { } @override - String get optionsSwitchBack => 'Нажмите Deezer или Spotify для возврата с расширения'; + String get optionsSwitchBack => + 'Нажмите Deezer или Spotify для возврата с расширения'; @override String get optionsAutoFallback => 'Автоматический переход'; @override - String get optionsAutoFallbackSubtitle => 'Попробовать другие сервисы при сбое загрузки'; + String get optionsAutoFallbackSubtitle => + 'Попробовать другие сервисы при сбое загрузки'; @override - String get optionsUseExtensionProviders => 'Использовать провайдера расширений'; + String get optionsUseExtensionProviders => + 'Использовать провайдера расширений'; @override - String get optionsUseExtensionProvidersOn => 'Сначала будут опробованы расширения'; + String get optionsUseExtensionProvidersOn => + 'Сначала будут опробованы расширения'; @override - String get optionsUseExtensionProvidersOff => 'Использование только встроенных провайдеров'; + String get optionsUseExtensionProvidersOff => + 'Использование только встроенных провайдеров'; @override String get optionsEmbedLyrics => 'Вставить текст песни'; @override - String get optionsEmbedLyricsSubtitle => 'Вставить синхронизированные тексты в FLAC файлы'; + String get optionsEmbedLyricsSubtitle => + 'Вставить синхронизированные тексты в FLAC файлы'; @override String get optionsMaxQualityCover => 'Максимальное качество обложки'; @override - String get optionsMaxQualityCoverSubtitle => 'Скачивать обложку в макс. разрешении'; + String get optionsMaxQualityCoverSubtitle => + 'Скачивать обложку в макс. разрешении'; @override String get optionsConcurrentDownloads => 'Одновременные загрузки'; @@ -274,13 +290,15 @@ class AppLocalizationsRu extends AppLocalizations { } @override - String get optionsConcurrentWarning => 'Параллельные загрузки могут вызвать ограничение скорости'; + String get optionsConcurrentWarning => + 'Параллельные загрузки могут вызвать ограничение скорости'; @override String get optionsExtensionStore => 'Магазин расширений'; @override - String get optionsExtensionStoreSubtitle => 'Показывать вкладку Магазин в гл. меню'; + String get optionsExtensionStoreSubtitle => + 'Показывать вкладку Магазин в гл. меню'; @override String get optionsCheckUpdates => 'Проверить обновления'; @@ -298,13 +316,15 @@ class AppLocalizationsRu extends AppLocalizations { String get optionsUpdateChannelPreview => 'Предварительные версии'; @override - String get optionsUpdateChannelWarning => 'Предварительная версия может содержать ошибки или неполные функции'; + String get optionsUpdateChannelWarning => + 'Предварительная версия может содержать ошибки или неполные функции'; @override String get optionsClearHistory => 'Очистить историю загрузок'; @override - String get optionsClearHistorySubtitle => 'Удалить все скачанные треки из истории'; + String get optionsClearHistorySubtitle => + 'Удалить все скачанные треки из истории'; @override String get optionsDetailedLogging => 'Подробный лог'; @@ -324,10 +344,12 @@ class AppLocalizationsRu extends AppLocalizations { } @override - String get optionsSpotifyCredentialsRequired => 'Необходимо - нажмите для настройки'; + String get optionsSpotifyCredentialsRequired => + 'Необходимо - нажмите для настройки'; @override - String get optionsSpotifyWarning => 'Spotify требует ваши собственные учетные данные API. Получите их бесплатно на сайте developer.spotify.com'; + String get optionsSpotifyWarning => + 'Spotify требует ваши собственные учетные данные API. Получите их бесплатно на сайте developer.spotify.com'; @override String get extensionsTitle => 'Расширения'; @@ -339,7 +361,8 @@ class AppLocalizationsRu extends AppLocalizations { String get extensionsNone => 'Нет установленных расширений'; @override - String get extensionsNoneSubtitle => 'Установка расширений из вкладки Магазин'; + String get extensionsNoneSubtitle => + 'Установка расширений из вкладки Магазин'; @override String get extensionsEnabled => 'Включено'; @@ -391,7 +414,8 @@ class AppLocalizationsRu extends AppLocalizations { String get aboutOriginalCreator => 'Создатель оригинального SpotiFLAC'; @override - String get aboutLogoArtist => 'Талантливый художник, который создал наш красивый логотип приложения!'; + String get aboutLogoArtist => + 'Талантливый художник, который создал наш красивый логотип приложения!'; @override String get aboutTranslators => 'Переводчики'; @@ -418,7 +442,8 @@ class AppLocalizationsRu extends AppLocalizations { String get aboutFeatureRequest => 'Предложить новую функцию'; @override - String get aboutFeatureRequestSubtitle => 'Предложить новые функции для приложения'; + String get aboutFeatureRequestSubtitle => + 'Предложить новые функции для приложения'; @override String get aboutTelegramChannel => 'Telegram канал'; @@ -451,28 +476,34 @@ class AppLocalizationsRu extends AppLocalizations { String get aboutVersion => 'Версия'; @override - String get aboutBinimumDesc => 'Создатель QQDL & HiFi API. Без этого API загрузки Tidal не существовали бы!'; + String get aboutBinimumDesc => + 'Создатель QQDL & HiFi API. Без этого API загрузки Tidal не существовали бы!'; @override - String get aboutSachinsenalDesc => 'Оригинальный создатель проекта HiFi. Основатель Tidal интеграции!'; + String get aboutSachinsenalDesc => + 'Оригинальный создатель проекта HiFi. Основатель Tidal интеграции!'; @override - String get aboutSjdonadoDesc => 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; + String get aboutSjdonadoDesc => + 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; @override String get aboutDoubleDouble => 'DoubleDouble'; @override - String get aboutDoubleDoubleDesc => 'Удивительный API для загрузок Amazon Music. Спасибо за то, что сделали это бесплатно!'; + String get aboutDoubleDoubleDesc => + 'Удивительный API для загрузок Amazon Music. Спасибо за то, что сделали это бесплатно!'; @override String get aboutDabMusic => 'DAB Music'; @override - String get aboutDabMusicDesc => 'Лучший API для стриминга Qobuz. Без него загрузка файлов в высоком разрешении была бы невозможна!'; + String get aboutDabMusicDesc => + 'Лучший API для стриминга Qobuz. Без него загрузка файлов в высоком разрешении была бы невозможна!'; @override - String get aboutAppDescription => 'Скачайте треки Spotify в Lossless качестве из Tidal, Qobuz и Amazon Music.'; + String get aboutAppDescription => + 'Скачайте треки Spotify в Lossless качестве из Tidal, Qobuz и Amazon Music.'; @override String get albumTitle => 'Альбом'; @@ -581,7 +612,8 @@ class AppLocalizationsRu extends AppLocalizations { String get setupStoragePermission => 'Доступ к хранилищу'; @override - String get setupStoragePermissionSubtitle => 'Необходимо для сохранения загруженных файлов'; + String get setupStoragePermissionSubtitle => + 'Необходимо для сохранения загруженных файлов'; @override String get setupStoragePermissionGranted => 'Разрешение предоставлено'; @@ -608,16 +640,19 @@ class AppLocalizationsRu extends AppLocalizations { String get setupStorageAccessRequired => 'Требуется доступ к хранилищу'; @override - String get setupStorageAccessMessage => 'SpotiFLAC требуется разрешение \"Доступ ко всем файлам\" для сохранения музыкальных файлов в выбранную папку.'; + String get setupStorageAccessMessage => + 'SpotiFLAC требуется разрешение \"Доступ ко всем файлам\" для сохранения музыкальных файлов в выбранную папку.'; @override - String get setupStorageAccessMessageAndroid11 => 'Для Android 11+ требуется разрешение \"Доступ ко всем файлам\" для сохранения файлов в выбранную вами папку загрузки.'; + String get setupStorageAccessMessageAndroid11 => + 'Для Android 11+ требуется разрешение \"Доступ ко всем файлам\" для сохранения файлов в выбранную вами папку загрузки.'; @override String get setupOpenSettings => 'Открыть настройки'; @override - String get setupPermissionDeniedMessage => 'В разрешении отказано. Пожалуйста, предоставьте все разрешения для продолжения.'; + String get setupPermissionDeniedMessage => + 'В разрешении отказано. Пожалуйста, предоставьте все разрешения для продолжения.'; @override String setupPermissionRequired(String permissionType) { @@ -636,7 +671,8 @@ class AppLocalizationsRu extends AppLocalizations { String get setupUseDefaultFolder => 'Использовать папку по умолчанию?'; @override - String get setupNoFolderSelected => 'Папка не выбрана. Хотите использовать папку Музыка по умолчанию?'; + String get setupNoFolderSelected => + 'Папка не выбрана. Хотите использовать папку Музыка по умолчанию?'; @override String get setupUseDefault => 'По умолчанию'; @@ -645,25 +681,30 @@ class AppLocalizationsRu extends AppLocalizations { String get setupDownloadLocationTitle => 'Папка для скачивания'; @override - String get setupDownloadLocationIosMessage => 'В iOS загрузки сохраняются в папке Документы приложения. Вы можете получить к ним доступ через приложение Файлы.'; + String get setupDownloadLocationIosMessage => + 'В iOS загрузки сохраняются в папке Документы приложения. Вы можете получить к ним доступ через приложение Файлы.'; @override String get setupAppDocumentsFolder => 'Папка Документы приложения'; @override - String get setupAppDocumentsFolderSubtitle => 'Рекомендуется - доступ через Файлы'; + String get setupAppDocumentsFolderSubtitle => + 'Рекомендуется - доступ через Файлы'; @override String get setupChooseFromFiles => 'Выбрать из файлов'; @override - String get setupChooseFromFilesSubtitle => 'Выберите iCloud или другое местоположение'; + String get setupChooseFromFilesSubtitle => + 'Выберите iCloud или другое местоположение'; @override - String get setupIosEmptyFolderWarning => 'Ограничение iOS: пустые папки не могут быть выбраны. Выберите папку, содержащую хотя бы один файл.'; + String get setupIosEmptyFolderWarning => + 'Ограничение iOS: пустые папки не могут быть выбраны. Выберите папку, содержащую хотя бы один файл.'; @override - String get setupIcloudNotSupported => 'iCloud Drive is not supported. Please use the app Documents folder.'; + String get setupIcloudNotSupported => + 'iCloud Drive is not supported. Please use the app Documents folder.'; @override String get setupDownloadInFlac => 'Скачать Spotify треки во FLAC'; @@ -690,16 +731,19 @@ class AppLocalizationsRu extends AppLocalizations { String get setupStorageRequired => 'Требуется доступ к хранилищу'; @override - String get setupStorageDescription => 'SpotiFLAC требуется разрешение на хранение для сохранения скачанных файлов.'; + String get setupStorageDescription => + 'SpotiFLAC требуется разрешение на хранение для сохранения скачанных файлов.'; @override - String get setupNotificationGranted => 'Разрешение на уведомление предоставлено!'; + String get setupNotificationGranted => + 'Разрешение на уведомление предоставлено!'; @override String get setupNotificationEnable => 'Включить уведомления'; @override - String get setupNotificationDescription => 'Получайте уведомления о завершении загрузки или о необходимости привлечения внимания.'; + String get setupNotificationDescription => + 'Получайте уведомления о завершении загрузки или о необходимости привлечения внимания.'; @override String get setupFolderSelected => 'Папка для загрузки выбрана!'; @@ -708,7 +752,8 @@ class AppLocalizationsRu extends AppLocalizations { String get setupFolderChoose => 'Выбрать папку для скачивания'; @override - String get setupFolderDescription => 'Выберите папку, в которой будет сохраняться скачанная музыка.'; + String get setupFolderDescription => + 'Выберите папку, в которой будет сохраняться скачанная музыка.'; @override String get setupChangeFolder => 'Сменить папку'; @@ -720,7 +765,8 @@ class AppLocalizationsRu extends AppLocalizations { String get setupSpotifyApiOptional => 'Spotify API (необязательно)'; @override - String get setupSpotifyApiDescription => 'Добавьте свои учётные данные Spotify для улучшения результатов поиска и доступа к эксклюзивному контенту Spotify.'; + String get setupSpotifyApiDescription => + 'Добавьте свои учётные данные Spotify для улучшения результатов поиска и доступа к эксклюзивному контенту Spotify.'; @override String get setupUseSpotifyApi => 'Использовать Spotify API'; @@ -738,19 +784,23 @@ class AppLocalizationsRu extends AppLocalizations { String get setupEnterClientSecret => 'Введите Spotify Client Secret'; @override - String get setupGetFreeCredentials => 'Получите бесплатный API учётной записи на панели разработчика Spotify.'; + String get setupGetFreeCredentials => + 'Получите бесплатный API учётной записи на панели разработчика Spotify.'; @override String get setupEnableNotifications => 'Включить уведомления'; @override - String get setupProceedToNextStep => 'Теперь вы можете перейти к следующему шагу.'; + String get setupProceedToNextStep => + 'Теперь вы можете перейти к следующему шагу.'; @override - String get setupNotificationProgressDescription => 'Вы будете получать уведомления о ходе загрузки.'; + String get setupNotificationProgressDescription => + 'Вы будете получать уведомления о ходе загрузки.'; @override - String get setupNotificationBackgroundDescription => 'Получайте уведомления о ходе и завершении загрузки. Это поможет вам отслеживать загрузки, когда приложение находится в фоновом режиме.'; + String get setupNotificationBackgroundDescription => + 'Получайте уведомления о ходе и завершении загрузки. Это поможет вам отслеживать загрузки, когда приложение находится в фоновом режиме.'; @override String get setupSkipForNow => 'Пропустить'; @@ -768,10 +818,12 @@ class AppLocalizationsRu extends AppLocalizations { String get setupSkipAndStart => 'Пропустить и начать'; @override - String get setupAllowAccessToManageFiles => 'Пожалуйста, включите \"Разрешить доступ для управления всеми файлами\" на следующем экране.'; + String get setupAllowAccessToManageFiles => + 'Пожалуйста, включите \"Разрешить доступ для управления всеми файлами\" на следующем экране.'; @override - String get setupGetCredentialsFromSpotify => 'Получить учётные данные с developer.spotify.com'; + String get setupGetCredentialsFromSpotify => + 'Получить учётные данные с developer.spotify.com'; @override String get dialogCancel => 'Отмена'; @@ -822,7 +874,8 @@ class AppLocalizationsRu extends AppLocalizations { String get dialogDiscardChanges => 'Отменить изменения?'; @override - String get dialogUnsavedChanges => 'Есть несохраненные изменения. Отменить их?'; + String get dialogUnsavedChanges => + 'Есть несохраненные изменения. Отменить их?'; @override String get dialogDownloadFailed => 'Ошибка скачивания'; @@ -840,7 +893,8 @@ class AppLocalizationsRu extends AppLocalizations { String get dialogClearAll => 'Очистить всё'; @override - String get dialogClearAllDownloads => 'Вы уверены, что хотите очистить все загрузки?'; + String get dialogClearAllDownloads => + 'Вы уверены, что хотите очистить все загрузки?'; @override String get dialogRemoveFromDevice => 'Удалить с устройства?'; @@ -849,7 +903,8 @@ class AppLocalizationsRu extends AppLocalizations { String get dialogRemoveExtension => 'Удалить расширение'; @override - String get dialogRemoveExtensionMessage => 'Вы уверены, что хотите удалить это расширение? Это действие не может быть отменено.'; + String get dialogRemoveExtensionMessage => + 'Вы уверены, что хотите удалить это расширение? Это действие не может быть отменено.'; @override String get dialogUninstallExtension => 'Удалить расширение?'; @@ -863,7 +918,8 @@ class AppLocalizationsRu extends AppLocalizations { String get dialogClearHistoryTitle => 'Очистить историю'; @override - String get dialogClearHistoryMessage => 'Вы уверены, что хотите удалить всю историю загрузок? Это действие необратимо.'; + String get dialogClearHistoryMessage => + 'Вы уверены, что хотите удалить всю историю загрузок? Это действие необратимо.'; @override String get dialogDeleteSelectedTitle => 'Удалить выбранные'; @@ -956,13 +1012,15 @@ class AppLocalizationsRu extends AppLocalizations { String get snackbarFileNotFound => 'Файл не найден'; @override - String get snackbarSelectExtFile => 'Пожалуйста, выберите .spotiflac-ext-файл'; + String get snackbarSelectExtFile => + 'Пожалуйста, выберите .spotiflac-ext-файл'; @override String get snackbarProviderPrioritySaved => 'Приоритет провайдера сохранён'; @override - String get snackbarMetadataProviderSaved => 'Приоритет провайдера метаданных сохранён'; + String get snackbarMetadataProviderSaved => + 'Приоритет провайдера метаданных сохранён'; @override String snackbarExtensionInstalled(String extensionName) { @@ -984,7 +1042,8 @@ class AppLocalizationsRu extends AppLocalizations { String get errorRateLimited => 'Слишком много запросов'; @override - String get errorRateLimitedMessage => 'Слишком много запросов. Пожалуйста, подождите минуту перед повторным поиском.'; + String get errorRateLimitedMessage => + 'Слишком много запросов. Пожалуйста, подождите минуту перед повторным поиском.'; @override String errorFailedToLoad(String item) { @@ -1153,19 +1212,23 @@ class AppLocalizationsRu extends AppLocalizations { String get folderOrganizationByArtistAlbum => 'Исполнитель/Альбом'; @override - String get folderOrganizationDescription => 'Сортировать скачанные файлы по папкам'; + String get folderOrganizationDescription => + 'Сортировать скачанные файлы по папкам'; @override String get folderOrganizationNoneSubtitle => 'Все файлы в папке загрузок'; @override - String get folderOrganizationByArtistSubtitle => 'Отдельная папка для каждого исполнителя'; + String get folderOrganizationByArtistSubtitle => + 'Отдельная папка для каждого исполнителя'; @override - String get folderOrganizationByAlbumSubtitle => 'Отдельная папка для каждого альбома'; + String get folderOrganizationByAlbumSubtitle => + 'Отдельная папка для каждого альбома'; @override - String get folderOrganizationByArtistAlbumSubtitle => 'Вложенные папки для исполнителей и альбомов'; + String get folderOrganizationByArtistAlbumSubtitle => + 'Вложенные папки для исполнителей и альбомов'; @override String get updateAvailable => 'Доступно обновление'; @@ -1224,10 +1287,12 @@ class AppLocalizationsRu extends AppLocalizations { String get providerPriorityTitle => 'Приоритет провайдера'; @override - String get providerPriorityDescription => 'Перетаскивайте, чтобы изменить порядок провайдеров загрузки. Приложение будет пробовать провайдеров сверху вниз при загрузке треков.'; + String get providerPriorityDescription => + 'Перетаскивайте, чтобы изменить порядок провайдеров загрузки. Приложение будет пробовать провайдеров сверху вниз при загрузке треков.'; @override - String get providerPriorityInfo => 'Если трек не доступен у первого провайдера, приложение автоматически попробует следующий.'; + String get providerPriorityInfo => + 'Если трек не доступен у первого провайдера, приложение автоматически попробует следующий.'; @override String get providerBuiltIn => 'Встроенные'; @@ -1239,16 +1304,19 @@ class AppLocalizationsRu extends AppLocalizations { String get metadataProviderPriority => 'Приоритет провайдера метаданных'; @override - String get metadataProviderPrioritySubtitle => 'Порядок, используемый при получении метаданных'; + String get metadataProviderPrioritySubtitle => + 'Порядок, используемый при получении метаданных'; @override String get metadataProviderPriorityTitle => 'Приоритет метаданных'; @override - String get metadataProviderPriorityDescription => 'Перетаскивайте, чтобы изменить порядок провайдеров метаданных. Приложение будет пробовать провайдеров сверху вниз при поиске треков и извлечении метаданных.'; + String get metadataProviderPriorityDescription => + 'Перетаскивайте, чтобы изменить порядок провайдеров метаданных. Приложение будет пробовать провайдеров сверху вниз при поиске треков и извлечении метаданных.'; @override - String get metadataProviderPriorityInfo => 'Deezer не имеет ограничений по скорости и рекомендуется в качестве основного. Spotify может ограничивать скорость после большого количества запросов.'; + String get metadataProviderPriorityInfo => + 'Deezer не имеет ограничений по скорости и рекомендуется в качестве основного. Spotify может ограничивать скорость после большого количества запросов.'; @override String get metadataNoRateLimits => 'Без ограничений по скорости'; @@ -1314,22 +1382,26 @@ class AppLocalizationsRu extends AppLocalizations { String get logNoLogsYet => 'Логов нет'; @override - String get logNoLogsYetSubtitle => 'Логи появятся здесь по мере использования приложения'; + String get logNoLogsYetSubtitle => + 'Логи появятся здесь по мере использования приложения'; @override String get logIssueSummary => 'Краткое описание проблемы'; @override - String get logIspBlockingDescription => 'Ваш провайдер может блокировать доступ к сервисам скачивания'; + String get logIspBlockingDescription => + 'Ваш провайдер может блокировать доступ к сервисам скачивания'; @override - String get logIspBlockingSuggestion => 'Попробуйте использовать VPN или измените DNS на 1.1.1.1 или 8.8.8.8'; + String get logIspBlockingSuggestion => + 'Попробуйте использовать VPN или измените DNS на 1.1.1.1 или 8.8.8.8'; @override String get logRateLimitedDescription => 'Слишком много запросов к сервису'; @override - String get logRateLimitedSuggestion => 'Подождите несколько минут, прежде чем повторить попытку'; + String get logRateLimitedSuggestion => + 'Подождите несколько минут, прежде чем повторить попытку'; @override String get logNetworkErrorDescription => 'Обнаружены проблемы с подключением'; @@ -1338,10 +1410,12 @@ class AppLocalizationsRu extends AppLocalizations { String get logNetworkErrorSuggestion => 'Проверьте подключение к Интернету'; @override - String get logTrackNotFoundDescription => 'Некоторые треки не найдены в сервисах загрузки'; + String get logTrackNotFoundDescription => + 'Некоторые треки не найдены в сервисах загрузки'; @override - String get logTrackNotFoundSuggestion => 'Трек может быть недоступен в lossless формате'; + String get logTrackNotFoundSuggestion => + 'Трек может быть недоступен в lossless формате'; @override String logTotalErrors(int count) { @@ -1367,7 +1441,8 @@ class AppLocalizationsRu extends AppLocalizations { String get credentialsTitle => 'Учётные данные Spotify'; @override - String get credentialsDescription => 'Введите свой Client ID и Secret, чтобы использовать собственные квоты в Spotify.'; + String get credentialsDescription => + 'Введите свой Client ID и Secret, чтобы использовать собственные квоты в Spotify.'; @override String get credentialsClientId => 'Client ID'; @@ -1421,7 +1496,8 @@ class AppLocalizationsRu extends AppLocalizations { String get lyricsMode => 'Режим текстов песен'; @override - String get lyricsModeDescription => 'Выберите как сохранить тексты песен при скачивании'; + String get lyricsModeDescription => + 'Выберите как сохранить тексты песен при скачивании'; @override String get lyricsModeEmbed => 'Вставить в файл'; @@ -1433,7 +1509,8 @@ class AppLocalizationsRu extends AppLocalizations { String get lyricsModeExternal => 'Внешний файл .lrc'; @override - String get lyricsModeExternalSubtitle => 'Отдельный файл .lrc для плееров, таких, как Samsung Music'; + String get lyricsModeExternalSubtitle => + 'Отдельный файл .lrc для плееров, таких, как Samsung Music'; @override String get lyricsModeBoth => 'Оба варианта'; @@ -1463,10 +1540,12 @@ class AppLocalizationsRu extends AppLocalizations { String get settingsAppearanceSubtitle => 'Тема, цвета, дисплей'; @override - String get settingsDownloadSubtitle => 'Сервисы, качество, формат имени файла'; + String get settingsDownloadSubtitle => + 'Сервисы, качество, формат имени файла'; @override - String get settingsOptionsSubtitle => 'Резерв. сервер, тексты песен, обложки, обновления'; + String get settingsOptionsSubtitle => + 'Резерв. сервер, тексты песен, обложки, обновления'; @override String get settingsExtensionsSubtitle => 'Управление провайдерами скачивания'; @@ -1571,10 +1650,12 @@ class AppLocalizationsRu extends AppLocalizations { String get trackCopyLyrics => 'Копировать текст'; @override - String get trackLyricsNotAvailable => 'Текст песни недоступен для этого трека'; + String get trackLyricsNotAvailable => + 'Текст песни недоступен для этого трека'; @override - String get trackLyricsTimeout => 'Время ожидания запроса истекло. Повторите попытку позже.'; + String get trackLyricsTimeout => + 'Время ожидания запроса истекло. Повторите попытку позже.'; @override String get trackLyricsLoadFailed => 'Не удалось загрузить текст песни'; @@ -1595,7 +1676,8 @@ class AppLocalizationsRu extends AppLocalizations { String get trackDeleteConfirmTitle => 'Удалить с устройства?'; @override - String get trackDeleteConfirmMessage => 'Это приведет к окончательному удалению загруженного файла и его удалению из истории.'; + String get trackDeleteConfirmMessage => + 'Это приведет к окончательному удалению загруженного файла и его удалению из истории.'; @override String trackCannotOpen(String message) { @@ -1669,7 +1751,8 @@ class AppLocalizationsRu extends AppLocalizations { String get extensionDefaultProvider => 'По умолчанию (Deezer/Spotify)'; @override - String get extensionDefaultProviderSubtitle => 'Использовать встроенный поиск'; + String get extensionDefaultProviderSubtitle => + 'Использовать встроенный поиск'; @override String get extensionAuthor => 'Автор'; @@ -1717,7 +1800,8 @@ class AppLocalizationsRu extends AppLocalizations { String get extensionMinAppVersion => 'Мин. версия приложения'; @override - String get extensionCustomTrackMatching => 'Соответствие пользовательских треков'; + String get extensionCustomTrackMatching => + 'Соответствие пользовательских треков'; @override String get extensionPostProcessing => 'Постобработка'; @@ -1747,13 +1831,15 @@ class AppLocalizationsRu extends AppLocalizations { String get extensionsNoExtensions => 'Нет установленных расширений'; @override - String get extensionsNoExtensionsSubtitle => 'Установите .spotiflac-ext файлы для добавления новых провайдеров'; + String get extensionsNoExtensionsSubtitle => + 'Установите .spotiflac-ext файлы для добавления новых провайдеров'; @override String get extensionsInstallButton => 'Установить расширение'; @override - String get extensionsInfoTip => 'Расширения могут добавлять новые метаданные и провайдеров загрузки. Устанавливайте только расширения из надежных источников.'; + String get extensionsInfoTip => + 'Расширения могут добавлять новые метаданные и провайдеров загрузки. Устанавливайте только расширения из надежных источников.'; @override String get extensionsInstalledSuccess => 'Расширение успешно установлено'; @@ -1762,28 +1848,34 @@ class AppLocalizationsRu extends AppLocalizations { String get extensionsDownloadPriority => 'Приоритет скачивания'; @override - String get extensionsDownloadPrioritySubtitle => 'Установка порядок сервисов скачивания'; + String get extensionsDownloadPrioritySubtitle => + 'Установка порядок сервисов скачивания'; @override - String get extensionsNoDownloadProvider => 'Нет расширений с провайдером загрузки'; + String get extensionsNoDownloadProvider => + 'Нет расширений с провайдером загрузки'; @override String get extensionsMetadataPriority => 'Приоритет метаданных'; @override - String get extensionsMetadataPrioritySubtitle => 'Установка порядка поиска и источника метаданных'; + String get extensionsMetadataPrioritySubtitle => + 'Установка порядка поиска и источника метаданных'; @override - String get extensionsNoMetadataProvider => 'Нет расширений с провайдером метаданных'; + String get extensionsNoMetadataProvider => + 'Нет расширений с провайдером метаданных'; @override String get extensionsSearchProvider => 'Провайдер поиска'; @override - String get extensionsNoCustomSearch => 'Нет расширений с пользовательским поиском'; + String get extensionsNoCustomSearch => + 'Нет расширений с пользовательским поиском'; @override - String get extensionsSearchProviderDescription => 'Выберите, какой сервис использовать для поиска треков'; + String get extensionsSearchProviderDescription => + 'Выберите, какой сервис использовать для поиска треков'; @override String get extensionsCustomSearch => 'Пользовательский поиск'; @@ -1825,7 +1917,8 @@ class AppLocalizationsRu extends AppLocalizations { String get enableLossyOptionSubtitleOn => 'Lossy quality option is available'; @override - String get enableLossyOptionSubtitleOff => 'Downloads FLAC then converts to lossy format'; + String get enableLossyOptionSubtitleOff => + 'Downloads FLAC then converts to lossy format'; @override String get lossyFormat => 'Lossy Format'; @@ -1837,10 +1930,12 @@ class AppLocalizationsRu extends AppLocalizations { String get lossyFormatMp3Subtitle => '320kbps, best compatibility'; @override - String get lossyFormatOpusSubtitle => '128kbps, better quality at smaller size'; + String get lossyFormatOpusSubtitle => + '128kbps, better quality at smaller size'; @override - String get qualityNote => 'Фактическое качество зависит от доступности треков в сервисе'; + String get qualityNote => + 'Фактическое качество зависит от доступности треков в сервисе'; @override String get downloadAskBeforeDownload => 'Спрашивать перед скачиванием'; @@ -1876,7 +1971,8 @@ class AppLocalizationsRu extends AppLocalizations { String get folderNone => 'Отсутствует'; @override - String get folderNoneSubtitle => 'Сохранить все файлы непосредственно в папку загрузки'; + String get folderNoneSubtitle => + 'Сохранить все файлы непосредственно в папку загрузки'; @override String get folderArtist => 'Исполнитель'; @@ -1930,13 +2026,15 @@ class AppLocalizationsRu extends AppLocalizations { String get queueClearAll => 'Очистить всё'; @override - String get queueClearAllMessage => 'Вы уверены, что хотите очистить все загрузки?'; + String get queueClearAllMessage => + 'Вы уверены, что хотите очистить все загрузки?'; @override String get queueExportFailed => 'Export'; @override - String get queueExportFailedSuccess => 'Failed downloads exported to TXT file'; + String get queueExportFailedSuccess => + 'Failed downloads exported to TXT file'; @override String get queueExportFailedClear => 'Clear Failed'; @@ -1948,7 +2046,8 @@ class AppLocalizationsRu extends AppLocalizations { String get settingsAutoExportFailed => 'Auto-export failed downloads'; @override - String get settingsAutoExportFailedSubtitle => 'Save failed downloads to TXT file automatically'; + String get settingsAutoExportFailedSubtitle => + 'Save failed downloads to TXT file automatically'; @override String get settingsDownloadNetwork => 'Download Network'; @@ -1960,7 +2059,8 @@ class AppLocalizationsRu extends AppLocalizations { String get settingsDownloadNetworkWifiOnly => 'WiFi Only'; @override - String get settingsDownloadNetworkSubtitle => 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; + String get settingsDownloadNetworkSubtitle => + 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; @override String get settingsCloudSave => 'Cloud Save'; @@ -1978,7 +2078,8 @@ class AppLocalizationsRu extends AppLocalizations { String get cloudSettingsEnable => 'Enable Cloud Upload'; @override - String get cloudSettingsEnableSubtitle => 'Automatically upload files after download completes'; + String get cloudSettingsEnableSubtitle => + 'Automatically upload files after download completes'; @override String get cloudSettingsSectionProvider => 'Cloud Provider'; @@ -1987,7 +2088,8 @@ class AppLocalizationsRu extends AppLocalizations { String get cloudSettingsProvider => 'Provider'; @override - String get cloudSettingsProviderDescription => 'Select where to upload your downloaded files'; + String get cloudSettingsProviderDescription => + 'Select where to upload your downloaded files'; @override String get cloudSettingsSectionServer => 'Server Configuration'; @@ -2008,7 +2110,20 @@ class AppLocalizationsRu extends AppLocalizations { String get cloudSettingsTestConnection => 'Test Connection'; @override - String get cloudSettingsInfo => 'Downloaded files will be automatically uploaded to your cloud storage after download completes. Original files are kept on your device.'; + String get cloudSettingsInfo => + 'Downloaded files will be automatically uploaded to your cloud storage after download completes. Original files are kept on your device.'; + + @override + String get cloudSettingsUploadQueue => 'Upload Queue'; + + @override + String get cloudSettingsRetryFailed => 'Retry Failed'; + + @override + String get cloudSettingsClearDone => 'Clear Done'; + + @override + String get cloudSettingsRecentUploads => 'Recent Uploads'; @override String get queueEmpty => 'Нет загрузок в очереди'; @@ -2038,13 +2153,15 @@ class AppLocalizationsRu extends AppLocalizations { String get albumFolderArtistAlbum => 'Исполнитель / Альбом'; @override - String get albumFolderArtistAlbumSubtitle => 'Альбомы/Исполнитель/Название Альбома/'; + String get albumFolderArtistAlbumSubtitle => + 'Альбомы/Исполнитель/Название Альбома/'; @override String get albumFolderArtistYearAlbum => 'Исполнитель / [Год] Альбом'; @override - String get albumFolderArtistYearAlbumSubtitle => 'Альбомы/Исполнитель/[2005] Название Альбома/'; + String get albumFolderArtistYearAlbumSubtitle => + 'Альбомы/Исполнитель/[2005] Название Альбома/'; @override String get albumFolderAlbumOnly => 'Только альбом'; @@ -2056,13 +2173,15 @@ class AppLocalizationsRu extends AppLocalizations { String get albumFolderYearAlbum => '[Год] Альбом'; @override - String get albumFolderYearAlbumSubtitle => 'Альбомы/[2005] Название Альбома /'; + String get albumFolderYearAlbumSubtitle => + 'Альбомы/[2005] Название Альбома /'; @override String get albumFolderArtistAlbumSingles => 'Исполнитель / Альбом + Синглы'; @override - String get albumFolderArtistAlbumSinglesSubtitle => 'Исполнитель/Альбом и Исполнитель/Сингл/'; + String get albumFolderArtistAlbumSinglesSubtitle => + 'Исполнитель/Альбом и Исполнитель/Сингл/'; @override String get downloadedAlbumDeleteSelected => 'Удалить выбранные'; @@ -2176,7 +2295,8 @@ class AppLocalizationsRu extends AppLocalizations { String get discographySelectAlbums => 'Выбрать альбомы...'; @override - String get discographySelectAlbumsSubtitle => 'Выберите конкретные альбомы или синглы'; + String get discographySelectAlbumsSubtitle => + 'Выберите конкретные альбомы или синглы'; @override String get discographyFetchingTracks => 'Получение треков...'; @@ -2208,7 +2328,8 @@ class AppLocalizationsRu extends AppLocalizations { String get discographyNoAlbums => 'Нет доступных альбомов'; @override - String get discographyFailedToFetch => 'Не удалось получить некоторые альбомы'; + String get discographyFailedToFetch => + 'Не удалось получить некоторые альбомы'; @override String get sectionStorageAccess => 'Storage Access'; @@ -2223,11 +2344,14 @@ class AppLocalizationsRu extends AppLocalizations { String get allFilesAccessDisabledSubtitle => 'Limited to media folders only'; @override - String get allFilesAccessDescription => 'Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.'; + String get allFilesAccessDescription => + 'Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.'; @override - String get allFilesAccessDeniedMessage => 'Permission was denied. Please enable \'All files access\' manually in system settings.'; + String get allFilesAccessDeniedMessage => + 'Permission was denied. Please enable \'All files access\' manually in system settings.'; @override - String get allFilesAccessDisabledMessage => 'All Files Access disabled. The app will use limited storage access.'; + String get allFilesAccessDisabledMessage => + 'All Files Access disabled. The app will use limited storage access.'; } diff --git a/lib/l10n/app_localizations_tr.dart b/lib/l10n/app_localizations_tr.dart index eb9d5ae8..85a285a5 100644 --- a/lib/l10n/app_localizations_tr.dart +++ b/lib/l10n/app_localizations_tr.dart @@ -12,7 +12,8 @@ class AppLocalizationsTr extends AppLocalizations { String get appName => 'SpotiFLAC'; @override - String get appDescription => 'Spotify şarkılarını Tidal, Qobuz ve Amazon Music\'den yüksek kalitede indir.'; + String get appDescription => + 'Spotify şarkılarını Tidal, Qobuz ve Amazon Music\'den yüksek kalitede indir.'; @override String get navHome => 'Ara'; @@ -41,7 +42,8 @@ class AppLocalizationsTr extends AppLocalizations { String get homeSubtitle => 'Spotify linki yapıştır veya isimle arat'; @override - String get homeSupports => 'Desteklenen linkler: Şarkı, Albüm, Çalma Listesi, Sanatçı linkleri'; + String get homeSupports => + 'Desteklenen linkler: Şarkı, Albüm, Çalma Listesi, Sanatçı linkleri'; @override String get homeRecent => 'En son'; @@ -92,13 +94,15 @@ class AppLocalizationsTr extends AppLocalizations { String get historyNoDownloads => 'İndirme geçmişi yok'; @override - String get historyNoDownloadsSubtitle => 'İndirilen şarkılar burada gözükecek'; + String get historyNoDownloadsSubtitle => + 'İndirilen şarkılar burada gözükecek'; @override String get historyNoAlbums => 'İndirilen albüm yok'; @override - String get historyNoAlbumsSubtitle => 'Albümleri burada görmek için bir albümden birden fazla şarkı indir'; + String get historyNoAlbumsSubtitle => + 'Albümleri burada görmek için bir albümden birden fazla şarkı indir'; @override String get historyNoSingles => 'Single indirilmemiş'; @@ -134,7 +138,8 @@ class AppLocalizationsTr extends AppLocalizations { String get downloadLocation => 'İndirme Konumu'; @override - String get downloadLocationSubtitle => 'Dosyaları nereye kaydedeceğinizi seçin'; + String get downloadLocationSubtitle => + 'Dosyaları nereye kaydedeceğinizi seçin'; @override String get downloadLocationDefault => 'Varsayılan dizin'; @@ -143,7 +148,8 @@ class AppLocalizationsTr extends AppLocalizations { String get downloadDefaultService => 'Varsayılan Hizmet'; @override - String get downloadDefaultServiceSubtitle => 'İndirmeler için kullanılan hizmet'; + String get downloadDefaultServiceSubtitle => + 'İndirmeler için kullanılan hizmet'; @override String get downloadDefaultQuality => 'Varsayılan Kalite'; @@ -152,7 +158,8 @@ class AppLocalizationsTr extends AppLocalizations { String get downloadAskQuality => 'İndirmeden Önce Kaliteyi Sor'; @override - String get downloadAskQualitySubtitle => 'Her indirmeden önce kalite seçim ekranını göster'; + String get downloadAskQualitySubtitle => + 'Her indirmeden önce kalite seçim ekranını göster'; @override String get downloadFilenameFormat => 'Dosya adı formatı'; @@ -164,7 +171,8 @@ class AppLocalizationsTr extends AppLocalizations { String get downloadSeparateSingles => 'Single\'ları Ayır'; @override - String get downloadSeparateSinglesSubtitle => 'Single şarkıları ayrı dosyaya koy'; + String get downloadSeparateSinglesSubtitle => + 'Single şarkıları ayrı dosyaya koy'; @override String get qualityBest => 'Mevcut en iyi'; @@ -197,7 +205,8 @@ class AppLocalizationsTr extends AppLocalizations { String get appearanceDynamicColor => 'Dinamik Renk'; @override - String get appearanceDynamicColorSubtitle => 'Duvar kağıdının renklerini kullan'; + String get appearanceDynamicColorSubtitle => + 'Duvar kağıdının renklerini kullan'; @override String get appearanceAccentColor => 'Vurgu Rengi'; @@ -221,7 +230,8 @@ class AppLocalizationsTr extends AppLocalizations { String get optionsPrimaryProvider => 'Ana Kaynek'; @override - String get optionsPrimaryProviderSubtitle => 'Şarkı ismi aratılırken kullanılan kaynak.'; + String get optionsPrimaryProviderSubtitle => + 'Şarkı ismi aratılırken kullanılan kaynak.'; @override String optionsUsingExtension(String extensionName) { @@ -229,13 +239,15 @@ class AppLocalizationsTr extends AppLocalizations { } @override - String get optionsSwitchBack => 'Dahili kaynaklara dönmek için Deezer veya Spotify\'a tıkla'; + String get optionsSwitchBack => + 'Dahili kaynaklara dönmek için Deezer veya Spotify\'a tıkla'; @override String get optionsAutoFallback => 'Diğerlerini dene'; @override - String get optionsAutoFallbackSubtitle => 'İndirme başarısız olursa diğer hizmetleri dene'; + String get optionsAutoFallbackSubtitle => + 'İndirme başarısız olursa diğer hizmetleri dene'; @override String get optionsUseExtensionProviders => 'Eklenti sağlayıcılarını kullan'; @@ -244,19 +256,22 @@ class AppLocalizationsTr extends AppLocalizations { String get optionsUseExtensionProvidersOn => 'Eklentiler ilk denenecek'; @override - String get optionsUseExtensionProvidersOff => 'Sadece dahili sağlayıcıları kullan'; + String get optionsUseExtensionProvidersOff => + 'Sadece dahili sağlayıcıları kullan'; @override String get optionsEmbedLyrics => 'Şarkı Sözlerini Göm'; @override - String get optionsEmbedLyricsSubtitle => 'Senkronize şarkı sözlerini FLAC dosyalarına göm'; + String get optionsEmbedLyricsSubtitle => + 'Senkronize şarkı sözlerini FLAC dosyalarına göm'; @override String get optionsMaxQualityCover => 'En Yüksek Kapak Kalitesi'; @override - String get optionsMaxQualityCoverSubtitle => 'En yüksek kalitedeki albüm kapaklarını indir'; + String get optionsMaxQualityCoverSubtitle => + 'En yüksek kalitedeki albüm kapaklarını indir'; @override String get optionsConcurrentDownloads => 'Eş Zamanlı İndirmeler'; @@ -270,7 +285,8 @@ class AppLocalizationsTr extends AppLocalizations { } @override - String get optionsConcurrentWarning => 'Aynı anda birden fazla indirme sınırlamaya takılabilir'; + String get optionsConcurrentWarning => + 'Aynı anda birden fazla indirme sınırlamaya takılabilir'; @override String get optionsExtensionStore => 'Eklenti Dükkanı'; @@ -294,13 +310,15 @@ class AppLocalizationsTr extends AppLocalizations { String get optionsUpdateChannelPreview => 'Önizleme sürümlerini al'; @override - String get optionsUpdateChannelWarning => 'Önizleme sürümleri hatalar veya tamamlanmamış özellikler içerebilir'; + String get optionsUpdateChannelWarning => + 'Önizleme sürümleri hatalar veya tamamlanmamış özellikler içerebilir'; @override String get optionsClearHistory => 'İndirme Geçmişini Temizle'; @override - String get optionsClearHistorySubtitle => 'İndirilen bütün şarkıları geçmişten temizle'; + String get optionsClearHistorySubtitle => + 'İndirilen bütün şarkıları geçmişten temizle'; @override String get optionsDetailedLogging => 'Detaylı Günlükleme'; @@ -320,10 +338,12 @@ class AppLocalizationsTr extends AppLocalizations { } @override - String get optionsSpotifyCredentialsRequired => 'Zorunlu - değiştirmek için tıkla'; + String get optionsSpotifyCredentialsRequired => + 'Zorunlu - değiştirmek için tıkla'; @override - String get optionsSpotifyWarning => 'Spotify\'ın senin API kimlik bilgilerine ihtiyacı var. Onları developer.spotify.com\'dan alabilirsin'; + String get optionsSpotifyWarning => + 'Spotify\'ın senin API kimlik bilgilerine ihtiyacı var. Onları developer.spotify.com\'dan alabilirsin'; @override String get extensionsTitle => 'Eklentiler'; @@ -387,7 +407,8 @@ class AppLocalizationsTr extends AppLocalizations { String get aboutOriginalCreator => 'Orijinal SpotiFLAC\'ın kurucusu'; @override - String get aboutLogoArtist => 'Uygulama logomuzu yaratmış yetenekli sanatçımız!'; + String get aboutLogoArtist => + 'Uygulama logomuzu yaratmış yetenekli sanatçımız!'; @override String get aboutTranslators => 'Çevirmenler'; @@ -408,13 +429,15 @@ class AppLocalizationsTr extends AppLocalizations { String get aboutReportIssue => 'Sorun bildir'; @override - String get aboutReportIssueSubtitle => 'Karşılaştığın herhangi bir problemi bildir'; + String get aboutReportIssueSubtitle => + 'Karşılaştığın herhangi bir problemi bildir'; @override String get aboutFeatureRequest => 'Özellik isteği'; @override - String get aboutFeatureRequestSubtitle => 'Uygulama için yeni özellikler isteyin'; + String get aboutFeatureRequestSubtitle => + 'Uygulama için yeni özellikler isteyin'; @override String get aboutTelegramChannel => 'Telegram Kanalı'; @@ -447,28 +470,34 @@ class AppLocalizationsTr extends AppLocalizations { String get aboutVersion => 'Versiyon'; @override - String get aboutBinimumDesc => 'QQDL ve HiFi API\'ın kurucusu. Bu API olmadan, Tidal indirmeleri olmazdı!'; + String get aboutBinimumDesc => + 'QQDL ve HiFi API\'ın kurucusu. Bu API olmadan, Tidal indirmeleri olmazdı!'; @override - String get aboutSachinsenalDesc => 'Orijinal HiFi projesi kurucusu. Tidal entegrasyonun temeli!'; + String get aboutSachinsenalDesc => + 'Orijinal HiFi projesi kurucusu. Tidal entegrasyonun temeli!'; @override - String get aboutSjdonadoDesc => 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; + String get aboutSjdonadoDesc => + 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; @override String get aboutDoubleDouble => 'DoubleDouble'; @override - String get aboutDoubleDoubleDesc => 'Amazom Music indirmeleri için harika bir API. Ücretsiz yaptığın için teşekkürler!'; + String get aboutDoubleDoubleDesc => + 'Amazom Music indirmeleri için harika bir API. Ücretsiz yaptığın için teşekkürler!'; @override String get aboutDabMusic => 'DAB Music'; @override - String get aboutDabMusicDesc => 'En iyi Qobuz streaming API\'ı. Yüksek kalite indirmeler bunun sayesinde!'; + String get aboutDabMusicDesc => + 'En iyi Qobuz streaming API\'ı. Yüksek kalite indirmeler bunun sayesinde!'; @override - String get aboutAppDescription => 'Spotify şarkılarını Tidal, Qobuz ve Amazon Music\'den yüksek kalitede indir.'; + String get aboutAppDescription => + 'Spotify şarkılarını Tidal, Qobuz ve Amazon Music\'den yüksek kalitede indir.'; @override String get albumTitle => 'Albüm'; @@ -573,7 +602,8 @@ class AppLocalizationsTr extends AppLocalizations { String get setupStoragePermission => 'Depolama İzni'; @override - String get setupStoragePermissionSubtitle => 'İndirilen dosyaları kaydetmek için gerekli'; + String get setupStoragePermissionSubtitle => + 'İndirilen dosyaları kaydetmek için gerekli'; @override String get setupStoragePermissionGranted => 'İzin verildi'; @@ -600,16 +630,19 @@ class AppLocalizationsTr extends AppLocalizations { String get setupStorageAccessRequired => 'Depolama Erişimi Gerekli'; @override - String get setupStorageAccessMessage => 'SpotiFLAC\'ın şarkıları seçili klasörünüze kaydetmek için \"Bütün dosyalara eriş\" iznine ihtiyacı var.'; + String get setupStorageAccessMessage => + 'SpotiFLAC\'ın şarkıları seçili klasörünüze kaydetmek için \"Bütün dosyalara eriş\" iznine ihtiyacı var.'; @override - String get setupStorageAccessMessageAndroid11 => 'Android 11 ve sonrasında şarkıların seçili klasörünüze kaydedilebilmesi için \"Bütün dosyalara eriş\" iznine ihtiyaç var.'; + String get setupStorageAccessMessageAndroid11 => + 'Android 11 ve sonrasında şarkıların seçili klasörünüze kaydedilebilmesi için \"Bütün dosyalara eriş\" iznine ihtiyaç var.'; @override String get setupOpenSettings => 'Ayarları Aç'; @override - String get setupPermissionDeniedMessage => 'İzin reddedildi. Devam etmek için lütfen bütün izinleri verin.'; + String get setupPermissionDeniedMessage => + 'İzin reddedildi. Devam etmek için lütfen bütün izinleri verin.'; @override String setupPermissionRequired(String permissionType) { @@ -628,7 +661,8 @@ class AppLocalizationsTr extends AppLocalizations { String get setupUseDefaultFolder => 'Varsayılan Klasörü Kullan?'; @override - String get setupNoFolderSelected => 'Klasör seçilmedi. Varsayılan \"Music\" klasörünü kullanmak ister misiniz?'; + String get setupNoFolderSelected => + 'Klasör seçilmedi. Varsayılan \"Music\" klasörünü kullanmak ister misiniz?'; @override String get setupUseDefault => 'Varsayılanı Kullan'; @@ -637,13 +671,15 @@ class AppLocalizationsTr extends AppLocalizations { String get setupDownloadLocationTitle => 'İndirme Konumu'; @override - String get setupDownloadLocationIosMessage => 'iOS\'ta indirilenler uygulamanın \"Documents\" dosyasına kaydedilir. Onlara Dosyalar uygulamasından erişebilirsiniz.'; + String get setupDownloadLocationIosMessage => + 'iOS\'ta indirilenler uygulamanın \"Documents\" dosyasına kaydedilir. Onlara Dosyalar uygulamasından erişebilirsiniz.'; @override String get setupAppDocumentsFolder => 'App Documents Folder'; @override - String get setupAppDocumentsFolderSubtitle => 'Tavsiye edilen - Dosyalar uygulamasından erişilebilir'; + String get setupAppDocumentsFolderSubtitle => + 'Tavsiye edilen - Dosyalar uygulamasından erişilebilir'; @override String get setupChooseFromFiles => 'Dosyalar\'dan Seç'; @@ -652,10 +688,12 @@ class AppLocalizationsTr extends AppLocalizations { String get setupChooseFromFilesSubtitle => 'iCloud veya başka konum seç'; @override - String get setupIosEmptyFolderWarning => 'iOS\'un sınırlaması: Boş klasörler seçilemiyor. İçinde en az bir dosya bulunan bir klasör seçin.'; + String get setupIosEmptyFolderWarning => + 'iOS\'un sınırlaması: Boş klasörler seçilemiyor. İçinde en az bir dosya bulunan bir klasör seçin.'; @override - String get setupIcloudNotSupported => 'iCloud Drive is not supported. Please use the app Documents folder.'; + String get setupIcloudNotSupported => + 'iCloud Drive is not supported. Please use the app Documents folder.'; @override String get setupDownloadInFlac => 'Spotify şarkılarını FLAC olarak indirin'; @@ -682,7 +720,8 @@ class AppLocalizationsTr extends AppLocalizations { String get setupStorageRequired => 'Depolama İzni Gerekli'; @override - String get setupStorageDescription => 'SpotiFLAC\'ın şarkılarınızı kaydetmek için depolama iznine ihtiyacı var.'; + String get setupStorageDescription => + 'SpotiFLAC\'ın şarkılarınızı kaydetmek için depolama iznine ihtiyacı var.'; @override String get setupNotificationGranted => 'Bildirim İzni Verildi!'; @@ -691,7 +730,8 @@ class AppLocalizationsTr extends AppLocalizations { String get setupNotificationEnable => 'Bildirimleri Etkinleştir'; @override - String get setupNotificationDescription => 'İndirmeler bittiğinde veya bakılması gereken bir şey olduğunda haberdar olun.'; + String get setupNotificationDescription => + 'İndirmeler bittiğinde veya bakılması gereken bir şey olduğunda haberdar olun.'; @override String get setupFolderSelected => 'İndirilecek Klasör Seçildi!'; @@ -700,7 +740,8 @@ class AppLocalizationsTr extends AppLocalizations { String get setupFolderChoose => 'İndirilecek Klasörü Seç'; @override - String get setupFolderDescription => 'İndirdiğin şarkıların kaydedileceği klasörü seç.'; + String get setupFolderDescription => + 'İndirdiğin şarkıların kaydedileceği klasörü seç.'; @override String get setupChangeFolder => 'Klasörü Değiştir'; @@ -712,7 +753,8 @@ class AppLocalizationsTr extends AppLocalizations { String get setupSpotifyApiOptional => 'Spotify API (İsteğe Bağlı)'; @override - String get setupSpotifyApiDescription => 'Daha iyi arama sonuçları ve Spotify\'a özel içeriklere erişmek için Spotify API kimlik bilgilerini gir.'; + String get setupSpotifyApiDescription => + 'Daha iyi arama sonuçları ve Spotify\'a özel içeriklere erişmek için Spotify API kimlik bilgilerini gir.'; @override String get setupUseSpotifyApi => 'Spotify API\'ı kullan'; @@ -730,7 +772,8 @@ class AppLocalizationsTr extends AppLocalizations { String get setupEnterClientSecret => 'Spotify Client Secret gir'; @override - String get setupGetFreeCredentials => 'Spotify Developer Dashboard\'tan API kimlik bilgilerini ücretsiz alın.'; + String get setupGetFreeCredentials => + 'Spotify Developer Dashboard\'tan API kimlik bilgilerini ücretsiz alın.'; @override String get setupEnableNotifications => 'Bildirimleri Etkinleştir'; @@ -739,10 +782,12 @@ class AppLocalizationsTr extends AppLocalizations { String get setupProceedToNextStep => 'Bir sonraki adıma geçebilirsin.'; @override - String get setupNotificationProgressDescription => 'İndirme ilerlemelerinin bildirimlerini alacaksın.'; + String get setupNotificationProgressDescription => + 'İndirme ilerlemelerinin bildirimlerini alacaksın.'; @override - String get setupNotificationBackgroundDescription => 'İndirmelerin durumu hakkında bildirim al. Bunu açmak uygulama arka plandayken indirmelerinizi takip etmenizi sağlar.'; + String get setupNotificationBackgroundDescription => + 'İndirmelerin durumu hakkında bildirim al. Bunu açmak uygulama arka plandayken indirmelerinizi takip etmenizi sağlar.'; @override String get setupSkipForNow => 'Şimdilik atla'; @@ -760,10 +805,12 @@ class AppLocalizationsTr extends AppLocalizations { String get setupSkipAndStart => 'Kurulumu atla'; @override - String get setupAllowAccessToManageFiles => 'Lütfen bir sonraki ekranda \"Bütün dosyalara eriş\" iznini sağlayın.'; + String get setupAllowAccessToManageFiles => + 'Lütfen bir sonraki ekranda \"Bütün dosyalara eriş\" iznini sağlayın.'; @override - String get setupGetCredentialsFromSpotify => 'Kimlik bilgilerini developer.spotify.com\'dan alın'; + String get setupGetCredentialsFromSpotify => + 'Kimlik bilgilerini developer.spotify.com\'dan alın'; @override String get dialogCancel => 'İptal'; @@ -814,7 +861,8 @@ class AppLocalizationsTr extends AppLocalizations { String get dialogDiscardChanges => 'Değişiklikleri İptal Et?'; @override - String get dialogUnsavedChanges => 'Kaydedilmeyen değişiklikler mevcut. Bu değişiklikleri iptal etmek istiyor musunuz?'; + String get dialogUnsavedChanges => + 'Kaydedilmeyen değişiklikler mevcut. Bu değişiklikleri iptal etmek istiyor musunuz?'; @override String get dialogDownloadFailed => 'İndirme Başarısız'; @@ -832,7 +880,8 @@ class AppLocalizationsTr extends AppLocalizations { String get dialogClearAll => 'Tümünü Temizle'; @override - String get dialogClearAllDownloads => 'Bütün indirmeleri temizlemek istediğinize emin misiniz?'; + String get dialogClearAllDownloads => + 'Bütün indirmeleri temizlemek istediğinize emin misiniz?'; @override String get dialogRemoveFromDevice => 'Cihazdan kaldır?'; @@ -841,7 +890,8 @@ class AppLocalizationsTr extends AppLocalizations { String get dialogRemoveExtension => 'Eklentiyi Kaldır'; @override - String get dialogRemoveExtensionMessage => 'Bu eklentiyi kaldırmak istediğine emin misin? Bu işlem geri alınamaz.'; + String get dialogRemoveExtensionMessage => + 'Bu eklentiyi kaldırmak istediğine emin misin? Bu işlem geri alınamaz.'; @override String get dialogUninstallExtension => 'Eklentiyi Kaldır?'; @@ -855,7 +905,8 @@ class AppLocalizationsTr extends AppLocalizations { String get dialogClearHistoryTitle => 'Geçmişi Temizle'; @override - String get dialogClearHistoryMessage => 'Tüm indirme geçmişini temizlemek istediğinizden emin misiniz? Bu işlem geri alınamaz.'; + String get dialogClearHistoryMessage => + 'Tüm indirme geçmişini temizlemek istediğinizden emin misiniz? Bu işlem geri alınamaz.'; @override String get dialogDeleteSelectedTitle => 'Seçileni Sil'; @@ -950,7 +1001,8 @@ class AppLocalizationsTr extends AppLocalizations { String get snackbarProviderPrioritySaved => 'Sağlayıcı önceliği kaydedildi'; @override - String get snackbarMetadataProviderSaved => 'Metadata sağlayıcı önceliği kaydedildi'; + String get snackbarMetadataProviderSaved => + 'Metadata sağlayıcı önceliği kaydedildi'; @override String snackbarExtensionInstalled(String extensionName) { @@ -972,7 +1024,8 @@ class AppLocalizationsTr extends AppLocalizations { String get errorRateLimited => 'Aşırı istek gönderildi'; @override - String get errorRateLimitedMessage => 'Çok fazla istek. Lütfen arama yapmadan önce biraz bekleyin.'; + String get errorRateLimitedMessage => + 'Çok fazla istek. Lütfen arama yapmadan önce biraz bekleyin.'; @override String errorFailedToLoad(String item) { @@ -1139,19 +1192,23 @@ class AppLocalizationsTr extends AppLocalizations { String get folderOrganizationByArtistAlbum => 'Sanatçı/Albüm'; @override - String get folderOrganizationDescription => 'İndirilenleri klasörlerle organize et'; + String get folderOrganizationDescription => + 'İndirilenleri klasörlerle organize et'; @override - String get folderOrganizationNoneSubtitle => 'Her şey indirilen dosyasına kaydedilecek'; + String get folderOrganizationNoneSubtitle => + 'Her şey indirilen dosyasına kaydedilecek'; @override - String get folderOrganizationByArtistSubtitle => 'Her sanatçı için ayrı klasör'; + String get folderOrganizationByArtistSubtitle => + 'Her sanatçı için ayrı klasör'; @override String get folderOrganizationByAlbumSubtitle => 'Her albüm için ayrı klasör'; @override - String get folderOrganizationByArtistAlbumSubtitle => 'Sanatçı klasörlerinin içinde Albüm klasörleri'; + String get folderOrganizationByArtistAlbumSubtitle => + 'Sanatçı klasörlerinin içinde Albüm klasörleri'; @override String get updateAvailable => 'Güncelleme Mevcut'; @@ -1204,16 +1261,19 @@ class AppLocalizationsTr extends AppLocalizations { String get providerPriority => 'İndirme hizmetleri öncelik sırası'; @override - String get providerPrioritySubtitle => 'İndirme hizmetlerini sıralamak için kaydır'; + String get providerPrioritySubtitle => + 'İndirme hizmetlerini sıralamak için kaydır'; @override String get providerPriorityTitle => 'İndirme hizmetleri öncelik sırası'; @override - String get providerPriorityDescription => 'İndirme hizmetlerini sıralamak için kaydır. Uygulama şarkı indirirken hizmetleri yukarıdan aşağıya doğru deneyecektir.'; + String get providerPriorityDescription => + 'İndirme hizmetlerini sıralamak için kaydır. Uygulama şarkı indirirken hizmetleri yukarıdan aşağıya doğru deneyecektir.'; @override - String get providerPriorityInfo => 'Eğer bir şarkı ilk hizmette mevcut değilse uygulama otomatik olarak bir sonrakini deneyecektir.'; + String get providerPriorityInfo => + 'Eğer bir şarkı ilk hizmette mevcut değilse uygulama otomatik olarak bir sonrakini deneyecektir.'; @override String get providerBuiltIn => 'Dahili'; @@ -1225,16 +1285,19 @@ class AppLocalizationsTr extends AppLocalizations { String get metadataProviderPriority => 'Metadata Sağlayıcı Önceliği'; @override - String get metadataProviderPrioritySubtitle => 'Şarkı metadata\'sı alınırken kullanılan sıra'; + String get metadataProviderPrioritySubtitle => + 'Şarkı metadata\'sı alınırken kullanılan sıra'; @override String get metadataProviderPriorityTitle => 'Metadata Önceliği'; @override - String get metadataProviderPriorityDescription => 'Metadata sağlayıcılarını sıralamak için kaydır. Uygulama şarkı ararken ve metadata alırken sağlayıcıları yukarıdan aşağıya doğru deneyecektir.'; + String get metadataProviderPriorityDescription => + 'Metadata sağlayıcılarını sıralamak için kaydır. Uygulama şarkı ararken ve metadata alırken sağlayıcıları yukarıdan aşağıya doğru deneyecektir.'; @override - String get metadataProviderPriorityInfo => 'Deezer\'ın istek sınırı yok ve birincil olarak önerilir. Spotify çok fazla istekten sonra sınırlama yapabilir.'; + String get metadataProviderPriorityInfo => + 'Deezer\'ın istek sınırı yok ve birincil olarak önerilir. Spotify çok fazla istekten sonra sınırlama yapabilir.'; @override String get metadataNoRateLimits => 'İstek sınırı yok'; @@ -1279,7 +1342,8 @@ class AppLocalizationsTr extends AppLocalizations { String get logClearLogsTitle => 'Kayıtları temizle'; @override - String get logClearLogsMessage => 'Tüm kayıtları temizlemek istediğinize emin misiniz?'; + String get logClearLogsMessage => + 'Tüm kayıtları temizlemek istediğinize emin misiniz?'; @override String get logIspBlocking => 'ISP BLOCKING DETECTED'; @@ -1300,22 +1364,26 @@ class AppLocalizationsTr extends AppLocalizations { String get logNoLogsYet => 'Henüz kayıt yok'; @override - String get logNoLogsYetSubtitle => 'Uygulamayı kullandıkça kayıtlar burada görünecek'; + String get logNoLogsYetSubtitle => + 'Uygulamayı kullandıkça kayıtlar burada görünecek'; @override String get logIssueSummary => 'Sorun Özeti'; @override - String get logIspBlockingDescription => 'İnternet sağlayıcınız indirme hizmetlerine erişimi engelliyor olabilir'; + String get logIspBlockingDescription => + 'İnternet sağlayıcınız indirme hizmetlerine erişimi engelliyor olabilir'; @override - String get logIspBlockingSuggestion => 'VPN kullanmayı veya DNS\'i 1.1.1.1 ya da 8.8.8.8 olarak değiştirmeyi deneyin'; + String get logIspBlockingSuggestion => + 'VPN kullanmayı veya DNS\'i 1.1.1.1 ya da 8.8.8.8 olarak değiştirmeyi deneyin'; @override String get logRateLimitedDescription => 'Hizmete çok fazla istek gönderildi'; @override - String get logRateLimitedSuggestion => 'Tekrar denemeden önce birkaç dakika bekleyin'; + String get logRateLimitedSuggestion => + 'Tekrar denemeden önce birkaç dakika bekleyin'; @override String get logNetworkErrorDescription => 'Bağlantı sorunları tespit edildi'; @@ -1324,10 +1392,12 @@ class AppLocalizationsTr extends AppLocalizations { String get logNetworkErrorSuggestion => 'İnternet bağlantınızı kontrol edin'; @override - String get logTrackNotFoundDescription => 'Bazı şarkılar indirme hizmetlerinde bulunamadı'; + String get logTrackNotFoundDescription => + 'Bazı şarkılar indirme hizmetlerinde bulunamadı'; @override - String get logTrackNotFoundSuggestion => 'Şarkı kayıpsız kalitede mevcut olmayabilir'; + String get logTrackNotFoundSuggestion => + 'Şarkı kayıpsız kalitede mevcut olmayabilir'; @override String logTotalErrors(int count) { @@ -1353,7 +1423,8 @@ class AppLocalizationsTr extends AppLocalizations { String get credentialsTitle => 'Spotify Kimlik Bilgileri'; @override - String get credentialsDescription => 'Kendi Spotify uygulama kotanızı kullanmak için Client ID ve Secret girin.'; + String get credentialsDescription => + 'Kendi Spotify uygulama kotanızı kullanmak için Client ID ve Secret girin.'; @override String get credentialsClientId => 'Client ID'; @@ -1407,19 +1478,22 @@ class AppLocalizationsTr extends AppLocalizations { String get lyricsMode => 'Şarkı Sözü Modu'; @override - String get lyricsModeDescription => 'Şarkı sözlerinin indirmelerle nasıl kaydedileceğini seçin'; + String get lyricsModeDescription => + 'Şarkı sözlerinin indirmelerle nasıl kaydedileceğini seçin'; @override String get lyricsModeEmbed => 'Dosyaya göm'; @override - String get lyricsModeEmbedSubtitle => 'Şarkı sözleri FLAC metadata içinde saklanır'; + String get lyricsModeEmbedSubtitle => + 'Şarkı sözleri FLAC metadata içinde saklanır'; @override String get lyricsModeExternal => 'Harici .lrc dosyası'; @override - String get lyricsModeExternalSubtitle => 'Samsung Music gibi oynatıcılar için ayrı .lrc dosyası'; + String get lyricsModeExternalSubtitle => + 'Samsung Music gibi oynatıcılar için ayrı .lrc dosyası'; @override String get lyricsModeBoth => 'Her ikisi'; @@ -1452,13 +1526,15 @@ class AppLocalizationsTr extends AppLocalizations { String get settingsDownloadSubtitle => 'Hizmet, kalite, dosya adı formatı'; @override - String get settingsOptionsSubtitle => 'Yedek, şarkı sözleri, kapak resmi, güncellemeler'; + String get settingsOptionsSubtitle => + 'Yedek, şarkı sözleri, kapak resmi, güncellemeler'; @override String get settingsExtensionsSubtitle => 'İndirme sağlayıcılarını yönet'; @override - String get settingsLogsSubtitle => 'Hata ayıklama için uygulama kayıtlarını görüntüle'; + String get settingsLogsSubtitle => + 'Hata ayıklama için uygulama kayıtlarını görüntüle'; @override String get loadingSharedLink => 'Paylaşılan bağlantı yükleniyor...'; @@ -1558,7 +1634,8 @@ class AppLocalizationsTr extends AppLocalizations { String get trackLyricsNotAvailable => 'Bu şarkı için şarkı sözü mevcut değil'; @override - String get trackLyricsTimeout => 'İstek zaman aşımına uğradı. Daha sonra tekrar deneyin.'; + String get trackLyricsTimeout => + 'İstek zaman aşımına uğradı. Daha sonra tekrar deneyin.'; @override String get trackLyricsLoadFailed => 'Şarkı sözleri yüklenemedi'; @@ -1579,7 +1656,8 @@ class AppLocalizationsTr extends AppLocalizations { String get trackDeleteConfirmTitle => 'Cihazdan kaldırılsın mı?'; @override - String get trackDeleteConfirmMessage => 'Bu işlem indirilen dosyayı kalıcı olarak silecek ve geçmişten kaldıracaktır.'; + String get trackDeleteConfirmMessage => + 'Bu işlem indirilen dosyayı kalıcı olarak silecek ve geçmişten kaldıracaktır.'; @override String trackCannotOpen(String message) { @@ -1731,13 +1809,15 @@ class AppLocalizationsTr extends AppLocalizations { String get extensionsNoExtensions => 'Yüklü eklenti yok'; @override - String get extensionsNoExtensionsSubtitle => 'Yeni sağlayıcılar eklemek için .spotiflac-ext dosyalarını yükleyin'; + String get extensionsNoExtensionsSubtitle => + 'Yeni sağlayıcılar eklemek için .spotiflac-ext dosyalarını yükleyin'; @override String get extensionsInstallButton => 'Eklenti Yükle'; @override - String get extensionsInfoTip => 'Eklentiler yeni metadata ve indirme sağlayıcıları ekleyebilir. Sadece güvenilir kaynaklardan eklenti yükleyin.'; + String get extensionsInfoTip => + 'Eklentiler yeni metadata ve indirme sağlayıcıları ekleyebilir. Sadece güvenilir kaynaklardan eklenti yükleyin.'; @override String get extensionsInstalledSuccess => 'Eklenti başarıyla yüklendi'; @@ -1746,19 +1826,23 @@ class AppLocalizationsTr extends AppLocalizations { String get extensionsDownloadPriority => 'İndirme Önceliği'; @override - String get extensionsDownloadPrioritySubtitle => 'İndirme hizmeti sırasını ayarla'; + String get extensionsDownloadPrioritySubtitle => + 'İndirme hizmeti sırasını ayarla'; @override - String get extensionsNoDownloadProvider => 'İndirme sağlayıcısı olan eklenti yok'; + String get extensionsNoDownloadProvider => + 'İndirme sağlayıcısı olan eklenti yok'; @override String get extensionsMetadataPriority => 'Metadata Önceliği'; @override - String get extensionsMetadataPrioritySubtitle => 'Arama ve metadata kaynağı sırasını ayarla'; + String get extensionsMetadataPrioritySubtitle => + 'Arama ve metadata kaynağı sırasını ayarla'; @override - String get extensionsNoMetadataProvider => 'Metadata sağlayıcısı olan eklenti yok'; + String get extensionsNoMetadataProvider => + 'Metadata sağlayıcısı olan eklenti yok'; @override String get extensionsSearchProvider => 'Arama Sağlayıcı'; @@ -1767,7 +1851,8 @@ class AppLocalizationsTr extends AppLocalizations { String get extensionsNoCustomSearch => 'Özel arama olan eklenti yok'; @override - String get extensionsSearchProviderDescription => 'Şarkı aramak için hangi hizmetin kullanılacağını seçin'; + String get extensionsSearchProviderDescription => + 'Şarkı aramak için hangi hizmetin kullanılacağını seçin'; @override String get extensionsCustomSearch => 'Özel arama'; @@ -1809,7 +1894,8 @@ class AppLocalizationsTr extends AppLocalizations { String get enableLossyOptionSubtitleOn => 'Lossy quality option is available'; @override - String get enableLossyOptionSubtitleOff => 'Downloads FLAC then converts to lossy format'; + String get enableLossyOptionSubtitleOff => + 'Downloads FLAC then converts to lossy format'; @override String get lossyFormat => 'Lossy Format'; @@ -1821,10 +1907,12 @@ class AppLocalizationsTr extends AppLocalizations { String get lossyFormatMp3Subtitle => '320kbps, best compatibility'; @override - String get lossyFormatOpusSubtitle => '128kbps, better quality at smaller size'; + String get lossyFormatOpusSubtitle => + '128kbps, better quality at smaller size'; @override - String get qualityNote => 'Actual quality depends on track availability from the service'; + String get qualityNote => + 'Actual quality depends on track availability from the service'; @override String get downloadAskBeforeDownload => 'Ask Before Download'; @@ -1914,13 +2002,15 @@ class AppLocalizationsTr extends AppLocalizations { String get queueClearAll => 'Clear All'; @override - String get queueClearAllMessage => 'Are you sure you want to clear all downloads?'; + String get queueClearAllMessage => + 'Are you sure you want to clear all downloads?'; @override String get queueExportFailed => 'Export'; @override - String get queueExportFailedSuccess => 'Failed downloads exported to TXT file'; + String get queueExportFailedSuccess => + 'Failed downloads exported to TXT file'; @override String get queueExportFailedClear => 'Clear Failed'; @@ -1932,7 +2022,8 @@ class AppLocalizationsTr extends AppLocalizations { String get settingsAutoExportFailed => 'Auto-export failed downloads'; @override - String get settingsAutoExportFailedSubtitle => 'Save failed downloads to TXT file automatically'; + String get settingsAutoExportFailedSubtitle => + 'Save failed downloads to TXT file automatically'; @override String get settingsDownloadNetwork => 'Download Network'; @@ -1944,7 +2035,8 @@ class AppLocalizationsTr extends AppLocalizations { String get settingsDownloadNetworkWifiOnly => 'WiFi Only'; @override - String get settingsDownloadNetworkSubtitle => 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; + String get settingsDownloadNetworkSubtitle => + 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; @override String get settingsCloudSave => 'Cloud Save'; @@ -1962,7 +2054,8 @@ class AppLocalizationsTr extends AppLocalizations { String get cloudSettingsEnable => 'Enable Cloud Upload'; @override - String get cloudSettingsEnableSubtitle => 'Automatically upload files after download completes'; + String get cloudSettingsEnableSubtitle => + 'Automatically upload files after download completes'; @override String get cloudSettingsSectionProvider => 'Cloud Provider'; @@ -1971,7 +2064,8 @@ class AppLocalizationsTr extends AppLocalizations { String get cloudSettingsProvider => 'Provider'; @override - String get cloudSettingsProviderDescription => 'Select where to upload your downloaded files'; + String get cloudSettingsProviderDescription => + 'Select where to upload your downloaded files'; @override String get cloudSettingsSectionServer => 'Server Configuration'; @@ -1992,7 +2086,20 @@ class AppLocalizationsTr extends AppLocalizations { String get cloudSettingsTestConnection => 'Test Connection'; @override - String get cloudSettingsInfo => 'Downloaded files will be automatically uploaded to your cloud storage after download completes. Original files are kept on your device.'; + String get cloudSettingsInfo => + 'Downloaded files will be automatically uploaded to your cloud storage after download completes. Original files are kept on your device.'; + + @override + String get cloudSettingsUploadQueue => 'Upload Queue'; + + @override + String get cloudSettingsRetryFailed => 'Retry Failed'; + + @override + String get cloudSettingsClearDone => 'Clear Done'; + + @override + String get cloudSettingsRecentUploads => 'Recent Uploads'; @override String get queueEmpty => 'No downloads in queue'; @@ -2028,7 +2135,8 @@ class AppLocalizationsTr extends AppLocalizations { String get albumFolderArtistYearAlbum => 'Artist / [Year] Album'; @override - String get albumFolderArtistYearAlbumSubtitle => 'Albums/Artist Name/[2005] Album Name/'; + String get albumFolderArtistYearAlbumSubtitle => + 'Albums/Artist Name/[2005] Album Name/'; @override String get albumFolderAlbumOnly => 'Album Only'; @@ -2046,7 +2154,8 @@ class AppLocalizationsTr extends AppLocalizations { String get albumFolderArtistAlbumSingles => 'Artist / Album + Singles'; @override - String get albumFolderArtistAlbumSinglesSubtitle => 'Artist/Album/ and Artist/Singles/'; + String get albumFolderArtistAlbumSinglesSubtitle => + 'Artist/Album/ and Artist/Singles/'; @override String get downloadedAlbumDeleteSelected => 'Delete Selected'; @@ -2156,7 +2265,8 @@ class AppLocalizationsTr extends AppLocalizations { String get discographySelectAlbums => 'Select Albums...'; @override - String get discographySelectAlbumsSubtitle => 'Choose specific albums or singles'; + String get discographySelectAlbumsSubtitle => + 'Choose specific albums or singles'; @override String get discographyFetchingTracks => 'Fetching tracks...'; @@ -2203,11 +2313,14 @@ class AppLocalizationsTr extends AppLocalizations { String get allFilesAccessDisabledSubtitle => 'Limited to media folders only'; @override - String get allFilesAccessDescription => 'Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.'; + String get allFilesAccessDescription => + 'Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.'; @override - String get allFilesAccessDeniedMessage => 'Permission was denied. Please enable \'All files access\' manually in system settings.'; + String get allFilesAccessDeniedMessage => + 'Permission was denied. Please enable \'All files access\' manually in system settings.'; @override - String get allFilesAccessDisabledMessage => 'All Files Access disabled. The app will use limited storage access.'; + String get allFilesAccessDisabledMessage => + 'All Files Access disabled. The app will use limited storage access.'; } diff --git a/lib/l10n/app_localizations_zh.dart b/lib/l10n/app_localizations_zh.dart index 3d8093cf..a80ecdbe 100644 --- a/lib/l10n/app_localizations_zh.dart +++ b/lib/l10n/app_localizations_zh.dart @@ -12,7 +12,8 @@ class AppLocalizationsZh extends AppLocalizations { String get appName => 'SpotiFLAC'; @override - String get appDescription => 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; + String get appDescription => + 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; @override String get navHome => 'Home'; @@ -98,13 +99,15 @@ class AppLocalizationsZh extends AppLocalizations { String get historyNoAlbums => 'No album downloads'; @override - String get historyNoAlbumsSubtitle => 'Download multiple tracks from an album to see them here'; + String get historyNoAlbumsSubtitle => + 'Download multiple tracks from an album to see them here'; @override String get historyNoSingles => 'No single downloads'; @override - String get historyNoSinglesSubtitle => 'Single track downloads will appear here'; + String get historyNoSinglesSubtitle => + 'Single track downloads will appear here'; @override String get historySearchHint => 'Search history...'; @@ -152,7 +155,8 @@ class AppLocalizationsZh extends AppLocalizations { String get downloadAskQuality => 'Ask Quality Before Download'; @override - String get downloadAskQualitySubtitle => 'Show quality picker for each download'; + String get downloadAskQualitySubtitle => + 'Show quality picker for each download'; @override String get downloadFilenameFormat => 'Filename Format'; @@ -164,7 +168,8 @@ class AppLocalizationsZh extends AppLocalizations { String get downloadSeparateSingles => 'Separate Singles'; @override - String get downloadSeparateSinglesSubtitle => 'Put single tracks in a separate folder'; + String get downloadSeparateSinglesSubtitle => + 'Put single tracks in a separate folder'; @override String get qualityBest => 'Best Available'; @@ -221,7 +226,8 @@ class AppLocalizationsZh extends AppLocalizations { String get optionsPrimaryProvider => 'Primary Provider'; @override - String get optionsPrimaryProviderSubtitle => 'Service used when searching by track name.'; + String get optionsPrimaryProviderSubtitle => + 'Service used when searching by track name.'; @override String optionsUsingExtension(String extensionName) { @@ -229,13 +235,15 @@ class AppLocalizationsZh extends AppLocalizations { } @override - String get optionsSwitchBack => 'Tap Deezer or Spotify to switch back from extension'; + String get optionsSwitchBack => + 'Tap Deezer or Spotify to switch back from extension'; @override String get optionsAutoFallback => 'Auto Fallback'; @override - String get optionsAutoFallbackSubtitle => 'Try other services if download fails'; + String get optionsAutoFallbackSubtitle => + 'Try other services if download fails'; @override String get optionsUseExtensionProviders => 'Use Extension Providers'; @@ -250,13 +258,15 @@ class AppLocalizationsZh extends AppLocalizations { String get optionsEmbedLyrics => 'Embed Lyrics'; @override - String get optionsEmbedLyricsSubtitle => 'Embed synced lyrics into FLAC files'; + String get optionsEmbedLyricsSubtitle => + 'Embed synced lyrics into FLAC files'; @override String get optionsMaxQualityCover => 'Max Quality Cover'; @override - String get optionsMaxQualityCoverSubtitle => 'Download highest resolution cover art'; + String get optionsMaxQualityCoverSubtitle => + 'Download highest resolution cover art'; @override String get optionsConcurrentDownloads => 'Concurrent Downloads'; @@ -270,7 +280,8 @@ class AppLocalizationsZh extends AppLocalizations { } @override - String get optionsConcurrentWarning => 'Parallel downloads may trigger rate limiting'; + String get optionsConcurrentWarning => + 'Parallel downloads may trigger rate limiting'; @override String get optionsExtensionStore => 'Extension Store'; @@ -282,7 +293,8 @@ class AppLocalizationsZh extends AppLocalizations { String get optionsCheckUpdates => 'Check for Updates'; @override - String get optionsCheckUpdatesSubtitle => 'Notify when new version is available'; + String get optionsCheckUpdatesSubtitle => + 'Notify when new version is available'; @override String get optionsUpdateChannel => 'Update Channel'; @@ -294,13 +306,15 @@ class AppLocalizationsZh extends AppLocalizations { String get optionsUpdateChannelPreview => 'Get preview releases'; @override - String get optionsUpdateChannelWarning => 'Preview may contain bugs or incomplete features'; + String get optionsUpdateChannelWarning => + 'Preview may contain bugs or incomplete features'; @override String get optionsClearHistory => 'Clear Download History'; @override - String get optionsClearHistorySubtitle => 'Remove all downloaded tracks from history'; + String get optionsClearHistorySubtitle => + 'Remove all downloaded tracks from history'; @override String get optionsDetailedLogging => 'Detailed Logging'; @@ -323,7 +337,8 @@ class AppLocalizationsZh extends AppLocalizations { String get optionsSpotifyCredentialsRequired => 'Required - tap to configure'; @override - String get optionsSpotifyWarning => 'Spotify requires your own API credentials. Get them free from developer.spotify.com'; + String get optionsSpotifyWarning => + 'Spotify requires your own API credentials. Get them free from developer.spotify.com'; @override String get extensionsTitle => 'Extensions'; @@ -387,7 +402,8 @@ class AppLocalizationsZh extends AppLocalizations { String get aboutOriginalCreator => 'Creator of the original SpotiFLAC'; @override - String get aboutLogoArtist => 'The talented artist who created our beautiful app logo!'; + String get aboutLogoArtist => + 'The talented artist who created our beautiful app logo!'; @override String get aboutTranslators => 'Translators'; @@ -447,28 +463,34 @@ class AppLocalizationsZh extends AppLocalizations { String get aboutVersion => 'Version'; @override - String get aboutBinimumDesc => 'The creator of QQDL & HiFi API. Without this API, Tidal downloads wouldn\'t exist!'; + String get aboutBinimumDesc => + 'The creator of QQDL & HiFi API. Without this API, Tidal downloads wouldn\'t exist!'; @override - String get aboutSachinsenalDesc => 'The original HiFi project creator. The foundation of Tidal integration!'; + String get aboutSachinsenalDesc => + 'The original HiFi project creator. The foundation of Tidal integration!'; @override - String get aboutSjdonadoDesc => 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; + String get aboutSjdonadoDesc => + 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; @override String get aboutDoubleDouble => 'DoubleDouble'; @override - String get aboutDoubleDoubleDesc => 'Amazing API for Amazon Music downloads. Thank you for making it free!'; + String get aboutDoubleDoubleDesc => + 'Amazing API for Amazon Music downloads. Thank you for making it free!'; @override String get aboutDabMusic => 'DAB Music'; @override - String get aboutDabMusicDesc => 'The best Qobuz streaming API. Hi-Res downloads wouldn\'t be possible without this!'; + String get aboutDabMusicDesc => + 'The best Qobuz streaming API. Hi-Res downloads wouldn\'t be possible without this!'; @override - String get aboutAppDescription => 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; + String get aboutAppDescription => + 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; @override String get albumTitle => 'Album'; @@ -573,7 +595,8 @@ class AppLocalizationsZh extends AppLocalizations { String get setupStoragePermission => 'Storage Permission'; @override - String get setupStoragePermissionSubtitle => 'Required to save downloaded files'; + String get setupStoragePermissionSubtitle => + 'Required to save downloaded files'; @override String get setupStoragePermissionGranted => 'Permission granted'; @@ -600,16 +623,19 @@ class AppLocalizationsZh extends AppLocalizations { String get setupStorageAccessRequired => 'Storage Access Required'; @override - String get setupStorageAccessMessage => 'SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.'; + String get setupStorageAccessMessage => + 'SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.'; @override - String get setupStorageAccessMessageAndroid11 => 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; + String get setupStorageAccessMessageAndroid11 => + 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; @override String get setupOpenSettings => 'Open Settings'; @override - String get setupPermissionDeniedMessage => 'Permission denied. Please grant all permissions to continue.'; + String get setupPermissionDeniedMessage => + 'Permission denied. Please grant all permissions to continue.'; @override String setupPermissionRequired(String permissionType) { @@ -628,7 +654,8 @@ class AppLocalizationsZh extends AppLocalizations { String get setupUseDefaultFolder => 'Use Default Folder?'; @override - String get setupNoFolderSelected => 'No folder selected. Would you like to use the default Music folder?'; + String get setupNoFolderSelected => + 'No folder selected. Would you like to use the default Music folder?'; @override String get setupUseDefault => 'Use Default'; @@ -637,13 +664,15 @@ class AppLocalizationsZh extends AppLocalizations { String get setupDownloadLocationTitle => 'Download Location'; @override - String get setupDownloadLocationIosMessage => 'On iOS, downloads are saved to the app\'s Documents folder. You can access them via the Files app.'; + String get setupDownloadLocationIosMessage => + 'On iOS, downloads are saved to the app\'s Documents folder. You can access them via the Files app.'; @override String get setupAppDocumentsFolder => 'App Documents Folder'; @override - String get setupAppDocumentsFolderSubtitle => 'Recommended - accessible via Files app'; + String get setupAppDocumentsFolderSubtitle => + 'Recommended - accessible via Files app'; @override String get setupChooseFromFiles => 'Choose from Files'; @@ -652,10 +681,12 @@ class AppLocalizationsZh extends AppLocalizations { String get setupChooseFromFilesSubtitle => 'Select iCloud or other location'; @override - String get setupIosEmptyFolderWarning => 'iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.'; + String get setupIosEmptyFolderWarning => + 'iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.'; @override - String get setupIcloudNotSupported => 'iCloud Drive is not supported. Please use the app Documents folder.'; + String get setupIcloudNotSupported => + 'iCloud Drive is not supported. Please use the app Documents folder.'; @override String get setupDownloadInFlac => 'Download Spotify tracks in FLAC'; @@ -682,7 +713,8 @@ class AppLocalizationsZh extends AppLocalizations { String get setupStorageRequired => 'Storage Permission Required'; @override - String get setupStorageDescription => 'SpotiFLAC needs storage permission to save your downloaded music files.'; + String get setupStorageDescription => + 'SpotiFLAC needs storage permission to save your downloaded music files.'; @override String get setupNotificationGranted => 'Notification Permission Granted!'; @@ -691,7 +723,8 @@ class AppLocalizationsZh extends AppLocalizations { String get setupNotificationEnable => 'Enable Notifications'; @override - String get setupNotificationDescription => 'Get notified when downloads complete or require attention.'; + String get setupNotificationDescription => + 'Get notified when downloads complete or require attention.'; @override String get setupFolderSelected => 'Download Folder Selected!'; @@ -700,7 +733,8 @@ class AppLocalizationsZh extends AppLocalizations { String get setupFolderChoose => 'Choose Download Folder'; @override - String get setupFolderDescription => 'Select a folder where your downloaded music will be saved.'; + String get setupFolderDescription => + 'Select a folder where your downloaded music will be saved.'; @override String get setupChangeFolder => 'Change Folder'; @@ -712,7 +746,8 @@ class AppLocalizationsZh extends AppLocalizations { String get setupSpotifyApiOptional => 'Spotify API (Optional)'; @override - String get setupSpotifyApiDescription => 'Add your Spotify API credentials for better search results and access to Spotify-exclusive content.'; + String get setupSpotifyApiDescription => + 'Add your Spotify API credentials for better search results and access to Spotify-exclusive content.'; @override String get setupUseSpotifyApi => 'Use Spotify API'; @@ -730,7 +765,8 @@ class AppLocalizationsZh extends AppLocalizations { String get setupEnterClientSecret => 'Enter Spotify Client Secret'; @override - String get setupGetFreeCredentials => 'Get your free API credentials from the Spotify Developer Dashboard.'; + String get setupGetFreeCredentials => + 'Get your free API credentials from the Spotify Developer Dashboard.'; @override String get setupEnableNotifications => 'Enable Notifications'; @@ -739,10 +775,12 @@ class AppLocalizationsZh extends AppLocalizations { String get setupProceedToNextStep => 'You can now proceed to the next step.'; @override - String get setupNotificationProgressDescription => 'You will receive download progress notifications.'; + String get setupNotificationProgressDescription => + 'You will receive download progress notifications.'; @override - String get setupNotificationBackgroundDescription => 'Get notified about download progress and completion. This helps you track downloads when the app is in background.'; + String get setupNotificationBackgroundDescription => + 'Get notified about download progress and completion. This helps you track downloads when the app is in background.'; @override String get setupSkipForNow => 'Skip for now'; @@ -760,10 +798,12 @@ class AppLocalizationsZh extends AppLocalizations { String get setupSkipAndStart => 'Skip & Start'; @override - String get setupAllowAccessToManageFiles => 'Please enable \"Allow access to manage all files\" in the next screen.'; + String get setupAllowAccessToManageFiles => + 'Please enable \"Allow access to manage all files\" in the next screen.'; @override - String get setupGetCredentialsFromSpotify => 'Get credentials from developer.spotify.com'; + String get setupGetCredentialsFromSpotify => + 'Get credentials from developer.spotify.com'; @override String get dialogCancel => 'Cancel'; @@ -814,7 +854,8 @@ class AppLocalizationsZh extends AppLocalizations { String get dialogDiscardChanges => 'Discard Changes?'; @override - String get dialogUnsavedChanges => 'You have unsaved changes. Do you want to discard them?'; + String get dialogUnsavedChanges => + 'You have unsaved changes. Do you want to discard them?'; @override String get dialogDownloadFailed => 'Download Failed'; @@ -832,7 +873,8 @@ class AppLocalizationsZh extends AppLocalizations { String get dialogClearAll => 'Clear All'; @override - String get dialogClearAllDownloads => 'Are you sure you want to clear all downloads?'; + String get dialogClearAllDownloads => + 'Are you sure you want to clear all downloads?'; @override String get dialogRemoveFromDevice => 'Remove from device?'; @@ -841,7 +883,8 @@ class AppLocalizationsZh extends AppLocalizations { String get dialogRemoveExtension => 'Remove Extension'; @override - String get dialogRemoveExtensionMessage => 'Are you sure you want to remove this extension? This cannot be undone.'; + String get dialogRemoveExtensionMessage => + 'Are you sure you want to remove this extension? This cannot be undone.'; @override String get dialogUninstallExtension => 'Uninstall Extension?'; @@ -855,7 +898,8 @@ class AppLocalizationsZh extends AppLocalizations { String get dialogClearHistoryTitle => 'Clear History'; @override - String get dialogClearHistoryMessage => 'Are you sure you want to clear all download history? This cannot be undone.'; + String get dialogClearHistoryMessage => + 'Are you sure you want to clear all download history? This cannot be undone.'; @override String get dialogDeleteSelectedTitle => 'Delete Selected'; @@ -950,7 +994,8 @@ class AppLocalizationsZh extends AppLocalizations { String get snackbarProviderPrioritySaved => 'Provider priority saved'; @override - String get snackbarMetadataProviderSaved => 'Metadata provider priority saved'; + String get snackbarMetadataProviderSaved => + 'Metadata provider priority saved'; @override String snackbarExtensionInstalled(String extensionName) { @@ -972,7 +1017,8 @@ class AppLocalizationsZh extends AppLocalizations { String get errorRateLimited => 'Rate Limited'; @override - String get errorRateLimitedMessage => 'Too many requests. Please wait a moment before searching again.'; + String get errorRateLimitedMessage => + 'Too many requests. Please wait a moment before searching again.'; @override String errorFailedToLoad(String item) { @@ -1139,19 +1185,23 @@ class AppLocalizationsZh extends AppLocalizations { String get folderOrganizationByArtistAlbum => 'Artist/Album'; @override - String get folderOrganizationDescription => 'Organize downloaded files into folders'; + String get folderOrganizationDescription => + 'Organize downloaded files into folders'; @override String get folderOrganizationNoneSubtitle => 'All files in download folder'; @override - String get folderOrganizationByArtistSubtitle => 'Separate folder for each artist'; + String get folderOrganizationByArtistSubtitle => + 'Separate folder for each artist'; @override - String get folderOrganizationByAlbumSubtitle => 'Separate folder for each album'; + String get folderOrganizationByAlbumSubtitle => + 'Separate folder for each album'; @override - String get folderOrganizationByArtistAlbumSubtitle => 'Nested folders for artist and album'; + String get folderOrganizationByArtistAlbumSubtitle => + 'Nested folders for artist and album'; @override String get updateAvailable => 'Update Available'; @@ -1210,10 +1260,12 @@ class AppLocalizationsZh extends AppLocalizations { String get providerPriorityTitle => 'Provider Priority'; @override - String get providerPriorityDescription => 'Drag to reorder download providers. The app will try providers from top to bottom when downloading tracks.'; + String get providerPriorityDescription => + 'Drag to reorder download providers. The app will try providers from top to bottom when downloading tracks.'; @override - String get providerPriorityInfo => 'If a track is not available on the first provider, the app will automatically try the next one.'; + String get providerPriorityInfo => + 'If a track is not available on the first provider, the app will automatically try the next one.'; @override String get providerBuiltIn => 'Built-in'; @@ -1225,16 +1277,19 @@ class AppLocalizationsZh extends AppLocalizations { String get metadataProviderPriority => 'Metadata Provider Priority'; @override - String get metadataProviderPrioritySubtitle => 'Order used when fetching track metadata'; + String get metadataProviderPrioritySubtitle => + 'Order used when fetching track metadata'; @override String get metadataProviderPriorityTitle => 'Metadata Priority'; @override - String get metadataProviderPriorityDescription => 'Drag to reorder metadata providers. The app will try providers from top to bottom when searching for tracks and fetching metadata.'; + String get metadataProviderPriorityDescription => + 'Drag to reorder metadata providers. The app will try providers from top to bottom when searching for tracks and fetching metadata.'; @override - String get metadataProviderPriorityInfo => 'Deezer has no rate limits and is recommended as primary. Spotify may rate limit after many requests.'; + String get metadataProviderPriorityInfo => + 'Deezer has no rate limits and is recommended as primary. Spotify may rate limit after many requests.'; @override String get metadataNoRateLimits => 'No rate limits'; @@ -1306,16 +1361,19 @@ class AppLocalizationsZh extends AppLocalizations { String get logIssueSummary => 'Issue Summary'; @override - String get logIspBlockingDescription => 'Your ISP may be blocking access to download services'; + String get logIspBlockingDescription => + 'Your ISP may be blocking access to download services'; @override - String get logIspBlockingSuggestion => 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; + String get logIspBlockingSuggestion => + 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; @override String get logRateLimitedDescription => 'Too many requests to the service'; @override - String get logRateLimitedSuggestion => 'Wait a few minutes before trying again'; + String get logRateLimitedSuggestion => + 'Wait a few minutes before trying again'; @override String get logNetworkErrorDescription => 'Connection issues detected'; @@ -1324,10 +1382,12 @@ class AppLocalizationsZh extends AppLocalizations { String get logNetworkErrorSuggestion => 'Check your internet connection'; @override - String get logTrackNotFoundDescription => 'Some tracks could not be found on download services'; + String get logTrackNotFoundDescription => + 'Some tracks could not be found on download services'; @override - String get logTrackNotFoundSuggestion => 'The track may not be available in lossless quality'; + String get logTrackNotFoundSuggestion => + 'The track may not be available in lossless quality'; @override String logTotalErrors(int count) { @@ -1353,7 +1413,8 @@ class AppLocalizationsZh extends AppLocalizations { String get credentialsTitle => 'Spotify Credentials'; @override - String get credentialsDescription => 'Enter your Client ID and Secret to use your own Spotify application quota.'; + String get credentialsDescription => + 'Enter your Client ID and Secret to use your own Spotify application quota.'; @override String get credentialsClientId => 'Client ID'; @@ -1407,7 +1468,8 @@ class AppLocalizationsZh extends AppLocalizations { String get lyricsMode => 'Lyrics Mode'; @override - String get lyricsModeDescription => 'Choose how lyrics are saved with your downloads'; + String get lyricsModeDescription => + 'Choose how lyrics are saved with your downloads'; @override String get lyricsModeEmbed => 'Embed in file'; @@ -1419,7 +1481,8 @@ class AppLocalizationsZh extends AppLocalizations { String get lyricsModeExternal => 'External .lrc file'; @override - String get lyricsModeExternalSubtitle => 'Separate .lrc file for players like Samsung Music'; + String get lyricsModeExternalSubtitle => + 'Separate .lrc file for players like Samsung Music'; @override String get lyricsModeBoth => 'Both'; @@ -1579,7 +1642,8 @@ class AppLocalizationsZh extends AppLocalizations { String get trackDeleteConfirmTitle => 'Remove from device?'; @override - String get trackDeleteConfirmMessage => 'This will permanently delete the downloaded file and remove it from your history.'; + String get trackDeleteConfirmMessage => + 'This will permanently delete the downloaded file and remove it from your history.'; @override String trackCannotOpen(String message) { @@ -1731,13 +1795,15 @@ class AppLocalizationsZh extends AppLocalizations { String get extensionsNoExtensions => 'No extensions installed'; @override - String get extensionsNoExtensionsSubtitle => 'Install .spotiflac-ext files to add new providers'; + String get extensionsNoExtensionsSubtitle => + 'Install .spotiflac-ext files to add new providers'; @override String get extensionsInstallButton => 'Install Extension'; @override - String get extensionsInfoTip => 'Extensions can add new metadata and download providers. Only install extensions from trusted sources.'; + String get extensionsInfoTip => + 'Extensions can add new metadata and download providers. Only install extensions from trusted sources.'; @override String get extensionsInstalledSuccess => 'Extension installed successfully'; @@ -1749,16 +1815,19 @@ class AppLocalizationsZh extends AppLocalizations { String get extensionsDownloadPrioritySubtitle => 'Set download service order'; @override - String get extensionsNoDownloadProvider => 'No extensions with download provider'; + String get extensionsNoDownloadProvider => + 'No extensions with download provider'; @override String get extensionsMetadataPriority => 'Metadata Priority'; @override - String get extensionsMetadataPrioritySubtitle => 'Set search & metadata source order'; + String get extensionsMetadataPrioritySubtitle => + 'Set search & metadata source order'; @override - String get extensionsNoMetadataProvider => 'No extensions with metadata provider'; + String get extensionsNoMetadataProvider => + 'No extensions with metadata provider'; @override String get extensionsSearchProvider => 'Search Provider'; @@ -1767,7 +1836,8 @@ class AppLocalizationsZh extends AppLocalizations { String get extensionsNoCustomSearch => 'No extensions with custom search'; @override - String get extensionsSearchProviderDescription => 'Choose which service to use for searching tracks'; + String get extensionsSearchProviderDescription => + 'Choose which service to use for searching tracks'; @override String get extensionsCustomSearch => 'Custom search'; @@ -1809,7 +1879,8 @@ class AppLocalizationsZh extends AppLocalizations { String get enableLossyOptionSubtitleOn => 'Lossy quality option is available'; @override - String get enableLossyOptionSubtitleOff => 'Downloads FLAC then converts to lossy format'; + String get enableLossyOptionSubtitleOff => + 'Downloads FLAC then converts to lossy format'; @override String get lossyFormat => 'Lossy Format'; @@ -1821,10 +1892,12 @@ class AppLocalizationsZh extends AppLocalizations { String get lossyFormatMp3Subtitle => '320kbps, best compatibility'; @override - String get lossyFormatOpusSubtitle => '128kbps, better quality at smaller size'; + String get lossyFormatOpusSubtitle => + '128kbps, better quality at smaller size'; @override - String get qualityNote => 'Actual quality depends on track availability from the service'; + String get qualityNote => + 'Actual quality depends on track availability from the service'; @override String get downloadAskBeforeDownload => 'Ask Before Download'; @@ -1914,13 +1987,15 @@ class AppLocalizationsZh extends AppLocalizations { String get queueClearAll => 'Clear All'; @override - String get queueClearAllMessage => 'Are you sure you want to clear all downloads?'; + String get queueClearAllMessage => + 'Are you sure you want to clear all downloads?'; @override String get queueExportFailed => 'Export'; @override - String get queueExportFailedSuccess => 'Failed downloads exported to TXT file'; + String get queueExportFailedSuccess => + 'Failed downloads exported to TXT file'; @override String get queueExportFailedClear => 'Clear Failed'; @@ -1932,7 +2007,8 @@ class AppLocalizationsZh extends AppLocalizations { String get settingsAutoExportFailed => 'Auto-export failed downloads'; @override - String get settingsAutoExportFailedSubtitle => 'Save failed downloads to TXT file automatically'; + String get settingsAutoExportFailedSubtitle => + 'Save failed downloads to TXT file automatically'; @override String get settingsDownloadNetwork => 'Download Network'; @@ -1944,7 +2020,8 @@ class AppLocalizationsZh extends AppLocalizations { String get settingsDownloadNetworkWifiOnly => 'WiFi Only'; @override - String get settingsDownloadNetworkSubtitle => 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; + String get settingsDownloadNetworkSubtitle => + 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; @override String get settingsCloudSave => 'Cloud Save'; @@ -1962,7 +2039,8 @@ class AppLocalizationsZh extends AppLocalizations { String get cloudSettingsEnable => 'Enable Cloud Upload'; @override - String get cloudSettingsEnableSubtitle => 'Automatically upload files after download completes'; + String get cloudSettingsEnableSubtitle => + 'Automatically upload files after download completes'; @override String get cloudSettingsSectionProvider => 'Cloud Provider'; @@ -1971,7 +2049,8 @@ class AppLocalizationsZh extends AppLocalizations { String get cloudSettingsProvider => 'Provider'; @override - String get cloudSettingsProviderDescription => 'Select where to upload your downloaded files'; + String get cloudSettingsProviderDescription => + 'Select where to upload your downloaded files'; @override String get cloudSettingsSectionServer => 'Server Configuration'; @@ -1992,7 +2071,20 @@ class AppLocalizationsZh extends AppLocalizations { String get cloudSettingsTestConnection => 'Test Connection'; @override - String get cloudSettingsInfo => 'Downloaded files will be automatically uploaded to your cloud storage after download completes. Original files are kept on your device.'; + String get cloudSettingsInfo => + 'Downloaded files will be automatically uploaded to your cloud storage after download completes. Original files are kept on your device.'; + + @override + String get cloudSettingsUploadQueue => 'Upload Queue'; + + @override + String get cloudSettingsRetryFailed => 'Retry Failed'; + + @override + String get cloudSettingsClearDone => 'Clear Done'; + + @override + String get cloudSettingsRecentUploads => 'Recent Uploads'; @override String get queueEmpty => 'No downloads in queue'; @@ -2028,7 +2120,8 @@ class AppLocalizationsZh extends AppLocalizations { String get albumFolderArtistYearAlbum => 'Artist / [Year] Album'; @override - String get albumFolderArtistYearAlbumSubtitle => 'Albums/Artist Name/[2005] Album Name/'; + String get albumFolderArtistYearAlbumSubtitle => + 'Albums/Artist Name/[2005] Album Name/'; @override String get albumFolderAlbumOnly => 'Album Only'; @@ -2046,7 +2139,8 @@ class AppLocalizationsZh extends AppLocalizations { String get albumFolderArtistAlbumSingles => 'Artist / Album + Singles'; @override - String get albumFolderArtistAlbumSinglesSubtitle => 'Artist/Album/ and Artist/Singles/'; + String get albumFolderArtistAlbumSinglesSubtitle => + 'Artist/Album/ and Artist/Singles/'; @override String get downloadedAlbumDeleteSelected => 'Delete Selected'; @@ -2156,7 +2250,8 @@ class AppLocalizationsZh extends AppLocalizations { String get discographySelectAlbums => 'Select Albums...'; @override - String get discographySelectAlbumsSubtitle => 'Choose specific albums or singles'; + String get discographySelectAlbumsSubtitle => + 'Choose specific albums or singles'; @override String get discographyFetchingTracks => 'Fetching tracks...'; @@ -2203,24 +2298,28 @@ class AppLocalizationsZh extends AppLocalizations { String get allFilesAccessDisabledSubtitle => 'Limited to media folders only'; @override - String get allFilesAccessDescription => 'Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.'; + String get allFilesAccessDescription => + 'Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.'; @override - String get allFilesAccessDeniedMessage => 'Permission was denied. Please enable \'All files access\' manually in system settings.'; + String get allFilesAccessDeniedMessage => + 'Permission was denied. Please enable \'All files access\' manually in system settings.'; @override - String get allFilesAccessDisabledMessage => 'All Files Access disabled. The app will use limited storage access.'; + String get allFilesAccessDisabledMessage => + 'All Files Access disabled. The app will use limited storage access.'; } /// The translations for Chinese, as used in China (`zh_CN`). class AppLocalizationsZhCn extends AppLocalizationsZh { - AppLocalizationsZhCn(): super('zh_CN'); + AppLocalizationsZhCn() : super('zh_CN'); @override String get appName => 'SpotiFLAC'; @override - String get appDescription => 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; + String get appDescription => + 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; @override String get navHome => 'Home'; @@ -2306,13 +2405,15 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get historyNoAlbums => 'No album downloads'; @override - String get historyNoAlbumsSubtitle => 'Download multiple tracks from an album to see them here'; + String get historyNoAlbumsSubtitle => + 'Download multiple tracks from an album to see them here'; @override String get historyNoSingles => 'No single downloads'; @override - String get historyNoSinglesSubtitle => 'Single track downloads will appear here'; + String get historyNoSinglesSubtitle => + 'Single track downloads will appear here'; @override String get historySearchHint => 'Search history...'; @@ -2360,7 +2461,8 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get downloadAskQuality => 'Ask Quality Before Download'; @override - String get downloadAskQualitySubtitle => 'Show quality picker for each download'; + String get downloadAskQualitySubtitle => + 'Show quality picker for each download'; @override String get downloadFilenameFormat => 'Filename Format'; @@ -2372,7 +2474,8 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get downloadSeparateSingles => 'Separate Singles'; @override - String get downloadSeparateSinglesSubtitle => 'Put single tracks in a separate folder'; + String get downloadSeparateSinglesSubtitle => + 'Put single tracks in a separate folder'; @override String get qualityBest => 'Best Available'; @@ -2429,7 +2532,8 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get optionsPrimaryProvider => 'Primary Provider'; @override - String get optionsPrimaryProviderSubtitle => 'Service used when searching by track name.'; + String get optionsPrimaryProviderSubtitle => + 'Service used when searching by track name.'; @override String optionsUsingExtension(String extensionName) { @@ -2437,13 +2541,15 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { } @override - String get optionsSwitchBack => 'Tap Deezer or Spotify to switch back from extension'; + String get optionsSwitchBack => + 'Tap Deezer or Spotify to switch back from extension'; @override String get optionsAutoFallback => 'Auto Fallback'; @override - String get optionsAutoFallbackSubtitle => 'Try other services if download fails'; + String get optionsAutoFallbackSubtitle => + 'Try other services if download fails'; @override String get optionsUseExtensionProviders => 'Use Extension Providers'; @@ -2458,13 +2564,15 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get optionsEmbedLyrics => 'Embed Lyrics'; @override - String get optionsEmbedLyricsSubtitle => 'Embed synced lyrics into FLAC files'; + String get optionsEmbedLyricsSubtitle => + 'Embed synced lyrics into FLAC files'; @override String get optionsMaxQualityCover => 'Max Quality Cover'; @override - String get optionsMaxQualityCoverSubtitle => 'Download highest resolution cover art'; + String get optionsMaxQualityCoverSubtitle => + 'Download highest resolution cover art'; @override String get optionsConcurrentDownloads => 'Concurrent Downloads'; @@ -2478,7 +2586,8 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { } @override - String get optionsConcurrentWarning => 'Parallel downloads may trigger rate limiting'; + String get optionsConcurrentWarning => + 'Parallel downloads may trigger rate limiting'; @override String get optionsExtensionStore => 'Extension Store'; @@ -2490,7 +2599,8 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get optionsCheckUpdates => 'Check for Updates'; @override - String get optionsCheckUpdatesSubtitle => 'Notify when new version is available'; + String get optionsCheckUpdatesSubtitle => + 'Notify when new version is available'; @override String get optionsUpdateChannel => 'Update Channel'; @@ -2502,13 +2612,15 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get optionsUpdateChannelPreview => 'Get preview releases'; @override - String get optionsUpdateChannelWarning => 'Preview may contain bugs or incomplete features'; + String get optionsUpdateChannelWarning => + 'Preview may contain bugs or incomplete features'; @override String get optionsClearHistory => 'Clear Download History'; @override - String get optionsClearHistorySubtitle => 'Remove all downloaded tracks from history'; + String get optionsClearHistorySubtitle => + 'Remove all downloaded tracks from history'; @override String get optionsDetailedLogging => 'Detailed Logging'; @@ -2531,7 +2643,8 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get optionsSpotifyCredentialsRequired => 'Required - tap to configure'; @override - String get optionsSpotifyWarning => 'Spotify requires your own API credentials. Get them free from developer.spotify.com'; + String get optionsSpotifyWarning => + 'Spotify requires your own API credentials. Get them free from developer.spotify.com'; @override String get extensionsTitle => 'Extensions'; @@ -2595,7 +2708,8 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get aboutOriginalCreator => 'Creator of the original SpotiFLAC'; @override - String get aboutLogoArtist => 'The talented artist who created our beautiful app logo!'; + String get aboutLogoArtist => + 'The talented artist who created our beautiful app logo!'; @override String get aboutTranslators => 'Translators'; @@ -2655,25 +2769,30 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get aboutVersion => 'Version'; @override - String get aboutBinimumDesc => 'The creator of QQDL & HiFi API. Without this API, Tidal downloads wouldn\'t exist!'; + String get aboutBinimumDesc => + 'The creator of QQDL & HiFi API. Without this API, Tidal downloads wouldn\'t exist!'; @override - String get aboutSachinsenalDesc => 'The original HiFi project creator. The foundation of Tidal integration!'; + String get aboutSachinsenalDesc => + 'The original HiFi project creator. The foundation of Tidal integration!'; @override String get aboutDoubleDouble => 'DoubleDouble'; @override - String get aboutDoubleDoubleDesc => 'Amazing API for Amazon Music downloads. Thank you for making it free!'; + String get aboutDoubleDoubleDesc => + 'Amazing API for Amazon Music downloads. Thank you for making it free!'; @override String get aboutDabMusic => 'DAB Music'; @override - String get aboutDabMusicDesc => 'The best Qobuz streaming API. Hi-Res downloads wouldn\'t be possible without this!'; + String get aboutDabMusicDesc => + 'The best Qobuz streaming API. Hi-Res downloads wouldn\'t be possible without this!'; @override - String get aboutAppDescription => 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; + String get aboutAppDescription => + 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; @override String get albumTitle => 'Album'; @@ -2778,7 +2897,8 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get setupStoragePermission => 'Storage Permission'; @override - String get setupStoragePermissionSubtitle => 'Required to save downloaded files'; + String get setupStoragePermissionSubtitle => + 'Required to save downloaded files'; @override String get setupStoragePermissionGranted => 'Permission granted'; @@ -2805,16 +2925,19 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get setupStorageAccessRequired => 'Storage Access Required'; @override - String get setupStorageAccessMessage => 'SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.'; + String get setupStorageAccessMessage => + 'SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.'; @override - String get setupStorageAccessMessageAndroid11 => 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; + String get setupStorageAccessMessageAndroid11 => + 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; @override String get setupOpenSettings => 'Open Settings'; @override - String get setupPermissionDeniedMessage => 'Permission denied. Please grant all permissions to continue.'; + String get setupPermissionDeniedMessage => + 'Permission denied. Please grant all permissions to continue.'; @override String setupPermissionRequired(String permissionType) { @@ -2833,7 +2956,8 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get setupUseDefaultFolder => 'Use Default Folder?'; @override - String get setupNoFolderSelected => 'No folder selected. Would you like to use the default Music folder?'; + String get setupNoFolderSelected => + 'No folder selected. Would you like to use the default Music folder?'; @override String get setupUseDefault => 'Use Default'; @@ -2842,13 +2966,15 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get setupDownloadLocationTitle => 'Download Location'; @override - String get setupDownloadLocationIosMessage => 'On iOS, downloads are saved to the app\'s Documents folder. You can access them via the Files app.'; + String get setupDownloadLocationIosMessage => + 'On iOS, downloads are saved to the app\'s Documents folder. You can access them via the Files app.'; @override String get setupAppDocumentsFolder => 'App Documents Folder'; @override - String get setupAppDocumentsFolderSubtitle => 'Recommended - accessible via Files app'; + String get setupAppDocumentsFolderSubtitle => + 'Recommended - accessible via Files app'; @override String get setupChooseFromFiles => 'Choose from Files'; @@ -2857,7 +2983,8 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get setupChooseFromFilesSubtitle => 'Select iCloud or other location'; @override - String get setupIosEmptyFolderWarning => 'iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.'; + String get setupIosEmptyFolderWarning => + 'iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.'; @override String get setupDownloadInFlac => 'Download Spotify tracks in FLAC'; @@ -2884,7 +3011,8 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get setupStorageRequired => 'Storage Permission Required'; @override - String get setupStorageDescription => 'SpotiFLAC needs storage permission to save your downloaded music files.'; + String get setupStorageDescription => + 'SpotiFLAC needs storage permission to save your downloaded music files.'; @override String get setupNotificationGranted => 'Notification Permission Granted!'; @@ -2893,7 +3021,8 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get setupNotificationEnable => 'Enable Notifications'; @override - String get setupNotificationDescription => 'Get notified when downloads complete or require attention.'; + String get setupNotificationDescription => + 'Get notified when downloads complete or require attention.'; @override String get setupFolderSelected => 'Download Folder Selected!'; @@ -2902,7 +3031,8 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get setupFolderChoose => 'Choose Download Folder'; @override - String get setupFolderDescription => 'Select a folder where your downloaded music will be saved.'; + String get setupFolderDescription => + 'Select a folder where your downloaded music will be saved.'; @override String get setupChangeFolder => 'Change Folder'; @@ -2914,7 +3044,8 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get setupSpotifyApiOptional => 'Spotify API (Optional)'; @override - String get setupSpotifyApiDescription => 'Add your Spotify API credentials for better search results and access to Spotify-exclusive content.'; + String get setupSpotifyApiDescription => + 'Add your Spotify API credentials for better search results and access to Spotify-exclusive content.'; @override String get setupUseSpotifyApi => 'Use Spotify API'; @@ -2932,7 +3063,8 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get setupEnterClientSecret => 'Enter Spotify Client Secret'; @override - String get setupGetFreeCredentials => 'Get your free API credentials from the Spotify Developer Dashboard.'; + String get setupGetFreeCredentials => + 'Get your free API credentials from the Spotify Developer Dashboard.'; @override String get setupEnableNotifications => 'Enable Notifications'; @@ -2941,10 +3073,12 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get setupProceedToNextStep => 'You can now proceed to the next step.'; @override - String get setupNotificationProgressDescription => 'You will receive download progress notifications.'; + String get setupNotificationProgressDescription => + 'You will receive download progress notifications.'; @override - String get setupNotificationBackgroundDescription => 'Get notified about download progress and completion. This helps you track downloads when the app is in background.'; + String get setupNotificationBackgroundDescription => + 'Get notified about download progress and completion. This helps you track downloads when the app is in background.'; @override String get setupSkipForNow => 'Skip for now'; @@ -2962,10 +3096,12 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get setupSkipAndStart => 'Skip & Start'; @override - String get setupAllowAccessToManageFiles => 'Please enable \"Allow access to manage all files\" in the next screen.'; + String get setupAllowAccessToManageFiles => + 'Please enable \"Allow access to manage all files\" in the next screen.'; @override - String get setupGetCredentialsFromSpotify => 'Get credentials from developer.spotify.com'; + String get setupGetCredentialsFromSpotify => + 'Get credentials from developer.spotify.com'; @override String get dialogCancel => 'Cancel'; @@ -3016,7 +3152,8 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get dialogDiscardChanges => 'Discard Changes?'; @override - String get dialogUnsavedChanges => 'You have unsaved changes. Do you want to discard them?'; + String get dialogUnsavedChanges => + 'You have unsaved changes. Do you want to discard them?'; @override String get dialogDownloadFailed => 'Download Failed'; @@ -3034,7 +3171,8 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get dialogClearAll => 'Clear All'; @override - String get dialogClearAllDownloads => 'Are you sure you want to clear all downloads?'; + String get dialogClearAllDownloads => + 'Are you sure you want to clear all downloads?'; @override String get dialogRemoveFromDevice => 'Remove from device?'; @@ -3043,7 +3181,8 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get dialogRemoveExtension => 'Remove Extension'; @override - String get dialogRemoveExtensionMessage => 'Are you sure you want to remove this extension? This cannot be undone.'; + String get dialogRemoveExtensionMessage => + 'Are you sure you want to remove this extension? This cannot be undone.'; @override String get dialogUninstallExtension => 'Uninstall Extension?'; @@ -3057,7 +3196,8 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get dialogClearHistoryTitle => 'Clear History'; @override - String get dialogClearHistoryMessage => 'Are you sure you want to clear all download history? This cannot be undone.'; + String get dialogClearHistoryMessage => + 'Are you sure you want to clear all download history? This cannot be undone.'; @override String get dialogDeleteSelectedTitle => 'Delete Selected'; @@ -3152,7 +3292,8 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get snackbarProviderPrioritySaved => 'Provider priority saved'; @override - String get snackbarMetadataProviderSaved => 'Metadata provider priority saved'; + String get snackbarMetadataProviderSaved => + 'Metadata provider priority saved'; @override String snackbarExtensionInstalled(String extensionName) { @@ -3174,7 +3315,8 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get errorRateLimited => 'Rate Limited'; @override - String get errorRateLimitedMessage => 'Too many requests. Please wait a moment before searching again.'; + String get errorRateLimitedMessage => + 'Too many requests. Please wait a moment before searching again.'; @override String errorFailedToLoad(String item) { @@ -3341,19 +3483,23 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get folderOrganizationByArtistAlbum => 'Artist/Album'; @override - String get folderOrganizationDescription => 'Organize downloaded files into folders'; + String get folderOrganizationDescription => + 'Organize downloaded files into folders'; @override String get folderOrganizationNoneSubtitle => 'All files in download folder'; @override - String get folderOrganizationByArtistSubtitle => 'Separate folder for each artist'; + String get folderOrganizationByArtistSubtitle => + 'Separate folder for each artist'; @override - String get folderOrganizationByAlbumSubtitle => 'Separate folder for each album'; + String get folderOrganizationByAlbumSubtitle => + 'Separate folder for each album'; @override - String get folderOrganizationByArtistAlbumSubtitle => 'Nested folders for artist and album'; + String get folderOrganizationByArtistAlbumSubtitle => + 'Nested folders for artist and album'; @override String get updateAvailable => 'Update Available'; @@ -3412,10 +3558,12 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get providerPriorityTitle => 'Provider Priority'; @override - String get providerPriorityDescription => 'Drag to reorder download providers. The app will try providers from top to bottom when downloading tracks.'; + String get providerPriorityDescription => + 'Drag to reorder download providers. The app will try providers from top to bottom when downloading tracks.'; @override - String get providerPriorityInfo => 'If a track is not available on the first provider, the app will automatically try the next one.'; + String get providerPriorityInfo => + 'If a track is not available on the first provider, the app will automatically try the next one.'; @override String get providerBuiltIn => 'Built-in'; @@ -3427,16 +3575,19 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get metadataProviderPriority => 'Metadata Provider Priority'; @override - String get metadataProviderPrioritySubtitle => 'Order used when fetching track metadata'; + String get metadataProviderPrioritySubtitle => + 'Order used when fetching track metadata'; @override String get metadataProviderPriorityTitle => 'Metadata Priority'; @override - String get metadataProviderPriorityDescription => 'Drag to reorder metadata providers. The app will try providers from top to bottom when searching for tracks and fetching metadata.'; + String get metadataProviderPriorityDescription => + 'Drag to reorder metadata providers. The app will try providers from top to bottom when searching for tracks and fetching metadata.'; @override - String get metadataProviderPriorityInfo => 'Deezer has no rate limits and is recommended as primary. Spotify may rate limit after many requests.'; + String get metadataProviderPriorityInfo => + 'Deezer has no rate limits and is recommended as primary. Spotify may rate limit after many requests.'; @override String get metadataNoRateLimits => 'No rate limits'; @@ -3508,16 +3659,19 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get logIssueSummary => 'Issue Summary'; @override - String get logIspBlockingDescription => 'Your ISP may be blocking access to download services'; + String get logIspBlockingDescription => + 'Your ISP may be blocking access to download services'; @override - String get logIspBlockingSuggestion => 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; + String get logIspBlockingSuggestion => + 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; @override String get logRateLimitedDescription => 'Too many requests to the service'; @override - String get logRateLimitedSuggestion => 'Wait a few minutes before trying again'; + String get logRateLimitedSuggestion => + 'Wait a few minutes before trying again'; @override String get logNetworkErrorDescription => 'Connection issues detected'; @@ -3526,10 +3680,12 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get logNetworkErrorSuggestion => 'Check your internet connection'; @override - String get logTrackNotFoundDescription => 'Some tracks could not be found on download services'; + String get logTrackNotFoundDescription => + 'Some tracks could not be found on download services'; @override - String get logTrackNotFoundSuggestion => 'The track may not be available in lossless quality'; + String get logTrackNotFoundSuggestion => + 'The track may not be available in lossless quality'; @override String logTotalErrors(int count) { @@ -3555,7 +3711,8 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get credentialsTitle => 'Spotify Credentials'; @override - String get credentialsDescription => 'Enter your Client ID and Secret to use your own Spotify application quota.'; + String get credentialsDescription => + 'Enter your Client ID and Secret to use your own Spotify application quota.'; @override String get credentialsClientId => 'Client ID'; @@ -3609,7 +3766,8 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get lyricsMode => 'Lyrics Mode'; @override - String get lyricsModeDescription => 'Choose how lyrics are saved with your downloads'; + String get lyricsModeDescription => + 'Choose how lyrics are saved with your downloads'; @override String get lyricsModeEmbed => 'Embed in file'; @@ -3621,7 +3779,8 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get lyricsModeExternal => 'External .lrc file'; @override - String get lyricsModeExternalSubtitle => 'Separate .lrc file for players like Samsung Music'; + String get lyricsModeExternalSubtitle => + 'Separate .lrc file for players like Samsung Music'; @override String get lyricsModeBoth => 'Both'; @@ -3781,7 +3940,8 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get trackDeleteConfirmTitle => 'Remove from device?'; @override - String get trackDeleteConfirmMessage => 'This will permanently delete the downloaded file and remove it from your history.'; + String get trackDeleteConfirmMessage => + 'This will permanently delete the downloaded file and remove it from your history.'; @override String trackCannotOpen(String message) { @@ -3933,13 +4093,15 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get extensionsNoExtensions => 'No extensions installed'; @override - String get extensionsNoExtensionsSubtitle => 'Install .spotiflac-ext files to add new providers'; + String get extensionsNoExtensionsSubtitle => + 'Install .spotiflac-ext files to add new providers'; @override String get extensionsInstallButton => 'Install Extension'; @override - String get extensionsInfoTip => 'Extensions can add new metadata and download providers. Only install extensions from trusted sources.'; + String get extensionsInfoTip => + 'Extensions can add new metadata and download providers. Only install extensions from trusted sources.'; @override String get extensionsInstalledSuccess => 'Extension installed successfully'; @@ -3951,16 +4113,19 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get extensionsDownloadPrioritySubtitle => 'Set download service order'; @override - String get extensionsNoDownloadProvider => 'No extensions with download provider'; + String get extensionsNoDownloadProvider => + 'No extensions with download provider'; @override String get extensionsMetadataPriority => 'Metadata Priority'; @override - String get extensionsMetadataPrioritySubtitle => 'Set search & metadata source order'; + String get extensionsMetadataPrioritySubtitle => + 'Set search & metadata source order'; @override - String get extensionsNoMetadataProvider => 'No extensions with metadata provider'; + String get extensionsNoMetadataProvider => + 'No extensions with metadata provider'; @override String get extensionsSearchProvider => 'Search Provider'; @@ -3969,7 +4134,8 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get extensionsNoCustomSearch => 'No extensions with custom search'; @override - String get extensionsSearchProviderDescription => 'Choose which service to use for searching tracks'; + String get extensionsSearchProviderDescription => + 'Choose which service to use for searching tracks'; @override String get extensionsCustomSearch => 'Custom search'; @@ -3996,7 +4162,8 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get qualityHiResFlacMaxSubtitle => '24-bit / up to 192kHz'; @override - String get qualityNote => 'Actual quality depends on track availability from the service'; + String get qualityNote => + 'Actual quality depends on track availability from the service'; @override String get downloadAskBeforeDownload => 'Ask Before Download'; @@ -4086,7 +4253,8 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get queueClearAll => 'Clear All'; @override - String get queueClearAllMessage => 'Are you sure you want to clear all downloads?'; + String get queueClearAllMessage => + 'Are you sure you want to clear all downloads?'; @override String get queueEmpty => 'No downloads in queue'; @@ -4122,7 +4290,8 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get albumFolderArtistYearAlbum => 'Artist / [Year] Album'; @override - String get albumFolderArtistYearAlbumSubtitle => 'Albums/Artist Name/[2005] Album Name/'; + String get albumFolderArtistYearAlbumSubtitle => + 'Albums/Artist Name/[2005] Album Name/'; @override String get albumFolderAlbumOnly => 'Album Only'; @@ -4140,7 +4309,8 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get albumFolderArtistAlbumSingles => 'Artist / Album + Singles'; @override - String get albumFolderArtistAlbumSinglesSubtitle => 'Artist/Album/ and Artist/Singles/'; + String get albumFolderArtistAlbumSinglesSubtitle => + 'Artist/Album/ and Artist/Singles/'; @override String get downloadedAlbumDeleteSelected => 'Delete Selected'; @@ -4250,7 +4420,8 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get discographySelectAlbums => 'Select Albums...'; @override - String get discographySelectAlbumsSubtitle => 'Choose specific albums or singles'; + String get discographySelectAlbumsSubtitle => + 'Choose specific albums or singles'; @override String get discographyFetchingTracks => 'Fetching tracks...'; @@ -4287,13 +4458,14 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { /// The translations for Chinese, as used in Taiwan (`zh_TW`). class AppLocalizationsZhTw extends AppLocalizationsZh { - AppLocalizationsZhTw(): super('zh_TW'); + AppLocalizationsZhTw() : super('zh_TW'); @override String get appName => 'SpotiFLAC'; @override - String get appDescription => 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; + String get appDescription => + 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; @override String get navHome => 'Home'; @@ -4379,13 +4551,15 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get historyNoAlbums => 'No album downloads'; @override - String get historyNoAlbumsSubtitle => 'Download multiple tracks from an album to see them here'; + String get historyNoAlbumsSubtitle => + 'Download multiple tracks from an album to see them here'; @override String get historyNoSingles => 'No single downloads'; @override - String get historyNoSinglesSubtitle => 'Single track downloads will appear here'; + String get historyNoSinglesSubtitle => + 'Single track downloads will appear here'; @override String get historySearchHint => 'Search history...'; @@ -4433,7 +4607,8 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get downloadAskQuality => 'Ask Quality Before Download'; @override - String get downloadAskQualitySubtitle => 'Show quality picker for each download'; + String get downloadAskQualitySubtitle => + 'Show quality picker for each download'; @override String get downloadFilenameFormat => 'Filename Format'; @@ -4445,7 +4620,8 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get downloadSeparateSingles => 'Separate Singles'; @override - String get downloadSeparateSinglesSubtitle => 'Put single tracks in a separate folder'; + String get downloadSeparateSinglesSubtitle => + 'Put single tracks in a separate folder'; @override String get qualityBest => 'Best Available'; @@ -4502,7 +4678,8 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get optionsPrimaryProvider => 'Primary Provider'; @override - String get optionsPrimaryProviderSubtitle => 'Service used when searching by track name.'; + String get optionsPrimaryProviderSubtitle => + 'Service used when searching by track name.'; @override String optionsUsingExtension(String extensionName) { @@ -4510,13 +4687,15 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { } @override - String get optionsSwitchBack => 'Tap Deezer or Spotify to switch back from extension'; + String get optionsSwitchBack => + 'Tap Deezer or Spotify to switch back from extension'; @override String get optionsAutoFallback => 'Auto Fallback'; @override - String get optionsAutoFallbackSubtitle => 'Try other services if download fails'; + String get optionsAutoFallbackSubtitle => + 'Try other services if download fails'; @override String get optionsUseExtensionProviders => 'Use Extension Providers'; @@ -4531,13 +4710,15 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get optionsEmbedLyrics => 'Embed Lyrics'; @override - String get optionsEmbedLyricsSubtitle => 'Embed synced lyrics into FLAC files'; + String get optionsEmbedLyricsSubtitle => + 'Embed synced lyrics into FLAC files'; @override String get optionsMaxQualityCover => 'Max Quality Cover'; @override - String get optionsMaxQualityCoverSubtitle => 'Download highest resolution cover art'; + String get optionsMaxQualityCoverSubtitle => + 'Download highest resolution cover art'; @override String get optionsConcurrentDownloads => 'Concurrent Downloads'; @@ -4551,7 +4732,8 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { } @override - String get optionsConcurrentWarning => 'Parallel downloads may trigger rate limiting'; + String get optionsConcurrentWarning => + 'Parallel downloads may trigger rate limiting'; @override String get optionsExtensionStore => 'Extension Store'; @@ -4563,7 +4745,8 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get optionsCheckUpdates => 'Check for Updates'; @override - String get optionsCheckUpdatesSubtitle => 'Notify when new version is available'; + String get optionsCheckUpdatesSubtitle => + 'Notify when new version is available'; @override String get optionsUpdateChannel => 'Update Channel'; @@ -4575,13 +4758,15 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get optionsUpdateChannelPreview => 'Get preview releases'; @override - String get optionsUpdateChannelWarning => 'Preview may contain bugs or incomplete features'; + String get optionsUpdateChannelWarning => + 'Preview may contain bugs or incomplete features'; @override String get optionsClearHistory => 'Clear Download History'; @override - String get optionsClearHistorySubtitle => 'Remove all downloaded tracks from history'; + String get optionsClearHistorySubtitle => + 'Remove all downloaded tracks from history'; @override String get optionsDetailedLogging => 'Detailed Logging'; @@ -4604,7 +4789,8 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get optionsSpotifyCredentialsRequired => 'Required - tap to configure'; @override - String get optionsSpotifyWarning => 'Spotify requires your own API credentials. Get them free from developer.spotify.com'; + String get optionsSpotifyWarning => + 'Spotify requires your own API credentials. Get them free from developer.spotify.com'; @override String get extensionsTitle => 'Extensions'; @@ -4668,7 +4854,8 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get aboutOriginalCreator => 'Creator of the original SpotiFLAC'; @override - String get aboutLogoArtist => 'The talented artist who created our beautiful app logo!'; + String get aboutLogoArtist => + 'The talented artist who created our beautiful app logo!'; @override String get aboutTranslators => 'Translators'; @@ -4728,25 +4915,30 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get aboutVersion => 'Version'; @override - String get aboutBinimumDesc => 'The creator of QQDL & HiFi API. Without this API, Tidal downloads wouldn\'t exist!'; + String get aboutBinimumDesc => + 'The creator of QQDL & HiFi API. Without this API, Tidal downloads wouldn\'t exist!'; @override - String get aboutSachinsenalDesc => 'The original HiFi project creator. The foundation of Tidal integration!'; + String get aboutSachinsenalDesc => + 'The original HiFi project creator. The foundation of Tidal integration!'; @override String get aboutDoubleDouble => 'DoubleDouble'; @override - String get aboutDoubleDoubleDesc => 'Amazing API for Amazon Music downloads. Thank you for making it free!'; + String get aboutDoubleDoubleDesc => + 'Amazing API for Amazon Music downloads. Thank you for making it free!'; @override String get aboutDabMusic => 'DAB Music'; @override - String get aboutDabMusicDesc => 'The best Qobuz streaming API. Hi-Res downloads wouldn\'t be possible without this!'; + String get aboutDabMusicDesc => + 'The best Qobuz streaming API. Hi-Res downloads wouldn\'t be possible without this!'; @override - String get aboutAppDescription => 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; + String get aboutAppDescription => + 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; @override String get albumTitle => 'Album'; @@ -4851,7 +5043,8 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get setupStoragePermission => 'Storage Permission'; @override - String get setupStoragePermissionSubtitle => 'Required to save downloaded files'; + String get setupStoragePermissionSubtitle => + 'Required to save downloaded files'; @override String get setupStoragePermissionGranted => 'Permission granted'; @@ -4878,16 +5071,19 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get setupStorageAccessRequired => 'Storage Access Required'; @override - String get setupStorageAccessMessage => 'SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.'; + String get setupStorageAccessMessage => + 'SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.'; @override - String get setupStorageAccessMessageAndroid11 => 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; + String get setupStorageAccessMessageAndroid11 => + 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; @override String get setupOpenSettings => 'Open Settings'; @override - String get setupPermissionDeniedMessage => 'Permission denied. Please grant all permissions to continue.'; + String get setupPermissionDeniedMessage => + 'Permission denied. Please grant all permissions to continue.'; @override String setupPermissionRequired(String permissionType) { @@ -4906,7 +5102,8 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get setupUseDefaultFolder => 'Use Default Folder?'; @override - String get setupNoFolderSelected => 'No folder selected. Would you like to use the default Music folder?'; + String get setupNoFolderSelected => + 'No folder selected. Would you like to use the default Music folder?'; @override String get setupUseDefault => 'Use Default'; @@ -4915,13 +5112,15 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get setupDownloadLocationTitle => 'Download Location'; @override - String get setupDownloadLocationIosMessage => 'On iOS, downloads are saved to the app\'s Documents folder. You can access them via the Files app.'; + String get setupDownloadLocationIosMessage => + 'On iOS, downloads are saved to the app\'s Documents folder. You can access them via the Files app.'; @override String get setupAppDocumentsFolder => 'App Documents Folder'; @override - String get setupAppDocumentsFolderSubtitle => 'Recommended - accessible via Files app'; + String get setupAppDocumentsFolderSubtitle => + 'Recommended - accessible via Files app'; @override String get setupChooseFromFiles => 'Choose from Files'; @@ -4930,7 +5129,8 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get setupChooseFromFilesSubtitle => 'Select iCloud or other location'; @override - String get setupIosEmptyFolderWarning => 'iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.'; + String get setupIosEmptyFolderWarning => + 'iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.'; @override String get setupDownloadInFlac => 'Download Spotify tracks in FLAC'; @@ -4957,7 +5157,8 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get setupStorageRequired => 'Storage Permission Required'; @override - String get setupStorageDescription => 'SpotiFLAC needs storage permission to save your downloaded music files.'; + String get setupStorageDescription => + 'SpotiFLAC needs storage permission to save your downloaded music files.'; @override String get setupNotificationGranted => 'Notification Permission Granted!'; @@ -4966,7 +5167,8 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get setupNotificationEnable => 'Enable Notifications'; @override - String get setupNotificationDescription => 'Get notified when downloads complete or require attention.'; + String get setupNotificationDescription => + 'Get notified when downloads complete or require attention.'; @override String get setupFolderSelected => 'Download Folder Selected!'; @@ -4975,7 +5177,8 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get setupFolderChoose => 'Choose Download Folder'; @override - String get setupFolderDescription => 'Select a folder where your downloaded music will be saved.'; + String get setupFolderDescription => + 'Select a folder where your downloaded music will be saved.'; @override String get setupChangeFolder => 'Change Folder'; @@ -4987,7 +5190,8 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get setupSpotifyApiOptional => 'Spotify API (Optional)'; @override - String get setupSpotifyApiDescription => 'Add your Spotify API credentials for better search results and access to Spotify-exclusive content.'; + String get setupSpotifyApiDescription => + 'Add your Spotify API credentials for better search results and access to Spotify-exclusive content.'; @override String get setupUseSpotifyApi => 'Use Spotify API'; @@ -5005,7 +5209,8 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get setupEnterClientSecret => 'Enter Spotify Client Secret'; @override - String get setupGetFreeCredentials => 'Get your free API credentials from the Spotify Developer Dashboard.'; + String get setupGetFreeCredentials => + 'Get your free API credentials from the Spotify Developer Dashboard.'; @override String get setupEnableNotifications => 'Enable Notifications'; @@ -5014,10 +5219,12 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get setupProceedToNextStep => 'You can now proceed to the next step.'; @override - String get setupNotificationProgressDescription => 'You will receive download progress notifications.'; + String get setupNotificationProgressDescription => + 'You will receive download progress notifications.'; @override - String get setupNotificationBackgroundDescription => 'Get notified about download progress and completion. This helps you track downloads when the app is in background.'; + String get setupNotificationBackgroundDescription => + 'Get notified about download progress and completion. This helps you track downloads when the app is in background.'; @override String get setupSkipForNow => 'Skip for now'; @@ -5035,10 +5242,12 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get setupSkipAndStart => 'Skip & Start'; @override - String get setupAllowAccessToManageFiles => 'Please enable \"Allow access to manage all files\" in the next screen.'; + String get setupAllowAccessToManageFiles => + 'Please enable \"Allow access to manage all files\" in the next screen.'; @override - String get setupGetCredentialsFromSpotify => 'Get credentials from developer.spotify.com'; + String get setupGetCredentialsFromSpotify => + 'Get credentials from developer.spotify.com'; @override String get dialogCancel => 'Cancel'; @@ -5089,7 +5298,8 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get dialogDiscardChanges => 'Discard Changes?'; @override - String get dialogUnsavedChanges => 'You have unsaved changes. Do you want to discard them?'; + String get dialogUnsavedChanges => + 'You have unsaved changes. Do you want to discard them?'; @override String get dialogDownloadFailed => 'Download Failed'; @@ -5107,7 +5317,8 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get dialogClearAll => 'Clear All'; @override - String get dialogClearAllDownloads => 'Are you sure you want to clear all downloads?'; + String get dialogClearAllDownloads => + 'Are you sure you want to clear all downloads?'; @override String get dialogRemoveFromDevice => 'Remove from device?'; @@ -5116,7 +5327,8 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get dialogRemoveExtension => 'Remove Extension'; @override - String get dialogRemoveExtensionMessage => 'Are you sure you want to remove this extension? This cannot be undone.'; + String get dialogRemoveExtensionMessage => + 'Are you sure you want to remove this extension? This cannot be undone.'; @override String get dialogUninstallExtension => 'Uninstall Extension?'; @@ -5130,7 +5342,8 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get dialogClearHistoryTitle => 'Clear History'; @override - String get dialogClearHistoryMessage => 'Are you sure you want to clear all download history? This cannot be undone.'; + String get dialogClearHistoryMessage => + 'Are you sure you want to clear all download history? This cannot be undone.'; @override String get dialogDeleteSelectedTitle => 'Delete Selected'; @@ -5225,7 +5438,8 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get snackbarProviderPrioritySaved => 'Provider priority saved'; @override - String get snackbarMetadataProviderSaved => 'Metadata provider priority saved'; + String get snackbarMetadataProviderSaved => + 'Metadata provider priority saved'; @override String snackbarExtensionInstalled(String extensionName) { @@ -5247,7 +5461,8 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get errorRateLimited => 'Rate Limited'; @override - String get errorRateLimitedMessage => 'Too many requests. Please wait a moment before searching again.'; + String get errorRateLimitedMessage => + 'Too many requests. Please wait a moment before searching again.'; @override String errorFailedToLoad(String item) { @@ -5414,19 +5629,23 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get folderOrganizationByArtistAlbum => 'Artist/Album'; @override - String get folderOrganizationDescription => 'Organize downloaded files into folders'; + String get folderOrganizationDescription => + 'Organize downloaded files into folders'; @override String get folderOrganizationNoneSubtitle => 'All files in download folder'; @override - String get folderOrganizationByArtistSubtitle => 'Separate folder for each artist'; + String get folderOrganizationByArtistSubtitle => + 'Separate folder for each artist'; @override - String get folderOrganizationByAlbumSubtitle => 'Separate folder for each album'; + String get folderOrganizationByAlbumSubtitle => + 'Separate folder for each album'; @override - String get folderOrganizationByArtistAlbumSubtitle => 'Nested folders for artist and album'; + String get folderOrganizationByArtistAlbumSubtitle => + 'Nested folders for artist and album'; @override String get updateAvailable => 'Update Available'; @@ -5485,10 +5704,12 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get providerPriorityTitle => 'Provider Priority'; @override - String get providerPriorityDescription => 'Drag to reorder download providers. The app will try providers from top to bottom when downloading tracks.'; + String get providerPriorityDescription => + 'Drag to reorder download providers. The app will try providers from top to bottom when downloading tracks.'; @override - String get providerPriorityInfo => 'If a track is not available on the first provider, the app will automatically try the next one.'; + String get providerPriorityInfo => + 'If a track is not available on the first provider, the app will automatically try the next one.'; @override String get providerBuiltIn => 'Built-in'; @@ -5500,16 +5721,19 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get metadataProviderPriority => 'Metadata Provider Priority'; @override - String get metadataProviderPrioritySubtitle => 'Order used when fetching track metadata'; + String get metadataProviderPrioritySubtitle => + 'Order used when fetching track metadata'; @override String get metadataProviderPriorityTitle => 'Metadata Priority'; @override - String get metadataProviderPriorityDescription => 'Drag to reorder metadata providers. The app will try providers from top to bottom when searching for tracks and fetching metadata.'; + String get metadataProviderPriorityDescription => + 'Drag to reorder metadata providers. The app will try providers from top to bottom when searching for tracks and fetching metadata.'; @override - String get metadataProviderPriorityInfo => 'Deezer has no rate limits and is recommended as primary. Spotify may rate limit after many requests.'; + String get metadataProviderPriorityInfo => + 'Deezer has no rate limits and is recommended as primary. Spotify may rate limit after many requests.'; @override String get metadataNoRateLimits => 'No rate limits'; @@ -5581,16 +5805,19 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get logIssueSummary => 'Issue Summary'; @override - String get logIspBlockingDescription => 'Your ISP may be blocking access to download services'; + String get logIspBlockingDescription => + 'Your ISP may be blocking access to download services'; @override - String get logIspBlockingSuggestion => 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; + String get logIspBlockingSuggestion => + 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; @override String get logRateLimitedDescription => 'Too many requests to the service'; @override - String get logRateLimitedSuggestion => 'Wait a few minutes before trying again'; + String get logRateLimitedSuggestion => + 'Wait a few minutes before trying again'; @override String get logNetworkErrorDescription => 'Connection issues detected'; @@ -5599,10 +5826,12 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get logNetworkErrorSuggestion => 'Check your internet connection'; @override - String get logTrackNotFoundDescription => 'Some tracks could not be found on download services'; + String get logTrackNotFoundDescription => + 'Some tracks could not be found on download services'; @override - String get logTrackNotFoundSuggestion => 'The track may not be available in lossless quality'; + String get logTrackNotFoundSuggestion => + 'The track may not be available in lossless quality'; @override String logTotalErrors(int count) { @@ -5628,7 +5857,8 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get credentialsTitle => 'Spotify Credentials'; @override - String get credentialsDescription => 'Enter your Client ID and Secret to use your own Spotify application quota.'; + String get credentialsDescription => + 'Enter your Client ID and Secret to use your own Spotify application quota.'; @override String get credentialsClientId => 'Client ID'; @@ -5682,7 +5912,8 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get lyricsMode => 'Lyrics Mode'; @override - String get lyricsModeDescription => 'Choose how lyrics are saved with your downloads'; + String get lyricsModeDescription => + 'Choose how lyrics are saved with your downloads'; @override String get lyricsModeEmbed => 'Embed in file'; @@ -5694,7 +5925,8 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get lyricsModeExternal => 'External .lrc file'; @override - String get lyricsModeExternalSubtitle => 'Separate .lrc file for players like Samsung Music'; + String get lyricsModeExternalSubtitle => + 'Separate .lrc file for players like Samsung Music'; @override String get lyricsModeBoth => 'Both'; @@ -5854,7 +6086,8 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get trackDeleteConfirmTitle => 'Remove from device?'; @override - String get trackDeleteConfirmMessage => 'This will permanently delete the downloaded file and remove it from your history.'; + String get trackDeleteConfirmMessage => + 'This will permanently delete the downloaded file and remove it from your history.'; @override String trackCannotOpen(String message) { @@ -6006,13 +6239,15 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get extensionsNoExtensions => 'No extensions installed'; @override - String get extensionsNoExtensionsSubtitle => 'Install .spotiflac-ext files to add new providers'; + String get extensionsNoExtensionsSubtitle => + 'Install .spotiflac-ext files to add new providers'; @override String get extensionsInstallButton => 'Install Extension'; @override - String get extensionsInfoTip => 'Extensions can add new metadata and download providers. Only install extensions from trusted sources.'; + String get extensionsInfoTip => + 'Extensions can add new metadata and download providers. Only install extensions from trusted sources.'; @override String get extensionsInstalledSuccess => 'Extension installed successfully'; @@ -6024,16 +6259,19 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get extensionsDownloadPrioritySubtitle => 'Set download service order'; @override - String get extensionsNoDownloadProvider => 'No extensions with download provider'; + String get extensionsNoDownloadProvider => + 'No extensions with download provider'; @override String get extensionsMetadataPriority => 'Metadata Priority'; @override - String get extensionsMetadataPrioritySubtitle => 'Set search & metadata source order'; + String get extensionsMetadataPrioritySubtitle => + 'Set search & metadata source order'; @override - String get extensionsNoMetadataProvider => 'No extensions with metadata provider'; + String get extensionsNoMetadataProvider => + 'No extensions with metadata provider'; @override String get extensionsSearchProvider => 'Search Provider'; @@ -6042,7 +6280,8 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get extensionsNoCustomSearch => 'No extensions with custom search'; @override - String get extensionsSearchProviderDescription => 'Choose which service to use for searching tracks'; + String get extensionsSearchProviderDescription => + 'Choose which service to use for searching tracks'; @override String get extensionsCustomSearch => 'Custom search'; @@ -6069,7 +6308,8 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get qualityHiResFlacMaxSubtitle => '24-bit / up to 192kHz'; @override - String get qualityNote => 'Actual quality depends on track availability from the service'; + String get qualityNote => + 'Actual quality depends on track availability from the service'; @override String get downloadAskBeforeDownload => 'Ask Before Download'; @@ -6159,7 +6399,8 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get queueClearAll => 'Clear All'; @override - String get queueClearAllMessage => 'Are you sure you want to clear all downloads?'; + String get queueClearAllMessage => + 'Are you sure you want to clear all downloads?'; @override String get queueEmpty => 'No downloads in queue'; @@ -6195,7 +6436,8 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get albumFolderArtistYearAlbum => 'Artist / [Year] Album'; @override - String get albumFolderArtistYearAlbumSubtitle => 'Albums/Artist Name/[2005] Album Name/'; + String get albumFolderArtistYearAlbumSubtitle => + 'Albums/Artist Name/[2005] Album Name/'; @override String get albumFolderAlbumOnly => 'Album Only'; @@ -6213,7 +6455,8 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get albumFolderArtistAlbumSingles => 'Artist / Album + Singles'; @override - String get albumFolderArtistAlbumSinglesSubtitle => 'Artist/Album/ and Artist/Singles/'; + String get albumFolderArtistAlbumSinglesSubtitle => + 'Artist/Album/ and Artist/Singles/'; @override String get downloadedAlbumDeleteSelected => 'Delete Selected'; @@ -6323,7 +6566,8 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get discographySelectAlbums => 'Select Albums...'; @override - String get discographySelectAlbumsSubtitle => 'Choose specific albums or singles'; + String get discographySelectAlbumsSubtitle => + 'Choose specific albums or singles'; @override String get discographyFetchingTracks => 'Fetching tracks...'; diff --git a/lib/l10n/arb/app_en.arb b/lib/l10n/arb/app_en.arb index 943bc832..f5606cf9 100644 --- a/lib/l10n/arb/app_en.arb +++ b/lib/l10n/arb/app_en.arb @@ -1519,6 +1519,14 @@ "@cloudSettingsTestConnection": {"description": "Test connection button"}, "cloudSettingsInfo": "Downloaded files will be automatically uploaded to your cloud storage after download completes. Original files are kept on your device.", "@cloudSettingsInfo": {"description": "Info card explaining the feature"}, + "cloudSettingsUploadQueue": "Upload Queue", + "@cloudSettingsUploadQueue": {"description": "Section header for upload queue status"}, + "cloudSettingsRetryFailed": "Retry Failed", + "@cloudSettingsRetryFailed": {"description": "Button to retry failed uploads"}, + "cloudSettingsClearDone": "Clear Done", + "@cloudSettingsClearDone": {"description": "Button to clear completed uploads"}, + "cloudSettingsRecentUploads": "Recent Uploads", + "@cloudSettingsRecentUploads": {"description": "Section header for recent uploads list"}, "queueEmpty": "No downloads in queue", "@queueEmpty": {"description": "Empty queue state title"}, diff --git a/lib/providers/download_queue_provider.dart b/lib/providers/download_queue_provider.dart index acd9b87b..4a651f49 100644 --- a/lib/providers/download_queue_provider.dart +++ b/lib/providers/download_queue_provider.dart @@ -15,6 +15,7 @@ import 'package:spotiflac_android/services/platform_bridge.dart'; import 'package:spotiflac_android/services/ffmpeg_service.dart'; import 'package:spotiflac_android/services/notification_service.dart'; import 'package:spotiflac_android/services/history_database.dart'; +import 'package:spotiflac_android/providers/upload_queue_provider.dart'; import 'package:spotiflac_android/utils/logger.dart'; final _log = AppLogger('DownloadQueue'); @@ -1019,6 +1020,35 @@ void removeItem(String id) { _saveQueueToStorage(); } + /// Trigger cloud upload for a completed download + void _triggerCloudUpload({ + required String filePath, + required String trackName, + required String artistName, + }) { + final settings = ref.read(settingsProvider); + + // Check if cloud upload is enabled + if (!settings.cloudUploadEnabled || settings.cloudProvider == 'none') { + return; + } + + // Check if server is configured + if (settings.cloudServerUrl.isEmpty) { + _log.w('Cloud upload enabled but server URL not configured'); + return; + } + + // Add to upload queue + ref.read(uploadQueueProvider.notifier).addToQueue( + localPath: filePath, + trackName: trackName, + artistName: artistName, + ); + + _log.d('Added to cloud upload queue: $trackName - $artistName'); + } + /// Export failed downloads to a TXT file /// Returns the file path if successful, null otherwise Future exportFailedDownloads() async { @@ -2383,6 +2413,13 @@ result = await PlatformBridge.downloadWithExtensions( ); removeItem(item.id); + + // Trigger cloud upload if enabled + _triggerCloudUpload( + filePath: filePath, + trackName: trackToDownload.name, + artistName: trackToDownload.artistName, + ); } } else { final itemAfterFailure = state.items.firstWhere( diff --git a/lib/providers/upload_queue_provider.dart b/lib/providers/upload_queue_provider.dart new file mode 100644 index 00000000..6608e039 --- /dev/null +++ b/lib/providers/upload_queue_provider.dart @@ -0,0 +1,296 @@ +import 'dart:async'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:spotiflac_android/services/cloud_upload_service.dart'; +import 'package:spotiflac_android/providers/settings_provider.dart'; + +/// Status of an upload item +enum UploadStatus { + pending, + uploading, + completed, + failed, +} + +/// An item in the upload queue +class UploadQueueItem { + final String id; + final String localPath; + final String remotePath; + final String trackName; + final String artistName; + final UploadStatus status; + final double progress; + final String? error; + final DateTime queuedAt; + final DateTime? completedAt; + + const UploadQueueItem({ + required this.id, + required this.localPath, + required this.remotePath, + required this.trackName, + required this.artistName, + this.status = UploadStatus.pending, + this.progress = 0.0, + this.error, + required this.queuedAt, + this.completedAt, + }); + + UploadQueueItem copyWith({ + UploadStatus? status, + double? progress, + String? error, + DateTime? completedAt, + }) { + return UploadQueueItem( + id: id, + localPath: localPath, + remotePath: remotePath, + trackName: trackName, + artistName: artistName, + status: status ?? this.status, + progress: progress ?? this.progress, + error: error ?? this.error, + queuedAt: queuedAt, + completedAt: completedAt ?? this.completedAt, + ); + } +} + +/// State of the upload queue +class UploadQueueState { + final List items; + final bool isProcessing; + final int completedCount; + final int failedCount; + + const UploadQueueState({ + this.items = const [], + this.isProcessing = false, + this.completedCount = 0, + this.failedCount = 0, + }); + + UploadQueueState copyWith({ + List? items, + bool? isProcessing, + int? completedCount, + int? failedCount, + }) { + return UploadQueueState( + items: items ?? this.items, + isProcessing: isProcessing ?? this.isProcessing, + completedCount: completedCount ?? this.completedCount, + failedCount: failedCount ?? this.failedCount, + ); + } + + int get pendingCount => items.where((i) => i.status == UploadStatus.pending).length; + int get uploadingCount => items.where((i) => i.status == UploadStatus.uploading).length; +} + +/// Provider for managing the cloud upload queue +class UploadQueueNotifier extends Notifier { + final CloudUploadService _uploadService = CloudUploadService.instance; + bool _isProcessing = false; + + @override + UploadQueueState build() { + return const UploadQueueState(); + } + + /// Add a file to the upload queue + void addToQueue({ + required String localPath, + required String trackName, + required String artistName, + }) { + final settings = ref.read(settingsProvider); + + // Don't add if cloud upload is disabled + if (!settings.cloudUploadEnabled || settings.cloudProvider == 'none') { + return; + } + + final remotePath = _uploadService.getRemotePath( + localFilePath: localPath, + baseRemotePath: settings.cloudRemotePath, + downloadDirectory: settings.downloadDirectory, + ); + + final item = UploadQueueItem( + id: '${DateTime.now().millisecondsSinceEpoch}_${localPath.hashCode}', + localPath: localPath, + remotePath: remotePath, + trackName: trackName, + artistName: artistName, + queuedAt: DateTime.now(), + ); + + state = state.copyWith( + items: [...state.items, item], + ); + + // Start processing if not already + _processQueue(); + } + + /// Process the upload queue + Future _processQueue() async { + if (_isProcessing) return; + _isProcessing = true; + state = state.copyWith(isProcessing: true); + + final settings = ref.read(settingsProvider); + + while (true) { + // Find next pending item + final pendingIndex = state.items.indexWhere( + (i) => i.status == UploadStatus.pending, + ); + + if (pendingIndex == -1) break; + + // Update status to uploading + final item = state.items[pendingIndex]; + _updateItem(pendingIndex, item.copyWith(status: UploadStatus.uploading)); + + // Perform upload based on provider + CloudUploadResult result; + if (settings.cloudProvider == 'webdav') { + result = await _uploadService.uploadFileWebDAV( + localPath: item.localPath, + remotePath: item.remotePath, + serverUrl: settings.cloudServerUrl, + username: settings.cloudUsername, + password: settings.cloudPassword, + onProgress: (sent, total) { + if (total > 0) { + final progress = sent / total; + _updateItem(pendingIndex, item.copyWith( + status: UploadStatus.uploading, + progress: progress, + )); + } + }, + ); + } else if (settings.cloudProvider == 'sftp') { + result = await _uploadService.uploadFileSFTP( + localPath: item.localPath, + remotePath: item.remotePath, + serverUrl: settings.cloudServerUrl, + username: settings.cloudUsername, + password: settings.cloudPassword, + onProgress: (sent, total) { + if (total > 0) { + final progress = sent / total; + _updateItem(pendingIndex, item.copyWith( + status: UploadStatus.uploading, + progress: progress, + )); + } + }, + ); + } else { + result = CloudUploadResult.failure('Unknown cloud provider: ${settings.cloudProvider}'); + } + + // Update status based on result + if (result.success) { + _updateItem(pendingIndex, item.copyWith( + status: UploadStatus.completed, + progress: 1.0, + completedAt: DateTime.now(), + )); + state = state.copyWith(completedCount: state.completedCount + 1); + } else { + _updateItem(pendingIndex, item.copyWith( + status: UploadStatus.failed, + error: result.error, + )); + state = state.copyWith(failedCount: state.failedCount + 1); + } + + // Small delay between uploads to prevent overwhelming the server + await Future.delayed(const Duration(milliseconds: 500)); + } + + _isProcessing = false; + state = state.copyWith(isProcessing: false); + } + + void _updateItem(int index, UploadQueueItem item) { + if (index < 0 || index >= state.items.length) return; + + final items = [...state.items]; + items[index] = item; + state = state.copyWith(items: items); + } + + /// Retry a failed upload + void retryFailed(String id) { + final index = state.items.indexWhere((i) => i.id == id); + if (index == -1) return; + + final item = state.items[index]; + if (item.status != UploadStatus.failed) return; + + _updateItem(index, item.copyWith( + status: UploadStatus.pending, + progress: 0.0, + error: null, + )); + + state = state.copyWith(failedCount: state.failedCount - 1); + _processQueue(); + } + + /// Retry all failed uploads + void retryAllFailed() { + final items = state.items.map((item) { + if (item.status == UploadStatus.failed) { + return item.copyWith( + status: UploadStatus.pending, + progress: 0.0, + error: null, + ); + } + return item; + }).toList(); + + state = state.copyWith( + items: items, + failedCount: 0, + ); + + _processQueue(); + } + + /// Remove completed items from queue + void clearCompleted() { + final items = state.items.where( + (i) => i.status != UploadStatus.completed, + ).toList(); + + state = state.copyWith( + items: items, + completedCount: 0, + ); + } + + /// Remove a specific item from queue + void removeItem(String id) { + final items = state.items.where((i) => i.id != id).toList(); + state = state.copyWith(items: items); + } + + /// Clear all items from queue + void clearAll() { + state = const UploadQueueState(); + } +} + +final uploadQueueProvider = NotifierProvider( + UploadQueueNotifier.new, +); diff --git a/lib/screens/settings/cloud_settings_page.dart b/lib/screens/settings/cloud_settings_page.dart index 41126df4..1b07d42d 100644 --- a/lib/screens/settings/cloud_settings_page.dart +++ b/lib/screens/settings/cloud_settings_page.dart @@ -2,6 +2,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:spotiflac_android/l10n/l10n.dart'; import 'package:spotiflac_android/providers/settings_provider.dart'; +import 'package:spotiflac_android/providers/upload_queue_provider.dart'; +import 'package:spotiflac_android/services/cloud_upload_service.dart'; import 'package:spotiflac_android/widgets/settings_group.dart'; class CloudSettingsPage extends ConsumerStatefulWidget { @@ -290,6 +292,11 @@ class _CloudSettingsPageState extends ConsumerState { ), ), ), + + // Upload Queue Section + SliverToBoxAdapter( + child: _buildUploadQueueSection(context), + ), ], const SliverToBoxAdapter(child: SizedBox(height: 32)), @@ -304,9 +311,7 @@ class _CloudSettingsPageState extends ConsumerState { case 'webdav': return 'WebDAV (Synology, Nextcloud, QNAP)'; case 'sftp': - return 'SFTP'; - case 'gdrive': - return 'Google Drive (Coming Soon)'; + return 'SFTP (SSH File Transfer)'; default: return 'Not Configured'; } @@ -363,18 +368,6 @@ class _CloudSettingsPageState extends ConsumerState { Navigator.pop(context); }, ), - ListTile( - leading: Icon(Icons.cloud, color: colorScheme.onSurfaceVariant), - title: Text( - 'Google Drive', - style: TextStyle(color: colorScheme.onSurfaceVariant), - ), - subtitle: Text( - 'Coming Soon', - style: TextStyle(color: colorScheme.onSurfaceVariant), - ), - enabled: false, - ), const SizedBox(height: 16), ], ), @@ -388,10 +381,8 @@ class _CloudSettingsPageState extends ConsumerState { _connectionTestResult = null; }); - // TODO: Implement actual connection test - await Future.delayed(const Duration(seconds: 2)); - final settings = ref.read(settingsProvider); + if (settings.cloudServerUrl.isEmpty) { setState(() { _isTestingConnection = false; @@ -400,10 +391,231 @@ class _CloudSettingsPageState extends ConsumerState { return; } - // Placeholder - actual implementation will use webdav_client - setState(() { - _isTestingConnection = false; - _connectionTestResult = 'Success: Connection test will be implemented in next version'; - }); + if (settings.cloudUsername.isEmpty || settings.cloudPassword.isEmpty) { + setState(() { + _isTestingConnection = false; + _connectionTestResult = 'Error: Username and password are required'; + }); + return; + } + + if (settings.cloudProvider == 'webdav') { + final result = await CloudUploadService.instance.testWebDAVConnection( + serverUrl: settings.cloudServerUrl, + username: settings.cloudUsername, + password: settings.cloudPassword, + ); + + setState(() { + _isTestingConnection = false; + _connectionTestResult = result.success + ? 'Success: Connected to WebDAV server' + : 'Error: ${result.error}'; + }); + } else if (settings.cloudProvider == 'sftp') { + final result = await CloudUploadService.instance.testSFTPConnection( + serverUrl: settings.cloudServerUrl, + username: settings.cloudUsername, + password: settings.cloudPassword, + ); + + setState(() { + _isTestingConnection = false; + _connectionTestResult = result.success + ? 'Success: Connected to SFTP server' + : 'Error: ${result.error}'; + }); + } else { + setState(() { + _isTestingConnection = false; + _connectionTestResult = 'Error: No provider selected'; + }); + } + } + + Widget _buildUploadQueueSection(BuildContext context) { + final uploadState = ref.watch(uploadQueueProvider); + final colorScheme = Theme.of(context).colorScheme; + + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SettingsSectionHeader(title: context.l10n.cloudSettingsUploadQueue), + SettingsGroup( + children: [ + // Stats row + Padding( + padding: const EdgeInsets.all(16), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + _buildStatItem( + context, + Icons.hourglass_empty, + uploadState.pendingCount.toString(), + 'Pending', + colorScheme.tertiary, + ), + _buildStatItem( + context, + Icons.cloud_upload, + uploadState.uploadingCount.toString(), + 'Uploading', + colorScheme.primary, + ), + _buildStatItem( + context, + Icons.check_circle, + uploadState.completedCount.toString(), + 'Done', + Colors.green, + ), + _buildStatItem( + context, + Icons.error, + uploadState.failedCount.toString(), + 'Failed', + colorScheme.error, + ), + ], + ), + ), + + // Action buttons + if (uploadState.failedCount > 0 || uploadState.completedCount > 0) + Padding( + padding: const EdgeInsets.fromLTRB(16, 0, 16, 16), + child: Row( + children: [ + if (uploadState.failedCount > 0) + Expanded( + child: OutlinedButton.icon( + onPressed: () { + ref.read(uploadQueueProvider.notifier).retryAllFailed(); + }, + icon: const Icon(Icons.refresh, size: 18), + label: Text(context.l10n.cloudSettingsRetryFailed), + ), + ), + if (uploadState.failedCount > 0 && uploadState.completedCount > 0) + const SizedBox(width: 12), + if (uploadState.completedCount > 0) + Expanded( + child: OutlinedButton.icon( + onPressed: () { + ref.read(uploadQueueProvider.notifier).clearCompleted(); + }, + icon: const Icon(Icons.clear_all, size: 18), + label: Text(context.l10n.cloudSettingsClearDone), + ), + ), + ], + ), + ), + ], + ), + + // Recent uploads list (show last 5) + if (uploadState.items.isNotEmpty) ...[ + Padding( + padding: const EdgeInsets.fromLTRB(16, 16, 16, 8), + child: Text( + context.l10n.cloudSettingsRecentUploads, + style: Theme.of(context).textTheme.titleSmall?.copyWith( + color: colorScheme.onSurfaceVariant, + ), + ), + ), + ...uploadState.items.reversed.take(5).map((item) => _buildUploadItem(context, item)), + ], + ], + ); + } + + Widget _buildStatItem( + BuildContext context, + IconData icon, + String value, + String label, + Color color, + ) { + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + Icon(icon, color: color, size: 24), + const SizedBox(height: 4), + Text( + value, + style: Theme.of(context).textTheme.titleMedium?.copyWith( + fontWeight: FontWeight.bold, + color: color, + ), + ), + Text( + label, + style: Theme.of(context).textTheme.bodySmall?.copyWith( + color: Theme.of(context).colorScheme.onSurfaceVariant, + ), + ), + ], + ); + } + + Widget _buildUploadItem(BuildContext context, UploadQueueItem item) { + final colorScheme = Theme.of(context).colorScheme; + + IconData icon; + Color iconColor; + Widget? trailing; + + switch (item.status) { + case UploadStatus.pending: + icon = Icons.hourglass_empty; + iconColor = colorScheme.tertiary; + break; + case UploadStatus.uploading: + icon = Icons.cloud_upload; + iconColor = colorScheme.primary; + trailing = SizedBox( + width: 40, + child: Text( + '${(item.progress * 100).toInt()}%', + style: TextStyle(color: colorScheme.primary), + ), + ); + break; + case UploadStatus.completed: + icon = Icons.check_circle; + iconColor = Colors.green; + break; + case UploadStatus.failed: + icon = Icons.error; + iconColor = colorScheme.error; + trailing = IconButton( + icon: Icon(Icons.refresh, color: colorScheme.primary), + onPressed: () { + ref.read(uploadQueueProvider.notifier).retryFailed(item.id); + }, + tooltip: 'Retry', + ); + break; + } + + return ListTile( + leading: Icon(icon, color: iconColor), + title: Text( + item.trackName, + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + subtitle: Text( + item.artistName, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle(color: colorScheme.onSurfaceVariant), + ), + trailing: trailing, + dense: true, + ); } } diff --git a/lib/services/cloud_upload_service.dart b/lib/services/cloud_upload_service.dart new file mode 100644 index 00000000..b8ad996a --- /dev/null +++ b/lib/services/cloud_upload_service.dart @@ -0,0 +1,469 @@ +import 'dart:io'; +import 'dart:typed_data'; +import 'package:webdav_client/webdav_client.dart' as webdav; +import 'package:dartssh2/dartssh2.dart'; +import 'package:spotiflac_android/utils/logger.dart'; + +/// Result of a cloud upload operation +class CloudUploadResult { + final bool success; + final String? error; + final String? remotePath; + + const CloudUploadResult({ + required this.success, + this.error, + this.remotePath, + }); + + factory CloudUploadResult.success(String remotePath) => CloudUploadResult( + success: true, + remotePath: remotePath, + ); + + factory CloudUploadResult.failure(String error) => CloudUploadResult( + success: false, + error: error, + ); +} + +/// Parsed SFTP server URL +class SftpServerInfo { + final String host; + final int port; + + const SftpServerInfo({required this.host, required this.port}); +} + +/// Service for uploading files to cloud storage (WebDAV, SFTP) +class CloudUploadService { + static CloudUploadService? _instance; + static CloudUploadService get instance => _instance ??= CloudUploadService._(); + + CloudUploadService._(); + + final LogBuffer _log = LogBuffer(); + + webdav.Client? _webdavClient; + String? _currentServerUrl; + String? _currentUsername; + + void _logInfo(String tag, String message) { + _log.add(LogEntry( + timestamp: DateTime.now(), + level: 'INFO', + tag: tag, + message: message, + )); + } + + void _logError(String tag, String message, [String? error]) { + _log.add(LogEntry( + timestamp: DateTime.now(), + level: 'ERROR', + tag: tag, + message: message, + error: error, + )); + } + + // ============================================================ + // WebDAV Methods + // ============================================================ + + /// Initialize WebDAV client with server credentials + Future initializeWebDAV({ + required String serverUrl, + required String username, + required String password, + }) async { + // Reuse existing client if credentials haven't changed + if (_webdavClient != null && + _currentServerUrl == serverUrl && + _currentUsername == username) { + return; + } + + _webdavClient = webdav.newClient( + serverUrl, + user: username, + password: password, + debug: false, + ); + + _currentServerUrl = serverUrl; + _currentUsername = username; + + _logInfo('CloudUpload', 'WebDAV client initialized for $serverUrl'); + } + + /// Test connection to WebDAV server + Future testWebDAVConnection({ + required String serverUrl, + required String username, + required String password, + }) async { + try { + final client = webdav.newClient( + serverUrl, + user: username, + password: password, + debug: false, + ); + + // Try to ping/read root directory + await client.ping(); + + _logInfo('CloudUpload', 'WebDAV connection test successful: $serverUrl'); + return CloudUploadResult.success('/'); + } catch (e) { + _logError('CloudUpload', 'WebDAV connection test failed', e.toString()); + return CloudUploadResult.failure(_parseWebDAVError(e)); + } + } + + /// Upload a file to WebDAV server + Future uploadFileWebDAV({ + required String localPath, + required String remotePath, + required String serverUrl, + required String username, + required String password, + void Function(int sent, int total)? onProgress, + }) async { + try { + // Initialize client if needed + await initializeWebDAV( + serverUrl: serverUrl, + username: username, + password: password, + ); + + final client = _webdavClient!; + final file = File(localPath); + + if (!await file.exists()) { + return CloudUploadResult.failure('File not found: $localPath'); + } + + // Extract directory path and ensure it exists + final remoteDir = remotePath.substring(0, remotePath.lastIndexOf('/')); + if (remoteDir.isNotEmpty) { + await _ensureWebDAVDirectoryExists(client, remoteDir); + } + + // Upload the file + _logInfo('CloudUpload', 'WebDAV uploading: $localPath -> $remotePath'); + + await client.writeFromFile( + localPath, + remotePath, + onProgress: onProgress, + ); + + _logInfo('CloudUpload', 'WebDAV upload complete: $remotePath'); + return CloudUploadResult.success(remotePath); + } catch (e) { + _logError('CloudUpload', 'WebDAV upload failed', e.toString()); + return CloudUploadResult.failure(_parseWebDAVError(e)); + } + } + + /// Ensure a directory exists on the WebDAV server, creating it if necessary + Future _ensureWebDAVDirectoryExists(webdav.Client client, String path) async { + final parts = path.split('/').where((p) => p.isNotEmpty).toList(); + var currentPath = ''; + + for (final part in parts) { + currentPath += '/$part'; + try { + await client.mkdir(currentPath); + } catch (e) { + // Directory might already exist, ignore error + } + } + } + + /// Parse WebDAV error to user-friendly message + String _parseWebDAVError(dynamic error) { + final errorStr = error.toString().toLowerCase(); + + if (errorStr.contains('401') || errorStr.contains('unauthorized')) { + return 'Authentication failed. Check username and password.'; + } + if (errorStr.contains('403') || errorStr.contains('forbidden')) { + return 'Access denied. Check permissions on the server.'; + } + if (errorStr.contains('404') || errorStr.contains('not found')) { + return 'Server path not found. Check the URL.'; + } + if (errorStr.contains('connection refused') || errorStr.contains('socket')) { + return 'Cannot connect to server. Check URL and network.'; + } + if (errorStr.contains('certificate') || errorStr.contains('ssl') || errorStr.contains('tls')) { + return 'SSL/TLS error. Server certificate may be invalid.'; + } + if (errorStr.contains('timeout')) { + return 'Connection timed out. Server may be unreachable.'; + } + if (errorStr.contains('507') || errorStr.contains('insufficient storage')) { + return 'Insufficient storage on server.'; + } + + return 'Upload failed: ${error.toString()}'; + } + + // ============================================================ + // SFTP Methods + // ============================================================ + + /// Parse SFTP server URL to extract host and port + /// Supports formats: + /// - sftp://hostname:port + /// - sftp://hostname + /// - hostname:port + /// - hostname + SftpServerInfo _parseSftpUrl(String serverUrl) { + var url = serverUrl.trim(); + + // Remove sftp:// prefix if present + if (url.toLowerCase().startsWith('sftp://')) { + url = url.substring(7); + } + + // Check for port + final colonIndex = url.lastIndexOf(':'); + if (colonIndex > 0) { + final host = url.substring(0, colonIndex); + final portStr = url.substring(colonIndex + 1); + final port = int.tryParse(portStr) ?? 22; + return SftpServerInfo(host: host, port: port); + } + + return SftpServerInfo(host: url, port: 22); + } + + /// Test connection to SFTP server + Future testSFTPConnection({ + required String serverUrl, + required String username, + required String password, + }) async { + SSHClient? client; + try { + final serverInfo = _parseSftpUrl(serverUrl); + + _logInfo('CloudUpload', 'SFTP connecting to ${serverInfo.host}:${serverInfo.port}'); + + // Connect to SSH server + final socket = await SSHSocket.connect( + serverInfo.host, + serverInfo.port, + timeout: const Duration(seconds: 10), + ); + + client = SSHClient( + socket, + username: username, + onPasswordRequest: () => password, + ); + + // Wait for authentication + await client.authenticated; + + // Test SFTP subsystem + final sftp = await client.sftp(); + await sftp.listdir('/'); + sftp.close(); + + _logInfo('CloudUpload', 'SFTP connection test successful: ${serverInfo.host}'); + return CloudUploadResult.success('/'); + } catch (e) { + _logError('CloudUpload', 'SFTP connection test failed', e.toString()); + return CloudUploadResult.failure(_parseSFTPError(e)); + } finally { + client?.close(); + } + } + + /// Upload a file to SFTP server + Future uploadFileSFTP({ + required String localPath, + required String remotePath, + required String serverUrl, + required String username, + required String password, + void Function(int sent, int total)? onProgress, + }) async { + SSHClient? client; + try { + final file = File(localPath); + if (!await file.exists()) { + return CloudUploadResult.failure('File not found: $localPath'); + } + + final fileSize = await file.length(); + final serverInfo = _parseSftpUrl(serverUrl); + + _logInfo('CloudUpload', 'SFTP connecting to ${serverInfo.host}:${serverInfo.port}'); + + // Connect to SSH server + final socket = await SSHSocket.connect( + serverInfo.host, + serverInfo.port, + timeout: const Duration(seconds: 30), + ); + + client = SSHClient( + socket, + username: username, + onPasswordRequest: () => password, + ); + + // Wait for authentication + await client.authenticated; + + // Open SFTP session + final sftp = await client.sftp(); + + // Ensure remote directory exists + final remoteDir = remotePath.substring(0, remotePath.lastIndexOf('/')); + if (remoteDir.isNotEmpty) { + await _ensureSFTPDirectoryExists(sftp, remoteDir); + } + + _logInfo('CloudUpload', 'SFTP uploading: $localPath -> $remotePath'); + + // Open remote file for writing + final remoteFile = await sftp.open( + remotePath, + mode: SftpFileOpenMode.create | + SftpFileOpenMode.write | + SftpFileOpenMode.truncate, + ); + + // Read local file and write to remote with progress + final localFileStream = file.openRead(); + int bytesUploaded = 0; + + await for (final chunk in localFileStream) { + await remoteFile.write(Stream.value(Uint8List.fromList(chunk))); + bytesUploaded += chunk.length; + onProgress?.call(bytesUploaded, fileSize); + } + + await remoteFile.close(); + sftp.close(); + + _logInfo('CloudUpload', 'SFTP upload complete: $remotePath'); + return CloudUploadResult.success(remotePath); + } catch (e) { + _logError('CloudUpload', 'SFTP upload failed', e.toString()); + return CloudUploadResult.failure(_parseSFTPError(e)); + } finally { + client?.close(); + } + } + + /// Ensure a directory exists on the SFTP server, creating it if necessary + Future _ensureSFTPDirectoryExists(SftpClient sftp, String path) async { + final parts = path.split('/').where((p) => p.isNotEmpty).toList(); + var currentPath = ''; + + for (final part in parts) { + currentPath += '/$part'; + try { + await sftp.mkdir(currentPath); + } catch (e) { + // Directory might already exist, ignore error + // SFTP throws exception if directory exists + } + } + } + + /// Parse SFTP error to user-friendly message + String _parseSFTPError(dynamic error) { + final errorStr = error.toString().toLowerCase(); + + if (errorStr.contains('authentication') || + errorStr.contains('permission denied') || + errorStr.contains('auth fail')) { + return 'Authentication failed. Check username and password.'; + } + if (errorStr.contains('connection refused')) { + return 'Connection refused. Check server address and port.'; + } + if (errorStr.contains('no route to host') || + errorStr.contains('network is unreachable')) { + return 'Cannot reach server. Check network connection.'; + } + if (errorStr.contains('connection timed out') || + errorStr.contains('timeout')) { + return 'Connection timed out. Server may be unreachable.'; + } + if (errorStr.contains('host key') || + errorStr.contains('fingerprint')) { + return 'Host key verification failed.'; + } + if (errorStr.contains('no such file') || + errorStr.contains('not found')) { + return 'Remote path not found.'; + } + if (errorStr.contains('permission') || + errorStr.contains('access denied')) { + return 'Permission denied. Check folder permissions.'; + } + if (errorStr.contains('disk full') || + errorStr.contains('no space')) { + return 'Insufficient storage on server.'; + } + if (errorStr.contains('socket') || + errorStr.contains('broken pipe')) { + return 'Connection lost. Try again.'; + } + + return 'SFTP error: ${error.toString()}'; + } + + // ============================================================ + // Common Methods + // ============================================================ + + /// Get the remote path for a downloaded file + String getRemotePath({ + required String localFilePath, + required String baseRemotePath, + required String downloadDirectory, + }) { + // Extract relative path from download directory + String relativePath; + if (localFilePath.startsWith(downloadDirectory)) { + relativePath = localFilePath.substring(downloadDirectory.length); + if (relativePath.startsWith('/') || relativePath.startsWith('\\')) { + relativePath = relativePath.substring(1); + } + } else { + // Just use the filename + relativePath = localFilePath.split(Platform.pathSeparator).last; + } + + // Normalize path separators + relativePath = relativePath.replaceAll('\\', '/'); + + // Combine with base remote path + var remotePath = baseRemotePath; + if (!remotePath.endsWith('/')) { + remotePath += '/'; + } + remotePath += relativePath; + + return remotePath; + } + + /// Dispose resources + void dispose() { + _webdavClient = null; + _currentServerUrl = null; + _currentUsername = null; + } +} diff --git a/pubspec.lock b/pubspec.lock index 54c7c1a4..4645d151 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -41,6 +41,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.7.0" + asn1lib: + dependency: transitive + description: + name: asn1lib + sha256: "9a8f69025044eb466b9b60ef3bc3ac99b4dc6c158ae9c56d25eeccf5bc56d024" + url: "https://pub.dev" + source: hosted + version: "1.6.5" async: dependency: transitive description: @@ -249,6 +257,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.1.3" + dartssh2: + dependency: "direct main" + description: + name: dartssh2 + sha256: bb242396c1d90f05c261b5eb8338cc67167e803c0948b0207029339cc568a66c + url: "https://pub.dev" + source: hosted + version: "2.13.0" dbus: dependency: transitive description: @@ -821,6 +837,14 @@ packages: url: "https://pub.dev" source: hosted version: "7.0.1" + pinenacl: + dependency: transitive + description: + name: pinenacl + sha256: "57e907beaacbc3c024a098910b6240758e899674de07d6949a67b52fd984cbdf" + url: "https://pub.dev" + source: hosted + version: "0.6.0" platform: dependency: transitive description: @@ -837,6 +861,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.8" + pointycastle: + dependency: transitive + description: + name: pointycastle + sha256: "4be0097fcf3fd3e8449e53730c631200ebc7b88016acecab2b0da2f0149222fe" + url: "https://pub.dev" + source: hosted + version: "3.9.1" pool: dependency: transitive description: @@ -1346,6 +1378,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.3" + webdav_client: + dependency: "direct main" + description: + name: webdav_client + sha256: "682fffc50b61dc0e8f46717171db03bf9caaa17347be41c0c91e297553bf86b2" + url: "https://pub.dev" + source: hosted + version: "1.2.2" webkit_inspection_protocol: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 6b803abe..6def1b10 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,7 @@ name: spotiflac_android description: Download Spotify tracks in FLAC from Tidal, Qobuz & Amazon Music publish_to: "none" -version: 3.3.6+71 +version: 3.4.0+72 environment: sdk: ^3.10.0 @@ -32,6 +32,8 @@ dependencies: http: ^1.6.0 dio: ^5.8.0 connectivity_plus: ^6.0.3 + webdav_client: ^1.2.2 + dartssh2: ^2.13.0 # UI Components cupertino_icons: ^1.0.8