diff --git a/lib/l10n/arb/app_en.arb b/lib/l10n/arb/app_en.arb index e3f4a6d0..a5d4d5ac 100644 --- a/lib/l10n/arb/app_en.arb +++ b/lib/l10n/arb/app_en.arb @@ -1,6 +1,6 @@ { "@@locale": "en", - "@@last_modified": "2026-01-16", + "@@last_modified": "2026-04-28", "appName": "SpotiFLAC", "@appName": { "description": "App name - DO NOT TRANSLATE" @@ -99,7 +99,7 @@ }, "downloadFolderOrganization": "Folder Organization", "@downloadFolderOrganization": { - "description": "Setting for folder structure" + "description": "Title of the folder organization picker bottom sheet" }, "appearanceTitle": "Appearance", "@appearanceTitle": { @@ -145,7 +145,7 @@ "@optionsPrimaryProvider": { "description": "Main search provider setting" }, - "optionsPrimaryProviderSubtitle": "Service used when searching by track name.", + "optionsPrimaryProviderSubtitle": "Service used for searching by track or album name", "@optionsPrimaryProviderSubtitle": { "description": "Subtitle for primary provider" }, @@ -194,7 +194,7 @@ "@optionsEmbedLyrics": { "description": "Embed lyrics in audio files" }, - "optionsEmbedLyricsSubtitle": "Embed synced lyrics into FLAC files", + "optionsEmbedLyricsSubtitle": "Save synced lyrics alongside your downloaded tracks", "@optionsEmbedLyricsSubtitle": { "description": "Subtitle for embed lyrics" }, @@ -729,7 +729,7 @@ }, "dialogDownload": "Download", "@dialogDownload": { - "description": "Dialog button - download action" + "description": "Confirm button in Download All dialog" }, "dialogDiscard": "Discard", "@dialogDiscard": { @@ -1449,11 +1449,11 @@ "@settingsAppearanceSubtitle": { "description": "Appearance settings description" }, - "settingsDownloadSubtitle": "Service, quality, filename format", + "settingsDownloadSubtitle": "Service, quality, fallback", "@settingsDownloadSubtitle": { "description": "Download settings description" }, - "settingsOptionsSubtitle": "Fallback, lyrics, cover art, updates", + "settingsOptionsSubtitle": "Fallback, metadata, lyrics, cover art", "@settingsOptionsSubtitle": { "description": "Options settings description" }, @@ -3592,18 +3592,17 @@ } } }, - "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Artist folders use Album Artist when available", + "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Folder named after Album Artist tag", "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { - "description": "Subtitle when Album Artist is used for folder naming" + "description": "Subtitle when album artist is used for folder names" }, - "downloadUseAlbumArtistForFoldersTrackSubtitle": "Artist folders use Track Artist only", + "downloadUseAlbumArtistForFoldersTrackSubtitle": "Folder named after Track Artist tag", "@downloadUseAlbumArtistForFoldersTrackSubtitle": { - "description": "Subtitle when Track Artist is used for folder naming" + "description": "Subtitle when track artist is used for folder names" }, - - "lyricsProvidersTitle": "Lyrics Providers", + "lyricsProvidersTitle": "Lyrics Provider Priority", "@lyricsProvidersTitle": { - "description": "Title for the lyrics provider priority page" + "description": "Settings item title for lyrics provider order" }, "lyricsProvidersDescription": "Enable, disable and reorder lyrics sources. Providers are tried top-to-bottom until lyrics are found.", "@lyricsProvidersDescription": { @@ -3667,7 +3666,6 @@ "@lyricsProviderExtensionDesc": { "description": "Generic description for extension-based lyrics providers" }, - "safMigrationTitle": "Storage Update Required", "@safMigrationTitle": { "description": "Title of SAF migration dialog" @@ -3684,16 +3682,14 @@ "@safMigrationSuccess": { "description": "Snackbar after successfully migrating to SAF" }, - - "settingsDonate": "Donate", + "settingsDonate": "Support Development", "@settingsDonate": { - "description": "Settings menu item - donate" + "description": "Settings menu item - donate page" }, - "settingsDonateSubtitle": "Support SpotiFLAC-Mobile development", + "settingsDonateSubtitle": "Buy the developer a coffee", "@settingsDonateSubtitle": { "description": "Subtitle for donate menu item" }, - "tooltipLoveAll": "Love All", "@tooltipLoveAll": { "description": "Tooltip for the Love All button on album/playlist screens" @@ -3720,10 +3716,9 @@ } } }, - "dialogDownloadAllTitle": "Download All", "@dialogDownloadAllTitle": { - "description": "Title of the Download All confirmation dialog" + "description": "Dialog title for bulk download confirmation" }, "dialogDownloadAllMessage": "Download {count} tracks?", "@dialogDownloadAllMessage": { @@ -3734,11 +3729,6 @@ } } }, - "dialogDownload": "Download", - "@dialogDownload": { - "description": "Confirm button in Download All dialog" - }, - "homeSkipAlreadyDownloaded": "Skip already downloaded songs", "@homeSkipAlreadyDownloaded": { "description": "Checkbox label in import dialog to skip already-downloaded songs" @@ -3751,7 +3741,6 @@ "@homeAlbumInfoUnavailable": { "description": "Snackbar when album info cannot be loaded" }, - "snackbarLoadingCueSheet": "Loading CUE sheet...", "@snackbarLoadingCueSheet": { "description": "Snackbar while loading a CUE sheet file" @@ -3781,190 +3770,181 @@ "@snackbarNoActionDefined": { "description": "Snackbar when an extension button has no action configured" }, - "noTracksFoundForAlbum": "No tracks found for this album", "@noTracksFoundForAlbum": { "description": "Empty state message when an album has no tracks" }, - - "downloadLocationSubtitle": "Choose storage mode for downloaded files.", + "downloadLocationSubtitle": "Choose where to save your downloaded tracks", "@downloadLocationSubtitle": { - "description": "Subtitle text in Android download location bottom sheet" + "description": "Subtitle shown in the download location picker sheet" }, - "storageModeAppFolder": "App folder (non-SAF)", + "storageModeAppFolder": "App Folder (Recommended)", "@storageModeAppFolder": { - "description": "Storage mode option - use legacy app folder" + "description": "Storage mode option - app-managed folder" }, - "storageModeAppFolderSubtitle": "Use default Music/SpotiFLAC path", + "storageModeAppFolderSubtitle": "Saves to Music/SpotiFLAC by default", "@storageModeAppFolderSubtitle": { "description": "Subtitle for app folder storage mode" }, - "storageModeSaf": "SAF folder", + "storageModeSaf": "Custom Folder (SAF)", "@storageModeSaf": { - "description": "Storage mode option - use Android SAF picker" + "description": "Storage mode option - Storage Access Framework" }, - "storageModeSafSubtitle": "Pick folder via Android Storage Access Framework", + "storageModeSafSubtitle": "Pick any folder, including SD card", "@storageModeSafSubtitle": { "description": "Subtitle for SAF storage mode" }, - "downloadFilenameDescription": "Customize how your files are named.", + "downloadFilenameDescription": "Use {artist}, {title}, {album}, {track}, {year}, {date}, {disc} as placeholders.", "@downloadFilenameDescription": { - "description": "Description text in filename format bottom sheet" + "description": "Description shown in filename format editor" }, "downloadFilenameInsertTag": "Tap to insert tag:", "@downloadFilenameInsertTag": { "description": "Label above filename tag chips" }, - "downloadSeparateSinglesEnabled": "Albums/ and Singles/ folders", + "downloadSeparateSinglesEnabled": "Singles and EPs saved in a separate folder", "@downloadSeparateSinglesEnabled": { - "description": "Subtitle when separate singles folder is enabled" + "description": "Subtitle when separate singles folder is on" }, - "downloadSeparateSinglesDisabled": "All files in same structure", + "downloadSeparateSinglesDisabled": "Singles and albums saved in the same folder", "@downloadSeparateSinglesDisabled": { - "description": "Subtitle when separate singles folder is disabled" + "description": "Subtitle when separate singles folder is off" }, "downloadArtistNameFilters": "Artist Name Filters", "@downloadArtistNameFilters": { "description": "Setting title for artist folder filter options" }, - "downloadCreatePlaylistSourceFolder": "Create playlist source folder", + "downloadCreatePlaylistSourceFolder": "Playlist Source Folder", "@downloadCreatePlaylistSourceFolder": { - "description": "Setting title for adding a playlist folder prefix before the normal organization structure" + "description": "Setting to create a subfolder per playlist source" }, - "downloadCreatePlaylistSourceFolderEnabled": "Playlist downloads use Playlist/ plus your normal folder structure.", + "downloadCreatePlaylistSourceFolderEnabled": "A subfolder is created for each playlist", "@downloadCreatePlaylistSourceFolderEnabled": { - "description": "Subtitle when playlist source folder prefix is enabled" + "description": "Subtitle when playlist folder is enabled" }, - "downloadCreatePlaylistSourceFolderDisabled": "Playlist downloads use the normal folder structure only.", + "downloadCreatePlaylistSourceFolderDisabled": "All tracks saved directly to download folder", "@downloadCreatePlaylistSourceFolderDisabled": { - "description": "Subtitle when playlist source folder prefix is disabled" + "description": "Subtitle when playlist folder is disabled" }, - "downloadCreatePlaylistSourceFolderRedundant": "By Playlist already places downloads inside a playlist folder.", + "downloadCreatePlaylistSourceFolderRedundant": "Handled by folder organization setting", "@downloadCreatePlaylistSourceFolderRedundant": { - "description": "Subtitle when playlist folder prefix setting is redundant because folder organization is already by playlist" + "description": "Subtitle when folder organization is already set to playlist" }, "downloadSongLinkRegion": "SongLink Region", "@downloadSongLinkRegion": { - "description": "Setting title for SongLink country region" + "description": "Setting for SongLink region used during fallback resolution" }, - "downloadNetworkCompatibilityMode": "Network compatibility mode", + "downloadNetworkCompatibilityMode": "Network Compatibility Mode", "@downloadNetworkCompatibilityMode": { - "description": "Setting title for network compatibility toggle" + "description": "Setting for legacy TLS/network handling" }, - "downloadNetworkCompatibilityModeEnabled": "Enabled: try HTTP + accept invalid TLS certificates (unsafe)", + "downloadNetworkCompatibilityModeEnabled": "Using legacy TLS settings for older networks", "@downloadNetworkCompatibilityModeEnabled": { - "description": "Subtitle when network compatibility mode is enabled" + "description": "Subtitle when network compatibility mode is on" }, - "downloadNetworkCompatibilityModeDisabled": "Off: strict HTTPS certificate validation (recommended)", + "downloadNetworkCompatibilityModeDisabled": "Using standard network settings", "@downloadNetworkCompatibilityModeDisabled": { - "description": "Subtitle when network compatibility mode is disabled" + "description": "Subtitle when network compatibility mode is off" }, - "downloadSelectServiceToEnable": "Select a built-in service to enable", + "downloadSelectServiceToEnable": "Select Tidal or Qobuz to enable this option", "@downloadSelectServiceToEnable": { - "description": "Hint shown instead of Ask-quality subtitle when no built-in service selected" + "description": "Subtitle when quality picker is disabled due to extension service" }, - - "downloadSelectTidalQobuz": "Select Tidal or Qobuz above to configure quality", + "downloadSelectTidalQobuz": "Select Tidal or Qobuz to choose audio quality", "@downloadSelectTidalQobuz": { - "description": "Info hint when non-Tidal/Qobuz service is selected" + "description": "Info shown when a non-built-in service is selected" }, - "downloadEmbedLyricsDisabled": "Disabled while Embed Metadata is turned off", + "downloadEmbedLyricsDisabled": "Enable metadata embedding first", "@downloadEmbedLyricsDisabled": { - "description": "Subtitle for Embed Lyrics when Embed Metadata is disabled" + "description": "Subtitle when lyrics embedding is blocked by metadata toggle" }, "downloadNeteaseIncludeTranslation": "Netease: Include Translation", "@downloadNeteaseIncludeTranslation": { - "description": "Toggle title for including Netease translated lyrics" + "description": "Setting to include translated lyrics from Netease" }, - "downloadNeteaseIncludeTranslationEnabled": "Append translated lyrics when available", + "downloadNeteaseIncludeTranslationEnabled": "Chinese translation lines included", "@downloadNeteaseIncludeTranslationEnabled": { - "description": "Subtitle when Netease translation is enabled" + "description": "Subtitle when Netease translation is on" }, - "downloadNeteaseIncludeTranslationDisabled": "Use original lyrics only", + "downloadNeteaseIncludeTranslationDisabled": "Original lyrics only", "@downloadNeteaseIncludeTranslationDisabled": { - "description": "Subtitle when Netease translation is disabled" + "description": "Subtitle when Netease translation is off" }, "downloadNeteaseIncludeRomanization": "Netease: Include Romanization", "@downloadNeteaseIncludeRomanization": { - "description": "Toggle title for including Netease romanized lyrics" + "description": "Setting to include romanized lyrics from Netease" }, - "downloadNeteaseIncludeRomanizationEnabled": "Append romanized lyrics when available", + "downloadNeteaseIncludeRomanizationEnabled": "Romanization lines included", "@downloadNeteaseIncludeRomanizationEnabled": { - "description": "Subtitle when Netease romanization is enabled" + "description": "Subtitle when Netease romanization is on" }, - "downloadNeteaseIncludeRomanizationDisabled": "Disabled", + "downloadNeteaseIncludeRomanizationDisabled": "No romanization", "@downloadNeteaseIncludeRomanizationDisabled": { - "description": "Subtitle when Netease romanization is disabled" + "description": "Subtitle when Netease romanization is off" }, - "downloadAppleQqMultiPerson": "Apple/QQ Multi-Person Word-by-Word", + "downloadAppleQqMultiPerson": "Apple / QQ: Multi-Person Lyrics", "@downloadAppleQqMultiPerson": { - "description": "Toggle title for Apple/QQ multi-person word-by-word lyrics" + "description": "Setting for word-by-word multi-person lyrics from Apple Music and QQ Music" }, - "downloadAppleQqMultiPersonEnabled": "Enable v1/v2 speaker and [bg:] tags", + "downloadAppleQqMultiPersonEnabled": "Speaker labels included for duets and group tracks", "@downloadAppleQqMultiPersonEnabled": { - "description": "Subtitle when multi-person word-by-word is enabled" + "description": "Subtitle when multi-person lyrics is on" }, - "downloadAppleQqMultiPersonDisabled": "Simplified word-by-word formatting", + "downloadAppleQqMultiPersonDisabled": "Standard lyrics without speaker labels", "@downloadAppleQqMultiPersonDisabled": { - "description": "Subtitle when multi-person word-by-word is disabled" + "description": "Subtitle when multi-person lyrics is off" }, "downloadMusixmatchLanguage": "Musixmatch Language", "@downloadMusixmatchLanguage": { - "description": "Setting title for Musixmatch language preference" + "description": "Setting for Musixmatch lyrics translation language" }, - "downloadMusixmatchLanguageAuto": "Auto (original)", + "downloadMusixmatchLanguageAuto": "Auto (original language)", "@downloadMusixmatchLanguageAuto": { - "description": "Option label when Musixmatch uses original language" + "description": "Subtitle when no language is set" }, - "downloadFilterContributing": "Filter contributing artists in Album Artist", + "downloadFilterContributing": "Filter Contributing Artists", "@downloadFilterContributing": { - "description": "Toggle title for filtering contributing artists in Album Artist metadata" + "description": "Setting to strip contributing artists from Album Artist folder name" }, - "downloadFilterContributingEnabled": "Album Artist metadata uses primary artist only", + "downloadFilterContributingEnabled": "Contributing artists removed from Album Artist folder name", "@downloadFilterContributingEnabled": { - "description": "Subtitle when contributing artist filter is enabled" + "description": "Subtitle when contributing artist filter is on" }, - "downloadFilterContributingDisabled": "Keep full Album Artist metadata value", + "downloadFilterContributingDisabled": "Full Album Artist string used", "@downloadFilterContributingDisabled": { - "description": "Subtitle when contributing artist filter is disabled" + "description": "Subtitle when contributing artist filter is off" }, - - "downloadProvidersNoneEnabled": "None enabled", + "downloadProvidersNoneEnabled": "No providers enabled", "@downloadProvidersNoneEnabled": { - "description": "Subtitle for lyrics providers setting when no providers are enabled" + "description": "Shown when no lyrics providers are active" }, "downloadMusixmatchLanguageCode": "Language code", "@downloadMusixmatchLanguageCode": { - "description": "Label for the Musixmatch language code text field" + "description": "Label for Musixmatch language input field" }, - "downloadMusixmatchLanguageHint": "auto / en / es / ja", + "downloadMusixmatchLanguageHint": "e.g. en, de, ja", "@downloadMusixmatchLanguageHint": { - "description": "Hint text for the Musixmatch language code field" + "description": "Placeholder for Musixmatch language input" }, - "downloadMusixmatchLanguageDesc": "Set preferred language code (example: en, es, ja). Leave empty for auto.", + "downloadMusixmatchLanguageDesc": "Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.", "@downloadMusixmatchLanguageDesc": { - "description": "Description in the Musixmatch language picker" + "description": "Description in Musixmatch language picker" }, "downloadMusixmatchAuto": "Auto", "@downloadMusixmatchAuto": { - "description": "Button to reset Musixmatch language to automatic" + "description": "Button to clear Musixmatch language (use auto)" }, - - "downloadNetworkAnySubtitle": "WiFi + Mobile Data", + "downloadNetworkAnySubtitle": "Use WiFi or mobile data", "@downloadNetworkAnySubtitle": { - "description": "Subtitle for 'Any' network mode option" + "description": "Subtitle for any-network option in picker" }, - "downloadNetworkWifiOnlySubtitle": "Pause downloads on mobile data", + "downloadNetworkWifiOnlySubtitle": "Downloads pause when on mobile data", "@downloadNetworkWifiOnlySubtitle": { - "description": "Subtitle for 'WiFi only' network mode option" + "description": "Subtitle for WiFi-only option in picker" }, - "downloadSongLinkRegionDesc": "Used as userCountry for SongLink API lookup.", + "downloadSongLinkRegionDesc": "Region used when resolving track links via SongLink. Choose the country where your streaming services are available.", "@downloadSongLinkRegionDesc": { - "description": "Description in the SongLink region picker" - }, - "downloadFolderOrganization": "Folder Organization", - "@downloadFolderOrganization": { - "description": "Title of the folder organization picker bottom sheet" + "description": "Description in SongLink region picker" }, "snackbarUnsupportedAudioFormat": "Unsupported audio format", "@snackbarUnsupportedAudioFormat": { @@ -3974,10 +3954,6 @@ "@cacheRefresh": { "description": "Tooltip for refresh button on cache management page" }, - "dialogDownloadAllTitle": "Download All", - "@dialogDownloadAllTitle": { - "description": "Dialog title for bulk download confirmation" - }, "dialogDownloadPlaylistsMessage": "Download {trackCount} {trackCount, plural, =1{track} other{tracks}} from {playlistCount} {playlistCount, plural, =1{playlist} other{playlists}}?", "@dialogDownloadPlaylistsMessage": { "description": "Dialog message for bulk playlist download confirmation", @@ -4105,7 +4081,6 @@ "@editMetadataSelectEmpty": { "description": "Button to select only fields that are currently empty" }, - "queueDownloadingCount": "Downloading ({count})", "@queueDownloadingCount": { "description": "Header for active downloads section with count", @@ -4229,7 +4204,6 @@ "@audioAnalysisSamples": { "description": "Total samples metric label" }, - "extensionsSearchWith": "Search with {providerName}", "@extensionsSearchWith": { "description": "Extensions page - subtitle for built-in search provider option", @@ -4249,7 +4223,7 @@ }, "extensionsHomeFeedAuto": "Auto", "@extensionsHomeFeedAuto": { - "description": "Extensions page - home feed provider option: auto" + "description": "Label for auto-selected search provider" }, "extensionsHomeFeedAutoSubtitle": "Automatically select the best available", "@extensionsHomeFeedAutoSubtitle": { @@ -4268,7 +4242,6 @@ "@extensionsNoHomeFeedExtensions": { "description": "Extensions page - shown when no installed extension has home feed" }, - "sortAlphaAsc": "A-Z", "@sortAlphaAsc": { "description": "Sort option - alphabetical ascending" @@ -4294,7 +4267,6 @@ "@cancelDownloadKeep": { "description": "Dialog button - keep the active download (do not cancel)" }, - "metadataSaveFailedFfmpeg": "Failed to save metadata via FFmpeg", "@metadataSaveFailedFfmpeg": { "description": "Snackbar error when FFmpeg fails to write metadata" @@ -4303,7 +4275,6 @@ "@metadataSaveFailedStorage": { "description": "Snackbar error when writing metadata file back to storage fails" }, - "snackbarFolderPickerFailed": "Failed to open folder picker: {error}", "@snackbarFolderPickerFailed": { "description": "Snackbar shown when folder picker fails to open", @@ -4313,7 +4284,6 @@ } } }, - "errorLoadAlbum": "Failed to load album", "@errorLoadAlbum": { "description": "Error state shown when album fails to load" @@ -4326,7 +4296,6 @@ "@errorLoadArtist": { "description": "Error state shown when artist fails to load" }, - "notifChannelDownloadName": "Download Progress", "@notifChannelDownloadName": { "description": "Android notification channel name for download progress" @@ -4540,5 +4509,77 @@ "notifUpdateFailedBody": "Could not download update. Try again later.", "@notifUpdateFailedBody": { "description": "Notification body when app update download fails" + }, + "settingsFiles": "Files & Folders", + "@settingsFiles": { + "description": "Settings menu item - file and folder settings" + }, + "settingsFilesSubtitle": "Download location, filename, folder structure", + "@settingsFilesSubtitle": { + "description": "Subtitle for files & folders settings" + }, + "settingsMetadata": "Metadata", + "@settingsMetadata": { + "description": "Settings menu item - metadata settings" + }, + "settingsMetadataSubtitle": "Cover art, tags, ReplayGain, providers", + "@settingsMetadataSubtitle": { + "description": "Subtitle for metadata settings" + }, + "settingsLyrics": "Lyrics", + "@settingsLyrics": { + "description": "Settings menu item - lyrics settings" + }, + "settingsLyricsSubtitle": "Embed, mode, providers, language options", + "@settingsLyricsSubtitle": { + "description": "Subtitle for lyrics settings" + }, + "settingsApp": "App", + "@settingsApp": { + "description": "Settings menu item - app settings" + }, + "settingsAppSubtitle": "Updates, data, extension repo, debug", + "@settingsAppSubtitle": { + "description": "Subtitle for app settings" + }, + "sectionMetadataProviders": "Providers", + "@sectionMetadataProviders": { + "description": "Settings section header for metadata providers" + }, + "sectionDuplicates": "Duplicates", + "@sectionDuplicates": { + "description": "Settings section header for deduplication" + }, + "sectionLyricsProviderOptions": "Provider Options", + "@sectionLyricsProviderOptions": { + "description": "Settings section header for per-provider lyrics options" + }, + "metadataProvidersTitle": "Metadata Provider Priority", + "@metadataProvidersTitle": { + "description": "Settings item title for metadata provider order" + }, + "metadataProvidersSubtitle": "Drag to set search and metadata source order", + "@metadataProvidersSubtitle": { + "description": "Subtitle for metadata provider priority item" + }, + "downloadDeduplication": "Skip Duplicate Downloads", + "@downloadDeduplication": { + "description": "Setting - skip tracks already in download history" + }, + "downloadDeduplicationEnabled": "Already-downloaded tracks will be skipped", + "@downloadDeduplicationEnabled": { + "description": "Subtitle when deduplication is on" + }, + "downloadDeduplicationDisabled": "All tracks will be downloaded regardless of history", + "@downloadDeduplicationDisabled": { + "description": "Subtitle when deduplication is off" + }, + "downloadFallbackExtensions": "Fallback Extensions", + "@downloadFallbackExtensions": { + "description": "Settings item for configuring fallback extension providers" + }, + "downloadFallbackExtensionsSubtitle": "Choose which extensions can be used as fallback", + "@downloadFallbackExtensionsSubtitle": { + "description": "Subtitle for fallback extensions item" } -} +} \ No newline at end of file