From 5c675535965d7c45d9b888e921d9e4af752cf6da Mon Sep 17 00:00:00 2001 From: Zarz Eleutherius <42882290+zarzet@users.noreply.github.com> Date: Sun, 18 Jan 2026 03:42:20 +0700 Subject: [PATCH 01/14] New translations app_en.arb (French) --- lib/l10n/arb/app_fr.arb | 68 ++++++++++++++++++++++++++++++++--------- 1 file changed, 53 insertions(+), 15 deletions(-) diff --git a/lib/l10n/arb/app_fr.arb b/lib/l10n/arb/app_fr.arb index 7de05fc5..3e5f8961 100644 --- a/lib/l10n/arb/app_fr.arb +++ b/lib/l10n/arb/app_fr.arb @@ -642,6 +642,20 @@ } } }, + "artistPopular": "Popular", + "@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" + } + } + }, "trackMetadataTitle": "Track Info", "@trackMetadataTitle": { "description": "Track metadata screen title" @@ -1851,27 +1865,15 @@ }, "sectionLanguage": "Language", "@sectionLanguage": { - "description": "Settings section header for language selection" + "description": "Settings section header for language" }, "appearanceLanguage": "App Language", "@appearanceLanguage": { - "description": "Setting title for language selection" + "description": "Language setting title" }, "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" + "description": "Language setting subtitle" }, "settingsAppearanceSubtitle": "Theme, colors, display", "@settingsAppearanceSubtitle": { @@ -2573,5 +2575,41 @@ "utilityFunctions": "Utility Functions", "@utilityFunctions": { "description": "Extension capability - utility functions" + }, + "recentTypeArtist": "Artist", + "@recentTypeArtist": { + "description": "Recent access item type - artist" + }, + "recentTypeAlbum": "Album", + "@recentTypeAlbum": { + "description": "Recent access item type - album" + }, + "recentTypeSong": "Song", + "@recentTypeSong": { + "description": "Recent access item type - song/track" + }, + "recentTypePlaylist": "Playlist", + "@recentTypePlaylist": { + "description": "Recent access item type - playlist" + }, + "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" + } + } } } \ No newline at end of file From cc12f63d36fb867f8bc5a6e88198e3c7c938a58d Mon Sep 17 00:00:00 2001 From: Zarz Eleutherius <42882290+zarzet@users.noreply.github.com> Date: Sun, 18 Jan 2026 03:42:21 +0700 Subject: [PATCH 02/14] New translations app_en.arb (Spanish) --- lib/l10n/arb/app_es-ES.arb | 2615 ++++++++++++++++++++++++++++++++++++ 1 file changed, 2615 insertions(+) create mode 100644 lib/l10n/arb/app_es-ES.arb diff --git a/lib/l10n/arb/app_es-ES.arb b/lib/l10n/arb/app_es-ES.arb new file mode 100644 index 00000000..cf4def73 --- /dev/null +++ b/lib/l10n/arb/app_es-ES.arb @@ -0,0 +1,2615 @@ +{ + "@@locale": "es-ES", + "@@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" + }, + "navHome": "Home", + "@navHome": { + "description": "Bottom navigation - Home tab" + }, + "navHistory": "History", + "@navHistory": { + "description": "Bottom navigation - History tab" + }, + "navSettings": "Settings", + "@navSettings": { + "description": "Bottom navigation - Settings tab" + }, + "navStore": "Store", + "@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" + } + } + }, + "homeSubtitle": "Paste a Spotify link or search by name", + "@homeSubtitle": { + "description": "Subtitle shown below search box" + }, + "homeSupports": "Supports: Track, Album, Playlist, Artist URLs", + "@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" + } + } + }, + "historyDownloaded": "Downloaded", + "@historyDownloaded": { + "description": "Tab showing completed downloads" + }, + "historyFilterAll": "All", + "@historyFilterAll": { + "description": "Filter chip - show all items" + }, + "historyFilterAlbums": "Albums", + "@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" + } + } + }, + "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" + }, + "settingsDownload": "Download", + "@settingsDownload": { + "description": "Settings section - download options" + }, + "settingsAppearance": "Appearance", + "@settingsAppearance": { + "description": "Settings section - visual customization" + }, + "settingsOptions": "Options", + "@settingsOptions": { + "description": "Settings section - app options" + }, + "settingsExtensions": "Extensions", + "@settingsExtensions": { + "description": "Settings section - extension management" + }, + "settingsAbout": "About", + "@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" + }, + "downloadAskQualitySubtitle": "Show quality picker for each download", + "@downloadAskQualitySubtitle": { + "description": "Subtitle for ask quality toggle" + }, + "downloadFilenameFormat": "Filename Format", + "@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" + }, + "appearanceTitle": "Appearance", + "@appearanceTitle": { + "description": "Appearance settings page title" + }, + "appearanceTheme": "Theme", + "@appearanceTheme": { + "description": "Theme mode setting" + }, + "appearanceThemeSystem": "System", + "@appearanceThemeSystem": { + "description": "Follow system theme" + }, + "appearanceThemeLight": "Light", + "@appearanceThemeLight": { + "description": "Light theme" + }, + "appearanceThemeDark": "Dark", + "@appearanceThemeDark": { + "description": "Dark theme" + }, + "appearanceDynamicColor": "Dynamic Color", + "@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" + }, + "appearanceHistoryView": "History View", + "@appearanceHistoryView": { + "description": "Layout style for history" + }, + "appearanceHistoryViewList": "List", + "@appearanceHistoryViewList": { + "description": "List layout option" + }, + "appearanceHistoryViewGrid": "Grid", + "@appearanceHistoryViewGrid": { + "description": "Grid layout option" + }, + "optionsTitle": "Options", + "@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" + }, + "optionsPrimaryProviderSubtitle": "Service used when searching by track name.", + "@optionsPrimaryProviderSubtitle": { + "description": "Subtitle for primary provider" + }, + "optionsUsingExtension": "Using extension: {extensionName}", + "@optionsUsingExtension": { + "description": "Shows active extension name", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "optionsSwitchBack": "Tap Deezer or Spotify to switch back from extension", + "@optionsSwitchBack": { + "description": "Hint to switch back to built-in providers" + }, + "optionsAutoFallback": "Auto Fallback", + "@optionsAutoFallback": { + "description": "Auto-retry with other services" + }, + "optionsAutoFallbackSubtitle": "Try other services if download fails", + "@optionsAutoFallbackSubtitle": { + "description": "Subtitle for auto fallback" + }, + "optionsUseExtensionProviders": "Use Extension Providers", + "@optionsUseExtensionProviders": { + "description": "Enable extension download providers" + }, + "optionsUseExtensionProvidersOn": "Extensions will be tried first", + "@optionsUseExtensionProvidersOn": { + "description": "Status when extension providers enabled" + }, + "optionsUseExtensionProvidersOff": "Using built-in providers only", + "@optionsUseExtensionProvidersOff": { + "description": "Status when extension providers disabled" + }, + "optionsEmbedLyrics": "Embed Lyrics", + "@optionsEmbedLyrics": { + "description": "Embed lyrics in audio files" + }, + "optionsEmbedLyricsSubtitle": "Embed synced lyrics into FLAC files", + "@optionsEmbedLyricsSubtitle": { + "description": "Subtitle for embed lyrics" + }, + "optionsMaxQualityCover": "Max Quality Cover", + "@optionsMaxQualityCover": { + "description": "Download highest quality album art" + }, + "optionsMaxQualityCoverSubtitle": "Download highest resolution cover art", + "@optionsMaxQualityCoverSubtitle": { + "description": "Subtitle for max quality cover" + }, + "optionsConcurrentDownloads": "Concurrent Downloads", + "@optionsConcurrentDownloads": { + "description": "Number of parallel downloads" + }, + "optionsConcurrentSequential": "Sequential (1 at a time)", + "@optionsConcurrentSequential": { + "description": "Download one at a time" + }, + "optionsConcurrentParallel": "{count} parallel downloads", + "@optionsConcurrentParallel": { + "description": "Multiple parallel downloads", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "optionsConcurrentWarning": "Parallel downloads may trigger rate limiting", + "@optionsConcurrentWarning": { + "description": "Warning about rate limits" + }, + "optionsExtensionStore": "Extension Store", + "@optionsExtensionStore": { + "description": "Show/hide store tab" + }, + "optionsExtensionStoreSubtitle": "Show Store tab in navigation", + "@optionsExtensionStoreSubtitle": { + "description": "Subtitle for extension store toggle" + }, + "optionsCheckUpdates": "Check for Updates", + "@optionsCheckUpdates": { + "description": "Auto update check toggle" + }, + "optionsCheckUpdatesSubtitle": "Notify when new version is available", + "@optionsCheckUpdatesSubtitle": { + "description": "Subtitle for update check" + }, + "optionsUpdateChannel": "Update Channel", + "@optionsUpdateChannel": { + "description": "Stable vs preview releases" + }, + "optionsUpdateChannelStable": "Stable releases only", + "@optionsUpdateChannelStable": { + "description": "Only stable updates" + }, + "optionsUpdateChannelPreview": "Get preview releases", + "@optionsUpdateChannelPreview": { + "description": "Include beta/preview updates" + }, + "optionsUpdateChannelWarning": "Preview may contain bugs or incomplete features", + "@optionsUpdateChannelWarning": { + "description": "Warning about preview channel" + }, + "optionsClearHistory": "Clear Download History", + "@optionsClearHistory": { + "description": "Delete all download history" + }, + "optionsClearHistorySubtitle": "Remove all downloaded tracks from history", + "@optionsClearHistorySubtitle": { + "description": "Subtitle for clear history" + }, + "optionsDetailedLogging": "Detailed Logging", + "@optionsDetailedLogging": { + "description": "Enable verbose logs for debugging" + }, + "optionsDetailedLoggingOn": "Detailed logs are being recorded", + "@optionsDetailedLoggingOn": { + "description": "Status when logging enabled" + }, + "optionsDetailedLoggingOff": "Enable for bug reports", + "@optionsDetailedLoggingOff": { + "description": "Status when logging disabled" + }, + "optionsSpotifyCredentials": "Spotify Credentials", + "@optionsSpotifyCredentials": { + "description": "Spotify API credentials setting" + }, + "optionsSpotifyCredentialsConfigured": "Client ID: {clientId}...", + "@optionsSpotifyCredentialsConfigured": { + "description": "Shows configured client ID preview", + "placeholders": { + "clientId": { + "type": "String" + } + } + }, + "optionsSpotifyCredentialsRequired": "Required - tap to configure", + "@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" + }, + "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" + }, + "extensionsDisabled": "Disabled", + "@extensionsDisabled": { + "description": "Extension status - inactive" + }, + "extensionsVersion": "Version {version}", + "@extensionsVersion": { + "description": "Extension version display", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "extensionsAuthor": "by {author}", + "@extensionsAuthor": { + "description": "Extension author credit", + "placeholders": { + "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" + }, + "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" + }, + "aboutSupport": "Support", + "@aboutSupport": { + "description": "Section for support/donation links" + }, + "aboutBuyMeCoffee": "Buy me a coffee", + "@aboutBuyMeCoffee": { + "description": "Donation link" + }, + "aboutBuyMeCoffeeSubtitle": "Support development on Ko-fi", + "@aboutBuyMeCoffeeSubtitle": { + "description": "Subtitle for donation" + }, + "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" + }, + "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" + }, + "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" + } + } + }, + "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" + }, + "artistSingles": "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" + } + } + }, + "artistPopular": "Popular", + "@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" + } + } + }, + "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" + }, + "trackMetadataPlay": "Play", + "@trackMetadataPlay": { + "description": "Action button - play track" + }, + "trackMetadataShare": "Share", + "@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" + }, + "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" + }, + "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" + }, + "setupStorageAccessMessageAndroid11": "Android 11+ requires \"All files access\" permission to save files to your chosen download folder.", + "@setupStorageAccessMessageAndroid11": { + "description": "Android 11+ specific explanation" + }, + "setupOpenSettings": "Open Settings", + "@setupOpenSettings": { + "description": "Button to open system settings" + }, + "setupPermissionDeniedMessage": "Permission denied. Please grant all permissions to continue.", + "@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)" + } + } + }, + "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" + } + } + }, + "setupSelectDownloadFolder": "Select Download Folder", + "@setupSelectDownloadFolder": { + "description": "Folder selection step title" + }, + "setupUseDefaultFolder": "Use 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" + }, + "setupUseDefault": "Use Default", + "@setupUseDefault": { + "description": "Button to use default folder" + }, + "setupDownloadLocationTitle": "Download Location", + "@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" + }, + "setupAppDocumentsFolder": "App Documents Folder", + "@setupAppDocumentsFolder": { + "description": "iOS documents folder option" + }, + "setupAppDocumentsFolderSubtitle": "Recommended - accessible via Files app", + "@setupAppDocumentsFolderSubtitle": { + "description": "Subtitle for documents folder" + }, + "setupChooseFromFiles": "Choose from Files", + "@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" + }, + "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" + }, + "setupStorageGranted": "Storage Permission Granted!", + "@setupStorageGranted": { + "description": "Success message for storage permission" + }, + "setupStorageRequired": "Storage Permission Required", + "@setupStorageRequired": { + "description": "Title when storage permission needed" + }, + "setupStorageDescription": "SpotiFLAC needs storage permission to save your downloaded music files.", + "@setupStorageDescription": { + "description": "Explanation for storage permission" + }, + "setupNotificationGranted": "Notification Permission Granted!", + "@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" + }, + "setupFolderChoose": "Choose Download 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" + }, + "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" + }, + "setupSkipForNow": "Skip for now", + "@setupSkipForNow": { + "description": "Skip button text" + }, + "setupBack": "Back", + "@setupBack": { + "description": "Back button text" + }, + "setupNext": "Next", + "@setupNext": { + "description": "Next button text" + }, + "setupGetStarted": "Get Started", + "@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" + }, + "dialogDelete": "Delete", + "@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" + }, + "dialogClear": "Clear", + "@dialogClear": { + "description": "Dialog button - clear items" + }, + "dialogConfirm": "Confirm", + "@dialogConfirm": { + "description": "Dialog button - confirm action" + }, + "dialogDone": "Done", + "@dialogDone": { + "description": "Dialog button - action completed" + }, + "dialogImport": "Import", + "@dialogImport": { + "description": "Dialog button - import data" + }, + "dialogDiscard": "Discard", + "@dialogDiscard": { + "description": "Dialog button - discard changes" + }, + "dialogRemove": "Remove", + "@dialogRemove": { + "description": "Dialog button - remove item" + }, + "dialogUninstall": "Uninstall", + "@dialogUninstall": { + "description": "Dialog button - uninstall extension" + }, + "dialogDiscardChanges": "Discard Changes?", + "@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" + }, + "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" + }, + "dialogRemoveExtensionMessage": "Are you sure you want to remove this extension? This cannot be undone.", + "@dialogRemoveExtensionMessage": { + "description": "Dialog message - uninstall confirmation" + }, + "dialogUninstallExtension": "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" + } + } + }, + "dialogClearHistoryTitle": "Clear 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" + }, + "dialogDeleteSelectedTitle": "Delete Selected", + "@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" + } + } + }, + "dialogImportPlaylistTitle": "Import Playlist", + "@dialogImportPlaylistTitle": { + "description": "Dialog title - import CSV playlist" + }, + "dialogImportPlaylistMessage": "Found {count} tracks in CSV. Add them to download queue?", + "@dialogImportPlaylistMessage": { + "description": "Dialog message - import playlist confirmation", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarAddedToQueue": "Added \"{trackName}\" to queue", + "@snackbarAddedToQueue": { + "description": "Snackbar - track added to download queue", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "snackbarAddedTracksToQueue": "Added {count} tracks to queue", + "@snackbarAddedTracksToQueue": { + "description": "Snackbar - multiple tracks added to queue", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarAlreadyDownloaded": "\"{trackName}\" already downloaded", + "@snackbarAlreadyDownloaded": { + "description": "Snackbar - track already exists", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "snackbarHistoryCleared": "History cleared", + "@snackbarHistoryCleared": { + "description": "Snackbar - history deleted" + }, + "snackbarCredentialsSaved": "Credentials saved", + "@snackbarCredentialsSaved": { + "description": "Snackbar - Spotify credentials saved" + }, + "snackbarCredentialsCleared": "Credentials cleared", + "@snackbarCredentialsCleared": { + "description": "Snackbar - Spotify credentials removed" + }, + "snackbarDeletedTracks": "Deleted {count} {count, plural, =1{track} other{tracks}}", + "@snackbarDeletedTracks": { + "description": "Snackbar - tracks deleted", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarCannotOpenFile": "Cannot open file: {error}", + "@snackbarCannotOpenFile": { + "description": "Snackbar - file open error", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "snackbarFillAllFields": "Please fill all fields", + "@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" + } + } + }, + "snackbarUrlCopied": "{platform} URL copied to clipboard", + "@snackbarUrlCopied": { + "description": "Snackbar - URL copied", + "placeholders": { + "platform": { + "type": "String", + "description": "Platform name (Spotify/Deezer)" + } + } + }, + "snackbarFileNotFound": "File not found", + "@snackbarFileNotFound": { + "description": "Snackbar - file doesn't exist" + }, + "snackbarSelectExtFile": "Please select a .spotiflac-ext file", + "@snackbarSelectExtFile": { + "description": "Snackbar - wrong file type selected" + }, + "snackbarProviderPrioritySaved": "Provider priority saved", + "@snackbarProviderPrioritySaved": { + "description": "Snackbar - provider order saved" + }, + "snackbarMetadataProviderSaved": "Metadata provider priority saved", + "@snackbarMetadataProviderSaved": { + "description": "Snackbar - metadata provider order saved" + }, + "snackbarExtensionInstalled": "{extensionName} installed.", + "@snackbarExtensionInstalled": { + "description": "Snackbar - extension installed successfully", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "snackbarExtensionUpdated": "{extensionName} updated.", + "@snackbarExtensionUpdated": { + "description": "Snackbar - extension updated successfully", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "snackbarFailedToInstall": "Failed to install extension", + "@snackbarFailedToInstall": { + "description": "Snackbar - extension install error" + }, + "snackbarFailedToUpdate": "Failed to update extension", + "@snackbarFailedToUpdate": { + "description": "Snackbar - extension update error" + }, + "errorRateLimited": "Rate Limited", + "@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)" + } + } + }, + "errorNoTracksFound": "No tracks found", + "@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" + } + } + }, + "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" + }, + "actionResume": "Resume", + "@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" + }, + "actionSelectAll": "Select All", + "@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" + }, + "actionRemoveCredentials": "Remove Credentials", + "@actionRemoveCredentials": { + "description": "Action button - delete Spotify credentials" + }, + "actionSaveCredentials": "Save Credentials", + "@actionSaveCredentials": { + "description": "Action button - save Spotify credentials" + }, + "selectionSelected": "{count} selected", + "@selectionSelected": { + "description": "Selection count indicator", + "placeholders": { + "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" + } + } + }, + "selectionSelectToDelete": "Select tracks to delete", + "@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" + } + } + }, + "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" + } + } + }, + "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" + }, + "folderOrganizationByArtist": "By Artist", + "@folderOrganizationByArtist": { + "description": "Folder option - artist folders" + }, + "folderOrganizationByAlbum": "By Album", + "@folderOrganizationByAlbum": { + "description": "Folder option - album folders" + }, + "folderOrganizationByArtistAlbum": "Artist/Album", + "@folderOrganizationByArtistAlbum": { + "description": "Folder option - nested folders" + }, + "folderOrganizationDescription": "Organize downloaded files into folders", + "@folderOrganizationDescription": { + "description": "Folder organization sheet description" + }, + "folderOrganizationNoneSubtitle": "All files in download folder", + "@folderOrganizationNoneSubtitle": { + "description": "Subtitle for no organization option" + }, + "folderOrganizationByArtistSubtitle": "Separate folder for each artist", + "@folderOrganizationByArtistSubtitle": { + "description": "Subtitle for artist folder option" + }, + "folderOrganizationByAlbumSubtitle": "Separate folder for each album", + "@folderOrganizationByAlbumSubtitle": { + "description": "Subtitle for album folder option" + }, + "folderOrganizationByArtistAlbumSubtitle": "Nested folders for artist and album", + "@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" + } + } + }, + "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" + } + } + }, + "logAffected": "Affected: {domains}", + "@logAffected": { + "description": "Affected domains display", + "placeholders": { + "domains": { + "type": "String" + } + } + }, + "logEntriesFiltered": "Entries ({count} filtered)", + "@logEntriesFiltered": { + "description": "Log count with filter active", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "logEntries": "Entries ({count})", + "@logEntries": { + "description": "Total log count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "credentialsTitle": "Spotify Credentials", + "@credentialsTitle": { + "description": "Credentials dialog title" + }, + "credentialsDescription": "Enter your Client ID and Secret to use your own Spotify application quota.", + "@credentialsDescription": { + "description": "Credentials dialog explanation" + }, + "credentialsClientId": "Client ID", + "@credentialsClientId": { + "description": "Client ID field label - DO NOT TRANSLATE" + }, + "credentialsClientIdHint": "Paste Client ID", + "@credentialsClientIdHint": { + "description": "Client ID placeholder" + }, + "credentialsClientSecret": "Client Secret", + "@credentialsClientSecret": { + "description": "Client Secret field label - DO NOT TRANSLATE" + }, + "credentialsClientSecretHint": "Paste Client Secret", + "@credentialsClientSecretHint": { + "description": "Client Secret placeholder" + }, + "channelStable": "Stable", + "@channelStable": { + "description": "Update channel - stable releases" + }, + "channelPreview": "Preview", + "@channelPreview": { + "description": "Update channel - beta/preview releases" + }, + "sectionSearchSource": "Search Source", + "@sectionSearchSource": { + "description": "Settings section header" + }, + "sectionDownload": "Download", + "@sectionDownload": { + "description": "Settings section header" + }, + "sectionPerformance": "Performance", + "@sectionPerformance": { + "description": "Settings section header" + }, + "sectionApp": "App", + "@sectionApp": { + "description": "Settings section header" + }, + "sectionData": "Data", + "@sectionData": { + "description": "Settings section header" + }, + "sectionDebug": "Debug", + "@sectionDebug": { + "description": "Settings section header" + }, + "sectionService": "Service", + "@sectionService": { + "description": "Settings section header" + }, + "sectionAudioQuality": "Audio Quality", + "@sectionAudioQuality": { + "description": "Settings section header" + }, + "sectionFileSettings": "File Settings", + "@sectionFileSettings": { + "description": "Settings section header" + }, + "sectionColor": "Color", + "@sectionColor": { + "description": "Settings section header" + }, + "sectionTheme": "Theme", + "@sectionTheme": { + "description": "Settings section header" + }, + "sectionLayout": "Layout", + "@sectionLayout": { + "description": "Settings section header" + }, + "sectionLanguage": "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" + }, + "settingsAppearanceSubtitle": "Theme, colors, display", + "@settingsAppearanceSubtitle": { + "description": "Appearance settings description" + }, + "settingsDownloadSubtitle": "Service, quality, filename format", + "@settingsDownloadSubtitle": { + "description": "Download settings description" + }, + "settingsOptionsSubtitle": "Fallback, lyrics, cover art, updates", + "@settingsOptionsSubtitle": { + "description": "Options settings description" + }, + "settingsExtensionsSubtitle": "Manage download providers", + "@settingsExtensionsSubtitle": { + "description": "Extensions settings description" + }, + "settingsLogsSubtitle": "View app logs for debugging", + "@settingsLogsSubtitle": { + "description": "Logs settings description" + }, + "loadingSharedLink": "Loading shared link...", + "@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" + }, + "downloadAllCount": "Download All ({count})", + "@downloadAllCount": { + "description": "Download all button with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "tracksCount": "{count, plural, =1{1 track} other{{count} tracks}}", + "@tracksCount": { + "description": "Track count display", + "placeholders": { + "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" + }, + "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" + }, + "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" + } + } + }, + "dateToday": "Today", + "@dateToday": { + "description": "Relative date - today" + }, + "dateYesterday": "Yesterday", + "@dateYesterday": { + "description": "Relative date - yesterday" + }, + "dateDaysAgo": "{count} days ago", + "@dateDaysAgo": { + "description": "Relative date - days ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dateWeeksAgo": "{count} weeks ago", + "@dateWeeksAgo": { + "description": "Relative date - weeks ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dateMonthsAgo": "{count} months ago", + "@dateMonthsAgo": { + "description": "Relative date - months ago", + "placeholders": { + "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" + }, + "storeFilterMetadata": "Metadata", + "@storeFilterMetadata": { + "description": "Store filter - metadata providers" + }, + "storeFilterDownload": "Download", + "@storeFilterDownload": { + "description": "Store filter - download providers" + }, + "storeFilterUtility": "Utility", + "@storeFilterUtility": { + "description": "Store filter - utility extensions" + }, + "storeFilterLyrics": "Lyrics", + "@storeFilterLyrics": { + "description": "Store filter - lyrics providers" + }, + "storeFilterIntegration": "Integration", + "@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" + }, + "extensionDefaultProvider": "Default (Deezer/Spotify)", + "@extensionDefaultProvider": { + "description": "Default search provider option" + }, + "extensionDefaultProviderSubtitle": "Use built-in search", + "@extensionDefaultProviderSubtitle": { + "description": "Subtitle for default provider" + }, + "extensionAuthor": "Author", + "@extensionAuthor": { + "description": "Extension detail - author" + }, + "extensionId": "ID", + "@extensionId": { + "description": "Extension detail - unique ID" + }, + "extensionError": "Error", + "@extensionError": { + "description": "Extension detail - error message" + }, + "extensionCapabilities": "Capabilities", + "@extensionCapabilities": { + "description": "Section header - extension features" + }, + "extensionMetadataProvider": "Metadata Provider", + "@extensionMetadataProvider": { + "description": "Capability - provides metadata" + }, + "extensionDownloadProvider": "Download Provider", + "@extensionDownloadProvider": { + "description": "Capability - provides downloads" + }, + "extensionLyricsProvider": "Lyrics Provider", + "@extensionLyricsProvider": { + "description": "Capability - provides lyrics" + }, + "extensionUrlHandler": "URL Handler", + "@extensionUrlHandler": { + "description": "Capability - handles URLs" + }, + "extensionQualityOptions": "Quality Options", + "@extensionQualityOptions": { + "description": "Capability - quality selection" + }, + "extensionPostProcessingHooks": "Post-Processing Hooks", + "@extensionPostProcessingHooks": { + "description": "Capability - post-processing" + }, + "extensionPermissions": "Permissions", + "@extensionPermissions": { + "description": "Section header - required permissions" + }, + "extensionSettings": "Settings", + "@extensionSettings": { + "description": "Section header - extension settings" + }, + "extensionRemoveButton": "Remove Extension", + "@extensionRemoveButton": { + "description": "Button to uninstall extension" + }, + "extensionUpdated": "Updated", + "@extensionUpdated": { + "description": "Extension detail - last update" + }, + "extensionMinAppVersion": "Min App Version", + "@extensionMinAppVersion": { + "description": "Extension detail - minimum app version" + }, + "extensionCustomTrackMatching": "Custom Track Matching", + "@extensionCustomTrackMatching": { + "description": "Capability - custom track matching algorithm" + }, + "extensionPostProcessing": "Post-Processing", + "@extensionPostProcessing": { + "description": "Capability - post-download processing" + }, + "extensionHooksAvailable": "{count} hook(s) available", + "@extensionHooksAvailable": { + "description": "Post-processing hooks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionPatternsCount": "{count} pattern(s)", + "@extensionPatternsCount": { + "description": "URL patterns count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionStrategy": "Strategy: {strategy}", + "@extensionStrategy": { + "description": "Track matching strategy name", + "placeholders": { + "strategy": { + "type": "String" + } + } + }, + "extensionsProviderPrioritySection": "Provider Priority", + "@extensionsProviderPrioritySection": { + "description": "Section header - provider priority" + }, + "extensionsInstalledSection": "Installed Extensions", + "@extensionsInstalledSection": { + "description": "Section header - installed extensions" + }, + "extensionsNoExtensions": "No extensions installed", + "@extensionsNoExtensions": { + "description": "Empty state - no extensions" + }, + "extensionsNoExtensionsSubtitle": "Install .spotiflac-ext files to add new providers", + "@extensionsNoExtensionsSubtitle": { + "description": "Empty state subtitle" + }, + "extensionsInstallButton": "Install Extension", + "@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" + }, + "extensionsInstalledSuccess": "Extension installed successfully", + "@extensionsInstalledSuccess": { + "description": "Success message after install" + }, + "extensionsDownloadPriority": "Download Priority", + "@extensionsDownloadPriority": { + "description": "Setting - download provider order" + }, + "extensionsDownloadPrioritySubtitle": "Set download service order", + "@extensionsDownloadPrioritySubtitle": { + "description": "Subtitle for download priority" + }, + "extensionsNoDownloadProvider": "No extensions with download provider", + "@extensionsNoDownloadProvider": { + "description": "Empty state - no download providers" + }, + "extensionsMetadataPriority": "Metadata Priority", + "@extensionsMetadataPriority": { + "description": "Setting - metadata provider order" + }, + "extensionsMetadataPrioritySubtitle": "Set search & metadata source order", + "@extensionsMetadataPrioritySubtitle": { + "description": "Subtitle for metadata priority" + }, + "extensionsNoMetadataProvider": "No extensions with metadata provider", + "@extensionsNoMetadataProvider": { + "description": "Empty state - no metadata providers" + }, + "extensionsSearchProvider": "Search Provider", + "@extensionsSearchProvider": { + "description": "Setting - search provider selection" + }, + "extensionsNoCustomSearch": "No extensions with custom search", + "@extensionsNoCustomSearch": { + "description": "Empty state - no search providers" + }, + "extensionsSearchProviderDescription": "Choose which service to use for searching tracks", + "@extensionsSearchProviderDescription": { + "description": "Search provider setting description" + }, + "extensionsCustomSearch": "Custom search", + "@extensionsCustomSearch": { + "description": "Label for custom search provider" + }, + "extensionsErrorLoading": "Error loading extension", + "@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 / up to 96kHz", + "@qualityHiResFlacSubtitle": { + "description": "Technical spec for hi-res" + }, + "qualityHiResFlacMax": "Hi-Res FLAC Max", + "@qualityHiResFlacMax": { + "description": "Quality option - maximum resolution FLAC" + }, + "qualityHiResFlacMaxSubtitle": "24-bit / up to 192kHz", + "@qualityHiResFlacMaxSubtitle": { + "description": "Technical spec for hi-res max" + }, + "qualityNote": "Actual quality depends on track availability from the service", + "@qualityNote": { + "description": "Note about quality availability" + }, + "downloadAskBeforeDownload": "Ask Before Download", + "@downloadAskBeforeDownload": { + "description": "Setting - show quality picker" + }, + "downloadDirectory": "Download Directory", + "@downloadDirectory": { + "description": "Setting - download folder" + }, + "downloadSeparateSinglesFolder": "Separate Singles Folder", + "@downloadSeparateSinglesFolder": { + "description": "Setting - separate folder for singles" + }, + "downloadAlbumFolderStructure": "Album Folder Structure", + "@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" + }, + "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" + }, + "appearanceAmoledDark": "AMOLED Dark", + "@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" + }, + "queueClearAllMessage": "Are you sure you want to clear all downloads?", + "@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" + }, + "albumFolderArtistAlbumSubtitle": "Albums/Artist Name/Album Name/", + "@albumFolderArtistAlbumSubtitle": { + "description": "Folder structure example" + }, + "albumFolderArtistYearAlbum": "Artist / [Year] Album", + "@albumFolderArtistYearAlbum": { + "description": "Album folder option with year" + }, + "albumFolderArtistYearAlbumSubtitle": "Albums/Artist Name/[2005] Album Name/", + "@albumFolderArtistYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "albumFolderAlbumOnly": "Album Only", + "@albumFolderAlbumOnly": { + "description": "Album folder option" + }, + "albumFolderAlbumOnlySubtitle": "Albums/Album Name/", + "@albumFolderAlbumOnlySubtitle": { + "description": "Folder structure example" + }, + "albumFolderYearAlbum": "[Year] Album", + "@albumFolderYearAlbum": { + "description": "Album folder option with year" + }, + "albumFolderYearAlbumSubtitle": "Albums/[2005] Album Name/", + "@albumFolderYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "downloadedAlbumDeleteSelected": "Delete Selected", + "@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" + } + } + }, + "downloadedAlbumSelectedCount": "{count} selected", + "@downloadedAlbumSelectedCount": { + "description": "Selection count indicator", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumAllSelected": "All tracks selected", + "@downloadedAlbumAllSelected": { + "description": "Status - all items selected" + }, + "downloadedAlbumTapToSelect": "Tap tracks to select", + "@downloadedAlbumTapToSelect": { + "description": "Selection hint" + }, + "downloadedAlbumDeleteCount": "Delete {count} {count, plural, =1{track} other{tracks}}", + "@downloadedAlbumDeleteCount": { + "description": "Delete button text with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumSelectToDelete": "Select tracks to delete", + "@downloadedAlbumSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "utilityFunctions": "Utility Functions", + "@utilityFunctions": { + "description": "Extension capability - utility functions" + }, + "recentTypeArtist": "Artist", + "@recentTypeArtist": { + "description": "Recent access item type - artist" + }, + "recentTypeAlbum": "Album", + "@recentTypeAlbum": { + "description": "Recent access item type - album" + }, + "recentTypeSong": "Song", + "@recentTypeSong": { + "description": "Recent access item type - song/track" + }, + "recentTypePlaylist": "Playlist", + "@recentTypePlaylist": { + "description": "Recent access item type - playlist" + }, + "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" + } + } + } +} \ No newline at end of file From 720525b67b6a8ea2a74e75d3215c56d29964d1ee Mon Sep 17 00:00:00 2001 From: Zarz Eleutherius <42882290+zarzet@users.noreply.github.com> Date: Sun, 18 Jan 2026 03:42:22 +0700 Subject: [PATCH 03/14] New translations app_en.arb (German) --- lib/l10n/arb/app_de.arb | 70 +++++++++++++++++++++++++++++++---------- 1 file changed, 54 insertions(+), 16 deletions(-) diff --git a/lib/l10n/arb/app_de.arb b/lib/l10n/arb/app_de.arb index c5d32df4..8a57812d 100644 --- a/lib/l10n/arb/app_de.arb +++ b/lib/l10n/arb/app_de.arb @@ -1,6 +1,6 @@ { "@@locale": "de", - "@@last_modified": "2026-01-17", + "@@last_modified": "2026-01-16", "appName": "SpotiFLAC", "@appName": { "description": "App name - DO NOT TRANSLATE" @@ -642,6 +642,20 @@ } } }, + "artistPopular": "Popular", + "@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" + } + } + }, "trackMetadataTitle": "Track Info", "@trackMetadataTitle": { "description": "Track metadata screen title" @@ -1851,27 +1865,15 @@ }, "sectionLanguage": "Language", "@sectionLanguage": { - "description": "Settings section header for language selection" + "description": "Settings section header for language" }, "appearanceLanguage": "App Language", "@appearanceLanguage": { - "description": "Setting title for language selection" + "description": "Language setting title" }, "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" + "description": "Language setting subtitle" }, "settingsAppearanceSubtitle": "Theme, colors, display", "@settingsAppearanceSubtitle": { @@ -2573,5 +2575,41 @@ "utilityFunctions": "Utility Functions", "@utilityFunctions": { "description": "Extension capability - utility functions" + }, + "recentTypeArtist": "Artist", + "@recentTypeArtist": { + "description": "Recent access item type - artist" + }, + "recentTypeAlbum": "Album", + "@recentTypeAlbum": { + "description": "Recent access item type - album" + }, + "recentTypeSong": "Song", + "@recentTypeSong": { + "description": "Recent access item type - song/track" + }, + "recentTypePlaylist": "Playlist", + "@recentTypePlaylist": { + "description": "Recent access item type - playlist" + }, + "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" + } + } } } \ No newline at end of file From dddc8c3d94005649d8f11193dca6c691a3d8bf81 Mon Sep 17 00:00:00 2001 From: Zarz Eleutherius <42882290+zarzet@users.noreply.github.com> Date: Sun, 18 Jan 2026 03:42:24 +0700 Subject: [PATCH 04/14] New translations app_en.arb (Korean) --- lib/l10n/arb/app_ko.arb | 68 ++++++++++++++++++++++++++++++++--------- 1 file changed, 53 insertions(+), 15 deletions(-) diff --git a/lib/l10n/arb/app_ko.arb b/lib/l10n/arb/app_ko.arb index cc0ccc73..92bee94b 100644 --- a/lib/l10n/arb/app_ko.arb +++ b/lib/l10n/arb/app_ko.arb @@ -642,6 +642,20 @@ } } }, + "artistPopular": "Popular", + "@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" + } + } + }, "trackMetadataTitle": "Track Info", "@trackMetadataTitle": { "description": "Track metadata screen title" @@ -1851,27 +1865,15 @@ }, "sectionLanguage": "Language", "@sectionLanguage": { - "description": "Settings section header for language selection" + "description": "Settings section header for language" }, "appearanceLanguage": "App Language", "@appearanceLanguage": { - "description": "Setting title for language selection" + "description": "Language setting title" }, "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" + "description": "Language setting subtitle" }, "settingsAppearanceSubtitle": "Theme, colors, display", "@settingsAppearanceSubtitle": { @@ -2573,5 +2575,41 @@ "utilityFunctions": "Utility Functions", "@utilityFunctions": { "description": "Extension capability - utility functions" + }, + "recentTypeArtist": "Artist", + "@recentTypeArtist": { + "description": "Recent access item type - artist" + }, + "recentTypeAlbum": "Album", + "@recentTypeAlbum": { + "description": "Recent access item type - album" + }, + "recentTypeSong": "Song", + "@recentTypeSong": { + "description": "Recent access item type - song/track" + }, + "recentTypePlaylist": "Playlist", + "@recentTypePlaylist": { + "description": "Recent access item type - playlist" + }, + "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" + } + } } } \ No newline at end of file From ff882a58d7c04359ab201515a6cf89cfa6f86f30 Mon Sep 17 00:00:00 2001 From: Zarz Eleutherius <42882290+zarzet@users.noreply.github.com> Date: Sun, 18 Jan 2026 03:42:25 +0700 Subject: [PATCH 05/14] New translations app_en.arb (Dutch) --- lib/l10n/arb/app_nl.arb | 68 ++++++++++++++++++++++++++++++++--------- 1 file changed, 53 insertions(+), 15 deletions(-) diff --git a/lib/l10n/arb/app_nl.arb b/lib/l10n/arb/app_nl.arb index 62e26100..c762fd9f 100644 --- a/lib/l10n/arb/app_nl.arb +++ b/lib/l10n/arb/app_nl.arb @@ -642,6 +642,20 @@ } } }, + "artistPopular": "Popular", + "@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" + } + } + }, "trackMetadataTitle": "Track Info", "@trackMetadataTitle": { "description": "Track metadata screen title" @@ -1851,27 +1865,15 @@ }, "sectionLanguage": "Language", "@sectionLanguage": { - "description": "Settings section header for language selection" + "description": "Settings section header for language" }, "appearanceLanguage": "App Language", "@appearanceLanguage": { - "description": "Setting title for language selection" + "description": "Language setting title" }, "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" + "description": "Language setting subtitle" }, "settingsAppearanceSubtitle": "Theme, colors, display", "@settingsAppearanceSubtitle": { @@ -2573,5 +2575,41 @@ "utilityFunctions": "Utility Functions", "@utilityFunctions": { "description": "Extension capability - utility functions" + }, + "recentTypeArtist": "Artist", + "@recentTypeArtist": { + "description": "Recent access item type - artist" + }, + "recentTypeAlbum": "Album", + "@recentTypeAlbum": { + "description": "Recent access item type - album" + }, + "recentTypeSong": "Song", + "@recentTypeSong": { + "description": "Recent access item type - song/track" + }, + "recentTypePlaylist": "Playlist", + "@recentTypePlaylist": { + "description": "Recent access item type - playlist" + }, + "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" + } + } } } \ No newline at end of file From 1069bdd0d89b8a3d1b83e438ea22ef80b70171fd Mon Sep 17 00:00:00 2001 From: Zarz Eleutherius <42882290+zarzet@users.noreply.github.com> Date: Sun, 18 Jan 2026 03:42:25 +0700 Subject: [PATCH 06/14] New translations app_en.arb (Portuguese) --- lib/l10n/arb/app_pt-PT.arb | 2615 ++++++++++++++++++++++++++++++++++++ 1 file changed, 2615 insertions(+) create mode 100644 lib/l10n/arb/app_pt-PT.arb diff --git a/lib/l10n/arb/app_pt-PT.arb b/lib/l10n/arb/app_pt-PT.arb new file mode 100644 index 00000000..7f007ecc --- /dev/null +++ b/lib/l10n/arb/app_pt-PT.arb @@ -0,0 +1,2615 @@ +{ + "@@locale": "pt-PT", + "@@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" + }, + "navHome": "Home", + "@navHome": { + "description": "Bottom navigation - Home tab" + }, + "navHistory": "History", + "@navHistory": { + "description": "Bottom navigation - History tab" + }, + "navSettings": "Settings", + "@navSettings": { + "description": "Bottom navigation - Settings tab" + }, + "navStore": "Store", + "@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" + } + } + }, + "homeSubtitle": "Paste a Spotify link or search by name", + "@homeSubtitle": { + "description": "Subtitle shown below search box" + }, + "homeSupports": "Supports: Track, Album, Playlist, Artist URLs", + "@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" + } + } + }, + "historyDownloaded": "Downloaded", + "@historyDownloaded": { + "description": "Tab showing completed downloads" + }, + "historyFilterAll": "All", + "@historyFilterAll": { + "description": "Filter chip - show all items" + }, + "historyFilterAlbums": "Albums", + "@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" + } + } + }, + "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" + }, + "settingsDownload": "Download", + "@settingsDownload": { + "description": "Settings section - download options" + }, + "settingsAppearance": "Appearance", + "@settingsAppearance": { + "description": "Settings section - visual customization" + }, + "settingsOptions": "Options", + "@settingsOptions": { + "description": "Settings section - app options" + }, + "settingsExtensions": "Extensions", + "@settingsExtensions": { + "description": "Settings section - extension management" + }, + "settingsAbout": "About", + "@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" + }, + "downloadAskQualitySubtitle": "Show quality picker for each download", + "@downloadAskQualitySubtitle": { + "description": "Subtitle for ask quality toggle" + }, + "downloadFilenameFormat": "Filename Format", + "@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" + }, + "appearanceTitle": "Appearance", + "@appearanceTitle": { + "description": "Appearance settings page title" + }, + "appearanceTheme": "Theme", + "@appearanceTheme": { + "description": "Theme mode setting" + }, + "appearanceThemeSystem": "System", + "@appearanceThemeSystem": { + "description": "Follow system theme" + }, + "appearanceThemeLight": "Light", + "@appearanceThemeLight": { + "description": "Light theme" + }, + "appearanceThemeDark": "Dark", + "@appearanceThemeDark": { + "description": "Dark theme" + }, + "appearanceDynamicColor": "Dynamic Color", + "@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" + }, + "appearanceHistoryView": "History View", + "@appearanceHistoryView": { + "description": "Layout style for history" + }, + "appearanceHistoryViewList": "List", + "@appearanceHistoryViewList": { + "description": "List layout option" + }, + "appearanceHistoryViewGrid": "Grid", + "@appearanceHistoryViewGrid": { + "description": "Grid layout option" + }, + "optionsTitle": "Options", + "@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" + }, + "optionsPrimaryProviderSubtitle": "Service used when searching by track name.", + "@optionsPrimaryProviderSubtitle": { + "description": "Subtitle for primary provider" + }, + "optionsUsingExtension": "Using extension: {extensionName}", + "@optionsUsingExtension": { + "description": "Shows active extension name", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "optionsSwitchBack": "Tap Deezer or Spotify to switch back from extension", + "@optionsSwitchBack": { + "description": "Hint to switch back to built-in providers" + }, + "optionsAutoFallback": "Auto Fallback", + "@optionsAutoFallback": { + "description": "Auto-retry with other services" + }, + "optionsAutoFallbackSubtitle": "Try other services if download fails", + "@optionsAutoFallbackSubtitle": { + "description": "Subtitle for auto fallback" + }, + "optionsUseExtensionProviders": "Use Extension Providers", + "@optionsUseExtensionProviders": { + "description": "Enable extension download providers" + }, + "optionsUseExtensionProvidersOn": "Extensions will be tried first", + "@optionsUseExtensionProvidersOn": { + "description": "Status when extension providers enabled" + }, + "optionsUseExtensionProvidersOff": "Using built-in providers only", + "@optionsUseExtensionProvidersOff": { + "description": "Status when extension providers disabled" + }, + "optionsEmbedLyrics": "Embed Lyrics", + "@optionsEmbedLyrics": { + "description": "Embed lyrics in audio files" + }, + "optionsEmbedLyricsSubtitle": "Embed synced lyrics into FLAC files", + "@optionsEmbedLyricsSubtitle": { + "description": "Subtitle for embed lyrics" + }, + "optionsMaxQualityCover": "Max Quality Cover", + "@optionsMaxQualityCover": { + "description": "Download highest quality album art" + }, + "optionsMaxQualityCoverSubtitle": "Download highest resolution cover art", + "@optionsMaxQualityCoverSubtitle": { + "description": "Subtitle for max quality cover" + }, + "optionsConcurrentDownloads": "Concurrent Downloads", + "@optionsConcurrentDownloads": { + "description": "Number of parallel downloads" + }, + "optionsConcurrentSequential": "Sequential (1 at a time)", + "@optionsConcurrentSequential": { + "description": "Download one at a time" + }, + "optionsConcurrentParallel": "{count} parallel downloads", + "@optionsConcurrentParallel": { + "description": "Multiple parallel downloads", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "optionsConcurrentWarning": "Parallel downloads may trigger rate limiting", + "@optionsConcurrentWarning": { + "description": "Warning about rate limits" + }, + "optionsExtensionStore": "Extension Store", + "@optionsExtensionStore": { + "description": "Show/hide store tab" + }, + "optionsExtensionStoreSubtitle": "Show Store tab in navigation", + "@optionsExtensionStoreSubtitle": { + "description": "Subtitle for extension store toggle" + }, + "optionsCheckUpdates": "Check for Updates", + "@optionsCheckUpdates": { + "description": "Auto update check toggle" + }, + "optionsCheckUpdatesSubtitle": "Notify when new version is available", + "@optionsCheckUpdatesSubtitle": { + "description": "Subtitle for update check" + }, + "optionsUpdateChannel": "Update Channel", + "@optionsUpdateChannel": { + "description": "Stable vs preview releases" + }, + "optionsUpdateChannelStable": "Stable releases only", + "@optionsUpdateChannelStable": { + "description": "Only stable updates" + }, + "optionsUpdateChannelPreview": "Get preview releases", + "@optionsUpdateChannelPreview": { + "description": "Include beta/preview updates" + }, + "optionsUpdateChannelWarning": "Preview may contain bugs or incomplete features", + "@optionsUpdateChannelWarning": { + "description": "Warning about preview channel" + }, + "optionsClearHistory": "Clear Download History", + "@optionsClearHistory": { + "description": "Delete all download history" + }, + "optionsClearHistorySubtitle": "Remove all downloaded tracks from history", + "@optionsClearHistorySubtitle": { + "description": "Subtitle for clear history" + }, + "optionsDetailedLogging": "Detailed Logging", + "@optionsDetailedLogging": { + "description": "Enable verbose logs for debugging" + }, + "optionsDetailedLoggingOn": "Detailed logs are being recorded", + "@optionsDetailedLoggingOn": { + "description": "Status when logging enabled" + }, + "optionsDetailedLoggingOff": "Enable for bug reports", + "@optionsDetailedLoggingOff": { + "description": "Status when logging disabled" + }, + "optionsSpotifyCredentials": "Spotify Credentials", + "@optionsSpotifyCredentials": { + "description": "Spotify API credentials setting" + }, + "optionsSpotifyCredentialsConfigured": "Client ID: {clientId}...", + "@optionsSpotifyCredentialsConfigured": { + "description": "Shows configured client ID preview", + "placeholders": { + "clientId": { + "type": "String" + } + } + }, + "optionsSpotifyCredentialsRequired": "Required - tap to configure", + "@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" + }, + "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" + }, + "extensionsDisabled": "Disabled", + "@extensionsDisabled": { + "description": "Extension status - inactive" + }, + "extensionsVersion": "Version {version}", + "@extensionsVersion": { + "description": "Extension version display", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "extensionsAuthor": "by {author}", + "@extensionsAuthor": { + "description": "Extension author credit", + "placeholders": { + "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" + }, + "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" + }, + "aboutSupport": "Support", + "@aboutSupport": { + "description": "Section for support/donation links" + }, + "aboutBuyMeCoffee": "Buy me a coffee", + "@aboutBuyMeCoffee": { + "description": "Donation link" + }, + "aboutBuyMeCoffeeSubtitle": "Support development on Ko-fi", + "@aboutBuyMeCoffeeSubtitle": { + "description": "Subtitle for donation" + }, + "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" + }, + "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" + }, + "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" + } + } + }, + "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" + }, + "artistSingles": "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" + } + } + }, + "artistPopular": "Popular", + "@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" + } + } + }, + "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" + }, + "trackMetadataPlay": "Play", + "@trackMetadataPlay": { + "description": "Action button - play track" + }, + "trackMetadataShare": "Share", + "@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" + }, + "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" + }, + "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" + }, + "setupStorageAccessMessageAndroid11": "Android 11+ requires \"All files access\" permission to save files to your chosen download folder.", + "@setupStorageAccessMessageAndroid11": { + "description": "Android 11+ specific explanation" + }, + "setupOpenSettings": "Open Settings", + "@setupOpenSettings": { + "description": "Button to open system settings" + }, + "setupPermissionDeniedMessage": "Permission denied. Please grant all permissions to continue.", + "@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)" + } + } + }, + "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" + } + } + }, + "setupSelectDownloadFolder": "Select Download Folder", + "@setupSelectDownloadFolder": { + "description": "Folder selection step title" + }, + "setupUseDefaultFolder": "Use 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" + }, + "setupUseDefault": "Use Default", + "@setupUseDefault": { + "description": "Button to use default folder" + }, + "setupDownloadLocationTitle": "Download Location", + "@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" + }, + "setupAppDocumentsFolder": "App Documents Folder", + "@setupAppDocumentsFolder": { + "description": "iOS documents folder option" + }, + "setupAppDocumentsFolderSubtitle": "Recommended - accessible via Files app", + "@setupAppDocumentsFolderSubtitle": { + "description": "Subtitle for documents folder" + }, + "setupChooseFromFiles": "Choose from Files", + "@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" + }, + "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" + }, + "setupStorageGranted": "Storage Permission Granted!", + "@setupStorageGranted": { + "description": "Success message for storage permission" + }, + "setupStorageRequired": "Storage Permission Required", + "@setupStorageRequired": { + "description": "Title when storage permission needed" + }, + "setupStorageDescription": "SpotiFLAC needs storage permission to save your downloaded music files.", + "@setupStorageDescription": { + "description": "Explanation for storage permission" + }, + "setupNotificationGranted": "Notification Permission Granted!", + "@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" + }, + "setupFolderChoose": "Choose Download 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" + }, + "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" + }, + "setupSkipForNow": "Skip for now", + "@setupSkipForNow": { + "description": "Skip button text" + }, + "setupBack": "Back", + "@setupBack": { + "description": "Back button text" + }, + "setupNext": "Next", + "@setupNext": { + "description": "Next button text" + }, + "setupGetStarted": "Get Started", + "@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" + }, + "dialogDelete": "Delete", + "@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" + }, + "dialogClear": "Clear", + "@dialogClear": { + "description": "Dialog button - clear items" + }, + "dialogConfirm": "Confirm", + "@dialogConfirm": { + "description": "Dialog button - confirm action" + }, + "dialogDone": "Done", + "@dialogDone": { + "description": "Dialog button - action completed" + }, + "dialogImport": "Import", + "@dialogImport": { + "description": "Dialog button - import data" + }, + "dialogDiscard": "Discard", + "@dialogDiscard": { + "description": "Dialog button - discard changes" + }, + "dialogRemove": "Remove", + "@dialogRemove": { + "description": "Dialog button - remove item" + }, + "dialogUninstall": "Uninstall", + "@dialogUninstall": { + "description": "Dialog button - uninstall extension" + }, + "dialogDiscardChanges": "Discard Changes?", + "@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" + }, + "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" + }, + "dialogRemoveExtensionMessage": "Are you sure you want to remove this extension? This cannot be undone.", + "@dialogRemoveExtensionMessage": { + "description": "Dialog message - uninstall confirmation" + }, + "dialogUninstallExtension": "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" + } + } + }, + "dialogClearHistoryTitle": "Clear 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" + }, + "dialogDeleteSelectedTitle": "Delete Selected", + "@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" + } + } + }, + "dialogImportPlaylistTitle": "Import Playlist", + "@dialogImportPlaylistTitle": { + "description": "Dialog title - import CSV playlist" + }, + "dialogImportPlaylistMessage": "Found {count} tracks in CSV. Add them to download queue?", + "@dialogImportPlaylistMessage": { + "description": "Dialog message - import playlist confirmation", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarAddedToQueue": "Added \"{trackName}\" to queue", + "@snackbarAddedToQueue": { + "description": "Snackbar - track added to download queue", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "snackbarAddedTracksToQueue": "Added {count} tracks to queue", + "@snackbarAddedTracksToQueue": { + "description": "Snackbar - multiple tracks added to queue", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarAlreadyDownloaded": "\"{trackName}\" already downloaded", + "@snackbarAlreadyDownloaded": { + "description": "Snackbar - track already exists", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "snackbarHistoryCleared": "History cleared", + "@snackbarHistoryCleared": { + "description": "Snackbar - history deleted" + }, + "snackbarCredentialsSaved": "Credentials saved", + "@snackbarCredentialsSaved": { + "description": "Snackbar - Spotify credentials saved" + }, + "snackbarCredentialsCleared": "Credentials cleared", + "@snackbarCredentialsCleared": { + "description": "Snackbar - Spotify credentials removed" + }, + "snackbarDeletedTracks": "Deleted {count} {count, plural, =1{track} other{tracks}}", + "@snackbarDeletedTracks": { + "description": "Snackbar - tracks deleted", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarCannotOpenFile": "Cannot open file: {error}", + "@snackbarCannotOpenFile": { + "description": "Snackbar - file open error", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "snackbarFillAllFields": "Please fill all fields", + "@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" + } + } + }, + "snackbarUrlCopied": "{platform} URL copied to clipboard", + "@snackbarUrlCopied": { + "description": "Snackbar - URL copied", + "placeholders": { + "platform": { + "type": "String", + "description": "Platform name (Spotify/Deezer)" + } + } + }, + "snackbarFileNotFound": "File not found", + "@snackbarFileNotFound": { + "description": "Snackbar - file doesn't exist" + }, + "snackbarSelectExtFile": "Please select a .spotiflac-ext file", + "@snackbarSelectExtFile": { + "description": "Snackbar - wrong file type selected" + }, + "snackbarProviderPrioritySaved": "Provider priority saved", + "@snackbarProviderPrioritySaved": { + "description": "Snackbar - provider order saved" + }, + "snackbarMetadataProviderSaved": "Metadata provider priority saved", + "@snackbarMetadataProviderSaved": { + "description": "Snackbar - metadata provider order saved" + }, + "snackbarExtensionInstalled": "{extensionName} installed.", + "@snackbarExtensionInstalled": { + "description": "Snackbar - extension installed successfully", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "snackbarExtensionUpdated": "{extensionName} updated.", + "@snackbarExtensionUpdated": { + "description": "Snackbar - extension updated successfully", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "snackbarFailedToInstall": "Failed to install extension", + "@snackbarFailedToInstall": { + "description": "Snackbar - extension install error" + }, + "snackbarFailedToUpdate": "Failed to update extension", + "@snackbarFailedToUpdate": { + "description": "Snackbar - extension update error" + }, + "errorRateLimited": "Rate Limited", + "@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)" + } + } + }, + "errorNoTracksFound": "No tracks found", + "@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" + } + } + }, + "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" + }, + "actionResume": "Resume", + "@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" + }, + "actionSelectAll": "Select All", + "@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" + }, + "actionRemoveCredentials": "Remove Credentials", + "@actionRemoveCredentials": { + "description": "Action button - delete Spotify credentials" + }, + "actionSaveCredentials": "Save Credentials", + "@actionSaveCredentials": { + "description": "Action button - save Spotify credentials" + }, + "selectionSelected": "{count} selected", + "@selectionSelected": { + "description": "Selection count indicator", + "placeholders": { + "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" + } + } + }, + "selectionSelectToDelete": "Select tracks to delete", + "@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" + } + } + }, + "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" + } + } + }, + "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" + }, + "folderOrganizationByArtist": "By Artist", + "@folderOrganizationByArtist": { + "description": "Folder option - artist folders" + }, + "folderOrganizationByAlbum": "By Album", + "@folderOrganizationByAlbum": { + "description": "Folder option - album folders" + }, + "folderOrganizationByArtistAlbum": "Artist/Album", + "@folderOrganizationByArtistAlbum": { + "description": "Folder option - nested folders" + }, + "folderOrganizationDescription": "Organize downloaded files into folders", + "@folderOrganizationDescription": { + "description": "Folder organization sheet description" + }, + "folderOrganizationNoneSubtitle": "All files in download folder", + "@folderOrganizationNoneSubtitle": { + "description": "Subtitle for no organization option" + }, + "folderOrganizationByArtistSubtitle": "Separate folder for each artist", + "@folderOrganizationByArtistSubtitle": { + "description": "Subtitle for artist folder option" + }, + "folderOrganizationByAlbumSubtitle": "Separate folder for each album", + "@folderOrganizationByAlbumSubtitle": { + "description": "Subtitle for album folder option" + }, + "folderOrganizationByArtistAlbumSubtitle": "Nested folders for artist and album", + "@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" + } + } + }, + "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" + } + } + }, + "logAffected": "Affected: {domains}", + "@logAffected": { + "description": "Affected domains display", + "placeholders": { + "domains": { + "type": "String" + } + } + }, + "logEntriesFiltered": "Entries ({count} filtered)", + "@logEntriesFiltered": { + "description": "Log count with filter active", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "logEntries": "Entries ({count})", + "@logEntries": { + "description": "Total log count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "credentialsTitle": "Spotify Credentials", + "@credentialsTitle": { + "description": "Credentials dialog title" + }, + "credentialsDescription": "Enter your Client ID and Secret to use your own Spotify application quota.", + "@credentialsDescription": { + "description": "Credentials dialog explanation" + }, + "credentialsClientId": "Client ID", + "@credentialsClientId": { + "description": "Client ID field label - DO NOT TRANSLATE" + }, + "credentialsClientIdHint": "Paste Client ID", + "@credentialsClientIdHint": { + "description": "Client ID placeholder" + }, + "credentialsClientSecret": "Client Secret", + "@credentialsClientSecret": { + "description": "Client Secret field label - DO NOT TRANSLATE" + }, + "credentialsClientSecretHint": "Paste Client Secret", + "@credentialsClientSecretHint": { + "description": "Client Secret placeholder" + }, + "channelStable": "Stable", + "@channelStable": { + "description": "Update channel - stable releases" + }, + "channelPreview": "Preview", + "@channelPreview": { + "description": "Update channel - beta/preview releases" + }, + "sectionSearchSource": "Search Source", + "@sectionSearchSource": { + "description": "Settings section header" + }, + "sectionDownload": "Download", + "@sectionDownload": { + "description": "Settings section header" + }, + "sectionPerformance": "Performance", + "@sectionPerformance": { + "description": "Settings section header" + }, + "sectionApp": "App", + "@sectionApp": { + "description": "Settings section header" + }, + "sectionData": "Data", + "@sectionData": { + "description": "Settings section header" + }, + "sectionDebug": "Debug", + "@sectionDebug": { + "description": "Settings section header" + }, + "sectionService": "Service", + "@sectionService": { + "description": "Settings section header" + }, + "sectionAudioQuality": "Audio Quality", + "@sectionAudioQuality": { + "description": "Settings section header" + }, + "sectionFileSettings": "File Settings", + "@sectionFileSettings": { + "description": "Settings section header" + }, + "sectionColor": "Color", + "@sectionColor": { + "description": "Settings section header" + }, + "sectionTheme": "Theme", + "@sectionTheme": { + "description": "Settings section header" + }, + "sectionLayout": "Layout", + "@sectionLayout": { + "description": "Settings section header" + }, + "sectionLanguage": "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" + }, + "settingsAppearanceSubtitle": "Theme, colors, display", + "@settingsAppearanceSubtitle": { + "description": "Appearance settings description" + }, + "settingsDownloadSubtitle": "Service, quality, filename format", + "@settingsDownloadSubtitle": { + "description": "Download settings description" + }, + "settingsOptionsSubtitle": "Fallback, lyrics, cover art, updates", + "@settingsOptionsSubtitle": { + "description": "Options settings description" + }, + "settingsExtensionsSubtitle": "Manage download providers", + "@settingsExtensionsSubtitle": { + "description": "Extensions settings description" + }, + "settingsLogsSubtitle": "View app logs for debugging", + "@settingsLogsSubtitle": { + "description": "Logs settings description" + }, + "loadingSharedLink": "Loading shared link...", + "@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" + }, + "downloadAllCount": "Download All ({count})", + "@downloadAllCount": { + "description": "Download all button with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "tracksCount": "{count, plural, =1{1 track} other{{count} tracks}}", + "@tracksCount": { + "description": "Track count display", + "placeholders": { + "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" + }, + "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" + }, + "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" + } + } + }, + "dateToday": "Today", + "@dateToday": { + "description": "Relative date - today" + }, + "dateYesterday": "Yesterday", + "@dateYesterday": { + "description": "Relative date - yesterday" + }, + "dateDaysAgo": "{count} days ago", + "@dateDaysAgo": { + "description": "Relative date - days ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dateWeeksAgo": "{count} weeks ago", + "@dateWeeksAgo": { + "description": "Relative date - weeks ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dateMonthsAgo": "{count} months ago", + "@dateMonthsAgo": { + "description": "Relative date - months ago", + "placeholders": { + "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" + }, + "storeFilterMetadata": "Metadata", + "@storeFilterMetadata": { + "description": "Store filter - metadata providers" + }, + "storeFilterDownload": "Download", + "@storeFilterDownload": { + "description": "Store filter - download providers" + }, + "storeFilterUtility": "Utility", + "@storeFilterUtility": { + "description": "Store filter - utility extensions" + }, + "storeFilterLyrics": "Lyrics", + "@storeFilterLyrics": { + "description": "Store filter - lyrics providers" + }, + "storeFilterIntegration": "Integration", + "@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" + }, + "extensionDefaultProvider": "Default (Deezer/Spotify)", + "@extensionDefaultProvider": { + "description": "Default search provider option" + }, + "extensionDefaultProviderSubtitle": "Use built-in search", + "@extensionDefaultProviderSubtitle": { + "description": "Subtitle for default provider" + }, + "extensionAuthor": "Author", + "@extensionAuthor": { + "description": "Extension detail - author" + }, + "extensionId": "ID", + "@extensionId": { + "description": "Extension detail - unique ID" + }, + "extensionError": "Error", + "@extensionError": { + "description": "Extension detail - error message" + }, + "extensionCapabilities": "Capabilities", + "@extensionCapabilities": { + "description": "Section header - extension features" + }, + "extensionMetadataProvider": "Metadata Provider", + "@extensionMetadataProvider": { + "description": "Capability - provides metadata" + }, + "extensionDownloadProvider": "Download Provider", + "@extensionDownloadProvider": { + "description": "Capability - provides downloads" + }, + "extensionLyricsProvider": "Lyrics Provider", + "@extensionLyricsProvider": { + "description": "Capability - provides lyrics" + }, + "extensionUrlHandler": "URL Handler", + "@extensionUrlHandler": { + "description": "Capability - handles URLs" + }, + "extensionQualityOptions": "Quality Options", + "@extensionQualityOptions": { + "description": "Capability - quality selection" + }, + "extensionPostProcessingHooks": "Post-Processing Hooks", + "@extensionPostProcessingHooks": { + "description": "Capability - post-processing" + }, + "extensionPermissions": "Permissions", + "@extensionPermissions": { + "description": "Section header - required permissions" + }, + "extensionSettings": "Settings", + "@extensionSettings": { + "description": "Section header - extension settings" + }, + "extensionRemoveButton": "Remove Extension", + "@extensionRemoveButton": { + "description": "Button to uninstall extension" + }, + "extensionUpdated": "Updated", + "@extensionUpdated": { + "description": "Extension detail - last update" + }, + "extensionMinAppVersion": "Min App Version", + "@extensionMinAppVersion": { + "description": "Extension detail - minimum app version" + }, + "extensionCustomTrackMatching": "Custom Track Matching", + "@extensionCustomTrackMatching": { + "description": "Capability - custom track matching algorithm" + }, + "extensionPostProcessing": "Post-Processing", + "@extensionPostProcessing": { + "description": "Capability - post-download processing" + }, + "extensionHooksAvailable": "{count} hook(s) available", + "@extensionHooksAvailable": { + "description": "Post-processing hooks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionPatternsCount": "{count} pattern(s)", + "@extensionPatternsCount": { + "description": "URL patterns count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionStrategy": "Strategy: {strategy}", + "@extensionStrategy": { + "description": "Track matching strategy name", + "placeholders": { + "strategy": { + "type": "String" + } + } + }, + "extensionsProviderPrioritySection": "Provider Priority", + "@extensionsProviderPrioritySection": { + "description": "Section header - provider priority" + }, + "extensionsInstalledSection": "Installed Extensions", + "@extensionsInstalledSection": { + "description": "Section header - installed extensions" + }, + "extensionsNoExtensions": "No extensions installed", + "@extensionsNoExtensions": { + "description": "Empty state - no extensions" + }, + "extensionsNoExtensionsSubtitle": "Install .spotiflac-ext files to add new providers", + "@extensionsNoExtensionsSubtitle": { + "description": "Empty state subtitle" + }, + "extensionsInstallButton": "Install Extension", + "@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" + }, + "extensionsInstalledSuccess": "Extension installed successfully", + "@extensionsInstalledSuccess": { + "description": "Success message after install" + }, + "extensionsDownloadPriority": "Download Priority", + "@extensionsDownloadPriority": { + "description": "Setting - download provider order" + }, + "extensionsDownloadPrioritySubtitle": "Set download service order", + "@extensionsDownloadPrioritySubtitle": { + "description": "Subtitle for download priority" + }, + "extensionsNoDownloadProvider": "No extensions with download provider", + "@extensionsNoDownloadProvider": { + "description": "Empty state - no download providers" + }, + "extensionsMetadataPriority": "Metadata Priority", + "@extensionsMetadataPriority": { + "description": "Setting - metadata provider order" + }, + "extensionsMetadataPrioritySubtitle": "Set search & metadata source order", + "@extensionsMetadataPrioritySubtitle": { + "description": "Subtitle for metadata priority" + }, + "extensionsNoMetadataProvider": "No extensions with metadata provider", + "@extensionsNoMetadataProvider": { + "description": "Empty state - no metadata providers" + }, + "extensionsSearchProvider": "Search Provider", + "@extensionsSearchProvider": { + "description": "Setting - search provider selection" + }, + "extensionsNoCustomSearch": "No extensions with custom search", + "@extensionsNoCustomSearch": { + "description": "Empty state - no search providers" + }, + "extensionsSearchProviderDescription": "Choose which service to use for searching tracks", + "@extensionsSearchProviderDescription": { + "description": "Search provider setting description" + }, + "extensionsCustomSearch": "Custom search", + "@extensionsCustomSearch": { + "description": "Label for custom search provider" + }, + "extensionsErrorLoading": "Error loading extension", + "@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 / up to 96kHz", + "@qualityHiResFlacSubtitle": { + "description": "Technical spec for hi-res" + }, + "qualityHiResFlacMax": "Hi-Res FLAC Max", + "@qualityHiResFlacMax": { + "description": "Quality option - maximum resolution FLAC" + }, + "qualityHiResFlacMaxSubtitle": "24-bit / up to 192kHz", + "@qualityHiResFlacMaxSubtitle": { + "description": "Technical spec for hi-res max" + }, + "qualityNote": "Actual quality depends on track availability from the service", + "@qualityNote": { + "description": "Note about quality availability" + }, + "downloadAskBeforeDownload": "Ask Before Download", + "@downloadAskBeforeDownload": { + "description": "Setting - show quality picker" + }, + "downloadDirectory": "Download Directory", + "@downloadDirectory": { + "description": "Setting - download folder" + }, + "downloadSeparateSinglesFolder": "Separate Singles Folder", + "@downloadSeparateSinglesFolder": { + "description": "Setting - separate folder for singles" + }, + "downloadAlbumFolderStructure": "Album Folder Structure", + "@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" + }, + "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" + }, + "appearanceAmoledDark": "AMOLED Dark", + "@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" + }, + "queueClearAllMessage": "Are you sure you want to clear all downloads?", + "@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" + }, + "albumFolderArtistAlbumSubtitle": "Albums/Artist Name/Album Name/", + "@albumFolderArtistAlbumSubtitle": { + "description": "Folder structure example" + }, + "albumFolderArtistYearAlbum": "Artist / [Year] Album", + "@albumFolderArtistYearAlbum": { + "description": "Album folder option with year" + }, + "albumFolderArtistYearAlbumSubtitle": "Albums/Artist Name/[2005] Album Name/", + "@albumFolderArtistYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "albumFolderAlbumOnly": "Album Only", + "@albumFolderAlbumOnly": { + "description": "Album folder option" + }, + "albumFolderAlbumOnlySubtitle": "Albums/Album Name/", + "@albumFolderAlbumOnlySubtitle": { + "description": "Folder structure example" + }, + "albumFolderYearAlbum": "[Year] Album", + "@albumFolderYearAlbum": { + "description": "Album folder option with year" + }, + "albumFolderYearAlbumSubtitle": "Albums/[2005] Album Name/", + "@albumFolderYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "downloadedAlbumDeleteSelected": "Delete Selected", + "@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" + } + } + }, + "downloadedAlbumSelectedCount": "{count} selected", + "@downloadedAlbumSelectedCount": { + "description": "Selection count indicator", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumAllSelected": "All tracks selected", + "@downloadedAlbumAllSelected": { + "description": "Status - all items selected" + }, + "downloadedAlbumTapToSelect": "Tap tracks to select", + "@downloadedAlbumTapToSelect": { + "description": "Selection hint" + }, + "downloadedAlbumDeleteCount": "Delete {count} {count, plural, =1{track} other{tracks}}", + "@downloadedAlbumDeleteCount": { + "description": "Delete button text with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumSelectToDelete": "Select tracks to delete", + "@downloadedAlbumSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "utilityFunctions": "Utility Functions", + "@utilityFunctions": { + "description": "Extension capability - utility functions" + }, + "recentTypeArtist": "Artist", + "@recentTypeArtist": { + "description": "Recent access item type - artist" + }, + "recentTypeAlbum": "Album", + "@recentTypeAlbum": { + "description": "Recent access item type - album" + }, + "recentTypeSong": "Song", + "@recentTypeSong": { + "description": "Recent access item type - song/track" + }, + "recentTypePlaylist": "Playlist", + "@recentTypePlaylist": { + "description": "Recent access item type - playlist" + }, + "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" + } + } + } +} \ No newline at end of file From e9ca0546821af414e59b20e754e15e4a2b12e158 Mon Sep 17 00:00:00 2001 From: Zarz Eleutherius <42882290+zarzet@users.noreply.github.com> Date: Sun, 18 Jan 2026 03:42:27 +0700 Subject: [PATCH 07/14] New translations app_en.arb (Chinese Simplified) --- lib/l10n/arb/app_zh_CN.arb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/l10n/arb/app_zh_CN.arb b/lib/l10n/arb/app_zh_CN.arb index 5b9f70aa..7e545a0b 100644 --- a/lib/l10n/arb/app_zh_CN.arb +++ b/lib/l10n/arb/app_zh_CN.arb @@ -1,5 +1,5 @@ { - "@@locale": "zh_CN", + "@@locale": "zh-CN", "@@last_modified": "2026-01-16", "appName": "SpotiFLAC", "@appName": { From f4d7c6531f7b9cd3d02c8e36fac77134a4fffe4e Mon Sep 17 00:00:00 2001 From: Zarz Eleutherius <42882290+zarzet@users.noreply.github.com> Date: Sun, 18 Jan 2026 03:42:27 +0700 Subject: [PATCH 08/14] New translations app_en.arb (Chinese Traditional) --- lib/l10n/arb/app_zh_TW.arb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/l10n/arb/app_zh_TW.arb b/lib/l10n/arb/app_zh_TW.arb index fdec8f45..8526e88f 100644 --- a/lib/l10n/arb/app_zh_TW.arb +++ b/lib/l10n/arb/app_zh_TW.arb @@ -1,5 +1,5 @@ { - "@@locale": "zh_TW", + "@@locale": "zh-TW", "@@last_modified": "2026-01-16", "appName": "SpotiFLAC", "@appName": { From 07a1c68354ed8fbc98d2d8598cba27a9267543cb Mon Sep 17 00:00:00 2001 From: Zarz Eleutherius <42882290+zarzet@users.noreply.github.com> Date: Sun, 18 Jan 2026 03:42:28 +0700 Subject: [PATCH 09/14] New translations app_en.arb (Indonesian) --- lib/l10n/arb/app_id.arb | 3018 ++++++++++++++++++++++++++++++++------- 1 file changed, 2476 insertions(+), 542 deletions(-) diff --git a/lib/l10n/arb/app_id.arb b/lib/l10n/arb/app_id.arb index 577f7a41..06af2546 100644 --- a/lib/l10n/arb/app_id.arb +++ b/lib/l10n/arb/app_id.arb @@ -1,681 +1,2615 @@ { "@@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" + }, "navHistory": "Riwayat", + "@navHistory": { + "description": "Bottom navigation - History 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" + }, "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" + }, "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" + }, "optionsAutoFallback": "Auto Fallback", + "@optionsAutoFallback": { + "description": "Auto-retry with other services" + }, "optionsAutoFallbackSubtitle": "Coba layanan lain jika unduhan gagal", + "@optionsAutoFallbackSubtitle": { + "description": "Subtitle for auto fallback" + }, "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" + }, "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", - "aboutOriginalCreator": "Pencipta SpotiFLAC asli", - "aboutLogoArtist": "Seniman berbakat yang membuat logo aplikasi kami yang indah!", - "aboutSpecialThanks": "Terima Kasih Khusus", - "aboutLinks": "Tautan", - "aboutMobileSource": "Kode sumber mobile", - "aboutPCSource": "Kode sumber PC", - "aboutReportIssue": "Laporkan masalah", - "aboutReportIssueSubtitle": "Laporkan masalah yang Anda temui", - "aboutFeatureRequest": "Permintaan fitur", - "aboutFeatureRequestSubtitle": "Sarankan fitur baru untuk aplikasi", - "aboutSupport": "Dukungan", - "aboutBuyMeCoffee": "Traktir saya kopi", - "aboutBuyMeCoffeeSubtitle": "Dukung pengembangan di Ko-fi", - "aboutApp": "Aplikasi", - "aboutVersion": "Versi", - - "albumTitle": "Album", - "albumTracks": "{count, plural, =1{1 lagu} other{{count} lagu}}", - "albumDownloadAll": "Unduh Semua", - "albumDownloadRemaining": "Unduh Sisanya", - - "playlistTitle": "Playlist", - "artistTitle": "Artis", - "artistAlbums": "Album", - "artistSingles": "Single & EP", - - "trackMetadataTitle": "Info Lagu", - "trackMetadataArtist": "Artis", - "trackMetadataAlbum": "Album", - "trackMetadataDuration": "Durasi", - "trackMetadataQuality": "Kualitas", - "trackMetadataPath": "Lokasi File", - "trackMetadataDownloadedAt": "Diunduh", - "trackMetadataService": "Layanan", - "trackMetadataPlay": "Putar", - "trackMetadataShare": "Bagikan", - "trackMetadataDelete": "Hapus", - "trackMetadataRedownload": "Unduh ulang", - "trackMetadataOpenFolder": "Buka Folder", - - "setupTitle": "Selamat Datang di SpotiFLAC", - "setupSubtitle": "Mari mulai pengaturan", - "setupStoragePermission": "Izin Penyimpanan", - "setupStoragePermissionSubtitle": "Diperlukan untuk menyimpan file unduhan", - "setupStoragePermissionGranted": "Izin diberikan", - "setupStoragePermissionDenied": "Izin ditolak", - "setupGrantPermission": "Berikan Izin", - "setupDownloadLocation": "Lokasi Unduhan", - "setupChooseFolder": "Pilih Folder", - "setupContinue": "Lanjutkan", - "setupSkip": "Lewati untuk sekarang", - - "dialogCancel": "Batal", - "dialogOk": "OK", - "dialogSave": "Simpan", - "dialogDelete": "Hapus", - "dialogRetry": "Coba Lagi", - "dialogClose": "Tutup", - "dialogYes": "Ya", - "dialogNo": "Tidak", - "dialogClear": "Hapus", - "dialogConfirm": "Konfirmasi", - "dialogDone": "Selesai", - - "dialogClearHistoryTitle": "Hapus Riwayat", - "dialogClearHistoryMessage": "Apakah Anda yakin ingin menghapus semua riwayat unduhan? Ini tidak dapat dibatalkan.", - "dialogDeleteSelectedTitle": "Hapus yang Dipilih", - "dialogDeleteSelectedMessage": "Hapus {count} {count, plural, =1{lagu} other{lagu}} dari riwayat?\n\nIni juga akan menghapus file dari penyimpanan.", - "dialogImportPlaylistTitle": "Impor Playlist", - "dialogImportPlaylistMessage": "Ditemukan {count} lagu di CSV. Tambahkan ke antrian unduhan?", - - "snackbarAddedToQueue": "Menambahkan \"{trackName}\" ke antrian", - "snackbarAddedTracksToQueue": "Menambahkan {count} lagu ke antrian", - "snackbarAlreadyDownloaded": "\"{trackName}\" sudah diunduh", - "snackbarHistoryCleared": "Riwayat dihapus", - "snackbarCredentialsSaved": "Kredensial disimpan", - "snackbarCredentialsCleared": "Kredensial dihapus", - "snackbarDeletedTracks": "Menghapus {count} {count, plural, =1{lagu} other{lagu}}", - "snackbarCannotOpenFile": "Tidak dapat membuka file: {error}", - "snackbarFillAllFields": "Harap isi semua field", - "snackbarViewQueue": "Lihat Antrian", - - "errorRateLimited": "Dibatasi", - "errorRateLimitedMessage": "Terlalu banyak permintaan. Harap tunggu sebentar sebelum mencari lagi.", - "errorFailedToLoad": "Gagal memuat {item}", - "errorNoTracksFound": "Tidak ada lagu ditemukan", - "errorMissingExtensionSource": "Tidak dapat memuat {item}: sumber ekstensi tidak ada", - - "statusQueued": "Mengantri", - "statusDownloading": "Mengunduh", - "statusFinalizing": "Menyelesaikan", - "statusCompleted": "Selesai", - "statusFailed": "Gagal", - "statusSkipped": "Dilewati", - "statusPaused": "Dijeda", - - "actionPause": "Jeda", - "actionResume": "Lanjutkan", - "actionCancel": "Batal", - "actionStop": "Hentikan", - "actionSelect": "Pilih", - "actionSelectAll": "Pilih Semua", - "actionDeselect": "Batal Pilih", - "actionPaste": "Tempel", - "actionImportCsv": "Impor CSV", - "actionRemoveCredentials": "Hapus Kredensial", - "actionSaveCredentials": "Simpan Kredensial", - - "selectionSelected": "{count} dipilih", - "selectionAllSelected": "Semua lagu dipilih", - "selectionTapToSelect": "Ketuk lagu untuk memilih", - "selectionDeleteTracks": "Hapus {count} {count, plural, =1{lagu} other{lagu}}", - "selectionSelectToDelete": "Pilih lagu untuk dihapus", - - "progressFetchingMetadata": "Mengambil metadata... {current}/{total}", - "progressReadingCsv": "Membaca CSV...", - - "searchSongs": "Lagu", - "searchArtists": "Artis", - "searchAlbums": "Album", - "searchPlaylists": "Playlist", - - "tooltipPlay": "Putar", - "tooltipCancel": "Batal", - "tooltipStop": "Hentikan", - "tooltipRetry": "Coba Lagi", - "tooltipRemove": "Hapus", - "tooltipClear": "Hapus", - "tooltipPaste": "Tempel", - - "filenameFormat": "Format Nama File", - "filenameFormatPreview": "Pratinjau: {preview}", - "folderOrganization": "Organisasi Folder", - "folderOrganizationNone": "Tanpa organisasi", - "folderOrganizationByArtist": "Berdasarkan Artis", - "folderOrganizationByAlbum": "Berdasarkan Album", - "folderOrganizationByArtistAlbum": "Artis/Album", - - "updateAvailable": "Pembaruan Tersedia", - "updateNewVersion": "Versi {version} tersedia", - "updateDownload": "Unduh", - "updateLater": "Nanti", - "updateChangelog": "Log Perubahan", - - "providerPriority": "Prioritas Provider", - "providerPrioritySubtitle": "Seret untuk mengatur ulang provider unduhan", - "metadataProviderPriority": "Prioritas Provider Metadata", - "metadataProviderPrioritySubtitle": "Urutan yang digunakan saat mengambil metadata lagu", - - "logTitle": "Log", - "logCopy": "Salin Log", - "logClear": "Hapus Log", - "logShare": "Bagikan Log", - "logEmpty": "Belum ada log", - "logCopied": "Log disalin ke clipboard", - - "credentialsTitle": "Kredensial Spotify", - "credentialsDescription": "Masukkan Client ID dan Secret Anda untuk menggunakan kuota aplikasi Spotify Anda sendiri.", - "credentialsClientId": "Client ID", - "credentialsClientIdHint": "Tempel Client ID", - "credentialsClientSecret": "Client Secret", - "credentialsClientSecretHint": "Tempel Client Secret", - - "channelStable": "Stabil", - "channelPreview": "Preview", - - "sectionSearchSource": "Sumber Pencarian", - "sectionDownload": "Unduhan", - "sectionPerformance": "Performa", - "sectionApp": "Aplikasi", - "sectionData": "Data", - "sectionDebug": "Debug", - "sectionService": "Layanan", - "sectionAudioQuality": "Kualitas Audio", - "sectionFileSettings": "Pengaturan File", - "sectionColor": "Warna", - "sectionTheme": "Tema", - "sectionLayout": "Tata Letak", - "sectionLanguage": "Bahasa", - - "appearanceLanguage": "Bahasa Aplikasi", - "appearanceLanguageSubtitle": "Pilih bahasa yang kamu inginkan", - "languageSystem": "Bawaan Sistem", - "languageEnglish": "English", - "languageIndonesian": "Bahasa Indonesia", - - "settingsAppearanceSubtitle": "Tema, warna, tampilan", - "settingsDownloadSubtitle": "Layanan, kualitas, format nama file", - "settingsOptionsSubtitle": "Fallback, lirik, cover art, pembaruan", - "settingsExtensionsSubtitle": "Kelola provider unduhan", - "settingsLogsSubtitle": "Lihat log aplikasi untuk debugging", - - "loadingSharedLink": "Memuat link yang dibagikan...", - "pressBackAgainToExit": "Tekan kembali sekali lagi untuk keluar", - - "artistReleases": "{count, plural, =1{1 rilis} other{{count} rilis}}", - "artistCompilations": "Kompilasi", - "artistPopular": "Populer", - "artistMonthlyListeners": "{count} pendengar bulanan", - - "tracksHeader": "Lagu", - "downloadAllCount": "Unduh Semua ({count})", - "tracksCount": "{count, plural, =1{1 lagu} other{{count} lagu}}", - - "setupStorageAccessRequired": "Akses Penyimpanan Diperlukan", - "setupStorageAccessMessage": "SpotiFLAC membutuhkan izin \"Akses semua file\" untuk menyimpan file musik ke folder pilihan Anda.", - "setupStorageAccessMessageAndroid11": "Android 11+ memerlukan izin \"Akses semua file\" untuk menyimpan file ke folder unduhan pilihan Anda.", - "setupOpenSettings": "Buka Pengaturan", - "setupPermissionDeniedMessage": "Izin ditolak. Harap berikan semua izin untuk melanjutkan.", - "setupPermissionRequired": "Izin {permissionType} Diperlukan", - "setupPermissionRequiredMessage": "Izin {permissionType} diperlukan untuk pengalaman terbaik. Anda dapat mengubahnya nanti di Pengaturan.", - "setupSelectDownloadFolder": "Pilih Folder Unduhan", - "setupUseDefaultFolder": "Gunakan Folder Default?", - "setupNoFolderSelected": "Tidak ada folder dipilih. Apakah Anda ingin menggunakan folder Musik default?", - "setupUseDefault": "Gunakan Default", - "setupDownloadLocationTitle": "Lokasi Unduhan", - "setupDownloadLocationIosMessage": "Di iOS, unduhan disimpan ke folder Documents aplikasi. Anda dapat mengaksesnya melalui aplikasi Files.", - "setupAppDocumentsFolder": "Folder Documents Aplikasi", - "setupAppDocumentsFolderSubtitle": "Direkomendasikan - dapat diakses via aplikasi Files", - "setupChooseFromFiles": "Pilih dari Files", - "setupChooseFromFilesSubtitle": "Pilih lokasi iCloud atau lainnya", - "setupIosEmptyFolderWarning": "Batasan iOS: Folder kosong tidak dapat dipilih. Pilih folder dengan minimal satu file.", - "setupDownloadInFlac": "Unduh lagu Spotify dalam format FLAC", - "setupStepStorage": "Penyimpanan", - "setupStepNotification": "Notifikasi", - "setupStepFolder": "Folder", - "setupStepSpotify": "Spotify", - "setupStepPermission": "Izin", - "setupStorageGranted": "Izin Penyimpanan Diberikan!", - "setupStorageRequired": "Izin Penyimpanan Diperlukan", - "setupStorageDescription": "SpotiFLAC membutuhkan izin penyimpanan untuk menyimpan file musik yang diunduh.", - "setupNotificationGranted": "Izin Notifikasi Diberikan!", - "setupNotificationEnable": "Aktifkan Notifikasi", - "setupNotificationDescription": "Dapatkan pemberitahuan saat unduhan selesai atau membutuhkan perhatian.", - "setupFolderSelected": "Folder Unduhan Dipilih!", - "setupFolderChoose": "Pilih Folder Unduhan", - "setupFolderDescription": "Pilih folder tempat musik yang diunduh akan disimpan.", - "setupChangeFolder": "Ubah Folder", - "setupSelectFolder": "Pilih Folder", - "setupSpotifyApiOptional": "Spotify API (Opsional)", - "setupSpotifyApiDescription": "Tambahkan kredensial Spotify API untuk hasil pencarian lebih baik dan akses ke konten eksklusif Spotify.", - "setupUseSpotifyApi": "Gunakan Spotify API", - "setupEnterCredentialsBelow": "Masukkan kredensial Anda di bawah", - "setupUsingDeezer": "Menggunakan Deezer (tidak perlu akun)", - "setupEnterClientId": "Masukkan Spotify Client ID", - "setupEnterClientSecret": "Masukkan Spotify Client Secret", - "setupGetFreeCredentials": "Dapatkan kredensial API gratis dari Spotify Developer Dashboard.", - "setupEnableNotifications": "Aktifkan Notifikasi", - - "dialogImport": "Impor", - "dialogDiscard": "Buang", - "dialogRemove": "Hapus", - "dialogUninstall": "Copot", - "dialogDiscardChanges": "Buang Perubahan?", - "dialogUnsavedChanges": "Anda memiliki perubahan yang belum disimpan. Apakah Anda ingin membuangnya?", - "dialogDownloadFailed": "Unduhan Gagal", - "dialogTrackLabel": "Lagu:", - "dialogArtistLabel": "Artis:", - "dialogErrorLabel": "Error:", - "dialogClearAll": "Hapus Semua", - "dialogClearAllDownloads": "Apakah Anda yakin ingin menghapus semua unduhan?", - "dialogRemoveFromDevice": "Hapus dari perangkat?", - "dialogRemoveExtension": "Hapus Ekstensi", - "dialogRemoveExtensionMessage": "Apakah Anda yakin ingin menghapus ekstensi ini? Tindakan ini tidak dapat dibatalkan.", - "dialogUninstallExtension": "Copot Ekstensi?", - "dialogUninstallExtensionMessage": "Apakah Anda yakin ingin menghapus {extensionName}?", - - "snackbarFailedToLoad": "Gagal memuat: {error}", - "snackbarUrlCopied": "URL {platform} disalin ke clipboard", - "snackbarFileNotFound": "File tidak ditemukan", - "snackbarSelectExtFile": "Harap pilih file .spotiflac-ext", - "snackbarProviderPrioritySaved": "Prioritas provider disimpan", - "snackbarMetadataProviderSaved": "Prioritas provider metadata disimpan", - "snackbarExtensionInstalled": "{extensionName} terpasang.", - "snackbarExtensionUpdated": "{extensionName} diperbarui.", - "snackbarFailedToInstall": "Gagal memasang ekstensi", - "snackbarFailedToUpdate": "Gagal memperbarui ekstensi", - - "storeFilterAll": "Semua", - "storeFilterMetadata": "Metadata", - "storeFilterDownload": "Unduhan", - "storeFilterUtility": "Utilitas", - "storeFilterLyrics": "Lirik", - "storeFilterIntegration": "Integrasi", - "storeClearFilters": "Hapus filter", - "storeNoResults": "Tidak ada ekstensi ditemukan", - - "extensionProviderPriority": "Prioritas Provider", - "extensionInstallButton": "Pasang Ekstensi", - "extensionDefaultProvider": "Default (Deezer/Spotify)", - "extensionDefaultProviderSubtitle": "Gunakan pencarian bawaan", - "extensionAuthor": "Pembuat", - "extensionId": "ID", - "extensionError": "Error", - "extensionCapabilities": "Kemampuan", - "extensionMetadataProvider": "Provider Metadata", - "extensionDownloadProvider": "Provider Unduhan", - "extensionLyricsProvider": "Provider Lirik", - "extensionUrlHandler": "Penanganan URL", - "extensionQualityOptions": "Opsi Kualitas", - "extensionPostProcessingHooks": "Hook Pasca-Pemrosesan", - "extensionPermissions": "Izin", - "extensionSettings": "Pengaturan", - "extensionRemoveButton": "Hapus Ekstensi", - "extensionUpdated": "Diperbarui", - "extensionMinAppVersion": "Versi App Minimum", - - "qualityFlacLossless": "FLAC Lossless", - "qualityFlacLosslessSubtitle": "16-bit / 44.1kHz", - "qualityHiResFlac": "Hi-Res FLAC", - "qualityHiResFlacSubtitle": "24-bit / hingga 96kHz", - "qualityHiResFlacMax": "Hi-Res FLAC Max", - "qualityHiResFlacMaxSubtitle": "24-bit / hingga 192kHz", - "qualityNote": "Kualitas sebenarnya tergantung ketersediaan lagu dari layanan", - - "downloadAskBeforeDownload": "Tanya Sebelum Unduh", - "downloadDirectory": "Direktori Unduhan", - "downloadSeparateSinglesFolder": "Folder Singles Terpisah", - "downloadAlbumFolderStructure": "Struktur Folder Album", - "downloadSaveFormat": "Simpan Format", - "downloadSelectService": "Pilih Layanan", - "downloadSelectQuality": "Pilih Kualitas", - "downloadFrom": "Unduh Dari", - "downloadDefaultQualityLabel": "Kualitas Default", - "downloadBestAvailable": "Terbaik tersedia", - - "folderNone": "Tidak ada", - "folderNoneSubtitle": "Simpan semua file langsung ke folder unduhan", - "folderArtist": "Artis", - "folderArtistSubtitle": "Nama Artis/namafile", - "folderAlbum": "Album", - "folderAlbumSubtitle": "Nama Album/namafile", - "folderArtistAlbum": "Artis/Album", - "folderArtistAlbumSubtitle": "Nama Artis/Nama Album/namafile", - - "serviceTidal": "Tidal", - "serviceQobuz": "Qobuz", - "serviceAmazon": "Amazon", - "serviceDeezer": "Deezer", - "serviceSpotify": "Spotify", - - "logSearchHint": "Cari log...", - "logFilterLevel": "Level", - "logFilterSection": "Filter", - "logShareLogs": "Bagikan log", - "logClearLogs": "Hapus log", - "logClearLogsTitle": "Hapus Log", - "logClearLogsMessage": "Apakah Anda yakin ingin menghapus semua log?", - "logIspBlocking": "PEMBLOKIRAN ISP TERDETEKSI", - "logRateLimited": "DIBATASI", - "logNetworkError": "ERROR JARINGAN", - "logTrackNotFound": "LAGU TIDAK DITEMUKAN", - - "appearanceAmoledDark": "AMOLED Gelap", - "appearanceAmoledDarkSubtitle": "Latar belakang hitam murni", - "appearanceChooseAccentColor": "Pilih Warna Aksen", - "appearanceChooseTheme": "Mode Tema", - - "updateStartingDownload": "Memulai unduhan...", - "updateDownloadFailed": "Unduhan gagal", - "updateFailedMessage": "Gagal mengunduh pembaruan", - "updateNewVersionReady": "Versi baru sudah siap", - "updateCurrent": "Saat ini", - "updateNew": "Baru", - "updateDownloading": "Mengunduh...", - "updateWhatsNew": "Yang Baru", - "updateDownloadInstall": "Unduh & Pasang", - "updateDontRemind": "Jangan ingatkan", - - "trackCopyFilePath": "Salin lokasi file", - "trackRemoveFromDevice": "Hapus dari perangkat", - "trackLoadLyrics": "Muat Lirik", - - "dateToday": "Hari ini", - "dateYesterday": "Kemarin", - "dateDaysAgo": "{count} hari lalu", - "dateWeeksAgo": "{count} minggu lalu", - "dateMonthsAgo": "{count} bulan lalu", - - "concurrentSequential": "Berurutan", - "concurrentParallel2": "2 Paralel", - "concurrentParallel3": "3 Paralel", - - "filenameAvailablePlaceholders": "Placeholder yang tersedia:", - "filenameHint": "{artist} - {title}", - - "tapToSeeError": "Ketuk untuk melihat detail error", - - "setupProceedToNextStep": "Anda dapat melanjutkan ke langkah berikutnya.", - "setupNotificationProgressDescription": "Anda akan menerima notifikasi progres unduhan.", - "setupNotificationBackgroundDescription": "Dapatkan notifikasi tentang progres dan penyelesaian unduhan. Ini membantu Anda melacak unduhan saat aplikasi di latar belakang.", - "setupSkipForNow": "Lewati untuk sekarang", - "setupBack": "Kembali", - "setupNext": "Lanjut", - "setupGetStarted": "Mulai", - "setupSkipAndStart": "Lewati & Mulai", - "setupAllowAccessToManageFiles": "Harap aktifkan \"Izinkan akses untuk mengelola semua file\" di layar berikutnya.", - "setupGetCredentialsFromSpotify": "Dapatkan kredensial dari developer.spotify.com", - - "trackMetadata": "Metadata", - "trackFileInfo": "Info File", - "trackLyrics": "Lirik", - "trackFileNotFound": "File tidak ditemukan", - "trackOpenInDeezer": "Buka di Deezer", - "trackOpenInSpotify": "Buka di Spotify", - "trackTrackName": "Nama lagu", - "trackArtist": "Artis", - "trackAlbumArtist": "Artis album", - "trackAlbum": "Album", - "trackTrackNumber": "Nomor lagu", - "trackDiscNumber": "Nomor disc", - "trackDuration": "Durasi", - "trackAudioQuality": "Kualitas audio", - "trackReleaseDate": "Tanggal rilis", - "trackDownloaded": "Diunduh", - "trackCopyLyrics": "Salin lirik", - "trackLyricsNotAvailable": "Lirik tidak tersedia untuk lagu ini", - "trackLyricsTimeout": "Permintaan timeout. Coba lagi nanti.", - "trackLyricsLoadFailed": "Gagal memuat lirik", - "trackCopiedToClipboard": "Disalin ke clipboard", - "trackDeleteConfirmTitle": "Hapus dari perangkat?", - "trackDeleteConfirmMessage": "Ini akan menghapus file unduhan secara permanen dan menghapusnya dari riwayat Anda.", - "trackCannotOpen": "Tidak dapat membuka: {message}", - - "logFilterBySeverity": "Filter log berdasarkan tingkat keparahan", - "logNoLogsYet": "Belum ada log", - "logNoLogsYetSubtitle": "Log akan muncul di sini saat Anda menggunakan aplikasi", - "logIssueSummary": "Ringkasan Masalah", - "logIspBlockingDescription": "ISP Anda mungkin memblokir akses ke layanan unduhan", - "logIspBlockingSuggestion": "Coba gunakan VPN atau ubah DNS ke 1.1.1.1 atau 8.8.8.8", - "logRateLimitedDescription": "Terlalu banyak permintaan ke layanan", - "logRateLimitedSuggestion": "Tunggu beberapa menit sebelum mencoba lagi", - "logNetworkErrorDescription": "Masalah koneksi terdeteksi", - "logNetworkErrorSuggestion": "Periksa koneksi internet Anda", - "logTrackNotFoundDescription": "Beberapa lagu tidak dapat ditemukan di layanan unduhan", - "logTrackNotFoundSuggestion": "Lagu mungkin tidak tersedia dalam kualitas lossless", - "logTotalErrors": "Total error: {count}", - "logAffected": "Terpengaruh: {domains}", - "logEntriesFiltered": "Entri ({count} difilter)", - "logEntries": "Entri ({count})", - - "extensionsProviderPrioritySection": "Prioritas Provider", - "extensionsInstalledSection": "Ekstensi Terpasang", - "extensionsNoExtensions": "Tidak ada ekstensi terpasang", - "extensionsNoExtensionsSubtitle": "Pasang file .spotiflac-ext untuk menambahkan provider baru", - "extensionsInstallButton": "Pasang Ekstensi", - "extensionsInfoTip": "Ekstensi dapat menambahkan provider metadata dan unduhan baru. Hanya pasang ekstensi dari sumber terpercaya.", - "extensionsInstalledSuccess": "Ekstensi berhasil dipasang", - "extensionsDownloadPriority": "Prioritas Unduhan", - "extensionsDownloadPrioritySubtitle": "Atur urutan layanan unduhan", - "extensionsNoDownloadProvider": "Tidak ada ekstensi dengan provider unduhan", - "extensionsMetadataPriority": "Prioritas Metadata", - "extensionsMetadataPrioritySubtitle": "Atur urutan sumber pencarian & metadata", - "extensionsNoMetadataProvider": "Tidak ada ekstensi dengan provider metadata", - "extensionsSearchProvider": "Provider Pencarian", - "extensionsNoCustomSearch": "Tidak ada ekstensi dengan pencarian kustom", - "extensionsSearchProviderDescription": "Pilih layanan yang digunakan untuk mencari lagu", - "extensionsCustomSearch": "Pencarian kustom", - "extensionsErrorLoading": "Error memuat ekstensi", - - "extensionCustomTrackMatching": "Pencocokan Lagu Kustom", - "extensionPostProcessing": "Pasca-Pemrosesan", - "extensionHooksAvailable": "{count} hook tersedia", - "extensionPatternsCount": "{count} pola", - "extensionStrategy": "Strategi: {strategy}", - - "aboutDoubleDouble": "DoubleDouble", - "aboutDoubleDoubleDesc": "API luar biasa untuk unduhan Amazon Music. Terima kasih sudah membuatnya gratis!", - "aboutDabMusic": "DAB Music", - "aboutDabMusicDesc": "API streaming Qobuz terbaik. Unduhan Hi-Res tidak akan mungkin tanpa ini!", - - "queueTitle": "Antrian Unduhan", - "queueClearAll": "Hapus Semua", - "queueClearAllMessage": "Apakah Anda yakin ingin menghapus semua unduhan?", - - "albumFolderArtistAlbum": "Artis / Album", - "albumFolderArtistAlbumSubtitle": "Albums/Nama Artis/Nama Album/", - "albumFolderArtistYearAlbum": "Artis / [Tahun] Album", - "albumFolderArtistYearAlbumSubtitle": "Albums/Nama Artis/[2005] Nama Album/", - "albumFolderAlbumOnly": "Album Saja", - "albumFolderAlbumOnlySubtitle": "Albums/Nama Album/", - "albumFolderYearAlbum": "[Tahun] Album", - "albumFolderYearAlbumSubtitle": "Albums/[2005] Nama Album/", - - "downloadedAlbumDeleteSelected": "Hapus yang Dipilih", - "downloadedAlbumDeleteMessage": "Hapus {count} {count, plural, =1{lagu} other{lagu}} dari album ini?\n\nIni juga akan menghapus file dari penyimpanan.", - - "utilityFunctions": "Fungsi Utilitas", - - "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!", - "aboutBinimumDesc": "Pembuat QQDL & HiFi API. Tanpa API ini, unduhan Tidal tidak akan ada!", - "aboutSachinsenalDesc": "Pembuat proyek HiFi asli. Fondasi dari integrasi Tidal!", + "@aboutLogoArtist": { + "description": "Role description for logo artist" + }, + "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" + }, + "aboutSupport": "Dukungan", + "@aboutSupport": { + "description": "Section for support/donation links" + }, "aboutBuyMeCoffee": "Belikan saya kopi", + "@aboutBuyMeCoffee": { + "description": "Donation link" + }, "aboutBuyMeCoffeeSubtitle": "Dukung pengembangan di Ko-fi", + "@aboutBuyMeCoffeeSubtitle": { + "description": "Subtitle for donation" + }, + "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" + }, + "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" + }, "aboutAppDescription": "Unduh lagu Spotify dalam kualitas lossless dari Tidal, Qobuz, dan Amazon Music.", - - "providerPriorityTitle": "Prioritas Provider", - "providerPriorityDescription": "Seret untuk mengatur ulang urutan provider unduhan. Aplikasi akan mencoba provider dari atas ke bawah saat mengunduh lagu.", - "providerPriorityInfo": "Jika lagu tidak tersedia di provider pertama, aplikasi akan otomatis mencoba yang berikutnya.", - "providerBuiltIn": "Bawaan", - "providerExtension": "Ekstensi", - - "metadataProviderPriorityTitle": "Prioritas Metadata", - "metadataProviderPriorityDescription": "Seret untuk mengatur ulang urutan provider metadata. Aplikasi akan mencoba provider dari atas ke bawah saat mencari lagu dan mengambil metadata.", - "metadataProviderPriorityInfo": "Deezer tidak memiliki batas rate dan direkomendasikan sebagai utama. Spotify mungkin membatasi rate setelah banyak permintaan.", - "metadataNoRateLimits": "Tidak ada batas rate", - "metadataMayRateLimit": "Mungkin dibatasi rate", - - "queueEmpty": "Tidak ada unduhan dalam antrian", - "queueEmptySubtitle": "Tambahkan lagu dari layar beranda", - "queueClearCompleted": "Hapus yang selesai", - "queueDownloadFailed": "Unduhan Gagal", - "queueTrackLabel": "Lagu:", - "queueArtistLabel": "Artis:", - "queueErrorLabel": "Error:", - "queueUnknownError": "Error tidak diketahui", - - "downloadedAlbumTracksHeader": "Lagu", - "downloadedAlbumDownloadedCount": "{count} diunduh", - "downloadedAlbumSelectedCount": "{count} dipilih", - "downloadedAlbumAllSelected": "Semua lagu dipilih", - "downloadedAlbumTapToSelect": "Ketuk lagu untuk memilih", - "downloadedAlbumDeleteCount": "Hapus {count} {count, plural, =1{lagu} other{lagu}}", - "downloadedAlbumSelectToDelete": "Pilih lagu untuk dihapus", - - "folderOrganizationDescription": "Atur file yang diunduh ke dalam folder", + "@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" + }, + "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?", + "@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" + } + } + }, + "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)" + } + } + }, + "errorNoTracksFound": "Tidak ada lagu ditemukan", + "@errorNoTracksFound": { + "description": "Error - search returned no results" + }, + "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" + }, + "filenameHint": "{artist} - {title}", + "@filenameHint": { + "description": "Default filename format hint" + }, + "folderOrganization": "Organisasi Folder", + "@folderOrganization": { + "description": "Setting title - folder structure" + }, "folderOrganizationNone": "Tidak ada", - "folderOrganizationNoneSubtitle": "Semua file di folder unduhan", + "@folderOrganizationNone": { + "description": "Folder option - flat structure" + }, "folderOrganizationByArtist": "Berdasarkan Artis", - "folderOrganizationByArtistSubtitle": "Folder terpisah untuk setiap artis", + "@folderOrganizationByArtist": { + "description": "Folder option - artist folders" + }, "folderOrganizationByAlbum": "Berdasarkan Album", - "folderOrganizationByAlbumSubtitle": "Folder terpisah untuk setiap 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" + }, + "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" + }, + "downloadAllCount": "Unduh Semua ({count})", + "@downloadAllCount": { + "description": "Download all button with count", + "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" + }, + "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" + }, + "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" + }, + "qualityNote": "Kualitas sebenarnya tergantung ketersediaan lagu dari layanan", + "@qualityNote": { + "description": "Note about quality availability" + }, + "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" + }, + "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" + }, + "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" + }, + "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" + }, + "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" + }, "recentPlaylistInfo": "Playlist: {name}", - "errorGeneric": "Error: {message}" -} + "@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" + } + } + } +} \ No newline at end of file From 7e1aca33a52adfffc8953273923ba89b7134b74c Mon Sep 17 00:00:00 2001 From: Zarz Eleutherius <42882290+zarzet@users.noreply.github.com> Date: Sun, 18 Jan 2026 03:42:29 +0700 Subject: [PATCH 10/14] New translations app_en.arb (Hindi) --- lib/l10n/arb/app_hi.arb | 68 ++++++++++++++++++++++++++++++++--------- 1 file changed, 53 insertions(+), 15 deletions(-) diff --git a/lib/l10n/arb/app_hi.arb b/lib/l10n/arb/app_hi.arb index 048dd1ed..d286a4ea 100644 --- a/lib/l10n/arb/app_hi.arb +++ b/lib/l10n/arb/app_hi.arb @@ -642,6 +642,20 @@ } } }, + "artistPopular": "Popular", + "@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" + } + } + }, "trackMetadataTitle": "Track Info", "@trackMetadataTitle": { "description": "Track metadata screen title" @@ -1851,27 +1865,15 @@ }, "sectionLanguage": "Language", "@sectionLanguage": { - "description": "Settings section header for language selection" + "description": "Settings section header for language" }, "appearanceLanguage": "App Language", "@appearanceLanguage": { - "description": "Setting title for language selection" + "description": "Language setting title" }, "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" + "description": "Language setting subtitle" }, "settingsAppearanceSubtitle": "Theme, colors, display", "@settingsAppearanceSubtitle": { @@ -2573,5 +2575,41 @@ "utilityFunctions": "Utility Functions", "@utilityFunctions": { "description": "Extension capability - utility functions" + }, + "recentTypeArtist": "Artist", + "@recentTypeArtist": { + "description": "Recent access item type - artist" + }, + "recentTypeAlbum": "Album", + "@recentTypeAlbum": { + "description": "Recent access item type - album" + }, + "recentTypeSong": "Song", + "@recentTypeSong": { + "description": "Recent access item type - song/track" + }, + "recentTypePlaylist": "Playlist", + "@recentTypePlaylist": { + "description": "Recent access item type - playlist" + }, + "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" + } + } } } \ No newline at end of file From 12db11d559d5b991fe809b29b46d630f00a46d81 Mon Sep 17 00:00:00 2001 From: Zarz Eleutherius <42882290+zarzet@users.noreply.github.com> Date: Mon, 19 Jan 2026 00:29:33 +0700 Subject: [PATCH 11/14] New translations app_en.arb (Spanish) --- lib/l10n/arb/app_es-ES.arb | 1124 ++++++++++++++++++------------------ 1 file changed, 562 insertions(+), 562 deletions(-) diff --git a/lib/l10n/arb/app_es-ES.arb b/lib/l10n/arb/app_es-ES.arb index cf4def73..c5d40717 100644 --- a/lib/l10n/arb/app_es-ES.arb +++ b/lib/l10n/arb/app_es-ES.arb @@ -5,35 +5,35 @@ "@appName": { "description": "App name - DO NOT TRANSLATE" }, - "appDescription": "Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.", + "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": "Home", + "navHome": "Inicio", "@navHome": { "description": "Bottom navigation - Home tab" }, - "navHistory": "History", + "navHistory": "Historial", "@navHistory": { "description": "Bottom navigation - History tab" }, - "navSettings": "Settings", + "navSettings": "Ajustes", "@navSettings": { "description": "Bottom navigation - Settings tab" }, - "navStore": "Store", + "navStore": "Tienda", "@navStore": { "description": "Bottom navigation - Extension store tab" }, - "homeTitle": "Home", + "homeTitle": "Inicio", "@homeTitle": { "description": "Home screen title" }, - "homeSearchHint": "Paste Spotify URL or search...", + "homeSearchHint": "Pegar URL Spotify o buscar...", "@homeSearchHint": { "description": "Placeholder text in search box" }, - "homeSearchHintExtension": "Search with {extensionName}...", + "homeSearchHintExtension": "Buscar con {extensionName}...", "@homeSearchHintExtension": { "description": "Placeholder when extension search is active", "placeholders": { @@ -43,23 +43,23 @@ } } }, - "homeSubtitle": "Paste a Spotify link or search by name", + "homeSubtitle": "Pegar enlace de Spotify o buscar por nombre", "@homeSubtitle": { "description": "Subtitle shown below search box" }, - "homeSupports": "Supports: Track, Album, Playlist, Artist URLs", + "homeSupports": "Soportes: Pista, Álbum, Lista de reproducción, URLs de Artistas", "@homeSupports": { "description": "Info text about supported URL types" }, - "homeRecent": "Recent", + "homeRecent": "Recientes", "@homeRecent": { "description": "Section header for recent searches" }, - "historyTitle": "History", + "historyTitle": "Historial", "@historyTitle": { "description": "History screen title" }, - "historyDownloading": "Downloading ({count})", + "historyDownloading": "Descargando ({count})", "@historyDownloading": { "description": "Tab showing active downloads count", "placeholders": { @@ -69,23 +69,23 @@ } } }, - "historyDownloaded": "Downloaded", + "historyDownloaded": "Descargado", "@historyDownloaded": { "description": "Tab showing completed downloads" }, - "historyFilterAll": "All", + "historyFilterAll": "Todo", "@historyFilterAll": { "description": "Filter chip - show all items" }, - "historyFilterAlbums": "Albums", + "historyFilterAlbums": "Álbumes", "@historyFilterAlbums": { "description": "Filter chip - show albums only" }, - "historyFilterSingles": "Singles", + "historyFilterSingles": "Pistas", "@historyFilterSingles": { "description": "Filter chip - show singles only" }, - "historyTracksCount": "{count, plural, =1{1 track} other{{count} tracks}}", + "historyTracksCount": "{count, plural, one {}=1{1 pista} other{{count} pistas}}", "@historyTracksCount": { "description": "Track count with plural form", "placeholders": { @@ -94,7 +94,7 @@ } } }, - "historyAlbumsCount": "{count, plural, =1{1 album} other{{count} albums}}", + "historyAlbumsCount": "{count, plural, one {}=1{1 álbum} other{{count} álbumes}}", "@historyAlbumsCount": { "description": "Album count with plural form", "placeholders": { @@ -103,107 +103,107 @@ } } }, - "historyNoDownloads": "No download history", + "historyNoDownloads": "No hay historial de descargas", "@historyNoDownloads": { "description": "Empty state title" }, - "historyNoDownloadsSubtitle": "Downloaded tracks will appear here", + "historyNoDownloadsSubtitle": "Las pistas descargadas aparecerán aquí", "@historyNoDownloadsSubtitle": { "description": "Empty state subtitle" }, - "historyNoAlbums": "No album downloads", + "historyNoAlbums": "No hay descargas de álbum", "@historyNoAlbums": { "description": "Empty state when filtering albums" }, - "historyNoAlbumsSubtitle": "Download multiple tracks from an album to see them here", + "historyNoAlbumsSubtitle": "Descargar múltiples pistas de un álbum para verlas aquí", "@historyNoAlbumsSubtitle": { "description": "Empty state subtitle for albums filter" }, - "historyNoSingles": "No single downloads", + "historyNoSingles": "No hay descargas", "@historyNoSingles": { "description": "Empty state when filtering singles" }, - "historyNoSinglesSubtitle": "Single track downloads will appear here", + "historyNoSinglesSubtitle": "Las descargas de una sola pista aparecerán aquí", "@historyNoSinglesSubtitle": { "description": "Empty state subtitle for singles filter" }, - "settingsTitle": "Settings", + "settingsTitle": "Ajustes", "@settingsTitle": { "description": "Settings screen title" }, - "settingsDownload": "Download", + "settingsDownload": "Descargar", "@settingsDownload": { "description": "Settings section - download options" }, - "settingsAppearance": "Appearance", + "settingsAppearance": "Apariencia", "@settingsAppearance": { "description": "Settings section - visual customization" }, - "settingsOptions": "Options", + "settingsOptions": "Opciones", "@settingsOptions": { "description": "Settings section - app options" }, - "settingsExtensions": "Extensions", + "settingsExtensions": "Extensiones", "@settingsExtensions": { "description": "Settings section - extension management" }, - "settingsAbout": "About", + "settingsAbout": "Acerca de", "@settingsAbout": { "description": "Settings section - app info" }, - "downloadTitle": "Download", + "downloadTitle": "Descargar", "@downloadTitle": { "description": "Download settings page title" }, - "downloadLocation": "Download Location", + "downloadLocation": "Ubicación de descarga", "@downloadLocation": { "description": "Setting for download folder" }, - "downloadLocationSubtitle": "Choose where to save files", + "downloadLocationSubtitle": "Elija dónde guardar los archivos", "@downloadLocationSubtitle": { "description": "Subtitle for download location" }, - "downloadLocationDefault": "Default location", + "downloadLocationDefault": "Ubicación predeterminada", "@downloadLocationDefault": { "description": "Shown when using default folder" }, - "downloadDefaultService": "Default Service", + "downloadDefaultService": "Servicio por defecto", "@downloadDefaultService": { "description": "Setting for preferred download service (Tidal/Qobuz/Amazon)" }, - "downloadDefaultServiceSubtitle": "Service used for downloads", + "downloadDefaultServiceSubtitle": "Servicio usado para descargas", "@downloadDefaultServiceSubtitle": { "description": "Subtitle for default service" }, - "downloadDefaultQuality": "Default Quality", + "downloadDefaultQuality": "Calidad por defecto", "@downloadDefaultQuality": { "description": "Setting for audio quality" }, - "downloadAskQuality": "Ask Quality Before Download", + "downloadAskQuality": "Preguntar calidad antes de descargar", "@downloadAskQuality": { "description": "Toggle to show quality picker" }, - "downloadAskQualitySubtitle": "Show quality picker for each download", + "downloadAskQualitySubtitle": "Mostrar selector de calidad para cada descarga", "@downloadAskQualitySubtitle": { "description": "Subtitle for ask quality toggle" }, - "downloadFilenameFormat": "Filename Format", + "downloadFilenameFormat": "Formato del nombre del archivo", "@downloadFilenameFormat": { "description": "Setting for output filename pattern" }, - "downloadFolderOrganization": "Folder Organization", + "downloadFolderOrganization": "Organización de carpetas", "@downloadFolderOrganization": { "description": "Setting for folder structure" }, - "downloadSeparateSingles": "Separate Singles", + "downloadSeparateSingles": "Separar Pistas", "@downloadSeparateSingles": { "description": "Toggle to separate single tracks" }, - "downloadSeparateSinglesSubtitle": "Put single tracks in a separate folder", + "downloadSeparateSinglesSubtitle": "Colocar pistas individuales en una carpeta separada", "@downloadSeparateSinglesSubtitle": { "description": "Subtitle for separate singles toggle" }, - "qualityBest": "Best Available", + "qualityBest": "Mejor disponible", "@qualityBest": { "description": "Audio quality option - highest available" }, @@ -219,67 +219,67 @@ "@quality128": { "description": "Audio quality option - 128kbps MP3" }, - "appearanceTitle": "Appearance", + "appearanceTitle": "Apariencia", "@appearanceTitle": { "description": "Appearance settings page title" }, - "appearanceTheme": "Theme", + "appearanceTheme": "Tema", "@appearanceTheme": { "description": "Theme mode setting" }, - "appearanceThemeSystem": "System", + "appearanceThemeSystem": "Sistema", "@appearanceThemeSystem": { "description": "Follow system theme" }, - "appearanceThemeLight": "Light", + "appearanceThemeLight": "Claro", "@appearanceThemeLight": { "description": "Light theme" }, - "appearanceThemeDark": "Dark", + "appearanceThemeDark": "Oscuro", "@appearanceThemeDark": { "description": "Dark theme" }, - "appearanceDynamicColor": "Dynamic Color", + "appearanceDynamicColor": "Color dinámico", "@appearanceDynamicColor": { "description": "Material You dynamic colors" }, - "appearanceDynamicColorSubtitle": "Use colors from your wallpaper", + "appearanceDynamicColorSubtitle": "Usar colores de tu fondo de pantalla", "@appearanceDynamicColorSubtitle": { "description": "Subtitle for dynamic color" }, - "appearanceAccentColor": "Accent Color", + "appearanceAccentColor": "Color Secundario", "@appearanceAccentColor": { "description": "Custom accent color picker" }, - "appearanceHistoryView": "History View", + "appearanceHistoryView": "Vista de Historial", "@appearanceHistoryView": { "description": "Layout style for history" }, - "appearanceHistoryViewList": "List", + "appearanceHistoryViewList": "Lista", "@appearanceHistoryViewList": { "description": "List layout option" }, - "appearanceHistoryViewGrid": "Grid", + "appearanceHistoryViewGrid": "Cuadrícula", "@appearanceHistoryViewGrid": { "description": "Grid layout option" }, - "optionsTitle": "Options", + "optionsTitle": "Opciones", "@optionsTitle": { "description": "Options settings page title" }, - "optionsSearchSource": "Search Source", + "optionsSearchSource": "Buscar Fuente", "@optionsSearchSource": { "description": "Section for search provider settings" }, - "optionsPrimaryProvider": "Primary Provider", + "optionsPrimaryProvider": "Proveedor Principal", "@optionsPrimaryProvider": { "description": "Main search provider setting" }, - "optionsPrimaryProviderSubtitle": "Service used when searching by track name.", + "optionsPrimaryProviderSubtitle": "Servicio usado al buscar por nombre de la pista.", "@optionsPrimaryProviderSubtitle": { "description": "Subtitle for primary provider" }, - "optionsUsingExtension": "Using extension: {extensionName}", + "optionsUsingExtension": "Usando la extensión: {extensionName}", "@optionsUsingExtension": { "description": "Shows active extension name", "placeholders": { @@ -288,55 +288,55 @@ } } }, - "optionsSwitchBack": "Tap Deezer or Spotify to switch back from extension", + "optionsSwitchBack": "Toque Deezer o Spotify para volver desde la extensión", "@optionsSwitchBack": { "description": "Hint to switch back to built-in providers" }, - "optionsAutoFallback": "Auto Fallback", + "optionsAutoFallback": "Alternativa automática", "@optionsAutoFallback": { "description": "Auto-retry with other services" }, - "optionsAutoFallbackSubtitle": "Try other services if download fails", + "optionsAutoFallbackSubtitle": "Pruebe otros servicios si falla la descarga", "@optionsAutoFallbackSubtitle": { "description": "Subtitle for auto fallback" }, - "optionsUseExtensionProviders": "Use Extension Providers", + "optionsUseExtensionProviders": "Usar proveedores de extensiones", "@optionsUseExtensionProviders": { "description": "Enable extension download providers" }, - "optionsUseExtensionProvidersOn": "Extensions will be tried first", + "optionsUseExtensionProvidersOn": "Las extensiones serán probadas primero", "@optionsUseExtensionProvidersOn": { "description": "Status when extension providers enabled" }, - "optionsUseExtensionProvidersOff": "Using built-in providers only", + "optionsUseExtensionProvidersOff": "Utilizando sólo proveedores integrados", "@optionsUseExtensionProvidersOff": { "description": "Status when extension providers disabled" }, - "optionsEmbedLyrics": "Embed Lyrics", + "optionsEmbedLyrics": "Incrustar Letras", "@optionsEmbedLyrics": { "description": "Embed lyrics in audio files" }, - "optionsEmbedLyricsSubtitle": "Embed synced lyrics into FLAC files", + "optionsEmbedLyricsSubtitle": "Insertar letras sincronizadas en archivos FLAC", "@optionsEmbedLyricsSubtitle": { "description": "Subtitle for embed lyrics" }, - "optionsMaxQualityCover": "Max Quality Cover", + "optionsMaxQualityCover": "Carátula de calidad máxima", "@optionsMaxQualityCover": { "description": "Download highest quality album art" }, - "optionsMaxQualityCoverSubtitle": "Download highest resolution cover art", + "optionsMaxQualityCoverSubtitle": "Descargar carátula de resolución máxima", "@optionsMaxQualityCoverSubtitle": { "description": "Subtitle for max quality cover" }, - "optionsConcurrentDownloads": "Concurrent Downloads", + "optionsConcurrentDownloads": "Descargas Simultáneas", "@optionsConcurrentDownloads": { "description": "Number of parallel downloads" }, - "optionsConcurrentSequential": "Sequential (1 at a time)", + "optionsConcurrentSequential": "Secuencial (1 a la vez)", "@optionsConcurrentSequential": { "description": "Download one at a time" }, - "optionsConcurrentParallel": "{count} parallel downloads", + "optionsConcurrentParallel": "{count} descargas paralelas", "@optionsConcurrentParallel": { "description": "Multiple parallel downloads", "placeholders": { @@ -345,67 +345,67 @@ } } }, - "optionsConcurrentWarning": "Parallel downloads may trigger rate limiting", + "optionsConcurrentWarning": "Las descargas paralelas pueden activar la limitación de velocidad", "@optionsConcurrentWarning": { "description": "Warning about rate limits" }, - "optionsExtensionStore": "Extension Store", + "optionsExtensionStore": "Tienda de extensiones", "@optionsExtensionStore": { "description": "Show/hide store tab" }, - "optionsExtensionStoreSubtitle": "Show Store tab in navigation", + "optionsExtensionStoreSubtitle": "Mostrar pestaña de tienda en la navegación", "@optionsExtensionStoreSubtitle": { "description": "Subtitle for extension store toggle" }, - "optionsCheckUpdates": "Check for Updates", + "optionsCheckUpdates": "Comprobar actualizaciones", "@optionsCheckUpdates": { "description": "Auto update check toggle" }, - "optionsCheckUpdatesSubtitle": "Notify when new version is available", + "optionsCheckUpdatesSubtitle": "Notificar cuando una nueva versión esté disponible", "@optionsCheckUpdatesSubtitle": { "description": "Subtitle for update check" }, - "optionsUpdateChannel": "Update Channel", + "optionsUpdateChannel": "Tipo de actualizaciones", "@optionsUpdateChannel": { "description": "Stable vs preview releases" }, - "optionsUpdateChannelStable": "Stable releases only", + "optionsUpdateChannelStable": "Sólo versiones estables", "@optionsUpdateChannelStable": { "description": "Only stable updates" }, - "optionsUpdateChannelPreview": "Get preview releases", + "optionsUpdateChannelPreview": "Versión preliminar", "@optionsUpdateChannelPreview": { "description": "Include beta/preview updates" }, - "optionsUpdateChannelWarning": "Preview may contain bugs or incomplete features", + "optionsUpdateChannelWarning": "La Versión preliminar puede contener errores o características incompletas", "@optionsUpdateChannelWarning": { "description": "Warning about preview channel" }, - "optionsClearHistory": "Clear Download History", + "optionsClearHistory": "Borrar el historial de descargas", "@optionsClearHistory": { "description": "Delete all download history" }, - "optionsClearHistorySubtitle": "Remove all downloaded tracks from history", + "optionsClearHistorySubtitle": "Eliminar todas las pistas descargadas del historial", "@optionsClearHistorySubtitle": { "description": "Subtitle for clear history" }, - "optionsDetailedLogging": "Detailed Logging", + "optionsDetailedLogging": "Registro detallado", "@optionsDetailedLogging": { "description": "Enable verbose logs for debugging" }, - "optionsDetailedLoggingOn": "Detailed logs are being recorded", + "optionsDetailedLoggingOn": "Registros detallados están siendo registrados", "@optionsDetailedLoggingOn": { "description": "Status when logging enabled" }, - "optionsDetailedLoggingOff": "Enable for bug reports", + "optionsDetailedLoggingOff": "Habilitar para informes de errores", "@optionsDetailedLoggingOff": { "description": "Status when logging disabled" }, - "optionsSpotifyCredentials": "Spotify Credentials", + "optionsSpotifyCredentials": "Credenciales de Spotify", "@optionsSpotifyCredentials": { "description": "Spotify API credentials setting" }, - "optionsSpotifyCredentialsConfigured": "Client ID: {clientId}...", + "optionsSpotifyCredentialsConfigured": "ID de cliente: {clientId}...", "@optionsSpotifyCredentialsConfigured": { "description": "Shows configured client ID preview", "placeholders": { @@ -414,39 +414,39 @@ } } }, - "optionsSpotifyCredentialsRequired": "Required - tap to configure", + "optionsSpotifyCredentialsRequired": "Requerido - toque para configurar", "@optionsSpotifyCredentialsRequired": { "description": "Prompt to set up credentials" }, - "optionsSpotifyWarning": "Spotify requires your own API credentials. Get them free from developer.spotify.com", + "optionsSpotifyWarning": "Spotify requiere tus propias credenciales API. Obténgalas gratis de developer.spotify.com", "@optionsSpotifyWarning": { "description": "Info about Spotify API requirement" }, - "extensionsTitle": "Extensions", + "extensionsTitle": "Extensiones", "@extensionsTitle": { "description": "Extensions page title" }, - "extensionsInstalled": "Installed Extensions", + "extensionsInstalled": "Extensiones instaladas", "@extensionsInstalled": { "description": "Section header for installed extensions" }, - "extensionsNone": "No extensions installed", + "extensionsNone": "No hay extensiones instaladas", "@extensionsNone": { "description": "Empty state title" }, - "extensionsNoneSubtitle": "Install extensions from the Store tab", + "extensionsNoneSubtitle": "Instalar extensiones desde la pestaña Tienda", "@extensionsNoneSubtitle": { "description": "Empty state subtitle" }, - "extensionsEnabled": "Enabled", + "extensionsEnabled": "Habilitado", "@extensionsEnabled": { "description": "Extension status - active" }, - "extensionsDisabled": "Disabled", + "extensionsDisabled": "Deshabilitado", "@extensionsDisabled": { "description": "Extension status - inactive" }, - "extensionsVersion": "Version {version}", + "extensionsVersion": "Versión {version}", "@extensionsVersion": { "description": "Extension version display", "placeholders": { @@ -455,7 +455,7 @@ } } }, - "extensionsAuthor": "by {author}", + "extensionsAuthor": "por {author}", "@extensionsAuthor": { "description": "Extension author credit", "placeholders": { @@ -464,111 +464,111 @@ } } }, - "extensionsUninstall": "Uninstall", + "extensionsUninstall": "Desinstalar", "@extensionsUninstall": { "description": "Uninstall extension button" }, - "extensionsSetAsSearch": "Set as Search Provider", + "extensionsSetAsSearch": "Establecer como proveedor de búsqueda", "@extensionsSetAsSearch": { "description": "Use extension for search" }, - "storeTitle": "Extension Store", + "storeTitle": "Tienda de extensiones", "@storeTitle": { "description": "Store screen title" }, - "storeSearch": "Search extensions...", + "storeSearch": "Buscar extensiones...", "@storeSearch": { "description": "Store search placeholder" }, - "storeInstall": "Install", + "storeInstall": "Instalar", "@storeInstall": { "description": "Install extension button" }, - "storeInstalled": "Installed", + "storeInstalled": "Instalada", "@storeInstalled": { "description": "Already installed badge" }, - "storeUpdate": "Update", + "storeUpdate": "Actualizar", "@storeUpdate": { "description": "Update available button" }, - "aboutTitle": "About", + "aboutTitle": "Acerca de", "@aboutTitle": { "description": "About page title" }, - "aboutContributors": "Contributors", + "aboutContributors": "Colaboradores", "@aboutContributors": { "description": "Section for contributors" }, - "aboutMobileDeveloper": "Mobile version developer", + "aboutMobileDeveloper": "Desarrollador de versiones móviles", "@aboutMobileDeveloper": { "description": "Role description for mobile dev" }, - "aboutOriginalCreator": "Creator of the original SpotiFLAC", + "aboutOriginalCreator": "Creador original de SpotiFLAC", "@aboutOriginalCreator": { "description": "Role description for original creator" }, - "aboutLogoArtist": "The talented artist who created our beautiful app logo!", + "aboutLogoArtist": "¡El talentoso artista que creó nuestro hermoso logo!", "@aboutLogoArtist": { "description": "Role description for logo artist" }, - "aboutSpecialThanks": "Special Thanks", + "aboutSpecialThanks": "Agradecimientos especiales", "@aboutSpecialThanks": { "description": "Section for special thanks" }, - "aboutLinks": "Links", + "aboutLinks": "Enlaces", "@aboutLinks": { "description": "Section for external links" }, - "aboutMobileSource": "Mobile source code", + "aboutMobileSource": "Código fuente móvil", "@aboutMobileSource": { "description": "Link to mobile GitHub repo" }, - "aboutPCSource": "PC source code", + "aboutPCSource": "Código fuente de PC", "@aboutPCSource": { "description": "Link to PC GitHub repo" }, - "aboutReportIssue": "Report an issue", + "aboutReportIssue": "Reportar un problema", "@aboutReportIssue": { "description": "Link to report bugs" }, - "aboutReportIssueSubtitle": "Report any problems you encounter", + "aboutReportIssueSubtitle": "Reporta cualquier problema que encuentres", "@aboutReportIssueSubtitle": { "description": "Subtitle for report issue" }, - "aboutFeatureRequest": "Feature request", + "aboutFeatureRequest": "Sugerir una función", "@aboutFeatureRequest": { "description": "Link to suggest features" }, - "aboutFeatureRequestSubtitle": "Suggest new features for the app", + "aboutFeatureRequestSubtitle": "Sugerir nuevas funciones para la aplicación", "@aboutFeatureRequestSubtitle": { "description": "Subtitle for feature request" }, - "aboutSupport": "Support", + "aboutSupport": "Soporte", "@aboutSupport": { "description": "Section for support/donation links" }, - "aboutBuyMeCoffee": "Buy me a coffee", + "aboutBuyMeCoffee": "Invítame a un café", "@aboutBuyMeCoffee": { "description": "Donation link" }, - "aboutBuyMeCoffeeSubtitle": "Support development on Ko-fi", + "aboutBuyMeCoffeeSubtitle": "Apoyar el desarrollo en Ko-fi", "@aboutBuyMeCoffeeSubtitle": { "description": "Subtitle for donation" }, - "aboutApp": "App", + "aboutApp": "Aplicación", "@aboutApp": { "description": "Section for app info" }, - "aboutVersion": "Version", + "aboutVersion": "Versión", "@aboutVersion": { "description": "Version info label" }, - "aboutBinimumDesc": "The creator of QQDL & HiFi API. Without this API, Tidal downloads wouldn't exist!", + "aboutBinimumDesc": "El creador de la API QQDL & Hi-Fi. ¡Sin esta API, las descargas de Tidal no existiría!", "@aboutBinimumDesc": { "description": "Credit description for binimum" }, - "aboutSachinsenalDesc": "The original HiFi project creator. The foundation of Tidal integration!", + "aboutSachinsenalDesc": "El creador original del proyecto Hi-Fi. ¡La base de la integración de Tidal!", "@aboutSachinsenalDesc": { "description": "Credit description for sachinsenal0x64" }, @@ -576,27 +576,27 @@ "@aboutDoubleDouble": { "description": "Name of Amazon API service - DO NOT TRANSLATE" }, - "aboutDoubleDoubleDesc": "Amazing API for Amazon Music downloads. Thank you for making it free!", + "aboutDoubleDoubleDesc": "API increible para descargas de Amazon Music. ¡Gracias por hacerla gratis!", "@aboutDoubleDoubleDesc": { "description": "Credit for DoubleDouble API" }, - "aboutDabMusic": "DAB Music", + "aboutDabMusic": "Música DAB", "@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": "La mejor API de streaming de Qobuz. ¡Las descargas de Hi-Res no serían posibles sin esto!", "@aboutDabMusicDesc": { "description": "Credit for DAB Music API" }, - "aboutAppDescription": "Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.", + "aboutAppDescription": "Descarga pistas de Spotify con calidad sin pérdida de Tidal, Qobuz y Amazon Music.", "@aboutAppDescription": { "description": "App description in header card" }, - "albumTitle": "Album", + "albumTitle": "Álbum", "@albumTitle": { "description": "Album screen title" }, - "albumTracks": "{count, plural, =1{1 track} other{{count} tracks}}", + "albumTracks": "{count, plural, one {}=1{1 pista} other{{count} pistas}}", "@albumTracks": { "description": "Album track count", "placeholders": { @@ -605,35 +605,35 @@ } } }, - "albumDownloadAll": "Download All", + "albumDownloadAll": "Descargar Todo", "@albumDownloadAll": { "description": "Button to download all tracks" }, - "albumDownloadRemaining": "Download Remaining", + "albumDownloadRemaining": "Descargas Restantes", "@albumDownloadRemaining": { "description": "Button to download remaining tracks" }, - "playlistTitle": "Playlist", + "playlistTitle": "Lista de reproducción", "@playlistTitle": { "description": "Playlist screen title" }, - "artistTitle": "Artist", + "artistTitle": "Artista", "@artistTitle": { "description": "Artist screen title" }, - "artistAlbums": "Albums", + "artistAlbums": "Álbumes", "@artistAlbums": { "description": "Section header for artist albums" }, - "artistSingles": "Singles & EPs", + "artistSingles": "Pistas y EPs", "@artistSingles": { "description": "Section header for singles/EPs" }, - "artistCompilations": "Compilations", + "artistCompilations": "Compilaciones", "@artistCompilations": { "description": "Section header for compilations" }, - "artistReleases": "{count, plural, =1{1 release} other{{count} releases}}", + "artistReleases": "{count, plural, one {}=1{1 lanzamiento} other{{count} lanzamientos}}", "@artistReleases": { "description": "Artist release count", "placeholders": { @@ -642,11 +642,11 @@ } } }, - "artistPopular": "Popular", + "artistPopular": "Populares", "@artistPopular": { "description": "Section header for popular/top tracks" }, - "artistMonthlyListeners": "{count} monthly listeners", + "artistMonthlyListeners": "{count} oyentes mensuales", "@artistMonthlyListeners": { "description": "Monthly listener count display", "placeholders": { @@ -656,123 +656,123 @@ } } }, - "trackMetadataTitle": "Track Info", + "trackMetadataTitle": "Información de pista", "@trackMetadataTitle": { "description": "Track metadata screen title" }, - "trackMetadataArtist": "Artist", + "trackMetadataArtist": "Artista", "@trackMetadataArtist": { "description": "Metadata field - artist name" }, - "trackMetadataAlbum": "Album", + "trackMetadataAlbum": "Álbum", "@trackMetadataAlbum": { "description": "Metadata field - album name" }, - "trackMetadataDuration": "Duration", + "trackMetadataDuration": "Duración", "@trackMetadataDuration": { "description": "Metadata field - track length" }, - "trackMetadataQuality": "Quality", + "trackMetadataQuality": "Calidad", "@trackMetadataQuality": { "description": "Metadata field - audio quality" }, - "trackMetadataPath": "File Path", + "trackMetadataPath": "Ruta del archivo", "@trackMetadataPath": { "description": "Metadata field - file location" }, - "trackMetadataDownloadedAt": "Downloaded", + "trackMetadataDownloadedAt": "Descargado", "@trackMetadataDownloadedAt": { "description": "Metadata field - download date" }, - "trackMetadataService": "Service", + "trackMetadataService": "Servicio", "@trackMetadataService": { "description": "Metadata field - download service used" }, - "trackMetadataPlay": "Play", + "trackMetadataPlay": "Reproducir", "@trackMetadataPlay": { "description": "Action button - play track" }, - "trackMetadataShare": "Share", + "trackMetadataShare": "Compartir", "@trackMetadataShare": { "description": "Action button - share track" }, - "trackMetadataDelete": "Delete", + "trackMetadataDelete": "Eliminar", "@trackMetadataDelete": { "description": "Action button - delete track" }, - "trackMetadataRedownload": "Re-download", + "trackMetadataRedownload": "Volver a descargar", "@trackMetadataRedownload": { "description": "Action button - download again" }, - "trackMetadataOpenFolder": "Open Folder", + "trackMetadataOpenFolder": "Abrir carpeta", "@trackMetadataOpenFolder": { "description": "Action button - open containing folder" }, - "setupTitle": "Welcome to SpotiFLAC", + "setupTitle": "Bienvenido a SpotiFLAC", "@setupTitle": { "description": "Setup wizard title" }, - "setupSubtitle": "Let's get you started", + "setupSubtitle": "Comencemos", "@setupSubtitle": { "description": "Setup wizard subtitle" }, - "setupStoragePermission": "Storage Permission", + "setupStoragePermission": "Permiso de almacenamiento", "@setupStoragePermission": { "description": "Storage permission step title" }, - "setupStoragePermissionSubtitle": "Required to save downloaded files", + "setupStoragePermissionSubtitle": "Necesario para guardar los archivos descargados", "@setupStoragePermissionSubtitle": { "description": "Explanation for storage permission" }, - "setupStoragePermissionGranted": "Permission granted", + "setupStoragePermissionGranted": "Permiso aprobado", "@setupStoragePermissionGranted": { "description": "Status when permission granted" }, - "setupStoragePermissionDenied": "Permission denied", + "setupStoragePermissionDenied": "Permiso denegado", "@setupStoragePermissionDenied": { "description": "Status when permission denied" }, - "setupGrantPermission": "Grant Permission", + "setupGrantPermission": "Conceder permiso", "@setupGrantPermission": { "description": "Button to request permission" }, - "setupDownloadLocation": "Download Location", + "setupDownloadLocation": "Ubicación de descarga", "@setupDownloadLocation": { "description": "Download folder step title" }, - "setupChooseFolder": "Choose Folder", + "setupChooseFolder": "Seleccionar Carpeta", "@setupChooseFolder": { "description": "Button to pick folder" }, - "setupContinue": "Continue", + "setupContinue": "Continuar", "@setupContinue": { "description": "Continue to next step button" }, - "setupSkip": "Skip for now", + "setupSkip": "Omitir por ahora", "@setupSkip": { "description": "Skip current step button" }, - "setupStorageAccessRequired": "Storage Access Required", + "setupStorageAccessRequired": "Acceso al almacenamiento requerido", "@setupStorageAccessRequired": { "description": "Title when storage access needed" }, - "setupStorageAccessMessage": "SpotiFLAC needs \"All files access\" permission to save music files to your chosen folder.", + "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+ requires \"All files access\" permission to save files to your chosen download folder.", + "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" }, - "setupOpenSettings": "Open Settings", + "setupOpenSettings": "Abrir ajustes", "@setupOpenSettings": { "description": "Button to open system settings" }, - "setupPermissionDeniedMessage": "Permission denied. Please grant all permissions to continue.", + "setupPermissionDeniedMessage": "Permiso denegado. Por favor, conceda todos los permisos para continuar.", "@setupPermissionDeniedMessage": { "description": "Error when permission denied" }, - "setupPermissionRequired": "{permissionType} Permission Required", + "setupPermissionRequired": "Permiso de {permissionType} requerido", "@setupPermissionRequired": { "description": "Generic permission required title", "placeholders": { @@ -782,7 +782,7 @@ } } }, - "setupPermissionRequiredMessage": "{permissionType} permission is required for the best experience. You can change this later in Settings.", + "setupPermissionRequiredMessage": "Se requiere un permiso {permissionType} para la mejor experiencia. Puedes cambiar esto más tarde en ajustes.", "@setupPermissionRequiredMessage": { "description": "Generic permission required message", "placeholders": { @@ -791,63 +791,63 @@ } } }, - "setupSelectDownloadFolder": "Select Download Folder", + "setupSelectDownloadFolder": "Seleccionar carpeta de descarga", "@setupSelectDownloadFolder": { "description": "Folder selection step title" }, - "setupUseDefaultFolder": "Use Default Folder?", + "setupUseDefaultFolder": "¿Usar carpeta por defecto?", "@setupUseDefaultFolder": { "description": "Dialog title for default folder" }, - "setupNoFolderSelected": "No folder selected. Would you like to use the default Music folder?", + "setupNoFolderSelected": "No se ha seleccionado ninguna carpeta. ¿Desea utilizar la carpeta por defecto?", "@setupNoFolderSelected": { "description": "Prompt when no folder selected" }, - "setupUseDefault": "Use Default", + "setupUseDefault": "Usar por defecto", "@setupUseDefault": { "description": "Button to use default folder" }, - "setupDownloadLocationTitle": "Download Location", + "setupDownloadLocationTitle": "Ubicación de descarga", "@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": "En iOS, las descargas se guardan en la carpeta de documentos de la aplicación. Puede acceder a ellas desde la aplicación Archivos.", "@setupDownloadLocationIosMessage": { "description": "iOS-specific folder info" }, - "setupAppDocumentsFolder": "App Documents Folder", + "setupAppDocumentsFolder": "Carpeta de documentos de App", "@setupAppDocumentsFolder": { "description": "iOS documents folder option" }, - "setupAppDocumentsFolderSubtitle": "Recommended - accessible via Files app", + "setupAppDocumentsFolderSubtitle": "Recomendado - accesible desde la aplicación Archivos", "@setupAppDocumentsFolderSubtitle": { "description": "Subtitle for documents folder" }, - "setupChooseFromFiles": "Choose from Files", + "setupChooseFromFiles": "Elegir de archivos", "@setupChooseFromFiles": { "description": "iOS file picker option" }, - "setupChooseFromFilesSubtitle": "Select iCloud or other location", + "setupChooseFromFilesSubtitle": "Seleccione iCloud u otra ubicación", "@setupChooseFromFilesSubtitle": { "description": "Subtitle for file picker" }, - "setupIosEmptyFolderWarning": "iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.", + "setupIosEmptyFolderWarning": "Limitación de iOS: No se pueden seleccionar carpetas vacías. Elige una carpeta con al menos un archivo.", "@setupIosEmptyFolderWarning": { "description": "iOS folder selection warning" }, - "setupDownloadInFlac": "Download Spotify tracks in FLAC", + "setupDownloadInFlac": "Descargar pistas de Spotify en FLAC", "@setupDownloadInFlac": { "description": "App tagline in setup" }, - "setupStepStorage": "Storage", + "setupStepStorage": "Almacenamiento", "@setupStepStorage": { "description": "Setup step indicator - storage" }, - "setupStepNotification": "Notification", + "setupStepNotification": "Notificación", "@setupStepNotification": { "description": "Setup step indicator - notification" }, - "setupStepFolder": "Folder", + "setupStepFolder": "Carpeta", "@setupStepFolder": { "description": "Setup step indicator - folder" }, @@ -855,155 +855,155 @@ "@setupStepSpotify": { "description": "Setup step indicator - Spotify API" }, - "setupStepPermission": "Permission", + "setupStepPermission": "Permiso", "@setupStepPermission": { "description": "Setup step indicator - permission" }, - "setupStorageGranted": "Storage Permission Granted!", + "setupStorageGranted": "¡Permiso de almacenamiento concedido!", "@setupStorageGranted": { "description": "Success message for storage permission" }, - "setupStorageRequired": "Storage Permission Required", + "setupStorageRequired": "Permiso de almacenamiento requerido", "@setupStorageRequired": { "description": "Title when storage permission needed" }, - "setupStorageDescription": "SpotiFLAC needs storage permission to save your downloaded music files.", + "setupStorageDescription": "SpotiFLAC necesita permiso de almacenamiento para guardar sus archivos de música descargados.", "@setupStorageDescription": { "description": "Explanation for storage permission" }, - "setupNotificationGranted": "Notification Permission Granted!", + "setupNotificationGranted": "¡Acceso a las notificaciones permitido!", "@setupNotificationGranted": { "description": "Success message for notification permission" }, - "setupNotificationEnable": "Enable Notifications", + "setupNotificationEnable": "Activar notificaciones", "@setupNotificationEnable": { "description": "Button to enable notifications" }, - "setupNotificationDescription": "Get notified when downloads complete or require attention.", + "setupNotificationDescription": "Recibe notificaciones cuando las descargas completen o requieran atención.", "@setupNotificationDescription": { "description": "Explanation for notifications" }, - "setupFolderSelected": "Download Folder Selected!", + "setupFolderSelected": "¡Carpeta de descarga seleccionada!", "@setupFolderSelected": { "description": "Success message for folder selection" }, - "setupFolderChoose": "Choose Download Folder", + "setupFolderChoose": "Cambiar carpeta de descargas", "@setupFolderChoose": { "description": "Button to choose folder" }, - "setupFolderDescription": "Select a folder where your downloaded music will be saved.", + "setupFolderDescription": "Seleccione una carpeta donde se guardará la música descargada.", "@setupFolderDescription": { "description": "Explanation for folder selection" }, - "setupChangeFolder": "Change Folder", + "setupChangeFolder": "Cambiar carpeta", "@setupChangeFolder": { "description": "Button to change selected folder" }, - "setupSelectFolder": "Select Folder", + "setupSelectFolder": "Seleccionar Carpeta", "@setupSelectFolder": { "description": "Button to select folder" }, - "setupSpotifyApiOptional": "Spotify API (Optional)", + "setupSpotifyApiOptional": "API de Spotify (opcional)", "@setupSpotifyApiOptional": { "description": "Spotify API step title" }, - "setupSpotifyApiDescription": "Add your Spotify API credentials for better search results and access to Spotify-exclusive content.", + "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": "Use Spotify API", + "setupUseSpotifyApi": "Usar API de Spotify", "@setupUseSpotifyApi": { "description": "Toggle to enable Spotify API" }, - "setupEnterCredentialsBelow": "Enter your credentials below", + "setupEnterCredentialsBelow": "Ingresa tus credenciales a continuación", "@setupEnterCredentialsBelow": { "description": "Prompt to enter credentials" }, - "setupUsingDeezer": "Using Deezer (no account needed)", + "setupUsingDeezer": "Usando Deezer (no se necesita cuenta)", "@setupUsingDeezer": { "description": "Status when using Deezer" }, - "setupEnterClientId": "Enter Spotify Client ID", + "setupEnterClientId": "Introduzca el ID de cliente de Spotify", "@setupEnterClientId": { "description": "Placeholder for client ID field" }, - "setupEnterClientSecret": "Enter Spotify Client Secret", + "setupEnterClientSecret": "Ingresa el Client Secret de Spotify", "@setupEnterClientSecret": { "description": "Placeholder for client secret field" }, - "setupGetFreeCredentials": "Get your free API credentials from the Spotify Developer Dashboard.", + "setupGetFreeCredentials": "Obtén tus credenciales gratuitas de la API desde el Spotify Developer Dashboard.", "@setupGetFreeCredentials": { "description": "Info about getting Spotify credentials" }, - "setupEnableNotifications": "Enable Notifications", + "setupEnableNotifications": "Activar notificaciones", "@setupEnableNotifications": { "description": "Button to enable notifications" }, - "setupProceedToNextStep": "You can now proceed to the next step.", + "setupProceedToNextStep": "Ahora puedes continuar con el siguiente paso.", "@setupProceedToNextStep": { "description": "Message after completing a step" }, - "setupNotificationProgressDescription": "You will receive download progress notifications.", + "setupNotificationProgressDescription": "Recibirás notificaciones de progreso de descargas.", "@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": "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" }, - "setupSkipForNow": "Skip for now", + "setupSkipForNow": "Omitir por ahora", "@setupSkipForNow": { "description": "Skip button text" }, - "setupBack": "Back", + "setupBack": "Atrás", "@setupBack": { "description": "Back button text" }, - "setupNext": "Next", + "setupNext": "Siguiente", "@setupNext": { "description": "Next button text" }, - "setupGetStarted": "Get Started", + "setupGetStarted": "Empezar", "@setupGetStarted": { "description": "Final setup button" }, - "setupSkipAndStart": "Skip & Start", + "setupSkipAndStart": "Saltar y empezar", "@setupSkipAndStart": { "description": "Skip setup and start app" }, - "setupAllowAccessToManageFiles": "Please enable \"Allow access to manage all files\" in the next screen.", + "setupAllowAccessToManageFiles": "Por favor, activa \"Permitir el acceso para gestionar todos los archivos\" en la siguiente pantalla.", "@setupAllowAccessToManageFiles": { "description": "Instruction for file access permission" }, - "setupGetCredentialsFromSpotify": "Get credentials from developer.spotify.com", + "setupGetCredentialsFromSpotify": "Obtener credenciales de developer.spotify.com", "@setupGetCredentialsFromSpotify": { "description": "Link text for Spotify developer portal" }, - "dialogCancel": "Cancel", + "dialogCancel": "Cancelar", "@dialogCancel": { "description": "Dialog button - cancel action" }, - "dialogOk": "OK", + "dialogOk": "Aceptar", "@dialogOk": { "description": "Dialog button - confirm/acknowledge" }, - "dialogSave": "Save", + "dialogSave": "Guardar", "@dialogSave": { "description": "Dialog button - save changes" }, - "dialogDelete": "Delete", + "dialogDelete": "Eliminar", "@dialogDelete": { "description": "Dialog button - delete item" }, - "dialogRetry": "Retry", + "dialogRetry": "Volver a intentar", "@dialogRetry": { "description": "Dialog button - retry action" }, - "dialogClose": "Close", + "dialogClose": "Cerrar", "@dialogClose": { "description": "Dialog button - close dialog" }, - "dialogYes": "Yes", + "dialogYes": "Sí", "@dialogYes": { "description": "Dialog button - confirm yes" }, @@ -1011,51 +1011,51 @@ "@dialogNo": { "description": "Dialog button - confirm no" }, - "dialogClear": "Clear", + "dialogClear": "Borrar", "@dialogClear": { "description": "Dialog button - clear items" }, - "dialogConfirm": "Confirm", + "dialogConfirm": "Confirmar", "@dialogConfirm": { "description": "Dialog button - confirm action" }, - "dialogDone": "Done", + "dialogDone": "Hecho", "@dialogDone": { "description": "Dialog button - action completed" }, - "dialogImport": "Import", + "dialogImport": "Importar", "@dialogImport": { "description": "Dialog button - import data" }, - "dialogDiscard": "Discard", + "dialogDiscard": "Descartar", "@dialogDiscard": { "description": "Dialog button - discard changes" }, - "dialogRemove": "Remove", + "dialogRemove": "Eliminar", "@dialogRemove": { "description": "Dialog button - remove item" }, - "dialogUninstall": "Uninstall", + "dialogUninstall": "Desinstalar", "@dialogUninstall": { "description": "Dialog button - uninstall extension" }, - "dialogDiscardChanges": "Discard Changes?", + "dialogDiscardChanges": "¿Descartar cambios?", "@dialogDiscardChanges": { "description": "Dialog title - unsaved changes warning" }, - "dialogUnsavedChanges": "You have unsaved changes. Do you want to discard them?", + "dialogUnsavedChanges": "Tienes cambios sin guardar. ¿Quieres descartarlos?", "@dialogUnsavedChanges": { "description": "Dialog message - unsaved changes" }, - "dialogDownloadFailed": "Download Failed", + "dialogDownloadFailed": "Descarga fallida", "@dialogDownloadFailed": { "description": "Dialog title - download error" }, - "dialogTrackLabel": "Track:", + "dialogTrackLabel": "Pista:", "@dialogTrackLabel": { "description": "Label for track name in error dialog" }, - "dialogArtistLabel": "Artist:", + "dialogArtistLabel": "Artista:", "@dialogArtistLabel": { "description": "Label for artist name in error dialog" }, @@ -1063,31 +1063,31 @@ "@dialogErrorLabel": { "description": "Label for error message" }, - "dialogClearAll": "Clear All", + "dialogClearAll": "Eliminar todo", "@dialogClearAll": { "description": "Dialog title - clear all items" }, - "dialogClearAllDownloads": "Are you sure you want to clear all downloads?", + "dialogClearAllDownloads": "¿Estás seguro de que quieres borrar todas las descargas?", "@dialogClearAllDownloads": { "description": "Dialog message - clear downloads confirmation" }, - "dialogRemoveFromDevice": "Remove from device?", + "dialogRemoveFromDevice": "¿Eliminar del dispositivo?", "@dialogRemoveFromDevice": { "description": "Dialog title - delete file confirmation" }, - "dialogRemoveExtension": "Remove Extension", + "dialogRemoveExtension": "Eliminar extensión", "@dialogRemoveExtension": { "description": "Dialog title - uninstall extension" }, - "dialogRemoveExtensionMessage": "Are you sure you want to remove this extension? This cannot be undone.", + "dialogRemoveExtensionMessage": "¿Estás seguro de que quieres eliminar esta extensión? Esto no se puede deshacer.", "@dialogRemoveExtensionMessage": { "description": "Dialog message - uninstall confirmation" }, - "dialogUninstallExtension": "Uninstall Extension?", + "dialogUninstallExtension": "¿Desinstalar extensión?", "@dialogUninstallExtension": { "description": "Dialog title - uninstall extension" }, - "dialogUninstallExtensionMessage": "Are you sure you want to remove {extensionName}?", + "dialogUninstallExtensionMessage": "¿Estás seguro de que quieres eliminar {extensionName}?", "@dialogUninstallExtensionMessage": { "description": "Dialog message - uninstall specific extension", "placeholders": { @@ -1096,19 +1096,19 @@ } } }, - "dialogClearHistoryTitle": "Clear History", + "dialogClearHistoryTitle": "Borrar historial", "@dialogClearHistoryTitle": { "description": "Dialog title - clear download history" }, - "dialogClearHistoryMessage": "Are you sure you want to clear all download history? This cannot be undone.", + "dialogClearHistoryMessage": "¿Estás seguro de que quieres borrar todo el historial de descargas? Esta acción no se puede deshacer.", "@dialogClearHistoryMessage": { "description": "Dialog message - clear history confirmation" }, - "dialogDeleteSelectedTitle": "Delete Selected", + "dialogDeleteSelectedTitle": "Borrar Seleccionados", "@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": "¿Eliminar {count} {count, plural, one {}=1{pista} other{pistas}} del historial?\n\nEsto también eliminará los archivos del almacenamiento.", "@dialogDeleteSelectedMessage": { "description": "Dialog message - delete selected tracks", "placeholders": { @@ -1117,11 +1117,11 @@ } } }, - "dialogImportPlaylistTitle": "Import Playlist", + "dialogImportPlaylistTitle": "Importar lista de reproducción", "@dialogImportPlaylistTitle": { "description": "Dialog title - import CSV playlist" }, - "dialogImportPlaylistMessage": "Found {count} tracks in CSV. Add them to download queue?", + "dialogImportPlaylistMessage": "Se han encontrado pistas {count} en CSV. ¿Añadirlas para descargar la cola?", "@dialogImportPlaylistMessage": { "description": "Dialog message - import playlist confirmation", "placeholders": { @@ -1130,7 +1130,7 @@ } } }, - "snackbarAddedToQueue": "Added \"{trackName}\" to queue", + "snackbarAddedToQueue": "Añadido \"{trackName}\" a la cola", "@snackbarAddedToQueue": { "description": "Snackbar - track added to download queue", "placeholders": { @@ -1139,7 +1139,7 @@ } } }, - "snackbarAddedTracksToQueue": "Added {count} tracks to queue", + "snackbarAddedTracksToQueue": "Añadidas pistas {count} a la cola", "@snackbarAddedTracksToQueue": { "description": "Snackbar - multiple tracks added to queue", "placeholders": { @@ -1148,7 +1148,7 @@ } } }, - "snackbarAlreadyDownloaded": "\"{trackName}\" already downloaded", + "snackbarAlreadyDownloaded": "\"{trackName}\" ya descargado", "@snackbarAlreadyDownloaded": { "description": "Snackbar - track already exists", "placeholders": { @@ -1157,19 +1157,19 @@ } } }, - "snackbarHistoryCleared": "History cleared", + "snackbarHistoryCleared": "Historial borrado", "@snackbarHistoryCleared": { "description": "Snackbar - history deleted" }, - "snackbarCredentialsSaved": "Credentials saved", + "snackbarCredentialsSaved": "Credenciales guardadas", "@snackbarCredentialsSaved": { "description": "Snackbar - Spotify credentials saved" }, - "snackbarCredentialsCleared": "Credentials cleared", + "snackbarCredentialsCleared": "Credenciales borradas", "@snackbarCredentialsCleared": { "description": "Snackbar - Spotify credentials removed" }, - "snackbarDeletedTracks": "Deleted {count} {count, plural, =1{track} other{tracks}}", + "snackbarDeletedTracks": "Eliminado {count} {count, plural, one {}=1{pista} other{pistas}}", "@snackbarDeletedTracks": { "description": "Snackbar - tracks deleted", "placeholders": { @@ -1178,7 +1178,7 @@ } } }, - "snackbarCannotOpenFile": "Cannot open file: {error}", + "snackbarCannotOpenFile": "No se puede abrir el archivo: {error}", "@snackbarCannotOpenFile": { "description": "Snackbar - file open error", "placeholders": { @@ -1187,15 +1187,15 @@ } } }, - "snackbarFillAllFields": "Please fill all fields", + "snackbarFillAllFields": "Por favor, completa todos los campos", "@snackbarFillAllFields": { "description": "Snackbar - validation error" }, - "snackbarViewQueue": "View Queue", + "snackbarViewQueue": "Ver cola", "@snackbarViewQueue": { "description": "Snackbar action - view download queue" }, - "snackbarFailedToLoad": "Failed to load: {error}", + "snackbarFailedToLoad": "Error al cargar: {error}", "@snackbarFailedToLoad": { "description": "Snackbar - loading error", "placeholders": { @@ -1204,7 +1204,7 @@ } } }, - "snackbarUrlCopied": "{platform} URL copied to clipboard", + "snackbarUrlCopied": "URL {platform} copiada al portapapeles", "@snackbarUrlCopied": { "description": "Snackbar - URL copied", "placeholders": { @@ -1214,23 +1214,23 @@ } } }, - "snackbarFileNotFound": "File not found", + "snackbarFileNotFound": "Archivo no encontrado", "@snackbarFileNotFound": { "description": "Snackbar - file doesn't exist" }, - "snackbarSelectExtFile": "Please select a .spotiflac-ext file", + "snackbarSelectExtFile": "Por favor, seleccione un archivo .spotiflac-ext", "@snackbarSelectExtFile": { "description": "Snackbar - wrong file type selected" }, - "snackbarProviderPrioritySaved": "Provider priority saved", + "snackbarProviderPrioritySaved": "Prioridad de proveedor guardada", "@snackbarProviderPrioritySaved": { "description": "Snackbar - provider order saved" }, - "snackbarMetadataProviderSaved": "Metadata provider priority saved", + "snackbarMetadataProviderSaved": "Prioridad de proveedor de metadatos guardada", "@snackbarMetadataProviderSaved": { "description": "Snackbar - metadata provider order saved" }, - "snackbarExtensionInstalled": "{extensionName} installed.", + "snackbarExtensionInstalled": "{extensionName} instalado.", "@snackbarExtensionInstalled": { "description": "Snackbar - extension installed successfully", "placeholders": { @@ -1239,7 +1239,7 @@ } } }, - "snackbarExtensionUpdated": "{extensionName} updated.", + "snackbarExtensionUpdated": "{extensionName} actualizada.", "@snackbarExtensionUpdated": { "description": "Snackbar - extension updated successfully", "placeholders": { @@ -1248,23 +1248,23 @@ } } }, - "snackbarFailedToInstall": "Failed to install extension", + "snackbarFailedToInstall": "Fallo al instalar la extensión", "@snackbarFailedToInstall": { "description": "Snackbar - extension install error" }, - "snackbarFailedToUpdate": "Failed to update extension", + "snackbarFailedToUpdate": "Error al actualizar la extensión", "@snackbarFailedToUpdate": { "description": "Snackbar - extension update error" }, - "errorRateLimited": "Rate Limited", + "errorRateLimited": "Límite Excedido", "@errorRateLimited": { "description": "Error title - too many requests" }, - "errorRateLimitedMessage": "Too many requests. Please wait a moment before searching again.", + "errorRateLimitedMessage": "Demasiadas solicitudes. Por favor, espere un momento antes de buscar de nuevo.", "@errorRateLimitedMessage": { "description": "Error message - rate limit explanation" }, - "errorFailedToLoad": "Failed to load {item}", + "errorFailedToLoad": "Error al cargar {item}", "@errorFailedToLoad": { "description": "Error message - loading failed", "placeholders": { @@ -1274,11 +1274,11 @@ } } }, - "errorNoTracksFound": "No tracks found", + "errorNoTracksFound": "No se encontraron pistas", "@errorNoTracksFound": { "description": "Error - search returned no results" }, - "errorMissingExtensionSource": "Cannot load {item}: missing extension source", + "errorMissingExtensionSource": "No se puede cargar {item}: falta una fuente de extensión", "@errorMissingExtensionSource": { "description": "Error - extension source not available", "placeholders": { @@ -1287,79 +1287,79 @@ } } }, - "statusQueued": "Queued", + "statusQueued": "En cola", "@statusQueued": { "description": "Download status - waiting in queue" }, - "statusDownloading": "Downloading", + "statusDownloading": "Descargando", "@statusDownloading": { "description": "Download status - in progress" }, - "statusFinalizing": "Finalizing", + "statusFinalizing": "Finalizando", "@statusFinalizing": { "description": "Download status - writing metadata" }, - "statusCompleted": "Completed", + "statusCompleted": "Completado", "@statusCompleted": { "description": "Download status - finished" }, - "statusFailed": "Failed", + "statusFailed": "Error", "@statusFailed": { "description": "Download status - error occurred" }, - "statusSkipped": "Skipped", + "statusSkipped": "Omitido", "@statusSkipped": { "description": "Download status - already exists" }, - "statusPaused": "Paused", + "statusPaused": "Pausado", "@statusPaused": { "description": "Download status - paused" }, - "actionPause": "Pause", + "actionPause": "Pausar", "@actionPause": { "description": "Action button - pause download" }, - "actionResume": "Resume", + "actionResume": "Reanudar", "@actionResume": { "description": "Action button - resume download" }, - "actionCancel": "Cancel", + "actionCancel": "Cancelar", "@actionCancel": { "description": "Action button - cancel operation" }, - "actionStop": "Stop", + "actionStop": "Detener", "@actionStop": { "description": "Action button - stop operation" }, - "actionSelect": "Select", + "actionSelect": "Seleccionar", "@actionSelect": { "description": "Action button - enter selection mode" }, - "actionSelectAll": "Select All", + "actionSelectAll": "Seleccionar Todo", "@actionSelectAll": { "description": "Action button - select all items" }, - "actionDeselect": "Deselect", + "actionDeselect": "Deseleccionar", "@actionDeselect": { "description": "Action button - deselect all" }, - "actionPaste": "Paste", + "actionPaste": "Pegar", "@actionPaste": { "description": "Action button - paste from clipboard" }, - "actionImportCsv": "Import CSV", + "actionImportCsv": "Importar CSV", "@actionImportCsv": { "description": "Action button - import CSV file" }, - "actionRemoveCredentials": "Remove Credentials", + "actionRemoveCredentials": "Eliminar credenciales", "@actionRemoveCredentials": { "description": "Action button - delete Spotify credentials" }, - "actionSaveCredentials": "Save Credentials", + "actionSaveCredentials": "Guardar credenciales", "@actionSaveCredentials": { "description": "Action button - save Spotify credentials" }, - "selectionSelected": "{count} selected", + "selectionSelected": "{count} seleccionado", "@selectionSelected": { "description": "Selection count indicator", "placeholders": { @@ -1368,15 +1368,15 @@ } } }, - "selectionAllSelected": "All tracks selected", + "selectionAllSelected": "Todas las pistas seleccionadas", "@selectionAllSelected": { "description": "Status - all items selected" }, - "selectionTapToSelect": "Tap tracks to select", + "selectionTapToSelect": "Toca las pistas para seleccionar", "@selectionTapToSelect": { "description": "Hint - how to select items" }, - "selectionDeleteTracks": "Delete {count} {count, plural, =1{track} other{tracks}}", + "selectionDeleteTracks": "¡Eliminar {count} {count, plural, one {}=1{pista} other{pistas}}", "@selectionDeleteTracks": { "description": "Delete button with count", "placeholders": { @@ -1385,11 +1385,11 @@ } } }, - "selectionSelectToDelete": "Select tracks to delete", + "selectionSelectToDelete": "Seleccionar pistas a eliminar", "@selectionSelectToDelete": { "description": "Placeholder when nothing selected" }, - "progressFetchingMetadata": "Fetching metadata... {current}/{total}", + "progressFetchingMetadata": "Obteniendo metadatos... {current}/{total}", "@progressFetchingMetadata": { "description": "Progress indicator - loading track info", "placeholders": { @@ -1401,59 +1401,59 @@ } } }, - "progressReadingCsv": "Reading CSV...", + "progressReadingCsv": "Leyendo CSV...", "@progressReadingCsv": { "description": "Progress indicator - parsing CSV file" }, - "searchSongs": "Songs", + "searchSongs": "Canciones", "@searchSongs": { "description": "Search result category - songs" }, - "searchArtists": "Artists", + "searchArtists": "Artistas", "@searchArtists": { "description": "Search result category - artists" }, - "searchAlbums": "Albums", + "searchAlbums": "Álbumes", "@searchAlbums": { "description": "Search result category - albums" }, - "searchPlaylists": "Playlists", + "searchPlaylists": "Listas de reproducción", "@searchPlaylists": { "description": "Search result category - playlists" }, - "tooltipPlay": "Play", + "tooltipPlay": "Reproducir", "@tooltipPlay": { "description": "Tooltip - play button" }, - "tooltipCancel": "Cancel", + "tooltipCancel": "Cancelar", "@tooltipCancel": { "description": "Tooltip - cancel button" }, - "tooltipStop": "Stop", + "tooltipStop": "Detener", "@tooltipStop": { "description": "Tooltip - stop button" }, - "tooltipRetry": "Retry", + "tooltipRetry": "Volver a intentar", "@tooltipRetry": { "description": "Tooltip - retry button" }, - "tooltipRemove": "Remove", + "tooltipRemove": "Eliminar", "@tooltipRemove": { "description": "Tooltip - remove button" }, - "tooltipClear": "Clear", + "tooltipClear": "Borrar", "@tooltipClear": { "description": "Tooltip - clear button" }, - "tooltipPaste": "Paste", + "tooltipPaste": "Pegar", "@tooltipPaste": { "description": "Tooltip - paste button" }, - "filenameFormat": "Filename Format", + "filenameFormat": "Formato del nombre del archivo", "@filenameFormat": { "description": "Setting title - filename pattern" }, - "filenameFormatPreview": "Preview: {preview}", + "filenameFormatPreview": "Vista previa: {preview}", "@filenameFormatPreview": { "description": "Preview of filename pattern", "placeholders": { @@ -1462,7 +1462,7 @@ } } }, - "filenameAvailablePlaceholders": "Available placeholders:", + "filenameAvailablePlaceholders": "Marcadores disponibles:", "@filenameAvailablePlaceholders": { "description": "Label for placeholder list" }, @@ -1470,51 +1470,51 @@ "@filenameHint": { "description": "Default filename format hint" }, - "folderOrganization": "Folder Organization", + "folderOrganization": "Organización de carpetas", "@folderOrganization": { "description": "Setting title - folder structure" }, - "folderOrganizationNone": "No organization", + "folderOrganizationNone": "Ninguna organización", "@folderOrganizationNone": { "description": "Folder option - flat structure" }, - "folderOrganizationByArtist": "By Artist", + "folderOrganizationByArtist": "Por Artista", "@folderOrganizationByArtist": { "description": "Folder option - artist folders" }, - "folderOrganizationByAlbum": "By Album", + "folderOrganizationByAlbum": "Por Álbum", "@folderOrganizationByAlbum": { "description": "Folder option - album folders" }, - "folderOrganizationByArtistAlbum": "Artist/Album", + "folderOrganizationByArtistAlbum": "Artista/Álbum", "@folderOrganizationByArtistAlbum": { "description": "Folder option - nested folders" }, - "folderOrganizationDescription": "Organize downloaded files into folders", + "folderOrganizationDescription": "Organizar los archivos descargados en carpetas", "@folderOrganizationDescription": { "description": "Folder organization sheet description" }, - "folderOrganizationNoneSubtitle": "All files in download folder", + "folderOrganizationNoneSubtitle": "Todos los archivos de la carpeta de descargas", "@folderOrganizationNoneSubtitle": { "description": "Subtitle for no organization option" }, - "folderOrganizationByArtistSubtitle": "Separate folder for each artist", + "folderOrganizationByArtistSubtitle": "Carpeta separada para cada artista", "@folderOrganizationByArtistSubtitle": { "description": "Subtitle for artist folder option" }, - "folderOrganizationByAlbumSubtitle": "Separate folder for each album", + "folderOrganizationByAlbumSubtitle": "Carpeta separada para cada artista", "@folderOrganizationByAlbumSubtitle": { "description": "Subtitle for album folder option" }, - "folderOrganizationByArtistAlbumSubtitle": "Nested folders for artist and album", + "folderOrganizationByArtistAlbumSubtitle": "Carpetas organizadas por artista y álbum", "@folderOrganizationByArtistAlbumSubtitle": { "description": "Subtitle for nested folder option" }, - "updateAvailable": "Update Available", + "updateAvailable": "Actualización Disponible", "@updateAvailable": { "description": "Update dialog title" }, - "updateNewVersion": "Version {version} is available", + "updateNewVersion": "Versión {version} está disponible", "@updateNewVersion": { "description": "Update available message", "placeholders": { @@ -1523,231 +1523,231 @@ } } }, - "updateDownload": "Download", + "updateDownload": "Descargar", "@updateDownload": { "description": "Update button - download update" }, - "updateLater": "Later", + "updateLater": "Más tarde", "@updateLater": { "description": "Update button - dismiss" }, - "updateChangelog": "Changelog", + "updateChangelog": "Historial de cambios", "@updateChangelog": { "description": "Link to changelog" }, - "updateStartingDownload": "Starting download...", + "updateStartingDownload": "Iniciando descarga...", "@updateStartingDownload": { "description": "Update status - initializing" }, - "updateDownloadFailed": "Download failed", + "updateDownloadFailed": "Descarga fallida", "@updateDownloadFailed": { "description": "Update error title" }, - "updateFailedMessage": "Failed to download update", + "updateFailedMessage": "Error al descargar la actualización", "@updateFailedMessage": { "description": "Update error message" }, - "updateNewVersionReady": "A new version is ready", + "updateNewVersionReady": "Una nueva versión está lista", "@updateNewVersionReady": { "description": "Update subtitle" }, - "updateCurrent": "Current", + "updateCurrent": "Actual", "@updateCurrent": { "description": "Label for current version" }, - "updateNew": "New", + "updateNew": "Nuevo", "@updateNew": { "description": "Label for new version" }, - "updateDownloading": "Downloading...", + "updateDownloading": "Descargando...", "@updateDownloading": { "description": "Update status - downloading" }, - "updateWhatsNew": "What's New", + "updateWhatsNew": "Novedades", "@updateWhatsNew": { "description": "Changelog section title" }, - "updateDownloadInstall": "Download & Install", + "updateDownloadInstall": "Descargar & Instalar", "@updateDownloadInstall": { "description": "Update button - download and install" }, - "updateDontRemind": "Don't remind", + "updateDontRemind": "No recordar", "@updateDontRemind": { "description": "Update button - skip this version" }, - "providerPriority": "Provider Priority", + "providerPriority": "Prioridad del proveedor", "@providerPriority": { "description": "Setting title - download provider order" }, - "providerPrioritySubtitle": "Drag to reorder download providers", + "providerPrioritySubtitle": "Arrastre para reordenar los proveedores de descarga", "@providerPrioritySubtitle": { "description": "Subtitle for provider priority" }, - "providerPriorityTitle": "Provider Priority", + "providerPriorityTitle": "Prioridad del proveedor", "@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": "Arrastra para reordenar los proveedores de descarga. La aplicación intentará usar los proveedores de arriba hacia abajo al descargar las pistas.", "@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": "Si una pista no está disponible en el primer proveedor, la aplicación intentará automáticamente el siguiente.", "@providerPriorityInfo": { "description": "Info tip about fallback behavior" }, - "providerBuiltIn": "Built-in", + "providerBuiltIn": "Integrado", "@providerBuiltIn": { "description": "Label for built-in providers (Tidal/Qobuz/Amazon)" }, - "providerExtension": "Extension", + "providerExtension": "Extensión", "@providerExtension": { "description": "Label for extension-provided providers" }, - "metadataProviderPriority": "Metadata Provider Priority", + "metadataProviderPriority": "Prioridad del proveedor de metadatos", "@metadataProviderPriority": { "description": "Setting title - metadata provider order" }, - "metadataProviderPrioritySubtitle": "Order used when fetching track metadata", + "metadataProviderPrioritySubtitle": "Orden usado al recuperar metadatos de la pista", "@metadataProviderPrioritySubtitle": { "description": "Subtitle for metadata priority" }, - "metadataProviderPriorityTitle": "Metadata Priority", + "metadataProviderPriorityTitle": "Prioridad de los metadatos", "@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": "Arrastra para reordenar los proveedores de metadatos. La aplicación probará los proveedores de arriba hacia abajo al buscar pistas y obtener los metadatos.", "@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": "Deezer no tiene límites de tasa y se recomienda como principal. Spotify puede valorar el límite después de muchas solicitudes.", "@metadataProviderPriorityInfo": { "description": "Info tip about rate limits" }, - "metadataNoRateLimits": "No rate limits", + "metadataNoRateLimits": "Sin límites de tasa", "@metadataNoRateLimits": { "description": "Deezer provider description" }, - "metadataMayRateLimit": "May rate limit", + "metadataMayRateLimit": "Sin límites de tasa", "@metadataMayRateLimit": { "description": "Spotify provider description" }, - "logTitle": "Logs", + "logTitle": "Registros", "@logTitle": { "description": "Logs screen title" }, - "logCopy": "Copy Logs", + "logCopy": "Copiar Registros", "@logCopy": { "description": "Action - copy logs to clipboard" }, - "logClear": "Clear Logs", + "logClear": "Limpiar registros", "@logClear": { "description": "Action - delete all logs" }, - "logShare": "Share Logs", + "logShare": "Compartir Registros", "@logShare": { "description": "Action - share logs file" }, - "logEmpty": "No logs yet", + "logEmpty": "No hay registros aún", "@logEmpty": { "description": "Empty state title" }, - "logCopied": "Logs copied to clipboard", + "logCopied": "Registros copiados al portapapeles", "@logCopied": { "description": "Snackbar - logs copied" }, - "logSearchHint": "Search logs...", + "logSearchHint": "Buscar registros...", "@logSearchHint": { "description": "Log search placeholder" }, - "logFilterLevel": "Level", + "logFilterLevel": "Nivel", "@logFilterLevel": { "description": "Filter by log level" }, - "logFilterSection": "Filter", + "logFilterSection": "Filtrar", "@logFilterSection": { "description": "Filter section title" }, - "logShareLogs": "Share logs", + "logShareLogs": "Compartir registros", "@logShareLogs": { "description": "Share button tooltip" }, - "logClearLogs": "Clear logs", + "logClearLogs": "Borrar registros", "@logClearLogs": { "description": "Clear button tooltip" }, - "logClearLogsTitle": "Clear Logs", + "logClearLogsTitle": "Limpiar registros", "@logClearLogsTitle": { "description": "Clear logs dialog title" }, - "logClearLogsMessage": "Are you sure you want to clear all logs?", + "logClearLogsMessage": "¿Estás seguro que deseas limpiar todos los registros?", "@logClearLogsMessage": { "description": "Clear logs confirmation message" }, - "logIspBlocking": "ISP BLOCKING DETECTED", + "logIspBlocking": "BLOQUEO POR EL ISP DETECTADO", "@logIspBlocking": { "description": "Error category - ISP blocking" }, - "logRateLimited": "RATE LIMITED", + "logRateLimited": "TASA LIMITADA", "@logRateLimited": { "description": "Error category - rate limiting" }, - "logNetworkError": "NETWORK ERROR", + "logNetworkError": "ERROR DE RED", "@logNetworkError": { "description": "Error category - network issues" }, - "logTrackNotFound": "TRACK NOT FOUND", + "logTrackNotFound": "PISTA NO ENCONTRADA", "@logTrackNotFound": { "description": "Error category - missing tracks" }, - "logFilterBySeverity": "Filter logs by severity", + "logFilterBySeverity": "Filtrar los registros por gravedad", "@logFilterBySeverity": { "description": "Filter dialog title" }, - "logNoLogsYet": "No logs yet", + "logNoLogsYet": "No hay registros aún", "@logNoLogsYet": { "description": "Empty state title" }, - "logNoLogsYetSubtitle": "Logs will appear here as you use the app", + "logNoLogsYetSubtitle": "Los registros aparecerán aquí mientras usas la aplicación", "@logNoLogsYetSubtitle": { "description": "Empty state subtitle" }, - "logIssueSummary": "Issue Summary", + "logIssueSummary": "Resumen de Incidencias", "@logIssueSummary": { "description": "Section header for error summary" }, - "logIspBlockingDescription": "Your ISP may be blocking access to download services", + "logIspBlockingDescription": "Tu ISP puede estar bloqueando el acceso a los servicios de descarga", "@logIspBlockingDescription": { "description": "ISP blocking explanation" }, - "logIspBlockingSuggestion": "Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8", + "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": "Too many requests to the service", + "logRateLimitedDescription": "Demasiadas solicitudes al servicio", "@logRateLimitedDescription": { "description": "Rate limit explanation" }, - "logRateLimitedSuggestion": "Wait a few minutes before trying again", + "logRateLimitedSuggestion": "Espere unos minutos antes de volver a intentarlo", "@logRateLimitedSuggestion": { "description": "Rate limit fix suggestion" }, - "logNetworkErrorDescription": "Connection issues detected", + "logNetworkErrorDescription": "Problemas de conexión detectados", "@logNetworkErrorDescription": { "description": "Network error explanation" }, - "logNetworkErrorSuggestion": "Check your internet connection", + "logNetworkErrorSuggestion": "Comprueba tu conexión a internet", "@logNetworkErrorSuggestion": { "description": "Network error fix suggestion" }, - "logTrackNotFoundDescription": "Some tracks could not be found on download services", + "logTrackNotFoundDescription": "No se pudieron encontrar algunas pistas en los servicios de descarga", "@logTrackNotFoundDescription": { "description": "Track not found explanation" }, - "logTrackNotFoundSuggestion": "The track may not be available in lossless quality", + "logTrackNotFoundSuggestion": "La pista puede no estar disponible en calidad sin pérdida", "@logTrackNotFoundSuggestion": { "description": "Track not found explanation" }, - "logTotalErrors": "Total errors: {count}", + "logTotalErrors": "Total de errores: {count}", "@logTotalErrors": { "description": "Error count display", "placeholders": { @@ -1756,7 +1756,7 @@ } } }, - "logAffected": "Affected: {domains}", + "logAffected": "Afectado: {domains}", "@logAffected": { "description": "Affected domains display", "placeholders": { @@ -1765,7 +1765,7 @@ } } }, - "logEntriesFiltered": "Entries ({count} filtered)", + "logEntriesFiltered": "Entradas ({count} filtradas)", "@logEntriesFiltered": { "description": "Log count with filter active", "placeholders": { @@ -1774,7 +1774,7 @@ } } }, - "logEntries": "Entries ({count})", + "logEntries": "Entradas ({count})", "@logEntries": { "description": "Total log count", "placeholders": { @@ -1783,19 +1783,19 @@ } } }, - "credentialsTitle": "Spotify Credentials", + "credentialsTitle": "Credenciales de Spotify", "@credentialsTitle": { "description": "Credentials dialog title" }, - "credentialsDescription": "Enter your Client ID and Secret to use your own Spotify application quota.", + "credentialsDescription": "Introduzca su ID de cliente y secreto para utilizar su propia cuota de aplicación de Spotify.", "@credentialsDescription": { "description": "Credentials dialog explanation" }, - "credentialsClientId": "Client ID", + "credentialsClientId": "ID del cliente", "@credentialsClientId": { "description": "Client ID field label - DO NOT TRANSLATE" }, - "credentialsClientIdHint": "Paste Client ID", + "credentialsClientIdHint": "Pegar ID de cliente", "@credentialsClientIdHint": { "description": "Client ID placeholder" }, @@ -1803,111 +1803,111 @@ "@credentialsClientSecret": { "description": "Client Secret field label - DO NOT TRANSLATE" }, - "credentialsClientSecretHint": "Paste Client Secret", + "credentialsClientSecretHint": "Pegar Client Secret", "@credentialsClientSecretHint": { "description": "Client Secret placeholder" }, - "channelStable": "Stable", + "channelStable": "Estable", "@channelStable": { "description": "Update channel - stable releases" }, - "channelPreview": "Preview", + "channelPreview": "Vista previa", "@channelPreview": { "description": "Update channel - beta/preview releases" }, - "sectionSearchSource": "Search Source", + "sectionSearchSource": "Buscar Fuente", "@sectionSearchSource": { "description": "Settings section header" }, - "sectionDownload": "Download", + "sectionDownload": "Descargar", "@sectionDownload": { "description": "Settings section header" }, - "sectionPerformance": "Performance", + "sectionPerformance": "Alto rendimiento", "@sectionPerformance": { "description": "Settings section header" }, - "sectionApp": "App", + "sectionApp": "Aplicación", "@sectionApp": { "description": "Settings section header" }, - "sectionData": "Data", + "sectionData": "Datos", "@sectionData": { "description": "Settings section header" }, - "sectionDebug": "Debug", + "sectionDebug": "Depuración", "@sectionDebug": { "description": "Settings section header" }, - "sectionService": "Service", + "sectionService": "Servicio", "@sectionService": { "description": "Settings section header" }, - "sectionAudioQuality": "Audio Quality", + "sectionAudioQuality": "Calidad de Sonido", "@sectionAudioQuality": { "description": "Settings section header" }, - "sectionFileSettings": "File Settings", + "sectionFileSettings": "Ajustes del archivo", "@sectionFileSettings": { "description": "Settings section header" }, - "sectionColor": "Color", + "sectionColor": "Colores", "@sectionColor": { "description": "Settings section header" }, - "sectionTheme": "Theme", + "sectionTheme": "Tema", "@sectionTheme": { "description": "Settings section header" }, - "sectionLayout": "Layout", + "sectionLayout": "Diseño", "@sectionLayout": { "description": "Settings section header" }, - "sectionLanguage": "Language", + "sectionLanguage": "Idioma", "@sectionLanguage": { "description": "Settings section header for language" }, - "appearanceLanguage": "App Language", + "appearanceLanguage": "Idioma de la aplicación", "@appearanceLanguage": { "description": "Language setting title" }, - "appearanceLanguageSubtitle": "Choose your preferred language", + "appearanceLanguageSubtitle": "Elija su idioma preferido", "@appearanceLanguageSubtitle": { "description": "Language setting subtitle" }, - "settingsAppearanceSubtitle": "Theme, colors, display", + "settingsAppearanceSubtitle": "Tema, colores, pantalla", "@settingsAppearanceSubtitle": { "description": "Appearance settings description" }, - "settingsDownloadSubtitle": "Service, quality, filename format", + "settingsDownloadSubtitle": "Servicio, calidad, formato del nombre del archivo", "@settingsDownloadSubtitle": { "description": "Download settings description" }, - "settingsOptionsSubtitle": "Fallback, lyrics, cover art, updates", + "settingsOptionsSubtitle": "Alternativa, letras, carátula, actualizaciones", "@settingsOptionsSubtitle": { "description": "Options settings description" }, - "settingsExtensionsSubtitle": "Manage download providers", + "settingsExtensionsSubtitle": "Administrar proveedores de descarga", "@settingsExtensionsSubtitle": { "description": "Extensions settings description" }, - "settingsLogsSubtitle": "View app logs for debugging", + "settingsLogsSubtitle": "Ver registros de aplicaciones para depuración", "@settingsLogsSubtitle": { "description": "Logs settings description" }, - "loadingSharedLink": "Loading shared link...", + "loadingSharedLink": "Cargando enlace compartido...", "@loadingSharedLink": { "description": "Status when opening shared URL" }, - "pressBackAgainToExit": "Press back again to exit", + "pressBackAgainToExit": "Presione de nuevo para salir", "@pressBackAgainToExit": { "description": "Exit confirmation message" }, - "tracksHeader": "Tracks", + "tracksHeader": "Pistas", "@tracksHeader": { "description": "Section header for track list" }, - "downloadAllCount": "Download All ({count})", + "downloadAllCount": "Descargar Todo ({count})", "@downloadAllCount": { "description": "Download all button with count", "placeholders": { @@ -1916,7 +1916,7 @@ } } }, - "tracksCount": "{count, plural, =1{1 track} other{{count} tracks}}", + "tracksCount": "{count, plural, one {}=1{1 pista} other{{count} pistas}}", "@tracksCount": { "description": "Track count display", "placeholders": { @@ -1925,111 +1925,111 @@ } } }, - "trackCopyFilePath": "Copy file path", + "trackCopyFilePath": "Copiar ruta de archivo", "@trackCopyFilePath": { "description": "Action - copy file path" }, - "trackRemoveFromDevice": "Remove from device", + "trackRemoveFromDevice": "Eliminar del dispositivo", "@trackRemoveFromDevice": { "description": "Action - delete downloaded file" }, - "trackLoadLyrics": "Load Lyrics", + "trackLoadLyrics": "Cargar letras", "@trackLoadLyrics": { "description": "Action - fetch lyrics" }, - "trackMetadata": "Metadata", + "trackMetadata": "Metadatos", "@trackMetadata": { "description": "Tab title - track metadata" }, - "trackFileInfo": "File Info", + "trackFileInfo": "Información de archivo", "@trackFileInfo": { "description": "Tab title - file information" }, - "trackLyrics": "Lyrics", + "trackLyrics": "Letras", "@trackLyrics": { "description": "Tab title - lyrics" }, - "trackFileNotFound": "File not found", + "trackFileNotFound": "Archivo no encontrado", "@trackFileNotFound": { "description": "Error - file doesn't exist" }, - "trackOpenInDeezer": "Open in Deezer", + "trackOpenInDeezer": "Abrir en Deezer", "@trackOpenInDeezer": { "description": "Action - open track in Deezer app" }, - "trackOpenInSpotify": "Open in Spotify", + "trackOpenInSpotify": "Abrir en Spotify", "@trackOpenInSpotify": { "description": "Action - open track in Spotify app" }, - "trackTrackName": "Track name", + "trackTrackName": "Nombre de pista", "@trackTrackName": { "description": "Metadata label - track title" }, - "trackArtist": "Artist", + "trackArtist": "Artista", "@trackArtist": { "description": "Metadata label - artist name" }, - "trackAlbumArtist": "Album artist", + "trackAlbumArtist": "Artista del álbum", "@trackAlbumArtist": { "description": "Metadata label - album artist" }, - "trackAlbum": "Album", + "trackAlbum": "Álbum", "@trackAlbum": { "description": "Metadata label - album name" }, - "trackTrackNumber": "Track number", + "trackTrackNumber": "Número de pista", "@trackTrackNumber": { "description": "Metadata label - track number" }, - "trackDiscNumber": "Disc number", + "trackDiscNumber": "Número de disco", "@trackDiscNumber": { "description": "Metadata label - disc number" }, - "trackDuration": "Duration", + "trackDuration": "Duración", "@trackDuration": { "description": "Metadata label - track length" }, - "trackAudioQuality": "Audio quality", + "trackAudioQuality": "Calidad del sonido", "@trackAudioQuality": { "description": "Metadata label - audio quality" }, - "trackReleaseDate": "Release date", + "trackReleaseDate": "Fecha de lanzamiento", "@trackReleaseDate": { "description": "Metadata label - release date" }, - "trackDownloaded": "Downloaded", + "trackDownloaded": "Descargado", "@trackDownloaded": { "description": "Metadata label - download date" }, - "trackCopyLyrics": "Copy lyrics", + "trackCopyLyrics": "Copiar letras", "@trackCopyLyrics": { "description": "Action - copy lyrics to clipboard" }, - "trackLyricsNotAvailable": "Lyrics not available for this track", + "trackLyricsNotAvailable": "Letras no disponibles para este tema", "@trackLyricsNotAvailable": { "description": "Message when lyrics not found" }, - "trackLyricsTimeout": "Request timed out. Try again later.", + "trackLyricsTimeout": "Tiempo de espera agotado. Inténtalo de nuevo más tarde.", "@trackLyricsTimeout": { "description": "Message when lyrics request times out" }, - "trackLyricsLoadFailed": "Failed to load lyrics", + "trackLyricsLoadFailed": "Error al cargar la letra", "@trackLyricsLoadFailed": { "description": "Message when lyrics loading fails" }, - "trackCopiedToClipboard": "Copied to clipboard", + "trackCopiedToClipboard": "Copiado al portapapeles", "@trackCopiedToClipboard": { "description": "Snackbar - content copied" }, - "trackDeleteConfirmTitle": "Remove from device?", + "trackDeleteConfirmTitle": "¿Eliminar del dispositivo?", "@trackDeleteConfirmTitle": { "description": "Delete confirmation title" }, - "trackDeleteConfirmMessage": "This will permanently delete the downloaded file and remove it from your history.", + "trackDeleteConfirmMessage": "Esto eliminará permanentemente el archivo descargado y lo eliminará de tu historial.", "@trackDeleteConfirmMessage": { "description": "Delete confirmation message" }, - "trackCannotOpen": "Cannot open: {message}", + "trackCannotOpen": "No se puede abrir: {message}", "@trackCannotOpen": { "description": "Error opening file", "placeholders": { @@ -2038,15 +2038,15 @@ } } }, - "dateToday": "Today", + "dateToday": "Hoy", "@dateToday": { "description": "Relative date - today" }, - "dateYesterday": "Yesterday", + "dateYesterday": "Ayer", "@dateYesterday": { "description": "Relative date - yesterday" }, - "dateDaysAgo": "{count} days ago", + "dateDaysAgo": "Hace {count} días", "@dateDaysAgo": { "description": "Relative date - days ago", "placeholders": { @@ -2055,7 +2055,7 @@ } } }, - "dateWeeksAgo": "{count} weeks ago", + "dateWeeksAgo": "{count} semanas antes", "@dateWeeksAgo": { "description": "Relative date - weeks ago", "placeholders": { @@ -2064,7 +2064,7 @@ } } }, - "dateMonthsAgo": "{count} months ago", + "dateMonthsAgo": "{count} meses atrás", "@dateMonthsAgo": { "description": "Relative date - months ago", "placeholders": { @@ -2073,71 +2073,71 @@ } } }, - "concurrentSequential": "Sequential", + "concurrentSequential": "Secuencial", "@concurrentSequential": { "description": "Download mode - one at a time" }, - "concurrentParallel2": "2 Parallel", + "concurrentParallel2": "2 simultáneamente", "@concurrentParallel2": { "description": "Download mode - 2 simultaneous" }, - "concurrentParallel3": "3 Parallel", + "concurrentParallel3": "3 simultáneamente", "@concurrentParallel3": { "description": "Download mode - 3 simultaneous" }, - "tapToSeeError": "Tap to see error details", + "tapToSeeError": "Pulse para ver los detalles del error", "@tapToSeeError": { "description": "Tooltip for failed download" }, - "storeFilterAll": "All", + "storeFilterAll": "Todo", "@storeFilterAll": { "description": "Store filter - all extensions" }, - "storeFilterMetadata": "Metadata", + "storeFilterMetadata": "Metadatos", "@storeFilterMetadata": { "description": "Store filter - metadata providers" }, - "storeFilterDownload": "Download", + "storeFilterDownload": "Descargar", "@storeFilterDownload": { "description": "Store filter - download providers" }, - "storeFilterUtility": "Utility", + "storeFilterUtility": "Utilidad", "@storeFilterUtility": { "description": "Store filter - utility extensions" }, - "storeFilterLyrics": "Lyrics", + "storeFilterLyrics": "Letras", "@storeFilterLyrics": { "description": "Store filter - lyrics providers" }, - "storeFilterIntegration": "Integration", + "storeFilterIntegration": "Integración", "@storeFilterIntegration": { "description": "Store filter - integrations" }, - "storeClearFilters": "Clear filters", + "storeClearFilters": "Limpiar filtros", "@storeClearFilters": { "description": "Button to clear all filters" }, - "storeNoResults": "No extensions found", + "storeNoResults": "No se encontraron extensiones", "@storeNoResults": { "description": "Empty state when no extensions match filters" }, - "extensionProviderPriority": "Provider Priority", + "extensionProviderPriority": "Prioridad del proveedor", "@extensionProviderPriority": { "description": "Extension capability - provider priority" }, - "extensionInstallButton": "Install Extension", + "extensionInstallButton": "Instalar extensión", "@extensionInstallButton": { "description": "Button to install extension" }, - "extensionDefaultProvider": "Default (Deezer/Spotify)", + "extensionDefaultProvider": "Por defecto (Deezer/Spotify)", "@extensionDefaultProvider": { "description": "Default search provider option" }, - "extensionDefaultProviderSubtitle": "Use built-in search", + "extensionDefaultProviderSubtitle": "Usar búsqueda integrada", "@extensionDefaultProviderSubtitle": { "description": "Subtitle for default provider" }, - "extensionAuthor": "Author", + "extensionAuthor": "Autor/a", "@extensionAuthor": { "description": "Extension detail - author" }, @@ -2149,63 +2149,63 @@ "@extensionError": { "description": "Extension detail - error message" }, - "extensionCapabilities": "Capabilities", + "extensionCapabilities": "Recursos", "@extensionCapabilities": { "description": "Section header - extension features" }, - "extensionMetadataProvider": "Metadata Provider", + "extensionMetadataProvider": "Proveedor de metadatos", "@extensionMetadataProvider": { "description": "Capability - provides metadata" }, - "extensionDownloadProvider": "Download Provider", + "extensionDownloadProvider": "Proveedor de descargas", "@extensionDownloadProvider": { "description": "Capability - provides downloads" }, - "extensionLyricsProvider": "Lyrics Provider", + "extensionLyricsProvider": "Proveedor de letras", "@extensionLyricsProvider": { "description": "Capability - provides lyrics" }, - "extensionUrlHandler": "URL Handler", + "extensionUrlHandler": "Gestor de URL", "@extensionUrlHandler": { "description": "Capability - handles URLs" }, - "extensionQualityOptions": "Quality Options", + "extensionQualityOptions": "Opciones de calidad", "@extensionQualityOptions": { "description": "Capability - quality selection" }, - "extensionPostProcessingHooks": "Post-Processing Hooks", + "extensionPostProcessingHooks": "Hooks post-procesamiento", "@extensionPostProcessingHooks": { "description": "Capability - post-processing" }, - "extensionPermissions": "Permissions", + "extensionPermissions": "Permisos", "@extensionPermissions": { "description": "Section header - required permissions" }, - "extensionSettings": "Settings", + "extensionSettings": "Ajustes", "@extensionSettings": { "description": "Section header - extension settings" }, - "extensionRemoveButton": "Remove Extension", + "extensionRemoveButton": "Eliminar extensión", "@extensionRemoveButton": { "description": "Button to uninstall extension" }, - "extensionUpdated": "Updated", + "extensionUpdated": "Actualizado", "@extensionUpdated": { "description": "Extension detail - last update" }, - "extensionMinAppVersion": "Min App Version", + "extensionMinAppVersion": "Versión Mínima de la aplicación", "@extensionMinAppVersion": { "description": "Extension detail - minimum app version" }, - "extensionCustomTrackMatching": "Custom Track Matching", + "extensionCustomTrackMatching": "Coincidencia de pista personalizada", "@extensionCustomTrackMatching": { "description": "Capability - custom track matching algorithm" }, - "extensionPostProcessing": "Post-Processing", + "extensionPostProcessing": "Post-Procesamiento", "@extensionPostProcessing": { "description": "Capability - post-download processing" }, - "extensionHooksAvailable": "{count} hook(s) available", + "extensionHooksAvailable": "{count} hook(s) disponibles", "@extensionHooksAvailable": { "description": "Post-processing hooks count", "placeholders": { @@ -2214,7 +2214,7 @@ } } }, - "extensionPatternsCount": "{count} pattern(s)", + "extensionPatternsCount": "Patrón(es) {count}", "@extensionPatternsCount": { "description": "URL patterns count", "placeholders": { @@ -2223,7 +2223,7 @@ } } }, - "extensionStrategy": "Strategy: {strategy}", + "extensionStrategy": "Estrategia: {strategy}", "@extensionStrategy": { "description": "Track matching strategy name", "placeholders": { @@ -2232,75 +2232,75 @@ } } }, - "extensionsProviderPrioritySection": "Provider Priority", + "extensionsProviderPrioritySection": "Prioridad del proveedor", "@extensionsProviderPrioritySection": { "description": "Section header - provider priority" }, - "extensionsInstalledSection": "Installed Extensions", + "extensionsInstalledSection": "Extensiones instaladas", "@extensionsInstalledSection": { "description": "Section header - installed extensions" }, - "extensionsNoExtensions": "No extensions installed", + "extensionsNoExtensions": "No hay extensiones instaladas", "@extensionsNoExtensions": { "description": "Empty state - no extensions" }, - "extensionsNoExtensionsSubtitle": "Install .spotiflac-ext files to add new providers", + "extensionsNoExtensionsSubtitle": "Instalar archivos .spotiflac-ext para añadir nuevos proveedores", "@extensionsNoExtensionsSubtitle": { "description": "Empty state subtitle" }, - "extensionsInstallButton": "Install Extension", + "extensionsInstallButton": "Instalar extensión", "@extensionsInstallButton": { "description": "Button to install extension from file" }, - "extensionsInfoTip": "Extensions can add new metadata and download providers. Only install extensions from trusted sources.", + "extensionsInfoTip": "Las extensiones pueden añadir nuevos metadatos y proveedores de descargas. Sólo instalar extensiones desde fuentes confiables.", "@extensionsInfoTip": { "description": "Security warning about extensions" }, - "extensionsInstalledSuccess": "Extension installed successfully", + "extensionsInstalledSuccess": "Extensión instalada correctamente", "@extensionsInstalledSuccess": { "description": "Success message after install" }, - "extensionsDownloadPriority": "Download Priority", + "extensionsDownloadPriority": "Prioridad de descarga", "@extensionsDownloadPriority": { "description": "Setting - download provider order" }, - "extensionsDownloadPrioritySubtitle": "Set download service order", + "extensionsDownloadPrioritySubtitle": "Establecer orden de servicio de descarga", "@extensionsDownloadPrioritySubtitle": { "description": "Subtitle for download priority" }, - "extensionsNoDownloadProvider": "No extensions with download provider", + "extensionsNoDownloadProvider": "No hay extensiones con proveedor de descargas", "@extensionsNoDownloadProvider": { "description": "Empty state - no download providers" }, - "extensionsMetadataPriority": "Metadata Priority", + "extensionsMetadataPriority": "Prioridad de los metadatos", "@extensionsMetadataPriority": { "description": "Setting - metadata provider order" }, - "extensionsMetadataPrioritySubtitle": "Set search & metadata source order", + "extensionsMetadataPrioritySubtitle": "Establecer orden de búsqueda y metadatos", "@extensionsMetadataPrioritySubtitle": { "description": "Subtitle for metadata priority" }, - "extensionsNoMetadataProvider": "No extensions with metadata provider", + "extensionsNoMetadataProvider": "No hay extensiones con el proveedor de metadatos", "@extensionsNoMetadataProvider": { "description": "Empty state - no metadata providers" }, - "extensionsSearchProvider": "Search Provider", + "extensionsSearchProvider": "Proveedor de búsqueda", "@extensionsSearchProvider": { "description": "Setting - search provider selection" }, - "extensionsNoCustomSearch": "No extensions with custom search", + "extensionsNoCustomSearch": "No hay extensiones con búsqueda personalizada", "@extensionsNoCustomSearch": { "description": "Empty state - no search providers" }, - "extensionsSearchProviderDescription": "Choose which service to use for searching tracks", + "extensionsSearchProviderDescription": "Elegir qué servicio usar para buscar pistas", "@extensionsSearchProviderDescription": { "description": "Search provider setting description" }, - "extensionsCustomSearch": "Custom search", + "extensionsCustomSearch": "Búsqueda personalizada", "@extensionsCustomSearch": { "description": "Label for custom search provider" }, - "extensionsErrorLoading": "Error loading extension", + "extensionsErrorLoading": "Error al cargar la extensión", "@extensionsErrorLoading": { "description": "Error message when extension fails to load" }, @@ -2316,7 +2316,7 @@ "@qualityHiResFlac": { "description": "Quality option - high resolution FLAC" }, - "qualityHiResFlacSubtitle": "24-bit / up to 96kHz", + "qualityHiResFlacSubtitle": "24 bits/hasta 96kHz", "@qualityHiResFlacSubtitle": { "description": "Technical spec for hi-res" }, @@ -2324,83 +2324,83 @@ "@qualityHiResFlacMax": { "description": "Quality option - maximum resolution FLAC" }, - "qualityHiResFlacMaxSubtitle": "24-bit / up to 192kHz", + "qualityHiResFlacMaxSubtitle": "24 bits / hasta 192kHz", "@qualityHiResFlacMaxSubtitle": { "description": "Technical spec for hi-res max" }, - "qualityNote": "Actual quality depends on track availability from the service", + "qualityNote": "La calidad real depende de la disponibilidad de la pista del servicio", "@qualityNote": { "description": "Note about quality availability" }, - "downloadAskBeforeDownload": "Ask Before Download", + "downloadAskBeforeDownload": "Preguntar antes de descargar", "@downloadAskBeforeDownload": { "description": "Setting - show quality picker" }, - "downloadDirectory": "Download Directory", + "downloadDirectory": "Carpeta de descarga", "@downloadDirectory": { "description": "Setting - download folder" }, - "downloadSeparateSinglesFolder": "Separate Singles Folder", + "downloadSeparateSinglesFolder": "Carpeta separada para pistas", "@downloadSeparateSinglesFolder": { "description": "Setting - separate folder for singles" }, - "downloadAlbumFolderStructure": "Album Folder Structure", + "downloadAlbumFolderStructure": "Estructura de carpeta del álbum", "@downloadAlbumFolderStructure": { "description": "Setting - album folder organization" }, - "downloadSaveFormat": "Save Format", + "downloadSaveFormat": "Guardar Formato", "@downloadSaveFormat": { "description": "Setting - output file format" }, - "downloadSelectService": "Select Service", + "downloadSelectService": "Seleccionar Servicio", "@downloadSelectService": { "description": "Dialog title - choose download service" }, - "downloadSelectQuality": "Select Quality", + "downloadSelectQuality": "Seleccionar Calidad", "@downloadSelectQuality": { "description": "Dialog title - choose audio quality" }, - "downloadFrom": "Download From", + "downloadFrom": "Descargar Desde", "@downloadFrom": { "description": "Label - download source" }, - "downloadDefaultQualityLabel": "Default Quality", + "downloadDefaultQualityLabel": "Calidad por Defecto", "@downloadDefaultQualityLabel": { "description": "Label - default quality setting" }, - "downloadBestAvailable": "Best available", + "downloadBestAvailable": "La mejor disponible", "@downloadBestAvailable": { "description": "Quality option - highest available" }, - "folderNone": "None", + "folderNone": "Ninguna", "@folderNone": { "description": "Folder option - no organization" }, - "folderNoneSubtitle": "Save all files directly to download folder", + "folderNoneSubtitle": "Guardar todos los archivos directamente para descargar la carpeta", "@folderNoneSubtitle": { "description": "Subtitle for no folder organization" }, - "folderArtist": "Artist", + "folderArtist": "Artista", "@folderArtist": { "description": "Folder option - by artist" }, - "folderArtistSubtitle": "Artist Name/filename", + "folderArtistSubtitle": "Nombre del Artista/nombre de archivo", "@folderArtistSubtitle": { "description": "Folder structure example" }, - "folderAlbum": "Album", + "folderAlbum": "Álbum", "@folderAlbum": { "description": "Folder option - by album" }, - "folderAlbumSubtitle": "Album Name/filename", + "folderAlbumSubtitle": "Nombre del álbum/nombre de archivo", "@folderAlbumSubtitle": { "description": "Folder structure example" }, - "folderArtistAlbum": "Artist/Album", + "folderArtistAlbum": "Artista/Álbum", "@folderArtistAlbum": { "description": "Folder option - nested" }, - "folderArtistAlbumSubtitle": "Artist Name/Album Name/filename", + "folderArtistAlbumSubtitle": "Nombre del Artista/Nombre del Álbum/Nombre del Archivo", "@folderArtistAlbumSubtitle": { "description": "Folder structure example" }, @@ -2424,55 +2424,55 @@ "@serviceSpotify": { "description": "Service name - DO NOT TRANSLATE" }, - "appearanceAmoledDark": "AMOLED Dark", + "appearanceAmoledDark": "AMOLED Oscuro", "@appearanceAmoledDark": { "description": "Theme option - pure black" }, - "appearanceAmoledDarkSubtitle": "Pure black background", + "appearanceAmoledDarkSubtitle": "Fondo negro puro", "@appearanceAmoledDarkSubtitle": { "description": "Subtitle for AMOLED dark" }, - "appearanceChooseAccentColor": "Choose Accent Color", + "appearanceChooseAccentColor": "Elegir color principal", "@appearanceChooseAccentColor": { "description": "Color picker dialog title" }, - "appearanceChooseTheme": "Theme Mode", + "appearanceChooseTheme": "Modo de tema", "@appearanceChooseTheme": { "description": "Theme picker dialog title" }, - "queueTitle": "Download Queue", + "queueTitle": "Descargas en proceso", "@queueTitle": { "description": "Queue screen title" }, - "queueClearAll": "Clear All", + "queueClearAll": "Eliminar todo", "@queueClearAll": { "description": "Button - clear all queue items" }, - "queueClearAllMessage": "Are you sure you want to clear all downloads?", + "queueClearAllMessage": "¿Estás seguro de que quieres borrar todas las descargas?", "@queueClearAllMessage": { "description": "Clear queue confirmation" }, - "queueEmpty": "No downloads in queue", + "queueEmpty": "No hay descargas en cola", "@queueEmpty": { "description": "Empty queue state title" }, - "queueEmptySubtitle": "Add tracks from the home screen", + "queueEmptySubtitle": "Añadir pistas desde la pantalla de inicio", "@queueEmptySubtitle": { "description": "Empty queue state subtitle" }, - "queueClearCompleted": "Clear completed", + "queueClearCompleted": "Limpiar tareas finalizadas", "@queueClearCompleted": { "description": "Button - clear finished downloads" }, - "queueDownloadFailed": "Download Failed", + "queueDownloadFailed": "Descarga fallida", "@queueDownloadFailed": { "description": "Error dialog title" }, - "queueTrackLabel": "Track:", + "queueTrackLabel": "Pista:", "@queueTrackLabel": { "description": "Label in error dialog" }, - "queueArtistLabel": "Artist:", + "queueArtistLabel": "Artista:", "@queueArtistLabel": { "description": "Label in error dialog" }, @@ -2480,47 +2480,47 @@ "@queueErrorLabel": { "description": "Label in error dialog" }, - "queueUnknownError": "Unknown error", + "queueUnknownError": "Error desconocido", "@queueUnknownError": { "description": "Fallback error message" }, - "albumFolderArtistAlbum": "Artist / Album", + "albumFolderArtistAlbum": "Artista / Álbum", "@albumFolderArtistAlbum": { "description": "Album folder option" }, - "albumFolderArtistAlbumSubtitle": "Albums/Artist Name/Album Name/", + "albumFolderArtistAlbumSubtitle": "Álbumes/Nombre del Artista/Nombre del Álbum/", "@albumFolderArtistAlbumSubtitle": { "description": "Folder structure example" }, - "albumFolderArtistYearAlbum": "Artist / [Year] Album", + "albumFolderArtistYearAlbum": "Artista / [Año] Álbum", "@albumFolderArtistYearAlbum": { "description": "Album folder option with year" }, - "albumFolderArtistYearAlbumSubtitle": "Albums/Artist Name/[2005] Album Name/", + "albumFolderArtistYearAlbumSubtitle": "Álbumes/Nombre del Artista /[2005] Nombre del Álbum/", "@albumFolderArtistYearAlbumSubtitle": { "description": "Folder structure example" }, - "albumFolderAlbumOnly": "Album Only", + "albumFolderAlbumOnly": "Sólo álbum", "@albumFolderAlbumOnly": { "description": "Album folder option" }, - "albumFolderAlbumOnlySubtitle": "Albums/Album Name/", + "albumFolderAlbumOnlySubtitle": "Álbumes/Nombre del Álbum/", "@albumFolderAlbumOnlySubtitle": { "description": "Folder structure example" }, - "albumFolderYearAlbum": "[Year] Album", + "albumFolderYearAlbum": "Álbum [Año]", "@albumFolderYearAlbum": { "description": "Album folder option with year" }, - "albumFolderYearAlbumSubtitle": "Albums/[2005] Album Name/", + "albumFolderYearAlbumSubtitle": "Álbumes/[2005] Nombre del Álbum/", "@albumFolderYearAlbumSubtitle": { "description": "Folder structure example" }, - "downloadedAlbumDeleteSelected": "Delete Selected", + "downloadedAlbumDeleteSelected": "Borrar Seleccionados", "@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": "¿Eliminar {count} {count, plural, one {}=1{pista} other{pistas}} del historial?\n\nEsto también eliminará los archivos del almacenamiento.", "@downloadedAlbumDeleteMessage": { "description": "Delete confirmation with count", "placeholders": { @@ -2529,11 +2529,11 @@ } } }, - "downloadedAlbumTracksHeader": "Tracks", + "downloadedAlbumTracksHeader": "Pistas", "@downloadedAlbumTracksHeader": { "description": "Section header for tracks" }, - "downloadedAlbumDownloadedCount": "{count} downloaded", + "downloadedAlbumDownloadedCount": "{count} descargado", "@downloadedAlbumDownloadedCount": { "description": "Downloaded tracks count badge", "placeholders": { @@ -2542,7 +2542,7 @@ } } }, - "downloadedAlbumSelectedCount": "{count} selected", + "downloadedAlbumSelectedCount": "{count} seleccionado", "@downloadedAlbumSelectedCount": { "description": "Selection count indicator", "placeholders": { @@ -2551,15 +2551,15 @@ } } }, - "downloadedAlbumAllSelected": "All tracks selected", + "downloadedAlbumAllSelected": "Todas las pistas seleccionadas", "@downloadedAlbumAllSelected": { "description": "Status - all items selected" }, - "downloadedAlbumTapToSelect": "Tap tracks to select", + "downloadedAlbumTapToSelect": "Toca las pistas para seleccionar", "@downloadedAlbumTapToSelect": { "description": "Selection hint" }, - "downloadedAlbumDeleteCount": "Delete {count} {count, plural, =1{track} other{tracks}}", + "downloadedAlbumDeleteCount": "¡Eliminar {count} {count, plural, one {}=1{pista} other{pistas}}", "@downloadedAlbumDeleteCount": { "description": "Delete button text with count", "placeholders": { @@ -2568,31 +2568,31 @@ } } }, - "downloadedAlbumSelectToDelete": "Select tracks to delete", + "downloadedAlbumSelectToDelete": "Seleccionar pistas a eliminar", "@downloadedAlbumSelectToDelete": { "description": "Placeholder when nothing selected" }, - "utilityFunctions": "Utility Functions", + "utilityFunctions": "Funciones de utilidad", "@utilityFunctions": { "description": "Extension capability - utility functions" }, - "recentTypeArtist": "Artist", + "recentTypeArtist": "Artista", "@recentTypeArtist": { "description": "Recent access item type - artist" }, - "recentTypeAlbum": "Album", + "recentTypeAlbum": "Álbum", "@recentTypeAlbum": { "description": "Recent access item type - album" }, - "recentTypeSong": "Song", + "recentTypeSong": "Canción", "@recentTypeSong": { "description": "Recent access item type - song/track" }, - "recentTypePlaylist": "Playlist", + "recentTypePlaylist": "Lista de reproducción", "@recentTypePlaylist": { "description": "Recent access item type - playlist" }, - "recentPlaylistInfo": "Playlist: {name}", + "recentPlaylistInfo": "Lista de reproducción: {name}", "@recentPlaylistInfo": { "description": "Snackbar message when tapping playlist in recent access", "placeholders": { From ff9d088c5fc67a80a02ce735f940cceab3bf44ac Mon Sep 17 00:00:00 2001 From: Zarz Eleutherius <42882290+zarzet@users.noreply.github.com> Date: Mon, 19 Jan 2026 00:29:34 +0700 Subject: [PATCH 12/14] New translations app_en.arb (German) --- lib/l10n/arb/app_de.arb | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/lib/l10n/arb/app_de.arb b/lib/l10n/arb/app_de.arb index 8a57812d..28890472 100644 --- a/lib/l10n/arb/app_de.arb +++ b/lib/l10n/arb/app_de.arb @@ -131,7 +131,7 @@ "@settingsTitle": { "description": "Settings screen title" }, - "settingsDownload": "Download", + "settingsDownload": "Herunterladen", "@settingsDownload": { "description": "Settings section - download options" }, @@ -151,7 +151,7 @@ "@settingsAbout": { "description": "Settings section - app info" }, - "downloadTitle": "Download", + "downloadTitle": "Herunterladen", "@downloadTitle": { "description": "Download settings page title" }, @@ -508,11 +508,11 @@ "@aboutOriginalCreator": { "description": "Role description for original creator" }, - "aboutLogoArtist": "The talented artist who created our beautiful app logo!", + "aboutLogoArtist": "Der talentierte Künstler, der unser wunderschönes App-Logo entworfen hat!", "@aboutLogoArtist": { "description": "Role description for logo artist" }, - "aboutSpecialThanks": "Special Thanks", + "aboutSpecialThanks": "Besonderer Dank", "@aboutSpecialThanks": { "description": "Section for special thanks" }, @@ -520,27 +520,27 @@ "@aboutLinks": { "description": "Section for external links" }, - "aboutMobileSource": "Mobile source code", + "aboutMobileSource": "Mobiler Quellcode", "@aboutMobileSource": { "description": "Link to mobile GitHub repo" }, - "aboutPCSource": "PC source code", + "aboutPCSource": "PC Quellcode", "@aboutPCSource": { "description": "Link to PC GitHub repo" }, - "aboutReportIssue": "Report an issue", + "aboutReportIssue": "Problem melden", "@aboutReportIssue": { "description": "Link to report bugs" }, - "aboutReportIssueSubtitle": "Report any problems you encounter", + "aboutReportIssueSubtitle": "Melde jedes Problem, die dir auftreten", "@aboutReportIssueSubtitle": { "description": "Subtitle for report issue" }, - "aboutFeatureRequest": "Feature request", + "aboutFeatureRequest": "Feature vorschlagen", "@aboutFeatureRequest": { "description": "Link to suggest features" }, - "aboutFeatureRequestSubtitle": "Suggest new features for the app", + "aboutFeatureRequestSubtitle": "Schlage neue Funktionen für die App vor", "@aboutFeatureRequestSubtitle": { "description": "Subtitle for feature request" }, @@ -548,11 +548,11 @@ "@aboutSupport": { "description": "Section for support/donation links" }, - "aboutBuyMeCoffee": "Buy me a coffee", + "aboutBuyMeCoffee": "Spendiere mir einen Kaffee", "@aboutBuyMeCoffee": { "description": "Donation link" }, - "aboutBuyMeCoffeeSubtitle": "Support development on Ko-fi", + "aboutBuyMeCoffeeSubtitle": "Unterstütze die Entwicklung auf Ko-fi", "@aboutBuyMeCoffeeSubtitle": { "description": "Subtitle for donation" }, @@ -564,11 +564,11 @@ "@aboutVersion": { "description": "Version info label" }, - "aboutBinimumDesc": "The creator of QQDL & HiFi API. Without this API, Tidal downloads wouldn't exist!", + "aboutBinimumDesc": "Der Schöpfer der QQDL & HiFi API. Ohne diese API gäbe es keine Tidal-Downloads!", "@aboutBinimumDesc": { "description": "Credit description for binimum" }, - "aboutSachinsenalDesc": "The original HiFi project creator. The foundation of Tidal integration!", + "aboutSachinsenalDesc": "Der ursprüngliche Entwickler des HiFi-Projekts. Die Grundlage der Tidal-Integration!", "@aboutSachinsenalDesc": { "description": "Credit description for sachinsenal0x64" }, @@ -576,7 +576,7 @@ "@aboutDoubleDouble": { "description": "Name of Amazon API service - DO NOT TRANSLATE" }, - "aboutDoubleDoubleDesc": "Amazing API for Amazon Music downloads. Thank you for making it free!", + "aboutDoubleDoubleDesc": "Wundervolle API für Amazon Music Downloads.\nVielen Dank, dass Sie sie kostenlos zur Verfügung stellen!", "@aboutDoubleDoubleDesc": { "description": "Credit for DoubleDouble API" }, @@ -584,7 +584,7 @@ "@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": "Die beste Qobuz-Streaming-API. Hi-Res-Downloads wären ohne diese nicht möglich!", "@aboutDabMusicDesc": { "description": "Credit for DAB Music API" }, From 3747674968409de902d16cdfb104a25378d9badf Mon Sep 17 00:00:00 2001 From: Zarz Eleutherius <42882290+zarzet@users.noreply.github.com> Date: Mon, 19 Jan 2026 00:29:37 +0700 Subject: [PATCH 13/14] New translations app_en.arb (Russian) --- lib/l10n/arb/app_ru.arb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/l10n/arb/app_ru.arb b/lib/l10n/arb/app_ru.arb index bff3e1bf..e7dfeecb 100644 --- a/lib/l10n/arb/app_ru.arb +++ b/lib/l10n/arb/app_ru.arb @@ -1945,7 +1945,7 @@ "@trackFileInfo": { "description": "Tab title - file information" }, - "trackLyrics": "Тексты песен", + "trackLyrics": "Текст песни", "@trackLyrics": { "description": "Tab title - lyrics" }, @@ -1961,7 +1961,7 @@ "@trackOpenInSpotify": { "description": "Action - open track in Spotify app" }, - "trackTrackName": "Название трека", + "trackTrackName": "Название", "@trackTrackName": { "description": "Metadata label - track title" }, From be3ee3b2169b1427583b9c26c84cb985a19ba16d Mon Sep 17 00:00:00 2001 From: Zarz Eleutherius <42882290+zarzet@users.noreply.github.com> Date: Mon, 19 Jan 2026 00:29:39 +0700 Subject: [PATCH 14/14] New translations app_en.arb (Chinese Traditional) --- lib/l10n/arb/app_zh_TW.arb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/l10n/arb/app_zh_TW.arb b/lib/l10n/arb/app_zh_TW.arb index 8526e88f..3798a905 100644 --- a/lib/l10n/arb/app_zh_TW.arb +++ b/lib/l10n/arb/app_zh_TW.arb @@ -51,7 +51,7 @@ "@homeSupports": { "description": "Info text about supported URL types" }, - "homeRecent": "Recent", + "homeRecent": "最新的", "@homeRecent": { "description": "Section header for recent searches" },