mirror of
https://github.com/zarzet/SpotiFLAC-Mobile.git
synced 2026-07-03 03:15:51 +02:00
Compare commits
108 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 637504db41 | |||
| 48e499eaeb | |||
| 7372a34d25 | |||
| 4411d80a19 | |||
| 316d7677c7 | |||
| fa061fc587 | |||
| 38605080b7 | |||
| 478179169c | |||
| 83594831a9 | |||
| cec3acfff6 | |||
| 18ef5e0aee | |||
| f674eef681 | |||
| 1b95085977 | |||
| 35ab00a7bd | |||
| f2ec276b91 | |||
| ee797756f7 | |||
| 2d54ac1d12 | |||
| 87f624c685 | |||
| 48ec563aa1 | |||
| 070e0cd8cf | |||
| 948d7aa735 | |||
| 1aaa033dc1 | |||
| 56a7ec0763 | |||
| 7da5f69551 | |||
| ace70de9e1 | |||
| e7369bb4a9 | |||
| cd6598a866 | |||
| 93dc95ccc4 | |||
| 951518ba81 | |||
| e3449ded60 | |||
| 913db0c97d | |||
| f675c1f223 | |||
| 2d8ee8b04f | |||
| ef1f1b381f | |||
| e2dce6c623 | |||
| 1da8228f89 | |||
| 67df645ca0 | |||
| 258166c973 | |||
| 780aa8494b | |||
| 0a539bde70 | |||
| 5232af5a36 | |||
| 01b4c257ff | |||
| 914c179a1c | |||
| 6d3bea874c | |||
| 10a3fed592 | |||
| 9245b7fe5d | |||
| bca72234be | |||
| d3d77688bf | |||
| a1fb0f1db7 | |||
| 2f58426385 | |||
| f495ce4340 | |||
| cace5993d2 | |||
| d0da28209e | |||
| ea30ac3eb9 | |||
| 1ff9963209 | |||
| 1e00024ca2 | |||
| e685bef532 | |||
| 4b2d61ef2d | |||
| d79d739200 | |||
| 08281b9302 | |||
| 95b85b9ad4 | |||
| d1ff6b6311 | |||
| fe159efc5e | |||
| 92b83fc7ba | |||
| f828e21b39 | |||
| 581b394d46 | |||
| 7f120f3a7e | |||
| 7c4714db36 | |||
| 7c3f8e6297 | |||
| cb416fffd4 | |||
| a46644abd3 | |||
| 660cca6fc4 | |||
| ef9715f54a | |||
| b38132d3b7 | |||
| 1b00569cb2 | |||
| 4e2539167a | |||
| dff7d33461 | |||
| ec228788ca | |||
| 83b6ce7648 | |||
| 7f669680cd | |||
| 1e2e201eff | |||
| b2fcfe5f18 | |||
| 9d9c3ff1e8 | |||
| 071d096314 | |||
| 983971ec83 | |||
| 2adcffd95f | |||
| bd3734a68c | |||
| 0a0eefaf3f | |||
| 2b65d5aedd | |||
| 77f5fc68c8 | |||
| fd79bde4ab | |||
| a99b0230f4 | |||
| 81e41e2f6c | |||
| 97ff250465 | |||
| f8700ee017 | |||
| d7a009cade | |||
| a2d8feebb3 | |||
| e6f9b4c01d | |||
| 9682f30fd6 | |||
| 5c85cb5575 | |||
| 4bc93381d4 | |||
| a41c62548a | |||
| fd028b6d6c | |||
| 01dd2d52c3 | |||
| 3f777eb1cb | |||
| ebfb5150e7 | |||
| aed56e7717 | |||
| 7f4f69620b |
+1336
-32
File diff suppressed because it is too large
Load Diff
+660
-23
@@ -17,7 +17,7 @@
|
|||||||
"@navSettings": {
|
"@navSettings": {
|
||||||
"description": "Bottom navigation - Settings tab"
|
"description": "Bottom navigation - Settings tab"
|
||||||
},
|
},
|
||||||
"navStore": "Store",
|
"navStore": "Repo",
|
||||||
"@navStore": {
|
"@navStore": {
|
||||||
"description": "Bottom navigation - Extension store tab"
|
"description": "Bottom navigation - Extension store tab"
|
||||||
},
|
},
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
"@homeTitle": {
|
"@homeTitle": {
|
||||||
"description": "Home screen title"
|
"description": "Home screen title"
|
||||||
},
|
},
|
||||||
"homeSubtitle": "Paste a Spotify link or search by name",
|
"homeSubtitle": "Paste a supported URL or search by name",
|
||||||
"@homeSubtitle": {
|
"@homeSubtitle": {
|
||||||
"description": "Subtitle shown below search box"
|
"description": "Subtitle shown below search box"
|
||||||
},
|
},
|
||||||
@@ -89,6 +89,14 @@
|
|||||||
"@downloadFilenameFormat": {
|
"@downloadFilenameFormat": {
|
||||||
"description": "Setting for output filename pattern"
|
"description": "Setting for output filename pattern"
|
||||||
},
|
},
|
||||||
|
"downloadSingleFilenameFormat": "Single Filename Format",
|
||||||
|
"@downloadSingleFilenameFormat": {
|
||||||
|
"description": "Setting for output filename pattern for singles/EPs"
|
||||||
|
},
|
||||||
|
"downloadSingleFilenameFormatDescription": "Filename pattern for singles and EPs. Uses the same tags as the album format.",
|
||||||
|
"@downloadSingleFilenameFormatDescription": {
|
||||||
|
"description": "Subtitle description for single filename format setting"
|
||||||
|
},
|
||||||
"downloadFolderOrganization": "Folder Organization",
|
"downloadFolderOrganization": "Folder Organization",
|
||||||
"@downloadFolderOrganization": {
|
"@downloadFolderOrganization": {
|
||||||
"description": "Setting for folder structure"
|
"description": "Setting for folder structure"
|
||||||
@@ -150,6 +158,14 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"optionsDefaultSearchTab": "Default Search Tab",
|
||||||
|
"@optionsDefaultSearchTab": {
|
||||||
|
"description": "Title for the preferred default search tab setting"
|
||||||
|
},
|
||||||
|
"optionsDefaultSearchTabSubtitle": "Choose which tab opens first for new search results.",
|
||||||
|
"@optionsDefaultSearchTabSubtitle": {
|
||||||
|
"description": "Subtitle for the preferred default search tab setting"
|
||||||
|
},
|
||||||
"optionsSwitchBack": "Tap Deezer or Spotify to switch back from extension",
|
"optionsSwitchBack": "Tap Deezer or Spotify to switch back from extension",
|
||||||
"@optionsSwitchBack": {
|
"@optionsSwitchBack": {
|
||||||
"description": "Hint to switch back to built-in providers"
|
"description": "Hint to switch back to built-in providers"
|
||||||
@@ -190,6 +206,42 @@
|
|||||||
"@optionsMaxQualityCoverSubtitle": {
|
"@optionsMaxQualityCoverSubtitle": {
|
||||||
"description": "Subtitle for max quality cover"
|
"description": "Subtitle for max quality cover"
|
||||||
},
|
},
|
||||||
|
"optionsReplayGain": "ReplayGain",
|
||||||
|
"@optionsReplayGain": {
|
||||||
|
"description": "Title for ReplayGain setting toggle"
|
||||||
|
},
|
||||||
|
"optionsReplayGainSubtitleOn": "Scan loudness and embed ReplayGain tags (EBU R128)",
|
||||||
|
"@optionsReplayGainSubtitleOn": {
|
||||||
|
"description": "Subtitle when ReplayGain is enabled"
|
||||||
|
},
|
||||||
|
"optionsReplayGainSubtitleOff": "Disabled: no loudness normalization tags",
|
||||||
|
"@optionsReplayGainSubtitleOff": {
|
||||||
|
"description": "Subtitle when ReplayGain is disabled"
|
||||||
|
},
|
||||||
|
"optionsArtistTagMode": "Artist Tag Mode",
|
||||||
|
"@optionsArtistTagMode": {
|
||||||
|
"description": "Setting title for how artist metadata is written into files"
|
||||||
|
},
|
||||||
|
"optionsArtistTagModeDescription": "Choose how multiple artists are written into embedded tags.",
|
||||||
|
"@optionsArtistTagModeDescription": {
|
||||||
|
"description": "Bottom-sheet description for artist tag mode setting"
|
||||||
|
},
|
||||||
|
"optionsArtistTagModeJoined": "Single joined value",
|
||||||
|
"@optionsArtistTagModeJoined": {
|
||||||
|
"description": "Artist tag mode option that joins multiple artists into one value"
|
||||||
|
},
|
||||||
|
"optionsArtistTagModeJoinedSubtitle": "Write one ARTIST value like \"Artist A, Artist B\" for maximum player compatibility.",
|
||||||
|
"@optionsArtistTagModeJoinedSubtitle": {
|
||||||
|
"description": "Subtitle for joined artist tag mode"
|
||||||
|
},
|
||||||
|
"optionsArtistTagModeSplitVorbis": "Split tags for FLAC/Opus",
|
||||||
|
"@optionsArtistTagModeSplitVorbis": {
|
||||||
|
"description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats"
|
||||||
|
},
|
||||||
|
"optionsArtistTagModeSplitVorbisSubtitle": "Write one artist tag per artist for FLAC and Opus; MP3 and M4A stay joined.",
|
||||||
|
"@optionsArtistTagModeSplitVorbisSubtitle": {
|
||||||
|
"description": "Subtitle for split Vorbis artist tag mode"
|
||||||
|
},
|
||||||
"optionsConcurrentDownloads": "Concurrent Downloads",
|
"optionsConcurrentDownloads": "Concurrent Downloads",
|
||||||
"@optionsConcurrentDownloads": {
|
"@optionsConcurrentDownloads": {
|
||||||
"description": "Number of parallel downloads"
|
"description": "Number of parallel downloads"
|
||||||
@@ -211,11 +263,11 @@
|
|||||||
"@optionsConcurrentWarning": {
|
"@optionsConcurrentWarning": {
|
||||||
"description": "Warning about rate limits"
|
"description": "Warning about rate limits"
|
||||||
},
|
},
|
||||||
"optionsExtensionStore": "Extension Store",
|
"optionsExtensionStore": "Extension Repo",
|
||||||
"@optionsExtensionStore": {
|
"@optionsExtensionStore": {
|
||||||
"description": "Show/hide store tab"
|
"description": "Show/hide store tab"
|
||||||
},
|
},
|
||||||
"optionsExtensionStoreSubtitle": "Show Store tab in navigation",
|
"optionsExtensionStoreSubtitle": "Show Repo tab in navigation",
|
||||||
"@optionsExtensionStoreSubtitle": {
|
"@optionsExtensionStoreSubtitle": {
|
||||||
"description": "Subtitle for extension store toggle"
|
"description": "Subtitle for extension store toggle"
|
||||||
},
|
},
|
||||||
@@ -318,7 +370,7 @@
|
|||||||
"@extensionsUninstall": {
|
"@extensionsUninstall": {
|
||||||
"description": "Uninstall extension button"
|
"description": "Uninstall extension button"
|
||||||
},
|
},
|
||||||
"storeTitle": "Extension Store",
|
"storeTitle": "Extension Repo",
|
||||||
"@storeTitle": {
|
"@storeTitle": {
|
||||||
"description": "Store screen title"
|
"description": "Store screen title"
|
||||||
},
|
},
|
||||||
@@ -378,6 +430,10 @@
|
|||||||
"@aboutPCSource": {
|
"@aboutPCSource": {
|
||||||
"description": "Link to PC GitHub repo"
|
"description": "Link to PC GitHub repo"
|
||||||
},
|
},
|
||||||
|
"aboutKeepAndroidOpen": "Keep Android Open",
|
||||||
|
"@aboutKeepAndroidOpen": {
|
||||||
|
"description": "Link to Keep Android Open campaign website"
|
||||||
|
},
|
||||||
"aboutReportIssue": "Report an issue",
|
"aboutReportIssue": "Report an issue",
|
||||||
"@aboutReportIssue": {
|
"@aboutReportIssue": {
|
||||||
"description": "Link to report bugs"
|
"description": "Link to report bugs"
|
||||||
@@ -999,6 +1055,46 @@
|
|||||||
"@searchPlaylists": {
|
"@searchPlaylists": {
|
||||||
"description": "Search result category - playlists"
|
"description": "Search result category - playlists"
|
||||||
},
|
},
|
||||||
|
"searchSortTitle": "Sort Results",
|
||||||
|
"@searchSortTitle": {
|
||||||
|
"description": "Bottom sheet title for search sort options"
|
||||||
|
},
|
||||||
|
"searchSortDefault": "Default",
|
||||||
|
"@searchSortDefault": {
|
||||||
|
"description": "Sort option - default API order"
|
||||||
|
},
|
||||||
|
"searchSortTitleAZ": "Title (A-Z)",
|
||||||
|
"@searchSortTitleAZ": {
|
||||||
|
"description": "Sort option - title ascending"
|
||||||
|
},
|
||||||
|
"searchSortTitleZA": "Title (Z-A)",
|
||||||
|
"@searchSortTitleZA": {
|
||||||
|
"description": "Sort option - title descending"
|
||||||
|
},
|
||||||
|
"searchSortArtistAZ": "Artist (A-Z)",
|
||||||
|
"@searchSortArtistAZ": {
|
||||||
|
"description": "Sort option - artist ascending"
|
||||||
|
},
|
||||||
|
"searchSortArtistZA": "Artist (Z-A)",
|
||||||
|
"@searchSortArtistZA": {
|
||||||
|
"description": "Sort option - artist descending"
|
||||||
|
},
|
||||||
|
"searchSortDurationShort": "Duration (Shortest)",
|
||||||
|
"@searchSortDurationShort": {
|
||||||
|
"description": "Sort option - shortest duration first"
|
||||||
|
},
|
||||||
|
"searchSortDurationLong": "Duration (Longest)",
|
||||||
|
"@searchSortDurationLong": {
|
||||||
|
"description": "Sort option - longest duration first"
|
||||||
|
},
|
||||||
|
"searchSortDateOldest": "Release Date (Oldest)",
|
||||||
|
"@searchSortDateOldest": {
|
||||||
|
"description": "Sort option - oldest release first"
|
||||||
|
},
|
||||||
|
"searchSortDateNewest": "Release Date (Newest)",
|
||||||
|
"@searchSortDateNewest": {
|
||||||
|
"description": "Sort option - newest release first"
|
||||||
|
},
|
||||||
"tooltipPlay": "Play",
|
"tooltipPlay": "Play",
|
||||||
"@tooltipPlay": {
|
"@tooltipPlay": {
|
||||||
"description": "Tooltip - play button"
|
"description": "Tooltip - play button"
|
||||||
@@ -1119,6 +1215,18 @@
|
|||||||
"@providerPriorityInfo": {
|
"@providerPriorityInfo": {
|
||||||
"description": "Info tip about fallback behavior"
|
"description": "Info tip about fallback behavior"
|
||||||
},
|
},
|
||||||
|
"providerPriorityFallbackExtensionsTitle": "Extension Fallback",
|
||||||
|
"@providerPriorityFallbackExtensionsTitle": {
|
||||||
|
"description": "Section title for choosing which download extensions can be used as fallback providers"
|
||||||
|
},
|
||||||
|
"providerPriorityFallbackExtensionsDescription": "Choose which installed download extensions can be used during automatic fallback. Built-in providers still follow the priority order above.",
|
||||||
|
"@providerPriorityFallbackExtensionsDescription": {
|
||||||
|
"description": "Section description for extension fallback selection"
|
||||||
|
},
|
||||||
|
"providerPriorityFallbackExtensionsHint": "Only enabled extensions with download-provider capability are listed here.",
|
||||||
|
"@providerPriorityFallbackExtensionsHint": {
|
||||||
|
"description": "Hint below the extension fallback selection list"
|
||||||
|
},
|
||||||
"providerBuiltIn": "Built-in",
|
"providerBuiltIn": "Built-in",
|
||||||
"@providerBuiltIn": {
|
"@providerBuiltIn": {
|
||||||
"description": "Label for built-in providers (Tidal/Qobuz)"
|
"description": "Label for built-in providers (Tidal/Qobuz)"
|
||||||
@@ -1479,6 +1587,14 @@
|
|||||||
"@trackLyricsNotAvailable": {
|
"@trackLyricsNotAvailable": {
|
||||||
"description": "Message when lyrics not found"
|
"description": "Message when lyrics not found"
|
||||||
},
|
},
|
||||||
|
"trackLyricsNotInFile": "No lyrics found in this file",
|
||||||
|
"@trackLyricsNotInFile": {
|
||||||
|
"description": "Message when no embedded lyrics in audio file"
|
||||||
|
},
|
||||||
|
"trackFetchOnlineLyrics": "Fetch from Online",
|
||||||
|
"@trackFetchOnlineLyrics": {
|
||||||
|
"description": "Action - fetch lyrics from online providers"
|
||||||
|
},
|
||||||
"trackLyricsTimeout": "Request timed out. Try again later.",
|
"trackLyricsTimeout": "Request timed out. Try again later.",
|
||||||
"@trackLyricsTimeout": {
|
"@trackLyricsTimeout": {
|
||||||
"description": "Message when lyrics request times out"
|
"description": "Message when lyrics request times out"
|
||||||
@@ -1614,7 +1730,7 @@
|
|||||||
"@storeNewRepoUrlLabel": {
|
"@storeNewRepoUrlLabel": {
|
||||||
"description": "Label for the new repository URL field inside the dialog"
|
"description": "Label for the new repository URL field inside the dialog"
|
||||||
},
|
},
|
||||||
"storeLoadError": "Failed to load store",
|
"storeLoadError": "Failed to load repository",
|
||||||
"@storeLoadError": {
|
"@storeLoadError": {
|
||||||
"description": "Error heading when the store cannot be loaded"
|
"description": "Error heading when the store cannot be loaded"
|
||||||
},
|
},
|
||||||
@@ -1765,6 +1881,14 @@
|
|||||||
"@extensionsDownloadPrioritySubtitle": {
|
"@extensionsDownloadPrioritySubtitle": {
|
||||||
"description": "Subtitle for download priority"
|
"description": "Subtitle for download priority"
|
||||||
},
|
},
|
||||||
|
"extensionsFallbackTitle": "Fallback Extensions",
|
||||||
|
"@extensionsFallbackTitle": {
|
||||||
|
"description": "Setting and page title for choosing which download extensions can be used during fallback"
|
||||||
|
},
|
||||||
|
"extensionsFallbackSubtitle": "Choose which installed download extensions can be used as fallback",
|
||||||
|
"@extensionsFallbackSubtitle": {
|
||||||
|
"description": "Subtitle for download fallback extensions menu"
|
||||||
|
},
|
||||||
"extensionsNoDownloadProvider": "No extensions with download provider",
|
"extensionsNoDownloadProvider": "No extensions with download provider",
|
||||||
"@extensionsNoDownloadProvider": {
|
"@extensionsNoDownloadProvider": {
|
||||||
"description": "Empty state - no download providers"
|
"description": "Empty state - no download providers"
|
||||||
@@ -1869,18 +1993,6 @@
|
|||||||
"@qualityNote": {
|
"@qualityNote": {
|
||||||
"description": "Note about quality availability"
|
"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"
|
|
||||||
},
|
|
||||||
"youtubeOpusBitrateTitle": "YouTube Opus Bitrate",
|
|
||||||
"@youtubeOpusBitrateTitle": {
|
|
||||||
"description": "Title for YouTube Opus bitrate setting"
|
|
||||||
},
|
|
||||||
"youtubeMp3BitrateTitle": "YouTube MP3 Bitrate",
|
|
||||||
"@youtubeMp3BitrateTitle": {
|
|
||||||
"description": "Title for YouTube MP3 bitrate setting"
|
|
||||||
},
|
|
||||||
"downloadAskBeforeDownload": "Ask Before Download",
|
"downloadAskBeforeDownload": "Ask Before Download",
|
||||||
"@downloadAskBeforeDownload": {
|
"@downloadAskBeforeDownload": {
|
||||||
"description": "Setting - show quality picker"
|
"description": "Setting - show quality picker"
|
||||||
@@ -2001,6 +2113,14 @@
|
|||||||
"@albumFolderArtistAlbumSinglesSubtitle": {
|
"@albumFolderArtistAlbumSinglesSubtitle": {
|
||||||
"description": "Folder structure example"
|
"description": "Folder structure example"
|
||||||
},
|
},
|
||||||
|
"albumFolderArtistAlbumFlat": "Artist / Album (Singles flat)",
|
||||||
|
"@albumFolderArtistAlbumFlat": {
|
||||||
|
"description": "Album folder option with singles directly in artist folder"
|
||||||
|
},
|
||||||
|
"albumFolderArtistAlbumFlatSubtitle": "Artist/Album/ and Artist/song.flac",
|
||||||
|
"@albumFolderArtistAlbumFlatSubtitle": {
|
||||||
|
"description": "Folder structure example for flat singles"
|
||||||
|
},
|
||||||
"downloadedAlbumDeleteSelected": "Delete Selected",
|
"downloadedAlbumDeleteSelected": "Delete Selected",
|
||||||
"@downloadedAlbumDeleteSelected": {
|
"@downloadedAlbumDeleteSelected": {
|
||||||
"description": "Button - delete selected tracks"
|
"description": "Button - delete selected tracks"
|
||||||
@@ -2363,6 +2483,15 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"libraryFilesUnit": "{count, plural, =1{file} other{files}}",
|
||||||
|
"@libraryFilesUnit": {
|
||||||
|
"description": "Unit label for files count during library scanning",
|
||||||
|
"placeholders": {
|
||||||
|
"count": {
|
||||||
|
"type": "int"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"libraryLastScanned": "Last scanned: {time}",
|
"libraryLastScanned": "Last scanned: {time}",
|
||||||
"@libraryLastScanned": {
|
"@libraryLastScanned": {
|
||||||
"description": "Last scan time display",
|
"description": "Last scan time display",
|
||||||
@@ -2380,6 +2509,10 @@
|
|||||||
"@libraryScanning": {
|
"@libraryScanning": {
|
||||||
"description": "Status during scan"
|
"description": "Status during scan"
|
||||||
},
|
},
|
||||||
|
"libraryScanFinalizing": "Finalizing library...",
|
||||||
|
"@libraryScanFinalizing": {
|
||||||
|
"description": "Status shown after file scanning finishes but library persistence is still running"
|
||||||
|
},
|
||||||
"libraryScanProgress": "{progress}% of {total} files",
|
"libraryScanProgress": "{progress}% of {total} files",
|
||||||
"@libraryScanProgress": {
|
"@libraryScanProgress": {
|
||||||
"description": "Scan progress display",
|
"description": "Scan progress display",
|
||||||
@@ -2477,6 +2610,30 @@
|
|||||||
"@libraryFilterFormat": {
|
"@libraryFilterFormat": {
|
||||||
"description": "Filter section - file format"
|
"description": "Filter section - file format"
|
||||||
},
|
},
|
||||||
|
"libraryFilterMetadata": "Metadata",
|
||||||
|
"@libraryFilterMetadata": {
|
||||||
|
"description": "Filter section - metadata completeness"
|
||||||
|
},
|
||||||
|
"libraryFilterMetadataComplete": "Complete metadata",
|
||||||
|
"@libraryFilterMetadataComplete": {
|
||||||
|
"description": "Filter option - items with complete metadata"
|
||||||
|
},
|
||||||
|
"libraryFilterMetadataMissingAny": "Missing any metadata",
|
||||||
|
"@libraryFilterMetadataMissingAny": {
|
||||||
|
"description": "Filter option - items missing any tracked metadata field"
|
||||||
|
},
|
||||||
|
"libraryFilterMetadataMissingYear": "Missing year",
|
||||||
|
"@libraryFilterMetadataMissingYear": {
|
||||||
|
"description": "Filter option - items missing release year/date"
|
||||||
|
},
|
||||||
|
"libraryFilterMetadataMissingGenre": "Missing genre",
|
||||||
|
"@libraryFilterMetadataMissingGenre": {
|
||||||
|
"description": "Filter option - items missing genre"
|
||||||
|
},
|
||||||
|
"libraryFilterMetadataMissingAlbumArtist": "Missing album artist",
|
||||||
|
"@libraryFilterMetadataMissingAlbumArtist": {
|
||||||
|
"description": "Filter option - items missing album artist"
|
||||||
|
},
|
||||||
"libraryFilterSort": "Sort",
|
"libraryFilterSort": "Sort",
|
||||||
"@libraryFilterSort": {
|
"@libraryFilterSort": {
|
||||||
"description": "Filter section - sort order"
|
"description": "Filter section - sort order"
|
||||||
@@ -2489,6 +2646,22 @@
|
|||||||
"@libraryFilterSortOldest": {
|
"@libraryFilterSortOldest": {
|
||||||
"description": "Sort option - oldest first"
|
"description": "Sort option - oldest first"
|
||||||
},
|
},
|
||||||
|
"libraryFilterSortAlbumAsc": "Album (A-Z)",
|
||||||
|
"@libraryFilterSortAlbumAsc": {
|
||||||
|
"description": "Sort option - album ascending"
|
||||||
|
},
|
||||||
|
"libraryFilterSortAlbumDesc": "Album (Z-A)",
|
||||||
|
"@libraryFilterSortAlbumDesc": {
|
||||||
|
"description": "Sort option - album descending"
|
||||||
|
},
|
||||||
|
"libraryFilterSortGenreAsc": "Genre (A-Z)",
|
||||||
|
"@libraryFilterSortGenreAsc": {
|
||||||
|
"description": "Sort option - genre ascending"
|
||||||
|
},
|
||||||
|
"libraryFilterSortGenreDesc": "Genre (Z-A)",
|
||||||
|
"@libraryFilterSortGenreDesc": {
|
||||||
|
"description": "Sort option - genre descending"
|
||||||
|
},
|
||||||
"timeJustNow": "Just now",
|
"timeJustNow": "Just now",
|
||||||
"@timeJustNow": {
|
"@timeJustNow": {
|
||||||
"description": "Relative time - less than a minute ago"
|
"description": "Relative time - less than a minute ago"
|
||||||
@@ -2575,7 +2748,7 @@
|
|||||||
"@tutorialExtensionsDesc": {
|
"@tutorialExtensionsDesc": {
|
||||||
"description": "Tutorial extensions page description"
|
"description": "Tutorial extensions page description"
|
||||||
},
|
},
|
||||||
"tutorialExtensionsTip1": "Browse the Store tab to discover useful extensions",
|
"tutorialExtensionsTip1": "Browse the Repo tab to discover useful extensions",
|
||||||
"@tutorialExtensionsTip1": {
|
"@tutorialExtensionsTip1": {
|
||||||
"description": "Tutorial extensions tip 1"
|
"description": "Tutorial extensions tip 1"
|
||||||
},
|
},
|
||||||
@@ -2841,6 +3014,38 @@
|
|||||||
"@trackReEnrichOnlineSubtitle": {
|
"@trackReEnrichOnlineSubtitle": {
|
||||||
"description": "Subtitle for re-enrich metadata action for local items"
|
"description": "Subtitle for re-enrich metadata action for local items"
|
||||||
},
|
},
|
||||||
|
"trackReEnrichFieldsTitle": "Fields to update",
|
||||||
|
"@trackReEnrichFieldsTitle": {
|
||||||
|
"description": "Section title for field selection in re-enrich dialog"
|
||||||
|
},
|
||||||
|
"trackReEnrichFieldCover": "Cover Art",
|
||||||
|
"@trackReEnrichFieldCover": {
|
||||||
|
"description": "Checkbox label for cover art field in re-enrich"
|
||||||
|
},
|
||||||
|
"trackReEnrichFieldLyrics": "Lyrics",
|
||||||
|
"@trackReEnrichFieldLyrics": {
|
||||||
|
"description": "Checkbox label for lyrics field in re-enrich"
|
||||||
|
},
|
||||||
|
"trackReEnrichFieldBasicTags": "Album, Album Artist",
|
||||||
|
"@trackReEnrichFieldBasicTags": {
|
||||||
|
"description": "Checkbox label for basic tags in re-enrich (title/artist are never overwritten)"
|
||||||
|
},
|
||||||
|
"trackReEnrichFieldTrackInfo": "Track & Disc Number",
|
||||||
|
"@trackReEnrichFieldTrackInfo": {
|
||||||
|
"description": "Checkbox label for track info in re-enrich"
|
||||||
|
},
|
||||||
|
"trackReEnrichFieldReleaseInfo": "Date & ISRC",
|
||||||
|
"@trackReEnrichFieldReleaseInfo": {
|
||||||
|
"description": "Checkbox label for release info in re-enrich"
|
||||||
|
},
|
||||||
|
"trackReEnrichFieldExtra": "Genre, Label, Copyright",
|
||||||
|
"@trackReEnrichFieldExtra": {
|
||||||
|
"description": "Checkbox label for extra metadata in re-enrich"
|
||||||
|
},
|
||||||
|
"trackReEnrichSelectAll": "Select All",
|
||||||
|
"@trackReEnrichSelectAll": {
|
||||||
|
"description": "Select all fields checkbox in re-enrich"
|
||||||
|
},
|
||||||
"trackEditMetadata": "Edit Metadata",
|
"trackEditMetadata": "Edit Metadata",
|
||||||
"@trackEditMetadata": {
|
"@trackEditMetadata": {
|
||||||
"description": "Menu action - edit embedded metadata"
|
"description": "Menu action - edit embedded metadata"
|
||||||
@@ -3438,10 +3643,6 @@
|
|||||||
"@lyricsProvidersDiscardContent": {
|
"@lyricsProvidersDiscardContent": {
|
||||||
"description": "Body text of the discard-changes dialog on lyrics provider page"
|
"description": "Body text of the discard-changes dialog on lyrics provider page"
|
||||||
},
|
},
|
||||||
"lyricsProviderSpotifyApiDesc": "Spotify-sourced synced lyrics via community API",
|
|
||||||
"@lyricsProviderSpotifyApiDesc": {
|
|
||||||
"description": "Description for Spotify Lyrics API provider"
|
|
||||||
},
|
|
||||||
"lyricsProviderLrclibDesc": "Open-source synced lyrics database",
|
"lyricsProviderLrclibDesc": "Open-source synced lyrics database",
|
||||||
"@lyricsProviderLrclibDesc": {
|
"@lyricsProviderLrclibDesc": {
|
||||||
"description": "Description for LRCLIB provider"
|
"description": "Description for LRCLIB provider"
|
||||||
@@ -3903,5 +4104,441 @@
|
|||||||
"editMetadataSelectEmpty": "Empty only",
|
"editMetadataSelectEmpty": "Empty only",
|
||||||
"@editMetadataSelectEmpty": {
|
"@editMetadataSelectEmpty": {
|
||||||
"description": "Button to select only fields that are currently empty"
|
"description": "Button to select only fields that are currently empty"
|
||||||
|
},
|
||||||
|
|
||||||
|
"queueDownloadingCount": "Downloading ({count})",
|
||||||
|
"@queueDownloadingCount": {
|
||||||
|
"description": "Header for active downloads section with count",
|
||||||
|
"placeholders": {
|
||||||
|
"count": {
|
||||||
|
"type": "int"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"queueDownloadedHeader": "Downloaded",
|
||||||
|
"@queueDownloadedHeader": {
|
||||||
|
"description": "Header label for downloaded items section in library"
|
||||||
|
},
|
||||||
|
"queueFilteringIndicator": "Filtering...",
|
||||||
|
"@queueFilteringIndicator": {
|
||||||
|
"description": "Shown while filter results are being computed"
|
||||||
|
},
|
||||||
|
"queueTrackCount": "{count, plural, =1{1 track} other{{count} tracks}}",
|
||||||
|
"@queueTrackCount": {
|
||||||
|
"description": "Track count label with plural support",
|
||||||
|
"placeholders": {
|
||||||
|
"count": {
|
||||||
|
"type": "int"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"queueAlbumCount": "{count, plural, =1{1 album} other{{count} albums}}",
|
||||||
|
"@queueAlbumCount": {
|
||||||
|
"description": "Album count label with plural support",
|
||||||
|
"placeholders": {
|
||||||
|
"count": {
|
||||||
|
"type": "int"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"queueEmptyAlbums": "No album downloads",
|
||||||
|
"@queueEmptyAlbums": {
|
||||||
|
"description": "Empty state title when no album downloads exist"
|
||||||
|
},
|
||||||
|
"queueEmptyAlbumsSubtitle": "Download multiple tracks from an album to see them here",
|
||||||
|
"@queueEmptyAlbumsSubtitle": {
|
||||||
|
"description": "Empty state subtitle for album downloads"
|
||||||
|
},
|
||||||
|
"queueEmptySingles": "No single downloads",
|
||||||
|
"@queueEmptySingles": {
|
||||||
|
"description": "Empty state title when no single track downloads exist"
|
||||||
|
},
|
||||||
|
"queueEmptySinglesSubtitle": "Single track downloads will appear here",
|
||||||
|
"@queueEmptySinglesSubtitle": {
|
||||||
|
"description": "Empty state subtitle for single track downloads"
|
||||||
|
},
|
||||||
|
"queueEmptyHistory": "No download history",
|
||||||
|
"@queueEmptyHistory": {
|
||||||
|
"description": "Empty state title when download history is empty"
|
||||||
|
},
|
||||||
|
"queueEmptyHistorySubtitle": "Downloaded tracks will appear here",
|
||||||
|
"@queueEmptyHistorySubtitle": {
|
||||||
|
"description": "Empty state subtitle for download history"
|
||||||
|
},
|
||||||
|
"selectionAllPlaylistsSelected": "All playlists selected",
|
||||||
|
"@selectionAllPlaylistsSelected": {
|
||||||
|
"description": "Shown when all playlists are selected in selection mode"
|
||||||
|
},
|
||||||
|
"selectionTapPlaylistsToSelect": "Tap playlists to select",
|
||||||
|
"@selectionTapPlaylistsToSelect": {
|
||||||
|
"description": "Hint shown in playlist selection mode"
|
||||||
|
},
|
||||||
|
"selectionSelectPlaylistsToDelete": "Select playlists to delete",
|
||||||
|
"@selectionSelectPlaylistsToDelete": {
|
||||||
|
"description": "Hint shown when no playlists are selected for deletion"
|
||||||
|
},
|
||||||
|
"audioAnalysisTitle": "Audio Quality Analysis",
|
||||||
|
"@audioAnalysisTitle": {
|
||||||
|
"description": "Title for audio analysis section"
|
||||||
|
},
|
||||||
|
"audioAnalysisDescription": "Verify lossless quality with spectrum analysis",
|
||||||
|
"@audioAnalysisDescription": {
|
||||||
|
"description": "Description for audio analysis tap-to-analyze prompt"
|
||||||
|
},
|
||||||
|
"audioAnalysisAnalyzing": "Analyzing audio...",
|
||||||
|
"@audioAnalysisAnalyzing": {
|
||||||
|
"description": "Loading text while analyzing audio"
|
||||||
|
},
|
||||||
|
"audioAnalysisSampleRate": "Sample Rate",
|
||||||
|
"@audioAnalysisSampleRate": {
|
||||||
|
"description": "Sample rate metric label"
|
||||||
|
},
|
||||||
|
"audioAnalysisBitDepth": "Bit Depth",
|
||||||
|
"@audioAnalysisBitDepth": {
|
||||||
|
"description": "Bit depth metric label"
|
||||||
|
},
|
||||||
|
"audioAnalysisChannels": "Channels",
|
||||||
|
"@audioAnalysisChannels": {
|
||||||
|
"description": "Channels metric label"
|
||||||
|
},
|
||||||
|
"audioAnalysisDuration": "Duration",
|
||||||
|
"@audioAnalysisDuration": {
|
||||||
|
"description": "Duration metric label"
|
||||||
|
},
|
||||||
|
"audioAnalysisNyquist": "Nyquist",
|
||||||
|
"@audioAnalysisNyquist": {
|
||||||
|
"description": "Nyquist frequency metric label"
|
||||||
|
},
|
||||||
|
"audioAnalysisFileSize": "Size",
|
||||||
|
"@audioAnalysisFileSize": {
|
||||||
|
"description": "File size metric label"
|
||||||
|
},
|
||||||
|
"audioAnalysisDynamicRange": "Dynamic Range",
|
||||||
|
"@audioAnalysisDynamicRange": {
|
||||||
|
"description": "Dynamic range metric label"
|
||||||
|
},
|
||||||
|
"audioAnalysisPeak": "Peak",
|
||||||
|
"@audioAnalysisPeak": {
|
||||||
|
"description": "Peak amplitude metric label"
|
||||||
|
},
|
||||||
|
"audioAnalysisRms": "RMS",
|
||||||
|
"@audioAnalysisRms": {
|
||||||
|
"description": "RMS level metric label"
|
||||||
|
},
|
||||||
|
"audioAnalysisSamples": "Samples",
|
||||||
|
"@audioAnalysisSamples": {
|
||||||
|
"description": "Total samples metric label"
|
||||||
|
},
|
||||||
|
|
||||||
|
"extensionsSearchWith": "Search with {providerName}",
|
||||||
|
"@extensionsSearchWith": {
|
||||||
|
"description": "Extensions page - subtitle for built-in search provider option",
|
||||||
|
"placeholders": {
|
||||||
|
"providerName": {
|
||||||
|
"type": "String"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"extensionsHomeFeedProvider": "Home Feed Provider",
|
||||||
|
"@extensionsHomeFeedProvider": {
|
||||||
|
"description": "Extensions page - label for home feed provider selector"
|
||||||
|
},
|
||||||
|
"extensionsHomeFeedDescription": "Choose which extension provides the home feed on the main screen",
|
||||||
|
"@extensionsHomeFeedDescription": {
|
||||||
|
"description": "Extensions page - description for home feed provider picker"
|
||||||
|
},
|
||||||
|
"extensionsHomeFeedAuto": "Auto",
|
||||||
|
"@extensionsHomeFeedAuto": {
|
||||||
|
"description": "Extensions page - home feed provider option: auto"
|
||||||
|
},
|
||||||
|
"extensionsHomeFeedAutoSubtitle": "Automatically select the best available",
|
||||||
|
"@extensionsHomeFeedAutoSubtitle": {
|
||||||
|
"description": "Extensions page - subtitle for auto home feed option"
|
||||||
|
},
|
||||||
|
"extensionsHomeFeedUse": "Use {extensionName} home feed",
|
||||||
|
"@extensionsHomeFeedUse": {
|
||||||
|
"description": "Extensions page - subtitle for a specific extension home feed option",
|
||||||
|
"placeholders": {
|
||||||
|
"extensionName": {
|
||||||
|
"type": "String"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"extensionsNoHomeFeedExtensions": "No extensions with home feed",
|
||||||
|
"@extensionsNoHomeFeedExtensions": {
|
||||||
|
"description": "Extensions page - shown when no installed extension has home feed"
|
||||||
|
},
|
||||||
|
|
||||||
|
"sortAlphaAsc": "A-Z",
|
||||||
|
"@sortAlphaAsc": {
|
||||||
|
"description": "Sort option - alphabetical ascending"
|
||||||
|
},
|
||||||
|
"sortAlphaDesc": "Z-A",
|
||||||
|
"@sortAlphaDesc": {
|
||||||
|
"description": "Sort option - alphabetical descending"
|
||||||
|
},
|
||||||
|
"cancelDownloadTitle": "Cancel download?",
|
||||||
|
"@cancelDownloadTitle": {
|
||||||
|
"description": "Dialog title when confirming cancellation of an active download"
|
||||||
|
},
|
||||||
|
"cancelDownloadContent": "This will cancel the active download for \"{trackName}\".",
|
||||||
|
"@cancelDownloadContent": {
|
||||||
|
"description": "Dialog body when confirming cancellation of an active download",
|
||||||
|
"placeholders": {
|
||||||
|
"trackName": {
|
||||||
|
"type": "String"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cancelDownloadKeep": "Keep",
|
||||||
|
"@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"
|
||||||
|
},
|
||||||
|
"metadataSaveFailedStorage": "Failed to write metadata back to storage",
|
||||||
|
"@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",
|
||||||
|
"placeholders": {
|
||||||
|
"error": {
|
||||||
|
"type": "String"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"errorLoadAlbum": "Failed to load album",
|
||||||
|
"@errorLoadAlbum": {
|
||||||
|
"description": "Error state shown when album fails to load"
|
||||||
|
},
|
||||||
|
"errorLoadPlaylist": "Failed to load playlist",
|
||||||
|
"@errorLoadPlaylist": {
|
||||||
|
"description": "Error state shown when playlist fails to load"
|
||||||
|
},
|
||||||
|
"errorLoadArtist": "Failed to load artist",
|
||||||
|
"@errorLoadArtist": {
|
||||||
|
"description": "Error state shown when artist fails to load"
|
||||||
|
},
|
||||||
|
|
||||||
|
"notifChannelDownloadName": "Download Progress",
|
||||||
|
"@notifChannelDownloadName": {
|
||||||
|
"description": "Android notification channel name for download progress"
|
||||||
|
},
|
||||||
|
"notifChannelDownloadDesc": "Shows download progress for tracks",
|
||||||
|
"@notifChannelDownloadDesc": {
|
||||||
|
"description": "Android notification channel description for download progress"
|
||||||
|
},
|
||||||
|
"notifChannelLibraryScanName": "Library Scan",
|
||||||
|
"@notifChannelLibraryScanName": {
|
||||||
|
"description": "Android notification channel name for library scan"
|
||||||
|
},
|
||||||
|
"notifChannelLibraryScanDesc": "Shows local library scan progress",
|
||||||
|
"@notifChannelLibraryScanDesc": {
|
||||||
|
"description": "Android notification channel description for library scan"
|
||||||
|
},
|
||||||
|
"notifDownloadingTrack": "Downloading {trackName}",
|
||||||
|
"@notifDownloadingTrack": {
|
||||||
|
"description": "Notification title while downloading a track",
|
||||||
|
"placeholders": {
|
||||||
|
"trackName": {
|
||||||
|
"type": "String"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notifFinalizingTrack": "Finalizing {trackName}",
|
||||||
|
"@notifFinalizingTrack": {
|
||||||
|
"description": "Notification title while finalizing (embedding metadata) a track",
|
||||||
|
"placeholders": {
|
||||||
|
"trackName": {
|
||||||
|
"type": "String"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notifEmbeddingMetadata": "Embedding metadata...",
|
||||||
|
"@notifEmbeddingMetadata": {
|
||||||
|
"description": "Notification body while embedding metadata into a downloaded track"
|
||||||
|
},
|
||||||
|
"notifAlreadyInLibraryCount": "Already in Library ({completed}/{total})",
|
||||||
|
"@notifAlreadyInLibraryCount": {
|
||||||
|
"description": "Notification title when track is already in library, with count",
|
||||||
|
"placeholders": {
|
||||||
|
"completed": {
|
||||||
|
"type": "int"
|
||||||
|
},
|
||||||
|
"total": {
|
||||||
|
"type": "int"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notifAlreadyInLibrary": "Already in Library",
|
||||||
|
"@notifAlreadyInLibrary": {
|
||||||
|
"description": "Notification title when track is already in library"
|
||||||
|
},
|
||||||
|
"notifDownloadCompleteCount": "Download Complete ({completed}/{total})",
|
||||||
|
"@notifDownloadCompleteCount": {
|
||||||
|
"description": "Notification title when download is complete, with count",
|
||||||
|
"placeholders": {
|
||||||
|
"completed": {
|
||||||
|
"type": "int"
|
||||||
|
},
|
||||||
|
"total": {
|
||||||
|
"type": "int"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notifDownloadComplete": "Download Complete",
|
||||||
|
"@notifDownloadComplete": {
|
||||||
|
"description": "Notification title when a single download is complete"
|
||||||
|
},
|
||||||
|
"notifDownloadsFinished": "Downloads Finished ({completed} done, {failed} failed)",
|
||||||
|
"@notifDownloadsFinished": {
|
||||||
|
"description": "Notification title when queue finishes with some failures",
|
||||||
|
"placeholders": {
|
||||||
|
"completed": {
|
||||||
|
"type": "int"
|
||||||
|
},
|
||||||
|
"failed": {
|
||||||
|
"type": "int"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notifAllDownloadsComplete": "All Downloads Complete",
|
||||||
|
"@notifAllDownloadsComplete": {
|
||||||
|
"description": "Notification title when all downloads finish successfully"
|
||||||
|
},
|
||||||
|
"notifTracksDownloadedSuccess": "{count} tracks downloaded successfully",
|
||||||
|
"@notifTracksDownloadedSuccess": {
|
||||||
|
"description": "Notification body for queue complete - how many tracks were downloaded",
|
||||||
|
"placeholders": {
|
||||||
|
"count": {
|
||||||
|
"type": "int"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notifScanningLibrary": "Scanning local library",
|
||||||
|
"@notifScanningLibrary": {
|
||||||
|
"description": "Notification title while scanning local library"
|
||||||
|
},
|
||||||
|
"notifLibraryScanProgressWithTotal": "{scanned}/{total} files • {percentage}%",
|
||||||
|
"@notifLibraryScanProgressWithTotal": {
|
||||||
|
"description": "Notification body for library scan progress when total is known",
|
||||||
|
"placeholders": {
|
||||||
|
"scanned": {
|
||||||
|
"type": "int"
|
||||||
|
},
|
||||||
|
"total": {
|
||||||
|
"type": "int"
|
||||||
|
},
|
||||||
|
"percentage": {
|
||||||
|
"type": "int"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notifLibraryScanProgressNoTotal": "{scanned} files scanned • {percentage}%",
|
||||||
|
"@notifLibraryScanProgressNoTotal": {
|
||||||
|
"description": "Notification body for library scan progress when total is unknown",
|
||||||
|
"placeholders": {
|
||||||
|
"scanned": {
|
||||||
|
"type": "int"
|
||||||
|
},
|
||||||
|
"percentage": {
|
||||||
|
"type": "int"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notifLibraryScanComplete": "Library scan complete",
|
||||||
|
"@notifLibraryScanComplete": {
|
||||||
|
"description": "Notification title when library scan finishes"
|
||||||
|
},
|
||||||
|
"notifLibraryScanCompleteBody": "{count} tracks indexed",
|
||||||
|
"@notifLibraryScanCompleteBody": {
|
||||||
|
"description": "Notification body for library scan complete - number of indexed tracks",
|
||||||
|
"placeholders": {
|
||||||
|
"count": {
|
||||||
|
"type": "int"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notifLibraryScanExcluded": "{count} excluded",
|
||||||
|
"@notifLibraryScanExcluded": {
|
||||||
|
"description": "Library scan complete suffix - excluded track count",
|
||||||
|
"placeholders": {
|
||||||
|
"count": {
|
||||||
|
"type": "int"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notifLibraryScanErrors": "{count} errors",
|
||||||
|
"@notifLibraryScanErrors": {
|
||||||
|
"description": "Library scan complete suffix - error count",
|
||||||
|
"placeholders": {
|
||||||
|
"count": {
|
||||||
|
"type": "int"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notifLibraryScanFailed": "Library scan failed",
|
||||||
|
"@notifLibraryScanFailed": {
|
||||||
|
"description": "Notification title when library scan fails"
|
||||||
|
},
|
||||||
|
"notifLibraryScanCancelled": "Library scan cancelled",
|
||||||
|
"@notifLibraryScanCancelled": {
|
||||||
|
"description": "Notification title when library scan is cancelled by the user"
|
||||||
|
},
|
||||||
|
"notifLibraryScanStopped": "Scan stopped before completion.",
|
||||||
|
"@notifLibraryScanStopped": {
|
||||||
|
"description": "Notification body when library scan is cancelled"
|
||||||
|
},
|
||||||
|
"notifDownloadingUpdate": "Downloading SpotiFLAC v{version}",
|
||||||
|
"@notifDownloadingUpdate": {
|
||||||
|
"description": "Notification title while downloading an app update",
|
||||||
|
"placeholders": {
|
||||||
|
"version": {
|
||||||
|
"type": "String"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notifUpdateProgress": "{received} / {total} MB • {percentage}%",
|
||||||
|
"@notifUpdateProgress": {
|
||||||
|
"description": "Notification body showing update download progress",
|
||||||
|
"placeholders": {
|
||||||
|
"received": {
|
||||||
|
"type": "String"
|
||||||
|
},
|
||||||
|
"total": {
|
||||||
|
"type": "String"
|
||||||
|
},
|
||||||
|
"percentage": {
|
||||||
|
"type": "int"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notifUpdateReady": "Update Ready",
|
||||||
|
"@notifUpdateReady": {
|
||||||
|
"description": "Notification title when app update download is complete"
|
||||||
|
},
|
||||||
|
"notifUpdateReadyBody": "SpotiFLAC v{version} downloaded. Tap to install.",
|
||||||
|
"@notifUpdateReadyBody": {
|
||||||
|
"description": "Notification body when app update is ready to install",
|
||||||
|
"placeholders": {
|
||||||
|
"version": {
|
||||||
|
"type": "String"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notifUpdateFailed": "Update Failed",
|
||||||
|
"@notifUpdateFailed": {
|
||||||
|
"description": "Notification title when app update download fails"
|
||||||
|
},
|
||||||
|
"notifUpdateFailedBody": "Could not download update. Try again later.",
|
||||||
|
"@notifUpdateFailedBody": {
|
||||||
|
"description": "Notification body when app update download fails"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
+1349
-45
File diff suppressed because it is too large
Load Diff
+1325
-21
File diff suppressed because it is too large
Load Diff
+1279
-48
File diff suppressed because it is too large
Load Diff
+1325
-21
File diff suppressed because it is too large
Load Diff
+1325
-21
File diff suppressed because it is too large
Load Diff
+1325
-21
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+1336
-32
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+1326
-22
File diff suppressed because it is too large
Load Diff
+1326
-22
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user