mirror of
https://github.com/zarzet/SpotiFLAC-Mobile.git
synced 2026-09-23 10:00:49 +02:00
i18n: extract hardcoded strings into l10n keys
Move hardcoded UI strings across multiple screens and the notification service into ARB-backed l10n keys so they can be translated via Crowdin. Adds 62 new keys covering sort labels, dialog copy, metadata error snackbars, folder-picker errors, home-tab error states, extensions home feed selector, and all notification titles/bodies. NotificationService now caches an AppLocalizations instance (injected from MainShell via didChangeDependencies) and falls back to English literals when no locale is available.
This commit is contained in:
@@ -5300,6 +5300,298 @@ abstract class AppLocalizations {
|
||||
/// In en, this message translates to:
|
||||
/// **'Samples'**
|
||||
String get audioAnalysisSamples;
|
||||
|
||||
/// Extensions page - subtitle for built-in search provider option
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Search with {providerName}'**
|
||||
String extensionsSearchWith(String providerName);
|
||||
|
||||
/// Extensions page - label for home feed provider selector
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Home Feed Provider'**
|
||||
String get extensionsHomeFeedProvider;
|
||||
|
||||
/// Extensions page - description for home feed provider picker
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Choose which extension provides the home feed on the main screen'**
|
||||
String get extensionsHomeFeedDescription;
|
||||
|
||||
/// Extensions page - home feed provider option: auto
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Auto'**
|
||||
String get extensionsHomeFeedAuto;
|
||||
|
||||
/// Extensions page - subtitle for auto home feed option
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Automatically select the best available'**
|
||||
String get extensionsHomeFeedAutoSubtitle;
|
||||
|
||||
/// Extensions page - subtitle for a specific extension home feed option
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Use {extensionName} home feed'**
|
||||
String extensionsHomeFeedUse(String extensionName);
|
||||
|
||||
/// Extensions page - shown when no installed extension has home feed
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'No extensions with home feed'**
|
||||
String get extensionsNoHomeFeedExtensions;
|
||||
|
||||
/// Sort option - alphabetical ascending
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'A-Z'**
|
||||
String get sortAlphaAsc;
|
||||
|
||||
/// Sort option - alphabetical descending
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Z-A'**
|
||||
String get sortAlphaDesc;
|
||||
|
||||
/// Dialog title when confirming cancellation of an active download
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Cancel download?'**
|
||||
String get cancelDownloadTitle;
|
||||
|
||||
/// Dialog body when confirming cancellation of an active download
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'This will cancel the active download for \"{trackName}\".'**
|
||||
String cancelDownloadContent(String trackName);
|
||||
|
||||
/// Dialog button - keep the active download (do not cancel)
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Keep'**
|
||||
String get cancelDownloadKeep;
|
||||
|
||||
/// Snackbar error when FFmpeg fails to write metadata
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Failed to save metadata via FFmpeg'**
|
||||
String get metadataSaveFailedFfmpeg;
|
||||
|
||||
/// Snackbar error when writing metadata file back to storage fails
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Failed to write metadata back to storage'**
|
||||
String get metadataSaveFailedStorage;
|
||||
|
||||
/// Snackbar shown when folder picker fails to open
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Failed to open folder picker: {error}'**
|
||||
String snackbarFolderPickerFailed(String error);
|
||||
|
||||
/// Error state shown when album fails to load
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Failed to load album'**
|
||||
String get errorLoadAlbum;
|
||||
|
||||
/// Error state shown when playlist fails to load
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Failed to load playlist'**
|
||||
String get errorLoadPlaylist;
|
||||
|
||||
/// Error state shown when artist fails to load
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Failed to load artist'**
|
||||
String get errorLoadArtist;
|
||||
|
||||
/// Android notification channel name for download progress
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Download Progress'**
|
||||
String get notifChannelDownloadName;
|
||||
|
||||
/// Android notification channel description for download progress
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Shows download progress for tracks'**
|
||||
String get notifChannelDownloadDesc;
|
||||
|
||||
/// Android notification channel name for library scan
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Library Scan'**
|
||||
String get notifChannelLibraryScanName;
|
||||
|
||||
/// Android notification channel description for library scan
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Shows local library scan progress'**
|
||||
String get notifChannelLibraryScanDesc;
|
||||
|
||||
/// Notification title while downloading a track
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Downloading {trackName}'**
|
||||
String notifDownloadingTrack(String trackName);
|
||||
|
||||
/// Notification title while finalizing (embedding metadata) a track
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Finalizing {trackName}'**
|
||||
String notifFinalizingTrack(String trackName);
|
||||
|
||||
/// Notification body while embedding metadata into a downloaded track
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Embedding metadata...'**
|
||||
String get notifEmbeddingMetadata;
|
||||
|
||||
/// Notification title when track is already in library, with count
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Already in Library ({completed}/{total})'**
|
||||
String notifAlreadyInLibraryCount(int completed, int total);
|
||||
|
||||
/// Notification title when track is already in library
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Already in Library'**
|
||||
String get notifAlreadyInLibrary;
|
||||
|
||||
/// Notification title when download is complete, with count
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Download Complete ({completed}/{total})'**
|
||||
String notifDownloadCompleteCount(int completed, int total);
|
||||
|
||||
/// Notification title when a single download is complete
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Download Complete'**
|
||||
String get notifDownloadComplete;
|
||||
|
||||
/// Notification title when queue finishes with some failures
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Downloads Finished ({completed} done, {failed} failed)'**
|
||||
String notifDownloadsFinished(int completed, int failed);
|
||||
|
||||
/// Notification title when all downloads finish successfully
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'All Downloads Complete'**
|
||||
String get notifAllDownloadsComplete;
|
||||
|
||||
/// Notification body for queue complete - how many tracks were downloaded
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{count} tracks downloaded successfully'**
|
||||
String notifTracksDownloadedSuccess(int count);
|
||||
|
||||
/// Notification title while scanning local library
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Scanning local library'**
|
||||
String get notifScanningLibrary;
|
||||
|
||||
/// Notification body for library scan progress when total is known
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{scanned}/{total} files • {percentage}%'**
|
||||
String notifLibraryScanProgressWithTotal(
|
||||
int scanned,
|
||||
int total,
|
||||
int percentage,
|
||||
);
|
||||
|
||||
/// Notification body for library scan progress when total is unknown
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{scanned} files scanned • {percentage}%'**
|
||||
String notifLibraryScanProgressNoTotal(int scanned, int percentage);
|
||||
|
||||
/// Notification title when library scan finishes
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Library scan complete'**
|
||||
String get notifLibraryScanComplete;
|
||||
|
||||
/// Notification body for library scan complete - number of indexed tracks
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{count} tracks indexed'**
|
||||
String notifLibraryScanCompleteBody(int count);
|
||||
|
||||
/// Library scan complete suffix - excluded track count
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{count} excluded'**
|
||||
String notifLibraryScanExcluded(int count);
|
||||
|
||||
/// Library scan complete suffix - error count
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{count} errors'**
|
||||
String notifLibraryScanErrors(int count);
|
||||
|
||||
/// Notification title when library scan fails
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Library scan failed'**
|
||||
String get notifLibraryScanFailed;
|
||||
|
||||
/// Notification title when library scan is cancelled by the user
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Library scan cancelled'**
|
||||
String get notifLibraryScanCancelled;
|
||||
|
||||
/// Notification body when library scan is cancelled
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Scan stopped before completion.'**
|
||||
String get notifLibraryScanStopped;
|
||||
|
||||
/// Notification title while downloading an app update
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Downloading SpotiFLAC v{version}'**
|
||||
String notifDownloadingUpdate(String version);
|
||||
|
||||
/// Notification body showing update download progress
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{received} / {total} MB • {percentage}%'**
|
||||
String notifUpdateProgress(String received, String total, int percentage);
|
||||
|
||||
/// Notification title when app update download is complete
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Update Ready'**
|
||||
String get notifUpdateReady;
|
||||
|
||||
/// Notification body when app update is ready to install
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'SpotiFLAC v{version} downloaded. Tap to install.'**
|
||||
String notifUpdateReadyBody(String version);
|
||||
|
||||
/// Notification title when app update download fails
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Update Failed'**
|
||||
String get notifUpdateFailed;
|
||||
|
||||
/// Notification body when app update download fails
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Could not download update. Try again later.'**
|
||||
String get notifUpdateFailedBody;
|
||||
}
|
||||
|
||||
class _AppLocalizationsDelegate
|
||||
|
||||
@@ -3124,4 +3124,192 @@ class AppLocalizationsDe extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get audioAnalysisSamples => 'Samples';
|
||||
|
||||
@override
|
||||
String extensionsSearchWith(String providerName) {
|
||||
return 'Search with $providerName';
|
||||
}
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedProvider => 'Home Feed Provider';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedDescription =>
|
||||
'Choose which extension provides the home feed on the main screen';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedAuto => 'Auto';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedAutoSubtitle =>
|
||||
'Automatically select the best available';
|
||||
|
||||
@override
|
||||
String extensionsHomeFeedUse(String extensionName) {
|
||||
return 'Use $extensionName home feed';
|
||||
}
|
||||
|
||||
@override
|
||||
String get extensionsNoHomeFeedExtensions => 'No extensions with home feed';
|
||||
|
||||
@override
|
||||
String get sortAlphaAsc => 'A-Z';
|
||||
|
||||
@override
|
||||
String get sortAlphaDesc => 'Z-A';
|
||||
|
||||
@override
|
||||
String get cancelDownloadTitle => 'Cancel download?';
|
||||
|
||||
@override
|
||||
String cancelDownloadContent(String trackName) {
|
||||
return 'This will cancel the active download for \"$trackName\".';
|
||||
}
|
||||
|
||||
@override
|
||||
String get cancelDownloadKeep => 'Keep';
|
||||
|
||||
@override
|
||||
String get metadataSaveFailedFfmpeg => 'Failed to save metadata via FFmpeg';
|
||||
|
||||
@override
|
||||
String get metadataSaveFailedStorage =>
|
||||
'Failed to write metadata back to storage';
|
||||
|
||||
@override
|
||||
String snackbarFolderPickerFailed(String error) {
|
||||
return 'Failed to open folder picker: $error';
|
||||
}
|
||||
|
||||
@override
|
||||
String get errorLoadAlbum => 'Failed to load album';
|
||||
|
||||
@override
|
||||
String get errorLoadPlaylist => 'Failed to load playlist';
|
||||
|
||||
@override
|
||||
String get errorLoadArtist => 'Failed to load artist';
|
||||
|
||||
@override
|
||||
String get notifChannelDownloadName => 'Download Progress';
|
||||
|
||||
@override
|
||||
String get notifChannelDownloadDesc => 'Shows download progress for tracks';
|
||||
|
||||
@override
|
||||
String get notifChannelLibraryScanName => 'Library Scan';
|
||||
|
||||
@override
|
||||
String get notifChannelLibraryScanDesc => 'Shows local library scan progress';
|
||||
|
||||
@override
|
||||
String notifDownloadingTrack(String trackName) {
|
||||
return 'Downloading $trackName';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifFinalizingTrack(String trackName) {
|
||||
return 'Finalizing $trackName';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifEmbeddingMetadata => 'Embedding metadata...';
|
||||
|
||||
@override
|
||||
String notifAlreadyInLibraryCount(int completed, int total) {
|
||||
return 'Already in Library ($completed/$total)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifAlreadyInLibrary => 'Already in Library';
|
||||
|
||||
@override
|
||||
String notifDownloadCompleteCount(int completed, int total) {
|
||||
return 'Download Complete ($completed/$total)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifDownloadComplete => 'Download Complete';
|
||||
|
||||
@override
|
||||
String notifDownloadsFinished(int completed, int failed) {
|
||||
return 'Downloads Finished ($completed done, $failed failed)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifAllDownloadsComplete => 'All Downloads Complete';
|
||||
|
||||
@override
|
||||
String notifTracksDownloadedSuccess(int count) {
|
||||
return '$count tracks downloaded successfully';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifScanningLibrary => 'Scanning local library';
|
||||
|
||||
@override
|
||||
String notifLibraryScanProgressWithTotal(
|
||||
int scanned,
|
||||
int total,
|
||||
int percentage,
|
||||
) {
|
||||
return '$scanned/$total files • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanProgressNoTotal(int scanned, int percentage) {
|
||||
return '$scanned files scanned • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifLibraryScanComplete => 'Library scan complete';
|
||||
|
||||
@override
|
||||
String notifLibraryScanCompleteBody(int count) {
|
||||
return '$count tracks indexed';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanExcluded(int count) {
|
||||
return '$count excluded';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanErrors(int count) {
|
||||
return '$count errors';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifLibraryScanFailed => 'Library scan failed';
|
||||
|
||||
@override
|
||||
String get notifLibraryScanCancelled => 'Library scan cancelled';
|
||||
|
||||
@override
|
||||
String get notifLibraryScanStopped => 'Scan stopped before completion.';
|
||||
|
||||
@override
|
||||
String notifDownloadingUpdate(String version) {
|
||||
return 'Downloading SpotiFLAC v$version';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifUpdateProgress(String received, String total, int percentage) {
|
||||
return '$received / $total MB • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifUpdateReady => 'Update Ready';
|
||||
|
||||
@override
|
||||
String notifUpdateReadyBody(String version) {
|
||||
return 'SpotiFLAC v$version downloaded. Tap to install.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifUpdateFailed => 'Update Failed';
|
||||
|
||||
@override
|
||||
String get notifUpdateFailedBody =>
|
||||
'Could not download update. Try again later.';
|
||||
}
|
||||
|
||||
@@ -3092,4 +3092,192 @@ class AppLocalizationsEn extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get audioAnalysisSamples => 'Samples';
|
||||
|
||||
@override
|
||||
String extensionsSearchWith(String providerName) {
|
||||
return 'Search with $providerName';
|
||||
}
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedProvider => 'Home Feed Provider';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedDescription =>
|
||||
'Choose which extension provides the home feed on the main screen';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedAuto => 'Auto';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedAutoSubtitle =>
|
||||
'Automatically select the best available';
|
||||
|
||||
@override
|
||||
String extensionsHomeFeedUse(String extensionName) {
|
||||
return 'Use $extensionName home feed';
|
||||
}
|
||||
|
||||
@override
|
||||
String get extensionsNoHomeFeedExtensions => 'No extensions with home feed';
|
||||
|
||||
@override
|
||||
String get sortAlphaAsc => 'A-Z';
|
||||
|
||||
@override
|
||||
String get sortAlphaDesc => 'Z-A';
|
||||
|
||||
@override
|
||||
String get cancelDownloadTitle => 'Cancel download?';
|
||||
|
||||
@override
|
||||
String cancelDownloadContent(String trackName) {
|
||||
return 'This will cancel the active download for \"$trackName\".';
|
||||
}
|
||||
|
||||
@override
|
||||
String get cancelDownloadKeep => 'Keep';
|
||||
|
||||
@override
|
||||
String get metadataSaveFailedFfmpeg => 'Failed to save metadata via FFmpeg';
|
||||
|
||||
@override
|
||||
String get metadataSaveFailedStorage =>
|
||||
'Failed to write metadata back to storage';
|
||||
|
||||
@override
|
||||
String snackbarFolderPickerFailed(String error) {
|
||||
return 'Failed to open folder picker: $error';
|
||||
}
|
||||
|
||||
@override
|
||||
String get errorLoadAlbum => 'Failed to load album';
|
||||
|
||||
@override
|
||||
String get errorLoadPlaylist => 'Failed to load playlist';
|
||||
|
||||
@override
|
||||
String get errorLoadArtist => 'Failed to load artist';
|
||||
|
||||
@override
|
||||
String get notifChannelDownloadName => 'Download Progress';
|
||||
|
||||
@override
|
||||
String get notifChannelDownloadDesc => 'Shows download progress for tracks';
|
||||
|
||||
@override
|
||||
String get notifChannelLibraryScanName => 'Library Scan';
|
||||
|
||||
@override
|
||||
String get notifChannelLibraryScanDesc => 'Shows local library scan progress';
|
||||
|
||||
@override
|
||||
String notifDownloadingTrack(String trackName) {
|
||||
return 'Downloading $trackName';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifFinalizingTrack(String trackName) {
|
||||
return 'Finalizing $trackName';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifEmbeddingMetadata => 'Embedding metadata...';
|
||||
|
||||
@override
|
||||
String notifAlreadyInLibraryCount(int completed, int total) {
|
||||
return 'Already in Library ($completed/$total)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifAlreadyInLibrary => 'Already in Library';
|
||||
|
||||
@override
|
||||
String notifDownloadCompleteCount(int completed, int total) {
|
||||
return 'Download Complete ($completed/$total)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifDownloadComplete => 'Download Complete';
|
||||
|
||||
@override
|
||||
String notifDownloadsFinished(int completed, int failed) {
|
||||
return 'Downloads Finished ($completed done, $failed failed)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifAllDownloadsComplete => 'All Downloads Complete';
|
||||
|
||||
@override
|
||||
String notifTracksDownloadedSuccess(int count) {
|
||||
return '$count tracks downloaded successfully';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifScanningLibrary => 'Scanning local library';
|
||||
|
||||
@override
|
||||
String notifLibraryScanProgressWithTotal(
|
||||
int scanned,
|
||||
int total,
|
||||
int percentage,
|
||||
) {
|
||||
return '$scanned/$total files • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanProgressNoTotal(int scanned, int percentage) {
|
||||
return '$scanned files scanned • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifLibraryScanComplete => 'Library scan complete';
|
||||
|
||||
@override
|
||||
String notifLibraryScanCompleteBody(int count) {
|
||||
return '$count tracks indexed';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanExcluded(int count) {
|
||||
return '$count excluded';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanErrors(int count) {
|
||||
return '$count errors';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifLibraryScanFailed => 'Library scan failed';
|
||||
|
||||
@override
|
||||
String get notifLibraryScanCancelled => 'Library scan cancelled';
|
||||
|
||||
@override
|
||||
String get notifLibraryScanStopped => 'Scan stopped before completion.';
|
||||
|
||||
@override
|
||||
String notifDownloadingUpdate(String version) {
|
||||
return 'Downloading SpotiFLAC v$version';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifUpdateProgress(String received, String total, int percentage) {
|
||||
return '$received / $total MB • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifUpdateReady => 'Update Ready';
|
||||
|
||||
@override
|
||||
String notifUpdateReadyBody(String version) {
|
||||
return 'SpotiFLAC v$version downloaded. Tap to install.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifUpdateFailed => 'Update Failed';
|
||||
|
||||
@override
|
||||
String get notifUpdateFailedBody =>
|
||||
'Could not download update. Try again later.';
|
||||
}
|
||||
|
||||
@@ -3092,6 +3092,194 @@ class AppLocalizationsEs extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get audioAnalysisSamples => 'Samples';
|
||||
|
||||
@override
|
||||
String extensionsSearchWith(String providerName) {
|
||||
return 'Search with $providerName';
|
||||
}
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedProvider => 'Home Feed Provider';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedDescription =>
|
||||
'Choose which extension provides the home feed on the main screen';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedAuto => 'Auto';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedAutoSubtitle =>
|
||||
'Automatically select the best available';
|
||||
|
||||
@override
|
||||
String extensionsHomeFeedUse(String extensionName) {
|
||||
return 'Use $extensionName home feed';
|
||||
}
|
||||
|
||||
@override
|
||||
String get extensionsNoHomeFeedExtensions => 'No extensions with home feed';
|
||||
|
||||
@override
|
||||
String get sortAlphaAsc => 'A-Z';
|
||||
|
||||
@override
|
||||
String get sortAlphaDesc => 'Z-A';
|
||||
|
||||
@override
|
||||
String get cancelDownloadTitle => 'Cancel download?';
|
||||
|
||||
@override
|
||||
String cancelDownloadContent(String trackName) {
|
||||
return 'This will cancel the active download for \"$trackName\".';
|
||||
}
|
||||
|
||||
@override
|
||||
String get cancelDownloadKeep => 'Keep';
|
||||
|
||||
@override
|
||||
String get metadataSaveFailedFfmpeg => 'Failed to save metadata via FFmpeg';
|
||||
|
||||
@override
|
||||
String get metadataSaveFailedStorage =>
|
||||
'Failed to write metadata back to storage';
|
||||
|
||||
@override
|
||||
String snackbarFolderPickerFailed(String error) {
|
||||
return 'Failed to open folder picker: $error';
|
||||
}
|
||||
|
||||
@override
|
||||
String get errorLoadAlbum => 'Failed to load album';
|
||||
|
||||
@override
|
||||
String get errorLoadPlaylist => 'Failed to load playlist';
|
||||
|
||||
@override
|
||||
String get errorLoadArtist => 'Failed to load artist';
|
||||
|
||||
@override
|
||||
String get notifChannelDownloadName => 'Download Progress';
|
||||
|
||||
@override
|
||||
String get notifChannelDownloadDesc => 'Shows download progress for tracks';
|
||||
|
||||
@override
|
||||
String get notifChannelLibraryScanName => 'Library Scan';
|
||||
|
||||
@override
|
||||
String get notifChannelLibraryScanDesc => 'Shows local library scan progress';
|
||||
|
||||
@override
|
||||
String notifDownloadingTrack(String trackName) {
|
||||
return 'Downloading $trackName';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifFinalizingTrack(String trackName) {
|
||||
return 'Finalizing $trackName';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifEmbeddingMetadata => 'Embedding metadata...';
|
||||
|
||||
@override
|
||||
String notifAlreadyInLibraryCount(int completed, int total) {
|
||||
return 'Already in Library ($completed/$total)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifAlreadyInLibrary => 'Already in Library';
|
||||
|
||||
@override
|
||||
String notifDownloadCompleteCount(int completed, int total) {
|
||||
return 'Download Complete ($completed/$total)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifDownloadComplete => 'Download Complete';
|
||||
|
||||
@override
|
||||
String notifDownloadsFinished(int completed, int failed) {
|
||||
return 'Downloads Finished ($completed done, $failed failed)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifAllDownloadsComplete => 'All Downloads Complete';
|
||||
|
||||
@override
|
||||
String notifTracksDownloadedSuccess(int count) {
|
||||
return '$count tracks downloaded successfully';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifScanningLibrary => 'Scanning local library';
|
||||
|
||||
@override
|
||||
String notifLibraryScanProgressWithTotal(
|
||||
int scanned,
|
||||
int total,
|
||||
int percentage,
|
||||
) {
|
||||
return '$scanned/$total files • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanProgressNoTotal(int scanned, int percentage) {
|
||||
return '$scanned files scanned • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifLibraryScanComplete => 'Library scan complete';
|
||||
|
||||
@override
|
||||
String notifLibraryScanCompleteBody(int count) {
|
||||
return '$count tracks indexed';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanExcluded(int count) {
|
||||
return '$count excluded';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanErrors(int count) {
|
||||
return '$count errors';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifLibraryScanFailed => 'Library scan failed';
|
||||
|
||||
@override
|
||||
String get notifLibraryScanCancelled => 'Library scan cancelled';
|
||||
|
||||
@override
|
||||
String get notifLibraryScanStopped => 'Scan stopped before completion.';
|
||||
|
||||
@override
|
||||
String notifDownloadingUpdate(String version) {
|
||||
return 'Downloading SpotiFLAC v$version';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifUpdateProgress(String received, String total, int percentage) {
|
||||
return '$received / $total MB • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifUpdateReady => 'Update Ready';
|
||||
|
||||
@override
|
||||
String notifUpdateReadyBody(String version) {
|
||||
return 'SpotiFLAC v$version downloaded. Tap to install.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifUpdateFailed => 'Update Failed';
|
||||
|
||||
@override
|
||||
String get notifUpdateFailedBody =>
|
||||
'Could not download update. Try again later.';
|
||||
}
|
||||
|
||||
/// The translations for Spanish Castilian, as used in Spain (`es_ES`).
|
||||
|
||||
@@ -3093,4 +3093,192 @@ class AppLocalizationsFr extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get audioAnalysisSamples => 'Samples';
|
||||
|
||||
@override
|
||||
String extensionsSearchWith(String providerName) {
|
||||
return 'Search with $providerName';
|
||||
}
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedProvider => 'Home Feed Provider';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedDescription =>
|
||||
'Choose which extension provides the home feed on the main screen';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedAuto => 'Auto';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedAutoSubtitle =>
|
||||
'Automatically select the best available';
|
||||
|
||||
@override
|
||||
String extensionsHomeFeedUse(String extensionName) {
|
||||
return 'Use $extensionName home feed';
|
||||
}
|
||||
|
||||
@override
|
||||
String get extensionsNoHomeFeedExtensions => 'No extensions with home feed';
|
||||
|
||||
@override
|
||||
String get sortAlphaAsc => 'A-Z';
|
||||
|
||||
@override
|
||||
String get sortAlphaDesc => 'Z-A';
|
||||
|
||||
@override
|
||||
String get cancelDownloadTitle => 'Cancel download?';
|
||||
|
||||
@override
|
||||
String cancelDownloadContent(String trackName) {
|
||||
return 'This will cancel the active download for \"$trackName\".';
|
||||
}
|
||||
|
||||
@override
|
||||
String get cancelDownloadKeep => 'Keep';
|
||||
|
||||
@override
|
||||
String get metadataSaveFailedFfmpeg => 'Failed to save metadata via FFmpeg';
|
||||
|
||||
@override
|
||||
String get metadataSaveFailedStorage =>
|
||||
'Failed to write metadata back to storage';
|
||||
|
||||
@override
|
||||
String snackbarFolderPickerFailed(String error) {
|
||||
return 'Failed to open folder picker: $error';
|
||||
}
|
||||
|
||||
@override
|
||||
String get errorLoadAlbum => 'Failed to load album';
|
||||
|
||||
@override
|
||||
String get errorLoadPlaylist => 'Failed to load playlist';
|
||||
|
||||
@override
|
||||
String get errorLoadArtist => 'Failed to load artist';
|
||||
|
||||
@override
|
||||
String get notifChannelDownloadName => 'Download Progress';
|
||||
|
||||
@override
|
||||
String get notifChannelDownloadDesc => 'Shows download progress for tracks';
|
||||
|
||||
@override
|
||||
String get notifChannelLibraryScanName => 'Library Scan';
|
||||
|
||||
@override
|
||||
String get notifChannelLibraryScanDesc => 'Shows local library scan progress';
|
||||
|
||||
@override
|
||||
String notifDownloadingTrack(String trackName) {
|
||||
return 'Downloading $trackName';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifFinalizingTrack(String trackName) {
|
||||
return 'Finalizing $trackName';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifEmbeddingMetadata => 'Embedding metadata...';
|
||||
|
||||
@override
|
||||
String notifAlreadyInLibraryCount(int completed, int total) {
|
||||
return 'Already in Library ($completed/$total)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifAlreadyInLibrary => 'Already in Library';
|
||||
|
||||
@override
|
||||
String notifDownloadCompleteCount(int completed, int total) {
|
||||
return 'Download Complete ($completed/$total)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifDownloadComplete => 'Download Complete';
|
||||
|
||||
@override
|
||||
String notifDownloadsFinished(int completed, int failed) {
|
||||
return 'Downloads Finished ($completed done, $failed failed)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifAllDownloadsComplete => 'All Downloads Complete';
|
||||
|
||||
@override
|
||||
String notifTracksDownloadedSuccess(int count) {
|
||||
return '$count tracks downloaded successfully';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifScanningLibrary => 'Scanning local library';
|
||||
|
||||
@override
|
||||
String notifLibraryScanProgressWithTotal(
|
||||
int scanned,
|
||||
int total,
|
||||
int percentage,
|
||||
) {
|
||||
return '$scanned/$total files • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanProgressNoTotal(int scanned, int percentage) {
|
||||
return '$scanned files scanned • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifLibraryScanComplete => 'Library scan complete';
|
||||
|
||||
@override
|
||||
String notifLibraryScanCompleteBody(int count) {
|
||||
return '$count tracks indexed';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanExcluded(int count) {
|
||||
return '$count excluded';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanErrors(int count) {
|
||||
return '$count errors';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifLibraryScanFailed => 'Library scan failed';
|
||||
|
||||
@override
|
||||
String get notifLibraryScanCancelled => 'Library scan cancelled';
|
||||
|
||||
@override
|
||||
String get notifLibraryScanStopped => 'Scan stopped before completion.';
|
||||
|
||||
@override
|
||||
String notifDownloadingUpdate(String version) {
|
||||
return 'Downloading SpotiFLAC v$version';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifUpdateProgress(String received, String total, int percentage) {
|
||||
return '$received / $total MB • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifUpdateReady => 'Update Ready';
|
||||
|
||||
@override
|
||||
String notifUpdateReadyBody(String version) {
|
||||
return 'SpotiFLAC v$version downloaded. Tap to install.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifUpdateFailed => 'Update Failed';
|
||||
|
||||
@override
|
||||
String get notifUpdateFailedBody =>
|
||||
'Could not download update. Try again later.';
|
||||
}
|
||||
|
||||
@@ -3091,4 +3091,192 @@ class AppLocalizationsHi extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get audioAnalysisSamples => 'Samples';
|
||||
|
||||
@override
|
||||
String extensionsSearchWith(String providerName) {
|
||||
return 'Search with $providerName';
|
||||
}
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedProvider => 'Home Feed Provider';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedDescription =>
|
||||
'Choose which extension provides the home feed on the main screen';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedAuto => 'Auto';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedAutoSubtitle =>
|
||||
'Automatically select the best available';
|
||||
|
||||
@override
|
||||
String extensionsHomeFeedUse(String extensionName) {
|
||||
return 'Use $extensionName home feed';
|
||||
}
|
||||
|
||||
@override
|
||||
String get extensionsNoHomeFeedExtensions => 'No extensions with home feed';
|
||||
|
||||
@override
|
||||
String get sortAlphaAsc => 'A-Z';
|
||||
|
||||
@override
|
||||
String get sortAlphaDesc => 'Z-A';
|
||||
|
||||
@override
|
||||
String get cancelDownloadTitle => 'Cancel download?';
|
||||
|
||||
@override
|
||||
String cancelDownloadContent(String trackName) {
|
||||
return 'This will cancel the active download for \"$trackName\".';
|
||||
}
|
||||
|
||||
@override
|
||||
String get cancelDownloadKeep => 'Keep';
|
||||
|
||||
@override
|
||||
String get metadataSaveFailedFfmpeg => 'Failed to save metadata via FFmpeg';
|
||||
|
||||
@override
|
||||
String get metadataSaveFailedStorage =>
|
||||
'Failed to write metadata back to storage';
|
||||
|
||||
@override
|
||||
String snackbarFolderPickerFailed(String error) {
|
||||
return 'Failed to open folder picker: $error';
|
||||
}
|
||||
|
||||
@override
|
||||
String get errorLoadAlbum => 'Failed to load album';
|
||||
|
||||
@override
|
||||
String get errorLoadPlaylist => 'Failed to load playlist';
|
||||
|
||||
@override
|
||||
String get errorLoadArtist => 'Failed to load artist';
|
||||
|
||||
@override
|
||||
String get notifChannelDownloadName => 'Download Progress';
|
||||
|
||||
@override
|
||||
String get notifChannelDownloadDesc => 'Shows download progress for tracks';
|
||||
|
||||
@override
|
||||
String get notifChannelLibraryScanName => 'Library Scan';
|
||||
|
||||
@override
|
||||
String get notifChannelLibraryScanDesc => 'Shows local library scan progress';
|
||||
|
||||
@override
|
||||
String notifDownloadingTrack(String trackName) {
|
||||
return 'Downloading $trackName';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifFinalizingTrack(String trackName) {
|
||||
return 'Finalizing $trackName';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifEmbeddingMetadata => 'Embedding metadata...';
|
||||
|
||||
@override
|
||||
String notifAlreadyInLibraryCount(int completed, int total) {
|
||||
return 'Already in Library ($completed/$total)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifAlreadyInLibrary => 'Already in Library';
|
||||
|
||||
@override
|
||||
String notifDownloadCompleteCount(int completed, int total) {
|
||||
return 'Download Complete ($completed/$total)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifDownloadComplete => 'Download Complete';
|
||||
|
||||
@override
|
||||
String notifDownloadsFinished(int completed, int failed) {
|
||||
return 'Downloads Finished ($completed done, $failed failed)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifAllDownloadsComplete => 'All Downloads Complete';
|
||||
|
||||
@override
|
||||
String notifTracksDownloadedSuccess(int count) {
|
||||
return '$count tracks downloaded successfully';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifScanningLibrary => 'Scanning local library';
|
||||
|
||||
@override
|
||||
String notifLibraryScanProgressWithTotal(
|
||||
int scanned,
|
||||
int total,
|
||||
int percentage,
|
||||
) {
|
||||
return '$scanned/$total files • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanProgressNoTotal(int scanned, int percentage) {
|
||||
return '$scanned files scanned • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifLibraryScanComplete => 'Library scan complete';
|
||||
|
||||
@override
|
||||
String notifLibraryScanCompleteBody(int count) {
|
||||
return '$count tracks indexed';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanExcluded(int count) {
|
||||
return '$count excluded';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanErrors(int count) {
|
||||
return '$count errors';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifLibraryScanFailed => 'Library scan failed';
|
||||
|
||||
@override
|
||||
String get notifLibraryScanCancelled => 'Library scan cancelled';
|
||||
|
||||
@override
|
||||
String get notifLibraryScanStopped => 'Scan stopped before completion.';
|
||||
|
||||
@override
|
||||
String notifDownloadingUpdate(String version) {
|
||||
return 'Downloading SpotiFLAC v$version';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifUpdateProgress(String received, String total, int percentage) {
|
||||
return '$received / $total MB • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifUpdateReady => 'Update Ready';
|
||||
|
||||
@override
|
||||
String notifUpdateReadyBody(String version) {
|
||||
return 'SpotiFLAC v$version downloaded. Tap to install.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifUpdateFailed => 'Update Failed';
|
||||
|
||||
@override
|
||||
String get notifUpdateFailedBody =>
|
||||
'Could not download update. Try again later.';
|
||||
}
|
||||
|
||||
@@ -3102,4 +3102,192 @@ class AppLocalizationsId extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get audioAnalysisSamples => 'Samples';
|
||||
|
||||
@override
|
||||
String extensionsSearchWith(String providerName) {
|
||||
return 'Search with $providerName';
|
||||
}
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedProvider => 'Home Feed Provider';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedDescription =>
|
||||
'Choose which extension provides the home feed on the main screen';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedAuto => 'Auto';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedAutoSubtitle =>
|
||||
'Automatically select the best available';
|
||||
|
||||
@override
|
||||
String extensionsHomeFeedUse(String extensionName) {
|
||||
return 'Use $extensionName home feed';
|
||||
}
|
||||
|
||||
@override
|
||||
String get extensionsNoHomeFeedExtensions => 'No extensions with home feed';
|
||||
|
||||
@override
|
||||
String get sortAlphaAsc => 'A-Z';
|
||||
|
||||
@override
|
||||
String get sortAlphaDesc => 'Z-A';
|
||||
|
||||
@override
|
||||
String get cancelDownloadTitle => 'Cancel download?';
|
||||
|
||||
@override
|
||||
String cancelDownloadContent(String trackName) {
|
||||
return 'This will cancel the active download for \"$trackName\".';
|
||||
}
|
||||
|
||||
@override
|
||||
String get cancelDownloadKeep => 'Keep';
|
||||
|
||||
@override
|
||||
String get metadataSaveFailedFfmpeg => 'Failed to save metadata via FFmpeg';
|
||||
|
||||
@override
|
||||
String get metadataSaveFailedStorage =>
|
||||
'Failed to write metadata back to storage';
|
||||
|
||||
@override
|
||||
String snackbarFolderPickerFailed(String error) {
|
||||
return 'Failed to open folder picker: $error';
|
||||
}
|
||||
|
||||
@override
|
||||
String get errorLoadAlbum => 'Failed to load album';
|
||||
|
||||
@override
|
||||
String get errorLoadPlaylist => 'Failed to load playlist';
|
||||
|
||||
@override
|
||||
String get errorLoadArtist => 'Failed to load artist';
|
||||
|
||||
@override
|
||||
String get notifChannelDownloadName => 'Download Progress';
|
||||
|
||||
@override
|
||||
String get notifChannelDownloadDesc => 'Shows download progress for tracks';
|
||||
|
||||
@override
|
||||
String get notifChannelLibraryScanName => 'Library Scan';
|
||||
|
||||
@override
|
||||
String get notifChannelLibraryScanDesc => 'Shows local library scan progress';
|
||||
|
||||
@override
|
||||
String notifDownloadingTrack(String trackName) {
|
||||
return 'Downloading $trackName';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifFinalizingTrack(String trackName) {
|
||||
return 'Finalizing $trackName';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifEmbeddingMetadata => 'Embedding metadata...';
|
||||
|
||||
@override
|
||||
String notifAlreadyInLibraryCount(int completed, int total) {
|
||||
return 'Already in Library ($completed/$total)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifAlreadyInLibrary => 'Already in Library';
|
||||
|
||||
@override
|
||||
String notifDownloadCompleteCount(int completed, int total) {
|
||||
return 'Download Complete ($completed/$total)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifDownloadComplete => 'Download Complete';
|
||||
|
||||
@override
|
||||
String notifDownloadsFinished(int completed, int failed) {
|
||||
return 'Downloads Finished ($completed done, $failed failed)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifAllDownloadsComplete => 'All Downloads Complete';
|
||||
|
||||
@override
|
||||
String notifTracksDownloadedSuccess(int count) {
|
||||
return '$count tracks downloaded successfully';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifScanningLibrary => 'Scanning local library';
|
||||
|
||||
@override
|
||||
String notifLibraryScanProgressWithTotal(
|
||||
int scanned,
|
||||
int total,
|
||||
int percentage,
|
||||
) {
|
||||
return '$scanned/$total files • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanProgressNoTotal(int scanned, int percentage) {
|
||||
return '$scanned files scanned • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifLibraryScanComplete => 'Library scan complete';
|
||||
|
||||
@override
|
||||
String notifLibraryScanCompleteBody(int count) {
|
||||
return '$count tracks indexed';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanExcluded(int count) {
|
||||
return '$count excluded';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanErrors(int count) {
|
||||
return '$count errors';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifLibraryScanFailed => 'Library scan failed';
|
||||
|
||||
@override
|
||||
String get notifLibraryScanCancelled => 'Library scan cancelled';
|
||||
|
||||
@override
|
||||
String get notifLibraryScanStopped => 'Scan stopped before completion.';
|
||||
|
||||
@override
|
||||
String notifDownloadingUpdate(String version) {
|
||||
return 'Downloading SpotiFLAC v$version';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifUpdateProgress(String received, String total, int percentage) {
|
||||
return '$received / $total MB • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifUpdateReady => 'Update Ready';
|
||||
|
||||
@override
|
||||
String notifUpdateReadyBody(String version) {
|
||||
return 'SpotiFLAC v$version downloaded. Tap to install.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifUpdateFailed => 'Update Failed';
|
||||
|
||||
@override
|
||||
String get notifUpdateFailedBody =>
|
||||
'Could not download update. Try again later.';
|
||||
}
|
||||
|
||||
@@ -3078,4 +3078,192 @@ class AppLocalizationsJa extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get audioAnalysisSamples => 'Samples';
|
||||
|
||||
@override
|
||||
String extensionsSearchWith(String providerName) {
|
||||
return 'Search with $providerName';
|
||||
}
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedProvider => 'Home Feed Provider';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedDescription =>
|
||||
'Choose which extension provides the home feed on the main screen';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedAuto => 'Auto';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedAutoSubtitle =>
|
||||
'Automatically select the best available';
|
||||
|
||||
@override
|
||||
String extensionsHomeFeedUse(String extensionName) {
|
||||
return 'Use $extensionName home feed';
|
||||
}
|
||||
|
||||
@override
|
||||
String get extensionsNoHomeFeedExtensions => 'No extensions with home feed';
|
||||
|
||||
@override
|
||||
String get sortAlphaAsc => 'A-Z';
|
||||
|
||||
@override
|
||||
String get sortAlphaDesc => 'Z-A';
|
||||
|
||||
@override
|
||||
String get cancelDownloadTitle => 'Cancel download?';
|
||||
|
||||
@override
|
||||
String cancelDownloadContent(String trackName) {
|
||||
return 'This will cancel the active download for \"$trackName\".';
|
||||
}
|
||||
|
||||
@override
|
||||
String get cancelDownloadKeep => 'Keep';
|
||||
|
||||
@override
|
||||
String get metadataSaveFailedFfmpeg => 'Failed to save metadata via FFmpeg';
|
||||
|
||||
@override
|
||||
String get metadataSaveFailedStorage =>
|
||||
'Failed to write metadata back to storage';
|
||||
|
||||
@override
|
||||
String snackbarFolderPickerFailed(String error) {
|
||||
return 'Failed to open folder picker: $error';
|
||||
}
|
||||
|
||||
@override
|
||||
String get errorLoadAlbum => 'Failed to load album';
|
||||
|
||||
@override
|
||||
String get errorLoadPlaylist => 'Failed to load playlist';
|
||||
|
||||
@override
|
||||
String get errorLoadArtist => 'Failed to load artist';
|
||||
|
||||
@override
|
||||
String get notifChannelDownloadName => 'Download Progress';
|
||||
|
||||
@override
|
||||
String get notifChannelDownloadDesc => 'Shows download progress for tracks';
|
||||
|
||||
@override
|
||||
String get notifChannelLibraryScanName => 'Library Scan';
|
||||
|
||||
@override
|
||||
String get notifChannelLibraryScanDesc => 'Shows local library scan progress';
|
||||
|
||||
@override
|
||||
String notifDownloadingTrack(String trackName) {
|
||||
return 'Downloading $trackName';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifFinalizingTrack(String trackName) {
|
||||
return 'Finalizing $trackName';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifEmbeddingMetadata => 'Embedding metadata...';
|
||||
|
||||
@override
|
||||
String notifAlreadyInLibraryCount(int completed, int total) {
|
||||
return 'Already in Library ($completed/$total)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifAlreadyInLibrary => 'Already in Library';
|
||||
|
||||
@override
|
||||
String notifDownloadCompleteCount(int completed, int total) {
|
||||
return 'Download Complete ($completed/$total)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifDownloadComplete => 'Download Complete';
|
||||
|
||||
@override
|
||||
String notifDownloadsFinished(int completed, int failed) {
|
||||
return 'Downloads Finished ($completed done, $failed failed)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifAllDownloadsComplete => 'All Downloads Complete';
|
||||
|
||||
@override
|
||||
String notifTracksDownloadedSuccess(int count) {
|
||||
return '$count tracks downloaded successfully';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifScanningLibrary => 'Scanning local library';
|
||||
|
||||
@override
|
||||
String notifLibraryScanProgressWithTotal(
|
||||
int scanned,
|
||||
int total,
|
||||
int percentage,
|
||||
) {
|
||||
return '$scanned/$total files • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanProgressNoTotal(int scanned, int percentage) {
|
||||
return '$scanned files scanned • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifLibraryScanComplete => 'Library scan complete';
|
||||
|
||||
@override
|
||||
String notifLibraryScanCompleteBody(int count) {
|
||||
return '$count tracks indexed';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanExcluded(int count) {
|
||||
return '$count excluded';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanErrors(int count) {
|
||||
return '$count errors';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifLibraryScanFailed => 'Library scan failed';
|
||||
|
||||
@override
|
||||
String get notifLibraryScanCancelled => 'Library scan cancelled';
|
||||
|
||||
@override
|
||||
String get notifLibraryScanStopped => 'Scan stopped before completion.';
|
||||
|
||||
@override
|
||||
String notifDownloadingUpdate(String version) {
|
||||
return 'Downloading SpotiFLAC v$version';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifUpdateProgress(String received, String total, int percentage) {
|
||||
return '$received / $total MB • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifUpdateReady => 'Update Ready';
|
||||
|
||||
@override
|
||||
String notifUpdateReadyBody(String version) {
|
||||
return 'SpotiFLAC v$version downloaded. Tap to install.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifUpdateFailed => 'Update Failed';
|
||||
|
||||
@override
|
||||
String get notifUpdateFailedBody =>
|
||||
'Could not download update. Try again later.';
|
||||
}
|
||||
|
||||
@@ -3071,4 +3071,192 @@ class AppLocalizationsKo extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get audioAnalysisSamples => 'Samples';
|
||||
|
||||
@override
|
||||
String extensionsSearchWith(String providerName) {
|
||||
return 'Search with $providerName';
|
||||
}
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedProvider => 'Home Feed Provider';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedDescription =>
|
||||
'Choose which extension provides the home feed on the main screen';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedAuto => 'Auto';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedAutoSubtitle =>
|
||||
'Automatically select the best available';
|
||||
|
||||
@override
|
||||
String extensionsHomeFeedUse(String extensionName) {
|
||||
return 'Use $extensionName home feed';
|
||||
}
|
||||
|
||||
@override
|
||||
String get extensionsNoHomeFeedExtensions => 'No extensions with home feed';
|
||||
|
||||
@override
|
||||
String get sortAlphaAsc => 'A-Z';
|
||||
|
||||
@override
|
||||
String get sortAlphaDesc => 'Z-A';
|
||||
|
||||
@override
|
||||
String get cancelDownloadTitle => 'Cancel download?';
|
||||
|
||||
@override
|
||||
String cancelDownloadContent(String trackName) {
|
||||
return 'This will cancel the active download for \"$trackName\".';
|
||||
}
|
||||
|
||||
@override
|
||||
String get cancelDownloadKeep => 'Keep';
|
||||
|
||||
@override
|
||||
String get metadataSaveFailedFfmpeg => 'Failed to save metadata via FFmpeg';
|
||||
|
||||
@override
|
||||
String get metadataSaveFailedStorage =>
|
||||
'Failed to write metadata back to storage';
|
||||
|
||||
@override
|
||||
String snackbarFolderPickerFailed(String error) {
|
||||
return 'Failed to open folder picker: $error';
|
||||
}
|
||||
|
||||
@override
|
||||
String get errorLoadAlbum => 'Failed to load album';
|
||||
|
||||
@override
|
||||
String get errorLoadPlaylist => 'Failed to load playlist';
|
||||
|
||||
@override
|
||||
String get errorLoadArtist => 'Failed to load artist';
|
||||
|
||||
@override
|
||||
String get notifChannelDownloadName => 'Download Progress';
|
||||
|
||||
@override
|
||||
String get notifChannelDownloadDesc => 'Shows download progress for tracks';
|
||||
|
||||
@override
|
||||
String get notifChannelLibraryScanName => 'Library Scan';
|
||||
|
||||
@override
|
||||
String get notifChannelLibraryScanDesc => 'Shows local library scan progress';
|
||||
|
||||
@override
|
||||
String notifDownloadingTrack(String trackName) {
|
||||
return 'Downloading $trackName';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifFinalizingTrack(String trackName) {
|
||||
return 'Finalizing $trackName';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifEmbeddingMetadata => 'Embedding metadata...';
|
||||
|
||||
@override
|
||||
String notifAlreadyInLibraryCount(int completed, int total) {
|
||||
return 'Already in Library ($completed/$total)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifAlreadyInLibrary => 'Already in Library';
|
||||
|
||||
@override
|
||||
String notifDownloadCompleteCount(int completed, int total) {
|
||||
return 'Download Complete ($completed/$total)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifDownloadComplete => 'Download Complete';
|
||||
|
||||
@override
|
||||
String notifDownloadsFinished(int completed, int failed) {
|
||||
return 'Downloads Finished ($completed done, $failed failed)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifAllDownloadsComplete => 'All Downloads Complete';
|
||||
|
||||
@override
|
||||
String notifTracksDownloadedSuccess(int count) {
|
||||
return '$count tracks downloaded successfully';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifScanningLibrary => 'Scanning local library';
|
||||
|
||||
@override
|
||||
String notifLibraryScanProgressWithTotal(
|
||||
int scanned,
|
||||
int total,
|
||||
int percentage,
|
||||
) {
|
||||
return '$scanned/$total files • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanProgressNoTotal(int scanned, int percentage) {
|
||||
return '$scanned files scanned • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifLibraryScanComplete => 'Library scan complete';
|
||||
|
||||
@override
|
||||
String notifLibraryScanCompleteBody(int count) {
|
||||
return '$count tracks indexed';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanExcluded(int count) {
|
||||
return '$count excluded';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanErrors(int count) {
|
||||
return '$count errors';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifLibraryScanFailed => 'Library scan failed';
|
||||
|
||||
@override
|
||||
String get notifLibraryScanCancelled => 'Library scan cancelled';
|
||||
|
||||
@override
|
||||
String get notifLibraryScanStopped => 'Scan stopped before completion.';
|
||||
|
||||
@override
|
||||
String notifDownloadingUpdate(String version) {
|
||||
return 'Downloading SpotiFLAC v$version';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifUpdateProgress(String received, String total, int percentage) {
|
||||
return '$received / $total MB • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifUpdateReady => 'Update Ready';
|
||||
|
||||
@override
|
||||
String notifUpdateReadyBody(String version) {
|
||||
return 'SpotiFLAC v$version downloaded. Tap to install.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifUpdateFailed => 'Update Failed';
|
||||
|
||||
@override
|
||||
String get notifUpdateFailedBody =>
|
||||
'Could not download update. Try again later.';
|
||||
}
|
||||
|
||||
@@ -3091,4 +3091,192 @@ class AppLocalizationsNl extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get audioAnalysisSamples => 'Samples';
|
||||
|
||||
@override
|
||||
String extensionsSearchWith(String providerName) {
|
||||
return 'Search with $providerName';
|
||||
}
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedProvider => 'Home Feed Provider';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedDescription =>
|
||||
'Choose which extension provides the home feed on the main screen';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedAuto => 'Auto';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedAutoSubtitle =>
|
||||
'Automatically select the best available';
|
||||
|
||||
@override
|
||||
String extensionsHomeFeedUse(String extensionName) {
|
||||
return 'Use $extensionName home feed';
|
||||
}
|
||||
|
||||
@override
|
||||
String get extensionsNoHomeFeedExtensions => 'No extensions with home feed';
|
||||
|
||||
@override
|
||||
String get sortAlphaAsc => 'A-Z';
|
||||
|
||||
@override
|
||||
String get sortAlphaDesc => 'Z-A';
|
||||
|
||||
@override
|
||||
String get cancelDownloadTitle => 'Cancel download?';
|
||||
|
||||
@override
|
||||
String cancelDownloadContent(String trackName) {
|
||||
return 'This will cancel the active download for \"$trackName\".';
|
||||
}
|
||||
|
||||
@override
|
||||
String get cancelDownloadKeep => 'Keep';
|
||||
|
||||
@override
|
||||
String get metadataSaveFailedFfmpeg => 'Failed to save metadata via FFmpeg';
|
||||
|
||||
@override
|
||||
String get metadataSaveFailedStorage =>
|
||||
'Failed to write metadata back to storage';
|
||||
|
||||
@override
|
||||
String snackbarFolderPickerFailed(String error) {
|
||||
return 'Failed to open folder picker: $error';
|
||||
}
|
||||
|
||||
@override
|
||||
String get errorLoadAlbum => 'Failed to load album';
|
||||
|
||||
@override
|
||||
String get errorLoadPlaylist => 'Failed to load playlist';
|
||||
|
||||
@override
|
||||
String get errorLoadArtist => 'Failed to load artist';
|
||||
|
||||
@override
|
||||
String get notifChannelDownloadName => 'Download Progress';
|
||||
|
||||
@override
|
||||
String get notifChannelDownloadDesc => 'Shows download progress for tracks';
|
||||
|
||||
@override
|
||||
String get notifChannelLibraryScanName => 'Library Scan';
|
||||
|
||||
@override
|
||||
String get notifChannelLibraryScanDesc => 'Shows local library scan progress';
|
||||
|
||||
@override
|
||||
String notifDownloadingTrack(String trackName) {
|
||||
return 'Downloading $trackName';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifFinalizingTrack(String trackName) {
|
||||
return 'Finalizing $trackName';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifEmbeddingMetadata => 'Embedding metadata...';
|
||||
|
||||
@override
|
||||
String notifAlreadyInLibraryCount(int completed, int total) {
|
||||
return 'Already in Library ($completed/$total)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifAlreadyInLibrary => 'Already in Library';
|
||||
|
||||
@override
|
||||
String notifDownloadCompleteCount(int completed, int total) {
|
||||
return 'Download Complete ($completed/$total)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifDownloadComplete => 'Download Complete';
|
||||
|
||||
@override
|
||||
String notifDownloadsFinished(int completed, int failed) {
|
||||
return 'Downloads Finished ($completed done, $failed failed)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifAllDownloadsComplete => 'All Downloads Complete';
|
||||
|
||||
@override
|
||||
String notifTracksDownloadedSuccess(int count) {
|
||||
return '$count tracks downloaded successfully';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifScanningLibrary => 'Scanning local library';
|
||||
|
||||
@override
|
||||
String notifLibraryScanProgressWithTotal(
|
||||
int scanned,
|
||||
int total,
|
||||
int percentage,
|
||||
) {
|
||||
return '$scanned/$total files • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanProgressNoTotal(int scanned, int percentage) {
|
||||
return '$scanned files scanned • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifLibraryScanComplete => 'Library scan complete';
|
||||
|
||||
@override
|
||||
String notifLibraryScanCompleteBody(int count) {
|
||||
return '$count tracks indexed';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanExcluded(int count) {
|
||||
return '$count excluded';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanErrors(int count) {
|
||||
return '$count errors';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifLibraryScanFailed => 'Library scan failed';
|
||||
|
||||
@override
|
||||
String get notifLibraryScanCancelled => 'Library scan cancelled';
|
||||
|
||||
@override
|
||||
String get notifLibraryScanStopped => 'Scan stopped before completion.';
|
||||
|
||||
@override
|
||||
String notifDownloadingUpdate(String version) {
|
||||
return 'Downloading SpotiFLAC v$version';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifUpdateProgress(String received, String total, int percentage) {
|
||||
return '$received / $total MB • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifUpdateReady => 'Update Ready';
|
||||
|
||||
@override
|
||||
String notifUpdateReadyBody(String version) {
|
||||
return 'SpotiFLAC v$version downloaded. Tap to install.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifUpdateFailed => 'Update Failed';
|
||||
|
||||
@override
|
||||
String get notifUpdateFailedBody =>
|
||||
'Could not download update. Try again later.';
|
||||
}
|
||||
|
||||
@@ -3092,6 +3092,194 @@ class AppLocalizationsPt extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get audioAnalysisSamples => 'Samples';
|
||||
|
||||
@override
|
||||
String extensionsSearchWith(String providerName) {
|
||||
return 'Search with $providerName';
|
||||
}
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedProvider => 'Home Feed Provider';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedDescription =>
|
||||
'Choose which extension provides the home feed on the main screen';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedAuto => 'Auto';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedAutoSubtitle =>
|
||||
'Automatically select the best available';
|
||||
|
||||
@override
|
||||
String extensionsHomeFeedUse(String extensionName) {
|
||||
return 'Use $extensionName home feed';
|
||||
}
|
||||
|
||||
@override
|
||||
String get extensionsNoHomeFeedExtensions => 'No extensions with home feed';
|
||||
|
||||
@override
|
||||
String get sortAlphaAsc => 'A-Z';
|
||||
|
||||
@override
|
||||
String get sortAlphaDesc => 'Z-A';
|
||||
|
||||
@override
|
||||
String get cancelDownloadTitle => 'Cancel download?';
|
||||
|
||||
@override
|
||||
String cancelDownloadContent(String trackName) {
|
||||
return 'This will cancel the active download for \"$trackName\".';
|
||||
}
|
||||
|
||||
@override
|
||||
String get cancelDownloadKeep => 'Keep';
|
||||
|
||||
@override
|
||||
String get metadataSaveFailedFfmpeg => 'Failed to save metadata via FFmpeg';
|
||||
|
||||
@override
|
||||
String get metadataSaveFailedStorage =>
|
||||
'Failed to write metadata back to storage';
|
||||
|
||||
@override
|
||||
String snackbarFolderPickerFailed(String error) {
|
||||
return 'Failed to open folder picker: $error';
|
||||
}
|
||||
|
||||
@override
|
||||
String get errorLoadAlbum => 'Failed to load album';
|
||||
|
||||
@override
|
||||
String get errorLoadPlaylist => 'Failed to load playlist';
|
||||
|
||||
@override
|
||||
String get errorLoadArtist => 'Failed to load artist';
|
||||
|
||||
@override
|
||||
String get notifChannelDownloadName => 'Download Progress';
|
||||
|
||||
@override
|
||||
String get notifChannelDownloadDesc => 'Shows download progress for tracks';
|
||||
|
||||
@override
|
||||
String get notifChannelLibraryScanName => 'Library Scan';
|
||||
|
||||
@override
|
||||
String get notifChannelLibraryScanDesc => 'Shows local library scan progress';
|
||||
|
||||
@override
|
||||
String notifDownloadingTrack(String trackName) {
|
||||
return 'Downloading $trackName';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifFinalizingTrack(String trackName) {
|
||||
return 'Finalizing $trackName';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifEmbeddingMetadata => 'Embedding metadata...';
|
||||
|
||||
@override
|
||||
String notifAlreadyInLibraryCount(int completed, int total) {
|
||||
return 'Already in Library ($completed/$total)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifAlreadyInLibrary => 'Already in Library';
|
||||
|
||||
@override
|
||||
String notifDownloadCompleteCount(int completed, int total) {
|
||||
return 'Download Complete ($completed/$total)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifDownloadComplete => 'Download Complete';
|
||||
|
||||
@override
|
||||
String notifDownloadsFinished(int completed, int failed) {
|
||||
return 'Downloads Finished ($completed done, $failed failed)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifAllDownloadsComplete => 'All Downloads Complete';
|
||||
|
||||
@override
|
||||
String notifTracksDownloadedSuccess(int count) {
|
||||
return '$count tracks downloaded successfully';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifScanningLibrary => 'Scanning local library';
|
||||
|
||||
@override
|
||||
String notifLibraryScanProgressWithTotal(
|
||||
int scanned,
|
||||
int total,
|
||||
int percentage,
|
||||
) {
|
||||
return '$scanned/$total files • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanProgressNoTotal(int scanned, int percentage) {
|
||||
return '$scanned files scanned • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifLibraryScanComplete => 'Library scan complete';
|
||||
|
||||
@override
|
||||
String notifLibraryScanCompleteBody(int count) {
|
||||
return '$count tracks indexed';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanExcluded(int count) {
|
||||
return '$count excluded';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanErrors(int count) {
|
||||
return '$count errors';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifLibraryScanFailed => 'Library scan failed';
|
||||
|
||||
@override
|
||||
String get notifLibraryScanCancelled => 'Library scan cancelled';
|
||||
|
||||
@override
|
||||
String get notifLibraryScanStopped => 'Scan stopped before completion.';
|
||||
|
||||
@override
|
||||
String notifDownloadingUpdate(String version) {
|
||||
return 'Downloading SpotiFLAC v$version';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifUpdateProgress(String received, String total, int percentage) {
|
||||
return '$received / $total MB • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifUpdateReady => 'Update Ready';
|
||||
|
||||
@override
|
||||
String notifUpdateReadyBody(String version) {
|
||||
return 'SpotiFLAC v$version downloaded. Tap to install.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifUpdateFailed => 'Update Failed';
|
||||
|
||||
@override
|
||||
String get notifUpdateFailedBody =>
|
||||
'Could not download update. Try again later.';
|
||||
}
|
||||
|
||||
/// The translations for Portuguese, as used in Portugal (`pt_PT`).
|
||||
|
||||
@@ -3151,4 +3151,192 @@ class AppLocalizationsRu extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get audioAnalysisSamples => 'Samples';
|
||||
|
||||
@override
|
||||
String extensionsSearchWith(String providerName) {
|
||||
return 'Search with $providerName';
|
||||
}
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedProvider => 'Home Feed Provider';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedDescription =>
|
||||
'Choose which extension provides the home feed on the main screen';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedAuto => 'Auto';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedAutoSubtitle =>
|
||||
'Automatically select the best available';
|
||||
|
||||
@override
|
||||
String extensionsHomeFeedUse(String extensionName) {
|
||||
return 'Use $extensionName home feed';
|
||||
}
|
||||
|
||||
@override
|
||||
String get extensionsNoHomeFeedExtensions => 'No extensions with home feed';
|
||||
|
||||
@override
|
||||
String get sortAlphaAsc => 'A-Z';
|
||||
|
||||
@override
|
||||
String get sortAlphaDesc => 'Z-A';
|
||||
|
||||
@override
|
||||
String get cancelDownloadTitle => 'Cancel download?';
|
||||
|
||||
@override
|
||||
String cancelDownloadContent(String trackName) {
|
||||
return 'This will cancel the active download for \"$trackName\".';
|
||||
}
|
||||
|
||||
@override
|
||||
String get cancelDownloadKeep => 'Keep';
|
||||
|
||||
@override
|
||||
String get metadataSaveFailedFfmpeg => 'Failed to save metadata via FFmpeg';
|
||||
|
||||
@override
|
||||
String get metadataSaveFailedStorage =>
|
||||
'Failed to write metadata back to storage';
|
||||
|
||||
@override
|
||||
String snackbarFolderPickerFailed(String error) {
|
||||
return 'Failed to open folder picker: $error';
|
||||
}
|
||||
|
||||
@override
|
||||
String get errorLoadAlbum => 'Failed to load album';
|
||||
|
||||
@override
|
||||
String get errorLoadPlaylist => 'Failed to load playlist';
|
||||
|
||||
@override
|
||||
String get errorLoadArtist => 'Failed to load artist';
|
||||
|
||||
@override
|
||||
String get notifChannelDownloadName => 'Download Progress';
|
||||
|
||||
@override
|
||||
String get notifChannelDownloadDesc => 'Shows download progress for tracks';
|
||||
|
||||
@override
|
||||
String get notifChannelLibraryScanName => 'Library Scan';
|
||||
|
||||
@override
|
||||
String get notifChannelLibraryScanDesc => 'Shows local library scan progress';
|
||||
|
||||
@override
|
||||
String notifDownloadingTrack(String trackName) {
|
||||
return 'Downloading $trackName';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifFinalizingTrack(String trackName) {
|
||||
return 'Finalizing $trackName';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifEmbeddingMetadata => 'Embedding metadata...';
|
||||
|
||||
@override
|
||||
String notifAlreadyInLibraryCount(int completed, int total) {
|
||||
return 'Already in Library ($completed/$total)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifAlreadyInLibrary => 'Already in Library';
|
||||
|
||||
@override
|
||||
String notifDownloadCompleteCount(int completed, int total) {
|
||||
return 'Download Complete ($completed/$total)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifDownloadComplete => 'Download Complete';
|
||||
|
||||
@override
|
||||
String notifDownloadsFinished(int completed, int failed) {
|
||||
return 'Downloads Finished ($completed done, $failed failed)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifAllDownloadsComplete => 'All Downloads Complete';
|
||||
|
||||
@override
|
||||
String notifTracksDownloadedSuccess(int count) {
|
||||
return '$count tracks downloaded successfully';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifScanningLibrary => 'Scanning local library';
|
||||
|
||||
@override
|
||||
String notifLibraryScanProgressWithTotal(
|
||||
int scanned,
|
||||
int total,
|
||||
int percentage,
|
||||
) {
|
||||
return '$scanned/$total files • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanProgressNoTotal(int scanned, int percentage) {
|
||||
return '$scanned files scanned • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifLibraryScanComplete => 'Library scan complete';
|
||||
|
||||
@override
|
||||
String notifLibraryScanCompleteBody(int count) {
|
||||
return '$count tracks indexed';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanExcluded(int count) {
|
||||
return '$count excluded';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanErrors(int count) {
|
||||
return '$count errors';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifLibraryScanFailed => 'Library scan failed';
|
||||
|
||||
@override
|
||||
String get notifLibraryScanCancelled => 'Library scan cancelled';
|
||||
|
||||
@override
|
||||
String get notifLibraryScanStopped => 'Scan stopped before completion.';
|
||||
|
||||
@override
|
||||
String notifDownloadingUpdate(String version) {
|
||||
return 'Downloading SpotiFLAC v$version';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifUpdateProgress(String received, String total, int percentage) {
|
||||
return '$received / $total MB • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifUpdateReady => 'Update Ready';
|
||||
|
||||
@override
|
||||
String notifUpdateReadyBody(String version) {
|
||||
return 'SpotiFLAC v$version downloaded. Tap to install.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifUpdateFailed => 'Update Failed';
|
||||
|
||||
@override
|
||||
String get notifUpdateFailedBody =>
|
||||
'Could not download update. Try again later.';
|
||||
}
|
||||
|
||||
@@ -3097,4 +3097,192 @@ class AppLocalizationsTr extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get audioAnalysisSamples => 'Samples';
|
||||
|
||||
@override
|
||||
String extensionsSearchWith(String providerName) {
|
||||
return 'Search with $providerName';
|
||||
}
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedProvider => 'Home Feed Provider';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedDescription =>
|
||||
'Choose which extension provides the home feed on the main screen';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedAuto => 'Auto';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedAutoSubtitle =>
|
||||
'Automatically select the best available';
|
||||
|
||||
@override
|
||||
String extensionsHomeFeedUse(String extensionName) {
|
||||
return 'Use $extensionName home feed';
|
||||
}
|
||||
|
||||
@override
|
||||
String get extensionsNoHomeFeedExtensions => 'No extensions with home feed';
|
||||
|
||||
@override
|
||||
String get sortAlphaAsc => 'A-Z';
|
||||
|
||||
@override
|
||||
String get sortAlphaDesc => 'Z-A';
|
||||
|
||||
@override
|
||||
String get cancelDownloadTitle => 'Cancel download?';
|
||||
|
||||
@override
|
||||
String cancelDownloadContent(String trackName) {
|
||||
return 'This will cancel the active download for \"$trackName\".';
|
||||
}
|
||||
|
||||
@override
|
||||
String get cancelDownloadKeep => 'Keep';
|
||||
|
||||
@override
|
||||
String get metadataSaveFailedFfmpeg => 'Failed to save metadata via FFmpeg';
|
||||
|
||||
@override
|
||||
String get metadataSaveFailedStorage =>
|
||||
'Failed to write metadata back to storage';
|
||||
|
||||
@override
|
||||
String snackbarFolderPickerFailed(String error) {
|
||||
return 'Failed to open folder picker: $error';
|
||||
}
|
||||
|
||||
@override
|
||||
String get errorLoadAlbum => 'Failed to load album';
|
||||
|
||||
@override
|
||||
String get errorLoadPlaylist => 'Failed to load playlist';
|
||||
|
||||
@override
|
||||
String get errorLoadArtist => 'Failed to load artist';
|
||||
|
||||
@override
|
||||
String get notifChannelDownloadName => 'Download Progress';
|
||||
|
||||
@override
|
||||
String get notifChannelDownloadDesc => 'Shows download progress for tracks';
|
||||
|
||||
@override
|
||||
String get notifChannelLibraryScanName => 'Library Scan';
|
||||
|
||||
@override
|
||||
String get notifChannelLibraryScanDesc => 'Shows local library scan progress';
|
||||
|
||||
@override
|
||||
String notifDownloadingTrack(String trackName) {
|
||||
return 'Downloading $trackName';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifFinalizingTrack(String trackName) {
|
||||
return 'Finalizing $trackName';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifEmbeddingMetadata => 'Embedding metadata...';
|
||||
|
||||
@override
|
||||
String notifAlreadyInLibraryCount(int completed, int total) {
|
||||
return 'Already in Library ($completed/$total)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifAlreadyInLibrary => 'Already in Library';
|
||||
|
||||
@override
|
||||
String notifDownloadCompleteCount(int completed, int total) {
|
||||
return 'Download Complete ($completed/$total)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifDownloadComplete => 'Download Complete';
|
||||
|
||||
@override
|
||||
String notifDownloadsFinished(int completed, int failed) {
|
||||
return 'Downloads Finished ($completed done, $failed failed)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifAllDownloadsComplete => 'All Downloads Complete';
|
||||
|
||||
@override
|
||||
String notifTracksDownloadedSuccess(int count) {
|
||||
return '$count tracks downloaded successfully';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifScanningLibrary => 'Scanning local library';
|
||||
|
||||
@override
|
||||
String notifLibraryScanProgressWithTotal(
|
||||
int scanned,
|
||||
int total,
|
||||
int percentage,
|
||||
) {
|
||||
return '$scanned/$total files • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanProgressNoTotal(int scanned, int percentage) {
|
||||
return '$scanned files scanned • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifLibraryScanComplete => 'Library scan complete';
|
||||
|
||||
@override
|
||||
String notifLibraryScanCompleteBody(int count) {
|
||||
return '$count tracks indexed';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanExcluded(int count) {
|
||||
return '$count excluded';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanErrors(int count) {
|
||||
return '$count errors';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifLibraryScanFailed => 'Library scan failed';
|
||||
|
||||
@override
|
||||
String get notifLibraryScanCancelled => 'Library scan cancelled';
|
||||
|
||||
@override
|
||||
String get notifLibraryScanStopped => 'Scan stopped before completion.';
|
||||
|
||||
@override
|
||||
String notifDownloadingUpdate(String version) {
|
||||
return 'Downloading SpotiFLAC v$version';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifUpdateProgress(String received, String total, int percentage) {
|
||||
return '$received / $total MB • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifUpdateReady => 'Update Ready';
|
||||
|
||||
@override
|
||||
String notifUpdateReadyBody(String version) {
|
||||
return 'SpotiFLAC v$version downloaded. Tap to install.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifUpdateFailed => 'Update Failed';
|
||||
|
||||
@override
|
||||
String get notifUpdateFailedBody =>
|
||||
'Could not download update. Try again later.';
|
||||
}
|
||||
|
||||
@@ -3092,6 +3092,194 @@ class AppLocalizationsZh extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get audioAnalysisSamples => 'Samples';
|
||||
|
||||
@override
|
||||
String extensionsSearchWith(String providerName) {
|
||||
return 'Search with $providerName';
|
||||
}
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedProvider => 'Home Feed Provider';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedDescription =>
|
||||
'Choose which extension provides the home feed on the main screen';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedAuto => 'Auto';
|
||||
|
||||
@override
|
||||
String get extensionsHomeFeedAutoSubtitle =>
|
||||
'Automatically select the best available';
|
||||
|
||||
@override
|
||||
String extensionsHomeFeedUse(String extensionName) {
|
||||
return 'Use $extensionName home feed';
|
||||
}
|
||||
|
||||
@override
|
||||
String get extensionsNoHomeFeedExtensions => 'No extensions with home feed';
|
||||
|
||||
@override
|
||||
String get sortAlphaAsc => 'A-Z';
|
||||
|
||||
@override
|
||||
String get sortAlphaDesc => 'Z-A';
|
||||
|
||||
@override
|
||||
String get cancelDownloadTitle => 'Cancel download?';
|
||||
|
||||
@override
|
||||
String cancelDownloadContent(String trackName) {
|
||||
return 'This will cancel the active download for \"$trackName\".';
|
||||
}
|
||||
|
||||
@override
|
||||
String get cancelDownloadKeep => 'Keep';
|
||||
|
||||
@override
|
||||
String get metadataSaveFailedFfmpeg => 'Failed to save metadata via FFmpeg';
|
||||
|
||||
@override
|
||||
String get metadataSaveFailedStorage =>
|
||||
'Failed to write metadata back to storage';
|
||||
|
||||
@override
|
||||
String snackbarFolderPickerFailed(String error) {
|
||||
return 'Failed to open folder picker: $error';
|
||||
}
|
||||
|
||||
@override
|
||||
String get errorLoadAlbum => 'Failed to load album';
|
||||
|
||||
@override
|
||||
String get errorLoadPlaylist => 'Failed to load playlist';
|
||||
|
||||
@override
|
||||
String get errorLoadArtist => 'Failed to load artist';
|
||||
|
||||
@override
|
||||
String get notifChannelDownloadName => 'Download Progress';
|
||||
|
||||
@override
|
||||
String get notifChannelDownloadDesc => 'Shows download progress for tracks';
|
||||
|
||||
@override
|
||||
String get notifChannelLibraryScanName => 'Library Scan';
|
||||
|
||||
@override
|
||||
String get notifChannelLibraryScanDesc => 'Shows local library scan progress';
|
||||
|
||||
@override
|
||||
String notifDownloadingTrack(String trackName) {
|
||||
return 'Downloading $trackName';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifFinalizingTrack(String trackName) {
|
||||
return 'Finalizing $trackName';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifEmbeddingMetadata => 'Embedding metadata...';
|
||||
|
||||
@override
|
||||
String notifAlreadyInLibraryCount(int completed, int total) {
|
||||
return 'Already in Library ($completed/$total)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifAlreadyInLibrary => 'Already in Library';
|
||||
|
||||
@override
|
||||
String notifDownloadCompleteCount(int completed, int total) {
|
||||
return 'Download Complete ($completed/$total)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifDownloadComplete => 'Download Complete';
|
||||
|
||||
@override
|
||||
String notifDownloadsFinished(int completed, int failed) {
|
||||
return 'Downloads Finished ($completed done, $failed failed)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifAllDownloadsComplete => 'All Downloads Complete';
|
||||
|
||||
@override
|
||||
String notifTracksDownloadedSuccess(int count) {
|
||||
return '$count tracks downloaded successfully';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifScanningLibrary => 'Scanning local library';
|
||||
|
||||
@override
|
||||
String notifLibraryScanProgressWithTotal(
|
||||
int scanned,
|
||||
int total,
|
||||
int percentage,
|
||||
) {
|
||||
return '$scanned/$total files • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanProgressNoTotal(int scanned, int percentage) {
|
||||
return '$scanned files scanned • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifLibraryScanComplete => 'Library scan complete';
|
||||
|
||||
@override
|
||||
String notifLibraryScanCompleteBody(int count) {
|
||||
return '$count tracks indexed';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanExcluded(int count) {
|
||||
return '$count excluded';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifLibraryScanErrors(int count) {
|
||||
return '$count errors';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifLibraryScanFailed => 'Library scan failed';
|
||||
|
||||
@override
|
||||
String get notifLibraryScanCancelled => 'Library scan cancelled';
|
||||
|
||||
@override
|
||||
String get notifLibraryScanStopped => 'Scan stopped before completion.';
|
||||
|
||||
@override
|
||||
String notifDownloadingUpdate(String version) {
|
||||
return 'Downloading SpotiFLAC v$version';
|
||||
}
|
||||
|
||||
@override
|
||||
String notifUpdateProgress(String received, String total, int percentage) {
|
||||
return '$received / $total MB • $percentage%';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifUpdateReady => 'Update Ready';
|
||||
|
||||
@override
|
||||
String notifUpdateReadyBody(String version) {
|
||||
return 'SpotiFLAC v$version downloaded. Tap to install.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get notifUpdateFailed => 'Update Failed';
|
||||
|
||||
@override
|
||||
String get notifUpdateFailedBody =>
|
||||
'Could not download update. Try again later.';
|
||||
}
|
||||
|
||||
/// The translations for Chinese, as used in China (`zh_CN`).
|
||||
|
||||
@@ -4063,5 +4063,317 @@
|
||||
"audioAnalysisSamples": "Samples",
|
||||
"@audioAnalysisSamples": {
|
||||
"description": "Total samples metric label"
|
||||
},
|
||||
|
||||
"extensionsSearchWith": "Search with {providerName}",
|
||||
"@extensionsSearchWith": {
|
||||
"description": "Extensions page - subtitle for built-in search provider option",
|
||||
"placeholders": {
|
||||
"providerName": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"extensionsHomeFeedProvider": "Home Feed Provider",
|
||||
"@extensionsHomeFeedProvider": {
|
||||
"description": "Extensions page - label for home feed provider selector"
|
||||
},
|
||||
"extensionsHomeFeedDescription": "Choose which extension provides the home feed on the main screen",
|
||||
"@extensionsHomeFeedDescription": {
|
||||
"description": "Extensions page - description for home feed provider picker"
|
||||
},
|
||||
"extensionsHomeFeedAuto": "Auto",
|
||||
"@extensionsHomeFeedAuto": {
|
||||
"description": "Extensions page - home feed provider option: auto"
|
||||
},
|
||||
"extensionsHomeFeedAutoSubtitle": "Automatically select the best available",
|
||||
"@extensionsHomeFeedAutoSubtitle": {
|
||||
"description": "Extensions page - subtitle for auto home feed option"
|
||||
},
|
||||
"extensionsHomeFeedUse": "Use {extensionName} home feed",
|
||||
"@extensionsHomeFeedUse": {
|
||||
"description": "Extensions page - subtitle for a specific extension home feed option",
|
||||
"placeholders": {
|
||||
"extensionName": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"extensionsNoHomeFeedExtensions": "No extensions with home feed",
|
||||
"@extensionsNoHomeFeedExtensions": {
|
||||
"description": "Extensions page - shown when no installed extension has home feed"
|
||||
},
|
||||
|
||||
"sortAlphaAsc": "A-Z",
|
||||
"@sortAlphaAsc": {
|
||||
"description": "Sort option - alphabetical ascending"
|
||||
},
|
||||
"sortAlphaDesc": "Z-A",
|
||||
"@sortAlphaDesc": {
|
||||
"description": "Sort option - alphabetical descending"
|
||||
},
|
||||
"cancelDownloadTitle": "Cancel download?",
|
||||
"@cancelDownloadTitle": {
|
||||
"description": "Dialog title when confirming cancellation of an active download"
|
||||
},
|
||||
"cancelDownloadContent": "This will cancel the active download for \"{trackName}\".",
|
||||
"@cancelDownloadContent": {
|
||||
"description": "Dialog body when confirming cancellation of an active download",
|
||||
"placeholders": {
|
||||
"trackName": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"cancelDownloadKeep": "Keep",
|
||||
"@cancelDownloadKeep": {
|
||||
"description": "Dialog button - keep the active download (do not cancel)"
|
||||
},
|
||||
|
||||
"metadataSaveFailedFfmpeg": "Failed to save metadata via FFmpeg",
|
||||
"@metadataSaveFailedFfmpeg": {
|
||||
"description": "Snackbar error when FFmpeg fails to write metadata"
|
||||
},
|
||||
"metadataSaveFailedStorage": "Failed to write metadata back to storage",
|
||||
"@metadataSaveFailedStorage": {
|
||||
"description": "Snackbar error when writing metadata file back to storage fails"
|
||||
},
|
||||
|
||||
"snackbarFolderPickerFailed": "Failed to open folder picker: {error}",
|
||||
"@snackbarFolderPickerFailed": {
|
||||
"description": "Snackbar shown when folder picker fails to open",
|
||||
"placeholders": {
|
||||
"error": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"errorLoadAlbum": "Failed to load album",
|
||||
"@errorLoadAlbum": {
|
||||
"description": "Error state shown when album fails to load"
|
||||
},
|
||||
"errorLoadPlaylist": "Failed to load playlist",
|
||||
"@errorLoadPlaylist": {
|
||||
"description": "Error state shown when playlist fails to load"
|
||||
},
|
||||
"errorLoadArtist": "Failed to load artist",
|
||||
"@errorLoadArtist": {
|
||||
"description": "Error state shown when artist fails to load"
|
||||
},
|
||||
|
||||
"notifChannelDownloadName": "Download Progress",
|
||||
"@notifChannelDownloadName": {
|
||||
"description": "Android notification channel name for download progress"
|
||||
},
|
||||
"notifChannelDownloadDesc": "Shows download progress for tracks",
|
||||
"@notifChannelDownloadDesc": {
|
||||
"description": "Android notification channel description for download progress"
|
||||
},
|
||||
"notifChannelLibraryScanName": "Library Scan",
|
||||
"@notifChannelLibraryScanName": {
|
||||
"description": "Android notification channel name for library scan"
|
||||
},
|
||||
"notifChannelLibraryScanDesc": "Shows local library scan progress",
|
||||
"@notifChannelLibraryScanDesc": {
|
||||
"description": "Android notification channel description for library scan"
|
||||
},
|
||||
"notifDownloadingTrack": "Downloading {trackName}",
|
||||
"@notifDownloadingTrack": {
|
||||
"description": "Notification title while downloading a track",
|
||||
"placeholders": {
|
||||
"trackName": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"notifFinalizingTrack": "Finalizing {trackName}",
|
||||
"@notifFinalizingTrack": {
|
||||
"description": "Notification title while finalizing (embedding metadata) a track",
|
||||
"placeholders": {
|
||||
"trackName": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"notifEmbeddingMetadata": "Embedding metadata...",
|
||||
"@notifEmbeddingMetadata": {
|
||||
"description": "Notification body while embedding metadata into a downloaded track"
|
||||
},
|
||||
"notifAlreadyInLibraryCount": "Already in Library ({completed}/{total})",
|
||||
"@notifAlreadyInLibraryCount": {
|
||||
"description": "Notification title when track is already in library, with count",
|
||||
"placeholders": {
|
||||
"completed": {
|
||||
"type": "int"
|
||||
},
|
||||
"total": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"notifAlreadyInLibrary": "Already in Library",
|
||||
"@notifAlreadyInLibrary": {
|
||||
"description": "Notification title when track is already in library"
|
||||
},
|
||||
"notifDownloadCompleteCount": "Download Complete ({completed}/{total})",
|
||||
"@notifDownloadCompleteCount": {
|
||||
"description": "Notification title when download is complete, with count",
|
||||
"placeholders": {
|
||||
"completed": {
|
||||
"type": "int"
|
||||
},
|
||||
"total": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"notifDownloadComplete": "Download Complete",
|
||||
"@notifDownloadComplete": {
|
||||
"description": "Notification title when a single download is complete"
|
||||
},
|
||||
"notifDownloadsFinished": "Downloads Finished ({completed} done, {failed} failed)",
|
||||
"@notifDownloadsFinished": {
|
||||
"description": "Notification title when queue finishes with some failures",
|
||||
"placeholders": {
|
||||
"completed": {
|
||||
"type": "int"
|
||||
},
|
||||
"failed": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"notifAllDownloadsComplete": "All Downloads Complete",
|
||||
"@notifAllDownloadsComplete": {
|
||||
"description": "Notification title when all downloads finish successfully"
|
||||
},
|
||||
"notifTracksDownloadedSuccess": "{count} tracks downloaded successfully",
|
||||
"@notifTracksDownloadedSuccess": {
|
||||
"description": "Notification body for queue complete - how many tracks were downloaded",
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"notifScanningLibrary": "Scanning local library",
|
||||
"@notifScanningLibrary": {
|
||||
"description": "Notification title while scanning local library"
|
||||
},
|
||||
"notifLibraryScanProgressWithTotal": "{scanned}/{total} files • {percentage}%",
|
||||
"@notifLibraryScanProgressWithTotal": {
|
||||
"description": "Notification body for library scan progress when total is known",
|
||||
"placeholders": {
|
||||
"scanned": {
|
||||
"type": "int"
|
||||
},
|
||||
"total": {
|
||||
"type": "int"
|
||||
},
|
||||
"percentage": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"notifLibraryScanProgressNoTotal": "{scanned} files scanned • {percentage}%",
|
||||
"@notifLibraryScanProgressNoTotal": {
|
||||
"description": "Notification body for library scan progress when total is unknown",
|
||||
"placeholders": {
|
||||
"scanned": {
|
||||
"type": "int"
|
||||
},
|
||||
"percentage": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"notifLibraryScanComplete": "Library scan complete",
|
||||
"@notifLibraryScanComplete": {
|
||||
"description": "Notification title when library scan finishes"
|
||||
},
|
||||
"notifLibraryScanCompleteBody": "{count} tracks indexed",
|
||||
"@notifLibraryScanCompleteBody": {
|
||||
"description": "Notification body for library scan complete - number of indexed tracks",
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"notifLibraryScanExcluded": "{count} excluded",
|
||||
"@notifLibraryScanExcluded": {
|
||||
"description": "Library scan complete suffix - excluded track count",
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"notifLibraryScanErrors": "{count} errors",
|
||||
"@notifLibraryScanErrors": {
|
||||
"description": "Library scan complete suffix - error count",
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"notifLibraryScanFailed": "Library scan failed",
|
||||
"@notifLibraryScanFailed": {
|
||||
"description": "Notification title when library scan fails"
|
||||
},
|
||||
"notifLibraryScanCancelled": "Library scan cancelled",
|
||||
"@notifLibraryScanCancelled": {
|
||||
"description": "Notification title when library scan is cancelled by the user"
|
||||
},
|
||||
"notifLibraryScanStopped": "Scan stopped before completion.",
|
||||
"@notifLibraryScanStopped": {
|
||||
"description": "Notification body when library scan is cancelled"
|
||||
},
|
||||
"notifDownloadingUpdate": "Downloading SpotiFLAC v{version}",
|
||||
"@notifDownloadingUpdate": {
|
||||
"description": "Notification title while downloading an app update",
|
||||
"placeholders": {
|
||||
"version": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"notifUpdateProgress": "{received} / {total} MB • {percentage}%",
|
||||
"@notifUpdateProgress": {
|
||||
"description": "Notification body showing update download progress",
|
||||
"placeholders": {
|
||||
"received": {
|
||||
"type": "String"
|
||||
},
|
||||
"total": {
|
||||
"type": "String"
|
||||
},
|
||||
"percentage": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"notifUpdateReady": "Update Ready",
|
||||
"@notifUpdateReady": {
|
||||
"description": "Notification title when app update download is complete"
|
||||
},
|
||||
"notifUpdateReadyBody": "SpotiFLAC v{version} downloaded. Tap to install.",
|
||||
"@notifUpdateReadyBody": {
|
||||
"description": "Notification body when app update is ready to install",
|
||||
"placeholders": {
|
||||
"version": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"notifUpdateFailed": "Update Failed",
|
||||
"@notifUpdateFailed": {
|
||||
"description": "Notification title when app update download fails"
|
||||
},
|
||||
"notifUpdateFailedBody": "Could not download update. Try again later.",
|
||||
"@notifUpdateFailedBody": {
|
||||
"description": "Notification body when app update download fails"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user