mirror of
https://github.com/spotiflacapp/SpotiFLAC-Mobile.git
synced 2026-06-01 03:15:17 +07:00
- Add advanced filename template placeholders: {track_raw}, {disc_raw}, {date},
formatted numbers {track:N}/{disc:N}, and date formatting {date:%Y-%m-%d}
with strftime-to-Go layout conversion and robust date parser
- Pass date/release_date metadata to filename builder in all providers
(Amazon, Qobuz, Tidal, YouTube, extensions) and Flutter download queue
- Detect ARM32-only / low-RAM Android devices at startup and reduce image
cache size and disable overscroll effects for smoother experience
- Make artist screen selection bar responsive: compact stacked layout on
narrow screens or large text scale; add quality picker before track download
- Add advanced tags toggle in download settings filename format editor
- Fix ICU plural syntax in DE/ES/PT/RU translations (one {}=1{...} -> one {...})
- Add filenameShowAdvancedTags l10n strings (EN, ID) and regenerate dart files
- Fix featured-artist regex: remove '&' from split separators
- Add Go filename template tests (filename_test.go)
- Add GitHub Pages workflow and static project site
2231 lines
117 KiB
Text
2231 lines
117 KiB
Text
{
|
|
"@@locale": "en",
|
|
"@@last_modified": "2026-01-16",
|
|
|
|
"appName": "SpotiFLAC",
|
|
"@appName": {"description": "App name - DO NOT TRANSLATE"},
|
|
"appDescription": "Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.",
|
|
"@appDescription": {"description": "App description shown in about page"},
|
|
|
|
"navHome": "Home",
|
|
"@navHome": {"description": "Bottom navigation - Home tab"},
|
|
"navLibrary": "Library",
|
|
"@navLibrary": {"description": "Bottom navigation - Library tab"},
|
|
"navHistory": "History",
|
|
"@navHistory": {"description": "Bottom navigation - History tab (legacy)"},
|
|
"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"},
|
|
"historySearchHint": "Search history...",
|
|
"@historySearchHint": {"description": "Search bar placeholder in history"},
|
|
|
|
"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"},
|
|
"optionsSpotifyDeprecationWarning": "Spotify search will be deprecated on March 3, 2026 due to Spotify API changes. Please switch to Deezer.",
|
|
"@optionsSpotifyDeprecationWarning": {"description": "Warning about Spotify API deprecation"},
|
|
|
|
"extensionsTitle": "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"},
|
|
"aboutTranslators": "Translators",
|
|
"@aboutTranslators": {"description": "Section for translators"},
|
|
"aboutSpecialThanks": "Special Thanks",
|
|
"@aboutSpecialThanks": {"description": "Section for special thanks"},
|
|
"aboutLinks": "Links",
|
|
"@aboutLinks": {"description": "Section for external links"},
|
|
"aboutMobileSource": "Mobile source code",
|
|
"@aboutMobileSource": {"description": "Link to mobile GitHub repo"},
|
|
"aboutPCSource": "PC source code",
|
|
"@aboutPCSource": {"description": "Link to PC GitHub repo"},
|
|
"aboutReportIssue": "Report an issue",
|
|
"@aboutReportIssue": {"description": "Link to report bugs"},
|
|
"aboutReportIssueSubtitle": "Report any problems you encounter",
|
|
"@aboutReportIssueSubtitle": {"description": "Subtitle for report issue"},
|
|
"aboutFeatureRequest": "Feature request",
|
|
"@aboutFeatureRequest": {"description": "Link to suggest features"},
|
|
"aboutFeatureRequestSubtitle": "Suggest new features for the app",
|
|
"@aboutFeatureRequestSubtitle": {"description": "Subtitle for feature request"},
|
|
"aboutTelegramChannel": "Telegram Channel",
|
|
"@aboutTelegramChannel": {"description": "Link to Telegram channel"},
|
|
"aboutTelegramChannelSubtitle": "Announcements and updates",
|
|
"@aboutTelegramChannelSubtitle": {"description": "Subtitle for Telegram channel"},
|
|
"aboutTelegramChat": "Telegram Community",
|
|
"@aboutTelegramChat": {"description": "Link to Telegram chat group"},
|
|
"aboutTelegramChatSubtitle": "Chat with other users",
|
|
"@aboutTelegramChatSubtitle": {"description": "Subtitle for Telegram chat"},
|
|
"aboutSocial": "Social",
|
|
"@aboutSocial": {"description": "Section for social links"},
|
|
"aboutSupport": "Support",
|
|
"@aboutSupport": {"description": "Section for support/donation links"},
|
|
"aboutApp": "App",
|
|
"@aboutApp": {"description": "Section for app info"},
|
|
"aboutVersion": "Version",
|
|
"@aboutVersion": {"description": "Version info label"},
|
|
"aboutBinimumDesc": "The creator of QQDL & HiFi API. Without this API, Tidal downloads wouldn't exist!",
|
|
"@aboutBinimumDesc": {"description": "Credit description for binimum"},
|
|
"aboutSachinsenalDesc": "The original HiFi project creator. The foundation of Tidal integration!",
|
|
"@aboutSachinsenalDesc": {"description": "Credit description for sachinsenal0x64"},
|
|
"aboutSjdonadoDesc": "Creator of I Don't Have Spotify (IDHS). The fallback link resolver that saves the day!",
|
|
"@aboutSjdonadoDesc": {"description": "Credit description for sjdonado"},
|
|
"aboutDoubleDouble": "DoubleDouble",
|
|
"@aboutDoubleDouble": {"description": "Name of Amazon API service - DO NOT TRANSLATE"},
|
|
"aboutDoubleDoubleDesc": "Amazing API for Amazon Music downloads. Thank you for making it free!",
|
|
"@aboutDoubleDoubleDesc": {"description": "Credit for DoubleDouble API"},
|
|
"aboutDabMusic": "DAB Music",
|
|
"@aboutDabMusic": {"description": "Name of Qobuz API service - DO NOT TRANSLATE"},
|
|
"aboutDabMusicDesc": "The best Qobuz streaming API. Hi-Res downloads wouldn't be possible without this!",
|
|
"@aboutDabMusicDesc": {"description": "Credit for DAB Music API"},
|
|
"aboutSpotiSaver": "SpotiSaver",
|
|
"@aboutSpotiSaver": {"description": "Name of SpotiSaver API service - DO NOT TRANSLATE"},
|
|
"aboutSpotiSaverDesc": "Tidal Hi-Res FLAC streaming endpoints. A key piece of the lossless puzzle!",
|
|
"@aboutSpotiSaverDesc": {"description": "Credit for SpotiSaver API"},
|
|
"aboutAppDescription": "Download Spotify tracks in lossless quality from Tidal, Qobuz, and Amazon Music.",
|
|
"@aboutAppDescription": {"description": "App description in header card"},
|
|
|
|
"albumTitle": "Album",
|
|
"@albumTitle": {"description": "Album screen title"},
|
|
"albumTracks": "{count, plural, =1{1 track} other{{count} tracks}}",
|
|
"@albumTracks": {
|
|
"description": "Album track count",
|
|
"placeholders": {
|
|
"count": {"type": "int"}
|
|
}
|
|
},
|
|
"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"},
|
|
"setupIcloudNotSupported": "iCloud Drive is not supported. Please use the app Documents folder.",
|
|
"@setupIcloudNotSupported": {"description": "Error when user selects iCloud Drive on iOS"},
|
|
"setupDownloadInFlac": "Download Spotify tracks in FLAC",
|
|
"@setupDownloadInFlac": {"description": "App tagline in setup"},
|
|
"setupStepStorage": "Storage",
|
|
"@setupStepStorage": {"description": "Setup step indicator - storage"},
|
|
"setupStepNotification": "Notification",
|
|
"@setupStepNotification": {"description": "Setup step indicator - notification"},
|
|
"setupStepFolder": "Folder",
|
|
"@setupStepFolder": {"description": "Setup step indicator - folder"},
|
|
"setupStepSpotify": "Spotify",
|
|
"@setupStepSpotify": {"description": "Setup step indicator - Spotify API"},
|
|
"setupStepPermission": "Permission",
|
|
"@setupStepPermission": {"description": "Setup step indicator - permission"},
|
|
"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?",
|
|
"csvImportTracks": "{count} tracks from CSV",
|
|
"@csvImportTracks": {
|
|
"description": "Label shown in quality picker for CSV import",
|
|
"placeholders": {
|
|
"count": {"type": "int"}
|
|
}
|
|
},
|
|
"@dialogImportPlaylistMessage": {
|
|
"description": "Dialog message - import playlist confirmation",
|
|
"placeholders": {
|
|
"count": {"type": "int"}
|
|
}
|
|
},
|
|
|
|
"snackbarAddedToQueue": "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"}
|
|
}
|
|
},
|
|
"snackbarAlreadyInLibrary": "\"{trackName}\" already exists in your library",
|
|
"@snackbarAlreadyInLibrary": {
|
|
"description": "Snackbar - track already exists in local library",
|
|
"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"},
|
|
"filenameShowAdvancedTags": "Show advanced tags",
|
|
"@filenameShowAdvancedTags": {
|
|
"description": "Toggle label for showing advanced filename tags"
|
|
},
|
|
"filenameShowAdvancedTagsDescription": "Enable formatted tags for track padding and date patterns",
|
|
"@filenameShowAdvancedTagsDescription": {
|
|
"description": "Description for advanced filename tag toggle"
|
|
},
|
|
|
|
"folderOrganization": "Folder Organization",
|
|
"@folderOrganization": {"description": "Setting title - folder structure"},
|
|
"folderOrganizationNone": "No organization",
|
|
"@folderOrganizationNone": {"description": "Folder option - flat structure"},
|
|
"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"},
|
|
"sectionLyrics": "Lyrics",
|
|
"@sectionLyrics": {"description": "Settings section header"},
|
|
|
|
"lyricsMode": "Lyrics Mode",
|
|
"@lyricsMode": {"description": "Setting - how to save lyrics"},
|
|
"lyricsModeDescription": "Choose how lyrics are saved with your downloads",
|
|
"@lyricsModeDescription": {"description": "Lyrics mode picker description"},
|
|
"lyricsModeEmbed": "Embed in file",
|
|
"@lyricsModeEmbed": {"description": "Lyrics mode option - embed in audio file"},
|
|
"lyricsModeEmbedSubtitle": "Lyrics stored inside FLAC metadata",
|
|
"@lyricsModeEmbedSubtitle": {"description": "Subtitle for embed option"},
|
|
"lyricsModeExternal": "External .lrc file",
|
|
"@lyricsModeExternal": {"description": "Lyrics mode option - separate LRC file"},
|
|
"lyricsModeExternalSubtitle": "Separate .lrc file for players like Samsung Music",
|
|
"@lyricsModeExternalSubtitle": {"description": "Subtitle for external option"},
|
|
"lyricsModeBoth": "Both",
|
|
"@lyricsModeBoth": {"description": "Lyrics mode option - embed and external"},
|
|
"lyricsModeBothSubtitle": "Embed and save .lrc file",
|
|
"@lyricsModeBothSubtitle": {"description": "Subtitle for both option"},
|
|
|
|
"sectionColor": "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"},
|
|
"trackGenre": "Genre",
|
|
"@trackGenre": {"description": "Metadata label - music genre"},
|
|
"trackLabel": "Label",
|
|
"@trackLabel": {"description": "Metadata label - record label"},
|
|
"trackCopyright": "Copyright",
|
|
"@trackCopyright": {"description": "Metadata label - copyright information"},
|
|
"trackDownloaded": "Downloaded",
|
|
"@trackDownloaded": {"description": "Metadata label - download date"},
|
|
"trackCopyLyrics": "Copy lyrics",
|
|
"@trackCopyLyrics": {"description": "Action - copy lyrics to clipboard"},
|
|
"trackLyricsNotAvailable": "Lyrics not available for this track",
|
|
"@trackLyricsNotAvailable": {"description": "Message when lyrics not found"},
|
|
"trackLyricsTimeout": "Request timed out. Try again later.",
|
|
"@trackLyricsTimeout": {"description": "Message when lyrics request times out"},
|
|
"trackLyricsLoadFailed": "Failed to load lyrics",
|
|
"@trackLyricsLoadFailed": {"description": "Message when lyrics loading fails"},
|
|
"trackEmbedLyrics": "Embed Lyrics",
|
|
"@trackEmbedLyrics": {"description": "Action - embed lyrics into audio file"},
|
|
"trackLyricsEmbedded": "Lyrics embedded successfully",
|
|
"@trackLyricsEmbedded": {"description": "Snackbar - lyrics saved to file"},
|
|
"trackInstrumental": "Instrumental track",
|
|
"@trackInstrumental": {"description": "Message when track is instrumental (no lyrics)"},
|
|
"trackCopiedToClipboard": "Copied to clipboard",
|
|
"@trackCopiedToClipboard": {"description": "Snackbar - content copied"},
|
|
"trackDeleteConfirmTitle": "Remove from device?",
|
|
"@trackDeleteConfirmTitle": {"description": "Delete confirmation title"},
|
|
"trackDeleteConfirmMessage": "This will permanently delete the downloaded file and remove it from your history.",
|
|
"@trackDeleteConfirmMessage": {"description": "Delete confirmation message"},
|
|
"trackCannotOpen": "Cannot open: {message}",
|
|
"@trackCannotOpen": {
|
|
"description": "Error opening file",
|
|
"placeholders": {
|
|
"message": {"type": "String"}
|
|
}
|
|
},
|
|
|
|
"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"},
|
|
"qualityLossy": "Lossy",
|
|
"@qualityLossy": {"description": "Quality option - lossy format (MP3/Opus)"},
|
|
"qualityLossyMp3Subtitle": "MP3 320kbps (converted from FLAC)",
|
|
"@qualityLossyMp3Subtitle": {"description": "Technical spec for lossy MP3"},
|
|
"qualityLossyOpusSubtitle": "Opus 128kbps (converted from FLAC)",
|
|
"@qualityLossyOpusSubtitle": {"description": "Technical spec for lossy Opus"},
|
|
"enableLossyOption": "Enable Lossy Option",
|
|
"@enableLossyOption": {"description": "Setting - enable lossy quality option"},
|
|
"enableLossyOptionSubtitleOn": "Lossy quality option is available",
|
|
"@enableLossyOptionSubtitleOn": {"description": "Subtitle when lossy is enabled"},
|
|
"enableLossyOptionSubtitleOff": "Downloads FLAC then converts to lossy format",
|
|
"@enableLossyOptionSubtitleOff": {"description": "Subtitle when lossy is disabled"},
|
|
"lossyFormat": "Lossy Format",
|
|
"@lossyFormat": {"description": "Setting - choose lossy format"},
|
|
"lossyFormatDescription": "Choose the lossy format for conversion",
|
|
"@lossyFormatDescription": {"description": "Description for lossy format picker"},
|
|
"lossyFormatMp3Subtitle": "320kbps, best compatibility",
|
|
"@lossyFormatMp3Subtitle": {"description": "MP3 format description"},
|
|
"lossyFormatOpusSubtitle": "128kbps, better quality at smaller size",
|
|
"@lossyFormatOpusSubtitle": {"description": "Opus format description"},
|
|
"qualityNote": "Actual quality depends on track availability from the service",
|
|
"@qualityNote": {"description": "Note about quality availability"},
|
|
"youtubeQualityNote": "YouTube provides lossy audio only. Not part of lossless fallback.",
|
|
"@youtubeQualityNote": {"description": "Note for YouTube service explaining lossy-only quality"},
|
|
|
|
"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"},
|
|
"downloadUseAlbumArtistForFolders": "Use Album Artist for folders",
|
|
"@downloadUseAlbumArtistForFolders": {"description": "Setting - choose whether artist folders use Album Artist or Track Artist"},
|
|
"downloadUseAlbumArtistForFoldersAlbumSubtitle": "Artist folders use Album Artist when available",
|
|
"@downloadUseAlbumArtistForFoldersAlbumSubtitle": {"description": "Subtitle when Album Artist is used for folder naming"},
|
|
"downloadUseAlbumArtistForFoldersTrackSubtitle": "Artist folders use Track Artist only",
|
|
"@downloadUseAlbumArtistForFoldersTrackSubtitle": {"description": "Subtitle when Track Artist is used for folder naming"},
|
|
"downloadUsePrimaryArtistOnly": "Primary artist only for folders",
|
|
"@downloadUsePrimaryArtistOnly": {"description": "Setting - strip featured artists from folder name"},
|
|
"downloadUsePrimaryArtistOnlyEnabled": "Featured artists removed from folder name (e.g. Justin Bieber, Quavo → Justin Bieber)",
|
|
"@downloadUsePrimaryArtistOnlyEnabled": {"description": "Subtitle when primary artist only is enabled"},
|
|
"downloadUsePrimaryArtistOnlyDisabled": "Full artist string used for folder name",
|
|
"@downloadUsePrimaryArtistOnlyDisabled": {"description": "Subtitle when primary artist only is disabled"},
|
|
"downloadSaveFormat": "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"},
|
|
"queueExportFailed": "Export",
|
|
"@queueExportFailed": {"description": "Button - export failed downloads to TXT"},
|
|
"queueExportFailedSuccess": "Failed downloads exported to TXT file",
|
|
"@queueExportFailedSuccess": {"description": "Success message after exporting failed downloads"},
|
|
"queueExportFailedClear": "Clear Failed",
|
|
"@queueExportFailedClear": {"description": "Action to clear failed downloads after export"},
|
|
"queueExportFailedError": "Failed to export downloads",
|
|
"@queueExportFailedError": {"description": "Error message when export fails"},
|
|
"settingsAutoExportFailed": "Auto-export failed downloads",
|
|
"@settingsAutoExportFailed": {"description": "Setting toggle for auto-export"},
|
|
"settingsAutoExportFailedSubtitle": "Save failed downloads to TXT file automatically",
|
|
"@settingsAutoExportFailedSubtitle": {"description": "Subtitle for auto-export setting"},
|
|
|
|
"settingsDownloadNetwork": "Download Network",
|
|
"@settingsDownloadNetwork": {"description": "Setting for network type preference"},
|
|
"settingsDownloadNetworkAny": "WiFi + Mobile Data",
|
|
"@settingsDownloadNetworkAny": {"description": "Network option - use any connection"},
|
|
"settingsDownloadNetworkWifiOnly": "WiFi Only",
|
|
"@settingsDownloadNetworkWifiOnly": {"description": "Network option - only use WiFi"},
|
|
"settingsDownloadNetworkSubtitle": "Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.",
|
|
"@settingsDownloadNetworkSubtitle": {"description": "Subtitle explaining network preference"},
|
|
|
|
"queueEmpty": "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"},
|
|
"albumFolderArtistAlbumSingles": "Artist / Album + Singles",
|
|
"@albumFolderArtistAlbumSingles": {"description": "Album folder option with singles inside artist"},
|
|
"albumFolderArtistAlbumSinglesSubtitle": "Artist/Album/ and Artist/Singles/",
|
|
"@albumFolderArtistAlbumSinglesSubtitle": {"description": "Folder structure example"},
|
|
|
|
"downloadedAlbumDeleteSelected": "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"},
|
|
"downloadedAlbumDiscHeader": "Disc {discNumber}",
|
|
"@downloadedAlbumDiscHeader": {
|
|
"description": "Header for disc separator in multi-disc albums",
|
|
"placeholders": {
|
|
"discNumber": {"type": "int", "example": "1"}
|
|
}
|
|
},
|
|
|
|
"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"},
|
|
"recentEmpty": "No recent items yet",
|
|
"@recentEmpty": {"description": "Empty state text for recent access list"},
|
|
"recentShowAllDownloads": "Show All Downloads",
|
|
"@recentShowAllDownloads": {
|
|
"description": "Button label to unhide hidden downloads in recent access"
|
|
},
|
|
|
|
"recentPlaylistInfo": "Playlist: {name}",
|
|
"@recentPlaylistInfo": {
|
|
"description": "Snackbar message when tapping playlist in recent access",
|
|
"placeholders": {
|
|
"name": {"type": "String", "description": "Playlist name"}
|
|
}
|
|
},
|
|
"errorGeneric": "Error: {message}",
|
|
"@errorGeneric": {
|
|
"description": "Generic error message format",
|
|
"placeholders": {
|
|
"message": {"type": "String", "description": "Error message"}
|
|
}
|
|
},
|
|
|
|
"discographyDownload": "Download Discography",
|
|
"@discographyDownload": {"description": "Button - download artist discography"},
|
|
"discographyDownloadAll": "Download All",
|
|
"@discographyDownloadAll": {"description": "Option - download entire discography"},
|
|
"discographyDownloadAllSubtitle": "{count} tracks from {albumCount} releases",
|
|
"@discographyDownloadAllSubtitle": {
|
|
"description": "Subtitle showing total tracks and albums",
|
|
"placeholders": {
|
|
"count": {"type": "int"},
|
|
"albumCount": {"type": "int"}
|
|
}
|
|
},
|
|
"discographyAlbumsOnly": "Albums Only",
|
|
"@discographyAlbumsOnly": {"description": "Option - download only albums"},
|
|
"discographyAlbumsOnlySubtitle": "{count} tracks from {albumCount} albums",
|
|
"@discographyAlbumsOnlySubtitle": {
|
|
"description": "Subtitle showing album tracks count",
|
|
"placeholders": {
|
|
"count": {"type": "int"},
|
|
"albumCount": {"type": "int"}
|
|
}
|
|
},
|
|
"discographySinglesOnly": "Singles & EPs Only",
|
|
"@discographySinglesOnly": {"description": "Option - download only singles"},
|
|
"discographySinglesOnlySubtitle": "{count} tracks from {albumCount} singles",
|
|
"@discographySinglesOnlySubtitle": {
|
|
"description": "Subtitle showing singles tracks count",
|
|
"placeholders": {
|
|
"count": {"type": "int"},
|
|
"albumCount": {"type": "int"}
|
|
}
|
|
},
|
|
"discographySelectAlbums": "Select Albums...",
|
|
"@discographySelectAlbums": {"description": "Option - manually select albums to download"},
|
|
"discographySelectAlbumsSubtitle": "Choose specific albums or singles",
|
|
"@discographySelectAlbumsSubtitle": {"description": "Subtitle for select albums option"},
|
|
"discographyFetchingTracks": "Fetching tracks...",
|
|
"@discographyFetchingTracks": {"description": "Progress - fetching album tracks"},
|
|
"discographyFetchingAlbum": "Fetching {current} of {total}...",
|
|
"@discographyFetchingAlbum": {
|
|
"description": "Progress - fetching specific album",
|
|
"placeholders": {
|
|
"current": {"type": "int"},
|
|
"total": {"type": "int"}
|
|
}
|
|
},
|
|
"discographySelectedCount": "{count} selected",
|
|
"@discographySelectedCount": {
|
|
"description": "Selection count badge",
|
|
"placeholders": {
|
|
"count": {"type": "int"}
|
|
}
|
|
},
|
|
"discographyDownloadSelected": "Download Selected",
|
|
"@discographyDownloadSelected": {"description": "Button - download selected albums"},
|
|
"discographyAddedToQueue": "Added {count} tracks to queue",
|
|
"@discographyAddedToQueue": {
|
|
"description": "Snackbar - tracks added from discography",
|
|
"placeholders": {
|
|
"count": {"type": "int"}
|
|
}
|
|
},
|
|
"discographySkippedDownloaded": "{added} added, {skipped} already downloaded",
|
|
"@discographySkippedDownloaded": {
|
|
"description": "Snackbar - with skipped tracks count",
|
|
"placeholders": {
|
|
"added": {"type": "int"},
|
|
"skipped": {"type": "int"}
|
|
}
|
|
},
|
|
"discographyNoAlbums": "No albums available",
|
|
"@discographyNoAlbums": {"description": "Error - no albums found for artist"},
|
|
"discographyFailedToFetch": "Failed to fetch some albums",
|
|
"@discographyFailedToFetch": {"description": "Error - some albums failed to load"},
|
|
|
|
"sectionStorageAccess": "Storage Access",
|
|
"@sectionStorageAccess": {"description": "Section header for storage access settings"},
|
|
"allFilesAccess": "All Files Access",
|
|
"@allFilesAccess": {"description": "Toggle for MANAGE_EXTERNAL_STORAGE permission"},
|
|
"allFilesAccessEnabledSubtitle": "Can write to any folder",
|
|
"@allFilesAccessEnabledSubtitle": {"description": "Subtitle when all files access is enabled"},
|
|
"allFilesAccessDisabledSubtitle": "Limited to media folders only",
|
|
"@allFilesAccessDisabledSubtitle": {"description": "Subtitle when all files access is disabled"},
|
|
"allFilesAccessDescription": "Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.",
|
|
"@allFilesAccessDescription": {"description": "Description explaining when to enable all files access"},
|
|
"allFilesAccessDeniedMessage": "Permission was denied. Please enable 'All files access' manually in system settings.",
|
|
"@allFilesAccessDeniedMessage": {"description": "Message when permission is permanently denied"},
|
|
"allFilesAccessDisabledMessage": "All Files Access disabled. The app will use limited storage access.",
|
|
"@allFilesAccessDisabledMessage": {"description": "Snackbar message when user disables all files access"},
|
|
|
|
"settingsLocalLibrary": "Local Library",
|
|
"@settingsLocalLibrary": {"description": "Settings menu item - local library"},
|
|
"settingsLocalLibrarySubtitle": "Scan music & detect duplicates",
|
|
"@settingsLocalLibrarySubtitle": {"description": "Subtitle for local library settings"},
|
|
"settingsCache": "Storage & Cache",
|
|
"@settingsCache": {"description": "Settings menu item - cache management"},
|
|
"settingsCacheSubtitle": "View size and clear cached data",
|
|
"@settingsCacheSubtitle": {"description": "Subtitle for cache management menu"},
|
|
"libraryTitle": "Local Library",
|
|
"@libraryTitle": {"description": "Library settings page title"},
|
|
"libraryStatus": "Library Status",
|
|
"@libraryStatus": {"description": "Section header for library status"},
|
|
"libraryScanSettings": "Scan Settings",
|
|
"@libraryScanSettings": {"description": "Section header for scan settings"},
|
|
"libraryEnableLocalLibrary": "Enable Local Library",
|
|
"@libraryEnableLocalLibrary": {"description": "Toggle to enable library scanning"},
|
|
"libraryEnableLocalLibrarySubtitle": "Scan and track your existing music",
|
|
"@libraryEnableLocalLibrarySubtitle": {"description": "Subtitle for enable toggle"},
|
|
"libraryFolder": "Library Folder",
|
|
"@libraryFolder": {"description": "Folder selection setting"},
|
|
"libraryFolderHint": "Tap to select folder",
|
|
"@libraryFolderHint": {"description": "Placeholder when no folder selected"},
|
|
"libraryShowDuplicateIndicator": "Show Duplicate Indicator",
|
|
"@libraryShowDuplicateIndicator": {"description": "Toggle for duplicate indicator in search"},
|
|
"libraryShowDuplicateIndicatorSubtitle": "Show when searching for existing tracks",
|
|
"@libraryShowDuplicateIndicatorSubtitle": {"description": "Subtitle for duplicate indicator toggle"},
|
|
"libraryActions": "Actions",
|
|
"@libraryActions": {"description": "Section header for library actions"},
|
|
"libraryScan": "Scan Library",
|
|
"@libraryScan": {"description": "Button to start library scan"},
|
|
"libraryScanSubtitle": "Scan for audio files",
|
|
"@libraryScanSubtitle": {"description": "Subtitle for scan button"},
|
|
"libraryScanSelectFolderFirst": "Select a folder first",
|
|
"@libraryScanSelectFolderFirst": {"description": "Message when trying to scan without folder"},
|
|
"libraryCleanupMissingFiles": "Cleanup Missing Files",
|
|
"@libraryCleanupMissingFiles": {"description": "Button to remove entries for missing files"},
|
|
"libraryCleanupMissingFilesSubtitle": "Remove entries for files that no longer exist",
|
|
"@libraryCleanupMissingFilesSubtitle": {"description": "Subtitle for cleanup button"},
|
|
"libraryClear": "Clear Library",
|
|
"@libraryClear": {"description": "Button to clear all library entries"},
|
|
"libraryClearSubtitle": "Remove all scanned tracks",
|
|
"@libraryClearSubtitle": {"description": "Subtitle for clear button"},
|
|
"libraryClearConfirmTitle": "Clear Library",
|
|
"@libraryClearConfirmTitle": {"description": "Dialog title for clear confirmation"},
|
|
"libraryClearConfirmMessage": "This will remove all scanned tracks from your library. Your actual music files will not be deleted.",
|
|
"@libraryClearConfirmMessage": {"description": "Dialog message for clear confirmation"},
|
|
"libraryAbout": "About Local Library",
|
|
"@libraryAbout": {"description": "Section header for about info"},
|
|
"libraryAboutDescription": "Scans your existing music collection to detect duplicates when downloading. Supports FLAC, M4A, MP3, Opus, and OGG formats. Metadata is read from file tags when available.",
|
|
"@libraryAboutDescription": {"description": "Description of local library feature"},
|
|
"libraryTracksCount": "{count} tracks",
|
|
"@libraryTracksCount": {
|
|
"description": "Track count in library",
|
|
"placeholders": {
|
|
"count": {"type": "int"}
|
|
}
|
|
},
|
|
"libraryLastScanned": "Last scanned: {time}",
|
|
"@libraryLastScanned": {
|
|
"description": "Last scan time display",
|
|
"placeholders": {
|
|
"time": {"type": "String"}
|
|
}
|
|
},
|
|
"libraryLastScannedNever": "Never",
|
|
"@libraryLastScannedNever": {"description": "Shown when library has never been scanned"},
|
|
"libraryScanning": "Scanning...",
|
|
"@libraryScanning": {"description": "Status during scan"},
|
|
"libraryScanProgress": "{progress}% of {total} files",
|
|
"@libraryScanProgress": {
|
|
"description": "Scan progress display",
|
|
"placeholders": {
|
|
"progress": {"type": "String"},
|
|
"total": {"type": "int"}
|
|
}
|
|
},
|
|
"libraryInLibrary": "In Library",
|
|
"@libraryInLibrary": {"description": "Badge shown on tracks that exist in local library"},
|
|
"libraryRemovedMissingFiles": "Removed {count} missing files from library",
|
|
"@libraryRemovedMissingFiles": {
|
|
"description": "Snackbar after cleanup",
|
|
"placeholders": {
|
|
"count": {"type": "int"}
|
|
}
|
|
},
|
|
"libraryCleared": "Library cleared",
|
|
"@libraryCleared": {"description": "Snackbar after clearing library"},
|
|
"libraryStorageAccessRequired": "Storage Access Required",
|
|
"@libraryStorageAccessRequired": {"description": "Dialog title for storage permission"},
|
|
"libraryStorageAccessMessage": "SpotiFLAC needs storage access to scan your music library. Please grant permission in settings.",
|
|
"@libraryStorageAccessMessage": {"description": "Dialog message for storage permission"},
|
|
"libraryFolderNotExist": "Selected folder does not exist",
|
|
"@libraryFolderNotExist": {"description": "Error when folder doesn't exist"},
|
|
"librarySourceDownloaded": "Downloaded",
|
|
"@librarySourceDownloaded": {"description": "Badge for tracks downloaded via SpotiFLAC"},
|
|
"librarySourceLocal": "Local",
|
|
"@librarySourceLocal": {"description": "Badge for tracks from local library scan"},
|
|
"libraryFilterAll": "All",
|
|
"@libraryFilterAll": {"description": "Filter chip - show all library items"},
|
|
"libraryFilterDownloaded": "Downloaded",
|
|
"@libraryFilterDownloaded": {"description": "Filter chip - show only downloaded items"},
|
|
"libraryFilterLocal": "Local",
|
|
"@libraryFilterLocal": {"description": "Filter chip - show only local library items"},
|
|
|
|
"libraryFilterTitle": "Filters",
|
|
"@libraryFilterTitle": {"description": "Filter bottom sheet title"},
|
|
"libraryFilterReset": "Reset",
|
|
"@libraryFilterReset": {"description": "Reset all filters button"},
|
|
"libraryFilterApply": "Apply",
|
|
"@libraryFilterApply": {"description": "Apply filters button"},
|
|
"libraryFilterSource": "Source",
|
|
"@libraryFilterSource": {"description": "Filter section - source type"},
|
|
"libraryFilterQuality": "Quality",
|
|
"@libraryFilterQuality": {"description": "Filter section - audio quality"},
|
|
"libraryFilterQualityHiRes": "Hi-Res (24bit)",
|
|
"@libraryFilterQualityHiRes": {"description": "Filter option - high resolution audio"},
|
|
"libraryFilterQualityCD": "CD (16bit)",
|
|
"@libraryFilterQualityCD": {"description": "Filter option - CD quality audio"},
|
|
"libraryFilterQualityLossy": "Lossy",
|
|
"@libraryFilterQualityLossy": {"description": "Filter option - lossy compressed audio"},
|
|
"libraryFilterFormat": "Format",
|
|
"@libraryFilterFormat": {"description": "Filter section - file format"},
|
|
"libraryFilterDate": "Date Added",
|
|
"@libraryFilterDate": {"description": "Filter section - date range"},
|
|
"libraryFilterDateToday": "Today",
|
|
"@libraryFilterDateToday": {"description": "Filter option - today only"},
|
|
"libraryFilterDateWeek": "This Week",
|
|
"@libraryFilterDateWeek": {"description": "Filter option - this week"},
|
|
"libraryFilterDateMonth": "This Month",
|
|
"@libraryFilterDateMonth": {"description": "Filter option - this month"},
|
|
"libraryFilterDateYear": "This Year",
|
|
"@libraryFilterDateYear": {"description": "Filter option - this year"},
|
|
"libraryFilterSort": "Sort",
|
|
"@libraryFilterSort": {"description": "Filter section - sort order"},
|
|
"libraryFilterSortLatest": "Latest",
|
|
"@libraryFilterSortLatest": {"description": "Sort option - newest first"},
|
|
"libraryFilterSortOldest": "Oldest",
|
|
"@libraryFilterSortOldest": {"description": "Sort option - oldest first"},
|
|
"libraryFilterActive": "{count} filter(s) active",
|
|
"@libraryFilterActive": {
|
|
"description": "Badge showing number of active filters",
|
|
"placeholders": {
|
|
"count": {"type": "int"}
|
|
}
|
|
},
|
|
|
|
"timeJustNow": "Just now",
|
|
"@timeJustNow": {"description": "Relative time - less than a minute ago"},
|
|
"timeMinutesAgo": "{count, plural, =1{1 minute ago} other{{count} minutes ago}}",
|
|
"@timeMinutesAgo": {
|
|
"description": "Relative time - minutes ago",
|
|
"placeholders": {
|
|
"count": {"type": "int"}
|
|
}
|
|
},
|
|
"timeHoursAgo": "{count, plural, =1{1 hour ago} other{{count} hours ago}}",
|
|
"@timeHoursAgo": {
|
|
"description": "Relative time - hours ago",
|
|
"placeholders": {
|
|
"count": {"type": "int"}
|
|
}
|
|
},
|
|
|
|
"storageSwitchTitle": "Switch Storage Mode",
|
|
"@storageSwitchTitle": {"description": "Dialog title when switching storage mode"},
|
|
"storageSwitchToSafTitle": "Switch to SAF Storage?",
|
|
"@storageSwitchToSafTitle": {"description": "Dialog title when switching to SAF"},
|
|
"storageSwitchToAppTitle": "Switch to App Storage?",
|
|
"@storageSwitchToAppTitle": {"description": "Dialog title when switching to app storage"},
|
|
"storageSwitchToSafMessage": "Your existing downloads will remain in the current location and stay accessible.\n\nNew downloads will be saved to your selected SAF folder.",
|
|
"@storageSwitchToSafMessage": {"description": "Explanation when switching to SAF"},
|
|
"storageSwitchToAppMessage": "Your existing downloads will remain in the current SAF location and stay accessible.\n\nNew downloads will be saved to Music/SpotiFLAC folder.",
|
|
"@storageSwitchToAppMessage": {"description": "Explanation when switching to app storage"},
|
|
"storageSwitchExistingDownloads": "Existing Downloads",
|
|
"@storageSwitchExistingDownloads": {"description": "Section header for existing downloads info"},
|
|
"storageSwitchExistingDownloadsInfo": "{count} tracks in {mode} storage",
|
|
"@storageSwitchExistingDownloadsInfo": {
|
|
"description": "Info about existing downloads count",
|
|
"placeholders": {
|
|
"count": {"type": "int"},
|
|
"mode": {"type": "String"}
|
|
}
|
|
},
|
|
"storageSwitchNewDownloads": "New Downloads",
|
|
"@storageSwitchNewDownloads": {"description": "Section header for new downloads info"},
|
|
"storageSwitchNewDownloadsLocation": "Will be saved to: {location}",
|
|
"@storageSwitchNewDownloadsLocation": {
|
|
"description": "Shows where new downloads will go",
|
|
"placeholders": {
|
|
"location": {"type": "String"}
|
|
}
|
|
},
|
|
"storageSwitchContinue": "Continue",
|
|
"@storageSwitchContinue": {"description": "Button to proceed with storage switch"},
|
|
"storageSwitchSelectFolder": "Select SAF Folder",
|
|
"@storageSwitchSelectFolder": {"description": "Button to select SAF folder"},
|
|
"storageAppStorage": "App Storage",
|
|
"@storageAppStorage": {"description": "Label for app storage mode"},
|
|
"storageSafStorage": "SAF Storage",
|
|
"@storageSafStorage": {"description": "Label for SAF storage mode"},
|
|
"storageModeBadge": "Storage: {mode}",
|
|
"@storageModeBadge": {
|
|
"description": "Badge showing storage mode for a track",
|
|
"placeholders": {
|
|
"mode": {"type": "String"}
|
|
}
|
|
},
|
|
"storageStatsTitle": "Storage Statistics",
|
|
"@storageStatsTitle": {"description": "Section title for storage stats"},
|
|
"storageStatsAppCount": "{count} tracks in App Storage",
|
|
"@storageStatsAppCount": {
|
|
"description": "Count of tracks in app storage",
|
|
"placeholders": {
|
|
"count": {"type": "int"}
|
|
}
|
|
},
|
|
"storageStatsSafCount": "{count} tracks in SAF Storage",
|
|
"@storageStatsSafCount": {
|
|
"description": "Count of tracks in SAF storage",
|
|
"placeholders": {
|
|
"count": {"type": "int"}
|
|
}
|
|
},
|
|
"storageModeInfo": "Your files are stored in multiple locations",
|
|
"@storageModeInfo": {"description": "Info when user has files in both storage modes"},
|
|
|
|
"tutorialWelcomeTitle": "Welcome to SpotiFLAC!",
|
|
"@tutorialWelcomeTitle": {"description": "Tutorial welcome page title"},
|
|
"tutorialWelcomeDesc": "Let's learn how to download your favorite music in lossless quality. This quick tutorial will show you the basics.",
|
|
"@tutorialWelcomeDesc": {"description": "Tutorial welcome page description"},
|
|
"tutorialWelcomeTip1": "Download music from Spotify, Deezer, or paste any supported URL",
|
|
"@tutorialWelcomeTip1": {"description": "Tutorial welcome tip 1"},
|
|
"tutorialWelcomeTip2": "Get FLAC quality audio from Tidal, Qobuz, or Amazon Music",
|
|
"@tutorialWelcomeTip2": {"description": "Tutorial welcome tip 2"},
|
|
"tutorialWelcomeTip3": "Automatic metadata, cover art, and lyrics embedding",
|
|
"@tutorialWelcomeTip3": {"description": "Tutorial welcome tip 3"},
|
|
|
|
"tutorialSearchTitle": "Finding Music",
|
|
"@tutorialSearchTitle": {"description": "Tutorial search page title"},
|
|
"tutorialSearchDesc": "There are two easy ways to find music you want to download.",
|
|
"@tutorialSearchDesc": {"description": "Tutorial search page description"},
|
|
"tutorialSearchTip1": "Paste a Spotify or Deezer URL directly in the search box",
|
|
"@tutorialSearchTip1": {"description": "Tutorial search tip 1"},
|
|
"tutorialSearchTip2": "Or type the song name, artist, or album to search",
|
|
"@tutorialSearchTip2": {"description": "Tutorial search tip 2"},
|
|
"tutorialSearchTip3": "Supports tracks, albums, playlists, and artist pages",
|
|
"@tutorialSearchTip3": {"description": "Tutorial search tip 3"},
|
|
|
|
"tutorialDownloadTitle": "Downloading Music",
|
|
"@tutorialDownloadTitle": {"description": "Tutorial download page title"},
|
|
"tutorialDownloadDesc": "Downloading music is simple and fast. Here's how it works.",
|
|
"@tutorialDownloadDesc": {"description": "Tutorial download page description"},
|
|
"tutorialDownloadTip1": "Tap the download button next to any track to start downloading",
|
|
"@tutorialDownloadTip1": {"description": "Tutorial download tip 1"},
|
|
"tutorialDownloadTip2": "Choose your preferred quality (FLAC, Hi-Res, or MP3)",
|
|
"@tutorialDownloadTip2": {"description": "Tutorial download tip 2"},
|
|
"tutorialDownloadTip3": "Download entire albums or playlists with one tap",
|
|
"@tutorialDownloadTip3": {"description": "Tutorial download tip 3"},
|
|
|
|
"tutorialLibraryTitle": "Your Library",
|
|
"@tutorialLibraryTitle": {"description": "Tutorial library page title"},
|
|
"tutorialLibraryDesc": "All your downloaded music is organized in the Library tab.",
|
|
"@tutorialLibraryDesc": {"description": "Tutorial library page description"},
|
|
"tutorialLibraryTip1": "View download progress and queue in the Library tab",
|
|
"@tutorialLibraryTip1": {"description": "Tutorial library tip 1"},
|
|
"tutorialLibraryTip2": "Tap any track to play it with your music player",
|
|
"@tutorialLibraryTip2": {"description": "Tutorial library tip 2"},
|
|
"tutorialLibraryTip3": "Switch between list and grid view for better browsing",
|
|
"@tutorialLibraryTip3": {"description": "Tutorial library tip 3"},
|
|
|
|
"tutorialExtensionsTitle": "Extensions",
|
|
"@tutorialExtensionsTitle": {"description": "Tutorial extensions page title"},
|
|
"tutorialExtensionsDesc": "Extend the app's capabilities with community extensions.",
|
|
"@tutorialExtensionsDesc": {"description": "Tutorial extensions page description"},
|
|
"tutorialExtensionsTip1": "Browse the Store tab to discover useful extensions",
|
|
"@tutorialExtensionsTip1": {"description": "Tutorial extensions tip 1"},
|
|
"tutorialExtensionsTip2": "Add new download providers or search sources",
|
|
"@tutorialExtensionsTip2": {"description": "Tutorial extensions tip 2"},
|
|
"tutorialExtensionsTip3": "Get lyrics, enhanced metadata, and more features",
|
|
"@tutorialExtensionsTip3": {"description": "Tutorial extensions tip 3"},
|
|
|
|
"tutorialSettingsTitle": "Customize Your Experience",
|
|
"@tutorialSettingsTitle": {"description": "Tutorial settings page title"},
|
|
"tutorialSettingsDesc": "Personalize the app in Settings to match your preferences.",
|
|
"@tutorialSettingsDesc": {"description": "Tutorial settings page description"},
|
|
"tutorialSettingsTip1": "Change download location and folder organization",
|
|
"@tutorialSettingsTip1": {"description": "Tutorial settings tip 1"},
|
|
"tutorialSettingsTip2": "Set default audio quality and format preferences",
|
|
"@tutorialSettingsTip2": {"description": "Tutorial settings tip 2"},
|
|
"tutorialSettingsTip3": "Customize app theme and appearance",
|
|
"@tutorialSettingsTip3": {"description": "Tutorial settings tip 3"},
|
|
|
|
"tutorialReadyMessage": "You're all set! Start downloading your favorite music now.",
|
|
"@tutorialReadyMessage": {"description": "Tutorial completion message"},
|
|
"tutorialExample": "EXAMPLE",
|
|
"@tutorialExample": {"description": "Example label in tutorial"},
|
|
|
|
"libraryForceFullScan": "Force Full Scan",
|
|
"@libraryForceFullScan": {"description": "Button to force a complete rescan of library"},
|
|
"libraryForceFullScanSubtitle": "Rescan all files, ignoring cache",
|
|
"@libraryForceFullScanSubtitle": {"description": "Subtitle for force full scan button"},
|
|
|
|
"cleanupOrphanedDownloads": "Cleanup Orphaned Downloads",
|
|
"@cleanupOrphanedDownloads": {"description": "Button to remove history entries for deleted files"},
|
|
"cleanupOrphanedDownloadsSubtitle": "Remove history entries for files that no longer exist",
|
|
"@cleanupOrphanedDownloadsSubtitle": {"description": "Subtitle for orphaned cleanup button"},
|
|
"cleanupOrphanedDownloadsResult": "Removed {count} orphaned entries from history",
|
|
"@cleanupOrphanedDownloadsResult": {
|
|
"description": "Snackbar after orphan cleanup",
|
|
"placeholders": {
|
|
"count": {"type": "int"}
|
|
}
|
|
},
|
|
"cleanupOrphanedDownloadsNone": "No orphaned entries found",
|
|
"@cleanupOrphanedDownloadsNone": {"description": "Snackbar when no orphans found"},
|
|
|
|
"cacheTitle": "Storage & Cache",
|
|
"@cacheTitle": {"description": "Cache management page title"},
|
|
"cacheSummaryTitle": "Cache overview",
|
|
"@cacheSummaryTitle": {"description": "Heading for cache summary card"},
|
|
"cacheSummarySubtitle": "Clearing cache will not remove downloaded music files.",
|
|
"@cacheSummarySubtitle": {"description": "Helper text for cache summary card"},
|
|
"cacheEstimatedTotal": "Estimated cache usage: {size}",
|
|
"@cacheEstimatedTotal": {
|
|
"description": "Total cache size shown in summary",
|
|
"placeholders": {
|
|
"size": {"type": "String"}
|
|
}
|
|
},
|
|
"cacheSectionStorage": "Cached Data",
|
|
"@cacheSectionStorage": {"description": "Section header for cache entries"},
|
|
"cacheSectionMaintenance": "Maintenance",
|
|
"@cacheSectionMaintenance": {"description": "Section header for cleanup actions"},
|
|
"cacheAppDirectory": "App cache directory",
|
|
"@cacheAppDirectory": {"description": "Cache item title for app cache directory"},
|
|
"cacheAppDirectoryDesc": "HTTP responses, WebView data, and other temporary app data.",
|
|
"@cacheAppDirectoryDesc": {"description": "Description of what app cache directory contains"},
|
|
"cacheTempDirectory": "Temporary directory",
|
|
"@cacheTempDirectory": {"description": "Cache item title for temporary files directory"},
|
|
"cacheTempDirectoryDesc": "Temporary files from downloads and audio conversion.",
|
|
"@cacheTempDirectoryDesc": {"description": "Description of what temporary directory contains"},
|
|
"cacheCoverImage": "Cover image cache",
|
|
"@cacheCoverImage": {"description": "Cache item title for persistent cover images"},
|
|
"cacheCoverImageDesc": "Downloaded album and track cover art. Will re-download when viewed.",
|
|
"@cacheCoverImageDesc": {"description": "Description of what cover image cache contains"},
|
|
"cacheLibraryCover": "Library cover cache",
|
|
"@cacheLibraryCover": {"description": "Cache item title for local library cover art images"},
|
|
"cacheLibraryCoverDesc": "Cover art extracted from local music files. Will re-extract on next scan.",
|
|
"@cacheLibraryCoverDesc": {"description": "Description of what library cover cache contains"},
|
|
"cacheExploreFeed": "Explore feed cache",
|
|
"@cacheExploreFeed": {"description": "Cache item title for explore home feed cache"},
|
|
"cacheExploreFeedDesc": "Explore tab content (new releases, trending). Will refresh on next visit.",
|
|
"@cacheExploreFeedDesc": {"description": "Description of what explore feed cache contains"},
|
|
"cacheTrackLookup": "Track lookup cache",
|
|
"@cacheTrackLookup": {"description": "Cache item title for track ID lookup cache"},
|
|
"cacheTrackLookupDesc": "Spotify/Deezer track ID lookups. Clearing may slow next few searches.",
|
|
"@cacheTrackLookupDesc": {"description": "Description of what track lookup cache contains"},
|
|
"cacheCleanupUnusedDesc": "Remove orphaned download history and library entries for missing files.",
|
|
"@cacheCleanupUnusedDesc": {"description": "Description of what cleanup unused data does"},
|
|
"cacheNoData": "No cached data",
|
|
"@cacheNoData": {"description": "Label when cache category has no data"},
|
|
"cacheSizeWithFiles": "{size} in {count} files",
|
|
"@cacheSizeWithFiles": {
|
|
"description": "Cache size and file count",
|
|
"placeholders": {
|
|
"size": {"type": "String"},
|
|
"count": {"type": "int"}
|
|
}
|
|
},
|
|
"cacheSizeOnly": "{size}",
|
|
"@cacheSizeOnly": {
|
|
"description": "Cache size only",
|
|
"placeholders": {
|
|
"size": {"type": "String"}
|
|
}
|
|
},
|
|
"cacheEntries": "{count} entries",
|
|
"@cacheEntries": {
|
|
"description": "Track cache entry count",
|
|
"placeholders": {
|
|
"count": {"type": "int"}
|
|
}
|
|
},
|
|
"cacheClearSuccess": "Cleared: {target}",
|
|
"@cacheClearSuccess": {
|
|
"description": "Snackbar after clearing selected cache",
|
|
"placeholders": {
|
|
"target": {"type": "String"}
|
|
}
|
|
},
|
|
"cacheClearConfirmTitle": "Clear cache?",
|
|
"@cacheClearConfirmTitle": {"description": "Dialog title before clearing one cache category"},
|
|
"cacheClearConfirmMessage": "This will clear cached data for {target}. Downloaded music files will not be deleted.",
|
|
"@cacheClearConfirmMessage": {
|
|
"description": "Dialog message before clearing selected cache",
|
|
"placeholders": {
|
|
"target": {"type": "String"}
|
|
}
|
|
},
|
|
"cacheClearAllConfirmTitle": "Clear all cache?",
|
|
"@cacheClearAllConfirmTitle": {"description": "Dialog title before clearing all caches"},
|
|
"cacheClearAllConfirmMessage": "This will clear all cache categories on this page. Downloaded music files will not be deleted.",
|
|
"@cacheClearAllConfirmMessage": {"description": "Dialog message before clearing all caches"},
|
|
"cacheClearAll": "Clear all cache",
|
|
"@cacheClearAll": {"description": "Button label to clear all caches"},
|
|
"cacheCleanupUnused": "Cleanup unused data",
|
|
"@cacheCleanupUnused": {"description": "Action title for cleaning unused entries"},
|
|
"cacheCleanupUnusedSubtitle": "Remove orphaned download history and missing library entries",
|
|
"@cacheCleanupUnusedSubtitle": {"description": "Subtitle for cleanup unused data action"},
|
|
"cacheCleanupResult": "Cleanup completed: {downloadCount} orphaned downloads, {libraryCount} missing library entries",
|
|
"@cacheCleanupResult": {
|
|
"description": "Snackbar after unused data cleanup",
|
|
"placeholders": {
|
|
"downloadCount": {"type": "int"},
|
|
"libraryCount": {"type": "int"}
|
|
}
|
|
},
|
|
"cacheRefreshStats": "Refresh stats",
|
|
"@cacheRefreshStats": {"description": "Button label to refresh cache statistics"},
|
|
|
|
"trackSaveCoverArt": "Save Cover Art",
|
|
"@trackSaveCoverArt": {"description": "Menu action - save album cover art as file"},
|
|
"trackSaveCoverArtSubtitle": "Save album art as .jpg file",
|
|
"@trackSaveCoverArtSubtitle": {"description": "Subtitle for save cover art action"},
|
|
"trackSaveLyrics": "Save Lyrics (.lrc)",
|
|
"@trackSaveLyrics": {"description": "Menu action - save lyrics as .lrc file"},
|
|
"trackSaveLyricsSubtitle": "Fetch and save lyrics as .lrc file",
|
|
"@trackSaveLyricsSubtitle": {"description": "Subtitle for save lyrics action"},
|
|
"trackSaveLyricsProgress": "Saving lyrics...",
|
|
"@trackSaveLyricsProgress": {"description": "Snackbar while saving lyrics to file"},
|
|
"trackReEnrich": "Re-enrich Metadata",
|
|
"@trackReEnrich": {"description": "Menu action - re-embed metadata into audio file"},
|
|
"trackReEnrichSubtitle": "Re-embed metadata without re-downloading",
|
|
"@trackReEnrichSubtitle": {"description": "Subtitle for re-enrich metadata action"},
|
|
"trackReEnrichOnlineSubtitle": "Search metadata online and embed into file",
|
|
"@trackReEnrichOnlineSubtitle": {"description": "Subtitle for re-enrich metadata action for local items"},
|
|
"trackEditMetadata": "Edit Metadata",
|
|
"@trackEditMetadata": {"description": "Menu action - edit embedded metadata"},
|
|
"trackCoverSaved": "Cover art saved to {fileName}",
|
|
"@trackCoverSaved": {
|
|
"description": "Snackbar after cover art saved",
|
|
"placeholders": {
|
|
"fileName": {"type": "String"}
|
|
}
|
|
},
|
|
"trackCoverNoSource": "No cover art source available",
|
|
"@trackCoverNoSource": {"description": "Snackbar when no cover art URL or embedded cover"},
|
|
"trackLyricsSaved": "Lyrics saved to {fileName}",
|
|
"@trackLyricsSaved": {
|
|
"description": "Snackbar after lyrics saved",
|
|
"placeholders": {
|
|
"fileName": {"type": "String"}
|
|
}
|
|
},
|
|
"trackReEnrichProgress": "Re-enriching metadata...",
|
|
"@trackReEnrichProgress": {"description": "Snackbar while re-enriching metadata"},
|
|
"trackReEnrichSearching": "Searching metadata online...",
|
|
"@trackReEnrichSearching": {"description": "Snackbar while searching metadata from internet for local items"},
|
|
"trackReEnrichSuccess": "Metadata re-enriched successfully",
|
|
"@trackReEnrichSuccess": {"description": "Snackbar after successful re-enrichment"},
|
|
"trackReEnrichFfmpegFailed": "FFmpeg metadata embed failed",
|
|
"@trackReEnrichFfmpegFailed": {"description": "Snackbar when FFmpeg embed fails for MP3/Opus"},
|
|
"trackSaveFailed": "Failed: {error}",
|
|
"@trackSaveFailed": {
|
|
"description": "Snackbar when save operation fails",
|
|
"placeholders": {
|
|
"error": {"type": "String"}
|
|
}
|
|
},
|
|
|
|
"trackConvertFormat": "Convert Format",
|
|
"@trackConvertFormat": {"description": "Menu item - convert audio format"},
|
|
"trackConvertFormatSubtitle": "Convert to MP3 or Opus",
|
|
"@trackConvertFormatSubtitle": {"description": "Subtitle for convert format menu item"},
|
|
"trackConvertTitle": "Convert Audio",
|
|
"@trackConvertTitle": {"description": "Title of convert bottom sheet"},
|
|
"trackConvertTargetFormat": "Target Format",
|
|
"@trackConvertTargetFormat": {"description": "Label for format selection"},
|
|
"trackConvertBitrate": "Bitrate",
|
|
"@trackConvertBitrate": {"description": "Label for bitrate selection"},
|
|
"trackConvertConfirmTitle": "Confirm Conversion",
|
|
"@trackConvertConfirmTitle": {"description": "Confirmation dialog title"},
|
|
"trackConvertConfirmMessage": "Convert from {sourceFormat} to {targetFormat} at {bitrate}?\n\nThe original file will be deleted after conversion.",
|
|
"@trackConvertConfirmMessage": {
|
|
"description": "Confirmation dialog message",
|
|
"placeholders": {
|
|
"sourceFormat": {"type": "String"},
|
|
"targetFormat": {"type": "String"},
|
|
"bitrate": {"type": "String"}
|
|
}
|
|
},
|
|
"trackConvertConverting": "Converting audio...",
|
|
"@trackConvertConverting": {"description": "Snackbar while converting"},
|
|
"trackConvertSuccess": "Converted to {format} successfully",
|
|
"@trackConvertSuccess": {
|
|
"description": "Snackbar after successful conversion",
|
|
"placeholders": {
|
|
"format": {"type": "String"}
|
|
}
|
|
},
|
|
"trackConvertFailed": "Conversion failed",
|
|
"@trackConvertFailed": {"description": "Snackbar when conversion fails"}
|
|
}
|