diff --git a/lib/l10n/app_localizations.dart b/lib/l10n/app_localizations.dart index 85962c2a..b321656f 100644 --- a/lib/l10n/app_localizations.dart +++ b/lib/l10n/app_localizations.dart @@ -130,12 +130,6 @@ abstract class AppLocalizations { /// **'SpotiFLAC'** String get appName; - /// App description shown in about page - /// - /// In en, this message translates to: - /// **'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'** - String get appDescription; - /// Bottom navigation - Home tab /// /// In en, this message translates to: @@ -148,12 +142,6 @@ abstract class AppLocalizations { /// **'Library'** String get navLibrary; - /// Bottom navigation - History tab (legacy) - /// - /// In en, this message translates to: - /// **'History'** - String get navHistory; - /// Bottom navigation - Settings tab /// /// In en, this message translates to: @@ -172,18 +160,6 @@ abstract class AppLocalizations { /// **'Home'** String get homeTitle; - /// Placeholder text in search box - /// - /// In en, this message translates to: - /// **'Paste Spotify URL or search...'** - String get homeSearchHint; - - /// Placeholder when extension search is active - /// - /// In en, this message translates to: - /// **'Search with {extensionName}...'** - String homeSearchHintExtension(String extensionName); - /// Subtitle shown below search box /// /// In en, this message translates to: @@ -202,24 +178,6 @@ abstract class AppLocalizations { /// **'Recent'** String get homeRecent; - /// History screen title - /// - /// In en, this message translates to: - /// **'History'** - String get historyTitle; - - /// Tab showing active downloads count - /// - /// In en, this message translates to: - /// **'Downloading ({count})'** - String historyDownloading(int count); - - /// Tab showing completed downloads - /// - /// In en, this message translates to: - /// **'Downloaded'** - String get historyDownloaded; - /// Filter chip - show all items /// /// In en, this message translates to: @@ -238,54 +196,6 @@ abstract class AppLocalizations { /// **'Singles'** String get historyFilterSingles; - /// Track count with plural form - /// - /// In en, this message translates to: - /// **'{count, plural, =1{1 track} other{{count} tracks}}'** - String historyTracksCount(int count); - - /// Album count with plural form - /// - /// In en, this message translates to: - /// **'{count, plural, =1{1 album} other{{count} albums}}'** - String historyAlbumsCount(int count); - - /// Empty state title - /// - /// In en, this message translates to: - /// **'No download history'** - String get historyNoDownloads; - - /// Empty state subtitle - /// - /// In en, this message translates to: - /// **'Downloaded tracks will appear here'** - String get historyNoDownloadsSubtitle; - - /// Empty state when filtering albums - /// - /// In en, this message translates to: - /// **'No album downloads'** - String get historyNoAlbums; - - /// Empty state subtitle for albums filter - /// - /// In en, this message translates to: - /// **'Download multiple tracks from an album to see them here'** - String get historyNoAlbumsSubtitle; - - /// Empty state when filtering singles - /// - /// In en, this message translates to: - /// **'No single downloads'** - String get historyNoSingles; - - /// Empty state subtitle for singles filter - /// - /// In en, this message translates to: - /// **'Single track downloads will appear here'** - String get historyNoSinglesSubtitle; - /// Search bar placeholder in history /// /// In en, this message translates to: @@ -334,48 +244,6 @@ abstract class AppLocalizations { /// **'Download'** String get downloadTitle; - /// Setting for download folder - /// - /// In en, this message translates to: - /// **'Download Location'** - String get downloadLocation; - - /// Subtitle for download location - /// - /// In en, this message translates to: - /// **'Choose where to save files'** - String get downloadLocationSubtitle; - - /// Shown when using default folder - /// - /// In en, this message translates to: - /// **'Default location'** - String get downloadLocationDefault; - - /// Setting for preferred download service (Tidal/Qobuz/Amazon) - /// - /// In en, this message translates to: - /// **'Default Service'** - String get downloadDefaultService; - - /// Subtitle for default service - /// - /// In en, this message translates to: - /// **'Service used for downloads'** - String get downloadDefaultServiceSubtitle; - - /// Setting for audio quality - /// - /// In en, this message translates to: - /// **'Default Quality'** - String get downloadDefaultQuality; - - /// Toggle to show quality picker - /// - /// In en, this message translates to: - /// **'Ask Quality Before Download'** - String get downloadAskQuality; - /// Subtitle for ask quality toggle /// /// In en, this message translates to: @@ -394,54 +262,12 @@ abstract class AppLocalizations { /// **'Folder Organization'** String get downloadFolderOrganization; - /// Toggle to separate single tracks - /// - /// In en, this message translates to: - /// **'Separate Singles'** - String get downloadSeparateSingles; - - /// Subtitle for separate singles toggle - /// - /// In en, this message translates to: - /// **'Put single tracks in a separate folder'** - String get downloadSeparateSinglesSubtitle; - - /// Audio quality option - highest available - /// - /// In en, this message translates to: - /// **'Best Available'** - String get qualityBest; - - /// Audio quality option - FLAC lossless - /// - /// In en, this message translates to: - /// **'FLAC'** - String get qualityFlac; - - /// Audio quality option - 320kbps MP3 - /// - /// In en, this message translates to: - /// **'320 kbps'** - String get quality320; - - /// Audio quality option - 128kbps MP3 - /// - /// In en, this message translates to: - /// **'128 kbps'** - String get quality128; - /// Appearance settings page title /// /// In en, this message translates to: /// **'Appearance'** String get appearanceTitle; - /// Theme mode setting - /// - /// In en, this message translates to: - /// **'Theme'** - String get appearanceTheme; - /// Follow system theme /// /// In en, this message translates to: @@ -472,12 +298,6 @@ abstract class AppLocalizations { /// **'Use colors from your wallpaper'** String get appearanceDynamicColorSubtitle; - /// Custom accent color picker - /// - /// In en, this message translates to: - /// **'Accent Color'** - String get appearanceAccentColor; - /// Layout style for history /// /// In en, this message translates to: @@ -502,12 +322,6 @@ abstract class AppLocalizations { /// **'Options'** String get optionsTitle; - /// Section for search provider settings - /// - /// In en, this message translates to: - /// **'Search Source'** - String get optionsSearchSource; - /// Main search provider setting /// /// In en, this message translates to: @@ -544,54 +358,6 @@ abstract class AppLocalizations { /// **'Try other services if download fails'** String get optionsAutoFallbackSubtitle; - /// Toggle to skip to the next queue track when current track stream resolution fails - /// - /// In en, this message translates to: - /// **'Auto Skip Unavailable Tracks'** - String get optionsAutoSkipUnavailableTracks; - - /// Subtitle when auto skip on resolve failure is enabled - /// - /// In en, this message translates to: - /// **'Automatically skip to the next queue track when a stream cannot be resolved.'** - String get optionsAutoSkipUnavailableTracksSubtitleOn; - - /// Subtitle when auto skip on resolve failure is disabled - /// - /// In en, this message translates to: - /// **'Stop on failed track resolution and show an error.'** - String get optionsAutoSkipUnavailableTracksSubtitleOff; - - /// Tap behavior mode for track lists - /// - /// In en, this message translates to: - /// **'Interaction Mode'** - String get optionsInteractionMode; - - /// Interaction mode where taps queue downloads - /// - /// In en, this message translates to: - /// **'Downloader Mode'** - String get modeDownloader; - - /// Subtitle for downloader interaction mode - /// - /// In en, this message translates to: - /// **'Tap tracks to add them to download queue'** - String get modeDownloaderSubtitle; - - /// Interaction mode where taps start playback - /// - /// In en, this message translates to: - /// **'Streaming Mode'** - String get modeStreaming; - - /// Subtitle for streaming interaction mode - /// - /// In en, this message translates to: - /// **'Tap tracks to play instantly'** - String get modeStreamingSubtitle; - /// Enable extension download providers /// /// In en, this message translates to: @@ -772,30 +538,6 @@ abstract class AppLocalizations { /// **'Extensions'** String get extensionsTitle; - /// Section header for installed extensions - /// - /// In en, this message translates to: - /// **'Installed Extensions'** - String get extensionsInstalled; - - /// Empty state title - /// - /// In en, this message translates to: - /// **'No extensions installed'** - String get extensionsNone; - - /// Empty state subtitle - /// - /// In en, this message translates to: - /// **'Install extensions from the Store tab'** - String get extensionsNoneSubtitle; - - /// Extension status - active - /// - /// In en, this message translates to: - /// **'Enabled'** - String get extensionsEnabled; - /// Extension status - inactive /// /// In en, this message translates to: @@ -820,12 +562,6 @@ abstract class AppLocalizations { /// **'Uninstall'** String get extensionsUninstall; - /// Use extension for search - /// - /// In en, this message translates to: - /// **'Set as Search Provider'** - String get extensionsSetAsSearch; - /// Store screen title /// /// In en, this message translates to: @@ -970,12 +706,6 @@ abstract class AppLocalizations { /// **'Social'** String get aboutSocial; - /// Section for support/donation links - /// - /// In en, this message translates to: - /// **'Support'** - String get aboutSupport; - /// Section for app info /// /// In en, this message translates to: @@ -1006,18 +736,6 @@ abstract class AppLocalizations { /// **'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'** String get aboutSjdonadoDesc; - /// Name of Amazon API service - DO NOT TRANSLATE - /// - /// In en, this message translates to: - /// **'DoubleDouble'** - String get aboutDoubleDouble; - - /// Credit for DoubleDouble API - /// - /// In en, this message translates to: - /// **'Amazing API for Amazon Music downloads. Thank you for making it free!'** - String get aboutDoubleDoubleDesc; - /// Name of Qobuz API service - DO NOT TRANSLATE /// /// In en, this message translates to: @@ -1048,42 +766,6 @@ abstract class AppLocalizations { /// **'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'** String get aboutAppDescription; - /// Album screen title - /// - /// In en, this message translates to: - /// **'Album'** - String get albumTitle; - - /// Album track count - /// - /// In en, this message translates to: - /// **'{count, plural, =1{1 track} other{{count} tracks}}'** - String albumTracks(int count); - - /// Button to download all tracks - /// - /// In en, this message translates to: - /// **'Download All'** - String get albumDownloadAll; - - /// Button to download remaining tracks - /// - /// In en, this message translates to: - /// **'Download Remaining'** - String get albumDownloadRemaining; - - /// Playlist screen title - /// - /// In en, this message translates to: - /// **'Playlist'** - String get playlistTitle; - - /// Artist screen title - /// - /// In en, this message translates to: - /// **'Artist'** - String get artistTitle; - /// Section header for artist albums /// /// In en, this message translates to: @@ -1102,12 +784,6 @@ abstract class AppLocalizations { /// **'Compilations'** String get artistCompilations; - /// Artist release count - /// - /// In en, this message translates to: - /// **'{count, plural, =1{1 release} other{{count} releases}}'** - String artistReleases(int count); - /// Section header for popular/top tracks /// /// In en, this message translates to: @@ -1120,48 +796,6 @@ abstract class AppLocalizations { /// **'{count} monthly listeners'** String artistMonthlyListeners(String count); - /// Track metadata screen title - /// - /// In en, this message translates to: - /// **'Track Info'** - String get trackMetadataTitle; - - /// Metadata field - artist name - /// - /// In en, this message translates to: - /// **'Artist'** - String get trackMetadataArtist; - - /// Metadata field - album name - /// - /// In en, this message translates to: - /// **'Album'** - String get trackMetadataAlbum; - - /// Metadata field - track length - /// - /// In en, this message translates to: - /// **'Duration'** - String get trackMetadataDuration; - - /// Metadata field - audio quality - /// - /// In en, this message translates to: - /// **'Quality'** - String get trackMetadataQuality; - - /// Metadata field - file location - /// - /// In en, this message translates to: - /// **'File Path'** - String get trackMetadataPath; - - /// Metadata field - download date - /// - /// In en, this message translates to: - /// **'Downloaded'** - String get trackMetadataDownloadedAt; - /// Metadata field - download service used /// /// In en, this message translates to: @@ -1186,78 +820,12 @@ abstract class AppLocalizations { /// **'Delete'** String get trackMetadataDelete; - /// Action button - download again - /// - /// In en, this message translates to: - /// **'Re-download'** - String get trackMetadataRedownload; - - /// Action button - open containing folder - /// - /// In en, this message translates to: - /// **'Open Folder'** - String get trackMetadataOpenFolder; - - /// Setup wizard title - /// - /// In en, this message translates to: - /// **'Welcome to SpotiFLAC'** - String get setupTitle; - - /// Setup wizard subtitle - /// - /// In en, this message translates to: - /// **'Let\'s get you started'** - String get setupSubtitle; - - /// Storage permission step title - /// - /// In en, this message translates to: - /// **'Storage Permission'** - String get setupStoragePermission; - - /// Explanation for storage permission - /// - /// In en, this message translates to: - /// **'Required to save downloaded files'** - String get setupStoragePermissionSubtitle; - - /// Status when permission granted - /// - /// In en, this message translates to: - /// **'Permission granted'** - String get setupStoragePermissionGranted; - - /// Status when permission denied - /// - /// In en, this message translates to: - /// **'Permission denied'** - String get setupStoragePermissionDenied; - /// Button to request permission /// /// In en, this message translates to: /// **'Grant Permission'** String get setupGrantPermission; - /// Download folder step title - /// - /// In en, this message translates to: - /// **'Download Location'** - String get setupDownloadLocation; - - /// Button to pick folder - /// - /// In en, this message translates to: - /// **'Choose Folder'** - String get setupChooseFolder; - - /// Continue to next step button - /// - /// In en, this message translates to: - /// **'Continue'** - String get setupContinue; - /// Skip current step button /// /// In en, this message translates to: @@ -1270,12 +838,6 @@ abstract class AppLocalizations { /// **'Storage Access Required'** String get setupStorageAccessRequired; - /// Explanation for storage access - /// - /// In en, this message translates to: - /// **'SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.'** - String get setupStorageAccessMessage; - /// Android 11+ specific explanation /// /// In en, this message translates to: @@ -1306,12 +868,6 @@ abstract class AppLocalizations { /// **'{permissionType} permission is required for the best experience. You can change this later in Settings.'** String setupPermissionRequiredMessage(String permissionType); - /// Folder selection step title - /// - /// In en, this message translates to: - /// **'Select Download Folder'** - String get setupSelectDownloadFolder; - /// Dialog title for default folder /// /// In en, this message translates to: @@ -1384,36 +940,6 @@ abstract class AppLocalizations { /// **'Download Spotify tracks in FLAC'** String get setupDownloadInFlac; - /// Setup step indicator - storage - /// - /// In en, this message translates to: - /// **'Storage'** - String get setupStepStorage; - - /// Setup step indicator - notification - /// - /// In en, this message translates to: - /// **'Notification'** - String get setupStepNotification; - - /// Setup step indicator - folder - /// - /// In en, this message translates to: - /// **'Folder'** - String get setupStepFolder; - - /// Setup step indicator - Spotify API - /// - /// In en, this message translates to: - /// **'Spotify'** - String get setupStepSpotify; - - /// Setup step indicator - permission - /// - /// In en, this message translates to: - /// **'Permission'** - String get setupStepPermission; - /// Success message for storage permission /// /// In en, this message translates to: @@ -1444,18 +970,6 @@ abstract class AppLocalizations { /// **'Enable Notifications'** String get setupNotificationEnable; - /// Explanation for notifications - /// - /// In en, this message translates to: - /// **'Get notified when downloads complete or require attention.'** - String get setupNotificationDescription; - - /// Success message for folder selection - /// - /// In en, this message translates to: - /// **'Download Folder Selected!'** - String get setupFolderSelected; - /// Button to choose folder /// /// In en, this message translates to: @@ -1468,84 +982,18 @@ abstract class AppLocalizations { /// **'Select a folder where your downloaded music will be saved.'** String get setupFolderDescription; - /// Button to change selected folder - /// - /// In en, this message translates to: - /// **'Change Folder'** - String get setupChangeFolder; - /// Button to select folder /// /// In en, this message translates to: /// **'Select Folder'** String get setupSelectFolder; - /// Spotify API step title - /// - /// In en, this message translates to: - /// **'Spotify API (Optional)'** - String get setupSpotifyApiOptional; - - /// Explanation for Spotify API - /// - /// In en, this message translates to: - /// **'Add your Spotify API credentials for better search results and access to Spotify-exclusive content.'** - String get setupSpotifyApiDescription; - - /// Toggle to enable Spotify API - /// - /// In en, this message translates to: - /// **'Use Spotify API'** - String get setupUseSpotifyApi; - - /// Prompt to enter credentials - /// - /// In en, this message translates to: - /// **'Enter your credentials below'** - String get setupEnterCredentialsBelow; - - /// Status when using Deezer - /// - /// In en, this message translates to: - /// **'Using Deezer (no account needed)'** - String get setupUsingDeezer; - - /// Placeholder for client ID field - /// - /// In en, this message translates to: - /// **'Enter Spotify Client ID'** - String get setupEnterClientId; - - /// Placeholder for client secret field - /// - /// In en, this message translates to: - /// **'Enter Spotify Client Secret'** - String get setupEnterClientSecret; - - /// Info about getting Spotify credentials - /// - /// In en, this message translates to: - /// **'Get your free API credentials from the Spotify Developer Dashboard.'** - String get setupGetFreeCredentials; - /// Button to enable notifications /// /// In en, this message translates to: /// **'Enable Notifications'** String get setupEnableNotifications; - /// Message after completing a step - /// - /// In en, this message translates to: - /// **'You can now proceed to the next step.'** - String get setupProceedToNextStep; - - /// Info about notification usage - /// - /// In en, this message translates to: - /// **'You will receive download progress notifications.'** - String get setupNotificationProgressDescription; - /// Detailed notification explanation /// /// In en, this message translates to: @@ -1558,12 +1006,6 @@ abstract class AppLocalizations { /// **'Skip for now'** String get setupSkipForNow; - /// Back button text - /// - /// In en, this message translates to: - /// **'Back'** - String get setupBack; - /// Next button text /// /// In en, this message translates to: @@ -1576,36 +1018,18 @@ abstract class AppLocalizations { /// **'Get Started'** String get setupGetStarted; - /// Skip setup and start app - /// - /// In en, this message translates to: - /// **'Skip & Start'** - String get setupSkipAndStart; - /// Instruction for file access permission /// /// In en, this message translates to: /// **'Please enable \"Allow access to manage all files\" in the next screen.'** String get setupAllowAccessToManageFiles; - /// Link text for Spotify developer portal - /// - /// In en, this message translates to: - /// **'Get credentials from developer.spotify.com'** - String get setupGetCredentialsFromSpotify; - /// Dialog button - cancel action /// /// In en, this message translates to: /// **'Cancel'** String get dialogCancel; - /// Dialog button - confirm/acknowledge - /// - /// In en, this message translates to: - /// **'OK'** - String get dialogOk; - /// Dialog button - save changes /// /// In en, this message translates to: @@ -1624,36 +1048,12 @@ abstract class AppLocalizations { /// **'Retry'** String get dialogRetry; - /// Dialog button - close dialog - /// - /// In en, this message translates to: - /// **'Close'** - String get dialogClose; - - /// Dialog button - confirm yes - /// - /// In en, this message translates to: - /// **'Yes'** - String get dialogYes; - - /// Dialog button - confirm no - /// - /// In en, this message translates to: - /// **'No'** - String get dialogNo; - /// Dialog button - clear items /// /// In en, this message translates to: /// **'Clear'** String get dialogClear; - /// Dialog button - confirm action - /// - /// In en, this message translates to: - /// **'Confirm'** - String get dialogConfirm; - /// Dialog button - action completed /// /// In en, this message translates to: @@ -1696,48 +1096,12 @@ abstract class AppLocalizations { /// **'You have unsaved changes. Do you want to discard them?'** String get dialogUnsavedChanges; - /// Dialog title - download error - /// - /// In en, this message translates to: - /// **'Download Failed'** - String get dialogDownloadFailed; - - /// Label for track name in error dialog - /// - /// In en, this message translates to: - /// **'Track:'** - String get dialogTrackLabel; - - /// Label for artist name in error dialog - /// - /// In en, this message translates to: - /// **'Artist:'** - String get dialogArtistLabel; - - /// Label for error message - /// - /// In en, this message translates to: - /// **'Error:'** - String get dialogErrorLabel; - /// Dialog title - clear all items /// /// In en, this message translates to: /// **'Clear All'** String get dialogClearAll; - /// Dialog message - clear downloads confirmation - /// - /// In en, this message translates to: - /// **'Are you sure you want to clear all downloads?'** - String get dialogClearAllDownloads; - - /// Dialog title - delete file confirmation - /// - /// In en, this message translates to: - /// **'Remove from device?'** - String get dialogRemoveFromDevice; - /// Dialog title - uninstall extension /// /// In en, this message translates to: @@ -1870,12 +1234,6 @@ abstract class AppLocalizations { /// **'View Queue'** String get snackbarViewQueue; - /// Snackbar - loading error - /// - /// In en, this message translates to: - /// **'Failed to load: {error}'** - String snackbarFailedToLoad(String error); - /// Snackbar - URL copied /// /// In en, this message translates to: @@ -1942,72 +1300,18 @@ abstract class AppLocalizations { /// **'Too many requests. Please wait a moment before searching again.'** String get errorRateLimitedMessage; - /// Error message - loading failed - /// - /// In en, this message translates to: - /// **'Failed to load {item}'** - String errorFailedToLoad(String item); - /// Error - search returned no results /// /// In en, this message translates to: /// **'No tracks found'** String get errorNoTracksFound; - /// Error - seek disabled for live decrypted stream - /// - /// In en, this message translates to: - /// **'Seeking is not supported for this live stream'** - String get errorSeekNotSupported; - /// Error - extension source not available /// /// In en, this message translates to: /// **'Cannot load {item}: missing extension source'** String errorMissingExtensionSource(String item); - /// Download status - waiting in queue - /// - /// In en, this message translates to: - /// **'Queued'** - String get statusQueued; - - /// Download status - in progress - /// - /// In en, this message translates to: - /// **'Downloading'** - String get statusDownloading; - - /// Download status - writing metadata - /// - /// In en, this message translates to: - /// **'Finalizing'** - String get statusFinalizing; - - /// Download status - finished - /// - /// In en, this message translates to: - /// **'Completed'** - String get statusCompleted; - - /// Download status - error occurred - /// - /// In en, this message translates to: - /// **'Failed'** - String get statusFailed; - - /// Download status - already exists - /// - /// In en, this message translates to: - /// **'Skipped'** - String get statusSkipped; - - /// Download status - paused - /// - /// In en, this message translates to: - /// **'Paused'** - String get statusPaused; - /// Action button - pause download /// /// In en, this message translates to: @@ -2026,18 +1330,6 @@ abstract class AppLocalizations { /// **'Cancel'** String get actionCancel; - /// Action button - stop operation - /// - /// In en, this message translates to: - /// **'Stop'** - String get actionStop; - - /// Action button - enter selection mode - /// - /// In en, this message translates to: - /// **'Select'** - String get actionSelect; - /// Action button - select all items /// /// In en, this message translates to: @@ -2050,18 +1342,6 @@ abstract class AppLocalizations { /// **'Deselect'** String get actionDeselect; - /// Action button - paste from clipboard - /// - /// In en, this message translates to: - /// **'Paste'** - String get actionPaste; - - /// Action button - import CSV file - /// - /// In en, this message translates to: - /// **'Import CSV'** - String get actionImportCsv; - /// Action button - delete Spotify credentials /// /// In en, this message translates to: @@ -2086,18 +1366,6 @@ abstract class AppLocalizations { /// **'All tracks selected'** String get selectionAllSelected; - /// Hint - how to select items - /// - /// In en, this message translates to: - /// **'Tap tracks to select'** - String get selectionTapToSelect; - - /// Delete button with count - /// - /// In en, this message translates to: - /// **'Delete {count} {count, plural, =1{track} other{tracks}}'** - String selectionDeleteTracks(int count); - /// Placeholder when nothing selected /// /// In en, this message translates to: @@ -2146,66 +1414,12 @@ abstract class AppLocalizations { /// **'Play'** String get tooltipPlay; - /// Tooltip - cancel button - /// - /// In en, this message translates to: - /// **'Cancel'** - String get tooltipCancel; - - /// Tooltip - stop button - /// - /// In en, this message translates to: - /// **'Stop'** - String get tooltipStop; - - /// Tooltip - retry button - /// - /// In en, this message translates to: - /// **'Retry'** - String get tooltipRetry; - - /// Tooltip - remove button - /// - /// In en, this message translates to: - /// **'Remove'** - String get tooltipRemove; - - /// Tooltip - clear button - /// - /// In en, this message translates to: - /// **'Clear'** - String get tooltipClear; - - /// Tooltip - paste button - /// - /// In en, this message translates to: - /// **'Paste'** - String get tooltipPaste; - /// Setting title - filename pattern /// /// In en, this message translates to: /// **'Filename Format'** String get filenameFormat; - /// Preview of filename pattern - /// - /// In en, this message translates to: - /// **'Preview: {preview}'** - String filenameFormatPreview(String preview); - - /// Label for placeholder list - /// - /// In en, this message translates to: - /// **'Available placeholders:'** - String get filenameAvailablePlaceholders; - - /// Default filename format hint - /// - /// In en, this message translates to: - /// **'{artist} - {title}'** - String filenameHint(Object artist, Object title); - /// Toggle label for showing advanced filename tags /// /// In en, this message translates to: @@ -2218,12 +1432,6 @@ abstract class AppLocalizations { /// **'Enable formatted tags for track padding and date patterns'** String get filenameShowAdvancedTagsDescription; - /// Setting title - folder structure - /// - /// In en, this message translates to: - /// **'Folder Organization'** - String get folderOrganization; - /// Folder option - flat structure /// /// In en, this message translates to: @@ -2284,30 +1492,12 @@ abstract class AppLocalizations { /// **'Update Available'** String get updateAvailable; - /// Update available message - /// - /// In en, this message translates to: - /// **'Version {version} is available'** - String updateNewVersion(String version); - - /// Update button - download update - /// - /// In en, this message translates to: - /// **'Download'** - String get updateDownload; - /// Update button - dismiss /// /// In en, this message translates to: /// **'Later'** String get updateLater; - /// Link to changelog - /// - /// In en, this message translates to: - /// **'Changelog'** - String get updateChangelog; - /// Update status - initializing /// /// In en, this message translates to: @@ -2368,18 +1558,6 @@ abstract class AppLocalizations { /// **'Don\'t remind'** String get updateDontRemind; - /// Setting title - download provider order - /// - /// In en, this message translates to: - /// **'Provider Priority'** - String get providerPriority; - - /// Subtitle for provider priority - /// - /// In en, this message translates to: - /// **'Drag to reorder download providers'** - String get providerPrioritySubtitle; - /// Provider priority page title /// /// In en, this message translates to: @@ -2410,18 +1588,6 @@ abstract class AppLocalizations { /// **'Extension'** String get providerExtension; - /// Setting title - metadata provider order - /// - /// In en, this message translates to: - /// **'Metadata Provider Priority'** - String get metadataProviderPriority; - - /// Subtitle for metadata priority - /// - /// In en, this message translates to: - /// **'Order used when fetching track metadata'** - String get metadataProviderPrioritySubtitle; - /// Metadata priority page title /// /// In en, this message translates to: @@ -2458,30 +1624,6 @@ abstract class AppLocalizations { /// **'Logs'** String get logTitle; - /// Action - copy logs to clipboard - /// - /// In en, this message translates to: - /// **'Copy Logs'** - String get logCopy; - - /// Action - delete all logs - /// - /// In en, this message translates to: - /// **'Clear Logs'** - String get logClear; - - /// Action - share logs file - /// - /// In en, this message translates to: - /// **'Share Logs'** - String get logShare; - - /// Empty state title - /// - /// In en, this message translates to: - /// **'No logs yet'** - String get logEmpty; - /// Snackbar - logs copied /// /// In en, this message translates to: @@ -2530,30 +1672,6 @@ abstract class AppLocalizations { /// **'Are you sure you want to clear all logs?'** String get logClearLogsMessage; - /// Error category - ISP blocking - /// - /// In en, this message translates to: - /// **'ISP BLOCKING DETECTED'** - String get logIspBlocking; - - /// Error category - rate limiting - /// - /// In en, this message translates to: - /// **'RATE LIMITED'** - String get logRateLimited; - - /// Error category - network issues - /// - /// In en, this message translates to: - /// **'NETWORK ERROR'** - String get logNetworkError; - - /// Error category - missing tracks - /// - /// In en, this message translates to: - /// **'TRACK NOT FOUND'** - String get logTrackNotFound; - /// Filter dialog title /// /// In en, this message translates to: @@ -2572,72 +1690,6 @@ abstract class AppLocalizations { /// **'Logs will appear here as you use the app'** String get logNoLogsYetSubtitle; - /// Section header for error summary - /// - /// In en, this message translates to: - /// **'Issue Summary'** - String get logIssueSummary; - - /// ISP blocking explanation - /// - /// In en, this message translates to: - /// **'Your ISP may be blocking access to download services'** - String get logIspBlockingDescription; - - /// ISP blocking fix suggestion - /// - /// In en, this message translates to: - /// **'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'** - String get logIspBlockingSuggestion; - - /// Rate limit explanation - /// - /// In en, this message translates to: - /// **'Too many requests to the service'** - String get logRateLimitedDescription; - - /// Rate limit fix suggestion - /// - /// In en, this message translates to: - /// **'Wait a few minutes before trying again'** - String get logRateLimitedSuggestion; - - /// Network error explanation - /// - /// In en, this message translates to: - /// **'Connection issues detected'** - String get logNetworkErrorDescription; - - /// Network error fix suggestion - /// - /// In en, this message translates to: - /// **'Check your internet connection'** - String get logNetworkErrorSuggestion; - - /// Track not found explanation - /// - /// In en, this message translates to: - /// **'Some tracks could not be found on download services'** - String get logTrackNotFoundDescription; - - /// Track not found explanation - /// - /// In en, this message translates to: - /// **'The track may not be available in lossless quality'** - String get logTrackNotFoundSuggestion; - - /// Error count display - /// - /// In en, this message translates to: - /// **'Total errors: {count}'** - String logTotalErrors(int count); - - /// Affected domains display - /// - /// In en, this message translates to: - /// **'Affected: {domains}'** - String logAffected(String domains); - /// Log count with filter active /// /// In en, this message translates to: @@ -2836,12 +1888,6 @@ abstract class AppLocalizations { /// **'App Language'** String get appearanceLanguage; - /// Language setting subtitle - /// - /// In en, this message translates to: - /// **'Choose your preferred language'** - String get appearanceLanguageSubtitle; - /// Appearance settings description /// /// In en, this message translates to: @@ -2884,24 +1930,12 @@ abstract class AppLocalizations { /// **'Press back again to exit'** String get pressBackAgainToExit; - /// Section header for track list - /// - /// In en, this message translates to: - /// **'Tracks'** - String get tracksHeader; - /// Download all button with count /// /// In en, this message translates to: /// **'Download All ({count})'** String downloadAllCount(int count); - /// Play all button with count - /// - /// In en, this message translates to: - /// **'Play All ({count})'** - String playAllCount(int count); - /// Track count display /// /// In en, this message translates to: @@ -3100,12 +2134,6 @@ abstract class AppLocalizations { /// **'This will permanently delete the downloaded file and remove it from your history.'** String get trackDeleteConfirmMessage; - /// Error opening file - /// - /// In en, this message translates to: - /// **'Cannot open: {message}'** - String trackCannotOpen(String message); - /// Relative date - today /// /// In en, this message translates to: @@ -3136,30 +2164,6 @@ abstract class AppLocalizations { /// **'{count} months ago'** String dateMonthsAgo(int count); - /// Download mode - one at a time - /// - /// In en, this message translates to: - /// **'Sequential'** - String get concurrentSequential; - - /// Download mode - 2 simultaneous - /// - /// In en, this message translates to: - /// **'2 Parallel'** - String get concurrentParallel2; - - /// Download mode - 3 simultaneous - /// - /// In en, this message translates to: - /// **'3 Parallel'** - String get concurrentParallel3; - - /// Tooltip for failed download - /// - /// In en, this message translates to: - /// **'Tap to see error details'** - String get tapToSeeError; - /// Store filter - all extensions /// /// In en, this message translates to: @@ -3202,24 +2206,6 @@ abstract class AppLocalizations { /// **'Clear filters'** String get storeClearFilters; - /// Empty state when no extensions match filters - /// - /// In en, this message translates to: - /// **'No extensions found'** - String get storeNoResults; - - /// Extension capability - provider priority - /// - /// In en, this message translates to: - /// **'Provider Priority'** - String get extensionProviderPriority; - - /// Button to install extension - /// - /// In en, this message translates to: - /// **'Install Extension'** - String get extensionInstallButton; - /// Default search provider option /// /// In en, this message translates to: @@ -3496,66 +2482,6 @@ abstract class AppLocalizations { /// **'24-bit / up to 192kHz'** String get qualityHiResFlacMaxSubtitle; - /// Quality option - lossy format (MP3/Opus) - /// - /// In en, this message translates to: - /// **'Lossy'** - String get qualityLossy; - - /// Technical spec for lossy MP3 - /// - /// In en, this message translates to: - /// **'MP3 320kbps (converted from FLAC)'** - String get qualityLossyMp3Subtitle; - - /// Technical spec for lossy Opus - /// - /// In en, this message translates to: - /// **'Opus 128kbps (converted from FLAC)'** - String get qualityLossyOpusSubtitle; - - /// Setting - enable lossy quality option - /// - /// In en, this message translates to: - /// **'Enable Lossy Option'** - String get enableLossyOption; - - /// Subtitle when lossy is enabled - /// - /// In en, this message translates to: - /// **'Lossy quality option is available'** - String get enableLossyOptionSubtitleOn; - - /// Subtitle when lossy is disabled - /// - /// In en, this message translates to: - /// **'Downloads FLAC then converts to lossy format'** - String get enableLossyOptionSubtitleOff; - - /// Setting - choose lossy format - /// - /// In en, this message translates to: - /// **'Lossy Format'** - String get lossyFormat; - - /// Description for lossy format picker - /// - /// In en, this message translates to: - /// **'Choose the lossy format for conversion'** - String get lossyFormatDescription; - - /// MP3 format description - /// - /// In en, this message translates to: - /// **'320kbps, best compatibility'** - String get lossyFormatMp3Subtitle; - - /// Opus format description - /// - /// In en, this message translates to: - /// **'128kbps, better quality at smaller size'** - String get lossyFormatOpusSubtitle; - /// Note about quality availability /// /// In en, this message translates to: @@ -3580,30 +2506,6 @@ abstract class AppLocalizations { /// **'YouTube MP3 Bitrate'** String get youtubeMp3BitrateTitle; - /// Subtitle showing current bitrate and valid range - /// - /// In en, this message translates to: - /// **'{bitrate}kbps ({min}-{max})'** - String youtubeBitrateSubtitle(int bitrate, int min, int max); - - /// Helper text for manual YouTube bitrate input - /// - /// In en, this message translates to: - /// **'Enter custom bitrate ({min}-{max} kbps)'** - String youtubeBitrateInputHelp(int min, int max); - - /// Label for YouTube bitrate input field - /// - /// In en, this message translates to: - /// **'Bitrate (kbps)'** - String get youtubeBitrateFieldLabel; - - /// Validation error for invalid YouTube bitrate input - /// - /// In en, this message translates to: - /// **'Bitrate must be between {min} and {max} kbps'** - String youtubeBitrateValidationError(int min, int max); - /// Setting - show quality picker /// /// In en, this message translates to: @@ -3634,18 +2536,6 @@ abstract class AppLocalizations { /// **'Use Album Artist for folders'** String get downloadUseAlbumArtistForFolders; - /// Subtitle when Album Artist is used for folder naming - /// - /// In en, this message translates to: - /// **'Artist folders use Album Artist when available'** - String get downloadUseAlbumArtistForFoldersAlbumSubtitle; - - /// Subtitle when Track Artist is used for folder naming - /// - /// In en, this message translates to: - /// **'Artist folders use Track Artist only'** - String get downloadUseAlbumArtistForFoldersTrackSubtitle; - /// Setting - strip featured artists from folder name /// /// In en, this message translates to: @@ -3664,18 +2554,6 @@ abstract class AppLocalizations { /// **'Full artist string used for folder name'** String get downloadUsePrimaryArtistOnlyDisabled; - /// Setting - output file format - /// - /// In en, this message translates to: - /// **'Save Format'** - String get downloadSaveFormat; - - /// Dialog title - choose download service - /// - /// In en, this message translates to: - /// **'Select Service'** - String get downloadSelectService; - /// Dialog title - choose audio quality /// /// In en, this message translates to: @@ -3688,96 +2566,6 @@ abstract class AppLocalizations { /// **'Download From'** String get downloadFrom; - /// Label - default quality setting - /// - /// In en, this message translates to: - /// **'Default Quality'** - String get downloadDefaultQualityLabel; - - /// Quality option - highest available - /// - /// In en, this message translates to: - /// **'Best available'** - String get downloadBestAvailable; - - /// Folder option - no organization - /// - /// In en, this message translates to: - /// **'None'** - String get folderNone; - - /// Subtitle for no folder organization - /// - /// In en, this message translates to: - /// **'Save all files directly to download folder'** - String get folderNoneSubtitle; - - /// Folder option - by artist - /// - /// In en, this message translates to: - /// **'Artist'** - String get folderArtist; - - /// Folder structure example - /// - /// In en, this message translates to: - /// **'Artist Name/filename'** - String get folderArtistSubtitle; - - /// Folder option - by album - /// - /// In en, this message translates to: - /// **'Album'** - String get folderAlbum; - - /// Folder structure example - /// - /// In en, this message translates to: - /// **'Album Name/filename'** - String get folderAlbumSubtitle; - - /// Folder option - nested - /// - /// In en, this message translates to: - /// **'Artist/Album'** - String get folderArtistAlbum; - - /// Folder structure example - /// - /// In en, this message translates to: - /// **'Artist Name/Album Name/filename'** - String get folderArtistAlbumSubtitle; - - /// Service name - DO NOT TRANSLATE - /// - /// In en, this message translates to: - /// **'Tidal'** - String get serviceTidal; - - /// Service name - DO NOT TRANSLATE - /// - /// In en, this message translates to: - /// **'Qobuz'** - String get serviceQobuz; - - /// Service name - DO NOT TRANSLATE - /// - /// In en, this message translates to: - /// **'Amazon'** - String get serviceAmazon; - - /// Service name - DO NOT TRANSLATE - /// - /// In en, this message translates to: - /// **'Deezer'** - String get serviceDeezer; - - /// Service name - DO NOT TRANSLATE - /// - /// In en, this message translates to: - /// **'Spotify'** - String get serviceSpotify; - /// Theme option - pure black /// /// In en, this message translates to: @@ -3790,24 +2578,6 @@ abstract class AppLocalizations { /// **'Pure black background'** String get appearanceAmoledDarkSubtitle; - /// Color picker dialog title - /// - /// In en, this message translates to: - /// **'Choose Accent Color'** - String get appearanceChooseAccentColor; - - /// Theme picker dialog title - /// - /// In en, this message translates to: - /// **'Theme Mode'** - String get appearanceChooseTheme; - - /// Queue screen title - /// - /// In en, this message translates to: - /// **'Download Queue'** - String get queueTitle; - /// Button - clear all queue items /// /// In en, this message translates to: @@ -3820,30 +2590,6 @@ abstract class AppLocalizations { /// **'Are you sure you want to clear all downloads?'** String get queueClearAllMessage; - /// Button - export failed downloads to TXT - /// - /// In en, this message translates to: - /// **'Export'** - String get queueExportFailed; - - /// Success message after exporting failed downloads - /// - /// In en, this message translates to: - /// **'Failed downloads exported to TXT file'** - String get queueExportFailedSuccess; - - /// Action to clear failed downloads after export - /// - /// In en, this message translates to: - /// **'Clear Failed'** - String get queueExportFailedClear; - - /// Error message when export fails - /// - /// In en, this message translates to: - /// **'Failed to export downloads'** - String get queueExportFailedError; - /// Setting toggle for auto-export /// /// In en, this message translates to: @@ -3880,54 +2626,6 @@ abstract class AppLocalizations { /// **'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'** String get settingsDownloadNetworkSubtitle; - /// Empty queue state title - /// - /// In en, this message translates to: - /// **'No downloads in queue'** - String get queueEmpty; - - /// Empty queue state subtitle - /// - /// In en, this message translates to: - /// **'Add tracks from the home screen'** - String get queueEmptySubtitle; - - /// Button - clear finished downloads - /// - /// In en, this message translates to: - /// **'Clear completed'** - String get queueClearCompleted; - - /// Error dialog title - /// - /// In en, this message translates to: - /// **'Download Failed'** - String get queueDownloadFailed; - - /// Label in error dialog - /// - /// In en, this message translates to: - /// **'Track:'** - String get queueTrackLabel; - - /// Label in error dialog - /// - /// In en, this message translates to: - /// **'Artist:'** - String get queueArtistLabel; - - /// Label in error dialog - /// - /// In en, this message translates to: - /// **'Error:'** - String get queueErrorLabel; - - /// Fallback error message - /// - /// In en, this message translates to: - /// **'Unknown error'** - String get queueUnknownError; - /// Album folder option /// /// In en, this message translates to: @@ -4000,18 +2698,6 @@ abstract class AppLocalizations { /// **'Delete {count} {count, plural, =1{track} other{tracks}} from this album?\n\nThis will also delete the files from storage.'** String downloadedAlbumDeleteMessage(int count); - /// Section header for tracks - /// - /// In en, this message translates to: - /// **'Tracks'** - String get downloadedAlbumTracksHeader; - - /// Downloaded tracks count badge - /// - /// In en, this message translates to: - /// **'{count} downloaded'** - String downloadedAlbumDownloadedCount(int count); - /// Selection count indicator /// /// In en, this message translates to: @@ -4048,12 +2734,6 @@ abstract class AppLocalizations { /// **'Disc {discNumber}'** String downloadedAlbumDiscHeader(int discNumber); - /// Extension capability - utility functions - /// - /// In en, this message translates to: - /// **'Utility Functions'** - String get utilityFunctions; - /// Recent access item type - artist /// /// In en, this message translates to: @@ -4096,36 +2776,18 @@ abstract class AppLocalizations { /// **'Playlist: {name}'** String recentPlaylistInfo(String name); - /// Generic error message format - /// - /// In en, this message translates to: - /// **'Error: {message}'** - String errorGeneric(String message); - /// Button - download artist discography /// /// In en, this message translates to: /// **'Download Discography'** String get discographyDownload; - /// Button - play artist discography - /// - /// In en, this message translates to: - /// **'Play Discography'** - String get discographyPlay; - /// Option - download entire discography /// /// In en, this message translates to: /// **'Download All'** String get discographyDownloadAll; - /// Option - play entire discography - /// - /// In en, this message translates to: - /// **'Play All'** - String get discographyPlayAll; - /// Subtitle showing total tracks and albums /// /// In en, this message translates to: @@ -4192,12 +2854,6 @@ abstract class AppLocalizations { /// **'Download Selected'** String get discographyDownloadSelected; - /// Button - play selected albums - /// - /// In en, this message translates to: - /// **'Play Selected'** - String get discographyPlaySelected; - /// Snackbar - tracks added from discography /// /// In en, this message translates to: @@ -4294,12 +2950,6 @@ abstract class AppLocalizations { /// **'Local Library'** String get libraryTitle; - /// Section header for library status - /// - /// In en, this message translates to: - /// **'Library Status'** - String get libraryStatus; - /// Section header for scan settings /// /// In en, this message translates to: @@ -4414,12 +3064,6 @@ abstract class AppLocalizations { /// **'Scans your existing music collection to detect duplicates when downloading. Supports FLAC, M4A, MP3, Opus, and OGG formats. Metadata is read from file tags when available.'** String get libraryAboutDescription; - /// Track count in library - /// - /// In en, this message translates to: - /// **'{count} tracks'** - String libraryTracksCount(int count); - /// Unit label for tracks count (without the number itself) /// /// In en, this message translates to: @@ -4570,36 +3214,6 @@ abstract class AppLocalizations { /// **'Format'** String get libraryFilterFormat; - /// Filter section - date range - /// - /// In en, this message translates to: - /// **'Date Added'** - String get libraryFilterDate; - - /// Filter option - today only - /// - /// In en, this message translates to: - /// **'Today'** - String get libraryFilterDateToday; - - /// Filter option - this week - /// - /// In en, this message translates to: - /// **'This Week'** - String get libraryFilterDateWeek; - - /// Filter option - this month - /// - /// In en, this message translates to: - /// **'This Month'** - String get libraryFilterDateMonth; - - /// Filter option - this year - /// - /// In en, this message translates to: - /// **'This Year'** - String get libraryFilterDateYear; - /// Filter section - sort order /// /// In en, this message translates to: @@ -4618,12 +3232,6 @@ abstract class AppLocalizations { /// **'Oldest'** String get libraryFilterSortOldest; - /// Badge showing number of active filters - /// - /// In en, this message translates to: - /// **'{count} filter(s) active'** - String libraryFilterActive(int count); - /// Relative time - less than a minute ago /// /// In en, this message translates to: @@ -4642,114 +3250,6 @@ abstract class AppLocalizations { /// **'{count, plural, =1{1 hour ago} other{{count} hours ago}}'** String timeHoursAgo(int count); - /// Dialog title when switching storage mode - /// - /// In en, this message translates to: - /// **'Switch Storage Mode'** - String get storageSwitchTitle; - - /// Dialog title when switching to SAF - /// - /// In en, this message translates to: - /// **'Switch to SAF Storage?'** - String get storageSwitchToSafTitle; - - /// Dialog title when switching to app storage - /// - /// In en, this message translates to: - /// **'Switch to App Storage?'** - String get storageSwitchToAppTitle; - - /// Explanation when switching to SAF - /// - /// In en, this message translates to: - /// **'Your existing downloads will remain in the current location and stay accessible.\n\nNew downloads will be saved to your selected SAF folder.'** - String get storageSwitchToSafMessage; - - /// Explanation when switching to app storage - /// - /// In en, this message translates to: - /// **'Your existing downloads will remain in the current SAF location and stay accessible.\n\nNew downloads will be saved to Music/SpotiFLAC folder.'** - String get storageSwitchToAppMessage; - - /// Section header for existing downloads info - /// - /// In en, this message translates to: - /// **'Existing Downloads'** - String get storageSwitchExistingDownloads; - - /// Info about existing downloads count - /// - /// In en, this message translates to: - /// **'{count} tracks in {mode} storage'** - String storageSwitchExistingDownloadsInfo(int count, String mode); - - /// Section header for new downloads info - /// - /// In en, this message translates to: - /// **'New Downloads'** - String get storageSwitchNewDownloads; - - /// Shows where new downloads will go - /// - /// In en, this message translates to: - /// **'Will be saved to: {location}'** - String storageSwitchNewDownloadsLocation(String location); - - /// Button to proceed with storage switch - /// - /// In en, this message translates to: - /// **'Continue'** - String get storageSwitchContinue; - - /// Button to select SAF folder - /// - /// In en, this message translates to: - /// **'Select SAF Folder'** - String get storageSwitchSelectFolder; - - /// Label for app storage mode - /// - /// In en, this message translates to: - /// **'App Storage'** - String get storageAppStorage; - - /// Label for SAF storage mode - /// - /// In en, this message translates to: - /// **'SAF Storage'** - String get storageSafStorage; - - /// Badge showing storage mode for a track - /// - /// In en, this message translates to: - /// **'Storage: {mode}'** - String storageModeBadge(String mode); - - /// Section title for storage stats - /// - /// In en, this message translates to: - /// **'Storage Statistics'** - String get storageStatsTitle; - - /// Count of tracks in app storage - /// - /// In en, this message translates to: - /// **'{count} tracks in App Storage'** - String storageStatsAppCount(int count); - - /// Count of tracks in SAF storage - /// - /// In en, this message translates to: - /// **'{count} tracks in SAF Storage'** - String storageStatsSafCount(int count); - - /// Info when user has files in both storage modes - /// - /// In en, this message translates to: - /// **'Your files are stored in multiple locations'** - String get storageModeInfo; - /// Tutorial welcome page title /// /// In en, this message translates to: @@ -4792,24 +3292,6 @@ abstract class AppLocalizations { /// **'There are two easy ways to find music you want to download.'** String get tutorialSearchDesc; - /// Tutorial search tip 1 - /// - /// In en, this message translates to: - /// **'Paste a Spotify or Deezer URL directly in the search box'** - String get tutorialSearchTip1; - - /// Tutorial search tip 2 - /// - /// In en, this message translates to: - /// **'Or type the song name, artist, or album to search'** - String get tutorialSearchTip2; - - /// Tutorial search tip 3 - /// - /// In en, this message translates to: - /// **'Supports tracks, albums, playlists, and artist pages'** - String get tutorialSearchTip3; - /// Tutorial download page title /// /// In en, this message translates to: @@ -4822,24 +3304,6 @@ abstract class AppLocalizations { /// **'Downloading music is simple and fast. Here\'s how it works.'** String get tutorialDownloadDesc; - /// Tutorial download tip 1 - /// - /// In en, this message translates to: - /// **'Tap the download button next to any track to start downloading'** - String get tutorialDownloadTip1; - - /// Tutorial download tip 2 - /// - /// In en, this message translates to: - /// **'Choose your preferred quality (FLAC, Hi-Res, or MP3)'** - String get tutorialDownloadTip2; - - /// Tutorial download tip 3 - /// - /// In en, this message translates to: - /// **'Download entire albums or playlists with one tap'** - String get tutorialDownloadTip3; - /// Tutorial library page title /// /// In en, this message translates to: @@ -4936,12 +3400,6 @@ abstract class AppLocalizations { /// **'You\'re all set! Start downloading your favorite music now.'** String get tutorialReadyMessage; - /// Example label in tutorial - /// - /// In en, this message translates to: - /// **'EXAMPLE'** - String get tutorialExample; - /// Button to force a complete rescan of library /// /// In en, this message translates to: @@ -5212,12 +3670,6 @@ abstract class AppLocalizations { /// **'Re-enrich'** String get trackReEnrich; - /// Subtitle for re-enrich metadata action - /// - /// In en, this message translates to: - /// **'Re-embed metadata without re-downloading'** - String get trackReEnrichSubtitle; - /// Subtitle for re-enrich metadata action for local items /// /// In en, this message translates to: @@ -5634,71 +4086,23 @@ abstract class AppLocalizations { /// **'Converted {success} of {total} tracks to {format}'** String selectionBatchConvertSuccess(int success, int total, String format); - /// Title for mode selection step in setup wizard + /// Downloaded tracks count badge /// /// In en, this message translates to: - /// **'Choose Your Mode'** - String get setupModeSelectionTitle; + /// **'{count} downloaded'** + String downloadedAlbumDownloadedCount(int count); - /// Description for mode selection step + /// Subtitle when Album Artist is used for folder naming /// /// In en, this message translates to: - /// **'How would you like to use SpotiFLAC? You can always change this later in Settings.'** - String get setupModeSelectionDescription; + /// **'Artist folders use Album Artist when available'** + String get downloadUseAlbumArtistForFoldersAlbumSubtitle; - /// Title for downloader mode option + /// Subtitle when Track Artist is used for folder naming /// /// In en, this message translates to: - /// **'Downloader'** - String get setupModeDownloaderTitle; - - /// Downloader mode feature 1 - /// - /// In en, this message translates to: - /// **'Download tracks in lossless FLAC quality'** - String get setupModeDownloaderFeature1; - - /// Downloader mode feature 2 - /// - /// In en, this message translates to: - /// **'Save music to your device for offline listening'** - String get setupModeDownloaderFeature2; - - /// Downloader mode feature 3 - /// - /// In en, this message translates to: - /// **'Manage your local music library'** - String get setupModeDownloaderFeature3; - - /// Title for streaming mode option - /// - /// In en, this message translates to: - /// **'Streaming'** - String get setupModeStreamingTitle; - - /// Streaming mode feature 1 - /// - /// In en, this message translates to: - /// **'Stream tracks instantly without downloading'** - String get setupModeStreamingFeature1; - - /// Streaming mode feature 2 - /// - /// In en, this message translates to: - /// **'Smart Queue auto-discovers new music for you'** - String get setupModeStreamingFeature2; - - /// Streaming mode feature 3 - /// - /// In en, this message translates to: - /// **'Play any track on demand with playback controls'** - String get setupModeStreamingFeature3; - - /// Hint that mode can be changed later - /// - /// In en, this message translates to: - /// **'You can switch between modes anytime in Settings.'** - String get setupModeChangeableLater; + /// **'Artist folders use Track Artist only'** + String get downloadUseAlbumArtistForFoldersTrackSubtitle; } class _AppLocalizationsDelegate diff --git a/lib/l10n/app_localizations_de.dart b/lib/l10n/app_localizations_de.dart index f5287500..2b846be4 100644 --- a/lib/l10n/app_localizations_de.dart +++ b/lib/l10n/app_localizations_de.dart @@ -11,19 +11,12 @@ class AppLocalizationsDe extends AppLocalizations { @override String get appName => 'SpotiFLAC'; - @override - String get appDescription => - 'Lade Spotify-Titel in verlustfreier Qualität von Tidal, Qobuz und Amazon Music herunter.'; - @override String get navHome => 'Startseite'; @override String get navLibrary => 'Archiv'; - @override - String get navHistory => 'Verlauf'; - @override String get navSettings => 'Einstellungen'; @@ -33,14 +26,6 @@ class AppLocalizationsDe extends AppLocalizations { @override String get homeTitle => 'Startseite'; - @override - String get homeSearchHint => 'Spotify-URL einfügen oder suchen...'; - - @override - String homeSearchHintExtension(String extensionName) { - return 'Mit $extensionName suchen...'; - } - @override String get homeSubtitle => 'Spotify-Link einfügen oder nach Namen suchen'; @@ -51,17 +36,6 @@ class AppLocalizationsDe extends AppLocalizations { @override String get homeRecent => 'Zuletzt'; - @override - String get historyTitle => 'Verlauf'; - - @override - String historyDownloading(int count) { - return 'Wird heruntergeladen ($count)'; - } - - @override - String get historyDownloaded => 'Heruntergeladen'; - @override String get historyFilterAll => 'Alle'; @@ -71,49 +45,6 @@ class AppLocalizationsDe extends AppLocalizations { @override String get historyFilterSingles => 'Singles'; - @override - String historyTracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count Titel', - one: '1 Titel', - ); - return '$_temp0'; - } - - @override - String historyAlbumsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count Alben', - one: '1 Album', - ); - return '$_temp0'; - } - - @override - String get historyNoDownloads => 'Kein Download-Verlauf'; - - @override - String get historyNoDownloadsSubtitle => - 'Heruntergeladene Titel werden hier angezeigt'; - - @override - String get historyNoAlbums => 'Keine Album-Downloads'; - - @override - String get historyNoAlbumsSubtitle => - 'Lade mehrere Titel eines Albums herunter, um sie hier zu sehen'; - - @override - String get historyNoSingles => 'Keine Einzel-Downloads'; - - @override - String get historyNoSinglesSubtitle => - 'Einzelne Titel-Downloads werden hier angezeigt'; - @override String get historySearchHint => 'Suchverlauf...'; @@ -138,27 +69,6 @@ class AppLocalizationsDe extends AppLocalizations { @override String get downloadTitle => 'Herunterladen'; - @override - String get downloadLocation => 'Download-Speicherort'; - - @override - String get downloadLocationSubtitle => 'Wähle den Speicherort der Dateien'; - - @override - String get downloadLocationDefault => 'Standard-Speicherort'; - - @override - String get downloadDefaultService => 'Standard-Dienst'; - - @override - String get downloadDefaultServiceSubtitle => 'Dienst für Downloads'; - - @override - String get downloadDefaultQuality => 'Standard-Qualität'; - - @override - String get downloadAskQuality => 'Qualität vor Download abfragen'; - @override String get downloadAskQualitySubtitle => 'Qualitätsauswahl für jeden Download anzeigen'; @@ -169,31 +79,9 @@ class AppLocalizationsDe extends AppLocalizations { @override String get downloadFolderOrganization => 'Ordnerstruktur'; - @override - String get downloadSeparateSingles => 'Singles trennen'; - - @override - String get downloadSeparateSinglesSubtitle => - 'Einzelne Titel in separatem Ordner speichern'; - - @override - String get qualityBest => 'Beste Qualität'; - - @override - String get qualityFlac => 'FLAC'; - - @override - String get quality320 => '320 kbps'; - - @override - String get quality128 => '128 kbps'; - @override String get appearanceTitle => 'Erscheinungsbild'; - @override - String get appearanceTheme => 'Design'; - @override String get appearanceThemeSystem => 'System'; @@ -210,9 +98,6 @@ class AppLocalizationsDe extends AppLocalizations { String get appearanceDynamicColorSubtitle => 'Farben von Ihrem Hintergrundbild verwenden'; - @override - String get appearanceAccentColor => 'Akzentfarbe'; - @override String get appearanceHistoryView => 'Verlaufsansicht'; @@ -225,9 +110,6 @@ class AppLocalizationsDe extends AppLocalizations { @override String get optionsTitle => 'Optionen'; - @override - String get optionsSearchSource => 'Suchquelle'; - @override String get optionsPrimaryProvider => 'Primärer Anbieter'; @@ -251,33 +133,6 @@ class AppLocalizationsDe extends AppLocalizations { String get optionsAutoFallbackSubtitle => 'Andere Dienste versuchen, wenn Download fehlschlägt'; - @override - String get optionsAutoSkipUnavailableTracks => 'Auto Skip Unavailable Tracks'; - - @override - String get optionsAutoSkipUnavailableTracksSubtitleOn => - 'Automatically skip to the next queue track when a stream cannot be resolved.'; - - @override - String get optionsAutoSkipUnavailableTracksSubtitleOff => - 'Stop on failed track resolution and show an error.'; - - @override - String get optionsInteractionMode => 'Interaction Mode'; - - @override - String get modeDownloader => 'Downloader Mode'; - - @override - String get modeDownloaderSubtitle => - 'Tap tracks to add them to download queue'; - - @override - String get modeStreaming => 'Streaming Mode'; - - @override - String get modeStreamingSubtitle => 'Tap tracks to play instantly'; - @override String get optionsUseExtensionProviders => 'Erweiterungs-Anbieter verwenden'; @@ -385,19 +240,6 @@ class AppLocalizationsDe extends AppLocalizations { @override String get extensionsTitle => 'Erweiterungen'; - @override - String get extensionsInstalled => 'Installierte Erweiterungen'; - - @override - String get extensionsNone => 'Keine Erweiterungen installiert'; - - @override - String get extensionsNoneSubtitle => - 'Erweiterungen aus dem Store-Tab installieren'; - - @override - String get extensionsEnabled => 'Aktiviert'; - @override String get extensionsDisabled => 'Deaktiviert'; @@ -414,9 +256,6 @@ class AppLocalizationsDe extends AppLocalizations { @override String get extensionsUninstall => 'Deinstallieren'; - @override - String get extensionsSetAsSearch => 'Als Suchanbieter festlegen'; - @override String get storeTitle => 'Erweiterungs-Store'; @@ -492,9 +331,6 @@ class AppLocalizationsDe extends AppLocalizations { @override String get aboutSocial => 'Sozial'; - @override - String get aboutSupport => 'Support'; - @override String get aboutApp => 'App'; @@ -513,13 +349,6 @@ class AppLocalizationsDe extends AppLocalizations { String get aboutSjdonadoDesc => 'Ersteller von I Don\'t Have Spotify (IDHS). Der Fallback-Link-Resolver, der den Tag rettete!'; - @override - String get aboutDoubleDouble => 'DoubleDouble'; - - @override - String get aboutDoubleDoubleDesc => - 'Wundervolle API für Amazon Musik-Downloads.'; - @override String get aboutDabMusic => 'DAB Music'; @@ -538,32 +367,6 @@ class AppLocalizationsDe extends AppLocalizations { String get aboutAppDescription => 'Lade Spotify-Titel in verlustfreier Qualität von Tidal, Qobuz und Amazon Music herunter.'; - @override - String get albumTitle => 'Album'; - - @override - String albumTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count Songs', - one: '1 Song', - ); - return '$_temp0'; - } - - @override - String get albumDownloadAll => 'Alle Herunterladen'; - - @override - String get albumDownloadRemaining => 'Downloads verbleibend'; - - @override - String get playlistTitle => 'Playlist'; - - @override - String get artistTitle => 'Künstler'; - @override String get artistAlbums => 'Alben'; @@ -573,17 +376,6 @@ class AppLocalizationsDe extends AppLocalizations { @override String get artistCompilations => 'Zusammenstellungen'; - @override - String artistReleases(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count Veröffentlichungen', - one: '1 Veröffentlichung', - ); - return '$_temp0'; - } - @override String get artistPopular => 'Beliebt'; @@ -592,27 +384,6 @@ class AppLocalizationsDe extends AppLocalizations { return '$count monatliche Hörer'; } - @override - String get trackMetadataTitle => 'Titel Info'; - - @override - String get trackMetadataArtist => 'Künstler'; - - @override - String get trackMetadataAlbum => 'Album'; - - @override - String get trackMetadataDuration => 'Länge'; - - @override - String get trackMetadataQuality => 'Qualität'; - - @override - String get trackMetadataPath => 'Dateipfad'; - - @override - String get trackMetadataDownloadedAt => 'Heruntergeladen'; - @override String get trackMetadataService => 'Anbieter'; @@ -625,53 +396,15 @@ class AppLocalizationsDe extends AppLocalizations { @override String get trackMetadataDelete => 'Löschen'; - @override - String get trackMetadataRedownload => 'Erneut herunterladen'; - - @override - String get trackMetadataOpenFolder => 'Ordner öffnen'; - - @override - String get setupTitle => 'Willkommen bei SpotiFLAC'; - - @override - String get setupSubtitle => 'Los geht\'s'; - - @override - String get setupStoragePermission => 'Speicherberechtigung'; - - @override - String get setupStoragePermissionSubtitle => - 'Benötigt um heruntergeladene Dateien zu Speichern'; - - @override - String get setupStoragePermissionGranted => 'Berechtigung erteilt'; - - @override - String get setupStoragePermissionDenied => 'Berechtigung verweigert'; - @override String get setupGrantPermission => 'Berechtigung erlauben'; - @override - String get setupDownloadLocation => 'Speicherort'; - - @override - String get setupChooseFolder => 'Ordner wählen'; - - @override - String get setupContinue => 'Fortfahren'; - @override String get setupSkip => 'Vorerst überspringen'; @override String get setupStorageAccessRequired => 'Speicherzugriff erforderlich'; - @override - String get setupStorageAccessMessage => - 'SpotiFLAC benötigt die Berechtigung \"Auf alle Dateien zugreifen\", um Musikdateien in deinen gewählten Ordner zu speichern.'; - @override String get setupStorageAccessMessageAndroid11 => 'Android 11+ benötigt die Berechtigung „Auf alle Dateien“, um Dateien im ausgewählten Download-Ordner zu speichern.'; @@ -693,9 +426,6 @@ class AppLocalizationsDe extends AppLocalizations { return '$permissionType Berechtigung ist erforderlich für\ndie beste Benutzererfahrung. Für kannst dies später in den Einstellungen ändern.'; } - @override - String get setupSelectDownloadFolder => 'Wähle Download-Ordner aus'; - @override String get setupUseDefaultFolder => 'Als Standardordner verwenden?'; @@ -738,21 +468,6 @@ class AppLocalizationsDe extends AppLocalizations { @override String get setupDownloadInFlac => 'Spotify Titel in FLAC herunterladen'; - @override - String get setupStepStorage => 'Speicherort'; - - @override - String get setupStepNotification => 'Benachrichtigung'; - - @override - String get setupStepFolder => 'Ordner'; - - @override - String get setupStepSpotify => 'Spotify'; - - @override - String get setupStepPermission => 'Berechtigung'; - @override String get setupStorageGranted => 'Speicherberechtigung erlaubt!'; @@ -770,13 +485,6 @@ class AppLocalizationsDe extends AppLocalizations { @override String get setupNotificationEnable => 'Benachrichtigungen aktivieren'; - @override - String get setupNotificationDescription => - 'Benachrichtigt werden, wenn Downloads abgeschlossen sind.'; - - @override - String get setupFolderSelected => 'Download Ordner ausgewählt!'; - @override String get setupFolderChoose => 'Speicherort auwählen'; @@ -784,49 +492,12 @@ class AppLocalizationsDe extends AppLocalizations { String get setupFolderDescription => 'Wähle einen Ordner, in dem die heruntergeladene Musik gespeichert wird.'; - @override - String get setupChangeFolder => 'Ordner ändern'; - @override String get setupSelectFolder => 'Ordner wählen'; - @override - String get setupSpotifyApiOptional => 'Spotify-API (optional)'; - - @override - String get setupSpotifyApiDescription => - 'Füge deine Spotify-API-Zugangsdaten für bessere Suchergebnisse und den Zugriff auf Spotify-exklusive Inhalte hinzu.'; - - @override - String get setupUseSpotifyApi => 'Spotify-API verwenden'; - - @override - String get setupEnterCredentialsBelow => 'Gib deine Anmeldedaten unten ein'; - - @override - String get setupUsingDeezer => 'Deezer verwenden (kein Konto erforderlich)'; - - @override - String get setupEnterClientId => 'Spotify-Client-ID eingeben'; - - @override - String get setupEnterClientSecret => 'Spotify Client-Secret eingeben'; - - @override - String get setupGetFreeCredentials => - 'Hole dir kostenlose API-Anmeldeinformationen aus dem Spotify-Entwickler-Dashboard.'; - @override String get setupEnableNotifications => 'Benachrichtigungen aktivieren'; - @override - String get setupProceedToNextStep => - 'Du kannst mit dem nächsten Schritt fortfahren.'; - - @override - String get setupNotificationProgressDescription => - 'Du erhältst Benachrichtigungen über den Download-Fortschritt.'; - @override String get setupNotificationBackgroundDescription => 'Werde benachrichtigt über Download-Fortschritt und -Fertigstellung. Dies hilft Ihnen, Downloads zu verfolgen, wenn die App im Hintergrund ist.'; @@ -834,32 +505,19 @@ class AppLocalizationsDe extends AppLocalizations { @override String get setupSkipForNow => 'Vorerst überspringen'; - @override - String get setupBack => 'Zurück'; - @override String get setupNext => 'Weiter'; @override String get setupGetStarted => 'Los geht‘s'; - @override - String get setupSkipAndStart => 'Überspringen & Starten'; - @override String get setupAllowAccessToManageFiles => 'Bitte aktiviere \"Zugriff auf alle Dateien erlauben\" auf dem nächsten Bildschirm.'; - @override - String get setupGetCredentialsFromSpotify => - 'Zugangsdaten von developer.spotify.com erhalten'; - @override String get dialogCancel => 'Abbrechen'; - @override - String get dialogOk => 'OK'; - @override String get dialogSave => 'Speichern'; @@ -869,21 +527,9 @@ class AppLocalizationsDe extends AppLocalizations { @override String get dialogRetry => 'Wiederholen'; - @override - String get dialogClose => 'Schließen'; - - @override - String get dialogYes => 'Ja'; - - @override - String get dialogNo => 'Nein'; - @override String get dialogClear => 'Leeren'; - @override - String get dialogConfirm => 'Bestätigen'; - @override String get dialogDone => 'Fertig'; @@ -906,28 +552,9 @@ class AppLocalizationsDe extends AppLocalizations { String get dialogUnsavedChanges => 'Hast du noch nicht alle Änderungen gespeichert. Möchtest du die Änderungen verwerfen?'; - @override - String get dialogDownloadFailed => 'Download fehlgeschlagen'; - - @override - String get dialogTrackLabel => 'Titel:'; - - @override - String get dialogArtistLabel => 'Künstler:'; - - @override - String get dialogErrorLabel => 'Fehler:'; - @override String get dialogClearAll => 'Alles löschen'; - @override - String get dialogClearAllDownloads => - 'Bist du dir sicher, dass du alle Downloads löschen möchten?'; - - @override - String get dialogRemoveFromDevice => 'Vom Gerät entfernen?'; - @override String get dialogRemoveExtension => 'Erweiterung entfernen'; @@ -1028,11 +655,6 @@ class AppLocalizationsDe extends AppLocalizations { @override String get snackbarViewQueue => 'Warteschlange anzeigen'; - @override - String snackbarFailedToLoad(String error) { - return 'Fehler beim Laden: $error'; - } - @override String snackbarUrlCopied(String platform) { return '$platform URL in die Zwischenablage kopiert'; @@ -1076,44 +698,14 @@ class AppLocalizationsDe extends AppLocalizations { String get errorRateLimitedMessage => 'Zu viele Anfragen. Bitte warte einen Moment, bevor du es erneut suchst.'; - @override - String errorFailedToLoad(String item) { - return 'Fehler beim Laden von: $item'; - } - @override String get errorNoTracksFound => 'Keine Titel gefunden'; - @override - String get errorSeekNotSupported => - 'Seeking is not supported for this live stream'; - @override String errorMissingExtensionSource(String item) { return 'Kann $item nicht lade wegen fehlender Erweiterungsquelle'; } - @override - String get statusQueued => 'In der Warteschlange'; - - @override - String get statusDownloading => 'Wird heruntergeladen'; - - @override - String get statusFinalizing => 'Wird fertiggestellt'; - - @override - String get statusCompleted => 'Beendet'; - - @override - String get statusFailed => 'Fehlgeschlagen'; - - @override - String get statusSkipped => 'Übersprungen'; - - @override - String get statusPaused => 'Pausiert'; - @override String get actionPause => 'Pause'; @@ -1123,24 +715,12 @@ class AppLocalizationsDe extends AppLocalizations { @override String get actionCancel => 'Abbrechen'; - @override - String get actionStop => 'Beenden'; - - @override - String get actionSelect => 'Wähle'; - @override String get actionSelectAll => 'Alles Auswählen'; @override String get actionDeselect => 'Alle abwählen'; - @override - String get actionPaste => 'Einfügen'; - - @override - String get actionImportCsv => 'CSV-Datei importieren'; - @override String get actionRemoveCredentials => 'Anmeldedaten entfernen'; @@ -1155,20 +735,6 @@ class AppLocalizationsDe extends AppLocalizations { @override String get selectionAllSelected => 'Alle Titel sind ausgewählt'; - @override - String get selectionTapToSelect => 'Tippe auf Titel zum Auswählen'; - - @override - String selectionDeleteTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'Titel', - one: 'Titel', - ); - return 'Lösche $count $_temp0'; - } - @override String get selectionSelectToDelete => 'Titel zum Löschen auswählen'; @@ -1195,40 +761,9 @@ class AppLocalizationsDe extends AppLocalizations { @override String get tooltipPlay => 'Abspielen'; - @override - String get tooltipCancel => 'Abbrechen'; - - @override - String get tooltipStop => 'Beenden'; - - @override - String get tooltipRetry => 'Wiederholen'; - - @override - String get tooltipRemove => 'Entfernen'; - - @override - String get tooltipClear => 'Leeren'; - - @override - String get tooltipPaste => 'Einfügen'; - @override String get filenameFormat => 'Dateinamenformat'; - @override - String filenameFormatPreview(String preview) { - return 'Vorschau: $preview'; - } - - @override - String get filenameAvailablePlaceholders => 'Verfügbare Platzhalter:'; - - @override - String filenameHint(Object artist, Object title) { - return '$artist - $title'; - } - @override String get filenameShowAdvancedTags => 'Show advanced tags'; @@ -1236,9 +771,6 @@ class AppLocalizationsDe extends AppLocalizations { String get filenameShowAdvancedTagsDescription => 'Enable formatted tags for track padding and date patterns'; - @override - String get folderOrganization => 'Ordnerstruktur'; - @override String get folderOrganizationNone => 'Keine Organisation'; @@ -1273,20 +805,9 @@ class AppLocalizationsDe extends AppLocalizations { @override String get updateAvailable => 'Update verfügbar'; - @override - String updateNewVersion(String version) { - return 'Version $version ist verfügbar'; - } - - @override - String get updateDownload => 'Herunterladen'; - @override String get updateLater => 'Später'; - @override - String get updateChangelog => 'Änderungsverlauf'; - @override String get updateStartingDownload => 'Download wird gestartet...'; @@ -1318,13 +839,6 @@ class AppLocalizationsDe extends AppLocalizations { @override String get updateDontRemind => 'Nicht erinnern'; - @override - String get providerPriority => 'Anbieterpriorität'; - - @override - String get providerPrioritySubtitle => - 'Ziehen, um Download-Anbieter neu anzuordnen'; - @override String get providerPriorityTitle => 'Anbieterpriorität'; @@ -1342,13 +856,6 @@ class AppLocalizationsDe extends AppLocalizations { @override String get providerExtension => 'Erweiterung'; - @override - String get metadataProviderPriority => 'Priorität des Metadaten-Anbieters'; - - @override - String get metadataProviderPrioritySubtitle => - 'Reihenfolge beim Abrufen von Titelmetadaten'; - @override String get metadataProviderPriorityTitle => 'Metadaten Priorität'; @@ -1369,18 +876,6 @@ class AppLocalizationsDe extends AppLocalizations { @override String get logTitle => 'Protokolle'; - @override - String get logCopy => 'Protokolle kopieren'; - - @override - String get logClear => 'Protokolle löschen'; - - @override - String get logShare => 'Protokolle teilen'; - - @override - String get logEmpty => 'Keine Protokolle bisher'; - @override String get logCopied => 'Protokolle in Zwischenablage kopiert'; @@ -1406,18 +901,6 @@ class AppLocalizationsDe extends AppLocalizations { String get logClearLogsMessage => 'Bist du dir sicher, dass Sie alle Protokolle löschen möchtest?'; - @override - String get logIspBlocking => 'ISP BLOCKIERUNG ERKANNT'; - - @override - String get logRateLimited => 'LIMIT ERKANNT'; - - @override - String get logNetworkError => 'NETZWERKFEHLER'; - - @override - String get logTrackNotFound => 'TITEL NICHT GEFUNDEN'; - @override String get logFilterBySeverity => 'Protokolle nach Schweregrad filtern'; @@ -1428,48 +911,6 @@ class AppLocalizationsDe extends AppLocalizations { String get logNoLogsYetSubtitle => 'Protokolle werden hier angezeigt, während du die App benutzt'; - @override - String get logIssueSummary => 'Problemübersicht'; - - @override - String get logIspBlockingDescription => - 'Ihr ISP blockiert möglicherweise den Zugriff auf den Download Dienst'; - - @override - String get logIspBlockingSuggestion => - 'Versuche es einem VPN oder ändere DNS auf 1.1.1.1 oder 8.8.8.8'; - - @override - String get logRateLimitedDescription => 'Zu viele Anfragen an den Dienst'; - - @override - String get logRateLimitedSuggestion => - 'Warte ein paar Minuten, bevor du es erneut versuchst'; - - @override - String get logNetworkErrorDescription => 'Verbindungsprobleme erkannt'; - - @override - String get logNetworkErrorSuggestion => 'Überprüfe deine Internetverbindung'; - - @override - String get logTrackNotFoundDescription => - 'Einige Titel konnten auf Download-Diensten nicht gefunden werden'; - - @override - String get logTrackNotFoundSuggestion => - 'Der Titel ist möglicherweise nicht in verlustfreier Qualität verfügbar'; - - @override - String logTotalErrors(int count) { - return 'Gesamte Fehler: $count'; - } - - @override - String logAffected(String domains) { - return 'Betroffen: $domains'; - } - @override String logEntriesFiltered(int count) { return 'Einträge ($count gefiltert)'; @@ -1577,9 +1018,6 @@ class AppLocalizationsDe extends AppLocalizations { @override String get appearanceLanguage => 'App Sprache'; - @override - String get appearanceLanguageSubtitle => 'Choose your preferred language'; - @override String get settingsAppearanceSubtitle => 'Theme, colors, display'; @@ -1601,19 +1039,11 @@ class AppLocalizationsDe extends AppLocalizations { @override String get pressBackAgainToExit => 'Press back again to exit'; - @override - String get tracksHeader => 'Tracks'; - @override String downloadAllCount(int count) { return 'Download All ($count)'; } - @override - String playAllCount(int count) { - return 'Play All ($count)'; - } - @override String tracksCount(int count) { String _temp0 = intl.Intl.pluralLogic( @@ -1722,11 +1152,6 @@ class AppLocalizationsDe extends AppLocalizations { String get trackDeleteConfirmMessage => 'This will permanently delete the downloaded file and remove it from your history.'; - @override - String trackCannotOpen(String message) { - return 'Cannot open: $message'; - } - @override String get dateToday => 'Today'; @@ -1748,18 +1173,6 @@ class AppLocalizationsDe extends AppLocalizations { return '$count months ago'; } - @override - String get concurrentSequential => 'Sequential'; - - @override - String get concurrentParallel2 => '2 Parallel'; - - @override - String get concurrentParallel3 => '3 Parallel'; - - @override - String get tapToSeeError => 'Tap to see error details'; - @override String get storeFilterAll => 'All'; @@ -1781,15 +1194,6 @@ class AppLocalizationsDe extends AppLocalizations { @override String get storeClearFilters => 'Clear filters'; - @override - String get storeNoResults => 'No extensions found'; - - @override - String get extensionProviderPriority => 'Provider Priority'; - - @override - String get extensionInstallButton => 'Install Extension'; - @override String get extensionDefaultProvider => 'Default (Deezer/Spotify)'; @@ -1940,38 +1344,6 @@ class AppLocalizationsDe extends AppLocalizations { @override String get qualityHiResFlacMaxSubtitle => '24-bit / up to 192kHz'; - @override - String get qualityLossy => 'Lossy'; - - @override - String get qualityLossyMp3Subtitle => 'MP3 320kbps (converted from FLAC)'; - - @override - String get qualityLossyOpusSubtitle => 'Opus 128kbps (converted from FLAC)'; - - @override - String get enableLossyOption => 'Enable Lossy Option'; - - @override - String get enableLossyOptionSubtitleOn => 'Lossy quality option is available'; - - @override - String get enableLossyOptionSubtitleOff => - 'Downloads FLAC then converts to lossy format'; - - @override - String get lossyFormat => 'Lossy Format'; - - @override - String get lossyFormatDescription => 'Choose the lossy format for conversion'; - - @override - String get lossyFormatMp3Subtitle => '320kbps, best compatibility'; - - @override - String get lossyFormatOpusSubtitle => - '128kbps, better quality at smaller size'; - @override String get qualityNote => 'Actual quality depends on track availability from the service'; @@ -1986,24 +1358,6 @@ class AppLocalizationsDe extends AppLocalizations { @override String get youtubeMp3BitrateTitle => 'YouTube MP3 Bitrate'; - @override - String youtubeBitrateSubtitle(int bitrate, int min, int max) { - return '${bitrate}kbps ($min-$max)'; - } - - @override - String youtubeBitrateInputHelp(int min, int max) { - return 'Enter custom bitrate ($min-$max kbps)'; - } - - @override - String get youtubeBitrateFieldLabel => 'Bitrate (kbps)'; - - @override - String youtubeBitrateValidationError(int min, int max) { - return 'Bitrate must be between $min and $max kbps'; - } - @override String get downloadAskBeforeDownload => 'Ask Before Download'; @@ -2019,14 +1373,6 @@ class AppLocalizationsDe extends AppLocalizations { @override String get downloadUseAlbumArtistForFolders => 'Use Album Artist for folders'; - @override - String get downloadUseAlbumArtistForFoldersAlbumSubtitle => - 'Artist folders use Album Artist when available'; - - @override - String get downloadUseAlbumArtistForFoldersTrackSubtitle => - 'Artist folders use Track Artist only'; - @override String get downloadUsePrimaryArtistOnly => 'Primary artist only for folders'; @@ -2038,78 +1384,18 @@ class AppLocalizationsDe extends AppLocalizations { String get downloadUsePrimaryArtistOnlyDisabled => 'Full artist string used for folder name'; - @override - String get downloadSaveFormat => 'Save Format'; - - @override - String get downloadSelectService => 'Select Service'; - @override String get downloadSelectQuality => 'Select Quality'; @override String get downloadFrom => 'Download From'; - @override - String get downloadDefaultQualityLabel => 'Default Quality'; - - @override - String get downloadBestAvailable => 'Best available'; - - @override - String get folderNone => 'None'; - - @override - String get folderNoneSubtitle => 'Save all files directly to download folder'; - - @override - String get folderArtist => 'Artist'; - - @override - String get folderArtistSubtitle => 'Artist Name/filename'; - - @override - String get folderAlbum => 'Album'; - - @override - String get folderAlbumSubtitle => 'Album Name/filename'; - - @override - String get folderArtistAlbum => 'Artist/Album'; - - @override - String get folderArtistAlbumSubtitle => 'Artist Name/Album Name/filename'; - - @override - String get serviceTidal => 'Tidal'; - - @override - String get serviceQobuz => 'Qobuz'; - - @override - String get serviceAmazon => 'Amazon'; - - @override - String get serviceDeezer => 'Deezer'; - - @override - String get serviceSpotify => 'Spotify'; - @override String get appearanceAmoledDark => 'AMOLED Dark'; @override String get appearanceAmoledDarkSubtitle => 'Pure black background'; - @override - String get appearanceChooseAccentColor => 'Choose Accent Color'; - - @override - String get appearanceChooseTheme => 'Theme Mode'; - - @override - String get queueTitle => 'Download Queue'; - @override String get queueClearAll => 'Clear All'; @@ -2117,19 +1403,6 @@ class AppLocalizationsDe extends AppLocalizations { String get queueClearAllMessage => 'Are you sure you want to clear all downloads?'; - @override - String get queueExportFailed => 'Export'; - - @override - String get queueExportFailedSuccess => - 'Failed downloads exported to TXT file'; - - @override - String get queueExportFailedClear => 'Clear Failed'; - - @override - String get queueExportFailedError => 'Failed to export downloads'; - @override String get settingsAutoExportFailed => 'Auto-export failed downloads'; @@ -2150,30 +1423,6 @@ class AppLocalizationsDe extends AppLocalizations { String get settingsDownloadNetworkSubtitle => 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; - @override - String get queueEmpty => 'No downloads in queue'; - - @override - String get queueEmptySubtitle => 'Add tracks from the home screen'; - - @override - String get queueClearCompleted => 'Clear completed'; - - @override - String get queueDownloadFailed => 'Download Failed'; - - @override - String get queueTrackLabel => 'Track:'; - - @override - String get queueArtistLabel => 'Artist:'; - - @override - String get queueErrorLabel => 'Error:'; - - @override - String get queueUnknownError => 'Unknown error'; - @override String get albumFolderArtistAlbum => 'Artist / Album'; @@ -2220,14 +1469,6 @@ class AppLocalizationsDe extends AppLocalizations { return 'Delete $count $_temp0 from this album?\n\nThis will also delete the files from storage.'; } - @override - String get downloadedAlbumTracksHeader => 'Tracks'; - - @override - String downloadedAlbumDownloadedCount(int count) { - return '$count downloaded'; - } - @override String downloadedAlbumSelectedCount(int count) { return '$count selected'; @@ -2258,9 +1499,6 @@ class AppLocalizationsDe extends AppLocalizations { return 'Disc $discNumber'; } - @override - String get utilityFunctions => 'Utility Functions'; - @override String get recentTypeArtist => 'Artist'; @@ -2284,23 +1522,12 @@ class AppLocalizationsDe extends AppLocalizations { return 'Playlist: $name'; } - @override - String errorGeneric(String message) { - return 'Error: $message'; - } - @override String get discographyDownload => 'Download Discography'; - @override - String get discographyPlay => 'Play Discography'; - @override String get discographyDownloadAll => 'Download All'; - @override - String get discographyPlayAll => 'Play All'; - @override String discographyDownloadAllSubtitle(int count, int albumCount) { return '$count tracks from $albumCount releases'; @@ -2345,9 +1572,6 @@ class AppLocalizationsDe extends AppLocalizations { @override String get discographyDownloadSelected => 'Download Selected'; - @override - String get discographyPlaySelected => 'Play Selected'; - @override String discographyAddedToQueue(int count) { return 'Added $count tracks to queue'; @@ -2403,9 +1627,6 @@ class AppLocalizationsDe extends AppLocalizations { @override String get libraryTitle => 'Local Library'; - @override - String get libraryStatus => 'Library Status'; - @override String get libraryScanSettings => 'Scan Settings'; @@ -2468,11 +1689,6 @@ class AppLocalizationsDe extends AppLocalizations { String get libraryAboutDescription => 'Scans your existing music collection to detect duplicates when downloading. Supports FLAC, M4A, MP3, Opus, and OGG formats. Metadata is read from file tags when available.'; - @override - String libraryTracksCount(int count) { - return '$count tracks'; - } - @override String libraryTracksUnit(int count) { String _temp0 = intl.Intl.pluralLogic( @@ -2563,21 +1779,6 @@ class AppLocalizationsDe extends AppLocalizations { @override String get libraryFilterFormat => 'Format'; - @override - String get libraryFilterDate => 'Date Added'; - - @override - String get libraryFilterDateToday => 'Today'; - - @override - String get libraryFilterDateWeek => 'This Week'; - - @override - String get libraryFilterDateMonth => 'This Month'; - - @override - String get libraryFilterDateYear => 'This Year'; - @override String get libraryFilterSort => 'Sort'; @@ -2587,11 +1788,6 @@ class AppLocalizationsDe extends AppLocalizations { @override String get libraryFilterSortOldest => 'Oldest'; - @override - String libraryFilterActive(int count) { - return '$count filter(s) active'; - } - @override String get timeJustNow => 'Just now'; @@ -2617,72 +1813,6 @@ class AppLocalizationsDe extends AppLocalizations { return '$_temp0'; } - @override - String get storageSwitchTitle => 'Switch Storage Mode'; - - @override - String get storageSwitchToSafTitle => 'Switch to SAF Storage?'; - - @override - String get storageSwitchToAppTitle => 'Switch to App Storage?'; - - @override - String get storageSwitchToSafMessage => - 'Your existing downloads will remain in the current location and stay accessible.\n\nNew downloads will be saved to your selected SAF folder.'; - - @override - String get storageSwitchToAppMessage => - 'Your existing downloads will remain in the current SAF location and stay accessible.\n\nNew downloads will be saved to Music/SpotiFLAC folder.'; - - @override - String get storageSwitchExistingDownloads => 'Existing Downloads'; - - @override - String storageSwitchExistingDownloadsInfo(int count, String mode) { - return '$count tracks in $mode storage'; - } - - @override - String get storageSwitchNewDownloads => 'New Downloads'; - - @override - String storageSwitchNewDownloadsLocation(String location) { - return 'Will be saved to: $location'; - } - - @override - String get storageSwitchContinue => 'Continue'; - - @override - String get storageSwitchSelectFolder => 'Select SAF Folder'; - - @override - String get storageAppStorage => 'App Storage'; - - @override - String get storageSafStorage => 'SAF Storage'; - - @override - String storageModeBadge(String mode) { - return 'Storage: $mode'; - } - - @override - String get storageStatsTitle => 'Storage Statistics'; - - @override - String storageStatsAppCount(int count) { - return '$count tracks in App Storage'; - } - - @override - String storageStatsSafCount(int count) { - return '$count tracks in SAF Storage'; - } - - @override - String get storageModeInfo => 'Your files are stored in multiple locations'; - @override String get tutorialWelcomeTitle => 'Welcome to SpotiFLAC!'; @@ -2709,18 +1839,6 @@ class AppLocalizationsDe extends AppLocalizations { String get tutorialSearchDesc => 'There are two easy ways to find music you want to download.'; - @override - String get tutorialSearchTip1 => - 'Paste a Spotify or Deezer URL directly in the search box'; - - @override - String get tutorialSearchTip2 => - 'Or type the song name, artist, or album to search'; - - @override - String get tutorialSearchTip3 => - 'Supports tracks, albums, playlists, and artist pages'; - @override String get tutorialDownloadTitle => 'Downloading Music'; @@ -2728,18 +1846,6 @@ class AppLocalizationsDe extends AppLocalizations { String get tutorialDownloadDesc => 'Downloading music is simple and fast. Here\'s how it works.'; - @override - String get tutorialDownloadTip1 => - 'Tap the download button next to any track to start downloading'; - - @override - String get tutorialDownloadTip2 => - 'Choose your preferred quality (FLAC, Hi-Res, or MP3)'; - - @override - String get tutorialDownloadTip3 => - 'Download entire albums or playlists with one tap'; - @override String get tutorialLibraryTitle => 'Your Library'; @@ -2800,9 +1906,6 @@ class AppLocalizationsDe extends AppLocalizations { String get tutorialReadyMessage => 'You\'re all set! Start downloading your favorite music now.'; - @override - String get tutorialExample => 'EXAMPLE'; - @override String get libraryForceFullScan => 'Force Full Scan'; @@ -2965,10 +2068,6 @@ class AppLocalizationsDe extends AppLocalizations { @override String get trackReEnrich => 'Re-enrich'; - @override - String get trackReEnrichSubtitle => - 'Re-embed metadata without re-downloading'; - @override String get trackReEnrichOnlineSubtitle => 'Search metadata online and embed into file'; @@ -3249,43 +2348,15 @@ class AppLocalizationsDe extends AppLocalizations { } @override - String get setupModeSelectionTitle => 'Wähle deinen Modus'; + String downloadedAlbumDownloadedCount(int count) { + return '$count downloaded'; + } @override - String get setupModeSelectionDescription => - 'Wie möchtest du SpotiFLAC nutzen? Du kannst dies später jederzeit in den Einstellungen ändern.'; + String get downloadUseAlbumArtistForFoldersAlbumSubtitle => + 'Artist folders use Album Artist when available'; @override - String get setupModeDownloaderTitle => 'Downloader'; - - @override - String get setupModeDownloaderFeature1 => - 'Lade Titel in verlustfreier FLAC-Qualität herunter'; - - @override - String get setupModeDownloaderFeature2 => - 'Speichere Musik auf deinem Gerät zum Offline-Hören'; - - @override - String get setupModeDownloaderFeature3 => - 'Verwalte deine lokale Musikbibliothek'; - - @override - String get setupModeStreamingTitle => 'Streaming'; - - @override - String get setupModeStreamingFeature1 => - 'Streame Titel sofort ohne Herunterladen'; - - @override - String get setupModeStreamingFeature2 => - 'Smart Queue entdeckt automatisch neue Musik für dich'; - - @override - String get setupModeStreamingFeature3 => - 'Spiele jeden Titel auf Abruf mit Wiedergabesteuerung'; - - @override - String get setupModeChangeableLater => - 'Du kannst jederzeit in den Einstellungen zwischen den Modi wechseln.'; + String get downloadUseAlbumArtistForFoldersTrackSubtitle => + 'Artist folders use Track Artist only'; } diff --git a/lib/l10n/app_localizations_en.dart b/lib/l10n/app_localizations_en.dart index e5da5324..8f244a7f 100644 --- a/lib/l10n/app_localizations_en.dart +++ b/lib/l10n/app_localizations_en.dart @@ -11,19 +11,12 @@ class AppLocalizationsEn extends AppLocalizations { @override String get appName => 'SpotiFLAC'; - @override - String get appDescription => - 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; - @override String get navHome => 'Home'; @override String get navLibrary => 'Library'; - @override - String get navHistory => 'History'; - @override String get navSettings => 'Settings'; @@ -33,14 +26,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get homeTitle => 'Home'; - @override - String get homeSearchHint => 'Paste Spotify URL or search...'; - - @override - String homeSearchHintExtension(String extensionName) { - return 'Search with $extensionName...'; - } - @override String get homeSubtitle => 'Paste a Spotify link or search by name'; @@ -50,17 +35,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get homeRecent => 'Recent'; - @override - String get historyTitle => 'History'; - - @override - String historyDownloading(int count) { - return 'Downloading ($count)'; - } - - @override - String get historyDownloaded => 'Downloaded'; - @override String get historyFilterAll => 'All'; @@ -70,48 +44,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get historyFilterSingles => 'Singles'; - @override - String historyTracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks', - one: '1 track', - ); - return '$_temp0'; - } - - @override - String historyAlbumsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count albums', - one: '1 album', - ); - return '$_temp0'; - } - - @override - String get historyNoDownloads => 'No download history'; - - @override - String get historyNoDownloadsSubtitle => 'Downloaded tracks will appear here'; - - @override - String get historyNoAlbums => 'No album downloads'; - - @override - String get historyNoAlbumsSubtitle => - 'Download multiple tracks from an album to see them here'; - - @override - String get historyNoSingles => 'No single downloads'; - - @override - String get historyNoSinglesSubtitle => - 'Single track downloads will appear here'; - @override String get historySearchHint => 'Search history...'; @@ -136,27 +68,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get downloadTitle => 'Download'; - @override - String get downloadLocation => 'Download Location'; - - @override - String get downloadLocationSubtitle => 'Choose where to save files'; - - @override - String get downloadLocationDefault => 'Default location'; - - @override - String get downloadDefaultService => 'Default Service'; - - @override - String get downloadDefaultServiceSubtitle => 'Service used for downloads'; - - @override - String get downloadDefaultQuality => 'Default Quality'; - - @override - String get downloadAskQuality => 'Ask Quality Before Download'; - @override String get downloadAskQualitySubtitle => 'Show quality picker for each download'; @@ -167,31 +78,9 @@ class AppLocalizationsEn extends AppLocalizations { @override String get downloadFolderOrganization => 'Folder Organization'; - @override - String get downloadSeparateSingles => 'Separate Singles'; - - @override - String get downloadSeparateSinglesSubtitle => - 'Put single tracks in a separate folder'; - - @override - String get qualityBest => 'Best Available'; - - @override - String get qualityFlac => 'FLAC'; - - @override - String get quality320 => '320 kbps'; - - @override - String get quality128 => '128 kbps'; - @override String get appearanceTitle => 'Appearance'; - @override - String get appearanceTheme => 'Theme'; - @override String get appearanceThemeSystem => 'System'; @@ -207,9 +96,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get appearanceDynamicColorSubtitle => 'Use colors from your wallpaper'; - @override - String get appearanceAccentColor => 'Accent Color'; - @override String get appearanceHistoryView => 'History View'; @@ -222,9 +108,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get optionsTitle => 'Options'; - @override - String get optionsSearchSource => 'Search Source'; - @override String get optionsPrimaryProvider => 'Primary Provider'; @@ -248,33 +131,6 @@ class AppLocalizationsEn extends AppLocalizations { String get optionsAutoFallbackSubtitle => 'Try other services if download fails'; - @override - String get optionsAutoSkipUnavailableTracks => 'Auto Skip Unavailable Tracks'; - - @override - String get optionsAutoSkipUnavailableTracksSubtitleOn => - 'Automatically skip to the next queue track when a stream cannot be resolved.'; - - @override - String get optionsAutoSkipUnavailableTracksSubtitleOff => - 'Stop on failed track resolution and show an error.'; - - @override - String get optionsInteractionMode => 'Interaction Mode'; - - @override - String get modeDownloader => 'Downloader Mode'; - - @override - String get modeDownloaderSubtitle => - 'Tap tracks to add them to download queue'; - - @override - String get modeStreaming => 'Streaming Mode'; - - @override - String get modeStreamingSubtitle => 'Tap tracks to play instantly'; - @override String get optionsUseExtensionProviders => 'Use Extension Providers'; @@ -377,18 +233,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get extensionsTitle => 'Extensions'; - @override - String get extensionsInstalled => 'Installed Extensions'; - - @override - String get extensionsNone => 'No extensions installed'; - - @override - String get extensionsNoneSubtitle => 'Install extensions from the Store tab'; - - @override - String get extensionsEnabled => 'Enabled'; - @override String get extensionsDisabled => 'Disabled'; @@ -405,9 +249,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get extensionsUninstall => 'Uninstall'; - @override - String get extensionsSetAsSearch => 'Set as Search Provider'; - @override String get storeTitle => 'Extension Store'; @@ -481,9 +322,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get aboutSocial => 'Social'; - @override - String get aboutSupport => 'Support'; - @override String get aboutApp => 'App'; @@ -502,13 +340,6 @@ class AppLocalizationsEn extends AppLocalizations { String get aboutSjdonadoDesc => 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; - @override - String get aboutDoubleDouble => 'DoubleDouble'; - - @override - String get aboutDoubleDoubleDesc => - 'Amazing API for Amazon Music downloads. Thank you for making it free!'; - @override String get aboutDabMusic => 'DAB Music'; @@ -527,32 +358,6 @@ class AppLocalizationsEn extends AppLocalizations { String get aboutAppDescription => 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; - @override - String get albumTitle => 'Album'; - - @override - String albumTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks', - one: '1 track', - ); - return '$_temp0'; - } - - @override - String get albumDownloadAll => 'Download All'; - - @override - String get albumDownloadRemaining => 'Download Remaining'; - - @override - String get playlistTitle => 'Playlist'; - - @override - String get artistTitle => 'Artist'; - @override String get artistAlbums => 'Albums'; @@ -562,17 +367,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get artistCompilations => 'Compilations'; - @override - String artistReleases(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count releases', - one: '1 release', - ); - return '$_temp0'; - } - @override String get artistPopular => 'Popular'; @@ -581,27 +375,6 @@ class AppLocalizationsEn extends AppLocalizations { return '$count monthly listeners'; } - @override - String get trackMetadataTitle => 'Track Info'; - - @override - String get trackMetadataArtist => 'Artist'; - - @override - String get trackMetadataAlbum => 'Album'; - - @override - String get trackMetadataDuration => 'Duration'; - - @override - String get trackMetadataQuality => 'Quality'; - - @override - String get trackMetadataPath => 'File Path'; - - @override - String get trackMetadataDownloadedAt => 'Downloaded'; - @override String get trackMetadataService => 'Service'; @@ -614,53 +387,15 @@ class AppLocalizationsEn extends AppLocalizations { @override String get trackMetadataDelete => 'Delete'; - @override - String get trackMetadataRedownload => 'Re-download'; - - @override - String get trackMetadataOpenFolder => 'Open Folder'; - - @override - String get setupTitle => 'Welcome to SpotiFLAC'; - - @override - String get setupSubtitle => 'Let\'s get you started'; - - @override - String get setupStoragePermission => 'Storage Permission'; - - @override - String get setupStoragePermissionSubtitle => - 'Required to save downloaded files'; - - @override - String get setupStoragePermissionGranted => 'Permission granted'; - - @override - String get setupStoragePermissionDenied => 'Permission denied'; - @override String get setupGrantPermission => 'Grant Permission'; - @override - String get setupDownloadLocation => 'Download Location'; - - @override - String get setupChooseFolder => 'Choose Folder'; - - @override - String get setupContinue => 'Continue'; - @override String get setupSkip => 'Skip for now'; @override String get setupStorageAccessRequired => 'Storage Access Required'; - @override - String get setupStorageAccessMessage => - 'SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.'; - @override String get setupStorageAccessMessageAndroid11 => 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; @@ -682,9 +417,6 @@ class AppLocalizationsEn extends AppLocalizations { return '$permissionType permission is required for the best experience. You can change this later in Settings.'; } - @override - String get setupSelectDownloadFolder => 'Select Download Folder'; - @override String get setupUseDefaultFolder => 'Use Default Folder?'; @@ -726,21 +458,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get setupDownloadInFlac => 'Download Spotify tracks in FLAC'; - @override - String get setupStepStorage => 'Storage'; - - @override - String get setupStepNotification => 'Notification'; - - @override - String get setupStepFolder => 'Folder'; - - @override - String get setupStepSpotify => 'Spotify'; - - @override - String get setupStepPermission => 'Permission'; - @override String get setupStorageGranted => 'Storage Permission Granted!'; @@ -757,13 +474,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get setupNotificationEnable => 'Enable Notifications'; - @override - String get setupNotificationDescription => - 'Get notified when downloads complete or require attention.'; - - @override - String get setupFolderSelected => 'Download Folder Selected!'; - @override String get setupFolderChoose => 'Choose Download Folder'; @@ -771,48 +481,12 @@ class AppLocalizationsEn extends AppLocalizations { String get setupFolderDescription => 'Select a folder where your downloaded music will be saved.'; - @override - String get setupChangeFolder => 'Change Folder'; - @override String get setupSelectFolder => 'Select Folder'; - @override - String get setupSpotifyApiOptional => 'Spotify API (Optional)'; - - @override - String get setupSpotifyApiDescription => - 'Add your Spotify API credentials for better search results and access to Spotify-exclusive content.'; - - @override - String get setupUseSpotifyApi => 'Use Spotify API'; - - @override - String get setupEnterCredentialsBelow => 'Enter your credentials below'; - - @override - String get setupUsingDeezer => 'Using Deezer (no account needed)'; - - @override - String get setupEnterClientId => 'Enter Spotify Client ID'; - - @override - String get setupEnterClientSecret => 'Enter Spotify Client Secret'; - - @override - String get setupGetFreeCredentials => - 'Get your free API credentials from the Spotify Developer Dashboard.'; - @override String get setupEnableNotifications => 'Enable Notifications'; - @override - String get setupProceedToNextStep => 'You can now proceed to the next step.'; - - @override - String get setupNotificationProgressDescription => - 'You will receive download progress notifications.'; - @override String get setupNotificationBackgroundDescription => 'Get notified about download progress and completion. This helps you track downloads when the app is in background.'; @@ -820,32 +494,19 @@ class AppLocalizationsEn extends AppLocalizations { @override String get setupSkipForNow => 'Skip for now'; - @override - String get setupBack => 'Back'; - @override String get setupNext => 'Next'; @override String get setupGetStarted => 'Get Started'; - @override - String get setupSkipAndStart => 'Skip & Start'; - @override String get setupAllowAccessToManageFiles => 'Please enable \"Allow access to manage all files\" in the next screen.'; - @override - String get setupGetCredentialsFromSpotify => - 'Get credentials from developer.spotify.com'; - @override String get dialogCancel => 'Cancel'; - @override - String get dialogOk => 'OK'; - @override String get dialogSave => 'Save'; @@ -855,21 +516,9 @@ class AppLocalizationsEn extends AppLocalizations { @override String get dialogRetry => 'Retry'; - @override - String get dialogClose => 'Close'; - - @override - String get dialogYes => 'Yes'; - - @override - String get dialogNo => 'No'; - @override String get dialogClear => 'Clear'; - @override - String get dialogConfirm => 'Confirm'; - @override String get dialogDone => 'Done'; @@ -892,28 +541,9 @@ class AppLocalizationsEn extends AppLocalizations { String get dialogUnsavedChanges => 'You have unsaved changes. Do you want to discard them?'; - @override - String get dialogDownloadFailed => 'Download Failed'; - - @override - String get dialogTrackLabel => 'Track:'; - - @override - String get dialogArtistLabel => 'Artist:'; - - @override - String get dialogErrorLabel => 'Error:'; - @override String get dialogClearAll => 'Clear All'; - @override - String get dialogClearAllDownloads => - 'Are you sure you want to clear all downloads?'; - - @override - String get dialogRemoveFromDevice => 'Remove from device?'; - @override String get dialogRemoveExtension => 'Remove Extension'; @@ -1014,11 +644,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get snackbarViewQueue => 'View Queue'; - @override - String snackbarFailedToLoad(String error) { - return 'Failed to load: $error'; - } - @override String snackbarUrlCopied(String platform) { return '$platform URL copied to clipboard'; @@ -1060,44 +685,14 @@ class AppLocalizationsEn extends AppLocalizations { String get errorRateLimitedMessage => 'Too many requests. Please wait a moment before searching again.'; - @override - String errorFailedToLoad(String item) { - return 'Failed to load $item'; - } - @override String get errorNoTracksFound => 'No tracks found'; - @override - String get errorSeekNotSupported => - 'Seeking is not supported for this live stream'; - @override String errorMissingExtensionSource(String item) { return 'Cannot load $item: missing extension source'; } - @override - String get statusQueued => 'Queued'; - - @override - String get statusDownloading => 'Downloading'; - - @override - String get statusFinalizing => 'Finalizing'; - - @override - String get statusCompleted => 'Completed'; - - @override - String get statusFailed => 'Failed'; - - @override - String get statusSkipped => 'Skipped'; - - @override - String get statusPaused => 'Paused'; - @override String get actionPause => 'Pause'; @@ -1107,24 +702,12 @@ class AppLocalizationsEn extends AppLocalizations { @override String get actionCancel => 'Cancel'; - @override - String get actionStop => 'Stop'; - - @override - String get actionSelect => 'Select'; - @override String get actionSelectAll => 'Select All'; @override String get actionDeselect => 'Deselect'; - @override - String get actionPaste => 'Paste'; - - @override - String get actionImportCsv => 'Import CSV'; - @override String get actionRemoveCredentials => 'Remove Credentials'; @@ -1139,20 +722,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get selectionAllSelected => 'All tracks selected'; - @override - String get selectionTapToSelect => 'Tap tracks to select'; - - @override - String selectionDeleteTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Delete $count $_temp0'; - } - @override String get selectionSelectToDelete => 'Select tracks to delete'; @@ -1179,40 +748,9 @@ class AppLocalizationsEn extends AppLocalizations { @override String get tooltipPlay => 'Play'; - @override - String get tooltipCancel => 'Cancel'; - - @override - String get tooltipStop => 'Stop'; - - @override - String get tooltipRetry => 'Retry'; - - @override - String get tooltipRemove => 'Remove'; - - @override - String get tooltipClear => 'Clear'; - - @override - String get tooltipPaste => 'Paste'; - @override String get filenameFormat => 'Filename Format'; - @override - String filenameFormatPreview(String preview) { - return 'Preview: $preview'; - } - - @override - String get filenameAvailablePlaceholders => 'Available placeholders:'; - - @override - String filenameHint(Object artist, Object title) { - return '$artist - $title'; - } - @override String get filenameShowAdvancedTags => 'Show advanced tags'; @@ -1220,9 +758,6 @@ class AppLocalizationsEn extends AppLocalizations { String get filenameShowAdvancedTagsDescription => 'Enable formatted tags for track padding and date patterns'; - @override - String get folderOrganization => 'Folder Organization'; - @override String get folderOrganizationNone => 'No organization'; @@ -1257,20 +792,9 @@ class AppLocalizationsEn extends AppLocalizations { @override String get updateAvailable => 'Update Available'; - @override - String updateNewVersion(String version) { - return 'Version $version is available'; - } - - @override - String get updateDownload => 'Download'; - @override String get updateLater => 'Later'; - @override - String get updateChangelog => 'Changelog'; - @override String get updateStartingDownload => 'Starting download...'; @@ -1301,12 +825,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get updateDontRemind => 'Don\'t remind'; - @override - String get providerPriority => 'Provider Priority'; - - @override - String get providerPrioritySubtitle => 'Drag to reorder download providers'; - @override String get providerPriorityTitle => 'Provider Priority'; @@ -1324,13 +842,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get providerExtension => 'Extension'; - @override - String get metadataProviderPriority => 'Metadata Provider Priority'; - - @override - String get metadataProviderPrioritySubtitle => - 'Order used when fetching track metadata'; - @override String get metadataProviderPriorityTitle => 'Metadata Priority'; @@ -1351,18 +862,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get logTitle => 'Logs'; - @override - String get logCopy => 'Copy Logs'; - - @override - String get logClear => 'Clear Logs'; - - @override - String get logShare => 'Share Logs'; - - @override - String get logEmpty => 'No logs yet'; - @override String get logCopied => 'Logs copied to clipboard'; @@ -1387,18 +886,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get logClearLogsMessage => 'Are you sure you want to clear all logs?'; - @override - String get logIspBlocking => 'ISP BLOCKING DETECTED'; - - @override - String get logRateLimited => 'RATE LIMITED'; - - @override - String get logNetworkError => 'NETWORK ERROR'; - - @override - String get logTrackNotFound => 'TRACK NOT FOUND'; - @override String get logFilterBySeverity => 'Filter logs by severity'; @@ -1408,48 +895,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get logNoLogsYetSubtitle => 'Logs will appear here as you use the app'; - @override - String get logIssueSummary => 'Issue Summary'; - - @override - String get logIspBlockingDescription => - 'Your ISP may be blocking access to download services'; - - @override - String get logIspBlockingSuggestion => - 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; - - @override - String get logRateLimitedDescription => 'Too many requests to the service'; - - @override - String get logRateLimitedSuggestion => - 'Wait a few minutes before trying again'; - - @override - String get logNetworkErrorDescription => 'Connection issues detected'; - - @override - String get logNetworkErrorSuggestion => 'Check your internet connection'; - - @override - String get logTrackNotFoundDescription => - 'Some tracks could not be found on download services'; - - @override - String get logTrackNotFoundSuggestion => - 'The track may not be available in lossless quality'; - - @override - String logTotalErrors(int count) { - return 'Total errors: $count'; - } - - @override - String logAffected(String domains) { - return 'Affected: $domains'; - } - @override String logEntriesFiltered(int count) { return 'Entries ($count filtered)'; @@ -1556,9 +1001,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get appearanceLanguage => 'App Language'; - @override - String get appearanceLanguageSubtitle => 'Choose your preferred language'; - @override String get settingsAppearanceSubtitle => 'Theme, colors, display'; @@ -1580,19 +1022,11 @@ class AppLocalizationsEn extends AppLocalizations { @override String get pressBackAgainToExit => 'Press back again to exit'; - @override - String get tracksHeader => 'Tracks'; - @override String downloadAllCount(int count) { return 'Download All ($count)'; } - @override - String playAllCount(int count) { - return 'Play All ($count)'; - } - @override String tracksCount(int count) { String _temp0 = intl.Intl.pluralLogic( @@ -1701,11 +1135,6 @@ class AppLocalizationsEn extends AppLocalizations { String get trackDeleteConfirmMessage => 'This will permanently delete the downloaded file and remove it from your history.'; - @override - String trackCannotOpen(String message) { - return 'Cannot open: $message'; - } - @override String get dateToday => 'Today'; @@ -1727,18 +1156,6 @@ class AppLocalizationsEn extends AppLocalizations { return '$count months ago'; } - @override - String get concurrentSequential => 'Sequential'; - - @override - String get concurrentParallel2 => '2 Parallel'; - - @override - String get concurrentParallel3 => '3 Parallel'; - - @override - String get tapToSeeError => 'Tap to see error details'; - @override String get storeFilterAll => 'All'; @@ -1760,15 +1177,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get storeClearFilters => 'Clear filters'; - @override - String get storeNoResults => 'No extensions found'; - - @override - String get extensionProviderPriority => 'Provider Priority'; - - @override - String get extensionInstallButton => 'Install Extension'; - @override String get extensionDefaultProvider => 'Default (Deezer/Spotify)'; @@ -1919,38 +1327,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get qualityHiResFlacMaxSubtitle => '24-bit / up to 192kHz'; - @override - String get qualityLossy => 'Lossy'; - - @override - String get qualityLossyMp3Subtitle => 'MP3 320kbps (converted from FLAC)'; - - @override - String get qualityLossyOpusSubtitle => 'Opus 128kbps (converted from FLAC)'; - - @override - String get enableLossyOption => 'Enable Lossy Option'; - - @override - String get enableLossyOptionSubtitleOn => 'Lossy quality option is available'; - - @override - String get enableLossyOptionSubtitleOff => - 'Downloads FLAC then converts to lossy format'; - - @override - String get lossyFormat => 'Lossy Format'; - - @override - String get lossyFormatDescription => 'Choose the lossy format for conversion'; - - @override - String get lossyFormatMp3Subtitle => '320kbps, best compatibility'; - - @override - String get lossyFormatOpusSubtitle => - '128kbps, better quality at smaller size'; - @override String get qualityNote => 'Actual quality depends on track availability from the service'; @@ -1965,24 +1341,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get youtubeMp3BitrateTitle => 'YouTube MP3 Bitrate'; - @override - String youtubeBitrateSubtitle(int bitrate, int min, int max) { - return '${bitrate}kbps ($min-$max)'; - } - - @override - String youtubeBitrateInputHelp(int min, int max) { - return 'Enter custom bitrate ($min-$max kbps)'; - } - - @override - String get youtubeBitrateFieldLabel => 'Bitrate (kbps)'; - - @override - String youtubeBitrateValidationError(int min, int max) { - return 'Bitrate must be between $min and $max kbps'; - } - @override String get downloadAskBeforeDownload => 'Ask Before Download'; @@ -1998,14 +1356,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get downloadUseAlbumArtistForFolders => 'Use Album Artist for folders'; - @override - String get downloadUseAlbumArtistForFoldersAlbumSubtitle => - 'Artist folders use Album Artist when available'; - - @override - String get downloadUseAlbumArtistForFoldersTrackSubtitle => - 'Artist folders use Track Artist only'; - @override String get downloadUsePrimaryArtistOnly => 'Primary artist only for folders'; @@ -2017,78 +1367,18 @@ class AppLocalizationsEn extends AppLocalizations { String get downloadUsePrimaryArtistOnlyDisabled => 'Full artist string used for folder name'; - @override - String get downloadSaveFormat => 'Save Format'; - - @override - String get downloadSelectService => 'Select Service'; - @override String get downloadSelectQuality => 'Select Quality'; @override String get downloadFrom => 'Download From'; - @override - String get downloadDefaultQualityLabel => 'Default Quality'; - - @override - String get downloadBestAvailable => 'Best available'; - - @override - String get folderNone => 'None'; - - @override - String get folderNoneSubtitle => 'Save all files directly to download folder'; - - @override - String get folderArtist => 'Artist'; - - @override - String get folderArtistSubtitle => 'Artist Name/filename'; - - @override - String get folderAlbum => 'Album'; - - @override - String get folderAlbumSubtitle => 'Album Name/filename'; - - @override - String get folderArtistAlbum => 'Artist/Album'; - - @override - String get folderArtistAlbumSubtitle => 'Artist Name/Album Name/filename'; - - @override - String get serviceTidal => 'Tidal'; - - @override - String get serviceQobuz => 'Qobuz'; - - @override - String get serviceAmazon => 'Amazon'; - - @override - String get serviceDeezer => 'Deezer'; - - @override - String get serviceSpotify => 'Spotify'; - @override String get appearanceAmoledDark => 'AMOLED Dark'; @override String get appearanceAmoledDarkSubtitle => 'Pure black background'; - @override - String get appearanceChooseAccentColor => 'Choose Accent Color'; - - @override - String get appearanceChooseTheme => 'Theme Mode'; - - @override - String get queueTitle => 'Download Queue'; - @override String get queueClearAll => 'Clear All'; @@ -2096,19 +1386,6 @@ class AppLocalizationsEn extends AppLocalizations { String get queueClearAllMessage => 'Are you sure you want to clear all downloads?'; - @override - String get queueExportFailed => 'Export'; - - @override - String get queueExportFailedSuccess => - 'Failed downloads exported to TXT file'; - - @override - String get queueExportFailedClear => 'Clear Failed'; - - @override - String get queueExportFailedError => 'Failed to export downloads'; - @override String get settingsAutoExportFailed => 'Auto-export failed downloads'; @@ -2129,30 +1406,6 @@ class AppLocalizationsEn extends AppLocalizations { String get settingsDownloadNetworkSubtitle => 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; - @override - String get queueEmpty => 'No downloads in queue'; - - @override - String get queueEmptySubtitle => 'Add tracks from the home screen'; - - @override - String get queueClearCompleted => 'Clear completed'; - - @override - String get queueDownloadFailed => 'Download Failed'; - - @override - String get queueTrackLabel => 'Track:'; - - @override - String get queueArtistLabel => 'Artist:'; - - @override - String get queueErrorLabel => 'Error:'; - - @override - String get queueUnknownError => 'Unknown error'; - @override String get albumFolderArtistAlbum => 'Artist / Album'; @@ -2199,14 +1452,6 @@ class AppLocalizationsEn extends AppLocalizations { return 'Delete $count $_temp0 from this album?\n\nThis will also delete the files from storage.'; } - @override - String get downloadedAlbumTracksHeader => 'Tracks'; - - @override - String downloadedAlbumDownloadedCount(int count) { - return '$count downloaded'; - } - @override String downloadedAlbumSelectedCount(int count) { return '$count selected'; @@ -2237,9 +1482,6 @@ class AppLocalizationsEn extends AppLocalizations { return 'Disc $discNumber'; } - @override - String get utilityFunctions => 'Utility Functions'; - @override String get recentTypeArtist => 'Artist'; @@ -2263,23 +1505,12 @@ class AppLocalizationsEn extends AppLocalizations { return 'Playlist: $name'; } - @override - String errorGeneric(String message) { - return 'Error: $message'; - } - @override String get discographyDownload => 'Download Discography'; - @override - String get discographyPlay => 'Play Discography'; - @override String get discographyDownloadAll => 'Download All'; - @override - String get discographyPlayAll => 'Play All'; - @override String discographyDownloadAllSubtitle(int count, int albumCount) { return '$count tracks from $albumCount releases'; @@ -2324,9 +1555,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get discographyDownloadSelected => 'Download Selected'; - @override - String get discographyPlaySelected => 'Play Selected'; - @override String discographyAddedToQueue(int count) { return 'Added $count tracks to queue'; @@ -2382,9 +1610,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get libraryTitle => 'Local Library'; - @override - String get libraryStatus => 'Library Status'; - @override String get libraryScanSettings => 'Scan Settings'; @@ -2447,11 +1672,6 @@ class AppLocalizationsEn extends AppLocalizations { String get libraryAboutDescription => 'Scans your existing music collection to detect duplicates when downloading. Supports FLAC, M4A, MP3, Opus, and OGG formats. Metadata is read from file tags when available.'; - @override - String libraryTracksCount(int count) { - return '$count tracks'; - } - @override String libraryTracksUnit(int count) { String _temp0 = intl.Intl.pluralLogic( @@ -2542,21 +1762,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get libraryFilterFormat => 'Format'; - @override - String get libraryFilterDate => 'Date Added'; - - @override - String get libraryFilterDateToday => 'Today'; - - @override - String get libraryFilterDateWeek => 'This Week'; - - @override - String get libraryFilterDateMonth => 'This Month'; - - @override - String get libraryFilterDateYear => 'This Year'; - @override String get libraryFilterSort => 'Sort'; @@ -2566,11 +1771,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get libraryFilterSortOldest => 'Oldest'; - @override - String libraryFilterActive(int count) { - return '$count filter(s) active'; - } - @override String get timeJustNow => 'Just now'; @@ -2596,72 +1796,6 @@ class AppLocalizationsEn extends AppLocalizations { return '$_temp0'; } - @override - String get storageSwitchTitle => 'Switch Storage Mode'; - - @override - String get storageSwitchToSafTitle => 'Switch to SAF Storage?'; - - @override - String get storageSwitchToAppTitle => 'Switch to App Storage?'; - - @override - String get storageSwitchToSafMessage => - 'Your existing downloads will remain in the current location and stay accessible.\n\nNew downloads will be saved to your selected SAF folder.'; - - @override - String get storageSwitchToAppMessage => - 'Your existing downloads will remain in the current SAF location and stay accessible.\n\nNew downloads will be saved to Music/SpotiFLAC folder.'; - - @override - String get storageSwitchExistingDownloads => 'Existing Downloads'; - - @override - String storageSwitchExistingDownloadsInfo(int count, String mode) { - return '$count tracks in $mode storage'; - } - - @override - String get storageSwitchNewDownloads => 'New Downloads'; - - @override - String storageSwitchNewDownloadsLocation(String location) { - return 'Will be saved to: $location'; - } - - @override - String get storageSwitchContinue => 'Continue'; - - @override - String get storageSwitchSelectFolder => 'Select SAF Folder'; - - @override - String get storageAppStorage => 'App Storage'; - - @override - String get storageSafStorage => 'SAF Storage'; - - @override - String storageModeBadge(String mode) { - return 'Storage: $mode'; - } - - @override - String get storageStatsTitle => 'Storage Statistics'; - - @override - String storageStatsAppCount(int count) { - return '$count tracks in App Storage'; - } - - @override - String storageStatsSafCount(int count) { - return '$count tracks in SAF Storage'; - } - - @override - String get storageModeInfo => 'Your files are stored in multiple locations'; - @override String get tutorialWelcomeTitle => 'Welcome to SpotiFLAC!'; @@ -2688,18 +1822,6 @@ class AppLocalizationsEn extends AppLocalizations { String get tutorialSearchDesc => 'There are two easy ways to find music you want to download.'; - @override - String get tutorialSearchTip1 => - 'Paste a Spotify or Deezer URL directly in the search box'; - - @override - String get tutorialSearchTip2 => - 'Or type the song name, artist, or album to search'; - - @override - String get tutorialSearchTip3 => - 'Supports tracks, albums, playlists, and artist pages'; - @override String get tutorialDownloadTitle => 'Downloading Music'; @@ -2707,18 +1829,6 @@ class AppLocalizationsEn extends AppLocalizations { String get tutorialDownloadDesc => 'Downloading music is simple and fast. Here\'s how it works.'; - @override - String get tutorialDownloadTip1 => - 'Tap the download button next to any track to start downloading'; - - @override - String get tutorialDownloadTip2 => - 'Choose your preferred quality (FLAC, Hi-Res, or MP3)'; - - @override - String get tutorialDownloadTip3 => - 'Download entire albums or playlists with one tap'; - @override String get tutorialLibraryTitle => 'Your Library'; @@ -2779,9 +1889,6 @@ class AppLocalizationsEn extends AppLocalizations { String get tutorialReadyMessage => 'You\'re all set! Start downloading your favorite music now.'; - @override - String get tutorialExample => 'EXAMPLE'; - @override String get libraryForceFullScan => 'Force Full Scan'; @@ -2944,10 +2051,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get trackReEnrich => 'Re-enrich'; - @override - String get trackReEnrichSubtitle => - 'Re-embed metadata without re-downloading'; - @override String get trackReEnrichOnlineSubtitle => 'Search metadata online and embed into file'; @@ -3228,42 +2331,15 @@ class AppLocalizationsEn extends AppLocalizations { } @override - String get setupModeSelectionTitle => 'Choose Your Mode'; + String downloadedAlbumDownloadedCount(int count) { + return '$count downloaded'; + } @override - String get setupModeSelectionDescription => - 'How would you like to use SpotiFLAC? You can always change this later in Settings.'; + String get downloadUseAlbumArtistForFoldersAlbumSubtitle => + 'Artist folders use Album Artist when available'; @override - String get setupModeDownloaderTitle => 'Downloader'; - - @override - String get setupModeDownloaderFeature1 => - 'Download tracks in lossless FLAC quality'; - - @override - String get setupModeDownloaderFeature2 => - 'Save music to your device for offline listening'; - - @override - String get setupModeDownloaderFeature3 => 'Manage your local music library'; - - @override - String get setupModeStreamingTitle => 'Streaming'; - - @override - String get setupModeStreamingFeature1 => - 'Stream tracks instantly without downloading'; - - @override - String get setupModeStreamingFeature2 => - 'Smart Queue auto-discovers new music for you'; - - @override - String get setupModeStreamingFeature3 => - 'Play any track on demand with playback controls'; - - @override - String get setupModeChangeableLater => - 'You can switch between modes anytime in Settings.'; + String get downloadUseAlbumArtistForFoldersTrackSubtitle => + 'Artist folders use Track Artist only'; } diff --git a/lib/l10n/app_localizations_es.dart b/lib/l10n/app_localizations_es.dart index 303eb62b..58ae25af 100644 --- a/lib/l10n/app_localizations_es.dart +++ b/lib/l10n/app_localizations_es.dart @@ -11,19 +11,12 @@ class AppLocalizationsEs extends AppLocalizations { @override String get appName => 'SpotiFLAC'; - @override - String get appDescription => - 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; - @override String get navHome => 'Home'; @override String get navLibrary => 'Library'; - @override - String get navHistory => 'History'; - @override String get navSettings => 'Settings'; @@ -33,14 +26,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get homeTitle => 'Home'; - @override - String get homeSearchHint => 'Paste Spotify URL or search...'; - - @override - String homeSearchHintExtension(String extensionName) { - return 'Search with $extensionName...'; - } - @override String get homeSubtitle => 'Paste a Spotify link or search by name'; @@ -50,17 +35,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get homeRecent => 'Recent'; - @override - String get historyTitle => 'History'; - - @override - String historyDownloading(int count) { - return 'Downloading ($count)'; - } - - @override - String get historyDownloaded => 'Downloaded'; - @override String get historyFilterAll => 'All'; @@ -70,48 +44,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get historyFilterSingles => 'Singles'; - @override - String historyTracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks', - one: '1 track', - ); - return '$_temp0'; - } - - @override - String historyAlbumsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count albums', - one: '1 album', - ); - return '$_temp0'; - } - - @override - String get historyNoDownloads => 'No download history'; - - @override - String get historyNoDownloadsSubtitle => 'Downloaded tracks will appear here'; - - @override - String get historyNoAlbums => 'No album downloads'; - - @override - String get historyNoAlbumsSubtitle => - 'Download multiple tracks from an album to see them here'; - - @override - String get historyNoSingles => 'No single downloads'; - - @override - String get historyNoSinglesSubtitle => - 'Single track downloads will appear here'; - @override String get historySearchHint => 'Search history...'; @@ -136,27 +68,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get downloadTitle => 'Download'; - @override - String get downloadLocation => 'Download Location'; - - @override - String get downloadLocationSubtitle => 'Choose where to save files'; - - @override - String get downloadLocationDefault => 'Default location'; - - @override - String get downloadDefaultService => 'Default Service'; - - @override - String get downloadDefaultServiceSubtitle => 'Service used for downloads'; - - @override - String get downloadDefaultQuality => 'Default Quality'; - - @override - String get downloadAskQuality => 'Ask Quality Before Download'; - @override String get downloadAskQualitySubtitle => 'Show quality picker for each download'; @@ -167,31 +78,9 @@ class AppLocalizationsEs extends AppLocalizations { @override String get downloadFolderOrganization => 'Folder Organization'; - @override - String get downloadSeparateSingles => 'Separate Singles'; - - @override - String get downloadSeparateSinglesSubtitle => - 'Put single tracks in a separate folder'; - - @override - String get qualityBest => 'Best Available'; - - @override - String get qualityFlac => 'FLAC'; - - @override - String get quality320 => '320 kbps'; - - @override - String get quality128 => '128 kbps'; - @override String get appearanceTitle => 'Appearance'; - @override - String get appearanceTheme => 'Theme'; - @override String get appearanceThemeSystem => 'System'; @@ -207,9 +96,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get appearanceDynamicColorSubtitle => 'Use colors from your wallpaper'; - @override - String get appearanceAccentColor => 'Accent Color'; - @override String get appearanceHistoryView => 'History View'; @@ -222,9 +108,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get optionsTitle => 'Options'; - @override - String get optionsSearchSource => 'Search Source'; - @override String get optionsPrimaryProvider => 'Primary Provider'; @@ -248,33 +131,6 @@ class AppLocalizationsEs extends AppLocalizations { String get optionsAutoFallbackSubtitle => 'Try other services if download fails'; - @override - String get optionsAutoSkipUnavailableTracks => 'Auto Skip Unavailable Tracks'; - - @override - String get optionsAutoSkipUnavailableTracksSubtitleOn => - 'Automatically skip to the next queue track when a stream cannot be resolved.'; - - @override - String get optionsAutoSkipUnavailableTracksSubtitleOff => - 'Stop on failed track resolution and show an error.'; - - @override - String get optionsInteractionMode => 'Interaction Mode'; - - @override - String get modeDownloader => 'Downloader Mode'; - - @override - String get modeDownloaderSubtitle => - 'Tap tracks to add them to download queue'; - - @override - String get modeStreaming => 'Streaming Mode'; - - @override - String get modeStreamingSubtitle => 'Tap tracks to play instantly'; - @override String get optionsUseExtensionProviders => 'Use Extension Providers'; @@ -377,18 +233,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get extensionsTitle => 'Extensions'; - @override - String get extensionsInstalled => 'Installed Extensions'; - - @override - String get extensionsNone => 'No extensions installed'; - - @override - String get extensionsNoneSubtitle => 'Install extensions from the Store tab'; - - @override - String get extensionsEnabled => 'Enabled'; - @override String get extensionsDisabled => 'Disabled'; @@ -405,9 +249,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get extensionsUninstall => 'Uninstall'; - @override - String get extensionsSetAsSearch => 'Set as Search Provider'; - @override String get storeTitle => 'Extension Store'; @@ -481,9 +322,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get aboutSocial => 'Social'; - @override - String get aboutSupport => 'Support'; - @override String get aboutApp => 'App'; @@ -502,13 +340,6 @@ class AppLocalizationsEs extends AppLocalizations { String get aboutSjdonadoDesc => 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; - @override - String get aboutDoubleDouble => 'DoubleDouble'; - - @override - String get aboutDoubleDoubleDesc => - 'Amazing API for Amazon Music downloads. Thank you for making it free!'; - @override String get aboutDabMusic => 'DAB Music'; @@ -527,32 +358,6 @@ class AppLocalizationsEs extends AppLocalizations { String get aboutAppDescription => 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; - @override - String get albumTitle => 'Album'; - - @override - String albumTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks', - one: '1 track', - ); - return '$_temp0'; - } - - @override - String get albumDownloadAll => 'Download All'; - - @override - String get albumDownloadRemaining => 'Download Remaining'; - - @override - String get playlistTitle => 'Playlist'; - - @override - String get artistTitle => 'Artist'; - @override String get artistAlbums => 'Albums'; @@ -562,17 +367,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get artistCompilations => 'Compilations'; - @override - String artistReleases(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count releases', - one: '1 release', - ); - return '$_temp0'; - } - @override String get artistPopular => 'Popular'; @@ -581,27 +375,6 @@ class AppLocalizationsEs extends AppLocalizations { return '$count monthly listeners'; } - @override - String get trackMetadataTitle => 'Track Info'; - - @override - String get trackMetadataArtist => 'Artist'; - - @override - String get trackMetadataAlbum => 'Album'; - - @override - String get trackMetadataDuration => 'Duration'; - - @override - String get trackMetadataQuality => 'Quality'; - - @override - String get trackMetadataPath => 'File Path'; - - @override - String get trackMetadataDownloadedAt => 'Downloaded'; - @override String get trackMetadataService => 'Service'; @@ -614,53 +387,15 @@ class AppLocalizationsEs extends AppLocalizations { @override String get trackMetadataDelete => 'Delete'; - @override - String get trackMetadataRedownload => 'Re-download'; - - @override - String get trackMetadataOpenFolder => 'Open Folder'; - - @override - String get setupTitle => 'Welcome to SpotiFLAC'; - - @override - String get setupSubtitle => 'Let\'s get you started'; - - @override - String get setupStoragePermission => 'Storage Permission'; - - @override - String get setupStoragePermissionSubtitle => - 'Required to save downloaded files'; - - @override - String get setupStoragePermissionGranted => 'Permission granted'; - - @override - String get setupStoragePermissionDenied => 'Permission denied'; - @override String get setupGrantPermission => 'Grant Permission'; - @override - String get setupDownloadLocation => 'Download Location'; - - @override - String get setupChooseFolder => 'Choose Folder'; - - @override - String get setupContinue => 'Continue'; - @override String get setupSkip => 'Skip for now'; @override String get setupStorageAccessRequired => 'Storage Access Required'; - @override - String get setupStorageAccessMessage => - 'SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.'; - @override String get setupStorageAccessMessageAndroid11 => 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; @@ -682,9 +417,6 @@ class AppLocalizationsEs extends AppLocalizations { return '$permissionType permission is required for the best experience. You can change this later in Settings.'; } - @override - String get setupSelectDownloadFolder => 'Select Download Folder'; - @override String get setupUseDefaultFolder => 'Use Default Folder?'; @@ -726,21 +458,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get setupDownloadInFlac => 'Download Spotify tracks in FLAC'; - @override - String get setupStepStorage => 'Storage'; - - @override - String get setupStepNotification => 'Notification'; - - @override - String get setupStepFolder => 'Folder'; - - @override - String get setupStepSpotify => 'Spotify'; - - @override - String get setupStepPermission => 'Permission'; - @override String get setupStorageGranted => 'Storage Permission Granted!'; @@ -757,13 +474,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get setupNotificationEnable => 'Enable Notifications'; - @override - String get setupNotificationDescription => - 'Get notified when downloads complete or require attention.'; - - @override - String get setupFolderSelected => 'Download Folder Selected!'; - @override String get setupFolderChoose => 'Choose Download Folder'; @@ -771,48 +481,12 @@ class AppLocalizationsEs extends AppLocalizations { String get setupFolderDescription => 'Select a folder where your downloaded music will be saved.'; - @override - String get setupChangeFolder => 'Change Folder'; - @override String get setupSelectFolder => 'Select Folder'; - @override - String get setupSpotifyApiOptional => 'Spotify API (Optional)'; - - @override - String get setupSpotifyApiDescription => - 'Add your Spotify API credentials for better search results and access to Spotify-exclusive content.'; - - @override - String get setupUseSpotifyApi => 'Use Spotify API'; - - @override - String get setupEnterCredentialsBelow => 'Enter your credentials below'; - - @override - String get setupUsingDeezer => 'Using Deezer (no account needed)'; - - @override - String get setupEnterClientId => 'Enter Spotify Client ID'; - - @override - String get setupEnterClientSecret => 'Enter Spotify Client Secret'; - - @override - String get setupGetFreeCredentials => - 'Get your free API credentials from the Spotify Developer Dashboard.'; - @override String get setupEnableNotifications => 'Enable Notifications'; - @override - String get setupProceedToNextStep => 'You can now proceed to the next step.'; - - @override - String get setupNotificationProgressDescription => - 'You will receive download progress notifications.'; - @override String get setupNotificationBackgroundDescription => 'Get notified about download progress and completion. This helps you track downloads when the app is in background.'; @@ -820,32 +494,19 @@ class AppLocalizationsEs extends AppLocalizations { @override String get setupSkipForNow => 'Skip for now'; - @override - String get setupBack => 'Back'; - @override String get setupNext => 'Next'; @override String get setupGetStarted => 'Get Started'; - @override - String get setupSkipAndStart => 'Skip & Start'; - @override String get setupAllowAccessToManageFiles => 'Please enable \"Allow access to manage all files\" in the next screen.'; - @override - String get setupGetCredentialsFromSpotify => - 'Get credentials from developer.spotify.com'; - @override String get dialogCancel => 'Cancel'; - @override - String get dialogOk => 'OK'; - @override String get dialogSave => 'Save'; @@ -855,21 +516,9 @@ class AppLocalizationsEs extends AppLocalizations { @override String get dialogRetry => 'Retry'; - @override - String get dialogClose => 'Close'; - - @override - String get dialogYes => 'Yes'; - - @override - String get dialogNo => 'No'; - @override String get dialogClear => 'Clear'; - @override - String get dialogConfirm => 'Confirm'; - @override String get dialogDone => 'Done'; @@ -892,28 +541,9 @@ class AppLocalizationsEs extends AppLocalizations { String get dialogUnsavedChanges => 'You have unsaved changes. Do you want to discard them?'; - @override - String get dialogDownloadFailed => 'Download Failed'; - - @override - String get dialogTrackLabel => 'Track:'; - - @override - String get dialogArtistLabel => 'Artist:'; - - @override - String get dialogErrorLabel => 'Error:'; - @override String get dialogClearAll => 'Clear All'; - @override - String get dialogClearAllDownloads => - 'Are you sure you want to clear all downloads?'; - - @override - String get dialogRemoveFromDevice => 'Remove from device?'; - @override String get dialogRemoveExtension => 'Remove Extension'; @@ -1014,11 +644,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get snackbarViewQueue => 'View Queue'; - @override - String snackbarFailedToLoad(String error) { - return 'Failed to load: $error'; - } - @override String snackbarUrlCopied(String platform) { return '$platform URL copied to clipboard'; @@ -1060,44 +685,14 @@ class AppLocalizationsEs extends AppLocalizations { String get errorRateLimitedMessage => 'Too many requests. Please wait a moment before searching again.'; - @override - String errorFailedToLoad(String item) { - return 'Failed to load $item'; - } - @override String get errorNoTracksFound => 'No tracks found'; - @override - String get errorSeekNotSupported => - 'Seeking is not supported for this live stream'; - @override String errorMissingExtensionSource(String item) { return 'Cannot load $item: missing extension source'; } - @override - String get statusQueued => 'Queued'; - - @override - String get statusDownloading => 'Downloading'; - - @override - String get statusFinalizing => 'Finalizing'; - - @override - String get statusCompleted => 'Completed'; - - @override - String get statusFailed => 'Failed'; - - @override - String get statusSkipped => 'Skipped'; - - @override - String get statusPaused => 'Paused'; - @override String get actionPause => 'Pause'; @@ -1107,24 +702,12 @@ class AppLocalizationsEs extends AppLocalizations { @override String get actionCancel => 'Cancel'; - @override - String get actionStop => 'Stop'; - - @override - String get actionSelect => 'Select'; - @override String get actionSelectAll => 'Select All'; @override String get actionDeselect => 'Deselect'; - @override - String get actionPaste => 'Paste'; - - @override - String get actionImportCsv => 'Import CSV'; - @override String get actionRemoveCredentials => 'Remove Credentials'; @@ -1139,20 +722,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get selectionAllSelected => 'All tracks selected'; - @override - String get selectionTapToSelect => 'Tap tracks to select'; - - @override - String selectionDeleteTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Delete $count $_temp0'; - } - @override String get selectionSelectToDelete => 'Select tracks to delete'; @@ -1179,40 +748,9 @@ class AppLocalizationsEs extends AppLocalizations { @override String get tooltipPlay => 'Play'; - @override - String get tooltipCancel => 'Cancel'; - - @override - String get tooltipStop => 'Stop'; - - @override - String get tooltipRetry => 'Retry'; - - @override - String get tooltipRemove => 'Remove'; - - @override - String get tooltipClear => 'Clear'; - - @override - String get tooltipPaste => 'Paste'; - @override String get filenameFormat => 'Filename Format'; - @override - String filenameFormatPreview(String preview) { - return 'Preview: $preview'; - } - - @override - String get filenameAvailablePlaceholders => 'Available placeholders:'; - - @override - String filenameHint(Object artist, Object title) { - return '$artist - $title'; - } - @override String get filenameShowAdvancedTags => 'Show advanced tags'; @@ -1220,9 +758,6 @@ class AppLocalizationsEs extends AppLocalizations { String get filenameShowAdvancedTagsDescription => 'Enable formatted tags for track padding and date patterns'; - @override - String get folderOrganization => 'Folder Organization'; - @override String get folderOrganizationNone => 'No organization'; @@ -1257,20 +792,9 @@ class AppLocalizationsEs extends AppLocalizations { @override String get updateAvailable => 'Update Available'; - @override - String updateNewVersion(String version) { - return 'Version $version is available'; - } - - @override - String get updateDownload => 'Download'; - @override String get updateLater => 'Later'; - @override - String get updateChangelog => 'Changelog'; - @override String get updateStartingDownload => 'Starting download...'; @@ -1301,12 +825,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get updateDontRemind => 'Don\'t remind'; - @override - String get providerPriority => 'Provider Priority'; - - @override - String get providerPrioritySubtitle => 'Drag to reorder download providers'; - @override String get providerPriorityTitle => 'Provider Priority'; @@ -1324,13 +842,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get providerExtension => 'Extension'; - @override - String get metadataProviderPriority => 'Metadata Provider Priority'; - - @override - String get metadataProviderPrioritySubtitle => - 'Order used when fetching track metadata'; - @override String get metadataProviderPriorityTitle => 'Metadata Priority'; @@ -1351,18 +862,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get logTitle => 'Logs'; - @override - String get logCopy => 'Copy Logs'; - - @override - String get logClear => 'Clear Logs'; - - @override - String get logShare => 'Share Logs'; - - @override - String get logEmpty => 'No logs yet'; - @override String get logCopied => 'Logs copied to clipboard'; @@ -1387,18 +886,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get logClearLogsMessage => 'Are you sure you want to clear all logs?'; - @override - String get logIspBlocking => 'ISP BLOCKING DETECTED'; - - @override - String get logRateLimited => 'RATE LIMITED'; - - @override - String get logNetworkError => 'NETWORK ERROR'; - - @override - String get logTrackNotFound => 'TRACK NOT FOUND'; - @override String get logFilterBySeverity => 'Filter logs by severity'; @@ -1408,48 +895,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get logNoLogsYetSubtitle => 'Logs will appear here as you use the app'; - @override - String get logIssueSummary => 'Issue Summary'; - - @override - String get logIspBlockingDescription => - 'Your ISP may be blocking access to download services'; - - @override - String get logIspBlockingSuggestion => - 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; - - @override - String get logRateLimitedDescription => 'Too many requests to the service'; - - @override - String get logRateLimitedSuggestion => - 'Wait a few minutes before trying again'; - - @override - String get logNetworkErrorDescription => 'Connection issues detected'; - - @override - String get logNetworkErrorSuggestion => 'Check your internet connection'; - - @override - String get logTrackNotFoundDescription => - 'Some tracks could not be found on download services'; - - @override - String get logTrackNotFoundSuggestion => - 'The track may not be available in lossless quality'; - - @override - String logTotalErrors(int count) { - return 'Total errors: $count'; - } - - @override - String logAffected(String domains) { - return 'Affected: $domains'; - } - @override String logEntriesFiltered(int count) { return 'Entries ($count filtered)'; @@ -1556,9 +1001,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get appearanceLanguage => 'App Language'; - @override - String get appearanceLanguageSubtitle => 'Choose your preferred language'; - @override String get settingsAppearanceSubtitle => 'Theme, colors, display'; @@ -1580,19 +1022,11 @@ class AppLocalizationsEs extends AppLocalizations { @override String get pressBackAgainToExit => 'Press back again to exit'; - @override - String get tracksHeader => 'Tracks'; - @override String downloadAllCount(int count) { return 'Download All ($count)'; } - @override - String playAllCount(int count) { - return 'Play All ($count)'; - } - @override String tracksCount(int count) { String _temp0 = intl.Intl.pluralLogic( @@ -1701,11 +1135,6 @@ class AppLocalizationsEs extends AppLocalizations { String get trackDeleteConfirmMessage => 'This will permanently delete the downloaded file and remove it from your history.'; - @override - String trackCannotOpen(String message) { - return 'Cannot open: $message'; - } - @override String get dateToday => 'Today'; @@ -1727,18 +1156,6 @@ class AppLocalizationsEs extends AppLocalizations { return '$count months ago'; } - @override - String get concurrentSequential => 'Sequential'; - - @override - String get concurrentParallel2 => '2 Parallel'; - - @override - String get concurrentParallel3 => '3 Parallel'; - - @override - String get tapToSeeError => 'Tap to see error details'; - @override String get storeFilterAll => 'All'; @@ -1760,15 +1177,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get storeClearFilters => 'Clear filters'; - @override - String get storeNoResults => 'No extensions found'; - - @override - String get extensionProviderPriority => 'Provider Priority'; - - @override - String get extensionInstallButton => 'Install Extension'; - @override String get extensionDefaultProvider => 'Default (Deezer/Spotify)'; @@ -1919,38 +1327,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get qualityHiResFlacMaxSubtitle => '24-bit / up to 192kHz'; - @override - String get qualityLossy => 'Lossy'; - - @override - String get qualityLossyMp3Subtitle => 'MP3 320kbps (converted from FLAC)'; - - @override - String get qualityLossyOpusSubtitle => 'Opus 128kbps (converted from FLAC)'; - - @override - String get enableLossyOption => 'Enable Lossy Option'; - - @override - String get enableLossyOptionSubtitleOn => 'Lossy quality option is available'; - - @override - String get enableLossyOptionSubtitleOff => - 'Downloads FLAC then converts to lossy format'; - - @override - String get lossyFormat => 'Lossy Format'; - - @override - String get lossyFormatDescription => 'Choose the lossy format for conversion'; - - @override - String get lossyFormatMp3Subtitle => '320kbps, best compatibility'; - - @override - String get lossyFormatOpusSubtitle => - '128kbps, better quality at smaller size'; - @override String get qualityNote => 'Actual quality depends on track availability from the service'; @@ -1965,24 +1341,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get youtubeMp3BitrateTitle => 'YouTube MP3 Bitrate'; - @override - String youtubeBitrateSubtitle(int bitrate, int min, int max) { - return '${bitrate}kbps ($min-$max)'; - } - - @override - String youtubeBitrateInputHelp(int min, int max) { - return 'Enter custom bitrate ($min-$max kbps)'; - } - - @override - String get youtubeBitrateFieldLabel => 'Bitrate (kbps)'; - - @override - String youtubeBitrateValidationError(int min, int max) { - return 'Bitrate must be between $min and $max kbps'; - } - @override String get downloadAskBeforeDownload => 'Ask Before Download'; @@ -1998,14 +1356,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get downloadUseAlbumArtistForFolders => 'Use Album Artist for folders'; - @override - String get downloadUseAlbumArtistForFoldersAlbumSubtitle => - 'Artist folders use Album Artist when available'; - - @override - String get downloadUseAlbumArtistForFoldersTrackSubtitle => - 'Artist folders use Track Artist only'; - @override String get downloadUsePrimaryArtistOnly => 'Primary artist only for folders'; @@ -2017,78 +1367,18 @@ class AppLocalizationsEs extends AppLocalizations { String get downloadUsePrimaryArtistOnlyDisabled => 'Full artist string used for folder name'; - @override - String get downloadSaveFormat => 'Save Format'; - - @override - String get downloadSelectService => 'Select Service'; - @override String get downloadSelectQuality => 'Select Quality'; @override String get downloadFrom => 'Download From'; - @override - String get downloadDefaultQualityLabel => 'Default Quality'; - - @override - String get downloadBestAvailable => 'Best available'; - - @override - String get folderNone => 'None'; - - @override - String get folderNoneSubtitle => 'Save all files directly to download folder'; - - @override - String get folderArtist => 'Artist'; - - @override - String get folderArtistSubtitle => 'Artist Name/filename'; - - @override - String get folderAlbum => 'Album'; - - @override - String get folderAlbumSubtitle => 'Album Name/filename'; - - @override - String get folderArtistAlbum => 'Artist/Album'; - - @override - String get folderArtistAlbumSubtitle => 'Artist Name/Album Name/filename'; - - @override - String get serviceTidal => 'Tidal'; - - @override - String get serviceQobuz => 'Qobuz'; - - @override - String get serviceAmazon => 'Amazon'; - - @override - String get serviceDeezer => 'Deezer'; - - @override - String get serviceSpotify => 'Spotify'; - @override String get appearanceAmoledDark => 'AMOLED Dark'; @override String get appearanceAmoledDarkSubtitle => 'Pure black background'; - @override - String get appearanceChooseAccentColor => 'Choose Accent Color'; - - @override - String get appearanceChooseTheme => 'Theme Mode'; - - @override - String get queueTitle => 'Download Queue'; - @override String get queueClearAll => 'Clear All'; @@ -2096,19 +1386,6 @@ class AppLocalizationsEs extends AppLocalizations { String get queueClearAllMessage => 'Are you sure you want to clear all downloads?'; - @override - String get queueExportFailed => 'Export'; - - @override - String get queueExportFailedSuccess => - 'Failed downloads exported to TXT file'; - - @override - String get queueExportFailedClear => 'Clear Failed'; - - @override - String get queueExportFailedError => 'Failed to export downloads'; - @override String get settingsAutoExportFailed => 'Auto-export failed downloads'; @@ -2129,30 +1406,6 @@ class AppLocalizationsEs extends AppLocalizations { String get settingsDownloadNetworkSubtitle => 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; - @override - String get queueEmpty => 'No downloads in queue'; - - @override - String get queueEmptySubtitle => 'Add tracks from the home screen'; - - @override - String get queueClearCompleted => 'Clear completed'; - - @override - String get queueDownloadFailed => 'Download Failed'; - - @override - String get queueTrackLabel => 'Track:'; - - @override - String get queueArtistLabel => 'Artist:'; - - @override - String get queueErrorLabel => 'Error:'; - - @override - String get queueUnknownError => 'Unknown error'; - @override String get albumFolderArtistAlbum => 'Artist / Album'; @@ -2199,14 +1452,6 @@ class AppLocalizationsEs extends AppLocalizations { return 'Delete $count $_temp0 from this album?\n\nThis will also delete the files from storage.'; } - @override - String get downloadedAlbumTracksHeader => 'Tracks'; - - @override - String downloadedAlbumDownloadedCount(int count) { - return '$count downloaded'; - } - @override String downloadedAlbumSelectedCount(int count) { return '$count selected'; @@ -2237,9 +1482,6 @@ class AppLocalizationsEs extends AppLocalizations { return 'Disc $discNumber'; } - @override - String get utilityFunctions => 'Utility Functions'; - @override String get recentTypeArtist => 'Artist'; @@ -2263,23 +1505,12 @@ class AppLocalizationsEs extends AppLocalizations { return 'Playlist: $name'; } - @override - String errorGeneric(String message) { - return 'Error: $message'; - } - @override String get discographyDownload => 'Download Discography'; - @override - String get discographyPlay => 'Play Discography'; - @override String get discographyDownloadAll => 'Download All'; - @override - String get discographyPlayAll => 'Play All'; - @override String discographyDownloadAllSubtitle(int count, int albumCount) { return '$count tracks from $albumCount releases'; @@ -2324,9 +1555,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get discographyDownloadSelected => 'Download Selected'; - @override - String get discographyPlaySelected => 'Play Selected'; - @override String discographyAddedToQueue(int count) { return 'Added $count tracks to queue'; @@ -2382,9 +1610,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get libraryTitle => 'Local Library'; - @override - String get libraryStatus => 'Library Status'; - @override String get libraryScanSettings => 'Scan Settings'; @@ -2447,11 +1672,6 @@ class AppLocalizationsEs extends AppLocalizations { String get libraryAboutDescription => 'Scans your existing music collection to detect duplicates when downloading. Supports FLAC, M4A, MP3, Opus, and OGG formats. Metadata is read from file tags when available.'; - @override - String libraryTracksCount(int count) { - return '$count tracks'; - } - @override String libraryTracksUnit(int count) { String _temp0 = intl.Intl.pluralLogic( @@ -2542,21 +1762,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get libraryFilterFormat => 'Format'; - @override - String get libraryFilterDate => 'Date Added'; - - @override - String get libraryFilterDateToday => 'Today'; - - @override - String get libraryFilterDateWeek => 'This Week'; - - @override - String get libraryFilterDateMonth => 'This Month'; - - @override - String get libraryFilterDateYear => 'This Year'; - @override String get libraryFilterSort => 'Sort'; @@ -2566,11 +1771,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get libraryFilterSortOldest => 'Oldest'; - @override - String libraryFilterActive(int count) { - return '$count filter(s) active'; - } - @override String get timeJustNow => 'Just now'; @@ -2596,72 +1796,6 @@ class AppLocalizationsEs extends AppLocalizations { return '$_temp0'; } - @override - String get storageSwitchTitle => 'Switch Storage Mode'; - - @override - String get storageSwitchToSafTitle => 'Switch to SAF Storage?'; - - @override - String get storageSwitchToAppTitle => 'Switch to App Storage?'; - - @override - String get storageSwitchToSafMessage => - 'Your existing downloads will remain in the current location and stay accessible.\n\nNew downloads will be saved to your selected SAF folder.'; - - @override - String get storageSwitchToAppMessage => - 'Your existing downloads will remain in the current SAF location and stay accessible.\n\nNew downloads will be saved to Music/SpotiFLAC folder.'; - - @override - String get storageSwitchExistingDownloads => 'Existing Downloads'; - - @override - String storageSwitchExistingDownloadsInfo(int count, String mode) { - return '$count tracks in $mode storage'; - } - - @override - String get storageSwitchNewDownloads => 'New Downloads'; - - @override - String storageSwitchNewDownloadsLocation(String location) { - return 'Will be saved to: $location'; - } - - @override - String get storageSwitchContinue => 'Continue'; - - @override - String get storageSwitchSelectFolder => 'Select SAF Folder'; - - @override - String get storageAppStorage => 'App Storage'; - - @override - String get storageSafStorage => 'SAF Storage'; - - @override - String storageModeBadge(String mode) { - return 'Storage: $mode'; - } - - @override - String get storageStatsTitle => 'Storage Statistics'; - - @override - String storageStatsAppCount(int count) { - return '$count tracks in App Storage'; - } - - @override - String storageStatsSafCount(int count) { - return '$count tracks in SAF Storage'; - } - - @override - String get storageModeInfo => 'Your files are stored in multiple locations'; - @override String get tutorialWelcomeTitle => 'Welcome to SpotiFLAC!'; @@ -2688,18 +1822,6 @@ class AppLocalizationsEs extends AppLocalizations { String get tutorialSearchDesc => 'There are two easy ways to find music you want to download.'; - @override - String get tutorialSearchTip1 => - 'Paste a Spotify or Deezer URL directly in the search box'; - - @override - String get tutorialSearchTip2 => - 'Or type the song name, artist, or album to search'; - - @override - String get tutorialSearchTip3 => - 'Supports tracks, albums, playlists, and artist pages'; - @override String get tutorialDownloadTitle => 'Downloading Music'; @@ -2707,18 +1829,6 @@ class AppLocalizationsEs extends AppLocalizations { String get tutorialDownloadDesc => 'Downloading music is simple and fast. Here\'s how it works.'; - @override - String get tutorialDownloadTip1 => - 'Tap the download button next to any track to start downloading'; - - @override - String get tutorialDownloadTip2 => - 'Choose your preferred quality (FLAC, Hi-Res, or MP3)'; - - @override - String get tutorialDownloadTip3 => - 'Download entire albums or playlists with one tap'; - @override String get tutorialLibraryTitle => 'Your Library'; @@ -2779,9 +1889,6 @@ class AppLocalizationsEs extends AppLocalizations { String get tutorialReadyMessage => 'You\'re all set! Start downloading your favorite music now.'; - @override - String get tutorialExample => 'EXAMPLE'; - @override String get libraryForceFullScan => 'Force Full Scan'; @@ -2944,10 +2051,6 @@ class AppLocalizationsEs extends AppLocalizations { @override String get trackReEnrich => 'Re-enrich'; - @override - String get trackReEnrichSubtitle => - 'Re-embed metadata without re-downloading'; - @override String get trackReEnrichOnlineSubtitle => 'Search metadata online and embed into file'; @@ -3228,45 +2331,17 @@ class AppLocalizationsEs extends AppLocalizations { } @override - String get setupModeSelectionTitle => 'Elige tu modo'; + String downloadedAlbumDownloadedCount(int count) { + return '$count downloaded'; + } @override - String get setupModeSelectionDescription => - '¿Cómo te gustaría usar SpotiFLAC? Puedes cambiarlo más tarde en Ajustes.'; + String get downloadUseAlbumArtistForFoldersAlbumSubtitle => + 'Artist folders use Album Artist when available'; @override - String get setupModeDownloaderTitle => 'Descargador'; - - @override - String get setupModeDownloaderFeature1 => - 'Descarga pistas en calidad FLAC sin pérdida'; - - @override - String get setupModeDownloaderFeature2 => - 'Guarda música en tu dispositivo para escuchar sin conexión'; - - @override - String get setupModeDownloaderFeature3 => - 'Gestiona tu biblioteca de música local'; - - @override - String get setupModeStreamingTitle => 'Streaming'; - - @override - String get setupModeStreamingFeature1 => - 'Transmite pistas al instante sin descargar'; - - @override - String get setupModeStreamingFeature2 => - 'Smart Queue descubre automáticamente nueva música para ti'; - - @override - String get setupModeStreamingFeature3 => - 'Reproduce cualquier pista bajo demanda con controles de reproducción'; - - @override - String get setupModeChangeableLater => - 'Puedes cambiar entre modos en cualquier momento en Ajustes.'; + String get downloadUseAlbumArtistForFoldersTrackSubtitle => + 'Artist folders use Track Artist only'; } /// The translations for Spanish Castilian, as used in Spain (`es_ES`). @@ -3276,19 +2351,12 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get appName => 'SpotiFLAC'; - @override - String get appDescription => - 'Descargue pistas de Spotify con calidad sin pérdida de Tidal, Qobuz y Amazon Music.'; - @override String get navHome => 'Inicio'; @override String get navLibrary => 'Biblioteca'; - @override - String get navHistory => 'Historial'; - @override String get navSettings => 'Ajustes'; @@ -3298,14 +2366,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get homeTitle => 'Inicio'; - @override - String get homeSearchHint => 'Pegar URL Spotify o buscar...'; - - @override - String homeSearchHintExtension(String extensionName) { - return 'Buscar con $extensionName...'; - } - @override String get homeSubtitle => 'Pegar enlace de Spotify o buscar por nombre'; @@ -3316,17 +2376,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get homeRecent => 'Recientes'; - @override - String get historyTitle => 'Historial'; - - @override - String historyDownloading(int count) { - return 'Descargando ($count)'; - } - - @override - String get historyDownloaded => 'Descargado'; - @override String get historyFilterAll => 'Todo'; @@ -3336,49 +2385,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get historyFilterSingles => 'Pistas'; - @override - String historyTracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count pistas', - one: '1 pista', - ); - return '$_temp0'; - } - - @override - String historyAlbumsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count álbumes', - one: '1 álbum', - ); - return '$_temp0'; - } - - @override - String get historyNoDownloads => 'No hay historial de descargas'; - - @override - String get historyNoDownloadsSubtitle => - 'Las pistas descargadas aparecerán aquí'; - - @override - String get historyNoAlbums => 'No hay descargas de álbum'; - - @override - String get historyNoAlbumsSubtitle => - 'Descargar múltiples pistas de un álbum para verlas aquí'; - - @override - String get historyNoSingles => 'No hay descargas'; - - @override - String get historyNoSinglesSubtitle => - 'Las descargas de una sola pista aparecerán aquí'; - @override String get historySearchHint => 'Buscar en historial...'; @@ -3403,27 +2409,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get downloadTitle => 'Descargar'; - @override - String get downloadLocation => 'Ubicación de descarga'; - - @override - String get downloadLocationSubtitle => 'Elija dónde guardar los archivos'; - - @override - String get downloadLocationDefault => 'Ubicación predeterminada'; - - @override - String get downloadDefaultService => 'Servicio por defecto'; - - @override - String get downloadDefaultServiceSubtitle => 'Servicio usado para descargas'; - - @override - String get downloadDefaultQuality => 'Calidad por defecto'; - - @override - String get downloadAskQuality => 'Preguntar calidad antes de descargar'; - @override String get downloadAskQualitySubtitle => 'Mostrar selector de calidad para cada descarga'; @@ -3434,31 +2419,9 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get downloadFolderOrganization => 'Organización de carpetas'; - @override - String get downloadSeparateSingles => 'Separar Pistas'; - - @override - String get downloadSeparateSinglesSubtitle => - 'Colocar pistas individuales en una carpeta separada'; - - @override - String get qualityBest => 'Mejor disponible'; - - @override - String get qualityFlac => 'FLAC'; - - @override - String get quality320 => '320 kbps'; - - @override - String get quality128 => '128 kbps'; - @override String get appearanceTitle => 'Apariencia'; - @override - String get appearanceTheme => 'Tema'; - @override String get appearanceThemeSystem => 'Sistema'; @@ -3475,9 +2438,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get appearanceDynamicColorSubtitle => 'Usar colores de tu fondo de pantalla'; - @override - String get appearanceAccentColor => 'Color Secundario'; - @override String get appearanceHistoryView => 'Vista de Historial'; @@ -3490,9 +2450,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get optionsTitle => 'Opciones'; - @override - String get optionsSearchSource => 'Buscar Fuente'; - @override String get optionsPrimaryProvider => 'Proveedor Principal'; @@ -3623,19 +2580,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get extensionsTitle => 'Extensiones'; - @override - String get extensionsInstalled => 'Extensiones instaladas'; - - @override - String get extensionsNone => 'No hay extensiones instaladas'; - - @override - String get extensionsNoneSubtitle => - 'Instalar extensiones desde la pestaña Tienda'; - - @override - String get extensionsEnabled => 'Habilitado'; - @override String get extensionsDisabled => 'Deshabilitado'; @@ -3652,9 +2596,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get extensionsUninstall => 'Desinstalar'; - @override - String get extensionsSetAsSearch => 'Establecer como proveedor de búsqueda'; - @override String get storeTitle => 'Tienda de extensiones'; @@ -3730,9 +2671,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get aboutSocial => 'Redes sociales'; - @override - String get aboutSupport => 'Soporte'; - @override String get aboutApp => 'Aplicación'; @@ -3751,13 +2689,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get aboutSjdonadoDesc => 'Creador de I No tengo Spotify (IDHS). ¡La solución de enlace de reserva que salva el día!'; - @override - String get aboutDoubleDouble => 'DoubleDouble'; - - @override - String get aboutDoubleDoubleDesc => - 'API increible para descargas de Amazon Music. ¡Gracias por hacerla gratis!'; - @override String get aboutDabMusic => 'Música DAB'; @@ -3776,32 +2707,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get aboutAppDescription => 'Descarga pistas de Spotify con calidad sin pérdida de Tidal, Qobuz y Amazon Music.'; - @override - String get albumTitle => 'Álbum'; - - @override - String albumTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count pistas', - one: '1 pista', - ); - return '$_temp0'; - } - - @override - String get albumDownloadAll => 'Descargar Todo'; - - @override - String get albumDownloadRemaining => 'Descargas Restantes'; - - @override - String get playlistTitle => 'Lista de reproducción'; - - @override - String get artistTitle => 'Artista'; - @override String get artistAlbums => 'Álbumes'; @@ -3811,17 +2716,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get artistCompilations => 'Compilaciones'; - @override - String artistReleases(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count lanzamientos', - one: '1 lanzamiento', - ); - return '$_temp0'; - } - @override String get artistPopular => 'Populares'; @@ -3830,27 +2724,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { return '$count oyentes mensuales'; } - @override - String get trackMetadataTitle => 'Información de pista'; - - @override - String get trackMetadataArtist => 'Artista'; - - @override - String get trackMetadataAlbum => 'Álbum'; - - @override - String get trackMetadataDuration => 'Duración'; - - @override - String get trackMetadataQuality => 'Calidad'; - - @override - String get trackMetadataPath => 'Ruta del archivo'; - - @override - String get trackMetadataDownloadedAt => 'Descargado'; - @override String get trackMetadataService => 'Servicio'; @@ -3863,53 +2736,15 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get trackMetadataDelete => 'Eliminar'; - @override - String get trackMetadataRedownload => 'Volver a descargar'; - - @override - String get trackMetadataOpenFolder => 'Abrir carpeta'; - - @override - String get setupTitle => 'Bienvenido a SpotiFLAC'; - - @override - String get setupSubtitle => 'Comencemos'; - - @override - String get setupStoragePermission => 'Permiso de almacenamiento'; - - @override - String get setupStoragePermissionSubtitle => - 'Necesario para guardar los archivos descargados'; - - @override - String get setupStoragePermissionGranted => 'Permiso aprobado'; - - @override - String get setupStoragePermissionDenied => 'Permiso denegado'; - @override String get setupGrantPermission => 'Conceder permiso'; - @override - String get setupDownloadLocation => 'Ubicación de descarga'; - - @override - String get setupChooseFolder => 'Seleccionar Carpeta'; - - @override - String get setupContinue => 'Continuar'; - @override String get setupSkip => 'Omitir por ahora'; @override String get setupStorageAccessRequired => 'Acceso al almacenamiento requerido'; - @override - String get setupStorageAccessMessage => - 'SpotiFLAC necesita permiso de \"Todos los archivos de acceso\" para guardar los archivos de música en la carpeta elegida.'; - @override String get setupStorageAccessMessageAndroid11 => 'Android 11+ requiere permiso \"Todos los archivos de acceso\" para guardar los archivos en la carpeta de descargas elegida.'; @@ -3931,9 +2766,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { return 'Se requiere un permiso $permissionType para la mejor experiencia. Puedes cambiar esto más tarde en ajustes.'; } - @override - String get setupSelectDownloadFolder => 'Seleccionar carpeta de descarga'; - @override String get setupUseDefaultFolder => '¿Usar carpeta por defecto?'; @@ -3976,21 +2808,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get setupDownloadInFlac => 'Descargar pistas de Spotify en FLAC'; - @override - String get setupStepStorage => 'Almacenamiento'; - - @override - String get setupStepNotification => 'Notificación'; - - @override - String get setupStepFolder => 'Carpeta'; - - @override - String get setupStepSpotify => 'Spotify'; - - @override - String get setupStepPermission => 'Permiso'; - @override String get setupStorageGranted => '¡Permiso de almacenamiento concedido!'; @@ -4008,13 +2825,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get setupNotificationEnable => 'Activar notificaciones'; - @override - String get setupNotificationDescription => - 'Recibe notificaciones cuando las descargas completen o requieran atención.'; - - @override - String get setupFolderSelected => '¡Carpeta de descarga seleccionada!'; - @override String get setupFolderChoose => 'Cambiar carpeta de descargas'; @@ -4022,50 +2832,12 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get setupFolderDescription => 'Seleccione una carpeta donde se guardará la música descargada.'; - @override - String get setupChangeFolder => 'Cambiar carpeta'; - @override String get setupSelectFolder => 'Seleccionar Carpeta'; - @override - String get setupSpotifyApiOptional => 'API de Spotify (opcional)'; - - @override - String get setupSpotifyApiDescription => - 'Añade tus credenciales de la API de Spotify para mejores resultados de búsqueda y acceso al contenido exclusivo de Spotify.'; - - @override - String get setupUseSpotifyApi => 'Usar API de Spotify'; - - @override - String get setupEnterCredentialsBelow => - 'Ingresa tus credenciales a continuación'; - - @override - String get setupUsingDeezer => 'Usando Deezer (no se necesita cuenta)'; - - @override - String get setupEnterClientId => 'Introduzca el ID de cliente de Spotify'; - - @override - String get setupEnterClientSecret => 'Ingresa el Client Secret de Spotify'; - - @override - String get setupGetFreeCredentials => - 'Obtén tus credenciales gratuitas de la API desde el Spotify Developer Dashboard.'; - @override String get setupEnableNotifications => 'Activar notificaciones'; - @override - String get setupProceedToNextStep => - 'Ahora puedes continuar con el siguiente paso.'; - - @override - String get setupNotificationProgressDescription => - 'Recibirás notificaciones de progreso de descargas.'; - @override String get setupNotificationBackgroundDescription => 'Recibe notificaciones sobre el progreso de la descarga y la finalización. Esto te ayuda a rastrear las descargas cuando la aplicación está en segundo plano.'; @@ -4073,32 +2845,19 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get setupSkipForNow => 'Omitir por ahora'; - @override - String get setupBack => 'Atrás'; - @override String get setupNext => 'Siguiente'; @override String get setupGetStarted => 'Empezar'; - @override - String get setupSkipAndStart => 'Saltar y empezar'; - @override String get setupAllowAccessToManageFiles => 'Por favor, activa \"Permitir el acceso para gestionar todos los archivos\" en la siguiente pantalla.'; - @override - String get setupGetCredentialsFromSpotify => - 'Obtener credenciales de developer.spotify.com'; - @override String get dialogCancel => 'Cancelar'; - @override - String get dialogOk => 'Aceptar'; - @override String get dialogSave => 'Guardar'; @@ -4108,21 +2867,9 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get dialogRetry => 'Volver a intentar'; - @override - String get dialogClose => 'Cerrar'; - - @override - String get dialogYes => 'Sí'; - - @override - String get dialogNo => 'No'; - @override String get dialogClear => 'Borrar'; - @override - String get dialogConfirm => 'Confirmar'; - @override String get dialogDone => 'Hecho'; @@ -4145,28 +2892,9 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get dialogUnsavedChanges => 'Tienes cambios sin guardar. ¿Quieres descartarlos?'; - @override - String get dialogDownloadFailed => 'Descarga fallida'; - - @override - String get dialogTrackLabel => 'Pista:'; - - @override - String get dialogArtistLabel => 'Artista:'; - - @override - String get dialogErrorLabel => 'Error:'; - @override String get dialogClearAll => 'Eliminar todo'; - @override - String get dialogClearAllDownloads => - '¿Estás seguro de que quieres borrar todas las descargas?'; - - @override - String get dialogRemoveFromDevice => '¿Eliminar del dispositivo?'; - @override String get dialogRemoveExtension => 'Eliminar extensión'; @@ -4267,11 +2995,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get snackbarViewQueue => 'Ver cola'; - @override - String snackbarFailedToLoad(String error) { - return 'Error al cargar: $error'; - } - @override String snackbarUrlCopied(String platform) { return 'URL $platform copiada al portapapeles'; @@ -4314,11 +3037,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get errorRateLimitedMessage => 'Demasiadas solicitudes. Por favor, espere un momento antes de buscar de nuevo.'; - @override - String errorFailedToLoad(String item) { - return 'Error al cargar $item'; - } - @override String get errorNoTracksFound => 'No se encontraron pistas'; @@ -4327,27 +3045,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { return 'No se puede cargar $item: falta una fuente de extensión'; } - @override - String get statusQueued => 'En cola'; - - @override - String get statusDownloading => 'Descargando'; - - @override - String get statusFinalizing => 'Finalizando'; - - @override - String get statusCompleted => 'Completado'; - - @override - String get statusFailed => 'Error'; - - @override - String get statusSkipped => 'Omitido'; - - @override - String get statusPaused => 'Pausado'; - @override String get actionPause => 'Pausar'; @@ -4357,24 +3054,12 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get actionCancel => 'Cancelar'; - @override - String get actionStop => 'Detener'; - - @override - String get actionSelect => 'Seleccionar'; - @override String get actionSelectAll => 'Seleccionar Todo'; @override String get actionDeselect => 'Deseleccionar'; - @override - String get actionPaste => 'Pegar'; - - @override - String get actionImportCsv => 'Importar CSV'; - @override String get actionRemoveCredentials => 'Eliminar credenciales'; @@ -4389,20 +3074,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get selectionAllSelected => 'Todas las pistas seleccionadas'; - @override - String get selectionTapToSelect => 'Toca las pistas para seleccionar'; - - @override - String selectionDeleteTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'pistas', - one: 'pista', - ); - return '¡Eliminar $count $_temp0'; - } - @override String get selectionSelectToDelete => 'Seleccionar pistas a eliminar'; @@ -4429,43 +3100,9 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get tooltipPlay => 'Reproducir'; - @override - String get tooltipCancel => 'Cancelar'; - - @override - String get tooltipStop => 'Detener'; - - @override - String get tooltipRetry => 'Volver a intentar'; - - @override - String get tooltipRemove => 'Eliminar'; - - @override - String get tooltipClear => 'Borrar'; - - @override - String get tooltipPaste => 'Pegar'; - @override String get filenameFormat => 'Formato del nombre del archivo'; - @override - String filenameFormatPreview(String preview) { - return 'Vista previa: $preview'; - } - - @override - String get filenameAvailablePlaceholders => 'Marcadores disponibles:'; - - @override - String filenameHint(Object artist, Object title) { - return '$artist - $title'; - } - - @override - String get folderOrganization => 'Organización de carpetas'; - @override String get folderOrganizationNone => 'Ninguna organización'; @@ -4501,20 +3138,9 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get updateAvailable => 'Actualización Disponible'; - @override - String updateNewVersion(String version) { - return 'Versión $version está disponible'; - } - - @override - String get updateDownload => 'Descargar'; - @override String get updateLater => 'Más tarde'; - @override - String get updateChangelog => 'Historial de cambios'; - @override String get updateStartingDownload => 'Iniciando descarga...'; @@ -4545,13 +3171,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get updateDontRemind => 'No recordar'; - @override - String get providerPriority => 'Prioridad del proveedor'; - - @override - String get providerPrioritySubtitle => - 'Arrastre para reordenar los proveedores de descarga'; - @override String get providerPriorityTitle => 'Prioridad del proveedor'; @@ -4569,13 +3188,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get providerExtension => 'Extensión'; - @override - String get metadataProviderPriority => 'Prioridad del proveedor de metadatos'; - - @override - String get metadataProviderPrioritySubtitle => - 'Orden usado al recuperar metadatos de la pista'; - @override String get metadataProviderPriorityTitle => 'Prioridad de los metadatos'; @@ -4596,18 +3208,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get logTitle => 'Registros'; - @override - String get logCopy => 'Copiar Registros'; - - @override - String get logClear => 'Limpiar registros'; - - @override - String get logShare => 'Compartir Registros'; - - @override - String get logEmpty => 'No hay registros aún'; - @override String get logCopied => 'Registros copiados al portapapeles'; @@ -4633,18 +3233,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get logClearLogsMessage => '¿Estás seguro que deseas limpiar todos los registros?'; - @override - String get logIspBlocking => 'BLOQUEO POR EL ISP DETECTADO'; - - @override - String get logRateLimited => 'TASA LIMITADA'; - - @override - String get logNetworkError => 'ERROR DE RED'; - - @override - String get logTrackNotFound => 'PISTA NO ENCONTRADA'; - @override String get logFilterBySeverity => 'Filtrar los registros por gravedad'; @@ -4655,48 +3243,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get logNoLogsYetSubtitle => 'Los registros aparecerán aquí mientras usas la aplicación'; - @override - String get logIssueSummary => 'Resumen de Incidencias'; - - @override - String get logIspBlockingDescription => - 'Tu ISP puede estar bloqueando el acceso a los servicios de descarga'; - - @override - String get logIspBlockingSuggestion => - 'Intente usar una VPN o cambie el DNS a 1.1.1.1 o 8.8.8.8'; - - @override - String get logRateLimitedDescription => 'Demasiadas solicitudes al servicio'; - - @override - String get logRateLimitedSuggestion => - 'Espere unos minutos antes de volver a intentarlo'; - - @override - String get logNetworkErrorDescription => 'Problemas de conexión detectados'; - - @override - String get logNetworkErrorSuggestion => 'Comprueba tu conexión a internet'; - - @override - String get logTrackNotFoundDescription => - 'No se pudieron encontrar algunas pistas en los servicios de descarga'; - - @override - String get logTrackNotFoundSuggestion => - 'La pista puede no estar disponible en calidad sin pérdida'; - - @override - String logTotalErrors(int count) { - return 'Total de errores: $count'; - } - - @override - String logAffected(String domains) { - return 'Afectado: $domains'; - } - @override String logEntriesFiltered(int count) { return 'Entradas ($count filtradas)'; @@ -4804,9 +3350,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get appearanceLanguage => 'Idioma de la aplicación'; - @override - String get appearanceLanguageSubtitle => 'Elija su idioma preferido'; - @override String get settingsAppearanceSubtitle => 'Tema, colores, pantalla'; @@ -4832,9 +3375,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get pressBackAgainToExit => 'Presione de nuevo para salir'; - @override - String get tracksHeader => 'Pistas'; - @override String downloadAllCount(int count) { return 'Descargar Todo ($count)'; @@ -4949,11 +3489,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get trackDeleteConfirmMessage => 'Esto eliminará permanentemente el archivo descargado y lo eliminará de tu historial.'; - @override - String trackCannotOpen(String message) { - return 'No se puede abrir: $message'; - } - @override String get dateToday => 'Hoy'; @@ -4975,18 +3510,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { return '$count meses atrás'; } - @override - String get concurrentSequential => 'Secuencial'; - - @override - String get concurrentParallel2 => '2 simultáneamente'; - - @override - String get concurrentParallel3 => '3 simultáneamente'; - - @override - String get tapToSeeError => 'Pulse para ver los detalles del error'; - @override String get storeFilterAll => 'Todo'; @@ -5008,15 +3531,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get storeClearFilters => 'Limpiar filtros'; - @override - String get storeNoResults => 'No se encontraron extensiones'; - - @override - String get extensionProviderPriority => 'Prioridad del proveedor'; - - @override - String get extensionInstallButton => 'Instalar extensión'; - @override String get extensionDefaultProvider => 'Por defecto (Deezer/Spotify)'; @@ -5170,39 +3684,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get qualityHiResFlacMaxSubtitle => '24 bits / hasta 192kHz'; - @override - String get qualityLossy => 'Con pérdidas'; - - @override - String get qualityLossyMp3Subtitle => 'MP3 320kbps (convertido desde FLAC)'; - - @override - String get qualityLossyOpusSubtitle => 'Opus 128kbps (convertido de FLAC)'; - - @override - String get enableLossyOption => 'Habilitar opción con pérdida'; - - @override - String get enableLossyOptionSubtitleOn => - 'La opción de calidad con pérdida está disponible'; - - @override - String get enableLossyOptionSubtitleOff => - 'Descargas FLAC y luego se convierten en formato con pérdida'; - - @override - String get lossyFormat => 'Formato con Perdido'; - - @override - String get lossyFormatDescription => - 'Elegir el formato con pérdida para la conversión'; - - @override - String get lossyFormatMp3Subtitle => '320kbps, mejor compatibilidad'; - - @override - String get lossyFormatOpusSubtitle => '128kbps, mejor calidad a menor tamaño'; - @override String get qualityNote => 'La calidad real depende de la disponibilidad de la pista del servicio'; @@ -5226,14 +3707,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get downloadUseAlbumArtistForFolders => 'Use Album Artist for folders'; - @override - String get downloadUseAlbumArtistForFoldersAlbumSubtitle => - 'Artist folders use Album Artist when available'; - - @override - String get downloadUseAlbumArtistForFoldersTrackSubtitle => - 'Artist folders use Track Artist only'; - @override String get downloadUsePrimaryArtistOnly => 'Primary artist only for folders'; @@ -5245,80 +3718,18 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get downloadUsePrimaryArtistOnlyDisabled => 'Full artist string used for folder name'; - @override - String get downloadSaveFormat => 'Guardar Formato'; - - @override - String get downloadSelectService => 'Seleccionar Servicio'; - @override String get downloadSelectQuality => 'Seleccionar Calidad'; @override String get downloadFrom => 'Descargar Desde'; - @override - String get downloadDefaultQualityLabel => 'Calidad por Defecto'; - - @override - String get downloadBestAvailable => 'La mejor disponible'; - - @override - String get folderNone => 'Ninguna'; - - @override - String get folderNoneSubtitle => - 'Guardar todos los archivos directamente para descargar la carpeta'; - - @override - String get folderArtist => 'Artista'; - - @override - String get folderArtistSubtitle => 'Nombre del Artista/nombre de archivo'; - - @override - String get folderAlbum => 'Álbum'; - - @override - String get folderAlbumSubtitle => 'Nombre del álbum/nombre de archivo'; - - @override - String get folderArtistAlbum => 'Artista/Álbum'; - - @override - String get folderArtistAlbumSubtitle => - 'Nombre del Artista/Nombre del Álbum/Nombre del Archivo'; - - @override - String get serviceTidal => 'Tidal'; - - @override - String get serviceQobuz => 'Qobuz'; - - @override - String get serviceAmazon => 'Amazon'; - - @override - String get serviceDeezer => 'Deezer'; - - @override - String get serviceSpotify => 'Spotify'; - @override String get appearanceAmoledDark => 'AMOLED Oscuro'; @override String get appearanceAmoledDarkSubtitle => 'Fondo negro puro'; - @override - String get appearanceChooseAccentColor => 'Elegir color principal'; - - @override - String get appearanceChooseTheme => 'Modo de tema'; - - @override - String get queueTitle => 'Descargas en proceso'; - @override String get queueClearAll => 'Eliminar todo'; @@ -5326,19 +3737,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get queueClearAllMessage => '¿Estás seguro de que quieres borrar todas las descargas?'; - @override - String get queueExportFailed => 'Exportar'; - - @override - String get queueExportFailedSuccess => - 'Descarga fallida exportada al archivo TXT'; - - @override - String get queueExportFailedClear => 'Limpieza Fallida'; - - @override - String get queueExportFailedError => 'Error al exportar descargas'; - @override String get settingsAutoExportFailed => 'Autoexportar descargas fallidas'; @@ -5359,30 +3757,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get settingsDownloadNetworkSubtitle => 'Elegir qué red usar para descargas. Cuando se establece en WiFi solamente, las descargas se detendrán en los datos móviles.'; - @override - String get queueEmpty => 'No hay descargas en cola'; - - @override - String get queueEmptySubtitle => 'Añadir pistas desde la pantalla de inicio'; - - @override - String get queueClearCompleted => 'Limpiar tareas finalizadas'; - - @override - String get queueDownloadFailed => 'Descarga fallida'; - - @override - String get queueTrackLabel => 'Pista:'; - - @override - String get queueArtistLabel => 'Artista:'; - - @override - String get queueErrorLabel => 'Error:'; - - @override - String get queueUnknownError => 'Error desconocido'; - @override String get albumFolderArtistAlbum => 'Artista / Álbum'; @@ -5430,14 +3804,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { return '¿Eliminar $count $_temp0 del historial?\n\nEsto también eliminará los archivos del almacenamiento.'; } - @override - String get downloadedAlbumTracksHeader => 'Pistas'; - - @override - String downloadedAlbumDownloadedCount(int count) { - return '$count descargado'; - } - @override String downloadedAlbumSelectedCount(int count) { return '$count seleccionado'; @@ -5468,9 +3834,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { return 'Disco $discNumber'; } - @override - String get utilityFunctions => 'Funciones de utilidad'; - @override String get recentTypeArtist => 'Artista'; @@ -5494,11 +3857,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { return 'Lista de reproducción: $name'; } - @override - String errorGeneric(String message) { - return 'Error: $message'; - } - @override String get discographyDownload => 'Descargar Discografía'; @@ -5604,9 +3962,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get libraryTitle => 'Local Library'; - @override - String get libraryStatus => 'Library Status'; - @override String get libraryScanSettings => 'Scan Settings'; @@ -5669,11 +4024,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get libraryAboutDescription => 'Scans your existing music collection to detect duplicates when downloading. Supports FLAC, M4A, MP3, Opus, and OGG formats. Metadata is read from file tags when available.'; - @override - String libraryTracksCount(int count) { - return '$count tracks'; - } - @override String libraryLastScanned(String time) { return 'Last scanned: $time'; @@ -5753,21 +4103,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get libraryFilterFormat => 'Format'; - @override - String get libraryFilterDate => 'Date Added'; - - @override - String get libraryFilterDateToday => 'Today'; - - @override - String get libraryFilterDateWeek => 'This Week'; - - @override - String get libraryFilterDateMonth => 'This Month'; - - @override - String get libraryFilterDateYear => 'This Year'; - @override String get libraryFilterSort => 'Sort'; @@ -5777,11 +4112,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get libraryFilterSortOldest => 'Oldest'; - @override - String libraryFilterActive(int count) { - return '$count filter(s) active'; - } - @override String get timeJustNow => 'Just now'; @@ -5807,72 +4137,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { return '$_temp0'; } - @override - String get storageSwitchTitle => 'Switch Storage Mode'; - - @override - String get storageSwitchToSafTitle => 'Switch to SAF Storage?'; - - @override - String get storageSwitchToAppTitle => 'Switch to App Storage?'; - - @override - String get storageSwitchToSafMessage => - 'Your existing downloads will remain in the current location and stay accessible.\n\nNew downloads will be saved to your selected SAF folder.'; - - @override - String get storageSwitchToAppMessage => - 'Your existing downloads will remain in the current SAF location and stay accessible.\n\nNew downloads will be saved to Music/SpotiFLAC folder.'; - - @override - String get storageSwitchExistingDownloads => 'Existing Downloads'; - - @override - String storageSwitchExistingDownloadsInfo(int count, String mode) { - return '$count tracks in $mode storage'; - } - - @override - String get storageSwitchNewDownloads => 'New Downloads'; - - @override - String storageSwitchNewDownloadsLocation(String location) { - return 'Will be saved to: $location'; - } - - @override - String get storageSwitchContinue => 'Continue'; - - @override - String get storageSwitchSelectFolder => 'Select SAF Folder'; - - @override - String get storageAppStorage => 'App Storage'; - - @override - String get storageSafStorage => 'SAF Storage'; - - @override - String storageModeBadge(String mode) { - return 'Storage: $mode'; - } - - @override - String get storageStatsTitle => 'Storage Statistics'; - - @override - String storageStatsAppCount(int count) { - return '$count tracks in App Storage'; - } - - @override - String storageStatsSafCount(int count) { - return '$count tracks in SAF Storage'; - } - - @override - String get storageModeInfo => 'Your files are stored in multiple locations'; - @override String get tutorialWelcomeTitle => 'Welcome to SpotiFLAC!'; @@ -5899,18 +4163,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get tutorialSearchDesc => 'There are two easy ways to find music you want to download.'; - @override - String get tutorialSearchTip1 => - 'Paste a Spotify or Deezer URL directly in the search box'; - - @override - String get tutorialSearchTip2 => - 'Or type the song name, artist, or album to search'; - - @override - String get tutorialSearchTip3 => - 'Supports tracks, albums, playlists, and artist pages'; - @override String get tutorialDownloadTitle => 'Downloading Music'; @@ -5918,18 +4170,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get tutorialDownloadDesc => 'Downloading music is simple and fast. Here\'s how it works.'; - @override - String get tutorialDownloadTip1 => - 'Tap the download button next to any track to start downloading'; - - @override - String get tutorialDownloadTip2 => - 'Choose your preferred quality (FLAC, Hi-Res, or MP3)'; - - @override - String get tutorialDownloadTip3 => - 'Download entire albums or playlists with one tap'; - @override String get tutorialLibraryTitle => 'Your Library'; @@ -5990,9 +4230,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get tutorialReadyMessage => 'You\'re all set! Start downloading your favorite music now.'; - @override - String get tutorialExample => 'EXAMPLE'; - @override String get libraryForceFullScan => 'Force Full Scan'; @@ -6155,10 +4392,6 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get trackReEnrich => 'Re-enrich'; - @override - String get trackReEnrichSubtitle => - 'Re-embed metadata without re-downloading'; - @override String get trackReEnrichOnlineSubtitle => 'Search metadata online and embed into file'; @@ -6235,43 +4468,15 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get trackConvertFailed => 'Conversion failed'; @override - String get setupModeSelectionTitle => 'Elige tu modo'; + String downloadedAlbumDownloadedCount(int count) { + return '$count descargado'; + } @override - String get setupModeSelectionDescription => - '¿Cómo te gustaría usar SpotiFLAC? Puedes cambiarlo más tarde en Ajustes.'; + String get downloadUseAlbumArtistForFoldersAlbumSubtitle => + 'Artist folders use Album Artist when available'; @override - String get setupModeDownloaderTitle => 'Descargador'; - - @override - String get setupModeDownloaderFeature1 => - 'Descarga pistas en calidad FLAC sin pérdida'; - - @override - String get setupModeDownloaderFeature2 => - 'Guarda música en tu dispositivo para escuchar sin conexión'; - - @override - String get setupModeDownloaderFeature3 => - 'Gestiona tu biblioteca de música local'; - - @override - String get setupModeStreamingTitle => 'Streaming'; - - @override - String get setupModeStreamingFeature1 => - 'Transmite pistas al instante sin descargar'; - - @override - String get setupModeStreamingFeature2 => - 'Smart Queue descubre automáticamente nueva música para ti'; - - @override - String get setupModeStreamingFeature3 => - 'Reproduce cualquier pista bajo demanda con controles de reproducción'; - - @override - String get setupModeChangeableLater => - 'Puedes cambiar entre modos en cualquier momento en Ajustes.'; + String get downloadUseAlbumArtistForFoldersTrackSubtitle => + 'Artist folders use Track Artist only'; } diff --git a/lib/l10n/app_localizations_fr.dart b/lib/l10n/app_localizations_fr.dart index 8c5febcf..adf0d48d 100644 --- a/lib/l10n/app_localizations_fr.dart +++ b/lib/l10n/app_localizations_fr.dart @@ -11,19 +11,12 @@ class AppLocalizationsFr extends AppLocalizations { @override String get appName => 'SpotiFLAC'; - @override - String get appDescription => - 'Téléchargez des pistes Spotify en qualité sans perte de Tidal, Qobuz et Amazon Music.'; - @override String get navHome => 'Accueil'; @override String get navLibrary => 'Bibliothèques'; - @override - String get navHistory => 'Historique'; - @override String get navSettings => 'Paramètres'; @@ -33,14 +26,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get homeTitle => 'Accueil'; - @override - String get homeSearchHint => 'Coller l\'URL Spotify ou rechercher...'; - - @override - String homeSearchHintExtension(String extensionName) { - return 'Rechercher avec $extensionName...'; - } - @override String get homeSubtitle => 'Coller un lien Spotify ou rechercher par nom'; @@ -50,17 +35,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get homeRecent => 'Récent'; - @override - String get historyTitle => 'Historique'; - - @override - String historyDownloading(int count) { - return 'Téléchargement ($count)'; - } - - @override - String get historyDownloaded => 'Téléchargé'; - @override String get historyFilterAll => 'Tous'; @@ -70,49 +44,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get historyFilterSingles => 'Titres'; - @override - String historyTracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks', - one: '1 track', - ); - return '$_temp0'; - } - - @override - String historyAlbumsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count albums', - one: '1 album', - ); - return '$_temp0'; - } - - @override - String get historyNoDownloads => 'Pas d\'historique de téléchargement'; - - @override - String get historyNoDownloadsSubtitle => - 'Les pistes téléchargées apparaîtront ici'; - - @override - String get historyNoAlbums => 'Pas de téléchargement d\'album'; - - @override - String get historyNoAlbumsSubtitle => - 'Téléchargez plusieurs titres d\'un album pour les voir ici'; - - @override - String get historyNoSingles => 'Pas de téléchargements uniques'; - - @override - String get historyNoSinglesSubtitle => - 'Les téléchargements de pistes uniques apparaîtront ici'; - @override String get historySearchHint => 'Historique de recherche...'; @@ -137,30 +68,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get downloadTitle => 'Télécharger'; - @override - String get downloadLocation => 'Télécharger Localisation'; - - @override - String get downloadLocationSubtitle => - 'Choisissez où enregistrer des fichiers'; - - @override - String get downloadLocationDefault => 'Localisation par défaut'; - - @override - String get downloadDefaultService => 'Service par défaut'; - - @override - String get downloadDefaultServiceSubtitle => - 'Service utilisé pour les téléchargements'; - - @override - String get downloadDefaultQuality => 'Qualité par défaut'; - - @override - String get downloadAskQuality => - 'Demandez La Qualité Avant Le Téléchargement'; - @override String get downloadAskQualitySubtitle => 'Afficher le sélecteur de qualité pour chaque téléchargement'; @@ -171,31 +78,9 @@ class AppLocalizationsFr extends AppLocalizations { @override String get downloadFolderOrganization => 'Organisation du dossier'; - @override - String get downloadSeparateSingles => 'Titres séparés'; - - @override - String get downloadSeparateSinglesSubtitle => - 'Mettre des pistes uniques dans un dossier séparé'; - - @override - String get qualityBest => 'Meilleur Disponible'; - - @override - String get qualityFlac => 'FLAC'; - - @override - String get quality320 => '320 kbps'; - - @override - String get quality128 => '128 kbps'; - @override String get appearanceTitle => 'Apparence'; - @override - String get appearanceTheme => 'Thème'; - @override String get appearanceThemeSystem => 'Système'; @@ -212,9 +97,6 @@ class AppLocalizationsFr extends AppLocalizations { String get appearanceDynamicColorSubtitle => 'Utilisez les couleurs de votre fond d\'écran'; - @override - String get appearanceAccentColor => 'Couleur d\'accent'; - @override String get appearanceHistoryView => 'Historique Vue'; @@ -227,9 +109,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get optionsTitle => 'Options'; - @override - String get optionsSearchSource => 'Recherche Source'; - @override String get optionsPrimaryProvider => 'Fournisseur principal'; @@ -253,33 +132,6 @@ class AppLocalizationsFr extends AppLocalizations { String get optionsAutoFallbackSubtitle => 'Essayez d\'autres services si le téléchargement échoue'; - @override - String get optionsAutoSkipUnavailableTracks => 'Auto Skip Unavailable Tracks'; - - @override - String get optionsAutoSkipUnavailableTracksSubtitleOn => - 'Automatically skip to the next queue track when a stream cannot be resolved.'; - - @override - String get optionsAutoSkipUnavailableTracksSubtitleOff => - 'Stop on failed track resolution and show an error.'; - - @override - String get optionsInteractionMode => 'Interaction Mode'; - - @override - String get modeDownloader => 'Downloader Mode'; - - @override - String get modeDownloaderSubtitle => - 'Tap tracks to add them to download queue'; - - @override - String get modeStreaming => 'Streaming Mode'; - - @override - String get modeStreamingSubtitle => 'Tap tracks to play instantly'; - @override String get optionsUseExtensionProviders => 'Utiliser des fournisseurs d\'extension'; @@ -383,18 +235,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get extensionsTitle => 'Extensions'; - @override - String get extensionsInstalled => 'Installed Extensions'; - - @override - String get extensionsNone => 'No extensions installed'; - - @override - String get extensionsNoneSubtitle => 'Install extensions from the Store tab'; - - @override - String get extensionsEnabled => 'Enabled'; - @override String get extensionsDisabled => 'Disabled'; @@ -411,9 +251,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get extensionsUninstall => 'Désinstaller'; - @override - String get extensionsSetAsSearch => 'Défini comme fournisseur de recherche'; - @override String get storeTitle => 'Magasin d\'extension'; @@ -487,9 +324,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get aboutSocial => 'Social'; - @override - String get aboutSupport => 'Support'; - @override String get aboutApp => 'App'; @@ -508,13 +342,6 @@ class AppLocalizationsFr extends AppLocalizations { String get aboutSjdonadoDesc => 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; - @override - String get aboutDoubleDouble => 'DoubleDouble'; - - @override - String get aboutDoubleDoubleDesc => - 'Amazing API for Amazon Music downloads. Thank you for making it free!'; - @override String get aboutDabMusic => 'DAB Music'; @@ -533,32 +360,6 @@ class AppLocalizationsFr extends AppLocalizations { String get aboutAppDescription => 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; - @override - String get albumTitle => 'Album'; - - @override - String albumTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks', - one: '1 track', - ); - return '$_temp0'; - } - - @override - String get albumDownloadAll => 'Download All'; - - @override - String get albumDownloadRemaining => 'Download Remaining'; - - @override - String get playlistTitle => 'Playlist'; - - @override - String get artistTitle => 'Artist'; - @override String get artistAlbums => 'Albums'; @@ -568,17 +369,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get artistCompilations => 'Compilations'; - @override - String artistReleases(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count releases', - one: '1 release', - ); - return '$_temp0'; - } - @override String get artistPopular => 'Popular'; @@ -587,27 +377,6 @@ class AppLocalizationsFr extends AppLocalizations { return '$count monthly listeners'; } - @override - String get trackMetadataTitle => 'Track Info'; - - @override - String get trackMetadataArtist => 'Artist'; - - @override - String get trackMetadataAlbum => 'Album'; - - @override - String get trackMetadataDuration => 'Duration'; - - @override - String get trackMetadataQuality => ''; - - @override - String get trackMetadataPath => 'File Path'; - - @override - String get trackMetadataDownloadedAt => 'Downloaded'; - @override String get trackMetadataService => 'Service'; @@ -620,53 +389,15 @@ class AppLocalizationsFr extends AppLocalizations { @override String get trackMetadataDelete => 'Supprimer'; - @override - String get trackMetadataRedownload => 'Re-télécharger'; - - @override - String get trackMetadataOpenFolder => 'Dossier ouvert'; - - @override - String get setupTitle => 'Bienvenue chez SpotiFLAC'; - - @override - String get setupSubtitle => 'On va commencer'; - - @override - String get setupStoragePermission => 'Permission de stockage'; - - @override - String get setupStoragePermissionSubtitle => - 'Requis pour enregistrer les fichiers téléchargés'; - - @override - String get setupStoragePermissionGranted => 'Permission accordée'; - - @override - String get setupStoragePermissionDenied => 'Permission refusée'; - @override String get setupGrantPermission => 'Grant Permission'; - @override - String get setupDownloadLocation => 'Download Location'; - - @override - String get setupChooseFolder => 'Choose Folder'; - - @override - String get setupContinue => 'Continue'; - @override String get setupSkip => 'Skip for now'; @override String get setupStorageAccessRequired => 'Storage Access Required'; - @override - String get setupStorageAccessMessage => - 'SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.'; - @override String get setupStorageAccessMessageAndroid11 => 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; @@ -688,9 +419,6 @@ class AppLocalizationsFr extends AppLocalizations { return '$permissionType permission is required for the best experience. You can change this later in Settings.'; } - @override - String get setupSelectDownloadFolder => 'Select Download Folder'; - @override String get setupUseDefaultFolder => 'Use Default Folder?'; @@ -732,21 +460,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get setupDownloadInFlac => 'Download Spotify tracks in FLAC'; - @override - String get setupStepStorage => 'Storage'; - - @override - String get setupStepNotification => 'Notification'; - - @override - String get setupStepFolder => 'Folder'; - - @override - String get setupStepSpotify => 'Spotify'; - - @override - String get setupStepPermission => 'Permission'; - @override String get setupStorageGranted => 'Storage Permission Granted!'; @@ -763,13 +476,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get setupNotificationEnable => 'Enable Notifications'; - @override - String get setupNotificationDescription => - 'Get notified when downloads complete or require attention.'; - - @override - String get setupFolderSelected => 'Dossier de téléchargement sélectionné!'; - @override String get setupFolderChoose => 'Choisissez le dossier pour télécharger'; @@ -777,48 +483,12 @@ class AppLocalizationsFr extends AppLocalizations { String get setupFolderDescription => 'Sélectionnez un dossier dans lequel votre musique téléchargée sera enregistrée.'; - @override - String get setupChangeFolder => 'Change Folder'; - @override String get setupSelectFolder => 'Select Folder'; - @override - String get setupSpotifyApiOptional => 'Spotify API (Optional)'; - - @override - String get setupSpotifyApiDescription => - 'Add your Spotify API credentials for better search results and access to Spotify-exclusive content.'; - - @override - String get setupUseSpotifyApi => 'Use Spotify API'; - - @override - String get setupEnterCredentialsBelow => 'Enter your credentials below'; - - @override - String get setupUsingDeezer => 'Using Deezer (no account needed)'; - - @override - String get setupEnterClientId => 'Enter Spotify Client ID'; - - @override - String get setupEnterClientSecret => 'Enter Spotify Client Secret'; - - @override - String get setupGetFreeCredentials => - 'Get your free API credentials from the Spotify Developer Dashboard.'; - @override String get setupEnableNotifications => 'Enable Notifications'; - @override - String get setupProceedToNextStep => 'You can now proceed to the next step.'; - - @override - String get setupNotificationProgressDescription => - 'You will receive download progress notifications.'; - @override String get setupNotificationBackgroundDescription => 'Get notified about download progress and completion. This helps you track downloads when the app is in background.'; @@ -826,32 +496,19 @@ class AppLocalizationsFr extends AppLocalizations { @override String get setupSkipForNow => 'Skip for now'; - @override - String get setupBack => 'Back'; - @override String get setupNext => 'Next'; @override String get setupGetStarted => 'Get Started'; - @override - String get setupSkipAndStart => 'Skip & Start'; - @override String get setupAllowAccessToManageFiles => 'Please enable \"Allow access to manage all files\" in the next screen.'; - @override - String get setupGetCredentialsFromSpotify => - 'Get credentials from developer.spotify.com'; - @override String get dialogCancel => 'Cancel'; - @override - String get dialogOk => 'OK'; - @override String get dialogSave => 'Save'; @@ -861,21 +518,9 @@ class AppLocalizationsFr extends AppLocalizations { @override String get dialogRetry => 'Retry'; - @override - String get dialogClose => 'Close'; - - @override - String get dialogYes => 'Yes'; - - @override - String get dialogNo => 'No'; - @override String get dialogClear => 'Clear'; - @override - String get dialogConfirm => 'Confirm'; - @override String get dialogDone => 'Done'; @@ -898,28 +543,9 @@ class AppLocalizationsFr extends AppLocalizations { String get dialogUnsavedChanges => 'You have unsaved changes. Do you want to discard them?'; - @override - String get dialogDownloadFailed => 'Download Failed'; - - @override - String get dialogTrackLabel => 'Track:'; - - @override - String get dialogArtistLabel => 'Artist:'; - - @override - String get dialogErrorLabel => 'Error:'; - @override String get dialogClearAll => 'Clear All'; - @override - String get dialogClearAllDownloads => - 'Are you sure you want to clear all downloads?'; - - @override - String get dialogRemoveFromDevice => 'Remove from device?'; - @override String get dialogRemoveExtension => 'Remove Extension'; @@ -1020,11 +646,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get snackbarViewQueue => 'View Queue'; - @override - String snackbarFailedToLoad(String error) { - return 'Failed to load: $error'; - } - @override String snackbarUrlCopied(String platform) { return '$platform URL copied to clipboard'; @@ -1066,44 +687,14 @@ class AppLocalizationsFr extends AppLocalizations { String get errorRateLimitedMessage => 'Too many requests. Please wait a moment before searching again.'; - @override - String errorFailedToLoad(String item) { - return 'Failed to load $item'; - } - @override String get errorNoTracksFound => 'No tracks found'; - @override - String get errorSeekNotSupported => - 'Seeking is not supported for this live stream'; - @override String errorMissingExtensionSource(String item) { return 'Cannot load $item: missing extension source'; } - @override - String get statusQueued => 'Queued'; - - @override - String get statusDownloading => 'Downloading'; - - @override - String get statusFinalizing => 'Finalizing'; - - @override - String get statusCompleted => 'Completed'; - - @override - String get statusFailed => 'Failed'; - - @override - String get statusSkipped => 'Skipped'; - - @override - String get statusPaused => 'Paused'; - @override String get actionPause => 'Pause'; @@ -1113,24 +704,12 @@ class AppLocalizationsFr extends AppLocalizations { @override String get actionCancel => 'Cancel'; - @override - String get actionStop => 'Stop'; - - @override - String get actionSelect => 'Select'; - @override String get actionSelectAll => 'Select All'; @override String get actionDeselect => 'Deselect'; - @override - String get actionPaste => 'Paste'; - - @override - String get actionImportCsv => 'Import CSV'; - @override String get actionRemoveCredentials => 'Remove Credentials'; @@ -1145,20 +724,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get selectionAllSelected => 'All tracks selected'; - @override - String get selectionTapToSelect => 'Tap tracks to select'; - - @override - String selectionDeleteTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Delete $count $_temp0'; - } - @override String get selectionSelectToDelete => 'Select tracks to delete'; @@ -1185,40 +750,9 @@ class AppLocalizationsFr extends AppLocalizations { @override String get tooltipPlay => 'Play'; - @override - String get tooltipCancel => 'Cancel'; - - @override - String get tooltipStop => 'Stop'; - - @override - String get tooltipRetry => 'Retry'; - - @override - String get tooltipRemove => 'Remove'; - - @override - String get tooltipClear => 'Clear'; - - @override - String get tooltipPaste => 'Paste'; - @override String get filenameFormat => 'Filename Format'; - @override - String filenameFormatPreview(String preview) { - return 'Preview: $preview'; - } - - @override - String get filenameAvailablePlaceholders => 'Available placeholders:'; - - @override - String filenameHint(Object artist, Object title) { - return '$artist - $title'; - } - @override String get filenameShowAdvancedTags => 'Show advanced tags'; @@ -1226,9 +760,6 @@ class AppLocalizationsFr extends AppLocalizations { String get filenameShowAdvancedTagsDescription => 'Enable formatted tags for track padding and date patterns'; - @override - String get folderOrganization => 'Folder Organization'; - @override String get folderOrganizationNone => 'No organization'; @@ -1263,20 +794,9 @@ class AppLocalizationsFr extends AppLocalizations { @override String get updateAvailable => 'Update Available'; - @override - String updateNewVersion(String version) { - return 'Version $version is available'; - } - - @override - String get updateDownload => 'Download'; - @override String get updateLater => 'Later'; - @override - String get updateChangelog => 'Changelog'; - @override String get updateStartingDownload => 'Starting download...'; @@ -1307,12 +827,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get updateDontRemind => 'Don\'t remind'; - @override - String get providerPriority => 'Provider Priority'; - - @override - String get providerPrioritySubtitle => 'Drag to reorder download providers'; - @override String get providerPriorityTitle => 'Provider Priority'; @@ -1330,13 +844,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get providerExtension => 'Extension'; - @override - String get metadataProviderPriority => 'Metadata Provider Priority'; - - @override - String get metadataProviderPrioritySubtitle => - 'Order used when fetching track metadata'; - @override String get metadataProviderPriorityTitle => 'Metadata Priority'; @@ -1357,18 +864,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get logTitle => 'Logs'; - @override - String get logCopy => 'Copy Logs'; - - @override - String get logClear => 'Clear Logs'; - - @override - String get logShare => 'Share Logs'; - - @override - String get logEmpty => 'No logs yet'; - @override String get logCopied => 'Logs copied to clipboard'; @@ -1393,18 +888,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get logClearLogsMessage => 'Are you sure you want to clear all logs?'; - @override - String get logIspBlocking => 'ISP BLOCKING DETECTED'; - - @override - String get logRateLimited => 'RATE LIMITED'; - - @override - String get logNetworkError => 'NETWORK ERROR'; - - @override - String get logTrackNotFound => 'TRACK NOT FOUND'; - @override String get logFilterBySeverity => 'Filter logs by severity'; @@ -1414,48 +897,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get logNoLogsYetSubtitle => 'Logs will appear here as you use the app'; - @override - String get logIssueSummary => 'Issue Summary'; - - @override - String get logIspBlockingDescription => - 'Your ISP may be blocking access to download services'; - - @override - String get logIspBlockingSuggestion => - 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; - - @override - String get logRateLimitedDescription => 'Too many requests to the service'; - - @override - String get logRateLimitedSuggestion => - 'Wait a few minutes before trying again'; - - @override - String get logNetworkErrorDescription => 'Connection issues detected'; - - @override - String get logNetworkErrorSuggestion => 'Check your internet connection'; - - @override - String get logTrackNotFoundDescription => - 'Some tracks could not be found on download services'; - - @override - String get logTrackNotFoundSuggestion => - 'The track may not be available in lossless quality'; - - @override - String logTotalErrors(int count) { - return 'Total errors: $count'; - } - - @override - String logAffected(String domains) { - return 'Affected: $domains'; - } - @override String logEntriesFiltered(int count) { return 'Entries ($count filtered)'; @@ -1562,9 +1003,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get appearanceLanguage => 'App Language'; - @override - String get appearanceLanguageSubtitle => 'Choose your preferred language'; - @override String get settingsAppearanceSubtitle => 'Theme, colors, display'; @@ -1586,19 +1024,11 @@ class AppLocalizationsFr extends AppLocalizations { @override String get pressBackAgainToExit => 'Press back again to exit'; - @override - String get tracksHeader => 'Tracks'; - @override String downloadAllCount(int count) { return 'Download All ($count)'; } - @override - String playAllCount(int count) { - return 'Play All ($count)'; - } - @override String tracksCount(int count) { String _temp0 = intl.Intl.pluralLogic( @@ -1707,11 +1137,6 @@ class AppLocalizationsFr extends AppLocalizations { String get trackDeleteConfirmMessage => 'This will permanently delete the downloaded file and remove it from your history.'; - @override - String trackCannotOpen(String message) { - return 'Cannot open: $message'; - } - @override String get dateToday => 'Today'; @@ -1733,18 +1158,6 @@ class AppLocalizationsFr extends AppLocalizations { return '$count months ago'; } - @override - String get concurrentSequential => 'Sequential'; - - @override - String get concurrentParallel2 => '2 Parallel'; - - @override - String get concurrentParallel3 => '3 Parallel'; - - @override - String get tapToSeeError => 'Tap to see error details'; - @override String get storeFilterAll => 'All'; @@ -1766,15 +1179,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get storeClearFilters => 'Clear filters'; - @override - String get storeNoResults => 'No extensions found'; - - @override - String get extensionProviderPriority => 'Provider Priority'; - - @override - String get extensionInstallButton => 'Install Extension'; - @override String get extensionDefaultProvider => 'Default (Deezer/Spotify)'; @@ -1925,38 +1329,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get qualityHiResFlacMaxSubtitle => '24-bit / up to 192kHz'; - @override - String get qualityLossy => 'Lossy'; - - @override - String get qualityLossyMp3Subtitle => 'MP3 320kbps (converted from FLAC)'; - - @override - String get qualityLossyOpusSubtitle => 'Opus 128kbps (converted from FLAC)'; - - @override - String get enableLossyOption => 'Enable Lossy Option'; - - @override - String get enableLossyOptionSubtitleOn => 'Lossy quality option is available'; - - @override - String get enableLossyOptionSubtitleOff => - 'Downloads FLAC then converts to lossy format'; - - @override - String get lossyFormat => 'Lossy Format'; - - @override - String get lossyFormatDescription => 'Choose the lossy format for conversion'; - - @override - String get lossyFormatMp3Subtitle => '320kbps, best compatibility'; - - @override - String get lossyFormatOpusSubtitle => - '128kbps, better quality at smaller size'; - @override String get qualityNote => 'Actual quality depends on track availability from the service'; @@ -1971,24 +1343,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get youtubeMp3BitrateTitle => 'YouTube MP3 Bitrate'; - @override - String youtubeBitrateSubtitle(int bitrate, int min, int max) { - return '${bitrate}kbps ($min-$max)'; - } - - @override - String youtubeBitrateInputHelp(int min, int max) { - return 'Enter custom bitrate ($min-$max kbps)'; - } - - @override - String get youtubeBitrateFieldLabel => 'Bitrate (kbps)'; - - @override - String youtubeBitrateValidationError(int min, int max) { - return 'Bitrate must be between $min and $max kbps'; - } - @override String get downloadAskBeforeDownload => 'Ask Before Download'; @@ -2004,14 +1358,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get downloadUseAlbumArtistForFolders => 'Use Album Artist for folders'; - @override - String get downloadUseAlbumArtistForFoldersAlbumSubtitle => - 'Artist folders use Album Artist when available'; - - @override - String get downloadUseAlbumArtistForFoldersTrackSubtitle => - 'Artist folders use Track Artist only'; - @override String get downloadUsePrimaryArtistOnly => 'Primary artist only for folders'; @@ -2023,78 +1369,18 @@ class AppLocalizationsFr extends AppLocalizations { String get downloadUsePrimaryArtistOnlyDisabled => 'Full artist string used for folder name'; - @override - String get downloadSaveFormat => 'Save Format'; - - @override - String get downloadSelectService => 'Select Service'; - @override String get downloadSelectQuality => 'Select Quality'; @override String get downloadFrom => 'Download From'; - @override - String get downloadDefaultQualityLabel => 'Default Quality'; - - @override - String get downloadBestAvailable => 'Best available'; - - @override - String get folderNone => 'None'; - - @override - String get folderNoneSubtitle => 'Save all files directly to download folder'; - - @override - String get folderArtist => 'Artist'; - - @override - String get folderArtistSubtitle => 'Artist Name/filename'; - - @override - String get folderAlbum => 'Album'; - - @override - String get folderAlbumSubtitle => 'Album Name/filename'; - - @override - String get folderArtistAlbum => 'Artist/Album'; - - @override - String get folderArtistAlbumSubtitle => 'Artist Name/Album Name/filename'; - - @override - String get serviceTidal => 'Tidal'; - - @override - String get serviceQobuz => 'Qobuz'; - - @override - String get serviceAmazon => 'Amazon'; - - @override - String get serviceDeezer => 'Deezer'; - - @override - String get serviceSpotify => 'Spotify'; - @override String get appearanceAmoledDark => 'AMOLED Dark'; @override String get appearanceAmoledDarkSubtitle => 'Pure black background'; - @override - String get appearanceChooseAccentColor => 'Choose Accent Color'; - - @override - String get appearanceChooseTheme => 'Theme Mode'; - - @override - String get queueTitle => 'Download Queue'; - @override String get queueClearAll => 'Clear All'; @@ -2102,19 +1388,6 @@ class AppLocalizationsFr extends AppLocalizations { String get queueClearAllMessage => 'Are you sure you want to clear all downloads?'; - @override - String get queueExportFailed => 'Export'; - - @override - String get queueExportFailedSuccess => - 'Failed downloads exported to TXT file'; - - @override - String get queueExportFailedClear => 'Clear Failed'; - - @override - String get queueExportFailedError => 'Failed to export downloads'; - @override String get settingsAutoExportFailed => 'Auto-export failed downloads'; @@ -2135,30 +1408,6 @@ class AppLocalizationsFr extends AppLocalizations { String get settingsDownloadNetworkSubtitle => 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; - @override - String get queueEmpty => 'No downloads in queue'; - - @override - String get queueEmptySubtitle => 'Add tracks from the home screen'; - - @override - String get queueClearCompleted => 'Clear completed'; - - @override - String get queueDownloadFailed => 'Download Failed'; - - @override - String get queueTrackLabel => 'Track:'; - - @override - String get queueArtistLabel => 'Artist:'; - - @override - String get queueErrorLabel => 'Error:'; - - @override - String get queueUnknownError => 'Unknown error'; - @override String get albumFolderArtistAlbum => 'Artist / Album'; @@ -2205,14 +1454,6 @@ class AppLocalizationsFr extends AppLocalizations { return 'Delete $count $_temp0 from this album?\n\nThis will also delete the files from storage.'; } - @override - String get downloadedAlbumTracksHeader => 'Tracks'; - - @override - String downloadedAlbumDownloadedCount(int count) { - return '$count downloaded'; - } - @override String downloadedAlbumSelectedCount(int count) { return '$count selected'; @@ -2243,9 +1484,6 @@ class AppLocalizationsFr extends AppLocalizations { return 'Disc $discNumber'; } - @override - String get utilityFunctions => 'Utility Functions'; - @override String get recentTypeArtist => 'Artist'; @@ -2269,23 +1507,12 @@ class AppLocalizationsFr extends AppLocalizations { return 'Playlist: $name'; } - @override - String errorGeneric(String message) { - return 'Error: $message'; - } - @override String get discographyDownload => 'Download Discography'; - @override - String get discographyPlay => 'Play Discography'; - @override String get discographyDownloadAll => 'Download All'; - @override - String get discographyPlayAll => 'Play All'; - @override String discographyDownloadAllSubtitle(int count, int albumCount) { return '$count tracks from $albumCount releases'; @@ -2330,9 +1557,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get discographyDownloadSelected => 'Download Selected'; - @override - String get discographyPlaySelected => 'Play Selected'; - @override String discographyAddedToQueue(int count) { return 'Added $count tracks to queue'; @@ -2388,9 +1612,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get libraryTitle => 'Local Library'; - @override - String get libraryStatus => 'Library Status'; - @override String get libraryScanSettings => 'Scan Settings'; @@ -2453,11 +1674,6 @@ class AppLocalizationsFr extends AppLocalizations { String get libraryAboutDescription => 'Scans your existing music collection to detect duplicates when downloading. Supports FLAC, M4A, MP3, Opus, and OGG formats. Metadata is read from file tags when available.'; - @override - String libraryTracksCount(int count) { - return '$count tracks'; - } - @override String libraryTracksUnit(int count) { String _temp0 = intl.Intl.pluralLogic( @@ -2548,21 +1764,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get libraryFilterFormat => 'Format'; - @override - String get libraryFilterDate => 'Date Added'; - - @override - String get libraryFilterDateToday => 'Today'; - - @override - String get libraryFilterDateWeek => 'This Week'; - - @override - String get libraryFilterDateMonth => 'This Month'; - - @override - String get libraryFilterDateYear => 'This Year'; - @override String get libraryFilterSort => 'Sort'; @@ -2572,11 +1773,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get libraryFilterSortOldest => 'Oldest'; - @override - String libraryFilterActive(int count) { - return '$count filter(s) active'; - } - @override String get timeJustNow => 'Just now'; @@ -2602,72 +1798,6 @@ class AppLocalizationsFr extends AppLocalizations { return '$_temp0'; } - @override - String get storageSwitchTitle => 'Switch Storage Mode'; - - @override - String get storageSwitchToSafTitle => 'Switch to SAF Storage?'; - - @override - String get storageSwitchToAppTitle => 'Switch to App Storage?'; - - @override - String get storageSwitchToSafMessage => - 'Your existing downloads will remain in the current location and stay accessible.\n\nNew downloads will be saved to your selected SAF folder.'; - - @override - String get storageSwitchToAppMessage => - 'Your existing downloads will remain in the current SAF location and stay accessible.\n\nNew downloads will be saved to Music/SpotiFLAC folder.'; - - @override - String get storageSwitchExistingDownloads => 'Existing Downloads'; - - @override - String storageSwitchExistingDownloadsInfo(int count, String mode) { - return '$count tracks in $mode storage'; - } - - @override - String get storageSwitchNewDownloads => 'New Downloads'; - - @override - String storageSwitchNewDownloadsLocation(String location) { - return 'Will be saved to: $location'; - } - - @override - String get storageSwitchContinue => 'Continue'; - - @override - String get storageSwitchSelectFolder => 'Select SAF Folder'; - - @override - String get storageAppStorage => 'App Storage'; - - @override - String get storageSafStorage => 'SAF Storage'; - - @override - String storageModeBadge(String mode) { - return 'Storage: $mode'; - } - - @override - String get storageStatsTitle => 'Storage Statistics'; - - @override - String storageStatsAppCount(int count) { - return '$count tracks in App Storage'; - } - - @override - String storageStatsSafCount(int count) { - return '$count tracks in SAF Storage'; - } - - @override - String get storageModeInfo => 'Your files are stored in multiple locations'; - @override String get tutorialWelcomeTitle => 'Welcome to SpotiFLAC!'; @@ -2694,18 +1824,6 @@ class AppLocalizationsFr extends AppLocalizations { String get tutorialSearchDesc => 'There are two easy ways to find music you want to download.'; - @override - String get tutorialSearchTip1 => - 'Paste a Spotify or Deezer URL directly in the search box'; - - @override - String get tutorialSearchTip2 => - 'Or type the song name, artist, or album to search'; - - @override - String get tutorialSearchTip3 => - 'Supports tracks, albums, playlists, and artist pages'; - @override String get tutorialDownloadTitle => 'Downloading Music'; @@ -2713,18 +1831,6 @@ class AppLocalizationsFr extends AppLocalizations { String get tutorialDownloadDesc => 'Downloading music is simple and fast. Here\'s how it works.'; - @override - String get tutorialDownloadTip1 => - 'Tap the download button next to any track to start downloading'; - - @override - String get tutorialDownloadTip2 => - 'Choose your preferred quality (FLAC, Hi-Res, or MP3)'; - - @override - String get tutorialDownloadTip3 => - 'Download entire albums or playlists with one tap'; - @override String get tutorialLibraryTitle => 'Your Library'; @@ -2785,9 +1891,6 @@ class AppLocalizationsFr extends AppLocalizations { String get tutorialReadyMessage => 'You\'re all set! Start downloading your favorite music now.'; - @override - String get tutorialExample => 'EXAMPLE'; - @override String get libraryForceFullScan => 'Force Full Scan'; @@ -2950,10 +2053,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get trackReEnrich => 'Re-enrich'; - @override - String get trackReEnrichSubtitle => - 'Re-embed metadata without re-downloading'; - @override String get trackReEnrichOnlineSubtitle => 'Search metadata online and embed into file'; @@ -3234,43 +2333,15 @@ class AppLocalizationsFr extends AppLocalizations { } @override - String get setupModeSelectionTitle => 'Choisissez votre mode'; + String downloadedAlbumDownloadedCount(int count) { + return '$count downloaded'; + } @override - String get setupModeSelectionDescription => - 'Comment souhaitez-vous utiliser SpotiFLAC ? Vous pouvez toujours changer cela plus tard dans les Paramètres.'; + String get downloadUseAlbumArtistForFoldersAlbumSubtitle => + 'Artist folders use Album Artist when available'; @override - String get setupModeDownloaderTitle => 'Téléchargeur'; - - @override - String get setupModeDownloaderFeature1 => - 'Téléchargez des pistes en qualité FLAC sans perte'; - - @override - String get setupModeDownloaderFeature2 => - 'Enregistrez de la musique sur votre appareil pour une écoute hors ligne'; - - @override - String get setupModeDownloaderFeature3 => - 'Gérez votre bibliothèque musicale locale'; - - @override - String get setupModeStreamingTitle => 'Streaming'; - - @override - String get setupModeStreamingFeature1 => - 'Diffusez des pistes instantanément sans télécharger'; - - @override - String get setupModeStreamingFeature2 => - 'Smart Queue découvre automatiquement de nouvelle musique pour vous'; - - @override - String get setupModeStreamingFeature3 => - 'Écoutez n\'importe quelle piste à la demande avec les contrôles de lecture'; - - @override - String get setupModeChangeableLater => - 'Vous pouvez changer de mode à tout moment dans les Paramètres.'; + String get downloadUseAlbumArtistForFoldersTrackSubtitle => + 'Artist folders use Track Artist only'; } diff --git a/lib/l10n/app_localizations_hi.dart b/lib/l10n/app_localizations_hi.dart index 3c3388d9..50ca83db 100644 --- a/lib/l10n/app_localizations_hi.dart +++ b/lib/l10n/app_localizations_hi.dart @@ -11,19 +11,12 @@ class AppLocalizationsHi extends AppLocalizations { @override String get appName => 'SpotiFlac'; - @override - String get appDescription => - 'स्पॉटीफाई ट्रैक डाउनलोड करें टाइडल, क्वाबज एवं एवं अमेजन म्यूजिक से उच्चतम क्वालिटी में।'; - @override String get navHome => 'होम'; @override String get navLibrary => 'Library'; - @override - String get navHistory => 'इतिहास'; - @override String get navSettings => 'विकल्प'; @@ -33,14 +26,6 @@ class AppLocalizationsHi extends AppLocalizations { @override String get homeTitle => 'Home'; - @override - String get homeSearchHint => 'Paste Spotify URL or search...'; - - @override - String homeSearchHintExtension(String extensionName) { - return 'Search with $extensionName...'; - } - @override String get homeSubtitle => 'Paste a Spotify link or search by name'; @@ -50,17 +35,6 @@ class AppLocalizationsHi extends AppLocalizations { @override String get homeRecent => 'Recent'; - @override - String get historyTitle => 'History'; - - @override - String historyDownloading(int count) { - return 'Downloading ($count)'; - } - - @override - String get historyDownloaded => 'Downloaded'; - @override String get historyFilterAll => 'All'; @@ -70,48 +44,6 @@ class AppLocalizationsHi extends AppLocalizations { @override String get historyFilterSingles => 'Singles'; - @override - String historyTracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks', - one: '1 track', - ); - return '$_temp0'; - } - - @override - String historyAlbumsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count albums', - one: '1 album', - ); - return '$_temp0'; - } - - @override - String get historyNoDownloads => 'No download history'; - - @override - String get historyNoDownloadsSubtitle => 'Downloaded tracks will appear here'; - - @override - String get historyNoAlbums => 'No album downloads'; - - @override - String get historyNoAlbumsSubtitle => - 'Download multiple tracks from an album to see them here'; - - @override - String get historyNoSingles => 'No single downloads'; - - @override - String get historyNoSinglesSubtitle => - 'Single track downloads will appear here'; - @override String get historySearchHint => 'Search history...'; @@ -136,27 +68,6 @@ class AppLocalizationsHi extends AppLocalizations { @override String get downloadTitle => 'Download'; - @override - String get downloadLocation => 'Download Location'; - - @override - String get downloadLocationSubtitle => 'Choose where to save files'; - - @override - String get downloadLocationDefault => 'Default location'; - - @override - String get downloadDefaultService => 'Default Service'; - - @override - String get downloadDefaultServiceSubtitle => 'Service used for downloads'; - - @override - String get downloadDefaultQuality => 'Default Quality'; - - @override - String get downloadAskQuality => 'Ask Quality Before Download'; - @override String get downloadAskQualitySubtitle => 'Show quality picker for each download'; @@ -167,31 +78,9 @@ class AppLocalizationsHi extends AppLocalizations { @override String get downloadFolderOrganization => 'Folder Organization'; - @override - String get downloadSeparateSingles => 'Separate Singles'; - - @override - String get downloadSeparateSinglesSubtitle => - 'Put single tracks in a separate folder'; - - @override - String get qualityBest => 'Best Available'; - - @override - String get qualityFlac => 'FLAC'; - - @override - String get quality320 => '320 kbps'; - - @override - String get quality128 => '128 kbps'; - @override String get appearanceTitle => 'दिखावट'; - @override - String get appearanceTheme => 'Theme'; - @override String get appearanceThemeSystem => 'System'; @@ -207,9 +96,6 @@ class AppLocalizationsHi extends AppLocalizations { @override String get appearanceDynamicColorSubtitle => 'वॉलपेपर से रंग इस्तेमाल करें'; - @override - String get appearanceAccentColor => 'Accent Color'; - @override String get appearanceHistoryView => 'History View'; @@ -222,9 +108,6 @@ class AppLocalizationsHi extends AppLocalizations { @override String get optionsTitle => 'Options'; - @override - String get optionsSearchSource => 'Search Source'; - @override String get optionsPrimaryProvider => 'Primary Provider'; @@ -248,33 +131,6 @@ class AppLocalizationsHi extends AppLocalizations { String get optionsAutoFallbackSubtitle => 'Try other services if download fails'; - @override - String get optionsAutoSkipUnavailableTracks => 'Auto Skip Unavailable Tracks'; - - @override - String get optionsAutoSkipUnavailableTracksSubtitleOn => - 'Automatically skip to the next queue track when a stream cannot be resolved.'; - - @override - String get optionsAutoSkipUnavailableTracksSubtitleOff => - 'Stop on failed track resolution and show an error.'; - - @override - String get optionsInteractionMode => 'Interaction Mode'; - - @override - String get modeDownloader => 'Downloader Mode'; - - @override - String get modeDownloaderSubtitle => - 'Tap tracks to add them to download queue'; - - @override - String get modeStreaming => 'Streaming Mode'; - - @override - String get modeStreamingSubtitle => 'Tap tracks to play instantly'; - @override String get optionsUseExtensionProviders => 'Use Extension Providers'; @@ -377,18 +233,6 @@ class AppLocalizationsHi extends AppLocalizations { @override String get extensionsTitle => 'Extensions'; - @override - String get extensionsInstalled => 'Installed Extensions'; - - @override - String get extensionsNone => 'No extensions installed'; - - @override - String get extensionsNoneSubtitle => 'Install extensions from the Store tab'; - - @override - String get extensionsEnabled => 'Enabled'; - @override String get extensionsDisabled => 'Disabled'; @@ -405,9 +249,6 @@ class AppLocalizationsHi extends AppLocalizations { @override String get extensionsUninstall => 'Uninstall'; - @override - String get extensionsSetAsSearch => 'Set as Search Provider'; - @override String get storeTitle => 'Extension Store'; @@ -481,9 +322,6 @@ class AppLocalizationsHi extends AppLocalizations { @override String get aboutSocial => 'Social'; - @override - String get aboutSupport => 'Support'; - @override String get aboutApp => 'App'; @@ -502,13 +340,6 @@ class AppLocalizationsHi extends AppLocalizations { String get aboutSjdonadoDesc => 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; - @override - String get aboutDoubleDouble => 'DoubleDouble'; - - @override - String get aboutDoubleDoubleDesc => - 'Amazing API for Amazon Music downloads. Thank you for making it free!'; - @override String get aboutDabMusic => 'DAB Music'; @@ -527,32 +358,6 @@ class AppLocalizationsHi extends AppLocalizations { String get aboutAppDescription => 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; - @override - String get albumTitle => 'Album'; - - @override - String albumTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks', - one: '1 track', - ); - return '$_temp0'; - } - - @override - String get albumDownloadAll => 'Download All'; - - @override - String get albumDownloadRemaining => 'Download Remaining'; - - @override - String get playlistTitle => 'Playlist'; - - @override - String get artistTitle => 'Artist'; - @override String get artistAlbums => 'Albums'; @@ -562,17 +367,6 @@ class AppLocalizationsHi extends AppLocalizations { @override String get artistCompilations => 'Compilations'; - @override - String artistReleases(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count releases', - one: '1 release', - ); - return '$_temp0'; - } - @override String get artistPopular => 'Popular'; @@ -581,27 +375,6 @@ class AppLocalizationsHi extends AppLocalizations { return '$count monthly listeners'; } - @override - String get trackMetadataTitle => 'Track Info'; - - @override - String get trackMetadataArtist => 'Artist'; - - @override - String get trackMetadataAlbum => 'Album'; - - @override - String get trackMetadataDuration => 'Duration'; - - @override - String get trackMetadataQuality => 'Quality'; - - @override - String get trackMetadataPath => 'File Path'; - - @override - String get trackMetadataDownloadedAt => 'Downloaded'; - @override String get trackMetadataService => 'Service'; @@ -614,53 +387,15 @@ class AppLocalizationsHi extends AppLocalizations { @override String get trackMetadataDelete => 'Delete'; - @override - String get trackMetadataRedownload => 'Re-download'; - - @override - String get trackMetadataOpenFolder => 'Open Folder'; - - @override - String get setupTitle => 'Welcome to SpotiFLAC'; - - @override - String get setupSubtitle => 'Let\'s get you started'; - - @override - String get setupStoragePermission => 'Storage Permission'; - - @override - String get setupStoragePermissionSubtitle => - 'Required to save downloaded files'; - - @override - String get setupStoragePermissionGranted => 'Permission granted'; - - @override - String get setupStoragePermissionDenied => 'Permission denied'; - @override String get setupGrantPermission => 'Grant Permission'; - @override - String get setupDownloadLocation => 'Download Location'; - - @override - String get setupChooseFolder => 'Choose Folder'; - - @override - String get setupContinue => 'Continue'; - @override String get setupSkip => 'Skip for now'; @override String get setupStorageAccessRequired => 'Storage Access Required'; - @override - String get setupStorageAccessMessage => - 'SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.'; - @override String get setupStorageAccessMessageAndroid11 => 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; @@ -682,9 +417,6 @@ class AppLocalizationsHi extends AppLocalizations { return '$permissionType permission is required for the best experience. You can change this later in Settings.'; } - @override - String get setupSelectDownloadFolder => 'Select Download Folder'; - @override String get setupUseDefaultFolder => 'Use Default Folder?'; @@ -726,21 +458,6 @@ class AppLocalizationsHi extends AppLocalizations { @override String get setupDownloadInFlac => 'Download Spotify tracks in FLAC'; - @override - String get setupStepStorage => 'Storage'; - - @override - String get setupStepNotification => 'Notification'; - - @override - String get setupStepFolder => 'Folder'; - - @override - String get setupStepSpotify => 'Spotify'; - - @override - String get setupStepPermission => 'Permission'; - @override String get setupStorageGranted => 'Storage Permission Granted!'; @@ -757,13 +474,6 @@ class AppLocalizationsHi extends AppLocalizations { @override String get setupNotificationEnable => 'Enable Notifications'; - @override - String get setupNotificationDescription => - 'Get notified when downloads complete or require attention.'; - - @override - String get setupFolderSelected => 'Download Folder Selected!'; - @override String get setupFolderChoose => 'Choose Download Folder'; @@ -771,48 +481,12 @@ class AppLocalizationsHi extends AppLocalizations { String get setupFolderDescription => 'Select a folder where your downloaded music will be saved.'; - @override - String get setupChangeFolder => 'Change Folder'; - @override String get setupSelectFolder => 'Select Folder'; - @override - String get setupSpotifyApiOptional => 'Spotify API (Optional)'; - - @override - String get setupSpotifyApiDescription => - 'Add your Spotify API credentials for better search results and access to Spotify-exclusive content.'; - - @override - String get setupUseSpotifyApi => 'Use Spotify API'; - - @override - String get setupEnterCredentialsBelow => 'Enter your credentials below'; - - @override - String get setupUsingDeezer => 'Using Deezer (no account needed)'; - - @override - String get setupEnterClientId => 'Enter Spotify Client ID'; - - @override - String get setupEnterClientSecret => 'Enter Spotify Client Secret'; - - @override - String get setupGetFreeCredentials => - 'Get your free API credentials from the Spotify Developer Dashboard.'; - @override String get setupEnableNotifications => 'Enable Notifications'; - @override - String get setupProceedToNextStep => 'You can now proceed to the next step.'; - - @override - String get setupNotificationProgressDescription => - 'You will receive download progress notifications.'; - @override String get setupNotificationBackgroundDescription => 'Get notified about download progress and completion. This helps you track downloads when the app is in background.'; @@ -820,32 +494,19 @@ class AppLocalizationsHi extends AppLocalizations { @override String get setupSkipForNow => 'Skip for now'; - @override - String get setupBack => 'Back'; - @override String get setupNext => 'Next'; @override String get setupGetStarted => 'Get Started'; - @override - String get setupSkipAndStart => 'Skip & Start'; - @override String get setupAllowAccessToManageFiles => 'Please enable \"Allow access to manage all files\" in the next screen.'; - @override - String get setupGetCredentialsFromSpotify => - 'Get credentials from developer.spotify.com'; - @override String get dialogCancel => 'Cancel'; - @override - String get dialogOk => 'OK'; - @override String get dialogSave => 'Save'; @@ -855,21 +516,9 @@ class AppLocalizationsHi extends AppLocalizations { @override String get dialogRetry => 'Retry'; - @override - String get dialogClose => 'Close'; - - @override - String get dialogYes => 'Yes'; - - @override - String get dialogNo => 'No'; - @override String get dialogClear => 'Clear'; - @override - String get dialogConfirm => 'Confirm'; - @override String get dialogDone => 'Done'; @@ -892,28 +541,9 @@ class AppLocalizationsHi extends AppLocalizations { String get dialogUnsavedChanges => 'You have unsaved changes. Do you want to discard them?'; - @override - String get dialogDownloadFailed => 'Download Failed'; - - @override - String get dialogTrackLabel => 'Track:'; - - @override - String get dialogArtistLabel => 'Artist:'; - - @override - String get dialogErrorLabel => 'Error:'; - @override String get dialogClearAll => 'Clear All'; - @override - String get dialogClearAllDownloads => - 'Are you sure you want to clear all downloads?'; - - @override - String get dialogRemoveFromDevice => 'Remove from device?'; - @override String get dialogRemoveExtension => 'Remove Extension'; @@ -1014,11 +644,6 @@ class AppLocalizationsHi extends AppLocalizations { @override String get snackbarViewQueue => 'View Queue'; - @override - String snackbarFailedToLoad(String error) { - return 'Failed to load: $error'; - } - @override String snackbarUrlCopied(String platform) { return '$platform URL copied to clipboard'; @@ -1060,44 +685,14 @@ class AppLocalizationsHi extends AppLocalizations { String get errorRateLimitedMessage => 'Too many requests. Please wait a moment before searching again.'; - @override - String errorFailedToLoad(String item) { - return 'Failed to load $item'; - } - @override String get errorNoTracksFound => 'No tracks found'; - @override - String get errorSeekNotSupported => - 'Seeking is not supported for this live stream'; - @override String errorMissingExtensionSource(String item) { return 'Cannot load $item: missing extension source'; } - @override - String get statusQueued => 'Queued'; - - @override - String get statusDownloading => 'Downloading'; - - @override - String get statusFinalizing => 'Finalizing'; - - @override - String get statusCompleted => 'Completed'; - - @override - String get statusFailed => 'Failed'; - - @override - String get statusSkipped => 'Skipped'; - - @override - String get statusPaused => 'Paused'; - @override String get actionPause => 'Pause'; @@ -1107,24 +702,12 @@ class AppLocalizationsHi extends AppLocalizations { @override String get actionCancel => 'Cancel'; - @override - String get actionStop => 'Stop'; - - @override - String get actionSelect => 'Select'; - @override String get actionSelectAll => 'Select All'; @override String get actionDeselect => 'Deselect'; - @override - String get actionPaste => 'Paste'; - - @override - String get actionImportCsv => 'Import CSV'; - @override String get actionRemoveCredentials => 'Remove Credentials'; @@ -1139,20 +722,6 @@ class AppLocalizationsHi extends AppLocalizations { @override String get selectionAllSelected => 'All tracks selected'; - @override - String get selectionTapToSelect => 'Tap tracks to select'; - - @override - String selectionDeleteTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Delete $count $_temp0'; - } - @override String get selectionSelectToDelete => 'Select tracks to delete'; @@ -1179,40 +748,9 @@ class AppLocalizationsHi extends AppLocalizations { @override String get tooltipPlay => 'Play'; - @override - String get tooltipCancel => 'Cancel'; - - @override - String get tooltipStop => 'Stop'; - - @override - String get tooltipRetry => 'Retry'; - - @override - String get tooltipRemove => 'Remove'; - - @override - String get tooltipClear => 'Clear'; - - @override - String get tooltipPaste => 'Paste'; - @override String get filenameFormat => 'Filename Format'; - @override - String filenameFormatPreview(String preview) { - return 'Preview: $preview'; - } - - @override - String get filenameAvailablePlaceholders => 'Available placeholders:'; - - @override - String filenameHint(Object artist, Object title) { - return '$artist - $title'; - } - @override String get filenameShowAdvancedTags => 'Show advanced tags'; @@ -1220,9 +758,6 @@ class AppLocalizationsHi extends AppLocalizations { String get filenameShowAdvancedTagsDescription => 'Enable formatted tags for track padding and date patterns'; - @override - String get folderOrganization => 'Folder Organization'; - @override String get folderOrganizationNone => 'No organization'; @@ -1257,20 +792,9 @@ class AppLocalizationsHi extends AppLocalizations { @override String get updateAvailable => 'Update Available'; - @override - String updateNewVersion(String version) { - return 'Version $version is available'; - } - - @override - String get updateDownload => 'Download'; - @override String get updateLater => 'Later'; - @override - String get updateChangelog => 'Changelog'; - @override String get updateStartingDownload => 'Starting download...'; @@ -1301,12 +825,6 @@ class AppLocalizationsHi extends AppLocalizations { @override String get updateDontRemind => 'Don\'t remind'; - @override - String get providerPriority => 'Provider Priority'; - - @override - String get providerPrioritySubtitle => 'Drag to reorder download providers'; - @override String get providerPriorityTitle => 'Provider Priority'; @@ -1324,13 +842,6 @@ class AppLocalizationsHi extends AppLocalizations { @override String get providerExtension => 'Extension'; - @override - String get metadataProviderPriority => 'Metadata Provider Priority'; - - @override - String get metadataProviderPrioritySubtitle => - 'Order used when fetching track metadata'; - @override String get metadataProviderPriorityTitle => 'Metadata Priority'; @@ -1351,18 +862,6 @@ class AppLocalizationsHi extends AppLocalizations { @override String get logTitle => 'Logs'; - @override - String get logCopy => 'Copy Logs'; - - @override - String get logClear => 'Clear Logs'; - - @override - String get logShare => 'Share Logs'; - - @override - String get logEmpty => 'No logs yet'; - @override String get logCopied => 'Logs copied to clipboard'; @@ -1387,18 +886,6 @@ class AppLocalizationsHi extends AppLocalizations { @override String get logClearLogsMessage => 'Are you sure you want to clear all logs?'; - @override - String get logIspBlocking => 'ISP BLOCKING DETECTED'; - - @override - String get logRateLimited => 'RATE LIMITED'; - - @override - String get logNetworkError => 'NETWORK ERROR'; - - @override - String get logTrackNotFound => 'TRACK NOT FOUND'; - @override String get logFilterBySeverity => 'Filter logs by severity'; @@ -1408,48 +895,6 @@ class AppLocalizationsHi extends AppLocalizations { @override String get logNoLogsYetSubtitle => 'Logs will appear here as you use the app'; - @override - String get logIssueSummary => 'Issue Summary'; - - @override - String get logIspBlockingDescription => - 'Your ISP may be blocking access to download services'; - - @override - String get logIspBlockingSuggestion => - 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; - - @override - String get logRateLimitedDescription => 'Too many requests to the service'; - - @override - String get logRateLimitedSuggestion => - 'Wait a few minutes before trying again'; - - @override - String get logNetworkErrorDescription => 'Connection issues detected'; - - @override - String get logNetworkErrorSuggestion => 'Check your internet connection'; - - @override - String get logTrackNotFoundDescription => - 'Some tracks could not be found on download services'; - - @override - String get logTrackNotFoundSuggestion => - 'The track may not be available in lossless quality'; - - @override - String logTotalErrors(int count) { - return 'Total errors: $count'; - } - - @override - String logAffected(String domains) { - return 'Affected: $domains'; - } - @override String logEntriesFiltered(int count) { return 'Entries ($count filtered)'; @@ -1556,9 +1001,6 @@ class AppLocalizationsHi extends AppLocalizations { @override String get appearanceLanguage => 'App Language'; - @override - String get appearanceLanguageSubtitle => 'Choose your preferred language'; - @override String get settingsAppearanceSubtitle => 'Theme, colors, display'; @@ -1580,19 +1022,11 @@ class AppLocalizationsHi extends AppLocalizations { @override String get pressBackAgainToExit => 'Press back again to exit'; - @override - String get tracksHeader => 'Tracks'; - @override String downloadAllCount(int count) { return 'Download All ($count)'; } - @override - String playAllCount(int count) { - return 'Play All ($count)'; - } - @override String tracksCount(int count) { String _temp0 = intl.Intl.pluralLogic( @@ -1701,11 +1135,6 @@ class AppLocalizationsHi extends AppLocalizations { String get trackDeleteConfirmMessage => 'This will permanently delete the downloaded file and remove it from your history.'; - @override - String trackCannotOpen(String message) { - return 'Cannot open: $message'; - } - @override String get dateToday => 'Today'; @@ -1727,18 +1156,6 @@ class AppLocalizationsHi extends AppLocalizations { return '$count months ago'; } - @override - String get concurrentSequential => 'Sequential'; - - @override - String get concurrentParallel2 => '2 Parallel'; - - @override - String get concurrentParallel3 => '3 Parallel'; - - @override - String get tapToSeeError => 'Tap to see error details'; - @override String get storeFilterAll => 'All'; @@ -1760,15 +1177,6 @@ class AppLocalizationsHi extends AppLocalizations { @override String get storeClearFilters => 'Clear filters'; - @override - String get storeNoResults => 'No extensions found'; - - @override - String get extensionProviderPriority => 'Provider Priority'; - - @override - String get extensionInstallButton => 'Install Extension'; - @override String get extensionDefaultProvider => 'Default (Deezer/Spotify)'; @@ -1919,38 +1327,6 @@ class AppLocalizationsHi extends AppLocalizations { @override String get qualityHiResFlacMaxSubtitle => '24-bit / up to 192kHz'; - @override - String get qualityLossy => 'Lossy'; - - @override - String get qualityLossyMp3Subtitle => 'MP3 320kbps (converted from FLAC)'; - - @override - String get qualityLossyOpusSubtitle => 'Opus 128kbps (converted from FLAC)'; - - @override - String get enableLossyOption => 'Enable Lossy Option'; - - @override - String get enableLossyOptionSubtitleOn => 'Lossy quality option is available'; - - @override - String get enableLossyOptionSubtitleOff => - 'Downloads FLAC then converts to lossy format'; - - @override - String get lossyFormat => 'Lossy Format'; - - @override - String get lossyFormatDescription => 'Choose the lossy format for conversion'; - - @override - String get lossyFormatMp3Subtitle => '320kbps, best compatibility'; - - @override - String get lossyFormatOpusSubtitle => - '128kbps, better quality at smaller size'; - @override String get qualityNote => 'Actual quality depends on track availability from the service'; @@ -1965,24 +1341,6 @@ class AppLocalizationsHi extends AppLocalizations { @override String get youtubeMp3BitrateTitle => 'YouTube MP3 Bitrate'; - @override - String youtubeBitrateSubtitle(int bitrate, int min, int max) { - return '${bitrate}kbps ($min-$max)'; - } - - @override - String youtubeBitrateInputHelp(int min, int max) { - return 'Enter custom bitrate ($min-$max kbps)'; - } - - @override - String get youtubeBitrateFieldLabel => 'Bitrate (kbps)'; - - @override - String youtubeBitrateValidationError(int min, int max) { - return 'Bitrate must be between $min and $max kbps'; - } - @override String get downloadAskBeforeDownload => 'Ask Before Download'; @@ -1998,14 +1356,6 @@ class AppLocalizationsHi extends AppLocalizations { @override String get downloadUseAlbumArtistForFolders => 'Use Album Artist for folders'; - @override - String get downloadUseAlbumArtistForFoldersAlbumSubtitle => - 'Artist folders use Album Artist when available'; - - @override - String get downloadUseAlbumArtistForFoldersTrackSubtitle => - 'Artist folders use Track Artist only'; - @override String get downloadUsePrimaryArtistOnly => 'Primary artist only for folders'; @@ -2017,78 +1367,18 @@ class AppLocalizationsHi extends AppLocalizations { String get downloadUsePrimaryArtistOnlyDisabled => 'Full artist string used for folder name'; - @override - String get downloadSaveFormat => 'Save Format'; - - @override - String get downloadSelectService => 'Select Service'; - @override String get downloadSelectQuality => 'Select Quality'; @override String get downloadFrom => 'Download From'; - @override - String get downloadDefaultQualityLabel => 'Default Quality'; - - @override - String get downloadBestAvailable => 'Best available'; - - @override - String get folderNone => 'None'; - - @override - String get folderNoneSubtitle => 'Save all files directly to download folder'; - - @override - String get folderArtist => 'Artist'; - - @override - String get folderArtistSubtitle => 'Artist Name/filename'; - - @override - String get folderAlbum => 'Album'; - - @override - String get folderAlbumSubtitle => 'Album Name/filename'; - - @override - String get folderArtistAlbum => 'Artist/Album'; - - @override - String get folderArtistAlbumSubtitle => 'Artist Name/Album Name/filename'; - - @override - String get serviceTidal => 'Tidal'; - - @override - String get serviceQobuz => 'Qobuz'; - - @override - String get serviceAmazon => 'Amazon'; - - @override - String get serviceDeezer => 'Deezer'; - - @override - String get serviceSpotify => 'Spotify'; - @override String get appearanceAmoledDark => 'AMOLED Dark'; @override String get appearanceAmoledDarkSubtitle => 'Pure black background'; - @override - String get appearanceChooseAccentColor => 'Choose Accent Color'; - - @override - String get appearanceChooseTheme => 'Theme Mode'; - - @override - String get queueTitle => 'Download Queue'; - @override String get queueClearAll => 'Clear All'; @@ -2096,19 +1386,6 @@ class AppLocalizationsHi extends AppLocalizations { String get queueClearAllMessage => 'Are you sure you want to clear all downloads?'; - @override - String get queueExportFailed => 'Export'; - - @override - String get queueExportFailedSuccess => - 'Failed downloads exported to TXT file'; - - @override - String get queueExportFailedClear => 'Clear Failed'; - - @override - String get queueExportFailedError => 'Failed to export downloads'; - @override String get settingsAutoExportFailed => 'Auto-export failed downloads'; @@ -2129,30 +1406,6 @@ class AppLocalizationsHi extends AppLocalizations { String get settingsDownloadNetworkSubtitle => 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; - @override - String get queueEmpty => 'No downloads in queue'; - - @override - String get queueEmptySubtitle => 'Add tracks from the home screen'; - - @override - String get queueClearCompleted => 'Clear completed'; - - @override - String get queueDownloadFailed => 'Download Failed'; - - @override - String get queueTrackLabel => 'Track:'; - - @override - String get queueArtistLabel => 'Artist:'; - - @override - String get queueErrorLabel => 'Error:'; - - @override - String get queueUnknownError => 'Unknown error'; - @override String get albumFolderArtistAlbum => 'Artist / Album'; @@ -2199,14 +1452,6 @@ class AppLocalizationsHi extends AppLocalizations { return 'Delete $count $_temp0 from this album?\n\nThis will also delete the files from storage.'; } - @override - String get downloadedAlbumTracksHeader => 'Tracks'; - - @override - String downloadedAlbumDownloadedCount(int count) { - return '$count downloaded'; - } - @override String downloadedAlbumSelectedCount(int count) { return '$count selected'; @@ -2237,9 +1482,6 @@ class AppLocalizationsHi extends AppLocalizations { return 'Disc $discNumber'; } - @override - String get utilityFunctions => 'Utility Functions'; - @override String get recentTypeArtist => 'Artist'; @@ -2263,23 +1505,12 @@ class AppLocalizationsHi extends AppLocalizations { return 'Playlist: $name'; } - @override - String errorGeneric(String message) { - return 'Error: $message'; - } - @override String get discographyDownload => 'Download Discography'; - @override - String get discographyPlay => 'Play Discography'; - @override String get discographyDownloadAll => 'Download All'; - @override - String get discographyPlayAll => 'Play All'; - @override String discographyDownloadAllSubtitle(int count, int albumCount) { return '$count tracks from $albumCount releases'; @@ -2324,9 +1555,6 @@ class AppLocalizationsHi extends AppLocalizations { @override String get discographyDownloadSelected => 'Download Selected'; - @override - String get discographyPlaySelected => 'Play Selected'; - @override String discographyAddedToQueue(int count) { return 'Added $count tracks to queue'; @@ -2382,9 +1610,6 @@ class AppLocalizationsHi extends AppLocalizations { @override String get libraryTitle => 'Local Library'; - @override - String get libraryStatus => 'Library Status'; - @override String get libraryScanSettings => 'Scan Settings'; @@ -2447,11 +1672,6 @@ class AppLocalizationsHi extends AppLocalizations { String get libraryAboutDescription => 'Scans your existing music collection to detect duplicates when downloading. Supports FLAC, M4A, MP3, Opus, and OGG formats. Metadata is read from file tags when available.'; - @override - String libraryTracksCount(int count) { - return '$count tracks'; - } - @override String libraryTracksUnit(int count) { String _temp0 = intl.Intl.pluralLogic( @@ -2542,21 +1762,6 @@ class AppLocalizationsHi extends AppLocalizations { @override String get libraryFilterFormat => 'Format'; - @override - String get libraryFilterDate => 'Date Added'; - - @override - String get libraryFilterDateToday => 'Today'; - - @override - String get libraryFilterDateWeek => 'This Week'; - - @override - String get libraryFilterDateMonth => 'This Month'; - - @override - String get libraryFilterDateYear => 'This Year'; - @override String get libraryFilterSort => 'Sort'; @@ -2566,11 +1771,6 @@ class AppLocalizationsHi extends AppLocalizations { @override String get libraryFilterSortOldest => 'Oldest'; - @override - String libraryFilterActive(int count) { - return '$count filter(s) active'; - } - @override String get timeJustNow => 'Just now'; @@ -2596,72 +1796,6 @@ class AppLocalizationsHi extends AppLocalizations { return '$_temp0'; } - @override - String get storageSwitchTitle => 'Switch Storage Mode'; - - @override - String get storageSwitchToSafTitle => 'Switch to SAF Storage?'; - - @override - String get storageSwitchToAppTitle => 'Switch to App Storage?'; - - @override - String get storageSwitchToSafMessage => - 'Your existing downloads will remain in the current location and stay accessible.\n\nNew downloads will be saved to your selected SAF folder.'; - - @override - String get storageSwitchToAppMessage => - 'Your existing downloads will remain in the current SAF location and stay accessible.\n\nNew downloads will be saved to Music/SpotiFLAC folder.'; - - @override - String get storageSwitchExistingDownloads => 'Existing Downloads'; - - @override - String storageSwitchExistingDownloadsInfo(int count, String mode) { - return '$count tracks in $mode storage'; - } - - @override - String get storageSwitchNewDownloads => 'New Downloads'; - - @override - String storageSwitchNewDownloadsLocation(String location) { - return 'Will be saved to: $location'; - } - - @override - String get storageSwitchContinue => 'Continue'; - - @override - String get storageSwitchSelectFolder => 'Select SAF Folder'; - - @override - String get storageAppStorage => 'App Storage'; - - @override - String get storageSafStorage => 'SAF Storage'; - - @override - String storageModeBadge(String mode) { - return 'Storage: $mode'; - } - - @override - String get storageStatsTitle => 'Storage Statistics'; - - @override - String storageStatsAppCount(int count) { - return '$count tracks in App Storage'; - } - - @override - String storageStatsSafCount(int count) { - return '$count tracks in SAF Storage'; - } - - @override - String get storageModeInfo => 'Your files are stored in multiple locations'; - @override String get tutorialWelcomeTitle => 'Welcome to SpotiFLAC!'; @@ -2688,18 +1822,6 @@ class AppLocalizationsHi extends AppLocalizations { String get tutorialSearchDesc => 'There are two easy ways to find music you want to download.'; - @override - String get tutorialSearchTip1 => - 'Paste a Spotify or Deezer URL directly in the search box'; - - @override - String get tutorialSearchTip2 => - 'Or type the song name, artist, or album to search'; - - @override - String get tutorialSearchTip3 => - 'Supports tracks, albums, playlists, and artist pages'; - @override String get tutorialDownloadTitle => 'Downloading Music'; @@ -2707,18 +1829,6 @@ class AppLocalizationsHi extends AppLocalizations { String get tutorialDownloadDesc => 'Downloading music is simple and fast. Here\'s how it works.'; - @override - String get tutorialDownloadTip1 => - 'Tap the download button next to any track to start downloading'; - - @override - String get tutorialDownloadTip2 => - 'Choose your preferred quality (FLAC, Hi-Res, or MP3)'; - - @override - String get tutorialDownloadTip3 => - 'Download entire albums or playlists with one tap'; - @override String get tutorialLibraryTitle => 'Your Library'; @@ -2779,9 +1889,6 @@ class AppLocalizationsHi extends AppLocalizations { String get tutorialReadyMessage => 'You\'re all set! Start downloading your favorite music now.'; - @override - String get tutorialExample => 'EXAMPLE'; - @override String get libraryForceFullScan => 'Force Full Scan'; @@ -2944,10 +2051,6 @@ class AppLocalizationsHi extends AppLocalizations { @override String get trackReEnrich => 'Re-enrich'; - @override - String get trackReEnrichSubtitle => - 'Re-embed metadata without re-downloading'; - @override String get trackReEnrichOnlineSubtitle => 'Search metadata online and embed into file'; @@ -3228,43 +2331,15 @@ class AppLocalizationsHi extends AppLocalizations { } @override - String get setupModeSelectionTitle => 'अपना मोड चुनें'; + String downloadedAlbumDownloadedCount(int count) { + return '$count downloaded'; + } @override - String get setupModeSelectionDescription => - 'आप SpotiFLAC का उपयोग कैसे करना चाहेंगे? आप इसे बाद में सेटिंग्स में कभी भी बदल सकते हैं।'; + String get downloadUseAlbumArtistForFoldersAlbumSubtitle => + 'Artist folders use Album Artist when available'; @override - String get setupModeDownloaderTitle => 'डाउनलोडर'; - - @override - String get setupModeDownloaderFeature1 => - 'लॉसलेस FLAC गुणवत्ता में ट्रैक डाउनलोड करें'; - - @override - String get setupModeDownloaderFeature2 => - 'ऑफ़लाइन सुनने के लिए संगीत अपने डिवाइस में सहेजें'; - - @override - String get setupModeDownloaderFeature3 => - 'अपनी स्थानीय संगीत लाइब्रेरी प्रबंधित करें'; - - @override - String get setupModeStreamingTitle => 'स्ट्रीमिंग'; - - @override - String get setupModeStreamingFeature1 => - 'बिना डाउनलोड किए तुरंत ट्रैक स्ट्रीम करें'; - - @override - String get setupModeStreamingFeature2 => - 'Smart Queue स्वचालित रूप से आपके लिए नया संगीत खोजता है'; - - @override - String get setupModeStreamingFeature3 => - 'प्लेबैक नियंत्रण के साथ किसी भी ट्रैक को मांग पर चलाएं'; - - @override - String get setupModeChangeableLater => - 'आप सेटिंग्स में कभी भी मोड बदल सकते हैं।'; + String get downloadUseAlbumArtistForFoldersTrackSubtitle => + 'Artist folders use Track Artist only'; } diff --git a/lib/l10n/app_localizations_id.dart b/lib/l10n/app_localizations_id.dart index c687f715..ff3af0fa 100644 --- a/lib/l10n/app_localizations_id.dart +++ b/lib/l10n/app_localizations_id.dart @@ -11,19 +11,12 @@ class AppLocalizationsId extends AppLocalizations { @override String get appName => 'SpotiFLAC'; - @override - String get appDescription => - 'Unduh lagu Spotify dalam kualitas lossless dari Tidal, Qobuz, dan Amazon Music.'; - @override String get navHome => 'Beranda'; @override String get navLibrary => 'Library'; - @override - String get navHistory => 'Riwayat'; - @override String get navSettings => 'Pengaturan'; @@ -33,14 +26,6 @@ class AppLocalizationsId extends AppLocalizations { @override String get homeTitle => 'Beranda'; - @override - String get homeSearchHint => 'Tempel URL Spotify atau cari...'; - - @override - String homeSearchHintExtension(String extensionName) { - return 'Cari dengan $extensionName...'; - } - @override String get homeSubtitle => 'Tempel link Spotify atau cari berdasarkan nama'; @@ -50,17 +35,6 @@ class AppLocalizationsId extends AppLocalizations { @override String get homeRecent => 'Terbaru'; - @override - String get historyTitle => 'Riwayat'; - - @override - String historyDownloading(int count) { - return 'Mengunduh ($count)'; - } - - @override - String get historyDownloaded => 'Terunduh'; - @override String get historyFilterAll => 'Semua'; @@ -70,49 +44,6 @@ class AppLocalizationsId extends AppLocalizations { @override String get historyFilterSingles => 'Single'; - @override - String historyTracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count lagu', - one: '1 lagu', - ); - return '$_temp0'; - } - - @override - String historyAlbumsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count album', - one: '1 album', - ); - return '$_temp0'; - } - - @override - String get historyNoDownloads => 'Tidak ada riwayat unduhan'; - - @override - String get historyNoDownloadsSubtitle => - 'Lagu yang diunduh akan muncul di sini'; - - @override - String get historyNoAlbums => 'Tidak ada unduhan album'; - - @override - String get historyNoAlbumsSubtitle => - 'Unduh beberapa lagu dari album untuk melihatnya di sini'; - - @override - String get historyNoSingles => 'Tidak ada unduhan single'; - - @override - String get historyNoSinglesSubtitle => - 'Unduhan lagu satuan akan muncul di sini'; - @override String get historySearchHint => 'Search history...'; @@ -137,28 +68,6 @@ class AppLocalizationsId extends AppLocalizations { @override String get downloadTitle => 'Unduhan'; - @override - String get downloadLocation => 'Lokasi Unduhan'; - - @override - String get downloadLocationSubtitle => 'Pilih tempat menyimpan file'; - - @override - String get downloadLocationDefault => 'Lokasi default'; - - @override - String get downloadDefaultService => 'Layanan Default'; - - @override - String get downloadDefaultServiceSubtitle => - 'Layanan yang digunakan untuk unduhan'; - - @override - String get downloadDefaultQuality => 'Kualitas Default'; - - @override - String get downloadAskQuality => 'Tanya Kualitas Sebelum Unduh'; - @override String get downloadAskQualitySubtitle => 'Tampilkan pemilih kualitas untuk setiap unduhan'; @@ -169,31 +78,9 @@ class AppLocalizationsId extends AppLocalizations { @override String get downloadFolderOrganization => 'Organisasi Folder'; - @override - String get downloadSeparateSingles => 'Pisahkan Single'; - - @override - String get downloadSeparateSinglesSubtitle => - 'Letakkan lagu satuan di folder terpisah'; - - @override - String get qualityBest => 'Terbaik'; - - @override - String get qualityFlac => 'FLAC'; - - @override - String get quality320 => '320 kbps'; - - @override - String get quality128 => '128 kbps'; - @override String get appearanceTitle => 'Tampilan'; - @override - String get appearanceTheme => 'Tema'; - @override String get appearanceThemeSystem => 'Sistem'; @@ -210,9 +97,6 @@ class AppLocalizationsId extends AppLocalizations { String get appearanceDynamicColorSubtitle => 'Gunakan warna dari wallpaper Anda'; - @override - String get appearanceAccentColor => 'Warna Aksen'; - @override String get appearanceHistoryView => 'Tampilan Riwayat'; @@ -225,9 +109,6 @@ class AppLocalizationsId extends AppLocalizations { @override String get optionsTitle => 'Opsi'; - @override - String get optionsSearchSource => 'Sumber Pencarian'; - @override String get optionsPrimaryProvider => 'Provider Utama'; @@ -251,34 +132,6 @@ class AppLocalizationsId extends AppLocalizations { String get optionsAutoFallbackSubtitle => 'Coba layanan lain jika unduhan gagal'; - @override - String get optionsAutoSkipUnavailableTracks => - 'Lewati Otomatis Lagu yang Tidak Tersedia'; - - @override - String get optionsAutoSkipUnavailableTracksSubtitleOn => - 'Otomatis lanjut ke lagu berikutnya di antrean jika stream lagu tidak bisa ditemukan.'; - - @override - String get optionsAutoSkipUnavailableTracksSubtitleOff => - 'Berhenti di lagu yang gagal dan tampilkan pesan error.'; - - @override - String get optionsInteractionMode => 'Mode Interaksi'; - - @override - String get modeDownloader => 'Mode Downloader'; - - @override - String get modeDownloaderSubtitle => - 'Ketuk lagu untuk menambah ke antrean unduhan'; - - @override - String get modeStreaming => 'Mode Streaming'; - - @override - String get modeStreamingSubtitle => 'Ketuk lagu untuk langsung memutar'; - @override String get optionsUseExtensionProviders => 'Gunakan Provider Ekstensi'; @@ -382,18 +235,6 @@ class AppLocalizationsId extends AppLocalizations { @override String get extensionsTitle => 'Ekstensi'; - @override - String get extensionsInstalled => 'Ekstensi Terpasang'; - - @override - String get extensionsNone => 'Tidak ada ekstensi terpasang'; - - @override - String get extensionsNoneSubtitle => 'Pasang ekstensi dari tab Toko'; - - @override - String get extensionsEnabled => 'Aktif'; - @override String get extensionsDisabled => 'Nonaktif'; @@ -410,9 +251,6 @@ class AppLocalizationsId extends AppLocalizations { @override String get extensionsUninstall => 'Copot'; - @override - String get extensionsSetAsSearch => 'Jadikan Provider Pencarian'; - @override String get storeTitle => 'Toko Ekstensi'; @@ -487,9 +325,6 @@ class AppLocalizationsId extends AppLocalizations { @override String get aboutSocial => 'Social'; - @override - String get aboutSupport => 'Dukungan'; - @override String get aboutApp => 'Aplikasi'; @@ -508,13 +343,6 @@ class AppLocalizationsId extends AppLocalizations { String get aboutSjdonadoDesc => 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; - @override - String get aboutDoubleDouble => 'DoubleDouble'; - - @override - String get aboutDoubleDoubleDesc => - 'API luar biasa untuk unduhan Amazon Music. Terima kasih sudah membuatnya gratis!'; - @override String get aboutDabMusic => 'DAB Music'; @@ -533,32 +361,6 @@ class AppLocalizationsId extends AppLocalizations { String get aboutAppDescription => 'Unduh lagu Spotify dalam kualitas lossless dari Tidal, Qobuz, dan Amazon Music.'; - @override - String get albumTitle => 'Album'; - - @override - String albumTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count lagu', - one: '1 lagu', - ); - return '$_temp0'; - } - - @override - String get albumDownloadAll => 'Unduh Semua'; - - @override - String get albumDownloadRemaining => 'Unduh Sisanya'; - - @override - String get playlistTitle => 'Playlist'; - - @override - String get artistTitle => 'Artis'; - @override String get artistAlbums => 'Album'; @@ -568,17 +370,6 @@ class AppLocalizationsId extends AppLocalizations { @override String get artistCompilations => 'Kompilasi'; - @override - String artistReleases(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count rilis', - one: '1 rilis', - ); - return '$_temp0'; - } - @override String get artistPopular => 'Populer'; @@ -587,27 +378,6 @@ class AppLocalizationsId extends AppLocalizations { return '$count pendengar bulanan'; } - @override - String get trackMetadataTitle => 'Info Lagu'; - - @override - String get trackMetadataArtist => 'Artis'; - - @override - String get trackMetadataAlbum => 'Album'; - - @override - String get trackMetadataDuration => 'Durasi'; - - @override - String get trackMetadataQuality => 'Kualitas'; - - @override - String get trackMetadataPath => 'Lokasi File'; - - @override - String get trackMetadataDownloadedAt => 'Diunduh'; - @override String get trackMetadataService => 'Layanan'; @@ -620,53 +390,15 @@ class AppLocalizationsId extends AppLocalizations { @override String get trackMetadataDelete => 'Hapus'; - @override - String get trackMetadataRedownload => 'Unduh ulang'; - - @override - String get trackMetadataOpenFolder => 'Buka Folder'; - - @override - String get setupTitle => 'Selamat Datang di SpotiFLAC'; - - @override - String get setupSubtitle => 'Mari mulai pengaturan'; - - @override - String get setupStoragePermission => 'Izin Penyimpanan'; - - @override - String get setupStoragePermissionSubtitle => - 'Diperlukan untuk menyimpan file unduhan'; - - @override - String get setupStoragePermissionGranted => 'Izin diberikan'; - - @override - String get setupStoragePermissionDenied => 'Izin ditolak'; - @override String get setupGrantPermission => 'Berikan Izin'; - @override - String get setupDownloadLocation => 'Lokasi Unduhan'; - - @override - String get setupChooseFolder => 'Pilih Folder'; - - @override - String get setupContinue => 'Lanjutkan'; - @override String get setupSkip => 'Lewati untuk sekarang'; @override String get setupStorageAccessRequired => 'Akses Penyimpanan Diperlukan'; - @override - String get setupStorageAccessMessage => - 'SpotiFLAC membutuhkan izin \"Akses semua file\" untuk menyimpan file musik ke folder pilihan Anda.'; - @override String get setupStorageAccessMessageAndroid11 => 'Android 11+ memerlukan izin \"Akses semua file\" untuk menyimpan file ke folder unduhan pilihan Anda.'; @@ -688,9 +420,6 @@ class AppLocalizationsId extends AppLocalizations { return 'Izin $permissionType diperlukan untuk pengalaman terbaik. Anda dapat mengubahnya nanti di Pengaturan.'; } - @override - String get setupSelectDownloadFolder => 'Pilih Folder Unduhan'; - @override String get setupUseDefaultFolder => 'Gunakan Folder Default?'; @@ -732,21 +461,6 @@ class AppLocalizationsId extends AppLocalizations { @override String get setupDownloadInFlac => 'Unduh lagu Spotify dalam format FLAC'; - @override - String get setupStepStorage => 'Penyimpanan'; - - @override - String get setupStepNotification => 'Notifikasi'; - - @override - String get setupStepFolder => 'Folder'; - - @override - String get setupStepSpotify => 'Spotify'; - - @override - String get setupStepPermission => 'Izin'; - @override String get setupStorageGranted => 'Izin Penyimpanan Diberikan!'; @@ -763,13 +477,6 @@ class AppLocalizationsId extends AppLocalizations { @override String get setupNotificationEnable => 'Aktifkan Notifikasi'; - @override - String get setupNotificationDescription => - 'Dapatkan pemberitahuan saat unduhan selesai atau membutuhkan perhatian.'; - - @override - String get setupFolderSelected => 'Folder Unduhan Dipilih!'; - @override String get setupFolderChoose => 'Pilih Folder Unduhan'; @@ -777,49 +484,12 @@ class AppLocalizationsId extends AppLocalizations { String get setupFolderDescription => 'Pilih folder tempat musik yang diunduh akan disimpan.'; - @override - String get setupChangeFolder => 'Ubah Folder'; - @override String get setupSelectFolder => 'Pilih Folder'; - @override - String get setupSpotifyApiOptional => 'Spotify API (Opsional)'; - - @override - String get setupSpotifyApiDescription => - 'Tambahkan kredensial Spotify API untuk hasil pencarian lebih baik dan akses ke konten eksklusif Spotify.'; - - @override - String get setupUseSpotifyApi => 'Gunakan Spotify API'; - - @override - String get setupEnterCredentialsBelow => 'Masukkan kredensial Anda di bawah'; - - @override - String get setupUsingDeezer => 'Menggunakan Deezer (tidak perlu akun)'; - - @override - String get setupEnterClientId => 'Masukkan Spotify Client ID'; - - @override - String get setupEnterClientSecret => 'Masukkan Spotify Client Secret'; - - @override - String get setupGetFreeCredentials => - 'Dapatkan kredensial API gratis dari Spotify Developer Dashboard.'; - @override String get setupEnableNotifications => 'Aktifkan Notifikasi'; - @override - String get setupProceedToNextStep => - 'Anda dapat melanjutkan ke langkah berikutnya.'; - - @override - String get setupNotificationProgressDescription => - 'Anda akan menerima notifikasi progres unduhan.'; - @override String get setupNotificationBackgroundDescription => 'Dapatkan notifikasi tentang progres dan penyelesaian unduhan. Ini membantu Anda melacak unduhan saat aplikasi di latar belakang.'; @@ -827,32 +497,19 @@ class AppLocalizationsId extends AppLocalizations { @override String get setupSkipForNow => 'Lewati untuk sekarang'; - @override - String get setupBack => 'Kembali'; - @override String get setupNext => 'Lanjut'; @override String get setupGetStarted => 'Mulai'; - @override - String get setupSkipAndStart => 'Lewati & Mulai'; - @override String get setupAllowAccessToManageFiles => 'Harap aktifkan \"Izinkan akses untuk mengelola semua file\" di layar berikutnya.'; - @override - String get setupGetCredentialsFromSpotify => - 'Dapatkan kredensial dari developer.spotify.com'; - @override String get dialogCancel => 'Batal'; - @override - String get dialogOk => 'OK'; - @override String get dialogSave => 'Simpan'; @@ -862,21 +519,9 @@ class AppLocalizationsId extends AppLocalizations { @override String get dialogRetry => 'Coba Lagi'; - @override - String get dialogClose => 'Tutup'; - - @override - String get dialogYes => 'Ya'; - - @override - String get dialogNo => 'Tidak'; - @override String get dialogClear => 'Hapus'; - @override - String get dialogConfirm => 'Konfirmasi'; - @override String get dialogDone => 'Selesai'; @@ -899,28 +544,9 @@ class AppLocalizationsId extends AppLocalizations { String get dialogUnsavedChanges => 'Anda memiliki perubahan yang belum disimpan. Apakah Anda ingin membuangnya?'; - @override - String get dialogDownloadFailed => 'Unduhan Gagal'; - - @override - String get dialogTrackLabel => 'Lagu:'; - - @override - String get dialogArtistLabel => 'Artis:'; - - @override - String get dialogErrorLabel => 'Error:'; - @override String get dialogClearAll => 'Hapus Semua'; - @override - String get dialogClearAllDownloads => - 'Apakah Anda yakin ingin menghapus semua unduhan?'; - - @override - String get dialogRemoveFromDevice => 'Hapus dari perangkat?'; - @override String get dialogRemoveExtension => 'Hapus Ekstensi'; @@ -1021,11 +647,6 @@ class AppLocalizationsId extends AppLocalizations { @override String get snackbarViewQueue => 'Lihat Antrian'; - @override - String snackbarFailedToLoad(String error) { - return 'Gagal memuat: $error'; - } - @override String snackbarUrlCopied(String platform) { return 'URL $platform disalin ke clipboard'; @@ -1067,44 +688,14 @@ class AppLocalizationsId extends AppLocalizations { String get errorRateLimitedMessage => 'Terlalu banyak permintaan. Harap tunggu sebentar sebelum mencari lagi.'; - @override - String errorFailedToLoad(String item) { - return 'Gagal memuat $item'; - } - @override String get errorNoTracksFound => 'Tidak ada lagu ditemukan'; - @override - String get errorSeekNotSupported => - 'Menggeser posisi lagu tidak didukung untuk live stream ini'; - @override String errorMissingExtensionSource(String item) { return 'Tidak dapat memuat $item: sumber ekstensi tidak ada'; } - @override - String get statusQueued => 'Mengantri'; - - @override - String get statusDownloading => 'Mengunduh'; - - @override - String get statusFinalizing => 'Menyelesaikan'; - - @override - String get statusCompleted => 'Selesai'; - - @override - String get statusFailed => 'Gagal'; - - @override - String get statusSkipped => 'Dilewati'; - - @override - String get statusPaused => 'Dijeda'; - @override String get actionPause => 'Jeda'; @@ -1114,24 +705,12 @@ class AppLocalizationsId extends AppLocalizations { @override String get actionCancel => 'Batal'; - @override - String get actionStop => 'Hentikan'; - - @override - String get actionSelect => 'Pilih'; - @override String get actionSelectAll => 'Pilih Semua'; @override String get actionDeselect => 'Batal Pilih'; - @override - String get actionPaste => 'Tempel'; - - @override - String get actionImportCsv => 'Impor CSV'; - @override String get actionRemoveCredentials => 'Hapus Kredensial'; @@ -1146,20 +725,6 @@ class AppLocalizationsId extends AppLocalizations { @override String get selectionAllSelected => 'Semua lagu dipilih'; - @override - String get selectionTapToSelect => 'Ketuk lagu untuk memilih'; - - @override - String selectionDeleteTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'lagu', - one: 'lagu', - ); - return 'Hapus $count $_temp0'; - } - @override String get selectionSelectToDelete => 'Pilih lagu untuk dihapus'; @@ -1186,40 +751,9 @@ class AppLocalizationsId extends AppLocalizations { @override String get tooltipPlay => 'Putar'; - @override - String get tooltipCancel => 'Batal'; - - @override - String get tooltipStop => 'Hentikan'; - - @override - String get tooltipRetry => 'Coba Lagi'; - - @override - String get tooltipRemove => 'Hapus'; - - @override - String get tooltipClear => 'Hapus'; - - @override - String get tooltipPaste => 'Tempel'; - @override String get filenameFormat => 'Format Nama File'; - @override - String filenameFormatPreview(String preview) { - return 'Pratinjau: $preview'; - } - - @override - String get filenameAvailablePlaceholders => 'Placeholder yang tersedia:'; - - @override - String filenameHint(Object artist, Object title) { - return '$artist - $title'; - } - @override String get filenameShowAdvancedTags => 'Tampilkan tag lanjutan'; @@ -1227,9 +761,6 @@ class AppLocalizationsId extends AppLocalizations { String get filenameShowAdvancedTagsDescription => 'Aktifkan tag format untuk padding nomor lagu dan pola tanggal'; - @override - String get folderOrganization => 'Organisasi Folder'; - @override String get folderOrganizationNone => 'Tidak ada'; @@ -1264,20 +795,9 @@ class AppLocalizationsId extends AppLocalizations { @override String get updateAvailable => 'Pembaruan Tersedia'; - @override - String updateNewVersion(String version) { - return 'Versi $version tersedia'; - } - - @override - String get updateDownload => 'Unduh'; - @override String get updateLater => 'Nanti'; - @override - String get updateChangelog => 'Log Perubahan'; - @override String get updateStartingDownload => 'Memulai unduhan...'; @@ -1308,13 +828,6 @@ class AppLocalizationsId extends AppLocalizations { @override String get updateDontRemind => 'Jangan ingatkan'; - @override - String get providerPriority => 'Prioritas Provider'; - - @override - String get providerPrioritySubtitle => - 'Seret untuk mengatur ulang provider unduhan'; - @override String get providerPriorityTitle => 'Prioritas Provider'; @@ -1332,13 +845,6 @@ class AppLocalizationsId extends AppLocalizations { @override String get providerExtension => 'Ekstensi'; - @override - String get metadataProviderPriority => 'Prioritas Provider Metadata'; - - @override - String get metadataProviderPrioritySubtitle => - 'Urutan yang digunakan saat mengambil metadata lagu'; - @override String get metadataProviderPriorityTitle => 'Prioritas Metadata'; @@ -1359,18 +865,6 @@ class AppLocalizationsId extends AppLocalizations { @override String get logTitle => 'Log'; - @override - String get logCopy => 'Salin Log'; - - @override - String get logClear => 'Hapus Log'; - - @override - String get logShare => 'Bagikan Log'; - - @override - String get logEmpty => 'Belum ada log'; - @override String get logCopied => 'Log disalin ke clipboard'; @@ -1396,18 +890,6 @@ class AppLocalizationsId extends AppLocalizations { String get logClearLogsMessage => 'Apakah Anda yakin ingin menghapus semua log?'; - @override - String get logIspBlocking => 'PEMBLOKIRAN ISP TERDETEKSI'; - - @override - String get logRateLimited => 'DIBATASI'; - - @override - String get logNetworkError => 'ERROR JARINGAN'; - - @override - String get logTrackNotFound => 'LAGU TIDAK DITEMUKAN'; - @override String get logFilterBySeverity => 'Filter log berdasarkan tingkat keparahan'; @@ -1418,49 +900,6 @@ class AppLocalizationsId extends AppLocalizations { String get logNoLogsYetSubtitle => 'Log akan muncul di sini saat Anda menggunakan aplikasi'; - @override - String get logIssueSummary => 'Ringkasan Masalah'; - - @override - String get logIspBlockingDescription => - 'ISP Anda mungkin memblokir akses ke layanan unduhan'; - - @override - String get logIspBlockingSuggestion => - 'Coba gunakan VPN atau ubah DNS ke 1.1.1.1 atau 8.8.8.8'; - - @override - String get logRateLimitedDescription => - 'Terlalu banyak permintaan ke layanan'; - - @override - String get logRateLimitedSuggestion => - 'Tunggu beberapa menit sebelum mencoba lagi'; - - @override - String get logNetworkErrorDescription => 'Masalah koneksi terdeteksi'; - - @override - String get logNetworkErrorSuggestion => 'Periksa koneksi internet Anda'; - - @override - String get logTrackNotFoundDescription => - 'Beberapa lagu tidak dapat ditemukan di layanan unduhan'; - - @override - String get logTrackNotFoundSuggestion => - 'Lagu mungkin tidak tersedia dalam kualitas lossless'; - - @override - String logTotalErrors(int count) { - return 'Total error: $count'; - } - - @override - String logAffected(String domains) { - return 'Terpengaruh: $domains'; - } - @override String logEntriesFiltered(int count) { return 'Entri ($count difilter)'; @@ -1567,9 +1006,6 @@ class AppLocalizationsId extends AppLocalizations { @override String get appearanceLanguage => 'Bahasa Aplikasi'; - @override - String get appearanceLanguageSubtitle => 'Pilih bahasa yang kamu inginkan'; - @override String get settingsAppearanceSubtitle => 'Tema, warna, tampilan'; @@ -1591,19 +1027,11 @@ class AppLocalizationsId extends AppLocalizations { @override String get pressBackAgainToExit => 'Tekan kembali sekali lagi untuk keluar'; - @override - String get tracksHeader => 'Lagu'; - @override String downloadAllCount(int count) { return 'Unduh Semua ($count)'; } - @override - String playAllCount(int count) { - return 'Putar Semua ($count)'; - } - @override String tracksCount(int count) { String _temp0 = intl.Intl.pluralLogic( @@ -1712,11 +1140,6 @@ class AppLocalizationsId extends AppLocalizations { String get trackDeleteConfirmMessage => 'Ini akan menghapus file unduhan secara permanen dan menghapusnya dari riwayat Anda.'; - @override - String trackCannotOpen(String message) { - return 'Tidak dapat membuka: $message'; - } - @override String get dateToday => 'Hari ini'; @@ -1738,18 +1161,6 @@ class AppLocalizationsId extends AppLocalizations { return '$count bulan lalu'; } - @override - String get concurrentSequential => 'Berurutan'; - - @override - String get concurrentParallel2 => '2 Paralel'; - - @override - String get concurrentParallel3 => '3 Paralel'; - - @override - String get tapToSeeError => 'Ketuk untuk melihat detail error'; - @override String get storeFilterAll => 'Semua'; @@ -1771,15 +1182,6 @@ class AppLocalizationsId extends AppLocalizations { @override String get storeClearFilters => 'Hapus filter'; - @override - String get storeNoResults => 'Tidak ada ekstensi ditemukan'; - - @override - String get extensionProviderPriority => 'Prioritas Provider'; - - @override - String get extensionInstallButton => 'Pasang Ekstensi'; - @override String get extensionDefaultProvider => 'Default (Deezer/Spotify)'; @@ -1932,38 +1334,6 @@ class AppLocalizationsId extends AppLocalizations { @override String get qualityHiResFlacMaxSubtitle => '24-bit / hingga 192kHz'; - @override - String get qualityLossy => 'Lossy'; - - @override - String get qualityLossyMp3Subtitle => 'MP3 320kbps (converted from FLAC)'; - - @override - String get qualityLossyOpusSubtitle => 'Opus 128kbps (converted from FLAC)'; - - @override - String get enableLossyOption => 'Enable Lossy Option'; - - @override - String get enableLossyOptionSubtitleOn => 'Lossy quality option is available'; - - @override - String get enableLossyOptionSubtitleOff => - 'Downloads FLAC then converts to lossy format'; - - @override - String get lossyFormat => 'Lossy Format'; - - @override - String get lossyFormatDescription => 'Choose the lossy format for conversion'; - - @override - String get lossyFormatMp3Subtitle => '320kbps, best compatibility'; - - @override - String get lossyFormatOpusSubtitle => - '128kbps, better quality at smaller size'; - @override String get qualityNote => 'Kualitas sebenarnya tergantung ketersediaan lagu dari layanan'; @@ -1978,24 +1348,6 @@ class AppLocalizationsId extends AppLocalizations { @override String get youtubeMp3BitrateTitle => 'Bitrate MP3 YouTube'; - @override - String youtubeBitrateSubtitle(int bitrate, int min, int max) { - return '${bitrate}kbps ($min-$max)'; - } - - @override - String youtubeBitrateInputHelp(int min, int max) { - return 'Masukkan bitrate manual ($min-$max kbps)'; - } - - @override - String get youtubeBitrateFieldLabel => 'Bitrate (kbps)'; - - @override - String youtubeBitrateValidationError(int min, int max) { - return 'Bitrate harus antara $min dan $max kbps'; - } - @override String get downloadAskBeforeDownload => 'Tanya Sebelum Unduh'; @@ -2011,14 +1363,6 @@ class AppLocalizationsId extends AppLocalizations { @override String get downloadUseAlbumArtistForFolders => 'Use Album Artist for folders'; - @override - String get downloadUseAlbumArtistForFoldersAlbumSubtitle => - 'Artist folders use Album Artist when available'; - - @override - String get downloadUseAlbumArtistForFoldersTrackSubtitle => - 'Artist folders use Track Artist only'; - @override String get downloadUsePrimaryArtistOnly => 'Primary artist only for folders'; @@ -2030,79 +1374,18 @@ class AppLocalizationsId extends AppLocalizations { String get downloadUsePrimaryArtistOnlyDisabled => 'Full artist string used for folder name'; - @override - String get downloadSaveFormat => 'Simpan Format'; - - @override - String get downloadSelectService => 'Pilih Layanan'; - @override String get downloadSelectQuality => 'Pilih Kualitas'; @override String get downloadFrom => 'Unduh Dari'; - @override - String get downloadDefaultQualityLabel => 'Kualitas Default'; - - @override - String get downloadBestAvailable => 'Terbaik tersedia'; - - @override - String get folderNone => 'Tidak ada'; - - @override - String get folderNoneSubtitle => - 'Simpan semua file langsung ke folder unduhan'; - - @override - String get folderArtist => 'Artis'; - - @override - String get folderArtistSubtitle => 'Nama Artis/namafile'; - - @override - String get folderAlbum => 'Album'; - - @override - String get folderAlbumSubtitle => 'Nama Album/namafile'; - - @override - String get folderArtistAlbum => 'Artis/Album'; - - @override - String get folderArtistAlbumSubtitle => 'Nama Artis/Nama Album/namafile'; - - @override - String get serviceTidal => 'Tidal'; - - @override - String get serviceQobuz => 'Qobuz'; - - @override - String get serviceAmazon => 'Amazon'; - - @override - String get serviceDeezer => 'Deezer'; - - @override - String get serviceSpotify => 'Spotify'; - @override String get appearanceAmoledDark => 'AMOLED Gelap'; @override String get appearanceAmoledDarkSubtitle => 'Latar belakang hitam murni'; - @override - String get appearanceChooseAccentColor => 'Pilih Warna Aksen'; - - @override - String get appearanceChooseTheme => 'Mode Tema'; - - @override - String get queueTitle => 'Antrian Unduhan'; - @override String get queueClearAll => 'Hapus Semua'; @@ -2110,19 +1393,6 @@ class AppLocalizationsId extends AppLocalizations { String get queueClearAllMessage => 'Apakah Anda yakin ingin menghapus semua unduhan?'; - @override - String get queueExportFailed => 'Export'; - - @override - String get queueExportFailedSuccess => - 'Failed downloads exported to TXT file'; - - @override - String get queueExportFailedClear => 'Clear Failed'; - - @override - String get queueExportFailedError => 'Failed to export downloads'; - @override String get settingsAutoExportFailed => 'Auto-export failed downloads'; @@ -2143,30 +1413,6 @@ class AppLocalizationsId extends AppLocalizations { String get settingsDownloadNetworkSubtitle => 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; - @override - String get queueEmpty => 'Tidak ada unduhan dalam antrian'; - - @override - String get queueEmptySubtitle => 'Tambahkan lagu dari layar beranda'; - - @override - String get queueClearCompleted => 'Hapus yang selesai'; - - @override - String get queueDownloadFailed => 'Unduhan Gagal'; - - @override - String get queueTrackLabel => 'Lagu:'; - - @override - String get queueArtistLabel => 'Artis:'; - - @override - String get queueErrorLabel => 'Error:'; - - @override - String get queueUnknownError => 'Error tidak diketahui'; - @override String get albumFolderArtistAlbum => 'Artis / Album'; @@ -2213,14 +1459,6 @@ class AppLocalizationsId extends AppLocalizations { return 'Hapus $count $_temp0 dari album ini?\n\nIni juga akan menghapus file dari penyimpanan.'; } - @override - String get downloadedAlbumTracksHeader => 'Lagu'; - - @override - String downloadedAlbumDownloadedCount(int count) { - return '$count diunduh'; - } - @override String downloadedAlbumSelectedCount(int count) { return '$count dipilih'; @@ -2251,9 +1489,6 @@ class AppLocalizationsId extends AppLocalizations { return 'Disc $discNumber'; } - @override - String get utilityFunctions => 'Fungsi Utilitas'; - @override String get recentTypeArtist => 'Artis'; @@ -2277,23 +1512,12 @@ class AppLocalizationsId extends AppLocalizations { return 'Playlist: $name'; } - @override - String errorGeneric(String message) { - return 'Error: $message'; - } - @override String get discographyDownload => 'Download Discography'; - @override - String get discographyPlay => 'Putar Diskografi'; - @override String get discographyDownloadAll => 'Unduh Semua'; - @override - String get discographyPlayAll => 'Putar Semua'; - @override String discographyDownloadAllSubtitle(int count, int albumCount) { return '$count tracks from $albumCount releases'; @@ -2338,9 +1562,6 @@ class AppLocalizationsId extends AppLocalizations { @override String get discographyDownloadSelected => 'Download Selected'; - @override - String get discographyPlaySelected => 'Putar Terpilih'; - @override String discographyAddedToQueue(int count) { return 'Added $count tracks to queue'; @@ -2396,9 +1617,6 @@ class AppLocalizationsId extends AppLocalizations { @override String get libraryTitle => 'Local Library'; - @override - String get libraryStatus => 'Library Status'; - @override String get libraryScanSettings => 'Scan Settings'; @@ -2461,11 +1679,6 @@ class AppLocalizationsId extends AppLocalizations { String get libraryAboutDescription => 'Scans your existing music collection to detect duplicates when downloading. Supports FLAC, M4A, MP3, Opus, and OGG formats. Metadata is read from file tags when available.'; - @override - String libraryTracksCount(int count) { - return '$count tracks'; - } - @override String libraryTracksUnit(int count) { String _temp0 = intl.Intl.pluralLogic( @@ -2556,21 +1769,6 @@ class AppLocalizationsId extends AppLocalizations { @override String get libraryFilterFormat => 'Format'; - @override - String get libraryFilterDate => 'Date Added'; - - @override - String get libraryFilterDateToday => 'Today'; - - @override - String get libraryFilterDateWeek => 'This Week'; - - @override - String get libraryFilterDateMonth => 'This Month'; - - @override - String get libraryFilterDateYear => 'This Year'; - @override String get libraryFilterSort => 'Sort'; @@ -2580,11 +1778,6 @@ class AppLocalizationsId extends AppLocalizations { @override String get libraryFilterSortOldest => 'Oldest'; - @override - String libraryFilterActive(int count) { - return '$count filter(s) active'; - } - @override String get timeJustNow => 'Just now'; @@ -2610,72 +1803,6 @@ class AppLocalizationsId extends AppLocalizations { return '$_temp0'; } - @override - String get storageSwitchTitle => 'Switch Storage Mode'; - - @override - String get storageSwitchToSafTitle => 'Switch to SAF Storage?'; - - @override - String get storageSwitchToAppTitle => 'Switch to App Storage?'; - - @override - String get storageSwitchToSafMessage => - 'Your existing downloads will remain in the current location and stay accessible.\n\nNew downloads will be saved to your selected SAF folder.'; - - @override - String get storageSwitchToAppMessage => - 'Your existing downloads will remain in the current SAF location and stay accessible.\n\nNew downloads will be saved to Music/SpotiFLAC folder.'; - - @override - String get storageSwitchExistingDownloads => 'Existing Downloads'; - - @override - String storageSwitchExistingDownloadsInfo(int count, String mode) { - return '$count tracks in $mode storage'; - } - - @override - String get storageSwitchNewDownloads => 'New Downloads'; - - @override - String storageSwitchNewDownloadsLocation(String location) { - return 'Will be saved to: $location'; - } - - @override - String get storageSwitchContinue => 'Continue'; - - @override - String get storageSwitchSelectFolder => 'Select SAF Folder'; - - @override - String get storageAppStorage => 'App Storage'; - - @override - String get storageSafStorage => 'SAF Storage'; - - @override - String storageModeBadge(String mode) { - return 'Storage: $mode'; - } - - @override - String get storageStatsTitle => 'Storage Statistics'; - - @override - String storageStatsAppCount(int count) { - return '$count tracks in App Storage'; - } - - @override - String storageStatsSafCount(int count) { - return '$count tracks in SAF Storage'; - } - - @override - String get storageModeInfo => 'Your files are stored in multiple locations'; - @override String get tutorialWelcomeTitle => 'Welcome to SpotiFLAC!'; @@ -2702,18 +1829,6 @@ class AppLocalizationsId extends AppLocalizations { String get tutorialSearchDesc => 'There are two easy ways to find music you want to download.'; - @override - String get tutorialSearchTip1 => - 'Paste a Spotify or Deezer URL directly in the search box'; - - @override - String get tutorialSearchTip2 => - 'Or type the song name, artist, or album to search'; - - @override - String get tutorialSearchTip3 => - 'Supports tracks, albums, playlists, and artist pages'; - @override String get tutorialDownloadTitle => 'Downloading Music'; @@ -2721,18 +1836,6 @@ class AppLocalizationsId extends AppLocalizations { String get tutorialDownloadDesc => 'Downloading music is simple and fast. Here\'s how it works.'; - @override - String get tutorialDownloadTip1 => - 'Tap the download button next to any track to start downloading'; - - @override - String get tutorialDownloadTip2 => - 'Choose your preferred quality (FLAC, Hi-Res, or MP3)'; - - @override - String get tutorialDownloadTip3 => - 'Download entire albums or playlists with one tap'; - @override String get tutorialLibraryTitle => 'Your Library'; @@ -2793,9 +1896,6 @@ class AppLocalizationsId extends AppLocalizations { String get tutorialReadyMessage => 'You\'re all set! Start downloading your favorite music now.'; - @override - String get tutorialExample => 'EXAMPLE'; - @override String get libraryForceFullScan => 'Force Full Scan'; @@ -2958,10 +2058,6 @@ class AppLocalizationsId extends AppLocalizations { @override String get trackReEnrich => 'Re-enrich'; - @override - String get trackReEnrichSubtitle => - 'Re-embed metadata without re-downloading'; - @override String get trackReEnrichOnlineSubtitle => 'Search metadata online and embed into file'; @@ -3243,43 +2339,15 @@ class AppLocalizationsId extends AppLocalizations { } @override - String get setupModeSelectionTitle => 'Pilih Mode Anda'; + String downloadedAlbumDownloadedCount(int count) { + return '$count diunduh'; + } @override - String get setupModeSelectionDescription => - 'Bagaimana Anda ingin menggunakan SpotiFLAC? Anda dapat mengubahnya nanti di Pengaturan.'; + String get downloadUseAlbumArtistForFoldersAlbumSubtitle => + 'Artist folders use Album Artist when available'; @override - String get setupModeDownloaderTitle => 'Pengunduh'; - - @override - String get setupModeDownloaderFeature1 => - 'Unduh trek dalam kualitas FLAC lossless'; - - @override - String get setupModeDownloaderFeature2 => - 'Simpan musik ke perangkat Anda untuk mendengarkan offline'; - - @override - String get setupModeDownloaderFeature3 => - 'Kelola perpustakaan musik lokal Anda'; - - @override - String get setupModeStreamingTitle => 'Streaming'; - - @override - String get setupModeStreamingFeature1 => - 'Streaming trek secara instan tanpa mengunduh'; - - @override - String get setupModeStreamingFeature2 => - 'Smart Queue secara otomatis menemukan musik baru untuk Anda'; - - @override - String get setupModeStreamingFeature3 => - 'Putar trek apa pun sesuai permintaan dengan kontrol pemutaran'; - - @override - String get setupModeChangeableLater => - 'Anda dapat beralih antar mode kapan saja di Pengaturan.'; + String get downloadUseAlbumArtistForFoldersTrackSubtitle => + 'Artist folders use Track Artist only'; } diff --git a/lib/l10n/app_localizations_ja.dart b/lib/l10n/app_localizations_ja.dart index 78b99777..b473562c 100644 --- a/lib/l10n/app_localizations_ja.dart +++ b/lib/l10n/app_localizations_ja.dart @@ -11,19 +11,12 @@ class AppLocalizationsJa extends AppLocalizations { @override String get appName => 'SpotiFLAC'; - @override - String get appDescription => - 'Tidal、Qobuz、Amazon Music から Spotify のトラックをロスレス品質でダウンロードします。'; - @override String get navHome => 'ホーム'; @override String get navLibrary => 'Library'; - @override - String get navHistory => '履歴'; - @override String get navSettings => '設定'; @@ -33,14 +26,6 @@ class AppLocalizationsJa extends AppLocalizations { @override String get homeTitle => 'ホーム'; - @override - String get homeSearchHint => 'Spotify の URL を貼り付けまたは検索...'; - - @override - String homeSearchHintExtension(String extensionName) { - return '$extensionName で検索...'; - } - @override String get homeSubtitle => 'Spotify のリンクを貼り付けるか、名前で検索します'; @@ -50,17 +35,6 @@ class AppLocalizationsJa extends AppLocalizations { @override String get homeRecent => '最近'; - @override - String get historyTitle => '履歴'; - - @override - String historyDownloading(int count) { - return 'ダウンロード中 ($count)'; - } - - @override - String get historyDownloaded => 'ダウンロード済み'; - @override String get historyFilterAll => 'すべて'; @@ -70,48 +44,6 @@ class AppLocalizationsJa extends AppLocalizations { @override String get historyFilterSingles => 'シングル'; - @override - String historyTracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count 個のトラック', - one: '1 個のトラック', - ); - return '$_temp0'; - } - - @override - String historyAlbumsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count 個のアルバム', - one: '1 個のアルバム', - ); - return '$_temp0'; - } - - @override - String get historyNoDownloads => 'ダウンロード履歴はありません'; - - @override - String get historyNoDownloadsSubtitle => 'ダウンロードしたトラックはここに表示されます'; - - @override - String get historyNoAlbums => 'アルバムのダウンロードはありません'; - - @override - String get historyNoAlbumsSubtitle => - 'Download multiple tracks from an album to see them here'; - - @override - String get historyNoSingles => 'シングルのダウンロードはありません'; - - @override - String get historyNoSinglesSubtitle => - 'Single track downloads will appear here'; - @override String get historySearchHint => '検索履歴...'; @@ -136,27 +68,6 @@ class AppLocalizationsJa extends AppLocalizations { @override String get downloadTitle => 'ダウンロード'; - @override - String get downloadLocation => 'ダウンロード先'; - - @override - String get downloadLocationSubtitle => 'ファイルの保存先を選択'; - - @override - String get downloadLocationDefault => 'デフォルトの場所'; - - @override - String get downloadDefaultService => 'デフォルトのサービス'; - - @override - String get downloadDefaultServiceSubtitle => 'ダウンロードに使用したサービス'; - - @override - String get downloadDefaultQuality => 'デフォルトの品質'; - - @override - String get downloadAskQuality => 'ダウンロード前に品質を確認する'; - @override String get downloadAskQualitySubtitle => 'Show quality picker for each download'; @@ -167,31 +78,9 @@ class AppLocalizationsJa extends AppLocalizations { @override String get downloadFolderOrganization => 'フォルダ構成'; - @override - String get downloadSeparateSingles => 'シングルを分割'; - - @override - String get downloadSeparateSinglesSubtitle => - 'Put single tracks in a separate folder'; - - @override - String get qualityBest => 'おすすめ'; - - @override - String get qualityFlac => 'FLAC'; - - @override - String get quality320 => '320 kbps'; - - @override - String get quality128 => '128 kbps'; - @override String get appearanceTitle => '外観'; - @override - String get appearanceTheme => 'テーマ'; - @override String get appearanceThemeSystem => 'システム'; @@ -207,9 +96,6 @@ class AppLocalizationsJa extends AppLocalizations { @override String get appearanceDynamicColorSubtitle => '壁紙の色を使用する'; - @override - String get appearanceAccentColor => 'アクセントカラー'; - @override String get appearanceHistoryView => '履歴の表示'; @@ -222,9 +108,6 @@ class AppLocalizationsJa extends AppLocalizations { @override String get optionsTitle => 'オプション'; - @override - String get optionsSearchSource => '検索ソース'; - @override String get optionsPrimaryProvider => 'プライマリーのプロバイダー'; @@ -248,33 +131,6 @@ class AppLocalizationsJa extends AppLocalizations { String get optionsAutoFallbackSubtitle => 'Try other services if download fails'; - @override - String get optionsAutoSkipUnavailableTracks => 'Auto Skip Unavailable Tracks'; - - @override - String get optionsAutoSkipUnavailableTracksSubtitleOn => - 'Automatically skip to the next queue track when a stream cannot be resolved.'; - - @override - String get optionsAutoSkipUnavailableTracksSubtitleOff => - 'Stop on failed track resolution and show an error.'; - - @override - String get optionsInteractionMode => 'Interaction Mode'; - - @override - String get modeDownloader => 'Downloader Mode'; - - @override - String get modeDownloaderSubtitle => - 'Tap tracks to add them to download queue'; - - @override - String get modeStreaming => 'Streaming Mode'; - - @override - String get modeStreamingSubtitle => 'Tap tracks to play instantly'; - @override String get optionsUseExtensionProviders => '拡張のプロバイダーを使用する'; @@ -374,18 +230,6 @@ class AppLocalizationsJa extends AppLocalizations { @override String get extensionsTitle => '拡張'; - @override - String get extensionsInstalled => 'インストール済みの拡張'; - - @override - String get extensionsNone => '拡張はインストールされていません'; - - @override - String get extensionsNoneSubtitle => 'ストアタブから拡張をインストール'; - - @override - String get extensionsEnabled => '有効'; - @override String get extensionsDisabled => '無効'; @@ -402,9 +246,6 @@ class AppLocalizationsJa extends AppLocalizations { @override String get extensionsUninstall => 'アンインストール'; - @override - String get extensionsSetAsSearch => '検索のプロバイダーを設定'; - @override String get storeTitle => '拡張ストア'; @@ -477,9 +318,6 @@ class AppLocalizationsJa extends AppLocalizations { @override String get aboutSocial => 'ソーシャル'; - @override - String get aboutSupport => 'サポート'; - @override String get aboutApp => 'アプリ'; @@ -498,13 +336,6 @@ class AppLocalizationsJa extends AppLocalizations { String get aboutSjdonadoDesc => 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; - @override - String get aboutDoubleDouble => 'DoubleDouble'; - - @override - String get aboutDoubleDoubleDesc => - 'Amazing API for Amazon Music downloads. Thank you for making it free!'; - @override String get aboutDabMusic => 'DAB Music'; @@ -523,32 +354,6 @@ class AppLocalizationsJa extends AppLocalizations { String get aboutAppDescription => 'Tidal、Qobuz、Amazon Music から Spotify のトラックをロスレス品質でダウンロードします。'; - @override - String get albumTitle => 'アルバム'; - - @override - String albumTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count 個のトラック', - one: '1 個のトラック', - ); - return '$_temp0'; - } - - @override - String get albumDownloadAll => 'すべてダウンロード'; - - @override - String get albumDownloadRemaining => 'Download Remaining'; - - @override - String get playlistTitle => 'プレイリスト'; - - @override - String get artistTitle => 'アーティスト'; - @override String get artistAlbums => 'アルバム'; @@ -558,17 +363,6 @@ class AppLocalizationsJa extends AppLocalizations { @override String get artistCompilations => 'コンピレーション'; - @override - String artistReleases(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count 個のリリース', - one: '1 個のリリース', - ); - return '$_temp0'; - } - @override String get artistPopular => '人気'; @@ -577,27 +371,6 @@ class AppLocalizationsJa extends AppLocalizations { return '$count 人の月間リスナー'; } - @override - String get trackMetadataTitle => 'トラック情報'; - - @override - String get trackMetadataArtist => 'アーティスト'; - - @override - String get trackMetadataAlbum => 'アルバム'; - - @override - String get trackMetadataDuration => '再生時間'; - - @override - String get trackMetadataQuality => '品質'; - - @override - String get trackMetadataPath => 'ファイルパス'; - - @override - String get trackMetadataDownloadedAt => 'ダウンロード済み'; - @override String get trackMetadataService => 'サービス'; @@ -610,52 +383,15 @@ class AppLocalizationsJa extends AppLocalizations { @override String get trackMetadataDelete => '削除'; - @override - String get trackMetadataRedownload => '再ダウンロード'; - - @override - String get trackMetadataOpenFolder => 'フォルダを開く'; - - @override - String get setupTitle => 'SpotiFLAC へようこそ'; - - @override - String get setupSubtitle => 'Let\'s get you started'; - - @override - String get setupStoragePermission => 'ストレージの権限'; - - @override - String get setupStoragePermissionSubtitle => 'ダウンロードしたファイルを保存するために必要です'; - - @override - String get setupStoragePermissionGranted => '権限を許可しました'; - - @override - String get setupStoragePermissionDenied => '権限が拒否されました'; - @override String get setupGrantPermission => '権限を許可'; - @override - String get setupDownloadLocation => 'ダウンロード先'; - - @override - String get setupChooseFolder => 'フォルダを選択'; - - @override - String get setupContinue => '続行'; - @override String get setupSkip => '今はスキップ'; @override String get setupStorageAccessRequired => 'ストレージアクセスが必要です'; - @override - String get setupStorageAccessMessage => - 'SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.'; - @override String get setupStorageAccessMessageAndroid11 => 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; @@ -677,9 +413,6 @@ class AppLocalizationsJa extends AppLocalizations { return '最適な体験を得るには $permissionType の権限が必要です。この権限は設定で後から変更できます。'; } - @override - String get setupSelectDownloadFolder => 'ダウンロードフォルダを選択'; - @override String get setupUseDefaultFolder => 'デフォルトのフォルダを使用しますか?'; @@ -721,21 +454,6 @@ class AppLocalizationsJa extends AppLocalizations { @override String get setupDownloadInFlac => 'Spotify のトラックを FLAC でダウンロード'; - @override - String get setupStepStorage => 'ストレージ'; - - @override - String get setupStepNotification => '通知'; - - @override - String get setupStepFolder => 'フォルダ'; - - @override - String get setupStepSpotify => 'Spotify'; - - @override - String get setupStepPermission => '権限'; - @override String get setupStorageGranted => 'ストレージの権限が許可されました!'; @@ -752,13 +470,6 @@ class AppLocalizationsJa extends AppLocalizations { @override String get setupNotificationEnable => '通知を有効化する'; - @override - String get setupNotificationDescription => - 'Get notified when downloads complete or require attention.'; - - @override - String get setupFolderSelected => 'ダウンロードフォルダが選択済みです!'; - @override String get setupFolderChoose => 'ダウンロードフォルダを選択'; @@ -766,48 +477,12 @@ class AppLocalizationsJa extends AppLocalizations { String get setupFolderDescription => 'Select a folder where your downloaded music will be saved.'; - @override - String get setupChangeFolder => 'フォルダを変更'; - @override String get setupSelectFolder => 'フォルダを選択'; - @override - String get setupSpotifyApiOptional => 'Spotify API (任意)'; - - @override - String get setupSpotifyApiDescription => - 'Add your Spotify API credentials for better search results and access to Spotify-exclusive content.'; - - @override - String get setupUseSpotifyApi => 'Spotify API を使用する'; - - @override - String get setupEnterCredentialsBelow => '以下に認証情報を入力してください'; - - @override - String get setupUsingDeezer => 'Deezer を使用中 (アカウントは不要です)'; - - @override - String get setupEnterClientId => 'Spotify クライアント ID を入力'; - - @override - String get setupEnterClientSecret => 'Spotify クライアントシークレットを入力'; - - @override - String get setupGetFreeCredentials => - 'Spotify 開発者ダッシュボードから無料の API 認証情報を取得します。'; - @override String get setupEnableNotifications => '通知を有効化する'; - @override - String get setupProceedToNextStep => 'You can now proceed to the next step.'; - - @override - String get setupNotificationProgressDescription => - 'You will receive download progress notifications.'; - @override String get setupNotificationBackgroundDescription => 'Get notified about download progress and completion. This helps you track downloads when the app is in background.'; @@ -815,32 +490,19 @@ class AppLocalizationsJa extends AppLocalizations { @override String get setupSkipForNow => '今はスキップ'; - @override - String get setupBack => '戻る'; - @override String get setupNext => '次へ'; @override String get setupGetStarted => 'Get Started'; - @override - String get setupSkipAndStart => 'スキップと開始'; - @override String get setupAllowAccessToManageFiles => 'Please enable \"Allow access to manage all files\" in the next screen.'; - @override - String get setupGetCredentialsFromSpotify => - 'developer.spotify.com から認証情報を取得します'; - @override String get dialogCancel => 'キャンセル'; - @override - String get dialogOk => 'OK'; - @override String get dialogSave => '保存'; @@ -850,21 +512,9 @@ class AppLocalizationsJa extends AppLocalizations { @override String get dialogRetry => '再試行'; - @override - String get dialogClose => '閉じる'; - - @override - String get dialogYes => 'はい'; - - @override - String get dialogNo => 'いいえ'; - @override String get dialogClear => '消去'; - @override - String get dialogConfirm => '続行'; - @override String get dialogDone => '完了'; @@ -887,28 +537,9 @@ class AppLocalizationsJa extends AppLocalizations { String get dialogUnsavedChanges => 'You have unsaved changes. Do you want to discard them?'; - @override - String get dialogDownloadFailed => 'ダウンロードに失敗しました'; - - @override - String get dialogTrackLabel => 'トラック:'; - - @override - String get dialogArtistLabel => 'アーティスト:'; - - @override - String get dialogErrorLabel => 'エラー:'; - @override String get dialogClearAll => 'すべて消去'; - @override - String get dialogClearAllDownloads => - 'Are you sure you want to clear all downloads?'; - - @override - String get dialogRemoveFromDevice => 'デバイスから削除しますか?'; - @override String get dialogRemoveExtension => '拡張を削除'; @@ -1009,11 +640,6 @@ class AppLocalizationsJa extends AppLocalizations { @override String get snackbarViewQueue => 'キューを表示'; - @override - String snackbarFailedToLoad(String error) { - return '読み込みに失敗: $error'; - } - @override String snackbarUrlCopied(String platform) { return '$platform の URL をクリップボードにコピーしました'; @@ -1054,44 +680,14 @@ class AppLocalizationsJa extends AppLocalizations { String get errorRateLimitedMessage => 'Too many requests. Please wait a moment before searching again.'; - @override - String errorFailedToLoad(String item) { - return 'Failed to load $item'; - } - @override String get errorNoTracksFound => 'トラックがありません'; - @override - String get errorSeekNotSupported => - 'Seeking is not supported for this live stream'; - @override String errorMissingExtensionSource(String item) { return '$item を読み込めません: 拡張ソースがありません'; } - @override - String get statusQueued => 'キュー済み'; - - @override - String get statusDownloading => 'ダウンロード中'; - - @override - String get statusFinalizing => '終了処理中'; - - @override - String get statusCompleted => '完了しました'; - - @override - String get statusFailed => '失敗しました'; - - @override - String get statusSkipped => 'スキップしました'; - - @override - String get statusPaused => '一時停止中'; - @override String get actionPause => '一時停止'; @@ -1101,24 +697,12 @@ class AppLocalizationsJa extends AppLocalizations { @override String get actionCancel => 'キャンセル'; - @override - String get actionStop => '停止'; - - @override - String get actionSelect => '選択'; - @override String get actionSelectAll => 'すべて選択'; @override String get actionDeselect => '選択を解除'; - @override - String get actionPaste => '貼り付け'; - - @override - String get actionImportCsv => 'CSV をインポート'; - @override String get actionRemoveCredentials => '認証情報を削除'; @@ -1133,20 +717,6 @@ class AppLocalizationsJa extends AppLocalizations { @override String get selectionAllSelected => 'すべてのトラックを選択済み'; - @override - String get selectionTapToSelect => 'トラックをタップで選択'; - - @override - String selectionDeleteTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '個のトラック', - one: '個のトラック', - ); - return '$count $_temp0を削除'; - } - @override String get selectionSelectToDelete => 'トラックを選択で削除'; @@ -1173,40 +743,9 @@ class AppLocalizationsJa extends AppLocalizations { @override String get tooltipPlay => '再生'; - @override - String get tooltipCancel => 'キャンセル'; - - @override - String get tooltipStop => '停止'; - - @override - String get tooltipRetry => '再試行'; - - @override - String get tooltipRemove => '削除'; - - @override - String get tooltipClear => '消去'; - - @override - String get tooltipPaste => '貼り付け'; - @override String get filenameFormat => 'ファイル名の形式'; - @override - String filenameFormatPreview(String preview) { - return 'プレビュー: $preview'; - } - - @override - String get filenameAvailablePlaceholders => '利用可能なプレースホルダー:'; - - @override - String filenameHint(Object artist, Object title) { - return '$artist - $title'; - } - @override String get filenameShowAdvancedTags => 'Show advanced tags'; @@ -1214,9 +753,6 @@ class AppLocalizationsJa extends AppLocalizations { String get filenameShowAdvancedTagsDescription => 'Enable formatted tags for track padding and date patterns'; - @override - String get folderOrganization => 'フォルダ構成'; - @override String get folderOrganizationNone => '構成がありません'; @@ -1250,20 +786,9 @@ class AppLocalizationsJa extends AppLocalizations { @override String get updateAvailable => '更新が利用可能です'; - @override - String updateNewVersion(String version) { - return 'バージョン $version が利用可能です'; - } - - @override - String get updateDownload => 'ダウンロード'; - @override String get updateLater => '後で'; - @override - String get updateChangelog => '更新履歴'; - @override String get updateStartingDownload => 'ダウンロードを開始中...'; @@ -1294,12 +819,6 @@ class AppLocalizationsJa extends AppLocalizations { @override String get updateDontRemind => '通知しない'; - @override - String get providerPriority => 'プロバイダーの優先度'; - - @override - String get providerPrioritySubtitle => 'ドラッグでダウンロードプロバイダーを並べ替え'; - @override String get providerPriorityTitle => 'プロバイダーの優先度'; @@ -1317,13 +836,6 @@ class AppLocalizationsJa extends AppLocalizations { @override String get providerExtension => '拡張'; - @override - String get metadataProviderPriority => 'メタデータプロバイダーの優先度'; - - @override - String get metadataProviderPrioritySubtitle => - 'Order used when fetching track metadata'; - @override String get metadataProviderPriorityTitle => 'メタデータの優先度'; @@ -1344,18 +856,6 @@ class AppLocalizationsJa extends AppLocalizations { @override String get logTitle => 'ログ'; - @override - String get logCopy => 'ログをコピー'; - - @override - String get logClear => 'ログを消去'; - - @override - String get logShare => 'ログを共有'; - - @override - String get logEmpty => 'まだログはありません'; - @override String get logCopied => 'ログをクリップボードにコピーしました'; @@ -1380,18 +880,6 @@ class AppLocalizationsJa extends AppLocalizations { @override String get logClearLogsMessage => 'すべてのログを消去してもよろしいですか?'; - @override - String get logIspBlocking => 'ISP のブロックを検出しました'; - - @override - String get logRateLimited => 'レート制限'; - - @override - String get logNetworkError => 'ネットワークエラー'; - - @override - String get logTrackNotFound => 'トラックがありません'; - @override String get logFilterBySeverity => 'Filter logs by severity'; @@ -1401,48 +889,6 @@ class AppLocalizationsJa extends AppLocalizations { @override String get logNoLogsYetSubtitle => 'Logs will appear here as you use the app'; - @override - String get logIssueSummary => '問題の概要'; - - @override - String get logIspBlockingDescription => - 'ISP がダウンロードサービスのアクセスをブロックしている可能性があります'; - - @override - String get logIspBlockingSuggestion => - 'VPN を使用するか DNS を 1.1.1.1 または 8.8.8.8 に変更をお試しください'; - - @override - String get logRateLimitedDescription => 'サービスへのリクエストが多すぎます'; - - @override - String get logRateLimitedSuggestion => - 'Wait a few minutes before trying again'; - - @override - String get logNetworkErrorDescription => '接続の問題が検出されました'; - - @override - String get logNetworkErrorSuggestion => 'インターネット接続を確認してください'; - - @override - String get logTrackNotFoundDescription => - 'Some tracks could not be found on download services'; - - @override - String get logTrackNotFoundSuggestion => - 'The track may not be available in lossless quality'; - - @override - String logTotalErrors(int count) { - return 'エラーの合計: $count'; - } - - @override - String logAffected(String domains) { - return '影響: $domains'; - } - @override String logEntriesFiltered(int count) { return 'エントリー ($count 個をフィルター済み)'; @@ -1549,9 +995,6 @@ class AppLocalizationsJa extends AppLocalizations { @override String get appearanceLanguage => 'アプリの言語'; - @override - String get appearanceLanguageSubtitle => 'お好みの言語を選択してください'; - @override String get settingsAppearanceSubtitle => 'テーマ、カラー、画面'; @@ -1573,19 +1016,11 @@ class AppLocalizationsJa extends AppLocalizations { @override String get pressBackAgainToExit => 'Press back again to exit'; - @override - String get tracksHeader => 'トラック'; - @override String downloadAllCount(int count) { return 'すべてダウンロード ($count)'; } - @override - String playAllCount(int count) { - return 'Play All ($count)'; - } - @override String tracksCount(int count) { String _temp0 = intl.Intl.pluralLogic( @@ -1694,11 +1129,6 @@ class AppLocalizationsJa extends AppLocalizations { String get trackDeleteConfirmMessage => 'This will permanently delete the downloaded file and remove it from your history.'; - @override - String trackCannotOpen(String message) { - return '開けません: $message'; - } - @override String get dateToday => '今日'; @@ -1720,18 +1150,6 @@ class AppLocalizationsJa extends AppLocalizations { return '$count ヶ月前'; } - @override - String get concurrentSequential => 'Sequential'; - - @override - String get concurrentParallel2 => '2 並列'; - - @override - String get concurrentParallel3 => '3 並列'; - - @override - String get tapToSeeError => 'タップでエラーの詳細を表示'; - @override String get storeFilterAll => 'すべて'; @@ -1753,15 +1171,6 @@ class AppLocalizationsJa extends AppLocalizations { @override String get storeClearFilters => 'フィルターを消去'; - @override - String get storeNoResults => '拡張がありません'; - - @override - String get extensionProviderPriority => 'プロバイダーの優先度'; - - @override - String get extensionInstallButton => '拡張をインストール'; - @override String get extensionDefaultProvider => 'デフォルト (Deezer/Spotify)'; @@ -1908,38 +1317,6 @@ class AppLocalizationsJa extends AppLocalizations { @override String get qualityHiResFlacMaxSubtitle => '24-bit / 最大 192kHz'; - @override - String get qualityLossy => 'Lossy'; - - @override - String get qualityLossyMp3Subtitle => 'MP3 320kbps (converted from FLAC)'; - - @override - String get qualityLossyOpusSubtitle => 'Opus 128kbps (converted from FLAC)'; - - @override - String get enableLossyOption => 'Enable Lossy Option'; - - @override - String get enableLossyOptionSubtitleOn => 'Lossy quality option is available'; - - @override - String get enableLossyOptionSubtitleOff => - 'Downloads FLAC then converts to lossy format'; - - @override - String get lossyFormat => 'Lossy Format'; - - @override - String get lossyFormatDescription => 'Choose the lossy format for conversion'; - - @override - String get lossyFormatMp3Subtitle => '320kbps, best compatibility'; - - @override - String get lossyFormatOpusSubtitle => - '128kbps, better quality at smaller size'; - @override String get qualityNote => '実際の品質はサービスからのトラックの可用性に依存します'; @@ -1953,24 +1330,6 @@ class AppLocalizationsJa extends AppLocalizations { @override String get youtubeMp3BitrateTitle => 'YouTube MP3 Bitrate'; - @override - String youtubeBitrateSubtitle(int bitrate, int min, int max) { - return '${bitrate}kbps ($min-$max)'; - } - - @override - String youtubeBitrateInputHelp(int min, int max) { - return 'Enter custom bitrate ($min-$max kbps)'; - } - - @override - String get youtubeBitrateFieldLabel => 'Bitrate (kbps)'; - - @override - String youtubeBitrateValidationError(int min, int max) { - return 'Bitrate must be between $min and $max kbps'; - } - @override String get downloadAskBeforeDownload => 'ダウンロード前に確認する'; @@ -1986,14 +1345,6 @@ class AppLocalizationsJa extends AppLocalizations { @override String get downloadUseAlbumArtistForFolders => 'Use Album Artist for folders'; - @override - String get downloadUseAlbumArtistForFoldersAlbumSubtitle => - 'Artist folders use Album Artist when available'; - - @override - String get downloadUseAlbumArtistForFoldersTrackSubtitle => - 'Artist folders use Track Artist only'; - @override String get downloadUsePrimaryArtistOnly => 'Primary artist only for folders'; @@ -2005,97 +1356,24 @@ class AppLocalizationsJa extends AppLocalizations { String get downloadUsePrimaryArtistOnlyDisabled => 'Full artist string used for folder name'; - @override - String get downloadSaveFormat => '形式を保存'; - - @override - String get downloadSelectService => 'サービスを選択'; - @override String get downloadSelectQuality => '品質を選択'; @override String get downloadFrom => 'ダウンロード元'; - @override - String get downloadDefaultQualityLabel => 'デフォルトの品質'; - - @override - String get downloadBestAvailable => 'おすすめ'; - - @override - String get folderNone => 'なし'; - - @override - String get folderNoneSubtitle => 'すべてのファイルをダウンロードフォルダに保存します'; - - @override - String get folderArtist => 'アーティスト'; - - @override - String get folderArtistSubtitle => 'アーティスト名/ファイル名'; - - @override - String get folderAlbum => 'アルバム'; - - @override - String get folderAlbumSubtitle => 'アルバム名/ファイル名'; - - @override - String get folderArtistAlbum => 'アーティスト/アルバム'; - - @override - String get folderArtistAlbumSubtitle => 'アーティスト名/アルバム名/ファイル名'; - - @override - String get serviceTidal => 'Tidal'; - - @override - String get serviceQobuz => 'Qobuz'; - - @override - String get serviceAmazon => 'Amazon'; - - @override - String get serviceDeezer => 'Deezer'; - - @override - String get serviceSpotify => 'Spotify'; - @override String get appearanceAmoledDark => 'AMOLED ダーク'; @override String get appearanceAmoledDarkSubtitle => 'ピュアブラックの背景'; - @override - String get appearanceChooseAccentColor => 'アクセントカラーを選択'; - - @override - String get appearanceChooseTheme => 'テーマモード'; - - @override - String get queueTitle => 'ダウンロードキュー'; - @override String get queueClearAll => 'すべて消去'; @override String get queueClearAllMessage => 'すべてのダウンロードを消去してもよろしいですか?'; - @override - String get queueExportFailed => 'Export'; - - @override - String get queueExportFailedSuccess => - 'Failed downloads exported to TXT file'; - - @override - String get queueExportFailedClear => 'Clear Failed'; - - @override - String get queueExportFailedError => 'Failed to export downloads'; - @override String get settingsAutoExportFailed => 'Auto-export failed downloads'; @@ -2116,30 +1394,6 @@ class AppLocalizationsJa extends AppLocalizations { String get settingsDownloadNetworkSubtitle => 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; - @override - String get queueEmpty => 'キューにダウンロードがありません'; - - @override - String get queueEmptySubtitle => 'ホーム画面からトラックを追加'; - - @override - String get queueClearCompleted => '完了済みを消去'; - - @override - String get queueDownloadFailed => 'ダウンロードに失敗しました'; - - @override - String get queueTrackLabel => 'トラック:'; - - @override - String get queueArtistLabel => 'アーティスト:'; - - @override - String get queueErrorLabel => 'エラー:'; - - @override - String get queueUnknownError => '不明なエラー'; - @override String get albumFolderArtistAlbum => 'アーティスト / アルバム'; @@ -2185,14 +1439,6 @@ class AppLocalizationsJa extends AppLocalizations { return 'Delete $count $_temp0 from this album?\n\nThis will also delete the files from storage.'; } - @override - String get downloadedAlbumTracksHeader => 'トラック'; - - @override - String downloadedAlbumDownloadedCount(int count) { - return '$count 個をダウンロード済み'; - } - @override String downloadedAlbumSelectedCount(int count) { return '$count 個を選択済み'; @@ -2223,9 +1469,6 @@ class AppLocalizationsJa extends AppLocalizations { return 'ディスク $discNumber'; } - @override - String get utilityFunctions => 'ユーティリティ機能'; - @override String get recentTypeArtist => 'アーティスト'; @@ -2249,23 +1492,12 @@ class AppLocalizationsJa extends AppLocalizations { return 'プレイリスト: $name'; } - @override - String errorGeneric(String message) { - return 'エラー: $message'; - } - @override String get discographyDownload => 'ディスコグラフィをダウンロード'; - @override - String get discographyPlay => 'Play Discography'; - @override String get discographyDownloadAll => 'すべてダウンロード'; - @override - String get discographyPlayAll => 'Play All'; - @override String discographyDownloadAllSubtitle(int count, int albumCount) { return '$albumCount 個のリリースから $count 個のトラック'; @@ -2310,9 +1542,6 @@ class AppLocalizationsJa extends AppLocalizations { @override String get discographyDownloadSelected => '選択済みをダウンロード'; - @override - String get discographyPlaySelected => 'Play Selected'; - @override String discographyAddedToQueue(int count) { return 'Added $count tracks to queue'; @@ -2368,9 +1597,6 @@ class AppLocalizationsJa extends AppLocalizations { @override String get libraryTitle => 'Local Library'; - @override - String get libraryStatus => 'Library Status'; - @override String get libraryScanSettings => 'Scan Settings'; @@ -2433,11 +1659,6 @@ class AppLocalizationsJa extends AppLocalizations { String get libraryAboutDescription => 'Scans your existing music collection to detect duplicates when downloading. Supports FLAC, M4A, MP3, Opus, and OGG formats. Metadata is read from file tags when available.'; - @override - String libraryTracksCount(int count) { - return '$count tracks'; - } - @override String libraryTracksUnit(int count) { String _temp0 = intl.Intl.pluralLogic( @@ -2528,21 +1749,6 @@ class AppLocalizationsJa extends AppLocalizations { @override String get libraryFilterFormat => 'Format'; - @override - String get libraryFilterDate => 'Date Added'; - - @override - String get libraryFilterDateToday => 'Today'; - - @override - String get libraryFilterDateWeek => 'This Week'; - - @override - String get libraryFilterDateMonth => 'This Month'; - - @override - String get libraryFilterDateYear => 'This Year'; - @override String get libraryFilterSort => 'Sort'; @@ -2552,11 +1758,6 @@ class AppLocalizationsJa extends AppLocalizations { @override String get libraryFilterSortOldest => 'Oldest'; - @override - String libraryFilterActive(int count) { - return '$count filter(s) active'; - } - @override String get timeJustNow => 'Just now'; @@ -2582,72 +1783,6 @@ class AppLocalizationsJa extends AppLocalizations { return '$_temp0'; } - @override - String get storageSwitchTitle => 'Switch Storage Mode'; - - @override - String get storageSwitchToSafTitle => 'Switch to SAF Storage?'; - - @override - String get storageSwitchToAppTitle => 'Switch to App Storage?'; - - @override - String get storageSwitchToSafMessage => - 'Your existing downloads will remain in the current location and stay accessible.\n\nNew downloads will be saved to your selected SAF folder.'; - - @override - String get storageSwitchToAppMessage => - 'Your existing downloads will remain in the current SAF location and stay accessible.\n\nNew downloads will be saved to Music/SpotiFLAC folder.'; - - @override - String get storageSwitchExistingDownloads => 'Existing Downloads'; - - @override - String storageSwitchExistingDownloadsInfo(int count, String mode) { - return '$count tracks in $mode storage'; - } - - @override - String get storageSwitchNewDownloads => 'New Downloads'; - - @override - String storageSwitchNewDownloadsLocation(String location) { - return 'Will be saved to: $location'; - } - - @override - String get storageSwitchContinue => 'Continue'; - - @override - String get storageSwitchSelectFolder => 'Select SAF Folder'; - - @override - String get storageAppStorage => 'App Storage'; - - @override - String get storageSafStorage => 'SAF Storage'; - - @override - String storageModeBadge(String mode) { - return 'Storage: $mode'; - } - - @override - String get storageStatsTitle => 'Storage Statistics'; - - @override - String storageStatsAppCount(int count) { - return '$count tracks in App Storage'; - } - - @override - String storageStatsSafCount(int count) { - return '$count tracks in SAF Storage'; - } - - @override - String get storageModeInfo => 'Your files are stored in multiple locations'; - @override String get tutorialWelcomeTitle => 'Welcome to SpotiFLAC!'; @@ -2674,18 +1809,6 @@ class AppLocalizationsJa extends AppLocalizations { String get tutorialSearchDesc => 'There are two easy ways to find music you want to download.'; - @override - String get tutorialSearchTip1 => - 'Paste a Spotify or Deezer URL directly in the search box'; - - @override - String get tutorialSearchTip2 => - 'Or type the song name, artist, or album to search'; - - @override - String get tutorialSearchTip3 => - 'Supports tracks, albums, playlists, and artist pages'; - @override String get tutorialDownloadTitle => 'Downloading Music'; @@ -2693,18 +1816,6 @@ class AppLocalizationsJa extends AppLocalizations { String get tutorialDownloadDesc => 'Downloading music is simple and fast. Here\'s how it works.'; - @override - String get tutorialDownloadTip1 => - 'Tap the download button next to any track to start downloading'; - - @override - String get tutorialDownloadTip2 => - 'Choose your preferred quality (FLAC, Hi-Res, or MP3)'; - - @override - String get tutorialDownloadTip3 => - 'Download entire albums or playlists with one tap'; - @override String get tutorialLibraryTitle => 'Your Library'; @@ -2765,9 +1876,6 @@ class AppLocalizationsJa extends AppLocalizations { String get tutorialReadyMessage => 'You\'re all set! Start downloading your favorite music now.'; - @override - String get tutorialExample => 'EXAMPLE'; - @override String get libraryForceFullScan => 'Force Full Scan'; @@ -2930,10 +2038,6 @@ class AppLocalizationsJa extends AppLocalizations { @override String get trackReEnrich => 'Re-enrich'; - @override - String get trackReEnrichSubtitle => - 'Re-embed metadata without re-downloading'; - @override String get trackReEnrichOnlineSubtitle => 'Search metadata online and embed into file'; @@ -3214,36 +2318,15 @@ class AppLocalizationsJa extends AppLocalizations { } @override - String get setupModeSelectionTitle => 'モードを選択'; + String downloadedAlbumDownloadedCount(int count) { + return '$count 個をダウンロード済み'; + } @override - String get setupModeSelectionDescription => - 'SpotiFLACをどのように使いますか?この設定は後からいつでも変更できます。'; + String get downloadUseAlbumArtistForFoldersAlbumSubtitle => + 'Artist folders use Album Artist when available'; @override - String get setupModeDownloaderTitle => 'ダウンローダー'; - - @override - String get setupModeDownloaderFeature1 => 'ロスレスFLAC品質でトラックをダウンロード'; - - @override - String get setupModeDownloaderFeature2 => 'オフライン再生用に音楽をデバイスに保存'; - - @override - String get setupModeDownloaderFeature3 => 'ローカル音楽ライブラリを管理'; - - @override - String get setupModeStreamingTitle => 'ストリーミング'; - - @override - String get setupModeStreamingFeature1 => 'ダウンロードせずにトラックを即座にストリーミング'; - - @override - String get setupModeStreamingFeature2 => 'Smart Queueが自動的に新しい音楽を見つけます'; - - @override - String get setupModeStreamingFeature3 => '再生コントロールで任意のトラックをオンデマンド再生'; - - @override - String get setupModeChangeableLater => '設定からいつでもモードを切り替えられます。'; + String get downloadUseAlbumArtistForFoldersTrackSubtitle => + 'Artist folders use Track Artist only'; } diff --git a/lib/l10n/app_localizations_ko.dart b/lib/l10n/app_localizations_ko.dart index ce04dc34..f94d1f3f 100644 --- a/lib/l10n/app_localizations_ko.dart +++ b/lib/l10n/app_localizations_ko.dart @@ -11,19 +11,12 @@ class AppLocalizationsKo extends AppLocalizations { @override String get appName => 'SpotiFLAC'; - @override - String get appDescription => - 'Spotify 트랙을 Tidal, Qobuz, Amazon Music에서 무손실 음질로 다운로드하세요.'; - @override String get navHome => 'Home'; @override String get navLibrary => 'Library'; - @override - String get navHistory => 'History'; - @override String get navSettings => 'Settings'; @@ -33,14 +26,6 @@ class AppLocalizationsKo extends AppLocalizations { @override String get homeTitle => 'Home'; - @override - String get homeSearchHint => 'Spotify URL을 붙여 넣거나 검색'; - - @override - String homeSearchHintExtension(String extensionName) { - return '$extensionName에서 검색'; - } - @override String get homeSubtitle => 'Spotify URL을 붙여 넣거나 검색'; @@ -50,17 +35,6 @@ class AppLocalizationsKo extends AppLocalizations { @override String get homeRecent => '최근 기록'; - @override - String get historyTitle => '기록'; - - @override - String historyDownloading(int count) { - return '다운로드 중... $count'; - } - - @override - String get historyDownloaded => '다운로드 목록'; - @override String get historyFilterAll => 'All'; @@ -70,48 +44,6 @@ class AppLocalizationsKo extends AppLocalizations { @override String get historyFilterSingles => 'Singles'; - @override - String historyTracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '${count}tracks', - one: '1 track', - ); - return '$_temp0'; - } - - @override - String historyAlbumsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count albums', - one: '1 album', - ); - return '$_temp0'; - } - - @override - String get historyNoDownloads => 'No download history'; - - @override - String get historyNoDownloadsSubtitle => 'Downloaded tracks will appear here'; - - @override - String get historyNoAlbums => 'No album downloads'; - - @override - String get historyNoAlbumsSubtitle => - 'Download multiple tracks from an album to see them here'; - - @override - String get historyNoSingles => 'No single downloads'; - - @override - String get historyNoSinglesSubtitle => - 'Single track downloads will appear here'; - @override String get historySearchHint => 'Search history...'; @@ -136,27 +68,6 @@ class AppLocalizationsKo extends AppLocalizations { @override String get downloadTitle => 'Download'; - @override - String get downloadLocation => 'Download Location'; - - @override - String get downloadLocationSubtitle => 'Choose where to save files'; - - @override - String get downloadLocationDefault => 'Default location'; - - @override - String get downloadDefaultService => 'Default Service'; - - @override - String get downloadDefaultServiceSubtitle => 'Service used for downloads'; - - @override - String get downloadDefaultQuality => 'Default Quality'; - - @override - String get downloadAskQuality => 'Ask Quality Before Download'; - @override String get downloadAskQualitySubtitle => 'Show quality picker for each download'; @@ -167,31 +78,9 @@ class AppLocalizationsKo extends AppLocalizations { @override String get downloadFolderOrganization => 'Folder Organization'; - @override - String get downloadSeparateSingles => 'Separate Singles'; - - @override - String get downloadSeparateSinglesSubtitle => - 'Put single tracks in a separate folder'; - - @override - String get qualityBest => 'Best Available'; - - @override - String get qualityFlac => 'FLAC'; - - @override - String get quality320 => '320 kbps'; - - @override - String get quality128 => '128 kbps'; - @override String get appearanceTitle => 'Appearance'; - @override - String get appearanceTheme => 'Theme'; - @override String get appearanceThemeSystem => 'System'; @@ -207,9 +96,6 @@ class AppLocalizationsKo extends AppLocalizations { @override String get appearanceDynamicColorSubtitle => 'Use colors from your wallpaper'; - @override - String get appearanceAccentColor => 'Accent Color'; - @override String get appearanceHistoryView => 'History View'; @@ -222,9 +108,6 @@ class AppLocalizationsKo extends AppLocalizations { @override String get optionsTitle => 'Options'; - @override - String get optionsSearchSource => 'Search Source'; - @override String get optionsPrimaryProvider => 'Primary Provider'; @@ -247,33 +130,6 @@ class AppLocalizationsKo extends AppLocalizations { @override String get optionsAutoFallbackSubtitle => '다운로드가 실패한 경우, 다른 서비스로 재시도'; - @override - String get optionsAutoSkipUnavailableTracks => 'Auto Skip Unavailable Tracks'; - - @override - String get optionsAutoSkipUnavailableTracksSubtitleOn => - 'Automatically skip to the next queue track when a stream cannot be resolved.'; - - @override - String get optionsAutoSkipUnavailableTracksSubtitleOff => - 'Stop on failed track resolution and show an error.'; - - @override - String get optionsInteractionMode => 'Interaction Mode'; - - @override - String get modeDownloader => 'Downloader Mode'; - - @override - String get modeDownloaderSubtitle => - 'Tap tracks to add them to download queue'; - - @override - String get modeStreaming => 'Streaming Mode'; - - @override - String get modeStreamingSubtitle => 'Tap tracks to play instantly'; - @override String get optionsUseExtensionProviders => 'Use Extension Providers'; @@ -376,18 +232,6 @@ class AppLocalizationsKo extends AppLocalizations { @override String get extensionsTitle => 'Extensions'; - @override - String get extensionsInstalled => 'Installed Extensions'; - - @override - String get extensionsNone => 'No extensions installed'; - - @override - String get extensionsNoneSubtitle => 'Install extensions from the Store tab'; - - @override - String get extensionsEnabled => 'Enabled'; - @override String get extensionsDisabled => 'Disabled'; @@ -404,9 +248,6 @@ class AppLocalizationsKo extends AppLocalizations { @override String get extensionsUninstall => 'Uninstall'; - @override - String get extensionsSetAsSearch => 'Set as Search Provider'; - @override String get storeTitle => 'Extension Store'; @@ -480,9 +321,6 @@ class AppLocalizationsKo extends AppLocalizations { @override String get aboutSocial => 'Social'; - @override - String get aboutSupport => 'Support'; - @override String get aboutApp => 'App'; @@ -501,13 +339,6 @@ class AppLocalizationsKo extends AppLocalizations { String get aboutSjdonadoDesc => 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; - @override - String get aboutDoubleDouble => 'DoubleDouble'; - - @override - String get aboutDoubleDoubleDesc => - 'Amazing API for Amazon Music downloads. Thank you for making it free!'; - @override String get aboutDabMusic => 'DAB Music'; @@ -526,32 +357,6 @@ class AppLocalizationsKo extends AppLocalizations { String get aboutAppDescription => 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; - @override - String get albumTitle => 'Album'; - - @override - String albumTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks', - one: '1 track', - ); - return '$_temp0'; - } - - @override - String get albumDownloadAll => 'Download All'; - - @override - String get albumDownloadRemaining => 'Download Remaining'; - - @override - String get playlistTitle => 'Playlist'; - - @override - String get artistTitle => 'Artist'; - @override String get artistAlbums => 'Albums'; @@ -561,17 +366,6 @@ class AppLocalizationsKo extends AppLocalizations { @override String get artistCompilations => 'Compilations'; - @override - String artistReleases(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count releases', - one: '1 release', - ); - return '$_temp0'; - } - @override String get artistPopular => 'Popular'; @@ -580,27 +374,6 @@ class AppLocalizationsKo extends AppLocalizations { return '$count monthly listeners'; } - @override - String get trackMetadataTitle => 'Track Info'; - - @override - String get trackMetadataArtist => 'Artist'; - - @override - String get trackMetadataAlbum => 'Album'; - - @override - String get trackMetadataDuration => 'Duration'; - - @override - String get trackMetadataQuality => 'Quality'; - - @override - String get trackMetadataPath => 'File Path'; - - @override - String get trackMetadataDownloadedAt => 'Downloaded'; - @override String get trackMetadataService => 'Service'; @@ -613,53 +386,15 @@ class AppLocalizationsKo extends AppLocalizations { @override String get trackMetadataDelete => 'Delete'; - @override - String get trackMetadataRedownload => 'Re-download'; - - @override - String get trackMetadataOpenFolder => 'Open Folder'; - - @override - String get setupTitle => 'Welcome to SpotiFLAC'; - - @override - String get setupSubtitle => 'Let\'s get you started'; - - @override - String get setupStoragePermission => 'Storage Permission'; - - @override - String get setupStoragePermissionSubtitle => - 'Required to save downloaded files'; - - @override - String get setupStoragePermissionGranted => 'Permission granted'; - - @override - String get setupStoragePermissionDenied => 'Permission denied'; - @override String get setupGrantPermission => 'Grant Permission'; - @override - String get setupDownloadLocation => 'Download Location'; - - @override - String get setupChooseFolder => 'Choose Folder'; - - @override - String get setupContinue => 'Continue'; - @override String get setupSkip => 'Skip for now'; @override String get setupStorageAccessRequired => 'Storage Access Required'; - @override - String get setupStorageAccessMessage => - 'SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.'; - @override String get setupStorageAccessMessageAndroid11 => 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; @@ -681,9 +416,6 @@ class AppLocalizationsKo extends AppLocalizations { return '$permissionType permission is required for the best experience. You can change this later in Settings.'; } - @override - String get setupSelectDownloadFolder => 'Select Download Folder'; - @override String get setupUseDefaultFolder => 'Use Default Folder?'; @@ -725,21 +457,6 @@ class AppLocalizationsKo extends AppLocalizations { @override String get setupDownloadInFlac => 'Download Spotify tracks in FLAC'; - @override - String get setupStepStorage => 'Storage'; - - @override - String get setupStepNotification => 'Notification'; - - @override - String get setupStepFolder => 'Folder'; - - @override - String get setupStepSpotify => 'Spotify'; - - @override - String get setupStepPermission => 'Permission'; - @override String get setupStorageGranted => 'Storage Permission Granted!'; @@ -756,13 +473,6 @@ class AppLocalizationsKo extends AppLocalizations { @override String get setupNotificationEnable => 'Enable Notifications'; - @override - String get setupNotificationDescription => - 'Get notified when downloads complete or require attention.'; - - @override - String get setupFolderSelected => 'Download Folder Selected!'; - @override String get setupFolderChoose => 'Choose Download Folder'; @@ -770,48 +480,12 @@ class AppLocalizationsKo extends AppLocalizations { String get setupFolderDescription => 'Select a folder where your downloaded music will be saved.'; - @override - String get setupChangeFolder => 'Change Folder'; - @override String get setupSelectFolder => 'Select Folder'; - @override - String get setupSpotifyApiOptional => 'Spotify API (Optional)'; - - @override - String get setupSpotifyApiDescription => - 'Add your Spotify API credentials for better search results and access to Spotify-exclusive content.'; - - @override - String get setupUseSpotifyApi => 'Use Spotify API'; - - @override - String get setupEnterCredentialsBelow => 'Enter your credentials below'; - - @override - String get setupUsingDeezer => 'Using Deezer (no account needed)'; - - @override - String get setupEnterClientId => 'Enter Spotify Client ID'; - - @override - String get setupEnterClientSecret => 'Enter Spotify Client Secret'; - - @override - String get setupGetFreeCredentials => - 'Get your free API credentials from the Spotify Developer Dashboard.'; - @override String get setupEnableNotifications => 'Enable Notifications'; - @override - String get setupProceedToNextStep => 'You can now proceed to the next step.'; - - @override - String get setupNotificationProgressDescription => - 'You will receive download progress notifications.'; - @override String get setupNotificationBackgroundDescription => 'Get notified about download progress and completion. This helps you track downloads when the app is in background.'; @@ -819,32 +493,19 @@ class AppLocalizationsKo extends AppLocalizations { @override String get setupSkipForNow => 'Skip for now'; - @override - String get setupBack => 'Back'; - @override String get setupNext => 'Next'; @override String get setupGetStarted => 'Get Started'; - @override - String get setupSkipAndStart => 'Skip & Start'; - @override String get setupAllowAccessToManageFiles => 'Please enable \"Allow access to manage all files\" in the next screen.'; - @override - String get setupGetCredentialsFromSpotify => - 'Get credentials from developer.spotify.com'; - @override String get dialogCancel => 'Cancel'; - @override - String get dialogOk => 'OK'; - @override String get dialogSave => 'Save'; @@ -854,21 +515,9 @@ class AppLocalizationsKo extends AppLocalizations { @override String get dialogRetry => 'Retry'; - @override - String get dialogClose => 'Close'; - - @override - String get dialogYes => 'Yes'; - - @override - String get dialogNo => 'No'; - @override String get dialogClear => 'Clear'; - @override - String get dialogConfirm => 'Confirm'; - @override String get dialogDone => 'Done'; @@ -891,28 +540,9 @@ class AppLocalizationsKo extends AppLocalizations { String get dialogUnsavedChanges => 'You have unsaved changes. Do you want to discard them?'; - @override - String get dialogDownloadFailed => 'Download Failed'; - - @override - String get dialogTrackLabel => 'Track:'; - - @override - String get dialogArtistLabel => 'Artist:'; - - @override - String get dialogErrorLabel => 'Error:'; - @override String get dialogClearAll => 'Clear All'; - @override - String get dialogClearAllDownloads => - 'Are you sure you want to clear all downloads?'; - - @override - String get dialogRemoveFromDevice => 'Remove from device?'; - @override String get dialogRemoveExtension => 'Remove Extension'; @@ -1013,11 +643,6 @@ class AppLocalizationsKo extends AppLocalizations { @override String get snackbarViewQueue => 'View Queue'; - @override - String snackbarFailedToLoad(String error) { - return 'Failed to load: $error'; - } - @override String snackbarUrlCopied(String platform) { return '$platform URL copied to clipboard'; @@ -1059,44 +684,14 @@ class AppLocalizationsKo extends AppLocalizations { String get errorRateLimitedMessage => 'Too many requests. Please wait a moment before searching again.'; - @override - String errorFailedToLoad(String item) { - return 'Failed to load $item'; - } - @override String get errorNoTracksFound => 'No tracks found'; - @override - String get errorSeekNotSupported => - 'Seeking is not supported for this live stream'; - @override String errorMissingExtensionSource(String item) { return 'Cannot load $item: missing extension source'; } - @override - String get statusQueued => 'Queued'; - - @override - String get statusDownloading => 'Downloading'; - - @override - String get statusFinalizing => 'Finalizing'; - - @override - String get statusCompleted => 'Completed'; - - @override - String get statusFailed => 'Failed'; - - @override - String get statusSkipped => 'Skipped'; - - @override - String get statusPaused => 'Paused'; - @override String get actionPause => 'Pause'; @@ -1106,24 +701,12 @@ class AppLocalizationsKo extends AppLocalizations { @override String get actionCancel => 'Cancel'; - @override - String get actionStop => 'Stop'; - - @override - String get actionSelect => 'Select'; - @override String get actionSelectAll => 'Select All'; @override String get actionDeselect => 'Deselect'; - @override - String get actionPaste => 'Paste'; - - @override - String get actionImportCsv => 'Import CSV'; - @override String get actionRemoveCredentials => 'Remove Credentials'; @@ -1138,20 +721,6 @@ class AppLocalizationsKo extends AppLocalizations { @override String get selectionAllSelected => 'All tracks selected'; - @override - String get selectionTapToSelect => 'Tap tracks to select'; - - @override - String selectionDeleteTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Delete $count $_temp0'; - } - @override String get selectionSelectToDelete => 'Select tracks to delete'; @@ -1178,40 +747,9 @@ class AppLocalizationsKo extends AppLocalizations { @override String get tooltipPlay => 'Play'; - @override - String get tooltipCancel => 'Cancel'; - - @override - String get tooltipStop => 'Stop'; - - @override - String get tooltipRetry => 'Retry'; - - @override - String get tooltipRemove => 'Remove'; - - @override - String get tooltipClear => 'Clear'; - - @override - String get tooltipPaste => 'Paste'; - @override String get filenameFormat => 'Filename Format'; - @override - String filenameFormatPreview(String preview) { - return 'Preview: $preview'; - } - - @override - String get filenameAvailablePlaceholders => 'Available placeholders:'; - - @override - String filenameHint(Object artist, Object title) { - return '$artist - $title'; - } - @override String get filenameShowAdvancedTags => 'Show advanced tags'; @@ -1219,9 +757,6 @@ class AppLocalizationsKo extends AppLocalizations { String get filenameShowAdvancedTagsDescription => 'Enable formatted tags for track padding and date patterns'; - @override - String get folderOrganization => 'Folder Organization'; - @override String get folderOrganizationNone => 'No organization'; @@ -1256,20 +791,9 @@ class AppLocalizationsKo extends AppLocalizations { @override String get updateAvailable => 'Update Available'; - @override - String updateNewVersion(String version) { - return 'Version $version is available'; - } - - @override - String get updateDownload => 'Download'; - @override String get updateLater => 'Later'; - @override - String get updateChangelog => 'Changelog'; - @override String get updateStartingDownload => 'Starting download...'; @@ -1300,12 +824,6 @@ class AppLocalizationsKo extends AppLocalizations { @override String get updateDontRemind => 'Don\'t remind'; - @override - String get providerPriority => 'Provider Priority'; - - @override - String get providerPrioritySubtitle => 'Drag to reorder download providers'; - @override String get providerPriorityTitle => 'Provider Priority'; @@ -1323,13 +841,6 @@ class AppLocalizationsKo extends AppLocalizations { @override String get providerExtension => 'Extension'; - @override - String get metadataProviderPriority => 'Metadata Provider Priority'; - - @override - String get metadataProviderPrioritySubtitle => - 'Order used when fetching track metadata'; - @override String get metadataProviderPriorityTitle => 'Metadata Priority'; @@ -1350,18 +861,6 @@ class AppLocalizationsKo extends AppLocalizations { @override String get logTitle => 'Logs'; - @override - String get logCopy => 'Copy Logs'; - - @override - String get logClear => 'Clear Logs'; - - @override - String get logShare => 'Share Logs'; - - @override - String get logEmpty => 'No logs yet'; - @override String get logCopied => 'Logs copied to clipboard'; @@ -1386,18 +885,6 @@ class AppLocalizationsKo extends AppLocalizations { @override String get logClearLogsMessage => 'Are you sure you want to clear all logs?'; - @override - String get logIspBlocking => 'ISP BLOCKING DETECTED'; - - @override - String get logRateLimited => 'RATE LIMITED'; - - @override - String get logNetworkError => 'NETWORK ERROR'; - - @override - String get logTrackNotFound => 'TRACK NOT FOUND'; - @override String get logFilterBySeverity => 'Filter logs by severity'; @@ -1407,48 +894,6 @@ class AppLocalizationsKo extends AppLocalizations { @override String get logNoLogsYetSubtitle => 'Logs will appear here as you use the app'; - @override - String get logIssueSummary => 'Issue Summary'; - - @override - String get logIspBlockingDescription => - 'Your ISP may be blocking access to download services'; - - @override - String get logIspBlockingSuggestion => - 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; - - @override - String get logRateLimitedDescription => 'Too many requests to the service'; - - @override - String get logRateLimitedSuggestion => - 'Wait a few minutes before trying again'; - - @override - String get logNetworkErrorDescription => 'Connection issues detected'; - - @override - String get logNetworkErrorSuggestion => 'Check your internet connection'; - - @override - String get logTrackNotFoundDescription => - 'Some tracks could not be found on download services'; - - @override - String get logTrackNotFoundSuggestion => - 'The track may not be available in lossless quality'; - - @override - String logTotalErrors(int count) { - return 'Total errors: $count'; - } - - @override - String logAffected(String domains) { - return 'Affected: $domains'; - } - @override String logEntriesFiltered(int count) { return 'Entries ($count filtered)'; @@ -1555,9 +1000,6 @@ class AppLocalizationsKo extends AppLocalizations { @override String get appearanceLanguage => 'App Language'; - @override - String get appearanceLanguageSubtitle => 'Choose your preferred language'; - @override String get settingsAppearanceSubtitle => 'Theme, colors, display'; @@ -1579,19 +1021,11 @@ class AppLocalizationsKo extends AppLocalizations { @override String get pressBackAgainToExit => 'Press back again to exit'; - @override - String get tracksHeader => 'Tracks'; - @override String downloadAllCount(int count) { return 'Download All ($count)'; } - @override - String playAllCount(int count) { - return 'Play All ($count)'; - } - @override String tracksCount(int count) { String _temp0 = intl.Intl.pluralLogic( @@ -1700,11 +1134,6 @@ class AppLocalizationsKo extends AppLocalizations { String get trackDeleteConfirmMessage => 'This will permanently delete the downloaded file and remove it from your history.'; - @override - String trackCannotOpen(String message) { - return 'Cannot open: $message'; - } - @override String get dateToday => 'Today'; @@ -1726,18 +1155,6 @@ class AppLocalizationsKo extends AppLocalizations { return '$count months ago'; } - @override - String get concurrentSequential => 'Sequential'; - - @override - String get concurrentParallel2 => '2 Parallel'; - - @override - String get concurrentParallel3 => '3 Parallel'; - - @override - String get tapToSeeError => 'Tap to see error details'; - @override String get storeFilterAll => 'All'; @@ -1759,15 +1176,6 @@ class AppLocalizationsKo extends AppLocalizations { @override String get storeClearFilters => 'Clear filters'; - @override - String get storeNoResults => 'No extensions found'; - - @override - String get extensionProviderPriority => 'Provider Priority'; - - @override - String get extensionInstallButton => 'Install Extension'; - @override String get extensionDefaultProvider => 'Default (Deezer/Spotify)'; @@ -1918,38 +1326,6 @@ class AppLocalizationsKo extends AppLocalizations { @override String get qualityHiResFlacMaxSubtitle => '24-bit / up to 192kHz'; - @override - String get qualityLossy => 'Lossy'; - - @override - String get qualityLossyMp3Subtitle => 'MP3 320kbps (converted from FLAC)'; - - @override - String get qualityLossyOpusSubtitle => 'Opus 128kbps (converted from FLAC)'; - - @override - String get enableLossyOption => 'Enable Lossy Option'; - - @override - String get enableLossyOptionSubtitleOn => 'Lossy quality option is available'; - - @override - String get enableLossyOptionSubtitleOff => - 'Downloads FLAC then converts to lossy format'; - - @override - String get lossyFormat => 'Lossy Format'; - - @override - String get lossyFormatDescription => 'Choose the lossy format for conversion'; - - @override - String get lossyFormatMp3Subtitle => '320kbps, best compatibility'; - - @override - String get lossyFormatOpusSubtitle => - '128kbps, better quality at smaller size'; - @override String get qualityNote => 'Actual quality depends on track availability from the service'; @@ -1964,24 +1340,6 @@ class AppLocalizationsKo extends AppLocalizations { @override String get youtubeMp3BitrateTitle => 'YouTube MP3 Bitrate'; - @override - String youtubeBitrateSubtitle(int bitrate, int min, int max) { - return '${bitrate}kbps ($min-$max)'; - } - - @override - String youtubeBitrateInputHelp(int min, int max) { - return 'Enter custom bitrate ($min-$max kbps)'; - } - - @override - String get youtubeBitrateFieldLabel => 'Bitrate (kbps)'; - - @override - String youtubeBitrateValidationError(int min, int max) { - return 'Bitrate must be between $min and $max kbps'; - } - @override String get downloadAskBeforeDownload => 'Ask Before Download'; @@ -1997,14 +1355,6 @@ class AppLocalizationsKo extends AppLocalizations { @override String get downloadUseAlbumArtistForFolders => 'Use Album Artist for folders'; - @override - String get downloadUseAlbumArtistForFoldersAlbumSubtitle => - 'Artist folders use Album Artist when available'; - - @override - String get downloadUseAlbumArtistForFoldersTrackSubtitle => - 'Artist folders use Track Artist only'; - @override String get downloadUsePrimaryArtistOnly => 'Primary artist only for folders'; @@ -2016,78 +1366,18 @@ class AppLocalizationsKo extends AppLocalizations { String get downloadUsePrimaryArtistOnlyDisabled => 'Full artist string used for folder name'; - @override - String get downloadSaveFormat => 'Save Format'; - - @override - String get downloadSelectService => 'Select Service'; - @override String get downloadSelectQuality => 'Select Quality'; @override String get downloadFrom => 'Download From'; - @override - String get downloadDefaultQualityLabel => 'Default Quality'; - - @override - String get downloadBestAvailable => 'Best available'; - - @override - String get folderNone => 'None'; - - @override - String get folderNoneSubtitle => 'Save all files directly to download folder'; - - @override - String get folderArtist => 'Artist'; - - @override - String get folderArtistSubtitle => 'Artist Name/filename'; - - @override - String get folderAlbum => 'Album'; - - @override - String get folderAlbumSubtitle => 'Album Name/filename'; - - @override - String get folderArtistAlbum => 'Artist/Album'; - - @override - String get folderArtistAlbumSubtitle => 'Artist Name/Album Name/filename'; - - @override - String get serviceTidal => 'Tidal'; - - @override - String get serviceQobuz => 'Qobuz'; - - @override - String get serviceAmazon => 'Amazon'; - - @override - String get serviceDeezer => 'Deezer'; - - @override - String get serviceSpotify => 'Spotify'; - @override String get appearanceAmoledDark => 'AMOLED Dark'; @override String get appearanceAmoledDarkSubtitle => 'Pure black background'; - @override - String get appearanceChooseAccentColor => 'Choose Accent Color'; - - @override - String get appearanceChooseTheme => 'Theme Mode'; - - @override - String get queueTitle => 'Download Queue'; - @override String get queueClearAll => 'Clear All'; @@ -2095,19 +1385,6 @@ class AppLocalizationsKo extends AppLocalizations { String get queueClearAllMessage => 'Are you sure you want to clear all downloads?'; - @override - String get queueExportFailed => 'Export'; - - @override - String get queueExportFailedSuccess => - 'Failed downloads exported to TXT file'; - - @override - String get queueExportFailedClear => 'Clear Failed'; - - @override - String get queueExportFailedError => 'Failed to export downloads'; - @override String get settingsAutoExportFailed => 'Auto-export failed downloads'; @@ -2128,30 +1405,6 @@ class AppLocalizationsKo extends AppLocalizations { String get settingsDownloadNetworkSubtitle => 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; - @override - String get queueEmpty => 'No downloads in queue'; - - @override - String get queueEmptySubtitle => 'Add tracks from the home screen'; - - @override - String get queueClearCompleted => 'Clear completed'; - - @override - String get queueDownloadFailed => 'Download Failed'; - - @override - String get queueTrackLabel => 'Track:'; - - @override - String get queueArtistLabel => 'Artist:'; - - @override - String get queueErrorLabel => 'Error:'; - - @override - String get queueUnknownError => 'Unknown error'; - @override String get albumFolderArtistAlbum => 'Artist / Album'; @@ -2198,14 +1451,6 @@ class AppLocalizationsKo extends AppLocalizations { return 'Delete $count $_temp0 from this album?\n\nThis will also delete the files from storage.'; } - @override - String get downloadedAlbumTracksHeader => 'Tracks'; - - @override - String downloadedAlbumDownloadedCount(int count) { - return '$count downloaded'; - } - @override String downloadedAlbumSelectedCount(int count) { return '$count selected'; @@ -2236,9 +1481,6 @@ class AppLocalizationsKo extends AppLocalizations { return 'Disc $discNumber'; } - @override - String get utilityFunctions => 'Utility Functions'; - @override String get recentTypeArtist => 'Artist'; @@ -2262,23 +1504,12 @@ class AppLocalizationsKo extends AppLocalizations { return 'Playlist: $name'; } - @override - String errorGeneric(String message) { - return 'Error: $message'; - } - @override String get discographyDownload => 'Download Discography'; - @override - String get discographyPlay => 'Play Discography'; - @override String get discographyDownloadAll => 'Download All'; - @override - String get discographyPlayAll => 'Play All'; - @override String discographyDownloadAllSubtitle(int count, int albumCount) { return '$count tracks from $albumCount releases'; @@ -2323,9 +1554,6 @@ class AppLocalizationsKo extends AppLocalizations { @override String get discographyDownloadSelected => 'Download Selected'; - @override - String get discographyPlaySelected => 'Play Selected'; - @override String discographyAddedToQueue(int count) { return 'Added $count tracks to queue'; @@ -2381,9 +1609,6 @@ class AppLocalizationsKo extends AppLocalizations { @override String get libraryTitle => 'Local Library'; - @override - String get libraryStatus => 'Library Status'; - @override String get libraryScanSettings => 'Scan Settings'; @@ -2446,11 +1671,6 @@ class AppLocalizationsKo extends AppLocalizations { String get libraryAboutDescription => 'Scans your existing music collection to detect duplicates when downloading. Supports FLAC, M4A, MP3, Opus, and OGG formats. Metadata is read from file tags when available.'; - @override - String libraryTracksCount(int count) { - return '$count tracks'; - } - @override String libraryTracksUnit(int count) { String _temp0 = intl.Intl.pluralLogic( @@ -2541,21 +1761,6 @@ class AppLocalizationsKo extends AppLocalizations { @override String get libraryFilterFormat => 'Format'; - @override - String get libraryFilterDate => 'Date Added'; - - @override - String get libraryFilterDateToday => 'Today'; - - @override - String get libraryFilterDateWeek => 'This Week'; - - @override - String get libraryFilterDateMonth => 'This Month'; - - @override - String get libraryFilterDateYear => 'This Year'; - @override String get libraryFilterSort => 'Sort'; @@ -2565,11 +1770,6 @@ class AppLocalizationsKo extends AppLocalizations { @override String get libraryFilterSortOldest => 'Oldest'; - @override - String libraryFilterActive(int count) { - return '$count filter(s) active'; - } - @override String get timeJustNow => 'Just now'; @@ -2595,72 +1795,6 @@ class AppLocalizationsKo extends AppLocalizations { return '$_temp0'; } - @override - String get storageSwitchTitle => 'Switch Storage Mode'; - - @override - String get storageSwitchToSafTitle => 'Switch to SAF Storage?'; - - @override - String get storageSwitchToAppTitle => 'Switch to App Storage?'; - - @override - String get storageSwitchToSafMessage => - 'Your existing downloads will remain in the current location and stay accessible.\n\nNew downloads will be saved to your selected SAF folder.'; - - @override - String get storageSwitchToAppMessage => - 'Your existing downloads will remain in the current SAF location and stay accessible.\n\nNew downloads will be saved to Music/SpotiFLAC folder.'; - - @override - String get storageSwitchExistingDownloads => 'Existing Downloads'; - - @override - String storageSwitchExistingDownloadsInfo(int count, String mode) { - return '$count tracks in $mode storage'; - } - - @override - String get storageSwitchNewDownloads => 'New Downloads'; - - @override - String storageSwitchNewDownloadsLocation(String location) { - return 'Will be saved to: $location'; - } - - @override - String get storageSwitchContinue => 'Continue'; - - @override - String get storageSwitchSelectFolder => 'Select SAF Folder'; - - @override - String get storageAppStorage => 'App Storage'; - - @override - String get storageSafStorage => 'SAF Storage'; - - @override - String storageModeBadge(String mode) { - return 'Storage: $mode'; - } - - @override - String get storageStatsTitle => 'Storage Statistics'; - - @override - String storageStatsAppCount(int count) { - return '$count tracks in App Storage'; - } - - @override - String storageStatsSafCount(int count) { - return '$count tracks in SAF Storage'; - } - - @override - String get storageModeInfo => 'Your files are stored in multiple locations'; - @override String get tutorialWelcomeTitle => 'Welcome to SpotiFLAC!'; @@ -2687,18 +1821,6 @@ class AppLocalizationsKo extends AppLocalizations { String get tutorialSearchDesc => 'There are two easy ways to find music you want to download.'; - @override - String get tutorialSearchTip1 => - 'Paste a Spotify or Deezer URL directly in the search box'; - - @override - String get tutorialSearchTip2 => - 'Or type the song name, artist, or album to search'; - - @override - String get tutorialSearchTip3 => - 'Supports tracks, albums, playlists, and artist pages'; - @override String get tutorialDownloadTitle => 'Downloading Music'; @@ -2706,18 +1828,6 @@ class AppLocalizationsKo extends AppLocalizations { String get tutorialDownloadDesc => 'Downloading music is simple and fast. Here\'s how it works.'; - @override - String get tutorialDownloadTip1 => - 'Tap the download button next to any track to start downloading'; - - @override - String get tutorialDownloadTip2 => - 'Choose your preferred quality (FLAC, Hi-Res, or MP3)'; - - @override - String get tutorialDownloadTip3 => - 'Download entire albums or playlists with one tap'; - @override String get tutorialLibraryTitle => 'Your Library'; @@ -2778,9 +1888,6 @@ class AppLocalizationsKo extends AppLocalizations { String get tutorialReadyMessage => 'You\'re all set! Start downloading your favorite music now.'; - @override - String get tutorialExample => 'EXAMPLE'; - @override String get libraryForceFullScan => 'Force Full Scan'; @@ -2943,10 +2050,6 @@ class AppLocalizationsKo extends AppLocalizations { @override String get trackReEnrich => 'Re-enrich'; - @override - String get trackReEnrichSubtitle => - 'Re-embed metadata without re-downloading'; - @override String get trackReEnrichOnlineSubtitle => 'Search metadata online and embed into file'; @@ -3227,36 +2330,15 @@ class AppLocalizationsKo extends AppLocalizations { } @override - String get setupModeSelectionTitle => '모드 선택'; + String downloadedAlbumDownloadedCount(int count) { + return '$count downloaded'; + } @override - String get setupModeSelectionDescription => - 'SpotiFLAC을 어떻게 사용하시겠습니까? 나중에 설정에서 언제든지 변경할 수 있습니다.'; + String get downloadUseAlbumArtistForFoldersAlbumSubtitle => + 'Artist folders use Album Artist when available'; @override - String get setupModeDownloaderTitle => '다운로더'; - - @override - String get setupModeDownloaderFeature1 => '무손실 FLAC 품질로 트랙 다운로드'; - - @override - String get setupModeDownloaderFeature2 => '오프라인 감상을 위해 기기에 음악 저장'; - - @override - String get setupModeDownloaderFeature3 => '로컬 음악 라이브러리 관리'; - - @override - String get setupModeStreamingTitle => '스트리밍'; - - @override - String get setupModeStreamingFeature1 => '다운로드 없이 트랙을 즉시 스트리밍'; - - @override - String get setupModeStreamingFeature2 => 'Smart Queue가 자동으로 새로운 음악을 발견합니다'; - - @override - String get setupModeStreamingFeature3 => '재생 컨트롤로 원하는 트랙을 온디맨드 재생'; - - @override - String get setupModeChangeableLater => '설정에서 언제든지 모드를 전환할 수 있습니다.'; + String get downloadUseAlbumArtistForFoldersTrackSubtitle => + 'Artist folders use Track Artist only'; } diff --git a/lib/l10n/app_localizations_nl.dart b/lib/l10n/app_localizations_nl.dart index 052c9204..be1be644 100644 --- a/lib/l10n/app_localizations_nl.dart +++ b/lib/l10n/app_localizations_nl.dart @@ -11,19 +11,12 @@ class AppLocalizationsNl extends AppLocalizations { @override String get appName => 'SpotiFLAC'; - @override - String get appDescription => - 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; - @override String get navHome => 'Home'; @override String get navLibrary => 'Library'; - @override - String get navHistory => 'History'; - @override String get navSettings => 'Settings'; @@ -33,14 +26,6 @@ class AppLocalizationsNl extends AppLocalizations { @override String get homeTitle => 'Home'; - @override - String get homeSearchHint => 'Paste Spotify URL or search...'; - - @override - String homeSearchHintExtension(String extensionName) { - return 'Search with $extensionName...'; - } - @override String get homeSubtitle => 'Paste a Spotify link or search by name'; @@ -50,17 +35,6 @@ class AppLocalizationsNl extends AppLocalizations { @override String get homeRecent => 'Recent'; - @override - String get historyTitle => 'History'; - - @override - String historyDownloading(int count) { - return 'Downloading ($count)'; - } - - @override - String get historyDownloaded => 'Downloaded'; - @override String get historyFilterAll => 'All'; @@ -70,48 +44,6 @@ class AppLocalizationsNl extends AppLocalizations { @override String get historyFilterSingles => 'Singles'; - @override - String historyTracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks', - one: '1 track', - ); - return '$_temp0'; - } - - @override - String historyAlbumsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count albums', - one: '1 album', - ); - return '$_temp0'; - } - - @override - String get historyNoDownloads => 'No download history'; - - @override - String get historyNoDownloadsSubtitle => 'Downloaded tracks will appear here'; - - @override - String get historyNoAlbums => 'No album downloads'; - - @override - String get historyNoAlbumsSubtitle => - 'Download multiple tracks from an album to see them here'; - - @override - String get historyNoSingles => 'No single downloads'; - - @override - String get historyNoSinglesSubtitle => - 'Single track downloads will appear here'; - @override String get historySearchHint => 'Search history...'; @@ -136,27 +68,6 @@ class AppLocalizationsNl extends AppLocalizations { @override String get downloadTitle => 'Download'; - @override - String get downloadLocation => 'Download Location'; - - @override - String get downloadLocationSubtitle => 'Choose where to save files'; - - @override - String get downloadLocationDefault => 'Default location'; - - @override - String get downloadDefaultService => 'Default Service'; - - @override - String get downloadDefaultServiceSubtitle => 'Service used for downloads'; - - @override - String get downloadDefaultQuality => 'Default Quality'; - - @override - String get downloadAskQuality => 'Ask Quality Before Download'; - @override String get downloadAskQualitySubtitle => 'Show quality picker for each download'; @@ -167,31 +78,9 @@ class AppLocalizationsNl extends AppLocalizations { @override String get downloadFolderOrganization => 'Folder Organization'; - @override - String get downloadSeparateSingles => 'Separate Singles'; - - @override - String get downloadSeparateSinglesSubtitle => - 'Put single tracks in a separate folder'; - - @override - String get qualityBest => 'Best Available'; - - @override - String get qualityFlac => 'FLAC'; - - @override - String get quality320 => '320 kbps'; - - @override - String get quality128 => '128 kbps'; - @override String get appearanceTitle => 'Appearance'; - @override - String get appearanceTheme => 'Theme'; - @override String get appearanceThemeSystem => 'System'; @@ -207,9 +96,6 @@ class AppLocalizationsNl extends AppLocalizations { @override String get appearanceDynamicColorSubtitle => 'Use colors from your wallpaper'; - @override - String get appearanceAccentColor => 'Accent Color'; - @override String get appearanceHistoryView => 'History View'; @@ -222,9 +108,6 @@ class AppLocalizationsNl extends AppLocalizations { @override String get optionsTitle => 'Options'; - @override - String get optionsSearchSource => 'Search Source'; - @override String get optionsPrimaryProvider => 'Primary Provider'; @@ -248,33 +131,6 @@ class AppLocalizationsNl extends AppLocalizations { String get optionsAutoFallbackSubtitle => 'Try other services if download fails'; - @override - String get optionsAutoSkipUnavailableTracks => 'Auto Skip Unavailable Tracks'; - - @override - String get optionsAutoSkipUnavailableTracksSubtitleOn => - 'Automatically skip to the next queue track when a stream cannot be resolved.'; - - @override - String get optionsAutoSkipUnavailableTracksSubtitleOff => - 'Stop on failed track resolution and show an error.'; - - @override - String get optionsInteractionMode => 'Interaction Mode'; - - @override - String get modeDownloader => 'Downloader Mode'; - - @override - String get modeDownloaderSubtitle => - 'Tap tracks to add them to download queue'; - - @override - String get modeStreaming => 'Streaming Mode'; - - @override - String get modeStreamingSubtitle => 'Tap tracks to play instantly'; - @override String get optionsUseExtensionProviders => 'Use Extension Providers'; @@ -377,18 +233,6 @@ class AppLocalizationsNl extends AppLocalizations { @override String get extensionsTitle => 'Extensions'; - @override - String get extensionsInstalled => 'Installed Extensions'; - - @override - String get extensionsNone => 'No extensions installed'; - - @override - String get extensionsNoneSubtitle => 'Install extensions from the Store tab'; - - @override - String get extensionsEnabled => 'Enabled'; - @override String get extensionsDisabled => 'Disabled'; @@ -405,9 +249,6 @@ class AppLocalizationsNl extends AppLocalizations { @override String get extensionsUninstall => 'Uninstall'; - @override - String get extensionsSetAsSearch => 'Set as Search Provider'; - @override String get storeTitle => 'Extension Store'; @@ -481,9 +322,6 @@ class AppLocalizationsNl extends AppLocalizations { @override String get aboutSocial => 'Social'; - @override - String get aboutSupport => 'Support'; - @override String get aboutApp => 'App'; @@ -502,13 +340,6 @@ class AppLocalizationsNl extends AppLocalizations { String get aboutSjdonadoDesc => 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; - @override - String get aboutDoubleDouble => 'DoubleDouble'; - - @override - String get aboutDoubleDoubleDesc => - 'Amazing API for Amazon Music downloads. Thank you for making it free!'; - @override String get aboutDabMusic => 'DAB Music'; @@ -527,32 +358,6 @@ class AppLocalizationsNl extends AppLocalizations { String get aboutAppDescription => 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; - @override - String get albumTitle => 'Album'; - - @override - String albumTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks', - one: '1 track', - ); - return '$_temp0'; - } - - @override - String get albumDownloadAll => 'Download All'; - - @override - String get albumDownloadRemaining => 'Download Remaining'; - - @override - String get playlistTitle => 'Playlist'; - - @override - String get artistTitle => 'Artist'; - @override String get artistAlbums => 'Albums'; @@ -562,17 +367,6 @@ class AppLocalizationsNl extends AppLocalizations { @override String get artistCompilations => 'Compilations'; - @override - String artistReleases(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count releases', - one: '1 release', - ); - return '$_temp0'; - } - @override String get artistPopular => 'Popular'; @@ -581,27 +375,6 @@ class AppLocalizationsNl extends AppLocalizations { return '$count monthly listeners'; } - @override - String get trackMetadataTitle => 'Track Info'; - - @override - String get trackMetadataArtist => 'Artist'; - - @override - String get trackMetadataAlbum => 'Album'; - - @override - String get trackMetadataDuration => 'Duration'; - - @override - String get trackMetadataQuality => 'Quality'; - - @override - String get trackMetadataPath => 'File Path'; - - @override - String get trackMetadataDownloadedAt => 'Downloaded'; - @override String get trackMetadataService => 'Service'; @@ -614,53 +387,15 @@ class AppLocalizationsNl extends AppLocalizations { @override String get trackMetadataDelete => 'Delete'; - @override - String get trackMetadataRedownload => 'Re-download'; - - @override - String get trackMetadataOpenFolder => 'Open Folder'; - - @override - String get setupTitle => 'Welcome to SpotiFLAC'; - - @override - String get setupSubtitle => 'Let\'s get you started'; - - @override - String get setupStoragePermission => 'Storage Permission'; - - @override - String get setupStoragePermissionSubtitle => - 'Required to save downloaded files'; - - @override - String get setupStoragePermissionGranted => 'Permission granted'; - - @override - String get setupStoragePermissionDenied => 'Permission denied'; - @override String get setupGrantPermission => 'Grant Permission'; - @override - String get setupDownloadLocation => 'Download Location'; - - @override - String get setupChooseFolder => 'Choose Folder'; - - @override - String get setupContinue => 'Continue'; - @override String get setupSkip => 'Skip for now'; @override String get setupStorageAccessRequired => 'Storage Access Required'; - @override - String get setupStorageAccessMessage => - 'SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.'; - @override String get setupStorageAccessMessageAndroid11 => 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; @@ -682,9 +417,6 @@ class AppLocalizationsNl extends AppLocalizations { return '$permissionType permission is required for the best experience. You can change this later in Settings.'; } - @override - String get setupSelectDownloadFolder => 'Select Download Folder'; - @override String get setupUseDefaultFolder => 'Use Default Folder?'; @@ -726,21 +458,6 @@ class AppLocalizationsNl extends AppLocalizations { @override String get setupDownloadInFlac => 'Download Spotify tracks in FLAC'; - @override - String get setupStepStorage => 'Storage'; - - @override - String get setupStepNotification => 'Notification'; - - @override - String get setupStepFolder => 'Folder'; - - @override - String get setupStepSpotify => 'Spotify'; - - @override - String get setupStepPermission => 'Permission'; - @override String get setupStorageGranted => 'Storage Permission Granted!'; @@ -757,13 +474,6 @@ class AppLocalizationsNl extends AppLocalizations { @override String get setupNotificationEnable => 'Enable Notifications'; - @override - String get setupNotificationDescription => - 'Get notified when downloads complete or require attention.'; - - @override - String get setupFolderSelected => 'Download Folder Selected!'; - @override String get setupFolderChoose => 'Choose Download Folder'; @@ -771,48 +481,12 @@ class AppLocalizationsNl extends AppLocalizations { String get setupFolderDescription => 'Select a folder where your downloaded music will be saved.'; - @override - String get setupChangeFolder => 'Change Folder'; - @override String get setupSelectFolder => 'Select Folder'; - @override - String get setupSpotifyApiOptional => 'Spotify API (Optional)'; - - @override - String get setupSpotifyApiDescription => - 'Add your Spotify API credentials for better search results and access to Spotify-exclusive content.'; - - @override - String get setupUseSpotifyApi => 'Use Spotify API'; - - @override - String get setupEnterCredentialsBelow => 'Enter your credentials below'; - - @override - String get setupUsingDeezer => 'Using Deezer (no account needed)'; - - @override - String get setupEnterClientId => 'Enter Spotify Client ID'; - - @override - String get setupEnterClientSecret => 'Enter Spotify Client Secret'; - - @override - String get setupGetFreeCredentials => - 'Get your free API credentials from the Spotify Developer Dashboard.'; - @override String get setupEnableNotifications => 'Enable Notifications'; - @override - String get setupProceedToNextStep => 'You can now proceed to the next step.'; - - @override - String get setupNotificationProgressDescription => - 'You will receive download progress notifications.'; - @override String get setupNotificationBackgroundDescription => 'Get notified about download progress and completion. This helps you track downloads when the app is in background.'; @@ -820,32 +494,19 @@ class AppLocalizationsNl extends AppLocalizations { @override String get setupSkipForNow => 'Skip for now'; - @override - String get setupBack => 'Back'; - @override String get setupNext => 'Next'; @override String get setupGetStarted => 'Get Started'; - @override - String get setupSkipAndStart => 'Skip & Start'; - @override String get setupAllowAccessToManageFiles => 'Please enable \"Allow access to manage all files\" in the next screen.'; - @override - String get setupGetCredentialsFromSpotify => - 'Get credentials from developer.spotify.com'; - @override String get dialogCancel => 'Cancel'; - @override - String get dialogOk => 'OK'; - @override String get dialogSave => 'Save'; @@ -855,21 +516,9 @@ class AppLocalizationsNl extends AppLocalizations { @override String get dialogRetry => 'Retry'; - @override - String get dialogClose => 'Close'; - - @override - String get dialogYes => 'Yes'; - - @override - String get dialogNo => 'No'; - @override String get dialogClear => 'Clear'; - @override - String get dialogConfirm => 'Confirm'; - @override String get dialogDone => 'Done'; @@ -892,28 +541,9 @@ class AppLocalizationsNl extends AppLocalizations { String get dialogUnsavedChanges => 'You have unsaved changes. Do you want to discard them?'; - @override - String get dialogDownloadFailed => 'Download Failed'; - - @override - String get dialogTrackLabel => 'Track:'; - - @override - String get dialogArtistLabel => 'Artist:'; - - @override - String get dialogErrorLabel => 'Error:'; - @override String get dialogClearAll => 'Clear All'; - @override - String get dialogClearAllDownloads => - 'Are you sure you want to clear all downloads?'; - - @override - String get dialogRemoveFromDevice => 'Remove from device?'; - @override String get dialogRemoveExtension => 'Remove Extension'; @@ -1014,11 +644,6 @@ class AppLocalizationsNl extends AppLocalizations { @override String get snackbarViewQueue => 'View Queue'; - @override - String snackbarFailedToLoad(String error) { - return 'Failed to load: $error'; - } - @override String snackbarUrlCopied(String platform) { return '$platform URL copied to clipboard'; @@ -1060,44 +685,14 @@ class AppLocalizationsNl extends AppLocalizations { String get errorRateLimitedMessage => 'Too many requests. Please wait a moment before searching again.'; - @override - String errorFailedToLoad(String item) { - return 'Failed to load $item'; - } - @override String get errorNoTracksFound => 'No tracks found'; - @override - String get errorSeekNotSupported => - 'Seeking is not supported for this live stream'; - @override String errorMissingExtensionSource(String item) { return 'Cannot load $item: missing extension source'; } - @override - String get statusQueued => 'Queued'; - - @override - String get statusDownloading => 'Downloading'; - - @override - String get statusFinalizing => 'Finalizing'; - - @override - String get statusCompleted => 'Completed'; - - @override - String get statusFailed => 'Failed'; - - @override - String get statusSkipped => 'Skipped'; - - @override - String get statusPaused => 'Paused'; - @override String get actionPause => 'Pause'; @@ -1107,24 +702,12 @@ class AppLocalizationsNl extends AppLocalizations { @override String get actionCancel => 'Cancel'; - @override - String get actionStop => 'Stop'; - - @override - String get actionSelect => 'Select'; - @override String get actionSelectAll => 'Select All'; @override String get actionDeselect => 'Deselect'; - @override - String get actionPaste => 'Paste'; - - @override - String get actionImportCsv => 'Import CSV'; - @override String get actionRemoveCredentials => 'Remove Credentials'; @@ -1139,20 +722,6 @@ class AppLocalizationsNl extends AppLocalizations { @override String get selectionAllSelected => 'All tracks selected'; - @override - String get selectionTapToSelect => 'Tap tracks to select'; - - @override - String selectionDeleteTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Delete $count $_temp0'; - } - @override String get selectionSelectToDelete => 'Select tracks to delete'; @@ -1179,40 +748,9 @@ class AppLocalizationsNl extends AppLocalizations { @override String get tooltipPlay => 'Play'; - @override - String get tooltipCancel => 'Cancel'; - - @override - String get tooltipStop => 'Stop'; - - @override - String get tooltipRetry => 'Retry'; - - @override - String get tooltipRemove => 'Remove'; - - @override - String get tooltipClear => 'Clear'; - - @override - String get tooltipPaste => 'Paste'; - @override String get filenameFormat => 'Filename Format'; - @override - String filenameFormatPreview(String preview) { - return 'Preview: $preview'; - } - - @override - String get filenameAvailablePlaceholders => 'Available placeholders:'; - - @override - String filenameHint(Object artist, Object title) { - return '$artist - $title'; - } - @override String get filenameShowAdvancedTags => 'Show advanced tags'; @@ -1220,9 +758,6 @@ class AppLocalizationsNl extends AppLocalizations { String get filenameShowAdvancedTagsDescription => 'Enable formatted tags for track padding and date patterns'; - @override - String get folderOrganization => 'Folder Organization'; - @override String get folderOrganizationNone => 'No organization'; @@ -1257,20 +792,9 @@ class AppLocalizationsNl extends AppLocalizations { @override String get updateAvailable => 'Update Available'; - @override - String updateNewVersion(String version) { - return 'Version $version is available'; - } - - @override - String get updateDownload => 'Download'; - @override String get updateLater => 'Later'; - @override - String get updateChangelog => 'Changelog'; - @override String get updateStartingDownload => 'Starting download...'; @@ -1301,12 +825,6 @@ class AppLocalizationsNl extends AppLocalizations { @override String get updateDontRemind => 'Don\'t remind'; - @override - String get providerPriority => 'Provider Priority'; - - @override - String get providerPrioritySubtitle => 'Drag to reorder download providers'; - @override String get providerPriorityTitle => 'Provider Priority'; @@ -1324,13 +842,6 @@ class AppLocalizationsNl extends AppLocalizations { @override String get providerExtension => 'Extension'; - @override - String get metadataProviderPriority => 'Metadata Provider Priority'; - - @override - String get metadataProviderPrioritySubtitle => - 'Order used when fetching track metadata'; - @override String get metadataProviderPriorityTitle => 'Metadata Priority'; @@ -1351,18 +862,6 @@ class AppLocalizationsNl extends AppLocalizations { @override String get logTitle => 'Logs'; - @override - String get logCopy => 'Copy Logs'; - - @override - String get logClear => 'Clear Logs'; - - @override - String get logShare => 'Share Logs'; - - @override - String get logEmpty => 'No logs yet'; - @override String get logCopied => 'Logs copied to clipboard'; @@ -1387,18 +886,6 @@ class AppLocalizationsNl extends AppLocalizations { @override String get logClearLogsMessage => 'Are you sure you want to clear all logs?'; - @override - String get logIspBlocking => 'ISP BLOCKING DETECTED'; - - @override - String get logRateLimited => 'RATE LIMITED'; - - @override - String get logNetworkError => 'NETWORK ERROR'; - - @override - String get logTrackNotFound => 'TRACK NOT FOUND'; - @override String get logFilterBySeverity => 'Filter logs by severity'; @@ -1408,48 +895,6 @@ class AppLocalizationsNl extends AppLocalizations { @override String get logNoLogsYetSubtitle => 'Logs will appear here as you use the app'; - @override - String get logIssueSummary => 'Issue Summary'; - - @override - String get logIspBlockingDescription => - 'Your ISP may be blocking access to download services'; - - @override - String get logIspBlockingSuggestion => - 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; - - @override - String get logRateLimitedDescription => 'Too many requests to the service'; - - @override - String get logRateLimitedSuggestion => - 'Wait a few minutes before trying again'; - - @override - String get logNetworkErrorDescription => 'Connection issues detected'; - - @override - String get logNetworkErrorSuggestion => 'Check your internet connection'; - - @override - String get logTrackNotFoundDescription => - 'Some tracks could not be found on download services'; - - @override - String get logTrackNotFoundSuggestion => - 'The track may not be available in lossless quality'; - - @override - String logTotalErrors(int count) { - return 'Total errors: $count'; - } - - @override - String logAffected(String domains) { - return 'Affected: $domains'; - } - @override String logEntriesFiltered(int count) { return 'Entries ($count filtered)'; @@ -1556,9 +1001,6 @@ class AppLocalizationsNl extends AppLocalizations { @override String get appearanceLanguage => 'App Language'; - @override - String get appearanceLanguageSubtitle => 'Choose your preferred language'; - @override String get settingsAppearanceSubtitle => 'Theme, colors, display'; @@ -1580,19 +1022,11 @@ class AppLocalizationsNl extends AppLocalizations { @override String get pressBackAgainToExit => 'Press back again to exit'; - @override - String get tracksHeader => 'Tracks'; - @override String downloadAllCount(int count) { return 'Download All ($count)'; } - @override - String playAllCount(int count) { - return 'Play All ($count)'; - } - @override String tracksCount(int count) { String _temp0 = intl.Intl.pluralLogic( @@ -1701,11 +1135,6 @@ class AppLocalizationsNl extends AppLocalizations { String get trackDeleteConfirmMessage => 'This will permanently delete the downloaded file and remove it from your history.'; - @override - String trackCannotOpen(String message) { - return 'Cannot open: $message'; - } - @override String get dateToday => 'Today'; @@ -1727,18 +1156,6 @@ class AppLocalizationsNl extends AppLocalizations { return '$count months ago'; } - @override - String get concurrentSequential => 'Sequential'; - - @override - String get concurrentParallel2 => '2 Parallel'; - - @override - String get concurrentParallel3 => '3 Parallel'; - - @override - String get tapToSeeError => 'Tap to see error details'; - @override String get storeFilterAll => 'All'; @@ -1760,15 +1177,6 @@ class AppLocalizationsNl extends AppLocalizations { @override String get storeClearFilters => 'Clear filters'; - @override - String get storeNoResults => 'No extensions found'; - - @override - String get extensionProviderPriority => 'Provider Priority'; - - @override - String get extensionInstallButton => 'Install Extension'; - @override String get extensionDefaultProvider => 'Default (Deezer/Spotify)'; @@ -1919,38 +1327,6 @@ class AppLocalizationsNl extends AppLocalizations { @override String get qualityHiResFlacMaxSubtitle => '24-bit / up to 192kHz'; - @override - String get qualityLossy => 'Lossy'; - - @override - String get qualityLossyMp3Subtitle => 'MP3 320kbps (converted from FLAC)'; - - @override - String get qualityLossyOpusSubtitle => 'Opus 128kbps (converted from FLAC)'; - - @override - String get enableLossyOption => 'Enable Lossy Option'; - - @override - String get enableLossyOptionSubtitleOn => 'Lossy quality option is available'; - - @override - String get enableLossyOptionSubtitleOff => - 'Downloads FLAC then converts to lossy format'; - - @override - String get lossyFormat => 'Lossy Format'; - - @override - String get lossyFormatDescription => 'Choose the lossy format for conversion'; - - @override - String get lossyFormatMp3Subtitle => '320kbps, best compatibility'; - - @override - String get lossyFormatOpusSubtitle => - '128kbps, better quality at smaller size'; - @override String get qualityNote => 'Actual quality depends on track availability from the service'; @@ -1965,24 +1341,6 @@ class AppLocalizationsNl extends AppLocalizations { @override String get youtubeMp3BitrateTitle => 'YouTube MP3 Bitrate'; - @override - String youtubeBitrateSubtitle(int bitrate, int min, int max) { - return '${bitrate}kbps ($min-$max)'; - } - - @override - String youtubeBitrateInputHelp(int min, int max) { - return 'Enter custom bitrate ($min-$max kbps)'; - } - - @override - String get youtubeBitrateFieldLabel => 'Bitrate (kbps)'; - - @override - String youtubeBitrateValidationError(int min, int max) { - return 'Bitrate must be between $min and $max kbps'; - } - @override String get downloadAskBeforeDownload => 'Ask Before Download'; @@ -1998,14 +1356,6 @@ class AppLocalizationsNl extends AppLocalizations { @override String get downloadUseAlbumArtistForFolders => 'Use Album Artist for folders'; - @override - String get downloadUseAlbumArtistForFoldersAlbumSubtitle => - 'Artist folders use Album Artist when available'; - - @override - String get downloadUseAlbumArtistForFoldersTrackSubtitle => - 'Artist folders use Track Artist only'; - @override String get downloadUsePrimaryArtistOnly => 'Primary artist only for folders'; @@ -2017,78 +1367,18 @@ class AppLocalizationsNl extends AppLocalizations { String get downloadUsePrimaryArtistOnlyDisabled => 'Full artist string used for folder name'; - @override - String get downloadSaveFormat => 'Save Format'; - - @override - String get downloadSelectService => 'Select Service'; - @override String get downloadSelectQuality => 'Select Quality'; @override String get downloadFrom => 'Download From'; - @override - String get downloadDefaultQualityLabel => 'Default Quality'; - - @override - String get downloadBestAvailable => 'Best available'; - - @override - String get folderNone => 'None'; - - @override - String get folderNoneSubtitle => 'Save all files directly to download folder'; - - @override - String get folderArtist => 'Artist'; - - @override - String get folderArtistSubtitle => 'Artist Name/filename'; - - @override - String get folderAlbum => 'Album'; - - @override - String get folderAlbumSubtitle => 'Album Name/filename'; - - @override - String get folderArtistAlbum => 'Artist/Album'; - - @override - String get folderArtistAlbumSubtitle => 'Artist Name/Album Name/filename'; - - @override - String get serviceTidal => 'Tidal'; - - @override - String get serviceQobuz => 'Qobuz'; - - @override - String get serviceAmazon => 'Amazon'; - - @override - String get serviceDeezer => 'Deezer'; - - @override - String get serviceSpotify => 'Spotify'; - @override String get appearanceAmoledDark => 'AMOLED Dark'; @override String get appearanceAmoledDarkSubtitle => 'Pure black background'; - @override - String get appearanceChooseAccentColor => 'Choose Accent Color'; - - @override - String get appearanceChooseTheme => 'Theme Mode'; - - @override - String get queueTitle => 'Download Queue'; - @override String get queueClearAll => 'Clear All'; @@ -2096,19 +1386,6 @@ class AppLocalizationsNl extends AppLocalizations { String get queueClearAllMessage => 'Are you sure you want to clear all downloads?'; - @override - String get queueExportFailed => 'Export'; - - @override - String get queueExportFailedSuccess => - 'Failed downloads exported to TXT file'; - - @override - String get queueExportFailedClear => 'Clear Failed'; - - @override - String get queueExportFailedError => 'Failed to export downloads'; - @override String get settingsAutoExportFailed => 'Auto-export failed downloads'; @@ -2129,30 +1406,6 @@ class AppLocalizationsNl extends AppLocalizations { String get settingsDownloadNetworkSubtitle => 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; - @override - String get queueEmpty => 'No downloads in queue'; - - @override - String get queueEmptySubtitle => 'Add tracks from the home screen'; - - @override - String get queueClearCompleted => 'Clear completed'; - - @override - String get queueDownloadFailed => 'Download Failed'; - - @override - String get queueTrackLabel => 'Track:'; - - @override - String get queueArtistLabel => 'Artist:'; - - @override - String get queueErrorLabel => 'Error:'; - - @override - String get queueUnknownError => 'Unknown error'; - @override String get albumFolderArtistAlbum => 'Artist / Album'; @@ -2199,14 +1452,6 @@ class AppLocalizationsNl extends AppLocalizations { return 'Delete $count $_temp0 from this album?\n\nThis will also delete the files from storage.'; } - @override - String get downloadedAlbumTracksHeader => 'Tracks'; - - @override - String downloadedAlbumDownloadedCount(int count) { - return '$count downloaded'; - } - @override String downloadedAlbumSelectedCount(int count) { return '$count selected'; @@ -2237,9 +1482,6 @@ class AppLocalizationsNl extends AppLocalizations { return 'Disc $discNumber'; } - @override - String get utilityFunctions => 'Utility Functions'; - @override String get recentTypeArtist => 'Artist'; @@ -2263,23 +1505,12 @@ class AppLocalizationsNl extends AppLocalizations { return 'Playlist: $name'; } - @override - String errorGeneric(String message) { - return 'Error: $message'; - } - @override String get discographyDownload => 'Download Discography'; - @override - String get discographyPlay => 'Play Discography'; - @override String get discographyDownloadAll => 'Download All'; - @override - String get discographyPlayAll => 'Play All'; - @override String discographyDownloadAllSubtitle(int count, int albumCount) { return '$count tracks from $albumCount releases'; @@ -2324,9 +1555,6 @@ class AppLocalizationsNl extends AppLocalizations { @override String get discographyDownloadSelected => 'Download Selected'; - @override - String get discographyPlaySelected => 'Play Selected'; - @override String discographyAddedToQueue(int count) { return 'Added $count tracks to queue'; @@ -2382,9 +1610,6 @@ class AppLocalizationsNl extends AppLocalizations { @override String get libraryTitle => 'Local Library'; - @override - String get libraryStatus => 'Library Status'; - @override String get libraryScanSettings => 'Scan Settings'; @@ -2447,11 +1672,6 @@ class AppLocalizationsNl extends AppLocalizations { String get libraryAboutDescription => 'Scans your existing music collection to detect duplicates when downloading. Supports FLAC, M4A, MP3, Opus, and OGG formats. Metadata is read from file tags when available.'; - @override - String libraryTracksCount(int count) { - return '$count tracks'; - } - @override String libraryTracksUnit(int count) { String _temp0 = intl.Intl.pluralLogic( @@ -2542,21 +1762,6 @@ class AppLocalizationsNl extends AppLocalizations { @override String get libraryFilterFormat => 'Format'; - @override - String get libraryFilterDate => 'Date Added'; - - @override - String get libraryFilterDateToday => 'Today'; - - @override - String get libraryFilterDateWeek => 'This Week'; - - @override - String get libraryFilterDateMonth => 'This Month'; - - @override - String get libraryFilterDateYear => 'This Year'; - @override String get libraryFilterSort => 'Sort'; @@ -2566,11 +1771,6 @@ class AppLocalizationsNl extends AppLocalizations { @override String get libraryFilterSortOldest => 'Oldest'; - @override - String libraryFilterActive(int count) { - return '$count filter(s) active'; - } - @override String get timeJustNow => 'Just now'; @@ -2596,72 +1796,6 @@ class AppLocalizationsNl extends AppLocalizations { return '$_temp0'; } - @override - String get storageSwitchTitle => 'Switch Storage Mode'; - - @override - String get storageSwitchToSafTitle => 'Switch to SAF Storage?'; - - @override - String get storageSwitchToAppTitle => 'Switch to App Storage?'; - - @override - String get storageSwitchToSafMessage => - 'Your existing downloads will remain in the current location and stay accessible.\n\nNew downloads will be saved to your selected SAF folder.'; - - @override - String get storageSwitchToAppMessage => - 'Your existing downloads will remain in the current SAF location and stay accessible.\n\nNew downloads will be saved to Music/SpotiFLAC folder.'; - - @override - String get storageSwitchExistingDownloads => 'Existing Downloads'; - - @override - String storageSwitchExistingDownloadsInfo(int count, String mode) { - return '$count tracks in $mode storage'; - } - - @override - String get storageSwitchNewDownloads => 'New Downloads'; - - @override - String storageSwitchNewDownloadsLocation(String location) { - return 'Will be saved to: $location'; - } - - @override - String get storageSwitchContinue => 'Continue'; - - @override - String get storageSwitchSelectFolder => 'Select SAF Folder'; - - @override - String get storageAppStorage => 'App Storage'; - - @override - String get storageSafStorage => 'SAF Storage'; - - @override - String storageModeBadge(String mode) { - return 'Storage: $mode'; - } - - @override - String get storageStatsTitle => 'Storage Statistics'; - - @override - String storageStatsAppCount(int count) { - return '$count tracks in App Storage'; - } - - @override - String storageStatsSafCount(int count) { - return '$count tracks in SAF Storage'; - } - - @override - String get storageModeInfo => 'Your files are stored in multiple locations'; - @override String get tutorialWelcomeTitle => 'Welcome to SpotiFLAC!'; @@ -2688,18 +1822,6 @@ class AppLocalizationsNl extends AppLocalizations { String get tutorialSearchDesc => 'There are two easy ways to find music you want to download.'; - @override - String get tutorialSearchTip1 => - 'Paste a Spotify or Deezer URL directly in the search box'; - - @override - String get tutorialSearchTip2 => - 'Or type the song name, artist, or album to search'; - - @override - String get tutorialSearchTip3 => - 'Supports tracks, albums, playlists, and artist pages'; - @override String get tutorialDownloadTitle => 'Downloading Music'; @@ -2707,18 +1829,6 @@ class AppLocalizationsNl extends AppLocalizations { String get tutorialDownloadDesc => 'Downloading music is simple and fast. Here\'s how it works.'; - @override - String get tutorialDownloadTip1 => - 'Tap the download button next to any track to start downloading'; - - @override - String get tutorialDownloadTip2 => - 'Choose your preferred quality (FLAC, Hi-Res, or MP3)'; - - @override - String get tutorialDownloadTip3 => - 'Download entire albums or playlists with one tap'; - @override String get tutorialLibraryTitle => 'Your Library'; @@ -2779,9 +1889,6 @@ class AppLocalizationsNl extends AppLocalizations { String get tutorialReadyMessage => 'You\'re all set! Start downloading your favorite music now.'; - @override - String get tutorialExample => 'EXAMPLE'; - @override String get libraryForceFullScan => 'Force Full Scan'; @@ -2944,10 +2051,6 @@ class AppLocalizationsNl extends AppLocalizations { @override String get trackReEnrich => 'Re-enrich'; - @override - String get trackReEnrichSubtitle => - 'Re-embed metadata without re-downloading'; - @override String get trackReEnrichOnlineSubtitle => 'Search metadata online and embed into file'; @@ -3228,43 +2331,15 @@ class AppLocalizationsNl extends AppLocalizations { } @override - String get setupModeSelectionTitle => 'Kies je modus'; + String downloadedAlbumDownloadedCount(int count) { + return '$count downloaded'; + } @override - String get setupModeSelectionDescription => - 'Hoe wil je SpotiFLAC gebruiken? Je kunt dit later altijd wijzigen in Instellingen.'; + String get downloadUseAlbumArtistForFoldersAlbumSubtitle => + 'Artist folders use Album Artist when available'; @override - String get setupModeDownloaderTitle => 'Downloader'; - - @override - String get setupModeDownloaderFeature1 => - 'Download nummers in lossless FLAC-kwaliteit'; - - @override - String get setupModeDownloaderFeature2 => - 'Sla muziek op je apparaat op om offline te luisteren'; - - @override - String get setupModeDownloaderFeature3 => - 'Beheer je lokale muziekbibliotheek'; - - @override - String get setupModeStreamingTitle => 'Streaming'; - - @override - String get setupModeStreamingFeature1 => - 'Stream nummers direct zonder te downloaden'; - - @override - String get setupModeStreamingFeature2 => - 'Smart Queue ontdekt automatisch nieuwe muziek voor je'; - - @override - String get setupModeStreamingFeature3 => - 'Speel elk nummer op aanvraag af met afspeelbediening'; - - @override - String get setupModeChangeableLater => - 'Je kunt op elk moment wisselen tussen modi in Instellingen.'; + String get downloadUseAlbumArtistForFoldersTrackSubtitle => + 'Artist folders use Track Artist only'; } diff --git a/lib/l10n/app_localizations_pt.dart b/lib/l10n/app_localizations_pt.dart index 0262c76f..499adcbb 100644 --- a/lib/l10n/app_localizations_pt.dart +++ b/lib/l10n/app_localizations_pt.dart @@ -11,19 +11,12 @@ class AppLocalizationsPt extends AppLocalizations { @override String get appName => 'SpotiFLAC'; - @override - String get appDescription => - 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; - @override String get navHome => 'Home'; @override String get navLibrary => 'Library'; - @override - String get navHistory => 'History'; - @override String get navSettings => 'Settings'; @@ -33,14 +26,6 @@ class AppLocalizationsPt extends AppLocalizations { @override String get homeTitle => 'Home'; - @override - String get homeSearchHint => 'Paste Spotify URL or search...'; - - @override - String homeSearchHintExtension(String extensionName) { - return 'Search with $extensionName...'; - } - @override String get homeSubtitle => 'Paste a Spotify link or search by name'; @@ -50,17 +35,6 @@ class AppLocalizationsPt extends AppLocalizations { @override String get homeRecent => 'Recent'; - @override - String get historyTitle => 'History'; - - @override - String historyDownloading(int count) { - return 'Downloading ($count)'; - } - - @override - String get historyDownloaded => 'Downloaded'; - @override String get historyFilterAll => 'All'; @@ -70,48 +44,6 @@ class AppLocalizationsPt extends AppLocalizations { @override String get historyFilterSingles => 'Singles'; - @override - String historyTracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks', - one: '1 track', - ); - return '$_temp0'; - } - - @override - String historyAlbumsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count albums', - one: '1 album', - ); - return '$_temp0'; - } - - @override - String get historyNoDownloads => 'No download history'; - - @override - String get historyNoDownloadsSubtitle => 'Downloaded tracks will appear here'; - - @override - String get historyNoAlbums => 'No album downloads'; - - @override - String get historyNoAlbumsSubtitle => - 'Download multiple tracks from an album to see them here'; - - @override - String get historyNoSingles => 'No single downloads'; - - @override - String get historyNoSinglesSubtitle => - 'Single track downloads will appear here'; - @override String get historySearchHint => 'Search history...'; @@ -136,27 +68,6 @@ class AppLocalizationsPt extends AppLocalizations { @override String get downloadTitle => 'Download'; - @override - String get downloadLocation => 'Download Location'; - - @override - String get downloadLocationSubtitle => 'Choose where to save files'; - - @override - String get downloadLocationDefault => 'Default location'; - - @override - String get downloadDefaultService => 'Default Service'; - - @override - String get downloadDefaultServiceSubtitle => 'Service used for downloads'; - - @override - String get downloadDefaultQuality => 'Default Quality'; - - @override - String get downloadAskQuality => 'Ask Quality Before Download'; - @override String get downloadAskQualitySubtitle => 'Show quality picker for each download'; @@ -167,31 +78,9 @@ class AppLocalizationsPt extends AppLocalizations { @override String get downloadFolderOrganization => 'Folder Organization'; - @override - String get downloadSeparateSingles => 'Separate Singles'; - - @override - String get downloadSeparateSinglesSubtitle => - 'Put single tracks in a separate folder'; - - @override - String get qualityBest => 'Best Available'; - - @override - String get qualityFlac => 'FLAC'; - - @override - String get quality320 => '320 kbps'; - - @override - String get quality128 => '128 kbps'; - @override String get appearanceTitle => 'Appearance'; - @override - String get appearanceTheme => 'Theme'; - @override String get appearanceThemeSystem => 'System'; @@ -207,9 +96,6 @@ class AppLocalizationsPt extends AppLocalizations { @override String get appearanceDynamicColorSubtitle => 'Use colors from your wallpaper'; - @override - String get appearanceAccentColor => 'Accent Color'; - @override String get appearanceHistoryView => 'History View'; @@ -222,9 +108,6 @@ class AppLocalizationsPt extends AppLocalizations { @override String get optionsTitle => 'Options'; - @override - String get optionsSearchSource => 'Search Source'; - @override String get optionsPrimaryProvider => 'Primary Provider'; @@ -248,33 +131,6 @@ class AppLocalizationsPt extends AppLocalizations { String get optionsAutoFallbackSubtitle => 'Try other services if download fails'; - @override - String get optionsAutoSkipUnavailableTracks => 'Auto Skip Unavailable Tracks'; - - @override - String get optionsAutoSkipUnavailableTracksSubtitleOn => - 'Automatically skip to the next queue track when a stream cannot be resolved.'; - - @override - String get optionsAutoSkipUnavailableTracksSubtitleOff => - 'Stop on failed track resolution and show an error.'; - - @override - String get optionsInteractionMode => 'Interaction Mode'; - - @override - String get modeDownloader => 'Downloader Mode'; - - @override - String get modeDownloaderSubtitle => - 'Tap tracks to add them to download queue'; - - @override - String get modeStreaming => 'Streaming Mode'; - - @override - String get modeStreamingSubtitle => 'Tap tracks to play instantly'; - @override String get optionsUseExtensionProviders => 'Use Extension Providers'; @@ -377,18 +233,6 @@ class AppLocalizationsPt extends AppLocalizations { @override String get extensionsTitle => 'Extensions'; - @override - String get extensionsInstalled => 'Installed Extensions'; - - @override - String get extensionsNone => 'No extensions installed'; - - @override - String get extensionsNoneSubtitle => 'Install extensions from the Store tab'; - - @override - String get extensionsEnabled => 'Enabled'; - @override String get extensionsDisabled => 'Disabled'; @@ -405,9 +249,6 @@ class AppLocalizationsPt extends AppLocalizations { @override String get extensionsUninstall => 'Uninstall'; - @override - String get extensionsSetAsSearch => 'Set as Search Provider'; - @override String get storeTitle => 'Extension Store'; @@ -481,9 +322,6 @@ class AppLocalizationsPt extends AppLocalizations { @override String get aboutSocial => 'Social'; - @override - String get aboutSupport => 'Support'; - @override String get aboutApp => 'App'; @@ -502,13 +340,6 @@ class AppLocalizationsPt extends AppLocalizations { String get aboutSjdonadoDesc => 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; - @override - String get aboutDoubleDouble => 'DoubleDouble'; - - @override - String get aboutDoubleDoubleDesc => - 'Amazing API for Amazon Music downloads. Thank you for making it free!'; - @override String get aboutDabMusic => 'DAB Music'; @@ -527,32 +358,6 @@ class AppLocalizationsPt extends AppLocalizations { String get aboutAppDescription => 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; - @override - String get albumTitle => 'Album'; - - @override - String albumTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks', - one: '1 track', - ); - return '$_temp0'; - } - - @override - String get albumDownloadAll => 'Download All'; - - @override - String get albumDownloadRemaining => 'Download Remaining'; - - @override - String get playlistTitle => 'Playlist'; - - @override - String get artistTitle => 'Artist'; - @override String get artistAlbums => 'Albums'; @@ -562,17 +367,6 @@ class AppLocalizationsPt extends AppLocalizations { @override String get artistCompilations => 'Compilations'; - @override - String artistReleases(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count releases', - one: '1 release', - ); - return '$_temp0'; - } - @override String get artistPopular => 'Popular'; @@ -581,27 +375,6 @@ class AppLocalizationsPt extends AppLocalizations { return '$count monthly listeners'; } - @override - String get trackMetadataTitle => 'Track Info'; - - @override - String get trackMetadataArtist => 'Artist'; - - @override - String get trackMetadataAlbum => 'Album'; - - @override - String get trackMetadataDuration => 'Duration'; - - @override - String get trackMetadataQuality => 'Quality'; - - @override - String get trackMetadataPath => 'File Path'; - - @override - String get trackMetadataDownloadedAt => 'Downloaded'; - @override String get trackMetadataService => 'Service'; @@ -614,53 +387,15 @@ class AppLocalizationsPt extends AppLocalizations { @override String get trackMetadataDelete => 'Delete'; - @override - String get trackMetadataRedownload => 'Re-download'; - - @override - String get trackMetadataOpenFolder => 'Open Folder'; - - @override - String get setupTitle => 'Welcome to SpotiFLAC'; - - @override - String get setupSubtitle => 'Let\'s get you started'; - - @override - String get setupStoragePermission => 'Storage Permission'; - - @override - String get setupStoragePermissionSubtitle => - 'Required to save downloaded files'; - - @override - String get setupStoragePermissionGranted => 'Permission granted'; - - @override - String get setupStoragePermissionDenied => 'Permission denied'; - @override String get setupGrantPermission => 'Grant Permission'; - @override - String get setupDownloadLocation => 'Download Location'; - - @override - String get setupChooseFolder => 'Choose Folder'; - - @override - String get setupContinue => 'Continue'; - @override String get setupSkip => 'Skip for now'; @override String get setupStorageAccessRequired => 'Storage Access Required'; - @override - String get setupStorageAccessMessage => - 'SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.'; - @override String get setupStorageAccessMessageAndroid11 => 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; @@ -682,9 +417,6 @@ class AppLocalizationsPt extends AppLocalizations { return '$permissionType permission is required for the best experience. You can change this later in Settings.'; } - @override - String get setupSelectDownloadFolder => 'Select Download Folder'; - @override String get setupUseDefaultFolder => 'Use Default Folder?'; @@ -726,21 +458,6 @@ class AppLocalizationsPt extends AppLocalizations { @override String get setupDownloadInFlac => 'Download Spotify tracks in FLAC'; - @override - String get setupStepStorage => 'Storage'; - - @override - String get setupStepNotification => 'Notification'; - - @override - String get setupStepFolder => 'Folder'; - - @override - String get setupStepSpotify => 'Spotify'; - - @override - String get setupStepPermission => 'Permission'; - @override String get setupStorageGranted => 'Storage Permission Granted!'; @@ -757,13 +474,6 @@ class AppLocalizationsPt extends AppLocalizations { @override String get setupNotificationEnable => 'Enable Notifications'; - @override - String get setupNotificationDescription => - 'Get notified when downloads complete or require attention.'; - - @override - String get setupFolderSelected => 'Download Folder Selected!'; - @override String get setupFolderChoose => 'Choose Download Folder'; @@ -771,48 +481,12 @@ class AppLocalizationsPt extends AppLocalizations { String get setupFolderDescription => 'Select a folder where your downloaded music will be saved.'; - @override - String get setupChangeFolder => 'Change Folder'; - @override String get setupSelectFolder => 'Select Folder'; - @override - String get setupSpotifyApiOptional => 'Spotify API (Optional)'; - - @override - String get setupSpotifyApiDescription => - 'Add your Spotify API credentials for better search results and access to Spotify-exclusive content.'; - - @override - String get setupUseSpotifyApi => 'Use Spotify API'; - - @override - String get setupEnterCredentialsBelow => 'Enter your credentials below'; - - @override - String get setupUsingDeezer => 'Using Deezer (no account needed)'; - - @override - String get setupEnterClientId => 'Enter Spotify Client ID'; - - @override - String get setupEnterClientSecret => 'Enter Spotify Client Secret'; - - @override - String get setupGetFreeCredentials => - 'Get your free API credentials from the Spotify Developer Dashboard.'; - @override String get setupEnableNotifications => 'Enable Notifications'; - @override - String get setupProceedToNextStep => 'You can now proceed to the next step.'; - - @override - String get setupNotificationProgressDescription => - 'You will receive download progress notifications.'; - @override String get setupNotificationBackgroundDescription => 'Get notified about download progress and completion. This helps you track downloads when the app is in background.'; @@ -820,32 +494,19 @@ class AppLocalizationsPt extends AppLocalizations { @override String get setupSkipForNow => 'Skip for now'; - @override - String get setupBack => 'Back'; - @override String get setupNext => 'Next'; @override String get setupGetStarted => 'Get Started'; - @override - String get setupSkipAndStart => 'Skip & Start'; - @override String get setupAllowAccessToManageFiles => 'Please enable \"Allow access to manage all files\" in the next screen.'; - @override - String get setupGetCredentialsFromSpotify => - 'Get credentials from developer.spotify.com'; - @override String get dialogCancel => 'Cancel'; - @override - String get dialogOk => 'OK'; - @override String get dialogSave => 'Save'; @@ -855,21 +516,9 @@ class AppLocalizationsPt extends AppLocalizations { @override String get dialogRetry => 'Retry'; - @override - String get dialogClose => 'Close'; - - @override - String get dialogYes => 'Yes'; - - @override - String get dialogNo => 'No'; - @override String get dialogClear => 'Clear'; - @override - String get dialogConfirm => 'Confirm'; - @override String get dialogDone => 'Done'; @@ -892,28 +541,9 @@ class AppLocalizationsPt extends AppLocalizations { String get dialogUnsavedChanges => 'You have unsaved changes. Do you want to discard them?'; - @override - String get dialogDownloadFailed => 'Download Failed'; - - @override - String get dialogTrackLabel => 'Track:'; - - @override - String get dialogArtistLabel => 'Artist:'; - - @override - String get dialogErrorLabel => 'Error:'; - @override String get dialogClearAll => 'Clear All'; - @override - String get dialogClearAllDownloads => - 'Are you sure you want to clear all downloads?'; - - @override - String get dialogRemoveFromDevice => 'Remove from device?'; - @override String get dialogRemoveExtension => 'Remove Extension'; @@ -1014,11 +644,6 @@ class AppLocalizationsPt extends AppLocalizations { @override String get snackbarViewQueue => 'View Queue'; - @override - String snackbarFailedToLoad(String error) { - return 'Failed to load: $error'; - } - @override String snackbarUrlCopied(String platform) { return '$platform URL copied to clipboard'; @@ -1060,44 +685,14 @@ class AppLocalizationsPt extends AppLocalizations { String get errorRateLimitedMessage => 'Too many requests. Please wait a moment before searching again.'; - @override - String errorFailedToLoad(String item) { - return 'Failed to load $item'; - } - @override String get errorNoTracksFound => 'No tracks found'; - @override - String get errorSeekNotSupported => - 'Seeking is not supported for this live stream'; - @override String errorMissingExtensionSource(String item) { return 'Cannot load $item: missing extension source'; } - @override - String get statusQueued => 'Queued'; - - @override - String get statusDownloading => 'Downloading'; - - @override - String get statusFinalizing => 'Finalizing'; - - @override - String get statusCompleted => 'Completed'; - - @override - String get statusFailed => 'Failed'; - - @override - String get statusSkipped => 'Skipped'; - - @override - String get statusPaused => 'Paused'; - @override String get actionPause => 'Pause'; @@ -1107,24 +702,12 @@ class AppLocalizationsPt extends AppLocalizations { @override String get actionCancel => 'Cancel'; - @override - String get actionStop => 'Stop'; - - @override - String get actionSelect => 'Select'; - @override String get actionSelectAll => 'Select All'; @override String get actionDeselect => 'Deselect'; - @override - String get actionPaste => 'Paste'; - - @override - String get actionImportCsv => 'Import CSV'; - @override String get actionRemoveCredentials => 'Remove Credentials'; @@ -1139,20 +722,6 @@ class AppLocalizationsPt extends AppLocalizations { @override String get selectionAllSelected => 'All tracks selected'; - @override - String get selectionTapToSelect => 'Tap tracks to select'; - - @override - String selectionDeleteTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Delete $count $_temp0'; - } - @override String get selectionSelectToDelete => 'Select tracks to delete'; @@ -1179,40 +748,9 @@ class AppLocalizationsPt extends AppLocalizations { @override String get tooltipPlay => 'Play'; - @override - String get tooltipCancel => 'Cancel'; - - @override - String get tooltipStop => 'Stop'; - - @override - String get tooltipRetry => 'Retry'; - - @override - String get tooltipRemove => 'Remove'; - - @override - String get tooltipClear => 'Clear'; - - @override - String get tooltipPaste => 'Paste'; - @override String get filenameFormat => 'Filename Format'; - @override - String filenameFormatPreview(String preview) { - return 'Preview: $preview'; - } - - @override - String get filenameAvailablePlaceholders => 'Available placeholders:'; - - @override - String filenameHint(Object artist, Object title) { - return '$artist - $title'; - } - @override String get filenameShowAdvancedTags => 'Show advanced tags'; @@ -1220,9 +758,6 @@ class AppLocalizationsPt extends AppLocalizations { String get filenameShowAdvancedTagsDescription => 'Enable formatted tags for track padding and date patterns'; - @override - String get folderOrganization => 'Folder Organization'; - @override String get folderOrganizationNone => 'No organization'; @@ -1257,20 +792,9 @@ class AppLocalizationsPt extends AppLocalizations { @override String get updateAvailable => 'Update Available'; - @override - String updateNewVersion(String version) { - return 'Version $version is available'; - } - - @override - String get updateDownload => 'Download'; - @override String get updateLater => 'Later'; - @override - String get updateChangelog => 'Changelog'; - @override String get updateStartingDownload => 'Starting download...'; @@ -1301,12 +825,6 @@ class AppLocalizationsPt extends AppLocalizations { @override String get updateDontRemind => 'Don\'t remind'; - @override - String get providerPriority => 'Provider Priority'; - - @override - String get providerPrioritySubtitle => 'Drag to reorder download providers'; - @override String get providerPriorityTitle => 'Provider Priority'; @@ -1324,13 +842,6 @@ class AppLocalizationsPt extends AppLocalizations { @override String get providerExtension => 'Extension'; - @override - String get metadataProviderPriority => 'Metadata Provider Priority'; - - @override - String get metadataProviderPrioritySubtitle => - 'Order used when fetching track metadata'; - @override String get metadataProviderPriorityTitle => 'Metadata Priority'; @@ -1351,18 +862,6 @@ class AppLocalizationsPt extends AppLocalizations { @override String get logTitle => 'Logs'; - @override - String get logCopy => 'Copy Logs'; - - @override - String get logClear => 'Clear Logs'; - - @override - String get logShare => 'Share Logs'; - - @override - String get logEmpty => 'No logs yet'; - @override String get logCopied => 'Logs copied to clipboard'; @@ -1387,18 +886,6 @@ class AppLocalizationsPt extends AppLocalizations { @override String get logClearLogsMessage => 'Are you sure you want to clear all logs?'; - @override - String get logIspBlocking => 'ISP BLOCKING DETECTED'; - - @override - String get logRateLimited => 'RATE LIMITED'; - - @override - String get logNetworkError => 'NETWORK ERROR'; - - @override - String get logTrackNotFound => 'TRACK NOT FOUND'; - @override String get logFilterBySeverity => 'Filter logs by severity'; @@ -1408,48 +895,6 @@ class AppLocalizationsPt extends AppLocalizations { @override String get logNoLogsYetSubtitle => 'Logs will appear here as you use the app'; - @override - String get logIssueSummary => 'Issue Summary'; - - @override - String get logIspBlockingDescription => - 'Your ISP may be blocking access to download services'; - - @override - String get logIspBlockingSuggestion => - 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; - - @override - String get logRateLimitedDescription => 'Too many requests to the service'; - - @override - String get logRateLimitedSuggestion => - 'Wait a few minutes before trying again'; - - @override - String get logNetworkErrorDescription => 'Connection issues detected'; - - @override - String get logNetworkErrorSuggestion => 'Check your internet connection'; - - @override - String get logTrackNotFoundDescription => - 'Some tracks could not be found on download services'; - - @override - String get logTrackNotFoundSuggestion => - 'The track may not be available in lossless quality'; - - @override - String logTotalErrors(int count) { - return 'Total errors: $count'; - } - - @override - String logAffected(String domains) { - return 'Affected: $domains'; - } - @override String logEntriesFiltered(int count) { return 'Entries ($count filtered)'; @@ -1556,9 +1001,6 @@ class AppLocalizationsPt extends AppLocalizations { @override String get appearanceLanguage => 'App Language'; - @override - String get appearanceLanguageSubtitle => 'Choose your preferred language'; - @override String get settingsAppearanceSubtitle => 'Theme, colors, display'; @@ -1580,19 +1022,11 @@ class AppLocalizationsPt extends AppLocalizations { @override String get pressBackAgainToExit => 'Press back again to exit'; - @override - String get tracksHeader => 'Tracks'; - @override String downloadAllCount(int count) { return 'Download All ($count)'; } - @override - String playAllCount(int count) { - return 'Play All ($count)'; - } - @override String tracksCount(int count) { String _temp0 = intl.Intl.pluralLogic( @@ -1701,11 +1135,6 @@ class AppLocalizationsPt extends AppLocalizations { String get trackDeleteConfirmMessage => 'This will permanently delete the downloaded file and remove it from your history.'; - @override - String trackCannotOpen(String message) { - return 'Cannot open: $message'; - } - @override String get dateToday => 'Today'; @@ -1727,18 +1156,6 @@ class AppLocalizationsPt extends AppLocalizations { return '$count months ago'; } - @override - String get concurrentSequential => 'Sequential'; - - @override - String get concurrentParallel2 => '2 Parallel'; - - @override - String get concurrentParallel3 => '3 Parallel'; - - @override - String get tapToSeeError => 'Tap to see error details'; - @override String get storeFilterAll => 'All'; @@ -1760,15 +1177,6 @@ class AppLocalizationsPt extends AppLocalizations { @override String get storeClearFilters => 'Clear filters'; - @override - String get storeNoResults => 'No extensions found'; - - @override - String get extensionProviderPriority => 'Provider Priority'; - - @override - String get extensionInstallButton => 'Install Extension'; - @override String get extensionDefaultProvider => 'Default (Deezer/Spotify)'; @@ -1919,38 +1327,6 @@ class AppLocalizationsPt extends AppLocalizations { @override String get qualityHiResFlacMaxSubtitle => '24-bit / up to 192kHz'; - @override - String get qualityLossy => 'Lossy'; - - @override - String get qualityLossyMp3Subtitle => 'MP3 320kbps (converted from FLAC)'; - - @override - String get qualityLossyOpusSubtitle => 'Opus 128kbps (converted from FLAC)'; - - @override - String get enableLossyOption => 'Enable Lossy Option'; - - @override - String get enableLossyOptionSubtitleOn => 'Lossy quality option is available'; - - @override - String get enableLossyOptionSubtitleOff => - 'Downloads FLAC then converts to lossy format'; - - @override - String get lossyFormat => 'Lossy Format'; - - @override - String get lossyFormatDescription => 'Choose the lossy format for conversion'; - - @override - String get lossyFormatMp3Subtitle => '320kbps, best compatibility'; - - @override - String get lossyFormatOpusSubtitle => - '128kbps, better quality at smaller size'; - @override String get qualityNote => 'Actual quality depends on track availability from the service'; @@ -1965,24 +1341,6 @@ class AppLocalizationsPt extends AppLocalizations { @override String get youtubeMp3BitrateTitle => 'YouTube MP3 Bitrate'; - @override - String youtubeBitrateSubtitle(int bitrate, int min, int max) { - return '${bitrate}kbps ($min-$max)'; - } - - @override - String youtubeBitrateInputHelp(int min, int max) { - return 'Enter custom bitrate ($min-$max kbps)'; - } - - @override - String get youtubeBitrateFieldLabel => 'Bitrate (kbps)'; - - @override - String youtubeBitrateValidationError(int min, int max) { - return 'Bitrate must be between $min and $max kbps'; - } - @override String get downloadAskBeforeDownload => 'Ask Before Download'; @@ -1998,14 +1356,6 @@ class AppLocalizationsPt extends AppLocalizations { @override String get downloadUseAlbumArtistForFolders => 'Use Album Artist for folders'; - @override - String get downloadUseAlbumArtistForFoldersAlbumSubtitle => - 'Artist folders use Album Artist when available'; - - @override - String get downloadUseAlbumArtistForFoldersTrackSubtitle => - 'Artist folders use Track Artist only'; - @override String get downloadUsePrimaryArtistOnly => 'Primary artist only for folders'; @@ -2017,78 +1367,18 @@ class AppLocalizationsPt extends AppLocalizations { String get downloadUsePrimaryArtistOnlyDisabled => 'Full artist string used for folder name'; - @override - String get downloadSaveFormat => 'Save Format'; - - @override - String get downloadSelectService => 'Select Service'; - @override String get downloadSelectQuality => 'Select Quality'; @override String get downloadFrom => 'Download From'; - @override - String get downloadDefaultQualityLabel => 'Default Quality'; - - @override - String get downloadBestAvailable => 'Best available'; - - @override - String get folderNone => 'None'; - - @override - String get folderNoneSubtitle => 'Save all files directly to download folder'; - - @override - String get folderArtist => 'Artist'; - - @override - String get folderArtistSubtitle => 'Artist Name/filename'; - - @override - String get folderAlbum => 'Album'; - - @override - String get folderAlbumSubtitle => 'Album Name/filename'; - - @override - String get folderArtistAlbum => 'Artist/Album'; - - @override - String get folderArtistAlbumSubtitle => 'Artist Name/Album Name/filename'; - - @override - String get serviceTidal => 'Tidal'; - - @override - String get serviceQobuz => 'Qobuz'; - - @override - String get serviceAmazon => 'Amazon'; - - @override - String get serviceDeezer => 'Deezer'; - - @override - String get serviceSpotify => 'Spotify'; - @override String get appearanceAmoledDark => 'AMOLED Dark'; @override String get appearanceAmoledDarkSubtitle => 'Pure black background'; - @override - String get appearanceChooseAccentColor => 'Choose Accent Color'; - - @override - String get appearanceChooseTheme => 'Theme Mode'; - - @override - String get queueTitle => 'Download Queue'; - @override String get queueClearAll => 'Clear All'; @@ -2096,19 +1386,6 @@ class AppLocalizationsPt extends AppLocalizations { String get queueClearAllMessage => 'Are you sure you want to clear all downloads?'; - @override - String get queueExportFailed => 'Export'; - - @override - String get queueExportFailedSuccess => - 'Failed downloads exported to TXT file'; - - @override - String get queueExportFailedClear => 'Clear Failed'; - - @override - String get queueExportFailedError => 'Failed to export downloads'; - @override String get settingsAutoExportFailed => 'Auto-export failed downloads'; @@ -2129,30 +1406,6 @@ class AppLocalizationsPt extends AppLocalizations { String get settingsDownloadNetworkSubtitle => 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; - @override - String get queueEmpty => 'No downloads in queue'; - - @override - String get queueEmptySubtitle => 'Add tracks from the home screen'; - - @override - String get queueClearCompleted => 'Clear completed'; - - @override - String get queueDownloadFailed => 'Download Failed'; - - @override - String get queueTrackLabel => 'Track:'; - - @override - String get queueArtistLabel => 'Artist:'; - - @override - String get queueErrorLabel => 'Error:'; - - @override - String get queueUnknownError => 'Unknown error'; - @override String get albumFolderArtistAlbum => 'Artist / Album'; @@ -2199,14 +1452,6 @@ class AppLocalizationsPt extends AppLocalizations { return 'Delete $count $_temp0 from this album?\n\nThis will also delete the files from storage.'; } - @override - String get downloadedAlbumTracksHeader => 'Tracks'; - - @override - String downloadedAlbumDownloadedCount(int count) { - return '$count downloaded'; - } - @override String downloadedAlbumSelectedCount(int count) { return '$count selected'; @@ -2237,9 +1482,6 @@ class AppLocalizationsPt extends AppLocalizations { return 'Disc $discNumber'; } - @override - String get utilityFunctions => 'Utility Functions'; - @override String get recentTypeArtist => 'Artist'; @@ -2263,23 +1505,12 @@ class AppLocalizationsPt extends AppLocalizations { return 'Playlist: $name'; } - @override - String errorGeneric(String message) { - return 'Error: $message'; - } - @override String get discographyDownload => 'Download Discography'; - @override - String get discographyPlay => 'Play Discography'; - @override String get discographyDownloadAll => 'Download All'; - @override - String get discographyPlayAll => 'Play All'; - @override String discographyDownloadAllSubtitle(int count, int albumCount) { return '$count tracks from $albumCount releases'; @@ -2324,9 +1555,6 @@ class AppLocalizationsPt extends AppLocalizations { @override String get discographyDownloadSelected => 'Download Selected'; - @override - String get discographyPlaySelected => 'Play Selected'; - @override String discographyAddedToQueue(int count) { return 'Added $count tracks to queue'; @@ -2382,9 +1610,6 @@ class AppLocalizationsPt extends AppLocalizations { @override String get libraryTitle => 'Local Library'; - @override - String get libraryStatus => 'Library Status'; - @override String get libraryScanSettings => 'Scan Settings'; @@ -2447,11 +1672,6 @@ class AppLocalizationsPt extends AppLocalizations { String get libraryAboutDescription => 'Scans your existing music collection to detect duplicates when downloading. Supports FLAC, M4A, MP3, Opus, and OGG formats. Metadata is read from file tags when available.'; - @override - String libraryTracksCount(int count) { - return '$count tracks'; - } - @override String libraryTracksUnit(int count) { String _temp0 = intl.Intl.pluralLogic( @@ -2542,21 +1762,6 @@ class AppLocalizationsPt extends AppLocalizations { @override String get libraryFilterFormat => 'Format'; - @override - String get libraryFilterDate => 'Date Added'; - - @override - String get libraryFilterDateToday => 'Today'; - - @override - String get libraryFilterDateWeek => 'This Week'; - - @override - String get libraryFilterDateMonth => 'This Month'; - - @override - String get libraryFilterDateYear => 'This Year'; - @override String get libraryFilterSort => 'Sort'; @@ -2566,11 +1771,6 @@ class AppLocalizationsPt extends AppLocalizations { @override String get libraryFilterSortOldest => 'Oldest'; - @override - String libraryFilterActive(int count) { - return '$count filter(s) active'; - } - @override String get timeJustNow => 'Just now'; @@ -2596,72 +1796,6 @@ class AppLocalizationsPt extends AppLocalizations { return '$_temp0'; } - @override - String get storageSwitchTitle => 'Switch Storage Mode'; - - @override - String get storageSwitchToSafTitle => 'Switch to SAF Storage?'; - - @override - String get storageSwitchToAppTitle => 'Switch to App Storage?'; - - @override - String get storageSwitchToSafMessage => - 'Your existing downloads will remain in the current location and stay accessible.\n\nNew downloads will be saved to your selected SAF folder.'; - - @override - String get storageSwitchToAppMessage => - 'Your existing downloads will remain in the current SAF location and stay accessible.\n\nNew downloads will be saved to Music/SpotiFLAC folder.'; - - @override - String get storageSwitchExistingDownloads => 'Existing Downloads'; - - @override - String storageSwitchExistingDownloadsInfo(int count, String mode) { - return '$count tracks in $mode storage'; - } - - @override - String get storageSwitchNewDownloads => 'New Downloads'; - - @override - String storageSwitchNewDownloadsLocation(String location) { - return 'Will be saved to: $location'; - } - - @override - String get storageSwitchContinue => 'Continue'; - - @override - String get storageSwitchSelectFolder => 'Select SAF Folder'; - - @override - String get storageAppStorage => 'App Storage'; - - @override - String get storageSafStorage => 'SAF Storage'; - - @override - String storageModeBadge(String mode) { - return 'Storage: $mode'; - } - - @override - String get storageStatsTitle => 'Storage Statistics'; - - @override - String storageStatsAppCount(int count) { - return '$count tracks in App Storage'; - } - - @override - String storageStatsSafCount(int count) { - return '$count tracks in SAF Storage'; - } - - @override - String get storageModeInfo => 'Your files are stored in multiple locations'; - @override String get tutorialWelcomeTitle => 'Welcome to SpotiFLAC!'; @@ -2688,18 +1822,6 @@ class AppLocalizationsPt extends AppLocalizations { String get tutorialSearchDesc => 'There are two easy ways to find music you want to download.'; - @override - String get tutorialSearchTip1 => - 'Paste a Spotify or Deezer URL directly in the search box'; - - @override - String get tutorialSearchTip2 => - 'Or type the song name, artist, or album to search'; - - @override - String get tutorialSearchTip3 => - 'Supports tracks, albums, playlists, and artist pages'; - @override String get tutorialDownloadTitle => 'Downloading Music'; @@ -2707,18 +1829,6 @@ class AppLocalizationsPt extends AppLocalizations { String get tutorialDownloadDesc => 'Downloading music is simple and fast. Here\'s how it works.'; - @override - String get tutorialDownloadTip1 => - 'Tap the download button next to any track to start downloading'; - - @override - String get tutorialDownloadTip2 => - 'Choose your preferred quality (FLAC, Hi-Res, or MP3)'; - - @override - String get tutorialDownloadTip3 => - 'Download entire albums or playlists with one tap'; - @override String get tutorialLibraryTitle => 'Your Library'; @@ -2779,9 +1889,6 @@ class AppLocalizationsPt extends AppLocalizations { String get tutorialReadyMessage => 'You\'re all set! Start downloading your favorite music now.'; - @override - String get tutorialExample => 'EXAMPLE'; - @override String get libraryForceFullScan => 'Force Full Scan'; @@ -2944,10 +2051,6 @@ class AppLocalizationsPt extends AppLocalizations { @override String get trackReEnrich => 'Re-enrich'; - @override - String get trackReEnrichSubtitle => - 'Re-embed metadata without re-downloading'; - @override String get trackReEnrichOnlineSubtitle => 'Search metadata online and embed into file'; @@ -3228,45 +2331,17 @@ class AppLocalizationsPt extends AppLocalizations { } @override - String get setupModeSelectionTitle => 'Escolha seu modo'; + String downloadedAlbumDownloadedCount(int count) { + return '$count downloaded'; + } @override - String get setupModeSelectionDescription => - 'Como você gostaria de usar o SpotiFLAC? Você pode alterar isso depois nas Configurações.'; + String get downloadUseAlbumArtistForFoldersAlbumSubtitle => + 'Artist folders use Album Artist when available'; @override - String get setupModeDownloaderTitle => 'Downloader'; - - @override - String get setupModeDownloaderFeature1 => - 'Baixe faixas em qualidade FLAC lossless'; - - @override - String get setupModeDownloaderFeature2 => - 'Salve músicas no seu dispositivo para ouvir offline'; - - @override - String get setupModeDownloaderFeature3 => - 'Gerencie sua biblioteca de músicas local'; - - @override - String get setupModeStreamingTitle => 'Streaming'; - - @override - String get setupModeStreamingFeature1 => - 'Transmita faixas instantaneamente sem baixar'; - - @override - String get setupModeStreamingFeature2 => - 'Smart Queue descobre automaticamente novas músicas para você'; - - @override - String get setupModeStreamingFeature3 => - 'Reproduza qualquer faixa sob demanda com controles de reprodução'; - - @override - String get setupModeChangeableLater => - 'Você pode alternar entre os modos a qualquer momento nas Configurações.'; + String get downloadUseAlbumArtistForFoldersTrackSubtitle => + 'Artist folders use Track Artist only'; } /// The translations for Portuguese, as used in Portugal (`pt_PT`). @@ -3276,19 +2351,12 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get appName => 'SpotiFLAC'; - @override - String get appDescription => - 'Baixe faixas do Spotify em qualidade sem perdas de Tidal, Qobuz e Amazon Music.'; - @override String get navHome => 'Início'; @override String get navLibrary => 'Library'; - @override - String get navHistory => 'Histórico'; - @override String get navSettings => 'Configurações'; @@ -3298,14 +2366,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get homeTitle => 'Início'; - @override - String get homeSearchHint => 'Pesquise ou cole a URL do Spotify...'; - - @override - String homeSearchHintExtension(String extensionName) { - return 'Pesquisar com $extensionName...'; - } - @override String get homeSubtitle => 'Cole um link do Spotify ou procure por nome'; @@ -3316,17 +2376,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get homeRecent => 'Recentes'; - @override - String get historyTitle => 'Histórico'; - - @override - String historyDownloading(int count) { - return 'Baixando ($count)'; - } - - @override - String get historyDownloaded => 'Baixados'; - @override String get historyFilterAll => 'Tudo'; @@ -3336,48 +2385,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get historyFilterSingles => 'Singles'; - @override - String historyTracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count faixas', - one: '1 faixa', - ); - return '$_temp0'; - } - - @override - String historyAlbumsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count álbuns', - one: '1 álbum', - ); - return '$_temp0'; - } - - @override - String get historyNoDownloads => 'Nenhum histórico de downloads'; - - @override - String get historyNoDownloadsSubtitle => 'As faixas baixadas aparecerão aqui'; - - @override - String get historyNoAlbums => 'Sem álbuns baixados'; - - @override - String get historyNoAlbumsSubtitle => - 'Baixe várias faixas de um álbum para vê-las aqui'; - - @override - String get historyNoSingles => 'Sem singles baixados'; - - @override - String get historyNoSinglesSubtitle => - 'Os downloads de faixa individuais aparecerão aqui'; - @override String get historySearchHint => 'Pesquisar histórico...'; @@ -3402,27 +2409,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get downloadTitle => 'Download'; - @override - String get downloadLocation => 'Local dos Downloads'; - - @override - String get downloadLocationSubtitle => 'Escolha onde salvar os arquivos'; - - @override - String get downloadLocationDefault => 'Local padrão'; - - @override - String get downloadDefaultService => 'Serviço Padrão'; - - @override - String get downloadDefaultServiceSubtitle => 'Serviço usado para downloads'; - - @override - String get downloadDefaultQuality => 'Qualidade Predefinida'; - - @override - String get downloadAskQuality => 'Perguntar qualidade antes de baixar'; - @override String get downloadAskQualitySubtitle => 'Mostrar seletor de qualidade para cada download'; @@ -3433,31 +2419,9 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get downloadFolderOrganization => 'Organização de Pastas'; - @override - String get downloadSeparateSingles => 'Separar Singles'; - - @override - String get downloadSeparateSinglesSubtitle => - 'Colocar singles numa pasta separada'; - - @override - String get qualityBest => 'Melhor Disponível'; - - @override - String get qualityFlac => 'FLAC'; - - @override - String get quality320 => '320 kbps'; - - @override - String get quality128 => '128 kbps'; - @override String get appearanceTitle => 'Aparência'; - @override - String get appearanceTheme => 'Tema'; - @override String get appearanceThemeSystem => 'Sistema'; @@ -3474,9 +2438,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get appearanceDynamicColorSubtitle => 'Usar cores do seu papel de parede'; - @override - String get appearanceAccentColor => 'Cor de Destaque'; - @override String get appearanceHistoryView => 'Visualização do Histórico'; @@ -3489,9 +2450,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get optionsTitle => 'Opções'; - @override - String get optionsSearchSource => 'Origem da Pesquisa'; - @override String get optionsPrimaryProvider => 'Provedor Primário'; @@ -3622,19 +2580,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get extensionsTitle => 'Extensões'; - @override - String get extensionsInstalled => 'Extensões Instaladas'; - - @override - String get extensionsNone => 'Nenhuma extensão instalada'; - - @override - String get extensionsNoneSubtitle => - 'Instalar extensões a partir da aba Loja'; - - @override - String get extensionsEnabled => 'Habilitado'; - @override String get extensionsDisabled => 'Desabilitado'; @@ -3651,9 +2596,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get extensionsUninstall => 'Desinstalar'; - @override - String get extensionsSetAsSearch => 'Definir como Provedor de Pesquisa'; - @override String get storeTitle => 'Loja de Extensões'; @@ -3729,9 +2671,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get aboutSocial => 'Social'; - @override - String get aboutSupport => 'Apoiar'; - @override String get aboutApp => 'Aplicativo'; @@ -3750,13 +2689,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get aboutSjdonadoDesc => 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; - @override - String get aboutDoubleDouble => 'DoubleDouble'; - - @override - String get aboutDoubleDoubleDesc => - 'API incrível para downloads do Amazon Music. Obrigado por fazê-lo gratuitamente!'; - @override String get aboutDabMusic => 'DAB Music'; @@ -3775,32 +2707,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get aboutAppDescription => 'Baixe faixas do Spotify em qualidade sem perdas do Tidal, Qobuz e Amazon Music.'; - @override - String get albumTitle => 'Álbum'; - - @override - String albumTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count faixas', - one: '1 faixa', - ); - return '$_temp0'; - } - - @override - String get albumDownloadAll => 'Baixar Tudo'; - - @override - String get albumDownloadRemaining => 'Downloads Restantes'; - - @override - String get playlistTitle => 'Playlist'; - - @override - String get artistTitle => 'Artista'; - @override String get artistAlbums => 'Álbuns'; @@ -3810,17 +2716,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get artistCompilations => 'Compilações'; - @override - String artistReleases(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count lançamentos', - one: '1 lançamento', - ); - return '$_temp0'; - } - @override String get artistPopular => 'Populares'; @@ -3829,27 +2724,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { return '$count ouvintes mensais'; } - @override - String get trackMetadataTitle => 'Informações da Faixa'; - - @override - String get trackMetadataArtist => 'Artista'; - - @override - String get trackMetadataAlbum => 'Álbum'; - - @override - String get trackMetadataDuration => 'Duração'; - - @override - String get trackMetadataQuality => 'Qualidade'; - - @override - String get trackMetadataPath => 'Caminho do Arquivo'; - - @override - String get trackMetadataDownloadedAt => 'Baixado'; - @override String get trackMetadataService => 'Serviço'; @@ -3862,53 +2736,15 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get trackMetadataDelete => 'Apagar'; - @override - String get trackMetadataRedownload => 'Baixar Novamente'; - - @override - String get trackMetadataOpenFolder => 'Abrir Pasta'; - - @override - String get setupTitle => 'Bem-vindo ao SpotiFLAC'; - - @override - String get setupSubtitle => 'Vamos começar'; - - @override - String get setupStoragePermission => 'Permissão de Armazenamento'; - - @override - String get setupStoragePermissionSubtitle => - 'Necessária para salvar arquivos baixados'; - - @override - String get setupStoragePermissionGranted => 'Permissão concedida'; - - @override - String get setupStoragePermissionDenied => 'Permissão negada'; - @override String get setupGrantPermission => 'Conceder Permissão'; - @override - String get setupDownloadLocation => 'Local do Download'; - - @override - String get setupChooseFolder => 'Selecionar Pasta'; - - @override - String get setupContinue => 'Continuar'; - @override String get setupSkip => 'Ignorar por enquanto'; @override String get setupStorageAccessRequired => 'Acesso ao Armazenamento Necessário'; - @override - String get setupStorageAccessMessage => - 'O SpotiFLAC precisa da permissão \"Acesso a todos os arquivos\" para salvar arquivos de música na sua pasta escolhida.'; - @override String get setupStorageAccessMessageAndroid11 => 'O Android 11+ requer a permissão \"Acesso a Todos os Arquivos\" para salvar arquivos na pasta de download escolhida.'; @@ -3930,9 +2766,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { return 'A permissão $permissionType é necessária para a melhor experiência. Você pode alterar isso mais tarde em Configurações.'; } - @override - String get setupSelectDownloadFolder => 'Escolher Pasta de Download'; - @override String get setupUseDefaultFolder => 'Usar Pasta Padrão?'; @@ -3975,21 +2808,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get setupDownloadInFlac => 'Baixar faixas do Spotify em FLAC'; - @override - String get setupStepStorage => 'Armazenamento'; - - @override - String get setupStepNotification => 'Notificação'; - - @override - String get setupStepFolder => 'Pasta'; - - @override - String get setupStepSpotify => 'Spotify'; - - @override - String get setupStepPermission => 'Permissão'; - @override String get setupStorageGranted => 'Permissão de Armazenamento Concedida!'; @@ -4006,13 +2824,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get setupNotificationEnable => 'Habilitar Notificações'; - @override - String get setupNotificationDescription => - 'Seja notificado quando os downloads completarem ou exigirem atenção.'; - - @override - String get setupFolderSelected => 'Pasta para Download Selecionada!'; - @override String get setupFolderChoose => 'Escolher Pasta de Download'; @@ -4020,49 +2831,12 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get setupFolderDescription => 'Selecione uma pasta onde as suas músicas baixadas serão salvas.'; - @override - String get setupChangeFolder => 'Alterar Pasta'; - @override String get setupSelectFolder => 'Seleccionar Pasta'; - @override - String get setupSpotifyApiOptional => 'API do Spotify (opcional)'; - - @override - String get setupSpotifyApiDescription => - 'Adicione as suas credenciais da API do Spotify para obter melhores resultados de busca e acesso a conteúdo exclusivo do Spotify.'; - - @override - String get setupUseSpotifyApi => 'Usar API do Spotify'; - - @override - String get setupEnterCredentialsBelow => 'Insira as suas credenciais abaixo'; - - @override - String get setupUsingDeezer => 'Usando o Deezer (nenhuma conta necessária)'; - - @override - String get setupEnterClientId => 'Insira o Spotify Client ID'; - - @override - String get setupEnterClientSecret => 'Insira o Spotify Client Secret'; - - @override - String get setupGetFreeCredentials => - 'Receba as suas credenciais de API gratuitas na Spotify Developer Dashboard.'; - @override String get setupEnableNotifications => 'Habilitar Notificações'; - @override - String get setupProceedToNextStep => - 'Você já pode prosseguir para o próximo passo.'; - - @override - String get setupNotificationProgressDescription => - 'Você receberá notificações de progresso dos downloads.'; - @override String get setupNotificationBackgroundDescription => 'Seja notificado sobre o progresso e conclusão do download. Isso ajuda você a acompanhar os downloads quando o app estiver em segundo plano.'; @@ -4070,32 +2844,19 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get setupSkipForNow => 'Ignorar por enquanto'; - @override - String get setupBack => 'Voltar'; - @override String get setupNext => 'Próximo'; @override String get setupGetStarted => 'Começar'; - @override - String get setupSkipAndStart => 'Ignorar e Iniciar'; - @override String get setupAllowAccessToManageFiles => 'Por favor, habilite \"Permitir acesso para gerenciar todos os arquivos\" na próxima tela.'; - @override - String get setupGetCredentialsFromSpotify => - 'Obter credenciais do developer.spotify.com'; - @override String get dialogCancel => 'Cancelar'; - @override - String get dialogOk => 'OK'; - @override String get dialogSave => 'Salvar'; @@ -4105,21 +2866,9 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get dialogRetry => 'Tentar novamente'; - @override - String get dialogClose => 'Fechar'; - - @override - String get dialogYes => 'Sim'; - - @override - String get dialogNo => 'Não'; - @override String get dialogClear => 'Limpar'; - @override - String get dialogConfirm => 'Confirmar'; - @override String get dialogDone => 'Concluído'; @@ -4142,28 +2891,9 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get dialogUnsavedChanges => 'Você tem alterações não salvas. Deseja descartá-las?'; - @override - String get dialogDownloadFailed => 'Download Falhou'; - - @override - String get dialogTrackLabel => 'Faixa:'; - - @override - String get dialogArtistLabel => 'Artista:'; - - @override - String get dialogErrorLabel => 'Erro:'; - @override String get dialogClearAll => 'Limpar Tudo'; - @override - String get dialogClearAllDownloads => - 'Você tem certeza que deseja limpar todos os downloads?'; - - @override - String get dialogRemoveFromDevice => 'Remover do dispositivo?'; - @override String get dialogRemoveExtension => 'Remover Extensão'; @@ -4264,11 +2994,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get snackbarViewQueue => 'Ver Fila'; - @override - String snackbarFailedToLoad(String error) { - return 'Falha ao carregar: $error'; - } - @override String snackbarUrlCopied(String platform) { return 'URL do $platform copiado para a área de transferência'; @@ -4311,11 +3036,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get errorRateLimitedMessage => 'Muitas solicitações. Por favor, aguarde um momento antes de pesquisar novamente.'; - @override - String errorFailedToLoad(String item) { - return 'Falha ao carregar $item'; - } - @override String get errorNoTracksFound => 'Nenhuma faixa encontrada'; @@ -4324,27 +3044,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { return 'Não é possível carregar $item: faltando a fonte da extensão'; } - @override - String get statusQueued => 'Na Fila'; - - @override - String get statusDownloading => 'Baixando'; - - @override - String get statusFinalizing => 'Finalizando'; - - @override - String get statusCompleted => 'Concluído'; - - @override - String get statusFailed => 'Falhou'; - - @override - String get statusSkipped => 'Ignorado'; - - @override - String get statusPaused => 'Pausado'; - @override String get actionPause => 'Pausar'; @@ -4354,24 +3053,12 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get actionCancel => 'Cancelar'; - @override - String get actionStop => 'Parar'; - - @override - String get actionSelect => 'Selecionar'; - @override String get actionSelectAll => 'Selecionar Tudo'; @override String get actionDeselect => 'Desselecionar'; - @override - String get actionPaste => 'Colar'; - - @override - String get actionImportCsv => 'Importar CSV'; - @override String get actionRemoveCredentials => 'Remover Credenciais'; @@ -4386,20 +3073,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get selectionAllSelected => 'Todas as faixas selecionadas'; - @override - String get selectionTapToSelect => 'Toque nas faixas para selecionar'; - - @override - String selectionDeleteTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'faixas', - one: 'faixa', - ); - return 'Apagar $count $_temp0'; - } - @override String get selectionSelectToDelete => 'Selecione as faixas para apagar'; @@ -4426,43 +3099,9 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get tooltipPlay => 'Reproduzir'; - @override - String get tooltipCancel => 'Cancelar'; - - @override - String get tooltipStop => 'Parar'; - - @override - String get tooltipRetry => 'Tentar Novamente'; - - @override - String get tooltipRemove => 'Remover'; - - @override - String get tooltipClear => 'Limpar'; - - @override - String get tooltipPaste => 'Colar'; - @override String get filenameFormat => 'Formato do Nome do Arquivo'; - @override - String filenameFormatPreview(String preview) { - return 'Prévia: $preview'; - } - - @override - String get filenameAvailablePlaceholders => 'Substituições permitidas:'; - - @override - String filenameHint(Object artist, Object title) { - return '$artist - $title'; - } - - @override - String get folderOrganization => 'Organização de Pastas'; - @override String get folderOrganizationNone => 'Nenhuma organização'; @@ -4498,20 +3137,9 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get updateAvailable => 'Atualização Disponível'; - @override - String updateNewVersion(String version) { - return 'A versão $version está disponível'; - } - - @override - String get updateDownload => 'Baixar'; - @override String get updateLater => 'Depois'; - @override - String get updateChangelog => 'Lista de alterações'; - @override String get updateStartingDownload => 'Iniciando download...'; @@ -4542,13 +3170,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get updateDontRemind => 'Não lembrar'; - @override - String get providerPriority => 'Prioridade de Provedor'; - - @override - String get providerPrioritySubtitle => - 'Arraste para reordenar os provedores de download'; - @override String get providerPriorityTitle => 'Prioridade de Provedor'; @@ -4566,13 +3187,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get providerExtension => 'Extensão'; - @override - String get metadataProviderPriority => 'Prioridade de Provedor de Metadados'; - - @override - String get metadataProviderPrioritySubtitle => - 'Ordem usada para obter metadados de faixa'; - @override String get metadataProviderPriorityTitle => 'Prioridade de Metadados'; @@ -4593,18 +3207,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get logTitle => 'Registros'; - @override - String get logCopy => 'Copiar Registros'; - - @override - String get logClear => 'Limpar Registros'; - - @override - String get logShare => 'Compartilhar Registros'; - - @override - String get logEmpty => 'Ainda não há registros'; - @override String get logCopied => 'Registros copiados para área de transferência'; @@ -4630,18 +3232,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get logClearLogsMessage => 'Tem certeza de que deseja limpar todos os registros?'; - @override - String get logIspBlocking => 'BLOQUEIO DE ISP DETECTADO'; - - @override - String get logRateLimited => 'TAXA LIMITADA (RATELIMITED)'; - - @override - String get logNetworkError => 'ERRO DE REDE'; - - @override - String get logTrackNotFound => 'FAIXA NÃO ENCONTRADA'; - @override String get logFilterBySeverity => 'Filtrar registros por gravidade'; @@ -4652,48 +3242,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get logNoLogsYetSubtitle => 'Os registros aparecerão aqui enquanto você usa o aplicativo'; - @override - String get logIssueSummary => 'Resumo do Problemas'; - - @override - String get logIspBlockingDescription => - 'O seu provedor pode estar bloqueando o acesso aos serviços de download'; - - @override - String get logIspBlockingSuggestion => - 'Tente usar uma VPN ou altere o DNS para 1.1.1 ou 8.8.8.8'; - - @override - String get logRateLimitedDescription => 'Muitas solicitações ao serviço'; - - @override - String get logRateLimitedSuggestion => - 'Aguarde alguns minutos antes de tentar novamente'; - - @override - String get logNetworkErrorDescription => 'Problemas de conexão detectados'; - - @override - String get logNetworkErrorSuggestion => 'Verifique sua conexão de internet'; - - @override - String get logTrackNotFoundDescription => - 'Algumas faixas não foram encontradas nos serviços de download'; - - @override - String get logTrackNotFoundSuggestion => - 'A faixa pode não estar disponível em qualidade sem perdas'; - - @override - String logTotalErrors(int count) { - return 'Total de erros: $count'; - } - - @override - String logAffected(String domains) { - return 'Afetado(s): $domains'; - } - @override String logEntriesFiltered(int count) { return 'Entradas ($count filtradas)'; @@ -4801,9 +3349,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get appearanceLanguage => 'Idioma do aplicativo'; - @override - String get appearanceLanguageSubtitle => 'Escolha o seu idioma preferido'; - @override String get settingsAppearanceSubtitle => 'Tema, cores, exibição'; @@ -4827,9 +3372,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get pressBackAgainToExit => 'Pressione voltar novamente para sair'; - @override - String get tracksHeader => 'Faixas'; - @override String downloadAllCount(int count) { return 'Baixar Todos ($count)'; @@ -4944,11 +3486,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get trackDeleteConfirmMessage => 'Isto irá excluir o arquivo baixado permanentemente e removê-lo do seu histórico.'; - @override - String trackCannotOpen(String message) { - return 'Não foi possível abrir: $message'; - } - @override String get dateToday => 'Hoje'; @@ -4970,18 +3507,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { return '$count meses atrás'; } - @override - String get concurrentSequential => 'Sequencial'; - - @override - String get concurrentParallel2 => '2 Paralelos'; - - @override - String get concurrentParallel3 => '3 Paralelos'; - - @override - String get tapToSeeError => 'Toque para ver os detalhes do erro'; - @override String get storeFilterAll => 'Tudo'; @@ -5003,15 +3528,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get storeClearFilters => 'Limpar filtros'; - @override - String get storeNoResults => 'Nenhuma extensão encontrada'; - - @override - String get extensionProviderPriority => 'Prioridade de Provedor'; - - @override - String get extensionInstallButton => 'Instalar Extensão'; - @override String get extensionDefaultProvider => 'Padrão (Deezer/Spotify)'; @@ -5165,38 +3681,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get qualityHiResFlacMaxSubtitle => '24-bit / até 192kHz'; - @override - String get qualityLossy => 'Lossy'; - - @override - String get qualityLossyMp3Subtitle => 'MP3 320kbps (converted from FLAC)'; - - @override - String get qualityLossyOpusSubtitle => 'Opus 128kbps (converted from FLAC)'; - - @override - String get enableLossyOption => 'Enable Lossy Option'; - - @override - String get enableLossyOptionSubtitleOn => 'Lossy quality option is available'; - - @override - String get enableLossyOptionSubtitleOff => - 'Downloads FLAC then converts to lossy format'; - - @override - String get lossyFormat => 'Lossy Format'; - - @override - String get lossyFormatDescription => 'Choose the lossy format for conversion'; - - @override - String get lossyFormatMp3Subtitle => '320kbps, best compatibility'; - - @override - String get lossyFormatOpusSubtitle => - '128kbps, better quality at smaller size'; - @override String get qualityNote => 'A qualidade real depende da faixa que estiver disponível no serviço'; @@ -5220,14 +3704,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get downloadUseAlbumArtistForFolders => 'Use Album Artist for folders'; - @override - String get downloadUseAlbumArtistForFoldersAlbumSubtitle => - 'Artist folders use Album Artist when available'; - - @override - String get downloadUseAlbumArtistForFoldersTrackSubtitle => - 'Artist folders use Track Artist only'; - @override String get downloadUsePrimaryArtistOnly => 'Primary artist only for folders'; @@ -5239,80 +3715,18 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get downloadUsePrimaryArtistOnlyDisabled => 'Full artist string used for folder name'; - @override - String get downloadSaveFormat => 'Formato para Salvar'; - - @override - String get downloadSelectService => 'Selecionar Serviço'; - @override String get downloadSelectQuality => 'Selecionar Qualidade'; @override String get downloadFrom => 'Baixar De'; - @override - String get downloadDefaultQualityLabel => 'Qualidade Padrão'; - - @override - String get downloadBestAvailable => 'Melhor Disponível'; - - @override - String get folderNone => 'Nenhuma'; - - @override - String get folderNoneSubtitle => - 'Salvar todos os arquivos diretamente na pasta de download'; - - @override - String get folderArtist => 'Artista'; - - @override - String get folderArtistSubtitle => 'Nome do Artista/arquivo'; - - @override - String get folderAlbum => 'Álbum'; - - @override - String get folderAlbumSubtitle => 'Nome do Álbum/arquivo'; - - @override - String get folderArtistAlbum => 'Artista/Álbum'; - - @override - String get folderArtistAlbumSubtitle => - 'Nome do Artista/Nome do Álbum/arquivo'; - - @override - String get serviceTidal => 'Tidal'; - - @override - String get serviceQobuz => 'Qobuz'; - - @override - String get serviceAmazon => 'Amazon'; - - @override - String get serviceDeezer => 'Deezer'; - - @override - String get serviceSpotify => 'Spotify'; - @override String get appearanceAmoledDark => 'Escuro AMOLED'; @override String get appearanceAmoledDarkSubtitle => 'Fundo preto puro'; - @override - String get appearanceChooseAccentColor => 'Escolha a Cor de Destaque'; - - @override - String get appearanceChooseTheme => 'Modo do Tema'; - - @override - String get queueTitle => 'Fila de Download'; - @override String get queueClearAll => 'Limpar Tudo'; @@ -5320,19 +3734,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get queueClearAllMessage => 'Você tem certeza que deseja limpar todos os downloads?'; - @override - String get queueExportFailed => 'Export'; - - @override - String get queueExportFailedSuccess => - 'Failed downloads exported to TXT file'; - - @override - String get queueExportFailedClear => 'Clear Failed'; - - @override - String get queueExportFailedError => 'Failed to export downloads'; - @override String get settingsAutoExportFailed => 'Auto-export failed downloads'; @@ -5353,30 +3754,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get settingsDownloadNetworkSubtitle => 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; - @override - String get queueEmpty => 'Nenhum download na fila'; - - @override - String get queueEmptySubtitle => 'Adicione faixas a partir da tela inicial'; - - @override - String get queueClearCompleted => 'Limpar concluídos'; - - @override - String get queueDownloadFailed => 'Download Falhou'; - - @override - String get queueTrackLabel => 'Faixa:'; - - @override - String get queueArtistLabel => 'Artista:'; - - @override - String get queueErrorLabel => 'Erro:'; - - @override - String get queueUnknownError => 'Erro desconhecido'; - @override String get albumFolderArtistAlbum => 'Artista / Álbum'; @@ -5424,14 +3801,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { return 'Excluir $count $_temp0 deste álbum?\n\nIsso também excluirá os arquivos do armazenamento.'; } - @override - String get downloadedAlbumTracksHeader => 'Faixas'; - - @override - String downloadedAlbumDownloadedCount(int count) { - return '$count baixado(s)'; - } - @override String downloadedAlbumSelectedCount(int count) { return '$count selecionado(s)'; @@ -5462,9 +3831,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { return 'Disco $discNumber'; } - @override - String get utilityFunctions => 'Funções Utilitárias'; - @override String get recentTypeArtist => 'Artista'; @@ -5488,11 +3854,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { return 'Playlist: $name'; } - @override - String errorGeneric(String message) { - return 'Erro: $message'; - } - @override String get discographyDownload => 'Baixar Discografia'; @@ -5598,9 +3959,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get libraryTitle => 'Local Library'; - @override - String get libraryStatus => 'Library Status'; - @override String get libraryScanSettings => 'Scan Settings'; @@ -5663,11 +4021,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get libraryAboutDescription => 'Scans your existing music collection to detect duplicates when downloading. Supports FLAC, M4A, MP3, Opus, and OGG formats. Metadata is read from file tags when available.'; - @override - String libraryTracksCount(int count) { - return '$count tracks'; - } - @override String libraryLastScanned(String time) { return 'Last scanned: $time'; @@ -5747,21 +4100,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get libraryFilterFormat => 'Format'; - @override - String get libraryFilterDate => 'Date Added'; - - @override - String get libraryFilterDateToday => 'Today'; - - @override - String get libraryFilterDateWeek => 'This Week'; - - @override - String get libraryFilterDateMonth => 'This Month'; - - @override - String get libraryFilterDateYear => 'This Year'; - @override String get libraryFilterSort => 'Sort'; @@ -5771,11 +4109,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get libraryFilterSortOldest => 'Oldest'; - @override - String libraryFilterActive(int count) { - return '$count filter(s) active'; - } - @override String get timeJustNow => 'Just now'; @@ -5801,72 +4134,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { return '$_temp0'; } - @override - String get storageSwitchTitle => 'Switch Storage Mode'; - - @override - String get storageSwitchToSafTitle => 'Switch to SAF Storage?'; - - @override - String get storageSwitchToAppTitle => 'Switch to App Storage?'; - - @override - String get storageSwitchToSafMessage => - 'Your existing downloads will remain in the current location and stay accessible.\n\nNew downloads will be saved to your selected SAF folder.'; - - @override - String get storageSwitchToAppMessage => - 'Your existing downloads will remain in the current SAF location and stay accessible.\n\nNew downloads will be saved to Music/SpotiFLAC folder.'; - - @override - String get storageSwitchExistingDownloads => 'Existing Downloads'; - - @override - String storageSwitchExistingDownloadsInfo(int count, String mode) { - return '$count tracks in $mode storage'; - } - - @override - String get storageSwitchNewDownloads => 'New Downloads'; - - @override - String storageSwitchNewDownloadsLocation(String location) { - return 'Will be saved to: $location'; - } - - @override - String get storageSwitchContinue => 'Continue'; - - @override - String get storageSwitchSelectFolder => 'Select SAF Folder'; - - @override - String get storageAppStorage => 'App Storage'; - - @override - String get storageSafStorage => 'SAF Storage'; - - @override - String storageModeBadge(String mode) { - return 'Storage: $mode'; - } - - @override - String get storageStatsTitle => 'Storage Statistics'; - - @override - String storageStatsAppCount(int count) { - return '$count tracks in App Storage'; - } - - @override - String storageStatsSafCount(int count) { - return '$count tracks in SAF Storage'; - } - - @override - String get storageModeInfo => 'Your files are stored in multiple locations'; - @override String get tutorialWelcomeTitle => 'Welcome to SpotiFLAC!'; @@ -5893,18 +4160,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get tutorialSearchDesc => 'There are two easy ways to find music you want to download.'; - @override - String get tutorialSearchTip1 => - 'Paste a Spotify or Deezer URL directly in the search box'; - - @override - String get tutorialSearchTip2 => - 'Or type the song name, artist, or album to search'; - - @override - String get tutorialSearchTip3 => - 'Supports tracks, albums, playlists, and artist pages'; - @override String get tutorialDownloadTitle => 'Downloading Music'; @@ -5912,18 +4167,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get tutorialDownloadDesc => 'Downloading music is simple and fast. Here\'s how it works.'; - @override - String get tutorialDownloadTip1 => - 'Tap the download button next to any track to start downloading'; - - @override - String get tutorialDownloadTip2 => - 'Choose your preferred quality (FLAC, Hi-Res, or MP3)'; - - @override - String get tutorialDownloadTip3 => - 'Download entire albums or playlists with one tap'; - @override String get tutorialLibraryTitle => 'Your Library'; @@ -5984,9 +4227,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get tutorialReadyMessage => 'You\'re all set! Start downloading your favorite music now.'; - @override - String get tutorialExample => 'EXAMPLE'; - @override String get libraryForceFullScan => 'Force Full Scan'; @@ -6149,10 +4389,6 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get trackReEnrich => 'Re-enrich'; - @override - String get trackReEnrichSubtitle => - 'Re-embed metadata without re-downloading'; - @override String get trackReEnrichOnlineSubtitle => 'Search metadata online and embed into file'; @@ -6229,43 +4465,15 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get trackConvertFailed => 'Conversion failed'; @override - String get setupModeSelectionTitle => 'Escolha o seu modo'; + String downloadedAlbumDownloadedCount(int count) { + return '$count baixado(s)'; + } @override - String get setupModeSelectionDescription => - 'Como gostaria de utilizar o SpotiFLAC? Pode alterar isto mais tarde nas Definições.'; + String get downloadUseAlbumArtistForFoldersAlbumSubtitle => + 'Artist folders use Album Artist when available'; @override - String get setupModeDownloaderTitle => 'Transferência'; - - @override - String get setupModeDownloaderFeature1 => - 'Transfira faixas em qualidade FLAC sem perdas'; - - @override - String get setupModeDownloaderFeature2 => - 'Guarde música no seu dispositivo para ouvir offline'; - - @override - String get setupModeDownloaderFeature3 => - 'Faça a gestão da sua biblioteca de música local'; - - @override - String get setupModeStreamingTitle => 'Streaming'; - - @override - String get setupModeStreamingFeature1 => - 'Transmita faixas instantaneamente sem transferir'; - - @override - String get setupModeStreamingFeature2 => - 'Smart Queue descobre automaticamente novas músicas para si'; - - @override - String get setupModeStreamingFeature3 => - 'Reproduza qualquer faixa a pedido com controlos de reprodução'; - - @override - String get setupModeChangeableLater => - 'Pode alternar entre modos a qualquer momento nas Definições.'; + String get downloadUseAlbumArtistForFoldersTrackSubtitle => + 'Artist folders use Track Artist only'; } diff --git a/lib/l10n/app_localizations_ru.dart b/lib/l10n/app_localizations_ru.dart index e6b4a1f8..85af897d 100644 --- a/lib/l10n/app_localizations_ru.dart +++ b/lib/l10n/app_localizations_ru.dart @@ -11,19 +11,12 @@ class AppLocalizationsRu extends AppLocalizations { @override String get appName => 'SpotiFLAC'; - @override - String get appDescription => - 'Скачайте треки Spotify в Lossless качестве из Tidal, Qobuz и Amazon Music.'; - @override String get navHome => 'Главная'; @override String get navLibrary => 'Библиотека'; - @override - String get navHistory => 'История'; - @override String get navSettings => 'Настройки'; @@ -33,14 +26,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get homeTitle => 'Главная'; - @override - String get homeSearchHint => 'Вставьте URL Spotify или выполните поиск...'; - - @override - String homeSearchHintExtension(String extensionName) { - return 'Искать с помощью $extensionName...'; - } - @override String get homeSubtitle => 'Вставьте ссылку Spotify или ищите по названию'; @@ -51,17 +36,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get homeRecent => 'Недавние'; - @override - String get historyTitle => 'История'; - - @override - String historyDownloading(int count) { - return 'Скачивание ($count)'; - } - - @override - String get historyDownloaded => 'Скачано'; - @override String get historyFilterAll => 'Все'; @@ -71,52 +45,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get historyFilterSingles => 'Синглы'; - @override - String historyTracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count треков', - many: '$count треков', - few: '$count трека', - one: '$count трек', - ); - return '$_temp0'; - } - - @override - String historyAlbumsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count альбомов', - many: '$count альбомов', - few: '$count альбома', - one: '$count альбом', - ); - return '$_temp0'; - } - - @override - String get historyNoDownloads => 'Нет истории скачиваний'; - - @override - String get historyNoDownloadsSubtitle => 'Скачанные треки появятся здесь'; - - @override - String get historyNoAlbums => 'Нет скачанных альбомов'; - - @override - String get historyNoAlbumsSubtitle => - 'Скачайте несколько треков из альбома, чтобы увидеть их здесь'; - - @override - String get historyNoSingles => 'Нет скачанных синглов'; - - @override - String get historyNoSinglesSubtitle => - 'Здесь будут отображаться загрузки синглов'; - @override String get historySearchHint => 'Поиск в истории...'; @@ -141,28 +69,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get downloadTitle => 'Скачивание'; - @override - String get downloadLocation => 'Папка для скачивания'; - - @override - String get downloadLocationSubtitle => 'Выберите, куда сохранить файлы'; - - @override - String get downloadLocationDefault => 'Расположение по умолчанию'; - - @override - String get downloadDefaultService => 'Сервис по умолчанию'; - - @override - String get downloadDefaultServiceSubtitle => - 'Сервис, используемый для скачивания'; - - @override - String get downloadDefaultQuality => 'Качество по умолчанию'; - - @override - String get downloadAskQuality => 'Спрашивать качество перед скачиванием'; - @override String get downloadAskQualitySubtitle => 'Показывать выбор качества для каждого скачивания'; @@ -173,31 +79,9 @@ class AppLocalizationsRu extends AppLocalizations { @override String get downloadFolderOrganization => 'Организация папок'; - @override - String get downloadSeparateSingles => 'Разделять синглы'; - - @override - String get downloadSeparateSinglesSubtitle => - 'Помещать синглы в отдельную папку'; - - @override - String get qualityBest => 'Лучшее из доступных'; - - @override - String get qualityFlac => 'FLAC'; - - @override - String get quality320 => '320 кбит/с'; - - @override - String get quality128 => '128 кбит/с'; - @override String get appearanceTitle => 'Внешний вид'; - @override - String get appearanceTheme => 'Тема'; - @override String get appearanceThemeSystem => 'Системная'; @@ -214,9 +98,6 @@ class AppLocalizationsRu extends AppLocalizations { String get appearanceDynamicColorSubtitle => 'Использовать цвета из ваших обоев'; - @override - String get appearanceAccentColor => 'Акцентный цвет'; - @override String get appearanceHistoryView => 'Отображение истории'; @@ -229,9 +110,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get optionsTitle => 'Опции'; - @override - String get optionsSearchSource => 'Поиск источника'; - @override String get optionsPrimaryProvider => 'Основной провайдер'; @@ -255,33 +133,6 @@ class AppLocalizationsRu extends AppLocalizations { String get optionsAutoFallbackSubtitle => 'Попробовать другие сервисы при сбое загрузки'; - @override - String get optionsAutoSkipUnavailableTracks => 'Auto Skip Unavailable Tracks'; - - @override - String get optionsAutoSkipUnavailableTracksSubtitleOn => - 'Automatically skip to the next queue track when a stream cannot be resolved.'; - - @override - String get optionsAutoSkipUnavailableTracksSubtitleOff => - 'Stop on failed track resolution and show an error.'; - - @override - String get optionsInteractionMode => 'Interaction Mode'; - - @override - String get modeDownloader => 'Downloader Mode'; - - @override - String get modeDownloaderSubtitle => - 'Tap tracks to add them to download queue'; - - @override - String get modeStreaming => 'Streaming Mode'; - - @override - String get modeStreamingSubtitle => 'Tap tracks to play instantly'; - @override String get optionsUseExtensionProviders => 'Использовать провайдера расширений'; @@ -388,19 +239,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get extensionsTitle => 'Расширения'; - @override - String get extensionsInstalled => 'Установленные расширения'; - - @override - String get extensionsNone => 'Нет установленных расширений'; - - @override - String get extensionsNoneSubtitle => - 'Установка расширений из вкладки Магазин'; - - @override - String get extensionsEnabled => 'Включено'; - @override String get extensionsDisabled => 'Выключено'; @@ -417,9 +255,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get extensionsUninstall => 'Удалить'; - @override - String get extensionsSetAsSearch => 'Установить в качестве поисковой системы'; - @override String get storeTitle => 'Магазин расширений'; @@ -494,9 +329,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get aboutSocial => 'Соцсети'; - @override - String get aboutSupport => 'Поддержка'; - @override String get aboutApp => 'Приложение'; @@ -515,13 +347,6 @@ class AppLocalizationsRu extends AppLocalizations { String get aboutSjdonadoDesc => 'Создатель I Don\'t Have Spotify (IDHS). Резервный резолвер ссылки'; - @override - String get aboutDoubleDouble => 'DoubleDouble'; - - @override - String get aboutDoubleDoubleDesc => - 'Удивительный API для загрузок Amazon Music. Спасибо за то, что сделали это бесплатно!'; - @override String get aboutDabMusic => 'DAB Music'; @@ -540,34 +365,6 @@ class AppLocalizationsRu extends AppLocalizations { String get aboutAppDescription => 'Скачайте треки Spotify в Lossless качестве из Tidal, Qobuz и Amazon Music.'; - @override - String get albumTitle => 'Альбом'; - - @override - String albumTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count треков', - many: '$count треков', - few: '$count трека', - one: '$count трек', - ); - return '$_temp0'; - } - - @override - String get albumDownloadAll => 'Скачать всё'; - - @override - String get albumDownloadRemaining => 'Скачать оставшиеся'; - - @override - String get playlistTitle => 'Плейлист'; - - @override - String get artistTitle => 'Исполнитель'; - @override String get artistAlbums => 'Альбомы'; @@ -577,19 +374,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get artistCompilations => 'Сборники'; - @override - String artistReleases(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count релизов', - many: '$count релизов', - few: '$count релиза', - one: '$count релиз', - ); - return '$_temp0'; - } - @override String get artistPopular => 'Популярное'; @@ -598,27 +382,6 @@ class AppLocalizationsRu extends AppLocalizations { return '$count слушателей в месяц'; } - @override - String get trackMetadataTitle => 'Информация о треке'; - - @override - String get trackMetadataArtist => 'Исполнитель'; - - @override - String get trackMetadataAlbum => 'Альбом'; - - @override - String get trackMetadataDuration => 'Продолжительность'; - - @override - String get trackMetadataQuality => 'Качество'; - - @override - String get trackMetadataPath => 'Путь к файлу'; - - @override - String get trackMetadataDownloadedAt => 'Скачано'; - @override String get trackMetadataService => 'Сервис'; @@ -631,53 +394,15 @@ class AppLocalizationsRu extends AppLocalizations { @override String get trackMetadataDelete => 'Удалить'; - @override - String get trackMetadataRedownload => 'Скачать снова'; - - @override - String get trackMetadataOpenFolder => 'Открыть папку'; - - @override - String get setupTitle => 'Добро пожаловать в SpotiFLAC'; - - @override - String get setupSubtitle => 'Давайте начнем'; - - @override - String get setupStoragePermission => 'Доступ к хранилищу'; - - @override - String get setupStoragePermissionSubtitle => - 'Необходимо для сохранения загруженных файлов'; - - @override - String get setupStoragePermissionGranted => 'Разрешение предоставлено'; - - @override - String get setupStoragePermissionDenied => 'Разрешение не предоставлено'; - @override String get setupGrantPermission => 'Предоставить разрешение'; - @override - String get setupDownloadLocation => 'Папка для скачивания'; - - @override - String get setupChooseFolder => 'Выбрать папку'; - - @override - String get setupContinue => 'Продолжить'; - @override String get setupSkip => 'Пропустить'; @override String get setupStorageAccessRequired => 'Требуется доступ к хранилищу'; - @override - String get setupStorageAccessMessage => - 'SpotiFLAC требуется разрешение \"Доступ ко всем файлам\" для сохранения музыкальных файлов в выбранную папку.'; - @override String get setupStorageAccessMessageAndroid11 => 'Для Android 11+ требуется разрешение \"Доступ ко всем файлам\" для сохранения файлов в выбранную вами папку загрузки.'; @@ -699,9 +424,6 @@ class AppLocalizationsRu extends AppLocalizations { return 'Для оптимальной работы требуется разрешение $permissionType. Вы можете изменить это позже в настройках.'; } - @override - String get setupSelectDownloadFolder => 'Выбрать папку для скачивания'; - @override String get setupUseDefaultFolder => 'Использовать папку по умолчанию?'; @@ -744,21 +466,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get setupDownloadInFlac => 'Скачать Spotify треки во FLAC'; - @override - String get setupStepStorage => 'Хранилище'; - - @override - String get setupStepNotification => 'Уведомления'; - - @override - String get setupStepFolder => 'Папка'; - - @override - String get setupStepSpotify => 'Spotify'; - - @override - String get setupStepPermission => 'Разрешение'; - @override String get setupStorageGranted => 'Доступ к хранилищу предоставлен!'; @@ -776,13 +483,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get setupNotificationEnable => 'Включить уведомления'; - @override - String get setupNotificationDescription => - 'Получайте уведомления о завершении загрузки или о необходимости привлечения внимания.'; - - @override - String get setupFolderSelected => 'Папка для загрузки выбрана!'; - @override String get setupFolderChoose => 'Выбрать папку для скачивания'; @@ -790,49 +490,12 @@ class AppLocalizationsRu extends AppLocalizations { String get setupFolderDescription => 'Выберите папку, в которой будет сохраняться скачанная музыка.'; - @override - String get setupChangeFolder => 'Сменить папку'; - @override String get setupSelectFolder => 'Выбрать папку'; - @override - String get setupSpotifyApiOptional => 'Spotify API (необязательно)'; - - @override - String get setupSpotifyApiDescription => - 'Добавьте свои учётные данные Spotify для улучшения результатов поиска и доступа к эксклюзивному контенту Spotify.'; - - @override - String get setupUseSpotifyApi => 'Использовать Spotify API'; - - @override - String get setupEnterCredentialsBelow => 'Введите ваши учётные данные ниже'; - - @override - String get setupUsingDeezer => 'Использование Deezer (аккаунт не требуется)'; - - @override - String get setupEnterClientId => 'Введите Client ID Spotify'; - - @override - String get setupEnterClientSecret => 'Введите Spotify Client Secret'; - - @override - String get setupGetFreeCredentials => - 'Получите бесплатный API учётной записи на панели разработчика Spotify.'; - @override String get setupEnableNotifications => 'Включить уведомления'; - @override - String get setupProceedToNextStep => - 'Теперь вы можете перейти к следующему шагу.'; - - @override - String get setupNotificationProgressDescription => - 'Вы будете получать уведомления о ходе загрузки.'; - @override String get setupNotificationBackgroundDescription => 'Получайте уведомления о ходе и завершении загрузки. Это поможет вам отслеживать загрузки, когда приложение находится в фоновом режиме.'; @@ -840,32 +503,19 @@ class AppLocalizationsRu extends AppLocalizations { @override String get setupSkipForNow => 'Пропустить'; - @override - String get setupBack => 'Назад'; - @override String get setupNext => 'Далее'; @override String get setupGetStarted => 'Приступить к работе'; - @override - String get setupSkipAndStart => 'Пропустить и начать'; - @override String get setupAllowAccessToManageFiles => 'Пожалуйста, включите \"Разрешить доступ для управления всеми файлами\" на следующем экране.'; - @override - String get setupGetCredentialsFromSpotify => - 'Получить учётные данные с developer.spotify.com'; - @override String get dialogCancel => 'Отмена'; - @override - String get dialogOk => 'ОК'; - @override String get dialogSave => 'Сохранить'; @@ -875,21 +525,9 @@ class AppLocalizationsRu extends AppLocalizations { @override String get dialogRetry => 'Повторить'; - @override - String get dialogClose => 'Закрыть'; - - @override - String get dialogYes => 'Да'; - - @override - String get dialogNo => 'Нет'; - @override String get dialogClear => 'Очистить'; - @override - String get dialogConfirm => 'Подтвердить'; - @override String get dialogDone => 'Готово'; @@ -912,28 +550,9 @@ class AppLocalizationsRu extends AppLocalizations { String get dialogUnsavedChanges => 'Есть несохраненные изменения. Отменить их?'; - @override - String get dialogDownloadFailed => 'Ошибка скачивания'; - - @override - String get dialogTrackLabel => 'Трек:'; - - @override - String get dialogArtistLabel => 'Исполнитель:'; - - @override - String get dialogErrorLabel => 'Ошибка:'; - @override String get dialogClearAll => 'Очистить всё'; - @override - String get dialogClearAllDownloads => - 'Вы уверены, что хотите очистить все загрузки?'; - - @override - String get dialogRemoveFromDevice => 'Удалить с устройства?'; - @override String get dialogRemoveExtension => 'Удалить расширение'; @@ -1038,11 +657,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get snackbarViewQueue => 'Просмотр очереди'; - @override - String snackbarFailedToLoad(String error) { - return 'Ошибка загрузки: $error'; - } - @override String snackbarUrlCopied(String platform) { return '$platform ссылка скопирована в буфер обмена'; @@ -1085,44 +699,14 @@ class AppLocalizationsRu extends AppLocalizations { String get errorRateLimitedMessage => 'Слишком много запросов. Пожалуйста, подождите минуту перед повторным поиском.'; - @override - String errorFailedToLoad(String item) { - return 'Ошибка загрузки $item'; - } - @override String get errorNoTracksFound => 'Треки не найдены'; - @override - String get errorSeekNotSupported => - 'Seeking is not supported for this live stream'; - @override String errorMissingExtensionSource(String item) { return 'Невозможно загрузить $item: отсутствует источник расширения'; } - @override - String get statusQueued => 'В очереди'; - - @override - String get statusDownloading => 'Скачивание'; - - @override - String get statusFinalizing => 'Завершение'; - - @override - String get statusCompleted => 'Завершено'; - - @override - String get statusFailed => 'Неудачно'; - - @override - String get statusSkipped => 'Пропущено'; - - @override - String get statusPaused => 'Приостановлено'; - @override String get actionPause => 'Пауза'; @@ -1132,24 +716,12 @@ class AppLocalizationsRu extends AppLocalizations { @override String get actionCancel => 'Отмена'; - @override - String get actionStop => 'Стоп'; - - @override - String get actionSelect => 'Выбрать'; - @override String get actionSelectAll => 'Выбрать все'; @override String get actionDeselect => 'Снять выделение'; - @override - String get actionPaste => 'Вставить'; - - @override - String get actionImportCsv => 'Импорт CSV'; - @override String get actionRemoveCredentials => 'Удалить учётные данные'; @@ -1164,22 +736,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get selectionAllSelected => 'Все треки выбраны'; - @override - String get selectionTapToSelect => 'Нажмите на треки для выбора'; - - @override - String selectionDeleteTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'треков', - many: 'треков', - few: 'трека', - one: 'трек', - ); - return 'Удалить $count $_temp0'; - } - @override String get selectionSelectToDelete => 'Выберите треки для удаления'; @@ -1206,40 +762,9 @@ class AppLocalizationsRu extends AppLocalizations { @override String get tooltipPlay => 'Воспроизвести'; - @override - String get tooltipCancel => 'Отмена'; - - @override - String get tooltipStop => 'Стоп'; - - @override - String get tooltipRetry => 'Повторить'; - - @override - String get tooltipRemove => 'Убрать'; - - @override - String get tooltipClear => 'Очистить'; - - @override - String get tooltipPaste => 'Вставить'; - @override String get filenameFormat => 'Формат имени файла'; - @override - String filenameFormatPreview(String preview) { - return 'Предпросмотр: $preview'; - } - - @override - String get filenameAvailablePlaceholders => 'Доступные заполнители:'; - - @override - String filenameHint(Object artist, Object title) { - return '$artist - $title'; - } - @override String get filenameShowAdvancedTags => 'Show advanced tags'; @@ -1247,9 +772,6 @@ class AppLocalizationsRu extends AppLocalizations { String get filenameShowAdvancedTagsDescription => 'Enable formatted tags for track padding and date patterns'; - @override - String get folderOrganization => 'Организация папок'; - @override String get folderOrganizationNone => 'Без организации'; @@ -1284,20 +806,9 @@ class AppLocalizationsRu extends AppLocalizations { @override String get updateAvailable => 'Доступно обновление'; - @override - String updateNewVersion(String version) { - return 'Версия $version доступна'; - } - - @override - String get updateDownload => 'Скачать'; - @override String get updateLater => 'Позже'; - @override - String get updateChangelog => 'Список изменений'; - @override String get updateStartingDownload => 'Загрузка началась...'; @@ -1328,12 +839,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get updateDontRemind => 'Не напоминать'; - @override - String get providerPriority => 'Приоритет провайдера'; - - @override - String get providerPrioritySubtitle => 'Перетащите для изменения порядка'; - @override String get providerPriorityTitle => 'Приоритет провайдера'; @@ -1351,13 +856,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get providerExtension => 'Расширение'; - @override - String get metadataProviderPriority => 'Приоритет провайдера метаданных'; - - @override - String get metadataProviderPrioritySubtitle => - 'Порядок, используемый при получении метаданных'; - @override String get metadataProviderPriorityTitle => 'Приоритет метаданных'; @@ -1378,18 +876,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get logTitle => 'Логи'; - @override - String get logCopy => 'Скопировать логи'; - - @override - String get logClear => 'Очистить логи'; - - @override - String get logShare => 'Поделиться логами'; - - @override - String get logEmpty => 'Логов нет'; - @override String get logCopied => 'Логи скопированы в буфер обмена'; @@ -1414,18 +900,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get logClearLogsMessage => 'Вы уверены, что хотите очистить все логи?'; - @override - String get logIspBlocking => 'ОБНАРУЖЕНА БЛОКИРОВКА ИНТЕРНЕТ ПРОВАЙДЕРОМ'; - - @override - String get logRateLimited => 'ОГРАНИЧЕННАЯ СКОРОСТЬ'; - - @override - String get logNetworkError => 'ОШИБКА СЕТИ'; - - @override - String get logTrackNotFound => 'ТРЕК НЕ НАЙДЕН'; - @override String get logFilterBySeverity => 'Фильтровать логи по серьезности'; @@ -1436,48 +910,6 @@ class AppLocalizationsRu extends AppLocalizations { String get logNoLogsYetSubtitle => 'Логи появятся здесь по мере использования приложения'; - @override - String get logIssueSummary => 'Краткое описание проблемы'; - - @override - String get logIspBlockingDescription => - 'Ваш провайдер может блокировать доступ к сервисам скачивания'; - - @override - String get logIspBlockingSuggestion => - 'Попробуйте использовать VPN или измените DNS на 1.1.1.1 или 8.8.8.8'; - - @override - String get logRateLimitedDescription => 'Слишком много запросов к сервису'; - - @override - String get logRateLimitedSuggestion => - 'Подождите несколько минут, прежде чем повторить попытку'; - - @override - String get logNetworkErrorDescription => 'Обнаружены проблемы с подключением'; - - @override - String get logNetworkErrorSuggestion => 'Проверьте подключение к Интернету'; - - @override - String get logTrackNotFoundDescription => - 'Некоторые треки не найдены в сервисах загрузки'; - - @override - String get logTrackNotFoundSuggestion => - 'Трек может быть недоступен в lossless формате'; - - @override - String logTotalErrors(int count) { - return 'Всего ошибок: $count'; - } - - @override - String logAffected(String domains) { - return 'Затронуто: $domains'; - } - @override String logEntriesFiltered(int count) { return 'Записи ($count фильтровано)'; @@ -1584,9 +1016,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get appearanceLanguage => 'Язык приложения'; - @override - String get appearanceLanguageSubtitle => 'Выберите предпочитаемый язык'; - @override String get settingsAppearanceSubtitle => 'Тема, цвета, дисплей'; @@ -1610,19 +1039,11 @@ class AppLocalizationsRu extends AppLocalizations { @override String get pressBackAgainToExit => 'Нажмите «Назад» ещё раз, чтобы выйти'; - @override - String get tracksHeader => 'Треки'; - @override String downloadAllCount(int count) { return 'Скачать все ($count)'; } - @override - String playAllCount(int count) { - return 'Play All ($count)'; - } - @override String tracksCount(int count) { String _temp0 = intl.Intl.pluralLogic( @@ -1735,11 +1156,6 @@ class AppLocalizationsRu extends AppLocalizations { String get trackDeleteConfirmMessage => 'Это приведет к окончательному удалению загруженного файла и его удалению из истории.'; - @override - String trackCannotOpen(String message) { - return 'Невозможно открыть: $message'; - } - @override String get dateToday => 'Сегодня'; @@ -1761,18 +1177,6 @@ class AppLocalizationsRu extends AppLocalizations { return '$count месяцев назад'; } - @override - String get concurrentSequential => 'Последовательно'; - - @override - String get concurrentParallel2 => '2 параллельно'; - - @override - String get concurrentParallel3 => '3 параллельно'; - - @override - String get tapToSeeError => 'Нажмите, чтобы увидеть подробности ошибки'; - @override String get storeFilterAll => 'Все'; @@ -1794,15 +1198,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get storeClearFilters => 'Очистить фильтры'; - @override - String get storeNoResults => 'Расширения не найдены'; - - @override - String get extensionProviderPriority => 'Приоритет провайдера'; - - @override - String get extensionInstallButton => 'Установить расширение'; - @override String get extensionDefaultProvider => 'По умолчанию (Deezer/Spotify)'; @@ -1957,40 +1352,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get qualityHiResFlacMaxSubtitle => '24-бит / до 192кГц'; - @override - String get qualityLossy => 'Lossy'; - - @override - String get qualityLossyMp3Subtitle => - 'Opus 320 кбит/с (конвертировать из FLAC)'; - - @override - String get qualityLossyOpusSubtitle => - 'Opus 128 кбит/с (конвертировать из FLAC)'; - - @override - String get enableLossyOption => 'Включить опцию Lossy'; - - @override - String get enableLossyOptionSubtitleOn => 'Доступно качество с потерями'; - - @override - String get enableLossyOptionSubtitleOff => - 'Скачивать FLAC и конвертировать в MP3 320 кбит/с'; - - @override - String get lossyFormat => 'Формат с потерями'; - - @override - String get lossyFormatDescription => 'Выберите Lossy формат для конвертации'; - - @override - String get lossyFormatMp3Subtitle => '320Кбит/с, лучшая совместимость'; - - @override - String get lossyFormatOpusSubtitle => - '128кбит/с, лучшее качество при меньших размерах'; - @override String get qualityNote => 'Фактическое качество зависит от доступности треков в сервисе'; @@ -2005,24 +1366,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get youtubeMp3BitrateTitle => 'YouTube MP3 Bitrate'; - @override - String youtubeBitrateSubtitle(int bitrate, int min, int max) { - return '${bitrate}kbps ($min-$max)'; - } - - @override - String youtubeBitrateInputHelp(int min, int max) { - return 'Enter custom bitrate ($min-$max kbps)'; - } - - @override - String get youtubeBitrateFieldLabel => 'Bitrate (kbps)'; - - @override - String youtubeBitrateValidationError(int min, int max) { - return 'Bitrate must be between $min and $max kbps'; - } - @override String get downloadAskBeforeDownload => 'Спрашивать перед скачиванием'; @@ -2039,14 +1382,6 @@ class AppLocalizationsRu extends AppLocalizations { String get downloadUseAlbumArtistForFolders => 'Использовать исполнителя альбома для папок'; - @override - String get downloadUseAlbumArtistForFoldersAlbumSubtitle => - 'Artist folders use Album Artist when available'; - - @override - String get downloadUseAlbumArtistForFoldersTrackSubtitle => - 'Папки исполнителя используют только трек исполнителя'; - @override String get downloadUsePrimaryArtistOnly => 'Primary artist only for folders'; @@ -2058,79 +1393,18 @@ class AppLocalizationsRu extends AppLocalizations { String get downloadUsePrimaryArtistOnlyDisabled => 'Full artist string used for folder name'; - @override - String get downloadSaveFormat => 'Формат сохранения'; - - @override - String get downloadSelectService => 'Выбор сервиса'; - @override String get downloadSelectQuality => 'Выбор качества'; @override String get downloadFrom => 'Скачивать из'; - @override - String get downloadDefaultQualityLabel => 'Качество по умолчанию'; - - @override - String get downloadBestAvailable => 'Лучшее из доступных'; - - @override - String get folderNone => 'Отсутствует'; - - @override - String get folderNoneSubtitle => - 'Сохранить все файлы непосредственно в папку загрузки'; - - @override - String get folderArtist => 'Исполнитель'; - - @override - String get folderArtistSubtitle => 'Исполнитель/имя файла'; - - @override - String get folderAlbum => 'Альбом'; - - @override - String get folderAlbumSubtitle => 'Альбом/имя файла'; - - @override - String get folderArtistAlbum => 'Исполнитель/Альбом'; - - @override - String get folderArtistAlbumSubtitle => 'Исполнитель/ Альбом/имя файла'; - - @override - String get serviceTidal => 'Tidal'; - - @override - String get serviceQobuz => 'Qobuz'; - - @override - String get serviceAmazon => 'Amazon'; - - @override - String get serviceDeezer => 'Deezer'; - - @override - String get serviceSpotify => 'Spotify'; - @override String get appearanceAmoledDark => 'AMOLED'; @override String get appearanceAmoledDarkSubtitle => 'Глубокий чёрный фон'; - @override - String get appearanceChooseAccentColor => 'Выберите акцентный цвет'; - - @override - String get appearanceChooseTheme => 'Режим темы'; - - @override - String get queueTitle => 'Очередь скачиваний'; - @override String get queueClearAll => 'Очистить всё'; @@ -2138,19 +1412,6 @@ class AppLocalizationsRu extends AppLocalizations { String get queueClearAllMessage => 'Вы уверены, что хотите очистить все загрузки?'; - @override - String get queueExportFailed => 'Экспорт'; - - @override - String get queueExportFailedSuccess => - 'Сбой при экспорте загрузок в файл TXT'; - - @override - String get queueExportFailedClear => 'Не удалось очистить'; - - @override - String get queueExportFailedError => 'Не удалось экспортировать загрузки'; - @override String get settingsAutoExportFailed => 'Автоэкспорт неудачных загрузок'; @@ -2171,30 +1432,6 @@ class AppLocalizationsRu extends AppLocalizations { String get settingsDownloadNetworkSubtitle => 'Выберите, какую сеть использовать для скачивания. Когда установлено значение только WiFi — скачивания через мобильную сеть будут приостановлены.'; - @override - String get queueEmpty => 'Нет загрузок в очереди'; - - @override - String get queueEmptySubtitle => 'Добавить треки с главного экрана'; - - @override - String get queueClearCompleted => 'Очистка завершена'; - - @override - String get queueDownloadFailed => 'Ошибка скачивания'; - - @override - String get queueTrackLabel => 'Трек:'; - - @override - String get queueArtistLabel => 'Исполнитель:'; - - @override - String get queueErrorLabel => 'Ошибка:'; - - @override - String get queueUnknownError => 'Неизвестная ошибка'; - @override String get albumFolderArtistAlbum => 'Исполнитель / Альбом'; @@ -2245,14 +1482,6 @@ class AppLocalizationsRu extends AppLocalizations { return 'Удалить $count $_temp0 из этого альбома?\n\nЭто также удалит файлы из хранилища.'; } - @override - String get downloadedAlbumTracksHeader => 'Треки'; - - @override - String downloadedAlbumDownloadedCount(int count) { - return '$count скачано'; - } - @override String downloadedAlbumSelectedCount(int count) { return '$count выбрано'; @@ -2285,9 +1514,6 @@ class AppLocalizationsRu extends AppLocalizations { return 'Диск $discNumber'; } - @override - String get utilityFunctions => 'Функции утилиты'; - @override String get recentTypeArtist => 'Исполнитель'; @@ -2311,23 +1537,12 @@ class AppLocalizationsRu extends AppLocalizations { return 'Плейлист: $name'; } - @override - String errorGeneric(String message) { - return 'Ошибка: $message'; - } - @override String get discographyDownload => 'Скачать дискографию'; - @override - String get discographyPlay => 'Play Discography'; - @override String get discographyDownloadAll => 'Скачать всё'; - @override - String get discographyPlayAll => 'Play All'; - @override String discographyDownloadAllSubtitle(int count, int albumCount) { return '$count треков из $albumCount релизов'; @@ -2372,9 +1587,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get discographyDownloadSelected => 'Скачать выбранное'; - @override - String get discographyPlaySelected => 'Play Selected'; - @override String discographyAddedToQueue(int count) { return 'Добавлено $count треков в очередь'; @@ -2433,9 +1645,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get libraryTitle => 'Локальная библиотека'; - @override - String get libraryStatus => 'Статус Библиотеки'; - @override String get libraryScanSettings => 'Настройки сканирования'; @@ -2498,19 +1707,6 @@ class AppLocalizationsRu extends AppLocalizations { String get libraryAboutDescription => 'Сканирует существующую коллекцию музыки для обнаружения дубликатов при загрузке. Поддерживает форматы FLAC, M4A, MP3, Opus и OGG. Метаданные читаются из тегов файлов, если доступны.'; - @override - String libraryTracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'треков', - many: 'треков', - few: 'трека', - one: 'трек', - ); - return '$count $_temp0'; - } - @override String libraryTracksUnit(int count) { String _temp0 = intl.Intl.pluralLogic( @@ -2609,21 +1805,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get libraryFilterFormat => 'Формат'; - @override - String get libraryFilterDate => 'Дата добавления'; - - @override - String get libraryFilterDateToday => 'Сегодня'; - - @override - String get libraryFilterDateWeek => 'На этой неделе'; - - @override - String get libraryFilterDateMonth => 'В этом месяце'; - - @override - String get libraryFilterDateYear => 'В этом году'; - @override String get libraryFilterSort => 'Сортировка'; @@ -2633,11 +1814,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get libraryFilterSortOldest => 'Старые'; - @override - String libraryFilterActive(int count) { - return '$count фильтр(-ов) активно'; - } - @override String get timeJustNow => 'Только что'; @@ -2667,96 +1843,6 @@ class AppLocalizationsRu extends AppLocalizations { return '$_temp0 назад'; } - @override - String get storageSwitchTitle => 'Сменить режим хранения'; - - @override - String get storageSwitchToSafTitle => 'Переключиться на SAF хранилище?'; - - @override - String get storageSwitchToAppTitle => 'Переключиться хранилище приложения?'; - - @override - String get storageSwitchToSafMessage => - 'Ваши скачанные файлы останутся в текущем расположении и будут доступны.\n\nНовые файлы будут сохранены в выбранной вами папке SAF.'; - - @override - String get storageSwitchToAppMessage => - 'Ваши скачанные файлы останутся в текущем выбранной вами папке SAF.\n\nНовые файлы будут сохранены в папке Music/SpotiFLAC.'; - - @override - String get storageSwitchExistingDownloads => 'Существующие загрузки'; - - @override - String storageSwitchExistingDownloadsInfo(int count, String mode) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count треков', - many: '$count треков', - few: '$count трека', - one: '$count трек', - ); - return '$_temp0 в $mode хранилище'; - } - - @override - String get storageSwitchNewDownloads => 'Новые загрузки'; - - @override - String storageSwitchNewDownloadsLocation(String location) { - return 'Будет сохранено в: $location'; - } - - @override - String get storageSwitchContinue => 'Продолжить'; - - @override - String get storageSwitchSelectFolder => 'Выберите папку SAF'; - - @override - String get storageAppStorage => 'Хранилище приложения'; - - @override - String get storageSafStorage => 'Хранилище SAF'; - - @override - String storageModeBadge(String mode) { - return 'Хранилище: $mode'; - } - - @override - String get storageStatsTitle => 'Статистика хранилища'; - - @override - String storageStatsAppCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count треков', - many: '$count треков', - few: '$count трека', - one: '$count трек', - ); - return '$_temp0 в хранилище приложения'; - } - - @override - String storageStatsSafCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count треков', - many: '$count треков', - few: '$count трека', - one: '$count трек', - ); - return '$_temp0 в вашей папке в SAF'; - } - - @override - String get storageModeInfo => 'Ваши файлы хранятся в нескольких местах'; - @override String get tutorialWelcomeTitle => 'Добро пожаловать в SpotiFLAC!'; @@ -2783,18 +1869,6 @@ class AppLocalizationsRu extends AppLocalizations { String get tutorialSearchDesc => 'Есть два простых способа найти музыку, которую вы хотите скачать.'; - @override - String get tutorialSearchTip1 => - 'Вставьте ссылку Spotify или Deezer прямо в поле поиска'; - - @override - String get tutorialSearchTip2 => - 'Или введите название песни, исполнителя или альбом для поиска'; - - @override - String get tutorialSearchTip3 => - 'Поддержка треков, альбомов, плейлистов и страниц исполнителей'; - @override String get tutorialDownloadTitle => 'Скачивание музыки'; @@ -2802,18 +1876,6 @@ class AppLocalizationsRu extends AppLocalizations { String get tutorialDownloadDesc => 'Скачивание музыки просто и быстро. Вот как это работает.'; - @override - String get tutorialDownloadTip1 => - 'Нажмите кнопку скачать рядом с любым треком, чтобы начать скачивание'; - - @override - String get tutorialDownloadTip2 => - 'Выберите предпочитаемое качество (FLAC, Hi-Res или MP3)'; - - @override - String get tutorialDownloadTip3 => - 'Скачать все альбомы или плейлисты одним нажатием'; - @override String get tutorialLibraryTitle => 'Ваша библиотека'; @@ -2874,9 +1936,6 @@ class AppLocalizationsRu extends AppLocalizations { String get tutorialReadyMessage => 'Всё готово! Начните загружать любимую музыку прямо сейчас.'; - @override - String get tutorialExample => 'EXAMPLE'; - @override String get libraryForceFullScan => 'Полное сканирование'; @@ -3041,10 +2100,6 @@ class AppLocalizationsRu extends AppLocalizations { @override String get trackReEnrich => 'Re-enrich'; - @override - String get trackReEnrichSubtitle => - 'Re-embed metadata without re-downloading'; - @override String get trackReEnrichOnlineSubtitle => 'Search metadata online and embed into file'; @@ -3326,43 +2381,15 @@ class AppLocalizationsRu extends AppLocalizations { } @override - String get setupModeSelectionTitle => 'Выберите режим'; + String downloadedAlbumDownloadedCount(int count) { + return '$count скачано'; + } @override - String get setupModeSelectionDescription => - 'Как вы хотите использовать SpotiFLAC? Вы всегда можете изменить это позже в Настройках.'; + String get downloadUseAlbumArtistForFoldersAlbumSubtitle => + 'Artist folders use Album Artist when available'; @override - String get setupModeDownloaderTitle => 'Загрузчик'; - - @override - String get setupModeDownloaderFeature1 => - 'Скачивайте треки в качестве FLAC без потерь'; - - @override - String get setupModeDownloaderFeature2 => - 'Сохраняйте музыку на устройство для прослушивания офлайн'; - - @override - String get setupModeDownloaderFeature3 => - 'Управляйте своей локальной музыкальной библиотекой'; - - @override - String get setupModeStreamingTitle => 'Стриминг'; - - @override - String get setupModeStreamingFeature1 => - 'Слушайте треки мгновенно без скачивания'; - - @override - String get setupModeStreamingFeature2 => - 'Smart Queue автоматически подбирает новую музыку для вас'; - - @override - String get setupModeStreamingFeature3 => - 'Воспроизводите любой трек по запросу с элементами управления'; - - @override - String get setupModeChangeableLater => - 'Вы можете переключаться между режимами в любое время в Настройках.'; + String get downloadUseAlbumArtistForFoldersTrackSubtitle => + 'Папки исполнителя используют только трек исполнителя'; } diff --git a/lib/l10n/app_localizations_tr.dart b/lib/l10n/app_localizations_tr.dart index 164833ef..bcc77961 100644 --- a/lib/l10n/app_localizations_tr.dart +++ b/lib/l10n/app_localizations_tr.dart @@ -11,19 +11,12 @@ class AppLocalizationsTr extends AppLocalizations { @override String get appName => 'SpotiFLAC'; - @override - String get appDescription => - 'Spotify şarkılarını Tidal, Qobuz ve Amazon Music\'den yüksek kalitede indir.'; - @override String get navHome => 'Ara'; @override String get navLibrary => 'Library'; - @override - String get navHistory => 'Geçmiş'; - @override String get navSettings => 'Ayarlar'; @@ -33,14 +26,6 @@ class AppLocalizationsTr extends AppLocalizations { @override String get homeTitle => 'Ara'; - @override - String get homeSearchHint => 'Spotify URL\'i yapıştır veya ara...'; - - @override - String homeSearchHintExtension(String extensionName) { - return '$extensionName ile arat...'; - } - @override String get homeSubtitle => 'Spotify linki yapıştır veya isimle arat'; @@ -51,17 +36,6 @@ class AppLocalizationsTr extends AppLocalizations { @override String get homeRecent => 'En son'; - @override - String get historyTitle => 'Geçmiş'; - - @override - String historyDownloading(int count) { - return '($count) tane indiriliyor'; - } - - @override - String get historyDownloaded => 'İndirildi'; - @override String get historyFilterAll => 'Tümü'; @@ -71,48 +45,6 @@ class AppLocalizationsTr extends AppLocalizations { @override String get historyFilterSingles => 'Single\'lar'; - @override - String historyTracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count şarkı', - one: '1 şarkı', - ); - return '$_temp0'; - } - - @override - String historyAlbumsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count albüm', - one: '1 albüm', - ); - return '$_temp0'; - } - - @override - String get historyNoDownloads => 'İndirme geçmişi yok'; - - @override - String get historyNoDownloadsSubtitle => - 'İndirilen şarkılar burada gözükecek'; - - @override - String get historyNoAlbums => 'İndirilen albüm yok'; - - @override - String get historyNoAlbumsSubtitle => - 'Albümleri burada görmek için bir albümden birden fazla şarkı indir'; - - @override - String get historyNoSingles => 'Single indirilmemiş'; - - @override - String get historyNoSinglesSubtitle => 'Single şarkılar burada gözükecek'; - @override String get historySearchHint => 'Arama geçmişi...'; @@ -137,29 +69,6 @@ class AppLocalizationsTr extends AppLocalizations { @override String get downloadTitle => 'İndirme'; - @override - String get downloadLocation => 'İndirme Konumu'; - - @override - String get downloadLocationSubtitle => - 'Dosyaları nereye kaydedeceğinizi seçin'; - - @override - String get downloadLocationDefault => 'Varsayılan dizin'; - - @override - String get downloadDefaultService => 'Varsayılan Hizmet'; - - @override - String get downloadDefaultServiceSubtitle => - 'İndirmeler için kullanılan hizmet'; - - @override - String get downloadDefaultQuality => 'Varsayılan Kalite'; - - @override - String get downloadAskQuality => 'İndirmeden Önce Kaliteyi Sor'; - @override String get downloadAskQualitySubtitle => 'Her indirmeden önce kalite seçim ekranını göster'; @@ -170,31 +79,9 @@ class AppLocalizationsTr extends AppLocalizations { @override String get downloadFolderOrganization => 'Dosya Organizasyonu'; - @override - String get downloadSeparateSingles => 'Single\'ları Ayır'; - - @override - String get downloadSeparateSinglesSubtitle => - 'Single şarkıları ayrı dosyaya koy'; - - @override - String get qualityBest => 'Mevcut en iyi'; - - @override - String get qualityFlac => 'FLAC'; - - @override - String get quality320 => '320 kbps'; - - @override - String get quality128 => '128 kbps'; - @override String get appearanceTitle => 'Görünüm'; - @override - String get appearanceTheme => 'Tema'; - @override String get appearanceThemeSystem => 'Sistem'; @@ -211,9 +98,6 @@ class AppLocalizationsTr extends AppLocalizations { String get appearanceDynamicColorSubtitle => 'Duvar kağıdının renklerini kullan'; - @override - String get appearanceAccentColor => 'Vurgu Rengi'; - @override String get appearanceHistoryView => 'Geçmiş Düzeni'; @@ -226,9 +110,6 @@ class AppLocalizationsTr extends AppLocalizations { @override String get optionsTitle => 'Seçenekler'; - @override - String get optionsSearchSource => 'Arama Kaynağı'; - @override String get optionsPrimaryProvider => 'Ana Kaynek'; @@ -252,33 +133,6 @@ class AppLocalizationsTr extends AppLocalizations { String get optionsAutoFallbackSubtitle => 'İndirme başarısız olursa diğer hizmetleri dene'; - @override - String get optionsAutoSkipUnavailableTracks => 'Auto Skip Unavailable Tracks'; - - @override - String get optionsAutoSkipUnavailableTracksSubtitleOn => - 'Automatically skip to the next queue track when a stream cannot be resolved.'; - - @override - String get optionsAutoSkipUnavailableTracksSubtitleOff => - 'Stop on failed track resolution and show an error.'; - - @override - String get optionsInteractionMode => 'Interaction Mode'; - - @override - String get modeDownloader => 'Downloader Mode'; - - @override - String get modeDownloaderSubtitle => - 'Tap tracks to add them to download queue'; - - @override - String get modeStreaming => 'Streaming Mode'; - - @override - String get modeStreamingSubtitle => 'Tap tracks to play instantly'; - @override String get optionsUseExtensionProviders => 'Eklenti sağlayıcılarını kullan'; @@ -382,18 +236,6 @@ class AppLocalizationsTr extends AppLocalizations { @override String get extensionsTitle => 'Eklentiler'; - @override - String get extensionsInstalled => 'Kurulu Eklentiler'; - - @override - String get extensionsNone => 'Hiçbir eklenti kurulmamış'; - - @override - String get extensionsNoneSubtitle => 'Dükkan sekmesinden eklenti indir'; - - @override - String get extensionsEnabled => 'Etkin'; - @override String get extensionsDisabled => 'Devre Dışı'; @@ -410,9 +252,6 @@ class AppLocalizationsTr extends AppLocalizations { @override String get extensionsUninstall => 'Kaldır'; - @override - String get extensionsSetAsSearch => 'Arama Sağlayıcı olarak Ayarla'; - @override String get storeTitle => 'Eklenti Dükkanı'; @@ -488,9 +327,6 @@ class AppLocalizationsTr extends AppLocalizations { @override String get aboutSocial => 'Sosyal ağlar'; - @override - String get aboutSupport => 'Destek'; - @override String get aboutApp => 'Uygulama'; @@ -509,13 +345,6 @@ class AppLocalizationsTr extends AppLocalizations { String get aboutSjdonadoDesc => 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; - @override - String get aboutDoubleDouble => 'DoubleDouble'; - - @override - String get aboutDoubleDoubleDesc => - 'Amazom Music indirmeleri için harika bir API. Ücretsiz yaptığın için teşekkürler!'; - @override String get aboutDabMusic => 'DAB Music'; @@ -534,32 +363,6 @@ class AppLocalizationsTr extends AppLocalizations { String get aboutAppDescription => 'Spotify şarkılarını Tidal, Qobuz ve Amazon Music\'den yüksek kalitede indir.'; - @override - String get albumTitle => 'Albüm'; - - @override - String albumTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count şarkı', - one: '1 şarkı', - ); - return '$_temp0'; - } - - @override - String get albumDownloadAll => 'Tümünü İndir'; - - @override - String get albumDownloadRemaining => 'Kalanını İndir'; - - @override - String get playlistTitle => 'Çalma Listesi'; - - @override - String get artistTitle => 'Sanatçı'; - @override String get artistAlbums => 'Albümler'; @@ -569,17 +372,6 @@ class AppLocalizationsTr extends AppLocalizations { @override String get artistCompilations => 'Derlemeler'; - @override - String artistReleases(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count yayın', - one: '1 yayın', - ); - return '$_temp0'; - } - @override String get artistPopular => 'Popüler'; @@ -588,27 +380,6 @@ class AppLocalizationsTr extends AppLocalizations { return 'Aylık $count dinleyici'; } - @override - String get trackMetadataTitle => 'Şarkı Bilgisi'; - - @override - String get trackMetadataArtist => 'Sanatçı'; - - @override - String get trackMetadataAlbum => 'Albüm'; - - @override - String get trackMetadataDuration => 'Süre'; - - @override - String get trackMetadataQuality => 'Kalite'; - - @override - String get trackMetadataPath => 'Dosya Yolu'; - - @override - String get trackMetadataDownloadedAt => 'İndirme tarihi'; - @override String get trackMetadataService => 'Hizmet'; @@ -621,53 +392,15 @@ class AppLocalizationsTr extends AppLocalizations { @override String get trackMetadataDelete => 'Sil'; - @override - String get trackMetadataRedownload => 'Yeniden İndir'; - - @override - String get trackMetadataOpenFolder => 'Klasörü Aç'; - - @override - String get setupTitle => 'SpotiFLAC\'e Hoşgeldiniz'; - - @override - String get setupSubtitle => 'Hadi başlayalım'; - - @override - String get setupStoragePermission => 'Depolama İzni'; - - @override - String get setupStoragePermissionSubtitle => - 'İndirilen dosyaları kaydetmek için gerekli'; - - @override - String get setupStoragePermissionGranted => 'İzin verildi'; - - @override - String get setupStoragePermissionDenied => 'İzin reddedildi'; - @override String get setupGrantPermission => 'İzin Ver'; - @override - String get setupDownloadLocation => 'İndirme Konumu'; - - @override - String get setupChooseFolder => 'Klasör Seç'; - - @override - String get setupContinue => 'Devam'; - @override String get setupSkip => 'Şimdilik atla'; @override String get setupStorageAccessRequired => 'Depolama Erişimi Gerekli'; - @override - String get setupStorageAccessMessage => - 'SpotiFLAC\'ın şarkıları seçili klasörünüze kaydetmek için \"Bütün dosyalara eriş\" iznine ihtiyacı var.'; - @override String get setupStorageAccessMessageAndroid11 => 'Android 11 ve sonrasında şarkıların seçili klasörünüze kaydedilebilmesi için \"Bütün dosyalara eriş\" iznine ihtiyaç var.'; @@ -689,9 +422,6 @@ class AppLocalizationsTr extends AppLocalizations { return 'En iyi deneyim için $permissionType izni zorunludur. Bunu ayarlardan daha sonra değiştirebilirsiniz.'; } - @override - String get setupSelectDownloadFolder => 'İndirilecek Klasörü Seç'; - @override String get setupUseDefaultFolder => 'Varsayılan Klasörü Kullan?'; @@ -733,21 +463,6 @@ class AppLocalizationsTr extends AppLocalizations { @override String get setupDownloadInFlac => 'Spotify şarkılarını FLAC olarak indirin'; - @override - String get setupStepStorage => 'Depolama'; - - @override - String get setupStepNotification => 'Bildirim'; - - @override - String get setupStepFolder => 'Klasör'; - - @override - String get setupStepSpotify => 'Spotify'; - - @override - String get setupStepPermission => 'İzin'; - @override String get setupStorageGranted => 'Depolama İzni Verildi!'; @@ -764,13 +479,6 @@ class AppLocalizationsTr extends AppLocalizations { @override String get setupNotificationEnable => 'Bildirimleri Etkinleştir'; - @override - String get setupNotificationDescription => - 'İndirmeler bittiğinde veya bakılması gereken bir şey olduğunda haberdar olun.'; - - @override - String get setupFolderSelected => 'İndirilecek Klasör Seçildi!'; - @override String get setupFolderChoose => 'İndirilecek Klasörü Seç'; @@ -778,48 +486,12 @@ class AppLocalizationsTr extends AppLocalizations { String get setupFolderDescription => 'İndirdiğin şarkıların kaydedileceği klasörü seç.'; - @override - String get setupChangeFolder => 'Klasörü Değiştir'; - @override String get setupSelectFolder => 'Klasör Seç'; - @override - String get setupSpotifyApiOptional => 'Spotify API (İsteğe Bağlı)'; - - @override - String get setupSpotifyApiDescription => - 'Daha iyi arama sonuçları ve Spotify\'a özel içeriklere erişmek için Spotify API kimlik bilgilerini gir.'; - - @override - String get setupUseSpotifyApi => 'Spotify API\'ı kullan'; - - @override - String get setupEnterCredentialsBelow => 'Kimlik bilgilerini aşağıya gir'; - - @override - String get setupUsingDeezer => 'Deezer kullanılıyor (hesap gerekli değil)'; - - @override - String get setupEnterClientId => 'Spotify Client ID gir'; - - @override - String get setupEnterClientSecret => 'Spotify Client Secret gir'; - - @override - String get setupGetFreeCredentials => - 'Spotify Developer Dashboard\'tan API kimlik bilgilerini ücretsiz alın.'; - @override String get setupEnableNotifications => 'Bildirimleri Etkinleştir'; - @override - String get setupProceedToNextStep => 'Bir sonraki adıma geçebilirsin.'; - - @override - String get setupNotificationProgressDescription => - 'İndirme ilerlemelerinin bildirimlerini alacaksın.'; - @override String get setupNotificationBackgroundDescription => 'İndirmelerin durumu hakkında bildirim al. Bunu açmak uygulama arka plandayken indirmelerinizi takip etmenizi sağlar.'; @@ -827,32 +499,19 @@ class AppLocalizationsTr extends AppLocalizations { @override String get setupSkipForNow => 'Şimdilik atla'; - @override - String get setupBack => 'Geri'; - @override String get setupNext => 'Sıradaki'; @override String get setupGetStarted => 'Başla'; - @override - String get setupSkipAndStart => 'Kurulumu atla'; - @override String get setupAllowAccessToManageFiles => 'Lütfen bir sonraki ekranda \"Bütün dosyalara eriş\" iznini sağlayın.'; - @override - String get setupGetCredentialsFromSpotify => - 'Kimlik bilgilerini developer.spotify.com\'dan alın'; - @override String get dialogCancel => 'İptal'; - @override - String get dialogOk => 'Tamam'; - @override String get dialogSave => 'Kaydet'; @@ -862,21 +521,9 @@ class AppLocalizationsTr extends AppLocalizations { @override String get dialogRetry => 'Yeniden dene'; - @override - String get dialogClose => 'Kapat'; - - @override - String get dialogYes => 'Evet'; - - @override - String get dialogNo => 'Hayır'; - @override String get dialogClear => 'Temizle'; - @override - String get dialogConfirm => 'Onayla'; - @override String get dialogDone => 'Tamamlandı'; @@ -899,28 +546,9 @@ class AppLocalizationsTr extends AppLocalizations { String get dialogUnsavedChanges => 'Kaydedilmeyen değişiklikler mevcut. Bu değişiklikleri iptal etmek istiyor musunuz?'; - @override - String get dialogDownloadFailed => 'İndirme Başarısız'; - - @override - String get dialogTrackLabel => 'Şarkı:'; - - @override - String get dialogArtistLabel => 'Sanatçı:'; - - @override - String get dialogErrorLabel => 'Hata:'; - @override String get dialogClearAll => 'Tümünü Temizle'; - @override - String get dialogClearAllDownloads => - 'Bütün indirmeleri temizlemek istediğinize emin misiniz?'; - - @override - String get dialogRemoveFromDevice => 'Cihazdan kaldır?'; - @override String get dialogRemoveExtension => 'Eklentiyi Kaldır'; @@ -1021,11 +649,6 @@ class AppLocalizationsTr extends AppLocalizations { @override String get snackbarViewQueue => 'Kuyruğu Görüntüle'; - @override - String snackbarFailedToLoad(String error) { - return 'Yüklenemedi: $error'; - } - @override String snackbarUrlCopied(String platform) { return '$platform Bağlantı panoya kopyalandı'; @@ -1067,44 +690,14 @@ class AppLocalizationsTr extends AppLocalizations { String get errorRateLimitedMessage => 'Çok fazla istek. Lütfen arama yapmadan önce biraz bekleyin.'; - @override - String errorFailedToLoad(String item) { - return '$item yüklenirken hata oluştu'; - } - @override String get errorNoTracksFound => 'Parça bulunamadı'; - @override - String get errorSeekNotSupported => - 'Seeking is not supported for this live stream'; - @override String errorMissingExtensionSource(String item) { return '$item yüklenemedi: Eksik eklenti kaynağı'; } - @override - String get statusQueued => 'Sıraya alındı'; - - @override - String get statusDownloading => 'İndiriliyor'; - - @override - String get statusFinalizing => 'Tamamlanıyor'; - - @override - String get statusCompleted => 'Tamamlandı'; - - @override - String get statusFailed => 'Başarısız'; - - @override - String get statusSkipped => 'Atlandı'; - - @override - String get statusPaused => 'Durduruldu'; - @override String get actionPause => 'Duraklat'; @@ -1114,24 +707,12 @@ class AppLocalizationsTr extends AppLocalizations { @override String get actionCancel => 'Vazgeç'; - @override - String get actionStop => 'Durdur'; - - @override - String get actionSelect => 'Seç'; - @override String get actionSelectAll => 'Tümünü Seç'; @override String get actionDeselect => 'Seçimi kaldır'; - @override - String get actionPaste => 'Yapıştır'; - - @override - String get actionImportCsv => 'CSV İçe Aktar'; - @override String get actionRemoveCredentials => 'Özellikleri kaldır'; @@ -1146,20 +727,6 @@ class AppLocalizationsTr extends AppLocalizations { @override String get selectionAllSelected => 'Tüm parçalar seçildi'; - @override - String get selectionTapToSelect => 'Seçmek için parçalara dokunun'; - - @override - String selectionDeleteTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'şarkıyı', - one: 'şarkıyı', - ); - return '$count $_temp0 sil'; - } - @override String get selectionSelectToDelete => 'Silinecek parçaları seçin'; @@ -1186,40 +753,9 @@ class AppLocalizationsTr extends AppLocalizations { @override String get tooltipPlay => 'Oynat'; - @override - String get tooltipCancel => 'Vazgeç'; - - @override - String get tooltipStop => 'Durdur'; - - @override - String get tooltipRetry => 'Yeniden dene'; - - @override - String get tooltipRemove => 'Kaldır'; - - @override - String get tooltipClear => 'Temizle'; - - @override - String get tooltipPaste => 'Yapıştır'; - @override String get filenameFormat => 'Dosya adı formatı'; - @override - String filenameFormatPreview(String preview) { - return 'Önizleme: $preview'; - } - - @override - String get filenameAvailablePlaceholders => 'Kullanılabilir yer tutucular:'; - - @override - String filenameHint(Object artist, Object title) { - return '$artist - $title'; - } - @override String get filenameShowAdvancedTags => 'Show advanced tags'; @@ -1227,9 +763,6 @@ class AppLocalizationsTr extends AppLocalizations { String get filenameShowAdvancedTagsDescription => 'Enable formatted tags for track padding and date patterns'; - @override - String get folderOrganization => 'Klasör Organizasyonu'; - @override String get folderOrganizationNone => 'Organizasyon yok'; @@ -1264,20 +797,9 @@ class AppLocalizationsTr extends AppLocalizations { @override String get updateAvailable => 'Güncelleme Mevcut'; - @override - String updateNewVersion(String version) { - return '$version sürümü mevcut'; - } - - @override - String get updateDownload => 'İndir'; - @override String get updateLater => 'Daha Sonra'; - @override - String get updateChangelog => 'Değişiklikler'; - @override String get updateStartingDownload => 'İndirme başlıyor...'; @@ -1308,13 +830,6 @@ class AppLocalizationsTr extends AppLocalizations { @override String get updateDontRemind => 'Bir daha sorma'; - @override - String get providerPriority => 'İndirme hizmetleri öncelik sırası'; - - @override - String get providerPrioritySubtitle => - 'İndirme hizmetlerini sıralamak için kaydır'; - @override String get providerPriorityTitle => 'İndirme hizmetleri öncelik sırası'; @@ -1332,13 +847,6 @@ class AppLocalizationsTr extends AppLocalizations { @override String get providerExtension => 'Eklenti'; - @override - String get metadataProviderPriority => 'Metadata Sağlayıcı Önceliği'; - - @override - String get metadataProviderPrioritySubtitle => - 'Şarkı metadata\'sı alınırken kullanılan sıra'; - @override String get metadataProviderPriorityTitle => 'Metadata Önceliği'; @@ -1359,18 +867,6 @@ class AppLocalizationsTr extends AppLocalizations { @override String get logTitle => 'Kayıtlar'; - @override - String get logCopy => 'Kayıtları Kopyala'; - - @override - String get logClear => 'Kayıtları temizle'; - - @override - String get logShare => 'Kayıtları Paylaş'; - - @override - String get logEmpty => 'Henüz kayıt yok'; - @override String get logCopied => 'Kayıtlar panoya kopyalandı'; @@ -1396,18 +892,6 @@ class AppLocalizationsTr extends AppLocalizations { String get logClearLogsMessage => 'Tüm kayıtları temizlemek istediğinize emin misiniz?'; - @override - String get logIspBlocking => 'ISP BLOCKING DETECTED'; - - @override - String get logRateLimited => 'RATE LIMITED'; - - @override - String get logNetworkError => 'NETWORK ERROR'; - - @override - String get logTrackNotFound => 'TRACK NOT FOUND'; - @override String get logFilterBySeverity => 'Kayıtları önem derecesine göre filtrele'; @@ -1418,48 +902,6 @@ class AppLocalizationsTr extends AppLocalizations { String get logNoLogsYetSubtitle => 'Uygulamayı kullandıkça kayıtlar burada görünecek'; - @override - String get logIssueSummary => 'Sorun Özeti'; - - @override - String get logIspBlockingDescription => - 'İnternet sağlayıcınız indirme hizmetlerine erişimi engelliyor olabilir'; - - @override - String get logIspBlockingSuggestion => - 'VPN kullanmayı veya DNS\'i 1.1.1.1 ya da 8.8.8.8 olarak değiştirmeyi deneyin'; - - @override - String get logRateLimitedDescription => 'Hizmete çok fazla istek gönderildi'; - - @override - String get logRateLimitedSuggestion => - 'Tekrar denemeden önce birkaç dakika bekleyin'; - - @override - String get logNetworkErrorDescription => 'Bağlantı sorunları tespit edildi'; - - @override - String get logNetworkErrorSuggestion => 'İnternet bağlantınızı kontrol edin'; - - @override - String get logTrackNotFoundDescription => - 'Bazı şarkılar indirme hizmetlerinde bulunamadı'; - - @override - String get logTrackNotFoundSuggestion => - 'Şarkı kayıpsız kalitede mevcut olmayabilir'; - - @override - String logTotalErrors(int count) { - return 'Total errors: $count'; - } - - @override - String logAffected(String domains) { - return 'Affected: $domains'; - } - @override String logEntriesFiltered(int count) { return 'Entries ($count filtered)'; @@ -1567,9 +1009,6 @@ class AppLocalizationsTr extends AppLocalizations { @override String get appearanceLanguage => 'Uygulama Dili'; - @override - String get appearanceLanguageSubtitle => 'Tercih ettiğiniz dili seçin'; - @override String get settingsAppearanceSubtitle => 'Tema, renkler, görünüm'; @@ -1593,19 +1032,11 @@ class AppLocalizationsTr extends AppLocalizations { @override String get pressBackAgainToExit => 'Çıkmak için tekrar geri basın'; - @override - String get tracksHeader => 'Şarkılar'; - @override String downloadAllCount(int count) { return 'Tümünü İndir ($count)'; } - @override - String playAllCount(int count) { - return 'Play All ($count)'; - } - @override String tracksCount(int count) { String _temp0 = intl.Intl.pluralLogic( @@ -1715,11 +1146,6 @@ class AppLocalizationsTr extends AppLocalizations { String get trackDeleteConfirmMessage => 'Bu işlem indirilen dosyayı kalıcı olarak silecek ve geçmişten kaldıracaktır.'; - @override - String trackCannotOpen(String message) { - return 'Cannot open: $message'; - } - @override String get dateToday => 'Bugün'; @@ -1741,18 +1167,6 @@ class AppLocalizationsTr extends AppLocalizations { return '$count ay önce'; } - @override - String get concurrentSequential => 'Sıralı'; - - @override - String get concurrentParallel2 => '2 Paralel'; - - @override - String get concurrentParallel3 => '3 Paralel'; - - @override - String get tapToSeeError => 'Hata detaylarını görmek için dokun'; - @override String get storeFilterAll => 'Tümü'; @@ -1774,15 +1188,6 @@ class AppLocalizationsTr extends AppLocalizations { @override String get storeClearFilters => 'Filtreleri temizle'; - @override - String get storeNoResults => 'Eklenti bulunamadı'; - - @override - String get extensionProviderPriority => 'Sağlayıcı Önceliği'; - - @override - String get extensionInstallButton => 'Eklenti Yükle'; - @override String get extensionDefaultProvider => 'Varsayılan (Deezer/Spotify)'; @@ -1934,38 +1339,6 @@ class AppLocalizationsTr extends AppLocalizations { @override String get qualityHiResFlacMaxSubtitle => '24-bit / up to 192kHz'; - @override - String get qualityLossy => 'Lossy'; - - @override - String get qualityLossyMp3Subtitle => 'MP3 320kbps (converted from FLAC)'; - - @override - String get qualityLossyOpusSubtitle => 'Opus 128kbps (converted from FLAC)'; - - @override - String get enableLossyOption => 'Enable Lossy Option'; - - @override - String get enableLossyOptionSubtitleOn => 'Lossy quality option is available'; - - @override - String get enableLossyOptionSubtitleOff => - 'Downloads FLAC then converts to lossy format'; - - @override - String get lossyFormat => 'Lossy Format'; - - @override - String get lossyFormatDescription => 'Choose the lossy format for conversion'; - - @override - String get lossyFormatMp3Subtitle => '320kbps, best compatibility'; - - @override - String get lossyFormatOpusSubtitle => - '128kbps, better quality at smaller size'; - @override String get qualityNote => 'Actual quality depends on track availability from the service'; @@ -1980,24 +1353,6 @@ class AppLocalizationsTr extends AppLocalizations { @override String get youtubeMp3BitrateTitle => 'YouTube MP3 Bitrate'; - @override - String youtubeBitrateSubtitle(int bitrate, int min, int max) { - return '${bitrate}kbps ($min-$max)'; - } - - @override - String youtubeBitrateInputHelp(int min, int max) { - return 'Enter custom bitrate ($min-$max kbps)'; - } - - @override - String get youtubeBitrateFieldLabel => 'Bitrate (kbps)'; - - @override - String youtubeBitrateValidationError(int min, int max) { - return 'Bitrate must be between $min and $max kbps'; - } - @override String get downloadAskBeforeDownload => 'Ask Before Download'; @@ -2013,14 +1368,6 @@ class AppLocalizationsTr extends AppLocalizations { @override String get downloadUseAlbumArtistForFolders => 'Use Album Artist for folders'; - @override - String get downloadUseAlbumArtistForFoldersAlbumSubtitle => - 'Artist folders use Album Artist when available'; - - @override - String get downloadUseAlbumArtistForFoldersTrackSubtitle => - 'Artist folders use Track Artist only'; - @override String get downloadUsePrimaryArtistOnly => 'Primary artist only for folders'; @@ -2032,78 +1379,18 @@ class AppLocalizationsTr extends AppLocalizations { String get downloadUsePrimaryArtistOnlyDisabled => 'Full artist string used for folder name'; - @override - String get downloadSaveFormat => 'Save Format'; - - @override - String get downloadSelectService => 'Select Service'; - @override String get downloadSelectQuality => 'Select Quality'; @override String get downloadFrom => 'Download From'; - @override - String get downloadDefaultQualityLabel => 'Default Quality'; - - @override - String get downloadBestAvailable => 'Best available'; - - @override - String get folderNone => 'None'; - - @override - String get folderNoneSubtitle => 'Save all files directly to download folder'; - - @override - String get folderArtist => 'Artist'; - - @override - String get folderArtistSubtitle => 'Artist Name/filename'; - - @override - String get folderAlbum => 'Album'; - - @override - String get folderAlbumSubtitle => 'Album Name/filename'; - - @override - String get folderArtistAlbum => 'Artist/Album'; - - @override - String get folderArtistAlbumSubtitle => 'Artist Name/Album Name/filename'; - - @override - String get serviceTidal => 'Tidal'; - - @override - String get serviceQobuz => 'Qobuz'; - - @override - String get serviceAmazon => 'Amazon'; - - @override - String get serviceDeezer => 'Deezer'; - - @override - String get serviceSpotify => 'Spotify'; - @override String get appearanceAmoledDark => 'AMOLED Dark'; @override String get appearanceAmoledDarkSubtitle => 'Pure black background'; - @override - String get appearanceChooseAccentColor => 'Choose Accent Color'; - - @override - String get appearanceChooseTheme => 'Theme Mode'; - - @override - String get queueTitle => 'Download Queue'; - @override String get queueClearAll => 'Clear All'; @@ -2111,19 +1398,6 @@ class AppLocalizationsTr extends AppLocalizations { String get queueClearAllMessage => 'Are you sure you want to clear all downloads?'; - @override - String get queueExportFailed => 'Export'; - - @override - String get queueExportFailedSuccess => - 'Failed downloads exported to TXT file'; - - @override - String get queueExportFailedClear => 'Clear Failed'; - - @override - String get queueExportFailedError => 'Failed to export downloads'; - @override String get settingsAutoExportFailed => 'Auto-export failed downloads'; @@ -2144,30 +1418,6 @@ class AppLocalizationsTr extends AppLocalizations { String get settingsDownloadNetworkSubtitle => 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; - @override - String get queueEmpty => 'No downloads in queue'; - - @override - String get queueEmptySubtitle => 'Add tracks from the home screen'; - - @override - String get queueClearCompleted => 'Clear completed'; - - @override - String get queueDownloadFailed => 'Download Failed'; - - @override - String get queueTrackLabel => 'Track:'; - - @override - String get queueArtistLabel => 'Artist:'; - - @override - String get queueErrorLabel => 'Error:'; - - @override - String get queueUnknownError => 'Unknown error'; - @override String get albumFolderArtistAlbum => 'Artist / Album'; @@ -2214,14 +1464,6 @@ class AppLocalizationsTr extends AppLocalizations { return 'Delete $count $_temp0 from this album?\n\nThis will also delete the files from storage.'; } - @override - String get downloadedAlbumTracksHeader => 'Tracks'; - - @override - String downloadedAlbumDownloadedCount(int count) { - return '$count downloaded'; - } - @override String downloadedAlbumSelectedCount(int count) { return '$count selected'; @@ -2252,9 +1494,6 @@ class AppLocalizationsTr extends AppLocalizations { return 'Disc $discNumber'; } - @override - String get utilityFunctions => 'Utility Functions'; - @override String get recentTypeArtist => 'Artist'; @@ -2278,23 +1517,12 @@ class AppLocalizationsTr extends AppLocalizations { return 'Playlist: $name'; } - @override - String errorGeneric(String message) { - return 'Error: $message'; - } - @override String get discographyDownload => 'Download Discography'; - @override - String get discographyPlay => 'Play Discography'; - @override String get discographyDownloadAll => 'Download All'; - @override - String get discographyPlayAll => 'Play All'; - @override String discographyDownloadAllSubtitle(int count, int albumCount) { return '$count tracks from $albumCount releases'; @@ -2339,9 +1567,6 @@ class AppLocalizationsTr extends AppLocalizations { @override String get discographyDownloadSelected => 'Download Selected'; - @override - String get discographyPlaySelected => 'Play Selected'; - @override String discographyAddedToQueue(int count) { return '$count şarkı kuyruğa eklendi'; @@ -2397,9 +1622,6 @@ class AppLocalizationsTr extends AppLocalizations { @override String get libraryTitle => 'Local Library'; - @override - String get libraryStatus => 'Library Status'; - @override String get libraryScanSettings => 'Scan Settings'; @@ -2462,11 +1684,6 @@ class AppLocalizationsTr extends AppLocalizations { String get libraryAboutDescription => 'Scans your existing music collection to detect duplicates when downloading. Supports FLAC, M4A, MP3, Opus, and OGG formats. Metadata is read from file tags when available.'; - @override - String libraryTracksCount(int count) { - return '$count tracks'; - } - @override String libraryTracksUnit(int count) { String _temp0 = intl.Intl.pluralLogic( @@ -2557,21 +1774,6 @@ class AppLocalizationsTr extends AppLocalizations { @override String get libraryFilterFormat => 'Format'; - @override - String get libraryFilterDate => 'Date Added'; - - @override - String get libraryFilterDateToday => 'Today'; - - @override - String get libraryFilterDateWeek => 'This Week'; - - @override - String get libraryFilterDateMonth => 'This Month'; - - @override - String get libraryFilterDateYear => 'This Year'; - @override String get libraryFilterSort => 'Sort'; @@ -2581,11 +1783,6 @@ class AppLocalizationsTr extends AppLocalizations { @override String get libraryFilterSortOldest => 'Oldest'; - @override - String libraryFilterActive(int count) { - return '$count filter(s) active'; - } - @override String get timeJustNow => 'Just now'; @@ -2611,72 +1808,6 @@ class AppLocalizationsTr extends AppLocalizations { return '$_temp0'; } - @override - String get storageSwitchTitle => 'Switch Storage Mode'; - - @override - String get storageSwitchToSafTitle => 'Switch to SAF Storage?'; - - @override - String get storageSwitchToAppTitle => 'Switch to App Storage?'; - - @override - String get storageSwitchToSafMessage => - 'Your existing downloads will remain in the current location and stay accessible.\n\nNew downloads will be saved to your selected SAF folder.'; - - @override - String get storageSwitchToAppMessage => - 'Your existing downloads will remain in the current SAF location and stay accessible.\n\nNew downloads will be saved to Music/SpotiFLAC folder.'; - - @override - String get storageSwitchExistingDownloads => 'Existing Downloads'; - - @override - String storageSwitchExistingDownloadsInfo(int count, String mode) { - return '$count tracks in $mode storage'; - } - - @override - String get storageSwitchNewDownloads => 'New Downloads'; - - @override - String storageSwitchNewDownloadsLocation(String location) { - return 'Will be saved to: $location'; - } - - @override - String get storageSwitchContinue => 'Continue'; - - @override - String get storageSwitchSelectFolder => 'Select SAF Folder'; - - @override - String get storageAppStorage => 'App Storage'; - - @override - String get storageSafStorage => 'SAF Storage'; - - @override - String storageModeBadge(String mode) { - return 'Storage: $mode'; - } - - @override - String get storageStatsTitle => 'Storage Statistics'; - - @override - String storageStatsAppCount(int count) { - return '$count tracks in App Storage'; - } - - @override - String storageStatsSafCount(int count) { - return '$count tracks in SAF Storage'; - } - - @override - String get storageModeInfo => 'Your files are stored in multiple locations'; - @override String get tutorialWelcomeTitle => 'Welcome to SpotiFLAC!'; @@ -2703,18 +1834,6 @@ class AppLocalizationsTr extends AppLocalizations { String get tutorialSearchDesc => 'There are two easy ways to find music you want to download.'; - @override - String get tutorialSearchTip1 => - 'Paste a Spotify or Deezer URL directly in the search box'; - - @override - String get tutorialSearchTip2 => - 'Or type the song name, artist, or album to search'; - - @override - String get tutorialSearchTip3 => - 'Supports tracks, albums, playlists, and artist pages'; - @override String get tutorialDownloadTitle => 'Downloading Music'; @@ -2722,18 +1841,6 @@ class AppLocalizationsTr extends AppLocalizations { String get tutorialDownloadDesc => 'Downloading music is simple and fast. Here\'s how it works.'; - @override - String get tutorialDownloadTip1 => - 'Tap the download button next to any track to start downloading'; - - @override - String get tutorialDownloadTip2 => - 'Choose your preferred quality (FLAC, Hi-Res, or MP3)'; - - @override - String get tutorialDownloadTip3 => - 'Download entire albums or playlists with one tap'; - @override String get tutorialLibraryTitle => 'Your Library'; @@ -2794,9 +1901,6 @@ class AppLocalizationsTr extends AppLocalizations { String get tutorialReadyMessage => 'You\'re all set! Start downloading your favorite music now.'; - @override - String get tutorialExample => 'EXAMPLE'; - @override String get libraryForceFullScan => 'Force Full Scan'; @@ -2959,10 +2063,6 @@ class AppLocalizationsTr extends AppLocalizations { @override String get trackReEnrich => 'Re-enrich'; - @override - String get trackReEnrichSubtitle => - 'Re-embed metadata without re-downloading'; - @override String get trackReEnrichOnlineSubtitle => 'Search metadata online and embed into file'; @@ -3243,42 +2343,15 @@ class AppLocalizationsTr extends AppLocalizations { } @override - String get setupModeSelectionTitle => 'Modunuzu Seçin'; + String downloadedAlbumDownloadedCount(int count) { + return '$count downloaded'; + } @override - String get setupModeSelectionDescription => - 'SpotiFLAC\'ı nasıl kullanmak istersiniz? Bunu daha sonra Ayarlar\'dan değiştirebilirsiniz.'; + String get downloadUseAlbumArtistForFoldersAlbumSubtitle => + 'Artist folders use Album Artist when available'; @override - String get setupModeDownloaderTitle => 'İndirici'; - - @override - String get setupModeDownloaderFeature1 => - 'Kayıpsız FLAC kalitesinde parça indirin'; - - @override - String get setupModeDownloaderFeature2 => - 'Çevrimdışı dinlemek için müziği cihazınıza kaydedin'; - - @override - String get setupModeDownloaderFeature3 => 'Yerel müzik kütüphanenizi yönetin'; - - @override - String get setupModeStreamingTitle => 'Yayın Akışı'; - - @override - String get setupModeStreamingFeature1 => - 'İndirmeden parçaları anında yayınlayın'; - - @override - String get setupModeStreamingFeature2 => - 'Smart Queue sizin için otomatik olarak yeni müzik keşfeder'; - - @override - String get setupModeStreamingFeature3 => - 'İstediğiniz parçayı oynatma kontrolleriyle çalın'; - - @override - String get setupModeChangeableLater => - 'Ayarlar\'dan istediğiniz zaman modlar arasında geçiş yapabilirsiniz.'; + String get downloadUseAlbumArtistForFoldersTrackSubtitle => + 'Artist folders use Track Artist only'; } diff --git a/lib/l10n/app_localizations_zh.dart b/lib/l10n/app_localizations_zh.dart index f0b5c82b..433e771b 100644 --- a/lib/l10n/app_localizations_zh.dart +++ b/lib/l10n/app_localizations_zh.dart @@ -11,19 +11,12 @@ class AppLocalizationsZh extends AppLocalizations { @override String get appName => 'SpotiFLAC'; - @override - String get appDescription => - 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; - @override String get navHome => 'Home'; @override String get navLibrary => 'Library'; - @override - String get navHistory => 'History'; - @override String get navSettings => 'Settings'; @@ -33,14 +26,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get homeTitle => 'Home'; - @override - String get homeSearchHint => 'Paste Spotify URL or search...'; - - @override - String homeSearchHintExtension(String extensionName) { - return 'Search with $extensionName...'; - } - @override String get homeSubtitle => 'Paste a Spotify link or search by name'; @@ -50,17 +35,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get homeRecent => 'Recent'; - @override - String get historyTitle => 'History'; - - @override - String historyDownloading(int count) { - return 'Downloading ($count)'; - } - - @override - String get historyDownloaded => 'Downloaded'; - @override String get historyFilterAll => 'All'; @@ -70,48 +44,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get historyFilterSingles => 'Singles'; - @override - String historyTracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks', - one: '1 track', - ); - return '$_temp0'; - } - - @override - String historyAlbumsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count albums', - one: '1 album', - ); - return '$_temp0'; - } - - @override - String get historyNoDownloads => 'No download history'; - - @override - String get historyNoDownloadsSubtitle => 'Downloaded tracks will appear here'; - - @override - String get historyNoAlbums => 'No album downloads'; - - @override - String get historyNoAlbumsSubtitle => - 'Download multiple tracks from an album to see them here'; - - @override - String get historyNoSingles => 'No single downloads'; - - @override - String get historyNoSinglesSubtitle => - 'Single track downloads will appear here'; - @override String get historySearchHint => 'Search history...'; @@ -136,27 +68,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get downloadTitle => 'Download'; - @override - String get downloadLocation => 'Download Location'; - - @override - String get downloadLocationSubtitle => 'Choose where to save files'; - - @override - String get downloadLocationDefault => 'Default location'; - - @override - String get downloadDefaultService => 'Default Service'; - - @override - String get downloadDefaultServiceSubtitle => 'Service used for downloads'; - - @override - String get downloadDefaultQuality => 'Default Quality'; - - @override - String get downloadAskQuality => 'Ask Quality Before Download'; - @override String get downloadAskQualitySubtitle => 'Show quality picker for each download'; @@ -167,31 +78,9 @@ class AppLocalizationsZh extends AppLocalizations { @override String get downloadFolderOrganization => 'Folder Organization'; - @override - String get downloadSeparateSingles => 'Separate Singles'; - - @override - String get downloadSeparateSinglesSubtitle => - 'Put single tracks in a separate folder'; - - @override - String get qualityBest => 'Best Available'; - - @override - String get qualityFlac => 'FLAC'; - - @override - String get quality320 => '320 kbps'; - - @override - String get quality128 => '128 kbps'; - @override String get appearanceTitle => 'Appearance'; - @override - String get appearanceTheme => 'Theme'; - @override String get appearanceThemeSystem => 'System'; @@ -207,9 +96,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get appearanceDynamicColorSubtitle => 'Use colors from your wallpaper'; - @override - String get appearanceAccentColor => 'Accent Color'; - @override String get appearanceHistoryView => 'History View'; @@ -222,9 +108,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get optionsTitle => 'Options'; - @override - String get optionsSearchSource => 'Search Source'; - @override String get optionsPrimaryProvider => 'Primary Provider'; @@ -248,33 +131,6 @@ class AppLocalizationsZh extends AppLocalizations { String get optionsAutoFallbackSubtitle => 'Try other services if download fails'; - @override - String get optionsAutoSkipUnavailableTracks => 'Auto Skip Unavailable Tracks'; - - @override - String get optionsAutoSkipUnavailableTracksSubtitleOn => - 'Automatically skip to the next queue track when a stream cannot be resolved.'; - - @override - String get optionsAutoSkipUnavailableTracksSubtitleOff => - 'Stop on failed track resolution and show an error.'; - - @override - String get optionsInteractionMode => 'Interaction Mode'; - - @override - String get modeDownloader => 'Downloader Mode'; - - @override - String get modeDownloaderSubtitle => - 'Tap tracks to add them to download queue'; - - @override - String get modeStreaming => 'Streaming Mode'; - - @override - String get modeStreamingSubtitle => 'Tap tracks to play instantly'; - @override String get optionsUseExtensionProviders => 'Use Extension Providers'; @@ -377,18 +233,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get extensionsTitle => 'Extensions'; - @override - String get extensionsInstalled => 'Installed Extensions'; - - @override - String get extensionsNone => 'No extensions installed'; - - @override - String get extensionsNoneSubtitle => 'Install extensions from the Store tab'; - - @override - String get extensionsEnabled => 'Enabled'; - @override String get extensionsDisabled => 'Disabled'; @@ -405,9 +249,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get extensionsUninstall => 'Uninstall'; - @override - String get extensionsSetAsSearch => 'Set as Search Provider'; - @override String get storeTitle => 'Extension Store'; @@ -481,9 +322,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get aboutSocial => 'Social'; - @override - String get aboutSupport => 'Support'; - @override String get aboutApp => 'App'; @@ -502,13 +340,6 @@ class AppLocalizationsZh extends AppLocalizations { String get aboutSjdonadoDesc => 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; - @override - String get aboutDoubleDouble => 'DoubleDouble'; - - @override - String get aboutDoubleDoubleDesc => - 'Amazing API for Amazon Music downloads. Thank you for making it free!'; - @override String get aboutDabMusic => 'DAB Music'; @@ -527,32 +358,6 @@ class AppLocalizationsZh extends AppLocalizations { String get aboutAppDescription => 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; - @override - String get albumTitle => 'Album'; - - @override - String albumTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks', - one: '1 track', - ); - return '$_temp0'; - } - - @override - String get albumDownloadAll => 'Download All'; - - @override - String get albumDownloadRemaining => 'Download Remaining'; - - @override - String get playlistTitle => 'Playlist'; - - @override - String get artistTitle => 'Artist'; - @override String get artistAlbums => 'Albums'; @@ -562,17 +367,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get artistCompilations => 'Compilations'; - @override - String artistReleases(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count releases', - one: '1 release', - ); - return '$_temp0'; - } - @override String get artistPopular => 'Popular'; @@ -581,27 +375,6 @@ class AppLocalizationsZh extends AppLocalizations { return '$count monthly listeners'; } - @override - String get trackMetadataTitle => 'Track Info'; - - @override - String get trackMetadataArtist => 'Artist'; - - @override - String get trackMetadataAlbum => 'Album'; - - @override - String get trackMetadataDuration => 'Duration'; - - @override - String get trackMetadataQuality => 'Quality'; - - @override - String get trackMetadataPath => 'File Path'; - - @override - String get trackMetadataDownloadedAt => 'Downloaded'; - @override String get trackMetadataService => 'Service'; @@ -614,53 +387,15 @@ class AppLocalizationsZh extends AppLocalizations { @override String get trackMetadataDelete => 'Delete'; - @override - String get trackMetadataRedownload => 'Re-download'; - - @override - String get trackMetadataOpenFolder => 'Open Folder'; - - @override - String get setupTitle => 'Welcome to SpotiFLAC'; - - @override - String get setupSubtitle => 'Let\'s get you started'; - - @override - String get setupStoragePermission => 'Storage Permission'; - - @override - String get setupStoragePermissionSubtitle => - 'Required to save downloaded files'; - - @override - String get setupStoragePermissionGranted => 'Permission granted'; - - @override - String get setupStoragePermissionDenied => 'Permission denied'; - @override String get setupGrantPermission => 'Grant Permission'; - @override - String get setupDownloadLocation => 'Download Location'; - - @override - String get setupChooseFolder => 'Choose Folder'; - - @override - String get setupContinue => 'Continue'; - @override String get setupSkip => 'Skip for now'; @override String get setupStorageAccessRequired => 'Storage Access Required'; - @override - String get setupStorageAccessMessage => - 'SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.'; - @override String get setupStorageAccessMessageAndroid11 => 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; @@ -682,9 +417,6 @@ class AppLocalizationsZh extends AppLocalizations { return '$permissionType permission is required for the best experience. You can change this later in Settings.'; } - @override - String get setupSelectDownloadFolder => 'Select Download Folder'; - @override String get setupUseDefaultFolder => 'Use Default Folder?'; @@ -726,21 +458,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get setupDownloadInFlac => 'Download Spotify tracks in FLAC'; - @override - String get setupStepStorage => 'Storage'; - - @override - String get setupStepNotification => 'Notification'; - - @override - String get setupStepFolder => 'Folder'; - - @override - String get setupStepSpotify => 'Spotify'; - - @override - String get setupStepPermission => 'Permission'; - @override String get setupStorageGranted => 'Storage Permission Granted!'; @@ -757,13 +474,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get setupNotificationEnable => 'Enable Notifications'; - @override - String get setupNotificationDescription => - 'Get notified when downloads complete or require attention.'; - - @override - String get setupFolderSelected => 'Download Folder Selected!'; - @override String get setupFolderChoose => 'Choose Download Folder'; @@ -771,48 +481,12 @@ class AppLocalizationsZh extends AppLocalizations { String get setupFolderDescription => 'Select a folder where your downloaded music will be saved.'; - @override - String get setupChangeFolder => 'Change Folder'; - @override String get setupSelectFolder => 'Select Folder'; - @override - String get setupSpotifyApiOptional => 'Spotify API (Optional)'; - - @override - String get setupSpotifyApiDescription => - 'Add your Spotify API credentials for better search results and access to Spotify-exclusive content.'; - - @override - String get setupUseSpotifyApi => 'Use Spotify API'; - - @override - String get setupEnterCredentialsBelow => 'Enter your credentials below'; - - @override - String get setupUsingDeezer => 'Using Deezer (no account needed)'; - - @override - String get setupEnterClientId => 'Enter Spotify Client ID'; - - @override - String get setupEnterClientSecret => 'Enter Spotify Client Secret'; - - @override - String get setupGetFreeCredentials => - 'Get your free API credentials from the Spotify Developer Dashboard.'; - @override String get setupEnableNotifications => 'Enable Notifications'; - @override - String get setupProceedToNextStep => 'You can now proceed to the next step.'; - - @override - String get setupNotificationProgressDescription => - 'You will receive download progress notifications.'; - @override String get setupNotificationBackgroundDescription => 'Get notified about download progress and completion. This helps you track downloads when the app is in background.'; @@ -820,32 +494,19 @@ class AppLocalizationsZh extends AppLocalizations { @override String get setupSkipForNow => 'Skip for now'; - @override - String get setupBack => 'Back'; - @override String get setupNext => 'Next'; @override String get setupGetStarted => 'Get Started'; - @override - String get setupSkipAndStart => 'Skip & Start'; - @override String get setupAllowAccessToManageFiles => 'Please enable \"Allow access to manage all files\" in the next screen.'; - @override - String get setupGetCredentialsFromSpotify => - 'Get credentials from developer.spotify.com'; - @override String get dialogCancel => 'Cancel'; - @override - String get dialogOk => 'OK'; - @override String get dialogSave => 'Save'; @@ -855,21 +516,9 @@ class AppLocalizationsZh extends AppLocalizations { @override String get dialogRetry => 'Retry'; - @override - String get dialogClose => 'Close'; - - @override - String get dialogYes => 'Yes'; - - @override - String get dialogNo => 'No'; - @override String get dialogClear => 'Clear'; - @override - String get dialogConfirm => 'Confirm'; - @override String get dialogDone => 'Done'; @@ -892,28 +541,9 @@ class AppLocalizationsZh extends AppLocalizations { String get dialogUnsavedChanges => 'You have unsaved changes. Do you want to discard them?'; - @override - String get dialogDownloadFailed => 'Download Failed'; - - @override - String get dialogTrackLabel => 'Track:'; - - @override - String get dialogArtistLabel => 'Artist:'; - - @override - String get dialogErrorLabel => 'Error:'; - @override String get dialogClearAll => 'Clear All'; - @override - String get dialogClearAllDownloads => - 'Are you sure you want to clear all downloads?'; - - @override - String get dialogRemoveFromDevice => 'Remove from device?'; - @override String get dialogRemoveExtension => 'Remove Extension'; @@ -1014,11 +644,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get snackbarViewQueue => 'View Queue'; - @override - String snackbarFailedToLoad(String error) { - return 'Failed to load: $error'; - } - @override String snackbarUrlCopied(String platform) { return '$platform URL copied to clipboard'; @@ -1060,44 +685,14 @@ class AppLocalizationsZh extends AppLocalizations { String get errorRateLimitedMessage => 'Too many requests. Please wait a moment before searching again.'; - @override - String errorFailedToLoad(String item) { - return 'Failed to load $item'; - } - @override String get errorNoTracksFound => 'No tracks found'; - @override - String get errorSeekNotSupported => - 'Seeking is not supported for this live stream'; - @override String errorMissingExtensionSource(String item) { return 'Cannot load $item: missing extension source'; } - @override - String get statusQueued => 'Queued'; - - @override - String get statusDownloading => 'Downloading'; - - @override - String get statusFinalizing => 'Finalizing'; - - @override - String get statusCompleted => 'Completed'; - - @override - String get statusFailed => 'Failed'; - - @override - String get statusSkipped => 'Skipped'; - - @override - String get statusPaused => 'Paused'; - @override String get actionPause => 'Pause'; @@ -1107,24 +702,12 @@ class AppLocalizationsZh extends AppLocalizations { @override String get actionCancel => 'Cancel'; - @override - String get actionStop => 'Stop'; - - @override - String get actionSelect => 'Select'; - @override String get actionSelectAll => 'Select All'; @override String get actionDeselect => 'Deselect'; - @override - String get actionPaste => 'Paste'; - - @override - String get actionImportCsv => 'Import CSV'; - @override String get actionRemoveCredentials => 'Remove Credentials'; @@ -1139,20 +722,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get selectionAllSelected => 'All tracks selected'; - @override - String get selectionTapToSelect => 'Tap tracks to select'; - - @override - String selectionDeleteTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Delete $count $_temp0'; - } - @override String get selectionSelectToDelete => 'Select tracks to delete'; @@ -1179,40 +748,9 @@ class AppLocalizationsZh extends AppLocalizations { @override String get tooltipPlay => 'Play'; - @override - String get tooltipCancel => 'Cancel'; - - @override - String get tooltipStop => 'Stop'; - - @override - String get tooltipRetry => 'Retry'; - - @override - String get tooltipRemove => 'Remove'; - - @override - String get tooltipClear => 'Clear'; - - @override - String get tooltipPaste => 'Paste'; - @override String get filenameFormat => 'Filename Format'; - @override - String filenameFormatPreview(String preview) { - return 'Preview: $preview'; - } - - @override - String get filenameAvailablePlaceholders => 'Available placeholders:'; - - @override - String filenameHint(Object artist, Object title) { - return '$artist - $title'; - } - @override String get filenameShowAdvancedTags => 'Show advanced tags'; @@ -1220,9 +758,6 @@ class AppLocalizationsZh extends AppLocalizations { String get filenameShowAdvancedTagsDescription => 'Enable formatted tags for track padding and date patterns'; - @override - String get folderOrganization => 'Folder Organization'; - @override String get folderOrganizationNone => 'No organization'; @@ -1257,20 +792,9 @@ class AppLocalizationsZh extends AppLocalizations { @override String get updateAvailable => 'Update Available'; - @override - String updateNewVersion(String version) { - return 'Version $version is available'; - } - - @override - String get updateDownload => 'Download'; - @override String get updateLater => 'Later'; - @override - String get updateChangelog => 'Changelog'; - @override String get updateStartingDownload => 'Starting download...'; @@ -1301,12 +825,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get updateDontRemind => 'Don\'t remind'; - @override - String get providerPriority => 'Provider Priority'; - - @override - String get providerPrioritySubtitle => 'Drag to reorder download providers'; - @override String get providerPriorityTitle => 'Provider Priority'; @@ -1324,13 +842,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get providerExtension => 'Extension'; - @override - String get metadataProviderPriority => 'Metadata Provider Priority'; - - @override - String get metadataProviderPrioritySubtitle => - 'Order used when fetching track metadata'; - @override String get metadataProviderPriorityTitle => 'Metadata Priority'; @@ -1351,18 +862,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get logTitle => 'Logs'; - @override - String get logCopy => 'Copy Logs'; - - @override - String get logClear => 'Clear Logs'; - - @override - String get logShare => 'Share Logs'; - - @override - String get logEmpty => 'No logs yet'; - @override String get logCopied => 'Logs copied to clipboard'; @@ -1387,18 +886,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get logClearLogsMessage => 'Are you sure you want to clear all logs?'; - @override - String get logIspBlocking => 'ISP BLOCKING DETECTED'; - - @override - String get logRateLimited => 'RATE LIMITED'; - - @override - String get logNetworkError => 'NETWORK ERROR'; - - @override - String get logTrackNotFound => 'TRACK NOT FOUND'; - @override String get logFilterBySeverity => 'Filter logs by severity'; @@ -1408,48 +895,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get logNoLogsYetSubtitle => 'Logs will appear here as you use the app'; - @override - String get logIssueSummary => 'Issue Summary'; - - @override - String get logIspBlockingDescription => - 'Your ISP may be blocking access to download services'; - - @override - String get logIspBlockingSuggestion => - 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; - - @override - String get logRateLimitedDescription => 'Too many requests to the service'; - - @override - String get logRateLimitedSuggestion => - 'Wait a few minutes before trying again'; - - @override - String get logNetworkErrorDescription => 'Connection issues detected'; - - @override - String get logNetworkErrorSuggestion => 'Check your internet connection'; - - @override - String get logTrackNotFoundDescription => - 'Some tracks could not be found on download services'; - - @override - String get logTrackNotFoundSuggestion => - 'The track may not be available in lossless quality'; - - @override - String logTotalErrors(int count) { - return 'Total errors: $count'; - } - - @override - String logAffected(String domains) { - return 'Affected: $domains'; - } - @override String logEntriesFiltered(int count) { return 'Entries ($count filtered)'; @@ -1556,9 +1001,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get appearanceLanguage => 'App Language'; - @override - String get appearanceLanguageSubtitle => 'Choose your preferred language'; - @override String get settingsAppearanceSubtitle => 'Theme, colors, display'; @@ -1580,19 +1022,11 @@ class AppLocalizationsZh extends AppLocalizations { @override String get pressBackAgainToExit => 'Press back again to exit'; - @override - String get tracksHeader => 'Tracks'; - @override String downloadAllCount(int count) { return 'Download All ($count)'; } - @override - String playAllCount(int count) { - return 'Play All ($count)'; - } - @override String tracksCount(int count) { String _temp0 = intl.Intl.pluralLogic( @@ -1701,11 +1135,6 @@ class AppLocalizationsZh extends AppLocalizations { String get trackDeleteConfirmMessage => 'This will permanently delete the downloaded file and remove it from your history.'; - @override - String trackCannotOpen(String message) { - return 'Cannot open: $message'; - } - @override String get dateToday => 'Today'; @@ -1727,18 +1156,6 @@ class AppLocalizationsZh extends AppLocalizations { return '$count months ago'; } - @override - String get concurrentSequential => 'Sequential'; - - @override - String get concurrentParallel2 => '2 Parallel'; - - @override - String get concurrentParallel3 => '3 Parallel'; - - @override - String get tapToSeeError => 'Tap to see error details'; - @override String get storeFilterAll => 'All'; @@ -1760,15 +1177,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get storeClearFilters => 'Clear filters'; - @override - String get storeNoResults => 'No extensions found'; - - @override - String get extensionProviderPriority => 'Provider Priority'; - - @override - String get extensionInstallButton => 'Install Extension'; - @override String get extensionDefaultProvider => 'Default (Deezer/Spotify)'; @@ -1919,38 +1327,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get qualityHiResFlacMaxSubtitle => '24-bit / up to 192kHz'; - @override - String get qualityLossy => 'Lossy'; - - @override - String get qualityLossyMp3Subtitle => 'MP3 320kbps (converted from FLAC)'; - - @override - String get qualityLossyOpusSubtitle => 'Opus 128kbps (converted from FLAC)'; - - @override - String get enableLossyOption => 'Enable Lossy Option'; - - @override - String get enableLossyOptionSubtitleOn => 'Lossy quality option is available'; - - @override - String get enableLossyOptionSubtitleOff => - 'Downloads FLAC then converts to lossy format'; - - @override - String get lossyFormat => 'Lossy Format'; - - @override - String get lossyFormatDescription => 'Choose the lossy format for conversion'; - - @override - String get lossyFormatMp3Subtitle => '320kbps, best compatibility'; - - @override - String get lossyFormatOpusSubtitle => - '128kbps, better quality at smaller size'; - @override String get qualityNote => 'Actual quality depends on track availability from the service'; @@ -1965,24 +1341,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get youtubeMp3BitrateTitle => 'YouTube MP3 Bitrate'; - @override - String youtubeBitrateSubtitle(int bitrate, int min, int max) { - return '${bitrate}kbps ($min-$max)'; - } - - @override - String youtubeBitrateInputHelp(int min, int max) { - return 'Enter custom bitrate ($min-$max kbps)'; - } - - @override - String get youtubeBitrateFieldLabel => 'Bitrate (kbps)'; - - @override - String youtubeBitrateValidationError(int min, int max) { - return 'Bitrate must be between $min and $max kbps'; - } - @override String get downloadAskBeforeDownload => 'Ask Before Download'; @@ -1998,14 +1356,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get downloadUseAlbumArtistForFolders => 'Use Album Artist for folders'; - @override - String get downloadUseAlbumArtistForFoldersAlbumSubtitle => - 'Artist folders use Album Artist when available'; - - @override - String get downloadUseAlbumArtistForFoldersTrackSubtitle => - 'Artist folders use Track Artist only'; - @override String get downloadUsePrimaryArtistOnly => 'Primary artist only for folders'; @@ -2017,78 +1367,18 @@ class AppLocalizationsZh extends AppLocalizations { String get downloadUsePrimaryArtistOnlyDisabled => 'Full artist string used for folder name'; - @override - String get downloadSaveFormat => 'Save Format'; - - @override - String get downloadSelectService => 'Select Service'; - @override String get downloadSelectQuality => 'Select Quality'; @override String get downloadFrom => 'Download From'; - @override - String get downloadDefaultQualityLabel => 'Default Quality'; - - @override - String get downloadBestAvailable => 'Best available'; - - @override - String get folderNone => 'None'; - - @override - String get folderNoneSubtitle => 'Save all files directly to download folder'; - - @override - String get folderArtist => 'Artist'; - - @override - String get folderArtistSubtitle => 'Artist Name/filename'; - - @override - String get folderAlbum => 'Album'; - - @override - String get folderAlbumSubtitle => 'Album Name/filename'; - - @override - String get folderArtistAlbum => 'Artist/Album'; - - @override - String get folderArtistAlbumSubtitle => 'Artist Name/Album Name/filename'; - - @override - String get serviceTidal => 'Tidal'; - - @override - String get serviceQobuz => 'Qobuz'; - - @override - String get serviceAmazon => 'Amazon'; - - @override - String get serviceDeezer => 'Deezer'; - - @override - String get serviceSpotify => 'Spotify'; - @override String get appearanceAmoledDark => 'AMOLED Dark'; @override String get appearanceAmoledDarkSubtitle => 'Pure black background'; - @override - String get appearanceChooseAccentColor => 'Choose Accent Color'; - - @override - String get appearanceChooseTheme => 'Theme Mode'; - - @override - String get queueTitle => 'Download Queue'; - @override String get queueClearAll => 'Clear All'; @@ -2096,19 +1386,6 @@ class AppLocalizationsZh extends AppLocalizations { String get queueClearAllMessage => 'Are you sure you want to clear all downloads?'; - @override - String get queueExportFailed => 'Export'; - - @override - String get queueExportFailedSuccess => - 'Failed downloads exported to TXT file'; - - @override - String get queueExportFailedClear => 'Clear Failed'; - - @override - String get queueExportFailedError => 'Failed to export downloads'; - @override String get settingsAutoExportFailed => 'Auto-export failed downloads'; @@ -2129,30 +1406,6 @@ class AppLocalizationsZh extends AppLocalizations { String get settingsDownloadNetworkSubtitle => 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; - @override - String get queueEmpty => 'No downloads in queue'; - - @override - String get queueEmptySubtitle => 'Add tracks from the home screen'; - - @override - String get queueClearCompleted => 'Clear completed'; - - @override - String get queueDownloadFailed => 'Download Failed'; - - @override - String get queueTrackLabel => 'Track:'; - - @override - String get queueArtistLabel => 'Artist:'; - - @override - String get queueErrorLabel => 'Error:'; - - @override - String get queueUnknownError => 'Unknown error'; - @override String get albumFolderArtistAlbum => 'Artist / Album'; @@ -2199,14 +1452,6 @@ class AppLocalizationsZh extends AppLocalizations { return 'Delete $count $_temp0 from this album?\n\nThis will also delete the files from storage.'; } - @override - String get downloadedAlbumTracksHeader => 'Tracks'; - - @override - String downloadedAlbumDownloadedCount(int count) { - return '$count downloaded'; - } - @override String downloadedAlbumSelectedCount(int count) { return '$count selected'; @@ -2237,9 +1482,6 @@ class AppLocalizationsZh extends AppLocalizations { return 'Disc $discNumber'; } - @override - String get utilityFunctions => 'Utility Functions'; - @override String get recentTypeArtist => 'Artist'; @@ -2263,23 +1505,12 @@ class AppLocalizationsZh extends AppLocalizations { return 'Playlist: $name'; } - @override - String errorGeneric(String message) { - return 'Error: $message'; - } - @override String get discographyDownload => 'Download Discography'; - @override - String get discographyPlay => 'Play Discography'; - @override String get discographyDownloadAll => 'Download All'; - @override - String get discographyPlayAll => 'Play All'; - @override String discographyDownloadAllSubtitle(int count, int albumCount) { return '$count tracks from $albumCount releases'; @@ -2324,9 +1555,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get discographyDownloadSelected => 'Download Selected'; - @override - String get discographyPlaySelected => 'Play Selected'; - @override String discographyAddedToQueue(int count) { return 'Added $count tracks to queue'; @@ -2382,9 +1610,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get libraryTitle => 'Local Library'; - @override - String get libraryStatus => 'Library Status'; - @override String get libraryScanSettings => 'Scan Settings'; @@ -2447,11 +1672,6 @@ class AppLocalizationsZh extends AppLocalizations { String get libraryAboutDescription => 'Scans your existing music collection to detect duplicates when downloading. Supports FLAC, M4A, MP3, Opus, and OGG formats. Metadata is read from file tags when available.'; - @override - String libraryTracksCount(int count) { - return '$count tracks'; - } - @override String libraryTracksUnit(int count) { String _temp0 = intl.Intl.pluralLogic( @@ -2542,21 +1762,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get libraryFilterFormat => 'Format'; - @override - String get libraryFilterDate => 'Date Added'; - - @override - String get libraryFilterDateToday => 'Today'; - - @override - String get libraryFilterDateWeek => 'This Week'; - - @override - String get libraryFilterDateMonth => 'This Month'; - - @override - String get libraryFilterDateYear => 'This Year'; - @override String get libraryFilterSort => 'Sort'; @@ -2566,11 +1771,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get libraryFilterSortOldest => 'Oldest'; - @override - String libraryFilterActive(int count) { - return '$count filter(s) active'; - } - @override String get timeJustNow => 'Just now'; @@ -2596,72 +1796,6 @@ class AppLocalizationsZh extends AppLocalizations { return '$_temp0'; } - @override - String get storageSwitchTitle => 'Switch Storage Mode'; - - @override - String get storageSwitchToSafTitle => 'Switch to SAF Storage?'; - - @override - String get storageSwitchToAppTitle => 'Switch to App Storage?'; - - @override - String get storageSwitchToSafMessage => - 'Your existing downloads will remain in the current location and stay accessible.\n\nNew downloads will be saved to your selected SAF folder.'; - - @override - String get storageSwitchToAppMessage => - 'Your existing downloads will remain in the current SAF location and stay accessible.\n\nNew downloads will be saved to Music/SpotiFLAC folder.'; - - @override - String get storageSwitchExistingDownloads => 'Existing Downloads'; - - @override - String storageSwitchExistingDownloadsInfo(int count, String mode) { - return '$count tracks in $mode storage'; - } - - @override - String get storageSwitchNewDownloads => 'New Downloads'; - - @override - String storageSwitchNewDownloadsLocation(String location) { - return 'Will be saved to: $location'; - } - - @override - String get storageSwitchContinue => 'Continue'; - - @override - String get storageSwitchSelectFolder => 'Select SAF Folder'; - - @override - String get storageAppStorage => 'App Storage'; - - @override - String get storageSafStorage => 'SAF Storage'; - - @override - String storageModeBadge(String mode) { - return 'Storage: $mode'; - } - - @override - String get storageStatsTitle => 'Storage Statistics'; - - @override - String storageStatsAppCount(int count) { - return '$count tracks in App Storage'; - } - - @override - String storageStatsSafCount(int count) { - return '$count tracks in SAF Storage'; - } - - @override - String get storageModeInfo => 'Your files are stored in multiple locations'; - @override String get tutorialWelcomeTitle => 'Welcome to SpotiFLAC!'; @@ -2688,18 +1822,6 @@ class AppLocalizationsZh extends AppLocalizations { String get tutorialSearchDesc => 'There are two easy ways to find music you want to download.'; - @override - String get tutorialSearchTip1 => - 'Paste a Spotify or Deezer URL directly in the search box'; - - @override - String get tutorialSearchTip2 => - 'Or type the song name, artist, or album to search'; - - @override - String get tutorialSearchTip3 => - 'Supports tracks, albums, playlists, and artist pages'; - @override String get tutorialDownloadTitle => 'Downloading Music'; @@ -2707,18 +1829,6 @@ class AppLocalizationsZh extends AppLocalizations { String get tutorialDownloadDesc => 'Downloading music is simple and fast. Here\'s how it works.'; - @override - String get tutorialDownloadTip1 => - 'Tap the download button next to any track to start downloading'; - - @override - String get tutorialDownloadTip2 => - 'Choose your preferred quality (FLAC, Hi-Res, or MP3)'; - - @override - String get tutorialDownloadTip3 => - 'Download entire albums or playlists with one tap'; - @override String get tutorialLibraryTitle => 'Your Library'; @@ -2779,9 +1889,6 @@ class AppLocalizationsZh extends AppLocalizations { String get tutorialReadyMessage => 'You\'re all set! Start downloading your favorite music now.'; - @override - String get tutorialExample => 'EXAMPLE'; - @override String get libraryForceFullScan => 'Force Full Scan'; @@ -2944,10 +2051,6 @@ class AppLocalizationsZh extends AppLocalizations { @override String get trackReEnrich => 'Re-enrich'; - @override - String get trackReEnrichSubtitle => - 'Re-embed metadata without re-downloading'; - @override String get trackReEnrichOnlineSubtitle => 'Search metadata online and embed into file'; @@ -3228,37 +2331,17 @@ class AppLocalizationsZh extends AppLocalizations { } @override - String get setupModeSelectionTitle => '选择您的模式'; + String downloadedAlbumDownloadedCount(int count) { + return '$count downloaded'; + } @override - String get setupModeSelectionDescription => '您想如何使用 SpotiFLAC?您可以稍后在设置中随时更改。'; + String get downloadUseAlbumArtistForFoldersAlbumSubtitle => + 'Artist folders use Album Artist when available'; @override - String get setupModeDownloaderTitle => '下载器'; - - @override - String get setupModeDownloaderFeature1 => '以无损 FLAC 品质下载曲目'; - - @override - String get setupModeDownloaderFeature2 => '将音乐保存到设备以供离线收听'; - - @override - String get setupModeDownloaderFeature3 => '管理您的本地音乐库'; - - @override - String get setupModeStreamingTitle => '流媒体'; - - @override - String get setupModeStreamingFeature1 => '无需下载即可即时播放曲目'; - - @override - String get setupModeStreamingFeature2 => 'Smart Queue 自动为您发现新音乐'; - - @override - String get setupModeStreamingFeature3 => '通过播放控件随时点播任意曲目'; - - @override - String get setupModeChangeableLater => '您可以随时在设置中切换模式。'; + String get downloadUseAlbumArtistForFoldersTrackSubtitle => + 'Artist folders use Track Artist only'; } /// The translations for Chinese, as used in China (`zh_CN`). @@ -3268,19 +2351,12 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get appName => 'SpotiFLAC'; - @override - String get appDescription => - 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; - @override String get navHome => 'Home'; @override String get navLibrary => 'Library'; - @override - String get navHistory => 'History'; - @override String get navSettings => 'Settings'; @@ -3290,14 +2366,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get homeTitle => 'Home'; - @override - String get homeSearchHint => 'Paste Spotify URL or search...'; - - @override - String homeSearchHintExtension(String extensionName) { - return 'Search with $extensionName...'; - } - @override String get homeSubtitle => 'Paste a Spotify link or search by name'; @@ -3307,17 +2375,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get homeRecent => 'Recent'; - @override - String get historyTitle => 'History'; - - @override - String historyDownloading(int count) { - return 'Downloading ($count)'; - } - - @override - String get historyDownloaded => 'Downloaded'; - @override String get historyFilterAll => 'All'; @@ -3327,48 +2384,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get historyFilterSingles => 'Singles'; - @override - String historyTracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks', - one: '1 track', - ); - return '$_temp0'; - } - - @override - String historyAlbumsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count albums', - one: '1 album', - ); - return '$_temp0'; - } - - @override - String get historyNoDownloads => 'No download history'; - - @override - String get historyNoDownloadsSubtitle => 'Downloaded tracks will appear here'; - - @override - String get historyNoAlbums => 'No album downloads'; - - @override - String get historyNoAlbumsSubtitle => - 'Download multiple tracks from an album to see them here'; - - @override - String get historyNoSingles => 'No single downloads'; - - @override - String get historyNoSinglesSubtitle => - 'Single track downloads will appear here'; - @override String get historySearchHint => 'Search history...'; @@ -3393,27 +2408,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get downloadTitle => 'Download'; - @override - String get downloadLocation => 'Download Location'; - - @override - String get downloadLocationSubtitle => 'Choose where to save files'; - - @override - String get downloadLocationDefault => 'Default location'; - - @override - String get downloadDefaultService => 'Default Service'; - - @override - String get downloadDefaultServiceSubtitle => 'Service used for downloads'; - - @override - String get downloadDefaultQuality => 'Default Quality'; - - @override - String get downloadAskQuality => 'Ask Quality Before Download'; - @override String get downloadAskQualitySubtitle => 'Show quality picker for each download'; @@ -3424,31 +2418,9 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get downloadFolderOrganization => 'Folder Organization'; - @override - String get downloadSeparateSingles => 'Separate Singles'; - - @override - String get downloadSeparateSinglesSubtitle => - 'Put single tracks in a separate folder'; - - @override - String get qualityBest => 'Best Available'; - - @override - String get qualityFlac => 'FLAC'; - - @override - String get quality320 => '320 kbps'; - - @override - String get quality128 => '128 kbps'; - @override String get appearanceTitle => 'Appearance'; - @override - String get appearanceTheme => 'Theme'; - @override String get appearanceThemeSystem => 'System'; @@ -3464,9 +2436,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get appearanceDynamicColorSubtitle => 'Use colors from your wallpaper'; - @override - String get appearanceAccentColor => 'Accent Color'; - @override String get appearanceHistoryView => 'History View'; @@ -3479,9 +2448,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get optionsTitle => 'Options'; - @override - String get optionsSearchSource => 'Search Source'; - @override String get optionsPrimaryProvider => 'Primary Provider'; @@ -3607,18 +2573,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get extensionsTitle => 'Extensions'; - @override - String get extensionsInstalled => 'Installed Extensions'; - - @override - String get extensionsNone => 'No extensions installed'; - - @override - String get extensionsNoneSubtitle => 'Install extensions from the Store tab'; - - @override - String get extensionsEnabled => 'Enabled'; - @override String get extensionsDisabled => 'Disabled'; @@ -3635,9 +2589,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get extensionsUninstall => 'Uninstall'; - @override - String get extensionsSetAsSearch => 'Set as Search Provider'; - @override String get storeTitle => 'Extension Store'; @@ -3711,9 +2662,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get aboutSocial => 'Social'; - @override - String get aboutSupport => 'Support'; - @override String get aboutApp => 'App'; @@ -3732,13 +2680,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get aboutSjdonadoDesc => 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; - @override - String get aboutDoubleDouble => 'DoubleDouble'; - - @override - String get aboutDoubleDoubleDesc => - 'Amazing API for Amazon Music downloads. Thank you for making it free!'; - @override String get aboutDabMusic => 'DAB Music'; @@ -3757,32 +2698,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get aboutAppDescription => 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; - @override - String get albumTitle => 'Album'; - - @override - String albumTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks', - one: '1 track', - ); - return '$_temp0'; - } - - @override - String get albumDownloadAll => 'Download All'; - - @override - String get albumDownloadRemaining => 'Download Remaining'; - - @override - String get playlistTitle => 'Playlist'; - - @override - String get artistTitle => 'Artist'; - @override String get artistAlbums => 'Albums'; @@ -3792,17 +2707,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get artistCompilations => 'Compilations'; - @override - String artistReleases(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count releases', - one: '1 release', - ); - return '$_temp0'; - } - @override String get artistPopular => 'Popular'; @@ -3811,27 +2715,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { return '$count monthly listeners'; } - @override - String get trackMetadataTitle => 'Track Info'; - - @override - String get trackMetadataArtist => 'Artist'; - - @override - String get trackMetadataAlbum => 'Album'; - - @override - String get trackMetadataDuration => 'Duration'; - - @override - String get trackMetadataQuality => 'Quality'; - - @override - String get trackMetadataPath => 'File Path'; - - @override - String get trackMetadataDownloadedAt => 'Downloaded'; - @override String get trackMetadataService => 'Service'; @@ -3844,53 +2727,15 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get trackMetadataDelete => 'Delete'; - @override - String get trackMetadataRedownload => 'Re-download'; - - @override - String get trackMetadataOpenFolder => 'Open Folder'; - - @override - String get setupTitle => 'Welcome to SpotiFLAC'; - - @override - String get setupSubtitle => 'Let\'s get you started'; - - @override - String get setupStoragePermission => 'Storage Permission'; - - @override - String get setupStoragePermissionSubtitle => - 'Required to save downloaded files'; - - @override - String get setupStoragePermissionGranted => 'Permission granted'; - - @override - String get setupStoragePermissionDenied => 'Permission denied'; - @override String get setupGrantPermission => 'Grant Permission'; - @override - String get setupDownloadLocation => 'Download Location'; - - @override - String get setupChooseFolder => 'Choose Folder'; - - @override - String get setupContinue => 'Continue'; - @override String get setupSkip => 'Skip for now'; @override String get setupStorageAccessRequired => 'Storage Access Required'; - @override - String get setupStorageAccessMessage => - 'SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.'; - @override String get setupStorageAccessMessageAndroid11 => 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; @@ -3912,9 +2757,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { return '$permissionType permission is required for the best experience. You can change this later in Settings.'; } - @override - String get setupSelectDownloadFolder => 'Select Download Folder'; - @override String get setupUseDefaultFolder => 'Use Default Folder?'; @@ -3956,21 +2798,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get setupDownloadInFlac => 'Download Spotify tracks in FLAC'; - @override - String get setupStepStorage => 'Storage'; - - @override - String get setupStepNotification => 'Notification'; - - @override - String get setupStepFolder => 'Folder'; - - @override - String get setupStepSpotify => 'Spotify'; - - @override - String get setupStepPermission => 'Permission'; - @override String get setupStorageGranted => 'Storage Permission Granted!'; @@ -3987,13 +2814,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get setupNotificationEnable => 'Enable Notifications'; - @override - String get setupNotificationDescription => - 'Get notified when downloads complete or require attention.'; - - @override - String get setupFolderSelected => 'Download Folder Selected!'; - @override String get setupFolderChoose => 'Choose Download Folder'; @@ -4001,48 +2821,12 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get setupFolderDescription => 'Select a folder where your downloaded music will be saved.'; - @override - String get setupChangeFolder => 'Change Folder'; - @override String get setupSelectFolder => 'Select Folder'; - @override - String get setupSpotifyApiOptional => 'Spotify API (Optional)'; - - @override - String get setupSpotifyApiDescription => - 'Add your Spotify API credentials for better search results and access to Spotify-exclusive content.'; - - @override - String get setupUseSpotifyApi => 'Use Spotify API'; - - @override - String get setupEnterCredentialsBelow => 'Enter your credentials below'; - - @override - String get setupUsingDeezer => 'Using Deezer (no account needed)'; - - @override - String get setupEnterClientId => 'Enter Spotify Client ID'; - - @override - String get setupEnterClientSecret => 'Enter Spotify Client Secret'; - - @override - String get setupGetFreeCredentials => - 'Get your free API credentials from the Spotify Developer Dashboard.'; - @override String get setupEnableNotifications => 'Enable Notifications'; - @override - String get setupProceedToNextStep => 'You can now proceed to the next step.'; - - @override - String get setupNotificationProgressDescription => - 'You will receive download progress notifications.'; - @override String get setupNotificationBackgroundDescription => 'Get notified about download progress and completion. This helps you track downloads when the app is in background.'; @@ -4050,32 +2834,19 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get setupSkipForNow => 'Skip for now'; - @override - String get setupBack => 'Back'; - @override String get setupNext => 'Next'; @override String get setupGetStarted => 'Get Started'; - @override - String get setupSkipAndStart => 'Skip & Start'; - @override String get setupAllowAccessToManageFiles => 'Please enable \"Allow access to manage all files\" in the next screen.'; - @override - String get setupGetCredentialsFromSpotify => - 'Get credentials from developer.spotify.com'; - @override String get dialogCancel => 'Cancel'; - @override - String get dialogOk => 'OK'; - @override String get dialogSave => 'Save'; @@ -4085,21 +2856,9 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get dialogRetry => 'Retry'; - @override - String get dialogClose => 'Close'; - - @override - String get dialogYes => 'Yes'; - - @override - String get dialogNo => 'No'; - @override String get dialogClear => 'Clear'; - @override - String get dialogConfirm => 'Confirm'; - @override String get dialogDone => 'Done'; @@ -4122,28 +2881,9 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get dialogUnsavedChanges => 'You have unsaved changes. Do you want to discard them?'; - @override - String get dialogDownloadFailed => 'Download Failed'; - - @override - String get dialogTrackLabel => 'Track:'; - - @override - String get dialogArtistLabel => 'Artist:'; - - @override - String get dialogErrorLabel => 'Error:'; - @override String get dialogClearAll => 'Clear All'; - @override - String get dialogClearAllDownloads => - 'Are you sure you want to clear all downloads?'; - - @override - String get dialogRemoveFromDevice => 'Remove from device?'; - @override String get dialogRemoveExtension => 'Remove Extension'; @@ -4244,11 +2984,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get snackbarViewQueue => 'View Queue'; - @override - String snackbarFailedToLoad(String error) { - return 'Failed to load: $error'; - } - @override String snackbarUrlCopied(String platform) { return '$platform URL copied to clipboard'; @@ -4290,11 +3025,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get errorRateLimitedMessage => 'Too many requests. Please wait a moment before searching again.'; - @override - String errorFailedToLoad(String item) { - return 'Failed to load $item'; - } - @override String get errorNoTracksFound => 'No tracks found'; @@ -4303,27 +3033,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { return 'Cannot load $item: missing extension source'; } - @override - String get statusQueued => 'Queued'; - - @override - String get statusDownloading => 'Downloading'; - - @override - String get statusFinalizing => 'Finalizing'; - - @override - String get statusCompleted => 'Completed'; - - @override - String get statusFailed => 'Failed'; - - @override - String get statusSkipped => 'Skipped'; - - @override - String get statusPaused => 'Paused'; - @override String get actionPause => 'Pause'; @@ -4333,24 +3042,12 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get actionCancel => 'Cancel'; - @override - String get actionStop => 'Stop'; - - @override - String get actionSelect => 'Select'; - @override String get actionSelectAll => 'Select All'; @override String get actionDeselect => 'Deselect'; - @override - String get actionPaste => 'Paste'; - - @override - String get actionImportCsv => 'Import CSV'; - @override String get actionRemoveCredentials => 'Remove Credentials'; @@ -4365,20 +3062,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get selectionAllSelected => 'All tracks selected'; - @override - String get selectionTapToSelect => 'Tap tracks to select'; - - @override - String selectionDeleteTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Delete $count $_temp0'; - } - @override String get selectionSelectToDelete => 'Select tracks to delete'; @@ -4405,43 +3088,9 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get tooltipPlay => 'Play'; - @override - String get tooltipCancel => 'Cancel'; - - @override - String get tooltipStop => 'Stop'; - - @override - String get tooltipRetry => 'Retry'; - - @override - String get tooltipRemove => 'Remove'; - - @override - String get tooltipClear => 'Clear'; - - @override - String get tooltipPaste => 'Paste'; - @override String get filenameFormat => 'Filename Format'; - @override - String filenameFormatPreview(String preview) { - return 'Preview: $preview'; - } - - @override - String get filenameAvailablePlaceholders => 'Available placeholders:'; - - @override - String filenameHint(Object artist, Object title) { - return '$artist - $title'; - } - - @override - String get folderOrganization => 'Folder Organization'; - @override String get folderOrganizationNone => 'No organization'; @@ -4476,20 +3125,9 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get updateAvailable => 'Update Available'; - @override - String updateNewVersion(String version) { - return 'Version $version is available'; - } - - @override - String get updateDownload => 'Download'; - @override String get updateLater => 'Later'; - @override - String get updateChangelog => 'Changelog'; - @override String get updateStartingDownload => 'Starting download...'; @@ -4520,12 +3158,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get updateDontRemind => 'Don\'t remind'; - @override - String get providerPriority => 'Provider Priority'; - - @override - String get providerPrioritySubtitle => 'Drag to reorder download providers'; - @override String get providerPriorityTitle => 'Provider Priority'; @@ -4543,13 +3175,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get providerExtension => 'Extension'; - @override - String get metadataProviderPriority => 'Metadata Provider Priority'; - - @override - String get metadataProviderPrioritySubtitle => - 'Order used when fetching track metadata'; - @override String get metadataProviderPriorityTitle => 'Metadata Priority'; @@ -4570,18 +3195,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get logTitle => 'Logs'; - @override - String get logCopy => 'Copy Logs'; - - @override - String get logClear => 'Clear Logs'; - - @override - String get logShare => 'Share Logs'; - - @override - String get logEmpty => 'No logs yet'; - @override String get logCopied => 'Logs copied to clipboard'; @@ -4606,18 +3219,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get logClearLogsMessage => 'Are you sure you want to clear all logs?'; - @override - String get logIspBlocking => 'ISP BLOCKING DETECTED'; - - @override - String get logRateLimited => 'RATE LIMITED'; - - @override - String get logNetworkError => 'NETWORK ERROR'; - - @override - String get logTrackNotFound => 'TRACK NOT FOUND'; - @override String get logFilterBySeverity => 'Filter logs by severity'; @@ -4627,48 +3228,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get logNoLogsYetSubtitle => 'Logs will appear here as you use the app'; - @override - String get logIssueSummary => 'Issue Summary'; - - @override - String get logIspBlockingDescription => - 'Your ISP may be blocking access to download services'; - - @override - String get logIspBlockingSuggestion => - 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; - - @override - String get logRateLimitedDescription => 'Too many requests to the service'; - - @override - String get logRateLimitedSuggestion => - 'Wait a few minutes before trying again'; - - @override - String get logNetworkErrorDescription => 'Connection issues detected'; - - @override - String get logNetworkErrorSuggestion => 'Check your internet connection'; - - @override - String get logTrackNotFoundDescription => - 'Some tracks could not be found on download services'; - - @override - String get logTrackNotFoundSuggestion => - 'The track may not be available in lossless quality'; - - @override - String logTotalErrors(int count) { - return 'Total errors: $count'; - } - - @override - String logAffected(String domains) { - return 'Affected: $domains'; - } - @override String logEntriesFiltered(int count) { return 'Entries ($count filtered)'; @@ -4775,9 +3334,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get appearanceLanguage => 'App Language'; - @override - String get appearanceLanguageSubtitle => 'Choose your preferred language'; - @override String get settingsAppearanceSubtitle => 'Theme, colors, display'; @@ -4799,9 +3355,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get pressBackAgainToExit => 'Press back again to exit'; - @override - String get tracksHeader => 'Tracks'; - @override String downloadAllCount(int count) { return 'Download All ($count)'; @@ -4915,11 +3468,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get trackDeleteConfirmMessage => 'This will permanently delete the downloaded file and remove it from your history.'; - @override - String trackCannotOpen(String message) { - return 'Cannot open: $message'; - } - @override String get dateToday => 'Today'; @@ -4941,18 +3489,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { return '$count months ago'; } - @override - String get concurrentSequential => 'Sequential'; - - @override - String get concurrentParallel2 => '2 Parallel'; - - @override - String get concurrentParallel3 => '3 Parallel'; - - @override - String get tapToSeeError => 'Tap to see error details'; - @override String get storeFilterAll => 'All'; @@ -4974,15 +3510,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get storeClearFilters => 'Clear filters'; - @override - String get storeNoResults => 'No extensions found'; - - @override - String get extensionProviderPriority => 'Provider Priority'; - - @override - String get extensionInstallButton => 'Install Extension'; - @override String get extensionDefaultProvider => 'Default (Deezer/Spotify)'; @@ -5133,38 +3660,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get qualityHiResFlacMaxSubtitle => '24-bit / up to 192kHz'; - @override - String get qualityLossy => 'Lossy'; - - @override - String get qualityLossyMp3Subtitle => 'MP3 320kbps (converted from FLAC)'; - - @override - String get qualityLossyOpusSubtitle => 'Opus 128kbps (converted from FLAC)'; - - @override - String get enableLossyOption => 'Enable Lossy Option'; - - @override - String get enableLossyOptionSubtitleOn => 'Lossy quality option is available'; - - @override - String get enableLossyOptionSubtitleOff => - 'Downloads FLAC then converts to lossy format'; - - @override - String get lossyFormat => 'Lossy Format'; - - @override - String get lossyFormatDescription => 'Choose the lossy format for conversion'; - - @override - String get lossyFormatMp3Subtitle => '320kbps, best compatibility'; - - @override - String get lossyFormatOpusSubtitle => - '128kbps, better quality at smaller size'; - @override String get qualityNote => 'Actual quality depends on track availability from the service'; @@ -5188,14 +3683,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get downloadUseAlbumArtistForFolders => 'Use Album Artist for folders'; - @override - String get downloadUseAlbumArtistForFoldersAlbumSubtitle => - 'Artist folders use Album Artist when available'; - - @override - String get downloadUseAlbumArtistForFoldersTrackSubtitle => - 'Artist folders use Track Artist only'; - @override String get downloadUsePrimaryArtistOnly => 'Primary artist only for folders'; @@ -5207,78 +3694,18 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get downloadUsePrimaryArtistOnlyDisabled => 'Full artist string used for folder name'; - @override - String get downloadSaveFormat => 'Save Format'; - - @override - String get downloadSelectService => 'Select Service'; - @override String get downloadSelectQuality => 'Select Quality'; @override String get downloadFrom => 'Download From'; - @override - String get downloadDefaultQualityLabel => 'Default Quality'; - - @override - String get downloadBestAvailable => 'Best available'; - - @override - String get folderNone => 'None'; - - @override - String get folderNoneSubtitle => 'Save all files directly to download folder'; - - @override - String get folderArtist => 'Artist'; - - @override - String get folderArtistSubtitle => 'Artist Name/filename'; - - @override - String get folderAlbum => 'Album'; - - @override - String get folderAlbumSubtitle => 'Album Name/filename'; - - @override - String get folderArtistAlbum => 'Artist/Album'; - - @override - String get folderArtistAlbumSubtitle => 'Artist Name/Album Name/filename'; - - @override - String get serviceTidal => 'Tidal'; - - @override - String get serviceQobuz => 'Qobuz'; - - @override - String get serviceAmazon => 'Amazon'; - - @override - String get serviceDeezer => 'Deezer'; - - @override - String get serviceSpotify => 'Spotify'; - @override String get appearanceAmoledDark => 'AMOLED Dark'; @override String get appearanceAmoledDarkSubtitle => 'Pure black background'; - @override - String get appearanceChooseAccentColor => 'Choose Accent Color'; - - @override - String get appearanceChooseTheme => 'Theme Mode'; - - @override - String get queueTitle => 'Download Queue'; - @override String get queueClearAll => 'Clear All'; @@ -5286,19 +3713,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get queueClearAllMessage => 'Are you sure you want to clear all downloads?'; - @override - String get queueExportFailed => 'Export'; - - @override - String get queueExportFailedSuccess => - 'Failed downloads exported to TXT file'; - - @override - String get queueExportFailedClear => 'Clear Failed'; - - @override - String get queueExportFailedError => 'Failed to export downloads'; - @override String get settingsAutoExportFailed => 'Auto-export failed downloads'; @@ -5319,30 +3733,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get settingsDownloadNetworkSubtitle => 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; - @override - String get queueEmpty => 'No downloads in queue'; - - @override - String get queueEmptySubtitle => 'Add tracks from the home screen'; - - @override - String get queueClearCompleted => 'Clear completed'; - - @override - String get queueDownloadFailed => 'Download Failed'; - - @override - String get queueTrackLabel => 'Track:'; - - @override - String get queueArtistLabel => 'Artist:'; - - @override - String get queueErrorLabel => 'Error:'; - - @override - String get queueUnknownError => 'Unknown error'; - @override String get albumFolderArtistAlbum => 'Artist / Album'; @@ -5389,14 +3779,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { return 'Delete $count $_temp0 from this album?\n\nThis will also delete the files from storage.'; } - @override - String get downloadedAlbumTracksHeader => 'Tracks'; - - @override - String downloadedAlbumDownloadedCount(int count) { - return '$count downloaded'; - } - @override String downloadedAlbumSelectedCount(int count) { return '$count selected'; @@ -5427,9 +3809,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { return 'Disc $discNumber'; } - @override - String get utilityFunctions => 'Utility Functions'; - @override String get recentTypeArtist => 'Artist'; @@ -5453,11 +3832,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { return 'Playlist: $name'; } - @override - String errorGeneric(String message) { - return 'Error: $message'; - } - @override String get discographyDownload => 'Download Discography'; @@ -5563,9 +3937,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get libraryTitle => 'Local Library'; - @override - String get libraryStatus => 'Library Status'; - @override String get libraryScanSettings => 'Scan Settings'; @@ -5628,11 +3999,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get libraryAboutDescription => 'Scans your existing music collection to detect duplicates when downloading. Supports FLAC, M4A, MP3, Opus, and OGG formats. Metadata is read from file tags when available.'; - @override - String libraryTracksCount(int count) { - return '$count tracks'; - } - @override String libraryLastScanned(String time) { return 'Last scanned: $time'; @@ -5712,21 +4078,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get libraryFilterFormat => 'Format'; - @override - String get libraryFilterDate => 'Date Added'; - - @override - String get libraryFilterDateToday => 'Today'; - - @override - String get libraryFilterDateWeek => 'This Week'; - - @override - String get libraryFilterDateMonth => 'This Month'; - - @override - String get libraryFilterDateYear => 'This Year'; - @override String get libraryFilterSort => 'Sort'; @@ -5736,11 +4087,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get libraryFilterSortOldest => 'Oldest'; - @override - String libraryFilterActive(int count) { - return '$count filter(s) active'; - } - @override String get timeJustNow => 'Just now'; @@ -5766,72 +4112,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { return '$_temp0'; } - @override - String get storageSwitchTitle => 'Switch Storage Mode'; - - @override - String get storageSwitchToSafTitle => 'Switch to SAF Storage?'; - - @override - String get storageSwitchToAppTitle => 'Switch to App Storage?'; - - @override - String get storageSwitchToSafMessage => - 'Your existing downloads will remain in the current location and stay accessible.\n\nNew downloads will be saved to your selected SAF folder.'; - - @override - String get storageSwitchToAppMessage => - 'Your existing downloads will remain in the current SAF location and stay accessible.\n\nNew downloads will be saved to Music/SpotiFLAC folder.'; - - @override - String get storageSwitchExistingDownloads => 'Existing Downloads'; - - @override - String storageSwitchExistingDownloadsInfo(int count, String mode) { - return '$count tracks in $mode storage'; - } - - @override - String get storageSwitchNewDownloads => 'New Downloads'; - - @override - String storageSwitchNewDownloadsLocation(String location) { - return 'Will be saved to: $location'; - } - - @override - String get storageSwitchContinue => 'Continue'; - - @override - String get storageSwitchSelectFolder => 'Select SAF Folder'; - - @override - String get storageAppStorage => 'App Storage'; - - @override - String get storageSafStorage => 'SAF Storage'; - - @override - String storageModeBadge(String mode) { - return 'Storage: $mode'; - } - - @override - String get storageStatsTitle => 'Storage Statistics'; - - @override - String storageStatsAppCount(int count) { - return '$count tracks in App Storage'; - } - - @override - String storageStatsSafCount(int count) { - return '$count tracks in SAF Storage'; - } - - @override - String get storageModeInfo => 'Your files are stored in multiple locations'; - @override String get tutorialWelcomeTitle => 'Welcome to SpotiFLAC!'; @@ -5858,18 +4138,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get tutorialSearchDesc => 'There are two easy ways to find music you want to download.'; - @override - String get tutorialSearchTip1 => - 'Paste a Spotify or Deezer URL directly in the search box'; - - @override - String get tutorialSearchTip2 => - 'Or type the song name, artist, or album to search'; - - @override - String get tutorialSearchTip3 => - 'Supports tracks, albums, playlists, and artist pages'; - @override String get tutorialDownloadTitle => 'Downloading Music'; @@ -5877,18 +4145,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get tutorialDownloadDesc => 'Downloading music is simple and fast. Here\'s how it works.'; - @override - String get tutorialDownloadTip1 => - 'Tap the download button next to any track to start downloading'; - - @override - String get tutorialDownloadTip2 => - 'Choose your preferred quality (FLAC, Hi-Res, or MP3)'; - - @override - String get tutorialDownloadTip3 => - 'Download entire albums or playlists with one tap'; - @override String get tutorialLibraryTitle => 'Your Library'; @@ -5949,9 +4205,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get tutorialReadyMessage => 'You\'re all set! Start downloading your favorite music now.'; - @override - String get tutorialExample => 'EXAMPLE'; - @override String get libraryForceFullScan => 'Force Full Scan'; @@ -6114,10 +4367,6 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get trackReEnrich => 'Re-enrich'; - @override - String get trackReEnrichSubtitle => - 'Re-embed metadata without re-downloading'; - @override String get trackReEnrichOnlineSubtitle => 'Search metadata online and embed into file'; @@ -6194,37 +4443,17 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get trackConvertFailed => 'Conversion failed'; @override - String get setupModeSelectionTitle => '选择您的模式'; + String downloadedAlbumDownloadedCount(int count) { + return '$count downloaded'; + } @override - String get setupModeSelectionDescription => '您想如何使用 SpotiFLAC?您可以稍后在设置中随时更改。'; + String get downloadUseAlbumArtistForFoldersAlbumSubtitle => + 'Artist folders use Album Artist when available'; @override - String get setupModeDownloaderTitle => '下载器'; - - @override - String get setupModeDownloaderFeature1 => '以无损 FLAC 品质下载曲目'; - - @override - String get setupModeDownloaderFeature2 => '将音乐保存到设备以供离线收听'; - - @override - String get setupModeDownloaderFeature3 => '管理您的本地音乐库'; - - @override - String get setupModeStreamingTitle => '流媒体'; - - @override - String get setupModeStreamingFeature1 => '无需下载即可即时播放曲目'; - - @override - String get setupModeStreamingFeature2 => 'Smart Queue 自动为您发现新音乐'; - - @override - String get setupModeStreamingFeature3 => '通过播放控件随时点播任意曲目'; - - @override - String get setupModeChangeableLater => '您可以随时在设置中切换模式。'; + String get downloadUseAlbumArtistForFoldersTrackSubtitle => + 'Artist folders use Track Artist only'; } /// The translations for Chinese, as used in Taiwan (`zh_TW`). @@ -6234,19 +4463,12 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get appName => 'SpotiFLAC'; - @override - String get appDescription => - 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; - @override String get navHome => 'Home'; @override String get navLibrary => 'Library'; - @override - String get navHistory => 'History'; - @override String get navSettings => 'Settings'; @@ -6256,14 +4478,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get homeTitle => 'Home'; - @override - String get homeSearchHint => 'Paste Spotify URL or search...'; - - @override - String homeSearchHintExtension(String extensionName) { - return 'Search with $extensionName...'; - } - @override String get homeSubtitle => 'Paste a Spotify link or search by name'; @@ -6273,17 +4487,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get homeRecent => '最新的'; - @override - String get historyTitle => 'History'; - - @override - String historyDownloading(int count) { - return 'Downloading ($count)'; - } - - @override - String get historyDownloaded => 'Downloaded'; - @override String get historyFilterAll => 'All'; @@ -6293,48 +4496,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get historyFilterSingles => 'Singles'; - @override - String historyTracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks', - one: '1 track', - ); - return '$_temp0'; - } - - @override - String historyAlbumsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count albums', - one: '1 album', - ); - return '$_temp0'; - } - - @override - String get historyNoDownloads => 'No download history'; - - @override - String get historyNoDownloadsSubtitle => 'Downloaded tracks will appear here'; - - @override - String get historyNoAlbums => 'No album downloads'; - - @override - String get historyNoAlbumsSubtitle => - 'Download multiple tracks from an album to see them here'; - - @override - String get historyNoSingles => 'No single downloads'; - - @override - String get historyNoSinglesSubtitle => - 'Single track downloads will appear here'; - @override String get historySearchHint => 'Search history...'; @@ -6359,27 +4520,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get downloadTitle => 'Download'; - @override - String get downloadLocation => 'Download Location'; - - @override - String get downloadLocationSubtitle => 'Choose where to save files'; - - @override - String get downloadLocationDefault => 'Default location'; - - @override - String get downloadDefaultService => 'Default Service'; - - @override - String get downloadDefaultServiceSubtitle => 'Service used for downloads'; - - @override - String get downloadDefaultQuality => 'Default Quality'; - - @override - String get downloadAskQuality => 'Ask Quality Before Download'; - @override String get downloadAskQualitySubtitle => 'Show quality picker for each download'; @@ -6390,31 +4530,9 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get downloadFolderOrganization => 'Folder Organization'; - @override - String get downloadSeparateSingles => 'Separate Singles'; - - @override - String get downloadSeparateSinglesSubtitle => - 'Put single tracks in a separate folder'; - - @override - String get qualityBest => 'Best Available'; - - @override - String get qualityFlac => 'FLAC'; - - @override - String get quality320 => '320 kbps'; - - @override - String get quality128 => '128 kbps'; - @override String get appearanceTitle => 'Appearance'; - @override - String get appearanceTheme => 'Theme'; - @override String get appearanceThemeSystem => 'System'; @@ -6430,9 +4548,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get appearanceDynamicColorSubtitle => 'Use colors from your wallpaper'; - @override - String get appearanceAccentColor => 'Accent Color'; - @override String get appearanceHistoryView => 'History View'; @@ -6445,9 +4560,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get optionsTitle => 'Options'; - @override - String get optionsSearchSource => 'Search Source'; - @override String get optionsPrimaryProvider => 'Primary Provider'; @@ -6573,18 +4685,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get extensionsTitle => 'Extensions'; - @override - String get extensionsInstalled => 'Installed Extensions'; - - @override - String get extensionsNone => 'No extensions installed'; - - @override - String get extensionsNoneSubtitle => 'Install extensions from the Store tab'; - - @override - String get extensionsEnabled => 'Enabled'; - @override String get extensionsDisabled => 'Disabled'; @@ -6601,9 +4701,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get extensionsUninstall => 'Uninstall'; - @override - String get extensionsSetAsSearch => 'Set as Search Provider'; - @override String get storeTitle => 'Extension Store'; @@ -6677,9 +4774,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get aboutSocial => 'Social'; - @override - String get aboutSupport => 'Support'; - @override String get aboutApp => 'App'; @@ -6698,13 +4792,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get aboutSjdonadoDesc => 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; - @override - String get aboutDoubleDouble => 'DoubleDouble'; - - @override - String get aboutDoubleDoubleDesc => - 'Amazing API for Amazon Music downloads. Thank you for making it free!'; - @override String get aboutDabMusic => 'DAB Music'; @@ -6723,32 +4810,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get aboutAppDescription => 'Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.'; - @override - String get albumTitle => 'Album'; - - @override - String albumTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks', - one: '1 track', - ); - return '$_temp0'; - } - - @override - String get albumDownloadAll => 'Download All'; - - @override - String get albumDownloadRemaining => 'Download Remaining'; - - @override - String get playlistTitle => 'Playlist'; - - @override - String get artistTitle => 'Artist'; - @override String get artistAlbums => 'Albums'; @@ -6758,17 +4819,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get artistCompilations => 'Compilations'; - @override - String artistReleases(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count releases', - one: '1 release', - ); - return '$_temp0'; - } - @override String get artistPopular => 'Popular'; @@ -6777,27 +4827,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { return '$count monthly listeners'; } - @override - String get trackMetadataTitle => 'Track Info'; - - @override - String get trackMetadataArtist => 'Artist'; - - @override - String get trackMetadataAlbum => 'Album'; - - @override - String get trackMetadataDuration => 'Duration'; - - @override - String get trackMetadataQuality => 'Quality'; - - @override - String get trackMetadataPath => 'File Path'; - - @override - String get trackMetadataDownloadedAt => 'Downloaded'; - @override String get trackMetadataService => 'Service'; @@ -6810,53 +4839,15 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get trackMetadataDelete => 'Delete'; - @override - String get trackMetadataRedownload => 'Re-download'; - - @override - String get trackMetadataOpenFolder => 'Open Folder'; - - @override - String get setupTitle => 'Welcome to SpotiFLAC'; - - @override - String get setupSubtitle => 'Let\'s get you started'; - - @override - String get setupStoragePermission => 'Storage Permission'; - - @override - String get setupStoragePermissionSubtitle => - 'Required to save downloaded files'; - - @override - String get setupStoragePermissionGranted => 'Permission granted'; - - @override - String get setupStoragePermissionDenied => 'Permission denied'; - @override String get setupGrantPermission => 'Grant Permission'; - @override - String get setupDownloadLocation => 'Download Location'; - - @override - String get setupChooseFolder => 'Choose Folder'; - - @override - String get setupContinue => 'Continue'; - @override String get setupSkip => 'Skip for now'; @override String get setupStorageAccessRequired => 'Storage Access Required'; - @override - String get setupStorageAccessMessage => - 'SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.'; - @override String get setupStorageAccessMessageAndroid11 => 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; @@ -6878,9 +4869,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { return '$permissionType permission is required for the best experience. You can change this later in Settings.'; } - @override - String get setupSelectDownloadFolder => 'Select Download Folder'; - @override String get setupUseDefaultFolder => 'Use Default Folder?'; @@ -6922,21 +4910,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get setupDownloadInFlac => 'Download Spotify tracks in FLAC'; - @override - String get setupStepStorage => 'Storage'; - - @override - String get setupStepNotification => 'Notification'; - - @override - String get setupStepFolder => 'Folder'; - - @override - String get setupStepSpotify => 'Spotify'; - - @override - String get setupStepPermission => 'Permission'; - @override String get setupStorageGranted => 'Storage Permission Granted!'; @@ -6953,13 +4926,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get setupNotificationEnable => 'Enable Notifications'; - @override - String get setupNotificationDescription => - 'Get notified when downloads complete or require attention.'; - - @override - String get setupFolderSelected => 'Download Folder Selected!'; - @override String get setupFolderChoose => 'Choose Download Folder'; @@ -6967,48 +4933,12 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get setupFolderDescription => 'Select a folder where your downloaded music will be saved.'; - @override - String get setupChangeFolder => 'Change Folder'; - @override String get setupSelectFolder => 'Select Folder'; - @override - String get setupSpotifyApiOptional => 'Spotify API (Optional)'; - - @override - String get setupSpotifyApiDescription => - 'Add your Spotify API credentials for better search results and access to Spotify-exclusive content.'; - - @override - String get setupUseSpotifyApi => 'Use Spotify API'; - - @override - String get setupEnterCredentialsBelow => 'Enter your credentials below'; - - @override - String get setupUsingDeezer => 'Using Deezer (no account needed)'; - - @override - String get setupEnterClientId => 'Enter Spotify Client ID'; - - @override - String get setupEnterClientSecret => 'Enter Spotify Client Secret'; - - @override - String get setupGetFreeCredentials => - 'Get your free API credentials from the Spotify Developer Dashboard.'; - @override String get setupEnableNotifications => 'Enable Notifications'; - @override - String get setupProceedToNextStep => 'You can now proceed to the next step.'; - - @override - String get setupNotificationProgressDescription => - 'You will receive download progress notifications.'; - @override String get setupNotificationBackgroundDescription => 'Get notified about download progress and completion. This helps you track downloads when the app is in background.'; @@ -7016,32 +4946,19 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get setupSkipForNow => 'Skip for now'; - @override - String get setupBack => 'Back'; - @override String get setupNext => 'Next'; @override String get setupGetStarted => 'Get Started'; - @override - String get setupSkipAndStart => 'Skip & Start'; - @override String get setupAllowAccessToManageFiles => 'Please enable \"Allow access to manage all files\" in the next screen.'; - @override - String get setupGetCredentialsFromSpotify => - 'Get credentials from developer.spotify.com'; - @override String get dialogCancel => 'Cancel'; - @override - String get dialogOk => 'OK'; - @override String get dialogSave => 'Save'; @@ -7051,21 +4968,9 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get dialogRetry => 'Retry'; - @override - String get dialogClose => 'Close'; - - @override - String get dialogYes => 'Yes'; - - @override - String get dialogNo => 'No'; - @override String get dialogClear => 'Clear'; - @override - String get dialogConfirm => 'Confirm'; - @override String get dialogDone => 'Done'; @@ -7088,28 +4993,9 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get dialogUnsavedChanges => 'You have unsaved changes. Do you want to discard them?'; - @override - String get dialogDownloadFailed => 'Download Failed'; - - @override - String get dialogTrackLabel => 'Track:'; - - @override - String get dialogArtistLabel => 'Artist:'; - - @override - String get dialogErrorLabel => 'Error:'; - @override String get dialogClearAll => 'Clear All'; - @override - String get dialogClearAllDownloads => - 'Are you sure you want to clear all downloads?'; - - @override - String get dialogRemoveFromDevice => 'Remove from device?'; - @override String get dialogRemoveExtension => 'Remove Extension'; @@ -7210,11 +5096,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get snackbarViewQueue => 'View Queue'; - @override - String snackbarFailedToLoad(String error) { - return 'Failed to load: $error'; - } - @override String snackbarUrlCopied(String platform) { return '$platform URL copied to clipboard'; @@ -7256,11 +5137,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get errorRateLimitedMessage => 'Too many requests. Please wait a moment before searching again.'; - @override - String errorFailedToLoad(String item) { - return 'Failed to load $item'; - } - @override String get errorNoTracksFound => 'No tracks found'; @@ -7269,27 +5145,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { return 'Cannot load $item: missing extension source'; } - @override - String get statusQueued => 'Queued'; - - @override - String get statusDownloading => 'Downloading'; - - @override - String get statusFinalizing => 'Finalizing'; - - @override - String get statusCompleted => 'Completed'; - - @override - String get statusFailed => 'Failed'; - - @override - String get statusSkipped => 'Skipped'; - - @override - String get statusPaused => 'Paused'; - @override String get actionPause => 'Pause'; @@ -7299,24 +5154,12 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get actionCancel => 'Cancel'; - @override - String get actionStop => 'Stop'; - - @override - String get actionSelect => 'Select'; - @override String get actionSelectAll => 'Select All'; @override String get actionDeselect => 'Deselect'; - @override - String get actionPaste => 'Paste'; - - @override - String get actionImportCsv => 'Import CSV'; - @override String get actionRemoveCredentials => 'Remove Credentials'; @@ -7331,20 +5174,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get selectionAllSelected => 'All tracks selected'; - @override - String get selectionTapToSelect => 'Tap tracks to select'; - - @override - String selectionDeleteTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Delete $count $_temp0'; - } - @override String get selectionSelectToDelete => 'Select tracks to delete'; @@ -7371,43 +5200,9 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get tooltipPlay => 'Play'; - @override - String get tooltipCancel => 'Cancel'; - - @override - String get tooltipStop => 'Stop'; - - @override - String get tooltipRetry => 'Retry'; - - @override - String get tooltipRemove => 'Remove'; - - @override - String get tooltipClear => 'Clear'; - - @override - String get tooltipPaste => 'Paste'; - @override String get filenameFormat => 'Filename Format'; - @override - String filenameFormatPreview(String preview) { - return 'Preview: $preview'; - } - - @override - String get filenameAvailablePlaceholders => 'Available placeholders:'; - - @override - String filenameHint(Object artist, Object title) { - return '$artist - $title'; - } - - @override - String get folderOrganization => 'Folder Organization'; - @override String get folderOrganizationNone => 'No organization'; @@ -7442,20 +5237,9 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get updateAvailable => 'Update Available'; - @override - String updateNewVersion(String version) { - return 'Version $version is available'; - } - - @override - String get updateDownload => 'Download'; - @override String get updateLater => 'Later'; - @override - String get updateChangelog => 'Changelog'; - @override String get updateStartingDownload => 'Starting download...'; @@ -7486,12 +5270,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get updateDontRemind => 'Don\'t remind'; - @override - String get providerPriority => 'Provider Priority'; - - @override - String get providerPrioritySubtitle => 'Drag to reorder download providers'; - @override String get providerPriorityTitle => 'Provider Priority'; @@ -7509,13 +5287,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get providerExtension => 'Extension'; - @override - String get metadataProviderPriority => 'Metadata Provider Priority'; - - @override - String get metadataProviderPrioritySubtitle => - 'Order used when fetching track metadata'; - @override String get metadataProviderPriorityTitle => 'Metadata Priority'; @@ -7536,18 +5307,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get logTitle => 'Logs'; - @override - String get logCopy => 'Copy Logs'; - - @override - String get logClear => 'Clear Logs'; - - @override - String get logShare => 'Share Logs'; - - @override - String get logEmpty => 'No logs yet'; - @override String get logCopied => 'Logs copied to clipboard'; @@ -7572,18 +5331,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get logClearLogsMessage => 'Are you sure you want to clear all logs?'; - @override - String get logIspBlocking => 'ISP BLOCKING DETECTED'; - - @override - String get logRateLimited => 'RATE LIMITED'; - - @override - String get logNetworkError => 'NETWORK ERROR'; - - @override - String get logTrackNotFound => 'TRACK NOT FOUND'; - @override String get logFilterBySeverity => 'Filter logs by severity'; @@ -7593,48 +5340,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get logNoLogsYetSubtitle => 'Logs will appear here as you use the app'; - @override - String get logIssueSummary => 'Issue Summary'; - - @override - String get logIspBlockingDescription => - 'Your ISP may be blocking access to download services'; - - @override - String get logIspBlockingSuggestion => - 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; - - @override - String get logRateLimitedDescription => 'Too many requests to the service'; - - @override - String get logRateLimitedSuggestion => - 'Wait a few minutes before trying again'; - - @override - String get logNetworkErrorDescription => 'Connection issues detected'; - - @override - String get logNetworkErrorSuggestion => 'Check your internet connection'; - - @override - String get logTrackNotFoundDescription => - 'Some tracks could not be found on download services'; - - @override - String get logTrackNotFoundSuggestion => - 'The track may not be available in lossless quality'; - - @override - String logTotalErrors(int count) { - return 'Total errors: $count'; - } - - @override - String logAffected(String domains) { - return 'Affected: $domains'; - } - @override String logEntriesFiltered(int count) { return 'Entries ($count filtered)'; @@ -7741,9 +5446,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get appearanceLanguage => 'App Language'; - @override - String get appearanceLanguageSubtitle => 'Choose your preferred language'; - @override String get settingsAppearanceSubtitle => 'Theme, colors, display'; @@ -7765,9 +5467,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get pressBackAgainToExit => 'Press back again to exit'; - @override - String get tracksHeader => 'Tracks'; - @override String downloadAllCount(int count) { return 'Download All ($count)'; @@ -7881,11 +5580,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get trackDeleteConfirmMessage => 'This will permanently delete the downloaded file and remove it from your history.'; - @override - String trackCannotOpen(String message) { - return 'Cannot open: $message'; - } - @override String get dateToday => 'Today'; @@ -7907,18 +5601,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { return '$count months ago'; } - @override - String get concurrentSequential => 'Sequential'; - - @override - String get concurrentParallel2 => '2 Parallel'; - - @override - String get concurrentParallel3 => '3 Parallel'; - - @override - String get tapToSeeError => 'Tap to see error details'; - @override String get storeFilterAll => 'All'; @@ -7940,15 +5622,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get storeClearFilters => 'Clear filters'; - @override - String get storeNoResults => 'No extensions found'; - - @override - String get extensionProviderPriority => 'Provider Priority'; - - @override - String get extensionInstallButton => 'Install Extension'; - @override String get extensionDefaultProvider => 'Default (Deezer/Spotify)'; @@ -8099,38 +5772,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get qualityHiResFlacMaxSubtitle => '24-bit / up to 192kHz'; - @override - String get qualityLossy => 'Lossy'; - - @override - String get qualityLossyMp3Subtitle => 'MP3 320kbps (converted from FLAC)'; - - @override - String get qualityLossyOpusSubtitle => 'Opus 128kbps (converted from FLAC)'; - - @override - String get enableLossyOption => 'Enable Lossy Option'; - - @override - String get enableLossyOptionSubtitleOn => 'Lossy quality option is available'; - - @override - String get enableLossyOptionSubtitleOff => - 'Downloads FLAC then converts to lossy format'; - - @override - String get lossyFormat => 'Lossy Format'; - - @override - String get lossyFormatDescription => 'Choose the lossy format for conversion'; - - @override - String get lossyFormatMp3Subtitle => '320kbps, best compatibility'; - - @override - String get lossyFormatOpusSubtitle => - '128kbps, better quality at smaller size'; - @override String get qualityNote => 'Actual quality depends on track availability from the service'; @@ -8154,14 +5795,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get downloadUseAlbumArtistForFolders => 'Use Album Artist for folders'; - @override - String get downloadUseAlbumArtistForFoldersAlbumSubtitle => - 'Artist folders use Album Artist when available'; - - @override - String get downloadUseAlbumArtistForFoldersTrackSubtitle => - 'Artist folders use Track Artist only'; - @override String get downloadUsePrimaryArtistOnly => 'Primary artist only for folders'; @@ -8173,78 +5806,18 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get downloadUsePrimaryArtistOnlyDisabled => 'Full artist string used for folder name'; - @override - String get downloadSaveFormat => 'Save Format'; - - @override - String get downloadSelectService => 'Select Service'; - @override String get downloadSelectQuality => 'Select Quality'; @override String get downloadFrom => 'Download From'; - @override - String get downloadDefaultQualityLabel => 'Default Quality'; - - @override - String get downloadBestAvailable => 'Best available'; - - @override - String get folderNone => 'None'; - - @override - String get folderNoneSubtitle => 'Save all files directly to download folder'; - - @override - String get folderArtist => 'Artist'; - - @override - String get folderArtistSubtitle => 'Artist Name/filename'; - - @override - String get folderAlbum => 'Album'; - - @override - String get folderAlbumSubtitle => 'Album Name/filename'; - - @override - String get folderArtistAlbum => 'Artist/Album'; - - @override - String get folderArtistAlbumSubtitle => 'Artist Name/Album Name/filename'; - - @override - String get serviceTidal => 'Tidal'; - - @override - String get serviceQobuz => 'Qobuz'; - - @override - String get serviceAmazon => 'Amazon'; - - @override - String get serviceDeezer => 'Deezer'; - - @override - String get serviceSpotify => 'Spotify'; - @override String get appearanceAmoledDark => 'AMOLED Dark'; @override String get appearanceAmoledDarkSubtitle => 'Pure black background'; - @override - String get appearanceChooseAccentColor => 'Choose Accent Color'; - - @override - String get appearanceChooseTheme => 'Theme Mode'; - - @override - String get queueTitle => 'Download Queue'; - @override String get queueClearAll => 'Clear All'; @@ -8252,19 +5825,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get queueClearAllMessage => 'Are you sure you want to clear all downloads?'; - @override - String get queueExportFailed => 'Export'; - - @override - String get queueExportFailedSuccess => - 'Failed downloads exported to TXT file'; - - @override - String get queueExportFailedClear => 'Clear Failed'; - - @override - String get queueExportFailedError => 'Failed to export downloads'; - @override String get settingsAutoExportFailed => 'Auto-export failed downloads'; @@ -8285,30 +5845,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get settingsDownloadNetworkSubtitle => 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; - @override - String get queueEmpty => 'No downloads in queue'; - - @override - String get queueEmptySubtitle => 'Add tracks from the home screen'; - - @override - String get queueClearCompleted => 'Clear completed'; - - @override - String get queueDownloadFailed => 'Download Failed'; - - @override - String get queueTrackLabel => 'Track:'; - - @override - String get queueArtistLabel => 'Artist:'; - - @override - String get queueErrorLabel => 'Error:'; - - @override - String get queueUnknownError => 'Unknown error'; - @override String get albumFolderArtistAlbum => 'Artist / Album'; @@ -8355,14 +5891,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { return 'Delete $count $_temp0 from this album?\n\nThis will also delete the files from storage.'; } - @override - String get downloadedAlbumTracksHeader => 'Tracks'; - - @override - String downloadedAlbumDownloadedCount(int count) { - return '$count downloaded'; - } - @override String downloadedAlbumSelectedCount(int count) { return '$count selected'; @@ -8393,9 +5921,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { return 'Disc $discNumber'; } - @override - String get utilityFunctions => 'Utility Functions'; - @override String get recentTypeArtist => 'Artist'; @@ -8419,11 +5944,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { return 'Playlist: $name'; } - @override - String errorGeneric(String message) { - return 'Error: $message'; - } - @override String get discographyDownload => 'Download Discography'; @@ -8529,9 +6049,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get libraryTitle => 'Local Library'; - @override - String get libraryStatus => 'Library Status'; - @override String get libraryScanSettings => 'Scan Settings'; @@ -8594,11 +6111,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get libraryAboutDescription => 'Scans your existing music collection to detect duplicates when downloading. Supports FLAC, M4A, MP3, Opus, and OGG formats. Metadata is read from file tags when available.'; - @override - String libraryTracksCount(int count) { - return '$count tracks'; - } - @override String libraryLastScanned(String time) { return 'Last scanned: $time'; @@ -8678,21 +6190,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get libraryFilterFormat => 'Format'; - @override - String get libraryFilterDate => 'Date Added'; - - @override - String get libraryFilterDateToday => 'Today'; - - @override - String get libraryFilterDateWeek => 'This Week'; - - @override - String get libraryFilterDateMonth => 'This Month'; - - @override - String get libraryFilterDateYear => 'This Year'; - @override String get libraryFilterSort => 'Sort'; @@ -8702,11 +6199,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get libraryFilterSortOldest => 'Oldest'; - @override - String libraryFilterActive(int count) { - return '$count filter(s) active'; - } - @override String get timeJustNow => 'Just now'; @@ -8732,72 +6224,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { return '$_temp0'; } - @override - String get storageSwitchTitle => 'Switch Storage Mode'; - - @override - String get storageSwitchToSafTitle => 'Switch to SAF Storage?'; - - @override - String get storageSwitchToAppTitle => 'Switch to App Storage?'; - - @override - String get storageSwitchToSafMessage => - 'Your existing downloads will remain in the current location and stay accessible.\n\nNew downloads will be saved to your selected SAF folder.'; - - @override - String get storageSwitchToAppMessage => - 'Your existing downloads will remain in the current SAF location and stay accessible.\n\nNew downloads will be saved to Music/SpotiFLAC folder.'; - - @override - String get storageSwitchExistingDownloads => 'Existing Downloads'; - - @override - String storageSwitchExistingDownloadsInfo(int count, String mode) { - return '$count tracks in $mode storage'; - } - - @override - String get storageSwitchNewDownloads => 'New Downloads'; - - @override - String storageSwitchNewDownloadsLocation(String location) { - return 'Will be saved to: $location'; - } - - @override - String get storageSwitchContinue => 'Continue'; - - @override - String get storageSwitchSelectFolder => 'Select SAF Folder'; - - @override - String get storageAppStorage => 'App Storage'; - - @override - String get storageSafStorage => 'SAF Storage'; - - @override - String storageModeBadge(String mode) { - return 'Storage: $mode'; - } - - @override - String get storageStatsTitle => 'Storage Statistics'; - - @override - String storageStatsAppCount(int count) { - return '$count tracks in App Storage'; - } - - @override - String storageStatsSafCount(int count) { - return '$count tracks in SAF Storage'; - } - - @override - String get storageModeInfo => 'Your files are stored in multiple locations'; - @override String get tutorialWelcomeTitle => 'Welcome to SpotiFLAC!'; @@ -8824,18 +6250,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get tutorialSearchDesc => 'There are two easy ways to find music you want to download.'; - @override - String get tutorialSearchTip1 => - 'Paste a Spotify or Deezer URL directly in the search box'; - - @override - String get tutorialSearchTip2 => - 'Or type the song name, artist, or album to search'; - - @override - String get tutorialSearchTip3 => - 'Supports tracks, albums, playlists, and artist pages'; - @override String get tutorialDownloadTitle => 'Downloading Music'; @@ -8843,18 +6257,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get tutorialDownloadDesc => 'Downloading music is simple and fast. Here\'s how it works.'; - @override - String get tutorialDownloadTip1 => - 'Tap the download button next to any track to start downloading'; - - @override - String get tutorialDownloadTip2 => - 'Choose your preferred quality (FLAC, Hi-Res, or MP3)'; - - @override - String get tutorialDownloadTip3 => - 'Download entire albums or playlists with one tap'; - @override String get tutorialLibraryTitle => 'Your Library'; @@ -8915,9 +6317,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get tutorialReadyMessage => 'You\'re all set! Start downloading your favorite music now.'; - @override - String get tutorialExample => 'EXAMPLE'; - @override String get libraryForceFullScan => 'Force Full Scan'; @@ -9080,10 +6479,6 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get trackReEnrich => 'Re-enrich'; - @override - String get trackReEnrichSubtitle => - 'Re-embed metadata without re-downloading'; - @override String get trackReEnrichOnlineSubtitle => 'Search metadata online and embed into file'; @@ -9160,35 +6555,15 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get trackConvertFailed => 'Conversion failed'; @override - String get setupModeSelectionTitle => '選擇您的模式'; + String downloadedAlbumDownloadedCount(int count) { + return '$count downloaded'; + } @override - String get setupModeSelectionDescription => '您想如何使用 SpotiFLAC?您可以稍後在設定中隨時變更。'; + String get downloadUseAlbumArtistForFoldersAlbumSubtitle => + 'Artist folders use Album Artist when available'; @override - String get setupModeDownloaderTitle => '下載器'; - - @override - String get setupModeDownloaderFeature1 => '以無損 FLAC 品質下載曲目'; - - @override - String get setupModeDownloaderFeature2 => '將音樂儲存到裝置以供離線收聽'; - - @override - String get setupModeDownloaderFeature3 => '管理您的本機音樂庫'; - - @override - String get setupModeStreamingTitle => '串流'; - - @override - String get setupModeStreamingFeature1 => '無需下載即可即時串流曲目'; - - @override - String get setupModeStreamingFeature2 => 'Smart Queue 自動為您探索新音樂'; - - @override - String get setupModeStreamingFeature3 => '透過播放控制項隨時點播任意曲目'; - - @override - String get setupModeChangeableLater => '您可以隨時在設定中切換模式。'; + String get downloadUseAlbumArtistForFoldersTrackSubtitle => + 'Artist folders use Track Artist only'; } diff --git a/lib/l10n/arb/app_de.arb b/lib/l10n/arb/app_de.arb index 869d5559..b40c1f71 100644 --- a/lib/l10n/arb/app_de.arb +++ b/lib/l10n/arb/app_de.arb @@ -5,10 +5,6 @@ "@appName": { "description": "App name - DO NOT TRANSLATE" }, - "appDescription": "Lade Spotify-Titel in verlustfreier Qualität von Tidal, Qobuz und Amazon Music herunter.", - "@appDescription": { - "description": "App description shown in about page" - }, "navHome": "Startseite", "@navHome": { "description": "Bottom navigation - Home tab" @@ -17,10 +13,6 @@ "@navLibrary": { "description": "Bottom navigation - Library tab" }, - "navHistory": "Verlauf", - "@navHistory": { - "description": "Bottom navigation - History tab (legacy)" - }, "navSettings": "Einstellungen", "@navSettings": { "description": "Bottom navigation - Settings tab" @@ -33,20 +25,6 @@ "@homeTitle": { "description": "Home screen title" }, - "homeSearchHint": "Spotify-URL einfügen oder suchen...", - "@homeSearchHint": { - "description": "Placeholder text in search box" - }, - "homeSearchHintExtension": "Mit {extensionName} suchen...", - "@homeSearchHintExtension": { - "description": "Placeholder when extension search is active", - "placeholders": { - "extensionName": { - "type": "String", - "description": "Name of the active extension" - } - } - }, "homeSubtitle": "Spotify-Link einfügen oder nach Namen suchen", "@homeSubtitle": { "description": "Subtitle shown below search box" @@ -59,24 +37,6 @@ "@homeRecent": { "description": "Section header for recent searches" }, - "historyTitle": "Verlauf", - "@historyTitle": { - "description": "History screen title" - }, - "historyDownloading": "Wird heruntergeladen ({count})", - "@historyDownloading": { - "description": "Tab showing active downloads count", - "placeholders": { - "count": { - "type": "int", - "description": "Number of active downloads" - } - } - }, - "historyDownloaded": "Heruntergeladen", - "@historyDownloaded": { - "description": "Tab showing completed downloads" - }, "historyFilterAll": "Alle", "@historyFilterAll": { "description": "Filter chip - show all items" @@ -89,48 +49,6 @@ "@historyFilterSingles": { "description": "Filter chip - show singles only" }, - "historyTracksCount": "{count, plural, =1{1 Titel} other{{count} Titel}}", - "@historyTracksCount": { - "description": "Track count with plural form", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "historyAlbumsCount": "{count, plural, =1{1 Album} other{{count} Alben}}", - "@historyAlbumsCount": { - "description": "Album count with plural form", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "historyNoDownloads": "Kein Download-Verlauf", - "@historyNoDownloads": { - "description": "Empty state title" - }, - "historyNoDownloadsSubtitle": "Heruntergeladene Titel werden hier angezeigt", - "@historyNoDownloadsSubtitle": { - "description": "Empty state subtitle" - }, - "historyNoAlbums": "Keine Album-Downloads", - "@historyNoAlbums": { - "description": "Empty state when filtering albums" - }, - "historyNoAlbumsSubtitle": "Lade mehrere Titel eines Albums herunter, um sie hier zu sehen", - "@historyNoAlbumsSubtitle": { - "description": "Empty state subtitle for albums filter" - }, - "historyNoSingles": "Keine Einzel-Downloads", - "@historyNoSingles": { - "description": "Empty state when filtering singles" - }, - "historyNoSinglesSubtitle": "Einzelne Titel-Downloads werden hier angezeigt", - "@historyNoSinglesSubtitle": { - "description": "Empty state subtitle for singles filter" - }, "historySearchHint": "Suchverlauf...", "@historySearchHint": { "description": "Search bar placeholder in history" @@ -163,34 +81,6 @@ "@downloadTitle": { "description": "Download settings page title" }, - "downloadLocation": "Download-Speicherort", - "@downloadLocation": { - "description": "Setting for download folder" - }, - "downloadLocationSubtitle": "Wähle den Speicherort der Dateien", - "@downloadLocationSubtitle": { - "description": "Subtitle for download location" - }, - "downloadLocationDefault": "Standard-Speicherort", - "@downloadLocationDefault": { - "description": "Shown when using default folder" - }, - "downloadDefaultService": "Standard-Dienst", - "@downloadDefaultService": { - "description": "Setting for preferred download service (Tidal/Qobuz/Amazon)" - }, - "downloadDefaultServiceSubtitle": "Dienst für Downloads", - "@downloadDefaultServiceSubtitle": { - "description": "Subtitle for default service" - }, - "downloadDefaultQuality": "Standard-Qualität", - "@downloadDefaultQuality": { - "description": "Setting for audio quality" - }, - "downloadAskQuality": "Qualität vor Download abfragen", - "@downloadAskQuality": { - "description": "Toggle to show quality picker" - }, "downloadAskQualitySubtitle": "Qualitätsauswahl für jeden Download anzeigen", "@downloadAskQualitySubtitle": { "description": "Subtitle for ask quality toggle" @@ -203,38 +93,10 @@ "@downloadFolderOrganization": { "description": "Setting for folder structure" }, - "downloadSeparateSingles": "Singles trennen", - "@downloadSeparateSingles": { - "description": "Toggle to separate single tracks" - }, - "downloadSeparateSinglesSubtitle": "Einzelne Titel in separatem Ordner speichern", - "@downloadSeparateSinglesSubtitle": { - "description": "Subtitle for separate singles toggle" - }, - "qualityBest": "Beste Qualität", - "@qualityBest": { - "description": "Audio quality option - highest available" - }, - "qualityFlac": "FLAC", - "@qualityFlac": { - "description": "Audio quality option - FLAC lossless" - }, - "quality320": "320 kbps", - "@quality320": { - "description": "Audio quality option - 320kbps MP3" - }, - "quality128": "128 kbps", - "@quality128": { - "description": "Audio quality option - 128kbps MP3" - }, "appearanceTitle": "Erscheinungsbild", "@appearanceTitle": { "description": "Appearance settings page title" }, - "appearanceTheme": "Design", - "@appearanceTheme": { - "description": "Theme mode setting" - }, "appearanceThemeSystem": "System", "@appearanceThemeSystem": { "description": "Follow system theme" @@ -255,10 +117,6 @@ "@appearanceDynamicColorSubtitle": { "description": "Subtitle for dynamic color" }, - "appearanceAccentColor": "Akzentfarbe", - "@appearanceAccentColor": { - "description": "Custom accent color picker" - }, "appearanceHistoryView": "Verlaufsansicht", "@appearanceHistoryView": { "description": "Layout style for history" @@ -275,10 +133,6 @@ "@optionsTitle": { "description": "Options settings page title" }, - "optionsSearchSource": "Suchquelle", - "@optionsSearchSource": { - "description": "Section for search provider settings" - }, "optionsPrimaryProvider": "Primärer Anbieter", "@optionsPrimaryProvider": { "description": "Main search provider setting" @@ -438,22 +292,6 @@ "@extensionsTitle": { "description": "Extensions page title" }, - "extensionsInstalled": "Installierte Erweiterungen", - "@extensionsInstalled": { - "description": "Section header for installed extensions" - }, - "extensionsNone": "Keine Erweiterungen installiert", - "@extensionsNone": { - "description": "Empty state title" - }, - "extensionsNoneSubtitle": "Erweiterungen aus dem Store-Tab installieren", - "@extensionsNoneSubtitle": { - "description": "Empty state subtitle" - }, - "extensionsEnabled": "Aktiviert", - "@extensionsEnabled": { - "description": "Extension status - active" - }, "extensionsDisabled": "Deaktiviert", "@extensionsDisabled": { "description": "Extension status - inactive" @@ -480,10 +318,6 @@ "@extensionsUninstall": { "description": "Uninstall extension button" }, - "extensionsSetAsSearch": "Als Suchanbieter festlegen", - "@extensionsSetAsSearch": { - "description": "Use extension for search" - }, "storeTitle": "Erweiterungs-Store", "@storeTitle": { "description": "Store screen title" @@ -580,10 +414,6 @@ "@aboutSocial": { "description": "Section for social links" }, - "aboutSupport": "Support", - "@aboutSupport": { - "description": "Section for support/donation links" - }, "aboutApp": "App", "@aboutApp": { "description": "Section for app info" @@ -604,14 +434,6 @@ "@aboutSjdonadoDesc": { "description": "Credit description for sjdonado" }, - "aboutDoubleDouble": "DoubleDouble", - "@aboutDoubleDouble": { - "description": "Name of Amazon API service - DO NOT TRANSLATE" - }, - "aboutDoubleDoubleDesc": "Wundervolle API für Amazon Musik-Downloads.", - "@aboutDoubleDoubleDesc": { - "description": "Credit for DoubleDouble API" - }, "aboutDabMusic": "DAB Music", "@aboutDabMusic": { "description": "Name of Qobuz API service - DO NOT TRANSLATE" @@ -632,35 +454,6 @@ "@aboutAppDescription": { "description": "App description in header card" }, - "albumTitle": "Album", - "@albumTitle": { - "description": "Album screen title" - }, - "albumTracks": "{count, plural,=1{1 Song} other{{count} Songs}}", - "@albumTracks": { - "description": "Album track count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "albumDownloadAll": "Alle Herunterladen", - "@albumDownloadAll": { - "description": "Button to download all tracks" - }, - "albumDownloadRemaining": "Downloads verbleibend", - "@albumDownloadRemaining": { - "description": "Button to download remaining tracks" - }, - "playlistTitle": "Playlist", - "@playlistTitle": { - "description": "Playlist screen title" - }, - "artistTitle": "Künstler", - "@artistTitle": { - "description": "Artist screen title" - }, "artistAlbums": "Alben", "@artistAlbums": { "description": "Section header for artist albums" @@ -673,15 +466,6 @@ "@artistCompilations": { "description": "Section header for compilations" }, - "artistReleases": "{count, plural,=1{1 Veröffentlichung} other{{count} Veröffentlichungen}}", - "@artistReleases": { - "description": "Artist release count", - "placeholders": { - "count": { - "type": "int" - } - } - }, "artistPopular": "Beliebt", "@artistPopular": { "description": "Section header for popular/top tracks" @@ -696,34 +480,6 @@ } } }, - "trackMetadataTitle": "Titel Info", - "@trackMetadataTitle": { - "description": "Track metadata screen title" - }, - "trackMetadataArtist": "Künstler", - "@trackMetadataArtist": { - "description": "Metadata field - artist name" - }, - "trackMetadataAlbum": "Album", - "@trackMetadataAlbum": { - "description": "Metadata field - album name" - }, - "trackMetadataDuration": "Länge", - "@trackMetadataDuration": { - "description": "Metadata field - track length" - }, - "trackMetadataQuality": "Qualität", - "@trackMetadataQuality": { - "description": "Metadata field - audio quality" - }, - "trackMetadataPath": "Dateipfad", - "@trackMetadataPath": { - "description": "Metadata field - file location" - }, - "trackMetadataDownloadedAt": "Heruntergeladen", - "@trackMetadataDownloadedAt": { - "description": "Metadata field - download date" - }, "trackMetadataService": "Anbieter", "@trackMetadataService": { "description": "Metadata field - download service used" @@ -740,54 +496,10 @@ "@trackMetadataDelete": { "description": "Action button - delete track" }, - "trackMetadataRedownload": "Erneut herunterladen", - "@trackMetadataRedownload": { - "description": "Action button - download again" - }, - "trackMetadataOpenFolder": "Ordner öffnen", - "@trackMetadataOpenFolder": { - "description": "Action button - open containing folder" - }, - "setupTitle": "Willkommen bei SpotiFLAC", - "@setupTitle": { - "description": "Setup wizard title" - }, - "setupSubtitle": "Los geht's", - "@setupSubtitle": { - "description": "Setup wizard subtitle" - }, - "setupStoragePermission": "Speicherberechtigung", - "@setupStoragePermission": { - "description": "Storage permission step title" - }, - "setupStoragePermissionSubtitle": "Benötigt um heruntergeladene Dateien zu Speichern", - "@setupStoragePermissionSubtitle": { - "description": "Explanation for storage permission" - }, - "setupStoragePermissionGranted": "Berechtigung erteilt", - "@setupStoragePermissionGranted": { - "description": "Status when permission granted" - }, - "setupStoragePermissionDenied": "Berechtigung verweigert", - "@setupStoragePermissionDenied": { - "description": "Status when permission denied" - }, "setupGrantPermission": "Berechtigung erlauben", "@setupGrantPermission": { "description": "Button to request permission" }, - "setupDownloadLocation": "Speicherort", - "@setupDownloadLocation": { - "description": "Download folder step title" - }, - "setupChooseFolder": "Ordner wählen", - "@setupChooseFolder": { - "description": "Button to pick folder" - }, - "setupContinue": "Fortfahren", - "@setupContinue": { - "description": "Continue to next step button" - }, "setupSkip": "Vorerst überspringen", "@setupSkip": { "description": "Skip current step button" @@ -796,10 +508,6 @@ "@setupStorageAccessRequired": { "description": "Title when storage access needed" }, - "setupStorageAccessMessage": "SpotiFLAC benötigt die Berechtigung \"Auf alle Dateien zugreifen\", um Musikdateien in deinen gewählten Ordner zu speichern.", - "@setupStorageAccessMessage": { - "description": "Explanation for storage access" - }, "setupStorageAccessMessageAndroid11": "Android 11+ benötigt die Berechtigung „Auf alle Dateien“, um Dateien im ausgewählten Download-Ordner zu speichern.", "@setupStorageAccessMessageAndroid11": { "description": "Android 11+ specific explanation" @@ -831,10 +539,6 @@ } } }, - "setupSelectDownloadFolder": "Wähle Download-Ordner aus", - "@setupSelectDownloadFolder": { - "description": "Folder selection step title" - }, "setupUseDefaultFolder": "Als Standardordner verwenden?", "@setupUseDefaultFolder": { "description": "Dialog title for default folder" @@ -883,26 +587,6 @@ "@setupDownloadInFlac": { "description": "App tagline in setup" }, - "setupStepStorage": "Speicherort", - "@setupStepStorage": { - "description": "Setup step indicator - storage" - }, - "setupStepNotification": "Benachrichtigung", - "@setupStepNotification": { - "description": "Setup step indicator - notification" - }, - "setupStepFolder": "Ordner", - "@setupStepFolder": { - "description": "Setup step indicator - folder" - }, - "setupStepSpotify": "Spotify", - "@setupStepSpotify": { - "description": "Setup step indicator - Spotify API" - }, - "setupStepPermission": "Berechtigung", - "@setupStepPermission": { - "description": "Setup step indicator - permission" - }, "setupStorageGranted": "Speicherberechtigung erlaubt!", "@setupStorageGranted": { "description": "Success message for storage permission" @@ -923,14 +607,6 @@ "@setupNotificationEnable": { "description": "Button to enable notifications" }, - "setupNotificationDescription": "Benachrichtigt werden, wenn Downloads abgeschlossen sind.", - "@setupNotificationDescription": { - "description": "Explanation for notifications" - }, - "setupFolderSelected": "Download Ordner ausgewählt!", - "@setupFolderSelected": { - "description": "Success message for folder selection" - }, "setupFolderChoose": "Speicherort auwählen", "@setupFolderChoose": { "description": "Button to choose folder" @@ -939,58 +615,14 @@ "@setupFolderDescription": { "description": "Explanation for folder selection" }, - "setupChangeFolder": "Ordner ändern", - "@setupChangeFolder": { - "description": "Button to change selected folder" - }, "setupSelectFolder": "Ordner wählen", "@setupSelectFolder": { "description": "Button to select folder" }, - "setupSpotifyApiOptional": "Spotify-API (optional)", - "@setupSpotifyApiOptional": { - "description": "Spotify API step title" - }, - "setupSpotifyApiDescription": "Füge deine Spotify-API-Zugangsdaten für bessere Suchergebnisse und den Zugriff auf Spotify-exklusive Inhalte hinzu.", - "@setupSpotifyApiDescription": { - "description": "Explanation for Spotify API" - }, - "setupUseSpotifyApi": "Spotify-API verwenden", - "@setupUseSpotifyApi": { - "description": "Toggle to enable Spotify API" - }, - "setupEnterCredentialsBelow": "Gib deine Anmeldedaten unten ein", - "@setupEnterCredentialsBelow": { - "description": "Prompt to enter credentials" - }, - "setupUsingDeezer": "Deezer verwenden (kein Konto erforderlich)", - "@setupUsingDeezer": { - "description": "Status when using Deezer" - }, - "setupEnterClientId": "Spotify-Client-ID eingeben", - "@setupEnterClientId": { - "description": "Placeholder for client ID field" - }, - "setupEnterClientSecret": "Spotify Client-Secret eingeben", - "@setupEnterClientSecret": { - "description": "Placeholder for client secret field" - }, - "setupGetFreeCredentials": "Hole dir kostenlose API-Anmeldeinformationen aus dem Spotify-Entwickler-Dashboard.", - "@setupGetFreeCredentials": { - "description": "Info about getting Spotify credentials" - }, "setupEnableNotifications": "Benachrichtigungen aktivieren", "@setupEnableNotifications": { "description": "Button to enable notifications" }, - "setupProceedToNextStep": "Du kannst mit dem nächsten Schritt fortfahren.", - "@setupProceedToNextStep": { - "description": "Message after completing a step" - }, - "setupNotificationProgressDescription": "Du erhältst Benachrichtigungen über den Download-Fortschritt.", - "@setupNotificationProgressDescription": { - "description": "Info about notification usage" - }, "setupNotificationBackgroundDescription": "Werde benachrichtigt über Download-Fortschritt und -Fertigstellung. Dies hilft Ihnen, Downloads zu verfolgen, wenn die App im Hintergrund ist.", "@setupNotificationBackgroundDescription": { "description": "Detailed notification explanation" @@ -999,10 +631,6 @@ "@setupSkipForNow": { "description": "Skip button text" }, - "setupBack": "Zurück", - "@setupBack": { - "description": "Back button text" - }, "setupNext": "Weiter", "@setupNext": { "description": "Next button text" @@ -1011,26 +639,14 @@ "@setupGetStarted": { "description": "Final setup button" }, - "setupSkipAndStart": "Überspringen & Starten", - "@setupSkipAndStart": { - "description": "Skip setup and start app" - }, "setupAllowAccessToManageFiles": "Bitte aktiviere \"Zugriff auf alle Dateien erlauben\" auf dem nächsten Bildschirm.", "@setupAllowAccessToManageFiles": { "description": "Instruction for file access permission" }, - "setupGetCredentialsFromSpotify": "Zugangsdaten von developer.spotify.com erhalten", - "@setupGetCredentialsFromSpotify": { - "description": "Link text for Spotify developer portal" - }, "dialogCancel": "Abbrechen", "@dialogCancel": { "description": "Dialog button - cancel action" }, - "dialogOk": "OK", - "@dialogOk": { - "description": "Dialog button - confirm/acknowledge" - }, "dialogSave": "Speichern", "@dialogSave": { "description": "Dialog button - save changes" @@ -1043,26 +659,10 @@ "@dialogRetry": { "description": "Dialog button - retry action" }, - "dialogClose": "Schließen", - "@dialogClose": { - "description": "Dialog button - close dialog" - }, - "dialogYes": "Ja", - "@dialogYes": { - "description": "Dialog button - confirm yes" - }, - "dialogNo": "Nein", - "@dialogNo": { - "description": "Dialog button - confirm no" - }, "dialogClear": "Leeren", "@dialogClear": { "description": "Dialog button - clear items" }, - "dialogConfirm": "Bestätigen", - "@dialogConfirm": { - "description": "Dialog button - confirm action" - }, "dialogDone": "Fertig", "@dialogDone": { "description": "Dialog button - action completed" @@ -1091,34 +691,10 @@ "@dialogUnsavedChanges": { "description": "Dialog message - unsaved changes" }, - "dialogDownloadFailed": "Download fehlgeschlagen", - "@dialogDownloadFailed": { - "description": "Dialog title - download error" - }, - "dialogTrackLabel": "Titel:", - "@dialogTrackLabel": { - "description": "Label for track name in error dialog" - }, - "dialogArtistLabel": "Künstler:", - "@dialogArtistLabel": { - "description": "Label for artist name in error dialog" - }, - "dialogErrorLabel": "Fehler:", - "@dialogErrorLabel": { - "description": "Label for error message" - }, "dialogClearAll": "Alles löschen", "@dialogClearAll": { "description": "Dialog title - clear all items" }, - "dialogClearAllDownloads": "Bist du dir sicher, dass du alle Downloads löschen möchten?", - "@dialogClearAllDownloads": { - "description": "Dialog message - clear downloads confirmation" - }, - "dialogRemoveFromDevice": "Vom Gerät entfernen?", - "@dialogRemoveFromDevice": { - "description": "Dialog title - delete file confirmation" - }, "dialogRemoveExtension": "Erweiterung entfernen", "@dialogRemoveExtension": { "description": "Dialog title - uninstall extension" @@ -1257,15 +833,6 @@ "@snackbarViewQueue": { "description": "Snackbar action - view download queue" }, - "snackbarFailedToLoad": "Fehler beim Laden: {error}", - "@snackbarFailedToLoad": { - "description": "Snackbar - loading error", - "placeholders": { - "error": { - "type": "String" - } - } - }, "snackbarUrlCopied": "{platform} URL in die Zwischenablage kopiert", "@snackbarUrlCopied": { "description": "Snackbar - URL copied", @@ -1326,16 +893,6 @@ "@errorRateLimitedMessage": { "description": "Error message - rate limit explanation" }, - "errorFailedToLoad": "Fehler beim Laden von: {item}", - "@errorFailedToLoad": { - "description": "Error message - loading failed", - "placeholders": { - "item": { - "type": "String", - "description": "Item that failed to load (album/playlist/etc)" - } - } - }, "errorNoTracksFound": "Keine Titel gefunden", "@errorNoTracksFound": { "description": "Error - search returned no results" @@ -1349,34 +906,6 @@ } } }, - "statusQueued": "In der Warteschlange", - "@statusQueued": { - "description": "Download status - waiting in queue" - }, - "statusDownloading": "Wird heruntergeladen", - "@statusDownloading": { - "description": "Download status - in progress" - }, - "statusFinalizing": "Wird fertiggestellt", - "@statusFinalizing": { - "description": "Download status - writing metadata" - }, - "statusCompleted": "Beendet", - "@statusCompleted": { - "description": "Download status - finished" - }, - "statusFailed": "Fehlgeschlagen", - "@statusFailed": { - "description": "Download status - error occurred" - }, - "statusSkipped": "Übersprungen", - "@statusSkipped": { - "description": "Download status - already exists" - }, - "statusPaused": "Pausiert", - "@statusPaused": { - "description": "Download status - paused" - }, "actionPause": "Pause", "@actionPause": { "description": "Action button - pause download" @@ -1389,14 +918,6 @@ "@actionCancel": { "description": "Action button - cancel operation" }, - "actionStop": "Beenden", - "@actionStop": { - "description": "Action button - stop operation" - }, - "actionSelect": "Wähle", - "@actionSelect": { - "description": "Action button - enter selection mode" - }, "actionSelectAll": "Alles Auswählen", "@actionSelectAll": { "description": "Action button - select all items" @@ -1405,14 +926,6 @@ "@actionDeselect": { "description": "Action button - deselect all" }, - "actionPaste": "Einfügen", - "@actionPaste": { - "description": "Action button - paste from clipboard" - }, - "actionImportCsv": "CSV-Datei importieren", - "@actionImportCsv": { - "description": "Action button - import CSV file" - }, "actionRemoveCredentials": "Anmeldedaten entfernen", "@actionRemoveCredentials": { "description": "Action button - delete Spotify credentials" @@ -1434,19 +947,6 @@ "@selectionAllSelected": { "description": "Status - all items selected" }, - "selectionTapToSelect": "Tippe auf Titel zum Auswählen", - "@selectionTapToSelect": { - "description": "Hint - how to select items" - }, - "selectionDeleteTracks": "Lösche {count} {count, plural, one {Titel}other{Titel}}", - "@selectionDeleteTracks": { - "description": "Delete button with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, "selectionSelectToDelete": "Titel zum Löschen auswählen", "@selectionSelectToDelete": { "description": "Placeholder when nothing selected" @@ -1487,55 +987,10 @@ "@tooltipPlay": { "description": "Tooltip - play button" }, - "tooltipCancel": "Abbrechen", - "@tooltipCancel": { - "description": "Tooltip - cancel button" - }, - "tooltipStop": "Beenden", - "@tooltipStop": { - "description": "Tooltip - stop button" - }, - "tooltipRetry": "Wiederholen", - "@tooltipRetry": { - "description": "Tooltip - retry button" - }, - "tooltipRemove": "Entfernen", - "@tooltipRemove": { - "description": "Tooltip - remove button" - }, - "tooltipClear": "Leeren", - "@tooltipClear": { - "description": "Tooltip - clear button" - }, - "tooltipPaste": "Einfügen", - "@tooltipPaste": { - "description": "Tooltip - paste button" - }, "filenameFormat": "Dateinamenformat", "@filenameFormat": { "description": "Setting title - filename pattern" }, - "filenameFormatPreview": "Vorschau: {preview}", - "@filenameFormatPreview": { - "description": "Preview of filename pattern", - "placeholders": { - "preview": { - "type": "String" - } - } - }, - "filenameAvailablePlaceholders": "Verfügbare Platzhalter:", - "@filenameAvailablePlaceholders": { - "description": "Label for placeholder list" - }, - "filenameHint": "{artist} - {title}", - "@filenameHint": { - "description": "Default filename format hint" - }, - "folderOrganization": "Ordnerstruktur", - "@folderOrganization": { - "description": "Setting title - folder structure" - }, "folderOrganizationNone": "Keine Organisation", "@folderOrganizationNone": { "description": "Folder option - flat structure" @@ -1576,27 +1031,10 @@ "@updateAvailable": { "description": "Update dialog title" }, - "updateNewVersion": "Version {version} ist verfügbar", - "@updateNewVersion": { - "description": "Update available message", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "updateDownload": "Herunterladen", - "@updateDownload": { - "description": "Update button - download update" - }, "updateLater": "Später", "@updateLater": { "description": "Update button - dismiss" }, - "updateChangelog": "Änderungsverlauf", - "@updateChangelog": { - "description": "Link to changelog" - }, "updateStartingDownload": "Download wird gestartet...", "@updateStartingDownload": { "description": "Update status - initializing" @@ -1637,14 +1075,6 @@ "@updateDontRemind": { "description": "Update button - skip this version" }, - "providerPriority": "Anbieterpriorität", - "@providerPriority": { - "description": "Setting title - download provider order" - }, - "providerPrioritySubtitle": "Ziehen, um Download-Anbieter neu anzuordnen", - "@providerPrioritySubtitle": { - "description": "Subtitle for provider priority" - }, "providerPriorityTitle": "Anbieterpriorität", "@providerPriorityTitle": { "description": "Provider priority page title" @@ -1665,14 +1095,6 @@ "@providerExtension": { "description": "Label for extension-provided providers" }, - "metadataProviderPriority": "Priorität des Metadaten-Anbieters", - "@metadataProviderPriority": { - "description": "Setting title - metadata provider order" - }, - "metadataProviderPrioritySubtitle": "Reihenfolge beim Abrufen von Titelmetadaten", - "@metadataProviderPrioritySubtitle": { - "description": "Subtitle for metadata priority" - }, "metadataProviderPriorityTitle": "Metadaten Priorität", "@metadataProviderPriorityTitle": { "description": "Metadata priority page title" @@ -1697,22 +1119,6 @@ "@logTitle": { "description": "Logs screen title" }, - "logCopy": "Protokolle kopieren", - "@logCopy": { - "description": "Action - copy logs to clipboard" - }, - "logClear": "Protokolle löschen", - "@logClear": { - "description": "Action - delete all logs" - }, - "logShare": "Protokolle teilen", - "@logShare": { - "description": "Action - share logs file" - }, - "logEmpty": "Keine Protokolle bisher", - "@logEmpty": { - "description": "Empty state title" - }, "logCopied": "Protokolle in Zwischenablage kopiert", "@logCopied": { "description": "Snackbar - logs copied" @@ -1745,22 +1151,6 @@ "@logClearLogsMessage": { "description": "Clear logs confirmation message" }, - "logIspBlocking": "ISP BLOCKIERUNG ERKANNT", - "@logIspBlocking": { - "description": "Error category - ISP blocking" - }, - "logRateLimited": "LIMIT ERKANNT", - "@logRateLimited": { - "description": "Error category - rate limiting" - }, - "logNetworkError": "NETZWERKFEHLER", - "@logNetworkError": { - "description": "Error category - network issues" - }, - "logTrackNotFound": "TITEL NICHT GEFUNDEN", - "@logTrackNotFound": { - "description": "Error category - missing tracks" - }, "logFilterBySeverity": "Protokolle nach Schweregrad filtern", "@logFilterBySeverity": { "description": "Filter dialog title" @@ -1773,60 +1163,6 @@ "@logNoLogsYetSubtitle": { "description": "Empty state subtitle" }, - "logIssueSummary": "Problemübersicht", - "@logIssueSummary": { - "description": "Section header for error summary" - }, - "logIspBlockingDescription": "Ihr ISP blockiert möglicherweise den Zugriff auf den Download Dienst", - "@logIspBlockingDescription": { - "description": "ISP blocking explanation" - }, - "logIspBlockingSuggestion": "Versuche es einem VPN oder ändere DNS auf 1.1.1.1 oder 8.8.8.8", - "@logIspBlockingSuggestion": { - "description": "ISP blocking fix suggestion" - }, - "logRateLimitedDescription": "Zu viele Anfragen an den Dienst", - "@logRateLimitedDescription": { - "description": "Rate limit explanation" - }, - "logRateLimitedSuggestion": "Warte ein paar Minuten, bevor du es erneut versuchst", - "@logRateLimitedSuggestion": { - "description": "Rate limit fix suggestion" - }, - "logNetworkErrorDescription": "Verbindungsprobleme erkannt", - "@logNetworkErrorDescription": { - "description": "Network error explanation" - }, - "logNetworkErrorSuggestion": "Überprüfe deine Internetverbindung", - "@logNetworkErrorSuggestion": { - "description": "Network error fix suggestion" - }, - "logTrackNotFoundDescription": "Einige Titel konnten auf Download-Diensten nicht gefunden werden", - "@logTrackNotFoundDescription": { - "description": "Track not found explanation" - }, - "logTrackNotFoundSuggestion": "Der Titel ist möglicherweise nicht in verlustfreier Qualität verfügbar", - "@logTrackNotFoundSuggestion": { - "description": "Track not found explanation" - }, - "logTotalErrors": "Gesamte Fehler: {count}", - "@logTotalErrors": { - "description": "Error count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "logAffected": "Betroffen: {domains}", - "@logAffected": { - "description": "Affected domains display", - "placeholders": { - "domains": { - "type": "String" - } - } - }, "logEntriesFiltered": "Einträge ({count} gefiltert)", "@logEntriesFiltered": { "description": "Log count with filter active", @@ -1969,10 +1305,6 @@ "@appearanceLanguage": { "description": "Language setting title" }, - "appearanceLanguageSubtitle": "Choose your preferred language", - "@appearanceLanguageSubtitle": { - "description": "Language setting subtitle" - }, "settingsAppearanceSubtitle": "Theme, colors, display", "@settingsAppearanceSubtitle": { "description": "Appearance settings description" @@ -2001,10 +1333,6 @@ "@pressBackAgainToExit": { "description": "Exit confirmation message" }, - "tracksHeader": "Tracks", - "@tracksHeader": { - "description": "Section header for track list" - }, "downloadAllCount": "Download All ({count})", "@downloadAllCount": { "description": "Download all button with count", @@ -2151,15 +1479,6 @@ "@trackDeleteConfirmMessage": { "description": "Delete confirmation message" }, - "trackCannotOpen": "Cannot open: {message}", - "@trackCannotOpen": { - "description": "Error opening file", - "placeholders": { - "message": { - "type": "String" - } - } - }, "dateToday": "Today", "@dateToday": { "description": "Relative date - today" @@ -2195,22 +1514,6 @@ } } }, - "concurrentSequential": "Sequential", - "@concurrentSequential": { - "description": "Download mode - one at a time" - }, - "concurrentParallel2": "2 Parallel", - "@concurrentParallel2": { - "description": "Download mode - 2 simultaneous" - }, - "concurrentParallel3": "3 Parallel", - "@concurrentParallel3": { - "description": "Download mode - 3 simultaneous" - }, - "tapToSeeError": "Tap to see error details", - "@tapToSeeError": { - "description": "Tooltip for failed download" - }, "storeFilterAll": "All", "@storeFilterAll": { "description": "Store filter - all extensions" @@ -2239,18 +1542,6 @@ "@storeClearFilters": { "description": "Button to clear all filters" }, - "storeNoResults": "No extensions found", - "@storeNoResults": { - "description": "Empty state when no extensions match filters" - }, - "extensionProviderPriority": "Provider Priority", - "@extensionProviderPriority": { - "description": "Extension capability - provider priority" - }, - "extensionInstallButton": "Install Extension", - "@extensionInstallButton": { - "description": "Button to install extension" - }, "extensionDefaultProvider": "Default (Deezer/Spotify)", "@extensionDefaultProvider": { "description": "Default search provider option" @@ -2450,46 +1741,6 @@ "@qualityHiResFlacMaxSubtitle": { "description": "Technical spec for hi-res max" }, - "qualityLossy": "Lossy", - "@qualityLossy": { - "description": "Quality option - lossy format (MP3/Opus)" - }, - "qualityLossyMp3Subtitle": "MP3 320kbps (converted from FLAC)", - "@qualityLossyMp3Subtitle": { - "description": "Technical spec for lossy MP3" - }, - "qualityLossyOpusSubtitle": "Opus 128kbps (converted from FLAC)", - "@qualityLossyOpusSubtitle": { - "description": "Technical spec for lossy Opus" - }, - "enableLossyOption": "Enable Lossy Option", - "@enableLossyOption": { - "description": "Setting - enable lossy quality option" - }, - "enableLossyOptionSubtitleOn": "Lossy quality option is available", - "@enableLossyOptionSubtitleOn": { - "description": "Subtitle when lossy is enabled" - }, - "enableLossyOptionSubtitleOff": "Downloads FLAC then converts to lossy format", - "@enableLossyOptionSubtitleOff": { - "description": "Subtitle when lossy is disabled" - }, - "lossyFormat": "Lossy Format", - "@lossyFormat": { - "description": "Setting - choose lossy format" - }, - "lossyFormatDescription": "Choose the lossy format for conversion", - "@lossyFormatDescription": { - "description": "Description for lossy format picker" - }, - "lossyFormatMp3Subtitle": "320kbps, best compatibility", - "@lossyFormatMp3Subtitle": { - "description": "MP3 format description" - }, - "lossyFormatOpusSubtitle": "128kbps, better quality at smaller size", - "@lossyFormatOpusSubtitle": { - "description": "Opus format description" - }, "qualityNote": "Actual quality depends on track availability from the service", "@qualityNote": { "description": "Note about quality availability" @@ -2518,14 +1769,6 @@ "@downloadUseAlbumArtistForFolders": { "description": "Setting - choose whether artist folders use Album Artist or Track Artist" }, - "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Artist folders use Album Artist when available", - "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { - "description": "Subtitle when Album Artist is used for folder naming" - }, - "downloadUseAlbumArtistForFoldersTrackSubtitle": "Artist folders use Track Artist only", - "@downloadUseAlbumArtistForFoldersTrackSubtitle": { - "description": "Subtitle when Track Artist is used for folder naming" - }, "downloadUsePrimaryArtistOnly": "Primary artist only for folders", "@downloadUsePrimaryArtistOnly": { "description": "Setting - strip featured artists from folder name" @@ -2538,14 +1781,6 @@ "@downloadUsePrimaryArtistOnlyDisabled": { "description": "Subtitle when primary artist only is disabled" }, - "downloadSaveFormat": "Save Format", - "@downloadSaveFormat": { - "description": "Setting - output file format" - }, - "downloadSelectService": "Select Service", - "@downloadSelectService": { - "description": "Dialog title - choose download service" - }, "downloadSelectQuality": "Select Quality", "@downloadSelectQuality": { "description": "Dialog title - choose audio quality" @@ -2554,66 +1789,6 @@ "@downloadFrom": { "description": "Label - download source" }, - "downloadDefaultQualityLabel": "Default Quality", - "@downloadDefaultQualityLabel": { - "description": "Label - default quality setting" - }, - "downloadBestAvailable": "Best available", - "@downloadBestAvailable": { - "description": "Quality option - highest available" - }, - "folderNone": "None", - "@folderNone": { - "description": "Folder option - no organization" - }, - "folderNoneSubtitle": "Save all files directly to download folder", - "@folderNoneSubtitle": { - "description": "Subtitle for no folder organization" - }, - "folderArtist": "Artist", - "@folderArtist": { - "description": "Folder option - by artist" - }, - "folderArtistSubtitle": "Artist Name/filename", - "@folderArtistSubtitle": { - "description": "Folder structure example" - }, - "folderAlbum": "Album", - "@folderAlbum": { - "description": "Folder option - by album" - }, - "folderAlbumSubtitle": "Album Name/filename", - "@folderAlbumSubtitle": { - "description": "Folder structure example" - }, - "folderArtistAlbum": "Artist/Album", - "@folderArtistAlbum": { - "description": "Folder option - nested" - }, - "folderArtistAlbumSubtitle": "Artist Name/Album Name/filename", - "@folderArtistAlbumSubtitle": { - "description": "Folder structure example" - }, - "serviceTidal": "Tidal", - "@serviceTidal": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceQobuz": "Qobuz", - "@serviceQobuz": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceAmazon": "Amazon", - "@serviceAmazon": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceDeezer": "Deezer", - "@serviceDeezer": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceSpotify": "Spotify", - "@serviceSpotify": { - "description": "Service name - DO NOT TRANSLATE" - }, "appearanceAmoledDark": "AMOLED Dark", "@appearanceAmoledDark": { "description": "Theme option - pure black" @@ -2622,18 +1797,6 @@ "@appearanceAmoledDarkSubtitle": { "description": "Subtitle for AMOLED dark" }, - "appearanceChooseAccentColor": "Choose Accent Color", - "@appearanceChooseAccentColor": { - "description": "Color picker dialog title" - }, - "appearanceChooseTheme": "Theme Mode", - "@appearanceChooseTheme": { - "description": "Theme picker dialog title" - }, - "queueTitle": "Download Queue", - "@queueTitle": { - "description": "Queue screen title" - }, "queueClearAll": "Clear All", "@queueClearAll": { "description": "Button - clear all queue items" @@ -2642,22 +1805,6 @@ "@queueClearAllMessage": { "description": "Clear queue confirmation" }, - "queueExportFailed": "Export", - "@queueExportFailed": { - "description": "Button - export failed downloads to TXT" - }, - "queueExportFailedSuccess": "Failed downloads exported to TXT file", - "@queueExportFailedSuccess": { - "description": "Success message after exporting failed downloads" - }, - "queueExportFailedClear": "Clear Failed", - "@queueExportFailedClear": { - "description": "Action to clear failed downloads after export" - }, - "queueExportFailedError": "Failed to export downloads", - "@queueExportFailedError": { - "description": "Error message when export fails" - }, "settingsAutoExportFailed": "Auto-export failed downloads", "@settingsAutoExportFailed": { "description": "Setting toggle for auto-export" @@ -2682,38 +1829,6 @@ "@settingsDownloadNetworkSubtitle": { "description": "Subtitle explaining network preference" }, - "queueEmpty": "No downloads in queue", - "@queueEmpty": { - "description": "Empty queue state title" - }, - "queueEmptySubtitle": "Add tracks from the home screen", - "@queueEmptySubtitle": { - "description": "Empty queue state subtitle" - }, - "queueClearCompleted": "Clear completed", - "@queueClearCompleted": { - "description": "Button - clear finished downloads" - }, - "queueDownloadFailed": "Download Failed", - "@queueDownloadFailed": { - "description": "Error dialog title" - }, - "queueTrackLabel": "Track:", - "@queueTrackLabel": { - "description": "Label in error dialog" - }, - "queueArtistLabel": "Artist:", - "@queueArtistLabel": { - "description": "Label in error dialog" - }, - "queueErrorLabel": "Error:", - "@queueErrorLabel": { - "description": "Label in error dialog" - }, - "queueUnknownError": "Unknown error", - "@queueUnknownError": { - "description": "Fallback error message" - }, "albumFolderArtistAlbum": "Artist / Album", "@albumFolderArtistAlbum": { "description": "Album folder option" @@ -2767,19 +1882,6 @@ } } }, - "downloadedAlbumTracksHeader": "Tracks", - "@downloadedAlbumTracksHeader": { - "description": "Section header for tracks" - }, - "downloadedAlbumDownloadedCount": "{count} downloaded", - "@downloadedAlbumDownloadedCount": { - "description": "Downloaded tracks count badge", - "placeholders": { - "count": { - "type": "int" - } - } - }, "downloadedAlbumSelectedCount": "{count} selected", "@downloadedAlbumSelectedCount": { "description": "Selection count indicator", @@ -2820,10 +1922,6 @@ } } }, - "utilityFunctions": "Utility Functions", - "@utilityFunctions": { - "description": "Extension capability - utility functions" - }, "recentTypeArtist": "Artist", "@recentTypeArtist": { "description": "Recent access item type - artist" @@ -2858,16 +1956,6 @@ } } }, - "errorGeneric": "Error: {message}", - "@errorGeneric": { - "description": "Generic error message format", - "placeholders": { - "message": { - "type": "String", - "description": "Error message" - } - } - }, "discographyDownload": "Download Discography", "@discographyDownload": { "description": "Button - download artist discography" @@ -3034,10 +2122,6 @@ "@libraryTitle": { "description": "Library settings page title" }, - "libraryStatus": "Library Status", - "@libraryStatus": { - "description": "Section header for library status" - }, "libraryScanSettings": "Scan Settings", "@libraryScanSettings": { "description": "Section header for scan settings" @@ -3114,15 +2198,6 @@ "@libraryAboutDescription": { "description": "Description of local library feature" }, - "libraryTracksCount": "{count} tracks", - "@libraryTracksCount": { - "description": "Track count in library", - "placeholders": { - "count": { - "type": "int" - } - } - }, "libraryLastScanned": "Last scanned: {time}", "@libraryLastScanned": { "description": "Last scan time display", @@ -3237,26 +2312,6 @@ "@libraryFilterFormat": { "description": "Filter section - file format" }, - "libraryFilterDate": "Date Added", - "@libraryFilterDate": { - "description": "Filter section - date range" - }, - "libraryFilterDateToday": "Today", - "@libraryFilterDateToday": { - "description": "Filter option - today only" - }, - "libraryFilterDateWeek": "This Week", - "@libraryFilterDateWeek": { - "description": "Filter option - this week" - }, - "libraryFilterDateMonth": "This Month", - "@libraryFilterDateMonth": { - "description": "Filter option - this month" - }, - "libraryFilterDateYear": "This Year", - "@libraryFilterDateYear": { - "description": "Filter option - this year" - }, "libraryFilterSort": "Sort", "@libraryFilterSort": { "description": "Filter section - sort order" @@ -3269,15 +2324,6 @@ "@libraryFilterSortOldest": { "description": "Sort option - oldest first" }, - "libraryFilterActive": "{count} filter(s) active", - "@libraryFilterActive": { - "description": "Badge showing number of active filters", - "placeholders": { - "count": { - "type": "int" - } - } - }, "timeJustNow": "Just now", "@timeJustNow": { "description": "Relative time - less than a minute ago" @@ -3300,106 +2346,6 @@ } } }, - "storageSwitchTitle": "Switch Storage Mode", - "@storageSwitchTitle": { - "description": "Dialog title when switching storage mode" - }, - "storageSwitchToSafTitle": "Switch to SAF Storage?", - "@storageSwitchToSafTitle": { - "description": "Dialog title when switching to SAF" - }, - "storageSwitchToAppTitle": "Switch to App Storage?", - "@storageSwitchToAppTitle": { - "description": "Dialog title when switching to app storage" - }, - "storageSwitchToSafMessage": "Your existing downloads will remain in the current location and stay accessible.\n\nNew downloads will be saved to your selected SAF folder.", - "@storageSwitchToSafMessage": { - "description": "Explanation when switching to SAF" - }, - "storageSwitchToAppMessage": "Your existing downloads will remain in the current SAF location and stay accessible.\n\nNew downloads will be saved to Music/SpotiFLAC folder.", - "@storageSwitchToAppMessage": { - "description": "Explanation when switching to app storage" - }, - "storageSwitchExistingDownloads": "Existing Downloads", - "@storageSwitchExistingDownloads": { - "description": "Section header for existing downloads info" - }, - "storageSwitchExistingDownloadsInfo": "{count} tracks in {mode} storage", - "@storageSwitchExistingDownloadsInfo": { - "description": "Info about existing downloads count", - "placeholders": { - "count": { - "type": "int" - }, - "mode": { - "type": "String" - } - } - }, - "storageSwitchNewDownloads": "New Downloads", - "@storageSwitchNewDownloads": { - "description": "Section header for new downloads info" - }, - "storageSwitchNewDownloadsLocation": "Will be saved to: {location}", - "@storageSwitchNewDownloadsLocation": { - "description": "Shows where new downloads will go", - "placeholders": { - "location": { - "type": "String" - } - } - }, - "storageSwitchContinue": "Continue", - "@storageSwitchContinue": { - "description": "Button to proceed with storage switch" - }, - "storageSwitchSelectFolder": "Select SAF Folder", - "@storageSwitchSelectFolder": { - "description": "Button to select SAF folder" - }, - "storageAppStorage": "App Storage", - "@storageAppStorage": { - "description": "Label for app storage mode" - }, - "storageSafStorage": "SAF Storage", - "@storageSafStorage": { - "description": "Label for SAF storage mode" - }, - "storageModeBadge": "Storage: {mode}", - "@storageModeBadge": { - "description": "Badge showing storage mode for a track", - "placeholders": { - "mode": { - "type": "String" - } - } - }, - "storageStatsTitle": "Storage Statistics", - "@storageStatsTitle": { - "description": "Section title for storage stats" - }, - "storageStatsAppCount": "{count} tracks in App Storage", - "@storageStatsAppCount": { - "description": "Count of tracks in app storage", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storageStatsSafCount": "{count} tracks in SAF Storage", - "@storageStatsSafCount": { - "description": "Count of tracks in SAF storage", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storageModeInfo": "Your files are stored in multiple locations", - "@storageModeInfo": { - "description": "Info when user has files in both storage modes" - }, "tutorialWelcomeTitle": "Welcome to SpotiFLAC!", "@tutorialWelcomeTitle": { "description": "Tutorial welcome page title" @@ -3428,18 +2374,6 @@ "@tutorialSearchDesc": { "description": "Tutorial search page description" }, - "tutorialSearchTip1": "Paste a Spotify or Deezer URL directly in the search box", - "@tutorialSearchTip1": { - "description": "Tutorial search tip 1" - }, - "tutorialSearchTip2": "Or type the song name, artist, or album to search", - "@tutorialSearchTip2": { - "description": "Tutorial search tip 2" - }, - "tutorialSearchTip3": "Supports tracks, albums, playlists, and artist pages", - "@tutorialSearchTip3": { - "description": "Tutorial search tip 3" - }, "tutorialDownloadTitle": "Downloading Music", "@tutorialDownloadTitle": { "description": "Tutorial download page title" @@ -3448,18 +2382,6 @@ "@tutorialDownloadDesc": { "description": "Tutorial download page description" }, - "tutorialDownloadTip1": "Tap the download button next to any track to start downloading", - "@tutorialDownloadTip1": { - "description": "Tutorial download tip 1" - }, - "tutorialDownloadTip2": "Choose your preferred quality (FLAC, Hi-Res, or MP3)", - "@tutorialDownloadTip2": { - "description": "Tutorial download tip 2" - }, - "tutorialDownloadTip3": "Download entire albums or playlists with one tap", - "@tutorialDownloadTip3": { - "description": "Tutorial download tip 3" - }, "tutorialLibraryTitle": "Your Library", "@tutorialLibraryTitle": { "description": "Tutorial library page title" @@ -3524,10 +2446,6 @@ "@tutorialReadyMessage": { "description": "Tutorial completion message" }, - "tutorialExample": "EXAMPLE", - "@tutorialExample": { - "description": "Example label in tutorial" - }, "libraryForceFullScan": "Force Full Scan", "@libraryForceFullScan": { "description": "Button to force a complete rescan of library" @@ -3754,10 +2672,6 @@ "@trackReEnrich": { "description": "Menu action - re-embed metadata into audio file" }, - "trackReEnrichSubtitle": "Re-embed metadata without re-downloading", - "@trackReEnrichSubtitle": { - "description": "Subtitle for re-enrich metadata action" - }, "trackReEnrichOnlineSubtitle": "Search metadata online and embed into file", "@trackReEnrichOnlineSubtitle": { "description": "Subtitle for re-enrich metadata action for local items" @@ -3869,15 +2783,21 @@ "@trackConvertFailed": { "description": "Snackbar when conversion fails" }, - "setupModeSelectionTitle": "Wähle deinen Modus", - "setupModeSelectionDescription": "Wie möchtest du SpotiFLAC nutzen? Du kannst dies später jederzeit in den Einstellungen ändern.", - "setupModeDownloaderTitle": "Downloader", - "setupModeDownloaderFeature1": "Lade Titel in verlustfreier FLAC-Qualität herunter", - "setupModeDownloaderFeature2": "Speichere Musik auf deinem Gerät zum Offline-Hören", - "setupModeDownloaderFeature3": "Verwalte deine lokale Musikbibliothek", - "setupModeStreamingTitle": "Streaming", - "setupModeStreamingFeature1": "Streame Titel sofort ohne Herunterladen", - "setupModeStreamingFeature2": "Smart Queue entdeckt automatisch neue Musik für dich", - "setupModeStreamingFeature3": "Spiele jeden Titel auf Abruf mit Wiedergabesteuerung", - "setupModeChangeableLater": "Du kannst jederzeit in den Einstellungen zwischen den Modi wechseln." -} \ No newline at end of file + "downloadedAlbumDownloadedCount": "{count} downloaded", + "@downloadedAlbumDownloadedCount": { + "description": "Downloaded tracks count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Artist folders use Album Artist when available", + "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { + "description": "Subtitle when Album Artist is used for folder naming" + }, + "downloadUseAlbumArtistForFoldersTrackSubtitle": "Artist folders use Track Artist only", + "@downloadUseAlbumArtistForFoldersTrackSubtitle": { + "description": "Subtitle when Track Artist is used for folder naming" + } +} diff --git a/lib/l10n/arb/app_en.arb b/lib/l10n/arb/app_en.arb index 709c1213..ca416fa0 100644 --- a/lib/l10n/arb/app_en.arb +++ b/lib/l10n/arb/app_en.arb @@ -1,897 +1,996 @@ { "@@locale": "en", "@@last_modified": "2026-01-16", - "appName": "SpotiFLAC", - "@appName": {"description": "App name - DO NOT TRANSLATE"}, - "appDescription": "Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.", - "@appDescription": {"description": "App description shown in about page"}, - + "@appName": { + "description": "App name - DO NOT TRANSLATE" + }, "navHome": "Home", - "@navHome": {"description": "Bottom navigation - Home tab"}, + "@navHome": { + "description": "Bottom navigation - Home tab" + }, "navLibrary": "Library", - "@navLibrary": {"description": "Bottom navigation - Library tab"}, - "navHistory": "History", - "@navHistory": {"description": "Bottom navigation - History tab (legacy)"}, + "@navLibrary": { + "description": "Bottom navigation - Library tab" + }, "navSettings": "Settings", - "@navSettings": {"description": "Bottom navigation - Settings tab"}, + "@navSettings": { + "description": "Bottom navigation - Settings tab" + }, "navStore": "Store", - "@navStore": {"description": "Bottom navigation - Extension store tab"}, - + "@navStore": { + "description": "Bottom navigation - Extension store tab" + }, "homeTitle": "Home", - "@homeTitle": {"description": "Home screen title"}, - "homeSearchHint": "Paste Spotify URL or search...", - "@homeSearchHint": {"description": "Placeholder text in search box"}, - "homeSearchHintExtension": "Search with {extensionName}...", - "@homeSearchHintExtension": { - "description": "Placeholder when extension search is active", - "placeholders": { - "extensionName": {"type": "String", "description": "Name of the active extension"} - } + "@homeTitle": { + "description": "Home screen title" }, "homeSubtitle": "Paste a Spotify link or search by name", - "@homeSubtitle": {"description": "Subtitle shown below search box"}, + "@homeSubtitle": { + "description": "Subtitle shown below search box" + }, "homeSupports": "Supports: Track, Album, Playlist, Artist URLs", - "@homeSupports": {"description": "Info text about supported URL types"}, + "@homeSupports": { + "description": "Info text about supported URL types" + }, "homeRecent": "Recent", - "@homeRecent": {"description": "Section header for recent searches"}, - - "historyTitle": "History", - "@historyTitle": {"description": "History screen title"}, - "historyDownloading": "Downloading ({count})", - "@historyDownloading": { - "description": "Tab showing active downloads count", - "placeholders": { - "count": {"type": "int", "description": "Number of active downloads"} - } + "@homeRecent": { + "description": "Section header for recent searches" }, - "historyDownloaded": "Downloaded", - "@historyDownloaded": {"description": "Tab showing completed downloads"}, "historyFilterAll": "All", - "@historyFilterAll": {"description": "Filter chip - show all items"}, + "@historyFilterAll": { + "description": "Filter chip - show all items" + }, "historyFilterAlbums": "Albums", - "@historyFilterAlbums": {"description": "Filter chip - show albums only"}, + "@historyFilterAlbums": { + "description": "Filter chip - show albums only" + }, "historyFilterSingles": "Singles", - "@historyFilterSingles": {"description": "Filter chip - show singles only"}, - "historyTracksCount": "{count, plural, =1{1 track} other{{count} tracks}}", - "@historyTracksCount": { - "description": "Track count with plural form", - "placeholders": { - "count": {"type": "int"} - } + "@historyFilterSingles": { + "description": "Filter chip - show singles only" }, - "historyAlbumsCount": "{count, plural, =1{1 album} other{{count} albums}}", - "@historyAlbumsCount": { - "description": "Album count with plural form", - "placeholders": { - "count": {"type": "int"} - } - }, - "historyNoDownloads": "No download history", - "@historyNoDownloads": {"description": "Empty state title"}, - "historyNoDownloadsSubtitle": "Downloaded tracks will appear here", - "@historyNoDownloadsSubtitle": {"description": "Empty state subtitle"}, - "historyNoAlbums": "No album downloads", - "@historyNoAlbums": {"description": "Empty state when filtering albums"}, - "historyNoAlbumsSubtitle": "Download multiple tracks from an album to see them here", - "@historyNoAlbumsSubtitle": {"description": "Empty state subtitle for albums filter"}, - "historyNoSingles": "No single downloads", - "@historyNoSingles": {"description": "Empty state when filtering singles"}, -"historyNoSinglesSubtitle": "Single track downloads will appear here", - "@historyNoSinglesSubtitle": {"description": "Empty state subtitle for singles filter"}, "historySearchHint": "Search history...", - "@historySearchHint": {"description": "Search bar placeholder in history"}, - + "@historySearchHint": { + "description": "Search bar placeholder in history" + }, "settingsTitle": "Settings", - "@settingsTitle": {"description": "Settings screen title"}, + "@settingsTitle": { + "description": "Settings screen title" + }, "settingsDownload": "Download", - "@settingsDownload": {"description": "Settings section - download options"}, + "@settingsDownload": { + "description": "Settings section - download options" + }, "settingsAppearance": "Appearance", - "@settingsAppearance": {"description": "Settings section - visual customization"}, + "@settingsAppearance": { + "description": "Settings section - visual customization" + }, "settingsOptions": "Options", - "@settingsOptions": {"description": "Settings section - app options"}, + "@settingsOptions": { + "description": "Settings section - app options" + }, "settingsExtensions": "Extensions", - "@settingsExtensions": {"description": "Settings section - extension management"}, + "@settingsExtensions": { + "description": "Settings section - extension management" + }, "settingsAbout": "About", - "@settingsAbout": {"description": "Settings section - app info"}, - + "@settingsAbout": { + "description": "Settings section - app info" + }, "downloadTitle": "Download", - "@downloadTitle": {"description": "Download settings page title"}, - "downloadLocation": "Download Location", - "@downloadLocation": {"description": "Setting for download folder"}, - "downloadLocationSubtitle": "Choose where to save files", - "@downloadLocationSubtitle": {"description": "Subtitle for download location"}, - "downloadLocationDefault": "Default location", - "@downloadLocationDefault": {"description": "Shown when using default folder"}, - "downloadDefaultService": "Default Service", - "@downloadDefaultService": {"description": "Setting for preferred download service (Tidal/Qobuz/Amazon)"}, - "downloadDefaultServiceSubtitle": "Service used for downloads", - "@downloadDefaultServiceSubtitle": {"description": "Subtitle for default service"}, - "downloadDefaultQuality": "Default Quality", - "@downloadDefaultQuality": {"description": "Setting for audio quality"}, - "downloadAskQuality": "Ask Quality Before Download", - "@downloadAskQuality": {"description": "Toggle to show quality picker"}, + "@downloadTitle": { + "description": "Download settings page title" + }, "downloadAskQualitySubtitle": "Show quality picker for each download", - "@downloadAskQualitySubtitle": {"description": "Subtitle for ask quality toggle"}, + "@downloadAskQualitySubtitle": { + "description": "Subtitle for ask quality toggle" + }, "downloadFilenameFormat": "Filename Format", - "@downloadFilenameFormat": {"description": "Setting for output filename pattern"}, + "@downloadFilenameFormat": { + "description": "Setting for output filename pattern" + }, "downloadFolderOrganization": "Folder Organization", - "@downloadFolderOrganization": {"description": "Setting for folder structure"}, - "downloadSeparateSingles": "Separate Singles", - "@downloadSeparateSingles": {"description": "Toggle to separate single tracks"}, - "downloadSeparateSinglesSubtitle": "Put single tracks in a separate folder", - "@downloadSeparateSinglesSubtitle": {"description": "Subtitle for separate singles toggle"}, - - "qualityBest": "Best Available", - "@qualityBest": {"description": "Audio quality option - highest available"}, - "qualityFlac": "FLAC", - "@qualityFlac": {"description": "Audio quality option - FLAC lossless"}, - "quality320": "320 kbps", - "@quality320": {"description": "Audio quality option - 320kbps MP3"}, - "quality128": "128 kbps", - "@quality128": {"description": "Audio quality option - 128kbps MP3"}, - + "@downloadFolderOrganization": { + "description": "Setting for folder structure" + }, "appearanceTitle": "Appearance", - "@appearanceTitle": {"description": "Appearance settings page title"}, - "appearanceTheme": "Theme", - "@appearanceTheme": {"description": "Theme mode setting"}, + "@appearanceTitle": { + "description": "Appearance settings page title" + }, "appearanceThemeSystem": "System", - "@appearanceThemeSystem": {"description": "Follow system theme"}, + "@appearanceThemeSystem": { + "description": "Follow system theme" + }, "appearanceThemeLight": "Light", - "@appearanceThemeLight": {"description": "Light theme"}, + "@appearanceThemeLight": { + "description": "Light theme" + }, "appearanceThemeDark": "Dark", - "@appearanceThemeDark": {"description": "Dark theme"}, + "@appearanceThemeDark": { + "description": "Dark theme" + }, "appearanceDynamicColor": "Dynamic Color", - "@appearanceDynamicColor": {"description": "Material You dynamic colors"}, + "@appearanceDynamicColor": { + "description": "Material You dynamic colors" + }, "appearanceDynamicColorSubtitle": "Use colors from your wallpaper", - "@appearanceDynamicColorSubtitle": {"description": "Subtitle for dynamic color"}, - "appearanceAccentColor": "Accent Color", - "@appearanceAccentColor": {"description": "Custom accent color picker"}, + "@appearanceDynamicColorSubtitle": { + "description": "Subtitle for dynamic color" + }, "appearanceHistoryView": "History View", - "@appearanceHistoryView": {"description": "Layout style for history"}, + "@appearanceHistoryView": { + "description": "Layout style for history" + }, "appearanceHistoryViewList": "List", - "@appearanceHistoryViewList": {"description": "List layout option"}, + "@appearanceHistoryViewList": { + "description": "List layout option" + }, "appearanceHistoryViewGrid": "Grid", - "@appearanceHistoryViewGrid": {"description": "Grid layout option"}, - + "@appearanceHistoryViewGrid": { + "description": "Grid layout option" + }, "optionsTitle": "Options", - "@optionsTitle": {"description": "Options settings page title"}, - "optionsSearchSource": "Search Source", - "@optionsSearchSource": {"description": "Section for search provider settings"}, + "@optionsTitle": { + "description": "Options settings page title" + }, "optionsPrimaryProvider": "Primary Provider", - "@optionsPrimaryProvider": {"description": "Main search provider setting"}, + "@optionsPrimaryProvider": { + "description": "Main search provider setting" + }, "optionsPrimaryProviderSubtitle": "Service used when searching by track name.", - "@optionsPrimaryProviderSubtitle": {"description": "Subtitle for primary provider"}, + "@optionsPrimaryProviderSubtitle": { + "description": "Subtitle for primary provider" + }, "optionsUsingExtension": "Using extension: {extensionName}", "@optionsUsingExtension": { "description": "Shows active extension name", "placeholders": { - "extensionName": {"type": "String"} + "extensionName": { + "type": "String" + } } }, "optionsSwitchBack": "Tap Deezer or Spotify to switch back from extension", - "@optionsSwitchBack": {"description": "Hint to switch back to built-in providers"}, + "@optionsSwitchBack": { + "description": "Hint to switch back to built-in providers" + }, "optionsAutoFallback": "Auto Fallback", - "@optionsAutoFallback": {"description": "Auto-retry with other services"}, + "@optionsAutoFallback": { + "description": "Auto-retry with other services" + }, "optionsAutoFallbackSubtitle": "Try other services if download fails", - "@optionsAutoFallbackSubtitle": {"description": "Subtitle for auto fallback"}, - "optionsAutoSkipUnavailableTracks": "Auto Skip Unavailable Tracks", - "@optionsAutoSkipUnavailableTracks": {"description": "Toggle to skip to the next queue track when current track stream resolution fails"}, - "optionsAutoSkipUnavailableTracksSubtitleOn": "Automatically skip to the next queue track when a stream cannot be resolved.", - "@optionsAutoSkipUnavailableTracksSubtitleOn": {"description": "Subtitle when auto skip on resolve failure is enabled"}, - "optionsAutoSkipUnavailableTracksSubtitleOff": "Stop on failed track resolution and show an error.", - "@optionsAutoSkipUnavailableTracksSubtitleOff": {"description": "Subtitle when auto skip on resolve failure is disabled"}, - "optionsInteractionMode": "Interaction Mode", - "@optionsInteractionMode": {"description": "Tap behavior mode for track lists"}, - "modeDownloader": "Downloader Mode", - "@modeDownloader": {"description": "Interaction mode where taps queue downloads"}, - "modeDownloaderSubtitle": "Tap tracks to add them to download queue", - "@modeDownloaderSubtitle": {"description": "Subtitle for downloader interaction mode"}, - "modeStreaming": "Streaming Mode", - "@modeStreaming": {"description": "Interaction mode where taps start playback"}, - "modeStreamingSubtitle": "Tap tracks to play instantly", - "@modeStreamingSubtitle": {"description": "Subtitle for streaming interaction mode"}, + "@optionsAutoFallbackSubtitle": { + "description": "Subtitle for auto fallback" + }, "optionsUseExtensionProviders": "Use Extension Providers", - "@optionsUseExtensionProviders": {"description": "Enable extension download providers"}, + "@optionsUseExtensionProviders": { + "description": "Enable extension download providers" + }, "optionsUseExtensionProvidersOn": "Extensions will be tried first", - "@optionsUseExtensionProvidersOn": {"description": "Status when extension providers enabled"}, + "@optionsUseExtensionProvidersOn": { + "description": "Status when extension providers enabled" + }, "optionsUseExtensionProvidersOff": "Using built-in providers only", - "@optionsUseExtensionProvidersOff": {"description": "Status when extension providers disabled"}, + "@optionsUseExtensionProvidersOff": { + "description": "Status when extension providers disabled" + }, "optionsEmbedLyrics": "Embed Lyrics", - "@optionsEmbedLyrics": {"description": "Embed lyrics in audio files"}, + "@optionsEmbedLyrics": { + "description": "Embed lyrics in audio files" + }, "optionsEmbedLyricsSubtitle": "Embed synced lyrics into FLAC files", - "@optionsEmbedLyricsSubtitle": {"description": "Subtitle for embed lyrics"}, + "@optionsEmbedLyricsSubtitle": { + "description": "Subtitle for embed lyrics" + }, "optionsMaxQualityCover": "Max Quality Cover", - "@optionsMaxQualityCover": {"description": "Download highest quality album art"}, + "@optionsMaxQualityCover": { + "description": "Download highest quality album art" + }, "optionsMaxQualityCoverSubtitle": "Download highest resolution cover art", - "@optionsMaxQualityCoverSubtitle": {"description": "Subtitle for max quality cover"}, + "@optionsMaxQualityCoverSubtitle": { + "description": "Subtitle for max quality cover" + }, "optionsConcurrentDownloads": "Concurrent Downloads", - "@optionsConcurrentDownloads": {"description": "Number of parallel downloads"}, + "@optionsConcurrentDownloads": { + "description": "Number of parallel downloads" + }, "optionsConcurrentSequential": "Sequential (1 at a time)", - "@optionsConcurrentSequential": {"description": "Download one at a time"}, + "@optionsConcurrentSequential": { + "description": "Download one at a time" + }, "optionsConcurrentParallel": "{count} parallel downloads", "@optionsConcurrentParallel": { "description": "Multiple parallel downloads", "placeholders": { - "count": {"type": "int"} + "count": { + "type": "int" + } } }, "optionsConcurrentWarning": "Parallel downloads may trigger rate limiting", - "@optionsConcurrentWarning": {"description": "Warning about rate limits"}, + "@optionsConcurrentWarning": { + "description": "Warning about rate limits" + }, "optionsExtensionStore": "Extension Store", - "@optionsExtensionStore": {"description": "Show/hide store tab"}, + "@optionsExtensionStore": { + "description": "Show/hide store tab" + }, "optionsExtensionStoreSubtitle": "Show Store tab in navigation", - "@optionsExtensionStoreSubtitle": {"description": "Subtitle for extension store toggle"}, + "@optionsExtensionStoreSubtitle": { + "description": "Subtitle for extension store toggle" + }, "optionsCheckUpdates": "Check for Updates", - "@optionsCheckUpdates": {"description": "Auto update check toggle"}, + "@optionsCheckUpdates": { + "description": "Auto update check toggle" + }, "optionsCheckUpdatesSubtitle": "Notify when new version is available", - "@optionsCheckUpdatesSubtitle": {"description": "Subtitle for update check"}, + "@optionsCheckUpdatesSubtitle": { + "description": "Subtitle for update check" + }, "optionsUpdateChannel": "Update Channel", - "@optionsUpdateChannel": {"description": "Stable vs preview releases"}, + "@optionsUpdateChannel": { + "description": "Stable vs preview releases" + }, "optionsUpdateChannelStable": "Stable releases only", - "@optionsUpdateChannelStable": {"description": "Only stable updates"}, + "@optionsUpdateChannelStable": { + "description": "Only stable updates" + }, "optionsUpdateChannelPreview": "Get preview releases", - "@optionsUpdateChannelPreview": {"description": "Include beta/preview updates"}, + "@optionsUpdateChannelPreview": { + "description": "Include beta/preview updates" + }, "optionsUpdateChannelWarning": "Preview may contain bugs or incomplete features", - "@optionsUpdateChannelWarning": {"description": "Warning about preview channel"}, + "@optionsUpdateChannelWarning": { + "description": "Warning about preview channel" + }, "optionsClearHistory": "Clear Download History", - "@optionsClearHistory": {"description": "Delete all download history"}, + "@optionsClearHistory": { + "description": "Delete all download history" + }, "optionsClearHistorySubtitle": "Remove all downloaded tracks from history", - "@optionsClearHistorySubtitle": {"description": "Subtitle for clear history"}, + "@optionsClearHistorySubtitle": { + "description": "Subtitle for clear history" + }, "optionsDetailedLogging": "Detailed Logging", - "@optionsDetailedLogging": {"description": "Enable verbose logs for debugging"}, + "@optionsDetailedLogging": { + "description": "Enable verbose logs for debugging" + }, "optionsDetailedLoggingOn": "Detailed logs are being recorded", - "@optionsDetailedLoggingOn": {"description": "Status when logging enabled"}, + "@optionsDetailedLoggingOn": { + "description": "Status when logging enabled" + }, "optionsDetailedLoggingOff": "Enable for bug reports", - "@optionsDetailedLoggingOff": {"description": "Status when logging disabled"}, + "@optionsDetailedLoggingOff": { + "description": "Status when logging disabled" + }, "optionsSpotifyCredentials": "Spotify Credentials", - "@optionsSpotifyCredentials": {"description": "Spotify API credentials setting"}, + "@optionsSpotifyCredentials": { + "description": "Spotify API credentials setting" + }, "optionsSpotifyCredentialsConfigured": "Client ID: {clientId}...", "@optionsSpotifyCredentialsConfigured": { "description": "Shows configured client ID preview", "placeholders": { - "clientId": {"type": "String"} + "clientId": { + "type": "String" + } } }, "optionsSpotifyCredentialsRequired": "Required - tap to configure", - "@optionsSpotifyCredentialsRequired": {"description": "Prompt to set up credentials"}, + "@optionsSpotifyCredentialsRequired": { + "description": "Prompt to set up credentials" + }, "optionsSpotifyWarning": "Spotify requires your own API credentials. Get them free from developer.spotify.com", - "@optionsSpotifyWarning": {"description": "Info about Spotify API requirement"}, + "@optionsSpotifyWarning": { + "description": "Info about Spotify API requirement" + }, "optionsSpotifyDeprecationWarning": "Spotify search will be deprecated on March 3, 2026 due to Spotify API changes. Please switch to Deezer.", - "@optionsSpotifyDeprecationWarning": {"description": "Warning about Spotify API deprecation"}, - + "@optionsSpotifyDeprecationWarning": { + "description": "Warning about Spotify API deprecation" + }, "extensionsTitle": "Extensions", - "@extensionsTitle": {"description": "Extensions page title"}, - "extensionsInstalled": "Installed Extensions", - "@extensionsInstalled": {"description": "Section header for installed extensions"}, - "extensionsNone": "No extensions installed", - "@extensionsNone": {"description": "Empty state title"}, - "extensionsNoneSubtitle": "Install extensions from the Store tab", - "@extensionsNoneSubtitle": {"description": "Empty state subtitle"}, - "extensionsEnabled": "Enabled", - "@extensionsEnabled": {"description": "Extension status - active"}, + "@extensionsTitle": { + "description": "Extensions page title" + }, "extensionsDisabled": "Disabled", - "@extensionsDisabled": {"description": "Extension status - inactive"}, + "@extensionsDisabled": { + "description": "Extension status - inactive" + }, "extensionsVersion": "Version {version}", "@extensionsVersion": { "description": "Extension version display", "placeholders": { - "version": {"type": "String"} + "version": { + "type": "String" + } } }, "extensionsAuthor": "by {author}", "@extensionsAuthor": { "description": "Extension author credit", "placeholders": { - "author": {"type": "String"} + "author": { + "type": "String" + } } }, "extensionsUninstall": "Uninstall", - "@extensionsUninstall": {"description": "Uninstall extension button"}, - "extensionsSetAsSearch": "Set as Search Provider", - "@extensionsSetAsSearch": {"description": "Use extension for search"}, - - "storeTitle": "Extension Store", - "@storeTitle": {"description": "Store screen title"}, - "storeSearch": "Search extensions...", - "@storeSearch": {"description": "Store search placeholder"}, - "storeInstall": "Install", - "@storeInstall": {"description": "Install extension button"}, - "storeInstalled": "Installed", - "@storeInstalled": {"description": "Already installed badge"}, - "storeUpdate": "Update", - "@storeUpdate": {"description": "Update available button"}, - - "aboutTitle": "About", - "@aboutTitle": {"description": "About page title"}, - "aboutContributors": "Contributors", - "@aboutContributors": {"description": "Section for contributors"}, - "aboutMobileDeveloper": "Mobile version developer", - "@aboutMobileDeveloper": {"description": "Role description for mobile dev"}, - "aboutOriginalCreator": "Creator of the original SpotiFLAC", - "@aboutOriginalCreator": {"description": "Role description for original creator"}, - "aboutLogoArtist": "The talented artist who created our beautiful app logo!", - "@aboutLogoArtist": {"description": "Role description for logo artist"}, - "aboutTranslators": "Translators", - "@aboutTranslators": {"description": "Section for translators"}, - "aboutSpecialThanks": "Special Thanks", - "@aboutSpecialThanks": {"description": "Section for special thanks"}, - "aboutLinks": "Links", - "@aboutLinks": {"description": "Section for external links"}, - "aboutMobileSource": "Mobile source code", - "@aboutMobileSource": {"description": "Link to mobile GitHub repo"}, - "aboutPCSource": "PC source code", - "@aboutPCSource": {"description": "Link to PC GitHub repo"}, - "aboutReportIssue": "Report an issue", - "@aboutReportIssue": {"description": "Link to report bugs"}, - "aboutReportIssueSubtitle": "Report any problems you encounter", - "@aboutReportIssueSubtitle": {"description": "Subtitle for report issue"}, -"aboutFeatureRequest": "Feature request", - "@aboutFeatureRequest": {"description": "Link to suggest features"}, - "aboutFeatureRequestSubtitle": "Suggest new features for the app", - "@aboutFeatureRequestSubtitle": {"description": "Subtitle for feature request"}, - "aboutTelegramChannel": "Telegram Channel", - "@aboutTelegramChannel": {"description": "Link to Telegram channel"}, - "aboutTelegramChannelSubtitle": "Announcements and updates", - "@aboutTelegramChannelSubtitle": {"description": "Subtitle for Telegram channel"}, - "aboutTelegramChat": "Telegram Community", - "@aboutTelegramChat": {"description": "Link to Telegram chat group"}, - "aboutTelegramChatSubtitle": "Chat with other users", - "@aboutTelegramChatSubtitle": {"description": "Subtitle for Telegram chat"}, - "aboutSocial": "Social", - "@aboutSocial": {"description": "Section for social links"}, - "aboutSupport": "Support", - "@aboutSupport": {"description": "Section for support/donation links"}, - "aboutApp": "App", - "@aboutApp": {"description": "Section for app info"}, - "aboutVersion": "Version", - "@aboutVersion": {"description": "Version info label"}, - "aboutBinimumDesc": "The creator of QQDL & HiFi API. Without this API, Tidal downloads wouldn't exist!", - "@aboutBinimumDesc": {"description": "Credit description for binimum"}, - "aboutSachinsenalDesc": "The original HiFi project creator. The foundation of Tidal integration!", - "@aboutSachinsenalDesc": {"description": "Credit description for sachinsenal0x64"}, - "aboutSjdonadoDesc": "Creator of I Don't Have Spotify (IDHS). The fallback link resolver that saves the day!", - "@aboutSjdonadoDesc": {"description": "Credit description for sjdonado"}, - "aboutDoubleDouble": "DoubleDouble", - "@aboutDoubleDouble": {"description": "Name of Amazon API service - DO NOT TRANSLATE"}, - "aboutDoubleDoubleDesc": "Amazing API for Amazon Music downloads. Thank you for making it free!", - "@aboutDoubleDoubleDesc": {"description": "Credit for DoubleDouble API"}, - "aboutDabMusic": "DAB Music", - "@aboutDabMusic": {"description": "Name of Qobuz API service - DO NOT TRANSLATE"}, - "aboutDabMusicDesc": "The best Qobuz streaming API. Hi-Res downloads wouldn't be possible without this!", - "@aboutDabMusicDesc": {"description": "Credit for DAB Music API"}, - "aboutSpotiSaver": "SpotiSaver", - "@aboutSpotiSaver": {"description": "Name of SpotiSaver API service - DO NOT TRANSLATE"}, - "aboutSpotiSaverDesc": "Tidal Hi-Res FLAC streaming endpoints. A key piece of the lossless puzzle!", - "@aboutSpotiSaverDesc": {"description": "Credit for SpotiSaver API"}, - "aboutAppDescription": "Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.", - "@aboutAppDescription": {"description": "App description in header card"}, - - "albumTitle": "Album", - "@albumTitle": {"description": "Album screen title"}, - "albumTracks": "{count, plural, =1{1 track} other{{count} tracks}}", - "@albumTracks": { - "description": "Album track count", - "placeholders": { - "count": {"type": "int"} - } + "@extensionsUninstall": { + "description": "Uninstall extension button" + }, + "storeTitle": "Extension Store", + "@storeTitle": { + "description": "Store screen title" + }, + "storeSearch": "Search extensions...", + "@storeSearch": { + "description": "Store search placeholder" + }, + "storeInstall": "Install", + "@storeInstall": { + "description": "Install extension button" + }, + "storeInstalled": "Installed", + "@storeInstalled": { + "description": "Already installed badge" + }, + "storeUpdate": "Update", + "@storeUpdate": { + "description": "Update available button" + }, + "aboutTitle": "About", + "@aboutTitle": { + "description": "About page title" + }, + "aboutContributors": "Contributors", + "@aboutContributors": { + "description": "Section for contributors" + }, + "aboutMobileDeveloper": "Mobile version developer", + "@aboutMobileDeveloper": { + "description": "Role description for mobile dev" + }, + "aboutOriginalCreator": "Creator of the original SpotiFLAC", + "@aboutOriginalCreator": { + "description": "Role description for original creator" + }, + "aboutLogoArtist": "The talented artist who created our beautiful app logo!", + "@aboutLogoArtist": { + "description": "Role description for logo artist" + }, + "aboutTranslators": "Translators", + "@aboutTranslators": { + "description": "Section for translators" + }, + "aboutSpecialThanks": "Special Thanks", + "@aboutSpecialThanks": { + "description": "Section for special thanks" + }, + "aboutLinks": "Links", + "@aboutLinks": { + "description": "Section for external links" + }, + "aboutMobileSource": "Mobile source code", + "@aboutMobileSource": { + "description": "Link to mobile GitHub repo" + }, + "aboutPCSource": "PC source code", + "@aboutPCSource": { + "description": "Link to PC GitHub repo" + }, + "aboutReportIssue": "Report an issue", + "@aboutReportIssue": { + "description": "Link to report bugs" + }, + "aboutReportIssueSubtitle": "Report any problems you encounter", + "@aboutReportIssueSubtitle": { + "description": "Subtitle for report issue" + }, + "aboutFeatureRequest": "Feature request", + "@aboutFeatureRequest": { + "description": "Link to suggest features" + }, + "aboutFeatureRequestSubtitle": "Suggest new features for the app", + "@aboutFeatureRequestSubtitle": { + "description": "Subtitle for feature request" + }, + "aboutTelegramChannel": "Telegram Channel", + "@aboutTelegramChannel": { + "description": "Link to Telegram channel" + }, + "aboutTelegramChannelSubtitle": "Announcements and updates", + "@aboutTelegramChannelSubtitle": { + "description": "Subtitle for Telegram channel" + }, + "aboutTelegramChat": "Telegram Community", + "@aboutTelegramChat": { + "description": "Link to Telegram chat group" + }, + "aboutTelegramChatSubtitle": "Chat with other users", + "@aboutTelegramChatSubtitle": { + "description": "Subtitle for Telegram chat" + }, + "aboutSocial": "Social", + "@aboutSocial": { + "description": "Section for social links" + }, + "aboutApp": "App", + "@aboutApp": { + "description": "Section for app info" + }, + "aboutVersion": "Version", + "@aboutVersion": { + "description": "Version info label" + }, + "aboutBinimumDesc": "The creator of QQDL & HiFi API. Without this API, Tidal downloads wouldn't exist!", + "@aboutBinimumDesc": { + "description": "Credit description for binimum" + }, + "aboutSachinsenalDesc": "The original HiFi project creator. The foundation of Tidal integration!", + "@aboutSachinsenalDesc": { + "description": "Credit description for sachinsenal0x64" + }, + "aboutSjdonadoDesc": "Creator of I Don't Have Spotify (IDHS). The fallback link resolver that saves the day!", + "@aboutSjdonadoDesc": { + "description": "Credit description for sjdonado" + }, + "aboutDabMusic": "DAB Music", + "@aboutDabMusic": { + "description": "Name of Qobuz API service - DO NOT TRANSLATE" + }, + "aboutDabMusicDesc": "The best Qobuz streaming API. Hi-Res downloads wouldn't be possible without this!", + "@aboutDabMusicDesc": { + "description": "Credit for DAB Music API" + }, + "aboutSpotiSaver": "SpotiSaver", + "@aboutSpotiSaver": { + "description": "Name of SpotiSaver API service - DO NOT TRANSLATE" + }, + "aboutSpotiSaverDesc": "Tidal Hi-Res FLAC streaming endpoints. A key piece of the lossless puzzle!", + "@aboutSpotiSaverDesc": { + "description": "Credit for SpotiSaver API" + }, + "aboutAppDescription": "Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.", + "@aboutAppDescription": { + "description": "App description in header card" }, - "albumDownloadAll": "Download All", - "@albumDownloadAll": {"description": "Button to download all tracks"}, - "albumDownloadRemaining": "Download Remaining", - "@albumDownloadRemaining": {"description": "Button to download remaining tracks"}, - - "playlistTitle": "Playlist", - "@playlistTitle": {"description": "Playlist screen title"}, - "artistTitle": "Artist", - "@artistTitle": {"description": "Artist screen title"}, "artistAlbums": "Albums", - "@artistAlbums": {"description": "Section header for artist albums"}, + "@artistAlbums": { + "description": "Section header for artist albums" + }, "artistSingles": "Singles & EPs", - "@artistSingles": {"description": "Section header for singles/EPs"}, + "@artistSingles": { + "description": "Section header for singles/EPs" + }, "artistCompilations": "Compilations", - "@artistCompilations": {"description": "Section header for compilations"}, - "artistReleases": "{count, plural, =1{1 release} other{{count} releases}}", - "@artistReleases": { - "description": "Artist release count", - "placeholders": { - "count": {"type": "int"} - } + "@artistCompilations": { + "description": "Section header for compilations" }, "artistPopular": "Popular", - "@artistPopular": {"description": "Section header for popular/top tracks"}, + "@artistPopular": { + "description": "Section header for popular/top tracks" + }, "artistMonthlyListeners": "{count} monthly listeners", "@artistMonthlyListeners": { "description": "Monthly listener count display", "placeholders": { - "count": {"type": "String", "description": "Formatted listener count"} + "count": { + "type": "String", + "description": "Formatted listener count" + } } }, - - "trackMetadataTitle": "Track Info", - "@trackMetadataTitle": {"description": "Track metadata screen title"}, - "trackMetadataArtist": "Artist", - "@trackMetadataArtist": {"description": "Metadata field - artist name"}, - "trackMetadataAlbum": "Album", - "@trackMetadataAlbum": {"description": "Metadata field - album name"}, - "trackMetadataDuration": "Duration", - "@trackMetadataDuration": {"description": "Metadata field - track length"}, - "trackMetadataQuality": "Quality", - "@trackMetadataQuality": {"description": "Metadata field - audio quality"}, - "trackMetadataPath": "File Path", - "@trackMetadataPath": {"description": "Metadata field - file location"}, - "trackMetadataDownloadedAt": "Downloaded", - "@trackMetadataDownloadedAt": {"description": "Metadata field - download date"}, "trackMetadataService": "Service", - "@trackMetadataService": {"description": "Metadata field - download service used"}, + "@trackMetadataService": { + "description": "Metadata field - download service used" + }, "trackMetadataPlay": "Play", - "@trackMetadataPlay": {"description": "Action button - play track"}, + "@trackMetadataPlay": { + "description": "Action button - play track" + }, "trackMetadataShare": "Share", - "@trackMetadataShare": {"description": "Action button - share track"}, + "@trackMetadataShare": { + "description": "Action button - share track" + }, "trackMetadataDelete": "Delete", - "@trackMetadataDelete": {"description": "Action button - delete track"}, - "trackMetadataRedownload": "Re-download", - "@trackMetadataRedownload": {"description": "Action button - download again"}, - "trackMetadataOpenFolder": "Open Folder", - "@trackMetadataOpenFolder": {"description": "Action button - open containing folder"}, - - "setupTitle": "Welcome to SpotiFLAC", - "@setupTitle": {"description": "Setup wizard title"}, - "setupSubtitle": "Let's get you started", - "@setupSubtitle": {"description": "Setup wizard subtitle"}, - "setupStoragePermission": "Storage Permission", - "@setupStoragePermission": {"description": "Storage permission step title"}, - "setupStoragePermissionSubtitle": "Required to save downloaded files", - "@setupStoragePermissionSubtitle": {"description": "Explanation for storage permission"}, - "setupStoragePermissionGranted": "Permission granted", - "@setupStoragePermissionGranted": {"description": "Status when permission granted"}, - "setupStoragePermissionDenied": "Permission denied", - "@setupStoragePermissionDenied": {"description": "Status when permission denied"}, + "@trackMetadataDelete": { + "description": "Action button - delete track" + }, "setupGrantPermission": "Grant Permission", - "@setupGrantPermission": {"description": "Button to request permission"}, - "setupDownloadLocation": "Download Location", - "@setupDownloadLocation": {"description": "Download folder step title"}, - "setupChooseFolder": "Choose Folder", - "@setupChooseFolder": {"description": "Button to pick folder"}, - "setupContinue": "Continue", - "@setupContinue": {"description": "Continue to next step button"}, + "@setupGrantPermission": { + "description": "Button to request permission" + }, "setupSkip": "Skip for now", - "@setupSkip": {"description": "Skip current step button"}, + "@setupSkip": { + "description": "Skip current step button" + }, "setupStorageAccessRequired": "Storage Access Required", - "@setupStorageAccessRequired": {"description": "Title when storage access needed"}, - "setupStorageAccessMessage": "SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.", - "@setupStorageAccessMessage": {"description": "Explanation for storage access"}, + "@setupStorageAccessRequired": { + "description": "Title when storage access needed" + }, "setupStorageAccessMessageAndroid11": "Android 11+ requires \"All files access\" permission to save files to your chosen download folder.", - "@setupStorageAccessMessageAndroid11": {"description": "Android 11+ specific explanation"}, + "@setupStorageAccessMessageAndroid11": { + "description": "Android 11+ specific explanation" + }, "setupOpenSettings": "Open Settings", - "@setupOpenSettings": {"description": "Button to open system settings"}, + "@setupOpenSettings": { + "description": "Button to open system settings" + }, "setupPermissionDeniedMessage": "Permission denied. Please grant all permissions to continue.", - "@setupPermissionDeniedMessage": {"description": "Error when permission denied"}, + "@setupPermissionDeniedMessage": { + "description": "Error when permission denied" + }, "setupPermissionRequired": "{permissionType} Permission Required", "@setupPermissionRequired": { "description": "Generic permission required title", "placeholders": { - "permissionType": {"type": "String", "description": "Type of permission (Storage/Notification)"} + "permissionType": { + "type": "String", + "description": "Type of permission (Storage/Notification)" + } } }, "setupPermissionRequiredMessage": "{permissionType} permission is required for the best experience. You can change this later in Settings.", "@setupPermissionRequiredMessage": { "description": "Generic permission required message", "placeholders": { - "permissionType": {"type": "String"} + "permissionType": { + "type": "String" + } } }, - "setupSelectDownloadFolder": "Select Download Folder", - "@setupSelectDownloadFolder": {"description": "Folder selection step title"}, "setupUseDefaultFolder": "Use Default Folder?", - "@setupUseDefaultFolder": {"description": "Dialog title for default folder"}, + "@setupUseDefaultFolder": { + "description": "Dialog title for default folder" + }, "setupNoFolderSelected": "No folder selected. Would you like to use the default Music folder?", - "@setupNoFolderSelected": {"description": "Prompt when no folder selected"}, + "@setupNoFolderSelected": { + "description": "Prompt when no folder selected" + }, "setupUseDefault": "Use Default", - "@setupUseDefault": {"description": "Button to use default folder"}, + "@setupUseDefault": { + "description": "Button to use default folder" + }, "setupDownloadLocationTitle": "Download Location", - "@setupDownloadLocationTitle": {"description": "Download location dialog title"}, + "@setupDownloadLocationTitle": { + "description": "Download location dialog title" + }, "setupDownloadLocationIosMessage": "On iOS, downloads are saved to the app's Documents folder. You can access them via the Files app.", - "@setupDownloadLocationIosMessage": {"description": "iOS-specific folder info"}, + "@setupDownloadLocationIosMessage": { + "description": "iOS-specific folder info" + }, "setupAppDocumentsFolder": "App Documents Folder", - "@setupAppDocumentsFolder": {"description": "iOS documents folder option"}, + "@setupAppDocumentsFolder": { + "description": "iOS documents folder option" + }, "setupAppDocumentsFolderSubtitle": "Recommended - accessible via Files app", - "@setupAppDocumentsFolderSubtitle": {"description": "Subtitle for documents folder"}, + "@setupAppDocumentsFolderSubtitle": { + "description": "Subtitle for documents folder" + }, "setupChooseFromFiles": "Choose from Files", - "@setupChooseFromFiles": {"description": "iOS file picker option"}, + "@setupChooseFromFiles": { + "description": "iOS file picker option" + }, "setupChooseFromFilesSubtitle": "Select iCloud or other location", - "@setupChooseFromFilesSubtitle": {"description": "Subtitle for file picker"}, -"setupIosEmptyFolderWarning": "iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.", - "@setupIosEmptyFolderWarning": {"description": "iOS folder selection warning"}, + "@setupChooseFromFilesSubtitle": { + "description": "Subtitle for file picker" + }, + "setupIosEmptyFolderWarning": "iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.", + "@setupIosEmptyFolderWarning": { + "description": "iOS folder selection warning" + }, "setupIcloudNotSupported": "iCloud Drive is not supported. Please use the app Documents folder.", - "@setupIcloudNotSupported": {"description": "Error when user selects iCloud Drive on iOS"}, + "@setupIcloudNotSupported": { + "description": "Error when user selects iCloud Drive on iOS" + }, "setupDownloadInFlac": "Download Spotify tracks in FLAC", - "@setupDownloadInFlac": {"description": "App tagline in setup"}, - "setupStepStorage": "Storage", - "@setupStepStorage": {"description": "Setup step indicator - storage"}, - "setupStepNotification": "Notification", - "@setupStepNotification": {"description": "Setup step indicator - notification"}, - "setupStepFolder": "Folder", - "@setupStepFolder": {"description": "Setup step indicator - folder"}, - "setupStepSpotify": "Spotify", - "@setupStepSpotify": {"description": "Setup step indicator - Spotify API"}, - "setupStepPermission": "Permission", - "@setupStepPermission": {"description": "Setup step indicator - permission"}, + "@setupDownloadInFlac": { + "description": "App tagline in setup" + }, "setupStorageGranted": "Storage Permission Granted!", - "@setupStorageGranted": {"description": "Success message for storage permission"}, + "@setupStorageGranted": { + "description": "Success message for storage permission" + }, "setupStorageRequired": "Storage Permission Required", - "@setupStorageRequired": {"description": "Title when storage permission needed"}, + "@setupStorageRequired": { + "description": "Title when storage permission needed" + }, "setupStorageDescription": "SpotiFLAC needs storage permission to save your downloaded music files.", - "@setupStorageDescription": {"description": "Explanation for storage permission"}, + "@setupStorageDescription": { + "description": "Explanation for storage permission" + }, "setupNotificationGranted": "Notification Permission Granted!", - "@setupNotificationGranted": {"description": "Success message for notification permission"}, + "@setupNotificationGranted": { + "description": "Success message for notification permission" + }, "setupNotificationEnable": "Enable Notifications", - "@setupNotificationEnable": {"description": "Button to enable notifications"}, - "setupNotificationDescription": "Get notified when downloads complete or require attention.", - "@setupNotificationDescription": {"description": "Explanation for notifications"}, - "setupFolderSelected": "Download Folder Selected!", - "@setupFolderSelected": {"description": "Success message for folder selection"}, + "@setupNotificationEnable": { + "description": "Button to enable notifications" + }, "setupFolderChoose": "Choose Download Folder", - "@setupFolderChoose": {"description": "Button to choose folder"}, + "@setupFolderChoose": { + "description": "Button to choose folder" + }, "setupFolderDescription": "Select a folder where your downloaded music will be saved.", - "@setupFolderDescription": {"description": "Explanation for folder selection"}, - "setupChangeFolder": "Change Folder", - "@setupChangeFolder": {"description": "Button to change selected folder"}, + "@setupFolderDescription": { + "description": "Explanation for folder selection" + }, "setupSelectFolder": "Select Folder", - "@setupSelectFolder": {"description": "Button to select folder"}, - "setupSpotifyApiOptional": "Spotify API (Optional)", - "@setupSpotifyApiOptional": {"description": "Spotify API step title"}, - "setupSpotifyApiDescription": "Add your Spotify API credentials for better search results and access to Spotify-exclusive content.", - "@setupSpotifyApiDescription": {"description": "Explanation for Spotify API"}, - "setupUseSpotifyApi": "Use Spotify API", - "@setupUseSpotifyApi": {"description": "Toggle to enable Spotify API"}, - "setupEnterCredentialsBelow": "Enter your credentials below", - "@setupEnterCredentialsBelow": {"description": "Prompt to enter credentials"}, - "setupUsingDeezer": "Using Deezer (no account needed)", - "@setupUsingDeezer": {"description": "Status when using Deezer"}, - "setupEnterClientId": "Enter Spotify Client ID", - "@setupEnterClientId": {"description": "Placeholder for client ID field"}, - "setupEnterClientSecret": "Enter Spotify Client Secret", - "@setupEnterClientSecret": {"description": "Placeholder for client secret field"}, - "setupGetFreeCredentials": "Get your free API credentials from the Spotify Developer Dashboard.", - "@setupGetFreeCredentials": {"description": "Info about getting Spotify credentials"}, + "@setupSelectFolder": { + "description": "Button to select folder" + }, "setupEnableNotifications": "Enable Notifications", - "@setupEnableNotifications": {"description": "Button to enable notifications"}, - "setupProceedToNextStep": "You can now proceed to the next step.", - "@setupProceedToNextStep": {"description": "Message after completing a step"}, - "setupNotificationProgressDescription": "You will receive download progress notifications.", - "@setupNotificationProgressDescription": {"description": "Info about notification usage"}, + "@setupEnableNotifications": { + "description": "Button to enable notifications" + }, "setupNotificationBackgroundDescription": "Get notified about download progress and completion. This helps you track downloads when the app is in background.", - "@setupNotificationBackgroundDescription": {"description": "Detailed notification explanation"}, + "@setupNotificationBackgroundDescription": { + "description": "Detailed notification explanation" + }, "setupSkipForNow": "Skip for now", - "@setupSkipForNow": {"description": "Skip button text"}, - "setupBack": "Back", - "@setupBack": {"description": "Back button text"}, + "@setupSkipForNow": { + "description": "Skip button text" + }, "setupNext": "Next", - "@setupNext": {"description": "Next button text"}, + "@setupNext": { + "description": "Next button text" + }, "setupGetStarted": "Get Started", - "@setupGetStarted": {"description": "Final setup button"}, - "setupSkipAndStart": "Skip & Start", - "@setupSkipAndStart": {"description": "Skip setup and start app"}, + "@setupGetStarted": { + "description": "Final setup button" + }, "setupAllowAccessToManageFiles": "Please enable \"Allow access to manage all files\" in the next screen.", - "@setupAllowAccessToManageFiles": {"description": "Instruction for file access permission"}, - "setupGetCredentialsFromSpotify": "Get credentials from developer.spotify.com", - "@setupGetCredentialsFromSpotify": {"description": "Link text for Spotify developer portal"}, - + "@setupAllowAccessToManageFiles": { + "description": "Instruction for file access permission" + }, "dialogCancel": "Cancel", - "@dialogCancel": {"description": "Dialog button - cancel action"}, - "dialogOk": "OK", - "@dialogOk": {"description": "Dialog button - confirm/acknowledge"}, + "@dialogCancel": { + "description": "Dialog button - cancel action" + }, "dialogSave": "Save", - "@dialogSave": {"description": "Dialog button - save changes"}, + "@dialogSave": { + "description": "Dialog button - save changes" + }, "dialogDelete": "Delete", - "@dialogDelete": {"description": "Dialog button - delete item"}, + "@dialogDelete": { + "description": "Dialog button - delete item" + }, "dialogRetry": "Retry", - "@dialogRetry": {"description": "Dialog button - retry action"}, - "dialogClose": "Close", - "@dialogClose": {"description": "Dialog button - close dialog"}, - "dialogYes": "Yes", - "@dialogYes": {"description": "Dialog button - confirm yes"}, - "dialogNo": "No", - "@dialogNo": {"description": "Dialog button - confirm no"}, + "@dialogRetry": { + "description": "Dialog button - retry action" + }, "dialogClear": "Clear", - "@dialogClear": {"description": "Dialog button - clear items"}, - "dialogConfirm": "Confirm", - "@dialogConfirm": {"description": "Dialog button - confirm action"}, + "@dialogClear": { + "description": "Dialog button - clear items" + }, "dialogDone": "Done", - "@dialogDone": {"description": "Dialog button - action completed"}, + "@dialogDone": { + "description": "Dialog button - action completed" + }, "dialogImport": "Import", - "@dialogImport": {"description": "Dialog button - import data"}, + "@dialogImport": { + "description": "Dialog button - import data" + }, "dialogDiscard": "Discard", - "@dialogDiscard": {"description": "Dialog button - discard changes"}, + "@dialogDiscard": { + "description": "Dialog button - discard changes" + }, "dialogRemove": "Remove", - "@dialogRemove": {"description": "Dialog button - remove item"}, + "@dialogRemove": { + "description": "Dialog button - remove item" + }, "dialogUninstall": "Uninstall", - "@dialogUninstall": {"description": "Dialog button - uninstall extension"}, + "@dialogUninstall": { + "description": "Dialog button - uninstall extension" + }, "dialogDiscardChanges": "Discard Changes?", - "@dialogDiscardChanges": {"description": "Dialog title - unsaved changes warning"}, + "@dialogDiscardChanges": { + "description": "Dialog title - unsaved changes warning" + }, "dialogUnsavedChanges": "You have unsaved changes. Do you want to discard them?", - "@dialogUnsavedChanges": {"description": "Dialog message - unsaved changes"}, - "dialogDownloadFailed": "Download Failed", - "@dialogDownloadFailed": {"description": "Dialog title - download error"}, - "dialogTrackLabel": "Track:", - "@dialogTrackLabel": {"description": "Label for track name in error dialog"}, - "dialogArtistLabel": "Artist:", - "@dialogArtistLabel": {"description": "Label for artist name in error dialog"}, - "dialogErrorLabel": "Error:", - "@dialogErrorLabel": {"description": "Label for error message"}, + "@dialogUnsavedChanges": { + "description": "Dialog message - unsaved changes" + }, "dialogClearAll": "Clear All", - "@dialogClearAll": {"description": "Dialog title - clear all items"}, - "dialogClearAllDownloads": "Are you sure you want to clear all downloads?", - "@dialogClearAllDownloads": {"description": "Dialog message - clear downloads confirmation"}, - "dialogRemoveFromDevice": "Remove from device?", - "@dialogRemoveFromDevice": {"description": "Dialog title - delete file confirmation"}, + "@dialogClearAll": { + "description": "Dialog title - clear all items" + }, "dialogRemoveExtension": "Remove Extension", - "@dialogRemoveExtension": {"description": "Dialog title - uninstall extension"}, + "@dialogRemoveExtension": { + "description": "Dialog title - uninstall extension" + }, "dialogRemoveExtensionMessage": "Are you sure you want to remove this extension? This cannot be undone.", - "@dialogRemoveExtensionMessage": {"description": "Dialog message - uninstall confirmation"}, + "@dialogRemoveExtensionMessage": { + "description": "Dialog message - uninstall confirmation" + }, "dialogUninstallExtension": "Uninstall Extension?", - "@dialogUninstallExtension": {"description": "Dialog title - uninstall extension"}, + "@dialogUninstallExtension": { + "description": "Dialog title - uninstall extension" + }, "dialogUninstallExtensionMessage": "Are you sure you want to remove {extensionName}?", "@dialogUninstallExtensionMessage": { "description": "Dialog message - uninstall specific extension", "placeholders": { - "extensionName": {"type": "String"} + "extensionName": { + "type": "String" + } } }, "dialogClearHistoryTitle": "Clear History", - "@dialogClearHistoryTitle": {"description": "Dialog title - clear download history"}, + "@dialogClearHistoryTitle": { + "description": "Dialog title - clear download history" + }, "dialogClearHistoryMessage": "Are you sure you want to clear all download history? This cannot be undone.", - "@dialogClearHistoryMessage": {"description": "Dialog message - clear history confirmation"}, + "@dialogClearHistoryMessage": { + "description": "Dialog message - clear history confirmation" + }, "dialogDeleteSelectedTitle": "Delete Selected", - "@dialogDeleteSelectedTitle": {"description": "Dialog title - delete selected items"}, + "@dialogDeleteSelectedTitle": { + "description": "Dialog title - delete selected items" + }, "dialogDeleteSelectedMessage": "Delete {count} {count, plural, =1{track} other{tracks}} from history?\n\nThis will also delete the files from storage.", "@dialogDeleteSelectedMessage": { "description": "Dialog message - delete selected tracks", "placeholders": { - "count": {"type": "int"} + "count": { + "type": "int" + } } }, "dialogImportPlaylistTitle": "Import Playlist", - "@dialogImportPlaylistTitle": {"description": "Dialog title - import CSV playlist"}, + "@dialogImportPlaylistTitle": { + "description": "Dialog title - import CSV playlist" + }, "dialogImportPlaylistMessage": "Found {count} tracks in CSV. Add them to download queue?", "csvImportTracks": "{count} tracks from CSV", "@csvImportTracks": { "description": "Label shown in quality picker for CSV import", "placeholders": { - "count": {"type": "int"} + "count": { + "type": "int" + } } }, "@dialogImportPlaylistMessage": { "description": "Dialog message - import playlist confirmation", "placeholders": { - "count": {"type": "int"} + "count": { + "type": "int" + } } }, - "snackbarAddedToQueue": "Added \"{trackName}\" to queue", "@snackbarAddedToQueue": { "description": "Snackbar - track added to download queue", "placeholders": { - "trackName": {"type": "String"} + "trackName": { + "type": "String" + } } }, "snackbarAddedTracksToQueue": "Added {count} tracks to queue", "@snackbarAddedTracksToQueue": { "description": "Snackbar - multiple tracks added to queue", "placeholders": { - "count": {"type": "int"} + "count": { + "type": "int" + } } }, "snackbarAlreadyDownloaded": "\"{trackName}\" already downloaded", "@snackbarAlreadyDownloaded": { "description": "Snackbar - track already exists", "placeholders": { - "trackName": {"type": "String"} + "trackName": { + "type": "String" + } } }, "snackbarAlreadyInLibrary": "\"{trackName}\" already exists in your library", "@snackbarAlreadyInLibrary": { "description": "Snackbar - track already exists in local library", "placeholders": { - "trackName": {"type": "String"} + "trackName": { + "type": "String" + } } }, "snackbarHistoryCleared": "History cleared", - "@snackbarHistoryCleared": {"description": "Snackbar - history deleted"}, + "@snackbarHistoryCleared": { + "description": "Snackbar - history deleted" + }, "snackbarCredentialsSaved": "Credentials saved", - "@snackbarCredentialsSaved": {"description": "Snackbar - Spotify credentials saved"}, + "@snackbarCredentialsSaved": { + "description": "Snackbar - Spotify credentials saved" + }, "snackbarCredentialsCleared": "Credentials cleared", - "@snackbarCredentialsCleared": {"description": "Snackbar - Spotify credentials removed"}, + "@snackbarCredentialsCleared": { + "description": "Snackbar - Spotify credentials removed" + }, "snackbarDeletedTracks": "Deleted {count} {count, plural, =1{track} other{tracks}}", "@snackbarDeletedTracks": { "description": "Snackbar - tracks deleted", "placeholders": { - "count": {"type": "int"} + "count": { + "type": "int" + } } }, "snackbarCannotOpenFile": "Cannot open file: {error}", "@snackbarCannotOpenFile": { "description": "Snackbar - file open error", "placeholders": { - "error": {"type": "String"} + "error": { + "type": "String" + } } }, "snackbarFillAllFields": "Please fill all fields", - "@snackbarFillAllFields": {"description": "Snackbar - validation error"}, + "@snackbarFillAllFields": { + "description": "Snackbar - validation error" + }, "snackbarViewQueue": "View Queue", - "@snackbarViewQueue": {"description": "Snackbar action - view download queue"}, - "snackbarFailedToLoad": "Failed to load: {error}", - "@snackbarFailedToLoad": { - "description": "Snackbar - loading error", - "placeholders": { - "error": {"type": "String"} - } + "@snackbarViewQueue": { + "description": "Snackbar action - view download queue" }, "snackbarUrlCopied": "{platform} URL copied to clipboard", "@snackbarUrlCopied": { "description": "Snackbar - URL copied", "placeholders": { - "platform": {"type": "String", "description": "Platform name (Spotify/Deezer)"} + "platform": { + "type": "String", + "description": "Platform name (Spotify/Deezer)" + } } }, "snackbarFileNotFound": "File not found", - "@snackbarFileNotFound": {"description": "Snackbar - file doesn't exist"}, + "@snackbarFileNotFound": { + "description": "Snackbar - file doesn't exist" + }, "snackbarSelectExtFile": "Please select a .spotiflac-ext file", - "@snackbarSelectExtFile": {"description": "Snackbar - wrong file type selected"}, + "@snackbarSelectExtFile": { + "description": "Snackbar - wrong file type selected" + }, "snackbarProviderPrioritySaved": "Provider priority saved", - "@snackbarProviderPrioritySaved": {"description": "Snackbar - provider order saved"}, + "@snackbarProviderPrioritySaved": { + "description": "Snackbar - provider order saved" + }, "snackbarMetadataProviderSaved": "Metadata provider priority saved", - "@snackbarMetadataProviderSaved": {"description": "Snackbar - metadata provider order saved"}, + "@snackbarMetadataProviderSaved": { + "description": "Snackbar - metadata provider order saved" + }, "snackbarExtensionInstalled": "{extensionName} installed.", "@snackbarExtensionInstalled": { "description": "Snackbar - extension installed successfully", "placeholders": { - "extensionName": {"type": "String"} + "extensionName": { + "type": "String" + } } }, "snackbarExtensionUpdated": "{extensionName} updated.", "@snackbarExtensionUpdated": { "description": "Snackbar - extension updated successfully", "placeholders": { - "extensionName": {"type": "String"} + "extensionName": { + "type": "String" + } } }, "snackbarFailedToInstall": "Failed to install extension", - "@snackbarFailedToInstall": {"description": "Snackbar - extension install error"}, + "@snackbarFailedToInstall": { + "description": "Snackbar - extension install error" + }, "snackbarFailedToUpdate": "Failed to update extension", - "@snackbarFailedToUpdate": {"description": "Snackbar - extension update error"}, - + "@snackbarFailedToUpdate": { + "description": "Snackbar - extension update error" + }, "errorRateLimited": "Rate Limited", - "@errorRateLimited": {"description": "Error title - too many requests"}, + "@errorRateLimited": { + "description": "Error title - too many requests" + }, "errorRateLimitedMessage": "Too many requests. Please wait a moment before searching again.", - "@errorRateLimitedMessage": {"description": "Error message - rate limit explanation"}, - "errorFailedToLoad": "Failed to load {item}", - "@errorFailedToLoad": { - "description": "Error message - loading failed", - "placeholders": { - "item": {"type": "String", "description": "Item that failed to load (album/playlist/etc)"} - } + "@errorRateLimitedMessage": { + "description": "Error message - rate limit explanation" }, "errorNoTracksFound": "No tracks found", - "@errorNoTracksFound": {"description": "Error - search returned no results"}, - "errorSeekNotSupported": "Seeking is not supported for this live stream", - "@errorSeekNotSupported": {"description": "Error - seek disabled for live decrypted stream"}, + "@errorNoTracksFound": { + "description": "Error - search returned no results" + }, "errorMissingExtensionSource": "Cannot load {item}: missing extension source", "@errorMissingExtensionSource": { "description": "Error - extension source not available", "placeholders": { - "item": {"type": "String"} + "item": { + "type": "String" + } } }, - - "statusQueued": "Queued", - "@statusQueued": {"description": "Download status - waiting in queue"}, - "statusDownloading": "Downloading", - "@statusDownloading": {"description": "Download status - in progress"}, - "statusFinalizing": "Finalizing", - "@statusFinalizing": {"description": "Download status - writing metadata"}, - "statusCompleted": "Completed", - "@statusCompleted": {"description": "Download status - finished"}, - "statusFailed": "Failed", - "@statusFailed": {"description": "Download status - error occurred"}, - "statusSkipped": "Skipped", - "@statusSkipped": {"description": "Download status - already exists"}, - "statusPaused": "Paused", - "@statusPaused": {"description": "Download status - paused"}, - "actionPause": "Pause", - "@actionPause": {"description": "Action button - pause download"}, + "@actionPause": { + "description": "Action button - pause download" + }, "actionResume": "Resume", - "@actionResume": {"description": "Action button - resume download"}, + "@actionResume": { + "description": "Action button - resume download" + }, "actionCancel": "Cancel", - "@actionCancel": {"description": "Action button - cancel operation"}, - "actionStop": "Stop", - "@actionStop": {"description": "Action button - stop operation"}, - "actionSelect": "Select", - "@actionSelect": {"description": "Action button - enter selection mode"}, + "@actionCancel": { + "description": "Action button - cancel operation" + }, "actionSelectAll": "Select All", - "@actionSelectAll": {"description": "Action button - select all items"}, + "@actionSelectAll": { + "description": "Action button - select all items" + }, "actionDeselect": "Deselect", - "@actionDeselect": {"description": "Action button - deselect all"}, - "actionPaste": "Paste", - "@actionPaste": {"description": "Action button - paste from clipboard"}, - "actionImportCsv": "Import CSV", - "@actionImportCsv": {"description": "Action button - import CSV file"}, + "@actionDeselect": { + "description": "Action button - deselect all" + }, "actionRemoveCredentials": "Remove Credentials", - "@actionRemoveCredentials": {"description": "Action button - delete Spotify credentials"}, + "@actionRemoveCredentials": { + "description": "Action button - delete Spotify credentials" + }, "actionSaveCredentials": "Save Credentials", - "@actionSaveCredentials": {"description": "Action button - save Spotify credentials"}, - + "@actionSaveCredentials": { + "description": "Action button - save Spotify credentials" + }, "selectionSelected": "{count} selected", "@selectionSelected": { "description": "Selection count indicator", "placeholders": { - "count": {"type": "int"} + "count": { + "type": "int" + } } }, "selectionAllSelected": "All tracks selected", - "@selectionAllSelected": {"description": "Status - all items selected"}, - "selectionTapToSelect": "Tap tracks to select", - "@selectionTapToSelect": {"description": "Hint - how to select items"}, - "selectionDeleteTracks": "Delete {count} {count, plural, =1{track} other{tracks}}", - "@selectionDeleteTracks": { - "description": "Delete button with count", - "placeholders": { - "count": {"type": "int"} - } + "@selectionAllSelected": { + "description": "Status - all items selected" }, "selectionSelectToDelete": "Select tracks to delete", - "@selectionSelectToDelete": {"description": "Placeholder when nothing selected"}, - + "@selectionSelectToDelete": { + "description": "Placeholder when nothing selected" + }, "progressFetchingMetadata": "Fetching metadata... {current}/{total}", "@progressFetchingMetadata": { "description": "Progress indicator - loading track info", "placeholders": { - "current": {"type": "int"}, - "total": {"type": "int"} + "current": { + "type": "int" + }, + "total": { + "type": "int" + } } }, "progressReadingCsv": "Reading CSV...", - "@progressReadingCsv": {"description": "Progress indicator - parsing CSV file"}, - - "searchSongs": "Songs", - "@searchSongs": {"description": "Search result category - songs"}, - "searchArtists": "Artists", - "@searchArtists": {"description": "Search result category - artists"}, - "searchAlbums": "Albums", - "@searchAlbums": {"description": "Search result category - albums"}, - "searchPlaylists": "Playlists", - "@searchPlaylists": {"description": "Search result category - playlists"}, - - "tooltipPlay": "Play", - "@tooltipPlay": {"description": "Tooltip - play button"}, - "tooltipCancel": "Cancel", - "@tooltipCancel": {"description": "Tooltip - cancel button"}, - "tooltipStop": "Stop", - "@tooltipStop": {"description": "Tooltip - stop button"}, - "tooltipRetry": "Retry", - "@tooltipRetry": {"description": "Tooltip - retry button"}, - "tooltipRemove": "Remove", - "@tooltipRemove": {"description": "Tooltip - remove button"}, - "tooltipClear": "Clear", - "@tooltipClear": {"description": "Tooltip - clear button"}, - "tooltipPaste": "Paste", - "@tooltipPaste": {"description": "Tooltip - paste button"}, - - "filenameFormat": "Filename Format", - "@filenameFormat": {"description": "Setting title - filename pattern"}, - "filenameFormatPreview": "Preview: {preview}", - "@filenameFormatPreview": { - "description": "Preview of filename pattern", - "placeholders": { - "preview": {"type": "String"} - } + "@progressReadingCsv": { + "description": "Progress indicator - parsing CSV file" + }, + "searchSongs": "Songs", + "@searchSongs": { + "description": "Search result category - songs" + }, + "searchArtists": "Artists", + "@searchArtists": { + "description": "Search result category - artists" + }, + "searchAlbums": "Albums", + "@searchAlbums": { + "description": "Search result category - albums" + }, + "searchPlaylists": "Playlists", + "@searchPlaylists": { + "description": "Search result category - playlists" + }, + "tooltipPlay": "Play", + "@tooltipPlay": { + "description": "Tooltip - play button" + }, + "filenameFormat": "Filename Format", + "@filenameFormat": { + "description": "Setting title - filename pattern" }, - "filenameAvailablePlaceholders": "Available placeholders:", - "@filenameAvailablePlaceholders": {"description": "Label for placeholder list"}, - "filenameHint": "{artist} - {title}", - "@filenameHint": {"description": "Default filename format hint"}, "filenameShowAdvancedTags": "Show advanced tags", "@filenameShowAdvancedTags": { "description": "Toggle label for showing advanced filename tags" @@ -900,1600 +999,2107 @@ "@filenameShowAdvancedTagsDescription": { "description": "Description for advanced filename tag toggle" }, - - "folderOrganization": "Folder Organization", - "@folderOrganization": {"description": "Setting title - folder structure"}, "folderOrganizationNone": "No organization", - "@folderOrganizationNone": {"description": "Folder option - flat structure"}, + "@folderOrganizationNone": { + "description": "Folder option - flat structure" + }, "folderOrganizationByArtist": "By Artist", - "@folderOrganizationByArtist": {"description": "Folder option - artist folders"}, + "@folderOrganizationByArtist": { + "description": "Folder option - artist folders" + }, "folderOrganizationByAlbum": "By Album", - "@folderOrganizationByAlbum": {"description": "Folder option - album folders"}, + "@folderOrganizationByAlbum": { + "description": "Folder option - album folders" + }, "folderOrganizationByArtistAlbum": "Artist/Album", - "@folderOrganizationByArtistAlbum": {"description": "Folder option - nested folders"}, + "@folderOrganizationByArtistAlbum": { + "description": "Folder option - nested folders" + }, "folderOrganizationDescription": "Organize downloaded files into folders", - "@folderOrganizationDescription": {"description": "Folder organization sheet description"}, + "@folderOrganizationDescription": { + "description": "Folder organization sheet description" + }, "folderOrganizationNoneSubtitle": "All files in download folder", - "@folderOrganizationNoneSubtitle": {"description": "Subtitle for no organization option"}, + "@folderOrganizationNoneSubtitle": { + "description": "Subtitle for no organization option" + }, "folderOrganizationByArtistSubtitle": "Separate folder for each artist", - "@folderOrganizationByArtistSubtitle": {"description": "Subtitle for artist folder option"}, + "@folderOrganizationByArtistSubtitle": { + "description": "Subtitle for artist folder option" + }, "folderOrganizationByAlbumSubtitle": "Separate folder for each album", - "@folderOrganizationByAlbumSubtitle": {"description": "Subtitle for album folder option"}, + "@folderOrganizationByAlbumSubtitle": { + "description": "Subtitle for album folder option" + }, "folderOrganizationByArtistAlbumSubtitle": "Nested folders for artist and album", - "@folderOrganizationByArtistAlbumSubtitle": {"description": "Subtitle for nested folder option"}, - + "@folderOrganizationByArtistAlbumSubtitle": { + "description": "Subtitle for nested folder option" + }, "updateAvailable": "Update Available", - "@updateAvailable": {"description": "Update dialog title"}, - "updateNewVersion": "Version {version} is available", - "@updateNewVersion": { - "description": "Update available message", - "placeholders": { - "version": {"type": "String"} - } + "@updateAvailable": { + "description": "Update dialog title" }, - "updateDownload": "Download", - "@updateDownload": {"description": "Update button - download update"}, "updateLater": "Later", - "@updateLater": {"description": "Update button - dismiss"}, - "updateChangelog": "Changelog", - "@updateChangelog": {"description": "Link to changelog"}, - "updateStartingDownload": "Starting download...", - "@updateStartingDownload": {"description": "Update status - initializing"}, - "updateDownloadFailed": "Download failed", - "@updateDownloadFailed": {"description": "Update error title"}, - "updateFailedMessage": "Failed to download update", - "@updateFailedMessage": {"description": "Update error message"}, - "updateNewVersionReady": "A new version is ready", - "@updateNewVersionReady": {"description": "Update subtitle"}, - "updateCurrent": "Current", - "@updateCurrent": {"description": "Label for current version"}, - "updateNew": "New", - "@updateNew": {"description": "Label for new version"}, - "updateDownloading": "Downloading...", - "@updateDownloading": {"description": "Update status - downloading"}, - "updateWhatsNew": "What's New", - "@updateWhatsNew": {"description": "Changelog section title"}, - "updateDownloadInstall": "Download & Install", - "@updateDownloadInstall": {"description": "Update button - download and install"}, - "updateDontRemind": "Don't remind", - "@updateDontRemind": {"description": "Update button - skip this version"}, - - "providerPriority": "Provider Priority", - "@providerPriority": {"description": "Setting title - download provider order"}, - "providerPrioritySubtitle": "Drag to reorder download providers", - "@providerPrioritySubtitle": {"description": "Subtitle for provider priority"}, - "providerPriorityTitle": "Provider Priority", - "@providerPriorityTitle": {"description": "Provider priority page title"}, - "providerPriorityDescription": "Drag to reorder download providers. The app will try providers from top to bottom when downloading tracks.", - "@providerPriorityDescription": {"description": "Provider priority page description"}, - "providerPriorityInfo": "If a track is not available on the first provider, the app will automatically try the next one.", - "@providerPriorityInfo": {"description": "Info tip about fallback behavior"}, - "providerBuiltIn": "Built-in", - "@providerBuiltIn": {"description": "Label for built-in providers (Tidal/Qobuz/Amazon)"}, - "providerExtension": "Extension", - "@providerExtension": {"description": "Label for extension-provided providers"}, - - "metadataProviderPriority": "Metadata Provider Priority", - "@metadataProviderPriority": {"description": "Setting title - metadata provider order"}, - "metadataProviderPrioritySubtitle": "Order used when fetching track metadata", - "@metadataProviderPrioritySubtitle": {"description": "Subtitle for metadata priority"}, - "metadataProviderPriorityTitle": "Metadata Priority", - "@metadataProviderPriorityTitle": {"description": "Metadata priority page title"}, - "metadataProviderPriorityDescription": "Drag to reorder metadata providers. The app will try providers from top to bottom when searching for tracks and fetching metadata.", - "@metadataProviderPriorityDescription": {"description": "Metadata priority page description"}, - "metadataProviderPriorityInfo": "Deezer has no rate limits and is recommended as primary. Spotify may rate limit after many requests.", - "@metadataProviderPriorityInfo": {"description": "Info tip about rate limits"}, - "metadataNoRateLimits": "No rate limits", - "@metadataNoRateLimits": {"description": "Deezer provider description"}, - "metadataMayRateLimit": "May rate limit", - "@metadataMayRateLimit": {"description": "Spotify provider description"}, - - "logTitle": "Logs", - "@logTitle": {"description": "Logs screen title"}, - "logCopy": "Copy Logs", - "@logCopy": {"description": "Action - copy logs to clipboard"}, - "logClear": "Clear Logs", - "@logClear": {"description": "Action - delete all logs"}, - "logShare": "Share Logs", - "@logShare": {"description": "Action - share logs file"}, - "logEmpty": "No logs yet", - "@logEmpty": {"description": "Empty state title"}, - "logCopied": "Logs copied to clipboard", - "@logCopied": {"description": "Snackbar - logs copied"}, - "logSearchHint": "Search logs...", - "@logSearchHint": {"description": "Log search placeholder"}, - "logFilterLevel": "Level", - "@logFilterLevel": {"description": "Filter by log level"}, - "logFilterSection": "Filter", - "@logFilterSection": {"description": "Filter section title"}, - "logShareLogs": "Share logs", - "@logShareLogs": {"description": "Share button tooltip"}, - "logClearLogs": "Clear logs", - "@logClearLogs": {"description": "Clear button tooltip"}, - "logClearLogsTitle": "Clear Logs", - "@logClearLogsTitle": {"description": "Clear logs dialog title"}, - "logClearLogsMessage": "Are you sure you want to clear all logs?", - "@logClearLogsMessage": {"description": "Clear logs confirmation message"}, - "logIspBlocking": "ISP BLOCKING DETECTED", - "@logIspBlocking": {"description": "Error category - ISP blocking"}, - "logRateLimited": "RATE LIMITED", - "@logRateLimited": {"description": "Error category - rate limiting"}, - "logNetworkError": "NETWORK ERROR", - "@logNetworkError": {"description": "Error category - network issues"}, - "logTrackNotFound": "TRACK NOT FOUND", - "@logTrackNotFound": {"description": "Error category - missing tracks"}, - "logFilterBySeverity": "Filter logs by severity", - "@logFilterBySeverity": {"description": "Filter dialog title"}, - "logNoLogsYet": "No logs yet", - "@logNoLogsYet": {"description": "Empty state title"}, - "logNoLogsYetSubtitle": "Logs will appear here as you use the app", - "@logNoLogsYetSubtitle": {"description": "Empty state subtitle"}, - "logIssueSummary": "Issue Summary", - "@logIssueSummary": {"description": "Section header for error summary"}, - "logIspBlockingDescription": "Your ISP may be blocking access to download services", - "@logIspBlockingDescription": {"description": "ISP blocking explanation"}, - "logIspBlockingSuggestion": "Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8", - "@logIspBlockingSuggestion": {"description": "ISP blocking fix suggestion"}, - "logRateLimitedDescription": "Too many requests to the service", - "@logRateLimitedDescription": {"description": "Rate limit explanation"}, - "logRateLimitedSuggestion": "Wait a few minutes before trying again", - "@logRateLimitedSuggestion": {"description": "Rate limit fix suggestion"}, - "logNetworkErrorDescription": "Connection issues detected", - "@logNetworkErrorDescription": {"description": "Network error explanation"}, - "logNetworkErrorSuggestion": "Check your internet connection", - "@logNetworkErrorSuggestion": {"description": "Network error fix suggestion"}, - "logTrackNotFoundDescription": "Some tracks could not be found on download services", - "@logTrackNotFoundDescription": {"description": "Track not found explanation"}, - "logTrackNotFoundSuggestion": "The track may not be available in lossless quality", - "@logTrackNotFoundSuggestion": {"description": "Track not found explanation"}, - "logTotalErrors": "Total errors: {count}", - "@logTotalErrors": { - "description": "Error count display", - "placeholders": { - "count": {"type": "int"} - } + "@updateLater": { + "description": "Update button - dismiss" }, - "logAffected": "Affected: {domains}", - "@logAffected": { - "description": "Affected domains display", - "placeholders": { - "domains": {"type": "String"} - } + "updateStartingDownload": "Starting download...", + "@updateStartingDownload": { + "description": "Update status - initializing" + }, + "updateDownloadFailed": "Download failed", + "@updateDownloadFailed": { + "description": "Update error title" + }, + "updateFailedMessage": "Failed to download update", + "@updateFailedMessage": { + "description": "Update error message" + }, + "updateNewVersionReady": "A new version is ready", + "@updateNewVersionReady": { + "description": "Update subtitle" + }, + "updateCurrent": "Current", + "@updateCurrent": { + "description": "Label for current version" + }, + "updateNew": "New", + "@updateNew": { + "description": "Label for new version" + }, + "updateDownloading": "Downloading...", + "@updateDownloading": { + "description": "Update status - downloading" + }, + "updateWhatsNew": "What's New", + "@updateWhatsNew": { + "description": "Changelog section title" + }, + "updateDownloadInstall": "Download & Install", + "@updateDownloadInstall": { + "description": "Update button - download and install" + }, + "updateDontRemind": "Don't remind", + "@updateDontRemind": { + "description": "Update button - skip this version" + }, + "providerPriorityTitle": "Provider Priority", + "@providerPriorityTitle": { + "description": "Provider priority page title" + }, + "providerPriorityDescription": "Drag to reorder download providers. The app will try providers from top to bottom when downloading tracks.", + "@providerPriorityDescription": { + "description": "Provider priority page description" + }, + "providerPriorityInfo": "If a track is not available on the first provider, the app will automatically try the next one.", + "@providerPriorityInfo": { + "description": "Info tip about fallback behavior" + }, + "providerBuiltIn": "Built-in", + "@providerBuiltIn": { + "description": "Label for built-in providers (Tidal/Qobuz/Amazon)" + }, + "providerExtension": "Extension", + "@providerExtension": { + "description": "Label for extension-provided providers" + }, + "metadataProviderPriorityTitle": "Metadata Priority", + "@metadataProviderPriorityTitle": { + "description": "Metadata priority page title" + }, + "metadataProviderPriorityDescription": "Drag to reorder metadata providers. The app will try providers from top to bottom when searching for tracks and fetching metadata.", + "@metadataProviderPriorityDescription": { + "description": "Metadata priority page description" + }, + "metadataProviderPriorityInfo": "Deezer has no rate limits and is recommended as primary. Spotify may rate limit after many requests.", + "@metadataProviderPriorityInfo": { + "description": "Info tip about rate limits" + }, + "metadataNoRateLimits": "No rate limits", + "@metadataNoRateLimits": { + "description": "Deezer provider description" + }, + "metadataMayRateLimit": "May rate limit", + "@metadataMayRateLimit": { + "description": "Spotify provider description" + }, + "logTitle": "Logs", + "@logTitle": { + "description": "Logs screen title" + }, + "logCopied": "Logs copied to clipboard", + "@logCopied": { + "description": "Snackbar - logs copied" + }, + "logSearchHint": "Search logs...", + "@logSearchHint": { + "description": "Log search placeholder" + }, + "logFilterLevel": "Level", + "@logFilterLevel": { + "description": "Filter by log level" + }, + "logFilterSection": "Filter", + "@logFilterSection": { + "description": "Filter section title" + }, + "logShareLogs": "Share logs", + "@logShareLogs": { + "description": "Share button tooltip" + }, + "logClearLogs": "Clear logs", + "@logClearLogs": { + "description": "Clear button tooltip" + }, + "logClearLogsTitle": "Clear Logs", + "@logClearLogsTitle": { + "description": "Clear logs dialog title" + }, + "logClearLogsMessage": "Are you sure you want to clear all logs?", + "@logClearLogsMessage": { + "description": "Clear logs confirmation message" + }, + "logFilterBySeverity": "Filter logs by severity", + "@logFilterBySeverity": { + "description": "Filter dialog title" + }, + "logNoLogsYet": "No logs yet", + "@logNoLogsYet": { + "description": "Empty state title" + }, + "logNoLogsYetSubtitle": "Logs will appear here as you use the app", + "@logNoLogsYetSubtitle": { + "description": "Empty state subtitle" }, "logEntriesFiltered": "Entries ({count} filtered)", "@logEntriesFiltered": { "description": "Log count with filter active", "placeholders": { - "count": {"type": "int"} + "count": { + "type": "int" + } } }, "logEntries": "Entries ({count})", "@logEntries": { "description": "Total log count", "placeholders": { - "count": {"type": "int"} + "count": { + "type": "int" + } } }, - "credentialsTitle": "Spotify Credentials", - "@credentialsTitle": {"description": "Credentials dialog title"}, + "@credentialsTitle": { + "description": "Credentials dialog title" + }, "credentialsDescription": "Enter your Client ID and Secret to use your own Spotify application quota.", - "@credentialsDescription": {"description": "Credentials dialog explanation"}, + "@credentialsDescription": { + "description": "Credentials dialog explanation" + }, "credentialsClientId": "Client ID", - "@credentialsClientId": {"description": "Client ID field label - DO NOT TRANSLATE"}, + "@credentialsClientId": { + "description": "Client ID field label - DO NOT TRANSLATE" + }, "credentialsClientIdHint": "Paste Client ID", - "@credentialsClientIdHint": {"description": "Client ID placeholder"}, + "@credentialsClientIdHint": { + "description": "Client ID placeholder" + }, "credentialsClientSecret": "Client Secret", - "@credentialsClientSecret": {"description": "Client Secret field label - DO NOT TRANSLATE"}, + "@credentialsClientSecret": { + "description": "Client Secret field label - DO NOT TRANSLATE" + }, "credentialsClientSecretHint": "Paste Client Secret", - "@credentialsClientSecretHint": {"description": "Client Secret placeholder"}, - + "@credentialsClientSecretHint": { + "description": "Client Secret placeholder" + }, "channelStable": "Stable", - "@channelStable": {"description": "Update channel - stable releases"}, + "@channelStable": { + "description": "Update channel - stable releases" + }, "channelPreview": "Preview", - "@channelPreview": {"description": "Update channel - beta/preview releases"}, - + "@channelPreview": { + "description": "Update channel - beta/preview releases" + }, "sectionSearchSource": "Search Source", - "@sectionSearchSource": {"description": "Settings section header"}, + "@sectionSearchSource": { + "description": "Settings section header" + }, "sectionDownload": "Download", - "@sectionDownload": {"description": "Settings section header"}, + "@sectionDownload": { + "description": "Settings section header" + }, "sectionPerformance": "Performance", - "@sectionPerformance": {"description": "Settings section header"}, + "@sectionPerformance": { + "description": "Settings section header" + }, "sectionApp": "App", - "@sectionApp": {"description": "Settings section header"}, + "@sectionApp": { + "description": "Settings section header" + }, "sectionData": "Data", - "@sectionData": {"description": "Settings section header"}, + "@sectionData": { + "description": "Settings section header" + }, "sectionDebug": "Debug", - "@sectionDebug": {"description": "Settings section header"}, + "@sectionDebug": { + "description": "Settings section header" + }, "sectionService": "Service", - "@sectionService": {"description": "Settings section header"}, + "@sectionService": { + "description": "Settings section header" + }, "sectionAudioQuality": "Audio Quality", - "@sectionAudioQuality": {"description": "Settings section header"}, + "@sectionAudioQuality": { + "description": "Settings section header" + }, "sectionFileSettings": "File Settings", - "@sectionFileSettings": {"description": "Settings section header"}, + "@sectionFileSettings": { + "description": "Settings section header" + }, "sectionLyrics": "Lyrics", - "@sectionLyrics": {"description": "Settings section header"}, - + "@sectionLyrics": { + "description": "Settings section header" + }, "lyricsMode": "Lyrics Mode", - "@lyricsMode": {"description": "Setting - how to save lyrics"}, + "@lyricsMode": { + "description": "Setting - how to save lyrics" + }, "lyricsModeDescription": "Choose how lyrics are saved with your downloads", - "@lyricsModeDescription": {"description": "Lyrics mode picker description"}, + "@lyricsModeDescription": { + "description": "Lyrics mode picker description" + }, "lyricsModeEmbed": "Embed in file", - "@lyricsModeEmbed": {"description": "Lyrics mode option - embed in audio file"}, + "@lyricsModeEmbed": { + "description": "Lyrics mode option - embed in audio file" + }, "lyricsModeEmbedSubtitle": "Lyrics stored inside FLAC metadata", - "@lyricsModeEmbedSubtitle": {"description": "Subtitle for embed option"}, + "@lyricsModeEmbedSubtitle": { + "description": "Subtitle for embed option" + }, "lyricsModeExternal": "External .lrc file", - "@lyricsModeExternal": {"description": "Lyrics mode option - separate LRC file"}, + "@lyricsModeExternal": { + "description": "Lyrics mode option - separate LRC file" + }, "lyricsModeExternalSubtitle": "Separate .lrc file for players like Samsung Music", - "@lyricsModeExternalSubtitle": {"description": "Subtitle for external option"}, + "@lyricsModeExternalSubtitle": { + "description": "Subtitle for external option" + }, "lyricsModeBoth": "Both", - "@lyricsModeBoth": {"description": "Lyrics mode option - embed and external"}, + "@lyricsModeBoth": { + "description": "Lyrics mode option - embed and external" + }, "lyricsModeBothSubtitle": "Embed and save .lrc file", - "@lyricsModeBothSubtitle": {"description": "Subtitle for both option"}, - + "@lyricsModeBothSubtitle": { + "description": "Subtitle for both option" + }, "sectionColor": "Color", - "@sectionColor": {"description": "Settings section header"}, + "@sectionColor": { + "description": "Settings section header" + }, "sectionTheme": "Theme", - "@sectionTheme": {"description": "Settings section header"}, + "@sectionTheme": { + "description": "Settings section header" + }, "sectionLayout": "Layout", -"@sectionLayout": {"description": "Settings section header"}, + "@sectionLayout": { + "description": "Settings section header" + }, "sectionLanguage": "Language", - "@sectionLanguage": {"description": "Settings section header for language"}, + "@sectionLanguage": { + "description": "Settings section header for language" + }, "appearanceLanguage": "App Language", - "@appearanceLanguage": {"description": "Language setting title"}, - "appearanceLanguageSubtitle": "Choose your preferred language", - "@appearanceLanguageSubtitle": {"description": "Language setting subtitle"}, - + "@appearanceLanguage": { + "description": "Language setting title" + }, "settingsAppearanceSubtitle": "Theme, colors, display", - "@settingsAppearanceSubtitle": {"description": "Appearance settings description"}, + "@settingsAppearanceSubtitle": { + "description": "Appearance settings description" + }, "settingsDownloadSubtitle": "Service, quality, filename format", - "@settingsDownloadSubtitle": {"description": "Download settings description"}, + "@settingsDownloadSubtitle": { + "description": "Download settings description" + }, "settingsOptionsSubtitle": "Fallback, lyrics, cover art, updates", - "@settingsOptionsSubtitle": {"description": "Options settings description"}, + "@settingsOptionsSubtitle": { + "description": "Options settings description" + }, "settingsExtensionsSubtitle": "Manage download providers", - "@settingsExtensionsSubtitle": {"description": "Extensions settings description"}, + "@settingsExtensionsSubtitle": { + "description": "Extensions settings description" + }, "settingsLogsSubtitle": "View app logs for debugging", - "@settingsLogsSubtitle": {"description": "Logs settings description"}, - + "@settingsLogsSubtitle": { + "description": "Logs settings description" + }, "loadingSharedLink": "Loading shared link...", - "@loadingSharedLink": {"description": "Status when opening shared URL"}, + "@loadingSharedLink": { + "description": "Status when opening shared URL" + }, "pressBackAgainToExit": "Press back again to exit", - "@pressBackAgainToExit": {"description": "Exit confirmation message"}, - - "tracksHeader": "Tracks", - "@tracksHeader": {"description": "Section header for track list"}, + "@pressBackAgainToExit": { + "description": "Exit confirmation message" + }, "downloadAllCount": "Download All ({count})", "@downloadAllCount": { "description": "Download all button with count", "placeholders": { - "count": {"type": "int"} - } - }, - "playAllCount": "Play All ({count})", - "@playAllCount": { - "description": "Play all button with count", - "placeholders": { - "count": {"type": "int"} + "count": { + "type": "int" + } } }, "tracksCount": "{count, plural, =1{1 track} other{{count} tracks}}", "@tracksCount": { "description": "Track count display", "placeholders": { - "count": {"type": "int"} + "count": { + "type": "int" + } } }, - "trackCopyFilePath": "Copy file path", - "@trackCopyFilePath": {"description": "Action - copy file path"}, - "trackRemoveFromDevice": "Remove from device", - "@trackRemoveFromDevice": {"description": "Action - delete downloaded file"}, - "trackLoadLyrics": "Load Lyrics", - "@trackLoadLyrics": {"description": "Action - fetch lyrics"}, - "trackMetadata": "Metadata", - "@trackMetadata": {"description": "Tab title - track metadata"}, - "trackFileInfo": "File Info", - "@trackFileInfo": {"description": "Tab title - file information"}, - "trackLyrics": "Lyrics", - "@trackLyrics": {"description": "Tab title - lyrics"}, - "trackFileNotFound": "File not found", - "@trackFileNotFound": {"description": "Error - file doesn't exist"}, - "trackOpenInDeezer": "Open in Deezer", - "@trackOpenInDeezer": {"description": "Action - open track in Deezer app"}, - "trackOpenInSpotify": "Open in Spotify", - "@trackOpenInSpotify": {"description": "Action - open track in Spotify app"}, - "trackTrackName": "Track name", - "@trackTrackName": {"description": "Metadata label - track title"}, - "trackArtist": "Artist", - "@trackArtist": {"description": "Metadata label - artist name"}, - "trackAlbumArtist": "Album artist", - "@trackAlbumArtist": {"description": "Metadata label - album artist"}, - "trackAlbum": "Album", - "@trackAlbum": {"description": "Metadata label - album name"}, - "trackTrackNumber": "Track number", - "@trackTrackNumber": {"description": "Metadata label - track number"}, - "trackDiscNumber": "Disc number", - "@trackDiscNumber": {"description": "Metadata label - disc number"}, - "trackDuration": "Duration", - "@trackDuration": {"description": "Metadata label - track length"}, - "trackAudioQuality": "Audio quality", - "@trackAudioQuality": {"description": "Metadata label - audio quality"}, - "trackReleaseDate": "Release date", - "@trackReleaseDate": {"description": "Metadata label - release date"}, - "trackGenre": "Genre", - "@trackGenre": {"description": "Metadata label - music genre"}, - "trackLabel": "Label", - "@trackLabel": {"description": "Metadata label - record label"}, - "trackCopyright": "Copyright", - "@trackCopyright": {"description": "Metadata label - copyright information"}, - "trackDownloaded": "Downloaded", - "@trackDownloaded": {"description": "Metadata label - download date"}, - "trackCopyLyrics": "Copy lyrics", - "@trackCopyLyrics": {"description": "Action - copy lyrics to clipboard"}, - "trackLyricsNotAvailable": "Lyrics not available for this track", - "@trackLyricsNotAvailable": {"description": "Message when lyrics not found"}, - "trackLyricsTimeout": "Request timed out. Try again later.", - "@trackLyricsTimeout": {"description": "Message when lyrics request times out"}, - "trackLyricsLoadFailed": "Failed to load lyrics", - "@trackLyricsLoadFailed": {"description": "Message when lyrics loading fails"}, - "trackEmbedLyrics": "Embed Lyrics", - "@trackEmbedLyrics": {"description": "Action - embed lyrics into audio file"}, - "trackLyricsEmbedded": "Lyrics embedded successfully", - "@trackLyricsEmbedded": {"description": "Snackbar - lyrics saved to file"}, - "trackInstrumental": "Instrumental track", - "@trackInstrumental": {"description": "Message when track is instrumental (no lyrics)"}, - "trackCopiedToClipboard": "Copied to clipboard", - "@trackCopiedToClipboard": {"description": "Snackbar - content copied"}, - "trackDeleteConfirmTitle": "Remove from device?", - "@trackDeleteConfirmTitle": {"description": "Delete confirmation title"}, - "trackDeleteConfirmMessage": "This will permanently delete the downloaded file and remove it from your history.", - "@trackDeleteConfirmMessage": {"description": "Delete confirmation message"}, - "trackCannotOpen": "Cannot open: {message}", - "@trackCannotOpen": { - "description": "Error opening file", - "placeholders": { - "message": {"type": "String"} - } + "@trackCopyFilePath": { + "description": "Action - copy file path" + }, + "trackRemoveFromDevice": "Remove from device", + "@trackRemoveFromDevice": { + "description": "Action - delete downloaded file" + }, + "trackLoadLyrics": "Load Lyrics", + "@trackLoadLyrics": { + "description": "Action - fetch lyrics" + }, + "trackMetadata": "Metadata", + "@trackMetadata": { + "description": "Tab title - track metadata" + }, + "trackFileInfo": "File Info", + "@trackFileInfo": { + "description": "Tab title - file information" + }, + "trackLyrics": "Lyrics", + "@trackLyrics": { + "description": "Tab title - lyrics" + }, + "trackFileNotFound": "File not found", + "@trackFileNotFound": { + "description": "Error - file doesn't exist" + }, + "trackOpenInDeezer": "Open in Deezer", + "@trackOpenInDeezer": { + "description": "Action - open track in Deezer app" + }, + "trackOpenInSpotify": "Open in Spotify", + "@trackOpenInSpotify": { + "description": "Action - open track in Spotify app" + }, + "trackTrackName": "Track name", + "@trackTrackName": { + "description": "Metadata label - track title" + }, + "trackArtist": "Artist", + "@trackArtist": { + "description": "Metadata label - artist name" + }, + "trackAlbumArtist": "Album artist", + "@trackAlbumArtist": { + "description": "Metadata label - album artist" + }, + "trackAlbum": "Album", + "@trackAlbum": { + "description": "Metadata label - album name" + }, + "trackTrackNumber": "Track number", + "@trackTrackNumber": { + "description": "Metadata label - track number" + }, + "trackDiscNumber": "Disc number", + "@trackDiscNumber": { + "description": "Metadata label - disc number" + }, + "trackDuration": "Duration", + "@trackDuration": { + "description": "Metadata label - track length" + }, + "trackAudioQuality": "Audio quality", + "@trackAudioQuality": { + "description": "Metadata label - audio quality" + }, + "trackReleaseDate": "Release date", + "@trackReleaseDate": { + "description": "Metadata label - release date" + }, + "trackGenre": "Genre", + "@trackGenre": { + "description": "Metadata label - music genre" + }, + "trackLabel": "Label", + "@trackLabel": { + "description": "Metadata label - record label" + }, + "trackCopyright": "Copyright", + "@trackCopyright": { + "description": "Metadata label - copyright information" + }, + "trackDownloaded": "Downloaded", + "@trackDownloaded": { + "description": "Metadata label - download date" + }, + "trackCopyLyrics": "Copy lyrics", + "@trackCopyLyrics": { + "description": "Action - copy lyrics to clipboard" + }, + "trackLyricsNotAvailable": "Lyrics not available for this track", + "@trackLyricsNotAvailable": { + "description": "Message when lyrics not found" + }, + "trackLyricsTimeout": "Request timed out. Try again later.", + "@trackLyricsTimeout": { + "description": "Message when lyrics request times out" + }, + "trackLyricsLoadFailed": "Failed to load lyrics", + "@trackLyricsLoadFailed": { + "description": "Message when lyrics loading fails" + }, + "trackEmbedLyrics": "Embed Lyrics", + "@trackEmbedLyrics": { + "description": "Action - embed lyrics into audio file" + }, + "trackLyricsEmbedded": "Lyrics embedded successfully", + "@trackLyricsEmbedded": { + "description": "Snackbar - lyrics saved to file" + }, + "trackInstrumental": "Instrumental track", + "@trackInstrumental": { + "description": "Message when track is instrumental (no lyrics)" + }, + "trackCopiedToClipboard": "Copied to clipboard", + "@trackCopiedToClipboard": { + "description": "Snackbar - content copied" + }, + "trackDeleteConfirmTitle": "Remove from device?", + "@trackDeleteConfirmTitle": { + "description": "Delete confirmation title" + }, + "trackDeleteConfirmMessage": "This will permanently delete the downloaded file and remove it from your history.", + "@trackDeleteConfirmMessage": { + "description": "Delete confirmation message" }, - "dateToday": "Today", - "@dateToday": {"description": "Relative date - today"}, + "@dateToday": { + "description": "Relative date - today" + }, "dateYesterday": "Yesterday", - "@dateYesterday": {"description": "Relative date - yesterday"}, + "@dateYesterday": { + "description": "Relative date - yesterday" + }, "dateDaysAgo": "{count} days ago", "@dateDaysAgo": { "description": "Relative date - days ago", "placeholders": { - "count": {"type": "int"} + "count": { + "type": "int" + } } }, "dateWeeksAgo": "{count} weeks ago", "@dateWeeksAgo": { "description": "Relative date - weeks ago", "placeholders": { - "count": {"type": "int"} + "count": { + "type": "int" + } } }, "dateMonthsAgo": "{count} months ago", "@dateMonthsAgo": { "description": "Relative date - months ago", "placeholders": { - "count": {"type": "int"} + "count": { + "type": "int" + } } }, - - "concurrentSequential": "Sequential", - "@concurrentSequential": {"description": "Download mode - one at a time"}, - "concurrentParallel2": "2 Parallel", - "@concurrentParallel2": {"description": "Download mode - 2 simultaneous"}, - "concurrentParallel3": "3 Parallel", - "@concurrentParallel3": {"description": "Download mode - 3 simultaneous"}, - - "tapToSeeError": "Tap to see error details", - "@tapToSeeError": {"description": "Tooltip for failed download"}, - "storeFilterAll": "All", - "@storeFilterAll": {"description": "Store filter - all extensions"}, + "@storeFilterAll": { + "description": "Store filter - all extensions" + }, "storeFilterMetadata": "Metadata", - "@storeFilterMetadata": {"description": "Store filter - metadata providers"}, + "@storeFilterMetadata": { + "description": "Store filter - metadata providers" + }, "storeFilterDownload": "Download", - "@storeFilterDownload": {"description": "Store filter - download providers"}, + "@storeFilterDownload": { + "description": "Store filter - download providers" + }, "storeFilterUtility": "Utility", - "@storeFilterUtility": {"description": "Store filter - utility extensions"}, + "@storeFilterUtility": { + "description": "Store filter - utility extensions" + }, "storeFilterLyrics": "Lyrics", - "@storeFilterLyrics": {"description": "Store filter - lyrics providers"}, + "@storeFilterLyrics": { + "description": "Store filter - lyrics providers" + }, "storeFilterIntegration": "Integration", - "@storeFilterIntegration": {"description": "Store filter - integrations"}, + "@storeFilterIntegration": { + "description": "Store filter - integrations" + }, "storeClearFilters": "Clear filters", - "@storeClearFilters": {"description": "Button to clear all filters"}, - "storeNoResults": "No extensions found", - "@storeNoResults": {"description": "Empty state when no extensions match filters"}, - - "extensionProviderPriority": "Provider Priority", - "@extensionProviderPriority": {"description": "Extension capability - provider priority"}, - "extensionInstallButton": "Install Extension", - "@extensionInstallButton": {"description": "Button to install extension"}, + "@storeClearFilters": { + "description": "Button to clear all filters" + }, "extensionDefaultProvider": "Default (Deezer/Spotify)", - "@extensionDefaultProvider": {"description": "Default search provider option"}, + "@extensionDefaultProvider": { + "description": "Default search provider option" + }, "extensionDefaultProviderSubtitle": "Use built-in search", - "@extensionDefaultProviderSubtitle": {"description": "Subtitle for default provider"}, + "@extensionDefaultProviderSubtitle": { + "description": "Subtitle for default provider" + }, "extensionAuthor": "Author", - "@extensionAuthor": {"description": "Extension detail - author"}, + "@extensionAuthor": { + "description": "Extension detail - author" + }, "extensionId": "ID", - "@extensionId": {"description": "Extension detail - unique ID"}, + "@extensionId": { + "description": "Extension detail - unique ID" + }, "extensionError": "Error", - "@extensionError": {"description": "Extension detail - error message"}, + "@extensionError": { + "description": "Extension detail - error message" + }, "extensionCapabilities": "Capabilities", - "@extensionCapabilities": {"description": "Section header - extension features"}, + "@extensionCapabilities": { + "description": "Section header - extension features" + }, "extensionMetadataProvider": "Metadata Provider", - "@extensionMetadataProvider": {"description": "Capability - provides metadata"}, + "@extensionMetadataProvider": { + "description": "Capability - provides metadata" + }, "extensionDownloadProvider": "Download Provider", - "@extensionDownloadProvider": {"description": "Capability - provides downloads"}, + "@extensionDownloadProvider": { + "description": "Capability - provides downloads" + }, "extensionLyricsProvider": "Lyrics Provider", - "@extensionLyricsProvider": {"description": "Capability - provides lyrics"}, + "@extensionLyricsProvider": { + "description": "Capability - provides lyrics" + }, "extensionUrlHandler": "URL Handler", - "@extensionUrlHandler": {"description": "Capability - handles URLs"}, + "@extensionUrlHandler": { + "description": "Capability - handles URLs" + }, "extensionQualityOptions": "Quality Options", - "@extensionQualityOptions": {"description": "Capability - quality selection"}, + "@extensionQualityOptions": { + "description": "Capability - quality selection" + }, "extensionPostProcessingHooks": "Post-Processing Hooks", - "@extensionPostProcessingHooks": {"description": "Capability - post-processing"}, + "@extensionPostProcessingHooks": { + "description": "Capability - post-processing" + }, "extensionPermissions": "Permissions", - "@extensionPermissions": {"description": "Section header - required permissions"}, + "@extensionPermissions": { + "description": "Section header - required permissions" + }, "extensionSettings": "Settings", - "@extensionSettings": {"description": "Section header - extension settings"}, + "@extensionSettings": { + "description": "Section header - extension settings" + }, "extensionRemoveButton": "Remove Extension", - "@extensionRemoveButton": {"description": "Button to uninstall extension"}, + "@extensionRemoveButton": { + "description": "Button to uninstall extension" + }, "extensionUpdated": "Updated", - "@extensionUpdated": {"description": "Extension detail - last update"}, + "@extensionUpdated": { + "description": "Extension detail - last update" + }, "extensionMinAppVersion": "Min App Version", - "@extensionMinAppVersion": {"description": "Extension detail - minimum app version"}, + "@extensionMinAppVersion": { + "description": "Extension detail - minimum app version" + }, "extensionCustomTrackMatching": "Custom Track Matching", - "@extensionCustomTrackMatching": {"description": "Capability - custom track matching algorithm"}, + "@extensionCustomTrackMatching": { + "description": "Capability - custom track matching algorithm" + }, "extensionPostProcessing": "Post-Processing", - "@extensionPostProcessing": {"description": "Capability - post-download processing"}, + "@extensionPostProcessing": { + "description": "Capability - post-download processing" + }, "extensionHooksAvailable": "{count} hook(s) available", "@extensionHooksAvailable": { "description": "Post-processing hooks count", "placeholders": { - "count": {"type": "int"} + "count": { + "type": "int" + } } }, "extensionPatternsCount": "{count} pattern(s)", "@extensionPatternsCount": { "description": "URL patterns count", "placeholders": { - "count": {"type": "int"} + "count": { + "type": "int" + } } }, "extensionStrategy": "Strategy: {strategy}", "@extensionStrategy": { "description": "Track matching strategy name", "placeholders": { - "strategy": {"type": "String"} + "strategy": { + "type": "String" + } } }, "extensionsProviderPrioritySection": "Provider Priority", - "@extensionsProviderPrioritySection": {"description": "Section header - provider priority"}, + "@extensionsProviderPrioritySection": { + "description": "Section header - provider priority" + }, "extensionsInstalledSection": "Installed Extensions", - "@extensionsInstalledSection": {"description": "Section header - installed extensions"}, + "@extensionsInstalledSection": { + "description": "Section header - installed extensions" + }, "extensionsNoExtensions": "No extensions installed", - "@extensionsNoExtensions": {"description": "Empty state - no extensions"}, + "@extensionsNoExtensions": { + "description": "Empty state - no extensions" + }, "extensionsNoExtensionsSubtitle": "Install .spotiflac-ext files to add new providers", - "@extensionsNoExtensionsSubtitle": {"description": "Empty state subtitle"}, + "@extensionsNoExtensionsSubtitle": { + "description": "Empty state subtitle" + }, "extensionsInstallButton": "Install Extension", - "@extensionsInstallButton": {"description": "Button to install extension from file"}, + "@extensionsInstallButton": { + "description": "Button to install extension from file" + }, "extensionsInfoTip": "Extensions can add new metadata and download providers. Only install extensions from trusted sources.", - "@extensionsInfoTip": {"description": "Security warning about extensions"}, + "@extensionsInfoTip": { + "description": "Security warning about extensions" + }, "extensionsInstalledSuccess": "Extension installed successfully", - "@extensionsInstalledSuccess": {"description": "Success message after install"}, + "@extensionsInstalledSuccess": { + "description": "Success message after install" + }, "extensionsDownloadPriority": "Download Priority", - "@extensionsDownloadPriority": {"description": "Setting - download provider order"}, + "@extensionsDownloadPriority": { + "description": "Setting - download provider order" + }, "extensionsDownloadPrioritySubtitle": "Set download service order", - "@extensionsDownloadPrioritySubtitle": {"description": "Subtitle for download priority"}, + "@extensionsDownloadPrioritySubtitle": { + "description": "Subtitle for download priority" + }, "extensionsNoDownloadProvider": "No extensions with download provider", - "@extensionsNoDownloadProvider": {"description": "Empty state - no download providers"}, + "@extensionsNoDownloadProvider": { + "description": "Empty state - no download providers" + }, "extensionsMetadataPriority": "Metadata Priority", - "@extensionsMetadataPriority": {"description": "Setting - metadata provider order"}, + "@extensionsMetadataPriority": { + "description": "Setting - metadata provider order" + }, "extensionsMetadataPrioritySubtitle": "Set search & metadata source order", - "@extensionsMetadataPrioritySubtitle": {"description": "Subtitle for metadata priority"}, + "@extensionsMetadataPrioritySubtitle": { + "description": "Subtitle for metadata priority" + }, "extensionsNoMetadataProvider": "No extensions with metadata provider", - "@extensionsNoMetadataProvider": {"description": "Empty state - no metadata providers"}, + "@extensionsNoMetadataProvider": { + "description": "Empty state - no metadata providers" + }, "extensionsSearchProvider": "Search Provider", - "@extensionsSearchProvider": {"description": "Setting - search provider selection"}, + "@extensionsSearchProvider": { + "description": "Setting - search provider selection" + }, "extensionsNoCustomSearch": "No extensions with custom search", - "@extensionsNoCustomSearch": {"description": "Empty state - no search providers"}, + "@extensionsNoCustomSearch": { + "description": "Empty state - no search providers" + }, "extensionsSearchProviderDescription": "Choose which service to use for searching tracks", - "@extensionsSearchProviderDescription": {"description": "Search provider setting description"}, + "@extensionsSearchProviderDescription": { + "description": "Search provider setting description" + }, "extensionsCustomSearch": "Custom search", - "@extensionsCustomSearch": {"description": "Label for custom search provider"}, + "@extensionsCustomSearch": { + "description": "Label for custom search provider" + }, "extensionsErrorLoading": "Error loading extension", - "@extensionsErrorLoading": {"description": "Error message when extension fails to load"}, - + "@extensionsErrorLoading": { + "description": "Error message when extension fails to load" + }, "qualityFlacLossless": "FLAC Lossless", - "@qualityFlacLossless": {"description": "Quality option - CD quality FLAC"}, + "@qualityFlacLossless": { + "description": "Quality option - CD quality FLAC" + }, "qualityFlacLosslessSubtitle": "16-bit / 44.1kHz", - "@qualityFlacLosslessSubtitle": {"description": "Technical spec for lossless"}, + "@qualityFlacLosslessSubtitle": { + "description": "Technical spec for lossless" + }, "qualityHiResFlac": "Hi-Res FLAC", - "@qualityHiResFlac": {"description": "Quality option - high resolution FLAC"}, + "@qualityHiResFlac": { + "description": "Quality option - high resolution FLAC" + }, "qualityHiResFlacSubtitle": "24-bit / up to 96kHz", - "@qualityHiResFlacSubtitle": {"description": "Technical spec for hi-res"}, + "@qualityHiResFlacSubtitle": { + "description": "Technical spec for hi-res" + }, "qualityHiResFlacMax": "Hi-Res FLAC Max", - "@qualityHiResFlacMax": {"description": "Quality option - maximum resolution FLAC"}, + "@qualityHiResFlacMax": { + "description": "Quality option - maximum resolution FLAC" + }, "qualityHiResFlacMaxSubtitle": "24-bit / up to 192kHz", - "@qualityHiResFlacMaxSubtitle": {"description": "Technical spec for hi-res max"}, - "qualityLossy": "Lossy", - "@qualityLossy": {"description": "Quality option - lossy format (MP3/Opus)"}, - "qualityLossyMp3Subtitle": "MP3 320kbps (converted from FLAC)", - "@qualityLossyMp3Subtitle": {"description": "Technical spec for lossy MP3"}, - "qualityLossyOpusSubtitle": "Opus 128kbps (converted from FLAC)", - "@qualityLossyOpusSubtitle": {"description": "Technical spec for lossy Opus"}, - "enableLossyOption": "Enable Lossy Option", - "@enableLossyOption": {"description": "Setting - enable lossy quality option"}, - "enableLossyOptionSubtitleOn": "Lossy quality option is available", - "@enableLossyOptionSubtitleOn": {"description": "Subtitle when lossy is enabled"}, - "enableLossyOptionSubtitleOff": "Downloads FLAC then converts to lossy format", - "@enableLossyOptionSubtitleOff": {"description": "Subtitle when lossy is disabled"}, - "lossyFormat": "Lossy Format", - "@lossyFormat": {"description": "Setting - choose lossy format"}, - "lossyFormatDescription": "Choose the lossy format for conversion", - "@lossyFormatDescription": {"description": "Description for lossy format picker"}, - "lossyFormatMp3Subtitle": "320kbps, best compatibility", - "@lossyFormatMp3Subtitle": {"description": "MP3 format description"}, - "lossyFormatOpusSubtitle": "128kbps, better quality at smaller size", - "@lossyFormatOpusSubtitle": {"description": "Opus format description"}, + "@qualityHiResFlacMaxSubtitle": { + "description": "Technical spec for hi-res max" + }, "qualityNote": "Actual quality depends on track availability from the service", - "@qualityNote": {"description": "Note about quality availability"}, + "@qualityNote": { + "description": "Note about quality availability" + }, "youtubeQualityNote": "YouTube provides lossy audio only. Not part of lossless fallback.", - "@youtubeQualityNote": {"description": "Note for YouTube service explaining lossy-only quality"}, + "@youtubeQualityNote": { + "description": "Note for YouTube service explaining lossy-only quality" + }, "youtubeOpusBitrateTitle": "YouTube Opus Bitrate", - "@youtubeOpusBitrateTitle": {"description": "Title for YouTube Opus bitrate setting"}, + "@youtubeOpusBitrateTitle": { + "description": "Title for YouTube Opus bitrate setting" + }, "youtubeMp3BitrateTitle": "YouTube MP3 Bitrate", - "@youtubeMp3BitrateTitle": {"description": "Title for YouTube MP3 bitrate setting"}, - "youtubeBitrateSubtitle": "{bitrate}kbps ({min}-{max})", - "@youtubeBitrateSubtitle": { - "description": "Subtitle showing current bitrate and valid range", - "placeholders": { - "bitrate": {"type": "int"}, - "min": {"type": "int"}, - "max": {"type": "int"} - } + "@youtubeMp3BitrateTitle": { + "description": "Title for YouTube MP3 bitrate setting" }, - "youtubeBitrateInputHelp": "Enter custom bitrate ({min}-{max} kbps)", - "@youtubeBitrateInputHelp": { - "description": "Helper text for manual YouTube bitrate input", - "placeholders": { - "min": {"type": "int"}, - "max": {"type": "int"} - } - }, - "youtubeBitrateFieldLabel": "Bitrate (kbps)", - "@youtubeBitrateFieldLabel": {"description": "Label for YouTube bitrate input field"}, - "youtubeBitrateValidationError": "Bitrate must be between {min} and {max} kbps", - "@youtubeBitrateValidationError": { - "description": "Validation error for invalid YouTube bitrate input", - "placeholders": { - "min": {"type": "int"}, - "max": {"type": "int"} - } - }, - "downloadAskBeforeDownload": "Ask Before Download", - "@downloadAskBeforeDownload": {"description": "Setting - show quality picker"}, + "@downloadAskBeforeDownload": { + "description": "Setting - show quality picker" + }, "downloadDirectory": "Download Directory", - "@downloadDirectory": {"description": "Setting - download folder"}, + "@downloadDirectory": { + "description": "Setting - download folder" + }, "downloadSeparateSinglesFolder": "Separate Singles Folder", - "@downloadSeparateSinglesFolder": {"description": "Setting - separate folder for singles"}, + "@downloadSeparateSinglesFolder": { + "description": "Setting - separate folder for singles" + }, "downloadAlbumFolderStructure": "Album Folder Structure", - "@downloadAlbumFolderStructure": {"description": "Setting - album folder organization"}, + "@downloadAlbumFolderStructure": { + "description": "Setting - album folder organization" + }, "downloadUseAlbumArtistForFolders": "Use Album Artist for folders", - "@downloadUseAlbumArtistForFolders": {"description": "Setting - choose whether artist folders use Album Artist or Track Artist"}, - "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Artist folders use Album Artist when available", - "@downloadUseAlbumArtistForFoldersAlbumSubtitle": {"description": "Subtitle when Album Artist is used for folder naming"}, - "downloadUseAlbumArtistForFoldersTrackSubtitle": "Artist folders use Track Artist only", - "@downloadUseAlbumArtistForFoldersTrackSubtitle": {"description": "Subtitle when Track Artist is used for folder naming"}, + "@downloadUseAlbumArtistForFolders": { + "description": "Setting - choose whether artist folders use Album Artist or Track Artist" + }, "downloadUsePrimaryArtistOnly": "Primary artist only for folders", - "@downloadUsePrimaryArtistOnly": {"description": "Setting - strip featured artists from folder name"}, + "@downloadUsePrimaryArtistOnly": { + "description": "Setting - strip featured artists from folder name" + }, "downloadUsePrimaryArtistOnlyEnabled": "Featured artists removed from folder name (e.g. Justin Bieber, Quavo → Justin Bieber)", - "@downloadUsePrimaryArtistOnlyEnabled": {"description": "Subtitle when primary artist only is enabled"}, + "@downloadUsePrimaryArtistOnlyEnabled": { + "description": "Subtitle when primary artist only is enabled" + }, "downloadUsePrimaryArtistOnlyDisabled": "Full artist string used for folder name", - "@downloadUsePrimaryArtistOnlyDisabled": {"description": "Subtitle when primary artist only is disabled"}, - "downloadSaveFormat": "Save Format", - "@downloadSaveFormat": {"description": "Setting - output file format"}, - "downloadSelectService": "Select Service", - "@downloadSelectService": {"description": "Dialog title - choose download service"}, + "@downloadUsePrimaryArtistOnlyDisabled": { + "description": "Subtitle when primary artist only is disabled" + }, "downloadSelectQuality": "Select Quality", - "@downloadSelectQuality": {"description": "Dialog title - choose audio quality"}, + "@downloadSelectQuality": { + "description": "Dialog title - choose audio quality" + }, "downloadFrom": "Download From", - "@downloadFrom": {"description": "Label - download source"}, - "downloadDefaultQualityLabel": "Default Quality", - "@downloadDefaultQualityLabel": {"description": "Label - default quality setting"}, - "downloadBestAvailable": "Best available", - "@downloadBestAvailable": {"description": "Quality option - highest available"}, - - "folderNone": "None", - "@folderNone": {"description": "Folder option - no organization"}, - "folderNoneSubtitle": "Save all files directly to download folder", - "@folderNoneSubtitle": {"description": "Subtitle for no folder organization"}, - "folderArtist": "Artist", - "@folderArtist": {"description": "Folder option - by artist"}, - "folderArtistSubtitle": "Artist Name/filename", - "@folderArtistSubtitle": {"description": "Folder structure example"}, - "folderAlbum": "Album", - "@folderAlbum": {"description": "Folder option - by album"}, - "folderAlbumSubtitle": "Album Name/filename", - "@folderAlbumSubtitle": {"description": "Folder structure example"}, - "folderArtistAlbum": "Artist/Album", - "@folderArtistAlbum": {"description": "Folder option - nested"}, - "folderArtistAlbumSubtitle": "Artist Name/Album Name/filename", - "@folderArtistAlbumSubtitle": {"description": "Folder structure example"}, - - "serviceTidal": "Tidal", - "@serviceTidal": {"description": "Service name - DO NOT TRANSLATE"}, - "serviceQobuz": "Qobuz", - "@serviceQobuz": {"description": "Service name - DO NOT TRANSLATE"}, - "serviceAmazon": "Amazon", - "@serviceAmazon": {"description": "Service name - DO NOT TRANSLATE"}, - "serviceDeezer": "Deezer", - "@serviceDeezer": {"description": "Service name - DO NOT TRANSLATE"}, - "serviceSpotify": "Spotify", - "@serviceSpotify": {"description": "Service name - DO NOT TRANSLATE"}, - + "@downloadFrom": { + "description": "Label - download source" + }, "appearanceAmoledDark": "AMOLED Dark", - "@appearanceAmoledDark": {"description": "Theme option - pure black"}, + "@appearanceAmoledDark": { + "description": "Theme option - pure black" + }, "appearanceAmoledDarkSubtitle": "Pure black background", - "@appearanceAmoledDarkSubtitle": {"description": "Subtitle for AMOLED dark"}, - "appearanceChooseAccentColor": "Choose Accent Color", - "@appearanceChooseAccentColor": {"description": "Color picker dialog title"}, - "appearanceChooseTheme": "Theme Mode", - "@appearanceChooseTheme": {"description": "Theme picker dialog title"}, - - "queueTitle": "Download Queue", - "@queueTitle": {"description": "Queue screen title"}, -"queueClearAll": "Clear All", - "@queueClearAll": {"description": "Button - clear all queue items"}, + "@appearanceAmoledDarkSubtitle": { + "description": "Subtitle for AMOLED dark" + }, + "queueClearAll": "Clear All", + "@queueClearAll": { + "description": "Button - clear all queue items" + }, "queueClearAllMessage": "Are you sure you want to clear all downloads?", - "@queueClearAllMessage": {"description": "Clear queue confirmation"}, - "queueExportFailed": "Export", - "@queueExportFailed": {"description": "Button - export failed downloads to TXT"}, - "queueExportFailedSuccess": "Failed downloads exported to TXT file", - "@queueExportFailedSuccess": {"description": "Success message after exporting failed downloads"}, - "queueExportFailedClear": "Clear Failed", - "@queueExportFailedClear": {"description": "Action to clear failed downloads after export"}, - "queueExportFailedError": "Failed to export downloads", - "@queueExportFailedError": {"description": "Error message when export fails"}, + "@queueClearAllMessage": { + "description": "Clear queue confirmation" + }, "settingsAutoExportFailed": "Auto-export failed downloads", - "@settingsAutoExportFailed": {"description": "Setting toggle for auto-export"}, + "@settingsAutoExportFailed": { + "description": "Setting toggle for auto-export" + }, "settingsAutoExportFailedSubtitle": "Save failed downloads to TXT file automatically", - "@settingsAutoExportFailedSubtitle": {"description": "Subtitle for auto-export setting"}, - + "@settingsAutoExportFailedSubtitle": { + "description": "Subtitle for auto-export setting" + }, "settingsDownloadNetwork": "Download Network", - "@settingsDownloadNetwork": {"description": "Setting for network type preference"}, + "@settingsDownloadNetwork": { + "description": "Setting for network type preference" + }, "settingsDownloadNetworkAny": "WiFi + Mobile Data", - "@settingsDownloadNetworkAny": {"description": "Network option - use any connection"}, + "@settingsDownloadNetworkAny": { + "description": "Network option - use any connection" + }, "settingsDownloadNetworkWifiOnly": "WiFi Only", - "@settingsDownloadNetworkWifiOnly": {"description": "Network option - only use WiFi"}, + "@settingsDownloadNetworkWifiOnly": { + "description": "Network option - only use WiFi" + }, "settingsDownloadNetworkSubtitle": "Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.", - "@settingsDownloadNetworkSubtitle": {"description": "Subtitle explaining network preference"}, - - "queueEmpty": "No downloads in queue", - "@queueEmpty": {"description": "Empty queue state title"}, - "queueEmptySubtitle": "Add tracks from the home screen", - "@queueEmptySubtitle": {"description": "Empty queue state subtitle"}, - "queueClearCompleted": "Clear completed", - "@queueClearCompleted": {"description": "Button - clear finished downloads"}, - "queueDownloadFailed": "Download Failed", - "@queueDownloadFailed": {"description": "Error dialog title"}, - "queueTrackLabel": "Track:", - "@queueTrackLabel": {"description": "Label in error dialog"}, - "queueArtistLabel": "Artist:", - "@queueArtistLabel": {"description": "Label in error dialog"}, - "queueErrorLabel": "Error:", - "@queueErrorLabel": {"description": "Label in error dialog"}, - "queueUnknownError": "Unknown error", - "@queueUnknownError": {"description": "Fallback error message"}, - + "@settingsDownloadNetworkSubtitle": { + "description": "Subtitle explaining network preference" + }, "albumFolderArtistAlbum": "Artist / Album", - "@albumFolderArtistAlbum": {"description": "Album folder option"}, + "@albumFolderArtistAlbum": { + "description": "Album folder option" + }, "albumFolderArtistAlbumSubtitle": "Albums/Artist Name/Album Name/", - "@albumFolderArtistAlbumSubtitle": {"description": "Folder structure example"}, + "@albumFolderArtistAlbumSubtitle": { + "description": "Folder structure example" + }, "albumFolderArtistYearAlbum": "Artist / [Year] Album", - "@albumFolderArtistYearAlbum": {"description": "Album folder option with year"}, + "@albumFolderArtistYearAlbum": { + "description": "Album folder option with year" + }, "albumFolderArtistYearAlbumSubtitle": "Albums/Artist Name/[2005] Album Name/", - "@albumFolderArtistYearAlbumSubtitle": {"description": "Folder structure example"}, + "@albumFolderArtistYearAlbumSubtitle": { + "description": "Folder structure example" + }, "albumFolderAlbumOnly": "Album Only", - "@albumFolderAlbumOnly": {"description": "Album folder option"}, + "@albumFolderAlbumOnly": { + "description": "Album folder option" + }, "albumFolderAlbumOnlySubtitle": "Albums/Album Name/", - "@albumFolderAlbumOnlySubtitle": {"description": "Folder structure example"}, + "@albumFolderAlbumOnlySubtitle": { + "description": "Folder structure example" + }, "albumFolderYearAlbum": "[Year] Album", - "@albumFolderYearAlbum": {"description": "Album folder option with year"}, + "@albumFolderYearAlbum": { + "description": "Album folder option with year" + }, "albumFolderYearAlbumSubtitle": "Albums/[2005] Album Name/", - "@albumFolderYearAlbumSubtitle": {"description": "Folder structure example"}, + "@albumFolderYearAlbumSubtitle": { + "description": "Folder structure example" + }, "albumFolderArtistAlbumSingles": "Artist / Album + Singles", - "@albumFolderArtistAlbumSingles": {"description": "Album folder option with singles inside artist"}, + "@albumFolderArtistAlbumSingles": { + "description": "Album folder option with singles inside artist" + }, "albumFolderArtistAlbumSinglesSubtitle": "Artist/Album/ and Artist/Singles/", - "@albumFolderArtistAlbumSinglesSubtitle": {"description": "Folder structure example"}, - + "@albumFolderArtistAlbumSinglesSubtitle": { + "description": "Folder structure example" + }, "downloadedAlbumDeleteSelected": "Delete Selected", - "@downloadedAlbumDeleteSelected": {"description": "Button - delete selected tracks"}, + "@downloadedAlbumDeleteSelected": { + "description": "Button - delete selected tracks" + }, "downloadedAlbumDeleteMessage": "Delete {count} {count, plural, =1{track} other{tracks}} from this album?\n\nThis will also delete the files from storage.", "@downloadedAlbumDeleteMessage": { "description": "Delete confirmation with count", "placeholders": { - "count": {"type": "int"} - } - }, - "downloadedAlbumTracksHeader": "Tracks", - "@downloadedAlbumTracksHeader": {"description": "Section header for tracks"}, - "downloadedAlbumDownloadedCount": "{count} downloaded", - "@downloadedAlbumDownloadedCount": { - "description": "Downloaded tracks count badge", - "placeholders": { - "count": {"type": "int"} + "count": { + "type": "int" + } } }, "downloadedAlbumSelectedCount": "{count} selected", "@downloadedAlbumSelectedCount": { "description": "Selection count indicator", "placeholders": { - "count": {"type": "int"} + "count": { + "type": "int" + } } }, "downloadedAlbumAllSelected": "All tracks selected", - "@downloadedAlbumAllSelected": {"description": "Status - all items selected"}, + "@downloadedAlbumAllSelected": { + "description": "Status - all items selected" + }, "downloadedAlbumTapToSelect": "Tap tracks to select", - "@downloadedAlbumTapToSelect": {"description": "Selection hint"}, + "@downloadedAlbumTapToSelect": { + "description": "Selection hint" + }, "downloadedAlbumDeleteCount": "Delete {count} {count, plural, =1{track} other{tracks}}", "@downloadedAlbumDeleteCount": { "description": "Delete button text with count", "placeholders": { - "count": {"type": "int"} + "count": { + "type": "int" + } } }, "downloadedAlbumSelectToDelete": "Select tracks to delete", - "@downloadedAlbumSelectToDelete": {"description": "Placeholder when nothing selected"}, + "@downloadedAlbumSelectToDelete": { + "description": "Placeholder when nothing selected" + }, "downloadedAlbumDiscHeader": "Disc {discNumber}", "@downloadedAlbumDiscHeader": { "description": "Header for disc separator in multi-disc albums", "placeholders": { - "discNumber": {"type": "int", "example": "1"} + "discNumber": { + "type": "int", + "example": "1" + } } }, - - "utilityFunctions": "Utility Functions", - "@utilityFunctions": {"description": "Extension capability - utility functions"}, - "recentTypeArtist": "Artist", - "@recentTypeArtist": {"description": "Recent access item type - artist"}, + "@recentTypeArtist": { + "description": "Recent access item type - artist" + }, "recentTypeAlbum": "Album", - "@recentTypeAlbum": {"description": "Recent access item type - album"}, + "@recentTypeAlbum": { + "description": "Recent access item type - album" + }, "recentTypeSong": "Song", - "@recentTypeSong": {"description": "Recent access item type - song/track"}, + "@recentTypeSong": { + "description": "Recent access item type - song/track" + }, "recentTypePlaylist": "Playlist", - "@recentTypePlaylist": {"description": "Recent access item type - playlist"}, + "@recentTypePlaylist": { + "description": "Recent access item type - playlist" + }, "recentEmpty": "No recent items yet", - "@recentEmpty": {"description": "Empty state text for recent access list"}, + "@recentEmpty": { + "description": "Empty state text for recent access list" + }, "recentShowAllDownloads": "Show All Downloads", "@recentShowAllDownloads": { "description": "Button label to unhide hidden downloads in recent access" }, - "recentPlaylistInfo": "Playlist: {name}", "@recentPlaylistInfo": { "description": "Snackbar message when tapping playlist in recent access", "placeholders": { - "name": {"type": "String", "description": "Playlist name"} + "name": { + "type": "String", + "description": "Playlist name" + } } }, - "errorGeneric": "Error: {message}", - "@errorGeneric": { - "description": "Generic error message format", - "placeholders": { - "message": {"type": "String", "description": "Error message"} - } - }, - "discographyDownload": "Download Discography", - "@discographyDownload": {"description": "Button - download artist discography"}, - "discographyPlay": "Play Discography", - "@discographyPlay": {"description": "Button - play artist discography"}, + "@discographyDownload": { + "description": "Button - download artist discography" + }, "discographyDownloadAll": "Download All", - "@discographyDownloadAll": {"description": "Option - download entire discography"}, - "discographyPlayAll": "Play All", - "@discographyPlayAll": {"description": "Option - play entire discography"}, + "@discographyDownloadAll": { + "description": "Option - download entire discography" + }, "discographyDownloadAllSubtitle": "{count} tracks from {albumCount} releases", "@discographyDownloadAllSubtitle": { "description": "Subtitle showing total tracks and albums", "placeholders": { - "count": {"type": "int"}, - "albumCount": {"type": "int"} + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } } }, "discographyAlbumsOnly": "Albums Only", - "@discographyAlbumsOnly": {"description": "Option - download only albums"}, + "@discographyAlbumsOnly": { + "description": "Option - download only albums" + }, "discographyAlbumsOnlySubtitle": "{count} tracks from {albumCount} albums", "@discographyAlbumsOnlySubtitle": { "description": "Subtitle showing album tracks count", "placeholders": { - "count": {"type": "int"}, - "albumCount": {"type": "int"} + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } } }, "discographySinglesOnly": "Singles & EPs Only", - "@discographySinglesOnly": {"description": "Option - download only singles"}, + "@discographySinglesOnly": { + "description": "Option - download only singles" + }, "discographySinglesOnlySubtitle": "{count} tracks from {albumCount} singles", "@discographySinglesOnlySubtitle": { "description": "Subtitle showing singles tracks count", "placeholders": { - "count": {"type": "int"}, - "albumCount": {"type": "int"} + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } } }, "discographySelectAlbums": "Select Albums...", - "@discographySelectAlbums": {"description": "Option - manually select albums to download"}, + "@discographySelectAlbums": { + "description": "Option - manually select albums to download" + }, "discographySelectAlbumsSubtitle": "Choose specific albums or singles", - "@discographySelectAlbumsSubtitle": {"description": "Subtitle for select albums option"}, + "@discographySelectAlbumsSubtitle": { + "description": "Subtitle for select albums option" + }, "discographyFetchingTracks": "Fetching tracks...", - "@discographyFetchingTracks": {"description": "Progress - fetching album tracks"}, + "@discographyFetchingTracks": { + "description": "Progress - fetching album tracks" + }, "discographyFetchingAlbum": "Fetching {current} of {total}...", "@discographyFetchingAlbum": { "description": "Progress - fetching specific album", "placeholders": { - "current": {"type": "int"}, - "total": {"type": "int"} + "current": { + "type": "int" + }, + "total": { + "type": "int" + } } }, "discographySelectedCount": "{count} selected", "@discographySelectedCount": { "description": "Selection count badge", "placeholders": { - "count": {"type": "int"} + "count": { + "type": "int" + } } }, "discographyDownloadSelected": "Download Selected", - "@discographyDownloadSelected": {"description": "Button - download selected albums"}, - "discographyPlaySelected": "Play Selected", - "@discographyPlaySelected": {"description": "Button - play selected albums"}, + "@discographyDownloadSelected": { + "description": "Button - download selected albums" + }, "discographyAddedToQueue": "Added {count} tracks to queue", "@discographyAddedToQueue": { "description": "Snackbar - tracks added from discography", "placeholders": { - "count": {"type": "int"} + "count": { + "type": "int" + } } }, "discographySkippedDownloaded": "{added} added, {skipped} already downloaded", "@discographySkippedDownloaded": { "description": "Snackbar - with skipped tracks count", "placeholders": { - "added": {"type": "int"}, - "skipped": {"type": "int"} + "added": { + "type": "int" + }, + "skipped": { + "type": "int" + } } }, "discographyNoAlbums": "No albums available", - "@discographyNoAlbums": {"description": "Error - no albums found for artist"}, + "@discographyNoAlbums": { + "description": "Error - no albums found for artist" + }, "discographyFailedToFetch": "Failed to fetch some albums", - "@discographyFailedToFetch": {"description": "Error - some albums failed to load"}, - + "@discographyFailedToFetch": { + "description": "Error - some albums failed to load" + }, "sectionStorageAccess": "Storage Access", - "@sectionStorageAccess": {"description": "Section header for storage access settings"}, + "@sectionStorageAccess": { + "description": "Section header for storage access settings" + }, "allFilesAccess": "All Files Access", - "@allFilesAccess": {"description": "Toggle for MANAGE_EXTERNAL_STORAGE permission"}, + "@allFilesAccess": { + "description": "Toggle for MANAGE_EXTERNAL_STORAGE permission" + }, "allFilesAccessEnabledSubtitle": "Can write to any folder", - "@allFilesAccessEnabledSubtitle": {"description": "Subtitle when all files access is enabled"}, + "@allFilesAccessEnabledSubtitle": { + "description": "Subtitle when all files access is enabled" + }, "allFilesAccessDisabledSubtitle": "Limited to media folders only", - "@allFilesAccessDisabledSubtitle": {"description": "Subtitle when all files access is disabled"}, + "@allFilesAccessDisabledSubtitle": { + "description": "Subtitle when all files access is disabled" + }, "allFilesAccessDescription": "Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.", - "@allFilesAccessDescription": {"description": "Description explaining when to enable all files access"}, + "@allFilesAccessDescription": { + "description": "Description explaining when to enable all files access" + }, "allFilesAccessDeniedMessage": "Permission was denied. Please enable 'All files access' manually in system settings.", - "@allFilesAccessDeniedMessage": {"description": "Message when permission is permanently denied"}, + "@allFilesAccessDeniedMessage": { + "description": "Message when permission is permanently denied" + }, "allFilesAccessDisabledMessage": "All Files Access disabled. The app will use limited storage access.", - "@allFilesAccessDisabledMessage": {"description": "Snackbar message when user disables all files access"}, - + "@allFilesAccessDisabledMessage": { + "description": "Snackbar message when user disables all files access" + }, "settingsLocalLibrary": "Local Library", - "@settingsLocalLibrary": {"description": "Settings menu item - local library"}, + "@settingsLocalLibrary": { + "description": "Settings menu item - local library" + }, "settingsLocalLibrarySubtitle": "Scan music & detect duplicates", - "@settingsLocalLibrarySubtitle": {"description": "Subtitle for local library settings"}, + "@settingsLocalLibrarySubtitle": { + "description": "Subtitle for local library settings" + }, "settingsCache": "Storage & Cache", - "@settingsCache": {"description": "Settings menu item - cache management"}, + "@settingsCache": { + "description": "Settings menu item - cache management" + }, "settingsCacheSubtitle": "View size and clear cached data", - "@settingsCacheSubtitle": {"description": "Subtitle for cache management menu"}, + "@settingsCacheSubtitle": { + "description": "Subtitle for cache management menu" + }, "libraryTitle": "Local Library", - "@libraryTitle": {"description": "Library settings page title"}, - "libraryStatus": "Library Status", - "@libraryStatus": {"description": "Section header for library status"}, + "@libraryTitle": { + "description": "Library settings page title" + }, "libraryScanSettings": "Scan Settings", - "@libraryScanSettings": {"description": "Section header for scan settings"}, + "@libraryScanSettings": { + "description": "Section header for scan settings" + }, "libraryEnableLocalLibrary": "Enable Local Library", - "@libraryEnableLocalLibrary": {"description": "Toggle to enable library scanning"}, + "@libraryEnableLocalLibrary": { + "description": "Toggle to enable library scanning" + }, "libraryEnableLocalLibrarySubtitle": "Scan and track your existing music", - "@libraryEnableLocalLibrarySubtitle": {"description": "Subtitle for enable toggle"}, + "@libraryEnableLocalLibrarySubtitle": { + "description": "Subtitle for enable toggle" + }, "libraryFolder": "Library Folder", - "@libraryFolder": {"description": "Folder selection setting"}, + "@libraryFolder": { + "description": "Folder selection setting" + }, "libraryFolderHint": "Tap to select folder", - "@libraryFolderHint": {"description": "Placeholder when no folder selected"}, + "@libraryFolderHint": { + "description": "Placeholder when no folder selected" + }, "libraryShowDuplicateIndicator": "Show Duplicate Indicator", - "@libraryShowDuplicateIndicator": {"description": "Toggle for duplicate indicator in search"}, + "@libraryShowDuplicateIndicator": { + "description": "Toggle for duplicate indicator in search" + }, "libraryShowDuplicateIndicatorSubtitle": "Show when searching for existing tracks", - "@libraryShowDuplicateIndicatorSubtitle": {"description": "Subtitle for duplicate indicator toggle"}, + "@libraryShowDuplicateIndicatorSubtitle": { + "description": "Subtitle for duplicate indicator toggle" + }, "libraryActions": "Actions", - "@libraryActions": {"description": "Section header for library actions"}, + "@libraryActions": { + "description": "Section header for library actions" + }, "libraryScan": "Scan Library", - "@libraryScan": {"description": "Button to start library scan"}, + "@libraryScan": { + "description": "Button to start library scan" + }, "libraryScanSubtitle": "Scan for audio files", - "@libraryScanSubtitle": {"description": "Subtitle for scan button"}, + "@libraryScanSubtitle": { + "description": "Subtitle for scan button" + }, "libraryScanSelectFolderFirst": "Select a folder first", - "@libraryScanSelectFolderFirst": {"description": "Message when trying to scan without folder"}, + "@libraryScanSelectFolderFirst": { + "description": "Message when trying to scan without folder" + }, "libraryCleanupMissingFiles": "Cleanup Missing Files", - "@libraryCleanupMissingFiles": {"description": "Button to remove entries for missing files"}, + "@libraryCleanupMissingFiles": { + "description": "Button to remove entries for missing files" + }, "libraryCleanupMissingFilesSubtitle": "Remove entries for files that no longer exist", - "@libraryCleanupMissingFilesSubtitle": {"description": "Subtitle for cleanup button"}, + "@libraryCleanupMissingFilesSubtitle": { + "description": "Subtitle for cleanup button" + }, "libraryClear": "Clear Library", - "@libraryClear": {"description": "Button to clear all library entries"}, + "@libraryClear": { + "description": "Button to clear all library entries" + }, "libraryClearSubtitle": "Remove all scanned tracks", - "@libraryClearSubtitle": {"description": "Subtitle for clear button"}, + "@libraryClearSubtitle": { + "description": "Subtitle for clear button" + }, "libraryClearConfirmTitle": "Clear Library", - "@libraryClearConfirmTitle": {"description": "Dialog title for clear confirmation"}, + "@libraryClearConfirmTitle": { + "description": "Dialog title for clear confirmation" + }, "libraryClearConfirmMessage": "This will remove all scanned tracks from your library. Your actual music files will not be deleted.", - "@libraryClearConfirmMessage": {"description": "Dialog message for clear confirmation"}, + "@libraryClearConfirmMessage": { + "description": "Dialog message for clear confirmation" + }, "libraryAbout": "About Local Library", - "@libraryAbout": {"description": "Section header for about info"}, + "@libraryAbout": { + "description": "Section header for about info" + }, "libraryAboutDescription": "Scans your existing music collection to detect duplicates when downloading. Supports FLAC, M4A, MP3, Opus, and OGG formats. Metadata is read from file tags when available.", - "@libraryAboutDescription": {"description": "Description of local library feature"}, - "libraryTracksCount": "{count} tracks", - "@libraryTracksCount": { - "description": "Track count in library", - "placeholders": { - "count": {"type": "int"} - } + "@libraryAboutDescription": { + "description": "Description of local library feature" }, "libraryTracksUnit": "{count, plural, =1{track} other{tracks}}", "@libraryTracksUnit": { "description": "Unit label for tracks count (without the number itself)", "placeholders": { - "count": {"type": "int"} + "count": { + "type": "int" + } } }, "libraryLastScanned": "Last scanned: {time}", "@libraryLastScanned": { "description": "Last scan time display", "placeholders": { - "time": {"type": "String"} + "time": { + "type": "String" + } } }, "libraryLastScannedNever": "Never", - "@libraryLastScannedNever": {"description": "Shown when library has never been scanned"}, + "@libraryLastScannedNever": { + "description": "Shown when library has never been scanned" + }, "libraryScanning": "Scanning...", - "@libraryScanning": {"description": "Status during scan"}, + "@libraryScanning": { + "description": "Status during scan" + }, "libraryScanProgress": "{progress}% of {total} files", "@libraryScanProgress": { "description": "Scan progress display", "placeholders": { - "progress": {"type": "String"}, - "total": {"type": "int"} + "progress": { + "type": "String" + }, + "total": { + "type": "int" + } } }, "libraryInLibrary": "In Library", - "@libraryInLibrary": {"description": "Badge shown on tracks that exist in local library"}, + "@libraryInLibrary": { + "description": "Badge shown on tracks that exist in local library" + }, "libraryRemovedMissingFiles": "Removed {count} missing files from library", "@libraryRemovedMissingFiles": { "description": "Snackbar after cleanup", "placeholders": { - "count": {"type": "int"} + "count": { + "type": "int" + } } }, "libraryCleared": "Library cleared", - "@libraryCleared": {"description": "Snackbar after clearing library"}, - "libraryStorageAccessRequired": "Storage Access Required", - "@libraryStorageAccessRequired": {"description": "Dialog title for storage permission"}, - "libraryStorageAccessMessage": "SpotiFLAC needs storage access to scan your music library. Please grant permission in settings.", - "@libraryStorageAccessMessage": {"description": "Dialog message for storage permission"}, - "libraryFolderNotExist": "Selected folder does not exist", - "@libraryFolderNotExist": {"description": "Error when folder doesn't exist"}, - "librarySourceDownloaded": "Downloaded", - "@librarySourceDownloaded": {"description": "Badge for tracks downloaded via SpotiFLAC"}, - "librarySourceLocal": "Local", - "@librarySourceLocal": {"description": "Badge for tracks from local library scan"}, - "libraryFilterAll": "All", - "@libraryFilterAll": {"description": "Filter chip - show all library items"}, - "libraryFilterDownloaded": "Downloaded", - "@libraryFilterDownloaded": {"description": "Filter chip - show only downloaded items"}, - "libraryFilterLocal": "Local", - "@libraryFilterLocal": {"description": "Filter chip - show only local library items"}, - - "libraryFilterTitle": "Filters", - "@libraryFilterTitle": {"description": "Filter bottom sheet title"}, - "libraryFilterReset": "Reset", - "@libraryFilterReset": {"description": "Reset all filters button"}, - "libraryFilterApply": "Apply", - "@libraryFilterApply": {"description": "Apply filters button"}, - "libraryFilterSource": "Source", - "@libraryFilterSource": {"description": "Filter section - source type"}, - "libraryFilterQuality": "Quality", - "@libraryFilterQuality": {"description": "Filter section - audio quality"}, - "libraryFilterQualityHiRes": "Hi-Res (24bit)", - "@libraryFilterQualityHiRes": {"description": "Filter option - high resolution audio"}, - "libraryFilterQualityCD": "CD (16bit)", - "@libraryFilterQualityCD": {"description": "Filter option - CD quality audio"}, - "libraryFilterQualityLossy": "Lossy", - "@libraryFilterQualityLossy": {"description": "Filter option - lossy compressed audio"}, - "libraryFilterFormat": "Format", - "@libraryFilterFormat": {"description": "Filter section - file format"}, - "libraryFilterDate": "Date Added", - "@libraryFilterDate": {"description": "Filter section - date range"}, - "libraryFilterDateToday": "Today", - "@libraryFilterDateToday": {"description": "Filter option - today only"}, - "libraryFilterDateWeek": "This Week", - "@libraryFilterDateWeek": {"description": "Filter option - this week"}, - "libraryFilterDateMonth": "This Month", - "@libraryFilterDateMonth": {"description": "Filter option - this month"}, - "libraryFilterDateYear": "This Year", - "@libraryFilterDateYear": {"description": "Filter option - this year"}, - "libraryFilterSort": "Sort", - "@libraryFilterSort": {"description": "Filter section - sort order"}, - "libraryFilterSortLatest": "Latest", - "@libraryFilterSortLatest": {"description": "Sort option - newest first"}, - "libraryFilterSortOldest": "Oldest", - "@libraryFilterSortOldest": {"description": "Sort option - oldest first"}, - "libraryFilterActive": "{count} filter(s) active", - "@libraryFilterActive": { - "description": "Badge showing number of active filters", - "placeholders": { - "count": {"type": "int"} - } + "@libraryCleared": { + "description": "Snackbar after clearing library" + }, + "libraryStorageAccessRequired": "Storage Access Required", + "@libraryStorageAccessRequired": { + "description": "Dialog title for storage permission" + }, + "libraryStorageAccessMessage": "SpotiFLAC needs storage access to scan your music library. Please grant permission in settings.", + "@libraryStorageAccessMessage": { + "description": "Dialog message for storage permission" + }, + "libraryFolderNotExist": "Selected folder does not exist", + "@libraryFolderNotExist": { + "description": "Error when folder doesn't exist" + }, + "librarySourceDownloaded": "Downloaded", + "@librarySourceDownloaded": { + "description": "Badge for tracks downloaded via SpotiFLAC" + }, + "librarySourceLocal": "Local", + "@librarySourceLocal": { + "description": "Badge for tracks from local library scan" + }, + "libraryFilterAll": "All", + "@libraryFilterAll": { + "description": "Filter chip - show all library items" + }, + "libraryFilterDownloaded": "Downloaded", + "@libraryFilterDownloaded": { + "description": "Filter chip - show only downloaded items" + }, + "libraryFilterLocal": "Local", + "@libraryFilterLocal": { + "description": "Filter chip - show only local library items" + }, + "libraryFilterTitle": "Filters", + "@libraryFilterTitle": { + "description": "Filter bottom sheet title" + }, + "libraryFilterReset": "Reset", + "@libraryFilterReset": { + "description": "Reset all filters button" + }, + "libraryFilterApply": "Apply", + "@libraryFilterApply": { + "description": "Apply filters button" + }, + "libraryFilterSource": "Source", + "@libraryFilterSource": { + "description": "Filter section - source type" + }, + "libraryFilterQuality": "Quality", + "@libraryFilterQuality": { + "description": "Filter section - audio quality" + }, + "libraryFilterQualityHiRes": "Hi-Res (24bit)", + "@libraryFilterQualityHiRes": { + "description": "Filter option - high resolution audio" + }, + "libraryFilterQualityCD": "CD (16bit)", + "@libraryFilterQualityCD": { + "description": "Filter option - CD quality audio" + }, + "libraryFilterQualityLossy": "Lossy", + "@libraryFilterQualityLossy": { + "description": "Filter option - lossy compressed audio" + }, + "libraryFilterFormat": "Format", + "@libraryFilterFormat": { + "description": "Filter section - file format" + }, + "libraryFilterSort": "Sort", + "@libraryFilterSort": { + "description": "Filter section - sort order" + }, + "libraryFilterSortLatest": "Latest", + "@libraryFilterSortLatest": { + "description": "Sort option - newest first" + }, + "libraryFilterSortOldest": "Oldest", + "@libraryFilterSortOldest": { + "description": "Sort option - oldest first" }, - "timeJustNow": "Just now", - "@timeJustNow": {"description": "Relative time - less than a minute ago"}, + "@timeJustNow": { + "description": "Relative time - less than a minute ago" + }, "timeMinutesAgo": "{count, plural, =1{1 minute ago} other{{count} minutes ago}}", "@timeMinutesAgo": { "description": "Relative time - minutes ago", "placeholders": { - "count": {"type": "int"} + "count": { + "type": "int" + } } }, "timeHoursAgo": "{count, plural, =1{1 hour ago} other{{count} hours ago}}", "@timeHoursAgo": { "description": "Relative time - hours ago", "placeholders": { - "count": {"type": "int"} + "count": { + "type": "int" + } } }, - - "storageSwitchTitle": "Switch Storage Mode", - "@storageSwitchTitle": {"description": "Dialog title when switching storage mode"}, - "storageSwitchToSafTitle": "Switch to SAF Storage?", - "@storageSwitchToSafTitle": {"description": "Dialog title when switching to SAF"}, - "storageSwitchToAppTitle": "Switch to App Storage?", - "@storageSwitchToAppTitle": {"description": "Dialog title when switching to app storage"}, - "storageSwitchToSafMessage": "Your existing downloads will remain in the current location and stay accessible.\n\nNew downloads will be saved to your selected SAF folder.", - "@storageSwitchToSafMessage": {"description": "Explanation when switching to SAF"}, - "storageSwitchToAppMessage": "Your existing downloads will remain in the current SAF location and stay accessible.\n\nNew downloads will be saved to Music/SpotiFLAC folder.", - "@storageSwitchToAppMessage": {"description": "Explanation when switching to app storage"}, - "storageSwitchExistingDownloads": "Existing Downloads", - "@storageSwitchExistingDownloads": {"description": "Section header for existing downloads info"}, - "storageSwitchExistingDownloadsInfo": "{count} tracks in {mode} storage", - "@storageSwitchExistingDownloadsInfo": { - "description": "Info about existing downloads count", - "placeholders": { - "count": {"type": "int"}, - "mode": {"type": "String"} - } - }, - "storageSwitchNewDownloads": "New Downloads", - "@storageSwitchNewDownloads": {"description": "Section header for new downloads info"}, - "storageSwitchNewDownloadsLocation": "Will be saved to: {location}", - "@storageSwitchNewDownloadsLocation": { - "description": "Shows where new downloads will go", - "placeholders": { - "location": {"type": "String"} - } - }, - "storageSwitchContinue": "Continue", - "@storageSwitchContinue": {"description": "Button to proceed with storage switch"}, - "storageSwitchSelectFolder": "Select SAF Folder", - "@storageSwitchSelectFolder": {"description": "Button to select SAF folder"}, - "storageAppStorage": "App Storage", - "@storageAppStorage": {"description": "Label for app storage mode"}, - "storageSafStorage": "SAF Storage", - "@storageSafStorage": {"description": "Label for SAF storage mode"}, - "storageModeBadge": "Storage: {mode}", - "@storageModeBadge": { - "description": "Badge showing storage mode for a track", - "placeholders": { - "mode": {"type": "String"} - } - }, - "storageStatsTitle": "Storage Statistics", - "@storageStatsTitle": {"description": "Section title for storage stats"}, - "storageStatsAppCount": "{count} tracks in App Storage", - "@storageStatsAppCount": { - "description": "Count of tracks in app storage", - "placeholders": { - "count": {"type": "int"} - } - }, - "storageStatsSafCount": "{count} tracks in SAF Storage", - "@storageStatsSafCount": { - "description": "Count of tracks in SAF storage", - "placeholders": { - "count": {"type": "int"} - } - }, - "storageModeInfo": "Your files are stored in multiple locations", - "@storageModeInfo": {"description": "Info when user has files in both storage modes"}, - "tutorialWelcomeTitle": "Welcome to SpotiFLAC!", - "@tutorialWelcomeTitle": {"description": "Tutorial welcome page title"}, + "@tutorialWelcomeTitle": { + "description": "Tutorial welcome page title" + }, "tutorialWelcomeDesc": "Let's learn how to download your favorite music in lossless quality. This quick tutorial will show you the basics.", - "@tutorialWelcomeDesc": {"description": "Tutorial welcome page description"}, + "@tutorialWelcomeDesc": { + "description": "Tutorial welcome page description" + }, "tutorialWelcomeTip1": "Download music from Spotify, Deezer, or paste any supported URL", - "@tutorialWelcomeTip1": {"description": "Tutorial welcome tip 1"}, + "@tutorialWelcomeTip1": { + "description": "Tutorial welcome tip 1" + }, "tutorialWelcomeTip2": "Get FLAC quality audio from Tidal, Qobuz, or Amazon Music", - "@tutorialWelcomeTip2": {"description": "Tutorial welcome tip 2"}, + "@tutorialWelcomeTip2": { + "description": "Tutorial welcome tip 2" + }, "tutorialWelcomeTip3": "Automatic metadata, cover art, and lyrics embedding", - "@tutorialWelcomeTip3": {"description": "Tutorial welcome tip 3"}, - + "@tutorialWelcomeTip3": { + "description": "Tutorial welcome tip 3" + }, "tutorialSearchTitle": "Finding Music", - "@tutorialSearchTitle": {"description": "Tutorial search page title"}, + "@tutorialSearchTitle": { + "description": "Tutorial search page title" + }, "tutorialSearchDesc": "There are two easy ways to find music you want to download.", - "@tutorialSearchDesc": {"description": "Tutorial search page description"}, - "tutorialSearchTip1": "Paste a Spotify or Deezer URL directly in the search box", - "@tutorialSearchTip1": {"description": "Tutorial search tip 1"}, - "tutorialSearchTip2": "Or type the song name, artist, or album to search", - "@tutorialSearchTip2": {"description": "Tutorial search tip 2"}, - "tutorialSearchTip3": "Supports tracks, albums, playlists, and artist pages", - "@tutorialSearchTip3": {"description": "Tutorial search tip 3"}, - + "@tutorialSearchDesc": { + "description": "Tutorial search page description" + }, "tutorialDownloadTitle": "Downloading Music", - "@tutorialDownloadTitle": {"description": "Tutorial download page title"}, + "@tutorialDownloadTitle": { + "description": "Tutorial download page title" + }, "tutorialDownloadDesc": "Downloading music is simple and fast. Here's how it works.", - "@tutorialDownloadDesc": {"description": "Tutorial download page description"}, - "tutorialDownloadTip1": "Tap the download button next to any track to start downloading", - "@tutorialDownloadTip1": {"description": "Tutorial download tip 1"}, - "tutorialDownloadTip2": "Choose your preferred quality (FLAC, Hi-Res, or MP3)", - "@tutorialDownloadTip2": {"description": "Tutorial download tip 2"}, - "tutorialDownloadTip3": "Download entire albums or playlists with one tap", - "@tutorialDownloadTip3": {"description": "Tutorial download tip 3"}, - + "@tutorialDownloadDesc": { + "description": "Tutorial download page description" + }, "tutorialLibraryTitle": "Your Library", - "@tutorialLibraryTitle": {"description": "Tutorial library page title"}, + "@tutorialLibraryTitle": { + "description": "Tutorial library page title" + }, "tutorialLibraryDesc": "All your downloaded music is organized in the Library tab.", - "@tutorialLibraryDesc": {"description": "Tutorial library page description"}, + "@tutorialLibraryDesc": { + "description": "Tutorial library page description" + }, "tutorialLibraryTip1": "View download progress and queue in the Library tab", - "@tutorialLibraryTip1": {"description": "Tutorial library tip 1"}, + "@tutorialLibraryTip1": { + "description": "Tutorial library tip 1" + }, "tutorialLibraryTip2": "Tap any track to play it with your music player", - "@tutorialLibraryTip2": {"description": "Tutorial library tip 2"}, + "@tutorialLibraryTip2": { + "description": "Tutorial library tip 2" + }, "tutorialLibraryTip3": "Switch between list and grid view for better browsing", - "@tutorialLibraryTip3": {"description": "Tutorial library tip 3"}, - + "@tutorialLibraryTip3": { + "description": "Tutorial library tip 3" + }, "tutorialExtensionsTitle": "Extensions", - "@tutorialExtensionsTitle": {"description": "Tutorial extensions page title"}, + "@tutorialExtensionsTitle": { + "description": "Tutorial extensions page title" + }, "tutorialExtensionsDesc": "Extend the app's capabilities with community extensions.", - "@tutorialExtensionsDesc": {"description": "Tutorial extensions page description"}, + "@tutorialExtensionsDesc": { + "description": "Tutorial extensions page description" + }, "tutorialExtensionsTip1": "Browse the Store tab to discover useful extensions", - "@tutorialExtensionsTip1": {"description": "Tutorial extensions tip 1"}, + "@tutorialExtensionsTip1": { + "description": "Tutorial extensions tip 1" + }, "tutorialExtensionsTip2": "Add new download providers or search sources", - "@tutorialExtensionsTip2": {"description": "Tutorial extensions tip 2"}, + "@tutorialExtensionsTip2": { + "description": "Tutorial extensions tip 2" + }, "tutorialExtensionsTip3": "Get lyrics, enhanced metadata, and more features", - "@tutorialExtensionsTip3": {"description": "Tutorial extensions tip 3"}, - + "@tutorialExtensionsTip3": { + "description": "Tutorial extensions tip 3" + }, "tutorialSettingsTitle": "Customize Your Experience", - "@tutorialSettingsTitle": {"description": "Tutorial settings page title"}, + "@tutorialSettingsTitle": { + "description": "Tutorial settings page title" + }, "tutorialSettingsDesc": "Personalize the app in Settings to match your preferences.", - "@tutorialSettingsDesc": {"description": "Tutorial settings page description"}, + "@tutorialSettingsDesc": { + "description": "Tutorial settings page description" + }, "tutorialSettingsTip1": "Change download location and folder organization", - "@tutorialSettingsTip1": {"description": "Tutorial settings tip 1"}, + "@tutorialSettingsTip1": { + "description": "Tutorial settings tip 1" + }, "tutorialSettingsTip2": "Set default audio quality and format preferences", - "@tutorialSettingsTip2": {"description": "Tutorial settings tip 2"}, + "@tutorialSettingsTip2": { + "description": "Tutorial settings tip 2" + }, "tutorialSettingsTip3": "Customize app theme and appearance", - "@tutorialSettingsTip3": {"description": "Tutorial settings tip 3"}, - + "@tutorialSettingsTip3": { + "description": "Tutorial settings tip 3" + }, "tutorialReadyMessage": "You're all set! Start downloading your favorite music now.", - "@tutorialReadyMessage": {"description": "Tutorial completion message"}, - "tutorialExample": "EXAMPLE", - "@tutorialExample": {"description": "Example label in tutorial"}, - + "@tutorialReadyMessage": { + "description": "Tutorial completion message" + }, "libraryForceFullScan": "Force Full Scan", - "@libraryForceFullScan": {"description": "Button to force a complete rescan of library"}, + "@libraryForceFullScan": { + "description": "Button to force a complete rescan of library" + }, "libraryForceFullScanSubtitle": "Rescan all files, ignoring cache", - "@libraryForceFullScanSubtitle": {"description": "Subtitle for force full scan button"}, - + "@libraryForceFullScanSubtitle": { + "description": "Subtitle for force full scan button" + }, "cleanupOrphanedDownloads": "Cleanup Orphaned Downloads", - "@cleanupOrphanedDownloads": {"description": "Button to remove history entries for deleted files"}, + "@cleanupOrphanedDownloads": { + "description": "Button to remove history entries for deleted files" + }, "cleanupOrphanedDownloadsSubtitle": "Remove history entries for files that no longer exist", - "@cleanupOrphanedDownloadsSubtitle": {"description": "Subtitle for orphaned cleanup button"}, + "@cleanupOrphanedDownloadsSubtitle": { + "description": "Subtitle for orphaned cleanup button" + }, "cleanupOrphanedDownloadsResult": "Removed {count} orphaned entries from history", "@cleanupOrphanedDownloadsResult": { "description": "Snackbar after orphan cleanup", "placeholders": { - "count": {"type": "int"} + "count": { + "type": "int" + } } }, "cleanupOrphanedDownloadsNone": "No orphaned entries found", - "@cleanupOrphanedDownloadsNone": {"description": "Snackbar when no orphans found"}, - + "@cleanupOrphanedDownloadsNone": { + "description": "Snackbar when no orphans found" + }, "cacheTitle": "Storage & Cache", - "@cacheTitle": {"description": "Cache management page title"}, + "@cacheTitle": { + "description": "Cache management page title" + }, "cacheSummaryTitle": "Cache overview", - "@cacheSummaryTitle": {"description": "Heading for cache summary card"}, + "@cacheSummaryTitle": { + "description": "Heading for cache summary card" + }, "cacheSummarySubtitle": "Clearing cache will not remove downloaded music files.", - "@cacheSummarySubtitle": {"description": "Helper text for cache summary card"}, + "@cacheSummarySubtitle": { + "description": "Helper text for cache summary card" + }, "cacheEstimatedTotal": "Estimated cache usage: {size}", "@cacheEstimatedTotal": { "description": "Total cache size shown in summary", "placeholders": { - "size": {"type": "String"} + "size": { + "type": "String" + } } }, "cacheSectionStorage": "Cached Data", - "@cacheSectionStorage": {"description": "Section header for cache entries"}, + "@cacheSectionStorage": { + "description": "Section header for cache entries" + }, "cacheSectionMaintenance": "Maintenance", - "@cacheSectionMaintenance": {"description": "Section header for cleanup actions"}, + "@cacheSectionMaintenance": { + "description": "Section header for cleanup actions" + }, "cacheAppDirectory": "App cache directory", - "@cacheAppDirectory": {"description": "Cache item title for app cache directory"}, + "@cacheAppDirectory": { + "description": "Cache item title for app cache directory" + }, "cacheAppDirectoryDesc": "HTTP responses, WebView data, and other temporary app data.", - "@cacheAppDirectoryDesc": {"description": "Description of what app cache directory contains"}, + "@cacheAppDirectoryDesc": { + "description": "Description of what app cache directory contains" + }, "cacheTempDirectory": "Temporary directory", - "@cacheTempDirectory": {"description": "Cache item title for temporary files directory"}, + "@cacheTempDirectory": { + "description": "Cache item title for temporary files directory" + }, "cacheTempDirectoryDesc": "Temporary files from downloads and audio conversion.", - "@cacheTempDirectoryDesc": {"description": "Description of what temporary directory contains"}, + "@cacheTempDirectoryDesc": { + "description": "Description of what temporary directory contains" + }, "cacheCoverImage": "Cover image cache", - "@cacheCoverImage": {"description": "Cache item title for persistent cover images"}, + "@cacheCoverImage": { + "description": "Cache item title for persistent cover images" + }, "cacheCoverImageDesc": "Downloaded album and track cover art. Will re-download when viewed.", - "@cacheCoverImageDesc": {"description": "Description of what cover image cache contains"}, + "@cacheCoverImageDesc": { + "description": "Description of what cover image cache contains" + }, "cacheLibraryCover": "Library cover cache", - "@cacheLibraryCover": {"description": "Cache item title for local library cover art images"}, + "@cacheLibraryCover": { + "description": "Cache item title for local library cover art images" + }, "cacheLibraryCoverDesc": "Cover art extracted from local music files. Will re-extract on next scan.", - "@cacheLibraryCoverDesc": {"description": "Description of what library cover cache contains"}, + "@cacheLibraryCoverDesc": { + "description": "Description of what library cover cache contains" + }, "cacheExploreFeed": "Explore feed cache", - "@cacheExploreFeed": {"description": "Cache item title for explore home feed cache"}, + "@cacheExploreFeed": { + "description": "Cache item title for explore home feed cache" + }, "cacheExploreFeedDesc": "Explore tab content (new releases, trending). Will refresh on next visit.", - "@cacheExploreFeedDesc": {"description": "Description of what explore feed cache contains"}, + "@cacheExploreFeedDesc": { + "description": "Description of what explore feed cache contains" + }, "cacheTrackLookup": "Track lookup cache", - "@cacheTrackLookup": {"description": "Cache item title for track ID lookup cache"}, + "@cacheTrackLookup": { + "description": "Cache item title for track ID lookup cache" + }, "cacheTrackLookupDesc": "Spotify/Deezer track ID lookups. Clearing may slow next few searches.", - "@cacheTrackLookupDesc": {"description": "Description of what track lookup cache contains"}, + "@cacheTrackLookupDesc": { + "description": "Description of what track lookup cache contains" + }, "cacheCleanupUnusedDesc": "Remove orphaned download history and library entries for missing files.", - "@cacheCleanupUnusedDesc": {"description": "Description of what cleanup unused data does"}, + "@cacheCleanupUnusedDesc": { + "description": "Description of what cleanup unused data does" + }, "cacheNoData": "No cached data", - "@cacheNoData": {"description": "Label when cache category has no data"}, + "@cacheNoData": { + "description": "Label when cache category has no data" + }, "cacheSizeWithFiles": "{size} in {count} files", "@cacheSizeWithFiles": { "description": "Cache size and file count", "placeholders": { - "size": {"type": "String"}, - "count": {"type": "int"} + "size": { + "type": "String" + }, + "count": { + "type": "int" + } } }, "cacheSizeOnly": "{size}", "@cacheSizeOnly": { "description": "Cache size only", "placeholders": { - "size": {"type": "String"} + "size": { + "type": "String" + } } }, "cacheEntries": "{count} entries", "@cacheEntries": { "description": "Track cache entry count", "placeholders": { - "count": {"type": "int"} + "count": { + "type": "int" + } } }, "cacheClearSuccess": "Cleared: {target}", "@cacheClearSuccess": { "description": "Snackbar after clearing selected cache", "placeholders": { - "target": {"type": "String"} + "target": { + "type": "String" + } } }, "cacheClearConfirmTitle": "Clear cache?", - "@cacheClearConfirmTitle": {"description": "Dialog title before clearing one cache category"}, + "@cacheClearConfirmTitle": { + "description": "Dialog title before clearing one cache category" + }, "cacheClearConfirmMessage": "This will clear cached data for {target}. Downloaded music files will not be deleted.", "@cacheClearConfirmMessage": { "description": "Dialog message before clearing selected cache", "placeholders": { - "target": {"type": "String"} + "target": { + "type": "String" + } } }, "cacheClearAllConfirmTitle": "Clear all cache?", - "@cacheClearAllConfirmTitle": {"description": "Dialog title before clearing all caches"}, + "@cacheClearAllConfirmTitle": { + "description": "Dialog title before clearing all caches" + }, "cacheClearAllConfirmMessage": "This will clear all cache categories on this page. Downloaded music files will not be deleted.", - "@cacheClearAllConfirmMessage": {"description": "Dialog message before clearing all caches"}, + "@cacheClearAllConfirmMessage": { + "description": "Dialog message before clearing all caches" + }, "cacheClearAll": "Clear all cache", - "@cacheClearAll": {"description": "Button label to clear all caches"}, + "@cacheClearAll": { + "description": "Button label to clear all caches" + }, "cacheCleanupUnused": "Cleanup unused data", - "@cacheCleanupUnused": {"description": "Action title for cleaning unused entries"}, + "@cacheCleanupUnused": { + "description": "Action title for cleaning unused entries" + }, "cacheCleanupUnusedSubtitle": "Remove orphaned download history and missing library entries", - "@cacheCleanupUnusedSubtitle": {"description": "Subtitle for cleanup unused data action"}, + "@cacheCleanupUnusedSubtitle": { + "description": "Subtitle for cleanup unused data action" + }, "cacheCleanupResult": "Cleanup completed: {downloadCount} orphaned downloads, {libraryCount} missing library entries", "@cacheCleanupResult": { "description": "Snackbar after unused data cleanup", "placeholders": { - "downloadCount": {"type": "int"}, - "libraryCount": {"type": "int"} + "downloadCount": { + "type": "int" + }, + "libraryCount": { + "type": "int" + } } }, "cacheRefreshStats": "Refresh stats", - "@cacheRefreshStats": {"description": "Button label to refresh cache statistics"}, - + "@cacheRefreshStats": { + "description": "Button label to refresh cache statistics" + }, "trackSaveCoverArt": "Save Cover Art", - "@trackSaveCoverArt": {"description": "Menu action - save album cover art as file"}, + "@trackSaveCoverArt": { + "description": "Menu action - save album cover art as file" + }, "trackSaveCoverArtSubtitle": "Save album art as .jpg file", - "@trackSaveCoverArtSubtitle": {"description": "Subtitle for save cover art action"}, + "@trackSaveCoverArtSubtitle": { + "description": "Subtitle for save cover art action" + }, "trackSaveLyrics": "Save Lyrics (.lrc)", - "@trackSaveLyrics": {"description": "Menu action - save lyrics as .lrc file"}, + "@trackSaveLyrics": { + "description": "Menu action - save lyrics as .lrc file" + }, "trackSaveLyricsSubtitle": "Fetch and save lyrics as .lrc file", - "@trackSaveLyricsSubtitle": {"description": "Subtitle for save lyrics action"}, + "@trackSaveLyricsSubtitle": { + "description": "Subtitle for save lyrics action" + }, "trackSaveLyricsProgress": "Saving lyrics...", - "@trackSaveLyricsProgress": {"description": "Snackbar while saving lyrics to file"}, + "@trackSaveLyricsProgress": { + "description": "Snackbar while saving lyrics to file" + }, "trackReEnrich": "Re-enrich", - "@trackReEnrich": {"description": "Menu action - re-embed metadata into audio file"}, - "trackReEnrichSubtitle": "Re-embed metadata without re-downloading", - "@trackReEnrichSubtitle": {"description": "Subtitle for re-enrich metadata action"}, + "@trackReEnrich": { + "description": "Menu action - re-embed metadata into audio file" + }, "trackReEnrichOnlineSubtitle": "Search metadata online and embed into file", - "@trackReEnrichOnlineSubtitle": {"description": "Subtitle for re-enrich metadata action for local items"}, + "@trackReEnrichOnlineSubtitle": { + "description": "Subtitle for re-enrich metadata action for local items" + }, "trackEditMetadata": "Edit Metadata", - "@trackEditMetadata": {"description": "Menu action - edit embedded metadata"}, + "@trackEditMetadata": { + "description": "Menu action - edit embedded metadata" + }, "trackCoverSaved": "Cover art saved to {fileName}", "@trackCoverSaved": { "description": "Snackbar after cover art saved", "placeholders": { - "fileName": {"type": "String"} + "fileName": { + "type": "String" + } } }, "trackCoverNoSource": "No cover art source available", - "@trackCoverNoSource": {"description": "Snackbar when no cover art URL or embedded cover"}, + "@trackCoverNoSource": { + "description": "Snackbar when no cover art URL or embedded cover" + }, "trackLyricsSaved": "Lyrics saved to {fileName}", "@trackLyricsSaved": { "description": "Snackbar after lyrics saved", "placeholders": { - "fileName": {"type": "String"} + "fileName": { + "type": "String" + } } }, "trackReEnrichProgress": "Re-enriching metadata...", - "@trackReEnrichProgress": {"description": "Snackbar while re-enriching metadata"}, + "@trackReEnrichProgress": { + "description": "Snackbar while re-enriching metadata" + }, "trackReEnrichSearching": "Searching metadata online...", - "@trackReEnrichSearching": {"description": "Snackbar while searching metadata from internet for local items"}, + "@trackReEnrichSearching": { + "description": "Snackbar while searching metadata from internet for local items" + }, "trackReEnrichSuccess": "Metadata re-enriched successfully", - "@trackReEnrichSuccess": {"description": "Snackbar after successful re-enrichment"}, + "@trackReEnrichSuccess": { + "description": "Snackbar after successful re-enrichment" + }, "trackReEnrichFfmpegFailed": "FFmpeg metadata embed failed", - "@trackReEnrichFfmpegFailed": {"description": "Snackbar when FFmpeg embed fails for MP3/Opus"}, + "@trackReEnrichFfmpegFailed": { + "description": "Snackbar when FFmpeg embed fails for MP3/Opus" + }, "trackSaveFailed": "Failed: {error}", "@trackSaveFailed": { "description": "Snackbar when save operation fails", "placeholders": { - "error": {"type": "String"} + "error": { + "type": "String" + } } }, - "trackConvertFormat": "Convert Format", - "@trackConvertFormat": {"description": "Menu item - convert audio format"}, + "@trackConvertFormat": { + "description": "Menu item - convert audio format" + }, "trackConvertFormatSubtitle": "Convert to MP3 or Opus", - "@trackConvertFormatSubtitle": {"description": "Subtitle for convert format menu item"}, + "@trackConvertFormatSubtitle": { + "description": "Subtitle for convert format menu item" + }, "trackConvertTitle": "Convert Audio", - "@trackConvertTitle": {"description": "Title of convert bottom sheet"}, + "@trackConvertTitle": { + "description": "Title of convert bottom sheet" + }, "trackConvertTargetFormat": "Target Format", - "@trackConvertTargetFormat": {"description": "Label for format selection"}, + "@trackConvertTargetFormat": { + "description": "Label for format selection" + }, "trackConvertBitrate": "Bitrate", - "@trackConvertBitrate": {"description": "Label for bitrate selection"}, + "@trackConvertBitrate": { + "description": "Label for bitrate selection" + }, "trackConvertConfirmTitle": "Confirm Conversion", - "@trackConvertConfirmTitle": {"description": "Confirmation dialog title"}, + "@trackConvertConfirmTitle": { + "description": "Confirmation dialog title" + }, "trackConvertConfirmMessage": "Convert from {sourceFormat} to {targetFormat} at {bitrate}?\n\nThe original file will be deleted after conversion.", "@trackConvertConfirmMessage": { "description": "Confirmation dialog message", "placeholders": { - "sourceFormat": {"type": "String"}, - "targetFormat": {"type": "String"}, - "bitrate": {"type": "String"} + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "bitrate": { + "type": "String" + } } }, "trackConvertConverting": "Converting audio...", - "@trackConvertConverting": {"description": "Snackbar while converting"}, + "@trackConvertConverting": { + "description": "Snackbar while converting" + }, "trackConvertSuccess": "Converted to {format} successfully", "@trackConvertSuccess": { "description": "Snackbar after successful conversion", "placeholders": { - "format": {"type": "String"} + "format": { + "type": "String" + } } }, "trackConvertFailed": "Conversion failed", - "@trackConvertFailed": {"description": "Snackbar when conversion fails"}, - + "@trackConvertFailed": { + "description": "Snackbar when conversion fails" + }, "actionCreate": "Create", - "@actionCreate": {"description": "Generic action button - create"}, - + "@actionCreate": { + "description": "Generic action button - create" + }, "collectionFoldersTitle": "My folders", - "@collectionFoldersTitle": {"description": "Library section title for custom folders"}, + "@collectionFoldersTitle": { + "description": "Library section title for custom folders" + }, "collectionWishlist": "Wishlist", - "@collectionWishlist": {"description": "Custom folder for saved tracks to download later"}, + "@collectionWishlist": { + "description": "Custom folder for saved tracks to download later" + }, "collectionLoved": "Loved", - "@collectionLoved": {"description": "Custom folder for favorite tracks"}, + "@collectionLoved": { + "description": "Custom folder for favorite tracks" + }, "collectionPlaylists": "Playlists", - "@collectionPlaylists": {"description": "Custom user playlists folder"}, + "@collectionPlaylists": { + "description": "Custom user playlists folder" + }, "collectionPlaylist": "Playlist", - "@collectionPlaylist": {"description": "Single playlist label"}, + "@collectionPlaylist": { + "description": "Single playlist label" + }, "collectionAddToPlaylist": "Add to playlist", - "@collectionAddToPlaylist": {"description": "Action to add a track to user playlist"}, + "@collectionAddToPlaylist": { + "description": "Action to add a track to user playlist" + }, "collectionCreatePlaylist": "Create playlist", - "@collectionCreatePlaylist": {"description": "Action to create a new playlist"}, + "@collectionCreatePlaylist": { + "description": "Action to create a new playlist" + }, "collectionNoPlaylistsYet": "No playlists yet", - "@collectionNoPlaylistsYet": {"description": "Empty state title when user has no playlists"}, + "@collectionNoPlaylistsYet": { + "description": "Empty state title when user has no playlists" + }, "collectionNoPlaylistsSubtitle": "Create a playlist to start categorizing tracks", - "@collectionNoPlaylistsSubtitle": {"description": "Empty state subtitle when user has no playlists"}, + "@collectionNoPlaylistsSubtitle": { + "description": "Empty state subtitle when user has no playlists" + }, "collectionPlaylistTracks": "{count, plural, =1{1 track} other{{count} tracks}}", "@collectionPlaylistTracks": { "description": "Track count label for custom playlists", "placeholders": { - "count": {"type": "int"} + "count": { + "type": "int" + } } }, "collectionAddedToPlaylist": "Added to \"{playlistName}\"", "@collectionAddedToPlaylist": { "description": "Snackbar after adding track to playlist", "placeholders": { - "playlistName": {"type": "String"} + "playlistName": { + "type": "String" + } } }, "collectionAlreadyInPlaylist": "Already in \"{playlistName}\"", "@collectionAlreadyInPlaylist": { "description": "Snackbar when track already exists in playlist", "placeholders": { - "playlistName": {"type": "String"} + "playlistName": { + "type": "String" + } } }, "collectionPlaylistCreated": "Playlist created", - "@collectionPlaylistCreated": {"description": "Snackbar after creating playlist"}, + "@collectionPlaylistCreated": { + "description": "Snackbar after creating playlist" + }, "collectionPlaylistNameHint": "Playlist name", - "@collectionPlaylistNameHint": {"description": "Hint text for playlist name input"}, + "@collectionPlaylistNameHint": { + "description": "Hint text for playlist name input" + }, "collectionPlaylistNameRequired": "Playlist name is required", - "@collectionPlaylistNameRequired": {"description": "Validation error for empty playlist name"}, + "@collectionPlaylistNameRequired": { + "description": "Validation error for empty playlist name" + }, "collectionRenamePlaylist": "Rename playlist", - "@collectionRenamePlaylist": {"description": "Action to rename playlist"}, + "@collectionRenamePlaylist": { + "description": "Action to rename playlist" + }, "collectionDeletePlaylist": "Delete playlist", - "@collectionDeletePlaylist": {"description": "Action to delete playlist"}, + "@collectionDeletePlaylist": { + "description": "Action to delete playlist" + }, "collectionDeletePlaylistMessage": "Delete \"{playlistName}\" and all tracks inside it?", "@collectionDeletePlaylistMessage": { "description": "Confirmation message for deleting playlist", "placeholders": { - "playlistName": {"type": "String"} + "playlistName": { + "type": "String" + } } }, "collectionPlaylistDeleted": "Playlist deleted", - "@collectionPlaylistDeleted": {"description": "Snackbar after deleting playlist"}, + "@collectionPlaylistDeleted": { + "description": "Snackbar after deleting playlist" + }, "collectionPlaylistRenamed": "Playlist renamed", - "@collectionPlaylistRenamed": {"description": "Snackbar after renaming playlist"}, + "@collectionPlaylistRenamed": { + "description": "Snackbar after renaming playlist" + }, "collectionWishlistEmptyTitle": "Wishlist is empty", - "@collectionWishlistEmptyTitle": {"description": "Wishlist empty state title"}, + "@collectionWishlistEmptyTitle": { + "description": "Wishlist empty state title" + }, "collectionWishlistEmptySubtitle": "Tap + on tracks to save what you want to download later", - "@collectionWishlistEmptySubtitle": {"description": "Wishlist empty state subtitle"}, + "@collectionWishlistEmptySubtitle": { + "description": "Wishlist empty state subtitle" + }, "collectionLovedEmptyTitle": "Loved folder is empty", - "@collectionLovedEmptyTitle": {"description": "Loved empty state title"}, + "@collectionLovedEmptyTitle": { + "description": "Loved empty state title" + }, "collectionLovedEmptySubtitle": "Tap love on tracks to keep your favorites", - "@collectionLovedEmptySubtitle": {"description": "Loved empty state subtitle"}, + "@collectionLovedEmptySubtitle": { + "description": "Loved empty state subtitle" + }, "collectionPlaylistEmptyTitle": "Playlist is empty", - "@collectionPlaylistEmptyTitle": {"description": "Playlist empty state title"}, + "@collectionPlaylistEmptyTitle": { + "description": "Playlist empty state title" + }, "collectionPlaylistEmptySubtitle": "Long-press + on any track to add it here", - "@collectionPlaylistEmptySubtitle": {"description": "Playlist empty state subtitle"}, + "@collectionPlaylistEmptySubtitle": { + "description": "Playlist empty state subtitle" + }, "collectionRemoveFromPlaylist": "Remove from playlist", - "@collectionRemoveFromPlaylist": {"description": "Tooltip for removing track from playlist"}, + "@collectionRemoveFromPlaylist": { + "description": "Tooltip for removing track from playlist" + }, "collectionRemoveFromFolder": "Remove from folder", - "@collectionRemoveFromFolder": {"description": "Tooltip for removing track from wishlist/loved folder"}, + "@collectionRemoveFromFolder": { + "description": "Tooltip for removing track from wishlist/loved folder" + }, "collectionRemoved": "\"{trackName}\" removed", "@collectionRemoved": { "description": "Snackbar after removing a track from a collection", "placeholders": { - "trackName": {"type": "String"} + "trackName": { + "type": "String" + } } }, "collectionAddedToLoved": "\"{trackName}\" added to Loved", "@collectionAddedToLoved": { "description": "Snackbar after adding track to loved folder", "placeholders": { - "trackName": {"type": "String"} + "trackName": { + "type": "String" + } } }, "collectionRemovedFromLoved": "\"{trackName}\" removed from Loved", "@collectionRemovedFromLoved": { "description": "Snackbar after removing track from loved folder", "placeholders": { - "trackName": {"type": "String"} + "trackName": { + "type": "String" + } } }, "collectionAddedToWishlist": "\"{trackName}\" added to Wishlist", "@collectionAddedToWishlist": { "description": "Snackbar after adding track to wishlist", "placeholders": { - "trackName": {"type": "String"} + "trackName": { + "type": "String" + } } }, "collectionRemovedFromWishlist": "\"{trackName}\" removed from Wishlist", "@collectionRemovedFromWishlist": { "description": "Snackbar after removing track from wishlist", "placeholders": { - "trackName": {"type": "String"} + "trackName": { + "type": "String" + } } }, - "trackOptionAddToLoved": "Add to Loved", - "@trackOptionAddToLoved": {"description": "Bottom sheet action label - add track to loved folder"}, + "@trackOptionAddToLoved": { + "description": "Bottom sheet action label - add track to loved folder" + }, "trackOptionRemoveFromLoved": "Remove from Loved", - "@trackOptionRemoveFromLoved": {"description": "Bottom sheet action label - remove track from loved folder"}, + "@trackOptionRemoveFromLoved": { + "description": "Bottom sheet action label - remove track from loved folder" + }, "trackOptionAddToWishlist": "Add to Wishlist", - "@trackOptionAddToWishlist": {"description": "Bottom sheet action label - add track to wishlist"}, + "@trackOptionAddToWishlist": { + "description": "Bottom sheet action label - add track to wishlist" + }, "trackOptionRemoveFromWishlist": "Remove from Wishlist", - "@trackOptionRemoveFromWishlist": {"description": "Bottom sheet action label - remove track from wishlist"}, - + "@trackOptionRemoveFromWishlist": { + "description": "Bottom sheet action label - remove track from wishlist" + }, "collectionPlaylistChangeCover": "Change cover image", - "@collectionPlaylistChangeCover": {"description": "Bottom sheet action to pick a custom cover image for a playlist"}, + "@collectionPlaylistChangeCover": { + "description": "Bottom sheet action to pick a custom cover image for a playlist" + }, "collectionPlaylistRemoveCover": "Remove cover image", - "@collectionPlaylistRemoveCover": {"description": "Bottom sheet action to remove custom cover image from a playlist"}, - + "@collectionPlaylistRemoveCover": { + "description": "Bottom sheet action to remove custom cover image from a playlist" + }, "selectionShareCount": "Share {count} {count, plural, =1{track} other{tracks}}", "@selectionShareCount": { "description": "Share button text with count in selection mode", "placeholders": { - "count": {"type": "int"} + "count": { + "type": "int" + } } }, "selectionShareNoFiles": "No shareable files found", - "@selectionShareNoFiles": {"description": "Snackbar when no selected files exist on disk"}, + "@selectionShareNoFiles": { + "description": "Snackbar when no selected files exist on disk" + }, "selectionConvertCount": "Convert {count} {count, plural, =1{track} other{tracks}}", "@selectionConvertCount": { "description": "Convert button text with count in selection mode", "placeholders": { - "count": {"type": "int"} + "count": { + "type": "int" + } } }, "selectionConvertNoConvertible": "No convertible tracks selected", - "@selectionConvertNoConvertible": {"description": "Snackbar when no selected tracks support conversion"}, + "@selectionConvertNoConvertible": { + "description": "Snackbar when no selected tracks support conversion" + }, "selectionBatchConvertConfirmTitle": "Batch Convert", - "@selectionBatchConvertConfirmTitle": {"description": "Confirmation dialog title for batch conversion"}, + "@selectionBatchConvertConfirmTitle": { + "description": "Confirmation dialog title for batch conversion" + }, "selectionBatchConvertConfirmMessage": "Convert {count} {count, plural, =1{track} other{tracks}} to {format} at {bitrate}?\n\nOriginal files will be deleted after conversion.", "@selectionBatchConvertConfirmMessage": { "description": "Confirmation dialog message for batch conversion", "placeholders": { - "count": {"type": "int"}, - "format": {"type": "String"}, - "bitrate": {"type": "String"} + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "bitrate": { + "type": "String" + } } }, "selectionBatchConvertProgress": "Converting {current} of {total}...", "@selectionBatchConvertProgress": { "description": "Snackbar during batch conversion progress", "placeholders": { - "current": {"type": "int"}, - "total": {"type": "int"} + "current": { + "type": "int" + }, + "total": { + "type": "int" + } } }, "selectionBatchConvertSuccess": "Converted {success} of {total} tracks to {format}", "@selectionBatchConvertSuccess": { "description": "Snackbar after batch conversion completes", "placeholders": { - "success": {"type": "int"}, - "total": {"type": "int"}, - "format": {"type": "String"} + "success": { + "type": "int" + }, + "total": { + "type": "int" + }, + "format": { + "type": "String" + } } }, - - "setupModeSelectionTitle": "Choose Your Mode", - "@setupModeSelectionTitle": {"description": "Title for mode selection step in setup wizard"}, - "setupModeSelectionDescription": "How would you like to use SpotiFLAC? You can always change this later in Settings.", - "@setupModeSelectionDescription": {"description": "Description for mode selection step"}, - "setupModeDownloaderTitle": "Downloader", - "@setupModeDownloaderTitle": {"description": "Title for downloader mode option"}, - "setupModeDownloaderFeature1": "Download tracks in lossless FLAC quality", - "@setupModeDownloaderFeature1": {"description": "Downloader mode feature 1"}, - "setupModeDownloaderFeature2": "Save music to your device for offline listening", - "@setupModeDownloaderFeature2": {"description": "Downloader mode feature 2"}, - "setupModeDownloaderFeature3": "Manage your local music library", - "@setupModeDownloaderFeature3": {"description": "Downloader mode feature 3"}, - "setupModeStreamingTitle": "Streaming", - "@setupModeStreamingTitle": {"description": "Title for streaming mode option"}, - "setupModeStreamingFeature1": "Stream tracks instantly without downloading", - "@setupModeStreamingFeature1": {"description": "Streaming mode feature 1"}, - "setupModeStreamingFeature2": "Smart Queue auto-discovers new music for you", - "@setupModeStreamingFeature2": {"description": "Streaming mode feature 2"}, - "setupModeStreamingFeature3": "Play any track on demand with playback controls", - "@setupModeStreamingFeature3": {"description": "Streaming mode feature 3"}, - "setupModeChangeableLater": "You can switch between modes anytime in Settings.", - "@setupModeChangeableLater": {"description": "Hint that mode can be changed later"} + "downloadedAlbumDownloadedCount": "{count} downloaded", + "@downloadedAlbumDownloadedCount": { + "description": "Downloaded tracks count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Artist folders use Album Artist when available", + "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { + "description": "Subtitle when Album Artist is used for folder naming" + }, + "downloadUseAlbumArtistForFoldersTrackSubtitle": "Artist folders use Track Artist only", + "@downloadUseAlbumArtistForFoldersTrackSubtitle": { + "description": "Subtitle when Track Artist is used for folder naming" + } } diff --git a/lib/l10n/arb/app_es.arb b/lib/l10n/arb/app_es.arb index f53b9487..497c11bc 100644 --- a/lib/l10n/arb/app_es.arb +++ b/lib/l10n/arb/app_es.arb @@ -5,18 +5,10 @@ "@appName": { "description": "App name - DO NOT TRANSLATE" }, - "appDescription": "Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.", - "@appDescription": { - "description": "App description shown in about page" - }, "navHome": "Home", "@navHome": { "description": "Bottom navigation - Home tab" }, - "navHistory": "History", - "@navHistory": { - "description": "Bottom navigation - History tab" - }, "navSettings": "Settings", "@navSettings": { "description": "Bottom navigation - Settings tab" @@ -29,20 +21,6 @@ "@homeTitle": { "description": "Home screen title" }, - "homeSearchHint": "Paste Spotify URL or search...", - "@homeSearchHint": { - "description": "Placeholder text in search box" - }, - "homeSearchHintExtension": "Search with {extensionName}...", - "@homeSearchHintExtension": { - "description": "Placeholder when extension search is active", - "placeholders": { - "extensionName": { - "type": "String", - "description": "Name of the active extension" - } - } - }, "homeSubtitle": "Paste a Spotify link or search by name", "@homeSubtitle": { "description": "Subtitle shown below search box" @@ -55,24 +33,6 @@ "@homeRecent": { "description": "Section header for recent searches" }, - "historyTitle": "History", - "@historyTitle": { - "description": "History screen title" - }, - "historyDownloading": "Downloading ({count})", - "@historyDownloading": { - "description": "Tab showing active downloads count", - "placeholders": { - "count": { - "type": "int", - "description": "Number of active downloads" - } - } - }, - "historyDownloaded": "Downloaded", - "@historyDownloaded": { - "description": "Tab showing completed downloads" - }, "historyFilterAll": "All", "@historyFilterAll": { "description": "Filter chip - show all items" @@ -85,48 +45,6 @@ "@historyFilterSingles": { "description": "Filter chip - show singles only" }, - "historyTracksCount": "{count, plural, =1{1 track} other{{count} tracks}}", - "@historyTracksCount": { - "description": "Track count with plural form", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "historyAlbumsCount": "{count, plural, =1{1 album} other{{count} albums}}", - "@historyAlbumsCount": { - "description": "Album count with plural form", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "historyNoDownloads": "No download history", - "@historyNoDownloads": { - "description": "Empty state title" - }, - "historyNoDownloadsSubtitle": "Downloaded tracks will appear here", - "@historyNoDownloadsSubtitle": { - "description": "Empty state subtitle" - }, - "historyNoAlbums": "No album downloads", - "@historyNoAlbums": { - "description": "Empty state when filtering albums" - }, - "historyNoAlbumsSubtitle": "Download multiple tracks from an album to see them here", - "@historyNoAlbumsSubtitle": { - "description": "Empty state subtitle for albums filter" - }, - "historyNoSingles": "No single downloads", - "@historyNoSingles": { - "description": "Empty state when filtering singles" - }, - "historyNoSinglesSubtitle": "Single track downloads will appear here", - "@historyNoSinglesSubtitle": { - "description": "Empty state subtitle for singles filter" - }, "settingsTitle": "Settings", "@settingsTitle": { "description": "Settings screen title" @@ -155,34 +73,6 @@ "@downloadTitle": { "description": "Download settings page title" }, - "downloadLocation": "Download Location", - "@downloadLocation": { - "description": "Setting for download folder" - }, - "downloadLocationSubtitle": "Choose where to save files", - "@downloadLocationSubtitle": { - "description": "Subtitle for download location" - }, - "downloadLocationDefault": "Default location", - "@downloadLocationDefault": { - "description": "Shown when using default folder" - }, - "downloadDefaultService": "Default Service", - "@downloadDefaultService": { - "description": "Setting for preferred download service (Tidal/Qobuz/Amazon)" - }, - "downloadDefaultServiceSubtitle": "Service used for downloads", - "@downloadDefaultServiceSubtitle": { - "description": "Subtitle for default service" - }, - "downloadDefaultQuality": "Default Quality", - "@downloadDefaultQuality": { - "description": "Setting for audio quality" - }, - "downloadAskQuality": "Ask Quality Before Download", - "@downloadAskQuality": { - "description": "Toggle to show quality picker" - }, "downloadAskQualitySubtitle": "Show quality picker for each download", "@downloadAskQualitySubtitle": { "description": "Subtitle for ask quality toggle" @@ -195,38 +85,10 @@ "@downloadFolderOrganization": { "description": "Setting for folder structure" }, - "downloadSeparateSingles": "Separate Singles", - "@downloadSeparateSingles": { - "description": "Toggle to separate single tracks" - }, - "downloadSeparateSinglesSubtitle": "Put single tracks in a separate folder", - "@downloadSeparateSinglesSubtitle": { - "description": "Subtitle for separate singles toggle" - }, - "qualityBest": "Best Available", - "@qualityBest": { - "description": "Audio quality option - highest available" - }, - "qualityFlac": "FLAC", - "@qualityFlac": { - "description": "Audio quality option - FLAC lossless" - }, - "quality320": "320 kbps", - "@quality320": { - "description": "Audio quality option - 320kbps MP3" - }, - "quality128": "128 kbps", - "@quality128": { - "description": "Audio quality option - 128kbps MP3" - }, "appearanceTitle": "Appearance", "@appearanceTitle": { "description": "Appearance settings page title" }, - "appearanceTheme": "Theme", - "@appearanceTheme": { - "description": "Theme mode setting" - }, "appearanceThemeSystem": "System", "@appearanceThemeSystem": { "description": "Follow system theme" @@ -247,10 +109,6 @@ "@appearanceDynamicColorSubtitle": { "description": "Subtitle for dynamic color" }, - "appearanceAccentColor": "Accent Color", - "@appearanceAccentColor": { - "description": "Custom accent color picker" - }, "appearanceHistoryView": "History View", "@appearanceHistoryView": { "description": "Layout style for history" @@ -267,10 +125,6 @@ "@optionsTitle": { "description": "Options settings page title" }, - "optionsSearchSource": "Search Source", - "@optionsSearchSource": { - "description": "Section for search provider settings" - }, "optionsPrimaryProvider": "Primary Provider", "@optionsPrimaryProvider": { "description": "Main search provider setting" @@ -426,22 +280,6 @@ "@extensionsTitle": { "description": "Extensions page title" }, - "extensionsInstalled": "Installed Extensions", - "@extensionsInstalled": { - "description": "Section header for installed extensions" - }, - "extensionsNone": "No extensions installed", - "@extensionsNone": { - "description": "Empty state title" - }, - "extensionsNoneSubtitle": "Install extensions from the Store tab", - "@extensionsNoneSubtitle": { - "description": "Empty state subtitle" - }, - "extensionsEnabled": "Enabled", - "@extensionsEnabled": { - "description": "Extension status - active" - }, "extensionsDisabled": "Disabled", "@extensionsDisabled": { "description": "Extension status - inactive" @@ -468,10 +306,6 @@ "@extensionsUninstall": { "description": "Uninstall extension button" }, - "extensionsSetAsSearch": "Set as Search Provider", - "@extensionsSetAsSearch": { - "description": "Use extension for search" - }, "storeTitle": "Extension Store", "@storeTitle": { "description": "Store screen title" @@ -544,10 +378,6 @@ "@aboutFeatureRequestSubtitle": { "description": "Subtitle for feature request" }, - "aboutSupport": "Support", - "@aboutSupport": { - "description": "Section for support/donation links" - }, "aboutApp": "App", "@aboutApp": { "description": "Section for app info" @@ -564,14 +394,6 @@ "@aboutSachinsenalDesc": { "description": "Credit description for sachinsenal0x64" }, - "aboutDoubleDouble": "DoubleDouble", - "@aboutDoubleDouble": { - "description": "Name of Amazon API service - DO NOT TRANSLATE" - }, - "aboutDoubleDoubleDesc": "Amazing API for Amazon Music downloads. Thank you for making it free!", - "@aboutDoubleDoubleDesc": { - "description": "Credit for DoubleDouble API" - }, "aboutDabMusic": "DAB Music", "@aboutDabMusic": { "description": "Name of Qobuz API service - DO NOT TRANSLATE" @@ -584,35 +406,6 @@ "@aboutAppDescription": { "description": "App description in header card" }, - "albumTitle": "Album", - "@albumTitle": { - "description": "Album screen title" - }, - "albumTracks": "{count, plural, =1{1 track} other{{count} tracks}}", - "@albumTracks": { - "description": "Album track count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "albumDownloadAll": "Download All", - "@albumDownloadAll": { - "description": "Button to download all tracks" - }, - "albumDownloadRemaining": "Download Remaining", - "@albumDownloadRemaining": { - "description": "Button to download remaining tracks" - }, - "playlistTitle": "Playlist", - "@playlistTitle": { - "description": "Playlist screen title" - }, - "artistTitle": "Artist", - "@artistTitle": { - "description": "Artist screen title" - }, "artistAlbums": "Albums", "@artistAlbums": { "description": "Section header for artist albums" @@ -625,43 +418,6 @@ "@artistCompilations": { "description": "Section header for compilations" }, - "artistReleases": "{count, plural, =1{1 release} other{{count} releases}}", - "@artistReleases": { - "description": "Artist release count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "trackMetadataTitle": "Track Info", - "@trackMetadataTitle": { - "description": "Track metadata screen title" - }, - "trackMetadataArtist": "Artist", - "@trackMetadataArtist": { - "description": "Metadata field - artist name" - }, - "trackMetadataAlbum": "Album", - "@trackMetadataAlbum": { - "description": "Metadata field - album name" - }, - "trackMetadataDuration": "Duration", - "@trackMetadataDuration": { - "description": "Metadata field - track length" - }, - "trackMetadataQuality": "Quality", - "@trackMetadataQuality": { - "description": "Metadata field - audio quality" - }, - "trackMetadataPath": "File Path", - "@trackMetadataPath": { - "description": "Metadata field - file location" - }, - "trackMetadataDownloadedAt": "Downloaded", - "@trackMetadataDownloadedAt": { - "description": "Metadata field - download date" - }, "trackMetadataService": "Service", "@trackMetadataService": { "description": "Metadata field - download service used" @@ -678,54 +434,10 @@ "@trackMetadataDelete": { "description": "Action button - delete track" }, - "trackMetadataRedownload": "Re-download", - "@trackMetadataRedownload": { - "description": "Action button - download again" - }, - "trackMetadataOpenFolder": "Open Folder", - "@trackMetadataOpenFolder": { - "description": "Action button - open containing folder" - }, - "setupTitle": "Welcome to SpotiFLAC", - "@setupTitle": { - "description": "Setup wizard title" - }, - "setupSubtitle": "Let's get you started", - "@setupSubtitle": { - "description": "Setup wizard subtitle" - }, - "setupStoragePermission": "Storage Permission", - "@setupStoragePermission": { - "description": "Storage permission step title" - }, - "setupStoragePermissionSubtitle": "Required to save downloaded files", - "@setupStoragePermissionSubtitle": { - "description": "Explanation for storage permission" - }, - "setupStoragePermissionGranted": "Permission granted", - "@setupStoragePermissionGranted": { - "description": "Status when permission granted" - }, - "setupStoragePermissionDenied": "Permission denied", - "@setupStoragePermissionDenied": { - "description": "Status when permission denied" - }, "setupGrantPermission": "Grant Permission", "@setupGrantPermission": { "description": "Button to request permission" }, - "setupDownloadLocation": "Download Location", - "@setupDownloadLocation": { - "description": "Download folder step title" - }, - "setupChooseFolder": "Choose Folder", - "@setupChooseFolder": { - "description": "Button to pick folder" - }, - "setupContinue": "Continue", - "@setupContinue": { - "description": "Continue to next step button" - }, "setupSkip": "Skip for now", "@setupSkip": { "description": "Skip current step button" @@ -734,10 +446,6 @@ "@setupStorageAccessRequired": { "description": "Title when storage access needed" }, - "setupStorageAccessMessage": "SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.", - "@setupStorageAccessMessage": { - "description": "Explanation for storage access" - }, "setupStorageAccessMessageAndroid11": "Android 11+ requires \"All files access\" permission to save files to your chosen download folder.", "@setupStorageAccessMessageAndroid11": { "description": "Android 11+ specific explanation" @@ -769,10 +477,6 @@ } } }, - "setupSelectDownloadFolder": "Select Download Folder", - "@setupSelectDownloadFolder": { - "description": "Folder selection step title" - }, "setupUseDefaultFolder": "Use Default Folder?", "@setupUseDefaultFolder": { "description": "Dialog title for default folder" @@ -817,26 +521,6 @@ "@setupDownloadInFlac": { "description": "App tagline in setup" }, - "setupStepStorage": "Storage", - "@setupStepStorage": { - "description": "Setup step indicator - storage" - }, - "setupStepNotification": "Notification", - "@setupStepNotification": { - "description": "Setup step indicator - notification" - }, - "setupStepFolder": "Folder", - "@setupStepFolder": { - "description": "Setup step indicator - folder" - }, - "setupStepSpotify": "Spotify", - "@setupStepSpotify": { - "description": "Setup step indicator - Spotify API" - }, - "setupStepPermission": "Permission", - "@setupStepPermission": { - "description": "Setup step indicator - permission" - }, "setupStorageGranted": "Storage Permission Granted!", "@setupStorageGranted": { "description": "Success message for storage permission" @@ -857,14 +541,6 @@ "@setupNotificationEnable": { "description": "Button to enable notifications" }, - "setupNotificationDescription": "Get notified when downloads complete or require attention.", - "@setupNotificationDescription": { - "description": "Explanation for notifications" - }, - "setupFolderSelected": "Download Folder Selected!", - "@setupFolderSelected": { - "description": "Success message for folder selection" - }, "setupFolderChoose": "Choose Download Folder", "@setupFolderChoose": { "description": "Button to choose folder" @@ -873,58 +549,14 @@ "@setupFolderDescription": { "description": "Explanation for folder selection" }, - "setupChangeFolder": "Change Folder", - "@setupChangeFolder": { - "description": "Button to change selected folder" - }, "setupSelectFolder": "Select Folder", "@setupSelectFolder": { "description": "Button to select folder" }, - "setupSpotifyApiOptional": "Spotify API (Optional)", - "@setupSpotifyApiOptional": { - "description": "Spotify API step title" - }, - "setupSpotifyApiDescription": "Add your Spotify API credentials for better search results and access to Spotify-exclusive content.", - "@setupSpotifyApiDescription": { - "description": "Explanation for Spotify API" - }, - "setupUseSpotifyApi": "Use Spotify API", - "@setupUseSpotifyApi": { - "description": "Toggle to enable Spotify API" - }, - "setupEnterCredentialsBelow": "Enter your credentials below", - "@setupEnterCredentialsBelow": { - "description": "Prompt to enter credentials" - }, - "setupUsingDeezer": "Using Deezer (no account needed)", - "@setupUsingDeezer": { - "description": "Status when using Deezer" - }, - "setupEnterClientId": "Enter Spotify Client ID", - "@setupEnterClientId": { - "description": "Placeholder for client ID field" - }, - "setupEnterClientSecret": "Enter Spotify Client Secret", - "@setupEnterClientSecret": { - "description": "Placeholder for client secret field" - }, - "setupGetFreeCredentials": "Get your free API credentials from the Spotify Developer Dashboard.", - "@setupGetFreeCredentials": { - "description": "Info about getting Spotify credentials" - }, "setupEnableNotifications": "Enable Notifications", "@setupEnableNotifications": { "description": "Button to enable notifications" }, - "setupProceedToNextStep": "You can now proceed to the next step.", - "@setupProceedToNextStep": { - "description": "Message after completing a step" - }, - "setupNotificationProgressDescription": "You will receive download progress notifications.", - "@setupNotificationProgressDescription": { - "description": "Info about notification usage" - }, "setupNotificationBackgroundDescription": "Get notified about download progress and completion. This helps you track downloads when the app is in background.", "@setupNotificationBackgroundDescription": { "description": "Detailed notification explanation" @@ -933,10 +565,6 @@ "@setupSkipForNow": { "description": "Skip button text" }, - "setupBack": "Back", - "@setupBack": { - "description": "Back button text" - }, "setupNext": "Next", "@setupNext": { "description": "Next button text" @@ -945,26 +573,14 @@ "@setupGetStarted": { "description": "Final setup button" }, - "setupSkipAndStart": "Skip & Start", - "@setupSkipAndStart": { - "description": "Skip setup and start app" - }, "setupAllowAccessToManageFiles": "Please enable \"Allow access to manage all files\" in the next screen.", "@setupAllowAccessToManageFiles": { "description": "Instruction for file access permission" }, - "setupGetCredentialsFromSpotify": "Get credentials from developer.spotify.com", - "@setupGetCredentialsFromSpotify": { - "description": "Link text for Spotify developer portal" - }, "dialogCancel": "Cancel", "@dialogCancel": { "description": "Dialog button - cancel action" }, - "dialogOk": "OK", - "@dialogOk": { - "description": "Dialog button - confirm/acknowledge" - }, "dialogSave": "Save", "@dialogSave": { "description": "Dialog button - save changes" @@ -977,26 +593,10 @@ "@dialogRetry": { "description": "Dialog button - retry action" }, - "dialogClose": "Close", - "@dialogClose": { - "description": "Dialog button - close dialog" - }, - "dialogYes": "Yes", - "@dialogYes": { - "description": "Dialog button - confirm yes" - }, - "dialogNo": "No", - "@dialogNo": { - "description": "Dialog button - confirm no" - }, "dialogClear": "Clear", "@dialogClear": { "description": "Dialog button - clear items" }, - "dialogConfirm": "Confirm", - "@dialogConfirm": { - "description": "Dialog button - confirm action" - }, "dialogDone": "Done", "@dialogDone": { "description": "Dialog button - action completed" @@ -1025,34 +625,10 @@ "@dialogUnsavedChanges": { "description": "Dialog message - unsaved changes" }, - "dialogDownloadFailed": "Download Failed", - "@dialogDownloadFailed": { - "description": "Dialog title - download error" - }, - "dialogTrackLabel": "Track:", - "@dialogTrackLabel": { - "description": "Label for track name in error dialog" - }, - "dialogArtistLabel": "Artist:", - "@dialogArtistLabel": { - "description": "Label for artist name in error dialog" - }, - "dialogErrorLabel": "Error:", - "@dialogErrorLabel": { - "description": "Label for error message" - }, "dialogClearAll": "Clear All", "@dialogClearAll": { "description": "Dialog title - clear all items" }, - "dialogClearAllDownloads": "Are you sure you want to clear all downloads?", - "@dialogClearAllDownloads": { - "description": "Dialog message - clear downloads confirmation" - }, - "dialogRemoveFromDevice": "Remove from device?", - "@dialogRemoveFromDevice": { - "description": "Dialog title - delete file confirmation" - }, "dialogRemoveExtension": "Remove Extension", "@dialogRemoveExtension": { "description": "Dialog title - uninstall extension" @@ -1173,15 +749,6 @@ "@snackbarViewQueue": { "description": "Snackbar action - view download queue" }, - "snackbarFailedToLoad": "Failed to load: {error}", - "@snackbarFailedToLoad": { - "description": "Snackbar - loading error", - "placeholders": { - "error": { - "type": "String" - } - } - }, "snackbarUrlCopied": "{platform} URL copied to clipboard", "@snackbarUrlCopied": { "description": "Snackbar - URL copied", @@ -1242,16 +809,6 @@ "@errorRateLimitedMessage": { "description": "Error message - rate limit explanation" }, - "errorFailedToLoad": "Failed to load {item}", - "@errorFailedToLoad": { - "description": "Error message - loading failed", - "placeholders": { - "item": { - "type": "String", - "description": "Item that failed to load (album/playlist/etc)" - } - } - }, "errorNoTracksFound": "No tracks found", "@errorNoTracksFound": { "description": "Error - search returned no results" @@ -1265,34 +822,6 @@ } } }, - "statusQueued": "Queued", - "@statusQueued": { - "description": "Download status - waiting in queue" - }, - "statusDownloading": "Downloading", - "@statusDownloading": { - "description": "Download status - in progress" - }, - "statusFinalizing": "Finalizing", - "@statusFinalizing": { - "description": "Download status - writing metadata" - }, - "statusCompleted": "Completed", - "@statusCompleted": { - "description": "Download status - finished" - }, - "statusFailed": "Failed", - "@statusFailed": { - "description": "Download status - error occurred" - }, - "statusSkipped": "Skipped", - "@statusSkipped": { - "description": "Download status - already exists" - }, - "statusPaused": "Paused", - "@statusPaused": { - "description": "Download status - paused" - }, "actionPause": "Pause", "@actionPause": { "description": "Action button - pause download" @@ -1305,14 +834,6 @@ "@actionCancel": { "description": "Action button - cancel operation" }, - "actionStop": "Stop", - "@actionStop": { - "description": "Action button - stop operation" - }, - "actionSelect": "Select", - "@actionSelect": { - "description": "Action button - enter selection mode" - }, "actionSelectAll": "Select All", "@actionSelectAll": { "description": "Action button - select all items" @@ -1321,14 +842,6 @@ "@actionDeselect": { "description": "Action button - deselect all" }, - "actionPaste": "Paste", - "@actionPaste": { - "description": "Action button - paste from clipboard" - }, - "actionImportCsv": "Import CSV", - "@actionImportCsv": { - "description": "Action button - import CSV file" - }, "actionRemoveCredentials": "Remove Credentials", "@actionRemoveCredentials": { "description": "Action button - delete Spotify credentials" @@ -1350,19 +863,6 @@ "@selectionAllSelected": { "description": "Status - all items selected" }, - "selectionTapToSelect": "Tap tracks to select", - "@selectionTapToSelect": { - "description": "Hint - how to select items" - }, - "selectionDeleteTracks": "Delete {count} {count, plural, =1{track} other{tracks}}", - "@selectionDeleteTracks": { - "description": "Delete button with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, "selectionSelectToDelete": "Select tracks to delete", "@selectionSelectToDelete": { "description": "Placeholder when nothing selected" @@ -1403,55 +903,10 @@ "@tooltipPlay": { "description": "Tooltip - play button" }, - "tooltipCancel": "Cancel", - "@tooltipCancel": { - "description": "Tooltip - cancel button" - }, - "tooltipStop": "Stop", - "@tooltipStop": { - "description": "Tooltip - stop button" - }, - "tooltipRetry": "Retry", - "@tooltipRetry": { - "description": "Tooltip - retry button" - }, - "tooltipRemove": "Remove", - "@tooltipRemove": { - "description": "Tooltip - remove button" - }, - "tooltipClear": "Clear", - "@tooltipClear": { - "description": "Tooltip - clear button" - }, - "tooltipPaste": "Paste", - "@tooltipPaste": { - "description": "Tooltip - paste button" - }, "filenameFormat": "Filename Format", "@filenameFormat": { "description": "Setting title - filename pattern" }, - "filenameFormatPreview": "Preview: {preview}", - "@filenameFormatPreview": { - "description": "Preview of filename pattern", - "placeholders": { - "preview": { - "type": "String" - } - } - }, - "filenameAvailablePlaceholders": "Available placeholders:", - "@filenameAvailablePlaceholders": { - "description": "Label for placeholder list" - }, - "filenameHint": "{artist} - {title}", - "@filenameHint": { - "description": "Default filename format hint" - }, - "folderOrganization": "Folder Organization", - "@folderOrganization": { - "description": "Setting title - folder structure" - }, "folderOrganizationNone": "No organization", "@folderOrganizationNone": { "description": "Folder option - flat structure" @@ -1492,27 +947,10 @@ "@updateAvailable": { "description": "Update dialog title" }, - "updateNewVersion": "Version {version} is available", - "@updateNewVersion": { - "description": "Update available message", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "updateDownload": "Download", - "@updateDownload": { - "description": "Update button - download update" - }, "updateLater": "Later", "@updateLater": { "description": "Update button - dismiss" }, - "updateChangelog": "Changelog", - "@updateChangelog": { - "description": "Link to changelog" - }, "updateStartingDownload": "Starting download...", "@updateStartingDownload": { "description": "Update status - initializing" @@ -1553,14 +991,6 @@ "@updateDontRemind": { "description": "Update button - skip this version" }, - "providerPriority": "Provider Priority", - "@providerPriority": { - "description": "Setting title - download provider order" - }, - "providerPrioritySubtitle": "Drag to reorder download providers", - "@providerPrioritySubtitle": { - "description": "Subtitle for provider priority" - }, "providerPriorityTitle": "Provider Priority", "@providerPriorityTitle": { "description": "Provider priority page title" @@ -1581,14 +1011,6 @@ "@providerExtension": { "description": "Label for extension-provided providers" }, - "metadataProviderPriority": "Metadata Provider Priority", - "@metadataProviderPriority": { - "description": "Setting title - metadata provider order" - }, - "metadataProviderPrioritySubtitle": "Order used when fetching track metadata", - "@metadataProviderPrioritySubtitle": { - "description": "Subtitle for metadata priority" - }, "metadataProviderPriorityTitle": "Metadata Priority", "@metadataProviderPriorityTitle": { "description": "Metadata priority page title" @@ -1613,22 +1035,6 @@ "@logTitle": { "description": "Logs screen title" }, - "logCopy": "Copy Logs", - "@logCopy": { - "description": "Action - copy logs to clipboard" - }, - "logClear": "Clear Logs", - "@logClear": { - "description": "Action - delete all logs" - }, - "logShare": "Share Logs", - "@logShare": { - "description": "Action - share logs file" - }, - "logEmpty": "No logs yet", - "@logEmpty": { - "description": "Empty state title" - }, "logCopied": "Logs copied to clipboard", "@logCopied": { "description": "Snackbar - logs copied" @@ -1661,22 +1067,6 @@ "@logClearLogsMessage": { "description": "Clear logs confirmation message" }, - "logIspBlocking": "ISP BLOCKING DETECTED", - "@logIspBlocking": { - "description": "Error category - ISP blocking" - }, - "logRateLimited": "RATE LIMITED", - "@logRateLimited": { - "description": "Error category - rate limiting" - }, - "logNetworkError": "NETWORK ERROR", - "@logNetworkError": { - "description": "Error category - network issues" - }, - "logTrackNotFound": "TRACK NOT FOUND", - "@logTrackNotFound": { - "description": "Error category - missing tracks" - }, "logFilterBySeverity": "Filter logs by severity", "@logFilterBySeverity": { "description": "Filter dialog title" @@ -1689,60 +1079,6 @@ "@logNoLogsYetSubtitle": { "description": "Empty state subtitle" }, - "logIssueSummary": "Issue Summary", - "@logIssueSummary": { - "description": "Section header for error summary" - }, - "logIspBlockingDescription": "Your ISP may be blocking access to download services", - "@logIspBlockingDescription": { - "description": "ISP blocking explanation" - }, - "logIspBlockingSuggestion": "Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8", - "@logIspBlockingSuggestion": { - "description": "ISP blocking fix suggestion" - }, - "logRateLimitedDescription": "Too many requests to the service", - "@logRateLimitedDescription": { - "description": "Rate limit explanation" - }, - "logRateLimitedSuggestion": "Wait a few minutes before trying again", - "@logRateLimitedSuggestion": { - "description": "Rate limit fix suggestion" - }, - "logNetworkErrorDescription": "Connection issues detected", - "@logNetworkErrorDescription": { - "description": "Network error explanation" - }, - "logNetworkErrorSuggestion": "Check your internet connection", - "@logNetworkErrorSuggestion": { - "description": "Network error fix suggestion" - }, - "logTrackNotFoundDescription": "Some tracks could not be found on download services", - "@logTrackNotFoundDescription": { - "description": "Track not found explanation" - }, - "logTrackNotFoundSuggestion": "The track may not be available in lossless quality", - "@logTrackNotFoundSuggestion": { - "description": "Track not found explanation" - }, - "logTotalErrors": "Total errors: {count}", - "@logTotalErrors": { - "description": "Error count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "logAffected": "Affected: {domains}", - "@logAffected": { - "description": "Affected domains display", - "placeholders": { - "domains": { - "type": "String" - } - } - }, "logEntriesFiltered": "Entries ({count} filtered)", "@logEntriesFiltered": { "description": "Log count with filter active", @@ -1849,22 +1185,6 @@ "@appearanceLanguage": { "description": "Setting title for language selection" }, - "appearanceLanguageSubtitle": "Choose your preferred language", - "@appearanceLanguageSubtitle": { - "description": "Subtitle for language setting" - }, - "languageSystem": "System Default", - "@languageSystem": { - "description": "Use device system language" - }, - "languageEnglish": "English", - "@languageEnglish": { - "description": "English language option" - }, - "languageIndonesian": "Bahasa Indonesia", - "@languageIndonesian": { - "description": "Indonesian language option" - }, "settingsAppearanceSubtitle": "Theme, colors, display", "@settingsAppearanceSubtitle": { "description": "Appearance settings description" @@ -1893,10 +1213,6 @@ "@pressBackAgainToExit": { "description": "Exit confirmation message" }, - "tracksHeader": "Tracks", - "@tracksHeader": { - "description": "Section header for track list" - }, "downloadAllCount": "Download All ({count})", "@downloadAllCount": { "description": "Download all button with count", @@ -2019,15 +1335,6 @@ "@trackDeleteConfirmMessage": { "description": "Delete confirmation message" }, - "trackCannotOpen": "Cannot open: {message}", - "@trackCannotOpen": { - "description": "Error opening file", - "placeholders": { - "message": { - "type": "String" - } - } - }, "dateToday": "Today", "@dateToday": { "description": "Relative date - today" @@ -2063,22 +1370,6 @@ } } }, - "concurrentSequential": "Sequential", - "@concurrentSequential": { - "description": "Download mode - one at a time" - }, - "concurrentParallel2": "2 Parallel", - "@concurrentParallel2": { - "description": "Download mode - 2 simultaneous" - }, - "concurrentParallel3": "3 Parallel", - "@concurrentParallel3": { - "description": "Download mode - 3 simultaneous" - }, - "tapToSeeError": "Tap to see error details", - "@tapToSeeError": { - "description": "Tooltip for failed download" - }, "storeFilterAll": "All", "@storeFilterAll": { "description": "Store filter - all extensions" @@ -2107,18 +1398,6 @@ "@storeClearFilters": { "description": "Button to clear all filters" }, - "storeNoResults": "No extensions found", - "@storeNoResults": { - "description": "Empty state when no extensions match filters" - }, - "extensionProviderPriority": "Provider Priority", - "@extensionProviderPriority": { - "description": "Extension capability - provider priority" - }, - "extensionInstallButton": "Install Extension", - "@extensionInstallButton": { - "description": "Button to install extension" - }, "extensionDefaultProvider": "Default (Deezer/Spotify)", "@extensionDefaultProvider": { "description": "Default search provider option" @@ -2338,14 +1617,6 @@ "@downloadAlbumFolderStructure": { "description": "Setting - album folder organization" }, - "downloadSaveFormat": "Save Format", - "@downloadSaveFormat": { - "description": "Setting - output file format" - }, - "downloadSelectService": "Select Service", - "@downloadSelectService": { - "description": "Dialog title - choose download service" - }, "downloadSelectQuality": "Select Quality", "@downloadSelectQuality": { "description": "Dialog title - choose audio quality" @@ -2354,66 +1625,6 @@ "@downloadFrom": { "description": "Label - download source" }, - "downloadDefaultQualityLabel": "Default Quality", - "@downloadDefaultQualityLabel": { - "description": "Label - default quality setting" - }, - "downloadBestAvailable": "Best available", - "@downloadBestAvailable": { - "description": "Quality option - highest available" - }, - "folderNone": "None", - "@folderNone": { - "description": "Folder option - no organization" - }, - "folderNoneSubtitle": "Save all files directly to download folder", - "@folderNoneSubtitle": { - "description": "Subtitle for no folder organization" - }, - "folderArtist": "Artist", - "@folderArtist": { - "description": "Folder option - by artist" - }, - "folderArtistSubtitle": "Artist Name/filename", - "@folderArtistSubtitle": { - "description": "Folder structure example" - }, - "folderAlbum": "Album", - "@folderAlbum": { - "description": "Folder option - by album" - }, - "folderAlbumSubtitle": "Album Name/filename", - "@folderAlbumSubtitle": { - "description": "Folder structure example" - }, - "folderArtistAlbum": "Artist/Album", - "@folderArtistAlbum": { - "description": "Folder option - nested" - }, - "folderArtistAlbumSubtitle": "Artist Name/Album Name/filename", - "@folderArtistAlbumSubtitle": { - "description": "Folder structure example" - }, - "serviceTidal": "Tidal", - "@serviceTidal": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceQobuz": "Qobuz", - "@serviceQobuz": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceAmazon": "Amazon", - "@serviceAmazon": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceDeezer": "Deezer", - "@serviceDeezer": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceSpotify": "Spotify", - "@serviceSpotify": { - "description": "Service name - DO NOT TRANSLATE" - }, "appearanceAmoledDark": "AMOLED Dark", "@appearanceAmoledDark": { "description": "Theme option - pure black" @@ -2422,18 +1633,6 @@ "@appearanceAmoledDarkSubtitle": { "description": "Subtitle for AMOLED dark" }, - "appearanceChooseAccentColor": "Choose Accent Color", - "@appearanceChooseAccentColor": { - "description": "Color picker dialog title" - }, - "appearanceChooseTheme": "Theme Mode", - "@appearanceChooseTheme": { - "description": "Theme picker dialog title" - }, - "queueTitle": "Download Queue", - "@queueTitle": { - "description": "Queue screen title" - }, "queueClearAll": "Clear All", "@queueClearAll": { "description": "Button - clear all queue items" @@ -2442,38 +1641,6 @@ "@queueClearAllMessage": { "description": "Clear queue confirmation" }, - "queueEmpty": "No downloads in queue", - "@queueEmpty": { - "description": "Empty queue state title" - }, - "queueEmptySubtitle": "Add tracks from the home screen", - "@queueEmptySubtitle": { - "description": "Empty queue state subtitle" - }, - "queueClearCompleted": "Clear completed", - "@queueClearCompleted": { - "description": "Button - clear finished downloads" - }, - "queueDownloadFailed": "Download Failed", - "@queueDownloadFailed": { - "description": "Error dialog title" - }, - "queueTrackLabel": "Track:", - "@queueTrackLabel": { - "description": "Label in error dialog" - }, - "queueArtistLabel": "Artist:", - "@queueArtistLabel": { - "description": "Label in error dialog" - }, - "queueErrorLabel": "Error:", - "@queueErrorLabel": { - "description": "Label in error dialog" - }, - "queueUnknownError": "Unknown error", - "@queueUnknownError": { - "description": "Fallback error message" - }, "albumFolderArtistAlbum": "Artist / Album", "@albumFolderArtistAlbum": { "description": "Album folder option" @@ -2519,19 +1686,6 @@ } } }, - "downloadedAlbumTracksHeader": "Tracks", - "@downloadedAlbumTracksHeader": { - "description": "Section header for tracks" - }, - "downloadedAlbumDownloadedCount": "{count} downloaded", - "@downloadedAlbumDownloadedCount": { - "description": "Downloaded tracks count badge", - "placeholders": { - "count": { - "type": "int" - } - } - }, "downloadedAlbumSelectedCount": "{count} selected", "@downloadedAlbumSelectedCount": { "description": "Selection count indicator", @@ -2562,19 +1716,13 @@ "@downloadedAlbumSelectToDelete": { "description": "Placeholder when nothing selected" }, - "utilityFunctions": "Utility Functions", - "@utilityFunctions": { - "description": "Extension capability - utility functions" - }, - "setupModeSelectionTitle": "Elige tu modo", - "setupModeSelectionDescription": "¿Cómo te gustaría usar SpotiFLAC? Puedes cambiarlo más tarde en Ajustes.", - "setupModeDownloaderTitle": "Descargador", - "setupModeDownloaderFeature1": "Descarga pistas en calidad FLAC sin pérdida", - "setupModeDownloaderFeature2": "Guarda música en tu dispositivo para escuchar sin conexión", - "setupModeDownloaderFeature3": "Gestiona tu biblioteca de música local", - "setupModeStreamingTitle": "Streaming", - "setupModeStreamingFeature1": "Transmite pistas al instante sin descargar", - "setupModeStreamingFeature2": "Smart Queue descubre automáticamente nueva música para ti", - "setupModeStreamingFeature3": "Reproduce cualquier pista bajo demanda con controles de reproducción", - "setupModeChangeableLater": "Puedes cambiar entre modos en cualquier momento en Ajustes." -} \ No newline at end of file + "downloadedAlbumDownloadedCount": "{count} downloaded", + "@downloadedAlbumDownloadedCount": { + "description": "Downloaded tracks count badge", + "placeholders": { + "count": { + "type": "int" + } + } + } +} diff --git a/lib/l10n/arb/app_es_ES.arb b/lib/l10n/arb/app_es_ES.arb index 6065fd9d..304b9cd8 100644 --- a/lib/l10n/arb/app_es_ES.arb +++ b/lib/l10n/arb/app_es_ES.arb @@ -5,10 +5,6 @@ "@appName": { "description": "App name - DO NOT TRANSLATE" }, - "appDescription": "Descargue pistas de Spotify con calidad sin pérdida de Tidal, Qobuz y Amazon Music.", - "@appDescription": { - "description": "App description shown in about page" - }, "navHome": "Inicio", "@navHome": { "description": "Bottom navigation - Home tab" @@ -17,10 +13,6 @@ "@navLibrary": { "description": "Bottom navigation - Library tab" }, - "navHistory": "Historial", - "@navHistory": { - "description": "Bottom navigation - History tab (legacy)" - }, "navSettings": "Ajustes", "@navSettings": { "description": "Bottom navigation - Settings tab" @@ -33,20 +25,6 @@ "@homeTitle": { "description": "Home screen title" }, - "homeSearchHint": "Pegar URL Spotify o buscar...", - "@homeSearchHint": { - "description": "Placeholder text in search box" - }, - "homeSearchHintExtension": "Buscar con {extensionName}...", - "@homeSearchHintExtension": { - "description": "Placeholder when extension search is active", - "placeholders": { - "extensionName": { - "type": "String", - "description": "Name of the active extension" - } - } - }, "homeSubtitle": "Pegar enlace de Spotify o buscar por nombre", "@homeSubtitle": { "description": "Subtitle shown below search box" @@ -59,24 +37,6 @@ "@homeRecent": { "description": "Section header for recent searches" }, - "historyTitle": "Historial", - "@historyTitle": { - "description": "History screen title" - }, - "historyDownloading": "Descargando ({count})", - "@historyDownloading": { - "description": "Tab showing active downloads count", - "placeholders": { - "count": { - "type": "int", - "description": "Number of active downloads" - } - } - }, - "historyDownloaded": "Descargado", - "@historyDownloaded": { - "description": "Tab showing completed downloads" - }, "historyFilterAll": "Todo", "@historyFilterAll": { "description": "Filter chip - show all items" @@ -89,48 +49,6 @@ "@historyFilterSingles": { "description": "Filter chip - show singles only" }, - "historyTracksCount": "{count, plural, one {1 pista} other{{count} pistas}}", - "@historyTracksCount": { - "description": "Track count with plural form", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "historyAlbumsCount": "{count, plural, one {1 álbum} other{{count} álbumes}}", - "@historyAlbumsCount": { - "description": "Album count with plural form", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "historyNoDownloads": "No hay historial de descargas", - "@historyNoDownloads": { - "description": "Empty state title" - }, - "historyNoDownloadsSubtitle": "Las pistas descargadas aparecerán aquí", - "@historyNoDownloadsSubtitle": { - "description": "Empty state subtitle" - }, - "historyNoAlbums": "No hay descargas de álbum", - "@historyNoAlbums": { - "description": "Empty state when filtering albums" - }, - "historyNoAlbumsSubtitle": "Descargar múltiples pistas de un álbum para verlas aquí", - "@historyNoAlbumsSubtitle": { - "description": "Empty state subtitle for albums filter" - }, - "historyNoSingles": "No hay descargas", - "@historyNoSingles": { - "description": "Empty state when filtering singles" - }, - "historyNoSinglesSubtitle": "Las descargas de una sola pista aparecerán aquí", - "@historyNoSinglesSubtitle": { - "description": "Empty state subtitle for singles filter" - }, "historySearchHint": "Buscar en historial...", "@historySearchHint": { "description": "Search bar placeholder in history" @@ -163,34 +81,6 @@ "@downloadTitle": { "description": "Download settings page title" }, - "downloadLocation": "Ubicación de descarga", - "@downloadLocation": { - "description": "Setting for download folder" - }, - "downloadLocationSubtitle": "Elija dónde guardar los archivos", - "@downloadLocationSubtitle": { - "description": "Subtitle for download location" - }, - "downloadLocationDefault": "Ubicación predeterminada", - "@downloadLocationDefault": { - "description": "Shown when using default folder" - }, - "downloadDefaultService": "Servicio por defecto", - "@downloadDefaultService": { - "description": "Setting for preferred download service (Tidal/Qobuz/Amazon)" - }, - "downloadDefaultServiceSubtitle": "Servicio usado para descargas", - "@downloadDefaultServiceSubtitle": { - "description": "Subtitle for default service" - }, - "downloadDefaultQuality": "Calidad por defecto", - "@downloadDefaultQuality": { - "description": "Setting for audio quality" - }, - "downloadAskQuality": "Preguntar calidad antes de descargar", - "@downloadAskQuality": { - "description": "Toggle to show quality picker" - }, "downloadAskQualitySubtitle": "Mostrar selector de calidad para cada descarga", "@downloadAskQualitySubtitle": { "description": "Subtitle for ask quality toggle" @@ -203,38 +93,10 @@ "@downloadFolderOrganization": { "description": "Setting for folder structure" }, - "downloadSeparateSingles": "Separar Pistas", - "@downloadSeparateSingles": { - "description": "Toggle to separate single tracks" - }, - "downloadSeparateSinglesSubtitle": "Colocar pistas individuales en una carpeta separada", - "@downloadSeparateSinglesSubtitle": { - "description": "Subtitle for separate singles toggle" - }, - "qualityBest": "Mejor disponible", - "@qualityBest": { - "description": "Audio quality option - highest available" - }, - "qualityFlac": "FLAC", - "@qualityFlac": { - "description": "Audio quality option - FLAC lossless" - }, - "quality320": "320 kbps", - "@quality320": { - "description": "Audio quality option - 320kbps MP3" - }, - "quality128": "128 kbps", - "@quality128": { - "description": "Audio quality option - 128kbps MP3" - }, "appearanceTitle": "Apariencia", "@appearanceTitle": { "description": "Appearance settings page title" }, - "appearanceTheme": "Tema", - "@appearanceTheme": { - "description": "Theme mode setting" - }, "appearanceThemeSystem": "Sistema", "@appearanceThemeSystem": { "description": "Follow system theme" @@ -255,10 +117,6 @@ "@appearanceDynamicColorSubtitle": { "description": "Subtitle for dynamic color" }, - "appearanceAccentColor": "Color Secundario", - "@appearanceAccentColor": { - "description": "Custom accent color picker" - }, "appearanceHistoryView": "Vista de Historial", "@appearanceHistoryView": { "description": "Layout style for history" @@ -275,10 +133,6 @@ "@optionsTitle": { "description": "Options settings page title" }, - "optionsSearchSource": "Buscar Fuente", - "@optionsSearchSource": { - "description": "Section for search provider settings" - }, "optionsPrimaryProvider": "Proveedor Principal", "@optionsPrimaryProvider": { "description": "Main search provider setting" @@ -438,22 +292,6 @@ "@extensionsTitle": { "description": "Extensions page title" }, - "extensionsInstalled": "Extensiones instaladas", - "@extensionsInstalled": { - "description": "Section header for installed extensions" - }, - "extensionsNone": "No hay extensiones instaladas", - "@extensionsNone": { - "description": "Empty state title" - }, - "extensionsNoneSubtitle": "Instalar extensiones desde la pestaña Tienda", - "@extensionsNoneSubtitle": { - "description": "Empty state subtitle" - }, - "extensionsEnabled": "Habilitado", - "@extensionsEnabled": { - "description": "Extension status - active" - }, "extensionsDisabled": "Deshabilitado", "@extensionsDisabled": { "description": "Extension status - inactive" @@ -480,10 +318,6 @@ "@extensionsUninstall": { "description": "Uninstall extension button" }, - "extensionsSetAsSearch": "Establecer como proveedor de búsqueda", - "@extensionsSetAsSearch": { - "description": "Use extension for search" - }, "storeTitle": "Tienda de extensiones", "@storeTitle": { "description": "Store screen title" @@ -580,10 +414,6 @@ "@aboutSocial": { "description": "Section for social links" }, - "aboutSupport": "Soporte", - "@aboutSupport": { - "description": "Section for support/donation links" - }, "aboutApp": "Aplicación", "@aboutApp": { "description": "Section for app info" @@ -604,14 +434,6 @@ "@aboutSjdonadoDesc": { "description": "Credit description for sjdonado" }, - "aboutDoubleDouble": "DoubleDouble", - "@aboutDoubleDouble": { - "description": "Name of Amazon API service - DO NOT TRANSLATE" - }, - "aboutDoubleDoubleDesc": "API increible para descargas de Amazon Music. ¡Gracias por hacerla gratis!", - "@aboutDoubleDoubleDesc": { - "description": "Credit for DoubleDouble API" - }, "aboutDabMusic": "Música DAB", "@aboutDabMusic": { "description": "Name of Qobuz API service - DO NOT TRANSLATE" @@ -632,35 +454,6 @@ "@aboutAppDescription": { "description": "App description in header card" }, - "albumTitle": "Álbum", - "@albumTitle": { - "description": "Album screen title" - }, - "albumTracks": "{count, plural, one {1 pista} other{{count} pistas}}", - "@albumTracks": { - "description": "Album track count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "albumDownloadAll": "Descargar Todo", - "@albumDownloadAll": { - "description": "Button to download all tracks" - }, - "albumDownloadRemaining": "Descargas Restantes", - "@albumDownloadRemaining": { - "description": "Button to download remaining tracks" - }, - "playlistTitle": "Lista de reproducción", - "@playlistTitle": { - "description": "Playlist screen title" - }, - "artistTitle": "Artista", - "@artistTitle": { - "description": "Artist screen title" - }, "artistAlbums": "Álbumes", "@artistAlbums": { "description": "Section header for artist albums" @@ -673,15 +466,6 @@ "@artistCompilations": { "description": "Section header for compilations" }, - "artistReleases": "{count, plural, one {1 lanzamiento} other{{count} lanzamientos}}", - "@artistReleases": { - "description": "Artist release count", - "placeholders": { - "count": { - "type": "int" - } - } - }, "artistPopular": "Populares", "@artistPopular": { "description": "Section header for popular/top tracks" @@ -696,34 +480,6 @@ } } }, - "trackMetadataTitle": "Información de pista", - "@trackMetadataTitle": { - "description": "Track metadata screen title" - }, - "trackMetadataArtist": "Artista", - "@trackMetadataArtist": { - "description": "Metadata field - artist name" - }, - "trackMetadataAlbum": "Álbum", - "@trackMetadataAlbum": { - "description": "Metadata field - album name" - }, - "trackMetadataDuration": "Duración", - "@trackMetadataDuration": { - "description": "Metadata field - track length" - }, - "trackMetadataQuality": "Calidad", - "@trackMetadataQuality": { - "description": "Metadata field - audio quality" - }, - "trackMetadataPath": "Ruta del archivo", - "@trackMetadataPath": { - "description": "Metadata field - file location" - }, - "trackMetadataDownloadedAt": "Descargado", - "@trackMetadataDownloadedAt": { - "description": "Metadata field - download date" - }, "trackMetadataService": "Servicio", "@trackMetadataService": { "description": "Metadata field - download service used" @@ -740,54 +496,10 @@ "@trackMetadataDelete": { "description": "Action button - delete track" }, - "trackMetadataRedownload": "Volver a descargar", - "@trackMetadataRedownload": { - "description": "Action button - download again" - }, - "trackMetadataOpenFolder": "Abrir carpeta", - "@trackMetadataOpenFolder": { - "description": "Action button - open containing folder" - }, - "setupTitle": "Bienvenido a SpotiFLAC", - "@setupTitle": { - "description": "Setup wizard title" - }, - "setupSubtitle": "Comencemos", - "@setupSubtitle": { - "description": "Setup wizard subtitle" - }, - "setupStoragePermission": "Permiso de almacenamiento", - "@setupStoragePermission": { - "description": "Storage permission step title" - }, - "setupStoragePermissionSubtitle": "Necesario para guardar los archivos descargados", - "@setupStoragePermissionSubtitle": { - "description": "Explanation for storage permission" - }, - "setupStoragePermissionGranted": "Permiso aprobado", - "@setupStoragePermissionGranted": { - "description": "Status when permission granted" - }, - "setupStoragePermissionDenied": "Permiso denegado", - "@setupStoragePermissionDenied": { - "description": "Status when permission denied" - }, "setupGrantPermission": "Conceder permiso", "@setupGrantPermission": { "description": "Button to request permission" }, - "setupDownloadLocation": "Ubicación de descarga", - "@setupDownloadLocation": { - "description": "Download folder step title" - }, - "setupChooseFolder": "Seleccionar Carpeta", - "@setupChooseFolder": { - "description": "Button to pick folder" - }, - "setupContinue": "Continuar", - "@setupContinue": { - "description": "Continue to next step button" - }, "setupSkip": "Omitir por ahora", "@setupSkip": { "description": "Skip current step button" @@ -796,10 +508,6 @@ "@setupStorageAccessRequired": { "description": "Title when storage access needed" }, - "setupStorageAccessMessage": "SpotiFLAC necesita permiso de \"Todos los archivos de acceso\" para guardar los archivos de música en la carpeta elegida.", - "@setupStorageAccessMessage": { - "description": "Explanation for storage access" - }, "setupStorageAccessMessageAndroid11": "Android 11+ requiere permiso \"Todos los archivos de acceso\" para guardar los archivos en la carpeta de descargas elegida.", "@setupStorageAccessMessageAndroid11": { "description": "Android 11+ specific explanation" @@ -831,10 +539,6 @@ } } }, - "setupSelectDownloadFolder": "Seleccionar carpeta de descarga", - "@setupSelectDownloadFolder": { - "description": "Folder selection step title" - }, "setupUseDefaultFolder": "¿Usar carpeta por defecto?", "@setupUseDefaultFolder": { "description": "Dialog title for default folder" @@ -883,26 +587,6 @@ "@setupDownloadInFlac": { "description": "App tagline in setup" }, - "setupStepStorage": "Almacenamiento", - "@setupStepStorage": { - "description": "Setup step indicator - storage" - }, - "setupStepNotification": "Notificación", - "@setupStepNotification": { - "description": "Setup step indicator - notification" - }, - "setupStepFolder": "Carpeta", - "@setupStepFolder": { - "description": "Setup step indicator - folder" - }, - "setupStepSpotify": "Spotify", - "@setupStepSpotify": { - "description": "Setup step indicator - Spotify API" - }, - "setupStepPermission": "Permiso", - "@setupStepPermission": { - "description": "Setup step indicator - permission" - }, "setupStorageGranted": "¡Permiso de almacenamiento concedido!", "@setupStorageGranted": { "description": "Success message for storage permission" @@ -923,14 +607,6 @@ "@setupNotificationEnable": { "description": "Button to enable notifications" }, - "setupNotificationDescription": "Recibe notificaciones cuando las descargas completen o requieran atención.", - "@setupNotificationDescription": { - "description": "Explanation for notifications" - }, - "setupFolderSelected": "¡Carpeta de descarga seleccionada!", - "@setupFolderSelected": { - "description": "Success message for folder selection" - }, "setupFolderChoose": "Cambiar carpeta de descargas", "@setupFolderChoose": { "description": "Button to choose folder" @@ -939,58 +615,14 @@ "@setupFolderDescription": { "description": "Explanation for folder selection" }, - "setupChangeFolder": "Cambiar carpeta", - "@setupChangeFolder": { - "description": "Button to change selected folder" - }, "setupSelectFolder": "Seleccionar Carpeta", "@setupSelectFolder": { "description": "Button to select folder" }, - "setupSpotifyApiOptional": "API de Spotify (opcional)", - "@setupSpotifyApiOptional": { - "description": "Spotify API step title" - }, - "setupSpotifyApiDescription": "Añade tus credenciales de la API de Spotify para mejores resultados de búsqueda y acceso al contenido exclusivo de Spotify.", - "@setupSpotifyApiDescription": { - "description": "Explanation for Spotify API" - }, - "setupUseSpotifyApi": "Usar API de Spotify", - "@setupUseSpotifyApi": { - "description": "Toggle to enable Spotify API" - }, - "setupEnterCredentialsBelow": "Ingresa tus credenciales a continuación", - "@setupEnterCredentialsBelow": { - "description": "Prompt to enter credentials" - }, - "setupUsingDeezer": "Usando Deezer (no se necesita cuenta)", - "@setupUsingDeezer": { - "description": "Status when using Deezer" - }, - "setupEnterClientId": "Introduzca el ID de cliente de Spotify", - "@setupEnterClientId": { - "description": "Placeholder for client ID field" - }, - "setupEnterClientSecret": "Ingresa el Client Secret de Spotify", - "@setupEnterClientSecret": { - "description": "Placeholder for client secret field" - }, - "setupGetFreeCredentials": "Obtén tus credenciales gratuitas de la API desde el Spotify Developer Dashboard.", - "@setupGetFreeCredentials": { - "description": "Info about getting Spotify credentials" - }, "setupEnableNotifications": "Activar notificaciones", "@setupEnableNotifications": { "description": "Button to enable notifications" }, - "setupProceedToNextStep": "Ahora puedes continuar con el siguiente paso.", - "@setupProceedToNextStep": { - "description": "Message after completing a step" - }, - "setupNotificationProgressDescription": "Recibirás notificaciones de progreso de descargas.", - "@setupNotificationProgressDescription": { - "description": "Info about notification usage" - }, "setupNotificationBackgroundDescription": "Recibe notificaciones sobre el progreso de la descarga y la finalización. Esto te ayuda a rastrear las descargas cuando la aplicación está en segundo plano.", "@setupNotificationBackgroundDescription": { "description": "Detailed notification explanation" @@ -999,10 +631,6 @@ "@setupSkipForNow": { "description": "Skip button text" }, - "setupBack": "Atrás", - "@setupBack": { - "description": "Back button text" - }, "setupNext": "Siguiente", "@setupNext": { "description": "Next button text" @@ -1011,26 +639,14 @@ "@setupGetStarted": { "description": "Final setup button" }, - "setupSkipAndStart": "Saltar y empezar", - "@setupSkipAndStart": { - "description": "Skip setup and start app" - }, "setupAllowAccessToManageFiles": "Por favor, activa \"Permitir el acceso para gestionar todos los archivos\" en la siguiente pantalla.", "@setupAllowAccessToManageFiles": { "description": "Instruction for file access permission" }, - "setupGetCredentialsFromSpotify": "Obtener credenciales de developer.spotify.com", - "@setupGetCredentialsFromSpotify": { - "description": "Link text for Spotify developer portal" - }, "dialogCancel": "Cancelar", "@dialogCancel": { "description": "Dialog button - cancel action" }, - "dialogOk": "Aceptar", - "@dialogOk": { - "description": "Dialog button - confirm/acknowledge" - }, "dialogSave": "Guardar", "@dialogSave": { "description": "Dialog button - save changes" @@ -1043,26 +659,10 @@ "@dialogRetry": { "description": "Dialog button - retry action" }, - "dialogClose": "Cerrar", - "@dialogClose": { - "description": "Dialog button - close dialog" - }, - "dialogYes": "Sí", - "@dialogYes": { - "description": "Dialog button - confirm yes" - }, - "dialogNo": "No", - "@dialogNo": { - "description": "Dialog button - confirm no" - }, "dialogClear": "Borrar", "@dialogClear": { "description": "Dialog button - clear items" }, - "dialogConfirm": "Confirmar", - "@dialogConfirm": { - "description": "Dialog button - confirm action" - }, "dialogDone": "Hecho", "@dialogDone": { "description": "Dialog button - action completed" @@ -1091,34 +691,10 @@ "@dialogUnsavedChanges": { "description": "Dialog message - unsaved changes" }, - "dialogDownloadFailed": "Descarga fallida", - "@dialogDownloadFailed": { - "description": "Dialog title - download error" - }, - "dialogTrackLabel": "Pista:", - "@dialogTrackLabel": { - "description": "Label for track name in error dialog" - }, - "dialogArtistLabel": "Artista:", - "@dialogArtistLabel": { - "description": "Label for artist name in error dialog" - }, - "dialogErrorLabel": "Error:", - "@dialogErrorLabel": { - "description": "Label for error message" - }, "dialogClearAll": "Eliminar todo", "@dialogClearAll": { "description": "Dialog title - clear all items" }, - "dialogClearAllDownloads": "¿Estás seguro de que quieres borrar todas las descargas?", - "@dialogClearAllDownloads": { - "description": "Dialog message - clear downloads confirmation" - }, - "dialogRemoveFromDevice": "¿Eliminar del dispositivo?", - "@dialogRemoveFromDevice": { - "description": "Dialog title - delete file confirmation" - }, "dialogRemoveExtension": "Eliminar extensión", "@dialogRemoveExtension": { "description": "Dialog title - uninstall extension" @@ -1257,15 +833,6 @@ "@snackbarViewQueue": { "description": "Snackbar action - view download queue" }, - "snackbarFailedToLoad": "Error al cargar: {error}", - "@snackbarFailedToLoad": { - "description": "Snackbar - loading error", - "placeholders": { - "error": { - "type": "String" - } - } - }, "snackbarUrlCopied": "URL {platform} copiada al portapapeles", "@snackbarUrlCopied": { "description": "Snackbar - URL copied", @@ -1326,16 +893,6 @@ "@errorRateLimitedMessage": { "description": "Error message - rate limit explanation" }, - "errorFailedToLoad": "Error al cargar {item}", - "@errorFailedToLoad": { - "description": "Error message - loading failed", - "placeholders": { - "item": { - "type": "String", - "description": "Item that failed to load (album/playlist/etc)" - } - } - }, "errorNoTracksFound": "No se encontraron pistas", "@errorNoTracksFound": { "description": "Error - search returned no results" @@ -1349,34 +906,6 @@ } } }, - "statusQueued": "En cola", - "@statusQueued": { - "description": "Download status - waiting in queue" - }, - "statusDownloading": "Descargando", - "@statusDownloading": { - "description": "Download status - in progress" - }, - "statusFinalizing": "Finalizando", - "@statusFinalizing": { - "description": "Download status - writing metadata" - }, - "statusCompleted": "Completado", - "@statusCompleted": { - "description": "Download status - finished" - }, - "statusFailed": "Error", - "@statusFailed": { - "description": "Download status - error occurred" - }, - "statusSkipped": "Omitido", - "@statusSkipped": { - "description": "Download status - already exists" - }, - "statusPaused": "Pausado", - "@statusPaused": { - "description": "Download status - paused" - }, "actionPause": "Pausar", "@actionPause": { "description": "Action button - pause download" @@ -1389,14 +918,6 @@ "@actionCancel": { "description": "Action button - cancel operation" }, - "actionStop": "Detener", - "@actionStop": { - "description": "Action button - stop operation" - }, - "actionSelect": "Seleccionar", - "@actionSelect": { - "description": "Action button - enter selection mode" - }, "actionSelectAll": "Seleccionar Todo", "@actionSelectAll": { "description": "Action button - select all items" @@ -1405,14 +926,6 @@ "@actionDeselect": { "description": "Action button - deselect all" }, - "actionPaste": "Pegar", - "@actionPaste": { - "description": "Action button - paste from clipboard" - }, - "actionImportCsv": "Importar CSV", - "@actionImportCsv": { - "description": "Action button - import CSV file" - }, "actionRemoveCredentials": "Eliminar credenciales", "@actionRemoveCredentials": { "description": "Action button - delete Spotify credentials" @@ -1434,19 +947,6 @@ "@selectionAllSelected": { "description": "Status - all items selected" }, - "selectionTapToSelect": "Toca las pistas para seleccionar", - "@selectionTapToSelect": { - "description": "Hint - how to select items" - }, - "selectionDeleteTracks": "¡Eliminar {count} {count, plural, one {pista} other{pistas}}", - "@selectionDeleteTracks": { - "description": "Delete button with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, "selectionSelectToDelete": "Seleccionar pistas a eliminar", "@selectionSelectToDelete": { "description": "Placeholder when nothing selected" @@ -1487,55 +987,10 @@ "@tooltipPlay": { "description": "Tooltip - play button" }, - "tooltipCancel": "Cancelar", - "@tooltipCancel": { - "description": "Tooltip - cancel button" - }, - "tooltipStop": "Detener", - "@tooltipStop": { - "description": "Tooltip - stop button" - }, - "tooltipRetry": "Volver a intentar", - "@tooltipRetry": { - "description": "Tooltip - retry button" - }, - "tooltipRemove": "Eliminar", - "@tooltipRemove": { - "description": "Tooltip - remove button" - }, - "tooltipClear": "Borrar", - "@tooltipClear": { - "description": "Tooltip - clear button" - }, - "tooltipPaste": "Pegar", - "@tooltipPaste": { - "description": "Tooltip - paste button" - }, "filenameFormat": "Formato del nombre del archivo", "@filenameFormat": { "description": "Setting title - filename pattern" }, - "filenameFormatPreview": "Vista previa: {preview}", - "@filenameFormatPreview": { - "description": "Preview of filename pattern", - "placeholders": { - "preview": { - "type": "String" - } - } - }, - "filenameAvailablePlaceholders": "Marcadores disponibles:", - "@filenameAvailablePlaceholders": { - "description": "Label for placeholder list" - }, - "filenameHint": "{artist} - {title}", - "@filenameHint": { - "description": "Default filename format hint" - }, - "folderOrganization": "Organización de carpetas", - "@folderOrganization": { - "description": "Setting title - folder structure" - }, "folderOrganizationNone": "Ninguna organización", "@folderOrganizationNone": { "description": "Folder option - flat structure" @@ -1576,27 +1031,10 @@ "@updateAvailable": { "description": "Update dialog title" }, - "updateNewVersion": "Versión {version} está disponible", - "@updateNewVersion": { - "description": "Update available message", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "updateDownload": "Descargar", - "@updateDownload": { - "description": "Update button - download update" - }, "updateLater": "Más tarde", "@updateLater": { "description": "Update button - dismiss" }, - "updateChangelog": "Historial de cambios", - "@updateChangelog": { - "description": "Link to changelog" - }, "updateStartingDownload": "Iniciando descarga...", "@updateStartingDownload": { "description": "Update status - initializing" @@ -1637,14 +1075,6 @@ "@updateDontRemind": { "description": "Update button - skip this version" }, - "providerPriority": "Prioridad del proveedor", - "@providerPriority": { - "description": "Setting title - download provider order" - }, - "providerPrioritySubtitle": "Arrastre para reordenar los proveedores de descarga", - "@providerPrioritySubtitle": { - "description": "Subtitle for provider priority" - }, "providerPriorityTitle": "Prioridad del proveedor", "@providerPriorityTitle": { "description": "Provider priority page title" @@ -1665,14 +1095,6 @@ "@providerExtension": { "description": "Label for extension-provided providers" }, - "metadataProviderPriority": "Prioridad del proveedor de metadatos", - "@metadataProviderPriority": { - "description": "Setting title - metadata provider order" - }, - "metadataProviderPrioritySubtitle": "Orden usado al recuperar metadatos de la pista", - "@metadataProviderPrioritySubtitle": { - "description": "Subtitle for metadata priority" - }, "metadataProviderPriorityTitle": "Prioridad de los metadatos", "@metadataProviderPriorityTitle": { "description": "Metadata priority page title" @@ -1697,22 +1119,6 @@ "@logTitle": { "description": "Logs screen title" }, - "logCopy": "Copiar Registros", - "@logCopy": { - "description": "Action - copy logs to clipboard" - }, - "logClear": "Limpiar registros", - "@logClear": { - "description": "Action - delete all logs" - }, - "logShare": "Compartir Registros", - "@logShare": { - "description": "Action - share logs file" - }, - "logEmpty": "No hay registros aún", - "@logEmpty": { - "description": "Empty state title" - }, "logCopied": "Registros copiados al portapapeles", "@logCopied": { "description": "Snackbar - logs copied" @@ -1745,22 +1151,6 @@ "@logClearLogsMessage": { "description": "Clear logs confirmation message" }, - "logIspBlocking": "BLOQUEO POR EL ISP DETECTADO", - "@logIspBlocking": { - "description": "Error category - ISP blocking" - }, - "logRateLimited": "TASA LIMITADA", - "@logRateLimited": { - "description": "Error category - rate limiting" - }, - "logNetworkError": "ERROR DE RED", - "@logNetworkError": { - "description": "Error category - network issues" - }, - "logTrackNotFound": "PISTA NO ENCONTRADA", - "@logTrackNotFound": { - "description": "Error category - missing tracks" - }, "logFilterBySeverity": "Filtrar los registros por gravedad", "@logFilterBySeverity": { "description": "Filter dialog title" @@ -1773,60 +1163,6 @@ "@logNoLogsYetSubtitle": { "description": "Empty state subtitle" }, - "logIssueSummary": "Resumen de Incidencias", - "@logIssueSummary": { - "description": "Section header for error summary" - }, - "logIspBlockingDescription": "Tu ISP puede estar bloqueando el acceso a los servicios de descarga", - "@logIspBlockingDescription": { - "description": "ISP blocking explanation" - }, - "logIspBlockingSuggestion": "Intente usar una VPN o cambie el DNS a 1.1.1.1 o 8.8.8.8", - "@logIspBlockingSuggestion": { - "description": "ISP blocking fix suggestion" - }, - "logRateLimitedDescription": "Demasiadas solicitudes al servicio", - "@logRateLimitedDescription": { - "description": "Rate limit explanation" - }, - "logRateLimitedSuggestion": "Espere unos minutos antes de volver a intentarlo", - "@logRateLimitedSuggestion": { - "description": "Rate limit fix suggestion" - }, - "logNetworkErrorDescription": "Problemas de conexión detectados", - "@logNetworkErrorDescription": { - "description": "Network error explanation" - }, - "logNetworkErrorSuggestion": "Comprueba tu conexión a internet", - "@logNetworkErrorSuggestion": { - "description": "Network error fix suggestion" - }, - "logTrackNotFoundDescription": "No se pudieron encontrar algunas pistas en los servicios de descarga", - "@logTrackNotFoundDescription": { - "description": "Track not found explanation" - }, - "logTrackNotFoundSuggestion": "La pista puede no estar disponible en calidad sin pérdida", - "@logTrackNotFoundSuggestion": { - "description": "Track not found explanation" - }, - "logTotalErrors": "Total de errores: {count}", - "@logTotalErrors": { - "description": "Error count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "logAffected": "Afectado: {domains}", - "@logAffected": { - "description": "Affected domains display", - "placeholders": { - "domains": { - "type": "String" - } - } - }, "logEntriesFiltered": "Entradas ({count} filtradas)", "@logEntriesFiltered": { "description": "Log count with filter active", @@ -1969,10 +1305,6 @@ "@appearanceLanguage": { "description": "Language setting title" }, - "appearanceLanguageSubtitle": "Elija su idioma preferido", - "@appearanceLanguageSubtitle": { - "description": "Language setting subtitle" - }, "settingsAppearanceSubtitle": "Tema, colores, pantalla", "@settingsAppearanceSubtitle": { "description": "Appearance settings description" @@ -2001,10 +1333,6 @@ "@pressBackAgainToExit": { "description": "Exit confirmation message" }, - "tracksHeader": "Pistas", - "@tracksHeader": { - "description": "Section header for track list" - }, "downloadAllCount": "Descargar Todo ({count})", "@downloadAllCount": { "description": "Download all button with count", @@ -2151,15 +1479,6 @@ "@trackDeleteConfirmMessage": { "description": "Delete confirmation message" }, - "trackCannotOpen": "No se puede abrir: {message}", - "@trackCannotOpen": { - "description": "Error opening file", - "placeholders": { - "message": { - "type": "String" - } - } - }, "dateToday": "Hoy", "@dateToday": { "description": "Relative date - today" @@ -2195,22 +1514,6 @@ } } }, - "concurrentSequential": "Secuencial", - "@concurrentSequential": { - "description": "Download mode - one at a time" - }, - "concurrentParallel2": "2 simultáneamente", - "@concurrentParallel2": { - "description": "Download mode - 2 simultaneous" - }, - "concurrentParallel3": "3 simultáneamente", - "@concurrentParallel3": { - "description": "Download mode - 3 simultaneous" - }, - "tapToSeeError": "Pulse para ver los detalles del error", - "@tapToSeeError": { - "description": "Tooltip for failed download" - }, "storeFilterAll": "Todo", "@storeFilterAll": { "description": "Store filter - all extensions" @@ -2239,18 +1542,6 @@ "@storeClearFilters": { "description": "Button to clear all filters" }, - "storeNoResults": "No se encontraron extensiones", - "@storeNoResults": { - "description": "Empty state when no extensions match filters" - }, - "extensionProviderPriority": "Prioridad del proveedor", - "@extensionProviderPriority": { - "description": "Extension capability - provider priority" - }, - "extensionInstallButton": "Instalar extensión", - "@extensionInstallButton": { - "description": "Button to install extension" - }, "extensionDefaultProvider": "Por defecto (Deezer/Spotify)", "@extensionDefaultProvider": { "description": "Default search provider option" @@ -2450,46 +1741,6 @@ "@qualityHiResFlacMaxSubtitle": { "description": "Technical spec for hi-res max" }, - "qualityLossy": "Con pérdidas", - "@qualityLossy": { - "description": "Quality option - lossy format (MP3/Opus)" - }, - "qualityLossyMp3Subtitle": "MP3 320kbps (convertido desde FLAC)", - "@qualityLossyMp3Subtitle": { - "description": "Technical spec for lossy MP3" - }, - "qualityLossyOpusSubtitle": "Opus 128kbps (convertido de FLAC)", - "@qualityLossyOpusSubtitle": { - "description": "Technical spec for lossy Opus" - }, - "enableLossyOption": "Habilitar opción con pérdida", - "@enableLossyOption": { - "description": "Setting - enable lossy quality option" - }, - "enableLossyOptionSubtitleOn": "La opción de calidad con pérdida está disponible", - "@enableLossyOptionSubtitleOn": { - "description": "Subtitle when lossy is enabled" - }, - "enableLossyOptionSubtitleOff": "Descargas FLAC y luego se convierten en formato con pérdida", - "@enableLossyOptionSubtitleOff": { - "description": "Subtitle when lossy is disabled" - }, - "lossyFormat": "Formato con Perdido", - "@lossyFormat": { - "description": "Setting - choose lossy format" - }, - "lossyFormatDescription": "Elegir el formato con pérdida para la conversión", - "@lossyFormatDescription": { - "description": "Description for lossy format picker" - }, - "lossyFormatMp3Subtitle": "320kbps, mejor compatibilidad", - "@lossyFormatMp3Subtitle": { - "description": "MP3 format description" - }, - "lossyFormatOpusSubtitle": "128kbps, mejor calidad a menor tamaño", - "@lossyFormatOpusSubtitle": { - "description": "Opus format description" - }, "qualityNote": "La calidad real depende de la disponibilidad de la pista del servicio", "@qualityNote": { "description": "Note about quality availability" @@ -2518,14 +1769,6 @@ "@downloadUseAlbumArtistForFolders": { "description": "Setting - choose whether artist folders use Album Artist or Track Artist" }, - "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Artist folders use Album Artist when available", - "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { - "description": "Subtitle when Album Artist is used for folder naming" - }, - "downloadUseAlbumArtistForFoldersTrackSubtitle": "Artist folders use Track Artist only", - "@downloadUseAlbumArtistForFoldersTrackSubtitle": { - "description": "Subtitle when Track Artist is used for folder naming" - }, "downloadUsePrimaryArtistOnly": "Primary artist only for folders", "@downloadUsePrimaryArtistOnly": { "description": "Setting - strip featured artists from folder name" @@ -2538,14 +1781,6 @@ "@downloadUsePrimaryArtistOnlyDisabled": { "description": "Subtitle when primary artist only is disabled" }, - "downloadSaveFormat": "Guardar Formato", - "@downloadSaveFormat": { - "description": "Setting - output file format" - }, - "downloadSelectService": "Seleccionar Servicio", - "@downloadSelectService": { - "description": "Dialog title - choose download service" - }, "downloadSelectQuality": "Seleccionar Calidad", "@downloadSelectQuality": { "description": "Dialog title - choose audio quality" @@ -2554,66 +1789,6 @@ "@downloadFrom": { "description": "Label - download source" }, - "downloadDefaultQualityLabel": "Calidad por Defecto", - "@downloadDefaultQualityLabel": { - "description": "Label - default quality setting" - }, - "downloadBestAvailable": "La mejor disponible", - "@downloadBestAvailable": { - "description": "Quality option - highest available" - }, - "folderNone": "Ninguna", - "@folderNone": { - "description": "Folder option - no organization" - }, - "folderNoneSubtitle": "Guardar todos los archivos directamente para descargar la carpeta", - "@folderNoneSubtitle": { - "description": "Subtitle for no folder organization" - }, - "folderArtist": "Artista", - "@folderArtist": { - "description": "Folder option - by artist" - }, - "folderArtistSubtitle": "Nombre del Artista/nombre de archivo", - "@folderArtistSubtitle": { - "description": "Folder structure example" - }, - "folderAlbum": "Álbum", - "@folderAlbum": { - "description": "Folder option - by album" - }, - "folderAlbumSubtitle": "Nombre del álbum/nombre de archivo", - "@folderAlbumSubtitle": { - "description": "Folder structure example" - }, - "folderArtistAlbum": "Artista/Álbum", - "@folderArtistAlbum": { - "description": "Folder option - nested" - }, - "folderArtistAlbumSubtitle": "Nombre del Artista/Nombre del Álbum/Nombre del Archivo", - "@folderArtistAlbumSubtitle": { - "description": "Folder structure example" - }, - "serviceTidal": "Tidal", - "@serviceTidal": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceQobuz": "Qobuz", - "@serviceQobuz": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceAmazon": "Amazon", - "@serviceAmazon": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceDeezer": "Deezer", - "@serviceDeezer": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceSpotify": "Spotify", - "@serviceSpotify": { - "description": "Service name - DO NOT TRANSLATE" - }, "appearanceAmoledDark": "AMOLED Oscuro", "@appearanceAmoledDark": { "description": "Theme option - pure black" @@ -2622,18 +1797,6 @@ "@appearanceAmoledDarkSubtitle": { "description": "Subtitle for AMOLED dark" }, - "appearanceChooseAccentColor": "Elegir color principal", - "@appearanceChooseAccentColor": { - "description": "Color picker dialog title" - }, - "appearanceChooseTheme": "Modo de tema", - "@appearanceChooseTheme": { - "description": "Theme picker dialog title" - }, - "queueTitle": "Descargas en proceso", - "@queueTitle": { - "description": "Queue screen title" - }, "queueClearAll": "Eliminar todo", "@queueClearAll": { "description": "Button - clear all queue items" @@ -2642,22 +1805,6 @@ "@queueClearAllMessage": { "description": "Clear queue confirmation" }, - "queueExportFailed": "Exportar", - "@queueExportFailed": { - "description": "Button - export failed downloads to TXT" - }, - "queueExportFailedSuccess": "Descarga fallida exportada al archivo TXT", - "@queueExportFailedSuccess": { - "description": "Success message after exporting failed downloads" - }, - "queueExportFailedClear": "Limpieza Fallida", - "@queueExportFailedClear": { - "description": "Action to clear failed downloads after export" - }, - "queueExportFailedError": "Error al exportar descargas", - "@queueExportFailedError": { - "description": "Error message when export fails" - }, "settingsAutoExportFailed": "Autoexportar descargas fallidas", "@settingsAutoExportFailed": { "description": "Setting toggle for auto-export" @@ -2682,38 +1829,6 @@ "@settingsDownloadNetworkSubtitle": { "description": "Subtitle explaining network preference" }, - "queueEmpty": "No hay descargas en cola", - "@queueEmpty": { - "description": "Empty queue state title" - }, - "queueEmptySubtitle": "Añadir pistas desde la pantalla de inicio", - "@queueEmptySubtitle": { - "description": "Empty queue state subtitle" - }, - "queueClearCompleted": "Limpiar tareas finalizadas", - "@queueClearCompleted": { - "description": "Button - clear finished downloads" - }, - "queueDownloadFailed": "Descarga fallida", - "@queueDownloadFailed": { - "description": "Error dialog title" - }, - "queueTrackLabel": "Pista:", - "@queueTrackLabel": { - "description": "Label in error dialog" - }, - "queueArtistLabel": "Artista:", - "@queueArtistLabel": { - "description": "Label in error dialog" - }, - "queueErrorLabel": "Error:", - "@queueErrorLabel": { - "description": "Label in error dialog" - }, - "queueUnknownError": "Error desconocido", - "@queueUnknownError": { - "description": "Fallback error message" - }, "albumFolderArtistAlbum": "Artista / Álbum", "@albumFolderArtistAlbum": { "description": "Album folder option" @@ -2767,19 +1882,6 @@ } } }, - "downloadedAlbumTracksHeader": "Pistas", - "@downloadedAlbumTracksHeader": { - "description": "Section header for tracks" - }, - "downloadedAlbumDownloadedCount": "{count} descargado", - "@downloadedAlbumDownloadedCount": { - "description": "Downloaded tracks count badge", - "placeholders": { - "count": { - "type": "int" - } - } - }, "downloadedAlbumSelectedCount": "{count} seleccionado", "@downloadedAlbumSelectedCount": { "description": "Selection count indicator", @@ -2820,10 +1922,6 @@ } } }, - "utilityFunctions": "Funciones de utilidad", - "@utilityFunctions": { - "description": "Extension capability - utility functions" - }, "recentTypeArtist": "Artista", "@recentTypeArtist": { "description": "Recent access item type - artist" @@ -2858,16 +1956,6 @@ } } }, - "errorGeneric": "Error: {message}", - "@errorGeneric": { - "description": "Generic error message format", - "placeholders": { - "message": { - "type": "String", - "description": "Error message" - } - } - }, "discographyDownload": "Descargar Discografía", "@discographyDownload": { "description": "Button - download artist discography" @@ -3034,10 +2122,6 @@ "@libraryTitle": { "description": "Library settings page title" }, - "libraryStatus": "Library Status", - "@libraryStatus": { - "description": "Section header for library status" - }, "libraryScanSettings": "Scan Settings", "@libraryScanSettings": { "description": "Section header for scan settings" @@ -3114,15 +2198,6 @@ "@libraryAboutDescription": { "description": "Description of local library feature" }, - "libraryTracksCount": "{count} tracks", - "@libraryTracksCount": { - "description": "Track count in library", - "placeholders": { - "count": { - "type": "int" - } - } - }, "libraryLastScanned": "Last scanned: {time}", "@libraryLastScanned": { "description": "Last scan time display", @@ -3237,26 +2312,6 @@ "@libraryFilterFormat": { "description": "Filter section - file format" }, - "libraryFilterDate": "Date Added", - "@libraryFilterDate": { - "description": "Filter section - date range" - }, - "libraryFilterDateToday": "Today", - "@libraryFilterDateToday": { - "description": "Filter option - today only" - }, - "libraryFilterDateWeek": "This Week", - "@libraryFilterDateWeek": { - "description": "Filter option - this week" - }, - "libraryFilterDateMonth": "This Month", - "@libraryFilterDateMonth": { - "description": "Filter option - this month" - }, - "libraryFilterDateYear": "This Year", - "@libraryFilterDateYear": { - "description": "Filter option - this year" - }, "libraryFilterSort": "Sort", "@libraryFilterSort": { "description": "Filter section - sort order" @@ -3269,15 +2324,6 @@ "@libraryFilterSortOldest": { "description": "Sort option - oldest first" }, - "libraryFilterActive": "{count} filter(s) active", - "@libraryFilterActive": { - "description": "Badge showing number of active filters", - "placeholders": { - "count": { - "type": "int" - } - } - }, "timeJustNow": "Just now", "@timeJustNow": { "description": "Relative time - less than a minute ago" @@ -3300,106 +2346,6 @@ } } }, - "storageSwitchTitle": "Switch Storage Mode", - "@storageSwitchTitle": { - "description": "Dialog title when switching storage mode" - }, - "storageSwitchToSafTitle": "Switch to SAF Storage?", - "@storageSwitchToSafTitle": { - "description": "Dialog title when switching to SAF" - }, - "storageSwitchToAppTitle": "Switch to App Storage?", - "@storageSwitchToAppTitle": { - "description": "Dialog title when switching to app storage" - }, - "storageSwitchToSafMessage": "Your existing downloads will remain in the current location and stay accessible.\n\nNew downloads will be saved to your selected SAF folder.", - "@storageSwitchToSafMessage": { - "description": "Explanation when switching to SAF" - }, - "storageSwitchToAppMessage": "Your existing downloads will remain in the current SAF location and stay accessible.\n\nNew downloads will be saved to Music/SpotiFLAC folder.", - "@storageSwitchToAppMessage": { - "description": "Explanation when switching to app storage" - }, - "storageSwitchExistingDownloads": "Existing Downloads", - "@storageSwitchExistingDownloads": { - "description": "Section header for existing downloads info" - }, - "storageSwitchExistingDownloadsInfo": "{count} tracks in {mode} storage", - "@storageSwitchExistingDownloadsInfo": { - "description": "Info about existing downloads count", - "placeholders": { - "count": { - "type": "int" - }, - "mode": { - "type": "String" - } - } - }, - "storageSwitchNewDownloads": "New Downloads", - "@storageSwitchNewDownloads": { - "description": "Section header for new downloads info" - }, - "storageSwitchNewDownloadsLocation": "Will be saved to: {location}", - "@storageSwitchNewDownloadsLocation": { - "description": "Shows where new downloads will go", - "placeholders": { - "location": { - "type": "String" - } - } - }, - "storageSwitchContinue": "Continue", - "@storageSwitchContinue": { - "description": "Button to proceed with storage switch" - }, - "storageSwitchSelectFolder": "Select SAF Folder", - "@storageSwitchSelectFolder": { - "description": "Button to select SAF folder" - }, - "storageAppStorage": "App Storage", - "@storageAppStorage": { - "description": "Label for app storage mode" - }, - "storageSafStorage": "SAF Storage", - "@storageSafStorage": { - "description": "Label for SAF storage mode" - }, - "storageModeBadge": "Storage: {mode}", - "@storageModeBadge": { - "description": "Badge showing storage mode for a track", - "placeholders": { - "mode": { - "type": "String" - } - } - }, - "storageStatsTitle": "Storage Statistics", - "@storageStatsTitle": { - "description": "Section title for storage stats" - }, - "storageStatsAppCount": "{count} tracks in App Storage", - "@storageStatsAppCount": { - "description": "Count of tracks in app storage", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storageStatsSafCount": "{count} tracks in SAF Storage", - "@storageStatsSafCount": { - "description": "Count of tracks in SAF storage", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storageModeInfo": "Your files are stored in multiple locations", - "@storageModeInfo": { - "description": "Info when user has files in both storage modes" - }, "tutorialWelcomeTitle": "Welcome to SpotiFLAC!", "@tutorialWelcomeTitle": { "description": "Tutorial welcome page title" @@ -3428,18 +2374,6 @@ "@tutorialSearchDesc": { "description": "Tutorial search page description" }, - "tutorialSearchTip1": "Paste a Spotify or Deezer URL directly in the search box", - "@tutorialSearchTip1": { - "description": "Tutorial search tip 1" - }, - "tutorialSearchTip2": "Or type the song name, artist, or album to search", - "@tutorialSearchTip2": { - "description": "Tutorial search tip 2" - }, - "tutorialSearchTip3": "Supports tracks, albums, playlists, and artist pages", - "@tutorialSearchTip3": { - "description": "Tutorial search tip 3" - }, "tutorialDownloadTitle": "Downloading Music", "@tutorialDownloadTitle": { "description": "Tutorial download page title" @@ -3448,18 +2382,6 @@ "@tutorialDownloadDesc": { "description": "Tutorial download page description" }, - "tutorialDownloadTip1": "Tap the download button next to any track to start downloading", - "@tutorialDownloadTip1": { - "description": "Tutorial download tip 1" - }, - "tutorialDownloadTip2": "Choose your preferred quality (FLAC, Hi-Res, or MP3)", - "@tutorialDownloadTip2": { - "description": "Tutorial download tip 2" - }, - "tutorialDownloadTip3": "Download entire albums or playlists with one tap", - "@tutorialDownloadTip3": { - "description": "Tutorial download tip 3" - }, "tutorialLibraryTitle": "Your Library", "@tutorialLibraryTitle": { "description": "Tutorial library page title" @@ -3524,10 +2446,6 @@ "@tutorialReadyMessage": { "description": "Tutorial completion message" }, - "tutorialExample": "EXAMPLE", - "@tutorialExample": { - "description": "Example label in tutorial" - }, "libraryForceFullScan": "Force Full Scan", "@libraryForceFullScan": { "description": "Button to force a complete rescan of library" @@ -3754,10 +2672,6 @@ "@trackReEnrich": { "description": "Menu action - re-embed metadata into audio file" }, - "trackReEnrichSubtitle": "Re-embed metadata without re-downloading", - "@trackReEnrichSubtitle": { - "description": "Subtitle for re-enrich metadata action" - }, "trackReEnrichOnlineSubtitle": "Search metadata online and embed into file", "@trackReEnrichOnlineSubtitle": { "description": "Subtitle for re-enrich metadata action for local items" @@ -3869,15 +2783,21 @@ "@trackConvertFailed": { "description": "Snackbar when conversion fails" }, - "setupModeSelectionTitle": "Elige tu modo", - "setupModeSelectionDescription": "¿Cómo te gustaría usar SpotiFLAC? Puedes cambiarlo más tarde en Ajustes.", - "setupModeDownloaderTitle": "Descargador", - "setupModeDownloaderFeature1": "Descarga pistas en calidad FLAC sin pérdida", - "setupModeDownloaderFeature2": "Guarda música en tu dispositivo para escuchar sin conexión", - "setupModeDownloaderFeature3": "Gestiona tu biblioteca de música local", - "setupModeStreamingTitle": "Streaming", - "setupModeStreamingFeature1": "Transmite pistas al instante sin descargar", - "setupModeStreamingFeature2": "Smart Queue descubre automáticamente nueva música para ti", - "setupModeStreamingFeature3": "Reproduce cualquier pista bajo demanda con controles de reproducción", - "setupModeChangeableLater": "Puedes cambiar entre modos en cualquier momento en Ajustes." -} \ No newline at end of file + "downloadedAlbumDownloadedCount": "{count} descargado", + "@downloadedAlbumDownloadedCount": { + "description": "Downloaded tracks count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Artist folders use Album Artist when available", + "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { + "description": "Subtitle when Album Artist is used for folder naming" + }, + "downloadUseAlbumArtistForFoldersTrackSubtitle": "Artist folders use Track Artist only", + "@downloadUseAlbumArtistForFoldersTrackSubtitle": { + "description": "Subtitle when Track Artist is used for folder naming" + } +} diff --git a/lib/l10n/arb/app_fr.arb b/lib/l10n/arb/app_fr.arb index d52346ef..f7e9c2d1 100644 --- a/lib/l10n/arb/app_fr.arb +++ b/lib/l10n/arb/app_fr.arb @@ -5,10 +5,6 @@ "@appName": { "description": "App name - DO NOT TRANSLATE" }, - "appDescription": "Téléchargez des pistes Spotify en qualité sans perte de Tidal, Qobuz et Amazon Music.", - "@appDescription": { - "description": "App description shown in about page" - }, "navHome": "Accueil", "@navHome": { "description": "Bottom navigation - Home tab" @@ -17,10 +13,6 @@ "@navLibrary": { "description": "Bottom navigation - Library tab" }, - "navHistory": "Historique", - "@navHistory": { - "description": "Bottom navigation - History tab (legacy)" - }, "navSettings": "Paramètres", "@navSettings": { "description": "Bottom navigation - Settings tab" @@ -33,20 +25,6 @@ "@homeTitle": { "description": "Home screen title" }, - "homeSearchHint": "Coller l'URL Spotify ou rechercher...", - "@homeSearchHint": { - "description": "Placeholder text in search box" - }, - "homeSearchHintExtension": "Rechercher avec {extensionName}...", - "@homeSearchHintExtension": { - "description": "Placeholder when extension search is active", - "placeholders": { - "extensionName": { - "type": "String", - "description": "Name of the active extension" - } - } - }, "homeSubtitle": "Coller un lien Spotify ou rechercher par nom", "@homeSubtitle": { "description": "Subtitle shown below search box" @@ -59,24 +37,6 @@ "@homeRecent": { "description": "Section header for recent searches" }, - "historyTitle": "Historique", - "@historyTitle": { - "description": "History screen title" - }, - "historyDownloading": "Téléchargement ({count})", - "@historyDownloading": { - "description": "Tab showing active downloads count", - "placeholders": { - "count": { - "type": "int", - "description": "Number of active downloads" - } - } - }, - "historyDownloaded": "Téléchargé", - "@historyDownloaded": { - "description": "Tab showing completed downloads" - }, "historyFilterAll": "Tous", "@historyFilterAll": { "description": "Filter chip - show all items" @@ -89,48 +49,6 @@ "@historyFilterSingles": { "description": "Filter chip - show singles only" }, - "historyTracksCount": "{count, plural, =1{1 track} other{{count} tracks}}", - "@historyTracksCount": { - "description": "Track count with plural form", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "historyAlbumsCount": "{count, plural, =1{1 album} other{{count} albums}}", - "@historyAlbumsCount": { - "description": "Album count with plural form", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "historyNoDownloads": "Pas d'historique de téléchargement", - "@historyNoDownloads": { - "description": "Empty state title" - }, - "historyNoDownloadsSubtitle": "Les pistes téléchargées apparaîtront ici", - "@historyNoDownloadsSubtitle": { - "description": "Empty state subtitle" - }, - "historyNoAlbums": "Pas de téléchargement d'album", - "@historyNoAlbums": { - "description": "Empty state when filtering albums" - }, - "historyNoAlbumsSubtitle": "Téléchargez plusieurs titres d'un album pour les voir ici", - "@historyNoAlbumsSubtitle": { - "description": "Empty state subtitle for albums filter" - }, - "historyNoSingles": "Pas de téléchargements uniques", - "@historyNoSingles": { - "description": "Empty state when filtering singles" - }, - "historyNoSinglesSubtitle": "Les téléchargements de pistes uniques apparaîtront ici", - "@historyNoSinglesSubtitle": { - "description": "Empty state subtitle for singles filter" - }, "historySearchHint": "Historique de recherche...", "@historySearchHint": { "description": "Search bar placeholder in history" @@ -163,34 +81,6 @@ "@downloadTitle": { "description": "Download settings page title" }, - "downloadLocation": "Télécharger Localisation", - "@downloadLocation": { - "description": "Setting for download folder" - }, - "downloadLocationSubtitle": "Choisissez où enregistrer des fichiers", - "@downloadLocationSubtitle": { - "description": "Subtitle for download location" - }, - "downloadLocationDefault": "Localisation par défaut", - "@downloadLocationDefault": { - "description": "Shown when using default folder" - }, - "downloadDefaultService": "Service par défaut", - "@downloadDefaultService": { - "description": "Setting for preferred download service (Tidal/Qobuz/Amazon)" - }, - "downloadDefaultServiceSubtitle": "Service utilisé pour les téléchargements", - "@downloadDefaultServiceSubtitle": { - "description": "Subtitle for default service" - }, - "downloadDefaultQuality": "Qualité par défaut", - "@downloadDefaultQuality": { - "description": "Setting for audio quality" - }, - "downloadAskQuality": "Demandez La Qualité Avant Le Téléchargement", - "@downloadAskQuality": { - "description": "Toggle to show quality picker" - }, "downloadAskQualitySubtitle": "Afficher le sélecteur de qualité pour chaque téléchargement", "@downloadAskQualitySubtitle": { "description": "Subtitle for ask quality toggle" @@ -203,38 +93,10 @@ "@downloadFolderOrganization": { "description": "Setting for folder structure" }, - "downloadSeparateSingles": "Titres séparés", - "@downloadSeparateSingles": { - "description": "Toggle to separate single tracks" - }, - "downloadSeparateSinglesSubtitle": "Mettre des pistes uniques dans un dossier séparé", - "@downloadSeparateSinglesSubtitle": { - "description": "Subtitle for separate singles toggle" - }, - "qualityBest": "Meilleur Disponible", - "@qualityBest": { - "description": "Audio quality option - highest available" - }, - "qualityFlac": "FLAC", - "@qualityFlac": { - "description": "Audio quality option - FLAC lossless" - }, - "quality320": "320 kbps", - "@quality320": { - "description": "Audio quality option - 320kbps MP3" - }, - "quality128": "128 kbps", - "@quality128": { - "description": "Audio quality option - 128kbps MP3" - }, "appearanceTitle": "Apparence", "@appearanceTitle": { "description": "Appearance settings page title" }, - "appearanceTheme": "Thème", - "@appearanceTheme": { - "description": "Theme mode setting" - }, "appearanceThemeSystem": "Système", "@appearanceThemeSystem": { "description": "Follow system theme" @@ -255,10 +117,6 @@ "@appearanceDynamicColorSubtitle": { "description": "Subtitle for dynamic color" }, - "appearanceAccentColor": "Couleur d'accent", - "@appearanceAccentColor": { - "description": "Custom accent color picker" - }, "appearanceHistoryView": "Historique Vue", "@appearanceHistoryView": { "description": "Layout style for history" @@ -275,10 +133,6 @@ "@optionsTitle": { "description": "Options settings page title" }, - "optionsSearchSource": "Recherche Source", - "@optionsSearchSource": { - "description": "Section for search provider settings" - }, "optionsPrimaryProvider": "Fournisseur principal", "@optionsPrimaryProvider": { "description": "Main search provider setting" @@ -438,22 +292,6 @@ "@extensionsTitle": { "description": "Extensions page title" }, - "extensionsInstalled": "Installed Extensions", - "@extensionsInstalled": { - "description": "Section header for installed extensions" - }, - "extensionsNone": "No extensions installed", - "@extensionsNone": { - "description": "Empty state title" - }, - "extensionsNoneSubtitle": "Install extensions from the Store tab", - "@extensionsNoneSubtitle": { - "description": "Empty state subtitle" - }, - "extensionsEnabled": "Enabled", - "@extensionsEnabled": { - "description": "Extension status - active" - }, "extensionsDisabled": "Disabled", "@extensionsDisabled": { "description": "Extension status - inactive" @@ -480,10 +318,6 @@ "@extensionsUninstall": { "description": "Uninstall extension button" }, - "extensionsSetAsSearch": "Défini comme fournisseur de recherche", - "@extensionsSetAsSearch": { - "description": "Use extension for search" - }, "storeTitle": "Magasin d'extension", "@storeTitle": { "description": "Store screen title" @@ -580,10 +414,6 @@ "@aboutSocial": { "description": "Section for social links" }, - "aboutSupport": "Support", - "@aboutSupport": { - "description": "Section for support/donation links" - }, "aboutApp": "App", "@aboutApp": { "description": "Section for app info" @@ -604,14 +434,6 @@ "@aboutSjdonadoDesc": { "description": "Credit description for sjdonado" }, - "aboutDoubleDouble": "DoubleDouble", - "@aboutDoubleDouble": { - "description": "Name of Amazon API service - DO NOT TRANSLATE" - }, - "aboutDoubleDoubleDesc": "Amazing API for Amazon Music downloads. Thank you for making it free!", - "@aboutDoubleDoubleDesc": { - "description": "Credit for DoubleDouble API" - }, "aboutDabMusic": "DAB Music", "@aboutDabMusic": { "description": "Name of Qobuz API service - DO NOT TRANSLATE" @@ -632,35 +454,6 @@ "@aboutAppDescription": { "description": "App description in header card" }, - "albumTitle": "Album", - "@albumTitle": { - "description": "Album screen title" - }, - "albumTracks": "{count, plural, =1{1 track} other{{count} tracks}}", - "@albumTracks": { - "description": "Album track count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "albumDownloadAll": "Download All", - "@albumDownloadAll": { - "description": "Button to download all tracks" - }, - "albumDownloadRemaining": "Download Remaining", - "@albumDownloadRemaining": { - "description": "Button to download remaining tracks" - }, - "playlistTitle": "Playlist", - "@playlistTitle": { - "description": "Playlist screen title" - }, - "artistTitle": "Artist", - "@artistTitle": { - "description": "Artist screen title" - }, "artistAlbums": "Albums", "@artistAlbums": { "description": "Section header for artist albums" @@ -673,15 +466,6 @@ "@artistCompilations": { "description": "Section header for compilations" }, - "artistReleases": "{count, plural, =1{1 release} other{{count} releases}}", - "@artistReleases": { - "description": "Artist release count", - "placeholders": { - "count": { - "type": "int" - } - } - }, "artistPopular": "Popular", "@artistPopular": { "description": "Section header for popular/top tracks" @@ -696,34 +480,6 @@ } } }, - "trackMetadataTitle": "Track Info", - "@trackMetadataTitle": { - "description": "Track metadata screen title" - }, - "trackMetadataArtist": "Artist", - "@trackMetadataArtist": { - "description": "Metadata field - artist name" - }, - "trackMetadataAlbum": "Album", - "@trackMetadataAlbum": { - "description": "Metadata field - album name" - }, - "trackMetadataDuration": "Duration", - "@trackMetadataDuration": { - "description": "Metadata field - track length" - }, - "trackMetadataQuality": "", - "@trackMetadataQuality": { - "description": "Metadata field - audio quality" - }, - "trackMetadataPath": "File Path", - "@trackMetadataPath": { - "description": "Metadata field - file location" - }, - "trackMetadataDownloadedAt": "Downloaded", - "@trackMetadataDownloadedAt": { - "description": "Metadata field - download date" - }, "trackMetadataService": "Service", "@trackMetadataService": { "description": "Metadata field - download service used" @@ -740,54 +496,10 @@ "@trackMetadataDelete": { "description": "Action button - delete track" }, - "trackMetadataRedownload": "Re-télécharger", - "@trackMetadataRedownload": { - "description": "Action button - download again" - }, - "trackMetadataOpenFolder": "Dossier ouvert", - "@trackMetadataOpenFolder": { - "description": "Action button - open containing folder" - }, - "setupTitle": "Bienvenue chez SpotiFLAC", - "@setupTitle": { - "description": "Setup wizard title" - }, - "setupSubtitle": "On va commencer", - "@setupSubtitle": { - "description": "Setup wizard subtitle" - }, - "setupStoragePermission": "Permission de stockage", - "@setupStoragePermission": { - "description": "Storage permission step title" - }, - "setupStoragePermissionSubtitle": "Requis pour enregistrer les fichiers téléchargés", - "@setupStoragePermissionSubtitle": { - "description": "Explanation for storage permission" - }, - "setupStoragePermissionGranted": "Permission accordée", - "@setupStoragePermissionGranted": { - "description": "Status when permission granted" - }, - "setupStoragePermissionDenied": "Permission refusée", - "@setupStoragePermissionDenied": { - "description": "Status when permission denied" - }, "setupGrantPermission": "Grant Permission", "@setupGrantPermission": { "description": "Button to request permission" }, - "setupDownloadLocation": "Download Location", - "@setupDownloadLocation": { - "description": "Download folder step title" - }, - "setupChooseFolder": "Choose Folder", - "@setupChooseFolder": { - "description": "Button to pick folder" - }, - "setupContinue": "Continue", - "@setupContinue": { - "description": "Continue to next step button" - }, "setupSkip": "Skip for now", "@setupSkip": { "description": "Skip current step button" @@ -796,10 +508,6 @@ "@setupStorageAccessRequired": { "description": "Title when storage access needed" }, - "setupStorageAccessMessage": "SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.", - "@setupStorageAccessMessage": { - "description": "Explanation for storage access" - }, "setupStorageAccessMessageAndroid11": "Android 11+ requires \"All files access\" permission to save files to your chosen download folder.", "@setupStorageAccessMessageAndroid11": { "description": "Android 11+ specific explanation" @@ -831,10 +539,6 @@ } } }, - "setupSelectDownloadFolder": "Select Download Folder", - "@setupSelectDownloadFolder": { - "description": "Folder selection step title" - }, "setupUseDefaultFolder": "Use Default Folder?", "@setupUseDefaultFolder": { "description": "Dialog title for default folder" @@ -883,26 +587,6 @@ "@setupDownloadInFlac": { "description": "App tagline in setup" }, - "setupStepStorage": "Storage", - "@setupStepStorage": { - "description": "Setup step indicator - storage" - }, - "setupStepNotification": "Notification", - "@setupStepNotification": { - "description": "Setup step indicator - notification" - }, - "setupStepFolder": "Folder", - "@setupStepFolder": { - "description": "Setup step indicator - folder" - }, - "setupStepSpotify": "Spotify", - "@setupStepSpotify": { - "description": "Setup step indicator - Spotify API" - }, - "setupStepPermission": "Permission", - "@setupStepPermission": { - "description": "Setup step indicator - permission" - }, "setupStorageGranted": "Storage Permission Granted!", "@setupStorageGranted": { "description": "Success message for storage permission" @@ -923,14 +607,6 @@ "@setupNotificationEnable": { "description": "Button to enable notifications" }, - "setupNotificationDescription": "Get notified when downloads complete or require attention.", - "@setupNotificationDescription": { - "description": "Explanation for notifications" - }, - "setupFolderSelected": "Dossier de téléchargement sélectionné!", - "@setupFolderSelected": { - "description": "Success message for folder selection" - }, "setupFolderChoose": "Choisissez le dossier pour télécharger", "@setupFolderChoose": { "description": "Button to choose folder" @@ -939,58 +615,14 @@ "@setupFolderDescription": { "description": "Explanation for folder selection" }, - "setupChangeFolder": "Change Folder", - "@setupChangeFolder": { - "description": "Button to change selected folder" - }, "setupSelectFolder": "Select Folder", "@setupSelectFolder": { "description": "Button to select folder" }, - "setupSpotifyApiOptional": "Spotify API (Optional)", - "@setupSpotifyApiOptional": { - "description": "Spotify API step title" - }, - "setupSpotifyApiDescription": "Add your Spotify API credentials for better search results and access to Spotify-exclusive content.", - "@setupSpotifyApiDescription": { - "description": "Explanation for Spotify API" - }, - "setupUseSpotifyApi": "Use Spotify API", - "@setupUseSpotifyApi": { - "description": "Toggle to enable Spotify API" - }, - "setupEnterCredentialsBelow": "Enter your credentials below", - "@setupEnterCredentialsBelow": { - "description": "Prompt to enter credentials" - }, - "setupUsingDeezer": "Using Deezer (no account needed)", - "@setupUsingDeezer": { - "description": "Status when using Deezer" - }, - "setupEnterClientId": "Enter Spotify Client ID", - "@setupEnterClientId": { - "description": "Placeholder for client ID field" - }, - "setupEnterClientSecret": "Enter Spotify Client Secret", - "@setupEnterClientSecret": { - "description": "Placeholder for client secret field" - }, - "setupGetFreeCredentials": "Get your free API credentials from the Spotify Developer Dashboard.", - "@setupGetFreeCredentials": { - "description": "Info about getting Spotify credentials" - }, "setupEnableNotifications": "Enable Notifications", "@setupEnableNotifications": { "description": "Button to enable notifications" }, - "setupProceedToNextStep": "You can now proceed to the next step.", - "@setupProceedToNextStep": { - "description": "Message after completing a step" - }, - "setupNotificationProgressDescription": "You will receive download progress notifications.", - "@setupNotificationProgressDescription": { - "description": "Info about notification usage" - }, "setupNotificationBackgroundDescription": "Get notified about download progress and completion. This helps you track downloads when the app is in background.", "@setupNotificationBackgroundDescription": { "description": "Detailed notification explanation" @@ -999,10 +631,6 @@ "@setupSkipForNow": { "description": "Skip button text" }, - "setupBack": "Back", - "@setupBack": { - "description": "Back button text" - }, "setupNext": "Next", "@setupNext": { "description": "Next button text" @@ -1011,26 +639,14 @@ "@setupGetStarted": { "description": "Final setup button" }, - "setupSkipAndStart": "Skip & Start", - "@setupSkipAndStart": { - "description": "Skip setup and start app" - }, "setupAllowAccessToManageFiles": "Please enable \"Allow access to manage all files\" in the next screen.", "@setupAllowAccessToManageFiles": { "description": "Instruction for file access permission" }, - "setupGetCredentialsFromSpotify": "Get credentials from developer.spotify.com", - "@setupGetCredentialsFromSpotify": { - "description": "Link text for Spotify developer portal" - }, "dialogCancel": "Cancel", "@dialogCancel": { "description": "Dialog button - cancel action" }, - "dialogOk": "OK", - "@dialogOk": { - "description": "Dialog button - confirm/acknowledge" - }, "dialogSave": "Save", "@dialogSave": { "description": "Dialog button - save changes" @@ -1043,26 +659,10 @@ "@dialogRetry": { "description": "Dialog button - retry action" }, - "dialogClose": "Close", - "@dialogClose": { - "description": "Dialog button - close dialog" - }, - "dialogYes": "Yes", - "@dialogYes": { - "description": "Dialog button - confirm yes" - }, - "dialogNo": "No", - "@dialogNo": { - "description": "Dialog button - confirm no" - }, "dialogClear": "Clear", "@dialogClear": { "description": "Dialog button - clear items" }, - "dialogConfirm": "Confirm", - "@dialogConfirm": { - "description": "Dialog button - confirm action" - }, "dialogDone": "Done", "@dialogDone": { "description": "Dialog button - action completed" @@ -1091,34 +691,10 @@ "@dialogUnsavedChanges": { "description": "Dialog message - unsaved changes" }, - "dialogDownloadFailed": "Download Failed", - "@dialogDownloadFailed": { - "description": "Dialog title - download error" - }, - "dialogTrackLabel": "Track:", - "@dialogTrackLabel": { - "description": "Label for track name in error dialog" - }, - "dialogArtistLabel": "Artist:", - "@dialogArtistLabel": { - "description": "Label for artist name in error dialog" - }, - "dialogErrorLabel": "Error:", - "@dialogErrorLabel": { - "description": "Label for error message" - }, "dialogClearAll": "Clear All", "@dialogClearAll": { "description": "Dialog title - clear all items" }, - "dialogClearAllDownloads": "Are you sure you want to clear all downloads?", - "@dialogClearAllDownloads": { - "description": "Dialog message - clear downloads confirmation" - }, - "dialogRemoveFromDevice": "Remove from device?", - "@dialogRemoveFromDevice": { - "description": "Dialog title - delete file confirmation" - }, "dialogRemoveExtension": "Remove Extension", "@dialogRemoveExtension": { "description": "Dialog title - uninstall extension" @@ -1257,15 +833,6 @@ "@snackbarViewQueue": { "description": "Snackbar action - view download queue" }, - "snackbarFailedToLoad": "Failed to load: {error}", - "@snackbarFailedToLoad": { - "description": "Snackbar - loading error", - "placeholders": { - "error": { - "type": "String" - } - } - }, "snackbarUrlCopied": "{platform} URL copied to clipboard", "@snackbarUrlCopied": { "description": "Snackbar - URL copied", @@ -1326,16 +893,6 @@ "@errorRateLimitedMessage": { "description": "Error message - rate limit explanation" }, - "errorFailedToLoad": "Failed to load {item}", - "@errorFailedToLoad": { - "description": "Error message - loading failed", - "placeholders": { - "item": { - "type": "String", - "description": "Item that failed to load (album/playlist/etc)" - } - } - }, "errorNoTracksFound": "No tracks found", "@errorNoTracksFound": { "description": "Error - search returned no results" @@ -1349,34 +906,6 @@ } } }, - "statusQueued": "Queued", - "@statusQueued": { - "description": "Download status - waiting in queue" - }, - "statusDownloading": "Downloading", - "@statusDownloading": { - "description": "Download status - in progress" - }, - "statusFinalizing": "Finalizing", - "@statusFinalizing": { - "description": "Download status - writing metadata" - }, - "statusCompleted": "Completed", - "@statusCompleted": { - "description": "Download status - finished" - }, - "statusFailed": "Failed", - "@statusFailed": { - "description": "Download status - error occurred" - }, - "statusSkipped": "Skipped", - "@statusSkipped": { - "description": "Download status - already exists" - }, - "statusPaused": "Paused", - "@statusPaused": { - "description": "Download status - paused" - }, "actionPause": "Pause", "@actionPause": { "description": "Action button - pause download" @@ -1389,14 +918,6 @@ "@actionCancel": { "description": "Action button - cancel operation" }, - "actionStop": "Stop", - "@actionStop": { - "description": "Action button - stop operation" - }, - "actionSelect": "Select", - "@actionSelect": { - "description": "Action button - enter selection mode" - }, "actionSelectAll": "Select All", "@actionSelectAll": { "description": "Action button - select all items" @@ -1405,14 +926,6 @@ "@actionDeselect": { "description": "Action button - deselect all" }, - "actionPaste": "Paste", - "@actionPaste": { - "description": "Action button - paste from clipboard" - }, - "actionImportCsv": "Import CSV", - "@actionImportCsv": { - "description": "Action button - import CSV file" - }, "actionRemoveCredentials": "Remove Credentials", "@actionRemoveCredentials": { "description": "Action button - delete Spotify credentials" @@ -1434,19 +947,6 @@ "@selectionAllSelected": { "description": "Status - all items selected" }, - "selectionTapToSelect": "Tap tracks to select", - "@selectionTapToSelect": { - "description": "Hint - how to select items" - }, - "selectionDeleteTracks": "Delete {count} {count, plural, =1{track} other{tracks}}", - "@selectionDeleteTracks": { - "description": "Delete button with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, "selectionSelectToDelete": "Select tracks to delete", "@selectionSelectToDelete": { "description": "Placeholder when nothing selected" @@ -1487,55 +987,10 @@ "@tooltipPlay": { "description": "Tooltip - play button" }, - "tooltipCancel": "Cancel", - "@tooltipCancel": { - "description": "Tooltip - cancel button" - }, - "tooltipStop": "Stop", - "@tooltipStop": { - "description": "Tooltip - stop button" - }, - "tooltipRetry": "Retry", - "@tooltipRetry": { - "description": "Tooltip - retry button" - }, - "tooltipRemove": "Remove", - "@tooltipRemove": { - "description": "Tooltip - remove button" - }, - "tooltipClear": "Clear", - "@tooltipClear": { - "description": "Tooltip - clear button" - }, - "tooltipPaste": "Paste", - "@tooltipPaste": { - "description": "Tooltip - paste button" - }, "filenameFormat": "Filename Format", "@filenameFormat": { "description": "Setting title - filename pattern" }, - "filenameFormatPreview": "Preview: {preview}", - "@filenameFormatPreview": { - "description": "Preview of filename pattern", - "placeholders": { - "preview": { - "type": "String" - } - } - }, - "filenameAvailablePlaceholders": "Available placeholders:", - "@filenameAvailablePlaceholders": { - "description": "Label for placeholder list" - }, - "filenameHint": "{artist} - {title}", - "@filenameHint": { - "description": "Default filename format hint" - }, - "folderOrganization": "Folder Organization", - "@folderOrganization": { - "description": "Setting title - folder structure" - }, "folderOrganizationNone": "No organization", "@folderOrganizationNone": { "description": "Folder option - flat structure" @@ -1576,27 +1031,10 @@ "@updateAvailable": { "description": "Update dialog title" }, - "updateNewVersion": "Version {version} is available", - "@updateNewVersion": { - "description": "Update available message", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "updateDownload": "Download", - "@updateDownload": { - "description": "Update button - download update" - }, "updateLater": "Later", "@updateLater": { "description": "Update button - dismiss" }, - "updateChangelog": "Changelog", - "@updateChangelog": { - "description": "Link to changelog" - }, "updateStartingDownload": "Starting download...", "@updateStartingDownload": { "description": "Update status - initializing" @@ -1637,14 +1075,6 @@ "@updateDontRemind": { "description": "Update button - skip this version" }, - "providerPriority": "Provider Priority", - "@providerPriority": { - "description": "Setting title - download provider order" - }, - "providerPrioritySubtitle": "Drag to reorder download providers", - "@providerPrioritySubtitle": { - "description": "Subtitle for provider priority" - }, "providerPriorityTitle": "Provider Priority", "@providerPriorityTitle": { "description": "Provider priority page title" @@ -1665,14 +1095,6 @@ "@providerExtension": { "description": "Label for extension-provided providers" }, - "metadataProviderPriority": "Metadata Provider Priority", - "@metadataProviderPriority": { - "description": "Setting title - metadata provider order" - }, - "metadataProviderPrioritySubtitle": "Order used when fetching track metadata", - "@metadataProviderPrioritySubtitle": { - "description": "Subtitle for metadata priority" - }, "metadataProviderPriorityTitle": "Metadata Priority", "@metadataProviderPriorityTitle": { "description": "Metadata priority page title" @@ -1697,22 +1119,6 @@ "@logTitle": { "description": "Logs screen title" }, - "logCopy": "Copy Logs", - "@logCopy": { - "description": "Action - copy logs to clipboard" - }, - "logClear": "Clear Logs", - "@logClear": { - "description": "Action - delete all logs" - }, - "logShare": "Share Logs", - "@logShare": { - "description": "Action - share logs file" - }, - "logEmpty": "No logs yet", - "@logEmpty": { - "description": "Empty state title" - }, "logCopied": "Logs copied to clipboard", "@logCopied": { "description": "Snackbar - logs copied" @@ -1745,22 +1151,6 @@ "@logClearLogsMessage": { "description": "Clear logs confirmation message" }, - "logIspBlocking": "ISP BLOCKING DETECTED", - "@logIspBlocking": { - "description": "Error category - ISP blocking" - }, - "logRateLimited": "RATE LIMITED", - "@logRateLimited": { - "description": "Error category - rate limiting" - }, - "logNetworkError": "NETWORK ERROR", - "@logNetworkError": { - "description": "Error category - network issues" - }, - "logTrackNotFound": "TRACK NOT FOUND", - "@logTrackNotFound": { - "description": "Error category - missing tracks" - }, "logFilterBySeverity": "Filter logs by severity", "@logFilterBySeverity": { "description": "Filter dialog title" @@ -1773,60 +1163,6 @@ "@logNoLogsYetSubtitle": { "description": "Empty state subtitle" }, - "logIssueSummary": "Issue Summary", - "@logIssueSummary": { - "description": "Section header for error summary" - }, - "logIspBlockingDescription": "Your ISP may be blocking access to download services", - "@logIspBlockingDescription": { - "description": "ISP blocking explanation" - }, - "logIspBlockingSuggestion": "Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8", - "@logIspBlockingSuggestion": { - "description": "ISP blocking fix suggestion" - }, - "logRateLimitedDescription": "Too many requests to the service", - "@logRateLimitedDescription": { - "description": "Rate limit explanation" - }, - "logRateLimitedSuggestion": "Wait a few minutes before trying again", - "@logRateLimitedSuggestion": { - "description": "Rate limit fix suggestion" - }, - "logNetworkErrorDescription": "Connection issues detected", - "@logNetworkErrorDescription": { - "description": "Network error explanation" - }, - "logNetworkErrorSuggestion": "Check your internet connection", - "@logNetworkErrorSuggestion": { - "description": "Network error fix suggestion" - }, - "logTrackNotFoundDescription": "Some tracks could not be found on download services", - "@logTrackNotFoundDescription": { - "description": "Track not found explanation" - }, - "logTrackNotFoundSuggestion": "The track may not be available in lossless quality", - "@logTrackNotFoundSuggestion": { - "description": "Track not found explanation" - }, - "logTotalErrors": "Total errors: {count}", - "@logTotalErrors": { - "description": "Error count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "logAffected": "Affected: {domains}", - "@logAffected": { - "description": "Affected domains display", - "placeholders": { - "domains": { - "type": "String" - } - } - }, "logEntriesFiltered": "Entries ({count} filtered)", "@logEntriesFiltered": { "description": "Log count with filter active", @@ -1969,10 +1305,6 @@ "@appearanceLanguage": { "description": "Language setting title" }, - "appearanceLanguageSubtitle": "Choose your preferred language", - "@appearanceLanguageSubtitle": { - "description": "Language setting subtitle" - }, "settingsAppearanceSubtitle": "Theme, colors, display", "@settingsAppearanceSubtitle": { "description": "Appearance settings description" @@ -2001,10 +1333,6 @@ "@pressBackAgainToExit": { "description": "Exit confirmation message" }, - "tracksHeader": "Tracks", - "@tracksHeader": { - "description": "Section header for track list" - }, "downloadAllCount": "Download All ({count})", "@downloadAllCount": { "description": "Download all button with count", @@ -2151,15 +1479,6 @@ "@trackDeleteConfirmMessage": { "description": "Delete confirmation message" }, - "trackCannotOpen": "Cannot open: {message}", - "@trackCannotOpen": { - "description": "Error opening file", - "placeholders": { - "message": { - "type": "String" - } - } - }, "dateToday": "Today", "@dateToday": { "description": "Relative date - today" @@ -2195,22 +1514,6 @@ } } }, - "concurrentSequential": "Sequential", - "@concurrentSequential": { - "description": "Download mode - one at a time" - }, - "concurrentParallel2": "2 Parallel", - "@concurrentParallel2": { - "description": "Download mode - 2 simultaneous" - }, - "concurrentParallel3": "3 Parallel", - "@concurrentParallel3": { - "description": "Download mode - 3 simultaneous" - }, - "tapToSeeError": "Tap to see error details", - "@tapToSeeError": { - "description": "Tooltip for failed download" - }, "storeFilterAll": "All", "@storeFilterAll": { "description": "Store filter - all extensions" @@ -2239,18 +1542,6 @@ "@storeClearFilters": { "description": "Button to clear all filters" }, - "storeNoResults": "No extensions found", - "@storeNoResults": { - "description": "Empty state when no extensions match filters" - }, - "extensionProviderPriority": "Provider Priority", - "@extensionProviderPriority": { - "description": "Extension capability - provider priority" - }, - "extensionInstallButton": "Install Extension", - "@extensionInstallButton": { - "description": "Button to install extension" - }, "extensionDefaultProvider": "Default (Deezer/Spotify)", "@extensionDefaultProvider": { "description": "Default search provider option" @@ -2450,46 +1741,6 @@ "@qualityHiResFlacMaxSubtitle": { "description": "Technical spec for hi-res max" }, - "qualityLossy": "Lossy", - "@qualityLossy": { - "description": "Quality option - lossy format (MP3/Opus)" - }, - "qualityLossyMp3Subtitle": "MP3 320kbps (converted from FLAC)", - "@qualityLossyMp3Subtitle": { - "description": "Technical spec for lossy MP3" - }, - "qualityLossyOpusSubtitle": "Opus 128kbps (converted from FLAC)", - "@qualityLossyOpusSubtitle": { - "description": "Technical spec for lossy Opus" - }, - "enableLossyOption": "Enable Lossy Option", - "@enableLossyOption": { - "description": "Setting - enable lossy quality option" - }, - "enableLossyOptionSubtitleOn": "Lossy quality option is available", - "@enableLossyOptionSubtitleOn": { - "description": "Subtitle when lossy is enabled" - }, - "enableLossyOptionSubtitleOff": "Downloads FLAC then converts to lossy format", - "@enableLossyOptionSubtitleOff": { - "description": "Subtitle when lossy is disabled" - }, - "lossyFormat": "Lossy Format", - "@lossyFormat": { - "description": "Setting - choose lossy format" - }, - "lossyFormatDescription": "Choose the lossy format for conversion", - "@lossyFormatDescription": { - "description": "Description for lossy format picker" - }, - "lossyFormatMp3Subtitle": "320kbps, best compatibility", - "@lossyFormatMp3Subtitle": { - "description": "MP3 format description" - }, - "lossyFormatOpusSubtitle": "128kbps, better quality at smaller size", - "@lossyFormatOpusSubtitle": { - "description": "Opus format description" - }, "qualityNote": "Actual quality depends on track availability from the service", "@qualityNote": { "description": "Note about quality availability" @@ -2518,14 +1769,6 @@ "@downloadUseAlbumArtistForFolders": { "description": "Setting - choose whether artist folders use Album Artist or Track Artist" }, - "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Artist folders use Album Artist when available", - "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { - "description": "Subtitle when Album Artist is used for folder naming" - }, - "downloadUseAlbumArtistForFoldersTrackSubtitle": "Artist folders use Track Artist only", - "@downloadUseAlbumArtistForFoldersTrackSubtitle": { - "description": "Subtitle when Track Artist is used for folder naming" - }, "downloadUsePrimaryArtistOnly": "Primary artist only for folders", "@downloadUsePrimaryArtistOnly": { "description": "Setting - strip featured artists from folder name" @@ -2538,14 +1781,6 @@ "@downloadUsePrimaryArtistOnlyDisabled": { "description": "Subtitle when primary artist only is disabled" }, - "downloadSaveFormat": "Save Format", - "@downloadSaveFormat": { - "description": "Setting - output file format" - }, - "downloadSelectService": "Select Service", - "@downloadSelectService": { - "description": "Dialog title - choose download service" - }, "downloadSelectQuality": "Select Quality", "@downloadSelectQuality": { "description": "Dialog title - choose audio quality" @@ -2554,66 +1789,6 @@ "@downloadFrom": { "description": "Label - download source" }, - "downloadDefaultQualityLabel": "Default Quality", - "@downloadDefaultQualityLabel": { - "description": "Label - default quality setting" - }, - "downloadBestAvailable": "Best available", - "@downloadBestAvailable": { - "description": "Quality option - highest available" - }, - "folderNone": "None", - "@folderNone": { - "description": "Folder option - no organization" - }, - "folderNoneSubtitle": "Save all files directly to download folder", - "@folderNoneSubtitle": { - "description": "Subtitle for no folder organization" - }, - "folderArtist": "Artist", - "@folderArtist": { - "description": "Folder option - by artist" - }, - "folderArtistSubtitle": "Artist Name/filename", - "@folderArtistSubtitle": { - "description": "Folder structure example" - }, - "folderAlbum": "Album", - "@folderAlbum": { - "description": "Folder option - by album" - }, - "folderAlbumSubtitle": "Album Name/filename", - "@folderAlbumSubtitle": { - "description": "Folder structure example" - }, - "folderArtistAlbum": "Artist/Album", - "@folderArtistAlbum": { - "description": "Folder option - nested" - }, - "folderArtistAlbumSubtitle": "Artist Name/Album Name/filename", - "@folderArtistAlbumSubtitle": { - "description": "Folder structure example" - }, - "serviceTidal": "Tidal", - "@serviceTidal": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceQobuz": "Qobuz", - "@serviceQobuz": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceAmazon": "Amazon", - "@serviceAmazon": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceDeezer": "Deezer", - "@serviceDeezer": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceSpotify": "Spotify", - "@serviceSpotify": { - "description": "Service name - DO NOT TRANSLATE" - }, "appearanceAmoledDark": "AMOLED Dark", "@appearanceAmoledDark": { "description": "Theme option - pure black" @@ -2622,18 +1797,6 @@ "@appearanceAmoledDarkSubtitle": { "description": "Subtitle for AMOLED dark" }, - "appearanceChooseAccentColor": "Choose Accent Color", - "@appearanceChooseAccentColor": { - "description": "Color picker dialog title" - }, - "appearanceChooseTheme": "Theme Mode", - "@appearanceChooseTheme": { - "description": "Theme picker dialog title" - }, - "queueTitle": "Download Queue", - "@queueTitle": { - "description": "Queue screen title" - }, "queueClearAll": "Clear All", "@queueClearAll": { "description": "Button - clear all queue items" @@ -2642,22 +1805,6 @@ "@queueClearAllMessage": { "description": "Clear queue confirmation" }, - "queueExportFailed": "Export", - "@queueExportFailed": { - "description": "Button - export failed downloads to TXT" - }, - "queueExportFailedSuccess": "Failed downloads exported to TXT file", - "@queueExportFailedSuccess": { - "description": "Success message after exporting failed downloads" - }, - "queueExportFailedClear": "Clear Failed", - "@queueExportFailedClear": { - "description": "Action to clear failed downloads after export" - }, - "queueExportFailedError": "Failed to export downloads", - "@queueExportFailedError": { - "description": "Error message when export fails" - }, "settingsAutoExportFailed": "Auto-export failed downloads", "@settingsAutoExportFailed": { "description": "Setting toggle for auto-export" @@ -2682,38 +1829,6 @@ "@settingsDownloadNetworkSubtitle": { "description": "Subtitle explaining network preference" }, - "queueEmpty": "No downloads in queue", - "@queueEmpty": { - "description": "Empty queue state title" - }, - "queueEmptySubtitle": "Add tracks from the home screen", - "@queueEmptySubtitle": { - "description": "Empty queue state subtitle" - }, - "queueClearCompleted": "Clear completed", - "@queueClearCompleted": { - "description": "Button - clear finished downloads" - }, - "queueDownloadFailed": "Download Failed", - "@queueDownloadFailed": { - "description": "Error dialog title" - }, - "queueTrackLabel": "Track:", - "@queueTrackLabel": { - "description": "Label in error dialog" - }, - "queueArtistLabel": "Artist:", - "@queueArtistLabel": { - "description": "Label in error dialog" - }, - "queueErrorLabel": "Error:", - "@queueErrorLabel": { - "description": "Label in error dialog" - }, - "queueUnknownError": "Unknown error", - "@queueUnknownError": { - "description": "Fallback error message" - }, "albumFolderArtistAlbum": "Artist / Album", "@albumFolderArtistAlbum": { "description": "Album folder option" @@ -2767,19 +1882,6 @@ } } }, - "downloadedAlbumTracksHeader": "Tracks", - "@downloadedAlbumTracksHeader": { - "description": "Section header for tracks" - }, - "downloadedAlbumDownloadedCount": "{count} downloaded", - "@downloadedAlbumDownloadedCount": { - "description": "Downloaded tracks count badge", - "placeholders": { - "count": { - "type": "int" - } - } - }, "downloadedAlbumSelectedCount": "{count} selected", "@downloadedAlbumSelectedCount": { "description": "Selection count indicator", @@ -2820,10 +1922,6 @@ } } }, - "utilityFunctions": "Utility Functions", - "@utilityFunctions": { - "description": "Extension capability - utility functions" - }, "recentTypeArtist": "Artist", "@recentTypeArtist": { "description": "Recent access item type - artist" @@ -2858,16 +1956,6 @@ } } }, - "errorGeneric": "Error: {message}", - "@errorGeneric": { - "description": "Generic error message format", - "placeholders": { - "message": { - "type": "String", - "description": "Error message" - } - } - }, "discographyDownload": "Download Discography", "@discographyDownload": { "description": "Button - download artist discography" @@ -3034,10 +2122,6 @@ "@libraryTitle": { "description": "Library settings page title" }, - "libraryStatus": "Library Status", - "@libraryStatus": { - "description": "Section header for library status" - }, "libraryScanSettings": "Scan Settings", "@libraryScanSettings": { "description": "Section header for scan settings" @@ -3114,15 +2198,6 @@ "@libraryAboutDescription": { "description": "Description of local library feature" }, - "libraryTracksCount": "{count} tracks", - "@libraryTracksCount": { - "description": "Track count in library", - "placeholders": { - "count": { - "type": "int" - } - } - }, "libraryLastScanned": "Last scanned: {time}", "@libraryLastScanned": { "description": "Last scan time display", @@ -3237,26 +2312,6 @@ "@libraryFilterFormat": { "description": "Filter section - file format" }, - "libraryFilterDate": "Date Added", - "@libraryFilterDate": { - "description": "Filter section - date range" - }, - "libraryFilterDateToday": "Today", - "@libraryFilterDateToday": { - "description": "Filter option - today only" - }, - "libraryFilterDateWeek": "This Week", - "@libraryFilterDateWeek": { - "description": "Filter option - this week" - }, - "libraryFilterDateMonth": "This Month", - "@libraryFilterDateMonth": { - "description": "Filter option - this month" - }, - "libraryFilterDateYear": "This Year", - "@libraryFilterDateYear": { - "description": "Filter option - this year" - }, "libraryFilterSort": "Sort", "@libraryFilterSort": { "description": "Filter section - sort order" @@ -3269,15 +2324,6 @@ "@libraryFilterSortOldest": { "description": "Sort option - oldest first" }, - "libraryFilterActive": "{count} filter(s) active", - "@libraryFilterActive": { - "description": "Badge showing number of active filters", - "placeholders": { - "count": { - "type": "int" - } - } - }, "timeJustNow": "Just now", "@timeJustNow": { "description": "Relative time - less than a minute ago" @@ -3300,106 +2346,6 @@ } } }, - "storageSwitchTitle": "Switch Storage Mode", - "@storageSwitchTitle": { - "description": "Dialog title when switching storage mode" - }, - "storageSwitchToSafTitle": "Switch to SAF Storage?", - "@storageSwitchToSafTitle": { - "description": "Dialog title when switching to SAF" - }, - "storageSwitchToAppTitle": "Switch to App Storage?", - "@storageSwitchToAppTitle": { - "description": "Dialog title when switching to app storage" - }, - "storageSwitchToSafMessage": "Your existing downloads will remain in the current location and stay accessible.\n\nNew downloads will be saved to your selected SAF folder.", - "@storageSwitchToSafMessage": { - "description": "Explanation when switching to SAF" - }, - "storageSwitchToAppMessage": "Your existing downloads will remain in the current SAF location and stay accessible.\n\nNew downloads will be saved to Music/SpotiFLAC folder.", - "@storageSwitchToAppMessage": { - "description": "Explanation when switching to app storage" - }, - "storageSwitchExistingDownloads": "Existing Downloads", - "@storageSwitchExistingDownloads": { - "description": "Section header for existing downloads info" - }, - "storageSwitchExistingDownloadsInfo": "{count} tracks in {mode} storage", - "@storageSwitchExistingDownloadsInfo": { - "description": "Info about existing downloads count", - "placeholders": { - "count": { - "type": "int" - }, - "mode": { - "type": "String" - } - } - }, - "storageSwitchNewDownloads": "New Downloads", - "@storageSwitchNewDownloads": { - "description": "Section header for new downloads info" - }, - "storageSwitchNewDownloadsLocation": "Will be saved to: {location}", - "@storageSwitchNewDownloadsLocation": { - "description": "Shows where new downloads will go", - "placeholders": { - "location": { - "type": "String" - } - } - }, - "storageSwitchContinue": "Continue", - "@storageSwitchContinue": { - "description": "Button to proceed with storage switch" - }, - "storageSwitchSelectFolder": "Select SAF Folder", - "@storageSwitchSelectFolder": { - "description": "Button to select SAF folder" - }, - "storageAppStorage": "App Storage", - "@storageAppStorage": { - "description": "Label for app storage mode" - }, - "storageSafStorage": "SAF Storage", - "@storageSafStorage": { - "description": "Label for SAF storage mode" - }, - "storageModeBadge": "Storage: {mode}", - "@storageModeBadge": { - "description": "Badge showing storage mode for a track", - "placeholders": { - "mode": { - "type": "String" - } - } - }, - "storageStatsTitle": "Storage Statistics", - "@storageStatsTitle": { - "description": "Section title for storage stats" - }, - "storageStatsAppCount": "{count} tracks in App Storage", - "@storageStatsAppCount": { - "description": "Count of tracks in app storage", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storageStatsSafCount": "{count} tracks in SAF Storage", - "@storageStatsSafCount": { - "description": "Count of tracks in SAF storage", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storageModeInfo": "Your files are stored in multiple locations", - "@storageModeInfo": { - "description": "Info when user has files in both storage modes" - }, "tutorialWelcomeTitle": "Welcome to SpotiFLAC!", "@tutorialWelcomeTitle": { "description": "Tutorial welcome page title" @@ -3428,18 +2374,6 @@ "@tutorialSearchDesc": { "description": "Tutorial search page description" }, - "tutorialSearchTip1": "Paste a Spotify or Deezer URL directly in the search box", - "@tutorialSearchTip1": { - "description": "Tutorial search tip 1" - }, - "tutorialSearchTip2": "Or type the song name, artist, or album to search", - "@tutorialSearchTip2": { - "description": "Tutorial search tip 2" - }, - "tutorialSearchTip3": "Supports tracks, albums, playlists, and artist pages", - "@tutorialSearchTip3": { - "description": "Tutorial search tip 3" - }, "tutorialDownloadTitle": "Downloading Music", "@tutorialDownloadTitle": { "description": "Tutorial download page title" @@ -3448,18 +2382,6 @@ "@tutorialDownloadDesc": { "description": "Tutorial download page description" }, - "tutorialDownloadTip1": "Tap the download button next to any track to start downloading", - "@tutorialDownloadTip1": { - "description": "Tutorial download tip 1" - }, - "tutorialDownloadTip2": "Choose your preferred quality (FLAC, Hi-Res, or MP3)", - "@tutorialDownloadTip2": { - "description": "Tutorial download tip 2" - }, - "tutorialDownloadTip3": "Download entire albums or playlists with one tap", - "@tutorialDownloadTip3": { - "description": "Tutorial download tip 3" - }, "tutorialLibraryTitle": "Your Library", "@tutorialLibraryTitle": { "description": "Tutorial library page title" @@ -3524,10 +2446,6 @@ "@tutorialReadyMessage": { "description": "Tutorial completion message" }, - "tutorialExample": "EXAMPLE", - "@tutorialExample": { - "description": "Example label in tutorial" - }, "libraryForceFullScan": "Force Full Scan", "@libraryForceFullScan": { "description": "Button to force a complete rescan of library" @@ -3754,10 +2672,6 @@ "@trackReEnrich": { "description": "Menu action - re-embed metadata into audio file" }, - "trackReEnrichSubtitle": "Re-embed metadata without re-downloading", - "@trackReEnrichSubtitle": { - "description": "Subtitle for re-enrich metadata action" - }, "trackReEnrichOnlineSubtitle": "Search metadata online and embed into file", "@trackReEnrichOnlineSubtitle": { "description": "Subtitle for re-enrich metadata action for local items" @@ -3869,15 +2783,21 @@ "@trackConvertFailed": { "description": "Snackbar when conversion fails" }, - "setupModeSelectionTitle": "Choisissez votre mode", - "setupModeSelectionDescription": "Comment souhaitez-vous utiliser SpotiFLAC ? Vous pouvez toujours changer cela plus tard dans les Paramètres.", - "setupModeDownloaderTitle": "Téléchargeur", - "setupModeDownloaderFeature1": "Téléchargez des pistes en qualité FLAC sans perte", - "setupModeDownloaderFeature2": "Enregistrez de la musique sur votre appareil pour une écoute hors ligne", - "setupModeDownloaderFeature3": "Gérez votre bibliothèque musicale locale", - "setupModeStreamingTitle": "Streaming", - "setupModeStreamingFeature1": "Diffusez des pistes instantanément sans télécharger", - "setupModeStreamingFeature2": "Smart Queue découvre automatiquement de nouvelle musique pour vous", - "setupModeStreamingFeature3": "Écoutez n'importe quelle piste à la demande avec les contrôles de lecture", - "setupModeChangeableLater": "Vous pouvez changer de mode à tout moment dans les Paramètres." -} \ No newline at end of file + "downloadedAlbumDownloadedCount": "{count} downloaded", + "@downloadedAlbumDownloadedCount": { + "description": "Downloaded tracks count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Artist folders use Album Artist when available", + "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { + "description": "Subtitle when Album Artist is used for folder naming" + }, + "downloadUseAlbumArtistForFoldersTrackSubtitle": "Artist folders use Track Artist only", + "@downloadUseAlbumArtistForFoldersTrackSubtitle": { + "description": "Subtitle when Track Artist is used for folder naming" + } +} diff --git a/lib/l10n/arb/app_hi.arb b/lib/l10n/arb/app_hi.arb index e57da31b..064202f2 100644 --- a/lib/l10n/arb/app_hi.arb +++ b/lib/l10n/arb/app_hi.arb @@ -5,10 +5,6 @@ "@appName": { "description": "App name - DO NOT TRANSLATE" }, - "appDescription": "स्पॉटीफाई ट्रैक डाउनलोड करें टाइडल, क्वाबज एवं एवं अमेजन म्यूजिक से उच्चतम क्वालिटी में।", - "@appDescription": { - "description": "App description shown in about page" - }, "navHome": "होम", "@navHome": { "description": "Bottom navigation - Home tab" @@ -17,10 +13,6 @@ "@navLibrary": { "description": "Bottom navigation - Library tab" }, - "navHistory": "इतिहास", - "@navHistory": { - "description": "Bottom navigation - History tab (legacy)" - }, "navSettings": "विकल्प", "@navSettings": { "description": "Bottom navigation - Settings tab" @@ -33,20 +25,6 @@ "@homeTitle": { "description": "Home screen title" }, - "homeSearchHint": "Paste Spotify URL or search...", - "@homeSearchHint": { - "description": "Placeholder text in search box" - }, - "homeSearchHintExtension": "Search with {extensionName}...", - "@homeSearchHintExtension": { - "description": "Placeholder when extension search is active", - "placeholders": { - "extensionName": { - "type": "String", - "description": "Name of the active extension" - } - } - }, "homeSubtitle": "Paste a Spotify link or search by name", "@homeSubtitle": { "description": "Subtitle shown below search box" @@ -59,24 +37,6 @@ "@homeRecent": { "description": "Section header for recent searches" }, - "historyTitle": "History", - "@historyTitle": { - "description": "History screen title" - }, - "historyDownloading": "Downloading ({count})", - "@historyDownloading": { - "description": "Tab showing active downloads count", - "placeholders": { - "count": { - "type": "int", - "description": "Number of active downloads" - } - } - }, - "historyDownloaded": "Downloaded", - "@historyDownloaded": { - "description": "Tab showing completed downloads" - }, "historyFilterAll": "All", "@historyFilterAll": { "description": "Filter chip - show all items" @@ -89,48 +49,6 @@ "@historyFilterSingles": { "description": "Filter chip - show singles only" }, - "historyTracksCount": "{count, plural, =1{1 track} other{{count} tracks}}", - "@historyTracksCount": { - "description": "Track count with plural form", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "historyAlbumsCount": "{count, plural, =1{1 album} other{{count} albums}}", - "@historyAlbumsCount": { - "description": "Album count with plural form", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "historyNoDownloads": "No download history", - "@historyNoDownloads": { - "description": "Empty state title" - }, - "historyNoDownloadsSubtitle": "Downloaded tracks will appear here", - "@historyNoDownloadsSubtitle": { - "description": "Empty state subtitle" - }, - "historyNoAlbums": "No album downloads", - "@historyNoAlbums": { - "description": "Empty state when filtering albums" - }, - "historyNoAlbumsSubtitle": "Download multiple tracks from an album to see them here", - "@historyNoAlbumsSubtitle": { - "description": "Empty state subtitle for albums filter" - }, - "historyNoSingles": "No single downloads", - "@historyNoSingles": { - "description": "Empty state when filtering singles" - }, - "historyNoSinglesSubtitle": "Single track downloads will appear here", - "@historyNoSinglesSubtitle": { - "description": "Empty state subtitle for singles filter" - }, "historySearchHint": "Search history...", "@historySearchHint": { "description": "Search bar placeholder in history" @@ -163,34 +81,6 @@ "@downloadTitle": { "description": "Download settings page title" }, - "downloadLocation": "Download Location", - "@downloadLocation": { - "description": "Setting for download folder" - }, - "downloadLocationSubtitle": "Choose where to save files", - "@downloadLocationSubtitle": { - "description": "Subtitle for download location" - }, - "downloadLocationDefault": "Default location", - "@downloadLocationDefault": { - "description": "Shown when using default folder" - }, - "downloadDefaultService": "Default Service", - "@downloadDefaultService": { - "description": "Setting for preferred download service (Tidal/Qobuz/Amazon)" - }, - "downloadDefaultServiceSubtitle": "Service used for downloads", - "@downloadDefaultServiceSubtitle": { - "description": "Subtitle for default service" - }, - "downloadDefaultQuality": "Default Quality", - "@downloadDefaultQuality": { - "description": "Setting for audio quality" - }, - "downloadAskQuality": "Ask Quality Before Download", - "@downloadAskQuality": { - "description": "Toggle to show quality picker" - }, "downloadAskQualitySubtitle": "Show quality picker for each download", "@downloadAskQualitySubtitle": { "description": "Subtitle for ask quality toggle" @@ -203,38 +93,10 @@ "@downloadFolderOrganization": { "description": "Setting for folder structure" }, - "downloadSeparateSingles": "Separate Singles", - "@downloadSeparateSingles": { - "description": "Toggle to separate single tracks" - }, - "downloadSeparateSinglesSubtitle": "Put single tracks in a separate folder", - "@downloadSeparateSinglesSubtitle": { - "description": "Subtitle for separate singles toggle" - }, - "qualityBest": "Best Available", - "@qualityBest": { - "description": "Audio quality option - highest available" - }, - "qualityFlac": "FLAC", - "@qualityFlac": { - "description": "Audio quality option - FLAC lossless" - }, - "quality320": "320 kbps", - "@quality320": { - "description": "Audio quality option - 320kbps MP3" - }, - "quality128": "128 kbps", - "@quality128": { - "description": "Audio quality option - 128kbps MP3" - }, "appearanceTitle": "दिखावट", "@appearanceTitle": { "description": "Appearance settings page title" }, - "appearanceTheme": "Theme", - "@appearanceTheme": { - "description": "Theme mode setting" - }, "appearanceThemeSystem": "System", "@appearanceThemeSystem": { "description": "Follow system theme" @@ -255,10 +117,6 @@ "@appearanceDynamicColorSubtitle": { "description": "Subtitle for dynamic color" }, - "appearanceAccentColor": "Accent Color", - "@appearanceAccentColor": { - "description": "Custom accent color picker" - }, "appearanceHistoryView": "History View", "@appearanceHistoryView": { "description": "Layout style for history" @@ -275,10 +133,6 @@ "@optionsTitle": { "description": "Options settings page title" }, - "optionsSearchSource": "Search Source", - "@optionsSearchSource": { - "description": "Section for search provider settings" - }, "optionsPrimaryProvider": "Primary Provider", "@optionsPrimaryProvider": { "description": "Main search provider setting" @@ -438,22 +292,6 @@ "@extensionsTitle": { "description": "Extensions page title" }, - "extensionsInstalled": "Installed Extensions", - "@extensionsInstalled": { - "description": "Section header for installed extensions" - }, - "extensionsNone": "No extensions installed", - "@extensionsNone": { - "description": "Empty state title" - }, - "extensionsNoneSubtitle": "Install extensions from the Store tab", - "@extensionsNoneSubtitle": { - "description": "Empty state subtitle" - }, - "extensionsEnabled": "Enabled", - "@extensionsEnabled": { - "description": "Extension status - active" - }, "extensionsDisabled": "Disabled", "@extensionsDisabled": { "description": "Extension status - inactive" @@ -480,10 +318,6 @@ "@extensionsUninstall": { "description": "Uninstall extension button" }, - "extensionsSetAsSearch": "Set as Search Provider", - "@extensionsSetAsSearch": { - "description": "Use extension for search" - }, "storeTitle": "Extension Store", "@storeTitle": { "description": "Store screen title" @@ -580,10 +414,6 @@ "@aboutSocial": { "description": "Section for social links" }, - "aboutSupport": "Support", - "@aboutSupport": { - "description": "Section for support/donation links" - }, "aboutApp": "App", "@aboutApp": { "description": "Section for app info" @@ -604,14 +434,6 @@ "@aboutSjdonadoDesc": { "description": "Credit description for sjdonado" }, - "aboutDoubleDouble": "DoubleDouble", - "@aboutDoubleDouble": { - "description": "Name of Amazon API service - DO NOT TRANSLATE" - }, - "aboutDoubleDoubleDesc": "Amazing API for Amazon Music downloads. Thank you for making it free!", - "@aboutDoubleDoubleDesc": { - "description": "Credit for DoubleDouble API" - }, "aboutDabMusic": "DAB Music", "@aboutDabMusic": { "description": "Name of Qobuz API service - DO NOT TRANSLATE" @@ -632,35 +454,6 @@ "@aboutAppDescription": { "description": "App description in header card" }, - "albumTitle": "Album", - "@albumTitle": { - "description": "Album screen title" - }, - "albumTracks": "{count, plural, =1{1 track} other{{count} tracks}}", - "@albumTracks": { - "description": "Album track count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "albumDownloadAll": "Download All", - "@albumDownloadAll": { - "description": "Button to download all tracks" - }, - "albumDownloadRemaining": "Download Remaining", - "@albumDownloadRemaining": { - "description": "Button to download remaining tracks" - }, - "playlistTitle": "Playlist", - "@playlistTitle": { - "description": "Playlist screen title" - }, - "artistTitle": "Artist", - "@artistTitle": { - "description": "Artist screen title" - }, "artistAlbums": "Albums", "@artistAlbums": { "description": "Section header for artist albums" @@ -673,15 +466,6 @@ "@artistCompilations": { "description": "Section header for compilations" }, - "artistReleases": "{count, plural, =1{1 release} other{{count} releases}}", - "@artistReleases": { - "description": "Artist release count", - "placeholders": { - "count": { - "type": "int" - } - } - }, "artistPopular": "Popular", "@artistPopular": { "description": "Section header for popular/top tracks" @@ -696,34 +480,6 @@ } } }, - "trackMetadataTitle": "Track Info", - "@trackMetadataTitle": { - "description": "Track metadata screen title" - }, - "trackMetadataArtist": "Artist", - "@trackMetadataArtist": { - "description": "Metadata field - artist name" - }, - "trackMetadataAlbum": "Album", - "@trackMetadataAlbum": { - "description": "Metadata field - album name" - }, - "trackMetadataDuration": "Duration", - "@trackMetadataDuration": { - "description": "Metadata field - track length" - }, - "trackMetadataQuality": "Quality", - "@trackMetadataQuality": { - "description": "Metadata field - audio quality" - }, - "trackMetadataPath": "File Path", - "@trackMetadataPath": { - "description": "Metadata field - file location" - }, - "trackMetadataDownloadedAt": "Downloaded", - "@trackMetadataDownloadedAt": { - "description": "Metadata field - download date" - }, "trackMetadataService": "Service", "@trackMetadataService": { "description": "Metadata field - download service used" @@ -740,54 +496,10 @@ "@trackMetadataDelete": { "description": "Action button - delete track" }, - "trackMetadataRedownload": "Re-download", - "@trackMetadataRedownload": { - "description": "Action button - download again" - }, - "trackMetadataOpenFolder": "Open Folder", - "@trackMetadataOpenFolder": { - "description": "Action button - open containing folder" - }, - "setupTitle": "Welcome to SpotiFLAC", - "@setupTitle": { - "description": "Setup wizard title" - }, - "setupSubtitle": "Let's get you started", - "@setupSubtitle": { - "description": "Setup wizard subtitle" - }, - "setupStoragePermission": "Storage Permission", - "@setupStoragePermission": { - "description": "Storage permission step title" - }, - "setupStoragePermissionSubtitle": "Required to save downloaded files", - "@setupStoragePermissionSubtitle": { - "description": "Explanation for storage permission" - }, - "setupStoragePermissionGranted": "Permission granted", - "@setupStoragePermissionGranted": { - "description": "Status when permission granted" - }, - "setupStoragePermissionDenied": "Permission denied", - "@setupStoragePermissionDenied": { - "description": "Status when permission denied" - }, "setupGrantPermission": "Grant Permission", "@setupGrantPermission": { "description": "Button to request permission" }, - "setupDownloadLocation": "Download Location", - "@setupDownloadLocation": { - "description": "Download folder step title" - }, - "setupChooseFolder": "Choose Folder", - "@setupChooseFolder": { - "description": "Button to pick folder" - }, - "setupContinue": "Continue", - "@setupContinue": { - "description": "Continue to next step button" - }, "setupSkip": "Skip for now", "@setupSkip": { "description": "Skip current step button" @@ -796,10 +508,6 @@ "@setupStorageAccessRequired": { "description": "Title when storage access needed" }, - "setupStorageAccessMessage": "SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.", - "@setupStorageAccessMessage": { - "description": "Explanation for storage access" - }, "setupStorageAccessMessageAndroid11": "Android 11+ requires \"All files access\" permission to save files to your chosen download folder.", "@setupStorageAccessMessageAndroid11": { "description": "Android 11+ specific explanation" @@ -831,10 +539,6 @@ } } }, - "setupSelectDownloadFolder": "Select Download Folder", - "@setupSelectDownloadFolder": { - "description": "Folder selection step title" - }, "setupUseDefaultFolder": "Use Default Folder?", "@setupUseDefaultFolder": { "description": "Dialog title for default folder" @@ -883,26 +587,6 @@ "@setupDownloadInFlac": { "description": "App tagline in setup" }, - "setupStepStorage": "Storage", - "@setupStepStorage": { - "description": "Setup step indicator - storage" - }, - "setupStepNotification": "Notification", - "@setupStepNotification": { - "description": "Setup step indicator - notification" - }, - "setupStepFolder": "Folder", - "@setupStepFolder": { - "description": "Setup step indicator - folder" - }, - "setupStepSpotify": "Spotify", - "@setupStepSpotify": { - "description": "Setup step indicator - Spotify API" - }, - "setupStepPermission": "Permission", - "@setupStepPermission": { - "description": "Setup step indicator - permission" - }, "setupStorageGranted": "Storage Permission Granted!", "@setupStorageGranted": { "description": "Success message for storage permission" @@ -923,14 +607,6 @@ "@setupNotificationEnable": { "description": "Button to enable notifications" }, - "setupNotificationDescription": "Get notified when downloads complete or require attention.", - "@setupNotificationDescription": { - "description": "Explanation for notifications" - }, - "setupFolderSelected": "Download Folder Selected!", - "@setupFolderSelected": { - "description": "Success message for folder selection" - }, "setupFolderChoose": "Choose Download Folder", "@setupFolderChoose": { "description": "Button to choose folder" @@ -939,58 +615,14 @@ "@setupFolderDescription": { "description": "Explanation for folder selection" }, - "setupChangeFolder": "Change Folder", - "@setupChangeFolder": { - "description": "Button to change selected folder" - }, "setupSelectFolder": "Select Folder", "@setupSelectFolder": { "description": "Button to select folder" }, - "setupSpotifyApiOptional": "Spotify API (Optional)", - "@setupSpotifyApiOptional": { - "description": "Spotify API step title" - }, - "setupSpotifyApiDescription": "Add your Spotify API credentials for better search results and access to Spotify-exclusive content.", - "@setupSpotifyApiDescription": { - "description": "Explanation for Spotify API" - }, - "setupUseSpotifyApi": "Use Spotify API", - "@setupUseSpotifyApi": { - "description": "Toggle to enable Spotify API" - }, - "setupEnterCredentialsBelow": "Enter your credentials below", - "@setupEnterCredentialsBelow": { - "description": "Prompt to enter credentials" - }, - "setupUsingDeezer": "Using Deezer (no account needed)", - "@setupUsingDeezer": { - "description": "Status when using Deezer" - }, - "setupEnterClientId": "Enter Spotify Client ID", - "@setupEnterClientId": { - "description": "Placeholder for client ID field" - }, - "setupEnterClientSecret": "Enter Spotify Client Secret", - "@setupEnterClientSecret": { - "description": "Placeholder for client secret field" - }, - "setupGetFreeCredentials": "Get your free API credentials from the Spotify Developer Dashboard.", - "@setupGetFreeCredentials": { - "description": "Info about getting Spotify credentials" - }, "setupEnableNotifications": "Enable Notifications", "@setupEnableNotifications": { "description": "Button to enable notifications" }, - "setupProceedToNextStep": "You can now proceed to the next step.", - "@setupProceedToNextStep": { - "description": "Message after completing a step" - }, - "setupNotificationProgressDescription": "You will receive download progress notifications.", - "@setupNotificationProgressDescription": { - "description": "Info about notification usage" - }, "setupNotificationBackgroundDescription": "Get notified about download progress and completion. This helps you track downloads when the app is in background.", "@setupNotificationBackgroundDescription": { "description": "Detailed notification explanation" @@ -999,10 +631,6 @@ "@setupSkipForNow": { "description": "Skip button text" }, - "setupBack": "Back", - "@setupBack": { - "description": "Back button text" - }, "setupNext": "Next", "@setupNext": { "description": "Next button text" @@ -1011,26 +639,14 @@ "@setupGetStarted": { "description": "Final setup button" }, - "setupSkipAndStart": "Skip & Start", - "@setupSkipAndStart": { - "description": "Skip setup and start app" - }, "setupAllowAccessToManageFiles": "Please enable \"Allow access to manage all files\" in the next screen.", "@setupAllowAccessToManageFiles": { "description": "Instruction for file access permission" }, - "setupGetCredentialsFromSpotify": "Get credentials from developer.spotify.com", - "@setupGetCredentialsFromSpotify": { - "description": "Link text for Spotify developer portal" - }, "dialogCancel": "Cancel", "@dialogCancel": { "description": "Dialog button - cancel action" }, - "dialogOk": "OK", - "@dialogOk": { - "description": "Dialog button - confirm/acknowledge" - }, "dialogSave": "Save", "@dialogSave": { "description": "Dialog button - save changes" @@ -1043,26 +659,10 @@ "@dialogRetry": { "description": "Dialog button - retry action" }, - "dialogClose": "Close", - "@dialogClose": { - "description": "Dialog button - close dialog" - }, - "dialogYes": "Yes", - "@dialogYes": { - "description": "Dialog button - confirm yes" - }, - "dialogNo": "No", - "@dialogNo": { - "description": "Dialog button - confirm no" - }, "dialogClear": "Clear", "@dialogClear": { "description": "Dialog button - clear items" }, - "dialogConfirm": "Confirm", - "@dialogConfirm": { - "description": "Dialog button - confirm action" - }, "dialogDone": "Done", "@dialogDone": { "description": "Dialog button - action completed" @@ -1091,34 +691,10 @@ "@dialogUnsavedChanges": { "description": "Dialog message - unsaved changes" }, - "dialogDownloadFailed": "Download Failed", - "@dialogDownloadFailed": { - "description": "Dialog title - download error" - }, - "dialogTrackLabel": "Track:", - "@dialogTrackLabel": { - "description": "Label for track name in error dialog" - }, - "dialogArtistLabel": "Artist:", - "@dialogArtistLabel": { - "description": "Label for artist name in error dialog" - }, - "dialogErrorLabel": "Error:", - "@dialogErrorLabel": { - "description": "Label for error message" - }, "dialogClearAll": "Clear All", "@dialogClearAll": { "description": "Dialog title - clear all items" }, - "dialogClearAllDownloads": "Are you sure you want to clear all downloads?", - "@dialogClearAllDownloads": { - "description": "Dialog message - clear downloads confirmation" - }, - "dialogRemoveFromDevice": "Remove from device?", - "@dialogRemoveFromDevice": { - "description": "Dialog title - delete file confirmation" - }, "dialogRemoveExtension": "Remove Extension", "@dialogRemoveExtension": { "description": "Dialog title - uninstall extension" @@ -1257,15 +833,6 @@ "@snackbarViewQueue": { "description": "Snackbar action - view download queue" }, - "snackbarFailedToLoad": "Failed to load: {error}", - "@snackbarFailedToLoad": { - "description": "Snackbar - loading error", - "placeholders": { - "error": { - "type": "String" - } - } - }, "snackbarUrlCopied": "{platform} URL copied to clipboard", "@snackbarUrlCopied": { "description": "Snackbar - URL copied", @@ -1326,16 +893,6 @@ "@errorRateLimitedMessage": { "description": "Error message - rate limit explanation" }, - "errorFailedToLoad": "Failed to load {item}", - "@errorFailedToLoad": { - "description": "Error message - loading failed", - "placeholders": { - "item": { - "type": "String", - "description": "Item that failed to load (album/playlist/etc)" - } - } - }, "errorNoTracksFound": "No tracks found", "@errorNoTracksFound": { "description": "Error - search returned no results" @@ -1349,34 +906,6 @@ } } }, - "statusQueued": "Queued", - "@statusQueued": { - "description": "Download status - waiting in queue" - }, - "statusDownloading": "Downloading", - "@statusDownloading": { - "description": "Download status - in progress" - }, - "statusFinalizing": "Finalizing", - "@statusFinalizing": { - "description": "Download status - writing metadata" - }, - "statusCompleted": "Completed", - "@statusCompleted": { - "description": "Download status - finished" - }, - "statusFailed": "Failed", - "@statusFailed": { - "description": "Download status - error occurred" - }, - "statusSkipped": "Skipped", - "@statusSkipped": { - "description": "Download status - already exists" - }, - "statusPaused": "Paused", - "@statusPaused": { - "description": "Download status - paused" - }, "actionPause": "Pause", "@actionPause": { "description": "Action button - pause download" @@ -1389,14 +918,6 @@ "@actionCancel": { "description": "Action button - cancel operation" }, - "actionStop": "Stop", - "@actionStop": { - "description": "Action button - stop operation" - }, - "actionSelect": "Select", - "@actionSelect": { - "description": "Action button - enter selection mode" - }, "actionSelectAll": "Select All", "@actionSelectAll": { "description": "Action button - select all items" @@ -1405,14 +926,6 @@ "@actionDeselect": { "description": "Action button - deselect all" }, - "actionPaste": "Paste", - "@actionPaste": { - "description": "Action button - paste from clipboard" - }, - "actionImportCsv": "Import CSV", - "@actionImportCsv": { - "description": "Action button - import CSV file" - }, "actionRemoveCredentials": "Remove Credentials", "@actionRemoveCredentials": { "description": "Action button - delete Spotify credentials" @@ -1434,19 +947,6 @@ "@selectionAllSelected": { "description": "Status - all items selected" }, - "selectionTapToSelect": "Tap tracks to select", - "@selectionTapToSelect": { - "description": "Hint - how to select items" - }, - "selectionDeleteTracks": "Delete {count} {count, plural, =1{track} other{tracks}}", - "@selectionDeleteTracks": { - "description": "Delete button with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, "selectionSelectToDelete": "Select tracks to delete", "@selectionSelectToDelete": { "description": "Placeholder when nothing selected" @@ -1487,55 +987,10 @@ "@tooltipPlay": { "description": "Tooltip - play button" }, - "tooltipCancel": "Cancel", - "@tooltipCancel": { - "description": "Tooltip - cancel button" - }, - "tooltipStop": "Stop", - "@tooltipStop": { - "description": "Tooltip - stop button" - }, - "tooltipRetry": "Retry", - "@tooltipRetry": { - "description": "Tooltip - retry button" - }, - "tooltipRemove": "Remove", - "@tooltipRemove": { - "description": "Tooltip - remove button" - }, - "tooltipClear": "Clear", - "@tooltipClear": { - "description": "Tooltip - clear button" - }, - "tooltipPaste": "Paste", - "@tooltipPaste": { - "description": "Tooltip - paste button" - }, "filenameFormat": "Filename Format", "@filenameFormat": { "description": "Setting title - filename pattern" }, - "filenameFormatPreview": "Preview: {preview}", - "@filenameFormatPreview": { - "description": "Preview of filename pattern", - "placeholders": { - "preview": { - "type": "String" - } - } - }, - "filenameAvailablePlaceholders": "Available placeholders:", - "@filenameAvailablePlaceholders": { - "description": "Label for placeholder list" - }, - "filenameHint": "{artist} - {title}", - "@filenameHint": { - "description": "Default filename format hint" - }, - "folderOrganization": "Folder Organization", - "@folderOrganization": { - "description": "Setting title - folder structure" - }, "folderOrganizationNone": "No organization", "@folderOrganizationNone": { "description": "Folder option - flat structure" @@ -1576,27 +1031,10 @@ "@updateAvailable": { "description": "Update dialog title" }, - "updateNewVersion": "Version {version} is available", - "@updateNewVersion": { - "description": "Update available message", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "updateDownload": "Download", - "@updateDownload": { - "description": "Update button - download update" - }, "updateLater": "Later", "@updateLater": { "description": "Update button - dismiss" }, - "updateChangelog": "Changelog", - "@updateChangelog": { - "description": "Link to changelog" - }, "updateStartingDownload": "Starting download...", "@updateStartingDownload": { "description": "Update status - initializing" @@ -1637,14 +1075,6 @@ "@updateDontRemind": { "description": "Update button - skip this version" }, - "providerPriority": "Provider Priority", - "@providerPriority": { - "description": "Setting title - download provider order" - }, - "providerPrioritySubtitle": "Drag to reorder download providers", - "@providerPrioritySubtitle": { - "description": "Subtitle for provider priority" - }, "providerPriorityTitle": "Provider Priority", "@providerPriorityTitle": { "description": "Provider priority page title" @@ -1665,14 +1095,6 @@ "@providerExtension": { "description": "Label for extension-provided providers" }, - "metadataProviderPriority": "Metadata Provider Priority", - "@metadataProviderPriority": { - "description": "Setting title - metadata provider order" - }, - "metadataProviderPrioritySubtitle": "Order used when fetching track metadata", - "@metadataProviderPrioritySubtitle": { - "description": "Subtitle for metadata priority" - }, "metadataProviderPriorityTitle": "Metadata Priority", "@metadataProviderPriorityTitle": { "description": "Metadata priority page title" @@ -1697,22 +1119,6 @@ "@logTitle": { "description": "Logs screen title" }, - "logCopy": "Copy Logs", - "@logCopy": { - "description": "Action - copy logs to clipboard" - }, - "logClear": "Clear Logs", - "@logClear": { - "description": "Action - delete all logs" - }, - "logShare": "Share Logs", - "@logShare": { - "description": "Action - share logs file" - }, - "logEmpty": "No logs yet", - "@logEmpty": { - "description": "Empty state title" - }, "logCopied": "Logs copied to clipboard", "@logCopied": { "description": "Snackbar - logs copied" @@ -1745,22 +1151,6 @@ "@logClearLogsMessage": { "description": "Clear logs confirmation message" }, - "logIspBlocking": "ISP BLOCKING DETECTED", - "@logIspBlocking": { - "description": "Error category - ISP blocking" - }, - "logRateLimited": "RATE LIMITED", - "@logRateLimited": { - "description": "Error category - rate limiting" - }, - "logNetworkError": "NETWORK ERROR", - "@logNetworkError": { - "description": "Error category - network issues" - }, - "logTrackNotFound": "TRACK NOT FOUND", - "@logTrackNotFound": { - "description": "Error category - missing tracks" - }, "logFilterBySeverity": "Filter logs by severity", "@logFilterBySeverity": { "description": "Filter dialog title" @@ -1773,60 +1163,6 @@ "@logNoLogsYetSubtitle": { "description": "Empty state subtitle" }, - "logIssueSummary": "Issue Summary", - "@logIssueSummary": { - "description": "Section header for error summary" - }, - "logIspBlockingDescription": "Your ISP may be blocking access to download services", - "@logIspBlockingDescription": { - "description": "ISP blocking explanation" - }, - "logIspBlockingSuggestion": "Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8", - "@logIspBlockingSuggestion": { - "description": "ISP blocking fix suggestion" - }, - "logRateLimitedDescription": "Too many requests to the service", - "@logRateLimitedDescription": { - "description": "Rate limit explanation" - }, - "logRateLimitedSuggestion": "Wait a few minutes before trying again", - "@logRateLimitedSuggestion": { - "description": "Rate limit fix suggestion" - }, - "logNetworkErrorDescription": "Connection issues detected", - "@logNetworkErrorDescription": { - "description": "Network error explanation" - }, - "logNetworkErrorSuggestion": "Check your internet connection", - "@logNetworkErrorSuggestion": { - "description": "Network error fix suggestion" - }, - "logTrackNotFoundDescription": "Some tracks could not be found on download services", - "@logTrackNotFoundDescription": { - "description": "Track not found explanation" - }, - "logTrackNotFoundSuggestion": "The track may not be available in lossless quality", - "@logTrackNotFoundSuggestion": { - "description": "Track not found explanation" - }, - "logTotalErrors": "Total errors: {count}", - "@logTotalErrors": { - "description": "Error count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "logAffected": "Affected: {domains}", - "@logAffected": { - "description": "Affected domains display", - "placeholders": { - "domains": { - "type": "String" - } - } - }, "logEntriesFiltered": "Entries ({count} filtered)", "@logEntriesFiltered": { "description": "Log count with filter active", @@ -1969,10 +1305,6 @@ "@appearanceLanguage": { "description": "Language setting title" }, - "appearanceLanguageSubtitle": "Choose your preferred language", - "@appearanceLanguageSubtitle": { - "description": "Language setting subtitle" - }, "settingsAppearanceSubtitle": "Theme, colors, display", "@settingsAppearanceSubtitle": { "description": "Appearance settings description" @@ -2001,10 +1333,6 @@ "@pressBackAgainToExit": { "description": "Exit confirmation message" }, - "tracksHeader": "Tracks", - "@tracksHeader": { - "description": "Section header for track list" - }, "downloadAllCount": "Download All ({count})", "@downloadAllCount": { "description": "Download all button with count", @@ -2151,15 +1479,6 @@ "@trackDeleteConfirmMessage": { "description": "Delete confirmation message" }, - "trackCannotOpen": "Cannot open: {message}", - "@trackCannotOpen": { - "description": "Error opening file", - "placeholders": { - "message": { - "type": "String" - } - } - }, "dateToday": "Today", "@dateToday": { "description": "Relative date - today" @@ -2195,22 +1514,6 @@ } } }, - "concurrentSequential": "Sequential", - "@concurrentSequential": { - "description": "Download mode - one at a time" - }, - "concurrentParallel2": "2 Parallel", - "@concurrentParallel2": { - "description": "Download mode - 2 simultaneous" - }, - "concurrentParallel3": "3 Parallel", - "@concurrentParallel3": { - "description": "Download mode - 3 simultaneous" - }, - "tapToSeeError": "Tap to see error details", - "@tapToSeeError": { - "description": "Tooltip for failed download" - }, "storeFilterAll": "All", "@storeFilterAll": { "description": "Store filter - all extensions" @@ -2239,18 +1542,6 @@ "@storeClearFilters": { "description": "Button to clear all filters" }, - "storeNoResults": "No extensions found", - "@storeNoResults": { - "description": "Empty state when no extensions match filters" - }, - "extensionProviderPriority": "Provider Priority", - "@extensionProviderPriority": { - "description": "Extension capability - provider priority" - }, - "extensionInstallButton": "Install Extension", - "@extensionInstallButton": { - "description": "Button to install extension" - }, "extensionDefaultProvider": "Default (Deezer/Spotify)", "@extensionDefaultProvider": { "description": "Default search provider option" @@ -2450,46 +1741,6 @@ "@qualityHiResFlacMaxSubtitle": { "description": "Technical spec for hi-res max" }, - "qualityLossy": "Lossy", - "@qualityLossy": { - "description": "Quality option - lossy format (MP3/Opus)" - }, - "qualityLossyMp3Subtitle": "MP3 320kbps (converted from FLAC)", - "@qualityLossyMp3Subtitle": { - "description": "Technical spec for lossy MP3" - }, - "qualityLossyOpusSubtitle": "Opus 128kbps (converted from FLAC)", - "@qualityLossyOpusSubtitle": { - "description": "Technical spec for lossy Opus" - }, - "enableLossyOption": "Enable Lossy Option", - "@enableLossyOption": { - "description": "Setting - enable lossy quality option" - }, - "enableLossyOptionSubtitleOn": "Lossy quality option is available", - "@enableLossyOptionSubtitleOn": { - "description": "Subtitle when lossy is enabled" - }, - "enableLossyOptionSubtitleOff": "Downloads FLAC then converts to lossy format", - "@enableLossyOptionSubtitleOff": { - "description": "Subtitle when lossy is disabled" - }, - "lossyFormat": "Lossy Format", - "@lossyFormat": { - "description": "Setting - choose lossy format" - }, - "lossyFormatDescription": "Choose the lossy format for conversion", - "@lossyFormatDescription": { - "description": "Description for lossy format picker" - }, - "lossyFormatMp3Subtitle": "320kbps, best compatibility", - "@lossyFormatMp3Subtitle": { - "description": "MP3 format description" - }, - "lossyFormatOpusSubtitle": "128kbps, better quality at smaller size", - "@lossyFormatOpusSubtitle": { - "description": "Opus format description" - }, "qualityNote": "Actual quality depends on track availability from the service", "@qualityNote": { "description": "Note about quality availability" @@ -2518,14 +1769,6 @@ "@downloadUseAlbumArtistForFolders": { "description": "Setting - choose whether artist folders use Album Artist or Track Artist" }, - "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Artist folders use Album Artist when available", - "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { - "description": "Subtitle when Album Artist is used for folder naming" - }, - "downloadUseAlbumArtistForFoldersTrackSubtitle": "Artist folders use Track Artist only", - "@downloadUseAlbumArtistForFoldersTrackSubtitle": { - "description": "Subtitle when Track Artist is used for folder naming" - }, "downloadUsePrimaryArtistOnly": "Primary artist only for folders", "@downloadUsePrimaryArtistOnly": { "description": "Setting - strip featured artists from folder name" @@ -2538,14 +1781,6 @@ "@downloadUsePrimaryArtistOnlyDisabled": { "description": "Subtitle when primary artist only is disabled" }, - "downloadSaveFormat": "Save Format", - "@downloadSaveFormat": { - "description": "Setting - output file format" - }, - "downloadSelectService": "Select Service", - "@downloadSelectService": { - "description": "Dialog title - choose download service" - }, "downloadSelectQuality": "Select Quality", "@downloadSelectQuality": { "description": "Dialog title - choose audio quality" @@ -2554,66 +1789,6 @@ "@downloadFrom": { "description": "Label - download source" }, - "downloadDefaultQualityLabel": "Default Quality", - "@downloadDefaultQualityLabel": { - "description": "Label - default quality setting" - }, - "downloadBestAvailable": "Best available", - "@downloadBestAvailable": { - "description": "Quality option - highest available" - }, - "folderNone": "None", - "@folderNone": { - "description": "Folder option - no organization" - }, - "folderNoneSubtitle": "Save all files directly to download folder", - "@folderNoneSubtitle": { - "description": "Subtitle for no folder organization" - }, - "folderArtist": "Artist", - "@folderArtist": { - "description": "Folder option - by artist" - }, - "folderArtistSubtitle": "Artist Name/filename", - "@folderArtistSubtitle": { - "description": "Folder structure example" - }, - "folderAlbum": "Album", - "@folderAlbum": { - "description": "Folder option - by album" - }, - "folderAlbumSubtitle": "Album Name/filename", - "@folderAlbumSubtitle": { - "description": "Folder structure example" - }, - "folderArtistAlbum": "Artist/Album", - "@folderArtistAlbum": { - "description": "Folder option - nested" - }, - "folderArtistAlbumSubtitle": "Artist Name/Album Name/filename", - "@folderArtistAlbumSubtitle": { - "description": "Folder structure example" - }, - "serviceTidal": "Tidal", - "@serviceTidal": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceQobuz": "Qobuz", - "@serviceQobuz": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceAmazon": "Amazon", - "@serviceAmazon": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceDeezer": "Deezer", - "@serviceDeezer": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceSpotify": "Spotify", - "@serviceSpotify": { - "description": "Service name - DO NOT TRANSLATE" - }, "appearanceAmoledDark": "AMOLED Dark", "@appearanceAmoledDark": { "description": "Theme option - pure black" @@ -2622,18 +1797,6 @@ "@appearanceAmoledDarkSubtitle": { "description": "Subtitle for AMOLED dark" }, - "appearanceChooseAccentColor": "Choose Accent Color", - "@appearanceChooseAccentColor": { - "description": "Color picker dialog title" - }, - "appearanceChooseTheme": "Theme Mode", - "@appearanceChooseTheme": { - "description": "Theme picker dialog title" - }, - "queueTitle": "Download Queue", - "@queueTitle": { - "description": "Queue screen title" - }, "queueClearAll": "Clear All", "@queueClearAll": { "description": "Button - clear all queue items" @@ -2642,22 +1805,6 @@ "@queueClearAllMessage": { "description": "Clear queue confirmation" }, - "queueExportFailed": "Export", - "@queueExportFailed": { - "description": "Button - export failed downloads to TXT" - }, - "queueExportFailedSuccess": "Failed downloads exported to TXT file", - "@queueExportFailedSuccess": { - "description": "Success message after exporting failed downloads" - }, - "queueExportFailedClear": "Clear Failed", - "@queueExportFailedClear": { - "description": "Action to clear failed downloads after export" - }, - "queueExportFailedError": "Failed to export downloads", - "@queueExportFailedError": { - "description": "Error message when export fails" - }, "settingsAutoExportFailed": "Auto-export failed downloads", "@settingsAutoExportFailed": { "description": "Setting toggle for auto-export" @@ -2682,38 +1829,6 @@ "@settingsDownloadNetworkSubtitle": { "description": "Subtitle explaining network preference" }, - "queueEmpty": "No downloads in queue", - "@queueEmpty": { - "description": "Empty queue state title" - }, - "queueEmptySubtitle": "Add tracks from the home screen", - "@queueEmptySubtitle": { - "description": "Empty queue state subtitle" - }, - "queueClearCompleted": "Clear completed", - "@queueClearCompleted": { - "description": "Button - clear finished downloads" - }, - "queueDownloadFailed": "Download Failed", - "@queueDownloadFailed": { - "description": "Error dialog title" - }, - "queueTrackLabel": "Track:", - "@queueTrackLabel": { - "description": "Label in error dialog" - }, - "queueArtistLabel": "Artist:", - "@queueArtistLabel": { - "description": "Label in error dialog" - }, - "queueErrorLabel": "Error:", - "@queueErrorLabel": { - "description": "Label in error dialog" - }, - "queueUnknownError": "Unknown error", - "@queueUnknownError": { - "description": "Fallback error message" - }, "albumFolderArtistAlbum": "Artist / Album", "@albumFolderArtistAlbum": { "description": "Album folder option" @@ -2767,19 +1882,6 @@ } } }, - "downloadedAlbumTracksHeader": "Tracks", - "@downloadedAlbumTracksHeader": { - "description": "Section header for tracks" - }, - "downloadedAlbumDownloadedCount": "{count} downloaded", - "@downloadedAlbumDownloadedCount": { - "description": "Downloaded tracks count badge", - "placeholders": { - "count": { - "type": "int" - } - } - }, "downloadedAlbumSelectedCount": "{count} selected", "@downloadedAlbumSelectedCount": { "description": "Selection count indicator", @@ -2820,10 +1922,6 @@ } } }, - "utilityFunctions": "Utility Functions", - "@utilityFunctions": { - "description": "Extension capability - utility functions" - }, "recentTypeArtist": "Artist", "@recentTypeArtist": { "description": "Recent access item type - artist" @@ -2858,16 +1956,6 @@ } } }, - "errorGeneric": "Error: {message}", - "@errorGeneric": { - "description": "Generic error message format", - "placeholders": { - "message": { - "type": "String", - "description": "Error message" - } - } - }, "discographyDownload": "Download Discography", "@discographyDownload": { "description": "Button - download artist discography" @@ -3034,10 +2122,6 @@ "@libraryTitle": { "description": "Library settings page title" }, - "libraryStatus": "Library Status", - "@libraryStatus": { - "description": "Section header for library status" - }, "libraryScanSettings": "Scan Settings", "@libraryScanSettings": { "description": "Section header for scan settings" @@ -3114,15 +2198,6 @@ "@libraryAboutDescription": { "description": "Description of local library feature" }, - "libraryTracksCount": "{count} tracks", - "@libraryTracksCount": { - "description": "Track count in library", - "placeholders": { - "count": { - "type": "int" - } - } - }, "libraryLastScanned": "Last scanned: {time}", "@libraryLastScanned": { "description": "Last scan time display", @@ -3237,26 +2312,6 @@ "@libraryFilterFormat": { "description": "Filter section - file format" }, - "libraryFilterDate": "Date Added", - "@libraryFilterDate": { - "description": "Filter section - date range" - }, - "libraryFilterDateToday": "Today", - "@libraryFilterDateToday": { - "description": "Filter option - today only" - }, - "libraryFilterDateWeek": "This Week", - "@libraryFilterDateWeek": { - "description": "Filter option - this week" - }, - "libraryFilterDateMonth": "This Month", - "@libraryFilterDateMonth": { - "description": "Filter option - this month" - }, - "libraryFilterDateYear": "This Year", - "@libraryFilterDateYear": { - "description": "Filter option - this year" - }, "libraryFilterSort": "Sort", "@libraryFilterSort": { "description": "Filter section - sort order" @@ -3269,15 +2324,6 @@ "@libraryFilterSortOldest": { "description": "Sort option - oldest first" }, - "libraryFilterActive": "{count} filter(s) active", - "@libraryFilterActive": { - "description": "Badge showing number of active filters", - "placeholders": { - "count": { - "type": "int" - } - } - }, "timeJustNow": "Just now", "@timeJustNow": { "description": "Relative time - less than a minute ago" @@ -3300,106 +2346,6 @@ } } }, - "storageSwitchTitle": "Switch Storage Mode", - "@storageSwitchTitle": { - "description": "Dialog title when switching storage mode" - }, - "storageSwitchToSafTitle": "Switch to SAF Storage?", - "@storageSwitchToSafTitle": { - "description": "Dialog title when switching to SAF" - }, - "storageSwitchToAppTitle": "Switch to App Storage?", - "@storageSwitchToAppTitle": { - "description": "Dialog title when switching to app storage" - }, - "storageSwitchToSafMessage": "Your existing downloads will remain in the current location and stay accessible.\n\nNew downloads will be saved to your selected SAF folder.", - "@storageSwitchToSafMessage": { - "description": "Explanation when switching to SAF" - }, - "storageSwitchToAppMessage": "Your existing downloads will remain in the current SAF location and stay accessible.\n\nNew downloads will be saved to Music/SpotiFLAC folder.", - "@storageSwitchToAppMessage": { - "description": "Explanation when switching to app storage" - }, - "storageSwitchExistingDownloads": "Existing Downloads", - "@storageSwitchExistingDownloads": { - "description": "Section header for existing downloads info" - }, - "storageSwitchExistingDownloadsInfo": "{count} tracks in {mode} storage", - "@storageSwitchExistingDownloadsInfo": { - "description": "Info about existing downloads count", - "placeholders": { - "count": { - "type": "int" - }, - "mode": { - "type": "String" - } - } - }, - "storageSwitchNewDownloads": "New Downloads", - "@storageSwitchNewDownloads": { - "description": "Section header for new downloads info" - }, - "storageSwitchNewDownloadsLocation": "Will be saved to: {location}", - "@storageSwitchNewDownloadsLocation": { - "description": "Shows where new downloads will go", - "placeholders": { - "location": { - "type": "String" - } - } - }, - "storageSwitchContinue": "Continue", - "@storageSwitchContinue": { - "description": "Button to proceed with storage switch" - }, - "storageSwitchSelectFolder": "Select SAF Folder", - "@storageSwitchSelectFolder": { - "description": "Button to select SAF folder" - }, - "storageAppStorage": "App Storage", - "@storageAppStorage": { - "description": "Label for app storage mode" - }, - "storageSafStorage": "SAF Storage", - "@storageSafStorage": { - "description": "Label for SAF storage mode" - }, - "storageModeBadge": "Storage: {mode}", - "@storageModeBadge": { - "description": "Badge showing storage mode for a track", - "placeholders": { - "mode": { - "type": "String" - } - } - }, - "storageStatsTitle": "Storage Statistics", - "@storageStatsTitle": { - "description": "Section title for storage stats" - }, - "storageStatsAppCount": "{count} tracks in App Storage", - "@storageStatsAppCount": { - "description": "Count of tracks in app storage", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storageStatsSafCount": "{count} tracks in SAF Storage", - "@storageStatsSafCount": { - "description": "Count of tracks in SAF storage", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storageModeInfo": "Your files are stored in multiple locations", - "@storageModeInfo": { - "description": "Info when user has files in both storage modes" - }, "tutorialWelcomeTitle": "Welcome to SpotiFLAC!", "@tutorialWelcomeTitle": { "description": "Tutorial welcome page title" @@ -3428,18 +2374,6 @@ "@tutorialSearchDesc": { "description": "Tutorial search page description" }, - "tutorialSearchTip1": "Paste a Spotify or Deezer URL directly in the search box", - "@tutorialSearchTip1": { - "description": "Tutorial search tip 1" - }, - "tutorialSearchTip2": "Or type the song name, artist, or album to search", - "@tutorialSearchTip2": { - "description": "Tutorial search tip 2" - }, - "tutorialSearchTip3": "Supports tracks, albums, playlists, and artist pages", - "@tutorialSearchTip3": { - "description": "Tutorial search tip 3" - }, "tutorialDownloadTitle": "Downloading Music", "@tutorialDownloadTitle": { "description": "Tutorial download page title" @@ -3448,18 +2382,6 @@ "@tutorialDownloadDesc": { "description": "Tutorial download page description" }, - "tutorialDownloadTip1": "Tap the download button next to any track to start downloading", - "@tutorialDownloadTip1": { - "description": "Tutorial download tip 1" - }, - "tutorialDownloadTip2": "Choose your preferred quality (FLAC, Hi-Res, or MP3)", - "@tutorialDownloadTip2": { - "description": "Tutorial download tip 2" - }, - "tutorialDownloadTip3": "Download entire albums or playlists with one tap", - "@tutorialDownloadTip3": { - "description": "Tutorial download tip 3" - }, "tutorialLibraryTitle": "Your Library", "@tutorialLibraryTitle": { "description": "Tutorial library page title" @@ -3524,10 +2446,6 @@ "@tutorialReadyMessage": { "description": "Tutorial completion message" }, - "tutorialExample": "EXAMPLE", - "@tutorialExample": { - "description": "Example label in tutorial" - }, "libraryForceFullScan": "Force Full Scan", "@libraryForceFullScan": { "description": "Button to force a complete rescan of library" @@ -3754,10 +2672,6 @@ "@trackReEnrich": { "description": "Menu action - re-embed metadata into audio file" }, - "trackReEnrichSubtitle": "Re-embed metadata without re-downloading", - "@trackReEnrichSubtitle": { - "description": "Subtitle for re-enrich metadata action" - }, "trackReEnrichOnlineSubtitle": "Search metadata online and embed into file", "@trackReEnrichOnlineSubtitle": { "description": "Subtitle for re-enrich metadata action for local items" @@ -3869,15 +2783,21 @@ "@trackConvertFailed": { "description": "Snackbar when conversion fails" }, - "setupModeSelectionTitle": "अपना मोड चुनें", - "setupModeSelectionDescription": "आप SpotiFLAC का उपयोग कैसे करना चाहेंगे? आप इसे बाद में सेटिंग्स में कभी भी बदल सकते हैं।", - "setupModeDownloaderTitle": "डाउनलोडर", - "setupModeDownloaderFeature1": "लॉसलेस FLAC गुणवत्ता में ट्रैक डाउनलोड करें", - "setupModeDownloaderFeature2": "ऑफ़लाइन सुनने के लिए संगीत अपने डिवाइस में सहेजें", - "setupModeDownloaderFeature3": "अपनी स्थानीय संगीत लाइब्रेरी प्रबंधित करें", - "setupModeStreamingTitle": "स्ट्रीमिंग", - "setupModeStreamingFeature1": "बिना डाउनलोड किए तुरंत ट्रैक स्ट्रीम करें", - "setupModeStreamingFeature2": "Smart Queue स्वचालित रूप से आपके लिए नया संगीत खोजता है", - "setupModeStreamingFeature3": "प्लेबैक नियंत्रण के साथ किसी भी ट्रैक को मांग पर चलाएं", - "setupModeChangeableLater": "आप सेटिंग्स में कभी भी मोड बदल सकते हैं।" -} \ No newline at end of file + "downloadedAlbumDownloadedCount": "{count} downloaded", + "@downloadedAlbumDownloadedCount": { + "description": "Downloaded tracks count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Artist folders use Album Artist when available", + "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { + "description": "Subtitle when Album Artist is used for folder naming" + }, + "downloadUseAlbumArtistForFoldersTrackSubtitle": "Artist folders use Track Artist only", + "@downloadUseAlbumArtistForFoldersTrackSubtitle": { + "description": "Subtitle when Track Artist is used for folder naming" + } +} diff --git a/lib/l10n/arb/app_id.arb b/lib/l10n/arb/app_id.arb index cf4de43b..0d7caf67 100644 --- a/lib/l10n/arb/app_id.arb +++ b/lib/l10n/arb/app_id.arb @@ -1,305 +1,159 @@ -{ - "@@locale": "id", - "@@last_modified": "2026-01-16", - "appName": "SpotiFLAC", - "@appName": { - "description": "App name - DO NOT TRANSLATE" - }, - "appDescription": "Unduh lagu Spotify dalam kualitas lossless dari Tidal, Qobuz, dan Amazon Music.", - "@appDescription": { - "description": "App description shown in about page" - }, - "navHome": "Beranda", - "@navHome": { - "description": "Bottom navigation - Home tab" - }, - "navLibrary": "Library", - "@navLibrary": { - "description": "Bottom navigation - Library tab" - }, - "navHistory": "Riwayat", - "@navHistory": { - "description": "Bottom navigation - History tab (legacy)" - }, - "navSettings": "Pengaturan", - "@navSettings": { - "description": "Bottom navigation - Settings tab" - }, - "navStore": "Toko", - "@navStore": { - "description": "Bottom navigation - Extension store tab" - }, - "homeTitle": "Beranda", - "@homeTitle": { - "description": "Home screen title" - }, - "homeSearchHint": "Tempel URL Spotify atau cari...", - "@homeSearchHint": { - "description": "Placeholder text in search box" - }, - "homeSearchHintExtension": "Cari dengan {extensionName}...", - "@homeSearchHintExtension": { - "description": "Placeholder when extension search is active", - "placeholders": { - "extensionName": { - "type": "String", - "description": "Name of the active extension" - } - } - }, - "homeSubtitle": "Tempel link Spotify atau cari berdasarkan nama", - "@homeSubtitle": { - "description": "Subtitle shown below search box" - }, - "homeSupports": "Mendukung: URL Track, Album, Playlist, Artis", - "@homeSupports": { - "description": "Info text about supported URL types" - }, - "homeRecent": "Terbaru", - "@homeRecent": { - "description": "Section header for recent searches" - }, - "historyTitle": "Riwayat", - "@historyTitle": { - "description": "History screen title" - }, - "historyDownloading": "Mengunduh ({count})", - "@historyDownloading": { - "description": "Tab showing active downloads count", - "placeholders": { - "count": { - "type": "int", - "description": "Number of active downloads" - } - } - }, - "historyDownloaded": "Terunduh", - "@historyDownloaded": { - "description": "Tab showing completed downloads" - }, - "historyFilterAll": "Semua", - "@historyFilterAll": { - "description": "Filter chip - show all items" - }, - "historyFilterAlbums": "Album", - "@historyFilterAlbums": { - "description": "Filter chip - show albums only" - }, - "historyFilterSingles": "Single", - "@historyFilterSingles": { - "description": "Filter chip - show singles only" - }, - "historyTracksCount": "{count, plural, =1{1 lagu} other{{count} lagu}}", - "@historyTracksCount": { - "description": "Track count with plural form", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "historyAlbumsCount": "{count, plural, =1{1 album} other{{count} album}}", - "@historyAlbumsCount": { - "description": "Album count with plural form", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "historyNoDownloads": "Tidak ada riwayat unduhan", - "@historyNoDownloads": { - "description": "Empty state title" - }, - "historyNoDownloadsSubtitle": "Lagu yang diunduh akan muncul di sini", - "@historyNoDownloadsSubtitle": { - "description": "Empty state subtitle" - }, - "historyNoAlbums": "Tidak ada unduhan album", - "@historyNoAlbums": { - "description": "Empty state when filtering albums" - }, - "historyNoAlbumsSubtitle": "Unduh beberapa lagu dari album untuk melihatnya di sini", - "@historyNoAlbumsSubtitle": { - "description": "Empty state subtitle for albums filter" - }, - "historyNoSingles": "Tidak ada unduhan single", - "@historyNoSingles": { - "description": "Empty state when filtering singles" - }, - "historyNoSinglesSubtitle": "Unduhan lagu satuan akan muncul di sini", - "@historyNoSinglesSubtitle": { - "description": "Empty state subtitle for singles filter" - }, - "historySearchHint": "Search history...", - "@historySearchHint": { - "description": "Search bar placeholder in history" - }, - "settingsTitle": "Pengaturan", - "@settingsTitle": { - "description": "Settings screen title" - }, - "settingsDownload": "Unduhan", - "@settingsDownload": { - "description": "Settings section - download options" - }, - "settingsAppearance": "Tampilan", - "@settingsAppearance": { - "description": "Settings section - visual customization" - }, - "settingsOptions": "Opsi", - "@settingsOptions": { - "description": "Settings section - app options" - }, - "settingsExtensions": "Ekstensi", - "@settingsExtensions": { - "description": "Settings section - extension management" - }, - "settingsAbout": "Tentang", - "@settingsAbout": { - "description": "Settings section - app info" - }, - "downloadTitle": "Unduhan", - "@downloadTitle": { - "description": "Download settings page title" - }, - "downloadLocation": "Lokasi Unduhan", - "@downloadLocation": { - "description": "Setting for download folder" - }, - "downloadLocationSubtitle": "Pilih tempat menyimpan file", - "@downloadLocationSubtitle": { - "description": "Subtitle for download location" - }, - "downloadLocationDefault": "Lokasi default", - "@downloadLocationDefault": { - "description": "Shown when using default folder" - }, - "downloadDefaultService": "Layanan Default", - "@downloadDefaultService": { - "description": "Setting for preferred download service (Tidal/Qobuz/Amazon)" - }, - "downloadDefaultServiceSubtitle": "Layanan yang digunakan untuk unduhan", - "@downloadDefaultServiceSubtitle": { - "description": "Subtitle for default service" - }, - "downloadDefaultQuality": "Kualitas Default", - "@downloadDefaultQuality": { - "description": "Setting for audio quality" - }, - "downloadAskQuality": "Tanya Kualitas Sebelum Unduh", - "@downloadAskQuality": { - "description": "Toggle to show quality picker" - }, - "downloadAskQualitySubtitle": "Tampilkan pemilih kualitas untuk setiap unduhan", - "@downloadAskQualitySubtitle": { - "description": "Subtitle for ask quality toggle" - }, - "downloadFilenameFormat": "Format Nama File", - "@downloadFilenameFormat": { - "description": "Setting for output filename pattern" - }, - "downloadFolderOrganization": "Organisasi Folder", - "@downloadFolderOrganization": { - "description": "Setting for folder structure" - }, - "downloadSeparateSingles": "Pisahkan Single", - "@downloadSeparateSingles": { - "description": "Toggle to separate single tracks" - }, - "downloadSeparateSinglesSubtitle": "Letakkan lagu satuan di folder terpisah", - "@downloadSeparateSinglesSubtitle": { - "description": "Subtitle for separate singles toggle" - }, - "qualityBest": "Terbaik", - "@qualityBest": { - "description": "Audio quality option - highest available" - }, - "qualityFlac": "FLAC", - "@qualityFlac": { - "description": "Audio quality option - FLAC lossless" - }, - "quality320": "320 kbps", - "@quality320": { - "description": "Audio quality option - 320kbps MP3" - }, - "quality128": "128 kbps", - "@quality128": { - "description": "Audio quality option - 128kbps MP3" - }, - "appearanceTitle": "Tampilan", - "@appearanceTitle": { - "description": "Appearance settings page title" - }, - "appearanceTheme": "Tema", - "@appearanceTheme": { - "description": "Theme mode setting" - }, - "appearanceThemeSystem": "Sistem", - "@appearanceThemeSystem": { - "description": "Follow system theme" - }, - "appearanceThemeLight": "Terang", - "@appearanceThemeLight": { - "description": "Light theme" - }, - "appearanceThemeDark": "Gelap", - "@appearanceThemeDark": { - "description": "Dark theme" - }, - "appearanceDynamicColor": "Warna Dinamis", - "@appearanceDynamicColor": { - "description": "Material You dynamic colors" - }, - "appearanceDynamicColorSubtitle": "Gunakan warna dari wallpaper Anda", - "@appearanceDynamicColorSubtitle": { - "description": "Subtitle for dynamic color" - }, - "appearanceAccentColor": "Warna Aksen", - "@appearanceAccentColor": { - "description": "Custom accent color picker" - }, - "appearanceHistoryView": "Tampilan Riwayat", - "@appearanceHistoryView": { - "description": "Layout style for history" - }, - "appearanceHistoryViewList": "Daftar", - "@appearanceHistoryViewList": { - "description": "List layout option" - }, - "appearanceHistoryViewGrid": "Grid", - "@appearanceHistoryViewGrid": { - "description": "Grid layout option" - }, - "optionsTitle": "Opsi", - "@optionsTitle": { - "description": "Options settings page title" - }, - "optionsSearchSource": "Sumber Pencarian", - "@optionsSearchSource": { - "description": "Section for search provider settings" - }, - "optionsPrimaryProvider": "Provider Utama", - "@optionsPrimaryProvider": { - "description": "Main search provider setting" - }, - "optionsPrimaryProviderSubtitle": "Layanan yang digunakan saat mencari berdasarkan nama lagu.", - "@optionsPrimaryProviderSubtitle": { - "description": "Subtitle for primary provider" - }, - "optionsUsingExtension": "Menggunakan ekstensi: {extensionName}", - "@optionsUsingExtension": { - "description": "Shows active extension name", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "optionsSwitchBack": "Ketuk Deezer atau Spotify untuk beralih dari ekstensi", - "@optionsSwitchBack": { - "description": "Hint to switch back to built-in providers" - }, +{ + "@@locale": "id", + "@@last_modified": "2026-01-16", + "appName": "SpotiFLAC", + "@appName": { + "description": "App name - DO NOT TRANSLATE" + }, + "navHome": "Beranda", + "@navHome": { + "description": "Bottom navigation - Home tab" + }, + "navLibrary": "Library", + "@navLibrary": { + "description": "Bottom navigation - Library tab" + }, + "navSettings": "Pengaturan", + "@navSettings": { + "description": "Bottom navigation - Settings tab" + }, + "navStore": "Toko", + "@navStore": { + "description": "Bottom navigation - Extension store tab" + }, + "homeTitle": "Beranda", + "@homeTitle": { + "description": "Home screen title" + }, + "homeSubtitle": "Tempel link Spotify atau cari berdasarkan nama", + "@homeSubtitle": { + "description": "Subtitle shown below search box" + }, + "homeSupports": "Mendukung: URL Track, Album, Playlist, Artis", + "@homeSupports": { + "description": "Info text about supported URL types" + }, + "homeRecent": "Terbaru", + "@homeRecent": { + "description": "Section header for recent searches" + }, + "historyFilterAll": "Semua", + "@historyFilterAll": { + "description": "Filter chip - show all items" + }, + "historyFilterAlbums": "Album", + "@historyFilterAlbums": { + "description": "Filter chip - show albums only" + }, + "historyFilterSingles": "Single", + "@historyFilterSingles": { + "description": "Filter chip - show singles only" + }, + "historySearchHint": "Search history...", + "@historySearchHint": { + "description": "Search bar placeholder in history" + }, + "settingsTitle": "Pengaturan", + "@settingsTitle": { + "description": "Settings screen title" + }, + "settingsDownload": "Unduhan", + "@settingsDownload": { + "description": "Settings section - download options" + }, + "settingsAppearance": "Tampilan", + "@settingsAppearance": { + "description": "Settings section - visual customization" + }, + "settingsOptions": "Opsi", + "@settingsOptions": { + "description": "Settings section - app options" + }, + "settingsExtensions": "Ekstensi", + "@settingsExtensions": { + "description": "Settings section - extension management" + }, + "settingsAbout": "Tentang", + "@settingsAbout": { + "description": "Settings section - app info" + }, + "downloadTitle": "Unduhan", + "@downloadTitle": { + "description": "Download settings page title" + }, + "downloadAskQualitySubtitle": "Tampilkan pemilih kualitas untuk setiap unduhan", + "@downloadAskQualitySubtitle": { + "description": "Subtitle for ask quality toggle" + }, + "downloadFilenameFormat": "Format Nama File", + "@downloadFilenameFormat": { + "description": "Setting for output filename pattern" + }, + "downloadFolderOrganization": "Organisasi Folder", + "@downloadFolderOrganization": { + "description": "Setting for folder structure" + }, + "appearanceTitle": "Tampilan", + "@appearanceTitle": { + "description": "Appearance settings page title" + }, + "appearanceThemeSystem": "Sistem", + "@appearanceThemeSystem": { + "description": "Follow system theme" + }, + "appearanceThemeLight": "Terang", + "@appearanceThemeLight": { + "description": "Light theme" + }, + "appearanceThemeDark": "Gelap", + "@appearanceThemeDark": { + "description": "Dark theme" + }, + "appearanceDynamicColor": "Warna Dinamis", + "@appearanceDynamicColor": { + "description": "Material You dynamic colors" + }, + "appearanceDynamicColorSubtitle": "Gunakan warna dari wallpaper Anda", + "@appearanceDynamicColorSubtitle": { + "description": "Subtitle for dynamic color" + }, + "appearanceHistoryView": "Tampilan Riwayat", + "@appearanceHistoryView": { + "description": "Layout style for history" + }, + "appearanceHistoryViewList": "Daftar", + "@appearanceHistoryViewList": { + "description": "List layout option" + }, + "appearanceHistoryViewGrid": "Grid", + "@appearanceHistoryViewGrid": { + "description": "Grid layout option" + }, + "optionsTitle": "Opsi", + "@optionsTitle": { + "description": "Options settings page title" + }, + "optionsPrimaryProvider": "Provider Utama", + "@optionsPrimaryProvider": { + "description": "Main search provider setting" + }, + "optionsPrimaryProviderSubtitle": "Layanan yang digunakan saat mencari berdasarkan nama lagu.", + "@optionsPrimaryProviderSubtitle": { + "description": "Subtitle for primary provider" + }, + "optionsUsingExtension": "Menggunakan ekstensi: {extensionName}", + "@optionsUsingExtension": { + "description": "Shows active extension name", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "optionsSwitchBack": "Ketuk Deezer atau Spotify untuk beralih dari ekstensi", + "@optionsSwitchBack": { + "description": "Hint to switch back to built-in providers" + }, "optionsAutoFallback": "Auto Fallback", "@optionsAutoFallback": { "description": "Auto-retry with other services" @@ -308,1265 +162,834 @@ "@optionsAutoFallbackSubtitle": { "description": "Subtitle for auto fallback" }, - "optionsAutoSkipUnavailableTracks": "Lewati Otomatis Lagu yang Tidak Tersedia", - "@optionsAutoSkipUnavailableTracks": { - "description": "Toggle to skip to the next queue track when current track stream resolution fails" - }, - "optionsAutoSkipUnavailableTracksSubtitleOn": "Otomatis lanjut ke lagu berikutnya di antrean jika stream lagu tidak bisa ditemukan.", - "@optionsAutoSkipUnavailableTracksSubtitleOn": { - "description": "Subtitle when auto skip on resolve failure is enabled" - }, - "optionsAutoSkipUnavailableTracksSubtitleOff": "Berhenti di lagu yang gagal dan tampilkan pesan error.", - "@optionsAutoSkipUnavailableTracksSubtitleOff": { - "description": "Subtitle when auto skip on resolve failure is disabled" - }, - "optionsInteractionMode": "Mode Interaksi", - "@optionsInteractionMode": { - "description": "Tap behavior mode for track lists" - }, - "modeDownloader": "Mode Downloader", - "@modeDownloader": { - "description": "Interaction mode where taps queue downloads" - }, - "modeDownloaderSubtitle": "Ketuk lagu untuk menambah ke antrean unduhan", - "@modeDownloaderSubtitle": { - "description": "Subtitle for downloader interaction mode" - }, - "modeStreaming": "Mode Streaming", - "@modeStreaming": { - "description": "Interaction mode where taps start playback" - }, - "modeStreamingSubtitle": "Ketuk lagu untuk langsung memutar", - "@modeStreamingSubtitle": { - "description": "Subtitle for streaming interaction mode" - }, "optionsUseExtensionProviders": "Gunakan Provider Ekstensi", - "@optionsUseExtensionProviders": { - "description": "Enable extension download providers" - }, - "optionsUseExtensionProvidersOn": "Ekstensi akan dicoba terlebih dahulu", - "@optionsUseExtensionProvidersOn": { - "description": "Status when extension providers enabled" - }, - "optionsUseExtensionProvidersOff": "Hanya menggunakan provider bawaan", - "@optionsUseExtensionProvidersOff": { - "description": "Status when extension providers disabled" - }, - "optionsEmbedLyrics": "Sematkan Lirik", - "@optionsEmbedLyrics": { - "description": "Embed lyrics in audio files" - }, - "optionsEmbedLyricsSubtitle": "Sematkan lirik sinkron ke file FLAC", - "@optionsEmbedLyricsSubtitle": { - "description": "Subtitle for embed lyrics" - }, - "optionsMaxQualityCover": "Cover Kualitas Maksimal", - "@optionsMaxQualityCover": { - "description": "Download highest quality album art" - }, - "optionsMaxQualityCoverSubtitle": "Unduh cover art resolusi tertinggi", - "@optionsMaxQualityCoverSubtitle": { - "description": "Subtitle for max quality cover" - }, - "optionsConcurrentDownloads": "Unduhan Bersamaan", - "@optionsConcurrentDownloads": { - "description": "Number of parallel downloads" - }, - "optionsConcurrentSequential": "Berurutan (1 per waktu)", - "@optionsConcurrentSequential": { - "description": "Download one at a time" - }, - "optionsConcurrentParallel": "{count} unduhan paralel", - "@optionsConcurrentParallel": { - "description": "Multiple parallel downloads", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "optionsConcurrentWarning": "Unduhan paralel dapat memicu pembatasan rate", - "@optionsConcurrentWarning": { - "description": "Warning about rate limits" - }, - "optionsExtensionStore": "Toko Ekstensi", - "@optionsExtensionStore": { - "description": "Show/hide store tab" - }, - "optionsExtensionStoreSubtitle": "Tampilkan tab Toko di navigasi", - "@optionsExtensionStoreSubtitle": { - "description": "Subtitle for extension store toggle" - }, - "optionsCheckUpdates": "Periksa Pembaruan", - "@optionsCheckUpdates": { - "description": "Auto update check toggle" - }, - "optionsCheckUpdatesSubtitle": "Beritahu saat versi baru tersedia", - "@optionsCheckUpdatesSubtitle": { - "description": "Subtitle for update check" - }, - "optionsUpdateChannel": "Saluran Pembaruan", - "@optionsUpdateChannel": { - "description": "Stable vs preview releases" - }, - "optionsUpdateChannelStable": "Hanya rilis stabil", - "@optionsUpdateChannelStable": { - "description": "Only stable updates" - }, - "optionsUpdateChannelPreview": "Dapatkan rilis preview", - "@optionsUpdateChannelPreview": { - "description": "Include beta/preview updates" - }, - "optionsUpdateChannelWarning": "Preview mungkin mengandung bug atau fitur belum lengkap", - "@optionsUpdateChannelWarning": { - "description": "Warning about preview channel" - }, - "optionsClearHistory": "Hapus Riwayat Unduhan", - "@optionsClearHistory": { - "description": "Delete all download history" - }, - "optionsClearHistorySubtitle": "Hapus semua lagu dari riwayat", - "@optionsClearHistorySubtitle": { - "description": "Subtitle for clear history" - }, - "optionsDetailedLogging": "Log Detail", - "@optionsDetailedLogging": { - "description": "Enable verbose logs for debugging" - }, - "optionsDetailedLoggingOn": "Log detail sedang direkam", - "@optionsDetailedLoggingOn": { - "description": "Status when logging enabled" - }, - "optionsDetailedLoggingOff": "Aktifkan untuk laporan bug", - "@optionsDetailedLoggingOff": { - "description": "Status when logging disabled" - }, - "optionsSpotifyCredentials": "Kredensial Spotify", - "@optionsSpotifyCredentials": { - "description": "Spotify API credentials setting" - }, - "optionsSpotifyCredentialsConfigured": "Client ID: {clientId}...", - "@optionsSpotifyCredentialsConfigured": { - "description": "Shows configured client ID preview", - "placeholders": { - "clientId": { - "type": "String" - } - } - }, - "optionsSpotifyCredentialsRequired": "Diperlukan - ketuk untuk mengatur", - "@optionsSpotifyCredentialsRequired": { - "description": "Prompt to set up credentials" - }, - "optionsSpotifyWarning": "Spotify memerlukan kredensial API Anda sendiri. Dapatkan gratis dari developer.spotify.com", - "@optionsSpotifyWarning": { - "description": "Info about Spotify API requirement" - }, - "optionsSpotifyDeprecationWarning": "Spotify search will be deprecated on March 3, 2026 due to Spotify API changes. Please switch to Deezer.", - "@optionsSpotifyDeprecationWarning": { - "description": "Warning about Spotify API deprecation" - }, - "extensionsTitle": "Ekstensi", - "@extensionsTitle": { - "description": "Extensions page title" - }, - "extensionsInstalled": "Ekstensi Terpasang", - "@extensionsInstalled": { - "description": "Section header for installed extensions" - }, - "extensionsNone": "Tidak ada ekstensi terpasang", - "@extensionsNone": { - "description": "Empty state title" - }, - "extensionsNoneSubtitle": "Pasang ekstensi dari tab Toko", - "@extensionsNoneSubtitle": { - "description": "Empty state subtitle" - }, - "extensionsEnabled": "Aktif", - "@extensionsEnabled": { - "description": "Extension status - active" - }, - "extensionsDisabled": "Nonaktif", - "@extensionsDisabled": { - "description": "Extension status - inactive" - }, - "extensionsVersion": "Versi {version}", - "@extensionsVersion": { - "description": "Extension version display", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "extensionsAuthor": "oleh {author}", - "@extensionsAuthor": { - "description": "Extension author credit", - "placeholders": { - "author": { - "type": "String" - } - } - }, - "extensionsUninstall": "Copot", - "@extensionsUninstall": { - "description": "Uninstall extension button" - }, - "extensionsSetAsSearch": "Jadikan Provider Pencarian", - "@extensionsSetAsSearch": { - "description": "Use extension for search" - }, - "storeTitle": "Toko Ekstensi", - "@storeTitle": { - "description": "Store screen title" - }, - "storeSearch": "Cari ekstensi...", - "@storeSearch": { - "description": "Store search placeholder" - }, - "storeInstall": "Pasang", - "@storeInstall": { - "description": "Install extension button" - }, - "storeInstalled": "Terpasang", - "@storeInstalled": { - "description": "Already installed badge" - }, - "storeUpdate": "Perbarui", - "@storeUpdate": { - "description": "Update available button" - }, - "aboutTitle": "Tentang", - "@aboutTitle": { - "description": "About page title" - }, - "aboutContributors": "Kontributor", - "@aboutContributors": { - "description": "Section for contributors" - }, - "aboutMobileDeveloper": "Pengembang versi mobile", - "@aboutMobileDeveloper": { - "description": "Role description for mobile dev" - }, - "aboutOriginalCreator": "Pembuat SpotiFLAC asli", - "@aboutOriginalCreator": { - "description": "Role description for original creator" - }, - "aboutLogoArtist": "Seniman berbakat yang membuat logo aplikasi kita yang indah!", - "@aboutLogoArtist": { - "description": "Role description for logo artist" - }, - "aboutTranslators": "Translators", - "@aboutTranslators": { - "description": "Section for translators" - }, - "aboutSpecialThanks": "Terima Kasih Khusus", - "@aboutSpecialThanks": { - "description": "Section for special thanks" - }, - "aboutLinks": "Tautan", - "@aboutLinks": { - "description": "Section for external links" - }, - "aboutMobileSource": "Kode sumber mobile", - "@aboutMobileSource": { - "description": "Link to mobile GitHub repo" - }, - "aboutPCSource": "Kode sumber PC", - "@aboutPCSource": { - "description": "Link to PC GitHub repo" - }, - "aboutReportIssue": "Laporkan masalah", - "@aboutReportIssue": { - "description": "Link to report bugs" - }, - "aboutReportIssueSubtitle": "Laporkan masalah yang Anda temui", - "@aboutReportIssueSubtitle": { - "description": "Subtitle for report issue" - }, - "aboutFeatureRequest": "Permintaan fitur", - "@aboutFeatureRequest": { - "description": "Link to suggest features" - }, - "aboutFeatureRequestSubtitle": "Sarankan fitur baru untuk aplikasi", - "@aboutFeatureRequestSubtitle": { - "description": "Subtitle for feature request" - }, - "aboutTelegramChannel": "Telegram Channel", - "@aboutTelegramChannel": { - "description": "Link to Telegram channel" - }, - "aboutTelegramChannelSubtitle": "Announcements and updates", - "@aboutTelegramChannelSubtitle": { - "description": "Subtitle for Telegram channel" - }, - "aboutTelegramChat": "Telegram Community", - "@aboutTelegramChat": { - "description": "Link to Telegram chat group" - }, - "aboutTelegramChatSubtitle": "Chat with other users", - "@aboutTelegramChatSubtitle": { - "description": "Subtitle for Telegram chat" - }, - "aboutSocial": "Social", - "@aboutSocial": { - "description": "Section for social links" - }, - "aboutSupport": "Dukungan", - "@aboutSupport": { - "description": "Section for support/donation links" - }, - "aboutApp": "Aplikasi", - "@aboutApp": { - "description": "Section for app info" - }, - "aboutVersion": "Versi", - "@aboutVersion": { - "description": "Version info label" - }, - "aboutBinimumDesc": "Pembuat QQDL & HiFi API. Tanpa API ini, unduhan Tidal tidak akan ada!", - "@aboutBinimumDesc": { - "description": "Credit description for binimum" - }, - "aboutSachinsenalDesc": "Pembuat proyek HiFi asli. Fondasi dari integrasi Tidal!", - "@aboutSachinsenalDesc": { - "description": "Credit description for sachinsenal0x64" - }, - "aboutSjdonadoDesc": "Creator of I Don't Have Spotify (IDHS). The fallback link resolver that saves the day!", - "@aboutSjdonadoDesc": { - "description": "Credit description for sjdonado" - }, - "aboutDoubleDouble": "DoubleDouble", - "@aboutDoubleDouble": { - "description": "Name of Amazon API service - DO NOT TRANSLATE" - }, - "aboutDoubleDoubleDesc": "API luar biasa untuk unduhan Amazon Music. Terima kasih sudah membuatnya gratis!", - "@aboutDoubleDoubleDesc": { - "description": "Credit for DoubleDouble API" - }, - "aboutDabMusic": "DAB Music", - "@aboutDabMusic": { - "description": "Name of Qobuz API service - DO NOT TRANSLATE" - }, - "aboutDabMusicDesc": "API streaming Qobuz terbaik. Unduhan Hi-Res tidak akan mungkin tanpa ini!", - "@aboutDabMusicDesc": { - "description": "Credit for DAB Music API" - }, - "aboutSpotiSaver": "SpotiSaver", - "@aboutSpotiSaver": { - "description": "Name of SpotiSaver API service - DO NOT TRANSLATE" - }, - "aboutSpotiSaverDesc": "Tidal Hi-Res FLAC streaming endpoints. A key piece of the lossless puzzle!", - "@aboutSpotiSaverDesc": { - "description": "Credit for SpotiSaver API" - }, - "aboutAppDescription": "Unduh lagu Spotify dalam kualitas lossless dari Tidal, Qobuz, dan Amazon Music.", - "@aboutAppDescription": { - "description": "App description in header card" - }, - "albumTitle": "Album", - "@albumTitle": { - "description": "Album screen title" - }, - "albumTracks": "{count, plural, =1{1 lagu} other{{count} lagu}}", - "@albumTracks": { - "description": "Album track count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "albumDownloadAll": "Unduh Semua", - "@albumDownloadAll": { - "description": "Button to download all tracks" - }, - "albumDownloadRemaining": "Unduh Sisanya", - "@albumDownloadRemaining": { - "description": "Button to download remaining tracks" - }, - "playlistTitle": "Playlist", - "@playlistTitle": { - "description": "Playlist screen title" - }, - "artistTitle": "Artis", - "@artistTitle": { - "description": "Artist screen title" - }, - "artistAlbums": "Album", - "@artistAlbums": { - "description": "Section header for artist albums" - }, - "artistSingles": "Single & EP", - "@artistSingles": { - "description": "Section header for singles/EPs" - }, - "artistCompilations": "Kompilasi", - "@artistCompilations": { - "description": "Section header for compilations" - }, - "artistReleases": "{count, plural, =1{1 rilis} other{{count} rilis}}", - "@artistReleases": { - "description": "Artist release count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "artistPopular": "Populer", - "@artistPopular": { - "description": "Section header for popular/top tracks" - }, - "artistMonthlyListeners": "{count} pendengar bulanan", - "@artistMonthlyListeners": { - "description": "Monthly listener count display", - "placeholders": { - "count": { - "type": "String", - "description": "Formatted listener count" - } - } - }, - "trackMetadataTitle": "Info Lagu", - "@trackMetadataTitle": { - "description": "Track metadata screen title" - }, - "trackMetadataArtist": "Artis", - "@trackMetadataArtist": { - "description": "Metadata field - artist name" - }, - "trackMetadataAlbum": "Album", - "@trackMetadataAlbum": { - "description": "Metadata field - album name" - }, - "trackMetadataDuration": "Durasi", - "@trackMetadataDuration": { - "description": "Metadata field - track length" - }, - "trackMetadataQuality": "Kualitas", - "@trackMetadataQuality": { - "description": "Metadata field - audio quality" - }, - "trackMetadataPath": "Lokasi File", - "@trackMetadataPath": { - "description": "Metadata field - file location" - }, - "trackMetadataDownloadedAt": "Diunduh", - "@trackMetadataDownloadedAt": { - "description": "Metadata field - download date" - }, - "trackMetadataService": "Layanan", - "@trackMetadataService": { - "description": "Metadata field - download service used" - }, - "trackMetadataPlay": "Putar", - "@trackMetadataPlay": { - "description": "Action button - play track" - }, - "trackMetadataShare": "Bagikan", - "@trackMetadataShare": { - "description": "Action button - share track" - }, - "trackMetadataDelete": "Hapus", - "@trackMetadataDelete": { - "description": "Action button - delete track" - }, - "trackMetadataRedownload": "Unduh ulang", - "@trackMetadataRedownload": { - "description": "Action button - download again" - }, - "trackMetadataOpenFolder": "Buka Folder", - "@trackMetadataOpenFolder": { - "description": "Action button - open containing folder" - }, - "setupTitle": "Selamat Datang di SpotiFLAC", - "@setupTitle": { - "description": "Setup wizard title" - }, - "setupSubtitle": "Mari mulai pengaturan", - "@setupSubtitle": { - "description": "Setup wizard subtitle" - }, - "setupStoragePermission": "Izin Penyimpanan", - "@setupStoragePermission": { - "description": "Storage permission step title" - }, - "setupStoragePermissionSubtitle": "Diperlukan untuk menyimpan file unduhan", - "@setupStoragePermissionSubtitle": { - "description": "Explanation for storage permission" - }, - "setupStoragePermissionGranted": "Izin diberikan", - "@setupStoragePermissionGranted": { - "description": "Status when permission granted" - }, - "setupStoragePermissionDenied": "Izin ditolak", - "@setupStoragePermissionDenied": { - "description": "Status when permission denied" - }, - "setupGrantPermission": "Berikan Izin", - "@setupGrantPermission": { - "description": "Button to request permission" - }, - "setupDownloadLocation": "Lokasi Unduhan", - "@setupDownloadLocation": { - "description": "Download folder step title" - }, - "setupChooseFolder": "Pilih Folder", - "@setupChooseFolder": { - "description": "Button to pick folder" - }, - "setupContinue": "Lanjutkan", - "@setupContinue": { - "description": "Continue to next step button" - }, - "setupSkip": "Lewati untuk sekarang", - "@setupSkip": { - "description": "Skip current step button" - }, - "setupStorageAccessRequired": "Akses Penyimpanan Diperlukan", - "@setupStorageAccessRequired": { - "description": "Title when storage access needed" - }, - "setupStorageAccessMessage": "SpotiFLAC membutuhkan izin \"Akses semua file\" untuk menyimpan file musik ke folder pilihan Anda.", - "@setupStorageAccessMessage": { - "description": "Explanation for storage access" - }, - "setupStorageAccessMessageAndroid11": "Android 11+ memerlukan izin \"Akses semua file\" untuk menyimpan file ke folder unduhan pilihan Anda.", - "@setupStorageAccessMessageAndroid11": { - "description": "Android 11+ specific explanation" - }, - "setupOpenSettings": "Buka Pengaturan", - "@setupOpenSettings": { - "description": "Button to open system settings" - }, - "setupPermissionDeniedMessage": "Izin ditolak. Harap berikan semua izin untuk melanjutkan.", - "@setupPermissionDeniedMessage": { - "description": "Error when permission denied" - }, - "setupPermissionRequired": "Izin {permissionType} Diperlukan", - "@setupPermissionRequired": { - "description": "Generic permission required title", - "placeholders": { - "permissionType": { - "type": "String", - "description": "Type of permission (Storage/Notification)" - } - } - }, - "setupPermissionRequiredMessage": "Izin {permissionType} diperlukan untuk pengalaman terbaik. Anda dapat mengubahnya nanti di Pengaturan.", - "@setupPermissionRequiredMessage": { - "description": "Generic permission required message", - "placeholders": { - "permissionType": { - "type": "String" - } - } - }, - "setupSelectDownloadFolder": "Pilih Folder Unduhan", - "@setupSelectDownloadFolder": { - "description": "Folder selection step title" - }, - "setupUseDefaultFolder": "Gunakan Folder Default?", - "@setupUseDefaultFolder": { - "description": "Dialog title for default folder" - }, - "setupNoFolderSelected": "Tidak ada folder dipilih. Apakah Anda ingin menggunakan folder Musik default?", - "@setupNoFolderSelected": { - "description": "Prompt when no folder selected" - }, - "setupUseDefault": "Gunakan Default", - "@setupUseDefault": { - "description": "Button to use default folder" - }, - "setupDownloadLocationTitle": "Lokasi Unduhan", - "@setupDownloadLocationTitle": { - "description": "Download location dialog title" - }, - "setupDownloadLocationIosMessage": "Di iOS, unduhan disimpan ke folder Documents aplikasi. Anda dapat mengaksesnya melalui aplikasi Files.", - "@setupDownloadLocationIosMessage": { - "description": "iOS-specific folder info" - }, - "setupAppDocumentsFolder": "Folder Documents Aplikasi", - "@setupAppDocumentsFolder": { - "description": "iOS documents folder option" - }, - "setupAppDocumentsFolderSubtitle": "Direkomendasikan - dapat diakses via aplikasi Files", - "@setupAppDocumentsFolderSubtitle": { - "description": "Subtitle for documents folder" - }, - "setupChooseFromFiles": "Pilih dari Files", - "@setupChooseFromFiles": { - "description": "iOS file picker option" - }, - "setupChooseFromFilesSubtitle": "Pilih lokasi iCloud atau lainnya", - "@setupChooseFromFilesSubtitle": { - "description": "Subtitle for file picker" - }, - "setupIosEmptyFolderWarning": "Batasan iOS: Folder kosong tidak dapat dipilih. Pilih folder dengan minimal satu file.", - "@setupIosEmptyFolderWarning": { - "description": "iOS folder selection warning" - }, - "setupIcloudNotSupported": "iCloud Drive is not supported. Please use the app Documents folder.", - "@setupIcloudNotSupported": { - "description": "Error when user selects iCloud Drive on iOS" - }, - "setupDownloadInFlac": "Unduh lagu Spotify dalam format FLAC", - "@setupDownloadInFlac": { - "description": "App tagline in setup" - }, - "setupStepStorage": "Penyimpanan", - "@setupStepStorage": { - "description": "Setup step indicator - storage" - }, - "setupStepNotification": "Notifikasi", - "@setupStepNotification": { - "description": "Setup step indicator - notification" - }, - "setupStepFolder": "Folder", - "@setupStepFolder": { - "description": "Setup step indicator - folder" - }, - "setupStepSpotify": "Spotify", - "@setupStepSpotify": { - "description": "Setup step indicator - Spotify API" - }, - "setupStepPermission": "Izin", - "@setupStepPermission": { - "description": "Setup step indicator - permission" - }, - "setupStorageGranted": "Izin Penyimpanan Diberikan!", - "@setupStorageGranted": { - "description": "Success message for storage permission" - }, - "setupStorageRequired": "Izin Penyimpanan Diperlukan", - "@setupStorageRequired": { - "description": "Title when storage permission needed" - }, - "setupStorageDescription": "SpotiFLAC membutuhkan izin penyimpanan untuk menyimpan file musik yang diunduh.", - "@setupStorageDescription": { - "description": "Explanation for storage permission" - }, - "setupNotificationGranted": "Izin Notifikasi Diberikan!", - "@setupNotificationGranted": { - "description": "Success message for notification permission" - }, - "setupNotificationEnable": "Aktifkan Notifikasi", - "@setupNotificationEnable": { - "description": "Button to enable notifications" - }, - "setupNotificationDescription": "Dapatkan pemberitahuan saat unduhan selesai atau membutuhkan perhatian.", - "@setupNotificationDescription": { - "description": "Explanation for notifications" - }, - "setupFolderSelected": "Folder Unduhan Dipilih!", - "@setupFolderSelected": { - "description": "Success message for folder selection" - }, - "setupFolderChoose": "Pilih Folder Unduhan", - "@setupFolderChoose": { - "description": "Button to choose folder" - }, - "setupFolderDescription": "Pilih folder tempat musik yang diunduh akan disimpan.", - "@setupFolderDescription": { - "description": "Explanation for folder selection" - }, - "setupChangeFolder": "Ubah Folder", - "@setupChangeFolder": { - "description": "Button to change selected folder" - }, - "setupSelectFolder": "Pilih Folder", - "@setupSelectFolder": { - "description": "Button to select folder" - }, - "setupSpotifyApiOptional": "Spotify API (Opsional)", - "@setupSpotifyApiOptional": { - "description": "Spotify API step title" - }, - "setupSpotifyApiDescription": "Tambahkan kredensial Spotify API untuk hasil pencarian lebih baik dan akses ke konten eksklusif Spotify.", - "@setupSpotifyApiDescription": { - "description": "Explanation for Spotify API" - }, - "setupUseSpotifyApi": "Gunakan Spotify API", - "@setupUseSpotifyApi": { - "description": "Toggle to enable Spotify API" - }, - "setupEnterCredentialsBelow": "Masukkan kredensial Anda di bawah", - "@setupEnterCredentialsBelow": { - "description": "Prompt to enter credentials" - }, - "setupUsingDeezer": "Menggunakan Deezer (tidak perlu akun)", - "@setupUsingDeezer": { - "description": "Status when using Deezer" - }, - "setupEnterClientId": "Masukkan Spotify Client ID", - "@setupEnterClientId": { - "description": "Placeholder for client ID field" - }, - "setupEnterClientSecret": "Masukkan Spotify Client Secret", - "@setupEnterClientSecret": { - "description": "Placeholder for client secret field" - }, - "setupGetFreeCredentials": "Dapatkan kredensial API gratis dari Spotify Developer Dashboard.", - "@setupGetFreeCredentials": { - "description": "Info about getting Spotify credentials" - }, - "setupEnableNotifications": "Aktifkan Notifikasi", - "@setupEnableNotifications": { - "description": "Button to enable notifications" - }, - "setupProceedToNextStep": "Anda dapat melanjutkan ke langkah berikutnya.", - "@setupProceedToNextStep": { - "description": "Message after completing a step" - }, - "setupNotificationProgressDescription": "Anda akan menerima notifikasi progres unduhan.", - "@setupNotificationProgressDescription": { - "description": "Info about notification usage" - }, - "setupNotificationBackgroundDescription": "Dapatkan notifikasi tentang progres dan penyelesaian unduhan. Ini membantu Anda melacak unduhan saat aplikasi di latar belakang.", - "@setupNotificationBackgroundDescription": { - "description": "Detailed notification explanation" - }, - "setupSkipForNow": "Lewati untuk sekarang", - "@setupSkipForNow": { - "description": "Skip button text" - }, - "setupBack": "Kembali", - "@setupBack": { - "description": "Back button text" - }, - "setupNext": "Lanjut", - "@setupNext": { - "description": "Next button text" - }, - "setupGetStarted": "Mulai", - "@setupGetStarted": { - "description": "Final setup button" - }, - "setupSkipAndStart": "Lewati & Mulai", - "@setupSkipAndStart": { - "description": "Skip setup and start app" - }, - "setupAllowAccessToManageFiles": "Harap aktifkan \"Izinkan akses untuk mengelola semua file\" di layar berikutnya.", - "@setupAllowAccessToManageFiles": { - "description": "Instruction for file access permission" - }, - "setupGetCredentialsFromSpotify": "Dapatkan kredensial dari developer.spotify.com", - "@setupGetCredentialsFromSpotify": { - "description": "Link text for Spotify developer portal" - }, - "dialogCancel": "Batal", - "@dialogCancel": { - "description": "Dialog button - cancel action" - }, - "dialogOk": "OK", - "@dialogOk": { - "description": "Dialog button - confirm/acknowledge" - }, - "dialogSave": "Simpan", - "@dialogSave": { - "description": "Dialog button - save changes" - }, - "dialogDelete": "Hapus", - "@dialogDelete": { - "description": "Dialog button - delete item" - }, - "dialogRetry": "Coba Lagi", - "@dialogRetry": { - "description": "Dialog button - retry action" - }, - "dialogClose": "Tutup", - "@dialogClose": { - "description": "Dialog button - close dialog" - }, - "dialogYes": "Ya", - "@dialogYes": { - "description": "Dialog button - confirm yes" - }, - "dialogNo": "Tidak", - "@dialogNo": { - "description": "Dialog button - confirm no" - }, - "dialogClear": "Hapus", - "@dialogClear": { - "description": "Dialog button - clear items" - }, - "dialogConfirm": "Konfirmasi", - "@dialogConfirm": { - "description": "Dialog button - confirm action" - }, - "dialogDone": "Selesai", - "@dialogDone": { - "description": "Dialog button - action completed" - }, - "dialogImport": "Impor", - "@dialogImport": { - "description": "Dialog button - import data" - }, - "dialogDiscard": "Buang", - "@dialogDiscard": { - "description": "Dialog button - discard changes" - }, - "dialogRemove": "Hapus", - "@dialogRemove": { - "description": "Dialog button - remove item" - }, - "dialogUninstall": "Copot", - "@dialogUninstall": { - "description": "Dialog button - uninstall extension" - }, - "dialogDiscardChanges": "Buang Perubahan?", - "@dialogDiscardChanges": { - "description": "Dialog title - unsaved changes warning" - }, - "dialogUnsavedChanges": "Anda memiliki perubahan yang belum disimpan. Apakah Anda ingin membuangnya?", - "@dialogUnsavedChanges": { - "description": "Dialog message - unsaved changes" - }, - "dialogDownloadFailed": "Unduhan Gagal", - "@dialogDownloadFailed": { - "description": "Dialog title - download error" - }, - "dialogTrackLabel": "Lagu:", - "@dialogTrackLabel": { - "description": "Label for track name in error dialog" - }, - "dialogArtistLabel": "Artis:", - "@dialogArtistLabel": { - "description": "Label for artist name in error dialog" - }, - "dialogErrorLabel": "Error:", - "@dialogErrorLabel": { - "description": "Label for error message" - }, - "dialogClearAll": "Hapus Semua", - "@dialogClearAll": { - "description": "Dialog title - clear all items" - }, - "dialogClearAllDownloads": "Apakah Anda yakin ingin menghapus semua unduhan?", - "@dialogClearAllDownloads": { - "description": "Dialog message - clear downloads confirmation" - }, - "dialogRemoveFromDevice": "Hapus dari perangkat?", - "@dialogRemoveFromDevice": { - "description": "Dialog title - delete file confirmation" - }, - "dialogRemoveExtension": "Hapus Ekstensi", - "@dialogRemoveExtension": { - "description": "Dialog title - uninstall extension" - }, - "dialogRemoveExtensionMessage": "Apakah Anda yakin ingin menghapus ekstensi ini? Tindakan ini tidak dapat dibatalkan.", - "@dialogRemoveExtensionMessage": { - "description": "Dialog message - uninstall confirmation" - }, - "dialogUninstallExtension": "Copot Ekstensi?", - "@dialogUninstallExtension": { - "description": "Dialog title - uninstall extension" - }, - "dialogUninstallExtensionMessage": "Apakah Anda yakin ingin menghapus {extensionName}?", - "@dialogUninstallExtensionMessage": { - "description": "Dialog message - uninstall specific extension", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "dialogClearHistoryTitle": "Hapus Riwayat", - "@dialogClearHistoryTitle": { - "description": "Dialog title - clear download history" - }, - "dialogClearHistoryMessage": "Apakah Anda yakin ingin menghapus semua riwayat unduhan? Ini tidak dapat dibatalkan.", - "@dialogClearHistoryMessage": { - "description": "Dialog message - clear history confirmation" - }, - "dialogDeleteSelectedTitle": "Hapus yang Dipilih", - "@dialogDeleteSelectedTitle": { - "description": "Dialog title - delete selected items" - }, - "dialogDeleteSelectedMessage": "Hapus {count} {count, plural, =1{lagu} other{lagu}} dari riwayat?\n\nIni juga akan menghapus file dari penyimpanan.", - "@dialogDeleteSelectedMessage": { - "description": "Dialog message - delete selected tracks", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "dialogImportPlaylistTitle": "Impor Playlist", - "@dialogImportPlaylistTitle": { - "description": "Dialog title - import CSV playlist" - }, - "dialogImportPlaylistMessage": "Ditemukan {count} lagu di CSV. Tambahkan ke antrian unduhan?", - "csvImportTracks": "{count} tracks from CSV", - "@csvImportTracks": { - "description": "Label shown in quality picker for CSV import", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@dialogImportPlaylistMessage": { - "description": "Dialog message - import playlist confirmation", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarAddedToQueue": "Menambahkan \"{trackName}\" ke antrian", - "@snackbarAddedToQueue": { - "description": "Snackbar - track added to download queue", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "snackbarAddedTracksToQueue": "Menambahkan {count} lagu ke antrian", - "@snackbarAddedTracksToQueue": { - "description": "Snackbar - multiple tracks added to queue", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarAlreadyDownloaded": "\"{trackName}\" sudah diunduh", - "@snackbarAlreadyDownloaded": { - "description": "Snackbar - track already exists", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "snackbarAlreadyInLibrary": "\"{trackName}\" already exists in your library", - "@snackbarAlreadyInLibrary": { - "description": "Snackbar - track already exists in local library", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "snackbarHistoryCleared": "Riwayat dihapus", - "@snackbarHistoryCleared": { - "description": "Snackbar - history deleted" - }, - "snackbarCredentialsSaved": "Kredensial disimpan", - "@snackbarCredentialsSaved": { - "description": "Snackbar - Spotify credentials saved" - }, - "snackbarCredentialsCleared": "Kredensial dihapus", - "@snackbarCredentialsCleared": { - "description": "Snackbar - Spotify credentials removed" - }, - "snackbarDeletedTracks": "Menghapus {count} {count, plural, =1{lagu} other{lagu}}", - "@snackbarDeletedTracks": { - "description": "Snackbar - tracks deleted", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarCannotOpenFile": "Tidak dapat membuka file: {error}", - "@snackbarCannotOpenFile": { - "description": "Snackbar - file open error", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "snackbarFillAllFields": "Harap isi semua field", - "@snackbarFillAllFields": { - "description": "Snackbar - validation error" - }, - "snackbarViewQueue": "Lihat Antrian", - "@snackbarViewQueue": { - "description": "Snackbar action - view download queue" - }, - "snackbarFailedToLoad": "Gagal memuat: {error}", - "@snackbarFailedToLoad": { - "description": "Snackbar - loading error", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "snackbarUrlCopied": "URL {platform} disalin ke clipboard", - "@snackbarUrlCopied": { - "description": "Snackbar - URL copied", - "placeholders": { - "platform": { - "type": "String", - "description": "Platform name (Spotify/Deezer)" - } - } - }, - "snackbarFileNotFound": "File tidak ditemukan", - "@snackbarFileNotFound": { - "description": "Snackbar - file doesn't exist" - }, - "snackbarSelectExtFile": "Harap pilih file .spotiflac-ext", - "@snackbarSelectExtFile": { - "description": "Snackbar - wrong file type selected" - }, - "snackbarProviderPrioritySaved": "Prioritas provider disimpan", - "@snackbarProviderPrioritySaved": { - "description": "Snackbar - provider order saved" - }, - "snackbarMetadataProviderSaved": "Prioritas provider metadata disimpan", - "@snackbarMetadataProviderSaved": { - "description": "Snackbar - metadata provider order saved" - }, - "snackbarExtensionInstalled": "{extensionName} terpasang.", - "@snackbarExtensionInstalled": { - "description": "Snackbar - extension installed successfully", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "snackbarExtensionUpdated": "{extensionName} diperbarui.", - "@snackbarExtensionUpdated": { - "description": "Snackbar - extension updated successfully", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "snackbarFailedToInstall": "Gagal memasang ekstensi", - "@snackbarFailedToInstall": { - "description": "Snackbar - extension install error" - }, - "snackbarFailedToUpdate": "Gagal memperbarui ekstensi", - "@snackbarFailedToUpdate": { - "description": "Snackbar - extension update error" - }, - "errorRateLimited": "Dibatasi", - "@errorRateLimited": { - "description": "Error title - too many requests" - }, - "errorRateLimitedMessage": "Terlalu banyak permintaan. Harap tunggu sebentar sebelum mencari lagi.", - "@errorRateLimitedMessage": { - "description": "Error message - rate limit explanation" - }, - "errorFailedToLoad": "Gagal memuat {item}", - "@errorFailedToLoad": { - "description": "Error message - loading failed", - "placeholders": { - "item": { - "type": "String", - "description": "Item that failed to load (album/playlist/etc)" - } - } - }, + "@optionsUseExtensionProviders": { + "description": "Enable extension download providers" + }, + "optionsUseExtensionProvidersOn": "Ekstensi akan dicoba terlebih dahulu", + "@optionsUseExtensionProvidersOn": { + "description": "Status when extension providers enabled" + }, + "optionsUseExtensionProvidersOff": "Hanya menggunakan provider bawaan", + "@optionsUseExtensionProvidersOff": { + "description": "Status when extension providers disabled" + }, + "optionsEmbedLyrics": "Sematkan Lirik", + "@optionsEmbedLyrics": { + "description": "Embed lyrics in audio files" + }, + "optionsEmbedLyricsSubtitle": "Sematkan lirik sinkron ke file FLAC", + "@optionsEmbedLyricsSubtitle": { + "description": "Subtitle for embed lyrics" + }, + "optionsMaxQualityCover": "Cover Kualitas Maksimal", + "@optionsMaxQualityCover": { + "description": "Download highest quality album art" + }, + "optionsMaxQualityCoverSubtitle": "Unduh cover art resolusi tertinggi", + "@optionsMaxQualityCoverSubtitle": { + "description": "Subtitle for max quality cover" + }, + "optionsConcurrentDownloads": "Unduhan Bersamaan", + "@optionsConcurrentDownloads": { + "description": "Number of parallel downloads" + }, + "optionsConcurrentSequential": "Berurutan (1 per waktu)", + "@optionsConcurrentSequential": { + "description": "Download one at a time" + }, + "optionsConcurrentParallel": "{count} unduhan paralel", + "@optionsConcurrentParallel": { + "description": "Multiple parallel downloads", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "optionsConcurrentWarning": "Unduhan paralel dapat memicu pembatasan rate", + "@optionsConcurrentWarning": { + "description": "Warning about rate limits" + }, + "optionsExtensionStore": "Toko Ekstensi", + "@optionsExtensionStore": { + "description": "Show/hide store tab" + }, + "optionsExtensionStoreSubtitle": "Tampilkan tab Toko di navigasi", + "@optionsExtensionStoreSubtitle": { + "description": "Subtitle for extension store toggle" + }, + "optionsCheckUpdates": "Periksa Pembaruan", + "@optionsCheckUpdates": { + "description": "Auto update check toggle" + }, + "optionsCheckUpdatesSubtitle": "Beritahu saat versi baru tersedia", + "@optionsCheckUpdatesSubtitle": { + "description": "Subtitle for update check" + }, + "optionsUpdateChannel": "Saluran Pembaruan", + "@optionsUpdateChannel": { + "description": "Stable vs preview releases" + }, + "optionsUpdateChannelStable": "Hanya rilis stabil", + "@optionsUpdateChannelStable": { + "description": "Only stable updates" + }, + "optionsUpdateChannelPreview": "Dapatkan rilis preview", + "@optionsUpdateChannelPreview": { + "description": "Include beta/preview updates" + }, + "optionsUpdateChannelWarning": "Preview mungkin mengandung bug atau fitur belum lengkap", + "@optionsUpdateChannelWarning": { + "description": "Warning about preview channel" + }, + "optionsClearHistory": "Hapus Riwayat Unduhan", + "@optionsClearHistory": { + "description": "Delete all download history" + }, + "optionsClearHistorySubtitle": "Hapus semua lagu dari riwayat", + "@optionsClearHistorySubtitle": { + "description": "Subtitle for clear history" + }, + "optionsDetailedLogging": "Log Detail", + "@optionsDetailedLogging": { + "description": "Enable verbose logs for debugging" + }, + "optionsDetailedLoggingOn": "Log detail sedang direkam", + "@optionsDetailedLoggingOn": { + "description": "Status when logging enabled" + }, + "optionsDetailedLoggingOff": "Aktifkan untuk laporan bug", + "@optionsDetailedLoggingOff": { + "description": "Status when logging disabled" + }, + "optionsSpotifyCredentials": "Kredensial Spotify", + "@optionsSpotifyCredentials": { + "description": "Spotify API credentials setting" + }, + "optionsSpotifyCredentialsConfigured": "Client ID: {clientId}...", + "@optionsSpotifyCredentialsConfigured": { + "description": "Shows configured client ID preview", + "placeholders": { + "clientId": { + "type": "String" + } + } + }, + "optionsSpotifyCredentialsRequired": "Diperlukan - ketuk untuk mengatur", + "@optionsSpotifyCredentialsRequired": { + "description": "Prompt to set up credentials" + }, + "optionsSpotifyWarning": "Spotify memerlukan kredensial API Anda sendiri. Dapatkan gratis dari developer.spotify.com", + "@optionsSpotifyWarning": { + "description": "Info about Spotify API requirement" + }, + "optionsSpotifyDeprecationWarning": "Spotify search will be deprecated on March 3, 2026 due to Spotify API changes. Please switch to Deezer.", + "@optionsSpotifyDeprecationWarning": { + "description": "Warning about Spotify API deprecation" + }, + "extensionsTitle": "Ekstensi", + "@extensionsTitle": { + "description": "Extensions page title" + }, + "extensionsDisabled": "Nonaktif", + "@extensionsDisabled": { + "description": "Extension status - inactive" + }, + "extensionsVersion": "Versi {version}", + "@extensionsVersion": { + "description": "Extension version display", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "extensionsAuthor": "oleh {author}", + "@extensionsAuthor": { + "description": "Extension author credit", + "placeholders": { + "author": { + "type": "String" + } + } + }, + "extensionsUninstall": "Copot", + "@extensionsUninstall": { + "description": "Uninstall extension button" + }, + "storeTitle": "Toko Ekstensi", + "@storeTitle": { + "description": "Store screen title" + }, + "storeSearch": "Cari ekstensi...", + "@storeSearch": { + "description": "Store search placeholder" + }, + "storeInstall": "Pasang", + "@storeInstall": { + "description": "Install extension button" + }, + "storeInstalled": "Terpasang", + "@storeInstalled": { + "description": "Already installed badge" + }, + "storeUpdate": "Perbarui", + "@storeUpdate": { + "description": "Update available button" + }, + "aboutTitle": "Tentang", + "@aboutTitle": { + "description": "About page title" + }, + "aboutContributors": "Kontributor", + "@aboutContributors": { + "description": "Section for contributors" + }, + "aboutMobileDeveloper": "Pengembang versi mobile", + "@aboutMobileDeveloper": { + "description": "Role description for mobile dev" + }, + "aboutOriginalCreator": "Pembuat SpotiFLAC asli", + "@aboutOriginalCreator": { + "description": "Role description for original creator" + }, + "aboutLogoArtist": "Seniman berbakat yang membuat logo aplikasi kita yang indah!", + "@aboutLogoArtist": { + "description": "Role description for logo artist" + }, + "aboutTranslators": "Translators", + "@aboutTranslators": { + "description": "Section for translators" + }, + "aboutSpecialThanks": "Terima Kasih Khusus", + "@aboutSpecialThanks": { + "description": "Section for special thanks" + }, + "aboutLinks": "Tautan", + "@aboutLinks": { + "description": "Section for external links" + }, + "aboutMobileSource": "Kode sumber mobile", + "@aboutMobileSource": { + "description": "Link to mobile GitHub repo" + }, + "aboutPCSource": "Kode sumber PC", + "@aboutPCSource": { + "description": "Link to PC GitHub repo" + }, + "aboutReportIssue": "Laporkan masalah", + "@aboutReportIssue": { + "description": "Link to report bugs" + }, + "aboutReportIssueSubtitle": "Laporkan masalah yang Anda temui", + "@aboutReportIssueSubtitle": { + "description": "Subtitle for report issue" + }, + "aboutFeatureRequest": "Permintaan fitur", + "@aboutFeatureRequest": { + "description": "Link to suggest features" + }, + "aboutFeatureRequestSubtitle": "Sarankan fitur baru untuk aplikasi", + "@aboutFeatureRequestSubtitle": { + "description": "Subtitle for feature request" + }, + "aboutTelegramChannel": "Telegram Channel", + "@aboutTelegramChannel": { + "description": "Link to Telegram channel" + }, + "aboutTelegramChannelSubtitle": "Announcements and updates", + "@aboutTelegramChannelSubtitle": { + "description": "Subtitle for Telegram channel" + }, + "aboutTelegramChat": "Telegram Community", + "@aboutTelegramChat": { + "description": "Link to Telegram chat group" + }, + "aboutTelegramChatSubtitle": "Chat with other users", + "@aboutTelegramChatSubtitle": { + "description": "Subtitle for Telegram chat" + }, + "aboutSocial": "Social", + "@aboutSocial": { + "description": "Section for social links" + }, + "aboutApp": "Aplikasi", + "@aboutApp": { + "description": "Section for app info" + }, + "aboutVersion": "Versi", + "@aboutVersion": { + "description": "Version info label" + }, + "aboutBinimumDesc": "Pembuat QQDL & HiFi API. Tanpa API ini, unduhan Tidal tidak akan ada!", + "@aboutBinimumDesc": { + "description": "Credit description for binimum" + }, + "aboutSachinsenalDesc": "Pembuat proyek HiFi asli. Fondasi dari integrasi Tidal!", + "@aboutSachinsenalDesc": { + "description": "Credit description for sachinsenal0x64" + }, + "aboutSjdonadoDesc": "Creator of I Don't Have Spotify (IDHS). The fallback link resolver that saves the day!", + "@aboutSjdonadoDesc": { + "description": "Credit description for sjdonado" + }, + "aboutDabMusic": "DAB Music", + "@aboutDabMusic": { + "description": "Name of Qobuz API service - DO NOT TRANSLATE" + }, + "aboutDabMusicDesc": "API streaming Qobuz terbaik. Unduhan Hi-Res tidak akan mungkin tanpa ini!", + "@aboutDabMusicDesc": { + "description": "Credit for DAB Music API" + }, + "aboutSpotiSaver": "SpotiSaver", + "@aboutSpotiSaver": { + "description": "Name of SpotiSaver API service - DO NOT TRANSLATE" + }, + "aboutSpotiSaverDesc": "Tidal Hi-Res FLAC streaming endpoints. A key piece of the lossless puzzle!", + "@aboutSpotiSaverDesc": { + "description": "Credit for SpotiSaver API" + }, + "aboutAppDescription": "Unduh lagu Spotify dalam kualitas lossless dari Tidal, Qobuz, dan Amazon Music.", + "@aboutAppDescription": { + "description": "App description in header card" + }, + "artistAlbums": "Album", + "@artistAlbums": { + "description": "Section header for artist albums" + }, + "artistSingles": "Single & EP", + "@artistSingles": { + "description": "Section header for singles/EPs" + }, + "artistCompilations": "Kompilasi", + "@artistCompilations": { + "description": "Section header for compilations" + }, + "artistPopular": "Populer", + "@artistPopular": { + "description": "Section header for popular/top tracks" + }, + "artistMonthlyListeners": "{count} pendengar bulanan", + "@artistMonthlyListeners": { + "description": "Monthly listener count display", + "placeholders": { + "count": { + "type": "String", + "description": "Formatted listener count" + } + } + }, + "trackMetadataService": "Layanan", + "@trackMetadataService": { + "description": "Metadata field - download service used" + }, + "trackMetadataPlay": "Putar", + "@trackMetadataPlay": { + "description": "Action button - play track" + }, + "trackMetadataShare": "Bagikan", + "@trackMetadataShare": { + "description": "Action button - share track" + }, + "trackMetadataDelete": "Hapus", + "@trackMetadataDelete": { + "description": "Action button - delete track" + }, + "setupGrantPermission": "Berikan Izin", + "@setupGrantPermission": { + "description": "Button to request permission" + }, + "setupSkip": "Lewati untuk sekarang", + "@setupSkip": { + "description": "Skip current step button" + }, + "setupStorageAccessRequired": "Akses Penyimpanan Diperlukan", + "@setupStorageAccessRequired": { + "description": "Title when storage access needed" + }, + "setupStorageAccessMessageAndroid11": "Android 11+ memerlukan izin \"Akses semua file\" untuk menyimpan file ke folder unduhan pilihan Anda.", + "@setupStorageAccessMessageAndroid11": { + "description": "Android 11+ specific explanation" + }, + "setupOpenSettings": "Buka Pengaturan", + "@setupOpenSettings": { + "description": "Button to open system settings" + }, + "setupPermissionDeniedMessage": "Izin ditolak. Harap berikan semua izin untuk melanjutkan.", + "@setupPermissionDeniedMessage": { + "description": "Error when permission denied" + }, + "setupPermissionRequired": "Izin {permissionType} Diperlukan", + "@setupPermissionRequired": { + "description": "Generic permission required title", + "placeholders": { + "permissionType": { + "type": "String", + "description": "Type of permission (Storage/Notification)" + } + } + }, + "setupPermissionRequiredMessage": "Izin {permissionType} diperlukan untuk pengalaman terbaik. Anda dapat mengubahnya nanti di Pengaturan.", + "@setupPermissionRequiredMessage": { + "description": "Generic permission required message", + "placeholders": { + "permissionType": { + "type": "String" + } + } + }, + "setupUseDefaultFolder": "Gunakan Folder Default?", + "@setupUseDefaultFolder": { + "description": "Dialog title for default folder" + }, + "setupNoFolderSelected": "Tidak ada folder dipilih. Apakah Anda ingin menggunakan folder Musik default?", + "@setupNoFolderSelected": { + "description": "Prompt when no folder selected" + }, + "setupUseDefault": "Gunakan Default", + "@setupUseDefault": { + "description": "Button to use default folder" + }, + "setupDownloadLocationTitle": "Lokasi Unduhan", + "@setupDownloadLocationTitle": { + "description": "Download location dialog title" + }, + "setupDownloadLocationIosMessage": "Di iOS, unduhan disimpan ke folder Documents aplikasi. Anda dapat mengaksesnya melalui aplikasi Files.", + "@setupDownloadLocationIosMessage": { + "description": "iOS-specific folder info" + }, + "setupAppDocumentsFolder": "Folder Documents Aplikasi", + "@setupAppDocumentsFolder": { + "description": "iOS documents folder option" + }, + "setupAppDocumentsFolderSubtitle": "Direkomendasikan - dapat diakses via aplikasi Files", + "@setupAppDocumentsFolderSubtitle": { + "description": "Subtitle for documents folder" + }, + "setupChooseFromFiles": "Pilih dari Files", + "@setupChooseFromFiles": { + "description": "iOS file picker option" + }, + "setupChooseFromFilesSubtitle": "Pilih lokasi iCloud atau lainnya", + "@setupChooseFromFilesSubtitle": { + "description": "Subtitle for file picker" + }, + "setupIosEmptyFolderWarning": "Batasan iOS: Folder kosong tidak dapat dipilih. Pilih folder dengan minimal satu file.", + "@setupIosEmptyFolderWarning": { + "description": "iOS folder selection warning" + }, + "setupIcloudNotSupported": "iCloud Drive is not supported. Please use the app Documents folder.", + "@setupIcloudNotSupported": { + "description": "Error when user selects iCloud Drive on iOS" + }, + "setupDownloadInFlac": "Unduh lagu Spotify dalam format FLAC", + "@setupDownloadInFlac": { + "description": "App tagline in setup" + }, + "setupStorageGranted": "Izin Penyimpanan Diberikan!", + "@setupStorageGranted": { + "description": "Success message for storage permission" + }, + "setupStorageRequired": "Izin Penyimpanan Diperlukan", + "@setupStorageRequired": { + "description": "Title when storage permission needed" + }, + "setupStorageDescription": "SpotiFLAC membutuhkan izin penyimpanan untuk menyimpan file musik yang diunduh.", + "@setupStorageDescription": { + "description": "Explanation for storage permission" + }, + "setupNotificationGranted": "Izin Notifikasi Diberikan!", + "@setupNotificationGranted": { + "description": "Success message for notification permission" + }, + "setupNotificationEnable": "Aktifkan Notifikasi", + "@setupNotificationEnable": { + "description": "Button to enable notifications" + }, + "setupFolderChoose": "Pilih Folder Unduhan", + "@setupFolderChoose": { + "description": "Button to choose folder" + }, + "setupFolderDescription": "Pilih folder tempat musik yang diunduh akan disimpan.", + "@setupFolderDescription": { + "description": "Explanation for folder selection" + }, + "setupSelectFolder": "Pilih Folder", + "@setupSelectFolder": { + "description": "Button to select folder" + }, + "setupEnableNotifications": "Aktifkan Notifikasi", + "@setupEnableNotifications": { + "description": "Button to enable notifications" + }, + "setupNotificationBackgroundDescription": "Dapatkan notifikasi tentang progres dan penyelesaian unduhan. Ini membantu Anda melacak unduhan saat aplikasi di latar belakang.", + "@setupNotificationBackgroundDescription": { + "description": "Detailed notification explanation" + }, + "setupSkipForNow": "Lewati untuk sekarang", + "@setupSkipForNow": { + "description": "Skip button text" + }, + "setupNext": "Lanjut", + "@setupNext": { + "description": "Next button text" + }, + "setupGetStarted": "Mulai", + "@setupGetStarted": { + "description": "Final setup button" + }, + "setupAllowAccessToManageFiles": "Harap aktifkan \"Izinkan akses untuk mengelola semua file\" di layar berikutnya.", + "@setupAllowAccessToManageFiles": { + "description": "Instruction for file access permission" + }, + "dialogCancel": "Batal", + "@dialogCancel": { + "description": "Dialog button - cancel action" + }, + "dialogSave": "Simpan", + "@dialogSave": { + "description": "Dialog button - save changes" + }, + "dialogDelete": "Hapus", + "@dialogDelete": { + "description": "Dialog button - delete item" + }, + "dialogRetry": "Coba Lagi", + "@dialogRetry": { + "description": "Dialog button - retry action" + }, + "dialogClear": "Hapus", + "@dialogClear": { + "description": "Dialog button - clear items" + }, + "dialogDone": "Selesai", + "@dialogDone": { + "description": "Dialog button - action completed" + }, + "dialogImport": "Impor", + "@dialogImport": { + "description": "Dialog button - import data" + }, + "dialogDiscard": "Buang", + "@dialogDiscard": { + "description": "Dialog button - discard changes" + }, + "dialogRemove": "Hapus", + "@dialogRemove": { + "description": "Dialog button - remove item" + }, + "dialogUninstall": "Copot", + "@dialogUninstall": { + "description": "Dialog button - uninstall extension" + }, + "dialogDiscardChanges": "Buang Perubahan?", + "@dialogDiscardChanges": { + "description": "Dialog title - unsaved changes warning" + }, + "dialogUnsavedChanges": "Anda memiliki perubahan yang belum disimpan. Apakah Anda ingin membuangnya?", + "@dialogUnsavedChanges": { + "description": "Dialog message - unsaved changes" + }, + "dialogClearAll": "Hapus Semua", + "@dialogClearAll": { + "description": "Dialog title - clear all items" + }, + "dialogRemoveExtension": "Hapus Ekstensi", + "@dialogRemoveExtension": { + "description": "Dialog title - uninstall extension" + }, + "dialogRemoveExtensionMessage": "Apakah Anda yakin ingin menghapus ekstensi ini? Tindakan ini tidak dapat dibatalkan.", + "@dialogRemoveExtensionMessage": { + "description": "Dialog message - uninstall confirmation" + }, + "dialogUninstallExtension": "Copot Ekstensi?", + "@dialogUninstallExtension": { + "description": "Dialog title - uninstall extension" + }, + "dialogUninstallExtensionMessage": "Apakah Anda yakin ingin menghapus {extensionName}?", + "@dialogUninstallExtensionMessage": { + "description": "Dialog message - uninstall specific extension", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "dialogClearHistoryTitle": "Hapus Riwayat", + "@dialogClearHistoryTitle": { + "description": "Dialog title - clear download history" + }, + "dialogClearHistoryMessage": "Apakah Anda yakin ingin menghapus semua riwayat unduhan? Ini tidak dapat dibatalkan.", + "@dialogClearHistoryMessage": { + "description": "Dialog message - clear history confirmation" + }, + "dialogDeleteSelectedTitle": "Hapus yang Dipilih", + "@dialogDeleteSelectedTitle": { + "description": "Dialog title - delete selected items" + }, + "dialogDeleteSelectedMessage": "Hapus {count} {count, plural, =1{lagu} other{lagu}} dari riwayat?\n\nIni juga akan menghapus file dari penyimpanan.", + "@dialogDeleteSelectedMessage": { + "description": "Dialog message - delete selected tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dialogImportPlaylistTitle": "Impor Playlist", + "@dialogImportPlaylistTitle": { + "description": "Dialog title - import CSV playlist" + }, + "dialogImportPlaylistMessage": "Ditemukan {count} lagu di CSV. Tambahkan ke antrian unduhan?", + "csvImportTracks": "{count} tracks from CSV", + "@csvImportTracks": { + "description": "Label shown in quality picker for CSV import", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@dialogImportPlaylistMessage": { + "description": "Dialog message - import playlist confirmation", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarAddedToQueue": "Menambahkan \"{trackName}\" ke antrian", + "@snackbarAddedToQueue": { + "description": "Snackbar - track added to download queue", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "snackbarAddedTracksToQueue": "Menambahkan {count} lagu ke antrian", + "@snackbarAddedTracksToQueue": { + "description": "Snackbar - multiple tracks added to queue", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarAlreadyDownloaded": "\"{trackName}\" sudah diunduh", + "@snackbarAlreadyDownloaded": { + "description": "Snackbar - track already exists", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "snackbarAlreadyInLibrary": "\"{trackName}\" already exists in your library", + "@snackbarAlreadyInLibrary": { + "description": "Snackbar - track already exists in local library", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "snackbarHistoryCleared": "Riwayat dihapus", + "@snackbarHistoryCleared": { + "description": "Snackbar - history deleted" + }, + "snackbarCredentialsSaved": "Kredensial disimpan", + "@snackbarCredentialsSaved": { + "description": "Snackbar - Spotify credentials saved" + }, + "snackbarCredentialsCleared": "Kredensial dihapus", + "@snackbarCredentialsCleared": { + "description": "Snackbar - Spotify credentials removed" + }, + "snackbarDeletedTracks": "Menghapus {count} {count, plural, =1{lagu} other{lagu}}", + "@snackbarDeletedTracks": { + "description": "Snackbar - tracks deleted", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarCannotOpenFile": "Tidak dapat membuka file: {error}", + "@snackbarCannotOpenFile": { + "description": "Snackbar - file open error", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "snackbarFillAllFields": "Harap isi semua field", + "@snackbarFillAllFields": { + "description": "Snackbar - validation error" + }, + "snackbarViewQueue": "Lihat Antrian", + "@snackbarViewQueue": { + "description": "Snackbar action - view download queue" + }, + "snackbarUrlCopied": "URL {platform} disalin ke clipboard", + "@snackbarUrlCopied": { + "description": "Snackbar - URL copied", + "placeholders": { + "platform": { + "type": "String", + "description": "Platform name (Spotify/Deezer)" + } + } + }, + "snackbarFileNotFound": "File tidak ditemukan", + "@snackbarFileNotFound": { + "description": "Snackbar - file doesn't exist" + }, + "snackbarSelectExtFile": "Harap pilih file .spotiflac-ext", + "@snackbarSelectExtFile": { + "description": "Snackbar - wrong file type selected" + }, + "snackbarProviderPrioritySaved": "Prioritas provider disimpan", + "@snackbarProviderPrioritySaved": { + "description": "Snackbar - provider order saved" + }, + "snackbarMetadataProviderSaved": "Prioritas provider metadata disimpan", + "@snackbarMetadataProviderSaved": { + "description": "Snackbar - metadata provider order saved" + }, + "snackbarExtensionInstalled": "{extensionName} terpasang.", + "@snackbarExtensionInstalled": { + "description": "Snackbar - extension installed successfully", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "snackbarExtensionUpdated": "{extensionName} diperbarui.", + "@snackbarExtensionUpdated": { + "description": "Snackbar - extension updated successfully", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "snackbarFailedToInstall": "Gagal memasang ekstensi", + "@snackbarFailedToInstall": { + "description": "Snackbar - extension install error" + }, + "snackbarFailedToUpdate": "Gagal memperbarui ekstensi", + "@snackbarFailedToUpdate": { + "description": "Snackbar - extension update error" + }, + "errorRateLimited": "Dibatasi", + "@errorRateLimited": { + "description": "Error title - too many requests" + }, + "errorRateLimitedMessage": "Terlalu banyak permintaan. Harap tunggu sebentar sebelum mencari lagi.", + "@errorRateLimitedMessage": { + "description": "Error message - rate limit explanation" + }, "errorNoTracksFound": "Tidak ada lagu ditemukan", "@errorNoTracksFound": { "description": "Error - search returned no results" }, - "errorSeekNotSupported": "Menggeser posisi lagu tidak didukung untuk live stream ini", - "@errorSeekNotSupported": { - "description": "Error - seek disabled for live decrypted stream" - }, "errorMissingExtensionSource": "Tidak dapat memuat {item}: sumber ekstensi tidak ada", - "@errorMissingExtensionSource": { - "description": "Error - extension source not available", - "placeholders": { - "item": { - "type": "String" - } - } - }, - "statusQueued": "Mengantri", - "@statusQueued": { - "description": "Download status - waiting in queue" - }, - "statusDownloading": "Mengunduh", - "@statusDownloading": { - "description": "Download status - in progress" - }, - "statusFinalizing": "Menyelesaikan", - "@statusFinalizing": { - "description": "Download status - writing metadata" - }, - "statusCompleted": "Selesai", - "@statusCompleted": { - "description": "Download status - finished" - }, - "statusFailed": "Gagal", - "@statusFailed": { - "description": "Download status - error occurred" - }, - "statusSkipped": "Dilewati", - "@statusSkipped": { - "description": "Download status - already exists" - }, - "statusPaused": "Dijeda", - "@statusPaused": { - "description": "Download status - paused" - }, - "actionPause": "Jeda", - "@actionPause": { - "description": "Action button - pause download" - }, - "actionResume": "Lanjutkan", - "@actionResume": { - "description": "Action button - resume download" - }, - "actionCancel": "Batal", - "@actionCancel": { - "description": "Action button - cancel operation" - }, - "actionStop": "Hentikan", - "@actionStop": { - "description": "Action button - stop operation" - }, - "actionSelect": "Pilih", - "@actionSelect": { - "description": "Action button - enter selection mode" - }, - "actionSelectAll": "Pilih Semua", - "@actionSelectAll": { - "description": "Action button - select all items" - }, - "actionDeselect": "Batal Pilih", - "@actionDeselect": { - "description": "Action button - deselect all" - }, - "actionPaste": "Tempel", - "@actionPaste": { - "description": "Action button - paste from clipboard" - }, - "actionImportCsv": "Impor CSV", - "@actionImportCsv": { - "description": "Action button - import CSV file" - }, - "actionRemoveCredentials": "Hapus Kredensial", - "@actionRemoveCredentials": { - "description": "Action button - delete Spotify credentials" - }, - "actionSaveCredentials": "Simpan Kredensial", - "@actionSaveCredentials": { - "description": "Action button - save Spotify credentials" - }, - "selectionSelected": "{count} dipilih", - "@selectionSelected": { - "description": "Selection count indicator", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "selectionAllSelected": "Semua lagu dipilih", - "@selectionAllSelected": { - "description": "Status - all items selected" - }, - "selectionTapToSelect": "Ketuk lagu untuk memilih", - "@selectionTapToSelect": { - "description": "Hint - how to select items" - }, - "selectionDeleteTracks": "Hapus {count} {count, plural, =1{lagu} other{lagu}}", - "@selectionDeleteTracks": { - "description": "Delete button with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "selectionSelectToDelete": "Pilih lagu untuk dihapus", - "@selectionSelectToDelete": { - "description": "Placeholder when nothing selected" - }, - "progressFetchingMetadata": "Mengambil metadata... {current}/{total}", - "@progressFetchingMetadata": { - "description": "Progress indicator - loading track info", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "progressReadingCsv": "Membaca CSV...", - "@progressReadingCsv": { - "description": "Progress indicator - parsing CSV file" - }, - "searchSongs": "Lagu", - "@searchSongs": { - "description": "Search result category - songs" - }, - "searchArtists": "Artis", - "@searchArtists": { - "description": "Search result category - artists" - }, - "searchAlbums": "Album", - "@searchAlbums": { - "description": "Search result category - albums" - }, - "searchPlaylists": "Playlist", - "@searchPlaylists": { - "description": "Search result category - playlists" - }, - "tooltipPlay": "Putar", - "@tooltipPlay": { - "description": "Tooltip - play button" - }, - "tooltipCancel": "Batal", - "@tooltipCancel": { - "description": "Tooltip - cancel button" - }, - "tooltipStop": "Hentikan", - "@tooltipStop": { - "description": "Tooltip - stop button" - }, - "tooltipRetry": "Coba Lagi", - "@tooltipRetry": { - "description": "Tooltip - retry button" - }, - "tooltipRemove": "Hapus", - "@tooltipRemove": { - "description": "Tooltip - remove button" - }, - "tooltipClear": "Hapus", - "@tooltipClear": { - "description": "Tooltip - clear button" - }, - "tooltipPaste": "Tempel", - "@tooltipPaste": { - "description": "Tooltip - paste button" - }, - "filenameFormat": "Format Nama File", - "@filenameFormat": { - "description": "Setting title - filename pattern" - }, - "filenameFormatPreview": "Pratinjau: {preview}", - "@filenameFormatPreview": { - "description": "Preview of filename pattern", - "placeholders": { - "preview": { - "type": "String" - } - } - }, - "filenameAvailablePlaceholders": "Placeholder yang tersedia:", - "@filenameAvailablePlaceholders": { - "description": "Label for placeholder list" + "@errorMissingExtensionSource": { + "description": "Error - extension source not available", + "placeholders": { + "item": { + "type": "String" + } + } }, - "filenameHint": "{artist} - {title}", - "@filenameHint": { - "description": "Default filename format hint" + "actionPause": "Jeda", + "@actionPause": { + "description": "Action button - pause download" + }, + "actionResume": "Lanjutkan", + "@actionResume": { + "description": "Action button - resume download" + }, + "actionCancel": "Batal", + "@actionCancel": { + "description": "Action button - cancel operation" + }, + "actionSelectAll": "Pilih Semua", + "@actionSelectAll": { + "description": "Action button - select all items" + }, + "actionDeselect": "Batal Pilih", + "@actionDeselect": { + "description": "Action button - deselect all" + }, + "actionRemoveCredentials": "Hapus Kredensial", + "@actionRemoveCredentials": { + "description": "Action button - delete Spotify credentials" + }, + "actionSaveCredentials": "Simpan Kredensial", + "@actionSaveCredentials": { + "description": "Action button - save Spotify credentials" + }, + "selectionSelected": "{count} dipilih", + "@selectionSelected": { + "description": "Selection count indicator", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "selectionAllSelected": "Semua lagu dipilih", + "@selectionAllSelected": { + "description": "Status - all items selected" + }, + "selectionSelectToDelete": "Pilih lagu untuk dihapus", + "@selectionSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "progressFetchingMetadata": "Mengambil metadata... {current}/{total}", + "@progressFetchingMetadata": { + "description": "Progress indicator - loading track info", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "progressReadingCsv": "Membaca CSV...", + "@progressReadingCsv": { + "description": "Progress indicator - parsing CSV file" + }, + "searchSongs": "Lagu", + "@searchSongs": { + "description": "Search result category - songs" + }, + "searchArtists": "Artis", + "@searchArtists": { + "description": "Search result category - artists" + }, + "searchAlbums": "Album", + "@searchAlbums": { + "description": "Search result category - albums" + }, + "searchPlaylists": "Playlist", + "@searchPlaylists": { + "description": "Search result category - playlists" + }, + "tooltipPlay": "Putar", + "@tooltipPlay": { + "description": "Tooltip - play button" + }, + "filenameFormat": "Format Nama File", + "@filenameFormat": { + "description": "Setting title - filename pattern" }, "filenameShowAdvancedTags": "Tampilkan tag lanjutan", "@filenameShowAdvancedTags": { @@ -1576,479 +999,348 @@ "@filenameShowAdvancedTagsDescription": { "description": "Description for advanced filename tag toggle" }, - "folderOrganization": "Organisasi Folder", - "@folderOrganization": { - "description": "Setting title - folder structure" - }, - "folderOrganizationNone": "Tidak ada", - "@folderOrganizationNone": { - "description": "Folder option - flat structure" - }, - "folderOrganizationByArtist": "Berdasarkan Artis", - "@folderOrganizationByArtist": { - "description": "Folder option - artist folders" - }, - "folderOrganizationByAlbum": "Berdasarkan Album", - "@folderOrganizationByAlbum": { - "description": "Folder option - album folders" - }, - "folderOrganizationByArtistAlbum": "Berdasarkan Artis & Album", - "@folderOrganizationByArtistAlbum": { - "description": "Folder option - nested folders" - }, - "folderOrganizationDescription": "Atur file yang diunduh ke dalam folder", - "@folderOrganizationDescription": { - "description": "Folder organization sheet description" - }, - "folderOrganizationNoneSubtitle": "Semua file di folder unduhan", - "@folderOrganizationNoneSubtitle": { - "description": "Subtitle for no organization option" - }, - "folderOrganizationByArtistSubtitle": "Folder terpisah untuk setiap artis", - "@folderOrganizationByArtistSubtitle": { - "description": "Subtitle for artist folder option" - }, - "folderOrganizationByAlbumSubtitle": "Folder terpisah untuk setiap album", - "@folderOrganizationByAlbumSubtitle": { - "description": "Subtitle for album folder option" - }, - "folderOrganizationByArtistAlbumSubtitle": "Folder bersarang untuk artis dan album", - "@folderOrganizationByArtistAlbumSubtitle": { - "description": "Subtitle for nested folder option" - }, - "updateAvailable": "Pembaruan Tersedia", - "@updateAvailable": { - "description": "Update dialog title" - }, - "updateNewVersion": "Versi {version} tersedia", - "@updateNewVersion": { - "description": "Update available message", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "updateDownload": "Unduh", - "@updateDownload": { - "description": "Update button - download update" - }, - "updateLater": "Nanti", - "@updateLater": { - "description": "Update button - dismiss" - }, - "updateChangelog": "Log Perubahan", - "@updateChangelog": { - "description": "Link to changelog" - }, - "updateStartingDownload": "Memulai unduhan...", - "@updateStartingDownload": { - "description": "Update status - initializing" - }, - "updateDownloadFailed": "Unduhan gagal", - "@updateDownloadFailed": { - "description": "Update error title" - }, - "updateFailedMessage": "Gagal mengunduh pembaruan", - "@updateFailedMessage": { - "description": "Update error message" - }, - "updateNewVersionReady": "Versi baru sudah siap", - "@updateNewVersionReady": { - "description": "Update subtitle" - }, - "updateCurrent": "Saat ini", - "@updateCurrent": { - "description": "Label for current version" - }, - "updateNew": "Baru", - "@updateNew": { - "description": "Label for new version" - }, - "updateDownloading": "Mengunduh...", - "@updateDownloading": { - "description": "Update status - downloading" - }, - "updateWhatsNew": "Yang Baru", - "@updateWhatsNew": { - "description": "Changelog section title" - }, - "updateDownloadInstall": "Unduh & Pasang", - "@updateDownloadInstall": { - "description": "Update button - download and install" - }, - "updateDontRemind": "Jangan ingatkan", - "@updateDontRemind": { - "description": "Update button - skip this version" - }, - "providerPriority": "Prioritas Provider", - "@providerPriority": { - "description": "Setting title - download provider order" - }, - "providerPrioritySubtitle": "Seret untuk mengatur ulang provider unduhan", - "@providerPrioritySubtitle": { - "description": "Subtitle for provider priority" - }, - "providerPriorityTitle": "Prioritas Provider", - "@providerPriorityTitle": { - "description": "Provider priority page title" - }, - "providerPriorityDescription": "Seret untuk mengatur ulang urutan provider unduhan. Aplikasi akan mencoba provider dari atas ke bawah saat mengunduh lagu.", - "@providerPriorityDescription": { - "description": "Provider priority page description" - }, - "providerPriorityInfo": "Jika lagu tidak tersedia di provider pertama, aplikasi akan otomatis mencoba yang berikutnya.", - "@providerPriorityInfo": { - "description": "Info tip about fallback behavior" - }, - "providerBuiltIn": "Bawaan", - "@providerBuiltIn": { - "description": "Label for built-in providers (Tidal/Qobuz/Amazon)" - }, - "providerExtension": "Ekstensi", - "@providerExtension": { - "description": "Label for extension-provided providers" - }, - "metadataProviderPriority": "Prioritas Provider Metadata", - "@metadataProviderPriority": { - "description": "Setting title - metadata provider order" - }, - "metadataProviderPrioritySubtitle": "Urutan yang digunakan saat mengambil metadata lagu", - "@metadataProviderPrioritySubtitle": { - "description": "Subtitle for metadata priority" - }, - "metadataProviderPriorityTitle": "Prioritas Metadata", - "@metadataProviderPriorityTitle": { - "description": "Metadata priority page title" - }, - "metadataProviderPriorityDescription": "Seret untuk mengatur ulang urutan provider metadata. Aplikasi akan mencoba provider dari atas ke bawah saat mencari lagu dan mengambil metadata.", - "@metadataProviderPriorityDescription": { - "description": "Metadata priority page description" - }, - "metadataProviderPriorityInfo": "Deezer tidak memiliki batas rate dan direkomendasikan sebagai utama. Spotify mungkin membatasi rate setelah banyak permintaan.", - "@metadataProviderPriorityInfo": { - "description": "Info tip about rate limits" - }, - "metadataNoRateLimits": "Tidak ada batas rate", - "@metadataNoRateLimits": { - "description": "Deezer provider description" - }, - "metadataMayRateLimit": "Mungkin dibatasi rate", - "@metadataMayRateLimit": { - "description": "Spotify provider description" - }, - "logTitle": "Log", - "@logTitle": { - "description": "Logs screen title" - }, - "logCopy": "Salin Log", - "@logCopy": { - "description": "Action - copy logs to clipboard" - }, - "logClear": "Hapus Log", - "@logClear": { - "description": "Action - delete all logs" - }, - "logShare": "Bagikan Log", - "@logShare": { - "description": "Action - share logs file" - }, - "logEmpty": "Belum ada log", - "@logEmpty": { - "description": "Empty state title" - }, - "logCopied": "Log disalin ke clipboard", - "@logCopied": { - "description": "Snackbar - logs copied" - }, - "logSearchHint": "Cari log...", - "@logSearchHint": { - "description": "Log search placeholder" - }, - "logFilterLevel": "Level", - "@logFilterLevel": { - "description": "Filter by log level" - }, - "logFilterSection": "Filter", - "@logFilterSection": { - "description": "Filter section title" - }, - "logShareLogs": "Bagikan log", - "@logShareLogs": { - "description": "Share button tooltip" - }, - "logClearLogs": "Hapus log", - "@logClearLogs": { - "description": "Clear button tooltip" - }, - "logClearLogsTitle": "Hapus Log", - "@logClearLogsTitle": { - "description": "Clear logs dialog title" - }, - "logClearLogsMessage": "Apakah Anda yakin ingin menghapus semua log?", - "@logClearLogsMessage": { - "description": "Clear logs confirmation message" - }, - "logIspBlocking": "PEMBLOKIRAN ISP TERDETEKSI", - "@logIspBlocking": { - "description": "Error category - ISP blocking" - }, - "logRateLimited": "DIBATASI", - "@logRateLimited": { - "description": "Error category - rate limiting" - }, - "logNetworkError": "ERROR JARINGAN", - "@logNetworkError": { - "description": "Error category - network issues" - }, - "logTrackNotFound": "LAGU TIDAK DITEMUKAN", - "@logTrackNotFound": { - "description": "Error category - missing tracks" - }, - "logFilterBySeverity": "Filter log berdasarkan tingkat keparahan", - "@logFilterBySeverity": { - "description": "Filter dialog title" - }, - "logNoLogsYet": "Belum ada log", - "@logNoLogsYet": { - "description": "Empty state title" - }, - "logNoLogsYetSubtitle": "Log akan muncul di sini saat Anda menggunakan aplikasi", - "@logNoLogsYetSubtitle": { - "description": "Empty state subtitle" - }, - "logIssueSummary": "Ringkasan Masalah", - "@logIssueSummary": { - "description": "Section header for error summary" - }, - "logIspBlockingDescription": "ISP Anda mungkin memblokir akses ke layanan unduhan", - "@logIspBlockingDescription": { - "description": "ISP blocking explanation" - }, - "logIspBlockingSuggestion": "Coba gunakan VPN atau ubah DNS ke 1.1.1.1 atau 8.8.8.8", - "@logIspBlockingSuggestion": { - "description": "ISP blocking fix suggestion" - }, - "logRateLimitedDescription": "Terlalu banyak permintaan ke layanan", - "@logRateLimitedDescription": { - "description": "Rate limit explanation" - }, - "logRateLimitedSuggestion": "Tunggu beberapa menit sebelum mencoba lagi", - "@logRateLimitedSuggestion": { - "description": "Rate limit fix suggestion" - }, - "logNetworkErrorDescription": "Masalah koneksi terdeteksi", - "@logNetworkErrorDescription": { - "description": "Network error explanation" - }, - "logNetworkErrorSuggestion": "Periksa koneksi internet Anda", - "@logNetworkErrorSuggestion": { - "description": "Network error fix suggestion" - }, - "logTrackNotFoundDescription": "Beberapa lagu tidak dapat ditemukan di layanan unduhan", - "@logTrackNotFoundDescription": { - "description": "Track not found explanation" - }, - "logTrackNotFoundSuggestion": "Lagu mungkin tidak tersedia dalam kualitas lossless", - "@logTrackNotFoundSuggestion": { - "description": "Track not found explanation" - }, - "logTotalErrors": "Total error: {count}", - "@logTotalErrors": { - "description": "Error count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "logAffected": "Terpengaruh: {domains}", - "@logAffected": { - "description": "Affected domains display", - "placeholders": { - "domains": { - "type": "String" - } - } - }, - "logEntriesFiltered": "Entri ({count} difilter)", - "@logEntriesFiltered": { - "description": "Log count with filter active", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "logEntries": "Entri ({count})", - "@logEntries": { - "description": "Total log count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "credentialsTitle": "Kredensial Spotify", - "@credentialsTitle": { - "description": "Credentials dialog title" - }, - "credentialsDescription": "Masukkan Client ID dan Secret Anda untuk menggunakan kuota aplikasi Spotify Anda sendiri.", - "@credentialsDescription": { - "description": "Credentials dialog explanation" - }, - "credentialsClientId": "Client ID", - "@credentialsClientId": { - "description": "Client ID field label - DO NOT TRANSLATE" - }, - "credentialsClientIdHint": "Tempel Client ID", - "@credentialsClientIdHint": { - "description": "Client ID placeholder" - }, - "credentialsClientSecret": "Client Secret", - "@credentialsClientSecret": { - "description": "Client Secret field label - DO NOT TRANSLATE" - }, - "credentialsClientSecretHint": "Tempel Client Secret", - "@credentialsClientSecretHint": { - "description": "Client Secret placeholder" - }, - "channelStable": "Stabil", - "@channelStable": { - "description": "Update channel - stable releases" - }, - "channelPreview": "Preview", - "@channelPreview": { - "description": "Update channel - beta/preview releases" - }, - "sectionSearchSource": "Sumber Pencarian", - "@sectionSearchSource": { - "description": "Settings section header" - }, - "sectionDownload": "Unduhan", - "@sectionDownload": { - "description": "Settings section header" - }, - "sectionPerformance": "Performa", - "@sectionPerformance": { - "description": "Settings section header" - }, - "sectionApp": "Aplikasi", - "@sectionApp": { - "description": "Settings section header" - }, - "sectionData": "Data", - "@sectionData": { - "description": "Settings section header" - }, - "sectionDebug": "Debug", - "@sectionDebug": { - "description": "Settings section header" - }, - "sectionService": "Layanan", - "@sectionService": { - "description": "Settings section header" - }, - "sectionAudioQuality": "Kualitas Audio", - "@sectionAudioQuality": { - "description": "Settings section header" - }, - "sectionFileSettings": "Pengaturan File", - "@sectionFileSettings": { - "description": "Settings section header" - }, - "sectionLyrics": "Lyrics", - "@sectionLyrics": { - "description": "Settings section header" - }, - "lyricsMode": "Lyrics Mode", - "@lyricsMode": { - "description": "Setting - how to save lyrics" - }, - "lyricsModeDescription": "Choose how lyrics are saved with your downloads", - "@lyricsModeDescription": { - "description": "Lyrics mode picker description" - }, - "lyricsModeEmbed": "Embed in file", - "@lyricsModeEmbed": { - "description": "Lyrics mode option - embed in audio file" - }, - "lyricsModeEmbedSubtitle": "Lyrics stored inside FLAC metadata", - "@lyricsModeEmbedSubtitle": { - "description": "Subtitle for embed option" - }, - "lyricsModeExternal": "External .lrc file", - "@lyricsModeExternal": { - "description": "Lyrics mode option - separate LRC file" - }, - "lyricsModeExternalSubtitle": "Separate .lrc file for players like Samsung Music", - "@lyricsModeExternalSubtitle": { - "description": "Subtitle for external option" - }, - "lyricsModeBoth": "Both", - "@lyricsModeBoth": { - "description": "Lyrics mode option - embed and external" - }, - "lyricsModeBothSubtitle": "Embed and save .lrc file", - "@lyricsModeBothSubtitle": { - "description": "Subtitle for both option" - }, - "sectionColor": "Warna", - "@sectionColor": { - "description": "Settings section header" - }, - "sectionTheme": "Tema", - "@sectionTheme": { - "description": "Settings section header" - }, - "sectionLayout": "Tata Letak", - "@sectionLayout": { - "description": "Settings section header" - }, - "sectionLanguage": "Bahasa", - "@sectionLanguage": { - "description": "Settings section header for language" - }, - "appearanceLanguage": "Bahasa Aplikasi", - "@appearanceLanguage": { - "description": "Language setting title" - }, - "appearanceLanguageSubtitle": "Pilih bahasa yang kamu inginkan", - "@appearanceLanguageSubtitle": { - "description": "Language setting subtitle" - }, - "settingsAppearanceSubtitle": "Tema, warna, tampilan", - "@settingsAppearanceSubtitle": { - "description": "Appearance settings description" - }, - "settingsDownloadSubtitle": "Layanan, kualitas, format nama file", - "@settingsDownloadSubtitle": { - "description": "Download settings description" - }, - "settingsOptionsSubtitle": "Fallback, lirik, cover art, pembaruan", - "@settingsOptionsSubtitle": { - "description": "Options settings description" - }, - "settingsExtensionsSubtitle": "Kelola provider unduhan", - "@settingsExtensionsSubtitle": { - "description": "Extensions settings description" - }, - "settingsLogsSubtitle": "Lihat log aplikasi untuk debugging", - "@settingsLogsSubtitle": { - "description": "Logs settings description" - }, - "loadingSharedLink": "Memuat link yang dibagikan...", - "@loadingSharedLink": { - "description": "Status when opening shared URL" - }, - "pressBackAgainToExit": "Tekan kembali sekali lagi untuk keluar", - "@pressBackAgainToExit": { - "description": "Exit confirmation message" - }, - "tracksHeader": "Lagu", - "@tracksHeader": { - "description": "Section header for track list" - }, + "folderOrganizationNone": "Tidak ada", + "@folderOrganizationNone": { + "description": "Folder option - flat structure" + }, + "folderOrganizationByArtist": "Berdasarkan Artis", + "@folderOrganizationByArtist": { + "description": "Folder option - artist folders" + }, + "folderOrganizationByAlbum": "Berdasarkan Album", + "@folderOrganizationByAlbum": { + "description": "Folder option - album folders" + }, + "folderOrganizationByArtistAlbum": "Berdasarkan Artis & Album", + "@folderOrganizationByArtistAlbum": { + "description": "Folder option - nested folders" + }, + "folderOrganizationDescription": "Atur file yang diunduh ke dalam folder", + "@folderOrganizationDescription": { + "description": "Folder organization sheet description" + }, + "folderOrganizationNoneSubtitle": "Semua file di folder unduhan", + "@folderOrganizationNoneSubtitle": { + "description": "Subtitle for no organization option" + }, + "folderOrganizationByArtistSubtitle": "Folder terpisah untuk setiap artis", + "@folderOrganizationByArtistSubtitle": { + "description": "Subtitle for artist folder option" + }, + "folderOrganizationByAlbumSubtitle": "Folder terpisah untuk setiap album", + "@folderOrganizationByAlbumSubtitle": { + "description": "Subtitle for album folder option" + }, + "folderOrganizationByArtistAlbumSubtitle": "Folder bersarang untuk artis dan album", + "@folderOrganizationByArtistAlbumSubtitle": { + "description": "Subtitle for nested folder option" + }, + "updateAvailable": "Pembaruan Tersedia", + "@updateAvailable": { + "description": "Update dialog title" + }, + "updateLater": "Nanti", + "@updateLater": { + "description": "Update button - dismiss" + }, + "updateStartingDownload": "Memulai unduhan...", + "@updateStartingDownload": { + "description": "Update status - initializing" + }, + "updateDownloadFailed": "Unduhan gagal", + "@updateDownloadFailed": { + "description": "Update error title" + }, + "updateFailedMessage": "Gagal mengunduh pembaruan", + "@updateFailedMessage": { + "description": "Update error message" + }, + "updateNewVersionReady": "Versi baru sudah siap", + "@updateNewVersionReady": { + "description": "Update subtitle" + }, + "updateCurrent": "Saat ini", + "@updateCurrent": { + "description": "Label for current version" + }, + "updateNew": "Baru", + "@updateNew": { + "description": "Label for new version" + }, + "updateDownloading": "Mengunduh...", + "@updateDownloading": { + "description": "Update status - downloading" + }, + "updateWhatsNew": "Yang Baru", + "@updateWhatsNew": { + "description": "Changelog section title" + }, + "updateDownloadInstall": "Unduh & Pasang", + "@updateDownloadInstall": { + "description": "Update button - download and install" + }, + "updateDontRemind": "Jangan ingatkan", + "@updateDontRemind": { + "description": "Update button - skip this version" + }, + "providerPriorityTitle": "Prioritas Provider", + "@providerPriorityTitle": { + "description": "Provider priority page title" + }, + "providerPriorityDescription": "Seret untuk mengatur ulang urutan provider unduhan. Aplikasi akan mencoba provider dari atas ke bawah saat mengunduh lagu.", + "@providerPriorityDescription": { + "description": "Provider priority page description" + }, + "providerPriorityInfo": "Jika lagu tidak tersedia di provider pertama, aplikasi akan otomatis mencoba yang berikutnya.", + "@providerPriorityInfo": { + "description": "Info tip about fallback behavior" + }, + "providerBuiltIn": "Bawaan", + "@providerBuiltIn": { + "description": "Label for built-in providers (Tidal/Qobuz/Amazon)" + }, + "providerExtension": "Ekstensi", + "@providerExtension": { + "description": "Label for extension-provided providers" + }, + "metadataProviderPriorityTitle": "Prioritas Metadata", + "@metadataProviderPriorityTitle": { + "description": "Metadata priority page title" + }, + "metadataProviderPriorityDescription": "Seret untuk mengatur ulang urutan provider metadata. Aplikasi akan mencoba provider dari atas ke bawah saat mencari lagu dan mengambil metadata.", + "@metadataProviderPriorityDescription": { + "description": "Metadata priority page description" + }, + "metadataProviderPriorityInfo": "Deezer tidak memiliki batas rate dan direkomendasikan sebagai utama. Spotify mungkin membatasi rate setelah banyak permintaan.", + "@metadataProviderPriorityInfo": { + "description": "Info tip about rate limits" + }, + "metadataNoRateLimits": "Tidak ada batas rate", + "@metadataNoRateLimits": { + "description": "Deezer provider description" + }, + "metadataMayRateLimit": "Mungkin dibatasi rate", + "@metadataMayRateLimit": { + "description": "Spotify provider description" + }, + "logTitle": "Log", + "@logTitle": { + "description": "Logs screen title" + }, + "logCopied": "Log disalin ke clipboard", + "@logCopied": { + "description": "Snackbar - logs copied" + }, + "logSearchHint": "Cari log...", + "@logSearchHint": { + "description": "Log search placeholder" + }, + "logFilterLevel": "Level", + "@logFilterLevel": { + "description": "Filter by log level" + }, + "logFilterSection": "Filter", + "@logFilterSection": { + "description": "Filter section title" + }, + "logShareLogs": "Bagikan log", + "@logShareLogs": { + "description": "Share button tooltip" + }, + "logClearLogs": "Hapus log", + "@logClearLogs": { + "description": "Clear button tooltip" + }, + "logClearLogsTitle": "Hapus Log", + "@logClearLogsTitle": { + "description": "Clear logs dialog title" + }, + "logClearLogsMessage": "Apakah Anda yakin ingin menghapus semua log?", + "@logClearLogsMessage": { + "description": "Clear logs confirmation message" + }, + "logFilterBySeverity": "Filter log berdasarkan tingkat keparahan", + "@logFilterBySeverity": { + "description": "Filter dialog title" + }, + "logNoLogsYet": "Belum ada log", + "@logNoLogsYet": { + "description": "Empty state title" + }, + "logNoLogsYetSubtitle": "Log akan muncul di sini saat Anda menggunakan aplikasi", + "@logNoLogsYetSubtitle": { + "description": "Empty state subtitle" + }, + "logEntriesFiltered": "Entri ({count} difilter)", + "@logEntriesFiltered": { + "description": "Log count with filter active", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "logEntries": "Entri ({count})", + "@logEntries": { + "description": "Total log count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "credentialsTitle": "Kredensial Spotify", + "@credentialsTitle": { + "description": "Credentials dialog title" + }, + "credentialsDescription": "Masukkan Client ID dan Secret Anda untuk menggunakan kuota aplikasi Spotify Anda sendiri.", + "@credentialsDescription": { + "description": "Credentials dialog explanation" + }, + "credentialsClientId": "Client ID", + "@credentialsClientId": { + "description": "Client ID field label - DO NOT TRANSLATE" + }, + "credentialsClientIdHint": "Tempel Client ID", + "@credentialsClientIdHint": { + "description": "Client ID placeholder" + }, + "credentialsClientSecret": "Client Secret", + "@credentialsClientSecret": { + "description": "Client Secret field label - DO NOT TRANSLATE" + }, + "credentialsClientSecretHint": "Tempel Client Secret", + "@credentialsClientSecretHint": { + "description": "Client Secret placeholder" + }, + "channelStable": "Stabil", + "@channelStable": { + "description": "Update channel - stable releases" + }, + "channelPreview": "Preview", + "@channelPreview": { + "description": "Update channel - beta/preview releases" + }, + "sectionSearchSource": "Sumber Pencarian", + "@sectionSearchSource": { + "description": "Settings section header" + }, + "sectionDownload": "Unduhan", + "@sectionDownload": { + "description": "Settings section header" + }, + "sectionPerformance": "Performa", + "@sectionPerformance": { + "description": "Settings section header" + }, + "sectionApp": "Aplikasi", + "@sectionApp": { + "description": "Settings section header" + }, + "sectionData": "Data", + "@sectionData": { + "description": "Settings section header" + }, + "sectionDebug": "Debug", + "@sectionDebug": { + "description": "Settings section header" + }, + "sectionService": "Layanan", + "@sectionService": { + "description": "Settings section header" + }, + "sectionAudioQuality": "Kualitas Audio", + "@sectionAudioQuality": { + "description": "Settings section header" + }, + "sectionFileSettings": "Pengaturan File", + "@sectionFileSettings": { + "description": "Settings section header" + }, + "sectionLyrics": "Lyrics", + "@sectionLyrics": { + "description": "Settings section header" + }, + "lyricsMode": "Lyrics Mode", + "@lyricsMode": { + "description": "Setting - how to save lyrics" + }, + "lyricsModeDescription": "Choose how lyrics are saved with your downloads", + "@lyricsModeDescription": { + "description": "Lyrics mode picker description" + }, + "lyricsModeEmbed": "Embed in file", + "@lyricsModeEmbed": { + "description": "Lyrics mode option - embed in audio file" + }, + "lyricsModeEmbedSubtitle": "Lyrics stored inside FLAC metadata", + "@lyricsModeEmbedSubtitle": { + "description": "Subtitle for embed option" + }, + "lyricsModeExternal": "External .lrc file", + "@lyricsModeExternal": { + "description": "Lyrics mode option - separate LRC file" + }, + "lyricsModeExternalSubtitle": "Separate .lrc file for players like Samsung Music", + "@lyricsModeExternalSubtitle": { + "description": "Subtitle for external option" + }, + "lyricsModeBoth": "Both", + "@lyricsModeBoth": { + "description": "Lyrics mode option - embed and external" + }, + "lyricsModeBothSubtitle": "Embed and save .lrc file", + "@lyricsModeBothSubtitle": { + "description": "Subtitle for both option" + }, + "sectionColor": "Warna", + "@sectionColor": { + "description": "Settings section header" + }, + "sectionTheme": "Tema", + "@sectionTheme": { + "description": "Settings section header" + }, + "sectionLayout": "Tata Letak", + "@sectionLayout": { + "description": "Settings section header" + }, + "sectionLanguage": "Bahasa", + "@sectionLanguage": { + "description": "Settings section header for language" + }, + "appearanceLanguage": "Bahasa Aplikasi", + "@appearanceLanguage": { + "description": "Language setting title" + }, + "settingsAppearanceSubtitle": "Tema, warna, tampilan", + "@settingsAppearanceSubtitle": { + "description": "Appearance settings description" + }, + "settingsDownloadSubtitle": "Layanan, kualitas, format nama file", + "@settingsDownloadSubtitle": { + "description": "Download settings description" + }, + "settingsOptionsSubtitle": "Fallback, lirik, cover art, pembaruan", + "@settingsOptionsSubtitle": { + "description": "Options settings description" + }, + "settingsExtensionsSubtitle": "Kelola provider unduhan", + "@settingsExtensionsSubtitle": { + "description": "Extensions settings description" + }, + "settingsLogsSubtitle": "Lihat log aplikasi untuk debugging", + "@settingsLogsSubtitle": { + "description": "Logs settings description" + }, + "loadingSharedLink": "Memuat link yang dibagikan...", + "@loadingSharedLink": { + "description": "Status when opening shared URL" + }, + "pressBackAgainToExit": "Tekan kembali sekali lagi untuk keluar", + "@pressBackAgainToExit": { + "description": "Exit confirmation message" + }, "downloadAllCount": "Unduh Semua ({count})", "@downloadAllCount": { "description": "Download all button with count", @@ -2058,491 +1350,405 @@ } } }, - "playAllCount": "Putar Semua ({count})", - "@playAllCount": { - "description": "Play all button with count", + "tracksCount": "{count, plural, =1{1 lagu} other{{count} lagu}}", + "@tracksCount": { + "description": "Track count display", "placeholders": { "count": { "type": "int" } } }, - "tracksCount": "{count, plural, =1{1 lagu} other{{count} lagu}}", - "@tracksCount": { - "description": "Track count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "trackCopyFilePath": "Salin lokasi file", - "@trackCopyFilePath": { - "description": "Action - copy file path" - }, - "trackRemoveFromDevice": "Hapus dari perangkat", - "@trackRemoveFromDevice": { - "description": "Action - delete downloaded file" - }, - "trackLoadLyrics": "Muat Lirik", - "@trackLoadLyrics": { - "description": "Action - fetch lyrics" - }, - "trackMetadata": "Metadata", - "@trackMetadata": { - "description": "Tab title - track metadata" - }, - "trackFileInfo": "Info File", - "@trackFileInfo": { - "description": "Tab title - file information" - }, - "trackLyrics": "Lirik", - "@trackLyrics": { - "description": "Tab title - lyrics" - }, - "trackFileNotFound": "File tidak ditemukan", - "@trackFileNotFound": { - "description": "Error - file doesn't exist" - }, - "trackOpenInDeezer": "Buka di Deezer", - "@trackOpenInDeezer": { - "description": "Action - open track in Deezer app" - }, - "trackOpenInSpotify": "Buka di Spotify", - "@trackOpenInSpotify": { - "description": "Action - open track in Spotify app" - }, - "trackTrackName": "Nama lagu", - "@trackTrackName": { - "description": "Metadata label - track title" - }, - "trackArtist": "Artis", - "@trackArtist": { - "description": "Metadata label - artist name" - }, - "trackAlbumArtist": "Artis album", - "@trackAlbumArtist": { - "description": "Metadata label - album artist" - }, - "trackAlbum": "Album", - "@trackAlbum": { - "description": "Metadata label - album name" - }, - "trackTrackNumber": "Nomor lagu", - "@trackTrackNumber": { - "description": "Metadata label - track number" - }, - "trackDiscNumber": "Nomor disc", - "@trackDiscNumber": { - "description": "Metadata label - disc number" - }, - "trackDuration": "Durasi", - "@trackDuration": { - "description": "Metadata label - track length" - }, - "trackAudioQuality": "Kualitas audio", - "@trackAudioQuality": { - "description": "Metadata label - audio quality" - }, - "trackReleaseDate": "Tanggal rilis", - "@trackReleaseDate": { - "description": "Metadata label - release date" - }, - "trackGenre": "Genre", - "@trackGenre": { - "description": "Metadata label - music genre" - }, - "trackLabel": "Label", - "@trackLabel": { - "description": "Metadata label - record label" - }, - "trackCopyright": "Copyright", - "@trackCopyright": { - "description": "Metadata label - copyright information" - }, - "trackDownloaded": "Diunduh", - "@trackDownloaded": { - "description": "Metadata label - download date" - }, - "trackCopyLyrics": "Salin lirik", - "@trackCopyLyrics": { - "description": "Action - copy lyrics to clipboard" - }, - "trackLyricsNotAvailable": "Lirik tidak tersedia untuk lagu ini", - "@trackLyricsNotAvailable": { - "description": "Message when lyrics not found" - }, - "trackLyricsTimeout": "Permintaan timeout. Coba lagi nanti.", - "@trackLyricsTimeout": { - "description": "Message when lyrics request times out" - }, - "trackLyricsLoadFailed": "Gagal memuat lirik", - "@trackLyricsLoadFailed": { - "description": "Message when lyrics loading fails" - }, - "trackEmbedLyrics": "Embed Lyrics", - "@trackEmbedLyrics": { - "description": "Action - embed lyrics into audio file" - }, - "trackLyricsEmbedded": "Lyrics embedded successfully", - "@trackLyricsEmbedded": { - "description": "Snackbar - lyrics saved to file" - }, - "trackInstrumental": "Instrumental track", - "@trackInstrumental": { - "description": "Message when track is instrumental (no lyrics)" - }, - "trackCopiedToClipboard": "Disalin ke clipboard", - "@trackCopiedToClipboard": { - "description": "Snackbar - content copied" - }, - "trackDeleteConfirmTitle": "Hapus dari perangkat?", - "@trackDeleteConfirmTitle": { - "description": "Delete confirmation title" - }, - "trackDeleteConfirmMessage": "Ini akan menghapus file unduhan secara permanen dan menghapusnya dari riwayat Anda.", - "@trackDeleteConfirmMessage": { - "description": "Delete confirmation message" - }, - "trackCannotOpen": "Tidak dapat membuka: {message}", - "@trackCannotOpen": { - "description": "Error opening file", - "placeholders": { - "message": { - "type": "String" - } - } - }, - "dateToday": "Hari ini", - "@dateToday": { - "description": "Relative date - today" - }, - "dateYesterday": "Kemarin", - "@dateYesterday": { - "description": "Relative date - yesterday" - }, - "dateDaysAgo": "{count} hari lalu", - "@dateDaysAgo": { - "description": "Relative date - days ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "dateWeeksAgo": "{count} minggu lalu", - "@dateWeeksAgo": { - "description": "Relative date - weeks ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "dateMonthsAgo": "{count} bulan lalu", - "@dateMonthsAgo": { - "description": "Relative date - months ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "concurrentSequential": "Berurutan", - "@concurrentSequential": { - "description": "Download mode - one at a time" - }, - "concurrentParallel2": "2 Paralel", - "@concurrentParallel2": { - "description": "Download mode - 2 simultaneous" - }, - "concurrentParallel3": "3 Paralel", - "@concurrentParallel3": { - "description": "Download mode - 3 simultaneous" - }, - "tapToSeeError": "Ketuk untuk melihat detail error", - "@tapToSeeError": { - "description": "Tooltip for failed download" - }, - "storeFilterAll": "Semua", - "@storeFilterAll": { - "description": "Store filter - all extensions" - }, - "storeFilterMetadata": "Metadata", - "@storeFilterMetadata": { - "description": "Store filter - metadata providers" - }, - "storeFilterDownload": "Unduhan", - "@storeFilterDownload": { - "description": "Store filter - download providers" - }, - "storeFilterUtility": "Utilitas", - "@storeFilterUtility": { - "description": "Store filter - utility extensions" - }, - "storeFilterLyrics": "Lirik", - "@storeFilterLyrics": { - "description": "Store filter - lyrics providers" - }, - "storeFilterIntegration": "Integrasi", - "@storeFilterIntegration": { - "description": "Store filter - integrations" - }, - "storeClearFilters": "Hapus filter", - "@storeClearFilters": { - "description": "Button to clear all filters" - }, - "storeNoResults": "Tidak ada ekstensi ditemukan", - "@storeNoResults": { - "description": "Empty state when no extensions match filters" - }, - "extensionProviderPriority": "Prioritas Provider", - "@extensionProviderPriority": { - "description": "Extension capability - provider priority" - }, - "extensionInstallButton": "Pasang Ekstensi", - "@extensionInstallButton": { - "description": "Button to install extension" - }, - "extensionDefaultProvider": "Default (Deezer/Spotify)", - "@extensionDefaultProvider": { - "description": "Default search provider option" - }, - "extensionDefaultProviderSubtitle": "Gunakan pencarian bawaan", - "@extensionDefaultProviderSubtitle": { - "description": "Subtitle for default provider" - }, - "extensionAuthor": "Pembuat", - "@extensionAuthor": { - "description": "Extension detail - author" - }, - "extensionId": "ID", - "@extensionId": { - "description": "Extension detail - unique ID" - }, - "extensionError": "Error", - "@extensionError": { - "description": "Extension detail - error message" - }, - "extensionCapabilities": "Kemampuan", - "@extensionCapabilities": { - "description": "Section header - extension features" - }, - "extensionMetadataProvider": "Provider Metadata", - "@extensionMetadataProvider": { - "description": "Capability - provides metadata" - }, - "extensionDownloadProvider": "Provider Unduhan", - "@extensionDownloadProvider": { - "description": "Capability - provides downloads" - }, - "extensionLyricsProvider": "Provider Lirik", - "@extensionLyricsProvider": { - "description": "Capability - provides lyrics" - }, - "extensionUrlHandler": "Penanganan URL", - "@extensionUrlHandler": { - "description": "Capability - handles URLs" - }, - "extensionQualityOptions": "Opsi Kualitas", - "@extensionQualityOptions": { - "description": "Capability - quality selection" - }, - "extensionPostProcessingHooks": "Hook Pasca-Pemrosesan", - "@extensionPostProcessingHooks": { - "description": "Capability - post-processing" - }, - "extensionPermissions": "Izin", - "@extensionPermissions": { - "description": "Section header - required permissions" - }, - "extensionSettings": "Pengaturan", - "@extensionSettings": { - "description": "Section header - extension settings" - }, - "extensionRemoveButton": "Hapus Ekstensi", - "@extensionRemoveButton": { - "description": "Button to uninstall extension" - }, - "extensionUpdated": "Diperbarui", - "@extensionUpdated": { - "description": "Extension detail - last update" - }, - "extensionMinAppVersion": "Versi App Minimum", - "@extensionMinAppVersion": { - "description": "Extension detail - minimum app version" - }, - "extensionCustomTrackMatching": "Pencocokan Lagu Kustom", - "@extensionCustomTrackMatching": { - "description": "Capability - custom track matching algorithm" - }, - "extensionPostProcessing": "Pasca-Pemrosesan", - "@extensionPostProcessing": { - "description": "Capability - post-download processing" - }, - "extensionHooksAvailable": "{count} hook tersedia", - "@extensionHooksAvailable": { - "description": "Post-processing hooks count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionPatternsCount": "{count} pola", - "@extensionPatternsCount": { - "description": "URL patterns count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionStrategy": "Strategi: {strategy}", - "@extensionStrategy": { - "description": "Track matching strategy name", - "placeholders": { - "strategy": { - "type": "String" - } - } - }, - "extensionsProviderPrioritySection": "Prioritas Provider", - "@extensionsProviderPrioritySection": { - "description": "Section header - provider priority" - }, - "extensionsInstalledSection": "Ekstensi Terpasang", - "@extensionsInstalledSection": { - "description": "Section header - installed extensions" - }, - "extensionsNoExtensions": "Tidak ada ekstensi terpasang", - "@extensionsNoExtensions": { - "description": "Empty state - no extensions" - }, - "extensionsNoExtensionsSubtitle": "Pasang file .spotiflac-ext untuk menambahkan provider baru", - "@extensionsNoExtensionsSubtitle": { - "description": "Empty state subtitle" - }, - "extensionsInstallButton": "Pasang Ekstensi", - "@extensionsInstallButton": { - "description": "Button to install extension from file" - }, - "extensionsInfoTip": "Ekstensi dapat menambahkan provider metadata dan unduhan baru. Hanya pasang ekstensi dari sumber terpercaya.", - "@extensionsInfoTip": { - "description": "Security warning about extensions" - }, - "extensionsInstalledSuccess": "Ekstensi berhasil dipasang", - "@extensionsInstalledSuccess": { - "description": "Success message after install" - }, - "extensionsDownloadPriority": "Prioritas Unduhan", - "@extensionsDownloadPriority": { - "description": "Setting - download provider order" - }, - "extensionsDownloadPrioritySubtitle": "Atur urutan layanan unduhan", - "@extensionsDownloadPrioritySubtitle": { - "description": "Subtitle for download priority" - }, - "extensionsNoDownloadProvider": "Tidak ada ekstensi dengan provider unduhan", - "@extensionsNoDownloadProvider": { - "description": "Empty state - no download providers" - }, - "extensionsMetadataPriority": "Prioritas Metadata", - "@extensionsMetadataPriority": { - "description": "Setting - metadata provider order" - }, - "extensionsMetadataPrioritySubtitle": "Atur urutan sumber pencarian & metadata", - "@extensionsMetadataPrioritySubtitle": { - "description": "Subtitle for metadata priority" - }, - "extensionsNoMetadataProvider": "Tidak ada ekstensi dengan provider metadata", - "@extensionsNoMetadataProvider": { - "description": "Empty state - no metadata providers" - }, - "extensionsSearchProvider": "Provider Pencarian", - "@extensionsSearchProvider": { - "description": "Setting - search provider selection" - }, - "extensionsNoCustomSearch": "Tidak ada ekstensi dengan pencarian kustom", - "@extensionsNoCustomSearch": { - "description": "Empty state - no search providers" - }, - "extensionsSearchProviderDescription": "Pilih layanan yang digunakan untuk mencari lagu", - "@extensionsSearchProviderDescription": { - "description": "Search provider setting description" - }, - "extensionsCustomSearch": "Pencarian kustom", - "@extensionsCustomSearch": { - "description": "Label for custom search provider" - }, - "extensionsErrorLoading": "Error memuat ekstensi", - "@extensionsErrorLoading": { - "description": "Error message when extension fails to load" - }, - "qualityFlacLossless": "FLAC Lossless", - "@qualityFlacLossless": { - "description": "Quality option - CD quality FLAC" - }, - "qualityFlacLosslessSubtitle": "16-bit / 44.1kHz", - "@qualityFlacLosslessSubtitle": { - "description": "Technical spec for lossless" - }, - "qualityHiResFlac": "Hi-Res FLAC", - "@qualityHiResFlac": { - "description": "Quality option - high resolution FLAC" - }, - "qualityHiResFlacSubtitle": "24-bit / hingga 96kHz", - "@qualityHiResFlacSubtitle": { - "description": "Technical spec for hi-res" - }, - "qualityHiResFlacMax": "Hi-Res FLAC Max", - "@qualityHiResFlacMax": { - "description": "Quality option - maximum resolution FLAC" - }, - "qualityHiResFlacMaxSubtitle": "24-bit / hingga 192kHz", - "@qualityHiResFlacMaxSubtitle": { - "description": "Technical spec for hi-res max" - }, - "qualityLossy": "Lossy", - "@qualityLossy": { - "description": "Quality option - lossy format (MP3/Opus)" - }, - "qualityLossyMp3Subtitle": "MP3 320kbps (converted from FLAC)", - "@qualityLossyMp3Subtitle": { - "description": "Technical spec for lossy MP3" - }, - "qualityLossyOpusSubtitle": "Opus 128kbps (converted from FLAC)", - "@qualityLossyOpusSubtitle": { - "description": "Technical spec for lossy Opus" - }, - "enableLossyOption": "Enable Lossy Option", - "@enableLossyOption": { - "description": "Setting - enable lossy quality option" - }, - "enableLossyOptionSubtitleOn": "Lossy quality option is available", - "@enableLossyOptionSubtitleOn": { - "description": "Subtitle when lossy is enabled" - }, - "enableLossyOptionSubtitleOff": "Downloads FLAC then converts to lossy format", - "@enableLossyOptionSubtitleOff": { - "description": "Subtitle when lossy is disabled" - }, - "lossyFormat": "Lossy Format", - "@lossyFormat": { - "description": "Setting - choose lossy format" - }, - "lossyFormatDescription": "Choose the lossy format for conversion", - "@lossyFormatDescription": { - "description": "Description for lossy format picker" - }, - "lossyFormatMp3Subtitle": "320kbps, best compatibility", - "@lossyFormatMp3Subtitle": { - "description": "MP3 format description" - }, - "lossyFormatOpusSubtitle": "128kbps, better quality at smaller size", - "@lossyFormatOpusSubtitle": { - "description": "Opus format description" - }, + "trackCopyFilePath": "Salin lokasi file", + "@trackCopyFilePath": { + "description": "Action - copy file path" + }, + "trackRemoveFromDevice": "Hapus dari perangkat", + "@trackRemoveFromDevice": { + "description": "Action - delete downloaded file" + }, + "trackLoadLyrics": "Muat Lirik", + "@trackLoadLyrics": { + "description": "Action - fetch lyrics" + }, + "trackMetadata": "Metadata", + "@trackMetadata": { + "description": "Tab title - track metadata" + }, + "trackFileInfo": "Info File", + "@trackFileInfo": { + "description": "Tab title - file information" + }, + "trackLyrics": "Lirik", + "@trackLyrics": { + "description": "Tab title - lyrics" + }, + "trackFileNotFound": "File tidak ditemukan", + "@trackFileNotFound": { + "description": "Error - file doesn't exist" + }, + "trackOpenInDeezer": "Buka di Deezer", + "@trackOpenInDeezer": { + "description": "Action - open track in Deezer app" + }, + "trackOpenInSpotify": "Buka di Spotify", + "@trackOpenInSpotify": { + "description": "Action - open track in Spotify app" + }, + "trackTrackName": "Nama lagu", + "@trackTrackName": { + "description": "Metadata label - track title" + }, + "trackArtist": "Artis", + "@trackArtist": { + "description": "Metadata label - artist name" + }, + "trackAlbumArtist": "Artis album", + "@trackAlbumArtist": { + "description": "Metadata label - album artist" + }, + "trackAlbum": "Album", + "@trackAlbum": { + "description": "Metadata label - album name" + }, + "trackTrackNumber": "Nomor lagu", + "@trackTrackNumber": { + "description": "Metadata label - track number" + }, + "trackDiscNumber": "Nomor disc", + "@trackDiscNumber": { + "description": "Metadata label - disc number" + }, + "trackDuration": "Durasi", + "@trackDuration": { + "description": "Metadata label - track length" + }, + "trackAudioQuality": "Kualitas audio", + "@trackAudioQuality": { + "description": "Metadata label - audio quality" + }, + "trackReleaseDate": "Tanggal rilis", + "@trackReleaseDate": { + "description": "Metadata label - release date" + }, + "trackGenre": "Genre", + "@trackGenre": { + "description": "Metadata label - music genre" + }, + "trackLabel": "Label", + "@trackLabel": { + "description": "Metadata label - record label" + }, + "trackCopyright": "Copyright", + "@trackCopyright": { + "description": "Metadata label - copyright information" + }, + "trackDownloaded": "Diunduh", + "@trackDownloaded": { + "description": "Metadata label - download date" + }, + "trackCopyLyrics": "Salin lirik", + "@trackCopyLyrics": { + "description": "Action - copy lyrics to clipboard" + }, + "trackLyricsNotAvailable": "Lirik tidak tersedia untuk lagu ini", + "@trackLyricsNotAvailable": { + "description": "Message when lyrics not found" + }, + "trackLyricsTimeout": "Permintaan timeout. Coba lagi nanti.", + "@trackLyricsTimeout": { + "description": "Message when lyrics request times out" + }, + "trackLyricsLoadFailed": "Gagal memuat lirik", + "@trackLyricsLoadFailed": { + "description": "Message when lyrics loading fails" + }, + "trackEmbedLyrics": "Embed Lyrics", + "@trackEmbedLyrics": { + "description": "Action - embed lyrics into audio file" + }, + "trackLyricsEmbedded": "Lyrics embedded successfully", + "@trackLyricsEmbedded": { + "description": "Snackbar - lyrics saved to file" + }, + "trackInstrumental": "Instrumental track", + "@trackInstrumental": { + "description": "Message when track is instrumental (no lyrics)" + }, + "trackCopiedToClipboard": "Disalin ke clipboard", + "@trackCopiedToClipboard": { + "description": "Snackbar - content copied" + }, + "trackDeleteConfirmTitle": "Hapus dari perangkat?", + "@trackDeleteConfirmTitle": { + "description": "Delete confirmation title" + }, + "trackDeleteConfirmMessage": "Ini akan menghapus file unduhan secara permanen dan menghapusnya dari riwayat Anda.", + "@trackDeleteConfirmMessage": { + "description": "Delete confirmation message" + }, + "dateToday": "Hari ini", + "@dateToday": { + "description": "Relative date - today" + }, + "dateYesterday": "Kemarin", + "@dateYesterday": { + "description": "Relative date - yesterday" + }, + "dateDaysAgo": "{count} hari lalu", + "@dateDaysAgo": { + "description": "Relative date - days ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dateWeeksAgo": "{count} minggu lalu", + "@dateWeeksAgo": { + "description": "Relative date - weeks ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dateMonthsAgo": "{count} bulan lalu", + "@dateMonthsAgo": { + "description": "Relative date - months ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "storeFilterAll": "Semua", + "@storeFilterAll": { + "description": "Store filter - all extensions" + }, + "storeFilterMetadata": "Metadata", + "@storeFilterMetadata": { + "description": "Store filter - metadata providers" + }, + "storeFilterDownload": "Unduhan", + "@storeFilterDownload": { + "description": "Store filter - download providers" + }, + "storeFilterUtility": "Utilitas", + "@storeFilterUtility": { + "description": "Store filter - utility extensions" + }, + "storeFilterLyrics": "Lirik", + "@storeFilterLyrics": { + "description": "Store filter - lyrics providers" + }, + "storeFilterIntegration": "Integrasi", + "@storeFilterIntegration": { + "description": "Store filter - integrations" + }, + "storeClearFilters": "Hapus filter", + "@storeClearFilters": { + "description": "Button to clear all filters" + }, + "extensionDefaultProvider": "Default (Deezer/Spotify)", + "@extensionDefaultProvider": { + "description": "Default search provider option" + }, + "extensionDefaultProviderSubtitle": "Gunakan pencarian bawaan", + "@extensionDefaultProviderSubtitle": { + "description": "Subtitle for default provider" + }, + "extensionAuthor": "Pembuat", + "@extensionAuthor": { + "description": "Extension detail - author" + }, + "extensionId": "ID", + "@extensionId": { + "description": "Extension detail - unique ID" + }, + "extensionError": "Error", + "@extensionError": { + "description": "Extension detail - error message" + }, + "extensionCapabilities": "Kemampuan", + "@extensionCapabilities": { + "description": "Section header - extension features" + }, + "extensionMetadataProvider": "Provider Metadata", + "@extensionMetadataProvider": { + "description": "Capability - provides metadata" + }, + "extensionDownloadProvider": "Provider Unduhan", + "@extensionDownloadProvider": { + "description": "Capability - provides downloads" + }, + "extensionLyricsProvider": "Provider Lirik", + "@extensionLyricsProvider": { + "description": "Capability - provides lyrics" + }, + "extensionUrlHandler": "Penanganan URL", + "@extensionUrlHandler": { + "description": "Capability - handles URLs" + }, + "extensionQualityOptions": "Opsi Kualitas", + "@extensionQualityOptions": { + "description": "Capability - quality selection" + }, + "extensionPostProcessingHooks": "Hook Pasca-Pemrosesan", + "@extensionPostProcessingHooks": { + "description": "Capability - post-processing" + }, + "extensionPermissions": "Izin", + "@extensionPermissions": { + "description": "Section header - required permissions" + }, + "extensionSettings": "Pengaturan", + "@extensionSettings": { + "description": "Section header - extension settings" + }, + "extensionRemoveButton": "Hapus Ekstensi", + "@extensionRemoveButton": { + "description": "Button to uninstall extension" + }, + "extensionUpdated": "Diperbarui", + "@extensionUpdated": { + "description": "Extension detail - last update" + }, + "extensionMinAppVersion": "Versi App Minimum", + "@extensionMinAppVersion": { + "description": "Extension detail - minimum app version" + }, + "extensionCustomTrackMatching": "Pencocokan Lagu Kustom", + "@extensionCustomTrackMatching": { + "description": "Capability - custom track matching algorithm" + }, + "extensionPostProcessing": "Pasca-Pemrosesan", + "@extensionPostProcessing": { + "description": "Capability - post-download processing" + }, + "extensionHooksAvailable": "{count} hook tersedia", + "@extensionHooksAvailable": { + "description": "Post-processing hooks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionPatternsCount": "{count} pola", + "@extensionPatternsCount": { + "description": "URL patterns count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionStrategy": "Strategi: {strategy}", + "@extensionStrategy": { + "description": "Track matching strategy name", + "placeholders": { + "strategy": { + "type": "String" + } + } + }, + "extensionsProviderPrioritySection": "Prioritas Provider", + "@extensionsProviderPrioritySection": { + "description": "Section header - provider priority" + }, + "extensionsInstalledSection": "Ekstensi Terpasang", + "@extensionsInstalledSection": { + "description": "Section header - installed extensions" + }, + "extensionsNoExtensions": "Tidak ada ekstensi terpasang", + "@extensionsNoExtensions": { + "description": "Empty state - no extensions" + }, + "extensionsNoExtensionsSubtitle": "Pasang file .spotiflac-ext untuk menambahkan provider baru", + "@extensionsNoExtensionsSubtitle": { + "description": "Empty state subtitle" + }, + "extensionsInstallButton": "Pasang Ekstensi", + "@extensionsInstallButton": { + "description": "Button to install extension from file" + }, + "extensionsInfoTip": "Ekstensi dapat menambahkan provider metadata dan unduhan baru. Hanya pasang ekstensi dari sumber terpercaya.", + "@extensionsInfoTip": { + "description": "Security warning about extensions" + }, + "extensionsInstalledSuccess": "Ekstensi berhasil dipasang", + "@extensionsInstalledSuccess": { + "description": "Success message after install" + }, + "extensionsDownloadPriority": "Prioritas Unduhan", + "@extensionsDownloadPriority": { + "description": "Setting - download provider order" + }, + "extensionsDownloadPrioritySubtitle": "Atur urutan layanan unduhan", + "@extensionsDownloadPrioritySubtitle": { + "description": "Subtitle for download priority" + }, + "extensionsNoDownloadProvider": "Tidak ada ekstensi dengan provider unduhan", + "@extensionsNoDownloadProvider": { + "description": "Empty state - no download providers" + }, + "extensionsMetadataPriority": "Prioritas Metadata", + "@extensionsMetadataPriority": { + "description": "Setting - metadata provider order" + }, + "extensionsMetadataPrioritySubtitle": "Atur urutan sumber pencarian & metadata", + "@extensionsMetadataPrioritySubtitle": { + "description": "Subtitle for metadata priority" + }, + "extensionsNoMetadataProvider": "Tidak ada ekstensi dengan provider metadata", + "@extensionsNoMetadataProvider": { + "description": "Empty state - no metadata providers" + }, + "extensionsSearchProvider": "Provider Pencarian", + "@extensionsSearchProvider": { + "description": "Setting - search provider selection" + }, + "extensionsNoCustomSearch": "Tidak ada ekstensi dengan pencarian kustom", + "@extensionsNoCustomSearch": { + "description": "Empty state - no search providers" + }, + "extensionsSearchProviderDescription": "Pilih layanan yang digunakan untuk mencari lagu", + "@extensionsSearchProviderDescription": { + "description": "Search provider setting description" + }, + "extensionsCustomSearch": "Pencarian kustom", + "@extensionsCustomSearch": { + "description": "Label for custom search provider" + }, + "extensionsErrorLoading": "Error memuat ekstensi", + "@extensionsErrorLoading": { + "description": "Error message when extension fails to load" + }, + "qualityFlacLossless": "FLAC Lossless", + "@qualityFlacLossless": { + "description": "Quality option - CD quality FLAC" + }, + "qualityFlacLosslessSubtitle": "16-bit / 44.1kHz", + "@qualityFlacLosslessSubtitle": { + "description": "Technical spec for lossless" + }, + "qualityHiResFlac": "Hi-Res FLAC", + "@qualityHiResFlac": { + "description": "Quality option - high resolution FLAC" + }, + "qualityHiResFlacSubtitle": "24-bit / hingga 96kHz", + "@qualityHiResFlacSubtitle": { + "description": "Technical spec for hi-res" + }, + "qualityHiResFlacMax": "Hi-Res FLAC Max", + "@qualityHiResFlacMax": { + "description": "Quality option - maximum resolution FLAC" + }, + "qualityHiResFlacMaxSubtitle": "24-bit / hingga 192kHz", + "@qualityHiResFlacMaxSubtitle": { + "description": "Technical spec for hi-res max" + }, "qualityNote": "Kualitas sebenarnya tergantung ketersediaan lagu dari layanan", "@qualityNote": { "description": "Note about quality availability" @@ -2559,686 +1765,455 @@ "@youtubeMp3BitrateTitle": { "description": "Title for YouTube MP3 bitrate setting" }, - "youtubeBitrateSubtitle": "{bitrate}kbps ({min}-{max})", - "@youtubeBitrateSubtitle": { - "description": "Subtitle showing current bitrate and valid range", - "placeholders": { - "bitrate": { - "type": "int" - }, - "min": { - "type": "int" - }, - "max": { - "type": "int" - } - } - }, - "youtubeBitrateInputHelp": "Masukkan bitrate manual ({min}-{max} kbps)", - "@youtubeBitrateInputHelp": { - "description": "Helper text for manual YouTube bitrate input", - "placeholders": { - "min": { - "type": "int" - }, - "max": { - "type": "int" - } - } - }, - "youtubeBitrateFieldLabel": "Bitrate (kbps)", - "@youtubeBitrateFieldLabel": { - "description": "Label for YouTube bitrate input field" - }, - "youtubeBitrateValidationError": "Bitrate harus antara {min} dan {max} kbps", - "@youtubeBitrateValidationError": { - "description": "Validation error for invalid YouTube bitrate input", - "placeholders": { - "min": { - "type": "int" - }, - "max": { - "type": "int" - } - } - }, "downloadAskBeforeDownload": "Tanya Sebelum Unduh", "@downloadAskBeforeDownload": { "description": "Setting - show quality picker" }, - "downloadDirectory": "Direktori Unduhan", - "@downloadDirectory": { - "description": "Setting - download folder" - }, - "downloadSeparateSinglesFolder": "Folder Singles Terpisah", - "@downloadSeparateSinglesFolder": { - "description": "Setting - separate folder for singles" - }, - "downloadAlbumFolderStructure": "Struktur Folder Album", - "@downloadAlbumFolderStructure": { - "description": "Setting - album folder organization" - }, - "downloadUseAlbumArtistForFolders": "Use Album Artist for folders", - "@downloadUseAlbumArtistForFolders": { - "description": "Setting - choose whether artist folders use Album Artist or Track Artist" - }, - "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Artist folders use Album Artist when available", - "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { - "description": "Subtitle when Album Artist is used for folder naming" - }, - "downloadUseAlbumArtistForFoldersTrackSubtitle": "Artist folders use Track Artist only", - "@downloadUseAlbumArtistForFoldersTrackSubtitle": { - "description": "Subtitle when Track Artist is used for folder naming" - }, - "downloadUsePrimaryArtistOnly": "Primary artist only for folders", - "@downloadUsePrimaryArtistOnly": { - "description": "Setting - strip featured artists from folder name" - }, - "downloadUsePrimaryArtistOnlyEnabled": "Featured artists removed from folder name (e.g. Justin Bieber, Quavo → Justin Bieber)", - "@downloadUsePrimaryArtistOnlyEnabled": { - "description": "Subtitle when primary artist only is enabled" - }, - "downloadUsePrimaryArtistOnlyDisabled": "Full artist string used for folder name", - "@downloadUsePrimaryArtistOnlyDisabled": { - "description": "Subtitle when primary artist only is disabled" - }, - "downloadSaveFormat": "Simpan Format", - "@downloadSaveFormat": { - "description": "Setting - output file format" - }, - "downloadSelectService": "Pilih Layanan", - "@downloadSelectService": { - "description": "Dialog title - choose download service" - }, - "downloadSelectQuality": "Pilih Kualitas", - "@downloadSelectQuality": { - "description": "Dialog title - choose audio quality" - }, - "downloadFrom": "Unduh Dari", - "@downloadFrom": { - "description": "Label - download source" - }, - "downloadDefaultQualityLabel": "Kualitas Default", - "@downloadDefaultQualityLabel": { - "description": "Label - default quality setting" - }, - "downloadBestAvailable": "Terbaik tersedia", - "@downloadBestAvailable": { - "description": "Quality option - highest available" - }, - "folderNone": "Tidak ada", - "@folderNone": { - "description": "Folder option - no organization" - }, - "folderNoneSubtitle": "Simpan semua file langsung ke folder unduhan", - "@folderNoneSubtitle": { - "description": "Subtitle for no folder organization" - }, - "folderArtist": "Artis", - "@folderArtist": { - "description": "Folder option - by artist" - }, - "folderArtistSubtitle": "Nama Artis/namafile", - "@folderArtistSubtitle": { - "description": "Folder structure example" - }, - "folderAlbum": "Album", - "@folderAlbum": { - "description": "Folder option - by album" - }, - "folderAlbumSubtitle": "Nama Album/namafile", - "@folderAlbumSubtitle": { - "description": "Folder structure example" - }, - "folderArtistAlbum": "Artis/Album", - "@folderArtistAlbum": { - "description": "Folder option - nested" - }, - "folderArtistAlbumSubtitle": "Nama Artis/Nama Album/namafile", - "@folderArtistAlbumSubtitle": { - "description": "Folder structure example" - }, - "serviceTidal": "Tidal", - "@serviceTidal": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceQobuz": "Qobuz", - "@serviceQobuz": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceAmazon": "Amazon", - "@serviceAmazon": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceDeezer": "Deezer", - "@serviceDeezer": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceSpotify": "Spotify", - "@serviceSpotify": { - "description": "Service name - DO NOT TRANSLATE" - }, - "appearanceAmoledDark": "AMOLED Gelap", - "@appearanceAmoledDark": { - "description": "Theme option - pure black" - }, - "appearanceAmoledDarkSubtitle": "Latar belakang hitam murni", - "@appearanceAmoledDarkSubtitle": { - "description": "Subtitle for AMOLED dark" - }, - "appearanceChooseAccentColor": "Pilih Warna Aksen", - "@appearanceChooseAccentColor": { - "description": "Color picker dialog title" - }, - "appearanceChooseTheme": "Mode Tema", - "@appearanceChooseTheme": { - "description": "Theme picker dialog title" - }, - "queueTitle": "Antrian Unduhan", - "@queueTitle": { - "description": "Queue screen title" - }, - "queueClearAll": "Hapus Semua", - "@queueClearAll": { - "description": "Button - clear all queue items" - }, - "queueClearAllMessage": "Apakah Anda yakin ingin menghapus semua unduhan?", - "@queueClearAllMessage": { - "description": "Clear queue confirmation" - }, - "queueExportFailed": "Export", - "@queueExportFailed": { - "description": "Button - export failed downloads to TXT" - }, - "queueExportFailedSuccess": "Failed downloads exported to TXT file", - "@queueExportFailedSuccess": { - "description": "Success message after exporting failed downloads" - }, - "queueExportFailedClear": "Clear Failed", - "@queueExportFailedClear": { - "description": "Action to clear failed downloads after export" - }, - "queueExportFailedError": "Failed to export downloads", - "@queueExportFailedError": { - "description": "Error message when export fails" - }, - "settingsAutoExportFailed": "Auto-export failed downloads", - "@settingsAutoExportFailed": { - "description": "Setting toggle for auto-export" - }, - "settingsAutoExportFailedSubtitle": "Save failed downloads to TXT file automatically", - "@settingsAutoExportFailedSubtitle": { - "description": "Subtitle for auto-export setting" - }, - "settingsDownloadNetwork": "Download Network", - "@settingsDownloadNetwork": { - "description": "Setting for network type preference" - }, - "settingsDownloadNetworkAny": "WiFi + Mobile Data", - "@settingsDownloadNetworkAny": { - "description": "Network option - use any connection" - }, - "settingsDownloadNetworkWifiOnly": "WiFi Only", - "@settingsDownloadNetworkWifiOnly": { - "description": "Network option - only use WiFi" - }, - "settingsDownloadNetworkSubtitle": "Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.", - "@settingsDownloadNetworkSubtitle": { - "description": "Subtitle explaining network preference" - }, - "queueEmpty": "Tidak ada unduhan dalam antrian", - "@queueEmpty": { - "description": "Empty queue state title" - }, - "queueEmptySubtitle": "Tambahkan lagu dari layar beranda", - "@queueEmptySubtitle": { - "description": "Empty queue state subtitle" - }, - "queueClearCompleted": "Hapus yang selesai", - "@queueClearCompleted": { - "description": "Button - clear finished downloads" - }, - "queueDownloadFailed": "Unduhan Gagal", - "@queueDownloadFailed": { - "description": "Error dialog title" - }, - "queueTrackLabel": "Lagu:", - "@queueTrackLabel": { - "description": "Label in error dialog" - }, - "queueArtistLabel": "Artis:", - "@queueArtistLabel": { - "description": "Label in error dialog" - }, - "queueErrorLabel": "Error:", - "@queueErrorLabel": { - "description": "Label in error dialog" - }, - "queueUnknownError": "Error tidak diketahui", - "@queueUnknownError": { - "description": "Fallback error message" - }, - "albumFolderArtistAlbum": "Artis / Album", - "@albumFolderArtistAlbum": { - "description": "Album folder option" - }, - "albumFolderArtistAlbumSubtitle": "Albums/Nama Artis/Nama Album/", - "@albumFolderArtistAlbumSubtitle": { - "description": "Folder structure example" - }, - "albumFolderArtistYearAlbum": "Artis / [Tahun] Album", - "@albumFolderArtistYearAlbum": { - "description": "Album folder option with year" - }, - "albumFolderArtistYearAlbumSubtitle": "Albums/Nama Artis/[2005] Nama Album/", - "@albumFolderArtistYearAlbumSubtitle": { - "description": "Folder structure example" - }, - "albumFolderAlbumOnly": "Album Saja", - "@albumFolderAlbumOnly": { - "description": "Album folder option" - }, - "albumFolderAlbumOnlySubtitle": "Albums/Nama Album/", - "@albumFolderAlbumOnlySubtitle": { - "description": "Folder structure example" - }, - "albumFolderYearAlbum": "[Tahun] Album", - "@albumFolderYearAlbum": { - "description": "Album folder option with year" - }, - "albumFolderYearAlbumSubtitle": "Albums/[2005] Nama Album/", - "@albumFolderYearAlbumSubtitle": { - "description": "Folder structure example" - }, - "albumFolderArtistAlbumSingles": "Artist / Album + Singles", - "@albumFolderArtistAlbumSingles": { - "description": "Album folder option with singles inside artist" - }, - "albumFolderArtistAlbumSinglesSubtitle": "Artist/Album/ and Artist/Singles/", - "@albumFolderArtistAlbumSinglesSubtitle": { - "description": "Folder structure example" - }, - "downloadedAlbumDeleteSelected": "Hapus yang Dipilih", - "@downloadedAlbumDeleteSelected": { - "description": "Button - delete selected tracks" - }, - "downloadedAlbumDeleteMessage": "Hapus {count} {count, plural, =1{lagu} other{lagu}} dari album ini?\n\nIni juga akan menghapus file dari penyimpanan.", - "@downloadedAlbumDeleteMessage": { - "description": "Delete confirmation with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadedAlbumTracksHeader": "Lagu", - "@downloadedAlbumTracksHeader": { - "description": "Section header for tracks" - }, - "downloadedAlbumDownloadedCount": "{count} diunduh", - "@downloadedAlbumDownloadedCount": { - "description": "Downloaded tracks count badge", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadedAlbumSelectedCount": "{count} dipilih", - "@downloadedAlbumSelectedCount": { - "description": "Selection count indicator", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadedAlbumAllSelected": "Semua lagu dipilih", - "@downloadedAlbumAllSelected": { - "description": "Status - all items selected" - }, - "downloadedAlbumTapToSelect": "Ketuk lagu untuk memilih", - "@downloadedAlbumTapToSelect": { - "description": "Selection hint" - }, - "downloadedAlbumDeleteCount": "Hapus {count} {count, plural, =1{lagu} other{lagu}}", - "@downloadedAlbumDeleteCount": { - "description": "Delete button text with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadedAlbumSelectToDelete": "Pilih lagu untuk dihapus", - "@downloadedAlbumSelectToDelete": { - "description": "Placeholder when nothing selected" - }, - "downloadedAlbumDiscHeader": "Disc {discNumber}", - "@downloadedAlbumDiscHeader": { - "description": "Header for disc separator in multi-disc albums", - "placeholders": { - "discNumber": { - "type": "int", - "example": "1" - } - } - }, - "utilityFunctions": "Fungsi Utilitas", - "@utilityFunctions": { - "description": "Extension capability - utility functions" - }, - "recentTypeArtist": "Artis", - "@recentTypeArtist": { - "description": "Recent access item type - artist" - }, - "recentTypeAlbum": "Album", - "@recentTypeAlbum": { - "description": "Recent access item type - album" - }, - "recentTypeSong": "Lagu", - "@recentTypeSong": { - "description": "Recent access item type - song/track" - }, - "recentTypePlaylist": "Playlist", - "@recentTypePlaylist": { - "description": "Recent access item type - playlist" - }, - "recentEmpty": "No recent items yet", - "@recentEmpty": { - "description": "Empty state text for recent access list" - }, - "recentShowAllDownloads": "Show All Downloads", - "@recentShowAllDownloads": { - "description": "Button label to unhide hidden downloads in recent access" - }, - "recentPlaylistInfo": "Playlist: {name}", - "@recentPlaylistInfo": { - "description": "Snackbar message when tapping playlist in recent access", - "placeholders": { - "name": { - "type": "String", - "description": "Playlist name" - } - } - }, - "errorGeneric": "Error: {message}", - "@errorGeneric": { - "description": "Generic error message format", - "placeholders": { - "message": { - "type": "String", - "description": "Error message" - } - } - }, - "discographyDownload": "Download Discography", - "@discographyDownload": { - "description": "Button - download artist discography" + "downloadDirectory": "Direktori Unduhan", + "@downloadDirectory": { + "description": "Setting - download folder" }, - "discographyPlay": "Putar Diskografi", - "@discographyPlay": { - "description": "Button - play artist discography" + "downloadSeparateSinglesFolder": "Folder Singles Terpisah", + "@downloadSeparateSinglesFolder": { + "description": "Setting - separate folder for singles" }, - "discographyDownloadAll": "Unduh Semua", - "@discographyDownloadAll": { - "description": "Option - download entire discography" + "downloadAlbumFolderStructure": "Struktur Folder Album", + "@downloadAlbumFolderStructure": { + "description": "Setting - album folder organization" }, - "discographyPlayAll": "Putar Semua", - "@discographyPlayAll": { - "description": "Option - play entire discography" + "downloadUseAlbumArtistForFolders": "Use Album Artist for folders", + "@downloadUseAlbumArtistForFolders": { + "description": "Setting - choose whether artist folders use Album Artist or Track Artist" }, - "discographyDownloadAllSubtitle": "{count} tracks from {albumCount} releases", - "@discographyDownloadAllSubtitle": { - "description": "Subtitle showing total tracks and albums", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } - }, - "discographyAlbumsOnly": "Albums Only", - "@discographyAlbumsOnly": { - "description": "Option - download only albums" - }, - "discographyAlbumsOnlySubtitle": "{count} tracks from {albumCount} albums", - "@discographyAlbumsOnlySubtitle": { - "description": "Subtitle showing album tracks count", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } - }, - "discographySinglesOnly": "Singles & EPs Only", - "@discographySinglesOnly": { - "description": "Option - download only singles" - }, - "discographySinglesOnlySubtitle": "{count} tracks from {albumCount} singles", - "@discographySinglesOnlySubtitle": { - "description": "Subtitle showing singles tracks count", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } - }, - "discographySelectAlbums": "Select Albums...", - "@discographySelectAlbums": { - "description": "Option - manually select albums to download" - }, - "discographySelectAlbumsSubtitle": "Choose specific albums or singles", - "@discographySelectAlbumsSubtitle": { - "description": "Subtitle for select albums option" - }, - "discographyFetchingTracks": "Fetching tracks...", - "@discographyFetchingTracks": { - "description": "Progress - fetching album tracks" - }, - "discographyFetchingAlbum": "Fetching {current} of {total}...", - "@discographyFetchingAlbum": { - "description": "Progress - fetching specific album", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "discographySelectedCount": "{count} selected", - "@discographySelectedCount": { - "description": "Selection count badge", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "discographyDownloadSelected": "Download Selected", - "@discographyDownloadSelected": { - "description": "Button - download selected albums" + "downloadUsePrimaryArtistOnly": "Primary artist only for folders", + "@downloadUsePrimaryArtistOnly": { + "description": "Setting - strip featured artists from folder name" }, - "discographyPlaySelected": "Putar Terpilih", - "@discographyPlaySelected": { - "description": "Button - play selected albums" + "downloadUsePrimaryArtistOnlyEnabled": "Featured artists removed from folder name (e.g. Justin Bieber, Quavo → Justin Bieber)", + "@downloadUsePrimaryArtistOnlyEnabled": { + "description": "Subtitle when primary artist only is enabled" }, - "discographyAddedToQueue": "Added {count} tracks to queue", - "@discographyAddedToQueue": { - "description": "Snackbar - tracks added from discography", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "discographySkippedDownloaded": "{added} added, {skipped} already downloaded", - "@discographySkippedDownloaded": { - "description": "Snackbar - with skipped tracks count", - "placeholders": { - "added": { - "type": "int" - }, - "skipped": { - "type": "int" - } - } - }, - "discographyNoAlbums": "No albums available", - "@discographyNoAlbums": { - "description": "Error - no albums found for artist" - }, - "discographyFailedToFetch": "Failed to fetch some albums", - "@discographyFailedToFetch": { - "description": "Error - some albums failed to load" - }, - "sectionStorageAccess": "Storage Access", - "@sectionStorageAccess": { - "description": "Section header for storage access settings" - }, - "allFilesAccess": "All Files Access", - "@allFilesAccess": { - "description": "Toggle for MANAGE_EXTERNAL_STORAGE permission" - }, - "allFilesAccessEnabledSubtitle": "Can write to any folder", - "@allFilesAccessEnabledSubtitle": { - "description": "Subtitle when all files access is enabled" - }, - "allFilesAccessDisabledSubtitle": "Limited to media folders only", - "@allFilesAccessDisabledSubtitle": { - "description": "Subtitle when all files access is disabled" - }, - "allFilesAccessDescription": "Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.", - "@allFilesAccessDescription": { - "description": "Description explaining when to enable all files access" - }, - "allFilesAccessDeniedMessage": "Permission was denied. Please enable 'All files access' manually in system settings.", - "@allFilesAccessDeniedMessage": { - "description": "Message when permission is permanently denied" - }, - "allFilesAccessDisabledMessage": "All Files Access disabled. The app will use limited storage access.", - "@allFilesAccessDisabledMessage": { - "description": "Snackbar message when user disables all files access" - }, - "settingsLocalLibrary": "Local Library", - "@settingsLocalLibrary": { - "description": "Settings menu item - local library" - }, - "settingsLocalLibrarySubtitle": "Scan music & detect duplicates", - "@settingsLocalLibrarySubtitle": { - "description": "Subtitle for local library settings" - }, - "settingsCache": "Storage & Cache", - "@settingsCache": { - "description": "Settings menu item - cache management" - }, - "settingsCacheSubtitle": "View size and clear cached data", - "@settingsCacheSubtitle": { - "description": "Subtitle for cache management menu" - }, - "libraryTitle": "Local Library", - "@libraryTitle": { - "description": "Library settings page title" - }, - "libraryStatus": "Library Status", - "@libraryStatus": { - "description": "Section header for library status" - }, - "libraryScanSettings": "Scan Settings", - "@libraryScanSettings": { - "description": "Section header for scan settings" - }, - "libraryEnableLocalLibrary": "Enable Local Library", - "@libraryEnableLocalLibrary": { - "description": "Toggle to enable library scanning" - }, - "libraryEnableLocalLibrarySubtitle": "Scan and track your existing music", - "@libraryEnableLocalLibrarySubtitle": { - "description": "Subtitle for enable toggle" - }, - "libraryFolder": "Library Folder", - "@libraryFolder": { - "description": "Folder selection setting" - }, - "libraryFolderHint": "Tap to select folder", - "@libraryFolderHint": { - "description": "Placeholder when no folder selected" - }, - "libraryShowDuplicateIndicator": "Show Duplicate Indicator", - "@libraryShowDuplicateIndicator": { - "description": "Toggle for duplicate indicator in search" - }, - "libraryShowDuplicateIndicatorSubtitle": "Show when searching for existing tracks", - "@libraryShowDuplicateIndicatorSubtitle": { - "description": "Subtitle for duplicate indicator toggle" - }, - "libraryActions": "Actions", - "@libraryActions": { - "description": "Section header for library actions" - }, - "libraryScan": "Scan Library", - "@libraryScan": { - "description": "Button to start library scan" - }, - "libraryScanSubtitle": "Scan for audio files", - "@libraryScanSubtitle": { - "description": "Subtitle for scan button" - }, - "libraryScanSelectFolderFirst": "Select a folder first", - "@libraryScanSelectFolderFirst": { - "description": "Message when trying to scan without folder" - }, - "libraryCleanupMissingFiles": "Cleanup Missing Files", - "@libraryCleanupMissingFiles": { - "description": "Button to remove entries for missing files" - }, - "libraryCleanupMissingFilesSubtitle": "Remove entries for files that no longer exist", - "@libraryCleanupMissingFilesSubtitle": { - "description": "Subtitle for cleanup button" - }, - "libraryClear": "Clear Library", - "@libraryClear": { - "description": "Button to clear all library entries" - }, - "libraryClearSubtitle": "Remove all scanned tracks", - "@libraryClearSubtitle": { - "description": "Subtitle for clear button" - }, - "libraryClearConfirmTitle": "Clear Library", - "@libraryClearConfirmTitle": { - "description": "Dialog title for clear confirmation" - }, - "libraryClearConfirmMessage": "This will remove all scanned tracks from your library. Your actual music files will not be deleted.", - "@libraryClearConfirmMessage": { - "description": "Dialog message for clear confirmation" - }, - "libraryAbout": "About Local Library", - "@libraryAbout": { - "description": "Section header for about info" - }, - "libraryAboutDescription": "Scans your existing music collection to detect duplicates when downloading. Supports FLAC, M4A, MP3, Opus, and OGG formats. Metadata is read from file tags when available.", - "@libraryAboutDescription": { - "description": "Description of local library feature" - }, - "libraryTracksCount": "{count} tracks", - "@libraryTracksCount": { - "description": "Track count in library", + "downloadUsePrimaryArtistOnlyDisabled": "Full artist string used for folder name", + "@downloadUsePrimaryArtistOnlyDisabled": { + "description": "Subtitle when primary artist only is disabled" + }, + "downloadSelectQuality": "Pilih Kualitas", + "@downloadSelectQuality": { + "description": "Dialog title - choose audio quality" + }, + "downloadFrom": "Unduh Dari", + "@downloadFrom": { + "description": "Label - download source" + }, + "appearanceAmoledDark": "AMOLED Gelap", + "@appearanceAmoledDark": { + "description": "Theme option - pure black" + }, + "appearanceAmoledDarkSubtitle": "Latar belakang hitam murni", + "@appearanceAmoledDarkSubtitle": { + "description": "Subtitle for AMOLED dark" + }, + "queueClearAll": "Hapus Semua", + "@queueClearAll": { + "description": "Button - clear all queue items" + }, + "queueClearAllMessage": "Apakah Anda yakin ingin menghapus semua unduhan?", + "@queueClearAllMessage": { + "description": "Clear queue confirmation" + }, + "settingsAutoExportFailed": "Auto-export failed downloads", + "@settingsAutoExportFailed": { + "description": "Setting toggle for auto-export" + }, + "settingsAutoExportFailedSubtitle": "Save failed downloads to TXT file automatically", + "@settingsAutoExportFailedSubtitle": { + "description": "Subtitle for auto-export setting" + }, + "settingsDownloadNetwork": "Download Network", + "@settingsDownloadNetwork": { + "description": "Setting for network type preference" + }, + "settingsDownloadNetworkAny": "WiFi + Mobile Data", + "@settingsDownloadNetworkAny": { + "description": "Network option - use any connection" + }, + "settingsDownloadNetworkWifiOnly": "WiFi Only", + "@settingsDownloadNetworkWifiOnly": { + "description": "Network option - only use WiFi" + }, + "settingsDownloadNetworkSubtitle": "Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.", + "@settingsDownloadNetworkSubtitle": { + "description": "Subtitle explaining network preference" + }, + "albumFolderArtistAlbum": "Artis / Album", + "@albumFolderArtistAlbum": { + "description": "Album folder option" + }, + "albumFolderArtistAlbumSubtitle": "Albums/Nama Artis/Nama Album/", + "@albumFolderArtistAlbumSubtitle": { + "description": "Folder structure example" + }, + "albumFolderArtistYearAlbum": "Artis / [Tahun] Album", + "@albumFolderArtistYearAlbum": { + "description": "Album folder option with year" + }, + "albumFolderArtistYearAlbumSubtitle": "Albums/Nama Artis/[2005] Nama Album/", + "@albumFolderArtistYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "albumFolderAlbumOnly": "Album Saja", + "@albumFolderAlbumOnly": { + "description": "Album folder option" + }, + "albumFolderAlbumOnlySubtitle": "Albums/Nama Album/", + "@albumFolderAlbumOnlySubtitle": { + "description": "Folder structure example" + }, + "albumFolderYearAlbum": "[Tahun] Album", + "@albumFolderYearAlbum": { + "description": "Album folder option with year" + }, + "albumFolderYearAlbumSubtitle": "Albums/[2005] Nama Album/", + "@albumFolderYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "albumFolderArtistAlbumSingles": "Artist / Album + Singles", + "@albumFolderArtistAlbumSingles": { + "description": "Album folder option with singles inside artist" + }, + "albumFolderArtistAlbumSinglesSubtitle": "Artist/Album/ and Artist/Singles/", + "@albumFolderArtistAlbumSinglesSubtitle": { + "description": "Folder structure example" + }, + "downloadedAlbumDeleteSelected": "Hapus yang Dipilih", + "@downloadedAlbumDeleteSelected": { + "description": "Button - delete selected tracks" + }, + "downloadedAlbumDeleteMessage": "Hapus {count} {count, plural, =1{lagu} other{lagu}} dari album ini?\n\nIni juga akan menghapus file dari penyimpanan.", + "@downloadedAlbumDeleteMessage": { + "description": "Delete confirmation with count", "placeholders": { "count": { "type": "int" } } }, + "downloadedAlbumSelectedCount": "{count} dipilih", + "@downloadedAlbumSelectedCount": { + "description": "Selection count indicator", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumAllSelected": "Semua lagu dipilih", + "@downloadedAlbumAllSelected": { + "description": "Status - all items selected" + }, + "downloadedAlbumTapToSelect": "Ketuk lagu untuk memilih", + "@downloadedAlbumTapToSelect": { + "description": "Selection hint" + }, + "downloadedAlbumDeleteCount": "Hapus {count} {count, plural, =1{lagu} other{lagu}}", + "@downloadedAlbumDeleteCount": { + "description": "Delete button text with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumSelectToDelete": "Pilih lagu untuk dihapus", + "@downloadedAlbumSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "downloadedAlbumDiscHeader": "Disc {discNumber}", + "@downloadedAlbumDiscHeader": { + "description": "Header for disc separator in multi-disc albums", + "placeholders": { + "discNumber": { + "type": "int", + "example": "1" + } + } + }, + "recentTypeArtist": "Artis", + "@recentTypeArtist": { + "description": "Recent access item type - artist" + }, + "recentTypeAlbum": "Album", + "@recentTypeAlbum": { + "description": "Recent access item type - album" + }, + "recentTypeSong": "Lagu", + "@recentTypeSong": { + "description": "Recent access item type - song/track" + }, + "recentTypePlaylist": "Playlist", + "@recentTypePlaylist": { + "description": "Recent access item type - playlist" + }, + "recentEmpty": "No recent items yet", + "@recentEmpty": { + "description": "Empty state text for recent access list" + }, + "recentShowAllDownloads": "Show All Downloads", + "@recentShowAllDownloads": { + "description": "Button label to unhide hidden downloads in recent access" + }, + "recentPlaylistInfo": "Playlist: {name}", + "@recentPlaylistInfo": { + "description": "Snackbar message when tapping playlist in recent access", + "placeholders": { + "name": { + "type": "String", + "description": "Playlist name" + } + } + }, + "discographyDownload": "Download Discography", + "@discographyDownload": { + "description": "Button - download artist discography" + }, + "discographyDownloadAll": "Unduh Semua", + "@discographyDownloadAll": { + "description": "Option - download entire discography" + }, + "discographyDownloadAllSubtitle": "{count} tracks from {albumCount} releases", + "@discographyDownloadAllSubtitle": { + "description": "Subtitle showing total tracks and albums", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "discographyAlbumsOnly": "Albums Only", + "@discographyAlbumsOnly": { + "description": "Option - download only albums" + }, + "discographyAlbumsOnlySubtitle": "{count} tracks from {albumCount} albums", + "@discographyAlbumsOnlySubtitle": { + "description": "Subtitle showing album tracks count", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "discographySinglesOnly": "Singles & EPs Only", + "@discographySinglesOnly": { + "description": "Option - download only singles" + }, + "discographySinglesOnlySubtitle": "{count} tracks from {albumCount} singles", + "@discographySinglesOnlySubtitle": { + "description": "Subtitle showing singles tracks count", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "discographySelectAlbums": "Select Albums...", + "@discographySelectAlbums": { + "description": "Option - manually select albums to download" + }, + "discographySelectAlbumsSubtitle": "Choose specific albums or singles", + "@discographySelectAlbumsSubtitle": { + "description": "Subtitle for select albums option" + }, + "discographyFetchingTracks": "Fetching tracks...", + "@discographyFetchingTracks": { + "description": "Progress - fetching album tracks" + }, + "discographyFetchingAlbum": "Fetching {current} of {total}...", + "@discographyFetchingAlbum": { + "description": "Progress - fetching specific album", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "discographySelectedCount": "{count} selected", + "@discographySelectedCount": { + "description": "Selection count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "discographyDownloadSelected": "Download Selected", + "@discographyDownloadSelected": { + "description": "Button - download selected albums" + }, + "discographyAddedToQueue": "Added {count} tracks to queue", + "@discographyAddedToQueue": { + "description": "Snackbar - tracks added from discography", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "discographySkippedDownloaded": "{added} added, {skipped} already downloaded", + "@discographySkippedDownloaded": { + "description": "Snackbar - with skipped tracks count", + "placeholders": { + "added": { + "type": "int" + }, + "skipped": { + "type": "int" + } + } + }, + "discographyNoAlbums": "No albums available", + "@discographyNoAlbums": { + "description": "Error - no albums found for artist" + }, + "discographyFailedToFetch": "Failed to fetch some albums", + "@discographyFailedToFetch": { + "description": "Error - some albums failed to load" + }, + "sectionStorageAccess": "Storage Access", + "@sectionStorageAccess": { + "description": "Section header for storage access settings" + }, + "allFilesAccess": "All Files Access", + "@allFilesAccess": { + "description": "Toggle for MANAGE_EXTERNAL_STORAGE permission" + }, + "allFilesAccessEnabledSubtitle": "Can write to any folder", + "@allFilesAccessEnabledSubtitle": { + "description": "Subtitle when all files access is enabled" + }, + "allFilesAccessDisabledSubtitle": "Limited to media folders only", + "@allFilesAccessDisabledSubtitle": { + "description": "Subtitle when all files access is disabled" + }, + "allFilesAccessDescription": "Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.", + "@allFilesAccessDescription": { + "description": "Description explaining when to enable all files access" + }, + "allFilesAccessDeniedMessage": "Permission was denied. Please enable 'All files access' manually in system settings.", + "@allFilesAccessDeniedMessage": { + "description": "Message when permission is permanently denied" + }, + "allFilesAccessDisabledMessage": "All Files Access disabled. The app will use limited storage access.", + "@allFilesAccessDisabledMessage": { + "description": "Snackbar message when user disables all files access" + }, + "settingsLocalLibrary": "Local Library", + "@settingsLocalLibrary": { + "description": "Settings menu item - local library" + }, + "settingsLocalLibrarySubtitle": "Scan music & detect duplicates", + "@settingsLocalLibrarySubtitle": { + "description": "Subtitle for local library settings" + }, + "settingsCache": "Storage & Cache", + "@settingsCache": { + "description": "Settings menu item - cache management" + }, + "settingsCacheSubtitle": "View size and clear cached data", + "@settingsCacheSubtitle": { + "description": "Subtitle for cache management menu" + }, + "libraryTitle": "Local Library", + "@libraryTitle": { + "description": "Library settings page title" + }, + "libraryScanSettings": "Scan Settings", + "@libraryScanSettings": { + "description": "Section header for scan settings" + }, + "libraryEnableLocalLibrary": "Enable Local Library", + "@libraryEnableLocalLibrary": { + "description": "Toggle to enable library scanning" + }, + "libraryEnableLocalLibrarySubtitle": "Scan and track your existing music", + "@libraryEnableLocalLibrarySubtitle": { + "description": "Subtitle for enable toggle" + }, + "libraryFolder": "Library Folder", + "@libraryFolder": { + "description": "Folder selection setting" + }, + "libraryFolderHint": "Tap to select folder", + "@libraryFolderHint": { + "description": "Placeholder when no folder selected" + }, + "libraryShowDuplicateIndicator": "Show Duplicate Indicator", + "@libraryShowDuplicateIndicator": { + "description": "Toggle for duplicate indicator in search" + }, + "libraryShowDuplicateIndicatorSubtitle": "Show when searching for existing tracks", + "@libraryShowDuplicateIndicatorSubtitle": { + "description": "Subtitle for duplicate indicator toggle" + }, + "libraryActions": "Actions", + "@libraryActions": { + "description": "Section header for library actions" + }, + "libraryScan": "Scan Library", + "@libraryScan": { + "description": "Button to start library scan" + }, + "libraryScanSubtitle": "Scan for audio files", + "@libraryScanSubtitle": { + "description": "Subtitle for scan button" + }, + "libraryScanSelectFolderFirst": "Select a folder first", + "@libraryScanSelectFolderFirst": { + "description": "Message when trying to scan without folder" + }, + "libraryCleanupMissingFiles": "Cleanup Missing Files", + "@libraryCleanupMissingFiles": { + "description": "Button to remove entries for missing files" + }, + "libraryCleanupMissingFilesSubtitle": "Remove entries for files that no longer exist", + "@libraryCleanupMissingFilesSubtitle": { + "description": "Subtitle for cleanup button" + }, + "libraryClear": "Clear Library", + "@libraryClear": { + "description": "Button to clear all library entries" + }, + "libraryClearSubtitle": "Remove all scanned tracks", + "@libraryClearSubtitle": { + "description": "Subtitle for clear button" + }, + "libraryClearConfirmTitle": "Clear Library", + "@libraryClearConfirmTitle": { + "description": "Dialog title for clear confirmation" + }, + "libraryClearConfirmMessage": "This will remove all scanned tracks from your library. Your actual music files will not be deleted.", + "@libraryClearConfirmMessage": { + "description": "Dialog message for clear confirmation" + }, + "libraryAbout": "About Local Library", + "@libraryAbout": { + "description": "Section header for about info" + }, + "libraryAboutDescription": "Scans your existing music collection to detect duplicates when downloading. Supports FLAC, M4A, MP3, Opus, and OGG formats. Metadata is read from file tags when available.", + "@libraryAboutDescription": { + "description": "Description of local library feature" + }, "libraryTracksUnit": "{count, plural, =1{trek} other{trek}}", "@libraryTracksUnit": { "description": "Unit label for tracks count (without the number itself)", @@ -3248,753 +2223,591 @@ } } }, - "libraryLastScanned": "Last scanned: {time}", - "@libraryLastScanned": { - "description": "Last scan time display", - "placeholders": { - "time": { - "type": "String" - } - } - }, - "libraryLastScannedNever": "Never", - "@libraryLastScannedNever": { - "description": "Shown when library has never been scanned" - }, - "libraryScanning": "Scanning...", - "@libraryScanning": { - "description": "Status during scan" - }, - "libraryScanProgress": "{progress}% of {total} files", - "@libraryScanProgress": { - "description": "Scan progress display", - "placeholders": { - "progress": { - "type": "String" - }, - "total": { - "type": "int" - } - } - }, - "libraryInLibrary": "In Library", - "@libraryInLibrary": { - "description": "Badge shown on tracks that exist in local library" - }, - "libraryRemovedMissingFiles": "Removed {count} missing files from library", - "@libraryRemovedMissingFiles": { - "description": "Snackbar after cleanup", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "libraryCleared": "Library cleared", - "@libraryCleared": { - "description": "Snackbar after clearing library" - }, - "libraryStorageAccessRequired": "Storage Access Required", - "@libraryStorageAccessRequired": { - "description": "Dialog title for storage permission" - }, - "libraryStorageAccessMessage": "SpotiFLAC needs storage access to scan your music library. Please grant permission in settings.", - "@libraryStorageAccessMessage": { - "description": "Dialog message for storage permission" - }, - "libraryFolderNotExist": "Selected folder does not exist", - "@libraryFolderNotExist": { - "description": "Error when folder doesn't exist" - }, - "librarySourceDownloaded": "Downloaded", - "@librarySourceDownloaded": { - "description": "Badge for tracks downloaded via SpotiFLAC" - }, - "librarySourceLocal": "Local", - "@librarySourceLocal": { - "description": "Badge for tracks from local library scan" - }, - "libraryFilterAll": "All", - "@libraryFilterAll": { - "description": "Filter chip - show all library items" - }, - "libraryFilterDownloaded": "Downloaded", - "@libraryFilterDownloaded": { - "description": "Filter chip - show only downloaded items" - }, - "libraryFilterLocal": "Local", - "@libraryFilterLocal": { - "description": "Filter chip - show only local library items" - }, - "libraryFilterTitle": "Filters", - "@libraryFilterTitle": { - "description": "Filter bottom sheet title" - }, - "libraryFilterReset": "Reset", - "@libraryFilterReset": { - "description": "Reset all filters button" - }, - "libraryFilterApply": "Apply", - "@libraryFilterApply": { - "description": "Apply filters button" - }, - "libraryFilterSource": "Source", - "@libraryFilterSource": { - "description": "Filter section - source type" - }, - "libraryFilterQuality": "Quality", - "@libraryFilterQuality": { - "description": "Filter section - audio quality" - }, - "libraryFilterQualityHiRes": "Hi-Res (24bit)", - "@libraryFilterQualityHiRes": { - "description": "Filter option - high resolution audio" - }, - "libraryFilterQualityCD": "CD (16bit)", - "@libraryFilterQualityCD": { - "description": "Filter option - CD quality audio" - }, - "libraryFilterQualityLossy": "Lossy", - "@libraryFilterQualityLossy": { - "description": "Filter option - lossy compressed audio" - }, - "libraryFilterFormat": "Format", - "@libraryFilterFormat": { - "description": "Filter section - file format" - }, - "libraryFilterDate": "Date Added", - "@libraryFilterDate": { - "description": "Filter section - date range" - }, - "libraryFilterDateToday": "Today", - "@libraryFilterDateToday": { - "description": "Filter option - today only" - }, - "libraryFilterDateWeek": "This Week", - "@libraryFilterDateWeek": { - "description": "Filter option - this week" - }, - "libraryFilterDateMonth": "This Month", - "@libraryFilterDateMonth": { - "description": "Filter option - this month" - }, - "libraryFilterDateYear": "This Year", - "@libraryFilterDateYear": { - "description": "Filter option - this year" - }, - "libraryFilterSort": "Sort", - "@libraryFilterSort": { - "description": "Filter section - sort order" - }, - "libraryFilterSortLatest": "Latest", - "@libraryFilterSortLatest": { - "description": "Sort option - newest first" - }, - "libraryFilterSortOldest": "Oldest", - "@libraryFilterSortOldest": { - "description": "Sort option - oldest first" - }, - "libraryFilterActive": "{count} filter(s) active", - "@libraryFilterActive": { - "description": "Badge showing number of active filters", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "timeJustNow": "Just now", - "@timeJustNow": { - "description": "Relative time - less than a minute ago" - }, - "timeMinutesAgo": "{count, plural, =1{1 minute ago} other{{count} minutes ago}}", - "@timeMinutesAgo": { - "description": "Relative time - minutes ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "timeHoursAgo": "{count, plural, =1{1 hour ago} other{{count} hours ago}}", - "@timeHoursAgo": { - "description": "Relative time - hours ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storageSwitchTitle": "Switch Storage Mode", - "@storageSwitchTitle": { - "description": "Dialog title when switching storage mode" - }, - "storageSwitchToSafTitle": "Switch to SAF Storage?", - "@storageSwitchToSafTitle": { - "description": "Dialog title when switching to SAF" - }, - "storageSwitchToAppTitle": "Switch to App Storage?", - "@storageSwitchToAppTitle": { - "description": "Dialog title when switching to app storage" - }, - "storageSwitchToSafMessage": "Your existing downloads will remain in the current location and stay accessible.\n\nNew downloads will be saved to your selected SAF folder.", - "@storageSwitchToSafMessage": { - "description": "Explanation when switching to SAF" - }, - "storageSwitchToAppMessage": "Your existing downloads will remain in the current SAF location and stay accessible.\n\nNew downloads will be saved to Music/SpotiFLAC folder.", - "@storageSwitchToAppMessage": { - "description": "Explanation when switching to app storage" - }, - "storageSwitchExistingDownloads": "Existing Downloads", - "@storageSwitchExistingDownloads": { - "description": "Section header for existing downloads info" - }, - "storageSwitchExistingDownloadsInfo": "{count} tracks in {mode} storage", - "@storageSwitchExistingDownloadsInfo": { - "description": "Info about existing downloads count", - "placeholders": { - "count": { - "type": "int" - }, - "mode": { - "type": "String" - } - } - }, - "storageSwitchNewDownloads": "New Downloads", - "@storageSwitchNewDownloads": { - "description": "Section header for new downloads info" - }, - "storageSwitchNewDownloadsLocation": "Will be saved to: {location}", - "@storageSwitchNewDownloadsLocation": { - "description": "Shows where new downloads will go", - "placeholders": { - "location": { - "type": "String" - } - } - }, - "storageSwitchContinue": "Continue", - "@storageSwitchContinue": { - "description": "Button to proceed with storage switch" - }, - "storageSwitchSelectFolder": "Select SAF Folder", - "@storageSwitchSelectFolder": { - "description": "Button to select SAF folder" - }, - "storageAppStorage": "App Storage", - "@storageAppStorage": { - "description": "Label for app storage mode" - }, - "storageSafStorage": "SAF Storage", - "@storageSafStorage": { - "description": "Label for SAF storage mode" - }, - "storageModeBadge": "Storage: {mode}", - "@storageModeBadge": { - "description": "Badge showing storage mode for a track", - "placeholders": { - "mode": { - "type": "String" - } - } - }, - "storageStatsTitle": "Storage Statistics", - "@storageStatsTitle": { - "description": "Section title for storage stats" - }, - "storageStatsAppCount": "{count} tracks in App Storage", - "@storageStatsAppCount": { - "description": "Count of tracks in app storage", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storageStatsSafCount": "{count} tracks in SAF Storage", - "@storageStatsSafCount": { - "description": "Count of tracks in SAF storage", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storageModeInfo": "Your files are stored in multiple locations", - "@storageModeInfo": { - "description": "Info when user has files in both storage modes" - }, - "tutorialWelcomeTitle": "Welcome to SpotiFLAC!", - "@tutorialWelcomeTitle": { - "description": "Tutorial welcome page title" - }, - "tutorialWelcomeDesc": "Let's learn how to download your favorite music in lossless quality. This quick tutorial will show you the basics.", - "@tutorialWelcomeDesc": { - "description": "Tutorial welcome page description" - }, - "tutorialWelcomeTip1": "Download music from Spotify, Deezer, or paste any supported URL", - "@tutorialWelcomeTip1": { - "description": "Tutorial welcome tip 1" - }, - "tutorialWelcomeTip2": "Get FLAC quality audio from Tidal, Qobuz, or Amazon Music", - "@tutorialWelcomeTip2": { - "description": "Tutorial welcome tip 2" - }, - "tutorialWelcomeTip3": "Automatic metadata, cover art, and lyrics embedding", - "@tutorialWelcomeTip3": { - "description": "Tutorial welcome tip 3" - }, - "tutorialSearchTitle": "Finding Music", - "@tutorialSearchTitle": { - "description": "Tutorial search page title" - }, - "tutorialSearchDesc": "There are two easy ways to find music you want to download.", - "@tutorialSearchDesc": { - "description": "Tutorial search page description" - }, - "tutorialSearchTip1": "Paste a Spotify or Deezer URL directly in the search box", - "@tutorialSearchTip1": { - "description": "Tutorial search tip 1" - }, - "tutorialSearchTip2": "Or type the song name, artist, or album to search", - "@tutorialSearchTip2": { - "description": "Tutorial search tip 2" - }, - "tutorialSearchTip3": "Supports tracks, albums, playlists, and artist pages", - "@tutorialSearchTip3": { - "description": "Tutorial search tip 3" - }, - "tutorialDownloadTitle": "Downloading Music", - "@tutorialDownloadTitle": { - "description": "Tutorial download page title" - }, - "tutorialDownloadDesc": "Downloading music is simple and fast. Here's how it works.", - "@tutorialDownloadDesc": { - "description": "Tutorial download page description" - }, - "tutorialDownloadTip1": "Tap the download button next to any track to start downloading", - "@tutorialDownloadTip1": { - "description": "Tutorial download tip 1" - }, - "tutorialDownloadTip2": "Choose your preferred quality (FLAC, Hi-Res, or MP3)", - "@tutorialDownloadTip2": { - "description": "Tutorial download tip 2" - }, - "tutorialDownloadTip3": "Download entire albums or playlists with one tap", - "@tutorialDownloadTip3": { - "description": "Tutorial download tip 3" - }, - "tutorialLibraryTitle": "Your Library", - "@tutorialLibraryTitle": { - "description": "Tutorial library page title" - }, - "tutorialLibraryDesc": "All your downloaded music is organized in the Library tab.", - "@tutorialLibraryDesc": { - "description": "Tutorial library page description" - }, - "tutorialLibraryTip1": "View download progress and queue in the Library tab", - "@tutorialLibraryTip1": { - "description": "Tutorial library tip 1" - }, - "tutorialLibraryTip2": "Tap any track to play it with your music player", - "@tutorialLibraryTip2": { - "description": "Tutorial library tip 2" - }, - "tutorialLibraryTip3": "Switch between list and grid view for better browsing", - "@tutorialLibraryTip3": { - "description": "Tutorial library tip 3" - }, - "tutorialExtensionsTitle": "Extensions", - "@tutorialExtensionsTitle": { - "description": "Tutorial extensions page title" - }, - "tutorialExtensionsDesc": "Extend the app's capabilities with community extensions.", - "@tutorialExtensionsDesc": { - "description": "Tutorial extensions page description" - }, - "tutorialExtensionsTip1": "Browse the Store tab to discover useful extensions", - "@tutorialExtensionsTip1": { - "description": "Tutorial extensions tip 1" - }, - "tutorialExtensionsTip2": "Add new download providers or search sources", - "@tutorialExtensionsTip2": { - "description": "Tutorial extensions tip 2" - }, - "tutorialExtensionsTip3": "Get lyrics, enhanced metadata, and more features", - "@tutorialExtensionsTip3": { - "description": "Tutorial extensions tip 3" - }, - "tutorialSettingsTitle": "Customize Your Experience", - "@tutorialSettingsTitle": { - "description": "Tutorial settings page title" - }, - "tutorialSettingsDesc": "Personalize the app in Settings to match your preferences.", - "@tutorialSettingsDesc": { - "description": "Tutorial settings page description" - }, - "tutorialSettingsTip1": "Change download location and folder organization", - "@tutorialSettingsTip1": { - "description": "Tutorial settings tip 1" - }, - "tutorialSettingsTip2": "Set default audio quality and format preferences", - "@tutorialSettingsTip2": { - "description": "Tutorial settings tip 2" - }, - "tutorialSettingsTip3": "Customize app theme and appearance", - "@tutorialSettingsTip3": { - "description": "Tutorial settings tip 3" - }, - "tutorialReadyMessage": "You're all set! Start downloading your favorite music now.", - "@tutorialReadyMessage": { - "description": "Tutorial completion message" - }, - "tutorialExample": "EXAMPLE", - "@tutorialExample": { - "description": "Example label in tutorial" - }, - "libraryForceFullScan": "Force Full Scan", - "@libraryForceFullScan": { - "description": "Button to force a complete rescan of library" - }, - "libraryForceFullScanSubtitle": "Rescan all files, ignoring cache", - "@libraryForceFullScanSubtitle": { - "description": "Subtitle for force full scan button" - }, - "cleanupOrphanedDownloads": "Cleanup Orphaned Downloads", - "@cleanupOrphanedDownloads": { - "description": "Button to remove history entries for deleted files" - }, - "cleanupOrphanedDownloadsSubtitle": "Remove history entries for files that no longer exist", - "@cleanupOrphanedDownloadsSubtitle": { - "description": "Subtitle for orphaned cleanup button" - }, - "cleanupOrphanedDownloadsResult": "Removed {count} orphaned entries from history", - "@cleanupOrphanedDownloadsResult": { - "description": "Snackbar after orphan cleanup", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cleanupOrphanedDownloadsNone": "No orphaned entries found", - "@cleanupOrphanedDownloadsNone": { - "description": "Snackbar when no orphans found" - }, - "cacheTitle": "Storage & Cache", - "@cacheTitle": { - "description": "Cache management page title" - }, - "cacheSummaryTitle": "Cache overview", - "@cacheSummaryTitle": { - "description": "Heading for cache summary card" - }, - "cacheSummarySubtitle": "Clearing cache will not remove downloaded music files.", - "@cacheSummarySubtitle": { - "description": "Helper text for cache summary card" - }, - "cacheEstimatedTotal": "Estimated cache usage: {size}", - "@cacheEstimatedTotal": { - "description": "Total cache size shown in summary", - "placeholders": { - "size": { - "type": "String" - } - } - }, - "cacheSectionStorage": "Cached Data", - "@cacheSectionStorage": { - "description": "Section header for cache entries" - }, - "cacheSectionMaintenance": "Maintenance", - "@cacheSectionMaintenance": { - "description": "Section header for cleanup actions" - }, - "cacheAppDirectory": "App cache directory", - "@cacheAppDirectory": { - "description": "Cache item title for app cache directory" - }, - "cacheAppDirectoryDesc": "HTTP responses, WebView data, and other temporary app data.", - "@cacheAppDirectoryDesc": { - "description": "Description of what app cache directory contains" - }, - "cacheTempDirectory": "Temporary directory", - "@cacheTempDirectory": { - "description": "Cache item title for temporary files directory" - }, - "cacheTempDirectoryDesc": "Temporary files from downloads and audio conversion.", - "@cacheTempDirectoryDesc": { - "description": "Description of what temporary directory contains" - }, - "cacheCoverImage": "Cover image cache", - "@cacheCoverImage": { - "description": "Cache item title for persistent cover images" - }, - "cacheCoverImageDesc": "Downloaded album and track cover art. Will re-download when viewed.", - "@cacheCoverImageDesc": { - "description": "Description of what cover image cache contains" - }, - "cacheLibraryCover": "Library cover cache", - "@cacheLibraryCover": { - "description": "Cache item title for local library cover art images" - }, - "cacheLibraryCoverDesc": "Cover art extracted from local music files. Will re-extract on next scan.", - "@cacheLibraryCoverDesc": { - "description": "Description of what library cover cache contains" - }, - "cacheExploreFeed": "Explore feed cache", - "@cacheExploreFeed": { - "description": "Cache item title for explore home feed cache" - }, - "cacheExploreFeedDesc": "Explore tab content (new releases, trending). Will refresh on next visit.", - "@cacheExploreFeedDesc": { - "description": "Description of what explore feed cache contains" - }, - "cacheTrackLookup": "Track lookup cache", - "@cacheTrackLookup": { - "description": "Cache item title for track ID lookup cache" - }, - "cacheTrackLookupDesc": "Spotify/Deezer track ID lookups. Clearing may slow next few searches.", - "@cacheTrackLookupDesc": { - "description": "Description of what track lookup cache contains" - }, - "cacheCleanupUnusedDesc": "Remove orphaned download history and library entries for missing files.", - "@cacheCleanupUnusedDesc": { - "description": "Description of what cleanup unused data does" - }, - "cacheNoData": "No cached data", - "@cacheNoData": { - "description": "Label when cache category has no data" - }, - "cacheSizeWithFiles": "{size} in {count} files", - "@cacheSizeWithFiles": { - "description": "Cache size and file count", - "placeholders": { - "size": { - "type": "String" - }, - "count": { - "type": "int" - } - } - }, - "cacheSizeOnly": "{size}", - "@cacheSizeOnly": { - "description": "Cache size only", - "placeholders": { - "size": { - "type": "String" - } - } - }, - "cacheEntries": "{count} entries", - "@cacheEntries": { - "description": "Track cache entry count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cacheClearSuccess": "Cleared: {target}", - "@cacheClearSuccess": { - "description": "Snackbar after clearing selected cache", - "placeholders": { - "target": { - "type": "String" - } - } - }, - "cacheClearConfirmTitle": "Clear cache?", - "@cacheClearConfirmTitle": { - "description": "Dialog title before clearing one cache category" - }, - "cacheClearConfirmMessage": "This will clear cached data for {target}. Downloaded music files will not be deleted.", - "@cacheClearConfirmMessage": { - "description": "Dialog message before clearing selected cache", - "placeholders": { - "target": { - "type": "String" - } - } - }, - "cacheClearAllConfirmTitle": "Clear all cache?", - "@cacheClearAllConfirmTitle": { - "description": "Dialog title before clearing all caches" - }, - "cacheClearAllConfirmMessage": "This will clear all cache categories on this page. Downloaded music files will not be deleted.", - "@cacheClearAllConfirmMessage": { - "description": "Dialog message before clearing all caches" - }, - "cacheClearAll": "Clear all cache", - "@cacheClearAll": { - "description": "Button label to clear all caches" - }, - "cacheCleanupUnused": "Cleanup unused data", - "@cacheCleanupUnused": { - "description": "Action title for cleaning unused entries" - }, - "cacheCleanupUnusedSubtitle": "Remove orphaned download history and missing library entries", - "@cacheCleanupUnusedSubtitle": { - "description": "Subtitle for cleanup unused data action" - }, - "cacheCleanupResult": "Cleanup completed: {downloadCount} orphaned downloads, {libraryCount} missing library entries", - "@cacheCleanupResult": { - "description": "Snackbar after unused data cleanup", - "placeholders": { - "downloadCount": { - "type": "int" - }, - "libraryCount": { - "type": "int" - } - } - }, - "cacheRefreshStats": "Refresh stats", - "@cacheRefreshStats": { - "description": "Button label to refresh cache statistics" - }, - "trackSaveCoverArt": "Save Cover Art", - "@trackSaveCoverArt": { - "description": "Menu action - save album cover art as file" - }, - "trackSaveCoverArtSubtitle": "Save album art as .jpg file", - "@trackSaveCoverArtSubtitle": { - "description": "Subtitle for save cover art action" - }, - "trackSaveLyrics": "Save Lyrics (.lrc)", - "@trackSaveLyrics": { - "description": "Menu action - save lyrics as .lrc file" - }, - "trackSaveLyricsSubtitle": "Fetch and save lyrics as .lrc file", - "@trackSaveLyricsSubtitle": { - "description": "Subtitle for save lyrics action" - }, - "trackSaveLyricsProgress": "Saving lyrics...", - "@trackSaveLyricsProgress": { - "description": "Snackbar while saving lyrics to file" - }, - "trackReEnrich": "Re-enrich", - "@trackReEnrich": { - "description": "Menu action - re-embed metadata into audio file" - }, - "trackReEnrichSubtitle": "Re-embed metadata without re-downloading", - "@trackReEnrichSubtitle": { - "description": "Subtitle for re-enrich metadata action" - }, - "trackReEnrichOnlineSubtitle": "Search metadata online and embed into file", - "@trackReEnrichOnlineSubtitle": { - "description": "Subtitle for re-enrich metadata action for local items" - }, - "trackEditMetadata": "Edit Metadata", - "@trackEditMetadata": { - "description": "Menu action - edit embedded metadata" - }, - "trackCoverSaved": "Cover art saved to {fileName}", - "@trackCoverSaved": { - "description": "Snackbar after cover art saved", - "placeholders": { - "fileName": { - "type": "String" - } - } - }, - "trackCoverNoSource": "No cover art source available", - "@trackCoverNoSource": { - "description": "Snackbar when no cover art URL or embedded cover" - }, - "trackLyricsSaved": "Lyrics saved to {fileName}", - "@trackLyricsSaved": { - "description": "Snackbar after lyrics saved", - "placeholders": { - "fileName": { - "type": "String" - } - } - }, - "trackReEnrichProgress": "Re-enriching metadata...", - "@trackReEnrichProgress": { - "description": "Snackbar while re-enriching metadata" - }, - "trackReEnrichSearching": "Searching metadata online...", - "@trackReEnrichSearching": { - "description": "Snackbar while searching metadata from internet for local items" - }, - "trackReEnrichSuccess": "Metadata re-enriched successfully", - "@trackReEnrichSuccess": { - "description": "Snackbar after successful re-enrichment" - }, - "trackReEnrichFfmpegFailed": "FFmpeg metadata embed failed", - "@trackReEnrichFfmpegFailed": { - "description": "Snackbar when FFmpeg embed fails for MP3/Opus" - }, - "trackSaveFailed": "Failed: {error}", - "@trackSaveFailed": { - "description": "Snackbar when save operation fails", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "trackConvertFormat": "Convert Format", - "@trackConvertFormat": { - "description": "Menu item - convert audio format" - }, - "trackConvertFormatSubtitle": "Convert to MP3 or Opus", - "@trackConvertFormatSubtitle": { - "description": "Subtitle for convert format menu item" - }, - "trackConvertTitle": "Convert Audio", - "@trackConvertTitle": { - "description": "Title of convert bottom sheet" - }, - "trackConvertTargetFormat": "Target Format", - "@trackConvertTargetFormat": { - "description": "Label for format selection" - }, - "trackConvertBitrate": "Bitrate", - "@trackConvertBitrate": { - "description": "Label for bitrate selection" - }, - "trackConvertConfirmTitle": "Confirm Conversion", - "@trackConvertConfirmTitle": { - "description": "Confirmation dialog title" - }, - "trackConvertConfirmMessage": "Convert from {sourceFormat} to {targetFormat} at {bitrate}?\n\nThe original file will be deleted after conversion.", - "@trackConvertConfirmMessage": { - "description": "Confirmation dialog message", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "bitrate": { - "type": "String" - } - } - }, - "trackConvertConverting": "Converting audio...", - "@trackConvertConverting": { - "description": "Snackbar while converting" - }, - "trackConvertSuccess": "Converted to {format} successfully", - "@trackConvertSuccess": { - "description": "Snackbar after successful conversion", - "placeholders": { - "format": { - "type": "String" - } - } - }, + "libraryLastScanned": "Last scanned: {time}", + "@libraryLastScanned": { + "description": "Last scan time display", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "libraryLastScannedNever": "Never", + "@libraryLastScannedNever": { + "description": "Shown when library has never been scanned" + }, + "libraryScanning": "Scanning...", + "@libraryScanning": { + "description": "Status during scan" + }, + "libraryScanProgress": "{progress}% of {total} files", + "@libraryScanProgress": { + "description": "Scan progress display", + "placeholders": { + "progress": { + "type": "String" + }, + "total": { + "type": "int" + } + } + }, + "libraryInLibrary": "In Library", + "@libraryInLibrary": { + "description": "Badge shown on tracks that exist in local library" + }, + "libraryRemovedMissingFiles": "Removed {count} missing files from library", + "@libraryRemovedMissingFiles": { + "description": "Snackbar after cleanup", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryCleared": "Library cleared", + "@libraryCleared": { + "description": "Snackbar after clearing library" + }, + "libraryStorageAccessRequired": "Storage Access Required", + "@libraryStorageAccessRequired": { + "description": "Dialog title for storage permission" + }, + "libraryStorageAccessMessage": "SpotiFLAC needs storage access to scan your music library. Please grant permission in settings.", + "@libraryStorageAccessMessage": { + "description": "Dialog message for storage permission" + }, + "libraryFolderNotExist": "Selected folder does not exist", + "@libraryFolderNotExist": { + "description": "Error when folder doesn't exist" + }, + "librarySourceDownloaded": "Downloaded", + "@librarySourceDownloaded": { + "description": "Badge for tracks downloaded via SpotiFLAC" + }, + "librarySourceLocal": "Local", + "@librarySourceLocal": { + "description": "Badge for tracks from local library scan" + }, + "libraryFilterAll": "All", + "@libraryFilterAll": { + "description": "Filter chip - show all library items" + }, + "libraryFilterDownloaded": "Downloaded", + "@libraryFilterDownloaded": { + "description": "Filter chip - show only downloaded items" + }, + "libraryFilterLocal": "Local", + "@libraryFilterLocal": { + "description": "Filter chip - show only local library items" + }, + "libraryFilterTitle": "Filters", + "@libraryFilterTitle": { + "description": "Filter bottom sheet title" + }, + "libraryFilterReset": "Reset", + "@libraryFilterReset": { + "description": "Reset all filters button" + }, + "libraryFilterApply": "Apply", + "@libraryFilterApply": { + "description": "Apply filters button" + }, + "libraryFilterSource": "Source", + "@libraryFilterSource": { + "description": "Filter section - source type" + }, + "libraryFilterQuality": "Quality", + "@libraryFilterQuality": { + "description": "Filter section - audio quality" + }, + "libraryFilterQualityHiRes": "Hi-Res (24bit)", + "@libraryFilterQualityHiRes": { + "description": "Filter option - high resolution audio" + }, + "libraryFilterQualityCD": "CD (16bit)", + "@libraryFilterQualityCD": { + "description": "Filter option - CD quality audio" + }, + "libraryFilterQualityLossy": "Lossy", + "@libraryFilterQualityLossy": { + "description": "Filter option - lossy compressed audio" + }, + "libraryFilterFormat": "Format", + "@libraryFilterFormat": { + "description": "Filter section - file format" + }, + "libraryFilterSort": "Sort", + "@libraryFilterSort": { + "description": "Filter section - sort order" + }, + "libraryFilterSortLatest": "Latest", + "@libraryFilterSortLatest": { + "description": "Sort option - newest first" + }, + "libraryFilterSortOldest": "Oldest", + "@libraryFilterSortOldest": { + "description": "Sort option - oldest first" + }, + "timeJustNow": "Just now", + "@timeJustNow": { + "description": "Relative time - less than a minute ago" + }, + "timeMinutesAgo": "{count, plural, =1{1 minute ago} other{{count} minutes ago}}", + "@timeMinutesAgo": { + "description": "Relative time - minutes ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "timeHoursAgo": "{count, plural, =1{1 hour ago} other{{count} hours ago}}", + "@timeHoursAgo": { + "description": "Relative time - hours ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "tutorialWelcomeTitle": "Welcome to SpotiFLAC!", + "@tutorialWelcomeTitle": { + "description": "Tutorial welcome page title" + }, + "tutorialWelcomeDesc": "Let's learn how to download your favorite music in lossless quality. This quick tutorial will show you the basics.", + "@tutorialWelcomeDesc": { + "description": "Tutorial welcome page description" + }, + "tutorialWelcomeTip1": "Download music from Spotify, Deezer, or paste any supported URL", + "@tutorialWelcomeTip1": { + "description": "Tutorial welcome tip 1" + }, + "tutorialWelcomeTip2": "Get FLAC quality audio from Tidal, Qobuz, or Amazon Music", + "@tutorialWelcomeTip2": { + "description": "Tutorial welcome tip 2" + }, + "tutorialWelcomeTip3": "Automatic metadata, cover art, and lyrics embedding", + "@tutorialWelcomeTip3": { + "description": "Tutorial welcome tip 3" + }, + "tutorialSearchTitle": "Finding Music", + "@tutorialSearchTitle": { + "description": "Tutorial search page title" + }, + "tutorialSearchDesc": "There are two easy ways to find music you want to download.", + "@tutorialSearchDesc": { + "description": "Tutorial search page description" + }, + "tutorialDownloadTitle": "Downloading Music", + "@tutorialDownloadTitle": { + "description": "Tutorial download page title" + }, + "tutorialDownloadDesc": "Downloading music is simple and fast. Here's how it works.", + "@tutorialDownloadDesc": { + "description": "Tutorial download page description" + }, + "tutorialLibraryTitle": "Your Library", + "@tutorialLibraryTitle": { + "description": "Tutorial library page title" + }, + "tutorialLibraryDesc": "All your downloaded music is organized in the Library tab.", + "@tutorialLibraryDesc": { + "description": "Tutorial library page description" + }, + "tutorialLibraryTip1": "View download progress and queue in the Library tab", + "@tutorialLibraryTip1": { + "description": "Tutorial library tip 1" + }, + "tutorialLibraryTip2": "Tap any track to play it with your music player", + "@tutorialLibraryTip2": { + "description": "Tutorial library tip 2" + }, + "tutorialLibraryTip3": "Switch between list and grid view for better browsing", + "@tutorialLibraryTip3": { + "description": "Tutorial library tip 3" + }, + "tutorialExtensionsTitle": "Extensions", + "@tutorialExtensionsTitle": { + "description": "Tutorial extensions page title" + }, + "tutorialExtensionsDesc": "Extend the app's capabilities with community extensions.", + "@tutorialExtensionsDesc": { + "description": "Tutorial extensions page description" + }, + "tutorialExtensionsTip1": "Browse the Store tab to discover useful extensions", + "@tutorialExtensionsTip1": { + "description": "Tutorial extensions tip 1" + }, + "tutorialExtensionsTip2": "Add new download providers or search sources", + "@tutorialExtensionsTip2": { + "description": "Tutorial extensions tip 2" + }, + "tutorialExtensionsTip3": "Get lyrics, enhanced metadata, and more features", + "@tutorialExtensionsTip3": { + "description": "Tutorial extensions tip 3" + }, + "tutorialSettingsTitle": "Customize Your Experience", + "@tutorialSettingsTitle": { + "description": "Tutorial settings page title" + }, + "tutorialSettingsDesc": "Personalize the app in Settings to match your preferences.", + "@tutorialSettingsDesc": { + "description": "Tutorial settings page description" + }, + "tutorialSettingsTip1": "Change download location and folder organization", + "@tutorialSettingsTip1": { + "description": "Tutorial settings tip 1" + }, + "tutorialSettingsTip2": "Set default audio quality and format preferences", + "@tutorialSettingsTip2": { + "description": "Tutorial settings tip 2" + }, + "tutorialSettingsTip3": "Customize app theme and appearance", + "@tutorialSettingsTip3": { + "description": "Tutorial settings tip 3" + }, + "tutorialReadyMessage": "You're all set! Start downloading your favorite music now.", + "@tutorialReadyMessage": { + "description": "Tutorial completion message" + }, + "libraryForceFullScan": "Force Full Scan", + "@libraryForceFullScan": { + "description": "Button to force a complete rescan of library" + }, + "libraryForceFullScanSubtitle": "Rescan all files, ignoring cache", + "@libraryForceFullScanSubtitle": { + "description": "Subtitle for force full scan button" + }, + "cleanupOrphanedDownloads": "Cleanup Orphaned Downloads", + "@cleanupOrphanedDownloads": { + "description": "Button to remove history entries for deleted files" + }, + "cleanupOrphanedDownloadsSubtitle": "Remove history entries for files that no longer exist", + "@cleanupOrphanedDownloadsSubtitle": { + "description": "Subtitle for orphaned cleanup button" + }, + "cleanupOrphanedDownloadsResult": "Removed {count} orphaned entries from history", + "@cleanupOrphanedDownloadsResult": { + "description": "Snackbar after orphan cleanup", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cleanupOrphanedDownloadsNone": "No orphaned entries found", + "@cleanupOrphanedDownloadsNone": { + "description": "Snackbar when no orphans found" + }, + "cacheTitle": "Storage & Cache", + "@cacheTitle": { + "description": "Cache management page title" + }, + "cacheSummaryTitle": "Cache overview", + "@cacheSummaryTitle": { + "description": "Heading for cache summary card" + }, + "cacheSummarySubtitle": "Clearing cache will not remove downloaded music files.", + "@cacheSummarySubtitle": { + "description": "Helper text for cache summary card" + }, + "cacheEstimatedTotal": "Estimated cache usage: {size}", + "@cacheEstimatedTotal": { + "description": "Total cache size shown in summary", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "cacheSectionStorage": "Cached Data", + "@cacheSectionStorage": { + "description": "Section header for cache entries" + }, + "cacheSectionMaintenance": "Maintenance", + "@cacheSectionMaintenance": { + "description": "Section header for cleanup actions" + }, + "cacheAppDirectory": "App cache directory", + "@cacheAppDirectory": { + "description": "Cache item title for app cache directory" + }, + "cacheAppDirectoryDesc": "HTTP responses, WebView data, and other temporary app data.", + "@cacheAppDirectoryDesc": { + "description": "Description of what app cache directory contains" + }, + "cacheTempDirectory": "Temporary directory", + "@cacheTempDirectory": { + "description": "Cache item title for temporary files directory" + }, + "cacheTempDirectoryDesc": "Temporary files from downloads and audio conversion.", + "@cacheTempDirectoryDesc": { + "description": "Description of what temporary directory contains" + }, + "cacheCoverImage": "Cover image cache", + "@cacheCoverImage": { + "description": "Cache item title for persistent cover images" + }, + "cacheCoverImageDesc": "Downloaded album and track cover art. Will re-download when viewed.", + "@cacheCoverImageDesc": { + "description": "Description of what cover image cache contains" + }, + "cacheLibraryCover": "Library cover cache", + "@cacheLibraryCover": { + "description": "Cache item title for local library cover art images" + }, + "cacheLibraryCoverDesc": "Cover art extracted from local music files. Will re-extract on next scan.", + "@cacheLibraryCoverDesc": { + "description": "Description of what library cover cache contains" + }, + "cacheExploreFeed": "Explore feed cache", + "@cacheExploreFeed": { + "description": "Cache item title for explore home feed cache" + }, + "cacheExploreFeedDesc": "Explore tab content (new releases, trending). Will refresh on next visit.", + "@cacheExploreFeedDesc": { + "description": "Description of what explore feed cache contains" + }, + "cacheTrackLookup": "Track lookup cache", + "@cacheTrackLookup": { + "description": "Cache item title for track ID lookup cache" + }, + "cacheTrackLookupDesc": "Spotify/Deezer track ID lookups. Clearing may slow next few searches.", + "@cacheTrackLookupDesc": { + "description": "Description of what track lookup cache contains" + }, + "cacheCleanupUnusedDesc": "Remove orphaned download history and library entries for missing files.", + "@cacheCleanupUnusedDesc": { + "description": "Description of what cleanup unused data does" + }, + "cacheNoData": "No cached data", + "@cacheNoData": { + "description": "Label when cache category has no data" + }, + "cacheSizeWithFiles": "{size} in {count} files", + "@cacheSizeWithFiles": { + "description": "Cache size and file count", + "placeholders": { + "size": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "cacheSizeOnly": "{size}", + "@cacheSizeOnly": { + "description": "Cache size only", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "cacheEntries": "{count} entries", + "@cacheEntries": { + "description": "Track cache entry count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cacheClearSuccess": "Cleared: {target}", + "@cacheClearSuccess": { + "description": "Snackbar after clearing selected cache", + "placeholders": { + "target": { + "type": "String" + } + } + }, + "cacheClearConfirmTitle": "Clear cache?", + "@cacheClearConfirmTitle": { + "description": "Dialog title before clearing one cache category" + }, + "cacheClearConfirmMessage": "This will clear cached data for {target}. Downloaded music files will not be deleted.", + "@cacheClearConfirmMessage": { + "description": "Dialog message before clearing selected cache", + "placeholders": { + "target": { + "type": "String" + } + } + }, + "cacheClearAllConfirmTitle": "Clear all cache?", + "@cacheClearAllConfirmTitle": { + "description": "Dialog title before clearing all caches" + }, + "cacheClearAllConfirmMessage": "This will clear all cache categories on this page. Downloaded music files will not be deleted.", + "@cacheClearAllConfirmMessage": { + "description": "Dialog message before clearing all caches" + }, + "cacheClearAll": "Clear all cache", + "@cacheClearAll": { + "description": "Button label to clear all caches" + }, + "cacheCleanupUnused": "Cleanup unused data", + "@cacheCleanupUnused": { + "description": "Action title for cleaning unused entries" + }, + "cacheCleanupUnusedSubtitle": "Remove orphaned download history and missing library entries", + "@cacheCleanupUnusedSubtitle": { + "description": "Subtitle for cleanup unused data action" + }, + "cacheCleanupResult": "Cleanup completed: {downloadCount} orphaned downloads, {libraryCount} missing library entries", + "@cacheCleanupResult": { + "description": "Snackbar after unused data cleanup", + "placeholders": { + "downloadCount": { + "type": "int" + }, + "libraryCount": { + "type": "int" + } + } + }, + "cacheRefreshStats": "Refresh stats", + "@cacheRefreshStats": { + "description": "Button label to refresh cache statistics" + }, + "trackSaveCoverArt": "Save Cover Art", + "@trackSaveCoverArt": { + "description": "Menu action - save album cover art as file" + }, + "trackSaveCoverArtSubtitle": "Save album art as .jpg file", + "@trackSaveCoverArtSubtitle": { + "description": "Subtitle for save cover art action" + }, + "trackSaveLyrics": "Save Lyrics (.lrc)", + "@trackSaveLyrics": { + "description": "Menu action - save lyrics as .lrc file" + }, + "trackSaveLyricsSubtitle": "Fetch and save lyrics as .lrc file", + "@trackSaveLyricsSubtitle": { + "description": "Subtitle for save lyrics action" + }, + "trackSaveLyricsProgress": "Saving lyrics...", + "@trackSaveLyricsProgress": { + "description": "Snackbar while saving lyrics to file" + }, + "trackReEnrich": "Re-enrich", + "@trackReEnrich": { + "description": "Menu action - re-embed metadata into audio file" + }, + "trackReEnrichOnlineSubtitle": "Search metadata online and embed into file", + "@trackReEnrichOnlineSubtitle": { + "description": "Subtitle for re-enrich metadata action for local items" + }, + "trackEditMetadata": "Edit Metadata", + "@trackEditMetadata": { + "description": "Menu action - edit embedded metadata" + }, + "trackCoverSaved": "Cover art saved to {fileName}", + "@trackCoverSaved": { + "description": "Snackbar after cover art saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "trackCoverNoSource": "No cover art source available", + "@trackCoverNoSource": { + "description": "Snackbar when no cover art URL or embedded cover" + }, + "trackLyricsSaved": "Lyrics saved to {fileName}", + "@trackLyricsSaved": { + "description": "Snackbar after lyrics saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "trackReEnrichProgress": "Re-enriching metadata...", + "@trackReEnrichProgress": { + "description": "Snackbar while re-enriching metadata" + }, + "trackReEnrichSearching": "Searching metadata online...", + "@trackReEnrichSearching": { + "description": "Snackbar while searching metadata from internet for local items" + }, + "trackReEnrichSuccess": "Metadata re-enriched successfully", + "@trackReEnrichSuccess": { + "description": "Snackbar after successful re-enrichment" + }, + "trackReEnrichFfmpegFailed": "FFmpeg metadata embed failed", + "@trackReEnrichFfmpegFailed": { + "description": "Snackbar when FFmpeg embed fails for MP3/Opus" + }, + "trackSaveFailed": "Failed: {error}", + "@trackSaveFailed": { + "description": "Snackbar when save operation fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "trackConvertFormat": "Convert Format", + "@trackConvertFormat": { + "description": "Menu item - convert audio format" + }, + "trackConvertFormatSubtitle": "Convert to MP3 or Opus", + "@trackConvertFormatSubtitle": { + "description": "Subtitle for convert format menu item" + }, + "trackConvertTitle": "Convert Audio", + "@trackConvertTitle": { + "description": "Title of convert bottom sheet" + }, + "trackConvertTargetFormat": "Target Format", + "@trackConvertTargetFormat": { + "description": "Label for format selection" + }, + "trackConvertBitrate": "Bitrate", + "@trackConvertBitrate": { + "description": "Label for bitrate selection" + }, + "trackConvertConfirmTitle": "Confirm Conversion", + "@trackConvertConfirmTitle": { + "description": "Confirmation dialog title" + }, + "trackConvertConfirmMessage": "Convert from {sourceFormat} to {targetFormat} at {bitrate}?\n\nThe original file will be deleted after conversion.", + "@trackConvertConfirmMessage": { + "description": "Confirmation dialog message", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "trackConvertConverting": "Converting audio...", + "@trackConvertConverting": { + "description": "Snackbar while converting" + }, + "trackConvertSuccess": "Converted to {format} successfully", + "@trackConvertSuccess": { + "description": "Snackbar after successful conversion", + "placeholders": { + "format": { + "type": "String" + } + } + }, "trackConvertFailed": "Conversion failed", "@trackConvertFailed": { "description": "Snackbar when conversion fails" }, - "actionCreate": "Buat", "@actionCreate": { "description": "Generic action button - create" @@ -4176,75 +2989,117 @@ } } }, - "trackOptionAddToLoved": "Tambahkan ke Loved", - "@trackOptionAddToLoved": {"description": "Bottom sheet action label - add track to loved folder"}, + "@trackOptionAddToLoved": { + "description": "Bottom sheet action label - add track to loved folder" + }, "trackOptionRemoveFromLoved": "Hapus dari Loved", - "@trackOptionRemoveFromLoved": {"description": "Bottom sheet action label - remove track from loved folder"}, + "@trackOptionRemoveFromLoved": { + "description": "Bottom sheet action label - remove track from loved folder" + }, "trackOptionAddToWishlist": "Tambahkan ke Wishlist", - "@trackOptionAddToWishlist": {"description": "Bottom sheet action label - add track to wishlist"}, + "@trackOptionAddToWishlist": { + "description": "Bottom sheet action label - add track to wishlist" + }, "trackOptionRemoveFromWishlist": "Hapus dari Wishlist", - "@trackOptionRemoveFromWishlist": {"description": "Bottom sheet action label - remove track from wishlist"}, - + "@trackOptionRemoveFromWishlist": { + "description": "Bottom sheet action label - remove track from wishlist" + }, "collectionPlaylistChangeCover": "Ubah gambar sampul", - "@collectionPlaylistChangeCover": {"description": "Bottom sheet action to pick a custom cover image for a playlist"}, + "@collectionPlaylistChangeCover": { + "description": "Bottom sheet action to pick a custom cover image for a playlist" + }, "collectionPlaylistRemoveCover": "Hapus gambar sampul", - "@collectionPlaylistRemoveCover": {"description": "Bottom sheet action to remove custom cover image from a playlist"}, - "setupModeSelectionTitle": "Pilih Mode Anda", - "setupModeSelectionDescription": "Bagaimana Anda ingin menggunakan SpotiFLAC? Anda dapat mengubahnya nanti di Pengaturan.", - "setupModeDownloaderTitle": "Pengunduh", - "setupModeDownloaderFeature1": "Unduh trek dalam kualitas FLAC lossless", - "setupModeDownloaderFeature2": "Simpan musik ke perangkat Anda untuk mendengarkan offline", - "setupModeDownloaderFeature3": "Kelola perpustakaan musik lokal Anda", - "setupModeStreamingTitle": "Streaming", - "setupModeStreamingFeature1": "Streaming trek secara instan tanpa mengunduh", - "setupModeStreamingFeature2": "Smart Queue secara otomatis menemukan musik baru untuk Anda", - "setupModeStreamingFeature3": "Putar trek apa pun sesuai permintaan dengan kontrol pemutaran", - "setupModeChangeableLater": "Anda dapat beralih antar mode kapan saja di Pengaturan.", + "@collectionPlaylistRemoveCover": { + "description": "Bottom sheet action to remove custom cover image from a playlist" + }, "selectionShareCount": "Bagikan {count} {count, plural, =1{trek} other{trek}}", "@selectionShareCount": { "description": "Share button text with count in selection mode", "placeholders": { - "count": {"type": "int"} + "count": { + "type": "int" + } } }, "selectionShareNoFiles": "Tidak ada file yang dapat dibagikan", - "@selectionShareNoFiles": {"description": "Snackbar when no selected files exist on disk"}, + "@selectionShareNoFiles": { + "description": "Snackbar when no selected files exist on disk" + }, "selectionConvertCount": "Konversi {count} {count, plural, =1{trek} other{trek}}", "@selectionConvertCount": { "description": "Convert button text with count in selection mode", "placeholders": { - "count": {"type": "int"} + "count": { + "type": "int" + } } }, "selectionConvertNoConvertible": "Tidak ada trek yang dapat dikonversi dipilih", - "@selectionConvertNoConvertible": {"description": "Snackbar when no selected tracks support conversion"}, + "@selectionConvertNoConvertible": { + "description": "Snackbar when no selected tracks support conversion" + }, "selectionBatchConvertConfirmTitle": "Konversi Massal", - "@selectionBatchConvertConfirmTitle": {"description": "Confirmation dialog title for batch conversion"}, + "@selectionBatchConvertConfirmTitle": { + "description": "Confirmation dialog title for batch conversion" + }, "selectionBatchConvertConfirmMessage": "Konversi {count} {count, plural, =1{trek} other{trek}} ke {format} pada {bitrate}?\n\nFile asli akan dihapus setelah konversi.", "@selectionBatchConvertConfirmMessage": { "description": "Confirmation dialog message for batch conversion", "placeholders": { - "count": {"type": "int"}, - "format": {"type": "String"}, - "bitrate": {"type": "String"} + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "bitrate": { + "type": "String" + } } }, "selectionBatchConvertProgress": "Mengonversi {current} dari {total}...", "@selectionBatchConvertProgress": { "description": "Snackbar during batch conversion progress", "placeholders": { - "current": {"type": "int"}, - "total": {"type": "int"} + "current": { + "type": "int" + }, + "total": { + "type": "int" + } } }, "selectionBatchConvertSuccess": "Berhasil mengonversi {success} dari {total} trek ke {format}", "@selectionBatchConvertSuccess": { "description": "Snackbar after batch conversion completes", "placeholders": { - "success": {"type": "int"}, - "total": {"type": "int"}, - "format": {"type": "String"} + "success": { + "type": "int" + }, + "total": { + "type": "int" + }, + "format": { + "type": "String" + } } + }, + "downloadedAlbumDownloadedCount": "{count} diunduh", + "@downloadedAlbumDownloadedCount": { + "description": "Downloaded tracks count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Artist folders use Album Artist when available", + "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { + "description": "Subtitle when Album Artist is used for folder naming" + }, + "downloadUseAlbumArtistForFoldersTrackSubtitle": "Artist folders use Track Artist only", + "@downloadUseAlbumArtistForFoldersTrackSubtitle": { + "description": "Subtitle when Track Artist is used for folder naming" } } diff --git a/lib/l10n/arb/app_ja.arb b/lib/l10n/arb/app_ja.arb index 8d66d905..b23b0de3 100644 --- a/lib/l10n/arb/app_ja.arb +++ b/lib/l10n/arb/app_ja.arb @@ -5,10 +5,6 @@ "@appName": { "description": "App name - DO NOT TRANSLATE" }, - "appDescription": "Tidal、Qobuz、Amazon Music から Spotify のトラックをロスレス品質でダウンロードします。", - "@appDescription": { - "description": "App description shown in about page" - }, "navHome": "ホーム", "@navHome": { "description": "Bottom navigation - Home tab" @@ -17,10 +13,6 @@ "@navLibrary": { "description": "Bottom navigation - Library tab" }, - "navHistory": "履歴", - "@navHistory": { - "description": "Bottom navigation - History tab (legacy)" - }, "navSettings": "設定", "@navSettings": { "description": "Bottom navigation - Settings tab" @@ -33,20 +25,6 @@ "@homeTitle": { "description": "Home screen title" }, - "homeSearchHint": "Spotify の URL を貼り付けまたは検索...", - "@homeSearchHint": { - "description": "Placeholder text in search box" - }, - "homeSearchHintExtension": "{extensionName} で検索...", - "@homeSearchHintExtension": { - "description": "Placeholder when extension search is active", - "placeholders": { - "extensionName": { - "type": "String", - "description": "Name of the active extension" - } - } - }, "homeSubtitle": "Spotify のリンクを貼り付けるか、名前で検索します", "@homeSubtitle": { "description": "Subtitle shown below search box" @@ -59,24 +37,6 @@ "@homeRecent": { "description": "Section header for recent searches" }, - "historyTitle": "履歴", - "@historyTitle": { - "description": "History screen title" - }, - "historyDownloading": "ダウンロード中 ({count})", - "@historyDownloading": { - "description": "Tab showing active downloads count", - "placeholders": { - "count": { - "type": "int", - "description": "Number of active downloads" - } - } - }, - "historyDownloaded": "ダウンロード済み", - "@historyDownloaded": { - "description": "Tab showing completed downloads" - }, "historyFilterAll": "すべて", "@historyFilterAll": { "description": "Filter chip - show all items" @@ -89,48 +49,6 @@ "@historyFilterSingles": { "description": "Filter chip - show singles only" }, - "historyTracksCount": "{count, plural, =1{1 個のトラック} other{{count} 個のトラック}}", - "@historyTracksCount": { - "description": "Track count with plural form", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "historyAlbumsCount": "{count, plural, =1{1 個のアルバム} other{{count} 個のアルバム}}", - "@historyAlbumsCount": { - "description": "Album count with plural form", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "historyNoDownloads": "ダウンロード履歴はありません", - "@historyNoDownloads": { - "description": "Empty state title" - }, - "historyNoDownloadsSubtitle": "ダウンロードしたトラックはここに表示されます", - "@historyNoDownloadsSubtitle": { - "description": "Empty state subtitle" - }, - "historyNoAlbums": "アルバムのダウンロードはありません", - "@historyNoAlbums": { - "description": "Empty state when filtering albums" - }, - "historyNoAlbumsSubtitle": "Download multiple tracks from an album to see them here", - "@historyNoAlbumsSubtitle": { - "description": "Empty state subtitle for albums filter" - }, - "historyNoSingles": "シングルのダウンロードはありません", - "@historyNoSingles": { - "description": "Empty state when filtering singles" - }, - "historyNoSinglesSubtitle": "Single track downloads will appear here", - "@historyNoSinglesSubtitle": { - "description": "Empty state subtitle for singles filter" - }, "historySearchHint": "検索履歴...", "@historySearchHint": { "description": "Search bar placeholder in history" @@ -163,34 +81,6 @@ "@downloadTitle": { "description": "Download settings page title" }, - "downloadLocation": "ダウンロード先", - "@downloadLocation": { - "description": "Setting for download folder" - }, - "downloadLocationSubtitle": "ファイルの保存先を選択", - "@downloadLocationSubtitle": { - "description": "Subtitle for download location" - }, - "downloadLocationDefault": "デフォルトの場所", - "@downloadLocationDefault": { - "description": "Shown when using default folder" - }, - "downloadDefaultService": "デフォルトのサービス", - "@downloadDefaultService": { - "description": "Setting for preferred download service (Tidal/Qobuz/Amazon)" - }, - "downloadDefaultServiceSubtitle": "ダウンロードに使用したサービス", - "@downloadDefaultServiceSubtitle": { - "description": "Subtitle for default service" - }, - "downloadDefaultQuality": "デフォルトの品質", - "@downloadDefaultQuality": { - "description": "Setting for audio quality" - }, - "downloadAskQuality": "ダウンロード前に品質を確認する", - "@downloadAskQuality": { - "description": "Toggle to show quality picker" - }, "downloadAskQualitySubtitle": "Show quality picker for each download", "@downloadAskQualitySubtitle": { "description": "Subtitle for ask quality toggle" @@ -203,38 +93,10 @@ "@downloadFolderOrganization": { "description": "Setting for folder structure" }, - "downloadSeparateSingles": "シングルを分割", - "@downloadSeparateSingles": { - "description": "Toggle to separate single tracks" - }, - "downloadSeparateSinglesSubtitle": "Put single tracks in a separate folder", - "@downloadSeparateSinglesSubtitle": { - "description": "Subtitle for separate singles toggle" - }, - "qualityBest": "おすすめ", - "@qualityBest": { - "description": "Audio quality option - highest available" - }, - "qualityFlac": "FLAC", - "@qualityFlac": { - "description": "Audio quality option - FLAC lossless" - }, - "quality320": "320 kbps", - "@quality320": { - "description": "Audio quality option - 320kbps MP3" - }, - "quality128": "128 kbps", - "@quality128": { - "description": "Audio quality option - 128kbps MP3" - }, "appearanceTitle": "外観", "@appearanceTitle": { "description": "Appearance settings page title" }, - "appearanceTheme": "テーマ", - "@appearanceTheme": { - "description": "Theme mode setting" - }, "appearanceThemeSystem": "システム", "@appearanceThemeSystem": { "description": "Follow system theme" @@ -255,10 +117,6 @@ "@appearanceDynamicColorSubtitle": { "description": "Subtitle for dynamic color" }, - "appearanceAccentColor": "アクセントカラー", - "@appearanceAccentColor": { - "description": "Custom accent color picker" - }, "appearanceHistoryView": "履歴の表示", "@appearanceHistoryView": { "description": "Layout style for history" @@ -275,10 +133,6 @@ "@optionsTitle": { "description": "Options settings page title" }, - "optionsSearchSource": "検索ソース", - "@optionsSearchSource": { - "description": "Section for search provider settings" - }, "optionsPrimaryProvider": "プライマリーのプロバイダー", "@optionsPrimaryProvider": { "description": "Main search provider setting" @@ -438,22 +292,6 @@ "@extensionsTitle": { "description": "Extensions page title" }, - "extensionsInstalled": "インストール済みの拡張", - "@extensionsInstalled": { - "description": "Section header for installed extensions" - }, - "extensionsNone": "拡張はインストールされていません", - "@extensionsNone": { - "description": "Empty state title" - }, - "extensionsNoneSubtitle": "ストアタブから拡張をインストール", - "@extensionsNoneSubtitle": { - "description": "Empty state subtitle" - }, - "extensionsEnabled": "有効", - "@extensionsEnabled": { - "description": "Extension status - active" - }, "extensionsDisabled": "無効", "@extensionsDisabled": { "description": "Extension status - inactive" @@ -480,10 +318,6 @@ "@extensionsUninstall": { "description": "Uninstall extension button" }, - "extensionsSetAsSearch": "検索のプロバイダーを設定", - "@extensionsSetAsSearch": { - "description": "Use extension for search" - }, "storeTitle": "拡張ストア", "@storeTitle": { "description": "Store screen title" @@ -580,10 +414,6 @@ "@aboutSocial": { "description": "Section for social links" }, - "aboutSupport": "サポート", - "@aboutSupport": { - "description": "Section for support/donation links" - }, "aboutApp": "アプリ", "@aboutApp": { "description": "Section for app info" @@ -604,14 +434,6 @@ "@aboutSjdonadoDesc": { "description": "Credit description for sjdonado" }, - "aboutDoubleDouble": "DoubleDouble", - "@aboutDoubleDouble": { - "description": "Name of Amazon API service - DO NOT TRANSLATE" - }, - "aboutDoubleDoubleDesc": "Amazing API for Amazon Music downloads. Thank you for making it free!", - "@aboutDoubleDoubleDesc": { - "description": "Credit for DoubleDouble API" - }, "aboutDabMusic": "DAB Music", "@aboutDabMusic": { "description": "Name of Qobuz API service - DO NOT TRANSLATE" @@ -632,35 +454,6 @@ "@aboutAppDescription": { "description": "App description in header card" }, - "albumTitle": "アルバム", - "@albumTitle": { - "description": "Album screen title" - }, - "albumTracks": "{count, plural, =1{1 個のトラック} other{{count} 個のトラック}}", - "@albumTracks": { - "description": "Album track count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "albumDownloadAll": "すべてダウンロード", - "@albumDownloadAll": { - "description": "Button to download all tracks" - }, - "albumDownloadRemaining": "Download Remaining", - "@albumDownloadRemaining": { - "description": "Button to download remaining tracks" - }, - "playlistTitle": "プレイリスト", - "@playlistTitle": { - "description": "Playlist screen title" - }, - "artistTitle": "アーティスト", - "@artistTitle": { - "description": "Artist screen title" - }, "artistAlbums": "アルバム", "@artistAlbums": { "description": "Section header for artist albums" @@ -673,15 +466,6 @@ "@artistCompilations": { "description": "Section header for compilations" }, - "artistReleases": "{count, plural, =1{1 個のリリース} other{{count} 個のリリース}}", - "@artistReleases": { - "description": "Artist release count", - "placeholders": { - "count": { - "type": "int" - } - } - }, "artistPopular": "人気", "@artistPopular": { "description": "Section header for popular/top tracks" @@ -696,34 +480,6 @@ } } }, - "trackMetadataTitle": "トラック情報", - "@trackMetadataTitle": { - "description": "Track metadata screen title" - }, - "trackMetadataArtist": "アーティスト", - "@trackMetadataArtist": { - "description": "Metadata field - artist name" - }, - "trackMetadataAlbum": "アルバム", - "@trackMetadataAlbum": { - "description": "Metadata field - album name" - }, - "trackMetadataDuration": "再生時間", - "@trackMetadataDuration": { - "description": "Metadata field - track length" - }, - "trackMetadataQuality": "品質", - "@trackMetadataQuality": { - "description": "Metadata field - audio quality" - }, - "trackMetadataPath": "ファイルパス", - "@trackMetadataPath": { - "description": "Metadata field - file location" - }, - "trackMetadataDownloadedAt": "ダウンロード済み", - "@trackMetadataDownloadedAt": { - "description": "Metadata field - download date" - }, "trackMetadataService": "サービス", "@trackMetadataService": { "description": "Metadata field - download service used" @@ -740,54 +496,10 @@ "@trackMetadataDelete": { "description": "Action button - delete track" }, - "trackMetadataRedownload": "再ダウンロード", - "@trackMetadataRedownload": { - "description": "Action button - download again" - }, - "trackMetadataOpenFolder": "フォルダを開く", - "@trackMetadataOpenFolder": { - "description": "Action button - open containing folder" - }, - "setupTitle": "SpotiFLAC へようこそ", - "@setupTitle": { - "description": "Setup wizard title" - }, - "setupSubtitle": "Let's get you started", - "@setupSubtitle": { - "description": "Setup wizard subtitle" - }, - "setupStoragePermission": "ストレージの権限", - "@setupStoragePermission": { - "description": "Storage permission step title" - }, - "setupStoragePermissionSubtitle": "ダウンロードしたファイルを保存するために必要です", - "@setupStoragePermissionSubtitle": { - "description": "Explanation for storage permission" - }, - "setupStoragePermissionGranted": "権限を許可しました", - "@setupStoragePermissionGranted": { - "description": "Status when permission granted" - }, - "setupStoragePermissionDenied": "権限が拒否されました", - "@setupStoragePermissionDenied": { - "description": "Status when permission denied" - }, "setupGrantPermission": "権限を許可", "@setupGrantPermission": { "description": "Button to request permission" }, - "setupDownloadLocation": "ダウンロード先", - "@setupDownloadLocation": { - "description": "Download folder step title" - }, - "setupChooseFolder": "フォルダを選択", - "@setupChooseFolder": { - "description": "Button to pick folder" - }, - "setupContinue": "続行", - "@setupContinue": { - "description": "Continue to next step button" - }, "setupSkip": "今はスキップ", "@setupSkip": { "description": "Skip current step button" @@ -796,10 +508,6 @@ "@setupStorageAccessRequired": { "description": "Title when storage access needed" }, - "setupStorageAccessMessage": "SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.", - "@setupStorageAccessMessage": { - "description": "Explanation for storage access" - }, "setupStorageAccessMessageAndroid11": "Android 11+ requires \"All files access\" permission to save files to your chosen download folder.", "@setupStorageAccessMessageAndroid11": { "description": "Android 11+ specific explanation" @@ -831,10 +539,6 @@ } } }, - "setupSelectDownloadFolder": "ダウンロードフォルダを選択", - "@setupSelectDownloadFolder": { - "description": "Folder selection step title" - }, "setupUseDefaultFolder": "デフォルトのフォルダを使用しますか?", "@setupUseDefaultFolder": { "description": "Dialog title for default folder" @@ -883,26 +587,6 @@ "@setupDownloadInFlac": { "description": "App tagline in setup" }, - "setupStepStorage": "ストレージ", - "@setupStepStorage": { - "description": "Setup step indicator - storage" - }, - "setupStepNotification": "通知", - "@setupStepNotification": { - "description": "Setup step indicator - notification" - }, - "setupStepFolder": "フォルダ", - "@setupStepFolder": { - "description": "Setup step indicator - folder" - }, - "setupStepSpotify": "Spotify", - "@setupStepSpotify": { - "description": "Setup step indicator - Spotify API" - }, - "setupStepPermission": "権限", - "@setupStepPermission": { - "description": "Setup step indicator - permission" - }, "setupStorageGranted": "ストレージの権限が許可されました!", "@setupStorageGranted": { "description": "Success message for storage permission" @@ -923,14 +607,6 @@ "@setupNotificationEnable": { "description": "Button to enable notifications" }, - "setupNotificationDescription": "Get notified when downloads complete or require attention.", - "@setupNotificationDescription": { - "description": "Explanation for notifications" - }, - "setupFolderSelected": "ダウンロードフォルダが選択済みです!", - "@setupFolderSelected": { - "description": "Success message for folder selection" - }, "setupFolderChoose": "ダウンロードフォルダを選択", "@setupFolderChoose": { "description": "Button to choose folder" @@ -939,58 +615,14 @@ "@setupFolderDescription": { "description": "Explanation for folder selection" }, - "setupChangeFolder": "フォルダを変更", - "@setupChangeFolder": { - "description": "Button to change selected folder" - }, "setupSelectFolder": "フォルダを選択", "@setupSelectFolder": { "description": "Button to select folder" }, - "setupSpotifyApiOptional": "Spotify API (任意)", - "@setupSpotifyApiOptional": { - "description": "Spotify API step title" - }, - "setupSpotifyApiDescription": "Add your Spotify API credentials for better search results and access to Spotify-exclusive content.", - "@setupSpotifyApiDescription": { - "description": "Explanation for Spotify API" - }, - "setupUseSpotifyApi": "Spotify API を使用する", - "@setupUseSpotifyApi": { - "description": "Toggle to enable Spotify API" - }, - "setupEnterCredentialsBelow": "以下に認証情報を入力してください", - "@setupEnterCredentialsBelow": { - "description": "Prompt to enter credentials" - }, - "setupUsingDeezer": "Deezer を使用中 (アカウントは不要です)", - "@setupUsingDeezer": { - "description": "Status when using Deezer" - }, - "setupEnterClientId": "Spotify クライアント ID を入力", - "@setupEnterClientId": { - "description": "Placeholder for client ID field" - }, - "setupEnterClientSecret": "Spotify クライアントシークレットを入力", - "@setupEnterClientSecret": { - "description": "Placeholder for client secret field" - }, - "setupGetFreeCredentials": "Spotify 開発者ダッシュボードから無料の API 認証情報を取得します。", - "@setupGetFreeCredentials": { - "description": "Info about getting Spotify credentials" - }, "setupEnableNotifications": "通知を有効化する", "@setupEnableNotifications": { "description": "Button to enable notifications" }, - "setupProceedToNextStep": "You can now proceed to the next step.", - "@setupProceedToNextStep": { - "description": "Message after completing a step" - }, - "setupNotificationProgressDescription": "You will receive download progress notifications.", - "@setupNotificationProgressDescription": { - "description": "Info about notification usage" - }, "setupNotificationBackgroundDescription": "Get notified about download progress and completion. This helps you track downloads when the app is in background.", "@setupNotificationBackgroundDescription": { "description": "Detailed notification explanation" @@ -999,10 +631,6 @@ "@setupSkipForNow": { "description": "Skip button text" }, - "setupBack": "戻る", - "@setupBack": { - "description": "Back button text" - }, "setupNext": "次へ", "@setupNext": { "description": "Next button text" @@ -1011,26 +639,14 @@ "@setupGetStarted": { "description": "Final setup button" }, - "setupSkipAndStart": "スキップと開始", - "@setupSkipAndStart": { - "description": "Skip setup and start app" - }, "setupAllowAccessToManageFiles": "Please enable \"Allow access to manage all files\" in the next screen.", "@setupAllowAccessToManageFiles": { "description": "Instruction for file access permission" }, - "setupGetCredentialsFromSpotify": "developer.spotify.com から認証情報を取得します", - "@setupGetCredentialsFromSpotify": { - "description": "Link text for Spotify developer portal" - }, "dialogCancel": "キャンセル", "@dialogCancel": { "description": "Dialog button - cancel action" }, - "dialogOk": "OK", - "@dialogOk": { - "description": "Dialog button - confirm/acknowledge" - }, "dialogSave": "保存", "@dialogSave": { "description": "Dialog button - save changes" @@ -1043,26 +659,10 @@ "@dialogRetry": { "description": "Dialog button - retry action" }, - "dialogClose": "閉じる", - "@dialogClose": { - "description": "Dialog button - close dialog" - }, - "dialogYes": "はい", - "@dialogYes": { - "description": "Dialog button - confirm yes" - }, - "dialogNo": "いいえ", - "@dialogNo": { - "description": "Dialog button - confirm no" - }, "dialogClear": "消去", "@dialogClear": { "description": "Dialog button - clear items" }, - "dialogConfirm": "続行", - "@dialogConfirm": { - "description": "Dialog button - confirm action" - }, "dialogDone": "完了", "@dialogDone": { "description": "Dialog button - action completed" @@ -1091,34 +691,10 @@ "@dialogUnsavedChanges": { "description": "Dialog message - unsaved changes" }, - "dialogDownloadFailed": "ダウンロードに失敗しました", - "@dialogDownloadFailed": { - "description": "Dialog title - download error" - }, - "dialogTrackLabel": "トラック:", - "@dialogTrackLabel": { - "description": "Label for track name in error dialog" - }, - "dialogArtistLabel": "アーティスト:", - "@dialogArtistLabel": { - "description": "Label for artist name in error dialog" - }, - "dialogErrorLabel": "エラー:", - "@dialogErrorLabel": { - "description": "Label for error message" - }, "dialogClearAll": "すべて消去", "@dialogClearAll": { "description": "Dialog title - clear all items" }, - "dialogClearAllDownloads": "Are you sure you want to clear all downloads?", - "@dialogClearAllDownloads": { - "description": "Dialog message - clear downloads confirmation" - }, - "dialogRemoveFromDevice": "デバイスから削除しますか?", - "@dialogRemoveFromDevice": { - "description": "Dialog title - delete file confirmation" - }, "dialogRemoveExtension": "拡張を削除", "@dialogRemoveExtension": { "description": "Dialog title - uninstall extension" @@ -1257,15 +833,6 @@ "@snackbarViewQueue": { "description": "Snackbar action - view download queue" }, - "snackbarFailedToLoad": "読み込みに失敗: {error}", - "@snackbarFailedToLoad": { - "description": "Snackbar - loading error", - "placeholders": { - "error": { - "type": "String" - } - } - }, "snackbarUrlCopied": "{platform} の URL をクリップボードにコピーしました", "@snackbarUrlCopied": { "description": "Snackbar - URL copied", @@ -1326,16 +893,6 @@ "@errorRateLimitedMessage": { "description": "Error message - rate limit explanation" }, - "errorFailedToLoad": "Failed to load {item}", - "@errorFailedToLoad": { - "description": "Error message - loading failed", - "placeholders": { - "item": { - "type": "String", - "description": "Item that failed to load (album/playlist/etc)" - } - } - }, "errorNoTracksFound": "トラックがありません", "@errorNoTracksFound": { "description": "Error - search returned no results" @@ -1349,34 +906,6 @@ } } }, - "statusQueued": "キュー済み", - "@statusQueued": { - "description": "Download status - waiting in queue" - }, - "statusDownloading": "ダウンロード中", - "@statusDownloading": { - "description": "Download status - in progress" - }, - "statusFinalizing": "終了処理中", - "@statusFinalizing": { - "description": "Download status - writing metadata" - }, - "statusCompleted": "完了しました", - "@statusCompleted": { - "description": "Download status - finished" - }, - "statusFailed": "失敗しました", - "@statusFailed": { - "description": "Download status - error occurred" - }, - "statusSkipped": "スキップしました", - "@statusSkipped": { - "description": "Download status - already exists" - }, - "statusPaused": "一時停止中", - "@statusPaused": { - "description": "Download status - paused" - }, "actionPause": "一時停止", "@actionPause": { "description": "Action button - pause download" @@ -1389,14 +918,6 @@ "@actionCancel": { "description": "Action button - cancel operation" }, - "actionStop": "停止", - "@actionStop": { - "description": "Action button - stop operation" - }, - "actionSelect": "選択", - "@actionSelect": { - "description": "Action button - enter selection mode" - }, "actionSelectAll": "すべて選択", "@actionSelectAll": { "description": "Action button - select all items" @@ -1405,14 +926,6 @@ "@actionDeselect": { "description": "Action button - deselect all" }, - "actionPaste": "貼り付け", - "@actionPaste": { - "description": "Action button - paste from clipboard" - }, - "actionImportCsv": "CSV をインポート", - "@actionImportCsv": { - "description": "Action button - import CSV file" - }, "actionRemoveCredentials": "認証情報を削除", "@actionRemoveCredentials": { "description": "Action button - delete Spotify credentials" @@ -1434,19 +947,6 @@ "@selectionAllSelected": { "description": "Status - all items selected" }, - "selectionTapToSelect": "トラックをタップで選択", - "@selectionTapToSelect": { - "description": "Hint - how to select items" - }, - "selectionDeleteTracks": "{count} {count, plural, =1{個のトラック} other{個のトラック}}を削除", - "@selectionDeleteTracks": { - "description": "Delete button with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, "selectionSelectToDelete": "トラックを選択で削除", "@selectionSelectToDelete": { "description": "Placeholder when nothing selected" @@ -1487,55 +987,10 @@ "@tooltipPlay": { "description": "Tooltip - play button" }, - "tooltipCancel": "キャンセル", - "@tooltipCancel": { - "description": "Tooltip - cancel button" - }, - "tooltipStop": "停止", - "@tooltipStop": { - "description": "Tooltip - stop button" - }, - "tooltipRetry": "再試行", - "@tooltipRetry": { - "description": "Tooltip - retry button" - }, - "tooltipRemove": "削除", - "@tooltipRemove": { - "description": "Tooltip - remove button" - }, - "tooltipClear": "消去", - "@tooltipClear": { - "description": "Tooltip - clear button" - }, - "tooltipPaste": "貼り付け", - "@tooltipPaste": { - "description": "Tooltip - paste button" - }, "filenameFormat": "ファイル名の形式", "@filenameFormat": { "description": "Setting title - filename pattern" }, - "filenameFormatPreview": "プレビュー: {preview}", - "@filenameFormatPreview": { - "description": "Preview of filename pattern", - "placeholders": { - "preview": { - "type": "String" - } - } - }, - "filenameAvailablePlaceholders": "利用可能なプレースホルダー:", - "@filenameAvailablePlaceholders": { - "description": "Label for placeholder list" - }, - "filenameHint": "{artist} - {title}", - "@filenameHint": { - "description": "Default filename format hint" - }, - "folderOrganization": "フォルダ構成", - "@folderOrganization": { - "description": "Setting title - folder structure" - }, "folderOrganizationNone": "構成がありません", "@folderOrganizationNone": { "description": "Folder option - flat structure" @@ -1576,27 +1031,10 @@ "@updateAvailable": { "description": "Update dialog title" }, - "updateNewVersion": "バージョン {version} が利用可能です", - "@updateNewVersion": { - "description": "Update available message", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "updateDownload": "ダウンロード", - "@updateDownload": { - "description": "Update button - download update" - }, "updateLater": "後で", "@updateLater": { "description": "Update button - dismiss" }, - "updateChangelog": "更新履歴", - "@updateChangelog": { - "description": "Link to changelog" - }, "updateStartingDownload": "ダウンロードを開始中...", "@updateStartingDownload": { "description": "Update status - initializing" @@ -1637,14 +1075,6 @@ "@updateDontRemind": { "description": "Update button - skip this version" }, - "providerPriority": "プロバイダーの優先度", - "@providerPriority": { - "description": "Setting title - download provider order" - }, - "providerPrioritySubtitle": "ドラッグでダウンロードプロバイダーを並べ替え", - "@providerPrioritySubtitle": { - "description": "Subtitle for provider priority" - }, "providerPriorityTitle": "プロバイダーの優先度", "@providerPriorityTitle": { "description": "Provider priority page title" @@ -1665,14 +1095,6 @@ "@providerExtension": { "description": "Label for extension-provided providers" }, - "metadataProviderPriority": "メタデータプロバイダーの優先度", - "@metadataProviderPriority": { - "description": "Setting title - metadata provider order" - }, - "metadataProviderPrioritySubtitle": "Order used when fetching track metadata", - "@metadataProviderPrioritySubtitle": { - "description": "Subtitle for metadata priority" - }, "metadataProviderPriorityTitle": "メタデータの優先度", "@metadataProviderPriorityTitle": { "description": "Metadata priority page title" @@ -1697,22 +1119,6 @@ "@logTitle": { "description": "Logs screen title" }, - "logCopy": "ログをコピー", - "@logCopy": { - "description": "Action - copy logs to clipboard" - }, - "logClear": "ログを消去", - "@logClear": { - "description": "Action - delete all logs" - }, - "logShare": "ログを共有", - "@logShare": { - "description": "Action - share logs file" - }, - "logEmpty": "まだログはありません", - "@logEmpty": { - "description": "Empty state title" - }, "logCopied": "ログをクリップボードにコピーしました", "@logCopied": { "description": "Snackbar - logs copied" @@ -1745,22 +1151,6 @@ "@logClearLogsMessage": { "description": "Clear logs confirmation message" }, - "logIspBlocking": "ISP のブロックを検出しました", - "@logIspBlocking": { - "description": "Error category - ISP blocking" - }, - "logRateLimited": "レート制限", - "@logRateLimited": { - "description": "Error category - rate limiting" - }, - "logNetworkError": "ネットワークエラー", - "@logNetworkError": { - "description": "Error category - network issues" - }, - "logTrackNotFound": "トラックがありません", - "@logTrackNotFound": { - "description": "Error category - missing tracks" - }, "logFilterBySeverity": "Filter logs by severity", "@logFilterBySeverity": { "description": "Filter dialog title" @@ -1773,60 +1163,6 @@ "@logNoLogsYetSubtitle": { "description": "Empty state subtitle" }, - "logIssueSummary": "問題の概要", - "@logIssueSummary": { - "description": "Section header for error summary" - }, - "logIspBlockingDescription": "ISP がダウンロードサービスのアクセスをブロックしている可能性があります", - "@logIspBlockingDescription": { - "description": "ISP blocking explanation" - }, - "logIspBlockingSuggestion": "VPN を使用するか DNS を 1.1.1.1 または 8.8.8.8 に変更をお試しください", - "@logIspBlockingSuggestion": { - "description": "ISP blocking fix suggestion" - }, - "logRateLimitedDescription": "サービスへのリクエストが多すぎます", - "@logRateLimitedDescription": { - "description": "Rate limit explanation" - }, - "logRateLimitedSuggestion": "Wait a few minutes before trying again", - "@logRateLimitedSuggestion": { - "description": "Rate limit fix suggestion" - }, - "logNetworkErrorDescription": "接続の問題が検出されました", - "@logNetworkErrorDescription": { - "description": "Network error explanation" - }, - "logNetworkErrorSuggestion": "インターネット接続を確認してください", - "@logNetworkErrorSuggestion": { - "description": "Network error fix suggestion" - }, - "logTrackNotFoundDescription": "Some tracks could not be found on download services", - "@logTrackNotFoundDescription": { - "description": "Track not found explanation" - }, - "logTrackNotFoundSuggestion": "The track may not be available in lossless quality", - "@logTrackNotFoundSuggestion": { - "description": "Track not found explanation" - }, - "logTotalErrors": "エラーの合計: {count}", - "@logTotalErrors": { - "description": "Error count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "logAffected": "影響: {domains}", - "@logAffected": { - "description": "Affected domains display", - "placeholders": { - "domains": { - "type": "String" - } - } - }, "logEntriesFiltered": "エントリー ({count} 個をフィルター済み)", "@logEntriesFiltered": { "description": "Log count with filter active", @@ -1969,10 +1305,6 @@ "@appearanceLanguage": { "description": "Language setting title" }, - "appearanceLanguageSubtitle": "お好みの言語を選択してください", - "@appearanceLanguageSubtitle": { - "description": "Language setting subtitle" - }, "settingsAppearanceSubtitle": "テーマ、カラー、画面", "@settingsAppearanceSubtitle": { "description": "Appearance settings description" @@ -2001,10 +1333,6 @@ "@pressBackAgainToExit": { "description": "Exit confirmation message" }, - "tracksHeader": "トラック", - "@tracksHeader": { - "description": "Section header for track list" - }, "downloadAllCount": "すべてダウンロード ({count})", "@downloadAllCount": { "description": "Download all button with count", @@ -2151,15 +1479,6 @@ "@trackDeleteConfirmMessage": { "description": "Delete confirmation message" }, - "trackCannotOpen": "開けません: {message}", - "@trackCannotOpen": { - "description": "Error opening file", - "placeholders": { - "message": { - "type": "String" - } - } - }, "dateToday": "今日", "@dateToday": { "description": "Relative date - today" @@ -2195,22 +1514,6 @@ } } }, - "concurrentSequential": "Sequential", - "@concurrentSequential": { - "description": "Download mode - one at a time" - }, - "concurrentParallel2": "2 並列", - "@concurrentParallel2": { - "description": "Download mode - 2 simultaneous" - }, - "concurrentParallel3": "3 並列", - "@concurrentParallel3": { - "description": "Download mode - 3 simultaneous" - }, - "tapToSeeError": "タップでエラーの詳細を表示", - "@tapToSeeError": { - "description": "Tooltip for failed download" - }, "storeFilterAll": "すべて", "@storeFilterAll": { "description": "Store filter - all extensions" @@ -2239,18 +1542,6 @@ "@storeClearFilters": { "description": "Button to clear all filters" }, - "storeNoResults": "拡張がありません", - "@storeNoResults": { - "description": "Empty state when no extensions match filters" - }, - "extensionProviderPriority": "プロバイダーの優先度", - "@extensionProviderPriority": { - "description": "Extension capability - provider priority" - }, - "extensionInstallButton": "拡張をインストール", - "@extensionInstallButton": { - "description": "Button to install extension" - }, "extensionDefaultProvider": "デフォルト (Deezer/Spotify)", "@extensionDefaultProvider": { "description": "Default search provider option" @@ -2450,46 +1741,6 @@ "@qualityHiResFlacMaxSubtitle": { "description": "Technical spec for hi-res max" }, - "qualityLossy": "Lossy", - "@qualityLossy": { - "description": "Quality option - lossy format (MP3/Opus)" - }, - "qualityLossyMp3Subtitle": "MP3 320kbps (converted from FLAC)", - "@qualityLossyMp3Subtitle": { - "description": "Technical spec for lossy MP3" - }, - "qualityLossyOpusSubtitle": "Opus 128kbps (converted from FLAC)", - "@qualityLossyOpusSubtitle": { - "description": "Technical spec for lossy Opus" - }, - "enableLossyOption": "Enable Lossy Option", - "@enableLossyOption": { - "description": "Setting - enable lossy quality option" - }, - "enableLossyOptionSubtitleOn": "Lossy quality option is available", - "@enableLossyOptionSubtitleOn": { - "description": "Subtitle when lossy is enabled" - }, - "enableLossyOptionSubtitleOff": "Downloads FLAC then converts to lossy format", - "@enableLossyOptionSubtitleOff": { - "description": "Subtitle when lossy is disabled" - }, - "lossyFormat": "Lossy Format", - "@lossyFormat": { - "description": "Setting - choose lossy format" - }, - "lossyFormatDescription": "Choose the lossy format for conversion", - "@lossyFormatDescription": { - "description": "Description for lossy format picker" - }, - "lossyFormatMp3Subtitle": "320kbps, best compatibility", - "@lossyFormatMp3Subtitle": { - "description": "MP3 format description" - }, - "lossyFormatOpusSubtitle": "128kbps, better quality at smaller size", - "@lossyFormatOpusSubtitle": { - "description": "Opus format description" - }, "qualityNote": "実際の品質はサービスからのトラックの可用性に依存します", "@qualityNote": { "description": "Note about quality availability" @@ -2518,14 +1769,6 @@ "@downloadUseAlbumArtistForFolders": { "description": "Setting - choose whether artist folders use Album Artist or Track Artist" }, - "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Artist folders use Album Artist when available", - "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { - "description": "Subtitle when Album Artist is used for folder naming" - }, - "downloadUseAlbumArtistForFoldersTrackSubtitle": "Artist folders use Track Artist only", - "@downloadUseAlbumArtistForFoldersTrackSubtitle": { - "description": "Subtitle when Track Artist is used for folder naming" - }, "downloadUsePrimaryArtistOnly": "Primary artist only for folders", "@downloadUsePrimaryArtistOnly": { "description": "Setting - strip featured artists from folder name" @@ -2538,14 +1781,6 @@ "@downloadUsePrimaryArtistOnlyDisabled": { "description": "Subtitle when primary artist only is disabled" }, - "downloadSaveFormat": "形式を保存", - "@downloadSaveFormat": { - "description": "Setting - output file format" - }, - "downloadSelectService": "サービスを選択", - "@downloadSelectService": { - "description": "Dialog title - choose download service" - }, "downloadSelectQuality": "品質を選択", "@downloadSelectQuality": { "description": "Dialog title - choose audio quality" @@ -2554,66 +1789,6 @@ "@downloadFrom": { "description": "Label - download source" }, - "downloadDefaultQualityLabel": "デフォルトの品質", - "@downloadDefaultQualityLabel": { - "description": "Label - default quality setting" - }, - "downloadBestAvailable": "おすすめ", - "@downloadBestAvailable": { - "description": "Quality option - highest available" - }, - "folderNone": "なし", - "@folderNone": { - "description": "Folder option - no organization" - }, - "folderNoneSubtitle": "すべてのファイルをダウンロードフォルダに保存します", - "@folderNoneSubtitle": { - "description": "Subtitle for no folder organization" - }, - "folderArtist": "アーティスト", - "@folderArtist": { - "description": "Folder option - by artist" - }, - "folderArtistSubtitle": "アーティスト名/ファイル名", - "@folderArtistSubtitle": { - "description": "Folder structure example" - }, - "folderAlbum": "アルバム", - "@folderAlbum": { - "description": "Folder option - by album" - }, - "folderAlbumSubtitle": "アルバム名/ファイル名", - "@folderAlbumSubtitle": { - "description": "Folder structure example" - }, - "folderArtistAlbum": "アーティスト/アルバム", - "@folderArtistAlbum": { - "description": "Folder option - nested" - }, - "folderArtistAlbumSubtitle": "アーティスト名/アルバム名/ファイル名", - "@folderArtistAlbumSubtitle": { - "description": "Folder structure example" - }, - "serviceTidal": "Tidal", - "@serviceTidal": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceQobuz": "Qobuz", - "@serviceQobuz": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceAmazon": "Amazon", - "@serviceAmazon": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceDeezer": "Deezer", - "@serviceDeezer": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceSpotify": "Spotify", - "@serviceSpotify": { - "description": "Service name - DO NOT TRANSLATE" - }, "appearanceAmoledDark": "AMOLED ダーク", "@appearanceAmoledDark": { "description": "Theme option - pure black" @@ -2622,18 +1797,6 @@ "@appearanceAmoledDarkSubtitle": { "description": "Subtitle for AMOLED dark" }, - "appearanceChooseAccentColor": "アクセントカラーを選択", - "@appearanceChooseAccentColor": { - "description": "Color picker dialog title" - }, - "appearanceChooseTheme": "テーマモード", - "@appearanceChooseTheme": { - "description": "Theme picker dialog title" - }, - "queueTitle": "ダウンロードキュー", - "@queueTitle": { - "description": "Queue screen title" - }, "queueClearAll": "すべて消去", "@queueClearAll": { "description": "Button - clear all queue items" @@ -2642,22 +1805,6 @@ "@queueClearAllMessage": { "description": "Clear queue confirmation" }, - "queueExportFailed": "Export", - "@queueExportFailed": { - "description": "Button - export failed downloads to TXT" - }, - "queueExportFailedSuccess": "Failed downloads exported to TXT file", - "@queueExportFailedSuccess": { - "description": "Success message after exporting failed downloads" - }, - "queueExportFailedClear": "Clear Failed", - "@queueExportFailedClear": { - "description": "Action to clear failed downloads after export" - }, - "queueExportFailedError": "Failed to export downloads", - "@queueExportFailedError": { - "description": "Error message when export fails" - }, "settingsAutoExportFailed": "Auto-export failed downloads", "@settingsAutoExportFailed": { "description": "Setting toggle for auto-export" @@ -2682,38 +1829,6 @@ "@settingsDownloadNetworkSubtitle": { "description": "Subtitle explaining network preference" }, - "queueEmpty": "キューにダウンロードがありません", - "@queueEmpty": { - "description": "Empty queue state title" - }, - "queueEmptySubtitle": "ホーム画面からトラックを追加", - "@queueEmptySubtitle": { - "description": "Empty queue state subtitle" - }, - "queueClearCompleted": "完了済みを消去", - "@queueClearCompleted": { - "description": "Button - clear finished downloads" - }, - "queueDownloadFailed": "ダウンロードに失敗しました", - "@queueDownloadFailed": { - "description": "Error dialog title" - }, - "queueTrackLabel": "トラック:", - "@queueTrackLabel": { - "description": "Label in error dialog" - }, - "queueArtistLabel": "アーティスト:", - "@queueArtistLabel": { - "description": "Label in error dialog" - }, - "queueErrorLabel": "エラー:", - "@queueErrorLabel": { - "description": "Label in error dialog" - }, - "queueUnknownError": "不明なエラー", - "@queueUnknownError": { - "description": "Fallback error message" - }, "albumFolderArtistAlbum": "アーティスト / アルバム", "@albumFolderArtistAlbum": { "description": "Album folder option" @@ -2767,19 +1882,6 @@ } } }, - "downloadedAlbumTracksHeader": "トラック", - "@downloadedAlbumTracksHeader": { - "description": "Section header for tracks" - }, - "downloadedAlbumDownloadedCount": "{count} 個をダウンロード済み", - "@downloadedAlbumDownloadedCount": { - "description": "Downloaded tracks count badge", - "placeholders": { - "count": { - "type": "int" - } - } - }, "downloadedAlbumSelectedCount": "{count} 個を選択済み", "@downloadedAlbumSelectedCount": { "description": "Selection count indicator", @@ -2820,10 +1922,6 @@ } } }, - "utilityFunctions": "ユーティリティ機能", - "@utilityFunctions": { - "description": "Extension capability - utility functions" - }, "recentTypeArtist": "アーティスト", "@recentTypeArtist": { "description": "Recent access item type - artist" @@ -2858,16 +1956,6 @@ } } }, - "errorGeneric": "エラー: {message}", - "@errorGeneric": { - "description": "Generic error message format", - "placeholders": { - "message": { - "type": "String", - "description": "Error message" - } - } - }, "discographyDownload": "ディスコグラフィをダウンロード", "@discographyDownload": { "description": "Button - download artist discography" @@ -3034,10 +2122,6 @@ "@libraryTitle": { "description": "Library settings page title" }, - "libraryStatus": "Library Status", - "@libraryStatus": { - "description": "Section header for library status" - }, "libraryScanSettings": "Scan Settings", "@libraryScanSettings": { "description": "Section header for scan settings" @@ -3114,15 +2198,6 @@ "@libraryAboutDescription": { "description": "Description of local library feature" }, - "libraryTracksCount": "{count} tracks", - "@libraryTracksCount": { - "description": "Track count in library", - "placeholders": { - "count": { - "type": "int" - } - } - }, "libraryLastScanned": "Last scanned: {time}", "@libraryLastScanned": { "description": "Last scan time display", @@ -3237,26 +2312,6 @@ "@libraryFilterFormat": { "description": "Filter section - file format" }, - "libraryFilterDate": "Date Added", - "@libraryFilterDate": { - "description": "Filter section - date range" - }, - "libraryFilterDateToday": "Today", - "@libraryFilterDateToday": { - "description": "Filter option - today only" - }, - "libraryFilterDateWeek": "This Week", - "@libraryFilterDateWeek": { - "description": "Filter option - this week" - }, - "libraryFilterDateMonth": "This Month", - "@libraryFilterDateMonth": { - "description": "Filter option - this month" - }, - "libraryFilterDateYear": "This Year", - "@libraryFilterDateYear": { - "description": "Filter option - this year" - }, "libraryFilterSort": "Sort", "@libraryFilterSort": { "description": "Filter section - sort order" @@ -3269,15 +2324,6 @@ "@libraryFilterSortOldest": { "description": "Sort option - oldest first" }, - "libraryFilterActive": "{count} filter(s) active", - "@libraryFilterActive": { - "description": "Badge showing number of active filters", - "placeholders": { - "count": { - "type": "int" - } - } - }, "timeJustNow": "Just now", "@timeJustNow": { "description": "Relative time - less than a minute ago" @@ -3300,106 +2346,6 @@ } } }, - "storageSwitchTitle": "Switch Storage Mode", - "@storageSwitchTitle": { - "description": "Dialog title when switching storage mode" - }, - "storageSwitchToSafTitle": "Switch to SAF Storage?", - "@storageSwitchToSafTitle": { - "description": "Dialog title when switching to SAF" - }, - "storageSwitchToAppTitle": "Switch to App Storage?", - "@storageSwitchToAppTitle": { - "description": "Dialog title when switching to app storage" - }, - "storageSwitchToSafMessage": "Your existing downloads will remain in the current location and stay accessible.\n\nNew downloads will be saved to your selected SAF folder.", - "@storageSwitchToSafMessage": { - "description": "Explanation when switching to SAF" - }, - "storageSwitchToAppMessage": "Your existing downloads will remain in the current SAF location and stay accessible.\n\nNew downloads will be saved to Music/SpotiFLAC folder.", - "@storageSwitchToAppMessage": { - "description": "Explanation when switching to app storage" - }, - "storageSwitchExistingDownloads": "Existing Downloads", - "@storageSwitchExistingDownloads": { - "description": "Section header for existing downloads info" - }, - "storageSwitchExistingDownloadsInfo": "{count} tracks in {mode} storage", - "@storageSwitchExistingDownloadsInfo": { - "description": "Info about existing downloads count", - "placeholders": { - "count": { - "type": "int" - }, - "mode": { - "type": "String" - } - } - }, - "storageSwitchNewDownloads": "New Downloads", - "@storageSwitchNewDownloads": { - "description": "Section header for new downloads info" - }, - "storageSwitchNewDownloadsLocation": "Will be saved to: {location}", - "@storageSwitchNewDownloadsLocation": { - "description": "Shows where new downloads will go", - "placeholders": { - "location": { - "type": "String" - } - } - }, - "storageSwitchContinue": "Continue", - "@storageSwitchContinue": { - "description": "Button to proceed with storage switch" - }, - "storageSwitchSelectFolder": "Select SAF Folder", - "@storageSwitchSelectFolder": { - "description": "Button to select SAF folder" - }, - "storageAppStorage": "App Storage", - "@storageAppStorage": { - "description": "Label for app storage mode" - }, - "storageSafStorage": "SAF Storage", - "@storageSafStorage": { - "description": "Label for SAF storage mode" - }, - "storageModeBadge": "Storage: {mode}", - "@storageModeBadge": { - "description": "Badge showing storage mode for a track", - "placeholders": { - "mode": { - "type": "String" - } - } - }, - "storageStatsTitle": "Storage Statistics", - "@storageStatsTitle": { - "description": "Section title for storage stats" - }, - "storageStatsAppCount": "{count} tracks in App Storage", - "@storageStatsAppCount": { - "description": "Count of tracks in app storage", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storageStatsSafCount": "{count} tracks in SAF Storage", - "@storageStatsSafCount": { - "description": "Count of tracks in SAF storage", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storageModeInfo": "Your files are stored in multiple locations", - "@storageModeInfo": { - "description": "Info when user has files in both storage modes" - }, "tutorialWelcomeTitle": "Welcome to SpotiFLAC!", "@tutorialWelcomeTitle": { "description": "Tutorial welcome page title" @@ -3428,18 +2374,6 @@ "@tutorialSearchDesc": { "description": "Tutorial search page description" }, - "tutorialSearchTip1": "Paste a Spotify or Deezer URL directly in the search box", - "@tutorialSearchTip1": { - "description": "Tutorial search tip 1" - }, - "tutorialSearchTip2": "Or type the song name, artist, or album to search", - "@tutorialSearchTip2": { - "description": "Tutorial search tip 2" - }, - "tutorialSearchTip3": "Supports tracks, albums, playlists, and artist pages", - "@tutorialSearchTip3": { - "description": "Tutorial search tip 3" - }, "tutorialDownloadTitle": "Downloading Music", "@tutorialDownloadTitle": { "description": "Tutorial download page title" @@ -3448,18 +2382,6 @@ "@tutorialDownloadDesc": { "description": "Tutorial download page description" }, - "tutorialDownloadTip1": "Tap the download button next to any track to start downloading", - "@tutorialDownloadTip1": { - "description": "Tutorial download tip 1" - }, - "tutorialDownloadTip2": "Choose your preferred quality (FLAC, Hi-Res, or MP3)", - "@tutorialDownloadTip2": { - "description": "Tutorial download tip 2" - }, - "tutorialDownloadTip3": "Download entire albums or playlists with one tap", - "@tutorialDownloadTip3": { - "description": "Tutorial download tip 3" - }, "tutorialLibraryTitle": "Your Library", "@tutorialLibraryTitle": { "description": "Tutorial library page title" @@ -3524,10 +2446,6 @@ "@tutorialReadyMessage": { "description": "Tutorial completion message" }, - "tutorialExample": "EXAMPLE", - "@tutorialExample": { - "description": "Example label in tutorial" - }, "libraryForceFullScan": "Force Full Scan", "@libraryForceFullScan": { "description": "Button to force a complete rescan of library" @@ -3754,10 +2672,6 @@ "@trackReEnrich": { "description": "Menu action - re-embed metadata into audio file" }, - "trackReEnrichSubtitle": "Re-embed metadata without re-downloading", - "@trackReEnrichSubtitle": { - "description": "Subtitle for re-enrich metadata action" - }, "trackReEnrichOnlineSubtitle": "Search metadata online and embed into file", "@trackReEnrichOnlineSubtitle": { "description": "Subtitle for re-enrich metadata action for local items" @@ -3869,15 +2783,21 @@ "@trackConvertFailed": { "description": "Snackbar when conversion fails" }, - "setupModeSelectionTitle": "モードを選択", - "setupModeSelectionDescription": "SpotiFLACをどのように使いますか?この設定は後からいつでも変更できます。", - "setupModeDownloaderTitle": "ダウンローダー", - "setupModeDownloaderFeature1": "ロスレスFLAC品質でトラックをダウンロード", - "setupModeDownloaderFeature2": "オフライン再生用に音楽をデバイスに保存", - "setupModeDownloaderFeature3": "ローカル音楽ライブラリを管理", - "setupModeStreamingTitle": "ストリーミング", - "setupModeStreamingFeature1": "ダウンロードせずにトラックを即座にストリーミング", - "setupModeStreamingFeature2": "Smart Queueが自動的に新しい音楽を見つけます", - "setupModeStreamingFeature3": "再生コントロールで任意のトラックをオンデマンド再生", - "setupModeChangeableLater": "設定からいつでもモードを切り替えられます。" -} \ No newline at end of file + "downloadedAlbumDownloadedCount": "{count} 個をダウンロード済み", + "@downloadedAlbumDownloadedCount": { + "description": "Downloaded tracks count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Artist folders use Album Artist when available", + "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { + "description": "Subtitle when Album Artist is used for folder naming" + }, + "downloadUseAlbumArtistForFoldersTrackSubtitle": "Artist folders use Track Artist only", + "@downloadUseAlbumArtistForFoldersTrackSubtitle": { + "description": "Subtitle when Track Artist is used for folder naming" + } +} diff --git a/lib/l10n/arb/app_ko.arb b/lib/l10n/arb/app_ko.arb index 6c3fa14d..22b488a3 100644 --- a/lib/l10n/arb/app_ko.arb +++ b/lib/l10n/arb/app_ko.arb @@ -5,10 +5,6 @@ "@appName": { "description": "App name - DO NOT TRANSLATE" }, - "appDescription": "Spotify 트랙을 Tidal, Qobuz, Amazon Music에서 무손실 음질로 다운로드하세요.", - "@appDescription": { - "description": "App description shown in about page" - }, "navHome": "Home", "@navHome": { "description": "Bottom navigation - Home tab" @@ -17,10 +13,6 @@ "@navLibrary": { "description": "Bottom navigation - Library tab" }, - "navHistory": "History", - "@navHistory": { - "description": "Bottom navigation - History tab (legacy)" - }, "navSettings": "Settings", "@navSettings": { "description": "Bottom navigation - Settings tab" @@ -33,20 +25,6 @@ "@homeTitle": { "description": "Home screen title" }, - "homeSearchHint": "Spotify URL을 붙여 넣거나 검색", - "@homeSearchHint": { - "description": "Placeholder text in search box" - }, - "homeSearchHintExtension": "{extensionName}에서 검색", - "@homeSearchHintExtension": { - "description": "Placeholder when extension search is active", - "placeholders": { - "extensionName": { - "type": "String", - "description": "Name of the active extension" - } - } - }, "homeSubtitle": "Spotify URL을 붙여 넣거나 검색", "@homeSubtitle": { "description": "Subtitle shown below search box" @@ -59,24 +37,6 @@ "@homeRecent": { "description": "Section header for recent searches" }, - "historyTitle": "기록", - "@historyTitle": { - "description": "History screen title" - }, - "historyDownloading": "다운로드 중... {count}", - "@historyDownloading": { - "description": "Tab showing active downloads count", - "placeholders": { - "count": { - "type": "int", - "description": "Number of active downloads" - } - } - }, - "historyDownloaded": "다운로드 목록", - "@historyDownloaded": { - "description": "Tab showing completed downloads" - }, "historyFilterAll": "All", "@historyFilterAll": { "description": "Filter chip - show all items" @@ -89,48 +49,6 @@ "@historyFilterSingles": { "description": "Filter chip - show singles only" }, - "historyTracksCount": "{count, plural,=1{1 track}other{{count}tracks}}", - "@historyTracksCount": { - "description": "Track count with plural form", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "historyAlbumsCount": "{count, plural,=1{1 album}other{{count} albums}}", - "@historyAlbumsCount": { - "description": "Album count with plural form", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "historyNoDownloads": "No download history", - "@historyNoDownloads": { - "description": "Empty state title" - }, - "historyNoDownloadsSubtitle": "Downloaded tracks will appear here", - "@historyNoDownloadsSubtitle": { - "description": "Empty state subtitle" - }, - "historyNoAlbums": "No album downloads", - "@historyNoAlbums": { - "description": "Empty state when filtering albums" - }, - "historyNoAlbumsSubtitle": "Download multiple tracks from an album to see them here", - "@historyNoAlbumsSubtitle": { - "description": "Empty state subtitle for albums filter" - }, - "historyNoSingles": "No single downloads", - "@historyNoSingles": { - "description": "Empty state when filtering singles" - }, - "historyNoSinglesSubtitle": "Single track downloads will appear here", - "@historyNoSinglesSubtitle": { - "description": "Empty state subtitle for singles filter" - }, "historySearchHint": "Search history...", "@historySearchHint": { "description": "Search bar placeholder in history" @@ -163,34 +81,6 @@ "@downloadTitle": { "description": "Download settings page title" }, - "downloadLocation": "Download Location", - "@downloadLocation": { - "description": "Setting for download folder" - }, - "downloadLocationSubtitle": "Choose where to save files", - "@downloadLocationSubtitle": { - "description": "Subtitle for download location" - }, - "downloadLocationDefault": "Default location", - "@downloadLocationDefault": { - "description": "Shown when using default folder" - }, - "downloadDefaultService": "Default Service", - "@downloadDefaultService": { - "description": "Setting for preferred download service (Tidal/Qobuz/Amazon)" - }, - "downloadDefaultServiceSubtitle": "Service used for downloads", - "@downloadDefaultServiceSubtitle": { - "description": "Subtitle for default service" - }, - "downloadDefaultQuality": "Default Quality", - "@downloadDefaultQuality": { - "description": "Setting for audio quality" - }, - "downloadAskQuality": "Ask Quality Before Download", - "@downloadAskQuality": { - "description": "Toggle to show quality picker" - }, "downloadAskQualitySubtitle": "Show quality picker for each download", "@downloadAskQualitySubtitle": { "description": "Subtitle for ask quality toggle" @@ -203,38 +93,10 @@ "@downloadFolderOrganization": { "description": "Setting for folder structure" }, - "downloadSeparateSingles": "Separate Singles", - "@downloadSeparateSingles": { - "description": "Toggle to separate single tracks" - }, - "downloadSeparateSinglesSubtitle": "Put single tracks in a separate folder", - "@downloadSeparateSinglesSubtitle": { - "description": "Subtitle for separate singles toggle" - }, - "qualityBest": "Best Available", - "@qualityBest": { - "description": "Audio quality option - highest available" - }, - "qualityFlac": "FLAC", - "@qualityFlac": { - "description": "Audio quality option - FLAC lossless" - }, - "quality320": "320 kbps", - "@quality320": { - "description": "Audio quality option - 320kbps MP3" - }, - "quality128": "128 kbps", - "@quality128": { - "description": "Audio quality option - 128kbps MP3" - }, "appearanceTitle": "Appearance", "@appearanceTitle": { "description": "Appearance settings page title" }, - "appearanceTheme": "Theme", - "@appearanceTheme": { - "description": "Theme mode setting" - }, "appearanceThemeSystem": "System", "@appearanceThemeSystem": { "description": "Follow system theme" @@ -255,10 +117,6 @@ "@appearanceDynamicColorSubtitle": { "description": "Subtitle for dynamic color" }, - "appearanceAccentColor": "Accent Color", - "@appearanceAccentColor": { - "description": "Custom accent color picker" - }, "appearanceHistoryView": "History View", "@appearanceHistoryView": { "description": "Layout style for history" @@ -275,10 +133,6 @@ "@optionsTitle": { "description": "Options settings page title" }, - "optionsSearchSource": "Search Source", - "@optionsSearchSource": { - "description": "Section for search provider settings" - }, "optionsPrimaryProvider": "Primary Provider", "@optionsPrimaryProvider": { "description": "Main search provider setting" @@ -438,22 +292,6 @@ "@extensionsTitle": { "description": "Extensions page title" }, - "extensionsInstalled": "Installed Extensions", - "@extensionsInstalled": { - "description": "Section header for installed extensions" - }, - "extensionsNone": "No extensions installed", - "@extensionsNone": { - "description": "Empty state title" - }, - "extensionsNoneSubtitle": "Install extensions from the Store tab", - "@extensionsNoneSubtitle": { - "description": "Empty state subtitle" - }, - "extensionsEnabled": "Enabled", - "@extensionsEnabled": { - "description": "Extension status - active" - }, "extensionsDisabled": "Disabled", "@extensionsDisabled": { "description": "Extension status - inactive" @@ -480,10 +318,6 @@ "@extensionsUninstall": { "description": "Uninstall extension button" }, - "extensionsSetAsSearch": "Set as Search Provider", - "@extensionsSetAsSearch": { - "description": "Use extension for search" - }, "storeTitle": "Extension Store", "@storeTitle": { "description": "Store screen title" @@ -580,10 +414,6 @@ "@aboutSocial": { "description": "Section for social links" }, - "aboutSupport": "Support", - "@aboutSupport": { - "description": "Section for support/donation links" - }, "aboutApp": "App", "@aboutApp": { "description": "Section for app info" @@ -604,14 +434,6 @@ "@aboutSjdonadoDesc": { "description": "Credit description for sjdonado" }, - "aboutDoubleDouble": "DoubleDouble", - "@aboutDoubleDouble": { - "description": "Name of Amazon API service - DO NOT TRANSLATE" - }, - "aboutDoubleDoubleDesc": "Amazing API for Amazon Music downloads. Thank you for making it free!", - "@aboutDoubleDoubleDesc": { - "description": "Credit for DoubleDouble API" - }, "aboutDabMusic": "DAB Music", "@aboutDabMusic": { "description": "Name of Qobuz API service - DO NOT TRANSLATE" @@ -632,35 +454,6 @@ "@aboutAppDescription": { "description": "App description in header card" }, - "albumTitle": "Album", - "@albumTitle": { - "description": "Album screen title" - }, - "albumTracks": "{count, plural, =1{1 track} other{{count} tracks}}", - "@albumTracks": { - "description": "Album track count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "albumDownloadAll": "Download All", - "@albumDownloadAll": { - "description": "Button to download all tracks" - }, - "albumDownloadRemaining": "Download Remaining", - "@albumDownloadRemaining": { - "description": "Button to download remaining tracks" - }, - "playlistTitle": "Playlist", - "@playlistTitle": { - "description": "Playlist screen title" - }, - "artistTitle": "Artist", - "@artistTitle": { - "description": "Artist screen title" - }, "artistAlbums": "Albums", "@artistAlbums": { "description": "Section header for artist albums" @@ -673,15 +466,6 @@ "@artistCompilations": { "description": "Section header for compilations" }, - "artistReleases": "{count, plural, =1{1 release} other{{count} releases}}", - "@artistReleases": { - "description": "Artist release count", - "placeholders": { - "count": { - "type": "int" - } - } - }, "artistPopular": "Popular", "@artistPopular": { "description": "Section header for popular/top tracks" @@ -696,34 +480,6 @@ } } }, - "trackMetadataTitle": "Track Info", - "@trackMetadataTitle": { - "description": "Track metadata screen title" - }, - "trackMetadataArtist": "Artist", - "@trackMetadataArtist": { - "description": "Metadata field - artist name" - }, - "trackMetadataAlbum": "Album", - "@trackMetadataAlbum": { - "description": "Metadata field - album name" - }, - "trackMetadataDuration": "Duration", - "@trackMetadataDuration": { - "description": "Metadata field - track length" - }, - "trackMetadataQuality": "Quality", - "@trackMetadataQuality": { - "description": "Metadata field - audio quality" - }, - "trackMetadataPath": "File Path", - "@trackMetadataPath": { - "description": "Metadata field - file location" - }, - "trackMetadataDownloadedAt": "Downloaded", - "@trackMetadataDownloadedAt": { - "description": "Metadata field - download date" - }, "trackMetadataService": "Service", "@trackMetadataService": { "description": "Metadata field - download service used" @@ -740,54 +496,10 @@ "@trackMetadataDelete": { "description": "Action button - delete track" }, - "trackMetadataRedownload": "Re-download", - "@trackMetadataRedownload": { - "description": "Action button - download again" - }, - "trackMetadataOpenFolder": "Open Folder", - "@trackMetadataOpenFolder": { - "description": "Action button - open containing folder" - }, - "setupTitle": "Welcome to SpotiFLAC", - "@setupTitle": { - "description": "Setup wizard title" - }, - "setupSubtitle": "Let's get you started", - "@setupSubtitle": { - "description": "Setup wizard subtitle" - }, - "setupStoragePermission": "Storage Permission", - "@setupStoragePermission": { - "description": "Storage permission step title" - }, - "setupStoragePermissionSubtitle": "Required to save downloaded files", - "@setupStoragePermissionSubtitle": { - "description": "Explanation for storage permission" - }, - "setupStoragePermissionGranted": "Permission granted", - "@setupStoragePermissionGranted": { - "description": "Status when permission granted" - }, - "setupStoragePermissionDenied": "Permission denied", - "@setupStoragePermissionDenied": { - "description": "Status when permission denied" - }, "setupGrantPermission": "Grant Permission", "@setupGrantPermission": { "description": "Button to request permission" }, - "setupDownloadLocation": "Download Location", - "@setupDownloadLocation": { - "description": "Download folder step title" - }, - "setupChooseFolder": "Choose Folder", - "@setupChooseFolder": { - "description": "Button to pick folder" - }, - "setupContinue": "Continue", - "@setupContinue": { - "description": "Continue to next step button" - }, "setupSkip": "Skip for now", "@setupSkip": { "description": "Skip current step button" @@ -796,10 +508,6 @@ "@setupStorageAccessRequired": { "description": "Title when storage access needed" }, - "setupStorageAccessMessage": "SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.", - "@setupStorageAccessMessage": { - "description": "Explanation for storage access" - }, "setupStorageAccessMessageAndroid11": "Android 11+ requires \"All files access\" permission to save files to your chosen download folder.", "@setupStorageAccessMessageAndroid11": { "description": "Android 11+ specific explanation" @@ -831,10 +539,6 @@ } } }, - "setupSelectDownloadFolder": "Select Download Folder", - "@setupSelectDownloadFolder": { - "description": "Folder selection step title" - }, "setupUseDefaultFolder": "Use Default Folder?", "@setupUseDefaultFolder": { "description": "Dialog title for default folder" @@ -883,26 +587,6 @@ "@setupDownloadInFlac": { "description": "App tagline in setup" }, - "setupStepStorage": "Storage", - "@setupStepStorage": { - "description": "Setup step indicator - storage" - }, - "setupStepNotification": "Notification", - "@setupStepNotification": { - "description": "Setup step indicator - notification" - }, - "setupStepFolder": "Folder", - "@setupStepFolder": { - "description": "Setup step indicator - folder" - }, - "setupStepSpotify": "Spotify", - "@setupStepSpotify": { - "description": "Setup step indicator - Spotify API" - }, - "setupStepPermission": "Permission", - "@setupStepPermission": { - "description": "Setup step indicator - permission" - }, "setupStorageGranted": "Storage Permission Granted!", "@setupStorageGranted": { "description": "Success message for storage permission" @@ -923,14 +607,6 @@ "@setupNotificationEnable": { "description": "Button to enable notifications" }, - "setupNotificationDescription": "Get notified when downloads complete or require attention.", - "@setupNotificationDescription": { - "description": "Explanation for notifications" - }, - "setupFolderSelected": "Download Folder Selected!", - "@setupFolderSelected": { - "description": "Success message for folder selection" - }, "setupFolderChoose": "Choose Download Folder", "@setupFolderChoose": { "description": "Button to choose folder" @@ -939,58 +615,14 @@ "@setupFolderDescription": { "description": "Explanation for folder selection" }, - "setupChangeFolder": "Change Folder", - "@setupChangeFolder": { - "description": "Button to change selected folder" - }, "setupSelectFolder": "Select Folder", "@setupSelectFolder": { "description": "Button to select folder" }, - "setupSpotifyApiOptional": "Spotify API (Optional)", - "@setupSpotifyApiOptional": { - "description": "Spotify API step title" - }, - "setupSpotifyApiDescription": "Add your Spotify API credentials for better search results and access to Spotify-exclusive content.", - "@setupSpotifyApiDescription": { - "description": "Explanation for Spotify API" - }, - "setupUseSpotifyApi": "Use Spotify API", - "@setupUseSpotifyApi": { - "description": "Toggle to enable Spotify API" - }, - "setupEnterCredentialsBelow": "Enter your credentials below", - "@setupEnterCredentialsBelow": { - "description": "Prompt to enter credentials" - }, - "setupUsingDeezer": "Using Deezer (no account needed)", - "@setupUsingDeezer": { - "description": "Status when using Deezer" - }, - "setupEnterClientId": "Enter Spotify Client ID", - "@setupEnterClientId": { - "description": "Placeholder for client ID field" - }, - "setupEnterClientSecret": "Enter Spotify Client Secret", - "@setupEnterClientSecret": { - "description": "Placeholder for client secret field" - }, - "setupGetFreeCredentials": "Get your free API credentials from the Spotify Developer Dashboard.", - "@setupGetFreeCredentials": { - "description": "Info about getting Spotify credentials" - }, "setupEnableNotifications": "Enable Notifications", "@setupEnableNotifications": { "description": "Button to enable notifications" }, - "setupProceedToNextStep": "You can now proceed to the next step.", - "@setupProceedToNextStep": { - "description": "Message after completing a step" - }, - "setupNotificationProgressDescription": "You will receive download progress notifications.", - "@setupNotificationProgressDescription": { - "description": "Info about notification usage" - }, "setupNotificationBackgroundDescription": "Get notified about download progress and completion. This helps you track downloads when the app is in background.", "@setupNotificationBackgroundDescription": { "description": "Detailed notification explanation" @@ -999,10 +631,6 @@ "@setupSkipForNow": { "description": "Skip button text" }, - "setupBack": "Back", - "@setupBack": { - "description": "Back button text" - }, "setupNext": "Next", "@setupNext": { "description": "Next button text" @@ -1011,26 +639,14 @@ "@setupGetStarted": { "description": "Final setup button" }, - "setupSkipAndStart": "Skip & Start", - "@setupSkipAndStart": { - "description": "Skip setup and start app" - }, "setupAllowAccessToManageFiles": "Please enable \"Allow access to manage all files\" in the next screen.", "@setupAllowAccessToManageFiles": { "description": "Instruction for file access permission" }, - "setupGetCredentialsFromSpotify": "Get credentials from developer.spotify.com", - "@setupGetCredentialsFromSpotify": { - "description": "Link text for Spotify developer portal" - }, "dialogCancel": "Cancel", "@dialogCancel": { "description": "Dialog button - cancel action" }, - "dialogOk": "OK", - "@dialogOk": { - "description": "Dialog button - confirm/acknowledge" - }, "dialogSave": "Save", "@dialogSave": { "description": "Dialog button - save changes" @@ -1043,26 +659,10 @@ "@dialogRetry": { "description": "Dialog button - retry action" }, - "dialogClose": "Close", - "@dialogClose": { - "description": "Dialog button - close dialog" - }, - "dialogYes": "Yes", - "@dialogYes": { - "description": "Dialog button - confirm yes" - }, - "dialogNo": "No", - "@dialogNo": { - "description": "Dialog button - confirm no" - }, "dialogClear": "Clear", "@dialogClear": { "description": "Dialog button - clear items" }, - "dialogConfirm": "Confirm", - "@dialogConfirm": { - "description": "Dialog button - confirm action" - }, "dialogDone": "Done", "@dialogDone": { "description": "Dialog button - action completed" @@ -1091,34 +691,10 @@ "@dialogUnsavedChanges": { "description": "Dialog message - unsaved changes" }, - "dialogDownloadFailed": "Download Failed", - "@dialogDownloadFailed": { - "description": "Dialog title - download error" - }, - "dialogTrackLabel": "Track:", - "@dialogTrackLabel": { - "description": "Label for track name in error dialog" - }, - "dialogArtistLabel": "Artist:", - "@dialogArtistLabel": { - "description": "Label for artist name in error dialog" - }, - "dialogErrorLabel": "Error:", - "@dialogErrorLabel": { - "description": "Label for error message" - }, "dialogClearAll": "Clear All", "@dialogClearAll": { "description": "Dialog title - clear all items" }, - "dialogClearAllDownloads": "Are you sure you want to clear all downloads?", - "@dialogClearAllDownloads": { - "description": "Dialog message - clear downloads confirmation" - }, - "dialogRemoveFromDevice": "Remove from device?", - "@dialogRemoveFromDevice": { - "description": "Dialog title - delete file confirmation" - }, "dialogRemoveExtension": "Remove Extension", "@dialogRemoveExtension": { "description": "Dialog title - uninstall extension" @@ -1257,15 +833,6 @@ "@snackbarViewQueue": { "description": "Snackbar action - view download queue" }, - "snackbarFailedToLoad": "Failed to load: {error}", - "@snackbarFailedToLoad": { - "description": "Snackbar - loading error", - "placeholders": { - "error": { - "type": "String" - } - } - }, "snackbarUrlCopied": "{platform} URL copied to clipboard", "@snackbarUrlCopied": { "description": "Snackbar - URL copied", @@ -1326,16 +893,6 @@ "@errorRateLimitedMessage": { "description": "Error message - rate limit explanation" }, - "errorFailedToLoad": "Failed to load {item}", - "@errorFailedToLoad": { - "description": "Error message - loading failed", - "placeholders": { - "item": { - "type": "String", - "description": "Item that failed to load (album/playlist/etc)" - } - } - }, "errorNoTracksFound": "No tracks found", "@errorNoTracksFound": { "description": "Error - search returned no results" @@ -1349,34 +906,6 @@ } } }, - "statusQueued": "Queued", - "@statusQueued": { - "description": "Download status - waiting in queue" - }, - "statusDownloading": "Downloading", - "@statusDownloading": { - "description": "Download status - in progress" - }, - "statusFinalizing": "Finalizing", - "@statusFinalizing": { - "description": "Download status - writing metadata" - }, - "statusCompleted": "Completed", - "@statusCompleted": { - "description": "Download status - finished" - }, - "statusFailed": "Failed", - "@statusFailed": { - "description": "Download status - error occurred" - }, - "statusSkipped": "Skipped", - "@statusSkipped": { - "description": "Download status - already exists" - }, - "statusPaused": "Paused", - "@statusPaused": { - "description": "Download status - paused" - }, "actionPause": "Pause", "@actionPause": { "description": "Action button - pause download" @@ -1389,14 +918,6 @@ "@actionCancel": { "description": "Action button - cancel operation" }, - "actionStop": "Stop", - "@actionStop": { - "description": "Action button - stop operation" - }, - "actionSelect": "Select", - "@actionSelect": { - "description": "Action button - enter selection mode" - }, "actionSelectAll": "Select All", "@actionSelectAll": { "description": "Action button - select all items" @@ -1405,14 +926,6 @@ "@actionDeselect": { "description": "Action button - deselect all" }, - "actionPaste": "Paste", - "@actionPaste": { - "description": "Action button - paste from clipboard" - }, - "actionImportCsv": "Import CSV", - "@actionImportCsv": { - "description": "Action button - import CSV file" - }, "actionRemoveCredentials": "Remove Credentials", "@actionRemoveCredentials": { "description": "Action button - delete Spotify credentials" @@ -1434,19 +947,6 @@ "@selectionAllSelected": { "description": "Status - all items selected" }, - "selectionTapToSelect": "Tap tracks to select", - "@selectionTapToSelect": { - "description": "Hint - how to select items" - }, - "selectionDeleteTracks": "Delete {count} {count, plural, =1{track} other{tracks}}", - "@selectionDeleteTracks": { - "description": "Delete button with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, "selectionSelectToDelete": "Select tracks to delete", "@selectionSelectToDelete": { "description": "Placeholder when nothing selected" @@ -1487,55 +987,10 @@ "@tooltipPlay": { "description": "Tooltip - play button" }, - "tooltipCancel": "Cancel", - "@tooltipCancel": { - "description": "Tooltip - cancel button" - }, - "tooltipStop": "Stop", - "@tooltipStop": { - "description": "Tooltip - stop button" - }, - "tooltipRetry": "Retry", - "@tooltipRetry": { - "description": "Tooltip - retry button" - }, - "tooltipRemove": "Remove", - "@tooltipRemove": { - "description": "Tooltip - remove button" - }, - "tooltipClear": "Clear", - "@tooltipClear": { - "description": "Tooltip - clear button" - }, - "tooltipPaste": "Paste", - "@tooltipPaste": { - "description": "Tooltip - paste button" - }, "filenameFormat": "Filename Format", "@filenameFormat": { "description": "Setting title - filename pattern" }, - "filenameFormatPreview": "Preview: {preview}", - "@filenameFormatPreview": { - "description": "Preview of filename pattern", - "placeholders": { - "preview": { - "type": "String" - } - } - }, - "filenameAvailablePlaceholders": "Available placeholders:", - "@filenameAvailablePlaceholders": { - "description": "Label for placeholder list" - }, - "filenameHint": "{artist} - {title}", - "@filenameHint": { - "description": "Default filename format hint" - }, - "folderOrganization": "Folder Organization", - "@folderOrganization": { - "description": "Setting title - folder structure" - }, "folderOrganizationNone": "No organization", "@folderOrganizationNone": { "description": "Folder option - flat structure" @@ -1576,27 +1031,10 @@ "@updateAvailable": { "description": "Update dialog title" }, - "updateNewVersion": "Version {version} is available", - "@updateNewVersion": { - "description": "Update available message", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "updateDownload": "Download", - "@updateDownload": { - "description": "Update button - download update" - }, "updateLater": "Later", "@updateLater": { "description": "Update button - dismiss" }, - "updateChangelog": "Changelog", - "@updateChangelog": { - "description": "Link to changelog" - }, "updateStartingDownload": "Starting download...", "@updateStartingDownload": { "description": "Update status - initializing" @@ -1637,14 +1075,6 @@ "@updateDontRemind": { "description": "Update button - skip this version" }, - "providerPriority": "Provider Priority", - "@providerPriority": { - "description": "Setting title - download provider order" - }, - "providerPrioritySubtitle": "Drag to reorder download providers", - "@providerPrioritySubtitle": { - "description": "Subtitle for provider priority" - }, "providerPriorityTitle": "Provider Priority", "@providerPriorityTitle": { "description": "Provider priority page title" @@ -1665,14 +1095,6 @@ "@providerExtension": { "description": "Label for extension-provided providers" }, - "metadataProviderPriority": "Metadata Provider Priority", - "@metadataProviderPriority": { - "description": "Setting title - metadata provider order" - }, - "metadataProviderPrioritySubtitle": "Order used when fetching track metadata", - "@metadataProviderPrioritySubtitle": { - "description": "Subtitle for metadata priority" - }, "metadataProviderPriorityTitle": "Metadata Priority", "@metadataProviderPriorityTitle": { "description": "Metadata priority page title" @@ -1697,22 +1119,6 @@ "@logTitle": { "description": "Logs screen title" }, - "logCopy": "Copy Logs", - "@logCopy": { - "description": "Action - copy logs to clipboard" - }, - "logClear": "Clear Logs", - "@logClear": { - "description": "Action - delete all logs" - }, - "logShare": "Share Logs", - "@logShare": { - "description": "Action - share logs file" - }, - "logEmpty": "No logs yet", - "@logEmpty": { - "description": "Empty state title" - }, "logCopied": "Logs copied to clipboard", "@logCopied": { "description": "Snackbar - logs copied" @@ -1745,22 +1151,6 @@ "@logClearLogsMessage": { "description": "Clear logs confirmation message" }, - "logIspBlocking": "ISP BLOCKING DETECTED", - "@logIspBlocking": { - "description": "Error category - ISP blocking" - }, - "logRateLimited": "RATE LIMITED", - "@logRateLimited": { - "description": "Error category - rate limiting" - }, - "logNetworkError": "NETWORK ERROR", - "@logNetworkError": { - "description": "Error category - network issues" - }, - "logTrackNotFound": "TRACK NOT FOUND", - "@logTrackNotFound": { - "description": "Error category - missing tracks" - }, "logFilterBySeverity": "Filter logs by severity", "@logFilterBySeverity": { "description": "Filter dialog title" @@ -1773,60 +1163,6 @@ "@logNoLogsYetSubtitle": { "description": "Empty state subtitle" }, - "logIssueSummary": "Issue Summary", - "@logIssueSummary": { - "description": "Section header for error summary" - }, - "logIspBlockingDescription": "Your ISP may be blocking access to download services", - "@logIspBlockingDescription": { - "description": "ISP blocking explanation" - }, - "logIspBlockingSuggestion": "Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8", - "@logIspBlockingSuggestion": { - "description": "ISP blocking fix suggestion" - }, - "logRateLimitedDescription": "Too many requests to the service", - "@logRateLimitedDescription": { - "description": "Rate limit explanation" - }, - "logRateLimitedSuggestion": "Wait a few minutes before trying again", - "@logRateLimitedSuggestion": { - "description": "Rate limit fix suggestion" - }, - "logNetworkErrorDescription": "Connection issues detected", - "@logNetworkErrorDescription": { - "description": "Network error explanation" - }, - "logNetworkErrorSuggestion": "Check your internet connection", - "@logNetworkErrorSuggestion": { - "description": "Network error fix suggestion" - }, - "logTrackNotFoundDescription": "Some tracks could not be found on download services", - "@logTrackNotFoundDescription": { - "description": "Track not found explanation" - }, - "logTrackNotFoundSuggestion": "The track may not be available in lossless quality", - "@logTrackNotFoundSuggestion": { - "description": "Track not found explanation" - }, - "logTotalErrors": "Total errors: {count}", - "@logTotalErrors": { - "description": "Error count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "logAffected": "Affected: {domains}", - "@logAffected": { - "description": "Affected domains display", - "placeholders": { - "domains": { - "type": "String" - } - } - }, "logEntriesFiltered": "Entries ({count} filtered)", "@logEntriesFiltered": { "description": "Log count with filter active", @@ -1969,10 +1305,6 @@ "@appearanceLanguage": { "description": "Language setting title" }, - "appearanceLanguageSubtitle": "Choose your preferred language", - "@appearanceLanguageSubtitle": { - "description": "Language setting subtitle" - }, "settingsAppearanceSubtitle": "Theme, colors, display", "@settingsAppearanceSubtitle": { "description": "Appearance settings description" @@ -2001,10 +1333,6 @@ "@pressBackAgainToExit": { "description": "Exit confirmation message" }, - "tracksHeader": "Tracks", - "@tracksHeader": { - "description": "Section header for track list" - }, "downloadAllCount": "Download All ({count})", "@downloadAllCount": { "description": "Download all button with count", @@ -2151,15 +1479,6 @@ "@trackDeleteConfirmMessage": { "description": "Delete confirmation message" }, - "trackCannotOpen": "Cannot open: {message}", - "@trackCannotOpen": { - "description": "Error opening file", - "placeholders": { - "message": { - "type": "String" - } - } - }, "dateToday": "Today", "@dateToday": { "description": "Relative date - today" @@ -2195,22 +1514,6 @@ } } }, - "concurrentSequential": "Sequential", - "@concurrentSequential": { - "description": "Download mode - one at a time" - }, - "concurrentParallel2": "2 Parallel", - "@concurrentParallel2": { - "description": "Download mode - 2 simultaneous" - }, - "concurrentParallel3": "3 Parallel", - "@concurrentParallel3": { - "description": "Download mode - 3 simultaneous" - }, - "tapToSeeError": "Tap to see error details", - "@tapToSeeError": { - "description": "Tooltip for failed download" - }, "storeFilterAll": "All", "@storeFilterAll": { "description": "Store filter - all extensions" @@ -2239,18 +1542,6 @@ "@storeClearFilters": { "description": "Button to clear all filters" }, - "storeNoResults": "No extensions found", - "@storeNoResults": { - "description": "Empty state when no extensions match filters" - }, - "extensionProviderPriority": "Provider Priority", - "@extensionProviderPriority": { - "description": "Extension capability - provider priority" - }, - "extensionInstallButton": "Install Extension", - "@extensionInstallButton": { - "description": "Button to install extension" - }, "extensionDefaultProvider": "Default (Deezer/Spotify)", "@extensionDefaultProvider": { "description": "Default search provider option" @@ -2450,46 +1741,6 @@ "@qualityHiResFlacMaxSubtitle": { "description": "Technical spec for hi-res max" }, - "qualityLossy": "Lossy", - "@qualityLossy": { - "description": "Quality option - lossy format (MP3/Opus)" - }, - "qualityLossyMp3Subtitle": "MP3 320kbps (converted from FLAC)", - "@qualityLossyMp3Subtitle": { - "description": "Technical spec for lossy MP3" - }, - "qualityLossyOpusSubtitle": "Opus 128kbps (converted from FLAC)", - "@qualityLossyOpusSubtitle": { - "description": "Technical spec for lossy Opus" - }, - "enableLossyOption": "Enable Lossy Option", - "@enableLossyOption": { - "description": "Setting - enable lossy quality option" - }, - "enableLossyOptionSubtitleOn": "Lossy quality option is available", - "@enableLossyOptionSubtitleOn": { - "description": "Subtitle when lossy is enabled" - }, - "enableLossyOptionSubtitleOff": "Downloads FLAC then converts to lossy format", - "@enableLossyOptionSubtitleOff": { - "description": "Subtitle when lossy is disabled" - }, - "lossyFormat": "Lossy Format", - "@lossyFormat": { - "description": "Setting - choose lossy format" - }, - "lossyFormatDescription": "Choose the lossy format for conversion", - "@lossyFormatDescription": { - "description": "Description for lossy format picker" - }, - "lossyFormatMp3Subtitle": "320kbps, best compatibility", - "@lossyFormatMp3Subtitle": { - "description": "MP3 format description" - }, - "lossyFormatOpusSubtitle": "128kbps, better quality at smaller size", - "@lossyFormatOpusSubtitle": { - "description": "Opus format description" - }, "qualityNote": "Actual quality depends on track availability from the service", "@qualityNote": { "description": "Note about quality availability" @@ -2518,14 +1769,6 @@ "@downloadUseAlbumArtistForFolders": { "description": "Setting - choose whether artist folders use Album Artist or Track Artist" }, - "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Artist folders use Album Artist when available", - "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { - "description": "Subtitle when Album Artist is used for folder naming" - }, - "downloadUseAlbumArtistForFoldersTrackSubtitle": "Artist folders use Track Artist only", - "@downloadUseAlbumArtistForFoldersTrackSubtitle": { - "description": "Subtitle when Track Artist is used for folder naming" - }, "downloadUsePrimaryArtistOnly": "Primary artist only for folders", "@downloadUsePrimaryArtistOnly": { "description": "Setting - strip featured artists from folder name" @@ -2538,14 +1781,6 @@ "@downloadUsePrimaryArtistOnlyDisabled": { "description": "Subtitle when primary artist only is disabled" }, - "downloadSaveFormat": "Save Format", - "@downloadSaveFormat": { - "description": "Setting - output file format" - }, - "downloadSelectService": "Select Service", - "@downloadSelectService": { - "description": "Dialog title - choose download service" - }, "downloadSelectQuality": "Select Quality", "@downloadSelectQuality": { "description": "Dialog title - choose audio quality" @@ -2554,66 +1789,6 @@ "@downloadFrom": { "description": "Label - download source" }, - "downloadDefaultQualityLabel": "Default Quality", - "@downloadDefaultQualityLabel": { - "description": "Label - default quality setting" - }, - "downloadBestAvailable": "Best available", - "@downloadBestAvailable": { - "description": "Quality option - highest available" - }, - "folderNone": "None", - "@folderNone": { - "description": "Folder option - no organization" - }, - "folderNoneSubtitle": "Save all files directly to download folder", - "@folderNoneSubtitle": { - "description": "Subtitle for no folder organization" - }, - "folderArtist": "Artist", - "@folderArtist": { - "description": "Folder option - by artist" - }, - "folderArtistSubtitle": "Artist Name/filename", - "@folderArtistSubtitle": { - "description": "Folder structure example" - }, - "folderAlbum": "Album", - "@folderAlbum": { - "description": "Folder option - by album" - }, - "folderAlbumSubtitle": "Album Name/filename", - "@folderAlbumSubtitle": { - "description": "Folder structure example" - }, - "folderArtistAlbum": "Artist/Album", - "@folderArtistAlbum": { - "description": "Folder option - nested" - }, - "folderArtistAlbumSubtitle": "Artist Name/Album Name/filename", - "@folderArtistAlbumSubtitle": { - "description": "Folder structure example" - }, - "serviceTidal": "Tidal", - "@serviceTidal": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceQobuz": "Qobuz", - "@serviceQobuz": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceAmazon": "Amazon", - "@serviceAmazon": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceDeezer": "Deezer", - "@serviceDeezer": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceSpotify": "Spotify", - "@serviceSpotify": { - "description": "Service name - DO NOT TRANSLATE" - }, "appearanceAmoledDark": "AMOLED Dark", "@appearanceAmoledDark": { "description": "Theme option - pure black" @@ -2622,18 +1797,6 @@ "@appearanceAmoledDarkSubtitle": { "description": "Subtitle for AMOLED dark" }, - "appearanceChooseAccentColor": "Choose Accent Color", - "@appearanceChooseAccentColor": { - "description": "Color picker dialog title" - }, - "appearanceChooseTheme": "Theme Mode", - "@appearanceChooseTheme": { - "description": "Theme picker dialog title" - }, - "queueTitle": "Download Queue", - "@queueTitle": { - "description": "Queue screen title" - }, "queueClearAll": "Clear All", "@queueClearAll": { "description": "Button - clear all queue items" @@ -2642,22 +1805,6 @@ "@queueClearAllMessage": { "description": "Clear queue confirmation" }, - "queueExportFailed": "Export", - "@queueExportFailed": { - "description": "Button - export failed downloads to TXT" - }, - "queueExportFailedSuccess": "Failed downloads exported to TXT file", - "@queueExportFailedSuccess": { - "description": "Success message after exporting failed downloads" - }, - "queueExportFailedClear": "Clear Failed", - "@queueExportFailedClear": { - "description": "Action to clear failed downloads after export" - }, - "queueExportFailedError": "Failed to export downloads", - "@queueExportFailedError": { - "description": "Error message when export fails" - }, "settingsAutoExportFailed": "Auto-export failed downloads", "@settingsAutoExportFailed": { "description": "Setting toggle for auto-export" @@ -2682,38 +1829,6 @@ "@settingsDownloadNetworkSubtitle": { "description": "Subtitle explaining network preference" }, - "queueEmpty": "No downloads in queue", - "@queueEmpty": { - "description": "Empty queue state title" - }, - "queueEmptySubtitle": "Add tracks from the home screen", - "@queueEmptySubtitle": { - "description": "Empty queue state subtitle" - }, - "queueClearCompleted": "Clear completed", - "@queueClearCompleted": { - "description": "Button - clear finished downloads" - }, - "queueDownloadFailed": "Download Failed", - "@queueDownloadFailed": { - "description": "Error dialog title" - }, - "queueTrackLabel": "Track:", - "@queueTrackLabel": { - "description": "Label in error dialog" - }, - "queueArtistLabel": "Artist:", - "@queueArtistLabel": { - "description": "Label in error dialog" - }, - "queueErrorLabel": "Error:", - "@queueErrorLabel": { - "description": "Label in error dialog" - }, - "queueUnknownError": "Unknown error", - "@queueUnknownError": { - "description": "Fallback error message" - }, "albumFolderArtistAlbum": "Artist / Album", "@albumFolderArtistAlbum": { "description": "Album folder option" @@ -2767,19 +1882,6 @@ } } }, - "downloadedAlbumTracksHeader": "Tracks", - "@downloadedAlbumTracksHeader": { - "description": "Section header for tracks" - }, - "downloadedAlbumDownloadedCount": "{count} downloaded", - "@downloadedAlbumDownloadedCount": { - "description": "Downloaded tracks count badge", - "placeholders": { - "count": { - "type": "int" - } - } - }, "downloadedAlbumSelectedCount": "{count} selected", "@downloadedAlbumSelectedCount": { "description": "Selection count indicator", @@ -2820,10 +1922,6 @@ } } }, - "utilityFunctions": "Utility Functions", - "@utilityFunctions": { - "description": "Extension capability - utility functions" - }, "recentTypeArtist": "Artist", "@recentTypeArtist": { "description": "Recent access item type - artist" @@ -2858,16 +1956,6 @@ } } }, - "errorGeneric": "Error: {message}", - "@errorGeneric": { - "description": "Generic error message format", - "placeholders": { - "message": { - "type": "String", - "description": "Error message" - } - } - }, "discographyDownload": "Download Discography", "@discographyDownload": { "description": "Button - download artist discography" @@ -3034,10 +2122,6 @@ "@libraryTitle": { "description": "Library settings page title" }, - "libraryStatus": "Library Status", - "@libraryStatus": { - "description": "Section header for library status" - }, "libraryScanSettings": "Scan Settings", "@libraryScanSettings": { "description": "Section header for scan settings" @@ -3114,15 +2198,6 @@ "@libraryAboutDescription": { "description": "Description of local library feature" }, - "libraryTracksCount": "{count} tracks", - "@libraryTracksCount": { - "description": "Track count in library", - "placeholders": { - "count": { - "type": "int" - } - } - }, "libraryLastScanned": "Last scanned: {time}", "@libraryLastScanned": { "description": "Last scan time display", @@ -3237,26 +2312,6 @@ "@libraryFilterFormat": { "description": "Filter section - file format" }, - "libraryFilterDate": "Date Added", - "@libraryFilterDate": { - "description": "Filter section - date range" - }, - "libraryFilterDateToday": "Today", - "@libraryFilterDateToday": { - "description": "Filter option - today only" - }, - "libraryFilterDateWeek": "This Week", - "@libraryFilterDateWeek": { - "description": "Filter option - this week" - }, - "libraryFilterDateMonth": "This Month", - "@libraryFilterDateMonth": { - "description": "Filter option - this month" - }, - "libraryFilterDateYear": "This Year", - "@libraryFilterDateYear": { - "description": "Filter option - this year" - }, "libraryFilterSort": "Sort", "@libraryFilterSort": { "description": "Filter section - sort order" @@ -3269,15 +2324,6 @@ "@libraryFilterSortOldest": { "description": "Sort option - oldest first" }, - "libraryFilterActive": "{count} filter(s) active", - "@libraryFilterActive": { - "description": "Badge showing number of active filters", - "placeholders": { - "count": { - "type": "int" - } - } - }, "timeJustNow": "Just now", "@timeJustNow": { "description": "Relative time - less than a minute ago" @@ -3300,106 +2346,6 @@ } } }, - "storageSwitchTitle": "Switch Storage Mode", - "@storageSwitchTitle": { - "description": "Dialog title when switching storage mode" - }, - "storageSwitchToSafTitle": "Switch to SAF Storage?", - "@storageSwitchToSafTitle": { - "description": "Dialog title when switching to SAF" - }, - "storageSwitchToAppTitle": "Switch to App Storage?", - "@storageSwitchToAppTitle": { - "description": "Dialog title when switching to app storage" - }, - "storageSwitchToSafMessage": "Your existing downloads will remain in the current location and stay accessible.\n\nNew downloads will be saved to your selected SAF folder.", - "@storageSwitchToSafMessage": { - "description": "Explanation when switching to SAF" - }, - "storageSwitchToAppMessage": "Your existing downloads will remain in the current SAF location and stay accessible.\n\nNew downloads will be saved to Music/SpotiFLAC folder.", - "@storageSwitchToAppMessage": { - "description": "Explanation when switching to app storage" - }, - "storageSwitchExistingDownloads": "Existing Downloads", - "@storageSwitchExistingDownloads": { - "description": "Section header for existing downloads info" - }, - "storageSwitchExistingDownloadsInfo": "{count} tracks in {mode} storage", - "@storageSwitchExistingDownloadsInfo": { - "description": "Info about existing downloads count", - "placeholders": { - "count": { - "type": "int" - }, - "mode": { - "type": "String" - } - } - }, - "storageSwitchNewDownloads": "New Downloads", - "@storageSwitchNewDownloads": { - "description": "Section header for new downloads info" - }, - "storageSwitchNewDownloadsLocation": "Will be saved to: {location}", - "@storageSwitchNewDownloadsLocation": { - "description": "Shows where new downloads will go", - "placeholders": { - "location": { - "type": "String" - } - } - }, - "storageSwitchContinue": "Continue", - "@storageSwitchContinue": { - "description": "Button to proceed with storage switch" - }, - "storageSwitchSelectFolder": "Select SAF Folder", - "@storageSwitchSelectFolder": { - "description": "Button to select SAF folder" - }, - "storageAppStorage": "App Storage", - "@storageAppStorage": { - "description": "Label for app storage mode" - }, - "storageSafStorage": "SAF Storage", - "@storageSafStorage": { - "description": "Label for SAF storage mode" - }, - "storageModeBadge": "Storage: {mode}", - "@storageModeBadge": { - "description": "Badge showing storage mode for a track", - "placeholders": { - "mode": { - "type": "String" - } - } - }, - "storageStatsTitle": "Storage Statistics", - "@storageStatsTitle": { - "description": "Section title for storage stats" - }, - "storageStatsAppCount": "{count} tracks in App Storage", - "@storageStatsAppCount": { - "description": "Count of tracks in app storage", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storageStatsSafCount": "{count} tracks in SAF Storage", - "@storageStatsSafCount": { - "description": "Count of tracks in SAF storage", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storageModeInfo": "Your files are stored in multiple locations", - "@storageModeInfo": { - "description": "Info when user has files in both storage modes" - }, "tutorialWelcomeTitle": "Welcome to SpotiFLAC!", "@tutorialWelcomeTitle": { "description": "Tutorial welcome page title" @@ -3428,18 +2374,6 @@ "@tutorialSearchDesc": { "description": "Tutorial search page description" }, - "tutorialSearchTip1": "Paste a Spotify or Deezer URL directly in the search box", - "@tutorialSearchTip1": { - "description": "Tutorial search tip 1" - }, - "tutorialSearchTip2": "Or type the song name, artist, or album to search", - "@tutorialSearchTip2": { - "description": "Tutorial search tip 2" - }, - "tutorialSearchTip3": "Supports tracks, albums, playlists, and artist pages", - "@tutorialSearchTip3": { - "description": "Tutorial search tip 3" - }, "tutorialDownloadTitle": "Downloading Music", "@tutorialDownloadTitle": { "description": "Tutorial download page title" @@ -3448,18 +2382,6 @@ "@tutorialDownloadDesc": { "description": "Tutorial download page description" }, - "tutorialDownloadTip1": "Tap the download button next to any track to start downloading", - "@tutorialDownloadTip1": { - "description": "Tutorial download tip 1" - }, - "tutorialDownloadTip2": "Choose your preferred quality (FLAC, Hi-Res, or MP3)", - "@tutorialDownloadTip2": { - "description": "Tutorial download tip 2" - }, - "tutorialDownloadTip3": "Download entire albums or playlists with one tap", - "@tutorialDownloadTip3": { - "description": "Tutorial download tip 3" - }, "tutorialLibraryTitle": "Your Library", "@tutorialLibraryTitle": { "description": "Tutorial library page title" @@ -3524,10 +2446,6 @@ "@tutorialReadyMessage": { "description": "Tutorial completion message" }, - "tutorialExample": "EXAMPLE", - "@tutorialExample": { - "description": "Example label in tutorial" - }, "libraryForceFullScan": "Force Full Scan", "@libraryForceFullScan": { "description": "Button to force a complete rescan of library" @@ -3754,10 +2672,6 @@ "@trackReEnrich": { "description": "Menu action - re-embed metadata into audio file" }, - "trackReEnrichSubtitle": "Re-embed metadata without re-downloading", - "@trackReEnrichSubtitle": { - "description": "Subtitle for re-enrich metadata action" - }, "trackReEnrichOnlineSubtitle": "Search metadata online and embed into file", "@trackReEnrichOnlineSubtitle": { "description": "Subtitle for re-enrich metadata action for local items" @@ -3869,15 +2783,21 @@ "@trackConvertFailed": { "description": "Snackbar when conversion fails" }, - "setupModeSelectionTitle": "모드 선택", - "setupModeSelectionDescription": "SpotiFLAC을 어떻게 사용하시겠습니까? 나중에 설정에서 언제든지 변경할 수 있습니다.", - "setupModeDownloaderTitle": "다운로더", - "setupModeDownloaderFeature1": "무손실 FLAC 품질로 트랙 다운로드", - "setupModeDownloaderFeature2": "오프라인 감상을 위해 기기에 음악 저장", - "setupModeDownloaderFeature3": "로컬 음악 라이브러리 관리", - "setupModeStreamingTitle": "스트리밍", - "setupModeStreamingFeature1": "다운로드 없이 트랙을 즉시 스트리밍", - "setupModeStreamingFeature2": "Smart Queue가 자동으로 새로운 음악을 발견합니다", - "setupModeStreamingFeature3": "재생 컨트롤로 원하는 트랙을 온디맨드 재생", - "setupModeChangeableLater": "설정에서 언제든지 모드를 전환할 수 있습니다." -} \ No newline at end of file + "downloadedAlbumDownloadedCount": "{count} downloaded", + "@downloadedAlbumDownloadedCount": { + "description": "Downloaded tracks count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Artist folders use Album Artist when available", + "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { + "description": "Subtitle when Album Artist is used for folder naming" + }, + "downloadUseAlbumArtistForFoldersTrackSubtitle": "Artist folders use Track Artist only", + "@downloadUseAlbumArtistForFoldersTrackSubtitle": { + "description": "Subtitle when Track Artist is used for folder naming" + } +} diff --git a/lib/l10n/arb/app_nl.arb b/lib/l10n/arb/app_nl.arb index ebac52c4..1fd0bec6 100644 --- a/lib/l10n/arb/app_nl.arb +++ b/lib/l10n/arb/app_nl.arb @@ -5,10 +5,6 @@ "@appName": { "description": "App name - DO NOT TRANSLATE" }, - "appDescription": "Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.", - "@appDescription": { - "description": "App description shown in about page" - }, "navHome": "Home", "@navHome": { "description": "Bottom navigation - Home tab" @@ -17,10 +13,6 @@ "@navLibrary": { "description": "Bottom navigation - Library tab" }, - "navHistory": "History", - "@navHistory": { - "description": "Bottom navigation - History tab (legacy)" - }, "navSettings": "Settings", "@navSettings": { "description": "Bottom navigation - Settings tab" @@ -33,20 +25,6 @@ "@homeTitle": { "description": "Home screen title" }, - "homeSearchHint": "Paste Spotify URL or search...", - "@homeSearchHint": { - "description": "Placeholder text in search box" - }, - "homeSearchHintExtension": "Search with {extensionName}...", - "@homeSearchHintExtension": { - "description": "Placeholder when extension search is active", - "placeholders": { - "extensionName": { - "type": "String", - "description": "Name of the active extension" - } - } - }, "homeSubtitle": "Paste a Spotify link or search by name", "@homeSubtitle": { "description": "Subtitle shown below search box" @@ -59,24 +37,6 @@ "@homeRecent": { "description": "Section header for recent searches" }, - "historyTitle": "History", - "@historyTitle": { - "description": "History screen title" - }, - "historyDownloading": "Downloading ({count})", - "@historyDownloading": { - "description": "Tab showing active downloads count", - "placeholders": { - "count": { - "type": "int", - "description": "Number of active downloads" - } - } - }, - "historyDownloaded": "Downloaded", - "@historyDownloaded": { - "description": "Tab showing completed downloads" - }, "historyFilterAll": "All", "@historyFilterAll": { "description": "Filter chip - show all items" @@ -89,48 +49,6 @@ "@historyFilterSingles": { "description": "Filter chip - show singles only" }, - "historyTracksCount": "{count, plural, =1{1 track} other{{count} tracks}}", - "@historyTracksCount": { - "description": "Track count with plural form", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "historyAlbumsCount": "{count, plural, =1{1 album} other{{count} albums}}", - "@historyAlbumsCount": { - "description": "Album count with plural form", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "historyNoDownloads": "No download history", - "@historyNoDownloads": { - "description": "Empty state title" - }, - "historyNoDownloadsSubtitle": "Downloaded tracks will appear here", - "@historyNoDownloadsSubtitle": { - "description": "Empty state subtitle" - }, - "historyNoAlbums": "No album downloads", - "@historyNoAlbums": { - "description": "Empty state when filtering albums" - }, - "historyNoAlbumsSubtitle": "Download multiple tracks from an album to see them here", - "@historyNoAlbumsSubtitle": { - "description": "Empty state subtitle for albums filter" - }, - "historyNoSingles": "No single downloads", - "@historyNoSingles": { - "description": "Empty state when filtering singles" - }, - "historyNoSinglesSubtitle": "Single track downloads will appear here", - "@historyNoSinglesSubtitle": { - "description": "Empty state subtitle for singles filter" - }, "historySearchHint": "Search history...", "@historySearchHint": { "description": "Search bar placeholder in history" @@ -163,34 +81,6 @@ "@downloadTitle": { "description": "Download settings page title" }, - "downloadLocation": "Download Location", - "@downloadLocation": { - "description": "Setting for download folder" - }, - "downloadLocationSubtitle": "Choose where to save files", - "@downloadLocationSubtitle": { - "description": "Subtitle for download location" - }, - "downloadLocationDefault": "Default location", - "@downloadLocationDefault": { - "description": "Shown when using default folder" - }, - "downloadDefaultService": "Default Service", - "@downloadDefaultService": { - "description": "Setting for preferred download service (Tidal/Qobuz/Amazon)" - }, - "downloadDefaultServiceSubtitle": "Service used for downloads", - "@downloadDefaultServiceSubtitle": { - "description": "Subtitle for default service" - }, - "downloadDefaultQuality": "Default Quality", - "@downloadDefaultQuality": { - "description": "Setting for audio quality" - }, - "downloadAskQuality": "Ask Quality Before Download", - "@downloadAskQuality": { - "description": "Toggle to show quality picker" - }, "downloadAskQualitySubtitle": "Show quality picker for each download", "@downloadAskQualitySubtitle": { "description": "Subtitle for ask quality toggle" @@ -203,38 +93,10 @@ "@downloadFolderOrganization": { "description": "Setting for folder structure" }, - "downloadSeparateSingles": "Separate Singles", - "@downloadSeparateSingles": { - "description": "Toggle to separate single tracks" - }, - "downloadSeparateSinglesSubtitle": "Put single tracks in a separate folder", - "@downloadSeparateSinglesSubtitle": { - "description": "Subtitle for separate singles toggle" - }, - "qualityBest": "Best Available", - "@qualityBest": { - "description": "Audio quality option - highest available" - }, - "qualityFlac": "FLAC", - "@qualityFlac": { - "description": "Audio quality option - FLAC lossless" - }, - "quality320": "320 kbps", - "@quality320": { - "description": "Audio quality option - 320kbps MP3" - }, - "quality128": "128 kbps", - "@quality128": { - "description": "Audio quality option - 128kbps MP3" - }, "appearanceTitle": "Appearance", "@appearanceTitle": { "description": "Appearance settings page title" }, - "appearanceTheme": "Theme", - "@appearanceTheme": { - "description": "Theme mode setting" - }, "appearanceThemeSystem": "System", "@appearanceThemeSystem": { "description": "Follow system theme" @@ -255,10 +117,6 @@ "@appearanceDynamicColorSubtitle": { "description": "Subtitle for dynamic color" }, - "appearanceAccentColor": "Accent Color", - "@appearanceAccentColor": { - "description": "Custom accent color picker" - }, "appearanceHistoryView": "History View", "@appearanceHistoryView": { "description": "Layout style for history" @@ -275,10 +133,6 @@ "@optionsTitle": { "description": "Options settings page title" }, - "optionsSearchSource": "Search Source", - "@optionsSearchSource": { - "description": "Section for search provider settings" - }, "optionsPrimaryProvider": "Primary Provider", "@optionsPrimaryProvider": { "description": "Main search provider setting" @@ -438,22 +292,6 @@ "@extensionsTitle": { "description": "Extensions page title" }, - "extensionsInstalled": "Installed Extensions", - "@extensionsInstalled": { - "description": "Section header for installed extensions" - }, - "extensionsNone": "No extensions installed", - "@extensionsNone": { - "description": "Empty state title" - }, - "extensionsNoneSubtitle": "Install extensions from the Store tab", - "@extensionsNoneSubtitle": { - "description": "Empty state subtitle" - }, - "extensionsEnabled": "Enabled", - "@extensionsEnabled": { - "description": "Extension status - active" - }, "extensionsDisabled": "Disabled", "@extensionsDisabled": { "description": "Extension status - inactive" @@ -480,10 +318,6 @@ "@extensionsUninstall": { "description": "Uninstall extension button" }, - "extensionsSetAsSearch": "Set as Search Provider", - "@extensionsSetAsSearch": { - "description": "Use extension for search" - }, "storeTitle": "Extension Store", "@storeTitle": { "description": "Store screen title" @@ -580,10 +414,6 @@ "@aboutSocial": { "description": "Section for social links" }, - "aboutSupport": "Support", - "@aboutSupport": { - "description": "Section for support/donation links" - }, "aboutApp": "App", "@aboutApp": { "description": "Section for app info" @@ -604,14 +434,6 @@ "@aboutSjdonadoDesc": { "description": "Credit description for sjdonado" }, - "aboutDoubleDouble": "DoubleDouble", - "@aboutDoubleDouble": { - "description": "Name of Amazon API service - DO NOT TRANSLATE" - }, - "aboutDoubleDoubleDesc": "Amazing API for Amazon Music downloads. Thank you for making it free!", - "@aboutDoubleDoubleDesc": { - "description": "Credit for DoubleDouble API" - }, "aboutDabMusic": "DAB Music", "@aboutDabMusic": { "description": "Name of Qobuz API service - DO NOT TRANSLATE" @@ -632,35 +454,6 @@ "@aboutAppDescription": { "description": "App description in header card" }, - "albumTitle": "Album", - "@albumTitle": { - "description": "Album screen title" - }, - "albumTracks": "{count, plural, =1{1 track} other{{count} tracks}}", - "@albumTracks": { - "description": "Album track count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "albumDownloadAll": "Download All", - "@albumDownloadAll": { - "description": "Button to download all tracks" - }, - "albumDownloadRemaining": "Download Remaining", - "@albumDownloadRemaining": { - "description": "Button to download remaining tracks" - }, - "playlistTitle": "Playlist", - "@playlistTitle": { - "description": "Playlist screen title" - }, - "artistTitle": "Artist", - "@artistTitle": { - "description": "Artist screen title" - }, "artistAlbums": "Albums", "@artistAlbums": { "description": "Section header for artist albums" @@ -673,15 +466,6 @@ "@artistCompilations": { "description": "Section header for compilations" }, - "artistReleases": "{count, plural, =1{1 release} other{{count} releases}}", - "@artistReleases": { - "description": "Artist release count", - "placeholders": { - "count": { - "type": "int" - } - } - }, "artistPopular": "Popular", "@artistPopular": { "description": "Section header for popular/top tracks" @@ -696,34 +480,6 @@ } } }, - "trackMetadataTitle": "Track Info", - "@trackMetadataTitle": { - "description": "Track metadata screen title" - }, - "trackMetadataArtist": "Artist", - "@trackMetadataArtist": { - "description": "Metadata field - artist name" - }, - "trackMetadataAlbum": "Album", - "@trackMetadataAlbum": { - "description": "Metadata field - album name" - }, - "trackMetadataDuration": "Duration", - "@trackMetadataDuration": { - "description": "Metadata field - track length" - }, - "trackMetadataQuality": "Quality", - "@trackMetadataQuality": { - "description": "Metadata field - audio quality" - }, - "trackMetadataPath": "File Path", - "@trackMetadataPath": { - "description": "Metadata field - file location" - }, - "trackMetadataDownloadedAt": "Downloaded", - "@trackMetadataDownloadedAt": { - "description": "Metadata field - download date" - }, "trackMetadataService": "Service", "@trackMetadataService": { "description": "Metadata field - download service used" @@ -740,54 +496,10 @@ "@trackMetadataDelete": { "description": "Action button - delete track" }, - "trackMetadataRedownload": "Re-download", - "@trackMetadataRedownload": { - "description": "Action button - download again" - }, - "trackMetadataOpenFolder": "Open Folder", - "@trackMetadataOpenFolder": { - "description": "Action button - open containing folder" - }, - "setupTitle": "Welcome to SpotiFLAC", - "@setupTitle": { - "description": "Setup wizard title" - }, - "setupSubtitle": "Let's get you started", - "@setupSubtitle": { - "description": "Setup wizard subtitle" - }, - "setupStoragePermission": "Storage Permission", - "@setupStoragePermission": { - "description": "Storage permission step title" - }, - "setupStoragePermissionSubtitle": "Required to save downloaded files", - "@setupStoragePermissionSubtitle": { - "description": "Explanation for storage permission" - }, - "setupStoragePermissionGranted": "Permission granted", - "@setupStoragePermissionGranted": { - "description": "Status when permission granted" - }, - "setupStoragePermissionDenied": "Permission denied", - "@setupStoragePermissionDenied": { - "description": "Status when permission denied" - }, "setupGrantPermission": "Grant Permission", "@setupGrantPermission": { "description": "Button to request permission" }, - "setupDownloadLocation": "Download Location", - "@setupDownloadLocation": { - "description": "Download folder step title" - }, - "setupChooseFolder": "Choose Folder", - "@setupChooseFolder": { - "description": "Button to pick folder" - }, - "setupContinue": "Continue", - "@setupContinue": { - "description": "Continue to next step button" - }, "setupSkip": "Skip for now", "@setupSkip": { "description": "Skip current step button" @@ -796,10 +508,6 @@ "@setupStorageAccessRequired": { "description": "Title when storage access needed" }, - "setupStorageAccessMessage": "SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.", - "@setupStorageAccessMessage": { - "description": "Explanation for storage access" - }, "setupStorageAccessMessageAndroid11": "Android 11+ requires \"All files access\" permission to save files to your chosen download folder.", "@setupStorageAccessMessageAndroid11": { "description": "Android 11+ specific explanation" @@ -831,10 +539,6 @@ } } }, - "setupSelectDownloadFolder": "Select Download Folder", - "@setupSelectDownloadFolder": { - "description": "Folder selection step title" - }, "setupUseDefaultFolder": "Use Default Folder?", "@setupUseDefaultFolder": { "description": "Dialog title for default folder" @@ -883,26 +587,6 @@ "@setupDownloadInFlac": { "description": "App tagline in setup" }, - "setupStepStorage": "Storage", - "@setupStepStorage": { - "description": "Setup step indicator - storage" - }, - "setupStepNotification": "Notification", - "@setupStepNotification": { - "description": "Setup step indicator - notification" - }, - "setupStepFolder": "Folder", - "@setupStepFolder": { - "description": "Setup step indicator - folder" - }, - "setupStepSpotify": "Spotify", - "@setupStepSpotify": { - "description": "Setup step indicator - Spotify API" - }, - "setupStepPermission": "Permission", - "@setupStepPermission": { - "description": "Setup step indicator - permission" - }, "setupStorageGranted": "Storage Permission Granted!", "@setupStorageGranted": { "description": "Success message for storage permission" @@ -923,14 +607,6 @@ "@setupNotificationEnable": { "description": "Button to enable notifications" }, - "setupNotificationDescription": "Get notified when downloads complete or require attention.", - "@setupNotificationDescription": { - "description": "Explanation for notifications" - }, - "setupFolderSelected": "Download Folder Selected!", - "@setupFolderSelected": { - "description": "Success message for folder selection" - }, "setupFolderChoose": "Choose Download Folder", "@setupFolderChoose": { "description": "Button to choose folder" @@ -939,58 +615,14 @@ "@setupFolderDescription": { "description": "Explanation for folder selection" }, - "setupChangeFolder": "Change Folder", - "@setupChangeFolder": { - "description": "Button to change selected folder" - }, "setupSelectFolder": "Select Folder", "@setupSelectFolder": { "description": "Button to select folder" }, - "setupSpotifyApiOptional": "Spotify API (Optional)", - "@setupSpotifyApiOptional": { - "description": "Spotify API step title" - }, - "setupSpotifyApiDescription": "Add your Spotify API credentials for better search results and access to Spotify-exclusive content.", - "@setupSpotifyApiDescription": { - "description": "Explanation for Spotify API" - }, - "setupUseSpotifyApi": "Use Spotify API", - "@setupUseSpotifyApi": { - "description": "Toggle to enable Spotify API" - }, - "setupEnterCredentialsBelow": "Enter your credentials below", - "@setupEnterCredentialsBelow": { - "description": "Prompt to enter credentials" - }, - "setupUsingDeezer": "Using Deezer (no account needed)", - "@setupUsingDeezer": { - "description": "Status when using Deezer" - }, - "setupEnterClientId": "Enter Spotify Client ID", - "@setupEnterClientId": { - "description": "Placeholder for client ID field" - }, - "setupEnterClientSecret": "Enter Spotify Client Secret", - "@setupEnterClientSecret": { - "description": "Placeholder for client secret field" - }, - "setupGetFreeCredentials": "Get your free API credentials from the Spotify Developer Dashboard.", - "@setupGetFreeCredentials": { - "description": "Info about getting Spotify credentials" - }, "setupEnableNotifications": "Enable Notifications", "@setupEnableNotifications": { "description": "Button to enable notifications" }, - "setupProceedToNextStep": "You can now proceed to the next step.", - "@setupProceedToNextStep": { - "description": "Message after completing a step" - }, - "setupNotificationProgressDescription": "You will receive download progress notifications.", - "@setupNotificationProgressDescription": { - "description": "Info about notification usage" - }, "setupNotificationBackgroundDescription": "Get notified about download progress and completion. This helps you track downloads when the app is in background.", "@setupNotificationBackgroundDescription": { "description": "Detailed notification explanation" @@ -999,10 +631,6 @@ "@setupSkipForNow": { "description": "Skip button text" }, - "setupBack": "Back", - "@setupBack": { - "description": "Back button text" - }, "setupNext": "Next", "@setupNext": { "description": "Next button text" @@ -1011,26 +639,14 @@ "@setupGetStarted": { "description": "Final setup button" }, - "setupSkipAndStart": "Skip & Start", - "@setupSkipAndStart": { - "description": "Skip setup and start app" - }, "setupAllowAccessToManageFiles": "Please enable \"Allow access to manage all files\" in the next screen.", "@setupAllowAccessToManageFiles": { "description": "Instruction for file access permission" }, - "setupGetCredentialsFromSpotify": "Get credentials from developer.spotify.com", - "@setupGetCredentialsFromSpotify": { - "description": "Link text for Spotify developer portal" - }, "dialogCancel": "Cancel", "@dialogCancel": { "description": "Dialog button - cancel action" }, - "dialogOk": "OK", - "@dialogOk": { - "description": "Dialog button - confirm/acknowledge" - }, "dialogSave": "Save", "@dialogSave": { "description": "Dialog button - save changes" @@ -1043,26 +659,10 @@ "@dialogRetry": { "description": "Dialog button - retry action" }, - "dialogClose": "Close", - "@dialogClose": { - "description": "Dialog button - close dialog" - }, - "dialogYes": "Yes", - "@dialogYes": { - "description": "Dialog button - confirm yes" - }, - "dialogNo": "No", - "@dialogNo": { - "description": "Dialog button - confirm no" - }, "dialogClear": "Clear", "@dialogClear": { "description": "Dialog button - clear items" }, - "dialogConfirm": "Confirm", - "@dialogConfirm": { - "description": "Dialog button - confirm action" - }, "dialogDone": "Done", "@dialogDone": { "description": "Dialog button - action completed" @@ -1091,34 +691,10 @@ "@dialogUnsavedChanges": { "description": "Dialog message - unsaved changes" }, - "dialogDownloadFailed": "Download Failed", - "@dialogDownloadFailed": { - "description": "Dialog title - download error" - }, - "dialogTrackLabel": "Track:", - "@dialogTrackLabel": { - "description": "Label for track name in error dialog" - }, - "dialogArtistLabel": "Artist:", - "@dialogArtistLabel": { - "description": "Label for artist name in error dialog" - }, - "dialogErrorLabel": "Error:", - "@dialogErrorLabel": { - "description": "Label for error message" - }, "dialogClearAll": "Clear All", "@dialogClearAll": { "description": "Dialog title - clear all items" }, - "dialogClearAllDownloads": "Are you sure you want to clear all downloads?", - "@dialogClearAllDownloads": { - "description": "Dialog message - clear downloads confirmation" - }, - "dialogRemoveFromDevice": "Remove from device?", - "@dialogRemoveFromDevice": { - "description": "Dialog title - delete file confirmation" - }, "dialogRemoveExtension": "Remove Extension", "@dialogRemoveExtension": { "description": "Dialog title - uninstall extension" @@ -1257,15 +833,6 @@ "@snackbarViewQueue": { "description": "Snackbar action - view download queue" }, - "snackbarFailedToLoad": "Failed to load: {error}", - "@snackbarFailedToLoad": { - "description": "Snackbar - loading error", - "placeholders": { - "error": { - "type": "String" - } - } - }, "snackbarUrlCopied": "{platform} URL copied to clipboard", "@snackbarUrlCopied": { "description": "Snackbar - URL copied", @@ -1326,16 +893,6 @@ "@errorRateLimitedMessage": { "description": "Error message - rate limit explanation" }, - "errorFailedToLoad": "Failed to load {item}", - "@errorFailedToLoad": { - "description": "Error message - loading failed", - "placeholders": { - "item": { - "type": "String", - "description": "Item that failed to load (album/playlist/etc)" - } - } - }, "errorNoTracksFound": "No tracks found", "@errorNoTracksFound": { "description": "Error - search returned no results" @@ -1349,34 +906,6 @@ } } }, - "statusQueued": "Queued", - "@statusQueued": { - "description": "Download status - waiting in queue" - }, - "statusDownloading": "Downloading", - "@statusDownloading": { - "description": "Download status - in progress" - }, - "statusFinalizing": "Finalizing", - "@statusFinalizing": { - "description": "Download status - writing metadata" - }, - "statusCompleted": "Completed", - "@statusCompleted": { - "description": "Download status - finished" - }, - "statusFailed": "Failed", - "@statusFailed": { - "description": "Download status - error occurred" - }, - "statusSkipped": "Skipped", - "@statusSkipped": { - "description": "Download status - already exists" - }, - "statusPaused": "Paused", - "@statusPaused": { - "description": "Download status - paused" - }, "actionPause": "Pause", "@actionPause": { "description": "Action button - pause download" @@ -1389,14 +918,6 @@ "@actionCancel": { "description": "Action button - cancel operation" }, - "actionStop": "Stop", - "@actionStop": { - "description": "Action button - stop operation" - }, - "actionSelect": "Select", - "@actionSelect": { - "description": "Action button - enter selection mode" - }, "actionSelectAll": "Select All", "@actionSelectAll": { "description": "Action button - select all items" @@ -1405,14 +926,6 @@ "@actionDeselect": { "description": "Action button - deselect all" }, - "actionPaste": "Paste", - "@actionPaste": { - "description": "Action button - paste from clipboard" - }, - "actionImportCsv": "Import CSV", - "@actionImportCsv": { - "description": "Action button - import CSV file" - }, "actionRemoveCredentials": "Remove Credentials", "@actionRemoveCredentials": { "description": "Action button - delete Spotify credentials" @@ -1434,19 +947,6 @@ "@selectionAllSelected": { "description": "Status - all items selected" }, - "selectionTapToSelect": "Tap tracks to select", - "@selectionTapToSelect": { - "description": "Hint - how to select items" - }, - "selectionDeleteTracks": "Delete {count} {count, plural, =1{track} other{tracks}}", - "@selectionDeleteTracks": { - "description": "Delete button with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, "selectionSelectToDelete": "Select tracks to delete", "@selectionSelectToDelete": { "description": "Placeholder when nothing selected" @@ -1487,55 +987,10 @@ "@tooltipPlay": { "description": "Tooltip - play button" }, - "tooltipCancel": "Cancel", - "@tooltipCancel": { - "description": "Tooltip - cancel button" - }, - "tooltipStop": "Stop", - "@tooltipStop": { - "description": "Tooltip - stop button" - }, - "tooltipRetry": "Retry", - "@tooltipRetry": { - "description": "Tooltip - retry button" - }, - "tooltipRemove": "Remove", - "@tooltipRemove": { - "description": "Tooltip - remove button" - }, - "tooltipClear": "Clear", - "@tooltipClear": { - "description": "Tooltip - clear button" - }, - "tooltipPaste": "Paste", - "@tooltipPaste": { - "description": "Tooltip - paste button" - }, "filenameFormat": "Filename Format", "@filenameFormat": { "description": "Setting title - filename pattern" }, - "filenameFormatPreview": "Preview: {preview}", - "@filenameFormatPreview": { - "description": "Preview of filename pattern", - "placeholders": { - "preview": { - "type": "String" - } - } - }, - "filenameAvailablePlaceholders": "Available placeholders:", - "@filenameAvailablePlaceholders": { - "description": "Label for placeholder list" - }, - "filenameHint": "{artist} - {title}", - "@filenameHint": { - "description": "Default filename format hint" - }, - "folderOrganization": "Folder Organization", - "@folderOrganization": { - "description": "Setting title - folder structure" - }, "folderOrganizationNone": "No organization", "@folderOrganizationNone": { "description": "Folder option - flat structure" @@ -1576,27 +1031,10 @@ "@updateAvailable": { "description": "Update dialog title" }, - "updateNewVersion": "Version {version} is available", - "@updateNewVersion": { - "description": "Update available message", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "updateDownload": "Download", - "@updateDownload": { - "description": "Update button - download update" - }, "updateLater": "Later", "@updateLater": { "description": "Update button - dismiss" }, - "updateChangelog": "Changelog", - "@updateChangelog": { - "description": "Link to changelog" - }, "updateStartingDownload": "Starting download...", "@updateStartingDownload": { "description": "Update status - initializing" @@ -1637,14 +1075,6 @@ "@updateDontRemind": { "description": "Update button - skip this version" }, - "providerPriority": "Provider Priority", - "@providerPriority": { - "description": "Setting title - download provider order" - }, - "providerPrioritySubtitle": "Drag to reorder download providers", - "@providerPrioritySubtitle": { - "description": "Subtitle for provider priority" - }, "providerPriorityTitle": "Provider Priority", "@providerPriorityTitle": { "description": "Provider priority page title" @@ -1665,14 +1095,6 @@ "@providerExtension": { "description": "Label for extension-provided providers" }, - "metadataProviderPriority": "Metadata Provider Priority", - "@metadataProviderPriority": { - "description": "Setting title - metadata provider order" - }, - "metadataProviderPrioritySubtitle": "Order used when fetching track metadata", - "@metadataProviderPrioritySubtitle": { - "description": "Subtitle for metadata priority" - }, "metadataProviderPriorityTitle": "Metadata Priority", "@metadataProviderPriorityTitle": { "description": "Metadata priority page title" @@ -1697,22 +1119,6 @@ "@logTitle": { "description": "Logs screen title" }, - "logCopy": "Copy Logs", - "@logCopy": { - "description": "Action - copy logs to clipboard" - }, - "logClear": "Clear Logs", - "@logClear": { - "description": "Action - delete all logs" - }, - "logShare": "Share Logs", - "@logShare": { - "description": "Action - share logs file" - }, - "logEmpty": "No logs yet", - "@logEmpty": { - "description": "Empty state title" - }, "logCopied": "Logs copied to clipboard", "@logCopied": { "description": "Snackbar - logs copied" @@ -1745,22 +1151,6 @@ "@logClearLogsMessage": { "description": "Clear logs confirmation message" }, - "logIspBlocking": "ISP BLOCKING DETECTED", - "@logIspBlocking": { - "description": "Error category - ISP blocking" - }, - "logRateLimited": "RATE LIMITED", - "@logRateLimited": { - "description": "Error category - rate limiting" - }, - "logNetworkError": "NETWORK ERROR", - "@logNetworkError": { - "description": "Error category - network issues" - }, - "logTrackNotFound": "TRACK NOT FOUND", - "@logTrackNotFound": { - "description": "Error category - missing tracks" - }, "logFilterBySeverity": "Filter logs by severity", "@logFilterBySeverity": { "description": "Filter dialog title" @@ -1773,60 +1163,6 @@ "@logNoLogsYetSubtitle": { "description": "Empty state subtitle" }, - "logIssueSummary": "Issue Summary", - "@logIssueSummary": { - "description": "Section header for error summary" - }, - "logIspBlockingDescription": "Your ISP may be blocking access to download services", - "@logIspBlockingDescription": { - "description": "ISP blocking explanation" - }, - "logIspBlockingSuggestion": "Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8", - "@logIspBlockingSuggestion": { - "description": "ISP blocking fix suggestion" - }, - "logRateLimitedDescription": "Too many requests to the service", - "@logRateLimitedDescription": { - "description": "Rate limit explanation" - }, - "logRateLimitedSuggestion": "Wait a few minutes before trying again", - "@logRateLimitedSuggestion": { - "description": "Rate limit fix suggestion" - }, - "logNetworkErrorDescription": "Connection issues detected", - "@logNetworkErrorDescription": { - "description": "Network error explanation" - }, - "logNetworkErrorSuggestion": "Check your internet connection", - "@logNetworkErrorSuggestion": { - "description": "Network error fix suggestion" - }, - "logTrackNotFoundDescription": "Some tracks could not be found on download services", - "@logTrackNotFoundDescription": { - "description": "Track not found explanation" - }, - "logTrackNotFoundSuggestion": "The track may not be available in lossless quality", - "@logTrackNotFoundSuggestion": { - "description": "Track not found explanation" - }, - "logTotalErrors": "Total errors: {count}", - "@logTotalErrors": { - "description": "Error count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "logAffected": "Affected: {domains}", - "@logAffected": { - "description": "Affected domains display", - "placeholders": { - "domains": { - "type": "String" - } - } - }, "logEntriesFiltered": "Entries ({count} filtered)", "@logEntriesFiltered": { "description": "Log count with filter active", @@ -1969,10 +1305,6 @@ "@appearanceLanguage": { "description": "Language setting title" }, - "appearanceLanguageSubtitle": "Choose your preferred language", - "@appearanceLanguageSubtitle": { - "description": "Language setting subtitle" - }, "settingsAppearanceSubtitle": "Theme, colors, display", "@settingsAppearanceSubtitle": { "description": "Appearance settings description" @@ -2001,10 +1333,6 @@ "@pressBackAgainToExit": { "description": "Exit confirmation message" }, - "tracksHeader": "Tracks", - "@tracksHeader": { - "description": "Section header for track list" - }, "downloadAllCount": "Download All ({count})", "@downloadAllCount": { "description": "Download all button with count", @@ -2151,15 +1479,6 @@ "@trackDeleteConfirmMessage": { "description": "Delete confirmation message" }, - "trackCannotOpen": "Cannot open: {message}", - "@trackCannotOpen": { - "description": "Error opening file", - "placeholders": { - "message": { - "type": "String" - } - } - }, "dateToday": "Today", "@dateToday": { "description": "Relative date - today" @@ -2195,22 +1514,6 @@ } } }, - "concurrentSequential": "Sequential", - "@concurrentSequential": { - "description": "Download mode - one at a time" - }, - "concurrentParallel2": "2 Parallel", - "@concurrentParallel2": { - "description": "Download mode - 2 simultaneous" - }, - "concurrentParallel3": "3 Parallel", - "@concurrentParallel3": { - "description": "Download mode - 3 simultaneous" - }, - "tapToSeeError": "Tap to see error details", - "@tapToSeeError": { - "description": "Tooltip for failed download" - }, "storeFilterAll": "All", "@storeFilterAll": { "description": "Store filter - all extensions" @@ -2239,18 +1542,6 @@ "@storeClearFilters": { "description": "Button to clear all filters" }, - "storeNoResults": "No extensions found", - "@storeNoResults": { - "description": "Empty state when no extensions match filters" - }, - "extensionProviderPriority": "Provider Priority", - "@extensionProviderPriority": { - "description": "Extension capability - provider priority" - }, - "extensionInstallButton": "Install Extension", - "@extensionInstallButton": { - "description": "Button to install extension" - }, "extensionDefaultProvider": "Default (Deezer/Spotify)", "@extensionDefaultProvider": { "description": "Default search provider option" @@ -2450,46 +1741,6 @@ "@qualityHiResFlacMaxSubtitle": { "description": "Technical spec for hi-res max" }, - "qualityLossy": "Lossy", - "@qualityLossy": { - "description": "Quality option - lossy format (MP3/Opus)" - }, - "qualityLossyMp3Subtitle": "MP3 320kbps (converted from FLAC)", - "@qualityLossyMp3Subtitle": { - "description": "Technical spec for lossy MP3" - }, - "qualityLossyOpusSubtitle": "Opus 128kbps (converted from FLAC)", - "@qualityLossyOpusSubtitle": { - "description": "Technical spec for lossy Opus" - }, - "enableLossyOption": "Enable Lossy Option", - "@enableLossyOption": { - "description": "Setting - enable lossy quality option" - }, - "enableLossyOptionSubtitleOn": "Lossy quality option is available", - "@enableLossyOptionSubtitleOn": { - "description": "Subtitle when lossy is enabled" - }, - "enableLossyOptionSubtitleOff": "Downloads FLAC then converts to lossy format", - "@enableLossyOptionSubtitleOff": { - "description": "Subtitle when lossy is disabled" - }, - "lossyFormat": "Lossy Format", - "@lossyFormat": { - "description": "Setting - choose lossy format" - }, - "lossyFormatDescription": "Choose the lossy format for conversion", - "@lossyFormatDescription": { - "description": "Description for lossy format picker" - }, - "lossyFormatMp3Subtitle": "320kbps, best compatibility", - "@lossyFormatMp3Subtitle": { - "description": "MP3 format description" - }, - "lossyFormatOpusSubtitle": "128kbps, better quality at smaller size", - "@lossyFormatOpusSubtitle": { - "description": "Opus format description" - }, "qualityNote": "Actual quality depends on track availability from the service", "@qualityNote": { "description": "Note about quality availability" @@ -2518,14 +1769,6 @@ "@downloadUseAlbumArtistForFolders": { "description": "Setting - choose whether artist folders use Album Artist or Track Artist" }, - "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Artist folders use Album Artist when available", - "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { - "description": "Subtitle when Album Artist is used for folder naming" - }, - "downloadUseAlbumArtistForFoldersTrackSubtitle": "Artist folders use Track Artist only", - "@downloadUseAlbumArtistForFoldersTrackSubtitle": { - "description": "Subtitle when Track Artist is used for folder naming" - }, "downloadUsePrimaryArtistOnly": "Primary artist only for folders", "@downloadUsePrimaryArtistOnly": { "description": "Setting - strip featured artists from folder name" @@ -2538,14 +1781,6 @@ "@downloadUsePrimaryArtistOnlyDisabled": { "description": "Subtitle when primary artist only is disabled" }, - "downloadSaveFormat": "Save Format", - "@downloadSaveFormat": { - "description": "Setting - output file format" - }, - "downloadSelectService": "Select Service", - "@downloadSelectService": { - "description": "Dialog title - choose download service" - }, "downloadSelectQuality": "Select Quality", "@downloadSelectQuality": { "description": "Dialog title - choose audio quality" @@ -2554,66 +1789,6 @@ "@downloadFrom": { "description": "Label - download source" }, - "downloadDefaultQualityLabel": "Default Quality", - "@downloadDefaultQualityLabel": { - "description": "Label - default quality setting" - }, - "downloadBestAvailable": "Best available", - "@downloadBestAvailable": { - "description": "Quality option - highest available" - }, - "folderNone": "None", - "@folderNone": { - "description": "Folder option - no organization" - }, - "folderNoneSubtitle": "Save all files directly to download folder", - "@folderNoneSubtitle": { - "description": "Subtitle for no folder organization" - }, - "folderArtist": "Artist", - "@folderArtist": { - "description": "Folder option - by artist" - }, - "folderArtistSubtitle": "Artist Name/filename", - "@folderArtistSubtitle": { - "description": "Folder structure example" - }, - "folderAlbum": "Album", - "@folderAlbum": { - "description": "Folder option - by album" - }, - "folderAlbumSubtitle": "Album Name/filename", - "@folderAlbumSubtitle": { - "description": "Folder structure example" - }, - "folderArtistAlbum": "Artist/Album", - "@folderArtistAlbum": { - "description": "Folder option - nested" - }, - "folderArtistAlbumSubtitle": "Artist Name/Album Name/filename", - "@folderArtistAlbumSubtitle": { - "description": "Folder structure example" - }, - "serviceTidal": "Tidal", - "@serviceTidal": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceQobuz": "Qobuz", - "@serviceQobuz": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceAmazon": "Amazon", - "@serviceAmazon": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceDeezer": "Deezer", - "@serviceDeezer": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceSpotify": "Spotify", - "@serviceSpotify": { - "description": "Service name - DO NOT TRANSLATE" - }, "appearanceAmoledDark": "AMOLED Dark", "@appearanceAmoledDark": { "description": "Theme option - pure black" @@ -2622,18 +1797,6 @@ "@appearanceAmoledDarkSubtitle": { "description": "Subtitle for AMOLED dark" }, - "appearanceChooseAccentColor": "Choose Accent Color", - "@appearanceChooseAccentColor": { - "description": "Color picker dialog title" - }, - "appearanceChooseTheme": "Theme Mode", - "@appearanceChooseTheme": { - "description": "Theme picker dialog title" - }, - "queueTitle": "Download Queue", - "@queueTitle": { - "description": "Queue screen title" - }, "queueClearAll": "Clear All", "@queueClearAll": { "description": "Button - clear all queue items" @@ -2642,22 +1805,6 @@ "@queueClearAllMessage": { "description": "Clear queue confirmation" }, - "queueExportFailed": "Export", - "@queueExportFailed": { - "description": "Button - export failed downloads to TXT" - }, - "queueExportFailedSuccess": "Failed downloads exported to TXT file", - "@queueExportFailedSuccess": { - "description": "Success message after exporting failed downloads" - }, - "queueExportFailedClear": "Clear Failed", - "@queueExportFailedClear": { - "description": "Action to clear failed downloads after export" - }, - "queueExportFailedError": "Failed to export downloads", - "@queueExportFailedError": { - "description": "Error message when export fails" - }, "settingsAutoExportFailed": "Auto-export failed downloads", "@settingsAutoExportFailed": { "description": "Setting toggle for auto-export" @@ -2682,38 +1829,6 @@ "@settingsDownloadNetworkSubtitle": { "description": "Subtitle explaining network preference" }, - "queueEmpty": "No downloads in queue", - "@queueEmpty": { - "description": "Empty queue state title" - }, - "queueEmptySubtitle": "Add tracks from the home screen", - "@queueEmptySubtitle": { - "description": "Empty queue state subtitle" - }, - "queueClearCompleted": "Clear completed", - "@queueClearCompleted": { - "description": "Button - clear finished downloads" - }, - "queueDownloadFailed": "Download Failed", - "@queueDownloadFailed": { - "description": "Error dialog title" - }, - "queueTrackLabel": "Track:", - "@queueTrackLabel": { - "description": "Label in error dialog" - }, - "queueArtistLabel": "Artist:", - "@queueArtistLabel": { - "description": "Label in error dialog" - }, - "queueErrorLabel": "Error:", - "@queueErrorLabel": { - "description": "Label in error dialog" - }, - "queueUnknownError": "Unknown error", - "@queueUnknownError": { - "description": "Fallback error message" - }, "albumFolderArtistAlbum": "Artist / Album", "@albumFolderArtistAlbum": { "description": "Album folder option" @@ -2767,19 +1882,6 @@ } } }, - "downloadedAlbumTracksHeader": "Tracks", - "@downloadedAlbumTracksHeader": { - "description": "Section header for tracks" - }, - "downloadedAlbumDownloadedCount": "{count} downloaded", - "@downloadedAlbumDownloadedCount": { - "description": "Downloaded tracks count badge", - "placeholders": { - "count": { - "type": "int" - } - } - }, "downloadedAlbumSelectedCount": "{count} selected", "@downloadedAlbumSelectedCount": { "description": "Selection count indicator", @@ -2820,10 +1922,6 @@ } } }, - "utilityFunctions": "Utility Functions", - "@utilityFunctions": { - "description": "Extension capability - utility functions" - }, "recentTypeArtist": "Artist", "@recentTypeArtist": { "description": "Recent access item type - artist" @@ -2858,16 +1956,6 @@ } } }, - "errorGeneric": "Error: {message}", - "@errorGeneric": { - "description": "Generic error message format", - "placeholders": { - "message": { - "type": "String", - "description": "Error message" - } - } - }, "discographyDownload": "Download Discography", "@discographyDownload": { "description": "Button - download artist discography" @@ -3034,10 +2122,6 @@ "@libraryTitle": { "description": "Library settings page title" }, - "libraryStatus": "Library Status", - "@libraryStatus": { - "description": "Section header for library status" - }, "libraryScanSettings": "Scan Settings", "@libraryScanSettings": { "description": "Section header for scan settings" @@ -3114,15 +2198,6 @@ "@libraryAboutDescription": { "description": "Description of local library feature" }, - "libraryTracksCount": "{count} tracks", - "@libraryTracksCount": { - "description": "Track count in library", - "placeholders": { - "count": { - "type": "int" - } - } - }, "libraryLastScanned": "Last scanned: {time}", "@libraryLastScanned": { "description": "Last scan time display", @@ -3237,26 +2312,6 @@ "@libraryFilterFormat": { "description": "Filter section - file format" }, - "libraryFilterDate": "Date Added", - "@libraryFilterDate": { - "description": "Filter section - date range" - }, - "libraryFilterDateToday": "Today", - "@libraryFilterDateToday": { - "description": "Filter option - today only" - }, - "libraryFilterDateWeek": "This Week", - "@libraryFilterDateWeek": { - "description": "Filter option - this week" - }, - "libraryFilterDateMonth": "This Month", - "@libraryFilterDateMonth": { - "description": "Filter option - this month" - }, - "libraryFilterDateYear": "This Year", - "@libraryFilterDateYear": { - "description": "Filter option - this year" - }, "libraryFilterSort": "Sort", "@libraryFilterSort": { "description": "Filter section - sort order" @@ -3269,15 +2324,6 @@ "@libraryFilterSortOldest": { "description": "Sort option - oldest first" }, - "libraryFilterActive": "{count} filter(s) active", - "@libraryFilterActive": { - "description": "Badge showing number of active filters", - "placeholders": { - "count": { - "type": "int" - } - } - }, "timeJustNow": "Just now", "@timeJustNow": { "description": "Relative time - less than a minute ago" @@ -3300,106 +2346,6 @@ } } }, - "storageSwitchTitle": "Switch Storage Mode", - "@storageSwitchTitle": { - "description": "Dialog title when switching storage mode" - }, - "storageSwitchToSafTitle": "Switch to SAF Storage?", - "@storageSwitchToSafTitle": { - "description": "Dialog title when switching to SAF" - }, - "storageSwitchToAppTitle": "Switch to App Storage?", - "@storageSwitchToAppTitle": { - "description": "Dialog title when switching to app storage" - }, - "storageSwitchToSafMessage": "Your existing downloads will remain in the current location and stay accessible.\n\nNew downloads will be saved to your selected SAF folder.", - "@storageSwitchToSafMessage": { - "description": "Explanation when switching to SAF" - }, - "storageSwitchToAppMessage": "Your existing downloads will remain in the current SAF location and stay accessible.\n\nNew downloads will be saved to Music/SpotiFLAC folder.", - "@storageSwitchToAppMessage": { - "description": "Explanation when switching to app storage" - }, - "storageSwitchExistingDownloads": "Existing Downloads", - "@storageSwitchExistingDownloads": { - "description": "Section header for existing downloads info" - }, - "storageSwitchExistingDownloadsInfo": "{count} tracks in {mode} storage", - "@storageSwitchExistingDownloadsInfo": { - "description": "Info about existing downloads count", - "placeholders": { - "count": { - "type": "int" - }, - "mode": { - "type": "String" - } - } - }, - "storageSwitchNewDownloads": "New Downloads", - "@storageSwitchNewDownloads": { - "description": "Section header for new downloads info" - }, - "storageSwitchNewDownloadsLocation": "Will be saved to: {location}", - "@storageSwitchNewDownloadsLocation": { - "description": "Shows where new downloads will go", - "placeholders": { - "location": { - "type": "String" - } - } - }, - "storageSwitchContinue": "Continue", - "@storageSwitchContinue": { - "description": "Button to proceed with storage switch" - }, - "storageSwitchSelectFolder": "Select SAF Folder", - "@storageSwitchSelectFolder": { - "description": "Button to select SAF folder" - }, - "storageAppStorage": "App Storage", - "@storageAppStorage": { - "description": "Label for app storage mode" - }, - "storageSafStorage": "SAF Storage", - "@storageSafStorage": { - "description": "Label for SAF storage mode" - }, - "storageModeBadge": "Storage: {mode}", - "@storageModeBadge": { - "description": "Badge showing storage mode for a track", - "placeholders": { - "mode": { - "type": "String" - } - } - }, - "storageStatsTitle": "Storage Statistics", - "@storageStatsTitle": { - "description": "Section title for storage stats" - }, - "storageStatsAppCount": "{count} tracks in App Storage", - "@storageStatsAppCount": { - "description": "Count of tracks in app storage", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storageStatsSafCount": "{count} tracks in SAF Storage", - "@storageStatsSafCount": { - "description": "Count of tracks in SAF storage", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storageModeInfo": "Your files are stored in multiple locations", - "@storageModeInfo": { - "description": "Info when user has files in both storage modes" - }, "tutorialWelcomeTitle": "Welcome to SpotiFLAC!", "@tutorialWelcomeTitle": { "description": "Tutorial welcome page title" @@ -3428,18 +2374,6 @@ "@tutorialSearchDesc": { "description": "Tutorial search page description" }, - "tutorialSearchTip1": "Paste a Spotify or Deezer URL directly in the search box", - "@tutorialSearchTip1": { - "description": "Tutorial search tip 1" - }, - "tutorialSearchTip2": "Or type the song name, artist, or album to search", - "@tutorialSearchTip2": { - "description": "Tutorial search tip 2" - }, - "tutorialSearchTip3": "Supports tracks, albums, playlists, and artist pages", - "@tutorialSearchTip3": { - "description": "Tutorial search tip 3" - }, "tutorialDownloadTitle": "Downloading Music", "@tutorialDownloadTitle": { "description": "Tutorial download page title" @@ -3448,18 +2382,6 @@ "@tutorialDownloadDesc": { "description": "Tutorial download page description" }, - "tutorialDownloadTip1": "Tap the download button next to any track to start downloading", - "@tutorialDownloadTip1": { - "description": "Tutorial download tip 1" - }, - "tutorialDownloadTip2": "Choose your preferred quality (FLAC, Hi-Res, or MP3)", - "@tutorialDownloadTip2": { - "description": "Tutorial download tip 2" - }, - "tutorialDownloadTip3": "Download entire albums or playlists with one tap", - "@tutorialDownloadTip3": { - "description": "Tutorial download tip 3" - }, "tutorialLibraryTitle": "Your Library", "@tutorialLibraryTitle": { "description": "Tutorial library page title" @@ -3524,10 +2446,6 @@ "@tutorialReadyMessage": { "description": "Tutorial completion message" }, - "tutorialExample": "EXAMPLE", - "@tutorialExample": { - "description": "Example label in tutorial" - }, "libraryForceFullScan": "Force Full Scan", "@libraryForceFullScan": { "description": "Button to force a complete rescan of library" @@ -3754,10 +2672,6 @@ "@trackReEnrich": { "description": "Menu action - re-embed metadata into audio file" }, - "trackReEnrichSubtitle": "Re-embed metadata without re-downloading", - "@trackReEnrichSubtitle": { - "description": "Subtitle for re-enrich metadata action" - }, "trackReEnrichOnlineSubtitle": "Search metadata online and embed into file", "@trackReEnrichOnlineSubtitle": { "description": "Subtitle for re-enrich metadata action for local items" @@ -3869,15 +2783,21 @@ "@trackConvertFailed": { "description": "Snackbar when conversion fails" }, - "setupModeSelectionTitle": "Kies je modus", - "setupModeSelectionDescription": "Hoe wil je SpotiFLAC gebruiken? Je kunt dit later altijd wijzigen in Instellingen.", - "setupModeDownloaderTitle": "Downloader", - "setupModeDownloaderFeature1": "Download nummers in lossless FLAC-kwaliteit", - "setupModeDownloaderFeature2": "Sla muziek op je apparaat op om offline te luisteren", - "setupModeDownloaderFeature3": "Beheer je lokale muziekbibliotheek", - "setupModeStreamingTitle": "Streaming", - "setupModeStreamingFeature1": "Stream nummers direct zonder te downloaden", - "setupModeStreamingFeature2": "Smart Queue ontdekt automatisch nieuwe muziek voor je", - "setupModeStreamingFeature3": "Speel elk nummer op aanvraag af met afspeelbediening", - "setupModeChangeableLater": "Je kunt op elk moment wisselen tussen modi in Instellingen." -} \ No newline at end of file + "downloadedAlbumDownloadedCount": "{count} downloaded", + "@downloadedAlbumDownloadedCount": { + "description": "Downloaded tracks count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Artist folders use Album Artist when available", + "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { + "description": "Subtitle when Album Artist is used for folder naming" + }, + "downloadUseAlbumArtistForFoldersTrackSubtitle": "Artist folders use Track Artist only", + "@downloadUseAlbumArtistForFoldersTrackSubtitle": { + "description": "Subtitle when Track Artist is used for folder naming" + } +} diff --git a/lib/l10n/arb/app_pt.arb b/lib/l10n/arb/app_pt.arb index 9c7f026d..503247dd 100644 --- a/lib/l10n/arb/app_pt.arb +++ b/lib/l10n/arb/app_pt.arb @@ -5,18 +5,10 @@ "@appName": { "description": "App name - DO NOT TRANSLATE" }, - "appDescription": "Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.", - "@appDescription": { - "description": "App description shown in about page" - }, "navHome": "Home", "@navHome": { "description": "Bottom navigation - Home tab" }, - "navHistory": "History", - "@navHistory": { - "description": "Bottom navigation - History tab" - }, "navSettings": "Settings", "@navSettings": { "description": "Bottom navigation - Settings tab" @@ -29,20 +21,6 @@ "@homeTitle": { "description": "Home screen title" }, - "homeSearchHint": "Paste Spotify URL or search...", - "@homeSearchHint": { - "description": "Placeholder text in search box" - }, - "homeSearchHintExtension": "Search with {extensionName}...", - "@homeSearchHintExtension": { - "description": "Placeholder when extension search is active", - "placeholders": { - "extensionName": { - "type": "String", - "description": "Name of the active extension" - } - } - }, "homeSubtitle": "Paste a Spotify link or search by name", "@homeSubtitle": { "description": "Subtitle shown below search box" @@ -55,24 +33,6 @@ "@homeRecent": { "description": "Section header for recent searches" }, - "historyTitle": "History", - "@historyTitle": { - "description": "History screen title" - }, - "historyDownloading": "Downloading ({count})", - "@historyDownloading": { - "description": "Tab showing active downloads count", - "placeholders": { - "count": { - "type": "int", - "description": "Number of active downloads" - } - } - }, - "historyDownloaded": "Downloaded", - "@historyDownloaded": { - "description": "Tab showing completed downloads" - }, "historyFilterAll": "All", "@historyFilterAll": { "description": "Filter chip - show all items" @@ -85,48 +45,6 @@ "@historyFilterSingles": { "description": "Filter chip - show singles only" }, - "historyTracksCount": "{count, plural, =1{1 track} other{{count} tracks}}", - "@historyTracksCount": { - "description": "Track count with plural form", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "historyAlbumsCount": "{count, plural, =1{1 album} other{{count} albums}}", - "@historyAlbumsCount": { - "description": "Album count with plural form", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "historyNoDownloads": "No download history", - "@historyNoDownloads": { - "description": "Empty state title" - }, - "historyNoDownloadsSubtitle": "Downloaded tracks will appear here", - "@historyNoDownloadsSubtitle": { - "description": "Empty state subtitle" - }, - "historyNoAlbums": "No album downloads", - "@historyNoAlbums": { - "description": "Empty state when filtering albums" - }, - "historyNoAlbumsSubtitle": "Download multiple tracks from an album to see them here", - "@historyNoAlbumsSubtitle": { - "description": "Empty state subtitle for albums filter" - }, - "historyNoSingles": "No single downloads", - "@historyNoSingles": { - "description": "Empty state when filtering singles" - }, - "historyNoSinglesSubtitle": "Single track downloads will appear here", - "@historyNoSinglesSubtitle": { - "description": "Empty state subtitle for singles filter" - }, "settingsTitle": "Settings", "@settingsTitle": { "description": "Settings screen title" @@ -155,34 +73,6 @@ "@downloadTitle": { "description": "Download settings page title" }, - "downloadLocation": "Download Location", - "@downloadLocation": { - "description": "Setting for download folder" - }, - "downloadLocationSubtitle": "Choose where to save files", - "@downloadLocationSubtitle": { - "description": "Subtitle for download location" - }, - "downloadLocationDefault": "Default location", - "@downloadLocationDefault": { - "description": "Shown when using default folder" - }, - "downloadDefaultService": "Default Service", - "@downloadDefaultService": { - "description": "Setting for preferred download service (Tidal/Qobuz/Amazon)" - }, - "downloadDefaultServiceSubtitle": "Service used for downloads", - "@downloadDefaultServiceSubtitle": { - "description": "Subtitle for default service" - }, - "downloadDefaultQuality": "Default Quality", - "@downloadDefaultQuality": { - "description": "Setting for audio quality" - }, - "downloadAskQuality": "Ask Quality Before Download", - "@downloadAskQuality": { - "description": "Toggle to show quality picker" - }, "downloadAskQualitySubtitle": "Show quality picker for each download", "@downloadAskQualitySubtitle": { "description": "Subtitle for ask quality toggle" @@ -195,38 +85,10 @@ "@downloadFolderOrganization": { "description": "Setting for folder structure" }, - "downloadSeparateSingles": "Separate Singles", - "@downloadSeparateSingles": { - "description": "Toggle to separate single tracks" - }, - "downloadSeparateSinglesSubtitle": "Put single tracks in a separate folder", - "@downloadSeparateSinglesSubtitle": { - "description": "Subtitle for separate singles toggle" - }, - "qualityBest": "Best Available", - "@qualityBest": { - "description": "Audio quality option - highest available" - }, - "qualityFlac": "FLAC", - "@qualityFlac": { - "description": "Audio quality option - FLAC lossless" - }, - "quality320": "320 kbps", - "@quality320": { - "description": "Audio quality option - 320kbps MP3" - }, - "quality128": "128 kbps", - "@quality128": { - "description": "Audio quality option - 128kbps MP3" - }, "appearanceTitle": "Appearance", "@appearanceTitle": { "description": "Appearance settings page title" }, - "appearanceTheme": "Theme", - "@appearanceTheme": { - "description": "Theme mode setting" - }, "appearanceThemeSystem": "System", "@appearanceThemeSystem": { "description": "Follow system theme" @@ -247,10 +109,6 @@ "@appearanceDynamicColorSubtitle": { "description": "Subtitle for dynamic color" }, - "appearanceAccentColor": "Accent Color", - "@appearanceAccentColor": { - "description": "Custom accent color picker" - }, "appearanceHistoryView": "History View", "@appearanceHistoryView": { "description": "Layout style for history" @@ -267,10 +125,6 @@ "@optionsTitle": { "description": "Options settings page title" }, - "optionsSearchSource": "Search Source", - "@optionsSearchSource": { - "description": "Section for search provider settings" - }, "optionsPrimaryProvider": "Primary Provider", "@optionsPrimaryProvider": { "description": "Main search provider setting" @@ -426,22 +280,6 @@ "@extensionsTitle": { "description": "Extensions page title" }, - "extensionsInstalled": "Installed Extensions", - "@extensionsInstalled": { - "description": "Section header for installed extensions" - }, - "extensionsNone": "No extensions installed", - "@extensionsNone": { - "description": "Empty state title" - }, - "extensionsNoneSubtitle": "Install extensions from the Store tab", - "@extensionsNoneSubtitle": { - "description": "Empty state subtitle" - }, - "extensionsEnabled": "Enabled", - "@extensionsEnabled": { - "description": "Extension status - active" - }, "extensionsDisabled": "Disabled", "@extensionsDisabled": { "description": "Extension status - inactive" @@ -468,10 +306,6 @@ "@extensionsUninstall": { "description": "Uninstall extension button" }, - "extensionsSetAsSearch": "Set as Search Provider", - "@extensionsSetAsSearch": { - "description": "Use extension for search" - }, "storeTitle": "Extension Store", "@storeTitle": { "description": "Store screen title" @@ -544,10 +378,6 @@ "@aboutFeatureRequestSubtitle": { "description": "Subtitle for feature request" }, - "aboutSupport": "Support", - "@aboutSupport": { - "description": "Section for support/donation links" - }, "aboutApp": "App", "@aboutApp": { "description": "Section for app info" @@ -564,14 +394,6 @@ "@aboutSachinsenalDesc": { "description": "Credit description for sachinsenal0x64" }, - "aboutDoubleDouble": "DoubleDouble", - "@aboutDoubleDouble": { - "description": "Name of Amazon API service - DO NOT TRANSLATE" - }, - "aboutDoubleDoubleDesc": "Amazing API for Amazon Music downloads. Thank you for making it free!", - "@aboutDoubleDoubleDesc": { - "description": "Credit for DoubleDouble API" - }, "aboutDabMusic": "DAB Music", "@aboutDabMusic": { "description": "Name of Qobuz API service - DO NOT TRANSLATE" @@ -584,35 +406,6 @@ "@aboutAppDescription": { "description": "App description in header card" }, - "albumTitle": "Album", - "@albumTitle": { - "description": "Album screen title" - }, - "albumTracks": "{count, plural, =1{1 track} other{{count} tracks}}", - "@albumTracks": { - "description": "Album track count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "albumDownloadAll": "Download All", - "@albumDownloadAll": { - "description": "Button to download all tracks" - }, - "albumDownloadRemaining": "Download Remaining", - "@albumDownloadRemaining": { - "description": "Button to download remaining tracks" - }, - "playlistTitle": "Playlist", - "@playlistTitle": { - "description": "Playlist screen title" - }, - "artistTitle": "Artist", - "@artistTitle": { - "description": "Artist screen title" - }, "artistAlbums": "Albums", "@artistAlbums": { "description": "Section header for artist albums" @@ -625,43 +418,6 @@ "@artistCompilations": { "description": "Section header for compilations" }, - "artistReleases": "{count, plural, =1{1 release} other{{count} releases}}", - "@artistReleases": { - "description": "Artist release count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "trackMetadataTitle": "Track Info", - "@trackMetadataTitle": { - "description": "Track metadata screen title" - }, - "trackMetadataArtist": "Artist", - "@trackMetadataArtist": { - "description": "Metadata field - artist name" - }, - "trackMetadataAlbum": "Album", - "@trackMetadataAlbum": { - "description": "Metadata field - album name" - }, - "trackMetadataDuration": "Duration", - "@trackMetadataDuration": { - "description": "Metadata field - track length" - }, - "trackMetadataQuality": "Quality", - "@trackMetadataQuality": { - "description": "Metadata field - audio quality" - }, - "trackMetadataPath": "File Path", - "@trackMetadataPath": { - "description": "Metadata field - file location" - }, - "trackMetadataDownloadedAt": "Downloaded", - "@trackMetadataDownloadedAt": { - "description": "Metadata field - download date" - }, "trackMetadataService": "Service", "@trackMetadataService": { "description": "Metadata field - download service used" @@ -678,54 +434,10 @@ "@trackMetadataDelete": { "description": "Action button - delete track" }, - "trackMetadataRedownload": "Re-download", - "@trackMetadataRedownload": { - "description": "Action button - download again" - }, - "trackMetadataOpenFolder": "Open Folder", - "@trackMetadataOpenFolder": { - "description": "Action button - open containing folder" - }, - "setupTitle": "Welcome to SpotiFLAC", - "@setupTitle": { - "description": "Setup wizard title" - }, - "setupSubtitle": "Let's get you started", - "@setupSubtitle": { - "description": "Setup wizard subtitle" - }, - "setupStoragePermission": "Storage Permission", - "@setupStoragePermission": { - "description": "Storage permission step title" - }, - "setupStoragePermissionSubtitle": "Required to save downloaded files", - "@setupStoragePermissionSubtitle": { - "description": "Explanation for storage permission" - }, - "setupStoragePermissionGranted": "Permission granted", - "@setupStoragePermissionGranted": { - "description": "Status when permission granted" - }, - "setupStoragePermissionDenied": "Permission denied", - "@setupStoragePermissionDenied": { - "description": "Status when permission denied" - }, "setupGrantPermission": "Grant Permission", "@setupGrantPermission": { "description": "Button to request permission" }, - "setupDownloadLocation": "Download Location", - "@setupDownloadLocation": { - "description": "Download folder step title" - }, - "setupChooseFolder": "Choose Folder", - "@setupChooseFolder": { - "description": "Button to pick folder" - }, - "setupContinue": "Continue", - "@setupContinue": { - "description": "Continue to next step button" - }, "setupSkip": "Skip for now", "@setupSkip": { "description": "Skip current step button" @@ -734,10 +446,6 @@ "@setupStorageAccessRequired": { "description": "Title when storage access needed" }, - "setupStorageAccessMessage": "SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.", - "@setupStorageAccessMessage": { - "description": "Explanation for storage access" - }, "setupStorageAccessMessageAndroid11": "Android 11+ requires \"All files access\" permission to save files to your chosen download folder.", "@setupStorageAccessMessageAndroid11": { "description": "Android 11+ specific explanation" @@ -769,10 +477,6 @@ } } }, - "setupSelectDownloadFolder": "Select Download Folder", - "@setupSelectDownloadFolder": { - "description": "Folder selection step title" - }, "setupUseDefaultFolder": "Use Default Folder?", "@setupUseDefaultFolder": { "description": "Dialog title for default folder" @@ -817,26 +521,6 @@ "@setupDownloadInFlac": { "description": "App tagline in setup" }, - "setupStepStorage": "Storage", - "@setupStepStorage": { - "description": "Setup step indicator - storage" - }, - "setupStepNotification": "Notification", - "@setupStepNotification": { - "description": "Setup step indicator - notification" - }, - "setupStepFolder": "Folder", - "@setupStepFolder": { - "description": "Setup step indicator - folder" - }, - "setupStepSpotify": "Spotify", - "@setupStepSpotify": { - "description": "Setup step indicator - Spotify API" - }, - "setupStepPermission": "Permission", - "@setupStepPermission": { - "description": "Setup step indicator - permission" - }, "setupStorageGranted": "Storage Permission Granted!", "@setupStorageGranted": { "description": "Success message for storage permission" @@ -857,14 +541,6 @@ "@setupNotificationEnable": { "description": "Button to enable notifications" }, - "setupNotificationDescription": "Get notified when downloads complete or require attention.", - "@setupNotificationDescription": { - "description": "Explanation for notifications" - }, - "setupFolderSelected": "Download Folder Selected!", - "@setupFolderSelected": { - "description": "Success message for folder selection" - }, "setupFolderChoose": "Choose Download Folder", "@setupFolderChoose": { "description": "Button to choose folder" @@ -873,58 +549,14 @@ "@setupFolderDescription": { "description": "Explanation for folder selection" }, - "setupChangeFolder": "Change Folder", - "@setupChangeFolder": { - "description": "Button to change selected folder" - }, "setupSelectFolder": "Select Folder", "@setupSelectFolder": { "description": "Button to select folder" }, - "setupSpotifyApiOptional": "Spotify API (Optional)", - "@setupSpotifyApiOptional": { - "description": "Spotify API step title" - }, - "setupSpotifyApiDescription": "Add your Spotify API credentials for better search results and access to Spotify-exclusive content.", - "@setupSpotifyApiDescription": { - "description": "Explanation for Spotify API" - }, - "setupUseSpotifyApi": "Use Spotify API", - "@setupUseSpotifyApi": { - "description": "Toggle to enable Spotify API" - }, - "setupEnterCredentialsBelow": "Enter your credentials below", - "@setupEnterCredentialsBelow": { - "description": "Prompt to enter credentials" - }, - "setupUsingDeezer": "Using Deezer (no account needed)", - "@setupUsingDeezer": { - "description": "Status when using Deezer" - }, - "setupEnterClientId": "Enter Spotify Client ID", - "@setupEnterClientId": { - "description": "Placeholder for client ID field" - }, - "setupEnterClientSecret": "Enter Spotify Client Secret", - "@setupEnterClientSecret": { - "description": "Placeholder for client secret field" - }, - "setupGetFreeCredentials": "Get your free API credentials from the Spotify Developer Dashboard.", - "@setupGetFreeCredentials": { - "description": "Info about getting Spotify credentials" - }, "setupEnableNotifications": "Enable Notifications", "@setupEnableNotifications": { "description": "Button to enable notifications" }, - "setupProceedToNextStep": "You can now proceed to the next step.", - "@setupProceedToNextStep": { - "description": "Message after completing a step" - }, - "setupNotificationProgressDescription": "You will receive download progress notifications.", - "@setupNotificationProgressDescription": { - "description": "Info about notification usage" - }, "setupNotificationBackgroundDescription": "Get notified about download progress and completion. This helps you track downloads when the app is in background.", "@setupNotificationBackgroundDescription": { "description": "Detailed notification explanation" @@ -933,10 +565,6 @@ "@setupSkipForNow": { "description": "Skip button text" }, - "setupBack": "Back", - "@setupBack": { - "description": "Back button text" - }, "setupNext": "Next", "@setupNext": { "description": "Next button text" @@ -945,26 +573,14 @@ "@setupGetStarted": { "description": "Final setup button" }, - "setupSkipAndStart": "Skip & Start", - "@setupSkipAndStart": { - "description": "Skip setup and start app" - }, "setupAllowAccessToManageFiles": "Please enable \"Allow access to manage all files\" in the next screen.", "@setupAllowAccessToManageFiles": { "description": "Instruction for file access permission" }, - "setupGetCredentialsFromSpotify": "Get credentials from developer.spotify.com", - "@setupGetCredentialsFromSpotify": { - "description": "Link text for Spotify developer portal" - }, "dialogCancel": "Cancel", "@dialogCancel": { "description": "Dialog button - cancel action" }, - "dialogOk": "OK", - "@dialogOk": { - "description": "Dialog button - confirm/acknowledge" - }, "dialogSave": "Save", "@dialogSave": { "description": "Dialog button - save changes" @@ -977,26 +593,10 @@ "@dialogRetry": { "description": "Dialog button - retry action" }, - "dialogClose": "Close", - "@dialogClose": { - "description": "Dialog button - close dialog" - }, - "dialogYes": "Yes", - "@dialogYes": { - "description": "Dialog button - confirm yes" - }, - "dialogNo": "No", - "@dialogNo": { - "description": "Dialog button - confirm no" - }, "dialogClear": "Clear", "@dialogClear": { "description": "Dialog button - clear items" }, - "dialogConfirm": "Confirm", - "@dialogConfirm": { - "description": "Dialog button - confirm action" - }, "dialogDone": "Done", "@dialogDone": { "description": "Dialog button - action completed" @@ -1025,34 +625,10 @@ "@dialogUnsavedChanges": { "description": "Dialog message - unsaved changes" }, - "dialogDownloadFailed": "Download Failed", - "@dialogDownloadFailed": { - "description": "Dialog title - download error" - }, - "dialogTrackLabel": "Track:", - "@dialogTrackLabel": { - "description": "Label for track name in error dialog" - }, - "dialogArtistLabel": "Artist:", - "@dialogArtistLabel": { - "description": "Label for artist name in error dialog" - }, - "dialogErrorLabel": "Error:", - "@dialogErrorLabel": { - "description": "Label for error message" - }, "dialogClearAll": "Clear All", "@dialogClearAll": { "description": "Dialog title - clear all items" }, - "dialogClearAllDownloads": "Are you sure you want to clear all downloads?", - "@dialogClearAllDownloads": { - "description": "Dialog message - clear downloads confirmation" - }, - "dialogRemoveFromDevice": "Remove from device?", - "@dialogRemoveFromDevice": { - "description": "Dialog title - delete file confirmation" - }, "dialogRemoveExtension": "Remove Extension", "@dialogRemoveExtension": { "description": "Dialog title - uninstall extension" @@ -1173,15 +749,6 @@ "@snackbarViewQueue": { "description": "Snackbar action - view download queue" }, - "snackbarFailedToLoad": "Failed to load: {error}", - "@snackbarFailedToLoad": { - "description": "Snackbar - loading error", - "placeholders": { - "error": { - "type": "String" - } - } - }, "snackbarUrlCopied": "{platform} URL copied to clipboard", "@snackbarUrlCopied": { "description": "Snackbar - URL copied", @@ -1242,16 +809,6 @@ "@errorRateLimitedMessage": { "description": "Error message - rate limit explanation" }, - "errorFailedToLoad": "Failed to load {item}", - "@errorFailedToLoad": { - "description": "Error message - loading failed", - "placeholders": { - "item": { - "type": "String", - "description": "Item that failed to load (album/playlist/etc)" - } - } - }, "errorNoTracksFound": "No tracks found", "@errorNoTracksFound": { "description": "Error - search returned no results" @@ -1265,34 +822,6 @@ } } }, - "statusQueued": "Queued", - "@statusQueued": { - "description": "Download status - waiting in queue" - }, - "statusDownloading": "Downloading", - "@statusDownloading": { - "description": "Download status - in progress" - }, - "statusFinalizing": "Finalizing", - "@statusFinalizing": { - "description": "Download status - writing metadata" - }, - "statusCompleted": "Completed", - "@statusCompleted": { - "description": "Download status - finished" - }, - "statusFailed": "Failed", - "@statusFailed": { - "description": "Download status - error occurred" - }, - "statusSkipped": "Skipped", - "@statusSkipped": { - "description": "Download status - already exists" - }, - "statusPaused": "Paused", - "@statusPaused": { - "description": "Download status - paused" - }, "actionPause": "Pause", "@actionPause": { "description": "Action button - pause download" @@ -1305,14 +834,6 @@ "@actionCancel": { "description": "Action button - cancel operation" }, - "actionStop": "Stop", - "@actionStop": { - "description": "Action button - stop operation" - }, - "actionSelect": "Select", - "@actionSelect": { - "description": "Action button - enter selection mode" - }, "actionSelectAll": "Select All", "@actionSelectAll": { "description": "Action button - select all items" @@ -1321,14 +842,6 @@ "@actionDeselect": { "description": "Action button - deselect all" }, - "actionPaste": "Paste", - "@actionPaste": { - "description": "Action button - paste from clipboard" - }, - "actionImportCsv": "Import CSV", - "@actionImportCsv": { - "description": "Action button - import CSV file" - }, "actionRemoveCredentials": "Remove Credentials", "@actionRemoveCredentials": { "description": "Action button - delete Spotify credentials" @@ -1350,19 +863,6 @@ "@selectionAllSelected": { "description": "Status - all items selected" }, - "selectionTapToSelect": "Tap tracks to select", - "@selectionTapToSelect": { - "description": "Hint - how to select items" - }, - "selectionDeleteTracks": "Delete {count} {count, plural, =1{track} other{tracks}}", - "@selectionDeleteTracks": { - "description": "Delete button with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, "selectionSelectToDelete": "Select tracks to delete", "@selectionSelectToDelete": { "description": "Placeholder when nothing selected" @@ -1403,55 +903,10 @@ "@tooltipPlay": { "description": "Tooltip - play button" }, - "tooltipCancel": "Cancel", - "@tooltipCancel": { - "description": "Tooltip - cancel button" - }, - "tooltipStop": "Stop", - "@tooltipStop": { - "description": "Tooltip - stop button" - }, - "tooltipRetry": "Retry", - "@tooltipRetry": { - "description": "Tooltip - retry button" - }, - "tooltipRemove": "Remove", - "@tooltipRemove": { - "description": "Tooltip - remove button" - }, - "tooltipClear": "Clear", - "@tooltipClear": { - "description": "Tooltip - clear button" - }, - "tooltipPaste": "Paste", - "@tooltipPaste": { - "description": "Tooltip - paste button" - }, "filenameFormat": "Filename Format", "@filenameFormat": { "description": "Setting title - filename pattern" }, - "filenameFormatPreview": "Preview: {preview}", - "@filenameFormatPreview": { - "description": "Preview of filename pattern", - "placeholders": { - "preview": { - "type": "String" - } - } - }, - "filenameAvailablePlaceholders": "Available placeholders:", - "@filenameAvailablePlaceholders": { - "description": "Label for placeholder list" - }, - "filenameHint": "{artist} - {title}", - "@filenameHint": { - "description": "Default filename format hint" - }, - "folderOrganization": "Folder Organization", - "@folderOrganization": { - "description": "Setting title - folder structure" - }, "folderOrganizationNone": "No organization", "@folderOrganizationNone": { "description": "Folder option - flat structure" @@ -1492,27 +947,10 @@ "@updateAvailable": { "description": "Update dialog title" }, - "updateNewVersion": "Version {version} is available", - "@updateNewVersion": { - "description": "Update available message", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "updateDownload": "Download", - "@updateDownload": { - "description": "Update button - download update" - }, "updateLater": "Later", "@updateLater": { "description": "Update button - dismiss" }, - "updateChangelog": "Changelog", - "@updateChangelog": { - "description": "Link to changelog" - }, "updateStartingDownload": "Starting download...", "@updateStartingDownload": { "description": "Update status - initializing" @@ -1553,14 +991,6 @@ "@updateDontRemind": { "description": "Update button - skip this version" }, - "providerPriority": "Provider Priority", - "@providerPriority": { - "description": "Setting title - download provider order" - }, - "providerPrioritySubtitle": "Drag to reorder download providers", - "@providerPrioritySubtitle": { - "description": "Subtitle for provider priority" - }, "providerPriorityTitle": "Provider Priority", "@providerPriorityTitle": { "description": "Provider priority page title" @@ -1581,14 +1011,6 @@ "@providerExtension": { "description": "Label for extension-provided providers" }, - "metadataProviderPriority": "Metadata Provider Priority", - "@metadataProviderPriority": { - "description": "Setting title - metadata provider order" - }, - "metadataProviderPrioritySubtitle": "Order used when fetching track metadata", - "@metadataProviderPrioritySubtitle": { - "description": "Subtitle for metadata priority" - }, "metadataProviderPriorityTitle": "Metadata Priority", "@metadataProviderPriorityTitle": { "description": "Metadata priority page title" @@ -1613,22 +1035,6 @@ "@logTitle": { "description": "Logs screen title" }, - "logCopy": "Copy Logs", - "@logCopy": { - "description": "Action - copy logs to clipboard" - }, - "logClear": "Clear Logs", - "@logClear": { - "description": "Action - delete all logs" - }, - "logShare": "Share Logs", - "@logShare": { - "description": "Action - share logs file" - }, - "logEmpty": "No logs yet", - "@logEmpty": { - "description": "Empty state title" - }, "logCopied": "Logs copied to clipboard", "@logCopied": { "description": "Snackbar - logs copied" @@ -1661,22 +1067,6 @@ "@logClearLogsMessage": { "description": "Clear logs confirmation message" }, - "logIspBlocking": "ISP BLOCKING DETECTED", - "@logIspBlocking": { - "description": "Error category - ISP blocking" - }, - "logRateLimited": "RATE LIMITED", - "@logRateLimited": { - "description": "Error category - rate limiting" - }, - "logNetworkError": "NETWORK ERROR", - "@logNetworkError": { - "description": "Error category - network issues" - }, - "logTrackNotFound": "TRACK NOT FOUND", - "@logTrackNotFound": { - "description": "Error category - missing tracks" - }, "logFilterBySeverity": "Filter logs by severity", "@logFilterBySeverity": { "description": "Filter dialog title" @@ -1689,60 +1079,6 @@ "@logNoLogsYetSubtitle": { "description": "Empty state subtitle" }, - "logIssueSummary": "Issue Summary", - "@logIssueSummary": { - "description": "Section header for error summary" - }, - "logIspBlockingDescription": "Your ISP may be blocking access to download services", - "@logIspBlockingDescription": { - "description": "ISP blocking explanation" - }, - "logIspBlockingSuggestion": "Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8", - "@logIspBlockingSuggestion": { - "description": "ISP blocking fix suggestion" - }, - "logRateLimitedDescription": "Too many requests to the service", - "@logRateLimitedDescription": { - "description": "Rate limit explanation" - }, - "logRateLimitedSuggestion": "Wait a few minutes before trying again", - "@logRateLimitedSuggestion": { - "description": "Rate limit fix suggestion" - }, - "logNetworkErrorDescription": "Connection issues detected", - "@logNetworkErrorDescription": { - "description": "Network error explanation" - }, - "logNetworkErrorSuggestion": "Check your internet connection", - "@logNetworkErrorSuggestion": { - "description": "Network error fix suggestion" - }, - "logTrackNotFoundDescription": "Some tracks could not be found on download services", - "@logTrackNotFoundDescription": { - "description": "Track not found explanation" - }, - "logTrackNotFoundSuggestion": "The track may not be available in lossless quality", - "@logTrackNotFoundSuggestion": { - "description": "Track not found explanation" - }, - "logTotalErrors": "Total errors: {count}", - "@logTotalErrors": { - "description": "Error count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "logAffected": "Affected: {domains}", - "@logAffected": { - "description": "Affected domains display", - "placeholders": { - "domains": { - "type": "String" - } - } - }, "logEntriesFiltered": "Entries ({count} filtered)", "@logEntriesFiltered": { "description": "Log count with filter active", @@ -1849,22 +1185,6 @@ "@appearanceLanguage": { "description": "Setting title for language selection" }, - "appearanceLanguageSubtitle": "Choose your preferred language", - "@appearanceLanguageSubtitle": { - "description": "Subtitle for language setting" - }, - "languageSystem": "System Default", - "@languageSystem": { - "description": "Use device system language" - }, - "languageEnglish": "English", - "@languageEnglish": { - "description": "English language option" - }, - "languageIndonesian": "Bahasa Indonesia", - "@languageIndonesian": { - "description": "Indonesian language option" - }, "settingsAppearanceSubtitle": "Theme, colors, display", "@settingsAppearanceSubtitle": { "description": "Appearance settings description" @@ -1893,10 +1213,6 @@ "@pressBackAgainToExit": { "description": "Exit confirmation message" }, - "tracksHeader": "Tracks", - "@tracksHeader": { - "description": "Section header for track list" - }, "downloadAllCount": "Download All ({count})", "@downloadAllCount": { "description": "Download all button with count", @@ -2019,15 +1335,6 @@ "@trackDeleteConfirmMessage": { "description": "Delete confirmation message" }, - "trackCannotOpen": "Cannot open: {message}", - "@trackCannotOpen": { - "description": "Error opening file", - "placeholders": { - "message": { - "type": "String" - } - } - }, "dateToday": "Today", "@dateToday": { "description": "Relative date - today" @@ -2063,22 +1370,6 @@ } } }, - "concurrentSequential": "Sequential", - "@concurrentSequential": { - "description": "Download mode - one at a time" - }, - "concurrentParallel2": "2 Parallel", - "@concurrentParallel2": { - "description": "Download mode - 2 simultaneous" - }, - "concurrentParallel3": "3 Parallel", - "@concurrentParallel3": { - "description": "Download mode - 3 simultaneous" - }, - "tapToSeeError": "Tap to see error details", - "@tapToSeeError": { - "description": "Tooltip for failed download" - }, "storeFilterAll": "All", "@storeFilterAll": { "description": "Store filter - all extensions" @@ -2107,18 +1398,6 @@ "@storeClearFilters": { "description": "Button to clear all filters" }, - "storeNoResults": "No extensions found", - "@storeNoResults": { - "description": "Empty state when no extensions match filters" - }, - "extensionProviderPriority": "Provider Priority", - "@extensionProviderPriority": { - "description": "Extension capability - provider priority" - }, - "extensionInstallButton": "Install Extension", - "@extensionInstallButton": { - "description": "Button to install extension" - }, "extensionDefaultProvider": "Default (Deezer/Spotify)", "@extensionDefaultProvider": { "description": "Default search provider option" @@ -2338,14 +1617,6 @@ "@downloadAlbumFolderStructure": { "description": "Setting - album folder organization" }, - "downloadSaveFormat": "Save Format", - "@downloadSaveFormat": { - "description": "Setting - output file format" - }, - "downloadSelectService": "Select Service", - "@downloadSelectService": { - "description": "Dialog title - choose download service" - }, "downloadSelectQuality": "Select Quality", "@downloadSelectQuality": { "description": "Dialog title - choose audio quality" @@ -2354,66 +1625,6 @@ "@downloadFrom": { "description": "Label - download source" }, - "downloadDefaultQualityLabel": "Default Quality", - "@downloadDefaultQualityLabel": { - "description": "Label - default quality setting" - }, - "downloadBestAvailable": "Best available", - "@downloadBestAvailable": { - "description": "Quality option - highest available" - }, - "folderNone": "None", - "@folderNone": { - "description": "Folder option - no organization" - }, - "folderNoneSubtitle": "Save all files directly to download folder", - "@folderNoneSubtitle": { - "description": "Subtitle for no folder organization" - }, - "folderArtist": "Artist", - "@folderArtist": { - "description": "Folder option - by artist" - }, - "folderArtistSubtitle": "Artist Name/filename", - "@folderArtistSubtitle": { - "description": "Folder structure example" - }, - "folderAlbum": "Album", - "@folderAlbum": { - "description": "Folder option - by album" - }, - "folderAlbumSubtitle": "Album Name/filename", - "@folderAlbumSubtitle": { - "description": "Folder structure example" - }, - "folderArtistAlbum": "Artist/Album", - "@folderArtistAlbum": { - "description": "Folder option - nested" - }, - "folderArtistAlbumSubtitle": "Artist Name/Album Name/filename", - "@folderArtistAlbumSubtitle": { - "description": "Folder structure example" - }, - "serviceTidal": "Tidal", - "@serviceTidal": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceQobuz": "Qobuz", - "@serviceQobuz": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceAmazon": "Amazon", - "@serviceAmazon": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceDeezer": "Deezer", - "@serviceDeezer": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceSpotify": "Spotify", - "@serviceSpotify": { - "description": "Service name - DO NOT TRANSLATE" - }, "appearanceAmoledDark": "AMOLED Dark", "@appearanceAmoledDark": { "description": "Theme option - pure black" @@ -2422,18 +1633,6 @@ "@appearanceAmoledDarkSubtitle": { "description": "Subtitle for AMOLED dark" }, - "appearanceChooseAccentColor": "Choose Accent Color", - "@appearanceChooseAccentColor": { - "description": "Color picker dialog title" - }, - "appearanceChooseTheme": "Theme Mode", - "@appearanceChooseTheme": { - "description": "Theme picker dialog title" - }, - "queueTitle": "Download Queue", - "@queueTitle": { - "description": "Queue screen title" - }, "queueClearAll": "Clear All", "@queueClearAll": { "description": "Button - clear all queue items" @@ -2442,38 +1641,6 @@ "@queueClearAllMessage": { "description": "Clear queue confirmation" }, - "queueEmpty": "No downloads in queue", - "@queueEmpty": { - "description": "Empty queue state title" - }, - "queueEmptySubtitle": "Add tracks from the home screen", - "@queueEmptySubtitle": { - "description": "Empty queue state subtitle" - }, - "queueClearCompleted": "Clear completed", - "@queueClearCompleted": { - "description": "Button - clear finished downloads" - }, - "queueDownloadFailed": "Download Failed", - "@queueDownloadFailed": { - "description": "Error dialog title" - }, - "queueTrackLabel": "Track:", - "@queueTrackLabel": { - "description": "Label in error dialog" - }, - "queueArtistLabel": "Artist:", - "@queueArtistLabel": { - "description": "Label in error dialog" - }, - "queueErrorLabel": "Error:", - "@queueErrorLabel": { - "description": "Label in error dialog" - }, - "queueUnknownError": "Unknown error", - "@queueUnknownError": { - "description": "Fallback error message" - }, "albumFolderArtistAlbum": "Artist / Album", "@albumFolderArtistAlbum": { "description": "Album folder option" @@ -2519,19 +1686,6 @@ } } }, - "downloadedAlbumTracksHeader": "Tracks", - "@downloadedAlbumTracksHeader": { - "description": "Section header for tracks" - }, - "downloadedAlbumDownloadedCount": "{count} downloaded", - "@downloadedAlbumDownloadedCount": { - "description": "Downloaded tracks count badge", - "placeholders": { - "count": { - "type": "int" - } - } - }, "downloadedAlbumSelectedCount": "{count} selected", "@downloadedAlbumSelectedCount": { "description": "Selection count indicator", @@ -2562,19 +1716,13 @@ "@downloadedAlbumSelectToDelete": { "description": "Placeholder when nothing selected" }, - "utilityFunctions": "Utility Functions", - "@utilityFunctions": { - "description": "Extension capability - utility functions" - }, - "setupModeSelectionTitle": "Escolha seu modo", - "setupModeSelectionDescription": "Como você gostaria de usar o SpotiFLAC? Você pode alterar isso depois nas Configurações.", - "setupModeDownloaderTitle": "Downloader", - "setupModeDownloaderFeature1": "Baixe faixas em qualidade FLAC lossless", - "setupModeDownloaderFeature2": "Salve músicas no seu dispositivo para ouvir offline", - "setupModeDownloaderFeature3": "Gerencie sua biblioteca de músicas local", - "setupModeStreamingTitle": "Streaming", - "setupModeStreamingFeature1": "Transmita faixas instantaneamente sem baixar", - "setupModeStreamingFeature2": "Smart Queue descobre automaticamente novas músicas para você", - "setupModeStreamingFeature3": "Reproduza qualquer faixa sob demanda com controles de reprodução", - "setupModeChangeableLater": "Você pode alternar entre os modos a qualquer momento nas Configurações." -} \ No newline at end of file + "downloadedAlbumDownloadedCount": "{count} downloaded", + "@downloadedAlbumDownloadedCount": { + "description": "Downloaded tracks count badge", + "placeholders": { + "count": { + "type": "int" + } + } + } +} diff --git a/lib/l10n/arb/app_pt_PT.arb b/lib/l10n/arb/app_pt_PT.arb index 57592cd5..8d844396 100644 --- a/lib/l10n/arb/app_pt_PT.arb +++ b/lib/l10n/arb/app_pt_PT.arb @@ -5,10 +5,6 @@ "@appName": { "description": "App name - DO NOT TRANSLATE" }, - "appDescription": "Baixe faixas do Spotify em qualidade sem perdas de Tidal, Qobuz e Amazon Music.", - "@appDescription": { - "description": "App description shown in about page" - }, "navHome": "Início", "@navHome": { "description": "Bottom navigation - Home tab" @@ -17,10 +13,6 @@ "@navLibrary": { "description": "Bottom navigation - Library tab" }, - "navHistory": "Histórico", - "@navHistory": { - "description": "Bottom navigation - History tab (legacy)" - }, "navSettings": "Configurações", "@navSettings": { "description": "Bottom navigation - Settings tab" @@ -33,20 +25,6 @@ "@homeTitle": { "description": "Home screen title" }, - "homeSearchHint": "Pesquise ou cole a URL do Spotify...", - "@homeSearchHint": { - "description": "Placeholder text in search box" - }, - "homeSearchHintExtension": "Pesquisar com {extensionName}...", - "@homeSearchHintExtension": { - "description": "Placeholder when extension search is active", - "placeholders": { - "extensionName": { - "type": "String", - "description": "Name of the active extension" - } - } - }, "homeSubtitle": "Cole um link do Spotify ou procure por nome", "@homeSubtitle": { "description": "Subtitle shown below search box" @@ -59,24 +37,6 @@ "@homeRecent": { "description": "Section header for recent searches" }, - "historyTitle": "Histórico", - "@historyTitle": { - "description": "History screen title" - }, - "historyDownloading": "Baixando ({count})", - "@historyDownloading": { - "description": "Tab showing active downloads count", - "placeholders": { - "count": { - "type": "int", - "description": "Number of active downloads" - } - } - }, - "historyDownloaded": "Baixados", - "@historyDownloaded": { - "description": "Tab showing completed downloads" - }, "historyFilterAll": "Tudo", "@historyFilterAll": { "description": "Filter chip - show all items" @@ -89,48 +49,6 @@ "@historyFilterSingles": { "description": "Filter chip - show singles only" }, - "historyTracksCount": "{count, plural, one {1 faixa} other{{count} faixas}}", - "@historyTracksCount": { - "description": "Track count with plural form", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "historyAlbumsCount": "{count, plural, one {1 álbum} other{{count} álbuns}}", - "@historyAlbumsCount": { - "description": "Album count with plural form", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "historyNoDownloads": "Nenhum histórico de downloads", - "@historyNoDownloads": { - "description": "Empty state title" - }, - "historyNoDownloadsSubtitle": "As faixas baixadas aparecerão aqui", - "@historyNoDownloadsSubtitle": { - "description": "Empty state subtitle" - }, - "historyNoAlbums": "Sem álbuns baixados", - "@historyNoAlbums": { - "description": "Empty state when filtering albums" - }, - "historyNoAlbumsSubtitle": "Baixe várias faixas de um álbum para vê-las aqui", - "@historyNoAlbumsSubtitle": { - "description": "Empty state subtitle for albums filter" - }, - "historyNoSingles": "Sem singles baixados", - "@historyNoSingles": { - "description": "Empty state when filtering singles" - }, - "historyNoSinglesSubtitle": "Os downloads de faixa individuais aparecerão aqui", - "@historyNoSinglesSubtitle": { - "description": "Empty state subtitle for singles filter" - }, "historySearchHint": "Pesquisar histórico...", "@historySearchHint": { "description": "Search bar placeholder in history" @@ -163,34 +81,6 @@ "@downloadTitle": { "description": "Download settings page title" }, - "downloadLocation": "Local dos Downloads", - "@downloadLocation": { - "description": "Setting for download folder" - }, - "downloadLocationSubtitle": "Escolha onde salvar os arquivos", - "@downloadLocationSubtitle": { - "description": "Subtitle for download location" - }, - "downloadLocationDefault": "Local padrão", - "@downloadLocationDefault": { - "description": "Shown when using default folder" - }, - "downloadDefaultService": "Serviço Padrão", - "@downloadDefaultService": { - "description": "Setting for preferred download service (Tidal/Qobuz/Amazon)" - }, - "downloadDefaultServiceSubtitle": "Serviço usado para downloads", - "@downloadDefaultServiceSubtitle": { - "description": "Subtitle for default service" - }, - "downloadDefaultQuality": "Qualidade Predefinida", - "@downloadDefaultQuality": { - "description": "Setting for audio quality" - }, - "downloadAskQuality": "Perguntar qualidade antes de baixar", - "@downloadAskQuality": { - "description": "Toggle to show quality picker" - }, "downloadAskQualitySubtitle": "Mostrar seletor de qualidade para cada download", "@downloadAskQualitySubtitle": { "description": "Subtitle for ask quality toggle" @@ -203,38 +93,10 @@ "@downloadFolderOrganization": { "description": "Setting for folder structure" }, - "downloadSeparateSingles": "Separar Singles", - "@downloadSeparateSingles": { - "description": "Toggle to separate single tracks" - }, - "downloadSeparateSinglesSubtitle": "Colocar singles numa pasta separada", - "@downloadSeparateSinglesSubtitle": { - "description": "Subtitle for separate singles toggle" - }, - "qualityBest": "Melhor Disponível", - "@qualityBest": { - "description": "Audio quality option - highest available" - }, - "qualityFlac": "FLAC", - "@qualityFlac": { - "description": "Audio quality option - FLAC lossless" - }, - "quality320": "320 kbps", - "@quality320": { - "description": "Audio quality option - 320kbps MP3" - }, - "quality128": "128 kbps", - "@quality128": { - "description": "Audio quality option - 128kbps MP3" - }, "appearanceTitle": "Aparência", "@appearanceTitle": { "description": "Appearance settings page title" }, - "appearanceTheme": "Tema", - "@appearanceTheme": { - "description": "Theme mode setting" - }, "appearanceThemeSystem": "Sistema", "@appearanceThemeSystem": { "description": "Follow system theme" @@ -255,10 +117,6 @@ "@appearanceDynamicColorSubtitle": { "description": "Subtitle for dynamic color" }, - "appearanceAccentColor": "Cor de Destaque", - "@appearanceAccentColor": { - "description": "Custom accent color picker" - }, "appearanceHistoryView": "Visualização do Histórico", "@appearanceHistoryView": { "description": "Layout style for history" @@ -275,10 +133,6 @@ "@optionsTitle": { "description": "Options settings page title" }, - "optionsSearchSource": "Origem da Pesquisa", - "@optionsSearchSource": { - "description": "Section for search provider settings" - }, "optionsPrimaryProvider": "Provedor Primário", "@optionsPrimaryProvider": { "description": "Main search provider setting" @@ -438,22 +292,6 @@ "@extensionsTitle": { "description": "Extensions page title" }, - "extensionsInstalled": "Extensões Instaladas", - "@extensionsInstalled": { - "description": "Section header for installed extensions" - }, - "extensionsNone": "Nenhuma extensão instalada", - "@extensionsNone": { - "description": "Empty state title" - }, - "extensionsNoneSubtitle": "Instalar extensões a partir da aba Loja", - "@extensionsNoneSubtitle": { - "description": "Empty state subtitle" - }, - "extensionsEnabled": "Habilitado", - "@extensionsEnabled": { - "description": "Extension status - active" - }, "extensionsDisabled": "Desabilitado", "@extensionsDisabled": { "description": "Extension status - inactive" @@ -480,10 +318,6 @@ "@extensionsUninstall": { "description": "Uninstall extension button" }, - "extensionsSetAsSearch": "Definir como Provedor de Pesquisa", - "@extensionsSetAsSearch": { - "description": "Use extension for search" - }, "storeTitle": "Loja de Extensões", "@storeTitle": { "description": "Store screen title" @@ -580,10 +414,6 @@ "@aboutSocial": { "description": "Section for social links" }, - "aboutSupport": "Apoiar", - "@aboutSupport": { - "description": "Section for support/donation links" - }, "aboutApp": "Aplicativo", "@aboutApp": { "description": "Section for app info" @@ -604,14 +434,6 @@ "@aboutSjdonadoDesc": { "description": "Credit description for sjdonado" }, - "aboutDoubleDouble": "DoubleDouble", - "@aboutDoubleDouble": { - "description": "Name of Amazon API service - DO NOT TRANSLATE" - }, - "aboutDoubleDoubleDesc": "API incrível para downloads do Amazon Music. Obrigado por fazê-lo gratuitamente!", - "@aboutDoubleDoubleDesc": { - "description": "Credit for DoubleDouble API" - }, "aboutDabMusic": "DAB Music", "@aboutDabMusic": { "description": "Name of Qobuz API service - DO NOT TRANSLATE" @@ -632,35 +454,6 @@ "@aboutAppDescription": { "description": "App description in header card" }, - "albumTitle": "Álbum", - "@albumTitle": { - "description": "Album screen title" - }, - "albumTracks": "{count, plural, one {1 faixa} other{{count} faixas}}", - "@albumTracks": { - "description": "Album track count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "albumDownloadAll": "Baixar Tudo", - "@albumDownloadAll": { - "description": "Button to download all tracks" - }, - "albumDownloadRemaining": "Downloads Restantes", - "@albumDownloadRemaining": { - "description": "Button to download remaining tracks" - }, - "playlistTitle": "Playlist", - "@playlistTitle": { - "description": "Playlist screen title" - }, - "artistTitle": "Artista", - "@artistTitle": { - "description": "Artist screen title" - }, "artistAlbums": "Álbuns", "@artistAlbums": { "description": "Section header for artist albums" @@ -673,15 +466,6 @@ "@artistCompilations": { "description": "Section header for compilations" }, - "artistReleases": "{count, plural, one {1 lançamento} other{{count} lançamentos}}", - "@artistReleases": { - "description": "Artist release count", - "placeholders": { - "count": { - "type": "int" - } - } - }, "artistPopular": "Populares", "@artistPopular": { "description": "Section header for popular/top tracks" @@ -696,34 +480,6 @@ } } }, - "trackMetadataTitle": "Informações da Faixa", - "@trackMetadataTitle": { - "description": "Track metadata screen title" - }, - "trackMetadataArtist": "Artista", - "@trackMetadataArtist": { - "description": "Metadata field - artist name" - }, - "trackMetadataAlbum": "Álbum", - "@trackMetadataAlbum": { - "description": "Metadata field - album name" - }, - "trackMetadataDuration": "Duração", - "@trackMetadataDuration": { - "description": "Metadata field - track length" - }, - "trackMetadataQuality": "Qualidade", - "@trackMetadataQuality": { - "description": "Metadata field - audio quality" - }, - "trackMetadataPath": "Caminho do Arquivo", - "@trackMetadataPath": { - "description": "Metadata field - file location" - }, - "trackMetadataDownloadedAt": "Baixado", - "@trackMetadataDownloadedAt": { - "description": "Metadata field - download date" - }, "trackMetadataService": "Serviço", "@trackMetadataService": { "description": "Metadata field - download service used" @@ -740,54 +496,10 @@ "@trackMetadataDelete": { "description": "Action button - delete track" }, - "trackMetadataRedownload": "Baixar Novamente", - "@trackMetadataRedownload": { - "description": "Action button - download again" - }, - "trackMetadataOpenFolder": "Abrir Pasta", - "@trackMetadataOpenFolder": { - "description": "Action button - open containing folder" - }, - "setupTitle": "Bem-vindo ao SpotiFLAC", - "@setupTitle": { - "description": "Setup wizard title" - }, - "setupSubtitle": "Vamos começar", - "@setupSubtitle": { - "description": "Setup wizard subtitle" - }, - "setupStoragePermission": "Permissão de Armazenamento", - "@setupStoragePermission": { - "description": "Storage permission step title" - }, - "setupStoragePermissionSubtitle": "Necessária para salvar arquivos baixados", - "@setupStoragePermissionSubtitle": { - "description": "Explanation for storage permission" - }, - "setupStoragePermissionGranted": "Permissão concedida", - "@setupStoragePermissionGranted": { - "description": "Status when permission granted" - }, - "setupStoragePermissionDenied": "Permissão negada", - "@setupStoragePermissionDenied": { - "description": "Status when permission denied" - }, "setupGrantPermission": "Conceder Permissão", "@setupGrantPermission": { "description": "Button to request permission" }, - "setupDownloadLocation": "Local do Download", - "@setupDownloadLocation": { - "description": "Download folder step title" - }, - "setupChooseFolder": "Selecionar Pasta", - "@setupChooseFolder": { - "description": "Button to pick folder" - }, - "setupContinue": "Continuar", - "@setupContinue": { - "description": "Continue to next step button" - }, "setupSkip": "Ignorar por enquanto", "@setupSkip": { "description": "Skip current step button" @@ -796,10 +508,6 @@ "@setupStorageAccessRequired": { "description": "Title when storage access needed" }, - "setupStorageAccessMessage": "O SpotiFLAC precisa da permissão \"Acesso a todos os arquivos\" para salvar arquivos de música na sua pasta escolhida.", - "@setupStorageAccessMessage": { - "description": "Explanation for storage access" - }, "setupStorageAccessMessageAndroid11": "O Android 11+ requer a permissão \"Acesso a Todos os Arquivos\" para salvar arquivos na pasta de download escolhida.", "@setupStorageAccessMessageAndroid11": { "description": "Android 11+ specific explanation" @@ -831,10 +539,6 @@ } } }, - "setupSelectDownloadFolder": "Escolher Pasta de Download", - "@setupSelectDownloadFolder": { - "description": "Folder selection step title" - }, "setupUseDefaultFolder": "Usar Pasta Padrão?", "@setupUseDefaultFolder": { "description": "Dialog title for default folder" @@ -883,26 +587,6 @@ "@setupDownloadInFlac": { "description": "App tagline in setup" }, - "setupStepStorage": "Armazenamento", - "@setupStepStorage": { - "description": "Setup step indicator - storage" - }, - "setupStepNotification": "Notificação", - "@setupStepNotification": { - "description": "Setup step indicator - notification" - }, - "setupStepFolder": "Pasta", - "@setupStepFolder": { - "description": "Setup step indicator - folder" - }, - "setupStepSpotify": "Spotify", - "@setupStepSpotify": { - "description": "Setup step indicator - Spotify API" - }, - "setupStepPermission": "Permissão", - "@setupStepPermission": { - "description": "Setup step indicator - permission" - }, "setupStorageGranted": "Permissão de Armazenamento Concedida!", "@setupStorageGranted": { "description": "Success message for storage permission" @@ -923,14 +607,6 @@ "@setupNotificationEnable": { "description": "Button to enable notifications" }, - "setupNotificationDescription": "Seja notificado quando os downloads completarem ou exigirem atenção.", - "@setupNotificationDescription": { - "description": "Explanation for notifications" - }, - "setupFolderSelected": "Pasta para Download Selecionada!", - "@setupFolderSelected": { - "description": "Success message for folder selection" - }, "setupFolderChoose": "Escolher Pasta de Download", "@setupFolderChoose": { "description": "Button to choose folder" @@ -939,58 +615,14 @@ "@setupFolderDescription": { "description": "Explanation for folder selection" }, - "setupChangeFolder": "Alterar Pasta", - "@setupChangeFolder": { - "description": "Button to change selected folder" - }, "setupSelectFolder": "Seleccionar Pasta", "@setupSelectFolder": { "description": "Button to select folder" }, - "setupSpotifyApiOptional": "API do Spotify (opcional)", - "@setupSpotifyApiOptional": { - "description": "Spotify API step title" - }, - "setupSpotifyApiDescription": "Adicione as suas credenciais da API do Spotify para obter melhores resultados de busca e acesso a conteúdo exclusivo do Spotify.", - "@setupSpotifyApiDescription": { - "description": "Explanation for Spotify API" - }, - "setupUseSpotifyApi": "Usar API do Spotify", - "@setupUseSpotifyApi": { - "description": "Toggle to enable Spotify API" - }, - "setupEnterCredentialsBelow": "Insira as suas credenciais abaixo", - "@setupEnterCredentialsBelow": { - "description": "Prompt to enter credentials" - }, - "setupUsingDeezer": "Usando o Deezer (nenhuma conta necessária)", - "@setupUsingDeezer": { - "description": "Status when using Deezer" - }, - "setupEnterClientId": "Insira o Spotify Client ID", - "@setupEnterClientId": { - "description": "Placeholder for client ID field" - }, - "setupEnterClientSecret": "Insira o Spotify Client Secret", - "@setupEnterClientSecret": { - "description": "Placeholder for client secret field" - }, - "setupGetFreeCredentials": "Receba as suas credenciais de API gratuitas na Spotify Developer Dashboard.", - "@setupGetFreeCredentials": { - "description": "Info about getting Spotify credentials" - }, "setupEnableNotifications": "Habilitar Notificações", "@setupEnableNotifications": { "description": "Button to enable notifications" }, - "setupProceedToNextStep": "Você já pode prosseguir para o próximo passo.", - "@setupProceedToNextStep": { - "description": "Message after completing a step" - }, - "setupNotificationProgressDescription": "Você receberá notificações de progresso dos downloads.", - "@setupNotificationProgressDescription": { - "description": "Info about notification usage" - }, "setupNotificationBackgroundDescription": "Seja notificado sobre o progresso e conclusão do download. Isso ajuda você a acompanhar os downloads quando o app estiver em segundo plano.", "@setupNotificationBackgroundDescription": { "description": "Detailed notification explanation" @@ -999,10 +631,6 @@ "@setupSkipForNow": { "description": "Skip button text" }, - "setupBack": "Voltar", - "@setupBack": { - "description": "Back button text" - }, "setupNext": "Próximo", "@setupNext": { "description": "Next button text" @@ -1011,26 +639,14 @@ "@setupGetStarted": { "description": "Final setup button" }, - "setupSkipAndStart": "Ignorar e Iniciar", - "@setupSkipAndStart": { - "description": "Skip setup and start app" - }, "setupAllowAccessToManageFiles": "Por favor, habilite \"Permitir acesso para gerenciar todos os arquivos\" na próxima tela.", "@setupAllowAccessToManageFiles": { "description": "Instruction for file access permission" }, - "setupGetCredentialsFromSpotify": "Obter credenciais do developer.spotify.com", - "@setupGetCredentialsFromSpotify": { - "description": "Link text for Spotify developer portal" - }, "dialogCancel": "Cancelar", "@dialogCancel": { "description": "Dialog button - cancel action" }, - "dialogOk": "OK", - "@dialogOk": { - "description": "Dialog button - confirm/acknowledge" - }, "dialogSave": "Salvar", "@dialogSave": { "description": "Dialog button - save changes" @@ -1043,26 +659,10 @@ "@dialogRetry": { "description": "Dialog button - retry action" }, - "dialogClose": "Fechar", - "@dialogClose": { - "description": "Dialog button - close dialog" - }, - "dialogYes": "Sim", - "@dialogYes": { - "description": "Dialog button - confirm yes" - }, - "dialogNo": "Não", - "@dialogNo": { - "description": "Dialog button - confirm no" - }, "dialogClear": "Limpar", "@dialogClear": { "description": "Dialog button - clear items" }, - "dialogConfirm": "Confirmar", - "@dialogConfirm": { - "description": "Dialog button - confirm action" - }, "dialogDone": "Concluído", "@dialogDone": { "description": "Dialog button - action completed" @@ -1091,34 +691,10 @@ "@dialogUnsavedChanges": { "description": "Dialog message - unsaved changes" }, - "dialogDownloadFailed": "Download Falhou", - "@dialogDownloadFailed": { - "description": "Dialog title - download error" - }, - "dialogTrackLabel": "Faixa:", - "@dialogTrackLabel": { - "description": "Label for track name in error dialog" - }, - "dialogArtistLabel": "Artista:", - "@dialogArtistLabel": { - "description": "Label for artist name in error dialog" - }, - "dialogErrorLabel": "Erro:", - "@dialogErrorLabel": { - "description": "Label for error message" - }, "dialogClearAll": "Limpar Tudo", "@dialogClearAll": { "description": "Dialog title - clear all items" }, - "dialogClearAllDownloads": "Você tem certeza que deseja limpar todos os downloads?", - "@dialogClearAllDownloads": { - "description": "Dialog message - clear downloads confirmation" - }, - "dialogRemoveFromDevice": "Remover do dispositivo?", - "@dialogRemoveFromDevice": { - "description": "Dialog title - delete file confirmation" - }, "dialogRemoveExtension": "Remover Extensão", "@dialogRemoveExtension": { "description": "Dialog title - uninstall extension" @@ -1257,15 +833,6 @@ "@snackbarViewQueue": { "description": "Snackbar action - view download queue" }, - "snackbarFailedToLoad": "Falha ao carregar: {error}", - "@snackbarFailedToLoad": { - "description": "Snackbar - loading error", - "placeholders": { - "error": { - "type": "String" - } - } - }, "snackbarUrlCopied": "URL do {platform} copiado para a área de transferência", "@snackbarUrlCopied": { "description": "Snackbar - URL copied", @@ -1326,16 +893,6 @@ "@errorRateLimitedMessage": { "description": "Error message - rate limit explanation" }, - "errorFailedToLoad": "Falha ao carregar {item}", - "@errorFailedToLoad": { - "description": "Error message - loading failed", - "placeholders": { - "item": { - "type": "String", - "description": "Item that failed to load (album/playlist/etc)" - } - } - }, "errorNoTracksFound": "Nenhuma faixa encontrada", "@errorNoTracksFound": { "description": "Error - search returned no results" @@ -1349,34 +906,6 @@ } } }, - "statusQueued": "Na Fila", - "@statusQueued": { - "description": "Download status - waiting in queue" - }, - "statusDownloading": "Baixando", - "@statusDownloading": { - "description": "Download status - in progress" - }, - "statusFinalizing": "Finalizando", - "@statusFinalizing": { - "description": "Download status - writing metadata" - }, - "statusCompleted": "Concluído", - "@statusCompleted": { - "description": "Download status - finished" - }, - "statusFailed": "Falhou", - "@statusFailed": { - "description": "Download status - error occurred" - }, - "statusSkipped": "Ignorado", - "@statusSkipped": { - "description": "Download status - already exists" - }, - "statusPaused": "Pausado", - "@statusPaused": { - "description": "Download status - paused" - }, "actionPause": "Pausar", "@actionPause": { "description": "Action button - pause download" @@ -1389,14 +918,6 @@ "@actionCancel": { "description": "Action button - cancel operation" }, - "actionStop": "Parar", - "@actionStop": { - "description": "Action button - stop operation" - }, - "actionSelect": "Selecionar", - "@actionSelect": { - "description": "Action button - enter selection mode" - }, "actionSelectAll": "Selecionar Tudo", "@actionSelectAll": { "description": "Action button - select all items" @@ -1405,14 +926,6 @@ "@actionDeselect": { "description": "Action button - deselect all" }, - "actionPaste": "Colar", - "@actionPaste": { - "description": "Action button - paste from clipboard" - }, - "actionImportCsv": "Importar CSV", - "@actionImportCsv": { - "description": "Action button - import CSV file" - }, "actionRemoveCredentials": "Remover Credenciais", "@actionRemoveCredentials": { "description": "Action button - delete Spotify credentials" @@ -1434,19 +947,6 @@ "@selectionAllSelected": { "description": "Status - all items selected" }, - "selectionTapToSelect": "Toque nas faixas para selecionar", - "@selectionTapToSelect": { - "description": "Hint - how to select items" - }, - "selectionDeleteTracks": "Apagar {count} {count, plural, one {faixa} other{faixas}}", - "@selectionDeleteTracks": { - "description": "Delete button with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, "selectionSelectToDelete": "Selecione as faixas para apagar", "@selectionSelectToDelete": { "description": "Placeholder when nothing selected" @@ -1487,55 +987,10 @@ "@tooltipPlay": { "description": "Tooltip - play button" }, - "tooltipCancel": "Cancelar", - "@tooltipCancel": { - "description": "Tooltip - cancel button" - }, - "tooltipStop": "Parar", - "@tooltipStop": { - "description": "Tooltip - stop button" - }, - "tooltipRetry": "Tentar Novamente", - "@tooltipRetry": { - "description": "Tooltip - retry button" - }, - "tooltipRemove": "Remover", - "@tooltipRemove": { - "description": "Tooltip - remove button" - }, - "tooltipClear": "Limpar", - "@tooltipClear": { - "description": "Tooltip - clear button" - }, - "tooltipPaste": "Colar", - "@tooltipPaste": { - "description": "Tooltip - paste button" - }, "filenameFormat": "Formato do Nome do Arquivo", "@filenameFormat": { "description": "Setting title - filename pattern" }, - "filenameFormatPreview": "Prévia: {preview}", - "@filenameFormatPreview": { - "description": "Preview of filename pattern", - "placeholders": { - "preview": { - "type": "String" - } - } - }, - "filenameAvailablePlaceholders": "Substituições permitidas:", - "@filenameAvailablePlaceholders": { - "description": "Label for placeholder list" - }, - "filenameHint": "{artist} - {title}", - "@filenameHint": { - "description": "Default filename format hint" - }, - "folderOrganization": "Organização de Pastas", - "@folderOrganization": { - "description": "Setting title - folder structure" - }, "folderOrganizationNone": "Nenhuma organização", "@folderOrganizationNone": { "description": "Folder option - flat structure" @@ -1576,27 +1031,10 @@ "@updateAvailable": { "description": "Update dialog title" }, - "updateNewVersion": "A versão {version} está disponível", - "@updateNewVersion": { - "description": "Update available message", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "updateDownload": "Baixar", - "@updateDownload": { - "description": "Update button - download update" - }, "updateLater": "Depois", "@updateLater": { "description": "Update button - dismiss" }, - "updateChangelog": "Lista de alterações", - "@updateChangelog": { - "description": "Link to changelog" - }, "updateStartingDownload": "Iniciando download...", "@updateStartingDownload": { "description": "Update status - initializing" @@ -1637,14 +1075,6 @@ "@updateDontRemind": { "description": "Update button - skip this version" }, - "providerPriority": "Prioridade de Provedor", - "@providerPriority": { - "description": "Setting title - download provider order" - }, - "providerPrioritySubtitle": "Arraste para reordenar os provedores de download", - "@providerPrioritySubtitle": { - "description": "Subtitle for provider priority" - }, "providerPriorityTitle": "Prioridade de Provedor", "@providerPriorityTitle": { "description": "Provider priority page title" @@ -1665,14 +1095,6 @@ "@providerExtension": { "description": "Label for extension-provided providers" }, - "metadataProviderPriority": "Prioridade de Provedor de Metadados", - "@metadataProviderPriority": { - "description": "Setting title - metadata provider order" - }, - "metadataProviderPrioritySubtitle": "Ordem usada para obter metadados de faixa", - "@metadataProviderPrioritySubtitle": { - "description": "Subtitle for metadata priority" - }, "metadataProviderPriorityTitle": "Prioridade de Metadados", "@metadataProviderPriorityTitle": { "description": "Metadata priority page title" @@ -1697,22 +1119,6 @@ "@logTitle": { "description": "Logs screen title" }, - "logCopy": "Copiar Registros", - "@logCopy": { - "description": "Action - copy logs to clipboard" - }, - "logClear": "Limpar Registros", - "@logClear": { - "description": "Action - delete all logs" - }, - "logShare": "Compartilhar Registros", - "@logShare": { - "description": "Action - share logs file" - }, - "logEmpty": "Ainda não há registros", - "@logEmpty": { - "description": "Empty state title" - }, "logCopied": "Registros copiados para área de transferência", "@logCopied": { "description": "Snackbar - logs copied" @@ -1745,22 +1151,6 @@ "@logClearLogsMessage": { "description": "Clear logs confirmation message" }, - "logIspBlocking": "BLOQUEIO DE ISP DETECTADO", - "@logIspBlocking": { - "description": "Error category - ISP blocking" - }, - "logRateLimited": "TAXA LIMITADA (RATELIMITED)", - "@logRateLimited": { - "description": "Error category - rate limiting" - }, - "logNetworkError": "ERRO DE REDE", - "@logNetworkError": { - "description": "Error category - network issues" - }, - "logTrackNotFound": "FAIXA NÃO ENCONTRADA", - "@logTrackNotFound": { - "description": "Error category - missing tracks" - }, "logFilterBySeverity": "Filtrar registros por gravidade", "@logFilterBySeverity": { "description": "Filter dialog title" @@ -1773,60 +1163,6 @@ "@logNoLogsYetSubtitle": { "description": "Empty state subtitle" }, - "logIssueSummary": "Resumo do Problemas", - "@logIssueSummary": { - "description": "Section header for error summary" - }, - "logIspBlockingDescription": "O seu provedor pode estar bloqueando o acesso aos serviços de download", - "@logIspBlockingDescription": { - "description": "ISP blocking explanation" - }, - "logIspBlockingSuggestion": "Tente usar uma VPN ou altere o DNS para 1.1.1 ou 8.8.8.8", - "@logIspBlockingSuggestion": { - "description": "ISP blocking fix suggestion" - }, - "logRateLimitedDescription": "Muitas solicitações ao serviço", - "@logRateLimitedDescription": { - "description": "Rate limit explanation" - }, - "logRateLimitedSuggestion": "Aguarde alguns minutos antes de tentar novamente", - "@logRateLimitedSuggestion": { - "description": "Rate limit fix suggestion" - }, - "logNetworkErrorDescription": "Problemas de conexão detectados", - "@logNetworkErrorDescription": { - "description": "Network error explanation" - }, - "logNetworkErrorSuggestion": "Verifique sua conexão de internet", - "@logNetworkErrorSuggestion": { - "description": "Network error fix suggestion" - }, - "logTrackNotFoundDescription": "Algumas faixas não foram encontradas nos serviços de download", - "@logTrackNotFoundDescription": { - "description": "Track not found explanation" - }, - "logTrackNotFoundSuggestion": "A faixa pode não estar disponível em qualidade sem perdas", - "@logTrackNotFoundSuggestion": { - "description": "Track not found explanation" - }, - "logTotalErrors": "Total de erros: {count}", - "@logTotalErrors": { - "description": "Error count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "logAffected": "Afetado(s): {domains}", - "@logAffected": { - "description": "Affected domains display", - "placeholders": { - "domains": { - "type": "String" - } - } - }, "logEntriesFiltered": "Entradas ({count} filtradas)", "@logEntriesFiltered": { "description": "Log count with filter active", @@ -1969,10 +1305,6 @@ "@appearanceLanguage": { "description": "Language setting title" }, - "appearanceLanguageSubtitle": "Escolha o seu idioma preferido", - "@appearanceLanguageSubtitle": { - "description": "Language setting subtitle" - }, "settingsAppearanceSubtitle": "Tema, cores, exibição", "@settingsAppearanceSubtitle": { "description": "Appearance settings description" @@ -2001,10 +1333,6 @@ "@pressBackAgainToExit": { "description": "Exit confirmation message" }, - "tracksHeader": "Faixas", - "@tracksHeader": { - "description": "Section header for track list" - }, "downloadAllCount": "Baixar Todos ({count})", "@downloadAllCount": { "description": "Download all button with count", @@ -2151,15 +1479,6 @@ "@trackDeleteConfirmMessage": { "description": "Delete confirmation message" }, - "trackCannotOpen": "Não foi possível abrir: {message}", - "@trackCannotOpen": { - "description": "Error opening file", - "placeholders": { - "message": { - "type": "String" - } - } - }, "dateToday": "Hoje", "@dateToday": { "description": "Relative date - today" @@ -2195,22 +1514,6 @@ } } }, - "concurrentSequential": "Sequencial", - "@concurrentSequential": { - "description": "Download mode - one at a time" - }, - "concurrentParallel2": "2 Paralelos", - "@concurrentParallel2": { - "description": "Download mode - 2 simultaneous" - }, - "concurrentParallel3": "3 Paralelos", - "@concurrentParallel3": { - "description": "Download mode - 3 simultaneous" - }, - "tapToSeeError": "Toque para ver os detalhes do erro", - "@tapToSeeError": { - "description": "Tooltip for failed download" - }, "storeFilterAll": "Tudo", "@storeFilterAll": { "description": "Store filter - all extensions" @@ -2239,18 +1542,6 @@ "@storeClearFilters": { "description": "Button to clear all filters" }, - "storeNoResults": "Nenhuma extensão encontrada", - "@storeNoResults": { - "description": "Empty state when no extensions match filters" - }, - "extensionProviderPriority": "Prioridade de Provedor", - "@extensionProviderPriority": { - "description": "Extension capability - provider priority" - }, - "extensionInstallButton": "Instalar Extensão", - "@extensionInstallButton": { - "description": "Button to install extension" - }, "extensionDefaultProvider": "Padrão (Deezer/Spotify)", "@extensionDefaultProvider": { "description": "Default search provider option" @@ -2450,46 +1741,6 @@ "@qualityHiResFlacMaxSubtitle": { "description": "Technical spec for hi-res max" }, - "qualityLossy": "Lossy", - "@qualityLossy": { - "description": "Quality option - lossy format (MP3/Opus)" - }, - "qualityLossyMp3Subtitle": "MP3 320kbps (converted from FLAC)", - "@qualityLossyMp3Subtitle": { - "description": "Technical spec for lossy MP3" - }, - "qualityLossyOpusSubtitle": "Opus 128kbps (converted from FLAC)", - "@qualityLossyOpusSubtitle": { - "description": "Technical spec for lossy Opus" - }, - "enableLossyOption": "Enable Lossy Option", - "@enableLossyOption": { - "description": "Setting - enable lossy quality option" - }, - "enableLossyOptionSubtitleOn": "Lossy quality option is available", - "@enableLossyOptionSubtitleOn": { - "description": "Subtitle when lossy is enabled" - }, - "enableLossyOptionSubtitleOff": "Downloads FLAC then converts to lossy format", - "@enableLossyOptionSubtitleOff": { - "description": "Subtitle when lossy is disabled" - }, - "lossyFormat": "Lossy Format", - "@lossyFormat": { - "description": "Setting - choose lossy format" - }, - "lossyFormatDescription": "Choose the lossy format for conversion", - "@lossyFormatDescription": { - "description": "Description for lossy format picker" - }, - "lossyFormatMp3Subtitle": "320kbps, best compatibility", - "@lossyFormatMp3Subtitle": { - "description": "MP3 format description" - }, - "lossyFormatOpusSubtitle": "128kbps, better quality at smaller size", - "@lossyFormatOpusSubtitle": { - "description": "Opus format description" - }, "qualityNote": "A qualidade real depende da faixa que estiver disponível no serviço", "@qualityNote": { "description": "Note about quality availability" @@ -2518,14 +1769,6 @@ "@downloadUseAlbumArtistForFolders": { "description": "Setting - choose whether artist folders use Album Artist or Track Artist" }, - "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Artist folders use Album Artist when available", - "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { - "description": "Subtitle when Album Artist is used for folder naming" - }, - "downloadUseAlbumArtistForFoldersTrackSubtitle": "Artist folders use Track Artist only", - "@downloadUseAlbumArtistForFoldersTrackSubtitle": { - "description": "Subtitle when Track Artist is used for folder naming" - }, "downloadUsePrimaryArtistOnly": "Primary artist only for folders", "@downloadUsePrimaryArtistOnly": { "description": "Setting - strip featured artists from folder name" @@ -2538,14 +1781,6 @@ "@downloadUsePrimaryArtistOnlyDisabled": { "description": "Subtitle when primary artist only is disabled" }, - "downloadSaveFormat": "Formato para Salvar", - "@downloadSaveFormat": { - "description": "Setting - output file format" - }, - "downloadSelectService": "Selecionar Serviço", - "@downloadSelectService": { - "description": "Dialog title - choose download service" - }, "downloadSelectQuality": "Selecionar Qualidade", "@downloadSelectQuality": { "description": "Dialog title - choose audio quality" @@ -2554,66 +1789,6 @@ "@downloadFrom": { "description": "Label - download source" }, - "downloadDefaultQualityLabel": "Qualidade Padrão", - "@downloadDefaultQualityLabel": { - "description": "Label - default quality setting" - }, - "downloadBestAvailable": "Melhor Disponível", - "@downloadBestAvailable": { - "description": "Quality option - highest available" - }, - "folderNone": "Nenhuma", - "@folderNone": { - "description": "Folder option - no organization" - }, - "folderNoneSubtitle": "Salvar todos os arquivos diretamente na pasta de download", - "@folderNoneSubtitle": { - "description": "Subtitle for no folder organization" - }, - "folderArtist": "Artista", - "@folderArtist": { - "description": "Folder option - by artist" - }, - "folderArtistSubtitle": "Nome do Artista/arquivo", - "@folderArtistSubtitle": { - "description": "Folder structure example" - }, - "folderAlbum": "Álbum", - "@folderAlbum": { - "description": "Folder option - by album" - }, - "folderAlbumSubtitle": "Nome do Álbum/arquivo", - "@folderAlbumSubtitle": { - "description": "Folder structure example" - }, - "folderArtistAlbum": "Artista/Álbum", - "@folderArtistAlbum": { - "description": "Folder option - nested" - }, - "folderArtistAlbumSubtitle": "Nome do Artista/Nome do Álbum/arquivo", - "@folderArtistAlbumSubtitle": { - "description": "Folder structure example" - }, - "serviceTidal": "Tidal", - "@serviceTidal": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceQobuz": "Qobuz", - "@serviceQobuz": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceAmazon": "Amazon", - "@serviceAmazon": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceDeezer": "Deezer", - "@serviceDeezer": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceSpotify": "Spotify", - "@serviceSpotify": { - "description": "Service name - DO NOT TRANSLATE" - }, "appearanceAmoledDark": "Escuro AMOLED", "@appearanceAmoledDark": { "description": "Theme option - pure black" @@ -2622,18 +1797,6 @@ "@appearanceAmoledDarkSubtitle": { "description": "Subtitle for AMOLED dark" }, - "appearanceChooseAccentColor": "Escolha a Cor de Destaque", - "@appearanceChooseAccentColor": { - "description": "Color picker dialog title" - }, - "appearanceChooseTheme": "Modo do Tema", - "@appearanceChooseTheme": { - "description": "Theme picker dialog title" - }, - "queueTitle": "Fila de Download", - "@queueTitle": { - "description": "Queue screen title" - }, "queueClearAll": "Limpar Tudo", "@queueClearAll": { "description": "Button - clear all queue items" @@ -2642,22 +1805,6 @@ "@queueClearAllMessage": { "description": "Clear queue confirmation" }, - "queueExportFailed": "Export", - "@queueExportFailed": { - "description": "Button - export failed downloads to TXT" - }, - "queueExportFailedSuccess": "Failed downloads exported to TXT file", - "@queueExportFailedSuccess": { - "description": "Success message after exporting failed downloads" - }, - "queueExportFailedClear": "Clear Failed", - "@queueExportFailedClear": { - "description": "Action to clear failed downloads after export" - }, - "queueExportFailedError": "Failed to export downloads", - "@queueExportFailedError": { - "description": "Error message when export fails" - }, "settingsAutoExportFailed": "Auto-export failed downloads", "@settingsAutoExportFailed": { "description": "Setting toggle for auto-export" @@ -2682,38 +1829,6 @@ "@settingsDownloadNetworkSubtitle": { "description": "Subtitle explaining network preference" }, - "queueEmpty": "Nenhum download na fila", - "@queueEmpty": { - "description": "Empty queue state title" - }, - "queueEmptySubtitle": "Adicione faixas a partir da tela inicial", - "@queueEmptySubtitle": { - "description": "Empty queue state subtitle" - }, - "queueClearCompleted": "Limpar concluídos", - "@queueClearCompleted": { - "description": "Button - clear finished downloads" - }, - "queueDownloadFailed": "Download Falhou", - "@queueDownloadFailed": { - "description": "Error dialog title" - }, - "queueTrackLabel": "Faixa:", - "@queueTrackLabel": { - "description": "Label in error dialog" - }, - "queueArtistLabel": "Artista:", - "@queueArtistLabel": { - "description": "Label in error dialog" - }, - "queueErrorLabel": "Erro:", - "@queueErrorLabel": { - "description": "Label in error dialog" - }, - "queueUnknownError": "Erro desconhecido", - "@queueUnknownError": { - "description": "Fallback error message" - }, "albumFolderArtistAlbum": "Artista / Álbum", "@albumFolderArtistAlbum": { "description": "Album folder option" @@ -2767,19 +1882,6 @@ } } }, - "downloadedAlbumTracksHeader": "Faixas", - "@downloadedAlbumTracksHeader": { - "description": "Section header for tracks" - }, - "downloadedAlbumDownloadedCount": "{count} baixado(s)", - "@downloadedAlbumDownloadedCount": { - "description": "Downloaded tracks count badge", - "placeholders": { - "count": { - "type": "int" - } - } - }, "downloadedAlbumSelectedCount": "{count} selecionado(s)", "@downloadedAlbumSelectedCount": { "description": "Selection count indicator", @@ -2820,10 +1922,6 @@ } } }, - "utilityFunctions": "Funções Utilitárias", - "@utilityFunctions": { - "description": "Extension capability - utility functions" - }, "recentTypeArtist": "Artista", "@recentTypeArtist": { "description": "Recent access item type - artist" @@ -2858,16 +1956,6 @@ } } }, - "errorGeneric": "Erro: {message}", - "@errorGeneric": { - "description": "Generic error message format", - "placeholders": { - "message": { - "type": "String", - "description": "Error message" - } - } - }, "discographyDownload": "Baixar Discografia", "@discographyDownload": { "description": "Button - download artist discography" @@ -3034,10 +2122,6 @@ "@libraryTitle": { "description": "Library settings page title" }, - "libraryStatus": "Library Status", - "@libraryStatus": { - "description": "Section header for library status" - }, "libraryScanSettings": "Scan Settings", "@libraryScanSettings": { "description": "Section header for scan settings" @@ -3114,15 +2198,6 @@ "@libraryAboutDescription": { "description": "Description of local library feature" }, - "libraryTracksCount": "{count} tracks", - "@libraryTracksCount": { - "description": "Track count in library", - "placeholders": { - "count": { - "type": "int" - } - } - }, "libraryLastScanned": "Last scanned: {time}", "@libraryLastScanned": { "description": "Last scan time display", @@ -3237,26 +2312,6 @@ "@libraryFilterFormat": { "description": "Filter section - file format" }, - "libraryFilterDate": "Date Added", - "@libraryFilterDate": { - "description": "Filter section - date range" - }, - "libraryFilterDateToday": "Today", - "@libraryFilterDateToday": { - "description": "Filter option - today only" - }, - "libraryFilterDateWeek": "This Week", - "@libraryFilterDateWeek": { - "description": "Filter option - this week" - }, - "libraryFilterDateMonth": "This Month", - "@libraryFilterDateMonth": { - "description": "Filter option - this month" - }, - "libraryFilterDateYear": "This Year", - "@libraryFilterDateYear": { - "description": "Filter option - this year" - }, "libraryFilterSort": "Sort", "@libraryFilterSort": { "description": "Filter section - sort order" @@ -3269,15 +2324,6 @@ "@libraryFilterSortOldest": { "description": "Sort option - oldest first" }, - "libraryFilterActive": "{count} filter(s) active", - "@libraryFilterActive": { - "description": "Badge showing number of active filters", - "placeholders": { - "count": { - "type": "int" - } - } - }, "timeJustNow": "Just now", "@timeJustNow": { "description": "Relative time - less than a minute ago" @@ -3300,106 +2346,6 @@ } } }, - "storageSwitchTitle": "Switch Storage Mode", - "@storageSwitchTitle": { - "description": "Dialog title when switching storage mode" - }, - "storageSwitchToSafTitle": "Switch to SAF Storage?", - "@storageSwitchToSafTitle": { - "description": "Dialog title when switching to SAF" - }, - "storageSwitchToAppTitle": "Switch to App Storage?", - "@storageSwitchToAppTitle": { - "description": "Dialog title when switching to app storage" - }, - "storageSwitchToSafMessage": "Your existing downloads will remain in the current location and stay accessible.\n\nNew downloads will be saved to your selected SAF folder.", - "@storageSwitchToSafMessage": { - "description": "Explanation when switching to SAF" - }, - "storageSwitchToAppMessage": "Your existing downloads will remain in the current SAF location and stay accessible.\n\nNew downloads will be saved to Music/SpotiFLAC folder.", - "@storageSwitchToAppMessage": { - "description": "Explanation when switching to app storage" - }, - "storageSwitchExistingDownloads": "Existing Downloads", - "@storageSwitchExistingDownloads": { - "description": "Section header for existing downloads info" - }, - "storageSwitchExistingDownloadsInfo": "{count} tracks in {mode} storage", - "@storageSwitchExistingDownloadsInfo": { - "description": "Info about existing downloads count", - "placeholders": { - "count": { - "type": "int" - }, - "mode": { - "type": "String" - } - } - }, - "storageSwitchNewDownloads": "New Downloads", - "@storageSwitchNewDownloads": { - "description": "Section header for new downloads info" - }, - "storageSwitchNewDownloadsLocation": "Will be saved to: {location}", - "@storageSwitchNewDownloadsLocation": { - "description": "Shows where new downloads will go", - "placeholders": { - "location": { - "type": "String" - } - } - }, - "storageSwitchContinue": "Continue", - "@storageSwitchContinue": { - "description": "Button to proceed with storage switch" - }, - "storageSwitchSelectFolder": "Select SAF Folder", - "@storageSwitchSelectFolder": { - "description": "Button to select SAF folder" - }, - "storageAppStorage": "App Storage", - "@storageAppStorage": { - "description": "Label for app storage mode" - }, - "storageSafStorage": "SAF Storage", - "@storageSafStorage": { - "description": "Label for SAF storage mode" - }, - "storageModeBadge": "Storage: {mode}", - "@storageModeBadge": { - "description": "Badge showing storage mode for a track", - "placeholders": { - "mode": { - "type": "String" - } - } - }, - "storageStatsTitle": "Storage Statistics", - "@storageStatsTitle": { - "description": "Section title for storage stats" - }, - "storageStatsAppCount": "{count} tracks in App Storage", - "@storageStatsAppCount": { - "description": "Count of tracks in app storage", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storageStatsSafCount": "{count} tracks in SAF Storage", - "@storageStatsSafCount": { - "description": "Count of tracks in SAF storage", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storageModeInfo": "Your files are stored in multiple locations", - "@storageModeInfo": { - "description": "Info when user has files in both storage modes" - }, "tutorialWelcomeTitle": "Welcome to SpotiFLAC!", "@tutorialWelcomeTitle": { "description": "Tutorial welcome page title" @@ -3428,18 +2374,6 @@ "@tutorialSearchDesc": { "description": "Tutorial search page description" }, - "tutorialSearchTip1": "Paste a Spotify or Deezer URL directly in the search box", - "@tutorialSearchTip1": { - "description": "Tutorial search tip 1" - }, - "tutorialSearchTip2": "Or type the song name, artist, or album to search", - "@tutorialSearchTip2": { - "description": "Tutorial search tip 2" - }, - "tutorialSearchTip3": "Supports tracks, albums, playlists, and artist pages", - "@tutorialSearchTip3": { - "description": "Tutorial search tip 3" - }, "tutorialDownloadTitle": "Downloading Music", "@tutorialDownloadTitle": { "description": "Tutorial download page title" @@ -3448,18 +2382,6 @@ "@tutorialDownloadDesc": { "description": "Tutorial download page description" }, - "tutorialDownloadTip1": "Tap the download button next to any track to start downloading", - "@tutorialDownloadTip1": { - "description": "Tutorial download tip 1" - }, - "tutorialDownloadTip2": "Choose your preferred quality (FLAC, Hi-Res, or MP3)", - "@tutorialDownloadTip2": { - "description": "Tutorial download tip 2" - }, - "tutorialDownloadTip3": "Download entire albums or playlists with one tap", - "@tutorialDownloadTip3": { - "description": "Tutorial download tip 3" - }, "tutorialLibraryTitle": "Your Library", "@tutorialLibraryTitle": { "description": "Tutorial library page title" @@ -3524,10 +2446,6 @@ "@tutorialReadyMessage": { "description": "Tutorial completion message" }, - "tutorialExample": "EXAMPLE", - "@tutorialExample": { - "description": "Example label in tutorial" - }, "libraryForceFullScan": "Force Full Scan", "@libraryForceFullScan": { "description": "Button to force a complete rescan of library" @@ -3754,10 +2672,6 @@ "@trackReEnrich": { "description": "Menu action - re-embed metadata into audio file" }, - "trackReEnrichSubtitle": "Re-embed metadata without re-downloading", - "@trackReEnrichSubtitle": { - "description": "Subtitle for re-enrich metadata action" - }, "trackReEnrichOnlineSubtitle": "Search metadata online and embed into file", "@trackReEnrichOnlineSubtitle": { "description": "Subtitle for re-enrich metadata action for local items" @@ -3869,15 +2783,21 @@ "@trackConvertFailed": { "description": "Snackbar when conversion fails" }, - "setupModeSelectionTitle": "Escolha o seu modo", - "setupModeSelectionDescription": "Como gostaria de utilizar o SpotiFLAC? Pode alterar isto mais tarde nas Definições.", - "setupModeDownloaderTitle": "Transferência", - "setupModeDownloaderFeature1": "Transfira faixas em qualidade FLAC sem perdas", - "setupModeDownloaderFeature2": "Guarde música no seu dispositivo para ouvir offline", - "setupModeDownloaderFeature3": "Faça a gestão da sua biblioteca de música local", - "setupModeStreamingTitle": "Streaming", - "setupModeStreamingFeature1": "Transmita faixas instantaneamente sem transferir", - "setupModeStreamingFeature2": "Smart Queue descobre automaticamente novas músicas para si", - "setupModeStreamingFeature3": "Reproduza qualquer faixa a pedido com controlos de reprodução", - "setupModeChangeableLater": "Pode alternar entre modos a qualquer momento nas Definições." -} \ No newline at end of file + "downloadedAlbumDownloadedCount": "{count} baixado(s)", + "@downloadedAlbumDownloadedCount": { + "description": "Downloaded tracks count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Artist folders use Album Artist when available", + "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { + "description": "Subtitle when Album Artist is used for folder naming" + }, + "downloadUseAlbumArtistForFoldersTrackSubtitle": "Artist folders use Track Artist only", + "@downloadUseAlbumArtistForFoldersTrackSubtitle": { + "description": "Subtitle when Track Artist is used for folder naming" + } +} diff --git a/lib/l10n/arb/app_ru.arb b/lib/l10n/arb/app_ru.arb index f8f9d028..4ea4e618 100644 --- a/lib/l10n/arb/app_ru.arb +++ b/lib/l10n/arb/app_ru.arb @@ -5,10 +5,6 @@ "@appName": { "description": "App name - DO NOT TRANSLATE" }, - "appDescription": "Скачайте треки Spotify в Lossless качестве из Tidal, Qobuz и Amazon Music.", - "@appDescription": { - "description": "App description shown in about page" - }, "navHome": "Главная", "@navHome": { "description": "Bottom navigation - Home tab" @@ -17,10 +13,6 @@ "@navLibrary": { "description": "Bottom navigation - Library tab" }, - "navHistory": "История", - "@navHistory": { - "description": "Bottom navigation - History tab (legacy)" - }, "navSettings": "Настройки", "@navSettings": { "description": "Bottom navigation - Settings tab" @@ -33,20 +25,6 @@ "@homeTitle": { "description": "Home screen title" }, - "homeSearchHint": "Вставьте URL Spotify или выполните поиск...", - "@homeSearchHint": { - "description": "Placeholder text in search box" - }, - "homeSearchHintExtension": "Искать с помощью {extensionName}...", - "@homeSearchHintExtension": { - "description": "Placeholder when extension search is active", - "placeholders": { - "extensionName": { - "type": "String", - "description": "Name of the active extension" - } - } - }, "homeSubtitle": "Вставьте ссылку Spotify или ищите по названию", "@homeSubtitle": { "description": "Subtitle shown below search box" @@ -59,24 +37,6 @@ "@homeRecent": { "description": "Section header for recent searches" }, - "historyTitle": "История", - "@historyTitle": { - "description": "History screen title" - }, - "historyDownloading": "Скачивание ({count})", - "@historyDownloading": { - "description": "Tab showing active downloads count", - "placeholders": { - "count": { - "type": "int", - "description": "Number of active downloads" - } - } - }, - "historyDownloaded": "Скачано", - "@historyDownloaded": { - "description": "Tab showing completed downloads" - }, "historyFilterAll": "Все", "@historyFilterAll": { "description": "Filter chip - show all items" @@ -89,48 +49,6 @@ "@historyFilterSingles": { "description": "Filter chip - show singles only" }, - "historyTracksCount": "{count, plural, one {{count} трек} few {{count} трека} many {{count} треков} other {{count} треков}}", - "@historyTracksCount": { - "description": "Track count with plural form", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "historyAlbumsCount": "{count, plural, one {{count} альбом} few {{count} альбома} many {{count} альбомов} other {{count} альбомов}}", - "@historyAlbumsCount": { - "description": "Album count with plural form", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "historyNoDownloads": "Нет истории скачиваний", - "@historyNoDownloads": { - "description": "Empty state title" - }, - "historyNoDownloadsSubtitle": "Скачанные треки появятся здесь", - "@historyNoDownloadsSubtitle": { - "description": "Empty state subtitle" - }, - "historyNoAlbums": "Нет скачанных альбомов", - "@historyNoAlbums": { - "description": "Empty state when filtering albums" - }, - "historyNoAlbumsSubtitle": "Скачайте несколько треков из альбома, чтобы увидеть их здесь", - "@historyNoAlbumsSubtitle": { - "description": "Empty state subtitle for albums filter" - }, - "historyNoSingles": "Нет скачанных синглов", - "@historyNoSingles": { - "description": "Empty state when filtering singles" - }, - "historyNoSinglesSubtitle": "Здесь будут отображаться загрузки синглов", - "@historyNoSinglesSubtitle": { - "description": "Empty state subtitle for singles filter" - }, "historySearchHint": "Поиск в истории...", "@historySearchHint": { "description": "Search bar placeholder in history" @@ -163,34 +81,6 @@ "@downloadTitle": { "description": "Download settings page title" }, - "downloadLocation": "Папка для скачивания", - "@downloadLocation": { - "description": "Setting for download folder" - }, - "downloadLocationSubtitle": "Выберите, куда сохранить файлы", - "@downloadLocationSubtitle": { - "description": "Subtitle for download location" - }, - "downloadLocationDefault": "Расположение по умолчанию", - "@downloadLocationDefault": { - "description": "Shown when using default folder" - }, - "downloadDefaultService": "Сервис по умолчанию", - "@downloadDefaultService": { - "description": "Setting for preferred download service (Tidal/Qobuz/Amazon)" - }, - "downloadDefaultServiceSubtitle": "Сервис, используемый для скачивания", - "@downloadDefaultServiceSubtitle": { - "description": "Subtitle for default service" - }, - "downloadDefaultQuality": "Качество по умолчанию", - "@downloadDefaultQuality": { - "description": "Setting for audio quality" - }, - "downloadAskQuality": "Спрашивать качество перед скачиванием", - "@downloadAskQuality": { - "description": "Toggle to show quality picker" - }, "downloadAskQualitySubtitle": "Показывать выбор качества для каждого скачивания", "@downloadAskQualitySubtitle": { "description": "Subtitle for ask quality toggle" @@ -203,38 +93,10 @@ "@downloadFolderOrganization": { "description": "Setting for folder structure" }, - "downloadSeparateSingles": "Разделять синглы", - "@downloadSeparateSingles": { - "description": "Toggle to separate single tracks" - }, - "downloadSeparateSinglesSubtitle": "Помещать синглы в отдельную папку", - "@downloadSeparateSinglesSubtitle": { - "description": "Subtitle for separate singles toggle" - }, - "qualityBest": "Лучшее из доступных", - "@qualityBest": { - "description": "Audio quality option - highest available" - }, - "qualityFlac": "FLAC", - "@qualityFlac": { - "description": "Audio quality option - FLAC lossless" - }, - "quality320": "320 кбит/с", - "@quality320": { - "description": "Audio quality option - 320kbps MP3" - }, - "quality128": "128 кбит/с", - "@quality128": { - "description": "Audio quality option - 128kbps MP3" - }, "appearanceTitle": "Внешний вид", "@appearanceTitle": { "description": "Appearance settings page title" }, - "appearanceTheme": "Тема", - "@appearanceTheme": { - "description": "Theme mode setting" - }, "appearanceThemeSystem": "Системная", "@appearanceThemeSystem": { "description": "Follow system theme" @@ -255,10 +117,6 @@ "@appearanceDynamicColorSubtitle": { "description": "Subtitle for dynamic color" }, - "appearanceAccentColor": "Акцентный цвет", - "@appearanceAccentColor": { - "description": "Custom accent color picker" - }, "appearanceHistoryView": "Отображение истории", "@appearanceHistoryView": { "description": "Layout style for history" @@ -275,10 +133,6 @@ "@optionsTitle": { "description": "Options settings page title" }, - "optionsSearchSource": "Поиск источника", - "@optionsSearchSource": { - "description": "Section for search provider settings" - }, "optionsPrimaryProvider": "Основной провайдер", "@optionsPrimaryProvider": { "description": "Main search provider setting" @@ -438,22 +292,6 @@ "@extensionsTitle": { "description": "Extensions page title" }, - "extensionsInstalled": "Установленные расширения", - "@extensionsInstalled": { - "description": "Section header for installed extensions" - }, - "extensionsNone": "Нет установленных расширений", - "@extensionsNone": { - "description": "Empty state title" - }, - "extensionsNoneSubtitle": "Установка расширений из вкладки Магазин", - "@extensionsNoneSubtitle": { - "description": "Empty state subtitle" - }, - "extensionsEnabled": "Включено", - "@extensionsEnabled": { - "description": "Extension status - active" - }, "extensionsDisabled": "Выключено", "@extensionsDisabled": { "description": "Extension status - inactive" @@ -480,10 +318,6 @@ "@extensionsUninstall": { "description": "Uninstall extension button" }, - "extensionsSetAsSearch": "Установить в качестве поисковой системы", - "@extensionsSetAsSearch": { - "description": "Use extension for search" - }, "storeTitle": "Магазин расширений", "@storeTitle": { "description": "Store screen title" @@ -580,10 +414,6 @@ "@aboutSocial": { "description": "Section for social links" }, - "aboutSupport": "Поддержка", - "@aboutSupport": { - "description": "Section for support/donation links" - }, "aboutApp": "Приложение", "@aboutApp": { "description": "Section for app info" @@ -604,14 +434,6 @@ "@aboutSjdonadoDesc": { "description": "Credit description for sjdonado" }, - "aboutDoubleDouble": "DoubleDouble", - "@aboutDoubleDouble": { - "description": "Name of Amazon API service - DO NOT TRANSLATE" - }, - "aboutDoubleDoubleDesc": "Удивительный API для загрузок Amazon Music. Спасибо за то, что сделали это бесплатно!", - "@aboutDoubleDoubleDesc": { - "description": "Credit for DoubleDouble API" - }, "aboutDabMusic": "DAB Music", "@aboutDabMusic": { "description": "Name of Qobuz API service - DO NOT TRANSLATE" @@ -632,35 +454,6 @@ "@aboutAppDescription": { "description": "App description in header card" }, - "albumTitle": "Альбом", - "@albumTitle": { - "description": "Album screen title" - }, - "albumTracks": "{count, plural, one {{count} трек} few {{count} трека} many {{count} треков} other {{count} треков}}", - "@albumTracks": { - "description": "Album track count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "albumDownloadAll": "Скачать всё", - "@albumDownloadAll": { - "description": "Button to download all tracks" - }, - "albumDownloadRemaining": "Скачать оставшиеся", - "@albumDownloadRemaining": { - "description": "Button to download remaining tracks" - }, - "playlistTitle": "Плейлист", - "@playlistTitle": { - "description": "Playlist screen title" - }, - "artistTitle": "Исполнитель", - "@artistTitle": { - "description": "Artist screen title" - }, "artistAlbums": "Альбомы", "@artistAlbums": { "description": "Section header for artist albums" @@ -673,15 +466,6 @@ "@artistCompilations": { "description": "Section header for compilations" }, - "artistReleases": "{count, plural, one {{count} релиз} few {{count} релиза} many {{count} релизов} other {{count} релизов}}", - "@artistReleases": { - "description": "Artist release count", - "placeholders": { - "count": { - "type": "int" - } - } - }, "artistPopular": "Популярное", "@artistPopular": { "description": "Section header for popular/top tracks" @@ -696,34 +480,6 @@ } } }, - "trackMetadataTitle": "Информация о треке", - "@trackMetadataTitle": { - "description": "Track metadata screen title" - }, - "trackMetadataArtist": "Исполнитель", - "@trackMetadataArtist": { - "description": "Metadata field - artist name" - }, - "trackMetadataAlbum": "Альбом", - "@trackMetadataAlbum": { - "description": "Metadata field - album name" - }, - "trackMetadataDuration": "Продолжительность", - "@trackMetadataDuration": { - "description": "Metadata field - track length" - }, - "trackMetadataQuality": "Качество", - "@trackMetadataQuality": { - "description": "Metadata field - audio quality" - }, - "trackMetadataPath": "Путь к файлу", - "@trackMetadataPath": { - "description": "Metadata field - file location" - }, - "trackMetadataDownloadedAt": "Скачано", - "@trackMetadataDownloadedAt": { - "description": "Metadata field - download date" - }, "trackMetadataService": "Сервис", "@trackMetadataService": { "description": "Metadata field - download service used" @@ -740,54 +496,10 @@ "@trackMetadataDelete": { "description": "Action button - delete track" }, - "trackMetadataRedownload": "Скачать снова", - "@trackMetadataRedownload": { - "description": "Action button - download again" - }, - "trackMetadataOpenFolder": "Открыть папку", - "@trackMetadataOpenFolder": { - "description": "Action button - open containing folder" - }, - "setupTitle": "Добро пожаловать в SpotiFLAC", - "@setupTitle": { - "description": "Setup wizard title" - }, - "setupSubtitle": "Давайте начнем", - "@setupSubtitle": { - "description": "Setup wizard subtitle" - }, - "setupStoragePermission": "Доступ к хранилищу", - "@setupStoragePermission": { - "description": "Storage permission step title" - }, - "setupStoragePermissionSubtitle": "Необходимо для сохранения загруженных файлов", - "@setupStoragePermissionSubtitle": { - "description": "Explanation for storage permission" - }, - "setupStoragePermissionGranted": "Разрешение предоставлено", - "@setupStoragePermissionGranted": { - "description": "Status when permission granted" - }, - "setupStoragePermissionDenied": "Разрешение не предоставлено", - "@setupStoragePermissionDenied": { - "description": "Status when permission denied" - }, "setupGrantPermission": "Предоставить разрешение", "@setupGrantPermission": { "description": "Button to request permission" }, - "setupDownloadLocation": "Папка для скачивания", - "@setupDownloadLocation": { - "description": "Download folder step title" - }, - "setupChooseFolder": "Выбрать папку", - "@setupChooseFolder": { - "description": "Button to pick folder" - }, - "setupContinue": "Продолжить", - "@setupContinue": { - "description": "Continue to next step button" - }, "setupSkip": "Пропустить", "@setupSkip": { "description": "Skip current step button" @@ -796,10 +508,6 @@ "@setupStorageAccessRequired": { "description": "Title when storage access needed" }, - "setupStorageAccessMessage": "SpotiFLAC требуется разрешение \"Доступ ко всем файлам\" для сохранения музыкальных файлов в выбранную папку.", - "@setupStorageAccessMessage": { - "description": "Explanation for storage access" - }, "setupStorageAccessMessageAndroid11": "Для Android 11+ требуется разрешение \"Доступ ко всем файлам\" для сохранения файлов в выбранную вами папку загрузки.", "@setupStorageAccessMessageAndroid11": { "description": "Android 11+ specific explanation" @@ -831,10 +539,6 @@ } } }, - "setupSelectDownloadFolder": "Выбрать папку для скачивания", - "@setupSelectDownloadFolder": { - "description": "Folder selection step title" - }, "setupUseDefaultFolder": "Использовать папку по умолчанию?", "@setupUseDefaultFolder": { "description": "Dialog title for default folder" @@ -883,26 +587,6 @@ "@setupDownloadInFlac": { "description": "App tagline in setup" }, - "setupStepStorage": "Хранилище", - "@setupStepStorage": { - "description": "Setup step indicator - storage" - }, - "setupStepNotification": "Уведомления", - "@setupStepNotification": { - "description": "Setup step indicator - notification" - }, - "setupStepFolder": "Папка", - "@setupStepFolder": { - "description": "Setup step indicator - folder" - }, - "setupStepSpotify": "Spotify", - "@setupStepSpotify": { - "description": "Setup step indicator - Spotify API" - }, - "setupStepPermission": "Разрешение", - "@setupStepPermission": { - "description": "Setup step indicator - permission" - }, "setupStorageGranted": "Доступ к хранилищу предоставлен!", "@setupStorageGranted": { "description": "Success message for storage permission" @@ -923,14 +607,6 @@ "@setupNotificationEnable": { "description": "Button to enable notifications" }, - "setupNotificationDescription": "Получайте уведомления о завершении загрузки или о необходимости привлечения внимания.", - "@setupNotificationDescription": { - "description": "Explanation for notifications" - }, - "setupFolderSelected": "Папка для загрузки выбрана!", - "@setupFolderSelected": { - "description": "Success message for folder selection" - }, "setupFolderChoose": "Выбрать папку для скачивания", "@setupFolderChoose": { "description": "Button to choose folder" @@ -939,58 +615,14 @@ "@setupFolderDescription": { "description": "Explanation for folder selection" }, - "setupChangeFolder": "Сменить папку", - "@setupChangeFolder": { - "description": "Button to change selected folder" - }, "setupSelectFolder": "Выбрать папку", "@setupSelectFolder": { "description": "Button to select folder" }, - "setupSpotifyApiOptional": "Spotify API (необязательно)", - "@setupSpotifyApiOptional": { - "description": "Spotify API step title" - }, - "setupSpotifyApiDescription": "Добавьте свои учётные данные Spotify для улучшения результатов поиска и доступа к эксклюзивному контенту Spotify.", - "@setupSpotifyApiDescription": { - "description": "Explanation for Spotify API" - }, - "setupUseSpotifyApi": "Использовать Spotify API", - "@setupUseSpotifyApi": { - "description": "Toggle to enable Spotify API" - }, - "setupEnterCredentialsBelow": "Введите ваши учётные данные ниже", - "@setupEnterCredentialsBelow": { - "description": "Prompt to enter credentials" - }, - "setupUsingDeezer": "Использование Deezer (аккаунт не требуется)", - "@setupUsingDeezer": { - "description": "Status when using Deezer" - }, - "setupEnterClientId": "Введите Client ID Spotify", - "@setupEnterClientId": { - "description": "Placeholder for client ID field" - }, - "setupEnterClientSecret": "Введите Spotify Client Secret", - "@setupEnterClientSecret": { - "description": "Placeholder for client secret field" - }, - "setupGetFreeCredentials": "Получите бесплатный API учётной записи на панели разработчика Spotify.", - "@setupGetFreeCredentials": { - "description": "Info about getting Spotify credentials" - }, "setupEnableNotifications": "Включить уведомления", "@setupEnableNotifications": { "description": "Button to enable notifications" }, - "setupProceedToNextStep": "Теперь вы можете перейти к следующему шагу.", - "@setupProceedToNextStep": { - "description": "Message after completing a step" - }, - "setupNotificationProgressDescription": "Вы будете получать уведомления о ходе загрузки.", - "@setupNotificationProgressDescription": { - "description": "Info about notification usage" - }, "setupNotificationBackgroundDescription": "Получайте уведомления о ходе и завершении загрузки. Это поможет вам отслеживать загрузки, когда приложение находится в фоновом режиме.", "@setupNotificationBackgroundDescription": { "description": "Detailed notification explanation" @@ -999,10 +631,6 @@ "@setupSkipForNow": { "description": "Skip button text" }, - "setupBack": "Назад", - "@setupBack": { - "description": "Back button text" - }, "setupNext": "Далее", "@setupNext": { "description": "Next button text" @@ -1011,26 +639,14 @@ "@setupGetStarted": { "description": "Final setup button" }, - "setupSkipAndStart": "Пропустить и начать", - "@setupSkipAndStart": { - "description": "Skip setup and start app" - }, "setupAllowAccessToManageFiles": "Пожалуйста, включите \"Разрешить доступ для управления всеми файлами\" на следующем экране.", "@setupAllowAccessToManageFiles": { "description": "Instruction for file access permission" }, - "setupGetCredentialsFromSpotify": "Получить учётные данные с developer.spotify.com", - "@setupGetCredentialsFromSpotify": { - "description": "Link text for Spotify developer portal" - }, "dialogCancel": "Отмена", "@dialogCancel": { "description": "Dialog button - cancel action" }, - "dialogOk": "ОК", - "@dialogOk": { - "description": "Dialog button - confirm/acknowledge" - }, "dialogSave": "Сохранить", "@dialogSave": { "description": "Dialog button - save changes" @@ -1043,26 +659,10 @@ "@dialogRetry": { "description": "Dialog button - retry action" }, - "dialogClose": "Закрыть", - "@dialogClose": { - "description": "Dialog button - close dialog" - }, - "dialogYes": "Да", - "@dialogYes": { - "description": "Dialog button - confirm yes" - }, - "dialogNo": "Нет", - "@dialogNo": { - "description": "Dialog button - confirm no" - }, "dialogClear": "Очистить", "@dialogClear": { "description": "Dialog button - clear items" }, - "dialogConfirm": "Подтвердить", - "@dialogConfirm": { - "description": "Dialog button - confirm action" - }, "dialogDone": "Готово", "@dialogDone": { "description": "Dialog button - action completed" @@ -1091,34 +691,10 @@ "@dialogUnsavedChanges": { "description": "Dialog message - unsaved changes" }, - "dialogDownloadFailed": "Ошибка скачивания", - "@dialogDownloadFailed": { - "description": "Dialog title - download error" - }, - "dialogTrackLabel": "Трек:", - "@dialogTrackLabel": { - "description": "Label for track name in error dialog" - }, - "dialogArtistLabel": "Исполнитель:", - "@dialogArtistLabel": { - "description": "Label for artist name in error dialog" - }, - "dialogErrorLabel": "Ошибка:", - "@dialogErrorLabel": { - "description": "Label for error message" - }, "dialogClearAll": "Очистить всё", "@dialogClearAll": { "description": "Dialog title - clear all items" }, - "dialogClearAllDownloads": "Вы уверены, что хотите очистить все загрузки?", - "@dialogClearAllDownloads": { - "description": "Dialog message - clear downloads confirmation" - }, - "dialogRemoveFromDevice": "Удалить с устройства?", - "@dialogRemoveFromDevice": { - "description": "Dialog title - delete file confirmation" - }, "dialogRemoveExtension": "Удалить расширение", "@dialogRemoveExtension": { "description": "Dialog title - uninstall extension" @@ -1257,15 +833,6 @@ "@snackbarViewQueue": { "description": "Snackbar action - view download queue" }, - "snackbarFailedToLoad": "Ошибка загрузки: {error}", - "@snackbarFailedToLoad": { - "description": "Snackbar - loading error", - "placeholders": { - "error": { - "type": "String" - } - } - }, "snackbarUrlCopied": "{platform} ссылка скопирована в буфер обмена", "@snackbarUrlCopied": { "description": "Snackbar - URL copied", @@ -1326,16 +893,6 @@ "@errorRateLimitedMessage": { "description": "Error message - rate limit explanation" }, - "errorFailedToLoad": "Ошибка загрузки {item}", - "@errorFailedToLoad": { - "description": "Error message - loading failed", - "placeholders": { - "item": { - "type": "String", - "description": "Item that failed to load (album/playlist/etc)" - } - } - }, "errorNoTracksFound": "Треки не найдены", "@errorNoTracksFound": { "description": "Error - search returned no results" @@ -1349,34 +906,6 @@ } } }, - "statusQueued": "В очереди", - "@statusQueued": { - "description": "Download status - waiting in queue" - }, - "statusDownloading": "Скачивание", - "@statusDownloading": { - "description": "Download status - in progress" - }, - "statusFinalizing": "Завершение", - "@statusFinalizing": { - "description": "Download status - writing metadata" - }, - "statusCompleted": "Завершено", - "@statusCompleted": { - "description": "Download status - finished" - }, - "statusFailed": "Неудачно", - "@statusFailed": { - "description": "Download status - error occurred" - }, - "statusSkipped": "Пропущено", - "@statusSkipped": { - "description": "Download status - already exists" - }, - "statusPaused": "Приостановлено", - "@statusPaused": { - "description": "Download status - paused" - }, "actionPause": "Пауза", "@actionPause": { "description": "Action button - pause download" @@ -1389,14 +918,6 @@ "@actionCancel": { "description": "Action button - cancel operation" }, - "actionStop": "Стоп", - "@actionStop": { - "description": "Action button - stop operation" - }, - "actionSelect": "Выбрать", - "@actionSelect": { - "description": "Action button - enter selection mode" - }, "actionSelectAll": "Выбрать все", "@actionSelectAll": { "description": "Action button - select all items" @@ -1405,14 +926,6 @@ "@actionDeselect": { "description": "Action button - deselect all" }, - "actionPaste": "Вставить", - "@actionPaste": { - "description": "Action button - paste from clipboard" - }, - "actionImportCsv": "Импорт CSV", - "@actionImportCsv": { - "description": "Action button - import CSV file" - }, "actionRemoveCredentials": "Удалить учётные данные", "@actionRemoveCredentials": { "description": "Action button - delete Spotify credentials" @@ -1434,19 +947,6 @@ "@selectionAllSelected": { "description": "Status - all items selected" }, - "selectionTapToSelect": "Нажмите на треки для выбора", - "@selectionTapToSelect": { - "description": "Hint - how to select items" - }, - "selectionDeleteTracks": "Удалить {count} {count, plural, one {трек} few {трека} many {треков} other {треков}}", - "@selectionDeleteTracks": { - "description": "Delete button with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, "selectionSelectToDelete": "Выберите треки для удаления", "@selectionSelectToDelete": { "description": "Placeholder when nothing selected" @@ -1487,55 +987,10 @@ "@tooltipPlay": { "description": "Tooltip - play button" }, - "tooltipCancel": "Отмена", - "@tooltipCancel": { - "description": "Tooltip - cancel button" - }, - "tooltipStop": "Стоп", - "@tooltipStop": { - "description": "Tooltip - stop button" - }, - "tooltipRetry": "Повторить", - "@tooltipRetry": { - "description": "Tooltip - retry button" - }, - "tooltipRemove": "Убрать", - "@tooltipRemove": { - "description": "Tooltip - remove button" - }, - "tooltipClear": "Очистить", - "@tooltipClear": { - "description": "Tooltip - clear button" - }, - "tooltipPaste": "Вставить", - "@tooltipPaste": { - "description": "Tooltip - paste button" - }, "filenameFormat": "Формат имени файла", "@filenameFormat": { "description": "Setting title - filename pattern" }, - "filenameFormatPreview": "Предпросмотр: {preview}", - "@filenameFormatPreview": { - "description": "Preview of filename pattern", - "placeholders": { - "preview": { - "type": "String" - } - } - }, - "filenameAvailablePlaceholders": "Доступные заполнители:", - "@filenameAvailablePlaceholders": { - "description": "Label for placeholder list" - }, - "filenameHint": "{artist} - {title}", - "@filenameHint": { - "description": "Default filename format hint" - }, - "folderOrganization": "Организация папок", - "@folderOrganization": { - "description": "Setting title - folder structure" - }, "folderOrganizationNone": "Без организации", "@folderOrganizationNone": { "description": "Folder option - flat structure" @@ -1576,27 +1031,10 @@ "@updateAvailable": { "description": "Update dialog title" }, - "updateNewVersion": "Версия {version} доступна", - "@updateNewVersion": { - "description": "Update available message", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "updateDownload": "Скачать", - "@updateDownload": { - "description": "Update button - download update" - }, "updateLater": "Позже", "@updateLater": { "description": "Update button - dismiss" }, - "updateChangelog": "Список изменений", - "@updateChangelog": { - "description": "Link to changelog" - }, "updateStartingDownload": "Загрузка началась...", "@updateStartingDownload": { "description": "Update status - initializing" @@ -1637,14 +1075,6 @@ "@updateDontRemind": { "description": "Update button - skip this version" }, - "providerPriority": "Приоритет провайдера", - "@providerPriority": { - "description": "Setting title - download provider order" - }, - "providerPrioritySubtitle": "Перетащите для изменения порядка", - "@providerPrioritySubtitle": { - "description": "Subtitle for provider priority" - }, "providerPriorityTitle": "Приоритет провайдера", "@providerPriorityTitle": { "description": "Provider priority page title" @@ -1665,14 +1095,6 @@ "@providerExtension": { "description": "Label for extension-provided providers" }, - "metadataProviderPriority": "Приоритет провайдера метаданных", - "@metadataProviderPriority": { - "description": "Setting title - metadata provider order" - }, - "metadataProviderPrioritySubtitle": "Порядок, используемый при получении метаданных", - "@metadataProviderPrioritySubtitle": { - "description": "Subtitle for metadata priority" - }, "metadataProviderPriorityTitle": "Приоритет метаданных", "@metadataProviderPriorityTitle": { "description": "Metadata priority page title" @@ -1697,22 +1119,6 @@ "@logTitle": { "description": "Logs screen title" }, - "logCopy": "Скопировать логи", - "@logCopy": { - "description": "Action - copy logs to clipboard" - }, - "logClear": "Очистить логи", - "@logClear": { - "description": "Action - delete all logs" - }, - "logShare": "Поделиться логами", - "@logShare": { - "description": "Action - share logs file" - }, - "logEmpty": "Логов нет", - "@logEmpty": { - "description": "Empty state title" - }, "logCopied": "Логи скопированы в буфер обмена", "@logCopied": { "description": "Snackbar - logs copied" @@ -1745,22 +1151,6 @@ "@logClearLogsMessage": { "description": "Clear logs confirmation message" }, - "logIspBlocking": "ОБНАРУЖЕНА БЛОКИРОВКА ИНТЕРНЕТ ПРОВАЙДЕРОМ", - "@logIspBlocking": { - "description": "Error category - ISP blocking" - }, - "logRateLimited": "ОГРАНИЧЕННАЯ СКОРОСТЬ", - "@logRateLimited": { - "description": "Error category - rate limiting" - }, - "logNetworkError": "ОШИБКА СЕТИ", - "@logNetworkError": { - "description": "Error category - network issues" - }, - "logTrackNotFound": "ТРЕК НЕ НАЙДЕН", - "@logTrackNotFound": { - "description": "Error category - missing tracks" - }, "logFilterBySeverity": "Фильтровать логи по серьезности", "@logFilterBySeverity": { "description": "Filter dialog title" @@ -1773,60 +1163,6 @@ "@logNoLogsYetSubtitle": { "description": "Empty state subtitle" }, - "logIssueSummary": "Краткое описание проблемы", - "@logIssueSummary": { - "description": "Section header for error summary" - }, - "logIspBlockingDescription": "Ваш провайдер может блокировать доступ к сервисам скачивания", - "@logIspBlockingDescription": { - "description": "ISP blocking explanation" - }, - "logIspBlockingSuggestion": "Попробуйте использовать VPN или измените DNS на 1.1.1.1 или 8.8.8.8", - "@logIspBlockingSuggestion": { - "description": "ISP blocking fix suggestion" - }, - "logRateLimitedDescription": "Слишком много запросов к сервису", - "@logRateLimitedDescription": { - "description": "Rate limit explanation" - }, - "logRateLimitedSuggestion": "Подождите несколько минут, прежде чем повторить попытку", - "@logRateLimitedSuggestion": { - "description": "Rate limit fix suggestion" - }, - "logNetworkErrorDescription": "Обнаружены проблемы с подключением", - "@logNetworkErrorDescription": { - "description": "Network error explanation" - }, - "logNetworkErrorSuggestion": "Проверьте подключение к Интернету", - "@logNetworkErrorSuggestion": { - "description": "Network error fix suggestion" - }, - "logTrackNotFoundDescription": "Некоторые треки не найдены в сервисах загрузки", - "@logTrackNotFoundDescription": { - "description": "Track not found explanation" - }, - "logTrackNotFoundSuggestion": "Трек может быть недоступен в lossless формате", - "@logTrackNotFoundSuggestion": { - "description": "Track not found explanation" - }, - "logTotalErrors": "Всего ошибок: {count}", - "@logTotalErrors": { - "description": "Error count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "logAffected": "Затронуто: {domains}", - "@logAffected": { - "description": "Affected domains display", - "placeholders": { - "domains": { - "type": "String" - } - } - }, "logEntriesFiltered": "Записи ({count} фильтровано)", "@logEntriesFiltered": { "description": "Log count with filter active", @@ -1969,10 +1305,6 @@ "@appearanceLanguage": { "description": "Language setting title" }, - "appearanceLanguageSubtitle": "Выберите предпочитаемый язык", - "@appearanceLanguageSubtitle": { - "description": "Language setting subtitle" - }, "settingsAppearanceSubtitle": "Тема, цвета, дисплей", "@settingsAppearanceSubtitle": { "description": "Appearance settings description" @@ -2001,10 +1333,6 @@ "@pressBackAgainToExit": { "description": "Exit confirmation message" }, - "tracksHeader": "Треки", - "@tracksHeader": { - "description": "Section header for track list" - }, "downloadAllCount": "Скачать все ({count})", "@downloadAllCount": { "description": "Download all button with count", @@ -2151,15 +1479,6 @@ "@trackDeleteConfirmMessage": { "description": "Delete confirmation message" }, - "trackCannotOpen": "Невозможно открыть: {message}", - "@trackCannotOpen": { - "description": "Error opening file", - "placeholders": { - "message": { - "type": "String" - } - } - }, "dateToday": "Сегодня", "@dateToday": { "description": "Relative date - today" @@ -2195,22 +1514,6 @@ } } }, - "concurrentSequential": "Последовательно", - "@concurrentSequential": { - "description": "Download mode - one at a time" - }, - "concurrentParallel2": "2 параллельно", - "@concurrentParallel2": { - "description": "Download mode - 2 simultaneous" - }, - "concurrentParallel3": "3 параллельно", - "@concurrentParallel3": { - "description": "Download mode - 3 simultaneous" - }, - "tapToSeeError": "Нажмите, чтобы увидеть подробности ошибки", - "@tapToSeeError": { - "description": "Tooltip for failed download" - }, "storeFilterAll": "Все", "@storeFilterAll": { "description": "Store filter - all extensions" @@ -2239,18 +1542,6 @@ "@storeClearFilters": { "description": "Button to clear all filters" }, - "storeNoResults": "Расширения не найдены", - "@storeNoResults": { - "description": "Empty state when no extensions match filters" - }, - "extensionProviderPriority": "Приоритет провайдера", - "@extensionProviderPriority": { - "description": "Extension capability - provider priority" - }, - "extensionInstallButton": "Установить расширение", - "@extensionInstallButton": { - "description": "Button to install extension" - }, "extensionDefaultProvider": "По умолчанию (Deezer/Spotify)", "@extensionDefaultProvider": { "description": "Default search provider option" @@ -2450,46 +1741,6 @@ "@qualityHiResFlacMaxSubtitle": { "description": "Technical spec for hi-res max" }, - "qualityLossy": "Lossy", - "@qualityLossy": { - "description": "Quality option - lossy format (MP3/Opus)" - }, - "qualityLossyMp3Subtitle": "Opus 320 кбит/с (конвертировать из FLAC)", - "@qualityLossyMp3Subtitle": { - "description": "Technical spec for lossy MP3" - }, - "qualityLossyOpusSubtitle": "Opus 128 кбит/с (конвертировать из FLAC)", - "@qualityLossyOpusSubtitle": { - "description": "Technical spec for lossy Opus" - }, - "enableLossyOption": "Включить опцию Lossy", - "@enableLossyOption": { - "description": "Setting - enable lossy quality option" - }, - "enableLossyOptionSubtitleOn": "Доступно качество с потерями", - "@enableLossyOptionSubtitleOn": { - "description": "Subtitle when lossy is enabled" - }, - "enableLossyOptionSubtitleOff": "Скачивать FLAC и конвертировать в MP3 320 кбит/с", - "@enableLossyOptionSubtitleOff": { - "description": "Subtitle when lossy is disabled" - }, - "lossyFormat": "Формат с потерями", - "@lossyFormat": { - "description": "Setting - choose lossy format" - }, - "lossyFormatDescription": "Выберите Lossy формат для конвертации", - "@lossyFormatDescription": { - "description": "Description for lossy format picker" - }, - "lossyFormatMp3Subtitle": "320Кбит/с, лучшая совместимость", - "@lossyFormatMp3Subtitle": { - "description": "MP3 format description" - }, - "lossyFormatOpusSubtitle": "128кбит/с, лучшее качество при меньших размерах", - "@lossyFormatOpusSubtitle": { - "description": "Opus format description" - }, "qualityNote": "Фактическое качество зависит от доступности треков в сервисе", "@qualityNote": { "description": "Note about quality availability" @@ -2518,14 +1769,6 @@ "@downloadUseAlbumArtistForFolders": { "description": "Setting - choose whether artist folders use Album Artist or Track Artist" }, - "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Artist folders use Album Artist when available", - "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { - "description": "Subtitle when Album Artist is used for folder naming" - }, - "downloadUseAlbumArtistForFoldersTrackSubtitle": "Папки исполнителя используют только трек исполнителя", - "@downloadUseAlbumArtistForFoldersTrackSubtitle": { - "description": "Subtitle when Track Artist is used for folder naming" - }, "downloadUsePrimaryArtistOnly": "Primary artist only for folders", "@downloadUsePrimaryArtistOnly": { "description": "Setting - strip featured artists from folder name" @@ -2538,14 +1781,6 @@ "@downloadUsePrimaryArtistOnlyDisabled": { "description": "Subtitle when primary artist only is disabled" }, - "downloadSaveFormat": "Формат сохранения", - "@downloadSaveFormat": { - "description": "Setting - output file format" - }, - "downloadSelectService": "Выбор сервиса", - "@downloadSelectService": { - "description": "Dialog title - choose download service" - }, "downloadSelectQuality": "Выбор качества", "@downloadSelectQuality": { "description": "Dialog title - choose audio quality" @@ -2554,66 +1789,6 @@ "@downloadFrom": { "description": "Label - download source" }, - "downloadDefaultQualityLabel": "Качество по умолчанию", - "@downloadDefaultQualityLabel": { - "description": "Label - default quality setting" - }, - "downloadBestAvailable": "Лучшее из доступных", - "@downloadBestAvailable": { - "description": "Quality option - highest available" - }, - "folderNone": "Отсутствует", - "@folderNone": { - "description": "Folder option - no organization" - }, - "folderNoneSubtitle": "Сохранить все файлы непосредственно в папку загрузки", - "@folderNoneSubtitle": { - "description": "Subtitle for no folder organization" - }, - "folderArtist": "Исполнитель", - "@folderArtist": { - "description": "Folder option - by artist" - }, - "folderArtistSubtitle": "Исполнитель/имя файла", - "@folderArtistSubtitle": { - "description": "Folder structure example" - }, - "folderAlbum": "Альбом", - "@folderAlbum": { - "description": "Folder option - by album" - }, - "folderAlbumSubtitle": "Альбом/имя файла", - "@folderAlbumSubtitle": { - "description": "Folder structure example" - }, - "folderArtistAlbum": "Исполнитель/Альбом", - "@folderArtistAlbum": { - "description": "Folder option - nested" - }, - "folderArtistAlbumSubtitle": "Исполнитель/ Альбом/имя файла", - "@folderArtistAlbumSubtitle": { - "description": "Folder structure example" - }, - "serviceTidal": "Tidal", - "@serviceTidal": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceQobuz": "Qobuz", - "@serviceQobuz": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceAmazon": "Amazon", - "@serviceAmazon": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceDeezer": "Deezer", - "@serviceDeezer": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceSpotify": "Spotify", - "@serviceSpotify": { - "description": "Service name - DO NOT TRANSLATE" - }, "appearanceAmoledDark": "AMOLED", "@appearanceAmoledDark": { "description": "Theme option - pure black" @@ -2622,18 +1797,6 @@ "@appearanceAmoledDarkSubtitle": { "description": "Subtitle for AMOLED dark" }, - "appearanceChooseAccentColor": "Выберите акцентный цвет", - "@appearanceChooseAccentColor": { - "description": "Color picker dialog title" - }, - "appearanceChooseTheme": "Режим темы", - "@appearanceChooseTheme": { - "description": "Theme picker dialog title" - }, - "queueTitle": "Очередь скачиваний", - "@queueTitle": { - "description": "Queue screen title" - }, "queueClearAll": "Очистить всё", "@queueClearAll": { "description": "Button - clear all queue items" @@ -2642,22 +1805,6 @@ "@queueClearAllMessage": { "description": "Clear queue confirmation" }, - "queueExportFailed": "Экспорт", - "@queueExportFailed": { - "description": "Button - export failed downloads to TXT" - }, - "queueExportFailedSuccess": "Сбой при экспорте загрузок в файл TXT", - "@queueExportFailedSuccess": { - "description": "Success message after exporting failed downloads" - }, - "queueExportFailedClear": "Не удалось очистить", - "@queueExportFailedClear": { - "description": "Action to clear failed downloads after export" - }, - "queueExportFailedError": "Не удалось экспортировать загрузки", - "@queueExportFailedError": { - "description": "Error message when export fails" - }, "settingsAutoExportFailed": "Автоэкспорт неудачных загрузок", "@settingsAutoExportFailed": { "description": "Setting toggle for auto-export" @@ -2682,38 +1829,6 @@ "@settingsDownloadNetworkSubtitle": { "description": "Subtitle explaining network preference" }, - "queueEmpty": "Нет загрузок в очереди", - "@queueEmpty": { - "description": "Empty queue state title" - }, - "queueEmptySubtitle": "Добавить треки с главного экрана", - "@queueEmptySubtitle": { - "description": "Empty queue state subtitle" - }, - "queueClearCompleted": "Очистка завершена", - "@queueClearCompleted": { - "description": "Button - clear finished downloads" - }, - "queueDownloadFailed": "Ошибка скачивания", - "@queueDownloadFailed": { - "description": "Error dialog title" - }, - "queueTrackLabel": "Трек:", - "@queueTrackLabel": { - "description": "Label in error dialog" - }, - "queueArtistLabel": "Исполнитель:", - "@queueArtistLabel": { - "description": "Label in error dialog" - }, - "queueErrorLabel": "Ошибка:", - "@queueErrorLabel": { - "description": "Label in error dialog" - }, - "queueUnknownError": "Неизвестная ошибка", - "@queueUnknownError": { - "description": "Fallback error message" - }, "albumFolderArtistAlbum": "Исполнитель / Альбом", "@albumFolderArtistAlbum": { "description": "Album folder option" @@ -2767,19 +1882,6 @@ } } }, - "downloadedAlbumTracksHeader": "Треки", - "@downloadedAlbumTracksHeader": { - "description": "Section header for tracks" - }, - "downloadedAlbumDownloadedCount": "{count} скачано", - "@downloadedAlbumDownloadedCount": { - "description": "Downloaded tracks count badge", - "placeholders": { - "count": { - "type": "int" - } - } - }, "downloadedAlbumSelectedCount": "{count} выбрано", "@downloadedAlbumSelectedCount": { "description": "Selection count indicator", @@ -2820,10 +1922,6 @@ } } }, - "utilityFunctions": "Функции утилиты", - "@utilityFunctions": { - "description": "Extension capability - utility functions" - }, "recentTypeArtist": "Исполнитель", "@recentTypeArtist": { "description": "Recent access item type - artist" @@ -2858,16 +1956,6 @@ } } }, - "errorGeneric": "Ошибка: {message}", - "@errorGeneric": { - "description": "Generic error message format", - "placeholders": { - "message": { - "type": "String", - "description": "Error message" - } - } - }, "discographyDownload": "Скачать дискографию", "@discographyDownload": { "description": "Button - download artist discography" @@ -3034,10 +2122,6 @@ "@libraryTitle": { "description": "Library settings page title" }, - "libraryStatus": "Статус Библиотеки", - "@libraryStatus": { - "description": "Section header for library status" - }, "libraryScanSettings": "Настройки сканирования", "@libraryScanSettings": { "description": "Section header for scan settings" @@ -3114,15 +2198,6 @@ "@libraryAboutDescription": { "description": "Description of local library feature" }, - "libraryTracksCount": "{count} {count, plural, one {трек} few {трека} many {треков} other{треков}}", - "@libraryTracksCount": { - "description": "Track count in library", - "placeholders": { - "count": { - "type": "int" - } - } - }, "libraryLastScanned": "Последнее сканирование: {time}", "@libraryLastScanned": { "description": "Last scan time display", @@ -3237,26 +2312,6 @@ "@libraryFilterFormat": { "description": "Filter section - file format" }, - "libraryFilterDate": "Дата добавления", - "@libraryFilterDate": { - "description": "Filter section - date range" - }, - "libraryFilterDateToday": "Сегодня", - "@libraryFilterDateToday": { - "description": "Filter option - today only" - }, - "libraryFilterDateWeek": "На этой неделе", - "@libraryFilterDateWeek": { - "description": "Filter option - this week" - }, - "libraryFilterDateMonth": "В этом месяце", - "@libraryFilterDateMonth": { - "description": "Filter option - this month" - }, - "libraryFilterDateYear": "В этом году", - "@libraryFilterDateYear": { - "description": "Filter option - this year" - }, "libraryFilterSort": "Сортировка", "@libraryFilterSort": { "description": "Filter section - sort order" @@ -3269,15 +2324,6 @@ "@libraryFilterSortOldest": { "description": "Sort option - oldest first" }, - "libraryFilterActive": "{count} фильтр(-ов) активно", - "@libraryFilterActive": { - "description": "Badge showing number of active filters", - "placeholders": { - "count": { - "type": "int" - } - } - }, "timeJustNow": "Только что", "@timeJustNow": { "description": "Relative time - less than a minute ago" @@ -3300,106 +2346,6 @@ } } }, - "storageSwitchTitle": "Сменить режим хранения", - "@storageSwitchTitle": { - "description": "Dialog title when switching storage mode" - }, - "storageSwitchToSafTitle": "Переключиться на SAF хранилище?", - "@storageSwitchToSafTitle": { - "description": "Dialog title when switching to SAF" - }, - "storageSwitchToAppTitle": "Переключиться хранилище приложения?", - "@storageSwitchToAppTitle": { - "description": "Dialog title when switching to app storage" - }, - "storageSwitchToSafMessage": "Ваши скачанные файлы останутся в текущем расположении и будут доступны.\n\nНовые файлы будут сохранены в выбранной вами папке SAF.", - "@storageSwitchToSafMessage": { - "description": "Explanation when switching to SAF" - }, - "storageSwitchToAppMessage": "Ваши скачанные файлы останутся в текущем выбранной вами папке SAF.\n\nНовые файлы будут сохранены в папке Music/SpotiFLAC.", - "@storageSwitchToAppMessage": { - "description": "Explanation when switching to app storage" - }, - "storageSwitchExistingDownloads": "Существующие загрузки", - "@storageSwitchExistingDownloads": { - "description": "Section header for existing downloads info" - }, - "storageSwitchExistingDownloadsInfo": "{count, plural, one {{count} трек} few {{count} трека} many {{count} треков} other {{count} треков}} в {mode} хранилище", - "@storageSwitchExistingDownloadsInfo": { - "description": "Info about existing downloads count", - "placeholders": { - "count": { - "type": "int" - }, - "mode": { - "type": "String" - } - } - }, - "storageSwitchNewDownloads": "Новые загрузки", - "@storageSwitchNewDownloads": { - "description": "Section header for new downloads info" - }, - "storageSwitchNewDownloadsLocation": "Будет сохранено в: {location}", - "@storageSwitchNewDownloadsLocation": { - "description": "Shows where new downloads will go", - "placeholders": { - "location": { - "type": "String" - } - } - }, - "storageSwitchContinue": "Продолжить", - "@storageSwitchContinue": { - "description": "Button to proceed with storage switch" - }, - "storageSwitchSelectFolder": "Выберите папку SAF", - "@storageSwitchSelectFolder": { - "description": "Button to select SAF folder" - }, - "storageAppStorage": "Хранилище приложения", - "@storageAppStorage": { - "description": "Label for app storage mode" - }, - "storageSafStorage": "Хранилище SAF", - "@storageSafStorage": { - "description": "Label for SAF storage mode" - }, - "storageModeBadge": "Хранилище: {mode}", - "@storageModeBadge": { - "description": "Badge showing storage mode for a track", - "placeholders": { - "mode": { - "type": "String" - } - } - }, - "storageStatsTitle": "Статистика хранилища", - "@storageStatsTitle": { - "description": "Section title for storage stats" - }, - "storageStatsAppCount": "{count, plural, one {{count} трек} few {{count} трека} many {{count} треков} other {{count} треков}} в хранилище приложения", - "@storageStatsAppCount": { - "description": "Count of tracks in app storage", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storageStatsSafCount": "{count, plural, one {{count} трек} few {{count} трека} many {{count} треков} other {{count} треков}} в вашей папке в SAF", - "@storageStatsSafCount": { - "description": "Count of tracks in SAF storage", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storageModeInfo": "Ваши файлы хранятся в нескольких местах", - "@storageModeInfo": { - "description": "Info when user has files in both storage modes" - }, "tutorialWelcomeTitle": "Добро пожаловать в SpotiFLAC!", "@tutorialWelcomeTitle": { "description": "Tutorial welcome page title" @@ -3428,18 +2374,6 @@ "@tutorialSearchDesc": { "description": "Tutorial search page description" }, - "tutorialSearchTip1": "Вставьте ссылку Spotify или Deezer прямо в поле поиска", - "@tutorialSearchTip1": { - "description": "Tutorial search tip 1" - }, - "tutorialSearchTip2": "Или введите название песни, исполнителя или альбом для поиска", - "@tutorialSearchTip2": { - "description": "Tutorial search tip 2" - }, - "tutorialSearchTip3": "Поддержка треков, альбомов, плейлистов и страниц исполнителей", - "@tutorialSearchTip3": { - "description": "Tutorial search tip 3" - }, "tutorialDownloadTitle": "Скачивание музыки", "@tutorialDownloadTitle": { "description": "Tutorial download page title" @@ -3448,18 +2382,6 @@ "@tutorialDownloadDesc": { "description": "Tutorial download page description" }, - "tutorialDownloadTip1": "Нажмите кнопку скачать рядом с любым треком, чтобы начать скачивание", - "@tutorialDownloadTip1": { - "description": "Tutorial download tip 1" - }, - "tutorialDownloadTip2": "Выберите предпочитаемое качество (FLAC, Hi-Res или MP3)", - "@tutorialDownloadTip2": { - "description": "Tutorial download tip 2" - }, - "tutorialDownloadTip3": "Скачать все альбомы или плейлисты одним нажатием", - "@tutorialDownloadTip3": { - "description": "Tutorial download tip 3" - }, "tutorialLibraryTitle": "Ваша библиотека", "@tutorialLibraryTitle": { "description": "Tutorial library page title" @@ -3524,10 +2446,6 @@ "@tutorialReadyMessage": { "description": "Tutorial completion message" }, - "tutorialExample": "EXAMPLE", - "@tutorialExample": { - "description": "Example label in tutorial" - }, "libraryForceFullScan": "Полное сканирование", "@libraryForceFullScan": { "description": "Button to force a complete rescan of library" @@ -3754,10 +2672,6 @@ "@trackReEnrich": { "description": "Menu action - re-embed metadata into audio file" }, - "trackReEnrichSubtitle": "Re-embed metadata without re-downloading", - "@trackReEnrichSubtitle": { - "description": "Subtitle for re-enrich metadata action" - }, "trackReEnrichOnlineSubtitle": "Search metadata online and embed into file", "@trackReEnrichOnlineSubtitle": { "description": "Subtitle for re-enrich metadata action for local items" @@ -3869,15 +2783,21 @@ "@trackConvertFailed": { "description": "Snackbar when conversion fails" }, - "setupModeSelectionTitle": "Выберите режим", - "setupModeSelectionDescription": "Как вы хотите использовать SpotiFLAC? Вы всегда можете изменить это позже в Настройках.", - "setupModeDownloaderTitle": "Загрузчик", - "setupModeDownloaderFeature1": "Скачивайте треки в качестве FLAC без потерь", - "setupModeDownloaderFeature2": "Сохраняйте музыку на устройство для прослушивания офлайн", - "setupModeDownloaderFeature3": "Управляйте своей локальной музыкальной библиотекой", - "setupModeStreamingTitle": "Стриминг", - "setupModeStreamingFeature1": "Слушайте треки мгновенно без скачивания", - "setupModeStreamingFeature2": "Smart Queue автоматически подбирает новую музыку для вас", - "setupModeStreamingFeature3": "Воспроизводите любой трек по запросу с элементами управления", - "setupModeChangeableLater": "Вы можете переключаться между режимами в любое время в Настройках." -} \ No newline at end of file + "downloadedAlbumDownloadedCount": "{count} скачано", + "@downloadedAlbumDownloadedCount": { + "description": "Downloaded tracks count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Artist folders use Album Artist when available", + "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { + "description": "Subtitle when Album Artist is used for folder naming" + }, + "downloadUseAlbumArtistForFoldersTrackSubtitle": "Папки исполнителя используют только трек исполнителя", + "@downloadUseAlbumArtistForFoldersTrackSubtitle": { + "description": "Subtitle when Track Artist is used for folder naming" + } +} diff --git a/lib/l10n/arb/app_tr.arb b/lib/l10n/arb/app_tr.arb index ef9184f9..b7b16c7f 100644 --- a/lib/l10n/arb/app_tr.arb +++ b/lib/l10n/arb/app_tr.arb @@ -5,10 +5,6 @@ "@appName": { "description": "App name - DO NOT TRANSLATE" }, - "appDescription": "Spotify şarkılarını Tidal, Qobuz ve Amazon Music'den yüksek kalitede indir.", - "@appDescription": { - "description": "App description shown in about page" - }, "navHome": "Ara", "@navHome": { "description": "Bottom navigation - Home tab" @@ -17,10 +13,6 @@ "@navLibrary": { "description": "Bottom navigation - Library tab" }, - "navHistory": "Geçmiş", - "@navHistory": { - "description": "Bottom navigation - History tab (legacy)" - }, "navSettings": "Ayarlar", "@navSettings": { "description": "Bottom navigation - Settings tab" @@ -33,20 +25,6 @@ "@homeTitle": { "description": "Home screen title" }, - "homeSearchHint": "Spotify URL'i yapıştır veya ara...", - "@homeSearchHint": { - "description": "Placeholder text in search box" - }, - "homeSearchHintExtension": "{extensionName} ile arat...", - "@homeSearchHintExtension": { - "description": "Placeholder when extension search is active", - "placeholders": { - "extensionName": { - "type": "String", - "description": "Name of the active extension" - } - } - }, "homeSubtitle": "Spotify linki yapıştır veya isimle arat", "@homeSubtitle": { "description": "Subtitle shown below search box" @@ -59,24 +37,6 @@ "@homeRecent": { "description": "Section header for recent searches" }, - "historyTitle": "Geçmiş", - "@historyTitle": { - "description": "History screen title" - }, - "historyDownloading": "({count}) tane indiriliyor", - "@historyDownloading": { - "description": "Tab showing active downloads count", - "placeholders": { - "count": { - "type": "int", - "description": "Number of active downloads" - } - } - }, - "historyDownloaded": "İndirildi", - "@historyDownloaded": { - "description": "Tab showing completed downloads" - }, "historyFilterAll": "Tümü", "@historyFilterAll": { "description": "Filter chip - show all items" @@ -89,48 +49,6 @@ "@historyFilterSingles": { "description": "Filter chip - show singles only" }, - "historyTracksCount": "{count, plural, one {1 şarkı} other {{count} şarkı}}", - "@historyTracksCount": { - "description": "Track count with plural form", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "historyAlbumsCount": "{count, plural, one {1 albüm} other {{count} albüm}}", - "@historyAlbumsCount": { - "description": "Album count with plural form", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "historyNoDownloads": "İndirme geçmişi yok", - "@historyNoDownloads": { - "description": "Empty state title" - }, - "historyNoDownloadsSubtitle": "İndirilen şarkılar burada gözükecek", - "@historyNoDownloadsSubtitle": { - "description": "Empty state subtitle" - }, - "historyNoAlbums": "İndirilen albüm yok", - "@historyNoAlbums": { - "description": "Empty state when filtering albums" - }, - "historyNoAlbumsSubtitle": "Albümleri burada görmek için bir albümden birden fazla şarkı indir", - "@historyNoAlbumsSubtitle": { - "description": "Empty state subtitle for albums filter" - }, - "historyNoSingles": "Single indirilmemiş", - "@historyNoSingles": { - "description": "Empty state when filtering singles" - }, - "historyNoSinglesSubtitle": "Single şarkılar burada gözükecek", - "@historyNoSinglesSubtitle": { - "description": "Empty state subtitle for singles filter" - }, "historySearchHint": "Arama geçmişi...", "@historySearchHint": { "description": "Search bar placeholder in history" @@ -163,34 +81,6 @@ "@downloadTitle": { "description": "Download settings page title" }, - "downloadLocation": "İndirme Konumu", - "@downloadLocation": { - "description": "Setting for download folder" - }, - "downloadLocationSubtitle": "Dosyaları nereye kaydedeceğinizi seçin", - "@downloadLocationSubtitle": { - "description": "Subtitle for download location" - }, - "downloadLocationDefault": "Varsayılan dizin", - "@downloadLocationDefault": { - "description": "Shown when using default folder" - }, - "downloadDefaultService": "Varsayılan Hizmet", - "@downloadDefaultService": { - "description": "Setting for preferred download service (Tidal/Qobuz/Amazon)" - }, - "downloadDefaultServiceSubtitle": "İndirmeler için kullanılan hizmet", - "@downloadDefaultServiceSubtitle": { - "description": "Subtitle for default service" - }, - "downloadDefaultQuality": "Varsayılan Kalite", - "@downloadDefaultQuality": { - "description": "Setting for audio quality" - }, - "downloadAskQuality": "İndirmeden Önce Kaliteyi Sor", - "@downloadAskQuality": { - "description": "Toggle to show quality picker" - }, "downloadAskQualitySubtitle": "Her indirmeden önce kalite seçim ekranını göster", "@downloadAskQualitySubtitle": { "description": "Subtitle for ask quality toggle" @@ -203,38 +93,10 @@ "@downloadFolderOrganization": { "description": "Setting for folder structure" }, - "downloadSeparateSingles": "Single'ları Ayır", - "@downloadSeparateSingles": { - "description": "Toggle to separate single tracks" - }, - "downloadSeparateSinglesSubtitle": "Single şarkıları ayrı dosyaya koy", - "@downloadSeparateSinglesSubtitle": { - "description": "Subtitle for separate singles toggle" - }, - "qualityBest": "Mevcut en iyi", - "@qualityBest": { - "description": "Audio quality option - highest available" - }, - "qualityFlac": "FLAC", - "@qualityFlac": { - "description": "Audio quality option - FLAC lossless" - }, - "quality320": "320 kbps", - "@quality320": { - "description": "Audio quality option - 320kbps MP3" - }, - "quality128": "128 kbps", - "@quality128": { - "description": "Audio quality option - 128kbps MP3" - }, "appearanceTitle": "Görünüm", "@appearanceTitle": { "description": "Appearance settings page title" }, - "appearanceTheme": "Tema", - "@appearanceTheme": { - "description": "Theme mode setting" - }, "appearanceThemeSystem": "Sistem", "@appearanceThemeSystem": { "description": "Follow system theme" @@ -255,10 +117,6 @@ "@appearanceDynamicColorSubtitle": { "description": "Subtitle for dynamic color" }, - "appearanceAccentColor": "Vurgu Rengi", - "@appearanceAccentColor": { - "description": "Custom accent color picker" - }, "appearanceHistoryView": "Geçmiş Düzeni", "@appearanceHistoryView": { "description": "Layout style for history" @@ -275,10 +133,6 @@ "@optionsTitle": { "description": "Options settings page title" }, - "optionsSearchSource": "Arama Kaynağı", - "@optionsSearchSource": { - "description": "Section for search provider settings" - }, "optionsPrimaryProvider": "Ana Kaynek", "@optionsPrimaryProvider": { "description": "Main search provider setting" @@ -438,22 +292,6 @@ "@extensionsTitle": { "description": "Extensions page title" }, - "extensionsInstalled": "Kurulu Eklentiler", - "@extensionsInstalled": { - "description": "Section header for installed extensions" - }, - "extensionsNone": "Hiçbir eklenti kurulmamış", - "@extensionsNone": { - "description": "Empty state title" - }, - "extensionsNoneSubtitle": "Dükkan sekmesinden eklenti indir", - "@extensionsNoneSubtitle": { - "description": "Empty state subtitle" - }, - "extensionsEnabled": "Etkin", - "@extensionsEnabled": { - "description": "Extension status - active" - }, "extensionsDisabled": "Devre Dışı", "@extensionsDisabled": { "description": "Extension status - inactive" @@ -480,10 +318,6 @@ "@extensionsUninstall": { "description": "Uninstall extension button" }, - "extensionsSetAsSearch": "Arama Sağlayıcı olarak Ayarla", - "@extensionsSetAsSearch": { - "description": "Use extension for search" - }, "storeTitle": "Eklenti Dükkanı", "@storeTitle": { "description": "Store screen title" @@ -580,10 +414,6 @@ "@aboutSocial": { "description": "Section for social links" }, - "aboutSupport": "Destek", - "@aboutSupport": { - "description": "Section for support/donation links" - }, "aboutApp": "Uygulama", "@aboutApp": { "description": "Section for app info" @@ -604,14 +434,6 @@ "@aboutSjdonadoDesc": { "description": "Credit description for sjdonado" }, - "aboutDoubleDouble": "DoubleDouble", - "@aboutDoubleDouble": { - "description": "Name of Amazon API service - DO NOT TRANSLATE" - }, - "aboutDoubleDoubleDesc": "Amazom Music indirmeleri için harika bir API. Ücretsiz yaptığın için teşekkürler!", - "@aboutDoubleDoubleDesc": { - "description": "Credit for DoubleDouble API" - }, "aboutDabMusic": "DAB Music", "@aboutDabMusic": { "description": "Name of Qobuz API service - DO NOT TRANSLATE" @@ -632,35 +454,6 @@ "@aboutAppDescription": { "description": "App description in header card" }, - "albumTitle": "Albüm", - "@albumTitle": { - "description": "Album screen title" - }, - "albumTracks": "{count, plural, one {1 şarkı} other {{count} şarkı}}", - "@albumTracks": { - "description": "Album track count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "albumDownloadAll": "Tümünü İndir", - "@albumDownloadAll": { - "description": "Button to download all tracks" - }, - "albumDownloadRemaining": "Kalanını İndir", - "@albumDownloadRemaining": { - "description": "Button to download remaining tracks" - }, - "playlistTitle": "Çalma Listesi", - "@playlistTitle": { - "description": "Playlist screen title" - }, - "artistTitle": "Sanatçı", - "@artistTitle": { - "description": "Artist screen title" - }, "artistAlbums": "Albümler", "@artistAlbums": { "description": "Section header for artist albums" @@ -673,15 +466,6 @@ "@artistCompilations": { "description": "Section header for compilations" }, - "artistReleases": "{count, plural, =1{1 yayın} other{{count} yayın}}", - "@artistReleases": { - "description": "Artist release count", - "placeholders": { - "count": { - "type": "int" - } - } - }, "artistPopular": "Popüler", "@artistPopular": { "description": "Section header for popular/top tracks" @@ -696,34 +480,6 @@ } } }, - "trackMetadataTitle": "Şarkı Bilgisi", - "@trackMetadataTitle": { - "description": "Track metadata screen title" - }, - "trackMetadataArtist": "Sanatçı", - "@trackMetadataArtist": { - "description": "Metadata field - artist name" - }, - "trackMetadataAlbum": "Albüm", - "@trackMetadataAlbum": { - "description": "Metadata field - album name" - }, - "trackMetadataDuration": "Süre", - "@trackMetadataDuration": { - "description": "Metadata field - track length" - }, - "trackMetadataQuality": "Kalite", - "@trackMetadataQuality": { - "description": "Metadata field - audio quality" - }, - "trackMetadataPath": "Dosya Yolu", - "@trackMetadataPath": { - "description": "Metadata field - file location" - }, - "trackMetadataDownloadedAt": "İndirme tarihi", - "@trackMetadataDownloadedAt": { - "description": "Metadata field - download date" - }, "trackMetadataService": "Hizmet", "@trackMetadataService": { "description": "Metadata field - download service used" @@ -740,54 +496,10 @@ "@trackMetadataDelete": { "description": "Action button - delete track" }, - "trackMetadataRedownload": "Yeniden İndir", - "@trackMetadataRedownload": { - "description": "Action button - download again" - }, - "trackMetadataOpenFolder": "Klasörü Aç", - "@trackMetadataOpenFolder": { - "description": "Action button - open containing folder" - }, - "setupTitle": "SpotiFLAC'e Hoşgeldiniz", - "@setupTitle": { - "description": "Setup wizard title" - }, - "setupSubtitle": "Hadi başlayalım", - "@setupSubtitle": { - "description": "Setup wizard subtitle" - }, - "setupStoragePermission": "Depolama İzni", - "@setupStoragePermission": { - "description": "Storage permission step title" - }, - "setupStoragePermissionSubtitle": "İndirilen dosyaları kaydetmek için gerekli", - "@setupStoragePermissionSubtitle": { - "description": "Explanation for storage permission" - }, - "setupStoragePermissionGranted": "İzin verildi", - "@setupStoragePermissionGranted": { - "description": "Status when permission granted" - }, - "setupStoragePermissionDenied": "İzin reddedildi", - "@setupStoragePermissionDenied": { - "description": "Status when permission denied" - }, "setupGrantPermission": "İzin Ver", "@setupGrantPermission": { "description": "Button to request permission" }, - "setupDownloadLocation": "İndirme Konumu", - "@setupDownloadLocation": { - "description": "Download folder step title" - }, - "setupChooseFolder": "Klasör Seç", - "@setupChooseFolder": { - "description": "Button to pick folder" - }, - "setupContinue": "Devam", - "@setupContinue": { - "description": "Continue to next step button" - }, "setupSkip": "Şimdilik atla", "@setupSkip": { "description": "Skip current step button" @@ -796,10 +508,6 @@ "@setupStorageAccessRequired": { "description": "Title when storage access needed" }, - "setupStorageAccessMessage": "SpotiFLAC'ın şarkıları seçili klasörünüze kaydetmek için \"Bütün dosyalara eriş\" iznine ihtiyacı var.", - "@setupStorageAccessMessage": { - "description": "Explanation for storage access" - }, "setupStorageAccessMessageAndroid11": "Android 11 ve sonrasında şarkıların seçili klasörünüze kaydedilebilmesi için \"Bütün dosyalara eriş\" iznine ihtiyaç var.", "@setupStorageAccessMessageAndroid11": { "description": "Android 11+ specific explanation" @@ -831,10 +539,6 @@ } } }, - "setupSelectDownloadFolder": "İndirilecek Klasörü Seç", - "@setupSelectDownloadFolder": { - "description": "Folder selection step title" - }, "setupUseDefaultFolder": "Varsayılan Klasörü Kullan?", "@setupUseDefaultFolder": { "description": "Dialog title for default folder" @@ -883,26 +587,6 @@ "@setupDownloadInFlac": { "description": "App tagline in setup" }, - "setupStepStorage": "Depolama", - "@setupStepStorage": { - "description": "Setup step indicator - storage" - }, - "setupStepNotification": "Bildirim", - "@setupStepNotification": { - "description": "Setup step indicator - notification" - }, - "setupStepFolder": "Klasör", - "@setupStepFolder": { - "description": "Setup step indicator - folder" - }, - "setupStepSpotify": "Spotify", - "@setupStepSpotify": { - "description": "Setup step indicator - Spotify API" - }, - "setupStepPermission": "İzin", - "@setupStepPermission": { - "description": "Setup step indicator - permission" - }, "setupStorageGranted": "Depolama İzni Verildi!", "@setupStorageGranted": { "description": "Success message for storage permission" @@ -923,14 +607,6 @@ "@setupNotificationEnable": { "description": "Button to enable notifications" }, - "setupNotificationDescription": "İndirmeler bittiğinde veya bakılması gereken bir şey olduğunda haberdar olun.", - "@setupNotificationDescription": { - "description": "Explanation for notifications" - }, - "setupFolderSelected": "İndirilecek Klasör Seçildi!", - "@setupFolderSelected": { - "description": "Success message for folder selection" - }, "setupFolderChoose": "İndirilecek Klasörü Seç", "@setupFolderChoose": { "description": "Button to choose folder" @@ -939,58 +615,14 @@ "@setupFolderDescription": { "description": "Explanation for folder selection" }, - "setupChangeFolder": "Klasörü Değiştir", - "@setupChangeFolder": { - "description": "Button to change selected folder" - }, "setupSelectFolder": "Klasör Seç", "@setupSelectFolder": { "description": "Button to select folder" }, - "setupSpotifyApiOptional": "Spotify API (İsteğe Bağlı)", - "@setupSpotifyApiOptional": { - "description": "Spotify API step title" - }, - "setupSpotifyApiDescription": "Daha iyi arama sonuçları ve Spotify'a özel içeriklere erişmek için Spotify API kimlik bilgilerini gir.", - "@setupSpotifyApiDescription": { - "description": "Explanation for Spotify API" - }, - "setupUseSpotifyApi": "Spotify API'ı kullan", - "@setupUseSpotifyApi": { - "description": "Toggle to enable Spotify API" - }, - "setupEnterCredentialsBelow": "Kimlik bilgilerini aşağıya gir", - "@setupEnterCredentialsBelow": { - "description": "Prompt to enter credentials" - }, - "setupUsingDeezer": "Deezer kullanılıyor (hesap gerekli değil)", - "@setupUsingDeezer": { - "description": "Status when using Deezer" - }, - "setupEnterClientId": "Spotify Client ID gir", - "@setupEnterClientId": { - "description": "Placeholder for client ID field" - }, - "setupEnterClientSecret": "Spotify Client Secret gir", - "@setupEnterClientSecret": { - "description": "Placeholder for client secret field" - }, - "setupGetFreeCredentials": "Spotify Developer Dashboard'tan API kimlik bilgilerini ücretsiz alın.", - "@setupGetFreeCredentials": { - "description": "Info about getting Spotify credentials" - }, "setupEnableNotifications": "Bildirimleri Etkinleştir", "@setupEnableNotifications": { "description": "Button to enable notifications" }, - "setupProceedToNextStep": "Bir sonraki adıma geçebilirsin.", - "@setupProceedToNextStep": { - "description": "Message after completing a step" - }, - "setupNotificationProgressDescription": "İndirme ilerlemelerinin bildirimlerini alacaksın.", - "@setupNotificationProgressDescription": { - "description": "Info about notification usage" - }, "setupNotificationBackgroundDescription": "İndirmelerin durumu hakkında bildirim al. Bunu açmak uygulama arka plandayken indirmelerinizi takip etmenizi sağlar.", "@setupNotificationBackgroundDescription": { "description": "Detailed notification explanation" @@ -999,10 +631,6 @@ "@setupSkipForNow": { "description": "Skip button text" }, - "setupBack": "Geri", - "@setupBack": { - "description": "Back button text" - }, "setupNext": "Sıradaki", "@setupNext": { "description": "Next button text" @@ -1011,26 +639,14 @@ "@setupGetStarted": { "description": "Final setup button" }, - "setupSkipAndStart": "Kurulumu atla", - "@setupSkipAndStart": { - "description": "Skip setup and start app" - }, "setupAllowAccessToManageFiles": "Lütfen bir sonraki ekranda \"Bütün dosyalara eriş\" iznini sağlayın.", "@setupAllowAccessToManageFiles": { "description": "Instruction for file access permission" }, - "setupGetCredentialsFromSpotify": "Kimlik bilgilerini developer.spotify.com'dan alın", - "@setupGetCredentialsFromSpotify": { - "description": "Link text for Spotify developer portal" - }, "dialogCancel": "İptal", "@dialogCancel": { "description": "Dialog button - cancel action" }, - "dialogOk": "Tamam", - "@dialogOk": { - "description": "Dialog button - confirm/acknowledge" - }, "dialogSave": "Kaydet", "@dialogSave": { "description": "Dialog button - save changes" @@ -1043,26 +659,10 @@ "@dialogRetry": { "description": "Dialog button - retry action" }, - "dialogClose": "Kapat", - "@dialogClose": { - "description": "Dialog button - close dialog" - }, - "dialogYes": "Evet", - "@dialogYes": { - "description": "Dialog button - confirm yes" - }, - "dialogNo": "Hayır", - "@dialogNo": { - "description": "Dialog button - confirm no" - }, "dialogClear": "Temizle", "@dialogClear": { "description": "Dialog button - clear items" }, - "dialogConfirm": "Onayla", - "@dialogConfirm": { - "description": "Dialog button - confirm action" - }, "dialogDone": "Tamamlandı", "@dialogDone": { "description": "Dialog button - action completed" @@ -1091,34 +691,10 @@ "@dialogUnsavedChanges": { "description": "Dialog message - unsaved changes" }, - "dialogDownloadFailed": "İndirme Başarısız", - "@dialogDownloadFailed": { - "description": "Dialog title - download error" - }, - "dialogTrackLabel": "Şarkı:", - "@dialogTrackLabel": { - "description": "Label for track name in error dialog" - }, - "dialogArtistLabel": "Sanatçı:", - "@dialogArtistLabel": { - "description": "Label for artist name in error dialog" - }, - "dialogErrorLabel": "Hata:", - "@dialogErrorLabel": { - "description": "Label for error message" - }, "dialogClearAll": "Tümünü Temizle", "@dialogClearAll": { "description": "Dialog title - clear all items" }, - "dialogClearAllDownloads": "Bütün indirmeleri temizlemek istediğinize emin misiniz?", - "@dialogClearAllDownloads": { - "description": "Dialog message - clear downloads confirmation" - }, - "dialogRemoveFromDevice": "Cihazdan kaldır?", - "@dialogRemoveFromDevice": { - "description": "Dialog title - delete file confirmation" - }, "dialogRemoveExtension": "Eklentiyi Kaldır", "@dialogRemoveExtension": { "description": "Dialog title - uninstall extension" @@ -1257,15 +833,6 @@ "@snackbarViewQueue": { "description": "Snackbar action - view download queue" }, - "snackbarFailedToLoad": "Yüklenemedi: {error}", - "@snackbarFailedToLoad": { - "description": "Snackbar - loading error", - "placeholders": { - "error": { - "type": "String" - } - } - }, "snackbarUrlCopied": "{platform} Bağlantı panoya kopyalandı", "@snackbarUrlCopied": { "description": "Snackbar - URL copied", @@ -1326,16 +893,6 @@ "@errorRateLimitedMessage": { "description": "Error message - rate limit explanation" }, - "errorFailedToLoad": "{item} yüklenirken hata oluştu", - "@errorFailedToLoad": { - "description": "Error message - loading failed", - "placeholders": { - "item": { - "type": "String", - "description": "Item that failed to load (album/playlist/etc)" - } - } - }, "errorNoTracksFound": "Parça bulunamadı", "@errorNoTracksFound": { "description": "Error - search returned no results" @@ -1349,34 +906,6 @@ } } }, - "statusQueued": "Sıraya alındı", - "@statusQueued": { - "description": "Download status - waiting in queue" - }, - "statusDownloading": "İndiriliyor", - "@statusDownloading": { - "description": "Download status - in progress" - }, - "statusFinalizing": "Tamamlanıyor", - "@statusFinalizing": { - "description": "Download status - writing metadata" - }, - "statusCompleted": "Tamamlandı", - "@statusCompleted": { - "description": "Download status - finished" - }, - "statusFailed": "Başarısız", - "@statusFailed": { - "description": "Download status - error occurred" - }, - "statusSkipped": "Atlandı", - "@statusSkipped": { - "description": "Download status - already exists" - }, - "statusPaused": "Durduruldu", - "@statusPaused": { - "description": "Download status - paused" - }, "actionPause": "Duraklat", "@actionPause": { "description": "Action button - pause download" @@ -1389,14 +918,6 @@ "@actionCancel": { "description": "Action button - cancel operation" }, - "actionStop": "Durdur", - "@actionStop": { - "description": "Action button - stop operation" - }, - "actionSelect": "Seç", - "@actionSelect": { - "description": "Action button - enter selection mode" - }, "actionSelectAll": "Tümünü Seç", "@actionSelectAll": { "description": "Action button - select all items" @@ -1405,14 +926,6 @@ "@actionDeselect": { "description": "Action button - deselect all" }, - "actionPaste": "Yapıştır", - "@actionPaste": { - "description": "Action button - paste from clipboard" - }, - "actionImportCsv": "CSV İçe Aktar", - "@actionImportCsv": { - "description": "Action button - import CSV file" - }, "actionRemoveCredentials": "Özellikleri kaldır", "@actionRemoveCredentials": { "description": "Action button - delete Spotify credentials" @@ -1434,19 +947,6 @@ "@selectionAllSelected": { "description": "Status - all items selected" }, - "selectionTapToSelect": "Seçmek için parçalara dokunun", - "@selectionTapToSelect": { - "description": "Hint - how to select items" - }, - "selectionDeleteTracks": "{count} {count, plural, =1{şarkıyı} other{şarkıyı}} sil", - "@selectionDeleteTracks": { - "description": "Delete button with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, "selectionSelectToDelete": "Silinecek parçaları seçin", "@selectionSelectToDelete": { "description": "Placeholder when nothing selected" @@ -1487,55 +987,10 @@ "@tooltipPlay": { "description": "Tooltip - play button" }, - "tooltipCancel": "Vazgeç", - "@tooltipCancel": { - "description": "Tooltip - cancel button" - }, - "tooltipStop": "Durdur", - "@tooltipStop": { - "description": "Tooltip - stop button" - }, - "tooltipRetry": "Yeniden dene", - "@tooltipRetry": { - "description": "Tooltip - retry button" - }, - "tooltipRemove": "Kaldır", - "@tooltipRemove": { - "description": "Tooltip - remove button" - }, - "tooltipClear": "Temizle", - "@tooltipClear": { - "description": "Tooltip - clear button" - }, - "tooltipPaste": "Yapıştır", - "@tooltipPaste": { - "description": "Tooltip - paste button" - }, "filenameFormat": "Dosya adı formatı", "@filenameFormat": { "description": "Setting title - filename pattern" }, - "filenameFormatPreview": "Önizleme: {preview}", - "@filenameFormatPreview": { - "description": "Preview of filename pattern", - "placeholders": { - "preview": { - "type": "String" - } - } - }, - "filenameAvailablePlaceholders": "Kullanılabilir yer tutucular:", - "@filenameAvailablePlaceholders": { - "description": "Label for placeholder list" - }, - "filenameHint": "{artist} - {title}", - "@filenameHint": { - "description": "Default filename format hint" - }, - "folderOrganization": "Klasör Organizasyonu", - "@folderOrganization": { - "description": "Setting title - folder structure" - }, "folderOrganizationNone": "Organizasyon yok", "@folderOrganizationNone": { "description": "Folder option - flat structure" @@ -1576,27 +1031,10 @@ "@updateAvailable": { "description": "Update dialog title" }, - "updateNewVersion": "{version} sürümü mevcut", - "@updateNewVersion": { - "description": "Update available message", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "updateDownload": "İndir", - "@updateDownload": { - "description": "Update button - download update" - }, "updateLater": "Daha Sonra", "@updateLater": { "description": "Update button - dismiss" }, - "updateChangelog": "Değişiklikler", - "@updateChangelog": { - "description": "Link to changelog" - }, "updateStartingDownload": "İndirme başlıyor...", "@updateStartingDownload": { "description": "Update status - initializing" @@ -1637,14 +1075,6 @@ "@updateDontRemind": { "description": "Update button - skip this version" }, - "providerPriority": "İndirme hizmetleri öncelik sırası", - "@providerPriority": { - "description": "Setting title - download provider order" - }, - "providerPrioritySubtitle": "İndirme hizmetlerini sıralamak için kaydır", - "@providerPrioritySubtitle": { - "description": "Subtitle for provider priority" - }, "providerPriorityTitle": "İndirme hizmetleri öncelik sırası", "@providerPriorityTitle": { "description": "Provider priority page title" @@ -1665,14 +1095,6 @@ "@providerExtension": { "description": "Label for extension-provided providers" }, - "metadataProviderPriority": "Metadata Sağlayıcı Önceliği", - "@metadataProviderPriority": { - "description": "Setting title - metadata provider order" - }, - "metadataProviderPrioritySubtitle": "Şarkı metadata'sı alınırken kullanılan sıra", - "@metadataProviderPrioritySubtitle": { - "description": "Subtitle for metadata priority" - }, "metadataProviderPriorityTitle": "Metadata Önceliği", "@metadataProviderPriorityTitle": { "description": "Metadata priority page title" @@ -1697,22 +1119,6 @@ "@logTitle": { "description": "Logs screen title" }, - "logCopy": "Kayıtları Kopyala", - "@logCopy": { - "description": "Action - copy logs to clipboard" - }, - "logClear": "Kayıtları temizle", - "@logClear": { - "description": "Action - delete all logs" - }, - "logShare": "Kayıtları Paylaş", - "@logShare": { - "description": "Action - share logs file" - }, - "logEmpty": "Henüz kayıt yok", - "@logEmpty": { - "description": "Empty state title" - }, "logCopied": "Kayıtlar panoya kopyalandı", "@logCopied": { "description": "Snackbar - logs copied" @@ -1745,22 +1151,6 @@ "@logClearLogsMessage": { "description": "Clear logs confirmation message" }, - "logIspBlocking": "ISP BLOCKING DETECTED", - "@logIspBlocking": { - "description": "Error category - ISP blocking" - }, - "logRateLimited": "RATE LIMITED", - "@logRateLimited": { - "description": "Error category - rate limiting" - }, - "logNetworkError": "NETWORK ERROR", - "@logNetworkError": { - "description": "Error category - network issues" - }, - "logTrackNotFound": "TRACK NOT FOUND", - "@logTrackNotFound": { - "description": "Error category - missing tracks" - }, "logFilterBySeverity": "Kayıtları önem derecesine göre filtrele", "@logFilterBySeverity": { "description": "Filter dialog title" @@ -1773,60 +1163,6 @@ "@logNoLogsYetSubtitle": { "description": "Empty state subtitle" }, - "logIssueSummary": "Sorun Özeti", - "@logIssueSummary": { - "description": "Section header for error summary" - }, - "logIspBlockingDescription": "İnternet sağlayıcınız indirme hizmetlerine erişimi engelliyor olabilir", - "@logIspBlockingDescription": { - "description": "ISP blocking explanation" - }, - "logIspBlockingSuggestion": "VPN kullanmayı veya DNS'i 1.1.1.1 ya da 8.8.8.8 olarak değiştirmeyi deneyin", - "@logIspBlockingSuggestion": { - "description": "ISP blocking fix suggestion" - }, - "logRateLimitedDescription": "Hizmete çok fazla istek gönderildi", - "@logRateLimitedDescription": { - "description": "Rate limit explanation" - }, - "logRateLimitedSuggestion": "Tekrar denemeden önce birkaç dakika bekleyin", - "@logRateLimitedSuggestion": { - "description": "Rate limit fix suggestion" - }, - "logNetworkErrorDescription": "Bağlantı sorunları tespit edildi", - "@logNetworkErrorDescription": { - "description": "Network error explanation" - }, - "logNetworkErrorSuggestion": "İnternet bağlantınızı kontrol edin", - "@logNetworkErrorSuggestion": { - "description": "Network error fix suggestion" - }, - "logTrackNotFoundDescription": "Bazı şarkılar indirme hizmetlerinde bulunamadı", - "@logTrackNotFoundDescription": { - "description": "Track not found explanation" - }, - "logTrackNotFoundSuggestion": "Şarkı kayıpsız kalitede mevcut olmayabilir", - "@logTrackNotFoundSuggestion": { - "description": "Track not found explanation" - }, - "logTotalErrors": "Total errors: {count}", - "@logTotalErrors": { - "description": "Error count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "logAffected": "Affected: {domains}", - "@logAffected": { - "description": "Affected domains display", - "placeholders": { - "domains": { - "type": "String" - } - } - }, "logEntriesFiltered": "Entries ({count} filtered)", "@logEntriesFiltered": { "description": "Log count with filter active", @@ -1969,10 +1305,6 @@ "@appearanceLanguage": { "description": "Language setting title" }, - "appearanceLanguageSubtitle": "Tercih ettiğiniz dili seçin", - "@appearanceLanguageSubtitle": { - "description": "Language setting subtitle" - }, "settingsAppearanceSubtitle": "Tema, renkler, görünüm", "@settingsAppearanceSubtitle": { "description": "Appearance settings description" @@ -2001,10 +1333,6 @@ "@pressBackAgainToExit": { "description": "Exit confirmation message" }, - "tracksHeader": "Şarkılar", - "@tracksHeader": { - "description": "Section header for track list" - }, "downloadAllCount": "Tümünü İndir ({count})", "@downloadAllCount": { "description": "Download all button with count", @@ -2151,15 +1479,6 @@ "@trackDeleteConfirmMessage": { "description": "Delete confirmation message" }, - "trackCannotOpen": "Cannot open: {message}", - "@trackCannotOpen": { - "description": "Error opening file", - "placeholders": { - "message": { - "type": "String" - } - } - }, "dateToday": "Bugün", "@dateToday": { "description": "Relative date - today" @@ -2195,22 +1514,6 @@ } } }, - "concurrentSequential": "Sıralı", - "@concurrentSequential": { - "description": "Download mode - one at a time" - }, - "concurrentParallel2": "2 Paralel", - "@concurrentParallel2": { - "description": "Download mode - 2 simultaneous" - }, - "concurrentParallel3": "3 Paralel", - "@concurrentParallel3": { - "description": "Download mode - 3 simultaneous" - }, - "tapToSeeError": "Hata detaylarını görmek için dokun", - "@tapToSeeError": { - "description": "Tooltip for failed download" - }, "storeFilterAll": "Tümü", "@storeFilterAll": { "description": "Store filter - all extensions" @@ -2239,18 +1542,6 @@ "@storeClearFilters": { "description": "Button to clear all filters" }, - "storeNoResults": "Eklenti bulunamadı", - "@storeNoResults": { - "description": "Empty state when no extensions match filters" - }, - "extensionProviderPriority": "Sağlayıcı Önceliği", - "@extensionProviderPriority": { - "description": "Extension capability - provider priority" - }, - "extensionInstallButton": "Eklenti Yükle", - "@extensionInstallButton": { - "description": "Button to install extension" - }, "extensionDefaultProvider": "Varsayılan (Deezer/Spotify)", "@extensionDefaultProvider": { "description": "Default search provider option" @@ -2450,46 +1741,6 @@ "@qualityHiResFlacMaxSubtitle": { "description": "Technical spec for hi-res max" }, - "qualityLossy": "Lossy", - "@qualityLossy": { - "description": "Quality option - lossy format (MP3/Opus)" - }, - "qualityLossyMp3Subtitle": "MP3 320kbps (converted from FLAC)", - "@qualityLossyMp3Subtitle": { - "description": "Technical spec for lossy MP3" - }, - "qualityLossyOpusSubtitle": "Opus 128kbps (converted from FLAC)", - "@qualityLossyOpusSubtitle": { - "description": "Technical spec for lossy Opus" - }, - "enableLossyOption": "Enable Lossy Option", - "@enableLossyOption": { - "description": "Setting - enable lossy quality option" - }, - "enableLossyOptionSubtitleOn": "Lossy quality option is available", - "@enableLossyOptionSubtitleOn": { - "description": "Subtitle when lossy is enabled" - }, - "enableLossyOptionSubtitleOff": "Downloads FLAC then converts to lossy format", - "@enableLossyOptionSubtitleOff": { - "description": "Subtitle when lossy is disabled" - }, - "lossyFormat": "Lossy Format", - "@lossyFormat": { - "description": "Setting - choose lossy format" - }, - "lossyFormatDescription": "Choose the lossy format for conversion", - "@lossyFormatDescription": { - "description": "Description for lossy format picker" - }, - "lossyFormatMp3Subtitle": "320kbps, best compatibility", - "@lossyFormatMp3Subtitle": { - "description": "MP3 format description" - }, - "lossyFormatOpusSubtitle": "128kbps, better quality at smaller size", - "@lossyFormatOpusSubtitle": { - "description": "Opus format description" - }, "qualityNote": "Actual quality depends on track availability from the service", "@qualityNote": { "description": "Note about quality availability" @@ -2518,14 +1769,6 @@ "@downloadUseAlbumArtistForFolders": { "description": "Setting - choose whether artist folders use Album Artist or Track Artist" }, - "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Artist folders use Album Artist when available", - "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { - "description": "Subtitle when Album Artist is used for folder naming" - }, - "downloadUseAlbumArtistForFoldersTrackSubtitle": "Artist folders use Track Artist only", - "@downloadUseAlbumArtistForFoldersTrackSubtitle": { - "description": "Subtitle when Track Artist is used for folder naming" - }, "downloadUsePrimaryArtistOnly": "Primary artist only for folders", "@downloadUsePrimaryArtistOnly": { "description": "Setting - strip featured artists from folder name" @@ -2538,14 +1781,6 @@ "@downloadUsePrimaryArtistOnlyDisabled": { "description": "Subtitle when primary artist only is disabled" }, - "downloadSaveFormat": "Save Format", - "@downloadSaveFormat": { - "description": "Setting - output file format" - }, - "downloadSelectService": "Select Service", - "@downloadSelectService": { - "description": "Dialog title - choose download service" - }, "downloadSelectQuality": "Select Quality", "@downloadSelectQuality": { "description": "Dialog title - choose audio quality" @@ -2554,66 +1789,6 @@ "@downloadFrom": { "description": "Label - download source" }, - "downloadDefaultQualityLabel": "Default Quality", - "@downloadDefaultQualityLabel": { - "description": "Label - default quality setting" - }, - "downloadBestAvailable": "Best available", - "@downloadBestAvailable": { - "description": "Quality option - highest available" - }, - "folderNone": "None", - "@folderNone": { - "description": "Folder option - no organization" - }, - "folderNoneSubtitle": "Save all files directly to download folder", - "@folderNoneSubtitle": { - "description": "Subtitle for no folder organization" - }, - "folderArtist": "Artist", - "@folderArtist": { - "description": "Folder option - by artist" - }, - "folderArtistSubtitle": "Artist Name/filename", - "@folderArtistSubtitle": { - "description": "Folder structure example" - }, - "folderAlbum": "Album", - "@folderAlbum": { - "description": "Folder option - by album" - }, - "folderAlbumSubtitle": "Album Name/filename", - "@folderAlbumSubtitle": { - "description": "Folder structure example" - }, - "folderArtistAlbum": "Artist/Album", - "@folderArtistAlbum": { - "description": "Folder option - nested" - }, - "folderArtistAlbumSubtitle": "Artist Name/Album Name/filename", - "@folderArtistAlbumSubtitle": { - "description": "Folder structure example" - }, - "serviceTidal": "Tidal", - "@serviceTidal": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceQobuz": "Qobuz", - "@serviceQobuz": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceAmazon": "Amazon", - "@serviceAmazon": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceDeezer": "Deezer", - "@serviceDeezer": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceSpotify": "Spotify", - "@serviceSpotify": { - "description": "Service name - DO NOT TRANSLATE" - }, "appearanceAmoledDark": "AMOLED Dark", "@appearanceAmoledDark": { "description": "Theme option - pure black" @@ -2622,18 +1797,6 @@ "@appearanceAmoledDarkSubtitle": { "description": "Subtitle for AMOLED dark" }, - "appearanceChooseAccentColor": "Choose Accent Color", - "@appearanceChooseAccentColor": { - "description": "Color picker dialog title" - }, - "appearanceChooseTheme": "Theme Mode", - "@appearanceChooseTheme": { - "description": "Theme picker dialog title" - }, - "queueTitle": "Download Queue", - "@queueTitle": { - "description": "Queue screen title" - }, "queueClearAll": "Clear All", "@queueClearAll": { "description": "Button - clear all queue items" @@ -2642,22 +1805,6 @@ "@queueClearAllMessage": { "description": "Clear queue confirmation" }, - "queueExportFailed": "Export", - "@queueExportFailed": { - "description": "Button - export failed downloads to TXT" - }, - "queueExportFailedSuccess": "Failed downloads exported to TXT file", - "@queueExportFailedSuccess": { - "description": "Success message after exporting failed downloads" - }, - "queueExportFailedClear": "Clear Failed", - "@queueExportFailedClear": { - "description": "Action to clear failed downloads after export" - }, - "queueExportFailedError": "Failed to export downloads", - "@queueExportFailedError": { - "description": "Error message when export fails" - }, "settingsAutoExportFailed": "Auto-export failed downloads", "@settingsAutoExportFailed": { "description": "Setting toggle for auto-export" @@ -2682,38 +1829,6 @@ "@settingsDownloadNetworkSubtitle": { "description": "Subtitle explaining network preference" }, - "queueEmpty": "No downloads in queue", - "@queueEmpty": { - "description": "Empty queue state title" - }, - "queueEmptySubtitle": "Add tracks from the home screen", - "@queueEmptySubtitle": { - "description": "Empty queue state subtitle" - }, - "queueClearCompleted": "Clear completed", - "@queueClearCompleted": { - "description": "Button - clear finished downloads" - }, - "queueDownloadFailed": "Download Failed", - "@queueDownloadFailed": { - "description": "Error dialog title" - }, - "queueTrackLabel": "Track:", - "@queueTrackLabel": { - "description": "Label in error dialog" - }, - "queueArtistLabel": "Artist:", - "@queueArtistLabel": { - "description": "Label in error dialog" - }, - "queueErrorLabel": "Error:", - "@queueErrorLabel": { - "description": "Label in error dialog" - }, - "queueUnknownError": "Unknown error", - "@queueUnknownError": { - "description": "Fallback error message" - }, "albumFolderArtistAlbum": "Artist / Album", "@albumFolderArtistAlbum": { "description": "Album folder option" @@ -2767,19 +1882,6 @@ } } }, - "downloadedAlbumTracksHeader": "Tracks", - "@downloadedAlbumTracksHeader": { - "description": "Section header for tracks" - }, - "downloadedAlbumDownloadedCount": "{count} downloaded", - "@downloadedAlbumDownloadedCount": { - "description": "Downloaded tracks count badge", - "placeholders": { - "count": { - "type": "int" - } - } - }, "downloadedAlbumSelectedCount": "{count} selected", "@downloadedAlbumSelectedCount": { "description": "Selection count indicator", @@ -2820,10 +1922,6 @@ } } }, - "utilityFunctions": "Utility Functions", - "@utilityFunctions": { - "description": "Extension capability - utility functions" - }, "recentTypeArtist": "Artist", "@recentTypeArtist": { "description": "Recent access item type - artist" @@ -2858,16 +1956,6 @@ } } }, - "errorGeneric": "Error: {message}", - "@errorGeneric": { - "description": "Generic error message format", - "placeholders": { - "message": { - "type": "String", - "description": "Error message" - } - } - }, "discographyDownload": "Download Discography", "@discographyDownload": { "description": "Button - download artist discography" @@ -3034,10 +2122,6 @@ "@libraryTitle": { "description": "Library settings page title" }, - "libraryStatus": "Library Status", - "@libraryStatus": { - "description": "Section header for library status" - }, "libraryScanSettings": "Scan Settings", "@libraryScanSettings": { "description": "Section header for scan settings" @@ -3114,15 +2198,6 @@ "@libraryAboutDescription": { "description": "Description of local library feature" }, - "libraryTracksCount": "{count} tracks", - "@libraryTracksCount": { - "description": "Track count in library", - "placeholders": { - "count": { - "type": "int" - } - } - }, "libraryLastScanned": "Last scanned: {time}", "@libraryLastScanned": { "description": "Last scan time display", @@ -3237,26 +2312,6 @@ "@libraryFilterFormat": { "description": "Filter section - file format" }, - "libraryFilterDate": "Date Added", - "@libraryFilterDate": { - "description": "Filter section - date range" - }, - "libraryFilterDateToday": "Today", - "@libraryFilterDateToday": { - "description": "Filter option - today only" - }, - "libraryFilterDateWeek": "This Week", - "@libraryFilterDateWeek": { - "description": "Filter option - this week" - }, - "libraryFilterDateMonth": "This Month", - "@libraryFilterDateMonth": { - "description": "Filter option - this month" - }, - "libraryFilterDateYear": "This Year", - "@libraryFilterDateYear": { - "description": "Filter option - this year" - }, "libraryFilterSort": "Sort", "@libraryFilterSort": { "description": "Filter section - sort order" @@ -3269,15 +2324,6 @@ "@libraryFilterSortOldest": { "description": "Sort option - oldest first" }, - "libraryFilterActive": "{count} filter(s) active", - "@libraryFilterActive": { - "description": "Badge showing number of active filters", - "placeholders": { - "count": { - "type": "int" - } - } - }, "timeJustNow": "Just now", "@timeJustNow": { "description": "Relative time - less than a minute ago" @@ -3300,106 +2346,6 @@ } } }, - "storageSwitchTitle": "Switch Storage Mode", - "@storageSwitchTitle": { - "description": "Dialog title when switching storage mode" - }, - "storageSwitchToSafTitle": "Switch to SAF Storage?", - "@storageSwitchToSafTitle": { - "description": "Dialog title when switching to SAF" - }, - "storageSwitchToAppTitle": "Switch to App Storage?", - "@storageSwitchToAppTitle": { - "description": "Dialog title when switching to app storage" - }, - "storageSwitchToSafMessage": "Your existing downloads will remain in the current location and stay accessible.\n\nNew downloads will be saved to your selected SAF folder.", - "@storageSwitchToSafMessage": { - "description": "Explanation when switching to SAF" - }, - "storageSwitchToAppMessage": "Your existing downloads will remain in the current SAF location and stay accessible.\n\nNew downloads will be saved to Music/SpotiFLAC folder.", - "@storageSwitchToAppMessage": { - "description": "Explanation when switching to app storage" - }, - "storageSwitchExistingDownloads": "Existing Downloads", - "@storageSwitchExistingDownloads": { - "description": "Section header for existing downloads info" - }, - "storageSwitchExistingDownloadsInfo": "{count} tracks in {mode} storage", - "@storageSwitchExistingDownloadsInfo": { - "description": "Info about existing downloads count", - "placeholders": { - "count": { - "type": "int" - }, - "mode": { - "type": "String" - } - } - }, - "storageSwitchNewDownloads": "New Downloads", - "@storageSwitchNewDownloads": { - "description": "Section header for new downloads info" - }, - "storageSwitchNewDownloadsLocation": "Will be saved to: {location}", - "@storageSwitchNewDownloadsLocation": { - "description": "Shows where new downloads will go", - "placeholders": { - "location": { - "type": "String" - } - } - }, - "storageSwitchContinue": "Continue", - "@storageSwitchContinue": { - "description": "Button to proceed with storage switch" - }, - "storageSwitchSelectFolder": "Select SAF Folder", - "@storageSwitchSelectFolder": { - "description": "Button to select SAF folder" - }, - "storageAppStorage": "App Storage", - "@storageAppStorage": { - "description": "Label for app storage mode" - }, - "storageSafStorage": "SAF Storage", - "@storageSafStorage": { - "description": "Label for SAF storage mode" - }, - "storageModeBadge": "Storage: {mode}", - "@storageModeBadge": { - "description": "Badge showing storage mode for a track", - "placeholders": { - "mode": { - "type": "String" - } - } - }, - "storageStatsTitle": "Storage Statistics", - "@storageStatsTitle": { - "description": "Section title for storage stats" - }, - "storageStatsAppCount": "{count} tracks in App Storage", - "@storageStatsAppCount": { - "description": "Count of tracks in app storage", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storageStatsSafCount": "{count} tracks in SAF Storage", - "@storageStatsSafCount": { - "description": "Count of tracks in SAF storage", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storageModeInfo": "Your files are stored in multiple locations", - "@storageModeInfo": { - "description": "Info when user has files in both storage modes" - }, "tutorialWelcomeTitle": "Welcome to SpotiFLAC!", "@tutorialWelcomeTitle": { "description": "Tutorial welcome page title" @@ -3428,18 +2374,6 @@ "@tutorialSearchDesc": { "description": "Tutorial search page description" }, - "tutorialSearchTip1": "Paste a Spotify or Deezer URL directly in the search box", - "@tutorialSearchTip1": { - "description": "Tutorial search tip 1" - }, - "tutorialSearchTip2": "Or type the song name, artist, or album to search", - "@tutorialSearchTip2": { - "description": "Tutorial search tip 2" - }, - "tutorialSearchTip3": "Supports tracks, albums, playlists, and artist pages", - "@tutorialSearchTip3": { - "description": "Tutorial search tip 3" - }, "tutorialDownloadTitle": "Downloading Music", "@tutorialDownloadTitle": { "description": "Tutorial download page title" @@ -3448,18 +2382,6 @@ "@tutorialDownloadDesc": { "description": "Tutorial download page description" }, - "tutorialDownloadTip1": "Tap the download button next to any track to start downloading", - "@tutorialDownloadTip1": { - "description": "Tutorial download tip 1" - }, - "tutorialDownloadTip2": "Choose your preferred quality (FLAC, Hi-Res, or MP3)", - "@tutorialDownloadTip2": { - "description": "Tutorial download tip 2" - }, - "tutorialDownloadTip3": "Download entire albums or playlists with one tap", - "@tutorialDownloadTip3": { - "description": "Tutorial download tip 3" - }, "tutorialLibraryTitle": "Your Library", "@tutorialLibraryTitle": { "description": "Tutorial library page title" @@ -3524,10 +2446,6 @@ "@tutorialReadyMessage": { "description": "Tutorial completion message" }, - "tutorialExample": "EXAMPLE", - "@tutorialExample": { - "description": "Example label in tutorial" - }, "libraryForceFullScan": "Force Full Scan", "@libraryForceFullScan": { "description": "Button to force a complete rescan of library" @@ -3754,10 +2672,6 @@ "@trackReEnrich": { "description": "Menu action - re-embed metadata into audio file" }, - "trackReEnrichSubtitle": "Re-embed metadata without re-downloading", - "@trackReEnrichSubtitle": { - "description": "Subtitle for re-enrich metadata action" - }, "trackReEnrichOnlineSubtitle": "Search metadata online and embed into file", "@trackReEnrichOnlineSubtitle": { "description": "Subtitle for re-enrich metadata action for local items" @@ -3869,15 +2783,21 @@ "@trackConvertFailed": { "description": "Snackbar when conversion fails" }, - "setupModeSelectionTitle": "Modunuzu Seçin", - "setupModeSelectionDescription": "SpotiFLAC'ı nasıl kullanmak istersiniz? Bunu daha sonra Ayarlar'dan değiştirebilirsiniz.", - "setupModeDownloaderTitle": "İndirici", - "setupModeDownloaderFeature1": "Kayıpsız FLAC kalitesinde parça indirin", - "setupModeDownloaderFeature2": "Çevrimdışı dinlemek için müziği cihazınıza kaydedin", - "setupModeDownloaderFeature3": "Yerel müzik kütüphanenizi yönetin", - "setupModeStreamingTitle": "Yayın Akışı", - "setupModeStreamingFeature1": "İndirmeden parçaları anında yayınlayın", - "setupModeStreamingFeature2": "Smart Queue sizin için otomatik olarak yeni müzik keşfeder", - "setupModeStreamingFeature3": "İstediğiniz parçayı oynatma kontrolleriyle çalın", - "setupModeChangeableLater": "Ayarlar'dan istediğiniz zaman modlar arasında geçiş yapabilirsiniz." -} \ No newline at end of file + "downloadedAlbumDownloadedCount": "{count} downloaded", + "@downloadedAlbumDownloadedCount": { + "description": "Downloaded tracks count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Artist folders use Album Artist when available", + "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { + "description": "Subtitle when Album Artist is used for folder naming" + }, + "downloadUseAlbumArtistForFoldersTrackSubtitle": "Artist folders use Track Artist only", + "@downloadUseAlbumArtistForFoldersTrackSubtitle": { + "description": "Subtitle when Track Artist is used for folder naming" + } +} diff --git a/lib/l10n/arb/app_zh.arb b/lib/l10n/arb/app_zh.arb index 0209b3a6..f6f4895f 100644 --- a/lib/l10n/arb/app_zh.arb +++ b/lib/l10n/arb/app_zh.arb @@ -5,18 +5,10 @@ "@appName": { "description": "App name - DO NOT TRANSLATE" }, - "appDescription": "Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.", - "@appDescription": { - "description": "App description shown in about page" - }, "navHome": "Home", "@navHome": { "description": "Bottom navigation - Home tab" }, - "navHistory": "History", - "@navHistory": { - "description": "Bottom navigation - History tab" - }, "navSettings": "Settings", "@navSettings": { "description": "Bottom navigation - Settings tab" @@ -29,20 +21,6 @@ "@homeTitle": { "description": "Home screen title" }, - "homeSearchHint": "Paste Spotify URL or search...", - "@homeSearchHint": { - "description": "Placeholder text in search box" - }, - "homeSearchHintExtension": "Search with {extensionName}...", - "@homeSearchHintExtension": { - "description": "Placeholder when extension search is active", - "placeholders": { - "extensionName": { - "type": "String", - "description": "Name of the active extension" - } - } - }, "homeSubtitle": "Paste a Spotify link or search by name", "@homeSubtitle": { "description": "Subtitle shown below search box" @@ -55,24 +33,6 @@ "@homeRecent": { "description": "Section header for recent searches" }, - "historyTitle": "History", - "@historyTitle": { - "description": "History screen title" - }, - "historyDownloading": "Downloading ({count})", - "@historyDownloading": { - "description": "Tab showing active downloads count", - "placeholders": { - "count": { - "type": "int", - "description": "Number of active downloads" - } - } - }, - "historyDownloaded": "Downloaded", - "@historyDownloaded": { - "description": "Tab showing completed downloads" - }, "historyFilterAll": "All", "@historyFilterAll": { "description": "Filter chip - show all items" @@ -85,48 +45,6 @@ "@historyFilterSingles": { "description": "Filter chip - show singles only" }, - "historyTracksCount": "{count, plural, =1{1 track} other{{count} tracks}}", - "@historyTracksCount": { - "description": "Track count with plural form", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "historyAlbumsCount": "{count, plural, =1{1 album} other{{count} albums}}", - "@historyAlbumsCount": { - "description": "Album count with plural form", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "historyNoDownloads": "No download history", - "@historyNoDownloads": { - "description": "Empty state title" - }, - "historyNoDownloadsSubtitle": "Downloaded tracks will appear here", - "@historyNoDownloadsSubtitle": { - "description": "Empty state subtitle" - }, - "historyNoAlbums": "No album downloads", - "@historyNoAlbums": { - "description": "Empty state when filtering albums" - }, - "historyNoAlbumsSubtitle": "Download multiple tracks from an album to see them here", - "@historyNoAlbumsSubtitle": { - "description": "Empty state subtitle for albums filter" - }, - "historyNoSingles": "No single downloads", - "@historyNoSingles": { - "description": "Empty state when filtering singles" - }, - "historyNoSinglesSubtitle": "Single track downloads will appear here", - "@historyNoSinglesSubtitle": { - "description": "Empty state subtitle for singles filter" - }, "settingsTitle": "Settings", "@settingsTitle": { "description": "Settings screen title" @@ -155,34 +73,6 @@ "@downloadTitle": { "description": "Download settings page title" }, - "downloadLocation": "Download Location", - "@downloadLocation": { - "description": "Setting for download folder" - }, - "downloadLocationSubtitle": "Choose where to save files", - "@downloadLocationSubtitle": { - "description": "Subtitle for download location" - }, - "downloadLocationDefault": "Default location", - "@downloadLocationDefault": { - "description": "Shown when using default folder" - }, - "downloadDefaultService": "Default Service", - "@downloadDefaultService": { - "description": "Setting for preferred download service (Tidal/Qobuz/Amazon)" - }, - "downloadDefaultServiceSubtitle": "Service used for downloads", - "@downloadDefaultServiceSubtitle": { - "description": "Subtitle for default service" - }, - "downloadDefaultQuality": "Default Quality", - "@downloadDefaultQuality": { - "description": "Setting for audio quality" - }, - "downloadAskQuality": "Ask Quality Before Download", - "@downloadAskQuality": { - "description": "Toggle to show quality picker" - }, "downloadAskQualitySubtitle": "Show quality picker for each download", "@downloadAskQualitySubtitle": { "description": "Subtitle for ask quality toggle" @@ -195,38 +85,10 @@ "@downloadFolderOrganization": { "description": "Setting for folder structure" }, - "downloadSeparateSingles": "Separate Singles", - "@downloadSeparateSingles": { - "description": "Toggle to separate single tracks" - }, - "downloadSeparateSinglesSubtitle": "Put single tracks in a separate folder", - "@downloadSeparateSinglesSubtitle": { - "description": "Subtitle for separate singles toggle" - }, - "qualityBest": "Best Available", - "@qualityBest": { - "description": "Audio quality option - highest available" - }, - "qualityFlac": "FLAC", - "@qualityFlac": { - "description": "Audio quality option - FLAC lossless" - }, - "quality320": "320 kbps", - "@quality320": { - "description": "Audio quality option - 320kbps MP3" - }, - "quality128": "128 kbps", - "@quality128": { - "description": "Audio quality option - 128kbps MP3" - }, "appearanceTitle": "Appearance", "@appearanceTitle": { "description": "Appearance settings page title" }, - "appearanceTheme": "Theme", - "@appearanceTheme": { - "description": "Theme mode setting" - }, "appearanceThemeSystem": "System", "@appearanceThemeSystem": { "description": "Follow system theme" @@ -247,10 +109,6 @@ "@appearanceDynamicColorSubtitle": { "description": "Subtitle for dynamic color" }, - "appearanceAccentColor": "Accent Color", - "@appearanceAccentColor": { - "description": "Custom accent color picker" - }, "appearanceHistoryView": "History View", "@appearanceHistoryView": { "description": "Layout style for history" @@ -267,10 +125,6 @@ "@optionsTitle": { "description": "Options settings page title" }, - "optionsSearchSource": "Search Source", - "@optionsSearchSource": { - "description": "Section for search provider settings" - }, "optionsPrimaryProvider": "Primary Provider", "@optionsPrimaryProvider": { "description": "Main search provider setting" @@ -426,22 +280,6 @@ "@extensionsTitle": { "description": "Extensions page title" }, - "extensionsInstalled": "Installed Extensions", - "@extensionsInstalled": { - "description": "Section header for installed extensions" - }, - "extensionsNone": "No extensions installed", - "@extensionsNone": { - "description": "Empty state title" - }, - "extensionsNoneSubtitle": "Install extensions from the Store tab", - "@extensionsNoneSubtitle": { - "description": "Empty state subtitle" - }, - "extensionsEnabled": "Enabled", - "@extensionsEnabled": { - "description": "Extension status - active" - }, "extensionsDisabled": "Disabled", "@extensionsDisabled": { "description": "Extension status - inactive" @@ -468,10 +306,6 @@ "@extensionsUninstall": { "description": "Uninstall extension button" }, - "extensionsSetAsSearch": "Set as Search Provider", - "@extensionsSetAsSearch": { - "description": "Use extension for search" - }, "storeTitle": "Extension Store", "@storeTitle": { "description": "Store screen title" @@ -544,10 +378,6 @@ "@aboutFeatureRequestSubtitle": { "description": "Subtitle for feature request" }, - "aboutSupport": "Support", - "@aboutSupport": { - "description": "Section for support/donation links" - }, "aboutApp": "App", "@aboutApp": { "description": "Section for app info" @@ -564,14 +394,6 @@ "@aboutSachinsenalDesc": { "description": "Credit description for sachinsenal0x64" }, - "aboutDoubleDouble": "DoubleDouble", - "@aboutDoubleDouble": { - "description": "Name of Amazon API service - DO NOT TRANSLATE" - }, - "aboutDoubleDoubleDesc": "Amazing API for Amazon Music downloads. Thank you for making it free!", - "@aboutDoubleDoubleDesc": { - "description": "Credit for DoubleDouble API" - }, "aboutDabMusic": "DAB Music", "@aboutDabMusic": { "description": "Name of Qobuz API service - DO NOT TRANSLATE" @@ -584,35 +406,6 @@ "@aboutAppDescription": { "description": "App description in header card" }, - "albumTitle": "Album", - "@albumTitle": { - "description": "Album screen title" - }, - "albumTracks": "{count, plural, =1{1 track} other{{count} tracks}}", - "@albumTracks": { - "description": "Album track count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "albumDownloadAll": "Download All", - "@albumDownloadAll": { - "description": "Button to download all tracks" - }, - "albumDownloadRemaining": "Download Remaining", - "@albumDownloadRemaining": { - "description": "Button to download remaining tracks" - }, - "playlistTitle": "Playlist", - "@playlistTitle": { - "description": "Playlist screen title" - }, - "artistTitle": "Artist", - "@artistTitle": { - "description": "Artist screen title" - }, "artistAlbums": "Albums", "@artistAlbums": { "description": "Section header for artist albums" @@ -625,43 +418,6 @@ "@artistCompilations": { "description": "Section header for compilations" }, - "artistReleases": "{count, plural, =1{1 release} other{{count} releases}}", - "@artistReleases": { - "description": "Artist release count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "trackMetadataTitle": "Track Info", - "@trackMetadataTitle": { - "description": "Track metadata screen title" - }, - "trackMetadataArtist": "Artist", - "@trackMetadataArtist": { - "description": "Metadata field - artist name" - }, - "trackMetadataAlbum": "Album", - "@trackMetadataAlbum": { - "description": "Metadata field - album name" - }, - "trackMetadataDuration": "Duration", - "@trackMetadataDuration": { - "description": "Metadata field - track length" - }, - "trackMetadataQuality": "Quality", - "@trackMetadataQuality": { - "description": "Metadata field - audio quality" - }, - "trackMetadataPath": "File Path", - "@trackMetadataPath": { - "description": "Metadata field - file location" - }, - "trackMetadataDownloadedAt": "Downloaded", - "@trackMetadataDownloadedAt": { - "description": "Metadata field - download date" - }, "trackMetadataService": "Service", "@trackMetadataService": { "description": "Metadata field - download service used" @@ -678,54 +434,10 @@ "@trackMetadataDelete": { "description": "Action button - delete track" }, - "trackMetadataRedownload": "Re-download", - "@trackMetadataRedownload": { - "description": "Action button - download again" - }, - "trackMetadataOpenFolder": "Open Folder", - "@trackMetadataOpenFolder": { - "description": "Action button - open containing folder" - }, - "setupTitle": "Welcome to SpotiFLAC", - "@setupTitle": { - "description": "Setup wizard title" - }, - "setupSubtitle": "Let's get you started", - "@setupSubtitle": { - "description": "Setup wizard subtitle" - }, - "setupStoragePermission": "Storage Permission", - "@setupStoragePermission": { - "description": "Storage permission step title" - }, - "setupStoragePermissionSubtitle": "Required to save downloaded files", - "@setupStoragePermissionSubtitle": { - "description": "Explanation for storage permission" - }, - "setupStoragePermissionGranted": "Permission granted", - "@setupStoragePermissionGranted": { - "description": "Status when permission granted" - }, - "setupStoragePermissionDenied": "Permission denied", - "@setupStoragePermissionDenied": { - "description": "Status when permission denied" - }, "setupGrantPermission": "Grant Permission", "@setupGrantPermission": { "description": "Button to request permission" }, - "setupDownloadLocation": "Download Location", - "@setupDownloadLocation": { - "description": "Download folder step title" - }, - "setupChooseFolder": "Choose Folder", - "@setupChooseFolder": { - "description": "Button to pick folder" - }, - "setupContinue": "Continue", - "@setupContinue": { - "description": "Continue to next step button" - }, "setupSkip": "Skip for now", "@setupSkip": { "description": "Skip current step button" @@ -734,10 +446,6 @@ "@setupStorageAccessRequired": { "description": "Title when storage access needed" }, - "setupStorageAccessMessage": "SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.", - "@setupStorageAccessMessage": { - "description": "Explanation for storage access" - }, "setupStorageAccessMessageAndroid11": "Android 11+ requires \"All files access\" permission to save files to your chosen download folder.", "@setupStorageAccessMessageAndroid11": { "description": "Android 11+ specific explanation" @@ -769,10 +477,6 @@ } } }, - "setupSelectDownloadFolder": "Select Download Folder", - "@setupSelectDownloadFolder": { - "description": "Folder selection step title" - }, "setupUseDefaultFolder": "Use Default Folder?", "@setupUseDefaultFolder": { "description": "Dialog title for default folder" @@ -817,26 +521,6 @@ "@setupDownloadInFlac": { "description": "App tagline in setup" }, - "setupStepStorage": "Storage", - "@setupStepStorage": { - "description": "Setup step indicator - storage" - }, - "setupStepNotification": "Notification", - "@setupStepNotification": { - "description": "Setup step indicator - notification" - }, - "setupStepFolder": "Folder", - "@setupStepFolder": { - "description": "Setup step indicator - folder" - }, - "setupStepSpotify": "Spotify", - "@setupStepSpotify": { - "description": "Setup step indicator - Spotify API" - }, - "setupStepPermission": "Permission", - "@setupStepPermission": { - "description": "Setup step indicator - permission" - }, "setupStorageGranted": "Storage Permission Granted!", "@setupStorageGranted": { "description": "Success message for storage permission" @@ -857,14 +541,6 @@ "@setupNotificationEnable": { "description": "Button to enable notifications" }, - "setupNotificationDescription": "Get notified when downloads complete or require attention.", - "@setupNotificationDescription": { - "description": "Explanation for notifications" - }, - "setupFolderSelected": "Download Folder Selected!", - "@setupFolderSelected": { - "description": "Success message for folder selection" - }, "setupFolderChoose": "Choose Download Folder", "@setupFolderChoose": { "description": "Button to choose folder" @@ -873,58 +549,14 @@ "@setupFolderDescription": { "description": "Explanation for folder selection" }, - "setupChangeFolder": "Change Folder", - "@setupChangeFolder": { - "description": "Button to change selected folder" - }, "setupSelectFolder": "Select Folder", "@setupSelectFolder": { "description": "Button to select folder" }, - "setupSpotifyApiOptional": "Spotify API (Optional)", - "@setupSpotifyApiOptional": { - "description": "Spotify API step title" - }, - "setupSpotifyApiDescription": "Add your Spotify API credentials for better search results and access to Spotify-exclusive content.", - "@setupSpotifyApiDescription": { - "description": "Explanation for Spotify API" - }, - "setupUseSpotifyApi": "Use Spotify API", - "@setupUseSpotifyApi": { - "description": "Toggle to enable Spotify API" - }, - "setupEnterCredentialsBelow": "Enter your credentials below", - "@setupEnterCredentialsBelow": { - "description": "Prompt to enter credentials" - }, - "setupUsingDeezer": "Using Deezer (no account needed)", - "@setupUsingDeezer": { - "description": "Status when using Deezer" - }, - "setupEnterClientId": "Enter Spotify Client ID", - "@setupEnterClientId": { - "description": "Placeholder for client ID field" - }, - "setupEnterClientSecret": "Enter Spotify Client Secret", - "@setupEnterClientSecret": { - "description": "Placeholder for client secret field" - }, - "setupGetFreeCredentials": "Get your free API credentials from the Spotify Developer Dashboard.", - "@setupGetFreeCredentials": { - "description": "Info about getting Spotify credentials" - }, "setupEnableNotifications": "Enable Notifications", "@setupEnableNotifications": { "description": "Button to enable notifications" }, - "setupProceedToNextStep": "You can now proceed to the next step.", - "@setupProceedToNextStep": { - "description": "Message after completing a step" - }, - "setupNotificationProgressDescription": "You will receive download progress notifications.", - "@setupNotificationProgressDescription": { - "description": "Info about notification usage" - }, "setupNotificationBackgroundDescription": "Get notified about download progress and completion. This helps you track downloads when the app is in background.", "@setupNotificationBackgroundDescription": { "description": "Detailed notification explanation" @@ -933,10 +565,6 @@ "@setupSkipForNow": { "description": "Skip button text" }, - "setupBack": "Back", - "@setupBack": { - "description": "Back button text" - }, "setupNext": "Next", "@setupNext": { "description": "Next button text" @@ -945,26 +573,14 @@ "@setupGetStarted": { "description": "Final setup button" }, - "setupSkipAndStart": "Skip & Start", - "@setupSkipAndStart": { - "description": "Skip setup and start app" - }, "setupAllowAccessToManageFiles": "Please enable \"Allow access to manage all files\" in the next screen.", "@setupAllowAccessToManageFiles": { "description": "Instruction for file access permission" }, - "setupGetCredentialsFromSpotify": "Get credentials from developer.spotify.com", - "@setupGetCredentialsFromSpotify": { - "description": "Link text for Spotify developer portal" - }, "dialogCancel": "Cancel", "@dialogCancel": { "description": "Dialog button - cancel action" }, - "dialogOk": "OK", - "@dialogOk": { - "description": "Dialog button - confirm/acknowledge" - }, "dialogSave": "Save", "@dialogSave": { "description": "Dialog button - save changes" @@ -977,26 +593,10 @@ "@dialogRetry": { "description": "Dialog button - retry action" }, - "dialogClose": "Close", - "@dialogClose": { - "description": "Dialog button - close dialog" - }, - "dialogYes": "Yes", - "@dialogYes": { - "description": "Dialog button - confirm yes" - }, - "dialogNo": "No", - "@dialogNo": { - "description": "Dialog button - confirm no" - }, "dialogClear": "Clear", "@dialogClear": { "description": "Dialog button - clear items" }, - "dialogConfirm": "Confirm", - "@dialogConfirm": { - "description": "Dialog button - confirm action" - }, "dialogDone": "Done", "@dialogDone": { "description": "Dialog button - action completed" @@ -1025,34 +625,10 @@ "@dialogUnsavedChanges": { "description": "Dialog message - unsaved changes" }, - "dialogDownloadFailed": "Download Failed", - "@dialogDownloadFailed": { - "description": "Dialog title - download error" - }, - "dialogTrackLabel": "Track:", - "@dialogTrackLabel": { - "description": "Label for track name in error dialog" - }, - "dialogArtistLabel": "Artist:", - "@dialogArtistLabel": { - "description": "Label for artist name in error dialog" - }, - "dialogErrorLabel": "Error:", - "@dialogErrorLabel": { - "description": "Label for error message" - }, "dialogClearAll": "Clear All", "@dialogClearAll": { "description": "Dialog title - clear all items" }, - "dialogClearAllDownloads": "Are you sure you want to clear all downloads?", - "@dialogClearAllDownloads": { - "description": "Dialog message - clear downloads confirmation" - }, - "dialogRemoveFromDevice": "Remove from device?", - "@dialogRemoveFromDevice": { - "description": "Dialog title - delete file confirmation" - }, "dialogRemoveExtension": "Remove Extension", "@dialogRemoveExtension": { "description": "Dialog title - uninstall extension" @@ -1173,15 +749,6 @@ "@snackbarViewQueue": { "description": "Snackbar action - view download queue" }, - "snackbarFailedToLoad": "Failed to load: {error}", - "@snackbarFailedToLoad": { - "description": "Snackbar - loading error", - "placeholders": { - "error": { - "type": "String" - } - } - }, "snackbarUrlCopied": "{platform} URL copied to clipboard", "@snackbarUrlCopied": { "description": "Snackbar - URL copied", @@ -1242,16 +809,6 @@ "@errorRateLimitedMessage": { "description": "Error message - rate limit explanation" }, - "errorFailedToLoad": "Failed to load {item}", - "@errorFailedToLoad": { - "description": "Error message - loading failed", - "placeholders": { - "item": { - "type": "String", - "description": "Item that failed to load (album/playlist/etc)" - } - } - }, "errorNoTracksFound": "No tracks found", "@errorNoTracksFound": { "description": "Error - search returned no results" @@ -1265,34 +822,6 @@ } } }, - "statusQueued": "Queued", - "@statusQueued": { - "description": "Download status - waiting in queue" - }, - "statusDownloading": "Downloading", - "@statusDownloading": { - "description": "Download status - in progress" - }, - "statusFinalizing": "Finalizing", - "@statusFinalizing": { - "description": "Download status - writing metadata" - }, - "statusCompleted": "Completed", - "@statusCompleted": { - "description": "Download status - finished" - }, - "statusFailed": "Failed", - "@statusFailed": { - "description": "Download status - error occurred" - }, - "statusSkipped": "Skipped", - "@statusSkipped": { - "description": "Download status - already exists" - }, - "statusPaused": "Paused", - "@statusPaused": { - "description": "Download status - paused" - }, "actionPause": "Pause", "@actionPause": { "description": "Action button - pause download" @@ -1305,14 +834,6 @@ "@actionCancel": { "description": "Action button - cancel operation" }, - "actionStop": "Stop", - "@actionStop": { - "description": "Action button - stop operation" - }, - "actionSelect": "Select", - "@actionSelect": { - "description": "Action button - enter selection mode" - }, "actionSelectAll": "Select All", "@actionSelectAll": { "description": "Action button - select all items" @@ -1321,14 +842,6 @@ "@actionDeselect": { "description": "Action button - deselect all" }, - "actionPaste": "Paste", - "@actionPaste": { - "description": "Action button - paste from clipboard" - }, - "actionImportCsv": "Import CSV", - "@actionImportCsv": { - "description": "Action button - import CSV file" - }, "actionRemoveCredentials": "Remove Credentials", "@actionRemoveCredentials": { "description": "Action button - delete Spotify credentials" @@ -1350,19 +863,6 @@ "@selectionAllSelected": { "description": "Status - all items selected" }, - "selectionTapToSelect": "Tap tracks to select", - "@selectionTapToSelect": { - "description": "Hint - how to select items" - }, - "selectionDeleteTracks": "Delete {count} {count, plural, =1{track} other{tracks}}", - "@selectionDeleteTracks": { - "description": "Delete button with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, "selectionSelectToDelete": "Select tracks to delete", "@selectionSelectToDelete": { "description": "Placeholder when nothing selected" @@ -1403,55 +903,10 @@ "@tooltipPlay": { "description": "Tooltip - play button" }, - "tooltipCancel": "Cancel", - "@tooltipCancel": { - "description": "Tooltip - cancel button" - }, - "tooltipStop": "Stop", - "@tooltipStop": { - "description": "Tooltip - stop button" - }, - "tooltipRetry": "Retry", - "@tooltipRetry": { - "description": "Tooltip - retry button" - }, - "tooltipRemove": "Remove", - "@tooltipRemove": { - "description": "Tooltip - remove button" - }, - "tooltipClear": "Clear", - "@tooltipClear": { - "description": "Tooltip - clear button" - }, - "tooltipPaste": "Paste", - "@tooltipPaste": { - "description": "Tooltip - paste button" - }, "filenameFormat": "Filename Format", "@filenameFormat": { "description": "Setting title - filename pattern" }, - "filenameFormatPreview": "Preview: {preview}", - "@filenameFormatPreview": { - "description": "Preview of filename pattern", - "placeholders": { - "preview": { - "type": "String" - } - } - }, - "filenameAvailablePlaceholders": "Available placeholders:", - "@filenameAvailablePlaceholders": { - "description": "Label for placeholder list" - }, - "filenameHint": "{artist} - {title}", - "@filenameHint": { - "description": "Default filename format hint" - }, - "folderOrganization": "Folder Organization", - "@folderOrganization": { - "description": "Setting title - folder structure" - }, "folderOrganizationNone": "No organization", "@folderOrganizationNone": { "description": "Folder option - flat structure" @@ -1492,27 +947,10 @@ "@updateAvailable": { "description": "Update dialog title" }, - "updateNewVersion": "Version {version} is available", - "@updateNewVersion": { - "description": "Update available message", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "updateDownload": "Download", - "@updateDownload": { - "description": "Update button - download update" - }, "updateLater": "Later", "@updateLater": { "description": "Update button - dismiss" }, - "updateChangelog": "Changelog", - "@updateChangelog": { - "description": "Link to changelog" - }, "updateStartingDownload": "Starting download...", "@updateStartingDownload": { "description": "Update status - initializing" @@ -1553,14 +991,6 @@ "@updateDontRemind": { "description": "Update button - skip this version" }, - "providerPriority": "Provider Priority", - "@providerPriority": { - "description": "Setting title - download provider order" - }, - "providerPrioritySubtitle": "Drag to reorder download providers", - "@providerPrioritySubtitle": { - "description": "Subtitle for provider priority" - }, "providerPriorityTitle": "Provider Priority", "@providerPriorityTitle": { "description": "Provider priority page title" @@ -1581,14 +1011,6 @@ "@providerExtension": { "description": "Label for extension-provided providers" }, - "metadataProviderPriority": "Metadata Provider Priority", - "@metadataProviderPriority": { - "description": "Setting title - metadata provider order" - }, - "metadataProviderPrioritySubtitle": "Order used when fetching track metadata", - "@metadataProviderPrioritySubtitle": { - "description": "Subtitle for metadata priority" - }, "metadataProviderPriorityTitle": "Metadata Priority", "@metadataProviderPriorityTitle": { "description": "Metadata priority page title" @@ -1613,22 +1035,6 @@ "@logTitle": { "description": "Logs screen title" }, - "logCopy": "Copy Logs", - "@logCopy": { - "description": "Action - copy logs to clipboard" - }, - "logClear": "Clear Logs", - "@logClear": { - "description": "Action - delete all logs" - }, - "logShare": "Share Logs", - "@logShare": { - "description": "Action - share logs file" - }, - "logEmpty": "No logs yet", - "@logEmpty": { - "description": "Empty state title" - }, "logCopied": "Logs copied to clipboard", "@logCopied": { "description": "Snackbar - logs copied" @@ -1661,22 +1067,6 @@ "@logClearLogsMessage": { "description": "Clear logs confirmation message" }, - "logIspBlocking": "ISP BLOCKING DETECTED", - "@logIspBlocking": { - "description": "Error category - ISP blocking" - }, - "logRateLimited": "RATE LIMITED", - "@logRateLimited": { - "description": "Error category - rate limiting" - }, - "logNetworkError": "NETWORK ERROR", - "@logNetworkError": { - "description": "Error category - network issues" - }, - "logTrackNotFound": "TRACK NOT FOUND", - "@logTrackNotFound": { - "description": "Error category - missing tracks" - }, "logFilterBySeverity": "Filter logs by severity", "@logFilterBySeverity": { "description": "Filter dialog title" @@ -1689,60 +1079,6 @@ "@logNoLogsYetSubtitle": { "description": "Empty state subtitle" }, - "logIssueSummary": "Issue Summary", - "@logIssueSummary": { - "description": "Section header for error summary" - }, - "logIspBlockingDescription": "Your ISP may be blocking access to download services", - "@logIspBlockingDescription": { - "description": "ISP blocking explanation" - }, - "logIspBlockingSuggestion": "Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8", - "@logIspBlockingSuggestion": { - "description": "ISP blocking fix suggestion" - }, - "logRateLimitedDescription": "Too many requests to the service", - "@logRateLimitedDescription": { - "description": "Rate limit explanation" - }, - "logRateLimitedSuggestion": "Wait a few minutes before trying again", - "@logRateLimitedSuggestion": { - "description": "Rate limit fix suggestion" - }, - "logNetworkErrorDescription": "Connection issues detected", - "@logNetworkErrorDescription": { - "description": "Network error explanation" - }, - "logNetworkErrorSuggestion": "Check your internet connection", - "@logNetworkErrorSuggestion": { - "description": "Network error fix suggestion" - }, - "logTrackNotFoundDescription": "Some tracks could not be found on download services", - "@logTrackNotFoundDescription": { - "description": "Track not found explanation" - }, - "logTrackNotFoundSuggestion": "The track may not be available in lossless quality", - "@logTrackNotFoundSuggestion": { - "description": "Track not found explanation" - }, - "logTotalErrors": "Total errors: {count}", - "@logTotalErrors": { - "description": "Error count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "logAffected": "Affected: {domains}", - "@logAffected": { - "description": "Affected domains display", - "placeholders": { - "domains": { - "type": "String" - } - } - }, "logEntriesFiltered": "Entries ({count} filtered)", "@logEntriesFiltered": { "description": "Log count with filter active", @@ -1849,22 +1185,6 @@ "@appearanceLanguage": { "description": "Setting title for language selection" }, - "appearanceLanguageSubtitle": "Choose your preferred language", - "@appearanceLanguageSubtitle": { - "description": "Subtitle for language setting" - }, - "languageSystem": "System Default", - "@languageSystem": { - "description": "Use device system language" - }, - "languageEnglish": "English", - "@languageEnglish": { - "description": "English language option" - }, - "languageIndonesian": "Bahasa Indonesia", - "@languageIndonesian": { - "description": "Indonesian language option" - }, "settingsAppearanceSubtitle": "Theme, colors, display", "@settingsAppearanceSubtitle": { "description": "Appearance settings description" @@ -1893,10 +1213,6 @@ "@pressBackAgainToExit": { "description": "Exit confirmation message" }, - "tracksHeader": "Tracks", - "@tracksHeader": { - "description": "Section header for track list" - }, "downloadAllCount": "Download All ({count})", "@downloadAllCount": { "description": "Download all button with count", @@ -2019,15 +1335,6 @@ "@trackDeleteConfirmMessage": { "description": "Delete confirmation message" }, - "trackCannotOpen": "Cannot open: {message}", - "@trackCannotOpen": { - "description": "Error opening file", - "placeholders": { - "message": { - "type": "String" - } - } - }, "dateToday": "Today", "@dateToday": { "description": "Relative date - today" @@ -2063,22 +1370,6 @@ } } }, - "concurrentSequential": "Sequential", - "@concurrentSequential": { - "description": "Download mode - one at a time" - }, - "concurrentParallel2": "2 Parallel", - "@concurrentParallel2": { - "description": "Download mode - 2 simultaneous" - }, - "concurrentParallel3": "3 Parallel", - "@concurrentParallel3": { - "description": "Download mode - 3 simultaneous" - }, - "tapToSeeError": "Tap to see error details", - "@tapToSeeError": { - "description": "Tooltip for failed download" - }, "storeFilterAll": "All", "@storeFilterAll": { "description": "Store filter - all extensions" @@ -2107,18 +1398,6 @@ "@storeClearFilters": { "description": "Button to clear all filters" }, - "storeNoResults": "No extensions found", - "@storeNoResults": { - "description": "Empty state when no extensions match filters" - }, - "extensionProviderPriority": "Provider Priority", - "@extensionProviderPriority": { - "description": "Extension capability - provider priority" - }, - "extensionInstallButton": "Install Extension", - "@extensionInstallButton": { - "description": "Button to install extension" - }, "extensionDefaultProvider": "Default (Deezer/Spotify)", "@extensionDefaultProvider": { "description": "Default search provider option" @@ -2338,14 +1617,6 @@ "@downloadAlbumFolderStructure": { "description": "Setting - album folder organization" }, - "downloadSaveFormat": "Save Format", - "@downloadSaveFormat": { - "description": "Setting - output file format" - }, - "downloadSelectService": "Select Service", - "@downloadSelectService": { - "description": "Dialog title - choose download service" - }, "downloadSelectQuality": "Select Quality", "@downloadSelectQuality": { "description": "Dialog title - choose audio quality" @@ -2354,66 +1625,6 @@ "@downloadFrom": { "description": "Label - download source" }, - "downloadDefaultQualityLabel": "Default Quality", - "@downloadDefaultQualityLabel": { - "description": "Label - default quality setting" - }, - "downloadBestAvailable": "Best available", - "@downloadBestAvailable": { - "description": "Quality option - highest available" - }, - "folderNone": "None", - "@folderNone": { - "description": "Folder option - no organization" - }, - "folderNoneSubtitle": "Save all files directly to download folder", - "@folderNoneSubtitle": { - "description": "Subtitle for no folder organization" - }, - "folderArtist": "Artist", - "@folderArtist": { - "description": "Folder option - by artist" - }, - "folderArtistSubtitle": "Artist Name/filename", - "@folderArtistSubtitle": { - "description": "Folder structure example" - }, - "folderAlbum": "Album", - "@folderAlbum": { - "description": "Folder option - by album" - }, - "folderAlbumSubtitle": "Album Name/filename", - "@folderAlbumSubtitle": { - "description": "Folder structure example" - }, - "folderArtistAlbum": "Artist/Album", - "@folderArtistAlbum": { - "description": "Folder option - nested" - }, - "folderArtistAlbumSubtitle": "Artist Name/Album Name/filename", - "@folderArtistAlbumSubtitle": { - "description": "Folder structure example" - }, - "serviceTidal": "Tidal", - "@serviceTidal": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceQobuz": "Qobuz", - "@serviceQobuz": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceAmazon": "Amazon", - "@serviceAmazon": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceDeezer": "Deezer", - "@serviceDeezer": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceSpotify": "Spotify", - "@serviceSpotify": { - "description": "Service name - DO NOT TRANSLATE" - }, "appearanceAmoledDark": "AMOLED Dark", "@appearanceAmoledDark": { "description": "Theme option - pure black" @@ -2422,18 +1633,6 @@ "@appearanceAmoledDarkSubtitle": { "description": "Subtitle for AMOLED dark" }, - "appearanceChooseAccentColor": "Choose Accent Color", - "@appearanceChooseAccentColor": { - "description": "Color picker dialog title" - }, - "appearanceChooseTheme": "Theme Mode", - "@appearanceChooseTheme": { - "description": "Theme picker dialog title" - }, - "queueTitle": "Download Queue", - "@queueTitle": { - "description": "Queue screen title" - }, "queueClearAll": "Clear All", "@queueClearAll": { "description": "Button - clear all queue items" @@ -2442,38 +1641,6 @@ "@queueClearAllMessage": { "description": "Clear queue confirmation" }, - "queueEmpty": "No downloads in queue", - "@queueEmpty": { - "description": "Empty queue state title" - }, - "queueEmptySubtitle": "Add tracks from the home screen", - "@queueEmptySubtitle": { - "description": "Empty queue state subtitle" - }, - "queueClearCompleted": "Clear completed", - "@queueClearCompleted": { - "description": "Button - clear finished downloads" - }, - "queueDownloadFailed": "Download Failed", - "@queueDownloadFailed": { - "description": "Error dialog title" - }, - "queueTrackLabel": "Track:", - "@queueTrackLabel": { - "description": "Label in error dialog" - }, - "queueArtistLabel": "Artist:", - "@queueArtistLabel": { - "description": "Label in error dialog" - }, - "queueErrorLabel": "Error:", - "@queueErrorLabel": { - "description": "Label in error dialog" - }, - "queueUnknownError": "Unknown error", - "@queueUnknownError": { - "description": "Fallback error message" - }, "albumFolderArtistAlbum": "Artist / Album", "@albumFolderArtistAlbum": { "description": "Album folder option" @@ -2519,19 +1686,6 @@ } } }, - "downloadedAlbumTracksHeader": "Tracks", - "@downloadedAlbumTracksHeader": { - "description": "Section header for tracks" - }, - "downloadedAlbumDownloadedCount": "{count} downloaded", - "@downloadedAlbumDownloadedCount": { - "description": "Downloaded tracks count badge", - "placeholders": { - "count": { - "type": "int" - } - } - }, "downloadedAlbumSelectedCount": "{count} selected", "@downloadedAlbumSelectedCount": { "description": "Selection count indicator", @@ -2562,19 +1716,13 @@ "@downloadedAlbumSelectToDelete": { "description": "Placeholder when nothing selected" }, - "utilityFunctions": "Utility Functions", - "@utilityFunctions": { - "description": "Extension capability - utility functions" - }, - "setupModeSelectionTitle": "选择您的模式", - "setupModeSelectionDescription": "您想如何使用 SpotiFLAC?您可以稍后在设置中随时更改。", - "setupModeDownloaderTitle": "下载器", - "setupModeDownloaderFeature1": "以无损 FLAC 品质下载曲目", - "setupModeDownloaderFeature2": "将音乐保存到设备以供离线收听", - "setupModeDownloaderFeature3": "管理您的本地音乐库", - "setupModeStreamingTitle": "流媒体", - "setupModeStreamingFeature1": "无需下载即可即时播放曲目", - "setupModeStreamingFeature2": "Smart Queue 自动为您发现新音乐", - "setupModeStreamingFeature3": "通过播放控件随时点播任意曲目", - "setupModeChangeableLater": "您可以随时在设置中切换模式。" -} \ No newline at end of file + "downloadedAlbumDownloadedCount": "{count} downloaded", + "@downloadedAlbumDownloadedCount": { + "description": "Downloaded tracks count badge", + "placeholders": { + "count": { + "type": "int" + } + } + } +} diff --git a/lib/l10n/arb/app_zh_CN.arb b/lib/l10n/arb/app_zh_CN.arb index b26eb35e..67d8b58c 100644 --- a/lib/l10n/arb/app_zh_CN.arb +++ b/lib/l10n/arb/app_zh_CN.arb @@ -5,10 +5,6 @@ "@appName": { "description": "App name - DO NOT TRANSLATE" }, - "appDescription": "Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.", - "@appDescription": { - "description": "App description shown in about page" - }, "navHome": "Home", "@navHome": { "description": "Bottom navigation - Home tab" @@ -17,10 +13,6 @@ "@navLibrary": { "description": "Bottom navigation - Library tab" }, - "navHistory": "History", - "@navHistory": { - "description": "Bottom navigation - History tab (legacy)" - }, "navSettings": "Settings", "@navSettings": { "description": "Bottom navigation - Settings tab" @@ -33,20 +25,6 @@ "@homeTitle": { "description": "Home screen title" }, - "homeSearchHint": "Paste Spotify URL or search...", - "@homeSearchHint": { - "description": "Placeholder text in search box" - }, - "homeSearchHintExtension": "Search with {extensionName}...", - "@homeSearchHintExtension": { - "description": "Placeholder when extension search is active", - "placeholders": { - "extensionName": { - "type": "String", - "description": "Name of the active extension" - } - } - }, "homeSubtitle": "Paste a Spotify link or search by name", "@homeSubtitle": { "description": "Subtitle shown below search box" @@ -59,24 +37,6 @@ "@homeRecent": { "description": "Section header for recent searches" }, - "historyTitle": "History", - "@historyTitle": { - "description": "History screen title" - }, - "historyDownloading": "Downloading ({count})", - "@historyDownloading": { - "description": "Tab showing active downloads count", - "placeholders": { - "count": { - "type": "int", - "description": "Number of active downloads" - } - } - }, - "historyDownloaded": "Downloaded", - "@historyDownloaded": { - "description": "Tab showing completed downloads" - }, "historyFilterAll": "All", "@historyFilterAll": { "description": "Filter chip - show all items" @@ -89,48 +49,6 @@ "@historyFilterSingles": { "description": "Filter chip - show singles only" }, - "historyTracksCount": "{count, plural, =1{1 track} other{{count} tracks}}", - "@historyTracksCount": { - "description": "Track count with plural form", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "historyAlbumsCount": "{count, plural, =1{1 album} other{{count} albums}}", - "@historyAlbumsCount": { - "description": "Album count with plural form", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "historyNoDownloads": "No download history", - "@historyNoDownloads": { - "description": "Empty state title" - }, - "historyNoDownloadsSubtitle": "Downloaded tracks will appear here", - "@historyNoDownloadsSubtitle": { - "description": "Empty state subtitle" - }, - "historyNoAlbums": "No album downloads", - "@historyNoAlbums": { - "description": "Empty state when filtering albums" - }, - "historyNoAlbumsSubtitle": "Download multiple tracks from an album to see them here", - "@historyNoAlbumsSubtitle": { - "description": "Empty state subtitle for albums filter" - }, - "historyNoSingles": "No single downloads", - "@historyNoSingles": { - "description": "Empty state when filtering singles" - }, - "historyNoSinglesSubtitle": "Single track downloads will appear here", - "@historyNoSinglesSubtitle": { - "description": "Empty state subtitle for singles filter" - }, "historySearchHint": "Search history...", "@historySearchHint": { "description": "Search bar placeholder in history" @@ -163,34 +81,6 @@ "@downloadTitle": { "description": "Download settings page title" }, - "downloadLocation": "Download Location", - "@downloadLocation": { - "description": "Setting for download folder" - }, - "downloadLocationSubtitle": "Choose where to save files", - "@downloadLocationSubtitle": { - "description": "Subtitle for download location" - }, - "downloadLocationDefault": "Default location", - "@downloadLocationDefault": { - "description": "Shown when using default folder" - }, - "downloadDefaultService": "Default Service", - "@downloadDefaultService": { - "description": "Setting for preferred download service (Tidal/Qobuz/Amazon)" - }, - "downloadDefaultServiceSubtitle": "Service used for downloads", - "@downloadDefaultServiceSubtitle": { - "description": "Subtitle for default service" - }, - "downloadDefaultQuality": "Default Quality", - "@downloadDefaultQuality": { - "description": "Setting for audio quality" - }, - "downloadAskQuality": "Ask Quality Before Download", - "@downloadAskQuality": { - "description": "Toggle to show quality picker" - }, "downloadAskQualitySubtitle": "Show quality picker for each download", "@downloadAskQualitySubtitle": { "description": "Subtitle for ask quality toggle" @@ -203,38 +93,10 @@ "@downloadFolderOrganization": { "description": "Setting for folder structure" }, - "downloadSeparateSingles": "Separate Singles", - "@downloadSeparateSingles": { - "description": "Toggle to separate single tracks" - }, - "downloadSeparateSinglesSubtitle": "Put single tracks in a separate folder", - "@downloadSeparateSinglesSubtitle": { - "description": "Subtitle for separate singles toggle" - }, - "qualityBest": "Best Available", - "@qualityBest": { - "description": "Audio quality option - highest available" - }, - "qualityFlac": "FLAC", - "@qualityFlac": { - "description": "Audio quality option - FLAC lossless" - }, - "quality320": "320 kbps", - "@quality320": { - "description": "Audio quality option - 320kbps MP3" - }, - "quality128": "128 kbps", - "@quality128": { - "description": "Audio quality option - 128kbps MP3" - }, "appearanceTitle": "Appearance", "@appearanceTitle": { "description": "Appearance settings page title" }, - "appearanceTheme": "Theme", - "@appearanceTheme": { - "description": "Theme mode setting" - }, "appearanceThemeSystem": "System", "@appearanceThemeSystem": { "description": "Follow system theme" @@ -255,10 +117,6 @@ "@appearanceDynamicColorSubtitle": { "description": "Subtitle for dynamic color" }, - "appearanceAccentColor": "Accent Color", - "@appearanceAccentColor": { - "description": "Custom accent color picker" - }, "appearanceHistoryView": "History View", "@appearanceHistoryView": { "description": "Layout style for history" @@ -275,10 +133,6 @@ "@optionsTitle": { "description": "Options settings page title" }, - "optionsSearchSource": "Search Source", - "@optionsSearchSource": { - "description": "Section for search provider settings" - }, "optionsPrimaryProvider": "Primary Provider", "@optionsPrimaryProvider": { "description": "Main search provider setting" @@ -438,22 +292,6 @@ "@extensionsTitle": { "description": "Extensions page title" }, - "extensionsInstalled": "Installed Extensions", - "@extensionsInstalled": { - "description": "Section header for installed extensions" - }, - "extensionsNone": "No extensions installed", - "@extensionsNone": { - "description": "Empty state title" - }, - "extensionsNoneSubtitle": "Install extensions from the Store tab", - "@extensionsNoneSubtitle": { - "description": "Empty state subtitle" - }, - "extensionsEnabled": "Enabled", - "@extensionsEnabled": { - "description": "Extension status - active" - }, "extensionsDisabled": "Disabled", "@extensionsDisabled": { "description": "Extension status - inactive" @@ -480,10 +318,6 @@ "@extensionsUninstall": { "description": "Uninstall extension button" }, - "extensionsSetAsSearch": "Set as Search Provider", - "@extensionsSetAsSearch": { - "description": "Use extension for search" - }, "storeTitle": "Extension Store", "@storeTitle": { "description": "Store screen title" @@ -580,10 +414,6 @@ "@aboutSocial": { "description": "Section for social links" }, - "aboutSupport": "Support", - "@aboutSupport": { - "description": "Section for support/donation links" - }, "aboutApp": "App", "@aboutApp": { "description": "Section for app info" @@ -604,14 +434,6 @@ "@aboutSjdonadoDesc": { "description": "Credit description for sjdonado" }, - "aboutDoubleDouble": "DoubleDouble", - "@aboutDoubleDouble": { - "description": "Name of Amazon API service - DO NOT TRANSLATE" - }, - "aboutDoubleDoubleDesc": "Amazing API for Amazon Music downloads. Thank you for making it free!", - "@aboutDoubleDoubleDesc": { - "description": "Credit for DoubleDouble API" - }, "aboutDabMusic": "DAB Music", "@aboutDabMusic": { "description": "Name of Qobuz API service - DO NOT TRANSLATE" @@ -632,35 +454,6 @@ "@aboutAppDescription": { "description": "App description in header card" }, - "albumTitle": "Album", - "@albumTitle": { - "description": "Album screen title" - }, - "albumTracks": "{count, plural, =1{1 track} other{{count} tracks}}", - "@albumTracks": { - "description": "Album track count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "albumDownloadAll": "Download All", - "@albumDownloadAll": { - "description": "Button to download all tracks" - }, - "albumDownloadRemaining": "Download Remaining", - "@albumDownloadRemaining": { - "description": "Button to download remaining tracks" - }, - "playlistTitle": "Playlist", - "@playlistTitle": { - "description": "Playlist screen title" - }, - "artistTitle": "Artist", - "@artistTitle": { - "description": "Artist screen title" - }, "artistAlbums": "Albums", "@artistAlbums": { "description": "Section header for artist albums" @@ -673,15 +466,6 @@ "@artistCompilations": { "description": "Section header for compilations" }, - "artistReleases": "{count, plural, =1{1 release} other{{count} releases}}", - "@artistReleases": { - "description": "Artist release count", - "placeholders": { - "count": { - "type": "int" - } - } - }, "artistPopular": "Popular", "@artistPopular": { "description": "Section header for popular/top tracks" @@ -696,34 +480,6 @@ } } }, - "trackMetadataTitle": "Track Info", - "@trackMetadataTitle": { - "description": "Track metadata screen title" - }, - "trackMetadataArtist": "Artist", - "@trackMetadataArtist": { - "description": "Metadata field - artist name" - }, - "trackMetadataAlbum": "Album", - "@trackMetadataAlbum": { - "description": "Metadata field - album name" - }, - "trackMetadataDuration": "Duration", - "@trackMetadataDuration": { - "description": "Metadata field - track length" - }, - "trackMetadataQuality": "Quality", - "@trackMetadataQuality": { - "description": "Metadata field - audio quality" - }, - "trackMetadataPath": "File Path", - "@trackMetadataPath": { - "description": "Metadata field - file location" - }, - "trackMetadataDownloadedAt": "Downloaded", - "@trackMetadataDownloadedAt": { - "description": "Metadata field - download date" - }, "trackMetadataService": "Service", "@trackMetadataService": { "description": "Metadata field - download service used" @@ -740,54 +496,10 @@ "@trackMetadataDelete": { "description": "Action button - delete track" }, - "trackMetadataRedownload": "Re-download", - "@trackMetadataRedownload": { - "description": "Action button - download again" - }, - "trackMetadataOpenFolder": "Open Folder", - "@trackMetadataOpenFolder": { - "description": "Action button - open containing folder" - }, - "setupTitle": "Welcome to SpotiFLAC", - "@setupTitle": { - "description": "Setup wizard title" - }, - "setupSubtitle": "Let's get you started", - "@setupSubtitle": { - "description": "Setup wizard subtitle" - }, - "setupStoragePermission": "Storage Permission", - "@setupStoragePermission": { - "description": "Storage permission step title" - }, - "setupStoragePermissionSubtitle": "Required to save downloaded files", - "@setupStoragePermissionSubtitle": { - "description": "Explanation for storage permission" - }, - "setupStoragePermissionGranted": "Permission granted", - "@setupStoragePermissionGranted": { - "description": "Status when permission granted" - }, - "setupStoragePermissionDenied": "Permission denied", - "@setupStoragePermissionDenied": { - "description": "Status when permission denied" - }, "setupGrantPermission": "Grant Permission", "@setupGrantPermission": { "description": "Button to request permission" }, - "setupDownloadLocation": "Download Location", - "@setupDownloadLocation": { - "description": "Download folder step title" - }, - "setupChooseFolder": "Choose Folder", - "@setupChooseFolder": { - "description": "Button to pick folder" - }, - "setupContinue": "Continue", - "@setupContinue": { - "description": "Continue to next step button" - }, "setupSkip": "Skip for now", "@setupSkip": { "description": "Skip current step button" @@ -796,10 +508,6 @@ "@setupStorageAccessRequired": { "description": "Title when storage access needed" }, - "setupStorageAccessMessage": "SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.", - "@setupStorageAccessMessage": { - "description": "Explanation for storage access" - }, "setupStorageAccessMessageAndroid11": "Android 11+ requires \"All files access\" permission to save files to your chosen download folder.", "@setupStorageAccessMessageAndroid11": { "description": "Android 11+ specific explanation" @@ -831,10 +539,6 @@ } } }, - "setupSelectDownloadFolder": "Select Download Folder", - "@setupSelectDownloadFolder": { - "description": "Folder selection step title" - }, "setupUseDefaultFolder": "Use Default Folder?", "@setupUseDefaultFolder": { "description": "Dialog title for default folder" @@ -883,26 +587,6 @@ "@setupDownloadInFlac": { "description": "App tagline in setup" }, - "setupStepStorage": "Storage", - "@setupStepStorage": { - "description": "Setup step indicator - storage" - }, - "setupStepNotification": "Notification", - "@setupStepNotification": { - "description": "Setup step indicator - notification" - }, - "setupStepFolder": "Folder", - "@setupStepFolder": { - "description": "Setup step indicator - folder" - }, - "setupStepSpotify": "Spotify", - "@setupStepSpotify": { - "description": "Setup step indicator - Spotify API" - }, - "setupStepPermission": "Permission", - "@setupStepPermission": { - "description": "Setup step indicator - permission" - }, "setupStorageGranted": "Storage Permission Granted!", "@setupStorageGranted": { "description": "Success message for storage permission" @@ -923,14 +607,6 @@ "@setupNotificationEnable": { "description": "Button to enable notifications" }, - "setupNotificationDescription": "Get notified when downloads complete or require attention.", - "@setupNotificationDescription": { - "description": "Explanation for notifications" - }, - "setupFolderSelected": "Download Folder Selected!", - "@setupFolderSelected": { - "description": "Success message for folder selection" - }, "setupFolderChoose": "Choose Download Folder", "@setupFolderChoose": { "description": "Button to choose folder" @@ -939,58 +615,14 @@ "@setupFolderDescription": { "description": "Explanation for folder selection" }, - "setupChangeFolder": "Change Folder", - "@setupChangeFolder": { - "description": "Button to change selected folder" - }, "setupSelectFolder": "Select Folder", "@setupSelectFolder": { "description": "Button to select folder" }, - "setupSpotifyApiOptional": "Spotify API (Optional)", - "@setupSpotifyApiOptional": { - "description": "Spotify API step title" - }, - "setupSpotifyApiDescription": "Add your Spotify API credentials for better search results and access to Spotify-exclusive content.", - "@setupSpotifyApiDescription": { - "description": "Explanation for Spotify API" - }, - "setupUseSpotifyApi": "Use Spotify API", - "@setupUseSpotifyApi": { - "description": "Toggle to enable Spotify API" - }, - "setupEnterCredentialsBelow": "Enter your credentials below", - "@setupEnterCredentialsBelow": { - "description": "Prompt to enter credentials" - }, - "setupUsingDeezer": "Using Deezer (no account needed)", - "@setupUsingDeezer": { - "description": "Status when using Deezer" - }, - "setupEnterClientId": "Enter Spotify Client ID", - "@setupEnterClientId": { - "description": "Placeholder for client ID field" - }, - "setupEnterClientSecret": "Enter Spotify Client Secret", - "@setupEnterClientSecret": { - "description": "Placeholder for client secret field" - }, - "setupGetFreeCredentials": "Get your free API credentials from the Spotify Developer Dashboard.", - "@setupGetFreeCredentials": { - "description": "Info about getting Spotify credentials" - }, "setupEnableNotifications": "Enable Notifications", "@setupEnableNotifications": { "description": "Button to enable notifications" }, - "setupProceedToNextStep": "You can now proceed to the next step.", - "@setupProceedToNextStep": { - "description": "Message after completing a step" - }, - "setupNotificationProgressDescription": "You will receive download progress notifications.", - "@setupNotificationProgressDescription": { - "description": "Info about notification usage" - }, "setupNotificationBackgroundDescription": "Get notified about download progress and completion. This helps you track downloads when the app is in background.", "@setupNotificationBackgroundDescription": { "description": "Detailed notification explanation" @@ -999,10 +631,6 @@ "@setupSkipForNow": { "description": "Skip button text" }, - "setupBack": "Back", - "@setupBack": { - "description": "Back button text" - }, "setupNext": "Next", "@setupNext": { "description": "Next button text" @@ -1011,26 +639,14 @@ "@setupGetStarted": { "description": "Final setup button" }, - "setupSkipAndStart": "Skip & Start", - "@setupSkipAndStart": { - "description": "Skip setup and start app" - }, "setupAllowAccessToManageFiles": "Please enable \"Allow access to manage all files\" in the next screen.", "@setupAllowAccessToManageFiles": { "description": "Instruction for file access permission" }, - "setupGetCredentialsFromSpotify": "Get credentials from developer.spotify.com", - "@setupGetCredentialsFromSpotify": { - "description": "Link text for Spotify developer portal" - }, "dialogCancel": "Cancel", "@dialogCancel": { "description": "Dialog button - cancel action" }, - "dialogOk": "OK", - "@dialogOk": { - "description": "Dialog button - confirm/acknowledge" - }, "dialogSave": "Save", "@dialogSave": { "description": "Dialog button - save changes" @@ -1043,26 +659,10 @@ "@dialogRetry": { "description": "Dialog button - retry action" }, - "dialogClose": "Close", - "@dialogClose": { - "description": "Dialog button - close dialog" - }, - "dialogYes": "Yes", - "@dialogYes": { - "description": "Dialog button - confirm yes" - }, - "dialogNo": "No", - "@dialogNo": { - "description": "Dialog button - confirm no" - }, "dialogClear": "Clear", "@dialogClear": { "description": "Dialog button - clear items" }, - "dialogConfirm": "Confirm", - "@dialogConfirm": { - "description": "Dialog button - confirm action" - }, "dialogDone": "Done", "@dialogDone": { "description": "Dialog button - action completed" @@ -1091,34 +691,10 @@ "@dialogUnsavedChanges": { "description": "Dialog message - unsaved changes" }, - "dialogDownloadFailed": "Download Failed", - "@dialogDownloadFailed": { - "description": "Dialog title - download error" - }, - "dialogTrackLabel": "Track:", - "@dialogTrackLabel": { - "description": "Label for track name in error dialog" - }, - "dialogArtistLabel": "Artist:", - "@dialogArtistLabel": { - "description": "Label for artist name in error dialog" - }, - "dialogErrorLabel": "Error:", - "@dialogErrorLabel": { - "description": "Label for error message" - }, "dialogClearAll": "Clear All", "@dialogClearAll": { "description": "Dialog title - clear all items" }, - "dialogClearAllDownloads": "Are you sure you want to clear all downloads?", - "@dialogClearAllDownloads": { - "description": "Dialog message - clear downloads confirmation" - }, - "dialogRemoveFromDevice": "Remove from device?", - "@dialogRemoveFromDevice": { - "description": "Dialog title - delete file confirmation" - }, "dialogRemoveExtension": "Remove Extension", "@dialogRemoveExtension": { "description": "Dialog title - uninstall extension" @@ -1257,15 +833,6 @@ "@snackbarViewQueue": { "description": "Snackbar action - view download queue" }, - "snackbarFailedToLoad": "Failed to load: {error}", - "@snackbarFailedToLoad": { - "description": "Snackbar - loading error", - "placeholders": { - "error": { - "type": "String" - } - } - }, "snackbarUrlCopied": "{platform} URL copied to clipboard", "@snackbarUrlCopied": { "description": "Snackbar - URL copied", @@ -1326,16 +893,6 @@ "@errorRateLimitedMessage": { "description": "Error message - rate limit explanation" }, - "errorFailedToLoad": "Failed to load {item}", - "@errorFailedToLoad": { - "description": "Error message - loading failed", - "placeholders": { - "item": { - "type": "String", - "description": "Item that failed to load (album/playlist/etc)" - } - } - }, "errorNoTracksFound": "No tracks found", "@errorNoTracksFound": { "description": "Error - search returned no results" @@ -1349,34 +906,6 @@ } } }, - "statusQueued": "Queued", - "@statusQueued": { - "description": "Download status - waiting in queue" - }, - "statusDownloading": "Downloading", - "@statusDownloading": { - "description": "Download status - in progress" - }, - "statusFinalizing": "Finalizing", - "@statusFinalizing": { - "description": "Download status - writing metadata" - }, - "statusCompleted": "Completed", - "@statusCompleted": { - "description": "Download status - finished" - }, - "statusFailed": "Failed", - "@statusFailed": { - "description": "Download status - error occurred" - }, - "statusSkipped": "Skipped", - "@statusSkipped": { - "description": "Download status - already exists" - }, - "statusPaused": "Paused", - "@statusPaused": { - "description": "Download status - paused" - }, "actionPause": "Pause", "@actionPause": { "description": "Action button - pause download" @@ -1389,14 +918,6 @@ "@actionCancel": { "description": "Action button - cancel operation" }, - "actionStop": "Stop", - "@actionStop": { - "description": "Action button - stop operation" - }, - "actionSelect": "Select", - "@actionSelect": { - "description": "Action button - enter selection mode" - }, "actionSelectAll": "Select All", "@actionSelectAll": { "description": "Action button - select all items" @@ -1405,14 +926,6 @@ "@actionDeselect": { "description": "Action button - deselect all" }, - "actionPaste": "Paste", - "@actionPaste": { - "description": "Action button - paste from clipboard" - }, - "actionImportCsv": "Import CSV", - "@actionImportCsv": { - "description": "Action button - import CSV file" - }, "actionRemoveCredentials": "Remove Credentials", "@actionRemoveCredentials": { "description": "Action button - delete Spotify credentials" @@ -1434,19 +947,6 @@ "@selectionAllSelected": { "description": "Status - all items selected" }, - "selectionTapToSelect": "Tap tracks to select", - "@selectionTapToSelect": { - "description": "Hint - how to select items" - }, - "selectionDeleteTracks": "Delete {count} {count, plural, =1{track} other{tracks}}", - "@selectionDeleteTracks": { - "description": "Delete button with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, "selectionSelectToDelete": "Select tracks to delete", "@selectionSelectToDelete": { "description": "Placeholder when nothing selected" @@ -1487,55 +987,10 @@ "@tooltipPlay": { "description": "Tooltip - play button" }, - "tooltipCancel": "Cancel", - "@tooltipCancel": { - "description": "Tooltip - cancel button" - }, - "tooltipStop": "Stop", - "@tooltipStop": { - "description": "Tooltip - stop button" - }, - "tooltipRetry": "Retry", - "@tooltipRetry": { - "description": "Tooltip - retry button" - }, - "tooltipRemove": "Remove", - "@tooltipRemove": { - "description": "Tooltip - remove button" - }, - "tooltipClear": "Clear", - "@tooltipClear": { - "description": "Tooltip - clear button" - }, - "tooltipPaste": "Paste", - "@tooltipPaste": { - "description": "Tooltip - paste button" - }, "filenameFormat": "Filename Format", "@filenameFormat": { "description": "Setting title - filename pattern" }, - "filenameFormatPreview": "Preview: {preview}", - "@filenameFormatPreview": { - "description": "Preview of filename pattern", - "placeholders": { - "preview": { - "type": "String" - } - } - }, - "filenameAvailablePlaceholders": "Available placeholders:", - "@filenameAvailablePlaceholders": { - "description": "Label for placeholder list" - }, - "filenameHint": "{artist} - {title}", - "@filenameHint": { - "description": "Default filename format hint" - }, - "folderOrganization": "Folder Organization", - "@folderOrganization": { - "description": "Setting title - folder structure" - }, "folderOrganizationNone": "No organization", "@folderOrganizationNone": { "description": "Folder option - flat structure" @@ -1576,27 +1031,10 @@ "@updateAvailable": { "description": "Update dialog title" }, - "updateNewVersion": "Version {version} is available", - "@updateNewVersion": { - "description": "Update available message", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "updateDownload": "Download", - "@updateDownload": { - "description": "Update button - download update" - }, "updateLater": "Later", "@updateLater": { "description": "Update button - dismiss" }, - "updateChangelog": "Changelog", - "@updateChangelog": { - "description": "Link to changelog" - }, "updateStartingDownload": "Starting download...", "@updateStartingDownload": { "description": "Update status - initializing" @@ -1637,14 +1075,6 @@ "@updateDontRemind": { "description": "Update button - skip this version" }, - "providerPriority": "Provider Priority", - "@providerPriority": { - "description": "Setting title - download provider order" - }, - "providerPrioritySubtitle": "Drag to reorder download providers", - "@providerPrioritySubtitle": { - "description": "Subtitle for provider priority" - }, "providerPriorityTitle": "Provider Priority", "@providerPriorityTitle": { "description": "Provider priority page title" @@ -1665,14 +1095,6 @@ "@providerExtension": { "description": "Label for extension-provided providers" }, - "metadataProviderPriority": "Metadata Provider Priority", - "@metadataProviderPriority": { - "description": "Setting title - metadata provider order" - }, - "metadataProviderPrioritySubtitle": "Order used when fetching track metadata", - "@metadataProviderPrioritySubtitle": { - "description": "Subtitle for metadata priority" - }, "metadataProviderPriorityTitle": "Metadata Priority", "@metadataProviderPriorityTitle": { "description": "Metadata priority page title" @@ -1697,22 +1119,6 @@ "@logTitle": { "description": "Logs screen title" }, - "logCopy": "Copy Logs", - "@logCopy": { - "description": "Action - copy logs to clipboard" - }, - "logClear": "Clear Logs", - "@logClear": { - "description": "Action - delete all logs" - }, - "logShare": "Share Logs", - "@logShare": { - "description": "Action - share logs file" - }, - "logEmpty": "No logs yet", - "@logEmpty": { - "description": "Empty state title" - }, "logCopied": "Logs copied to clipboard", "@logCopied": { "description": "Snackbar - logs copied" @@ -1745,22 +1151,6 @@ "@logClearLogsMessage": { "description": "Clear logs confirmation message" }, - "logIspBlocking": "ISP BLOCKING DETECTED", - "@logIspBlocking": { - "description": "Error category - ISP blocking" - }, - "logRateLimited": "RATE LIMITED", - "@logRateLimited": { - "description": "Error category - rate limiting" - }, - "logNetworkError": "NETWORK ERROR", - "@logNetworkError": { - "description": "Error category - network issues" - }, - "logTrackNotFound": "TRACK NOT FOUND", - "@logTrackNotFound": { - "description": "Error category - missing tracks" - }, "logFilterBySeverity": "Filter logs by severity", "@logFilterBySeverity": { "description": "Filter dialog title" @@ -1773,60 +1163,6 @@ "@logNoLogsYetSubtitle": { "description": "Empty state subtitle" }, - "logIssueSummary": "Issue Summary", - "@logIssueSummary": { - "description": "Section header for error summary" - }, - "logIspBlockingDescription": "Your ISP may be blocking access to download services", - "@logIspBlockingDescription": { - "description": "ISP blocking explanation" - }, - "logIspBlockingSuggestion": "Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8", - "@logIspBlockingSuggestion": { - "description": "ISP blocking fix suggestion" - }, - "logRateLimitedDescription": "Too many requests to the service", - "@logRateLimitedDescription": { - "description": "Rate limit explanation" - }, - "logRateLimitedSuggestion": "Wait a few minutes before trying again", - "@logRateLimitedSuggestion": { - "description": "Rate limit fix suggestion" - }, - "logNetworkErrorDescription": "Connection issues detected", - "@logNetworkErrorDescription": { - "description": "Network error explanation" - }, - "logNetworkErrorSuggestion": "Check your internet connection", - "@logNetworkErrorSuggestion": { - "description": "Network error fix suggestion" - }, - "logTrackNotFoundDescription": "Some tracks could not be found on download services", - "@logTrackNotFoundDescription": { - "description": "Track not found explanation" - }, - "logTrackNotFoundSuggestion": "The track may not be available in lossless quality", - "@logTrackNotFoundSuggestion": { - "description": "Track not found explanation" - }, - "logTotalErrors": "Total errors: {count}", - "@logTotalErrors": { - "description": "Error count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "logAffected": "Affected: {domains}", - "@logAffected": { - "description": "Affected domains display", - "placeholders": { - "domains": { - "type": "String" - } - } - }, "logEntriesFiltered": "Entries ({count} filtered)", "@logEntriesFiltered": { "description": "Log count with filter active", @@ -1969,10 +1305,6 @@ "@appearanceLanguage": { "description": "Language setting title" }, - "appearanceLanguageSubtitle": "Choose your preferred language", - "@appearanceLanguageSubtitle": { - "description": "Language setting subtitle" - }, "settingsAppearanceSubtitle": "Theme, colors, display", "@settingsAppearanceSubtitle": { "description": "Appearance settings description" @@ -2001,10 +1333,6 @@ "@pressBackAgainToExit": { "description": "Exit confirmation message" }, - "tracksHeader": "Tracks", - "@tracksHeader": { - "description": "Section header for track list" - }, "downloadAllCount": "Download All ({count})", "@downloadAllCount": { "description": "Download all button with count", @@ -2151,15 +1479,6 @@ "@trackDeleteConfirmMessage": { "description": "Delete confirmation message" }, - "trackCannotOpen": "Cannot open: {message}", - "@trackCannotOpen": { - "description": "Error opening file", - "placeholders": { - "message": { - "type": "String" - } - } - }, "dateToday": "Today", "@dateToday": { "description": "Relative date - today" @@ -2195,22 +1514,6 @@ } } }, - "concurrentSequential": "Sequential", - "@concurrentSequential": { - "description": "Download mode - one at a time" - }, - "concurrentParallel2": "2 Parallel", - "@concurrentParallel2": { - "description": "Download mode - 2 simultaneous" - }, - "concurrentParallel3": "3 Parallel", - "@concurrentParallel3": { - "description": "Download mode - 3 simultaneous" - }, - "tapToSeeError": "Tap to see error details", - "@tapToSeeError": { - "description": "Tooltip for failed download" - }, "storeFilterAll": "All", "@storeFilterAll": { "description": "Store filter - all extensions" @@ -2239,18 +1542,6 @@ "@storeClearFilters": { "description": "Button to clear all filters" }, - "storeNoResults": "No extensions found", - "@storeNoResults": { - "description": "Empty state when no extensions match filters" - }, - "extensionProviderPriority": "Provider Priority", - "@extensionProviderPriority": { - "description": "Extension capability - provider priority" - }, - "extensionInstallButton": "Install Extension", - "@extensionInstallButton": { - "description": "Button to install extension" - }, "extensionDefaultProvider": "Default (Deezer/Spotify)", "@extensionDefaultProvider": { "description": "Default search provider option" @@ -2450,46 +1741,6 @@ "@qualityHiResFlacMaxSubtitle": { "description": "Technical spec for hi-res max" }, - "qualityLossy": "Lossy", - "@qualityLossy": { - "description": "Quality option - lossy format (MP3/Opus)" - }, - "qualityLossyMp3Subtitle": "MP3 320kbps (converted from FLAC)", - "@qualityLossyMp3Subtitle": { - "description": "Technical spec for lossy MP3" - }, - "qualityLossyOpusSubtitle": "Opus 128kbps (converted from FLAC)", - "@qualityLossyOpusSubtitle": { - "description": "Technical spec for lossy Opus" - }, - "enableLossyOption": "Enable Lossy Option", - "@enableLossyOption": { - "description": "Setting - enable lossy quality option" - }, - "enableLossyOptionSubtitleOn": "Lossy quality option is available", - "@enableLossyOptionSubtitleOn": { - "description": "Subtitle when lossy is enabled" - }, - "enableLossyOptionSubtitleOff": "Downloads FLAC then converts to lossy format", - "@enableLossyOptionSubtitleOff": { - "description": "Subtitle when lossy is disabled" - }, - "lossyFormat": "Lossy Format", - "@lossyFormat": { - "description": "Setting - choose lossy format" - }, - "lossyFormatDescription": "Choose the lossy format for conversion", - "@lossyFormatDescription": { - "description": "Description for lossy format picker" - }, - "lossyFormatMp3Subtitle": "320kbps, best compatibility", - "@lossyFormatMp3Subtitle": { - "description": "MP3 format description" - }, - "lossyFormatOpusSubtitle": "128kbps, better quality at smaller size", - "@lossyFormatOpusSubtitle": { - "description": "Opus format description" - }, "qualityNote": "Actual quality depends on track availability from the service", "@qualityNote": { "description": "Note about quality availability" @@ -2518,14 +1769,6 @@ "@downloadUseAlbumArtistForFolders": { "description": "Setting - choose whether artist folders use Album Artist or Track Artist" }, - "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Artist folders use Album Artist when available", - "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { - "description": "Subtitle when Album Artist is used for folder naming" - }, - "downloadUseAlbumArtistForFoldersTrackSubtitle": "Artist folders use Track Artist only", - "@downloadUseAlbumArtistForFoldersTrackSubtitle": { - "description": "Subtitle when Track Artist is used for folder naming" - }, "downloadUsePrimaryArtistOnly": "Primary artist only for folders", "@downloadUsePrimaryArtistOnly": { "description": "Setting - strip featured artists from folder name" @@ -2538,14 +1781,6 @@ "@downloadUsePrimaryArtistOnlyDisabled": { "description": "Subtitle when primary artist only is disabled" }, - "downloadSaveFormat": "Save Format", - "@downloadSaveFormat": { - "description": "Setting - output file format" - }, - "downloadSelectService": "Select Service", - "@downloadSelectService": { - "description": "Dialog title - choose download service" - }, "downloadSelectQuality": "Select Quality", "@downloadSelectQuality": { "description": "Dialog title - choose audio quality" @@ -2554,66 +1789,6 @@ "@downloadFrom": { "description": "Label - download source" }, - "downloadDefaultQualityLabel": "Default Quality", - "@downloadDefaultQualityLabel": { - "description": "Label - default quality setting" - }, - "downloadBestAvailable": "Best available", - "@downloadBestAvailable": { - "description": "Quality option - highest available" - }, - "folderNone": "None", - "@folderNone": { - "description": "Folder option - no organization" - }, - "folderNoneSubtitle": "Save all files directly to download folder", - "@folderNoneSubtitle": { - "description": "Subtitle for no folder organization" - }, - "folderArtist": "Artist", - "@folderArtist": { - "description": "Folder option - by artist" - }, - "folderArtistSubtitle": "Artist Name/filename", - "@folderArtistSubtitle": { - "description": "Folder structure example" - }, - "folderAlbum": "Album", - "@folderAlbum": { - "description": "Folder option - by album" - }, - "folderAlbumSubtitle": "Album Name/filename", - "@folderAlbumSubtitle": { - "description": "Folder structure example" - }, - "folderArtistAlbum": "Artist/Album", - "@folderArtistAlbum": { - "description": "Folder option - nested" - }, - "folderArtistAlbumSubtitle": "Artist Name/Album Name/filename", - "@folderArtistAlbumSubtitle": { - "description": "Folder structure example" - }, - "serviceTidal": "Tidal", - "@serviceTidal": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceQobuz": "Qobuz", - "@serviceQobuz": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceAmazon": "Amazon", - "@serviceAmazon": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceDeezer": "Deezer", - "@serviceDeezer": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceSpotify": "Spotify", - "@serviceSpotify": { - "description": "Service name - DO NOT TRANSLATE" - }, "appearanceAmoledDark": "AMOLED Dark", "@appearanceAmoledDark": { "description": "Theme option - pure black" @@ -2622,18 +1797,6 @@ "@appearanceAmoledDarkSubtitle": { "description": "Subtitle for AMOLED dark" }, - "appearanceChooseAccentColor": "Choose Accent Color", - "@appearanceChooseAccentColor": { - "description": "Color picker dialog title" - }, - "appearanceChooseTheme": "Theme Mode", - "@appearanceChooseTheme": { - "description": "Theme picker dialog title" - }, - "queueTitle": "Download Queue", - "@queueTitle": { - "description": "Queue screen title" - }, "queueClearAll": "Clear All", "@queueClearAll": { "description": "Button - clear all queue items" @@ -2642,22 +1805,6 @@ "@queueClearAllMessage": { "description": "Clear queue confirmation" }, - "queueExportFailed": "Export", - "@queueExportFailed": { - "description": "Button - export failed downloads to TXT" - }, - "queueExportFailedSuccess": "Failed downloads exported to TXT file", - "@queueExportFailedSuccess": { - "description": "Success message after exporting failed downloads" - }, - "queueExportFailedClear": "Clear Failed", - "@queueExportFailedClear": { - "description": "Action to clear failed downloads after export" - }, - "queueExportFailedError": "Failed to export downloads", - "@queueExportFailedError": { - "description": "Error message when export fails" - }, "settingsAutoExportFailed": "Auto-export failed downloads", "@settingsAutoExportFailed": { "description": "Setting toggle for auto-export" @@ -2682,38 +1829,6 @@ "@settingsDownloadNetworkSubtitle": { "description": "Subtitle explaining network preference" }, - "queueEmpty": "No downloads in queue", - "@queueEmpty": { - "description": "Empty queue state title" - }, - "queueEmptySubtitle": "Add tracks from the home screen", - "@queueEmptySubtitle": { - "description": "Empty queue state subtitle" - }, - "queueClearCompleted": "Clear completed", - "@queueClearCompleted": { - "description": "Button - clear finished downloads" - }, - "queueDownloadFailed": "Download Failed", - "@queueDownloadFailed": { - "description": "Error dialog title" - }, - "queueTrackLabel": "Track:", - "@queueTrackLabel": { - "description": "Label in error dialog" - }, - "queueArtistLabel": "Artist:", - "@queueArtistLabel": { - "description": "Label in error dialog" - }, - "queueErrorLabel": "Error:", - "@queueErrorLabel": { - "description": "Label in error dialog" - }, - "queueUnknownError": "Unknown error", - "@queueUnknownError": { - "description": "Fallback error message" - }, "albumFolderArtistAlbum": "Artist / Album", "@albumFolderArtistAlbum": { "description": "Album folder option" @@ -2767,19 +1882,6 @@ } } }, - "downloadedAlbumTracksHeader": "Tracks", - "@downloadedAlbumTracksHeader": { - "description": "Section header for tracks" - }, - "downloadedAlbumDownloadedCount": "{count} downloaded", - "@downloadedAlbumDownloadedCount": { - "description": "Downloaded tracks count badge", - "placeholders": { - "count": { - "type": "int" - } - } - }, "downloadedAlbumSelectedCount": "{count} selected", "@downloadedAlbumSelectedCount": { "description": "Selection count indicator", @@ -2820,10 +1922,6 @@ } } }, - "utilityFunctions": "Utility Functions", - "@utilityFunctions": { - "description": "Extension capability - utility functions" - }, "recentTypeArtist": "Artist", "@recentTypeArtist": { "description": "Recent access item type - artist" @@ -2858,16 +1956,6 @@ } } }, - "errorGeneric": "Error: {message}", - "@errorGeneric": { - "description": "Generic error message format", - "placeholders": { - "message": { - "type": "String", - "description": "Error message" - } - } - }, "discographyDownload": "Download Discography", "@discographyDownload": { "description": "Button - download artist discography" @@ -3034,10 +2122,6 @@ "@libraryTitle": { "description": "Library settings page title" }, - "libraryStatus": "Library Status", - "@libraryStatus": { - "description": "Section header for library status" - }, "libraryScanSettings": "Scan Settings", "@libraryScanSettings": { "description": "Section header for scan settings" @@ -3114,15 +2198,6 @@ "@libraryAboutDescription": { "description": "Description of local library feature" }, - "libraryTracksCount": "{count} tracks", - "@libraryTracksCount": { - "description": "Track count in library", - "placeholders": { - "count": { - "type": "int" - } - } - }, "libraryLastScanned": "Last scanned: {time}", "@libraryLastScanned": { "description": "Last scan time display", @@ -3237,26 +2312,6 @@ "@libraryFilterFormat": { "description": "Filter section - file format" }, - "libraryFilterDate": "Date Added", - "@libraryFilterDate": { - "description": "Filter section - date range" - }, - "libraryFilterDateToday": "Today", - "@libraryFilterDateToday": { - "description": "Filter option - today only" - }, - "libraryFilterDateWeek": "This Week", - "@libraryFilterDateWeek": { - "description": "Filter option - this week" - }, - "libraryFilterDateMonth": "This Month", - "@libraryFilterDateMonth": { - "description": "Filter option - this month" - }, - "libraryFilterDateYear": "This Year", - "@libraryFilterDateYear": { - "description": "Filter option - this year" - }, "libraryFilterSort": "Sort", "@libraryFilterSort": { "description": "Filter section - sort order" @@ -3269,15 +2324,6 @@ "@libraryFilterSortOldest": { "description": "Sort option - oldest first" }, - "libraryFilterActive": "{count} filter(s) active", - "@libraryFilterActive": { - "description": "Badge showing number of active filters", - "placeholders": { - "count": { - "type": "int" - } - } - }, "timeJustNow": "Just now", "@timeJustNow": { "description": "Relative time - less than a minute ago" @@ -3300,106 +2346,6 @@ } } }, - "storageSwitchTitle": "Switch Storage Mode", - "@storageSwitchTitle": { - "description": "Dialog title when switching storage mode" - }, - "storageSwitchToSafTitle": "Switch to SAF Storage?", - "@storageSwitchToSafTitle": { - "description": "Dialog title when switching to SAF" - }, - "storageSwitchToAppTitle": "Switch to App Storage?", - "@storageSwitchToAppTitle": { - "description": "Dialog title when switching to app storage" - }, - "storageSwitchToSafMessage": "Your existing downloads will remain in the current location and stay accessible.\n\nNew downloads will be saved to your selected SAF folder.", - "@storageSwitchToSafMessage": { - "description": "Explanation when switching to SAF" - }, - "storageSwitchToAppMessage": "Your existing downloads will remain in the current SAF location and stay accessible.\n\nNew downloads will be saved to Music/SpotiFLAC folder.", - "@storageSwitchToAppMessage": { - "description": "Explanation when switching to app storage" - }, - "storageSwitchExistingDownloads": "Existing Downloads", - "@storageSwitchExistingDownloads": { - "description": "Section header for existing downloads info" - }, - "storageSwitchExistingDownloadsInfo": "{count} tracks in {mode} storage", - "@storageSwitchExistingDownloadsInfo": { - "description": "Info about existing downloads count", - "placeholders": { - "count": { - "type": "int" - }, - "mode": { - "type": "String" - } - } - }, - "storageSwitchNewDownloads": "New Downloads", - "@storageSwitchNewDownloads": { - "description": "Section header for new downloads info" - }, - "storageSwitchNewDownloadsLocation": "Will be saved to: {location}", - "@storageSwitchNewDownloadsLocation": { - "description": "Shows where new downloads will go", - "placeholders": { - "location": { - "type": "String" - } - } - }, - "storageSwitchContinue": "Continue", - "@storageSwitchContinue": { - "description": "Button to proceed with storage switch" - }, - "storageSwitchSelectFolder": "Select SAF Folder", - "@storageSwitchSelectFolder": { - "description": "Button to select SAF folder" - }, - "storageAppStorage": "App Storage", - "@storageAppStorage": { - "description": "Label for app storage mode" - }, - "storageSafStorage": "SAF Storage", - "@storageSafStorage": { - "description": "Label for SAF storage mode" - }, - "storageModeBadge": "Storage: {mode}", - "@storageModeBadge": { - "description": "Badge showing storage mode for a track", - "placeholders": { - "mode": { - "type": "String" - } - } - }, - "storageStatsTitle": "Storage Statistics", - "@storageStatsTitle": { - "description": "Section title for storage stats" - }, - "storageStatsAppCount": "{count} tracks in App Storage", - "@storageStatsAppCount": { - "description": "Count of tracks in app storage", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storageStatsSafCount": "{count} tracks in SAF Storage", - "@storageStatsSafCount": { - "description": "Count of tracks in SAF storage", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storageModeInfo": "Your files are stored in multiple locations", - "@storageModeInfo": { - "description": "Info when user has files in both storage modes" - }, "tutorialWelcomeTitle": "Welcome to SpotiFLAC!", "@tutorialWelcomeTitle": { "description": "Tutorial welcome page title" @@ -3428,18 +2374,6 @@ "@tutorialSearchDesc": { "description": "Tutorial search page description" }, - "tutorialSearchTip1": "Paste a Spotify or Deezer URL directly in the search box", - "@tutorialSearchTip1": { - "description": "Tutorial search tip 1" - }, - "tutorialSearchTip2": "Or type the song name, artist, or album to search", - "@tutorialSearchTip2": { - "description": "Tutorial search tip 2" - }, - "tutorialSearchTip3": "Supports tracks, albums, playlists, and artist pages", - "@tutorialSearchTip3": { - "description": "Tutorial search tip 3" - }, "tutorialDownloadTitle": "Downloading Music", "@tutorialDownloadTitle": { "description": "Tutorial download page title" @@ -3448,18 +2382,6 @@ "@tutorialDownloadDesc": { "description": "Tutorial download page description" }, - "tutorialDownloadTip1": "Tap the download button next to any track to start downloading", - "@tutorialDownloadTip1": { - "description": "Tutorial download tip 1" - }, - "tutorialDownloadTip2": "Choose your preferred quality (FLAC, Hi-Res, or MP3)", - "@tutorialDownloadTip2": { - "description": "Tutorial download tip 2" - }, - "tutorialDownloadTip3": "Download entire albums or playlists with one tap", - "@tutorialDownloadTip3": { - "description": "Tutorial download tip 3" - }, "tutorialLibraryTitle": "Your Library", "@tutorialLibraryTitle": { "description": "Tutorial library page title" @@ -3524,10 +2446,6 @@ "@tutorialReadyMessage": { "description": "Tutorial completion message" }, - "tutorialExample": "EXAMPLE", - "@tutorialExample": { - "description": "Example label in tutorial" - }, "libraryForceFullScan": "Force Full Scan", "@libraryForceFullScan": { "description": "Button to force a complete rescan of library" @@ -3754,10 +2672,6 @@ "@trackReEnrich": { "description": "Menu action - re-embed metadata into audio file" }, - "trackReEnrichSubtitle": "Re-embed metadata without re-downloading", - "@trackReEnrichSubtitle": { - "description": "Subtitle for re-enrich metadata action" - }, "trackReEnrichOnlineSubtitle": "Search metadata online and embed into file", "@trackReEnrichOnlineSubtitle": { "description": "Subtitle for re-enrich metadata action for local items" @@ -3869,15 +2783,21 @@ "@trackConvertFailed": { "description": "Snackbar when conversion fails" }, - "setupModeSelectionTitle": "选择您的模式", - "setupModeSelectionDescription": "您想如何使用 SpotiFLAC?您可以稍后在设置中随时更改。", - "setupModeDownloaderTitle": "下载器", - "setupModeDownloaderFeature1": "以无损 FLAC 品质下载曲目", - "setupModeDownloaderFeature2": "将音乐保存到设备以供离线收听", - "setupModeDownloaderFeature3": "管理您的本地音乐库", - "setupModeStreamingTitle": "流媒体", - "setupModeStreamingFeature1": "无需下载即可即时播放曲目", - "setupModeStreamingFeature2": "Smart Queue 自动为您发现新音乐", - "setupModeStreamingFeature3": "通过播放控件随时点播任意曲目", - "setupModeChangeableLater": "您可以随时在设置中切换模式。" -} \ No newline at end of file + "downloadedAlbumDownloadedCount": "{count} downloaded", + "@downloadedAlbumDownloadedCount": { + "description": "Downloaded tracks count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Artist folders use Album Artist when available", + "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { + "description": "Subtitle when Album Artist is used for folder naming" + }, + "downloadUseAlbumArtistForFoldersTrackSubtitle": "Artist folders use Track Artist only", + "@downloadUseAlbumArtistForFoldersTrackSubtitle": { + "description": "Subtitle when Track Artist is used for folder naming" + } +} diff --git a/lib/l10n/arb/app_zh_TW.arb b/lib/l10n/arb/app_zh_TW.arb index 51935549..d230aa50 100644 --- a/lib/l10n/arb/app_zh_TW.arb +++ b/lib/l10n/arb/app_zh_TW.arb @@ -5,10 +5,6 @@ "@appName": { "description": "App name - DO NOT TRANSLATE" }, - "appDescription": "Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.", - "@appDescription": { - "description": "App description shown in about page" - }, "navHome": "Home", "@navHome": { "description": "Bottom navigation - Home tab" @@ -17,10 +13,6 @@ "@navLibrary": { "description": "Bottom navigation - Library tab" }, - "navHistory": "History", - "@navHistory": { - "description": "Bottom navigation - History tab (legacy)" - }, "navSettings": "Settings", "@navSettings": { "description": "Bottom navigation - Settings tab" @@ -33,20 +25,6 @@ "@homeTitle": { "description": "Home screen title" }, - "homeSearchHint": "Paste Spotify URL or search...", - "@homeSearchHint": { - "description": "Placeholder text in search box" - }, - "homeSearchHintExtension": "Search with {extensionName}...", - "@homeSearchHintExtension": { - "description": "Placeholder when extension search is active", - "placeholders": { - "extensionName": { - "type": "String", - "description": "Name of the active extension" - } - } - }, "homeSubtitle": "Paste a Spotify link or search by name", "@homeSubtitle": { "description": "Subtitle shown below search box" @@ -59,24 +37,6 @@ "@homeRecent": { "description": "Section header for recent searches" }, - "historyTitle": "History", - "@historyTitle": { - "description": "History screen title" - }, - "historyDownloading": "Downloading ({count})", - "@historyDownloading": { - "description": "Tab showing active downloads count", - "placeholders": { - "count": { - "type": "int", - "description": "Number of active downloads" - } - } - }, - "historyDownloaded": "Downloaded", - "@historyDownloaded": { - "description": "Tab showing completed downloads" - }, "historyFilterAll": "All", "@historyFilterAll": { "description": "Filter chip - show all items" @@ -89,48 +49,6 @@ "@historyFilterSingles": { "description": "Filter chip - show singles only" }, - "historyTracksCount": "{count, plural, =1{1 track} other{{count} tracks}}", - "@historyTracksCount": { - "description": "Track count with plural form", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "historyAlbumsCount": "{count, plural, =1{1 album} other{{count} albums}}", - "@historyAlbumsCount": { - "description": "Album count with plural form", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "historyNoDownloads": "No download history", - "@historyNoDownloads": { - "description": "Empty state title" - }, - "historyNoDownloadsSubtitle": "Downloaded tracks will appear here", - "@historyNoDownloadsSubtitle": { - "description": "Empty state subtitle" - }, - "historyNoAlbums": "No album downloads", - "@historyNoAlbums": { - "description": "Empty state when filtering albums" - }, - "historyNoAlbumsSubtitle": "Download multiple tracks from an album to see them here", - "@historyNoAlbumsSubtitle": { - "description": "Empty state subtitle for albums filter" - }, - "historyNoSingles": "No single downloads", - "@historyNoSingles": { - "description": "Empty state when filtering singles" - }, - "historyNoSinglesSubtitle": "Single track downloads will appear here", - "@historyNoSinglesSubtitle": { - "description": "Empty state subtitle for singles filter" - }, "historySearchHint": "Search history...", "@historySearchHint": { "description": "Search bar placeholder in history" @@ -163,34 +81,6 @@ "@downloadTitle": { "description": "Download settings page title" }, - "downloadLocation": "Download Location", - "@downloadLocation": { - "description": "Setting for download folder" - }, - "downloadLocationSubtitle": "Choose where to save files", - "@downloadLocationSubtitle": { - "description": "Subtitle for download location" - }, - "downloadLocationDefault": "Default location", - "@downloadLocationDefault": { - "description": "Shown when using default folder" - }, - "downloadDefaultService": "Default Service", - "@downloadDefaultService": { - "description": "Setting for preferred download service (Tidal/Qobuz/Amazon)" - }, - "downloadDefaultServiceSubtitle": "Service used for downloads", - "@downloadDefaultServiceSubtitle": { - "description": "Subtitle for default service" - }, - "downloadDefaultQuality": "Default Quality", - "@downloadDefaultQuality": { - "description": "Setting for audio quality" - }, - "downloadAskQuality": "Ask Quality Before Download", - "@downloadAskQuality": { - "description": "Toggle to show quality picker" - }, "downloadAskQualitySubtitle": "Show quality picker for each download", "@downloadAskQualitySubtitle": { "description": "Subtitle for ask quality toggle" @@ -203,38 +93,10 @@ "@downloadFolderOrganization": { "description": "Setting for folder structure" }, - "downloadSeparateSingles": "Separate Singles", - "@downloadSeparateSingles": { - "description": "Toggle to separate single tracks" - }, - "downloadSeparateSinglesSubtitle": "Put single tracks in a separate folder", - "@downloadSeparateSinglesSubtitle": { - "description": "Subtitle for separate singles toggle" - }, - "qualityBest": "Best Available", - "@qualityBest": { - "description": "Audio quality option - highest available" - }, - "qualityFlac": "FLAC", - "@qualityFlac": { - "description": "Audio quality option - FLAC lossless" - }, - "quality320": "320 kbps", - "@quality320": { - "description": "Audio quality option - 320kbps MP3" - }, - "quality128": "128 kbps", - "@quality128": { - "description": "Audio quality option - 128kbps MP3" - }, "appearanceTitle": "Appearance", "@appearanceTitle": { "description": "Appearance settings page title" }, - "appearanceTheme": "Theme", - "@appearanceTheme": { - "description": "Theme mode setting" - }, "appearanceThemeSystem": "System", "@appearanceThemeSystem": { "description": "Follow system theme" @@ -255,10 +117,6 @@ "@appearanceDynamicColorSubtitle": { "description": "Subtitle for dynamic color" }, - "appearanceAccentColor": "Accent Color", - "@appearanceAccentColor": { - "description": "Custom accent color picker" - }, "appearanceHistoryView": "History View", "@appearanceHistoryView": { "description": "Layout style for history" @@ -275,10 +133,6 @@ "@optionsTitle": { "description": "Options settings page title" }, - "optionsSearchSource": "Search Source", - "@optionsSearchSource": { - "description": "Section for search provider settings" - }, "optionsPrimaryProvider": "Primary Provider", "@optionsPrimaryProvider": { "description": "Main search provider setting" @@ -438,22 +292,6 @@ "@extensionsTitle": { "description": "Extensions page title" }, - "extensionsInstalled": "Installed Extensions", - "@extensionsInstalled": { - "description": "Section header for installed extensions" - }, - "extensionsNone": "No extensions installed", - "@extensionsNone": { - "description": "Empty state title" - }, - "extensionsNoneSubtitle": "Install extensions from the Store tab", - "@extensionsNoneSubtitle": { - "description": "Empty state subtitle" - }, - "extensionsEnabled": "Enabled", - "@extensionsEnabled": { - "description": "Extension status - active" - }, "extensionsDisabled": "Disabled", "@extensionsDisabled": { "description": "Extension status - inactive" @@ -480,10 +318,6 @@ "@extensionsUninstall": { "description": "Uninstall extension button" }, - "extensionsSetAsSearch": "Set as Search Provider", - "@extensionsSetAsSearch": { - "description": "Use extension for search" - }, "storeTitle": "Extension Store", "@storeTitle": { "description": "Store screen title" @@ -580,10 +414,6 @@ "@aboutSocial": { "description": "Section for social links" }, - "aboutSupport": "Support", - "@aboutSupport": { - "description": "Section for support/donation links" - }, "aboutApp": "App", "@aboutApp": { "description": "Section for app info" @@ -604,14 +434,6 @@ "@aboutSjdonadoDesc": { "description": "Credit description for sjdonado" }, - "aboutDoubleDouble": "DoubleDouble", - "@aboutDoubleDouble": { - "description": "Name of Amazon API service - DO NOT TRANSLATE" - }, - "aboutDoubleDoubleDesc": "Amazing API for Amazon Music downloads. Thank you for making it free!", - "@aboutDoubleDoubleDesc": { - "description": "Credit for DoubleDouble API" - }, "aboutDabMusic": "DAB Music", "@aboutDabMusic": { "description": "Name of Qobuz API service - DO NOT TRANSLATE" @@ -632,35 +454,6 @@ "@aboutAppDescription": { "description": "App description in header card" }, - "albumTitle": "Album", - "@albumTitle": { - "description": "Album screen title" - }, - "albumTracks": "{count, plural, =1{1 track} other{{count} tracks}}", - "@albumTracks": { - "description": "Album track count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "albumDownloadAll": "Download All", - "@albumDownloadAll": { - "description": "Button to download all tracks" - }, - "albumDownloadRemaining": "Download Remaining", - "@albumDownloadRemaining": { - "description": "Button to download remaining tracks" - }, - "playlistTitle": "Playlist", - "@playlistTitle": { - "description": "Playlist screen title" - }, - "artistTitle": "Artist", - "@artistTitle": { - "description": "Artist screen title" - }, "artistAlbums": "Albums", "@artistAlbums": { "description": "Section header for artist albums" @@ -673,15 +466,6 @@ "@artistCompilations": { "description": "Section header for compilations" }, - "artistReleases": "{count, plural, =1{1 release} other{{count} releases}}", - "@artistReleases": { - "description": "Artist release count", - "placeholders": { - "count": { - "type": "int" - } - } - }, "artistPopular": "Popular", "@artistPopular": { "description": "Section header for popular/top tracks" @@ -696,34 +480,6 @@ } } }, - "trackMetadataTitle": "Track Info", - "@trackMetadataTitle": { - "description": "Track metadata screen title" - }, - "trackMetadataArtist": "Artist", - "@trackMetadataArtist": { - "description": "Metadata field - artist name" - }, - "trackMetadataAlbum": "Album", - "@trackMetadataAlbum": { - "description": "Metadata field - album name" - }, - "trackMetadataDuration": "Duration", - "@trackMetadataDuration": { - "description": "Metadata field - track length" - }, - "trackMetadataQuality": "Quality", - "@trackMetadataQuality": { - "description": "Metadata field - audio quality" - }, - "trackMetadataPath": "File Path", - "@trackMetadataPath": { - "description": "Metadata field - file location" - }, - "trackMetadataDownloadedAt": "Downloaded", - "@trackMetadataDownloadedAt": { - "description": "Metadata field - download date" - }, "trackMetadataService": "Service", "@trackMetadataService": { "description": "Metadata field - download service used" @@ -740,54 +496,10 @@ "@trackMetadataDelete": { "description": "Action button - delete track" }, - "trackMetadataRedownload": "Re-download", - "@trackMetadataRedownload": { - "description": "Action button - download again" - }, - "trackMetadataOpenFolder": "Open Folder", - "@trackMetadataOpenFolder": { - "description": "Action button - open containing folder" - }, - "setupTitle": "Welcome to SpotiFLAC", - "@setupTitle": { - "description": "Setup wizard title" - }, - "setupSubtitle": "Let's get you started", - "@setupSubtitle": { - "description": "Setup wizard subtitle" - }, - "setupStoragePermission": "Storage Permission", - "@setupStoragePermission": { - "description": "Storage permission step title" - }, - "setupStoragePermissionSubtitle": "Required to save downloaded files", - "@setupStoragePermissionSubtitle": { - "description": "Explanation for storage permission" - }, - "setupStoragePermissionGranted": "Permission granted", - "@setupStoragePermissionGranted": { - "description": "Status when permission granted" - }, - "setupStoragePermissionDenied": "Permission denied", - "@setupStoragePermissionDenied": { - "description": "Status when permission denied" - }, "setupGrantPermission": "Grant Permission", "@setupGrantPermission": { "description": "Button to request permission" }, - "setupDownloadLocation": "Download Location", - "@setupDownloadLocation": { - "description": "Download folder step title" - }, - "setupChooseFolder": "Choose Folder", - "@setupChooseFolder": { - "description": "Button to pick folder" - }, - "setupContinue": "Continue", - "@setupContinue": { - "description": "Continue to next step button" - }, "setupSkip": "Skip for now", "@setupSkip": { "description": "Skip current step button" @@ -796,10 +508,6 @@ "@setupStorageAccessRequired": { "description": "Title when storage access needed" }, - "setupStorageAccessMessage": "SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.", - "@setupStorageAccessMessage": { - "description": "Explanation for storage access" - }, "setupStorageAccessMessageAndroid11": "Android 11+ requires \"All files access\" permission to save files to your chosen download folder.", "@setupStorageAccessMessageAndroid11": { "description": "Android 11+ specific explanation" @@ -831,10 +539,6 @@ } } }, - "setupSelectDownloadFolder": "Select Download Folder", - "@setupSelectDownloadFolder": { - "description": "Folder selection step title" - }, "setupUseDefaultFolder": "Use Default Folder?", "@setupUseDefaultFolder": { "description": "Dialog title for default folder" @@ -883,26 +587,6 @@ "@setupDownloadInFlac": { "description": "App tagline in setup" }, - "setupStepStorage": "Storage", - "@setupStepStorage": { - "description": "Setup step indicator - storage" - }, - "setupStepNotification": "Notification", - "@setupStepNotification": { - "description": "Setup step indicator - notification" - }, - "setupStepFolder": "Folder", - "@setupStepFolder": { - "description": "Setup step indicator - folder" - }, - "setupStepSpotify": "Spotify", - "@setupStepSpotify": { - "description": "Setup step indicator - Spotify API" - }, - "setupStepPermission": "Permission", - "@setupStepPermission": { - "description": "Setup step indicator - permission" - }, "setupStorageGranted": "Storage Permission Granted!", "@setupStorageGranted": { "description": "Success message for storage permission" @@ -923,14 +607,6 @@ "@setupNotificationEnable": { "description": "Button to enable notifications" }, - "setupNotificationDescription": "Get notified when downloads complete or require attention.", - "@setupNotificationDescription": { - "description": "Explanation for notifications" - }, - "setupFolderSelected": "Download Folder Selected!", - "@setupFolderSelected": { - "description": "Success message for folder selection" - }, "setupFolderChoose": "Choose Download Folder", "@setupFolderChoose": { "description": "Button to choose folder" @@ -939,58 +615,14 @@ "@setupFolderDescription": { "description": "Explanation for folder selection" }, - "setupChangeFolder": "Change Folder", - "@setupChangeFolder": { - "description": "Button to change selected folder" - }, "setupSelectFolder": "Select Folder", "@setupSelectFolder": { "description": "Button to select folder" }, - "setupSpotifyApiOptional": "Spotify API (Optional)", - "@setupSpotifyApiOptional": { - "description": "Spotify API step title" - }, - "setupSpotifyApiDescription": "Add your Spotify API credentials for better search results and access to Spotify-exclusive content.", - "@setupSpotifyApiDescription": { - "description": "Explanation for Spotify API" - }, - "setupUseSpotifyApi": "Use Spotify API", - "@setupUseSpotifyApi": { - "description": "Toggle to enable Spotify API" - }, - "setupEnterCredentialsBelow": "Enter your credentials below", - "@setupEnterCredentialsBelow": { - "description": "Prompt to enter credentials" - }, - "setupUsingDeezer": "Using Deezer (no account needed)", - "@setupUsingDeezer": { - "description": "Status when using Deezer" - }, - "setupEnterClientId": "Enter Spotify Client ID", - "@setupEnterClientId": { - "description": "Placeholder for client ID field" - }, - "setupEnterClientSecret": "Enter Spotify Client Secret", - "@setupEnterClientSecret": { - "description": "Placeholder for client secret field" - }, - "setupGetFreeCredentials": "Get your free API credentials from the Spotify Developer Dashboard.", - "@setupGetFreeCredentials": { - "description": "Info about getting Spotify credentials" - }, "setupEnableNotifications": "Enable Notifications", "@setupEnableNotifications": { "description": "Button to enable notifications" }, - "setupProceedToNextStep": "You can now proceed to the next step.", - "@setupProceedToNextStep": { - "description": "Message after completing a step" - }, - "setupNotificationProgressDescription": "You will receive download progress notifications.", - "@setupNotificationProgressDescription": { - "description": "Info about notification usage" - }, "setupNotificationBackgroundDescription": "Get notified about download progress and completion. This helps you track downloads when the app is in background.", "@setupNotificationBackgroundDescription": { "description": "Detailed notification explanation" @@ -999,10 +631,6 @@ "@setupSkipForNow": { "description": "Skip button text" }, - "setupBack": "Back", - "@setupBack": { - "description": "Back button text" - }, "setupNext": "Next", "@setupNext": { "description": "Next button text" @@ -1011,26 +639,14 @@ "@setupGetStarted": { "description": "Final setup button" }, - "setupSkipAndStart": "Skip & Start", - "@setupSkipAndStart": { - "description": "Skip setup and start app" - }, "setupAllowAccessToManageFiles": "Please enable \"Allow access to manage all files\" in the next screen.", "@setupAllowAccessToManageFiles": { "description": "Instruction for file access permission" }, - "setupGetCredentialsFromSpotify": "Get credentials from developer.spotify.com", - "@setupGetCredentialsFromSpotify": { - "description": "Link text for Spotify developer portal" - }, "dialogCancel": "Cancel", "@dialogCancel": { "description": "Dialog button - cancel action" }, - "dialogOk": "OK", - "@dialogOk": { - "description": "Dialog button - confirm/acknowledge" - }, "dialogSave": "Save", "@dialogSave": { "description": "Dialog button - save changes" @@ -1043,26 +659,10 @@ "@dialogRetry": { "description": "Dialog button - retry action" }, - "dialogClose": "Close", - "@dialogClose": { - "description": "Dialog button - close dialog" - }, - "dialogYes": "Yes", - "@dialogYes": { - "description": "Dialog button - confirm yes" - }, - "dialogNo": "No", - "@dialogNo": { - "description": "Dialog button - confirm no" - }, "dialogClear": "Clear", "@dialogClear": { "description": "Dialog button - clear items" }, - "dialogConfirm": "Confirm", - "@dialogConfirm": { - "description": "Dialog button - confirm action" - }, "dialogDone": "Done", "@dialogDone": { "description": "Dialog button - action completed" @@ -1091,34 +691,10 @@ "@dialogUnsavedChanges": { "description": "Dialog message - unsaved changes" }, - "dialogDownloadFailed": "Download Failed", - "@dialogDownloadFailed": { - "description": "Dialog title - download error" - }, - "dialogTrackLabel": "Track:", - "@dialogTrackLabel": { - "description": "Label for track name in error dialog" - }, - "dialogArtistLabel": "Artist:", - "@dialogArtistLabel": { - "description": "Label for artist name in error dialog" - }, - "dialogErrorLabel": "Error:", - "@dialogErrorLabel": { - "description": "Label for error message" - }, "dialogClearAll": "Clear All", "@dialogClearAll": { "description": "Dialog title - clear all items" }, - "dialogClearAllDownloads": "Are you sure you want to clear all downloads?", - "@dialogClearAllDownloads": { - "description": "Dialog message - clear downloads confirmation" - }, - "dialogRemoveFromDevice": "Remove from device?", - "@dialogRemoveFromDevice": { - "description": "Dialog title - delete file confirmation" - }, "dialogRemoveExtension": "Remove Extension", "@dialogRemoveExtension": { "description": "Dialog title - uninstall extension" @@ -1257,15 +833,6 @@ "@snackbarViewQueue": { "description": "Snackbar action - view download queue" }, - "snackbarFailedToLoad": "Failed to load: {error}", - "@snackbarFailedToLoad": { - "description": "Snackbar - loading error", - "placeholders": { - "error": { - "type": "String" - } - } - }, "snackbarUrlCopied": "{platform} URL copied to clipboard", "@snackbarUrlCopied": { "description": "Snackbar - URL copied", @@ -1326,16 +893,6 @@ "@errorRateLimitedMessage": { "description": "Error message - rate limit explanation" }, - "errorFailedToLoad": "Failed to load {item}", - "@errorFailedToLoad": { - "description": "Error message - loading failed", - "placeholders": { - "item": { - "type": "String", - "description": "Item that failed to load (album/playlist/etc)" - } - } - }, "errorNoTracksFound": "No tracks found", "@errorNoTracksFound": { "description": "Error - search returned no results" @@ -1349,34 +906,6 @@ } } }, - "statusQueued": "Queued", - "@statusQueued": { - "description": "Download status - waiting in queue" - }, - "statusDownloading": "Downloading", - "@statusDownloading": { - "description": "Download status - in progress" - }, - "statusFinalizing": "Finalizing", - "@statusFinalizing": { - "description": "Download status - writing metadata" - }, - "statusCompleted": "Completed", - "@statusCompleted": { - "description": "Download status - finished" - }, - "statusFailed": "Failed", - "@statusFailed": { - "description": "Download status - error occurred" - }, - "statusSkipped": "Skipped", - "@statusSkipped": { - "description": "Download status - already exists" - }, - "statusPaused": "Paused", - "@statusPaused": { - "description": "Download status - paused" - }, "actionPause": "Pause", "@actionPause": { "description": "Action button - pause download" @@ -1389,14 +918,6 @@ "@actionCancel": { "description": "Action button - cancel operation" }, - "actionStop": "Stop", - "@actionStop": { - "description": "Action button - stop operation" - }, - "actionSelect": "Select", - "@actionSelect": { - "description": "Action button - enter selection mode" - }, "actionSelectAll": "Select All", "@actionSelectAll": { "description": "Action button - select all items" @@ -1405,14 +926,6 @@ "@actionDeselect": { "description": "Action button - deselect all" }, - "actionPaste": "Paste", - "@actionPaste": { - "description": "Action button - paste from clipboard" - }, - "actionImportCsv": "Import CSV", - "@actionImportCsv": { - "description": "Action button - import CSV file" - }, "actionRemoveCredentials": "Remove Credentials", "@actionRemoveCredentials": { "description": "Action button - delete Spotify credentials" @@ -1434,19 +947,6 @@ "@selectionAllSelected": { "description": "Status - all items selected" }, - "selectionTapToSelect": "Tap tracks to select", - "@selectionTapToSelect": { - "description": "Hint - how to select items" - }, - "selectionDeleteTracks": "Delete {count} {count, plural, =1{track} other{tracks}}", - "@selectionDeleteTracks": { - "description": "Delete button with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, "selectionSelectToDelete": "Select tracks to delete", "@selectionSelectToDelete": { "description": "Placeholder when nothing selected" @@ -1487,55 +987,10 @@ "@tooltipPlay": { "description": "Tooltip - play button" }, - "tooltipCancel": "Cancel", - "@tooltipCancel": { - "description": "Tooltip - cancel button" - }, - "tooltipStop": "Stop", - "@tooltipStop": { - "description": "Tooltip - stop button" - }, - "tooltipRetry": "Retry", - "@tooltipRetry": { - "description": "Tooltip - retry button" - }, - "tooltipRemove": "Remove", - "@tooltipRemove": { - "description": "Tooltip - remove button" - }, - "tooltipClear": "Clear", - "@tooltipClear": { - "description": "Tooltip - clear button" - }, - "tooltipPaste": "Paste", - "@tooltipPaste": { - "description": "Tooltip - paste button" - }, "filenameFormat": "Filename Format", "@filenameFormat": { "description": "Setting title - filename pattern" }, - "filenameFormatPreview": "Preview: {preview}", - "@filenameFormatPreview": { - "description": "Preview of filename pattern", - "placeholders": { - "preview": { - "type": "String" - } - } - }, - "filenameAvailablePlaceholders": "Available placeholders:", - "@filenameAvailablePlaceholders": { - "description": "Label for placeholder list" - }, - "filenameHint": "{artist} - {title}", - "@filenameHint": { - "description": "Default filename format hint" - }, - "folderOrganization": "Folder Organization", - "@folderOrganization": { - "description": "Setting title - folder structure" - }, "folderOrganizationNone": "No organization", "@folderOrganizationNone": { "description": "Folder option - flat structure" @@ -1576,27 +1031,10 @@ "@updateAvailable": { "description": "Update dialog title" }, - "updateNewVersion": "Version {version} is available", - "@updateNewVersion": { - "description": "Update available message", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "updateDownload": "Download", - "@updateDownload": { - "description": "Update button - download update" - }, "updateLater": "Later", "@updateLater": { "description": "Update button - dismiss" }, - "updateChangelog": "Changelog", - "@updateChangelog": { - "description": "Link to changelog" - }, "updateStartingDownload": "Starting download...", "@updateStartingDownload": { "description": "Update status - initializing" @@ -1637,14 +1075,6 @@ "@updateDontRemind": { "description": "Update button - skip this version" }, - "providerPriority": "Provider Priority", - "@providerPriority": { - "description": "Setting title - download provider order" - }, - "providerPrioritySubtitle": "Drag to reorder download providers", - "@providerPrioritySubtitle": { - "description": "Subtitle for provider priority" - }, "providerPriorityTitle": "Provider Priority", "@providerPriorityTitle": { "description": "Provider priority page title" @@ -1665,14 +1095,6 @@ "@providerExtension": { "description": "Label for extension-provided providers" }, - "metadataProviderPriority": "Metadata Provider Priority", - "@metadataProviderPriority": { - "description": "Setting title - metadata provider order" - }, - "metadataProviderPrioritySubtitle": "Order used when fetching track metadata", - "@metadataProviderPrioritySubtitle": { - "description": "Subtitle for metadata priority" - }, "metadataProviderPriorityTitle": "Metadata Priority", "@metadataProviderPriorityTitle": { "description": "Metadata priority page title" @@ -1697,22 +1119,6 @@ "@logTitle": { "description": "Logs screen title" }, - "logCopy": "Copy Logs", - "@logCopy": { - "description": "Action - copy logs to clipboard" - }, - "logClear": "Clear Logs", - "@logClear": { - "description": "Action - delete all logs" - }, - "logShare": "Share Logs", - "@logShare": { - "description": "Action - share logs file" - }, - "logEmpty": "No logs yet", - "@logEmpty": { - "description": "Empty state title" - }, "logCopied": "Logs copied to clipboard", "@logCopied": { "description": "Snackbar - logs copied" @@ -1745,22 +1151,6 @@ "@logClearLogsMessage": { "description": "Clear logs confirmation message" }, - "logIspBlocking": "ISP BLOCKING DETECTED", - "@logIspBlocking": { - "description": "Error category - ISP blocking" - }, - "logRateLimited": "RATE LIMITED", - "@logRateLimited": { - "description": "Error category - rate limiting" - }, - "logNetworkError": "NETWORK ERROR", - "@logNetworkError": { - "description": "Error category - network issues" - }, - "logTrackNotFound": "TRACK NOT FOUND", - "@logTrackNotFound": { - "description": "Error category - missing tracks" - }, "logFilterBySeverity": "Filter logs by severity", "@logFilterBySeverity": { "description": "Filter dialog title" @@ -1773,60 +1163,6 @@ "@logNoLogsYetSubtitle": { "description": "Empty state subtitle" }, - "logIssueSummary": "Issue Summary", - "@logIssueSummary": { - "description": "Section header for error summary" - }, - "logIspBlockingDescription": "Your ISP may be blocking access to download services", - "@logIspBlockingDescription": { - "description": "ISP blocking explanation" - }, - "logIspBlockingSuggestion": "Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8", - "@logIspBlockingSuggestion": { - "description": "ISP blocking fix suggestion" - }, - "logRateLimitedDescription": "Too many requests to the service", - "@logRateLimitedDescription": { - "description": "Rate limit explanation" - }, - "logRateLimitedSuggestion": "Wait a few minutes before trying again", - "@logRateLimitedSuggestion": { - "description": "Rate limit fix suggestion" - }, - "logNetworkErrorDescription": "Connection issues detected", - "@logNetworkErrorDescription": { - "description": "Network error explanation" - }, - "logNetworkErrorSuggestion": "Check your internet connection", - "@logNetworkErrorSuggestion": { - "description": "Network error fix suggestion" - }, - "logTrackNotFoundDescription": "Some tracks could not be found on download services", - "@logTrackNotFoundDescription": { - "description": "Track not found explanation" - }, - "logTrackNotFoundSuggestion": "The track may not be available in lossless quality", - "@logTrackNotFoundSuggestion": { - "description": "Track not found explanation" - }, - "logTotalErrors": "Total errors: {count}", - "@logTotalErrors": { - "description": "Error count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "logAffected": "Affected: {domains}", - "@logAffected": { - "description": "Affected domains display", - "placeholders": { - "domains": { - "type": "String" - } - } - }, "logEntriesFiltered": "Entries ({count} filtered)", "@logEntriesFiltered": { "description": "Log count with filter active", @@ -1969,10 +1305,6 @@ "@appearanceLanguage": { "description": "Language setting title" }, - "appearanceLanguageSubtitle": "Choose your preferred language", - "@appearanceLanguageSubtitle": { - "description": "Language setting subtitle" - }, "settingsAppearanceSubtitle": "Theme, colors, display", "@settingsAppearanceSubtitle": { "description": "Appearance settings description" @@ -2001,10 +1333,6 @@ "@pressBackAgainToExit": { "description": "Exit confirmation message" }, - "tracksHeader": "Tracks", - "@tracksHeader": { - "description": "Section header for track list" - }, "downloadAllCount": "Download All ({count})", "@downloadAllCount": { "description": "Download all button with count", @@ -2151,15 +1479,6 @@ "@trackDeleteConfirmMessage": { "description": "Delete confirmation message" }, - "trackCannotOpen": "Cannot open: {message}", - "@trackCannotOpen": { - "description": "Error opening file", - "placeholders": { - "message": { - "type": "String" - } - } - }, "dateToday": "Today", "@dateToday": { "description": "Relative date - today" @@ -2195,22 +1514,6 @@ } } }, - "concurrentSequential": "Sequential", - "@concurrentSequential": { - "description": "Download mode - one at a time" - }, - "concurrentParallel2": "2 Parallel", - "@concurrentParallel2": { - "description": "Download mode - 2 simultaneous" - }, - "concurrentParallel3": "3 Parallel", - "@concurrentParallel3": { - "description": "Download mode - 3 simultaneous" - }, - "tapToSeeError": "Tap to see error details", - "@tapToSeeError": { - "description": "Tooltip for failed download" - }, "storeFilterAll": "All", "@storeFilterAll": { "description": "Store filter - all extensions" @@ -2239,18 +1542,6 @@ "@storeClearFilters": { "description": "Button to clear all filters" }, - "storeNoResults": "No extensions found", - "@storeNoResults": { - "description": "Empty state when no extensions match filters" - }, - "extensionProviderPriority": "Provider Priority", - "@extensionProviderPriority": { - "description": "Extension capability - provider priority" - }, - "extensionInstallButton": "Install Extension", - "@extensionInstallButton": { - "description": "Button to install extension" - }, "extensionDefaultProvider": "Default (Deezer/Spotify)", "@extensionDefaultProvider": { "description": "Default search provider option" @@ -2450,46 +1741,6 @@ "@qualityHiResFlacMaxSubtitle": { "description": "Technical spec for hi-res max" }, - "qualityLossy": "Lossy", - "@qualityLossy": { - "description": "Quality option - lossy format (MP3/Opus)" - }, - "qualityLossyMp3Subtitle": "MP3 320kbps (converted from FLAC)", - "@qualityLossyMp3Subtitle": { - "description": "Technical spec for lossy MP3" - }, - "qualityLossyOpusSubtitle": "Opus 128kbps (converted from FLAC)", - "@qualityLossyOpusSubtitle": { - "description": "Technical spec for lossy Opus" - }, - "enableLossyOption": "Enable Lossy Option", - "@enableLossyOption": { - "description": "Setting - enable lossy quality option" - }, - "enableLossyOptionSubtitleOn": "Lossy quality option is available", - "@enableLossyOptionSubtitleOn": { - "description": "Subtitle when lossy is enabled" - }, - "enableLossyOptionSubtitleOff": "Downloads FLAC then converts to lossy format", - "@enableLossyOptionSubtitleOff": { - "description": "Subtitle when lossy is disabled" - }, - "lossyFormat": "Lossy Format", - "@lossyFormat": { - "description": "Setting - choose lossy format" - }, - "lossyFormatDescription": "Choose the lossy format for conversion", - "@lossyFormatDescription": { - "description": "Description for lossy format picker" - }, - "lossyFormatMp3Subtitle": "320kbps, best compatibility", - "@lossyFormatMp3Subtitle": { - "description": "MP3 format description" - }, - "lossyFormatOpusSubtitle": "128kbps, better quality at smaller size", - "@lossyFormatOpusSubtitle": { - "description": "Opus format description" - }, "qualityNote": "Actual quality depends on track availability from the service", "@qualityNote": { "description": "Note about quality availability" @@ -2518,14 +1769,6 @@ "@downloadUseAlbumArtistForFolders": { "description": "Setting - choose whether artist folders use Album Artist or Track Artist" }, - "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Artist folders use Album Artist when available", - "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { - "description": "Subtitle when Album Artist is used for folder naming" - }, - "downloadUseAlbumArtistForFoldersTrackSubtitle": "Artist folders use Track Artist only", - "@downloadUseAlbumArtistForFoldersTrackSubtitle": { - "description": "Subtitle when Track Artist is used for folder naming" - }, "downloadUsePrimaryArtistOnly": "Primary artist only for folders", "@downloadUsePrimaryArtistOnly": { "description": "Setting - strip featured artists from folder name" @@ -2538,14 +1781,6 @@ "@downloadUsePrimaryArtistOnlyDisabled": { "description": "Subtitle when primary artist only is disabled" }, - "downloadSaveFormat": "Save Format", - "@downloadSaveFormat": { - "description": "Setting - output file format" - }, - "downloadSelectService": "Select Service", - "@downloadSelectService": { - "description": "Dialog title - choose download service" - }, "downloadSelectQuality": "Select Quality", "@downloadSelectQuality": { "description": "Dialog title - choose audio quality" @@ -2554,66 +1789,6 @@ "@downloadFrom": { "description": "Label - download source" }, - "downloadDefaultQualityLabel": "Default Quality", - "@downloadDefaultQualityLabel": { - "description": "Label - default quality setting" - }, - "downloadBestAvailable": "Best available", - "@downloadBestAvailable": { - "description": "Quality option - highest available" - }, - "folderNone": "None", - "@folderNone": { - "description": "Folder option - no organization" - }, - "folderNoneSubtitle": "Save all files directly to download folder", - "@folderNoneSubtitle": { - "description": "Subtitle for no folder organization" - }, - "folderArtist": "Artist", - "@folderArtist": { - "description": "Folder option - by artist" - }, - "folderArtistSubtitle": "Artist Name/filename", - "@folderArtistSubtitle": { - "description": "Folder structure example" - }, - "folderAlbum": "Album", - "@folderAlbum": { - "description": "Folder option - by album" - }, - "folderAlbumSubtitle": "Album Name/filename", - "@folderAlbumSubtitle": { - "description": "Folder structure example" - }, - "folderArtistAlbum": "Artist/Album", - "@folderArtistAlbum": { - "description": "Folder option - nested" - }, - "folderArtistAlbumSubtitle": "Artist Name/Album Name/filename", - "@folderArtistAlbumSubtitle": { - "description": "Folder structure example" - }, - "serviceTidal": "Tidal", - "@serviceTidal": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceQobuz": "Qobuz", - "@serviceQobuz": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceAmazon": "Amazon", - "@serviceAmazon": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceDeezer": "Deezer", - "@serviceDeezer": { - "description": "Service name - DO NOT TRANSLATE" - }, - "serviceSpotify": "Spotify", - "@serviceSpotify": { - "description": "Service name - DO NOT TRANSLATE" - }, "appearanceAmoledDark": "AMOLED Dark", "@appearanceAmoledDark": { "description": "Theme option - pure black" @@ -2622,18 +1797,6 @@ "@appearanceAmoledDarkSubtitle": { "description": "Subtitle for AMOLED dark" }, - "appearanceChooseAccentColor": "Choose Accent Color", - "@appearanceChooseAccentColor": { - "description": "Color picker dialog title" - }, - "appearanceChooseTheme": "Theme Mode", - "@appearanceChooseTheme": { - "description": "Theme picker dialog title" - }, - "queueTitle": "Download Queue", - "@queueTitle": { - "description": "Queue screen title" - }, "queueClearAll": "Clear All", "@queueClearAll": { "description": "Button - clear all queue items" @@ -2642,22 +1805,6 @@ "@queueClearAllMessage": { "description": "Clear queue confirmation" }, - "queueExportFailed": "Export", - "@queueExportFailed": { - "description": "Button - export failed downloads to TXT" - }, - "queueExportFailedSuccess": "Failed downloads exported to TXT file", - "@queueExportFailedSuccess": { - "description": "Success message after exporting failed downloads" - }, - "queueExportFailedClear": "Clear Failed", - "@queueExportFailedClear": { - "description": "Action to clear failed downloads after export" - }, - "queueExportFailedError": "Failed to export downloads", - "@queueExportFailedError": { - "description": "Error message when export fails" - }, "settingsAutoExportFailed": "Auto-export failed downloads", "@settingsAutoExportFailed": { "description": "Setting toggle for auto-export" @@ -2682,38 +1829,6 @@ "@settingsDownloadNetworkSubtitle": { "description": "Subtitle explaining network preference" }, - "queueEmpty": "No downloads in queue", - "@queueEmpty": { - "description": "Empty queue state title" - }, - "queueEmptySubtitle": "Add tracks from the home screen", - "@queueEmptySubtitle": { - "description": "Empty queue state subtitle" - }, - "queueClearCompleted": "Clear completed", - "@queueClearCompleted": { - "description": "Button - clear finished downloads" - }, - "queueDownloadFailed": "Download Failed", - "@queueDownloadFailed": { - "description": "Error dialog title" - }, - "queueTrackLabel": "Track:", - "@queueTrackLabel": { - "description": "Label in error dialog" - }, - "queueArtistLabel": "Artist:", - "@queueArtistLabel": { - "description": "Label in error dialog" - }, - "queueErrorLabel": "Error:", - "@queueErrorLabel": { - "description": "Label in error dialog" - }, - "queueUnknownError": "Unknown error", - "@queueUnknownError": { - "description": "Fallback error message" - }, "albumFolderArtistAlbum": "Artist / Album", "@albumFolderArtistAlbum": { "description": "Album folder option" @@ -2767,19 +1882,6 @@ } } }, - "downloadedAlbumTracksHeader": "Tracks", - "@downloadedAlbumTracksHeader": { - "description": "Section header for tracks" - }, - "downloadedAlbumDownloadedCount": "{count} downloaded", - "@downloadedAlbumDownloadedCount": { - "description": "Downloaded tracks count badge", - "placeholders": { - "count": { - "type": "int" - } - } - }, "downloadedAlbumSelectedCount": "{count} selected", "@downloadedAlbumSelectedCount": { "description": "Selection count indicator", @@ -2820,10 +1922,6 @@ } } }, - "utilityFunctions": "Utility Functions", - "@utilityFunctions": { - "description": "Extension capability - utility functions" - }, "recentTypeArtist": "Artist", "@recentTypeArtist": { "description": "Recent access item type - artist" @@ -2858,16 +1956,6 @@ } } }, - "errorGeneric": "Error: {message}", - "@errorGeneric": { - "description": "Generic error message format", - "placeholders": { - "message": { - "type": "String", - "description": "Error message" - } - } - }, "discographyDownload": "Download Discography", "@discographyDownload": { "description": "Button - download artist discography" @@ -3034,10 +2122,6 @@ "@libraryTitle": { "description": "Library settings page title" }, - "libraryStatus": "Library Status", - "@libraryStatus": { - "description": "Section header for library status" - }, "libraryScanSettings": "Scan Settings", "@libraryScanSettings": { "description": "Section header for scan settings" @@ -3114,15 +2198,6 @@ "@libraryAboutDescription": { "description": "Description of local library feature" }, - "libraryTracksCount": "{count} tracks", - "@libraryTracksCount": { - "description": "Track count in library", - "placeholders": { - "count": { - "type": "int" - } - } - }, "libraryLastScanned": "Last scanned: {time}", "@libraryLastScanned": { "description": "Last scan time display", @@ -3237,26 +2312,6 @@ "@libraryFilterFormat": { "description": "Filter section - file format" }, - "libraryFilterDate": "Date Added", - "@libraryFilterDate": { - "description": "Filter section - date range" - }, - "libraryFilterDateToday": "Today", - "@libraryFilterDateToday": { - "description": "Filter option - today only" - }, - "libraryFilterDateWeek": "This Week", - "@libraryFilterDateWeek": { - "description": "Filter option - this week" - }, - "libraryFilterDateMonth": "This Month", - "@libraryFilterDateMonth": { - "description": "Filter option - this month" - }, - "libraryFilterDateYear": "This Year", - "@libraryFilterDateYear": { - "description": "Filter option - this year" - }, "libraryFilterSort": "Sort", "@libraryFilterSort": { "description": "Filter section - sort order" @@ -3269,15 +2324,6 @@ "@libraryFilterSortOldest": { "description": "Sort option - oldest first" }, - "libraryFilterActive": "{count} filter(s) active", - "@libraryFilterActive": { - "description": "Badge showing number of active filters", - "placeholders": { - "count": { - "type": "int" - } - } - }, "timeJustNow": "Just now", "@timeJustNow": { "description": "Relative time - less than a minute ago" @@ -3300,106 +2346,6 @@ } } }, - "storageSwitchTitle": "Switch Storage Mode", - "@storageSwitchTitle": { - "description": "Dialog title when switching storage mode" - }, - "storageSwitchToSafTitle": "Switch to SAF Storage?", - "@storageSwitchToSafTitle": { - "description": "Dialog title when switching to SAF" - }, - "storageSwitchToAppTitle": "Switch to App Storage?", - "@storageSwitchToAppTitle": { - "description": "Dialog title when switching to app storage" - }, - "storageSwitchToSafMessage": "Your existing downloads will remain in the current location and stay accessible.\n\nNew downloads will be saved to your selected SAF folder.", - "@storageSwitchToSafMessage": { - "description": "Explanation when switching to SAF" - }, - "storageSwitchToAppMessage": "Your existing downloads will remain in the current SAF location and stay accessible.\n\nNew downloads will be saved to Music/SpotiFLAC folder.", - "@storageSwitchToAppMessage": { - "description": "Explanation when switching to app storage" - }, - "storageSwitchExistingDownloads": "Existing Downloads", - "@storageSwitchExistingDownloads": { - "description": "Section header for existing downloads info" - }, - "storageSwitchExistingDownloadsInfo": "{count} tracks in {mode} storage", - "@storageSwitchExistingDownloadsInfo": { - "description": "Info about existing downloads count", - "placeholders": { - "count": { - "type": "int" - }, - "mode": { - "type": "String" - } - } - }, - "storageSwitchNewDownloads": "New Downloads", - "@storageSwitchNewDownloads": { - "description": "Section header for new downloads info" - }, - "storageSwitchNewDownloadsLocation": "Will be saved to: {location}", - "@storageSwitchNewDownloadsLocation": { - "description": "Shows where new downloads will go", - "placeholders": { - "location": { - "type": "String" - } - } - }, - "storageSwitchContinue": "Continue", - "@storageSwitchContinue": { - "description": "Button to proceed with storage switch" - }, - "storageSwitchSelectFolder": "Select SAF Folder", - "@storageSwitchSelectFolder": { - "description": "Button to select SAF folder" - }, - "storageAppStorage": "App Storage", - "@storageAppStorage": { - "description": "Label for app storage mode" - }, - "storageSafStorage": "SAF Storage", - "@storageSafStorage": { - "description": "Label for SAF storage mode" - }, - "storageModeBadge": "Storage: {mode}", - "@storageModeBadge": { - "description": "Badge showing storage mode for a track", - "placeholders": { - "mode": { - "type": "String" - } - } - }, - "storageStatsTitle": "Storage Statistics", - "@storageStatsTitle": { - "description": "Section title for storage stats" - }, - "storageStatsAppCount": "{count} tracks in App Storage", - "@storageStatsAppCount": { - "description": "Count of tracks in app storage", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storageStatsSafCount": "{count} tracks in SAF Storage", - "@storageStatsSafCount": { - "description": "Count of tracks in SAF storage", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storageModeInfo": "Your files are stored in multiple locations", - "@storageModeInfo": { - "description": "Info when user has files in both storage modes" - }, "tutorialWelcomeTitle": "Welcome to SpotiFLAC!", "@tutorialWelcomeTitle": { "description": "Tutorial welcome page title" @@ -3428,18 +2374,6 @@ "@tutorialSearchDesc": { "description": "Tutorial search page description" }, - "tutorialSearchTip1": "Paste a Spotify or Deezer URL directly in the search box", - "@tutorialSearchTip1": { - "description": "Tutorial search tip 1" - }, - "tutorialSearchTip2": "Or type the song name, artist, or album to search", - "@tutorialSearchTip2": { - "description": "Tutorial search tip 2" - }, - "tutorialSearchTip3": "Supports tracks, albums, playlists, and artist pages", - "@tutorialSearchTip3": { - "description": "Tutorial search tip 3" - }, "tutorialDownloadTitle": "Downloading Music", "@tutorialDownloadTitle": { "description": "Tutorial download page title" @@ -3448,18 +2382,6 @@ "@tutorialDownloadDesc": { "description": "Tutorial download page description" }, - "tutorialDownloadTip1": "Tap the download button next to any track to start downloading", - "@tutorialDownloadTip1": { - "description": "Tutorial download tip 1" - }, - "tutorialDownloadTip2": "Choose your preferred quality (FLAC, Hi-Res, or MP3)", - "@tutorialDownloadTip2": { - "description": "Tutorial download tip 2" - }, - "tutorialDownloadTip3": "Download entire albums or playlists with one tap", - "@tutorialDownloadTip3": { - "description": "Tutorial download tip 3" - }, "tutorialLibraryTitle": "Your Library", "@tutorialLibraryTitle": { "description": "Tutorial library page title" @@ -3524,10 +2446,6 @@ "@tutorialReadyMessage": { "description": "Tutorial completion message" }, - "tutorialExample": "EXAMPLE", - "@tutorialExample": { - "description": "Example label in tutorial" - }, "libraryForceFullScan": "Force Full Scan", "@libraryForceFullScan": { "description": "Button to force a complete rescan of library" @@ -3754,10 +2672,6 @@ "@trackReEnrich": { "description": "Menu action - re-embed metadata into audio file" }, - "trackReEnrichSubtitle": "Re-embed metadata without re-downloading", - "@trackReEnrichSubtitle": { - "description": "Subtitle for re-enrich metadata action" - }, "trackReEnrichOnlineSubtitle": "Search metadata online and embed into file", "@trackReEnrichOnlineSubtitle": { "description": "Subtitle for re-enrich metadata action for local items" @@ -3869,15 +2783,21 @@ "@trackConvertFailed": { "description": "Snackbar when conversion fails" }, - "setupModeSelectionTitle": "選擇您的模式", - "setupModeSelectionDescription": "您想如何使用 SpotiFLAC?您可以稍後在設定中隨時變更。", - "setupModeDownloaderTitle": "下載器", - "setupModeDownloaderFeature1": "以無損 FLAC 品質下載曲目", - "setupModeDownloaderFeature2": "將音樂儲存到裝置以供離線收聽", - "setupModeDownloaderFeature3": "管理您的本機音樂庫", - "setupModeStreamingTitle": "串流", - "setupModeStreamingFeature1": "無需下載即可即時串流曲目", - "setupModeStreamingFeature2": "Smart Queue 自動為您探索新音樂", - "setupModeStreamingFeature3": "透過播放控制項隨時點播任意曲目", - "setupModeChangeableLater": "您可以隨時在設定中切換模式。" -} \ No newline at end of file + "downloadedAlbumDownloadedCount": "{count} downloaded", + "@downloadedAlbumDownloadedCount": { + "description": "Downloaded tracks count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Artist folders use Album Artist when available", + "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { + "description": "Subtitle when Album Artist is used for folder naming" + }, + "downloadUseAlbumArtistForFoldersTrackSubtitle": "Artist folders use Track Artist only", + "@downloadUseAlbumArtistForFoldersTrackSubtitle": { + "description": "Subtitle when Track Artist is used for folder naming" + } +} diff --git a/lib/providers/download_queue_provider.dart b/lib/providers/download_queue_provider.dart index 9f61f4e2..4f2059db 100644 --- a/lib/providers/download_queue_provider.dart +++ b/lib/providers/download_queue_provider.dart @@ -625,6 +625,7 @@ final downloadHistoryProvider = ); class DownloadQueueState { + static const Object _noChange = Object(); final List items; final DownloadItem? currentDownload; final bool isProcessing; @@ -649,7 +650,7 @@ class DownloadQueueState { DownloadQueueState copyWith({ List? items, - DownloadItem? currentDownload, + Object? currentDownload = _noChange, bool? isProcessing, bool? isPaused, String? outputDir, @@ -660,7 +661,9 @@ class DownloadQueueState { }) { return DownloadQueueState( items: items ?? this.items, - currentDownload: currentDownload ?? this.currentDownload, + currentDownload: identical(currentDownload, _noChange) + ? this.currentDownload + : currentDownload as DownloadItem?, isProcessing: isProcessing ?? this.isProcessing, isPaused: isPaused ?? this.isPaused, outputDir: outputDir ?? this.outputDir, @@ -717,6 +720,7 @@ class DownloadQueueNotifier extends Notifier { int _totalQueuedAtStart = 0; int _completedInSession = 0; int _failedInSession = 0; + int _queueItemSequence = 0; bool _isLoaded = false; final Set _ensuredDirs = {}; int _progressPollingErrorCount = 0; @@ -735,6 +739,7 @@ class DownloadQueueNotifier extends Notifier { String? _lastNotifArtistName; int _lastNotifPercent = -1; int _lastNotifQueueCount = -1; + final Set _locallyCancelledItemIds = {}; double _normalizeProgressForUi(double value) { final clamped = value.clamp(0.0, 1.0).toDouble(); @@ -854,8 +859,11 @@ class DownloadQueueNotifier extends Notifier { return; } - state = state.copyWith(items: pendingItems); - _log.i('Restored ${pendingItems.length} pending items from storage'); + final normalizedPendingItems = _normalizeRestoredQueueIds(pendingItems); + state = state.copyWith(items: normalizedPendingItems); + _log.i( + 'Restored ${normalizedPendingItems.length} pending items from storage', + ); Future.microtask(() => _processQueue()); } catch (e) { _log.e('Failed to load queue from storage: $e'); @@ -1644,6 +1652,53 @@ class DownloadQueueNotifier extends Notifier { return _isrcRegex.hasMatch(value.toUpperCase()); } + String _newQueueItemId(Track track, {Set? takenIds}) { + final trimmedIsrc = track.isrc?.trim(); + final trimmedTrackId = track.id.trim(); + final base = (trimmedIsrc != null && trimmedIsrc.isNotEmpty) + ? trimmedIsrc + : (trimmedTrackId.isNotEmpty ? trimmedTrackId : 'track'); + + while (true) { + _queueItemSequence++; + final candidate = + '$base-${DateTime.now().microsecondsSinceEpoch}-$_queueItemSequence'; + if (takenIds == null || !takenIds.contains(candidate)) { + return candidate; + } + } + } + + List _normalizeRestoredQueueIds(List items) { + if (items.isEmpty) return items; + + final seen = {}; + var regeneratedCount = 0; + final normalized = []; + + for (final item in items) { + final trimmedId = item.id.trim(); + final shouldRegenerate = trimmedId.isEmpty || seen.contains(trimmedId); + if (shouldRegenerate) { + final newId = _newQueueItemId(item.track, takenIds: seen); + seen.add(newId); + normalized.add(item.copyWith(id: newId)); + regeneratedCount++; + } else { + seen.add(trimmedId); + normalized.add(item); + } + } + + if (regeneratedCount > 0) { + _log.w( + 'Regenerated $regeneratedCount duplicate/empty queue item IDs during restore', + ); + } + + return normalized; + } + void updateSettings(AppSettings settings) { final concurrentDownloads = settings.concurrentDownloads.clamp(1, 5); state = state.copyWith( @@ -1661,8 +1716,8 @@ class DownloadQueueNotifier extends Notifier { final settings = ref.read(settingsProvider); updateSettings(settings); - final id = - '${track.isrc ?? track.id}-${DateTime.now().millisecondsSinceEpoch}'; + final takenIds = state.items.map((item) => item.id).toSet(); + final id = _newQueueItemId(track, takenIds: takenIds); final item = DownloadItem( id: id, track: track, @@ -1689,9 +1744,10 @@ class DownloadQueueNotifier extends Notifier { final settings = ref.read(settingsProvider); updateSettings(settings); + final takenIds = state.items.map((item) => item.id).toSet(); final newItems = tracks.map((track) { - final id = - '${track.isrc ?? track.id}-${DateTime.now().millisecondsSinceEpoch}'; + final id = _newQueueItemId(track, takenIds: takenIds); + takenIds.add(id); return DownloadItem( id: id, track: track, @@ -1770,12 +1826,30 @@ class DownloadQueueNotifier extends Notifier { ); } - void cancelItem(String id) { - updateItemStatus(id, DownloadStatus.skipped); + DownloadItem? _findItemById(String id) { + for (final item in state.items) { + if (item.id == id) return item; + } + return null; + } + + bool _isLocallyCancelled(String id, {DownloadItem? item}) { + if (_locallyCancelledItemIds.contains(id)) return true; + final resolved = item ?? _findItemById(id); + return resolved?.status == DownloadStatus.skipped; + } + + void _requestNativeCancel(String id) { PlatformBridge.cancelDownload(id).catchError((_) {}); PlatformBridge.clearItemProgress(id).catchError((_) {}); } + void cancelItem(String id) { + _locallyCancelledItemIds.add(id); + updateItemStatus(id, DownloadStatus.skipped); + _requestNativeCancel(id); + } + void clearCompleted() { final items = state.items .where( @@ -1791,8 +1865,30 @@ class DownloadQueueNotifier extends Notifier { } void clearAll() { - state = state.copyWith(items: [], isPaused: false); + final wasProcessing = state.isProcessing; + final activeIds = state.items + .where( + (item) => + item.status == DownloadStatus.queued || + item.status == DownloadStatus.downloading || + item.status == DownloadStatus.finalizing, + ) + .map((item) => item.id) + .toList(growable: false); + + if (activeIds.isNotEmpty) { + _locallyCancelledItemIds.addAll(activeIds); + for (final id in activeIds) { + _requestNativeCancel(id); + } + } + + state = state.copyWith(items: [], isPaused: false, currentDownload: null); + _notificationService.cancelDownloadNotification(); _saveQueueToStorage(); + if (!wasProcessing) { + _locallyCancelledItemIds.clear(); + } } void pauseQueue() { @@ -1835,6 +1931,7 @@ class DownloadQueueNotifier extends Notifier { } _log.i('Retrying item: ${item.track.name} (id: $id)'); + _locallyCancelledItemIds.remove(id); final items = state.items.map((i) { if (i.id == id) { @@ -1858,6 +1955,7 @@ class DownloadQueueNotifier extends Notifier { } void removeItem(String id) { + _locallyCancelledItemIds.remove(id); final items = state.items.where((item) => item.id != id).toList(); state = state.copyWith(items: items); _saveQueueToStorage(); @@ -2892,17 +2990,16 @@ class DownloadQueueNotifier extends Notifier { } _stopProgressPolling(); + final remainingIds = state.items.map((item) => item.id).toSet(); + _locallyCancelledItemIds.removeWhere((id) => !remainingIds.contains(id)); } Future _downloadSingleItem(DownloadItem item) async { _log.d('Processing: ${item.track.name} by ${item.track.artistName}'); _log.d('Cover URL: ${item.track.coverUrl}'); - final currentItem = state.items.firstWhere( - (i) => i.id == item.id, - orElse: () => item, - ); - if (currentItem.status == DownloadStatus.skipped) { + final currentItem = _findItemById(item.id) ?? item; + if (_isLocallyCancelled(item.id, item: currentItem)) { _log.i('Download was cancelled before start, skipping'); return; } @@ -3315,6 +3412,11 @@ class DownloadQueueNotifier extends Notifier { ); } + if (_isLocallyCancelled(item.id)) { + _log.i('Download was cancelled before native download start, skipping'); + return; + } + result = await runDownload( useSaf: effectiveSafMode, outputDir: effectiveOutputDir, @@ -3323,6 +3425,10 @@ class DownloadQueueNotifier extends Notifier { if (effectiveSafMode && result['success'] != true && _isSafWriteFailure(result)) { + if (_isLocallyCancelled(item.id)) { + _log.i('Download was cancelled before SAF fallback, skipping'); + return; + } _log.w('SAF write failed, retrying with app-private storage'); appOutputDir ??= await _buildOutputDir( trackToDownload, @@ -3348,11 +3454,11 @@ class DownloadQueueNotifier extends Notifier { _log.d('Result: $result'); - final currentItem = state.items.firstWhere( - (i) => i.id == item.id, - orElse: () => item, - ); - if (currentItem.status == DownloadStatus.skipped) { + final itemAfterResult = _findItemById(item.id); + final cancelledAfterResult = + itemAfterResult == null || + _isLocallyCancelled(item.id, item: itemAfterResult); + if (cancelledAfterResult) { _log.i('Download was cancelled, skipping result processing'); final filePath = result['file_path'] as String?; if (filePath != null && result['success'] == true) { @@ -4083,11 +4189,9 @@ class DownloadQueueNotifier extends Notifier { } } - final itemAfterDownload = state.items.firstWhere( - (i) => i.id == item.id, - orElse: () => item, - ); - if (itemAfterDownload.status == DownloadStatus.skipped) { + final itemAfterDownload = _findItemById(item.id); + if (itemAfterDownload == null || + _isLocallyCancelled(item.id, item: itemAfterDownload)) { _log.i('Download was cancelled during finalization, cleaning up'); if (filePath != null) { await deleteFile(filePath); @@ -4309,11 +4413,9 @@ class DownloadQueueNotifier extends Notifier { removeItem(item.id); } } else { - final itemAfterFailure = state.items.firstWhere( - (i) => i.id == item.id, - orElse: () => item, - ); - if (itemAfterFailure.status == DownloadStatus.skipped) { + final itemAfterFailure = _findItemById(item.id); + if (itemAfterFailure == null || + _isLocallyCancelled(item.id, item: itemAfterFailure)) { _log.i('Download was cancelled, skipping error handling'); return; } @@ -4374,11 +4476,9 @@ class DownloadQueueNotifier extends Notifier { } } } catch (e, stackTrace) { - final itemAfterError = state.items.firstWhere( - (i) => i.id == item.id, - orElse: () => item, - ); - if (itemAfterError.status == DownloadStatus.skipped) { + final itemAfterError = _findItemById(item.id); + if (itemAfterError == null || + _isLocallyCancelled(item.id, item: itemAfterError)) { _log.i('Download was cancelled, skipping error handling'); return; }