diff --git a/lib/l10n/arb/app_fr.arb b/lib/l10n/arb/app_fr.arb index aaa57b9..841895b 100644 --- a/lib/l10n/arb/app_fr.arb +++ b/lib/l10n/arb/app_fr.arb @@ -308,6 +308,38 @@ "@optionsAutoFallbackSubtitle": { "description": "Subtitle for auto fallback" }, + "optionsAutoSkipUnavailableTracks": "Auto Skip Unavailable Tracks", + "@optionsAutoSkipUnavailableTracks": { + "description": "Toggle to skip to the next queue track when current track stream resolution fails" + }, + "optionsAutoSkipUnavailableTracksSubtitleOn": "Automatically skip to the next queue track when a stream cannot be resolved.", + "@optionsAutoSkipUnavailableTracksSubtitleOn": { + "description": "Subtitle when auto skip on resolve failure is enabled" + }, + "optionsAutoSkipUnavailableTracksSubtitleOff": "Stop on failed track resolution and show an error.", + "@optionsAutoSkipUnavailableTracksSubtitleOff": { + "description": "Subtitle when auto skip on resolve failure is disabled" + }, + "optionsInteractionMode": "Interaction Mode", + "@optionsInteractionMode": { + "description": "Tap behavior mode for track lists" + }, + "modeDownloader": "Downloader Mode", + "@modeDownloader": { + "description": "Interaction mode where taps queue downloads" + }, + "modeDownloaderSubtitle": "Tap tracks to add them to download queue", + "@modeDownloaderSubtitle": { + "description": "Subtitle for downloader interaction mode" + }, + "modeStreaming": "Streaming Mode", + "@modeStreaming": { + "description": "Interaction mode where taps start playback" + }, + "modeStreamingSubtitle": "Tap tracks to play instantly", + "@modeStreamingSubtitle": { + "description": "Subtitle for streaming interaction mode" + }, "optionsUseExtensionProviders": "Utiliser des fournisseurs d'extension", "@optionsUseExtensionProviders": { "description": "Enable extension download providers" @@ -1340,6 +1372,10 @@ "@errorNoTracksFound": { "description": "Error - search returned no results" }, + "errorSeekNotSupported": "Seeking is not supported for this live stream", + "@errorSeekNotSupported": { + "description": "Error - seek disabled for live decrypted stream" + }, "errorMissingExtensionSource": "Cannot load {item}: missing extension source", "@errorMissingExtensionSource": { "description": "Error - extension source not available", @@ -2022,6 +2058,15 @@ } } }, + "playAllCount": "Play All ({count})", + "@playAllCount": { + "description": "Play all button with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, "tracksCount": "{count, plural, =1{1 track} other{{count} tracks}}", "@tracksCount": { "description": "Track count display", @@ -2931,10 +2976,18 @@ "@discographyDownload": { "description": "Button - download artist discography" }, + "discographyPlay": "Play Discography", + "@discographyPlay": { + "description": "Button - play artist discography" + }, "discographyDownloadAll": "Download All", "@discographyDownloadAll": { "description": "Option - download entire discography" }, + "discographyPlayAll": "Play All", + "@discographyPlayAll": { + "description": "Option - play entire discography" + }, "discographyDownloadAllSubtitle": "{count} tracks from {albumCount} releases", "@discographyDownloadAllSubtitle": { "description": "Subtitle showing total tracks and albums", @@ -3016,6 +3069,10 @@ "@discographyDownloadSelected": { "description": "Button - download selected albums" }, + "discographyPlaySelected": "Play Selected", + "@discographyPlaySelected": { + "description": "Button - play selected albums" + }, "discographyAddedToQueue": "Added {count} tracks to queue", "@discographyAddedToQueue": { "description": "Snackbar - tracks added from discography", @@ -3182,6 +3239,15 @@ } } }, + "libraryTracksUnit": "{count, plural, =1{track} other{tracks}}", + "@libraryTracksUnit": { + "description": "Unit label for tracks count (without the number itself)", + "placeholders": { + "count": { + "type": "int" + } + } + }, "libraryLastScanned": "Last scanned: {time}", "@libraryLastScanned": { "description": "Last scan time display", @@ -3809,7 +3875,7 @@ "@trackSaveLyricsProgress": { "description": "Snackbar while saving lyrics to file" }, - "trackReEnrich": "Re-enrich Metadata", + "trackReEnrich": "Re-enrich", "@trackReEnrich": { "description": "Menu action - re-embed metadata into audio file" }, @@ -3927,5 +3993,542 @@ "trackConvertFailed": "Conversion failed", "@trackConvertFailed": { "description": "Snackbar when conversion fails" + }, + "actionCreate": "Create", + "@actionCreate": { + "description": "Generic action button - create" + }, + "collectionFoldersTitle": "My folders", + "@collectionFoldersTitle": { + "description": "Library section title for custom folders" + }, + "collectionWishlist": "Wishlist", + "@collectionWishlist": { + "description": "Custom folder for saved tracks to download later" + }, + "collectionLoved": "Loved", + "@collectionLoved": { + "description": "Custom folder for favorite tracks" + }, + "collectionPlaylists": "Playlists", + "@collectionPlaylists": { + "description": "Custom user playlists folder" + }, + "collectionPlaylist": "Playlist", + "@collectionPlaylist": { + "description": "Single playlist label" + }, + "collectionAddToPlaylist": "Add to playlist", + "@collectionAddToPlaylist": { + "description": "Action to add a track to user playlist" + }, + "collectionCreatePlaylist": "Create playlist", + "@collectionCreatePlaylist": { + "description": "Action to create a new playlist" + }, + "collectionNoPlaylistsYet": "No playlists yet", + "@collectionNoPlaylistsYet": { + "description": "Empty state title when user has no playlists" + }, + "collectionNoPlaylistsSubtitle": "Create a playlist to start categorizing tracks", + "@collectionNoPlaylistsSubtitle": { + "description": "Empty state subtitle when user has no playlists" + }, + "collectionPlaylistTracks": "{count, plural, =1{1 track} other{{count} tracks}}", + "@collectionPlaylistTracks": { + "description": "Track count label for custom playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionAddedToPlaylist": "Added to \"{playlistName}\"", + "@collectionAddedToPlaylist": { + "description": "Snackbar after adding track to playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "collectionAlreadyInPlaylist": "Already in \"{playlistName}\"", + "@collectionAlreadyInPlaylist": { + "description": "Snackbar when track already exists in playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "collectionPlaylistCreated": "Playlist created", + "@collectionPlaylistCreated": { + "description": "Snackbar after creating playlist" + }, + "collectionPlaylistNameHint": "Playlist name", + "@collectionPlaylistNameHint": { + "description": "Hint text for playlist name input" + }, + "collectionPlaylistNameRequired": "Playlist name is required", + "@collectionPlaylistNameRequired": { + "description": "Validation error for empty playlist name" + }, + "collectionRenamePlaylist": "Rename playlist", + "@collectionRenamePlaylist": { + "description": "Action to rename playlist" + }, + "collectionDeletePlaylist": "Delete playlist", + "@collectionDeletePlaylist": { + "description": "Action to delete playlist" + }, + "collectionDeletePlaylistMessage": "Delete \"{playlistName}\" and all tracks inside it?", + "@collectionDeletePlaylistMessage": { + "description": "Confirmation message for deleting playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "collectionPlaylistDeleted": "Playlist deleted", + "@collectionPlaylistDeleted": { + "description": "Snackbar after deleting playlist" + }, + "collectionPlaylistRenamed": "Playlist renamed", + "@collectionPlaylistRenamed": { + "description": "Snackbar after renaming playlist" + }, + "collectionWishlistEmptyTitle": "Wishlist is empty", + "@collectionWishlistEmptyTitle": { + "description": "Wishlist empty state title" + }, + "collectionWishlistEmptySubtitle": "Tap + on tracks to save what you want to download later", + "@collectionWishlistEmptySubtitle": { + "description": "Wishlist empty state subtitle" + }, + "collectionLovedEmptyTitle": "Loved folder is empty", + "@collectionLovedEmptyTitle": { + "description": "Loved empty state title" + }, + "collectionLovedEmptySubtitle": "Tap love on tracks to keep your favorites", + "@collectionLovedEmptySubtitle": { + "description": "Loved empty state subtitle" + }, + "collectionPlaylistEmptyTitle": "Playlist is empty", + "@collectionPlaylistEmptyTitle": { + "description": "Playlist empty state title" + }, + "collectionPlaylistEmptySubtitle": "Long-press + on any track to add it here", + "@collectionPlaylistEmptySubtitle": { + "description": "Playlist empty state subtitle" + }, + "collectionRemoveFromPlaylist": "Remove from playlist", + "@collectionRemoveFromPlaylist": { + "description": "Tooltip for removing track from playlist" + }, + "collectionRemoveFromFolder": "Remove from folder", + "@collectionRemoveFromFolder": { + "description": "Tooltip for removing track from wishlist/loved folder" + }, + "collectionRemoved": "\"{trackName}\" removed", + "@collectionRemoved": { + "description": "Snackbar after removing a track from a collection", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "collectionAddedToLoved": "\"{trackName}\" added to Loved", + "@collectionAddedToLoved": { + "description": "Snackbar after adding track to loved folder", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "collectionRemovedFromLoved": "\"{trackName}\" removed from Loved", + "@collectionRemovedFromLoved": { + "description": "Snackbar after removing track from loved folder", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "collectionAddedToWishlist": "\"{trackName}\" added to Wishlist", + "@collectionAddedToWishlist": { + "description": "Snackbar after adding track to wishlist", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "collectionRemovedFromWishlist": "\"{trackName}\" removed from Wishlist", + "@collectionRemovedFromWishlist": { + "description": "Snackbar after removing track from wishlist", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "trackOptionAddToLoved": "Add to Loved", + "@trackOptionAddToLoved": { + "description": "Bottom sheet action label - add track to loved folder" + }, + "trackOptionRemoveFromLoved": "Remove from Loved", + "@trackOptionRemoveFromLoved": { + "description": "Bottom sheet action label - remove track from loved folder" + }, + "trackOptionAddToWishlist": "Add to Wishlist", + "@trackOptionAddToWishlist": { + "description": "Bottom sheet action label - add track to wishlist" + }, + "trackOptionRemoveFromWishlist": "Remove from Wishlist", + "@trackOptionRemoveFromWishlist": { + "description": "Bottom sheet action label - remove track from wishlist" + }, + "collectionPlaylistChangeCover": "Change cover image", + "@collectionPlaylistChangeCover": { + "description": "Bottom sheet action to pick a custom cover image for a playlist" + }, + "collectionPlaylistRemoveCover": "Remove cover image", + "@collectionPlaylistRemoveCover": { + "description": "Bottom sheet action to remove custom cover image from a playlist" + }, + "selectionShareCount": "Share {count} {count, plural, =1{track} other{tracks}}", + "@selectionShareCount": { + "description": "Share button text with count in selection mode", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "selectionShareNoFiles": "No shareable files found", + "@selectionShareNoFiles": { + "description": "Snackbar when no selected files exist on disk" + }, + "selectionConvertCount": "Convert {count} {count, plural, =1{track} other{tracks}}", + "@selectionConvertCount": { + "description": "Convert button text with count in selection mode", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "selectionConvertNoConvertible": "No convertible tracks selected", + "@selectionConvertNoConvertible": { + "description": "Snackbar when no selected tracks support conversion" + }, + "selectionBatchConvertConfirmTitle": "Batch Convert", + "@selectionBatchConvertConfirmTitle": { + "description": "Confirmation dialog title for batch conversion" + }, + "selectionBatchConvertConfirmMessage": "Convert {count} {count, plural, =1{track} other{tracks}} to {format} at {bitrate}?\n\nOriginal files will be deleted after conversion.", + "@selectionBatchConvertConfirmMessage": { + "description": "Confirmation dialog message for batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "selectionBatchConvertProgress": "Converting {current} of {total}...", + "@selectionBatchConvertProgress": { + "description": "Snackbar during batch conversion progress", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "selectionBatchConvertSuccess": "Converted {success} of {total} tracks to {format}", + "@selectionBatchConvertSuccess": { + "description": "Snackbar after batch conversion completes", + "placeholders": { + "success": { + "type": "int" + }, + "total": { + "type": "int" + }, + "format": { + "type": "String" + } + } + }, + "setupModeSelectionTitle": "Choose Your Mode", + "@setupModeSelectionTitle": { + "description": "Title for mode selection step in setup wizard" + }, + "setupModeSelectionDescription": "How would you like to use SpotiFLAC? You can always change this later in Settings.", + "@setupModeSelectionDescription": { + "description": "Description for mode selection step" + }, + "setupModeDownloaderTitle": "Downloader", + "@setupModeDownloaderTitle": { + "description": "Title for downloader mode option" + }, + "setupModeDownloaderFeature1": "Download tracks in lossless FLAC quality", + "@setupModeDownloaderFeature1": { + "description": "Downloader mode feature 1" + }, + "setupModeDownloaderFeature2": "Save music to your device for offline listening", + "@setupModeDownloaderFeature2": { + "description": "Downloader mode feature 2" + }, + "setupModeDownloaderFeature3": "Manage your local music library", + "@setupModeDownloaderFeature3": { + "description": "Downloader mode feature 3" + }, + "setupModeStreamingTitle": "Streaming", + "@setupModeStreamingTitle": { + "description": "Title for streaming mode option" + }, + "setupModeStreamingFeature1": "Stream tracks instantly without downloading", + "@setupModeStreamingFeature1": { + "description": "Streaming mode feature 1" + }, + "setupModeStreamingFeature2": "Smart Queue auto-discovers new music for you", + "@setupModeStreamingFeature2": { + "description": "Streaming mode feature 2" + }, + "setupModeStreamingFeature3": "Play any track on demand with playback controls", + "@setupModeStreamingFeature3": { + "description": "Streaming mode feature 3" + }, + "setupModeChangeableLater": "You can switch between modes anytime in Settings.", + "@setupModeChangeableLater": { + "description": "Hint that mode can be changed later" + }, + "settingsSmartQueueTitle": "Smart Queue", + "@settingsSmartQueueTitle": { + "description": "Title for Smart Queue toggle in settings" + }, + "settingsSmartQueueSubtitle": "Automatically discover and add similar tracks to your queue", + "@settingsSmartQueueSubtitle": { + "description": "Subtitle for Smart Queue toggle in settings" + }, + "whatsNewTitle": "What's New in 4.0", + "@whatsNewTitle": { + "description": "Title for the What's New screen" + }, + "whatsNewSubtitle": "SpotiFLAC has evolved — here's what changed since 3.x", + "@whatsNewSubtitle": { + "description": "Subtitle for the What's New screen" + }, + "whatsNewWelcomeTitle": "SpotiFLAC Mobile 4.0", + "@whatsNewWelcomeTitle": { + "description": "Welcome page title in What's New screen" + }, + "whatsNewWelcomeDesc": "Welcome back! This is a major update packed with new features. Swipe through to see what's changed.", + "@whatsNewWelcomeDesc": { + "description": "Welcome page description in What's New screen" + }, + "whatsNewWelcomeTip1": "New streaming mode with instant playback", + "@whatsNewWelcomeTip1": { + "description": "Welcome page tip 1" + }, + "whatsNewWelcomeTip2": "Redesigned library and full-screen player", + "@whatsNewWelcomeTip2": { + "description": "Welcome page tip 2" + }, + "whatsNewWelcomeTip3": "Batch tools, performance boosts, and more", + "@whatsNewWelcomeTip3": { + "description": "Welcome page tip 3" + }, + "whatsNewStreamingTitle": "Streaming Mode", + "@whatsNewStreamingTitle": { + "description": "What's New feature: Streaming Mode title" + }, + "whatsNewStreamingDesc": "Tap any track to play instantly — no download needed. Full-screen player with synced lyrics and media controls.", + "@whatsNewStreamingDesc": { + "description": "What's New feature: Streaming Mode description" + }, + "whatsNewSmartQueueTitle": "Smart Queue", + "@whatsNewSmartQueueTitle": { + "description": "What's New feature: Smart Queue title" + }, + "whatsNewSmartQueueDesc": "Your queue auto-curates with related tracks and artist discovery. Never run out of music.", + "@whatsNewSmartQueueDesc": { + "description": "What's New feature: Smart Queue description" + }, + "whatsNewDualModeTitle": "Dual Mode", + "@whatsNewDualModeTitle": { + "description": "What's New feature: Dual Mode title" + }, + "whatsNewDualModeDesc": "Switch between Downloader and Streaming modes anytime. All buttons adapt automatically.", + "@whatsNewDualModeDesc": { + "description": "What's New feature: Dual Mode description" + }, + "whatsNewLibraryTitle": "Redesigned Library", + "@whatsNewLibraryTitle": { + "description": "What's New feature: Library redesign title" + }, + "whatsNewLibraryDesc": "Playlist-first layout with drag-and-drop categorization, custom covers, and multi-select batch actions.", + "@whatsNewLibraryDesc": { + "description": "What's New feature: Library redesign description" + }, + "whatsNewPlayerTitle": "Full-Screen Player", + "@whatsNewPlayerTitle": { + "description": "What's New feature: Full-Screen Player title" + }, + "whatsNewPlayerDesc": "Cover art parallax, synced lyrics, playback persistence across restarts, and download button in player.", + "@whatsNewPlayerDesc": { + "description": "What's New feature: Full-Screen Player description" + }, + "whatsNewContextMenuTitle": "Long-Press Menus", + "@whatsNewContextMenuTitle": { + "description": "What's New feature: Context Menus title" + }, + "whatsNewContextMenuDesc": "Long-press any track for quick actions — add to playlist, share, convert, or re-enrich metadata.", + "@whatsNewContextMenuDesc": { + "description": "What's New feature: Context Menus description" + }, + "whatsNewPerformanceTitle": "Performance", + "@whatsNewPerformanceTitle": { + "description": "What's New feature: Performance title" + }, + "whatsNewPerformanceDesc": "Faster startup, reduced memory usage, SQLite-backed persistence, and granular UI updates.", + "@whatsNewPerformanceDesc": { + "description": "What's New feature: Performance description" + }, + "whatsNewBatchToolsTitle": "Batch Tools", + "@whatsNewBatchToolsTitle": { + "description": "What's New feature: Batch Tools title" + }, + "whatsNewBatchToolsDesc": "Multi-select share, batch convert to MP3/Opus, and batch re-enrich metadata across your library.", + "@whatsNewBatchToolsDesc": { + "description": "What's New feature: Batch Tools description" + }, + "whatsNewStreamingTip1": "Tap any track to start playing instantly", + "@whatsNewStreamingTip1": { + "description": "What's New tip: streaming instant play" + }, + "whatsNewStreamingTip2": "Synced lyrics in the full-screen player", + "@whatsNewStreamingTip2": { + "description": "What's New tip: streaming synced lyrics" + }, + "whatsNewStreamingTip3": "Download tracks directly from the player", + "@whatsNewStreamingTip3": { + "description": "What's New tip: streaming download from player" + }, + "whatsNewSmartQueueTip1": "Queue auto-fills with related tracks", + "@whatsNewSmartQueueTip1": { + "description": "What's New tip: smart queue auto-fill" + }, + "whatsNewSmartQueueTip2": "Discover new artists as you listen", + "@whatsNewSmartQueueTip2": { + "description": "What's New tip: smart queue artist discovery" + }, + "whatsNewSmartQueueTip3": "Never run out of music to play", + "@whatsNewSmartQueueTip3": { + "description": "What's New tip: smart queue endless" + }, + "whatsNewDualModeTip1": "Switch modes anytime in Settings", + "@whatsNewDualModeTip1": { + "description": "What's New tip: dual mode switch" + }, + "whatsNewDualModeTip2": "UI buttons adapt to your current mode", + "@whatsNewDualModeTip2": { + "description": "What's New tip: dual mode adaptive UI" + }, + "whatsNewDualModeTip3": "Download for offline, stream for instant play", + "@whatsNewDualModeTip3": { + "description": "What's New tip: dual mode use cases" + }, + "whatsNewLibraryTip1": "Drag and drop to organize playlists", + "@whatsNewLibraryTip1": { + "description": "What's New tip: library drag and drop" + }, + "whatsNewLibraryTip2": "Set custom cover images for playlists", + "@whatsNewLibraryTip2": { + "description": "What's New tip: library custom covers" + }, + "whatsNewLibraryTip3": "Multi-select tracks for batch actions", + "@whatsNewLibraryTip3": { + "description": "What's New tip: library multi-select" + }, + "whatsNewPlayerTip1": "Cover art with parallax scrolling effect", + "@whatsNewPlayerTip1": { + "description": "What's New tip: player parallax" + }, + "whatsNewPlayerTip2": "Playback persists across app restarts", + "@whatsNewPlayerTip2": { + "description": "What's New tip: player persistence" + }, + "whatsNewPlayerTip3": "Synced lyrics while you listen", + "@whatsNewPlayerTip3": { + "description": "What's New tip: player lyrics" + }, + "whatsNewContextMenuTip1": "Add tracks to any playlist instantly", + "@whatsNewContextMenuTip1": { + "description": "What's New tip: context menu add to playlist" + }, + "whatsNewContextMenuTip2": "Share or convert with one tap", + "@whatsNewContextMenuTip2": { + "description": "What's New tip: context menu share/convert" + }, + "whatsNewContextMenuTip3": "Re-enrich metadata when needed", + "@whatsNewContextMenuTip3": { + "description": "What's New tip: context menu re-enrich" + }, + "whatsNewBatchToolsTip1": "Share multiple tracks at once", + "@whatsNewBatchToolsTip1": { + "description": "What's New tip: batch share" + }, + "whatsNewBatchToolsTip2": "Batch convert to MP3 or Opus format", + "@whatsNewBatchToolsTip2": { + "description": "What's New tip: batch convert" + }, + "whatsNewBatchToolsTip3": "Re-enrich metadata across your library", + "@whatsNewBatchToolsTip3": { + "description": "What's New tip: batch re-enrich" + }, + "whatsNewPerformanceTip1": "Faster app startup time", + "@whatsNewPerformanceTip1": { + "description": "What's New tip: performance startup" + }, + "whatsNewPerformanceTip2": "Reduced memory usage during playback", + "@whatsNewPerformanceTip2": { + "description": "What's New tip: performance memory" + }, + "whatsNewPerformanceTip3": "SQLite-backed storage for reliability", + "@whatsNewPerformanceTip3": { + "description": "What's New tip: performance SQLite" + }, + "whatsNewReadyMessage": "You're all set — enjoy the new SpotiFLAC!", + "@whatsNewReadyMessage": { + "description": "Ready card message on last What's New page" + }, + "whatsNewGetStarted": "Let's Go", + "@whatsNewGetStarted": { + "description": "Button text to dismiss What's New screen" + }, + "whatsNewPageIndicator": "{current} of {total}", + "@whatsNewPageIndicator": { + "description": "Page indicator text in What's New screen", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } } } \ No newline at end of file