mirror of
https://github.com/zarzet/SpotiFLAC-Mobile.git
synced 2026-07-28 23:08:59 +02:00
New translations app_en.arb (Chinese Traditional)
[ci skip]
This commit is contained in:
+146
-328
@@ -19,7 +19,7 @@
|
||||
},
|
||||
"navStore": "Repo",
|
||||
"@navStore": {
|
||||
"description": "Bottom navigation - Extension store tab"
|
||||
"description": "Bottom navigation - Extension repo tab"
|
||||
},
|
||||
"homeTitle": "Home",
|
||||
"@homeTitle": {
|
||||
@@ -73,10 +73,6 @@
|
||||
"@settingsAppearance": {
|
||||
"description": "Settings section - visual customization"
|
||||
},
|
||||
"settingsOptions": "Options",
|
||||
"@settingsOptions": {
|
||||
"description": "Settings section - app options"
|
||||
},
|
||||
"settingsExtensions": "Extensions",
|
||||
"@settingsExtensions": {
|
||||
"description": "Settings section - extension management"
|
||||
@@ -145,10 +141,6 @@
|
||||
"@appearanceHistoryViewGrid": {
|
||||
"description": "Grid layout option"
|
||||
},
|
||||
"optionsTitle": "Options",
|
||||
"@optionsTitle": {
|
||||
"description": "Options settings page title"
|
||||
},
|
||||
"optionsPrimaryProvider": "Primary Provider",
|
||||
"@optionsPrimaryProvider": {
|
||||
"description": "Main search provider setting"
|
||||
@@ -174,10 +166,6 @@
|
||||
"@optionsDefaultSearchTabSubtitle": {
|
||||
"description": "Subtitle for the preferred default search tab setting"
|
||||
},
|
||||
"optionsSwitchBack": "Choose the default search provider to switch back from an extension",
|
||||
"@optionsSwitchBack": {
|
||||
"description": "Hint to switch back from extension search"
|
||||
},
|
||||
"optionsAutoFallback": "Auto Fallback",
|
||||
"@optionsAutoFallback": {
|
||||
"description": "Auto-retry with other services"
|
||||
@@ -186,18 +174,6 @@
|
||||
"@optionsAutoFallbackSubtitle": {
|
||||
"description": "Subtitle for auto fallback"
|
||||
},
|
||||
"optionsUseExtensionProviders": "Use Extension Providers",
|
||||
"@optionsUseExtensionProviders": {
|
||||
"description": "Legacy setting label for extension download providers"
|
||||
},
|
||||
"optionsUseExtensionProvidersOn": "Extension providers are enabled",
|
||||
"@optionsUseExtensionProvidersOn": {
|
||||
"description": "Status when extension providers enabled"
|
||||
},
|
||||
"optionsUseExtensionProvidersOff": "Extension providers are required",
|
||||
"@optionsUseExtensionProvidersOff": {
|
||||
"description": "Legacy status when extension providers would be disabled"
|
||||
},
|
||||
"optionsEmbedLyrics": "Embed Lyrics",
|
||||
"@optionsEmbedLyrics": {
|
||||
"description": "Embed lyrics in audio files"
|
||||
@@ -230,10 +206,6 @@
|
||||
"@trackReplayGain": {
|
||||
"description": "Three-dot menu option to scan loudness and write ReplayGain tags"
|
||||
},
|
||||
"trackReplayGainSubtitle": "Analyze loudness and write ReplayGain tags",
|
||||
"@trackReplayGainSubtitle": {
|
||||
"description": "Subtitle for the rescan ReplayGain menu option"
|
||||
},
|
||||
"trackReplayGainScanning": "Analyzing loudness...",
|
||||
"@trackReplayGainScanning": {
|
||||
"description": "Snackbar/progress message while scanning ReplayGain for a single track"
|
||||
@@ -310,11 +282,11 @@
|
||||
},
|
||||
"optionsExtensionStore": "Extension Repo",
|
||||
"@optionsExtensionStore": {
|
||||
"description": "Show/hide store tab"
|
||||
"description": "Show/hide repo tab"
|
||||
},
|
||||
"optionsExtensionStoreSubtitle": "Show Repo tab in navigation",
|
||||
"@optionsExtensionStoreSubtitle": {
|
||||
"description": "Subtitle for extension store toggle"
|
||||
"description": "Subtitle for extension repo toggle"
|
||||
},
|
||||
"optionsCheckUpdates": "Check for Updates",
|
||||
"@optionsCheckUpdates": {
|
||||
@@ -360,31 +332,6 @@
|
||||
"@optionsDetailedLoggingOff": {
|
||||
"description": "Status when logging disabled"
|
||||
},
|
||||
"optionsSpotifyCredentials": "Spotify Credentials",
|
||||
"@optionsSpotifyCredentials": {
|
||||
"description": "Spotify API credentials setting"
|
||||
},
|
||||
"optionsSpotifyCredentialsConfigured": "Client ID: {clientId}...",
|
||||
"@optionsSpotifyCredentialsConfigured": {
|
||||
"description": "Shows configured client ID preview",
|
||||
"placeholders": {
|
||||
"clientId": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"optionsSpotifyCredentialsRequired": "Required - tap to configure",
|
||||
"@optionsSpotifyCredentialsRequired": {
|
||||
"description": "Prompt to set up credentials"
|
||||
},
|
||||
"optionsSpotifyWarning": "Spotify requires your own API credentials. Get them free from developer.spotify.com",
|
||||
"@optionsSpotifyWarning": {
|
||||
"description": "Info about Spotify API requirement"
|
||||
},
|
||||
"optionsSpotifyDeprecationWarning": "Spotify search will be deprecated on March 3, 2026 due to Spotify API changes. Please switch to Deezer.",
|
||||
"@optionsSpotifyDeprecationWarning": {
|
||||
"description": "Warning about Spotify API deprecation"
|
||||
},
|
||||
"extensionsTitle": "Extensions",
|
||||
"@extensionsTitle": {
|
||||
"description": "Extensions page title"
|
||||
@@ -402,26 +349,17 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"extensionsAuthor": "by {author}",
|
||||
"@extensionsAuthor": {
|
||||
"description": "Extension author credit",
|
||||
"placeholders": {
|
||||
"author": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"extensionsUninstall": "Uninstall",
|
||||
"@extensionsUninstall": {
|
||||
"description": "Uninstall extension button"
|
||||
},
|
||||
"storeTitle": "Extension Repo",
|
||||
"@storeTitle": {
|
||||
"description": "Store screen title"
|
||||
"description": "Repo screen title"
|
||||
},
|
||||
"storeSearch": "Search extensions...",
|
||||
"@storeSearch": {
|
||||
"description": "Store search placeholder"
|
||||
"description": "Repo search placeholder"
|
||||
},
|
||||
"storeInstall": "Install",
|
||||
"@storeInstall": {
|
||||
@@ -912,14 +850,6 @@
|
||||
"@snackbarHistoryCleared": {
|
||||
"description": "Snackbar - history deleted"
|
||||
},
|
||||
"snackbarCredentialsSaved": "Credentials saved",
|
||||
"@snackbarCredentialsSaved": {
|
||||
"description": "Snackbar - Spotify credentials saved"
|
||||
},
|
||||
"snackbarCredentialsCleared": "Credentials cleared",
|
||||
"@snackbarCredentialsCleared": {
|
||||
"description": "Snackbar - Spotify credentials removed"
|
||||
},
|
||||
"snackbarDeletedTracks": "Deleted {count} {count, plural, =1{track} other{tracks}}",
|
||||
"@snackbarDeletedTracks": {
|
||||
"description": "Snackbar - tracks deleted",
|
||||
@@ -938,10 +868,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"snackbarFillAllFields": "Please fill all fields",
|
||||
"@snackbarFillAllFields": {
|
||||
"description": "Snackbar - validation error"
|
||||
},
|
||||
"snackbarViewQueue": "View Queue",
|
||||
"@snackbarViewQueue": {
|
||||
"description": "Snackbar action - view download queue"
|
||||
@@ -1055,14 +981,6 @@
|
||||
"@actionDeselect": {
|
||||
"description": "Action button - deselect all"
|
||||
},
|
||||
"actionRemoveCredentials": "Remove Credentials",
|
||||
"@actionRemoveCredentials": {
|
||||
"description": "Action button - delete Spotify credentials"
|
||||
},
|
||||
"actionSaveCredentials": "Save Credentials",
|
||||
"@actionSaveCredentials": {
|
||||
"description": "Action button - save Spotify credentials"
|
||||
},
|
||||
"selectionSelected": "{count} selected",
|
||||
"@selectionSelected": {
|
||||
"description": "Selection count indicator",
|
||||
@@ -1236,6 +1154,19 @@
|
||||
"@updateNewVersionReady": {
|
||||
"description": "Update subtitle"
|
||||
},
|
||||
"updateRequiredTitle": "Update required",
|
||||
"@updateRequiredTitle": {
|
||||
"description": "Title of the mandatory update dialog shown when the installed version is too old"
|
||||
},
|
||||
"updateRequiredNotice": "This version is {count} releases behind and is no longer supported. Update to keep using the app.",
|
||||
"@updateRequiredNotice": {
|
||||
"description": "Subtitle of the mandatory update dialog; explains why the dialog cannot be dismissed",
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"updateCurrent": "Current",
|
||||
"@updateCurrent": {
|
||||
"description": "Label for current version"
|
||||
@@ -1272,10 +1203,6 @@
|
||||
"@providerPriorityInfo": {
|
||||
"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.",
|
||||
"@providerPriorityFallbackExtensionsDescription": {
|
||||
"description": "Section description for extension fallback selection"
|
||||
@@ -1284,10 +1211,6 @@
|
||||
"@providerPriorityFallbackExtensionsHint": {
|
||||
"description": "Hint below the extension fallback selection list"
|
||||
},
|
||||
"providerBuiltIn": "Legacy",
|
||||
"@providerBuiltIn": {
|
||||
"description": "Legacy label retained for old generated localization compatibility"
|
||||
},
|
||||
"providerExtension": "Extension",
|
||||
"@providerExtension": {
|
||||
"description": "Label for extension-provided providers"
|
||||
@@ -1304,14 +1227,6 @@
|
||||
"@metadataProviderPriorityInfo": {
|
||||
"description": "Info tip about rate limits"
|
||||
},
|
||||
"metadataNoRateLimits": "No rate limits",
|
||||
"@metadataNoRateLimits": {
|
||||
"description": "Deezer provider description"
|
||||
},
|
||||
"metadataMayRateLimit": "May rate limit",
|
||||
"@metadataMayRateLimit": {
|
||||
"description": "Spotify provider description"
|
||||
},
|
||||
"logTitle": "Logs",
|
||||
"@logTitle": {
|
||||
"description": "Logs screen title"
|
||||
@@ -1378,30 +1293,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"credentialsTitle": "Spotify Credentials",
|
||||
"@credentialsTitle": {
|
||||
"description": "Credentials dialog title"
|
||||
},
|
||||
"credentialsDescription": "Enter your Client ID and Secret to use your own Spotify application quota.",
|
||||
"@credentialsDescription": {
|
||||
"description": "Credentials dialog explanation"
|
||||
},
|
||||
"credentialsClientId": "Client ID",
|
||||
"@credentialsClientId": {
|
||||
"description": "Client ID field label - DO NOT TRANSLATE"
|
||||
},
|
||||
"credentialsClientIdHint": "Paste Client ID",
|
||||
"@credentialsClientIdHint": {
|
||||
"description": "Client ID placeholder"
|
||||
},
|
||||
"credentialsClientSecret": "Client Secret",
|
||||
"@credentialsClientSecret": {
|
||||
"description": "Client Secret field label - DO NOT TRANSLATE"
|
||||
},
|
||||
"credentialsClientSecretHint": "Paste Client Secret",
|
||||
"@credentialsClientSecretHint": {
|
||||
"description": "Client Secret placeholder"
|
||||
},
|
||||
"channelStable": "Stable",
|
||||
"@channelStable": {
|
||||
"description": "Update channel - stable releases"
|
||||
@@ -1510,10 +1401,6 @@
|
||||
"@settingsDownloadSubtitle": {
|
||||
"description": "Download settings description"
|
||||
},
|
||||
"settingsOptionsSubtitle": "Fallback, metadata, lyrics, cover art",
|
||||
"@settingsOptionsSubtitle": {
|
||||
"description": "Options settings description"
|
||||
},
|
||||
"settingsExtensionsSubtitle": "Manage download providers",
|
||||
"@settingsExtensionsSubtitle": {
|
||||
"description": "Extensions settings description"
|
||||
@@ -1730,27 +1617,27 @@
|
||||
},
|
||||
"storeFilterAll": "All",
|
||||
"@storeFilterAll": {
|
||||
"description": "Store filter - all extensions"
|
||||
"description": "Repo filter - all extensions"
|
||||
},
|
||||
"storeFilterMetadata": "Metadata",
|
||||
"@storeFilterMetadata": {
|
||||
"description": "Store filter - metadata providers"
|
||||
"description": "Repo filter - metadata providers"
|
||||
},
|
||||
"storeFilterDownload": "Download",
|
||||
"@storeFilterDownload": {
|
||||
"description": "Store filter - download providers"
|
||||
"description": "Repo filter - download providers"
|
||||
},
|
||||
"storeFilterUtility": "Utility",
|
||||
"@storeFilterUtility": {
|
||||
"description": "Store filter - utility extensions"
|
||||
"description": "Repo filter - utility extensions"
|
||||
},
|
||||
"storeFilterLyrics": "Lyrics",
|
||||
"@storeFilterLyrics": {
|
||||
"description": "Store filter - lyrics providers"
|
||||
"description": "Repo filter - lyrics providers"
|
||||
},
|
||||
"storeFilterIntegration": "Integration",
|
||||
"@storeFilterIntegration": {
|
||||
"description": "Store filter - integrations"
|
||||
"description": "Repo filter - integrations"
|
||||
},
|
||||
"storeClearFilters": "Clear filters",
|
||||
"@storeClearFilters": {
|
||||
@@ -1772,10 +1659,6 @@
|
||||
"@storeRepoUrlHint": {
|
||||
"description": "Hint/placeholder for the repository URL input field"
|
||||
},
|
||||
"storeRepoUrlHelper": "e.g. https://github.com/user/extensions-repo",
|
||||
"@storeRepoUrlHelper": {
|
||||
"description": "Helper text below the repository URL input field"
|
||||
},
|
||||
"storeAddRepoButton": "Add Repository",
|
||||
"@storeAddRepoButton": {
|
||||
"description": "Button to submit a new repository URL"
|
||||
@@ -1808,18 +1691,6 @@
|
||||
"@storeEmptyNoResults": {
|
||||
"description": "Message when search/filter returns no results"
|
||||
},
|
||||
"extensionDefaultProvider": "Default Search",
|
||||
"@extensionDefaultProvider": {
|
||||
"description": "Default search provider option"
|
||||
},
|
||||
"extensionDefaultProviderSubtitle": "Use the default metadata search",
|
||||
"@extensionDefaultProviderSubtitle": {
|
||||
"description": "Subtitle for default provider"
|
||||
},
|
||||
"extensionAuthor": "Author",
|
||||
"@extensionAuthor": {
|
||||
"description": "Extension detail - author"
|
||||
},
|
||||
"extensionId": "ID",
|
||||
"@extensionId": {
|
||||
"description": "Extension detail - unique ID"
|
||||
@@ -2087,10 +1958,6 @@
|
||||
"@downloadLossyOpus128Subtitle": {
|
||||
"description": "Subtitle for Opus 128kbps lossy option"
|
||||
},
|
||||
"qualityNote": "Actual quality depends on track availability from the service",
|
||||
"@qualityNote": {
|
||||
"description": "Note about quality availability"
|
||||
},
|
||||
"downloadAskBeforeDownload": "Ask Before Download",
|
||||
"@downloadAskBeforeDownload": {
|
||||
"description": "Setting - show quality picker"
|
||||
@@ -2143,6 +2010,14 @@
|
||||
"@appearanceAmoledDarkSubtitle": {
|
||||
"description": "Subtitle for AMOLED dark"
|
||||
},
|
||||
"appearanceHeroAnimations": "Hero animations",
|
||||
"@appearanceHeroAnimations": {
|
||||
"description": "Toggle for shared-element (Hero) transitions"
|
||||
},
|
||||
"appearanceHeroAnimationsSubtitle": "Fly covers between screens, e.g. when opening the player",
|
||||
"@appearanceHeroAnimationsSubtitle": {
|
||||
"description": "Subtitle for the Hero animations toggle"
|
||||
},
|
||||
"queueClearAll": "Clear All",
|
||||
"@queueClearAll": {
|
||||
"description": "Button - clear all queue items"
|
||||
@@ -2175,6 +2050,27 @@
|
||||
"@settingsDownloadNetworkSubtitle": {
|
||||
"description": "Subtitle explaining network preference"
|
||||
},
|
||||
"settingsConcurrentDownloads": "Concurrent downloads",
|
||||
"@settingsConcurrentDownloads": {
|
||||
"description": "Setting title - how many tracks download at the same time"
|
||||
},
|
||||
"settingsConcurrentDownloadsSubtitle": "Downloading several tracks at once is faster, but some providers may rate-limit parallel requests.",
|
||||
"@settingsConcurrentDownloadsSubtitle": {
|
||||
"description": "Subtitle explaining the concurrent downloads picker"
|
||||
},
|
||||
"concurrentDownloadsOne": "1 track at a time",
|
||||
"@concurrentDownloadsOne": {
|
||||
"description": "Concurrent downloads option - sequential"
|
||||
},
|
||||
"concurrentDownloadsCount": "Up to {count} tracks at once",
|
||||
"@concurrentDownloadsCount": {
|
||||
"description": "Concurrent downloads option - parallel",
|
||||
"placeholders": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"albumFolderArtistAlbum": "Artist / Album",
|
||||
"@albumFolderArtistAlbum": {
|
||||
"description": "Album folder option"
|
||||
@@ -2245,10 +2141,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"downloadedAlbumAllSelected": "All tracks selected",
|
||||
"@downloadedAlbumAllSelected": {
|
||||
"description": "Status - all items selected"
|
||||
},
|
||||
"downloadedAlbumTapToSelect": "Tap tracks to select",
|
||||
"@downloadedAlbumTapToSelect": {
|
||||
"description": "Selection hint"
|
||||
@@ -2976,6 +2868,22 @@
|
||||
"@cacheLibraryCoverDesc": {
|
||||
"description": "Description of what library cover cache contains"
|
||||
},
|
||||
"libraryPlaybackNormalization": "Volume normalization",
|
||||
"@libraryPlaybackNormalization": {
|
||||
"description": "Toggle title for ReplayGain playback normalization in the built-in player"
|
||||
},
|
||||
"libraryPlaybackNormalizationSubtitle": "Even out loudness between tracks using their ReplayGain or R128 tags, when present",
|
||||
"@libraryPlaybackNormalizationSubtitle": {
|
||||
"description": "Subtitle explaining playback volume normalization"
|
||||
},
|
||||
"cacheAudioAnalysis": "Audio analysis cache",
|
||||
"@cacheAudioAnalysis": {
|
||||
"description": "Cache item title for saved audio analysis results"
|
||||
},
|
||||
"cacheAudioAnalysisDesc": "Saved spectrograms and analysis results. Will re-analyze on next open.",
|
||||
"@cacheAudioAnalysisDesc": {
|
||||
"description": "Description of what audio analysis cache contains"
|
||||
},
|
||||
"cacheExploreFeed": "Explore feed cache",
|
||||
"@cacheExploreFeed": {
|
||||
"description": "Cache item title for explore home feed cache"
|
||||
@@ -3092,18 +3000,10 @@
|
||||
"@trackSaveCoverArt": {
|
||||
"description": "Menu action - save album cover art as file"
|
||||
},
|
||||
"trackSaveCoverArtSubtitle": "Save album art as .jpg file",
|
||||
"@trackSaveCoverArtSubtitle": {
|
||||
"description": "Subtitle for save cover art action"
|
||||
},
|
||||
"trackSaveLyrics": "Save Lyrics (.lrc)",
|
||||
"@trackSaveLyrics": {
|
||||
"description": "Menu action - save lyrics as .lrc file"
|
||||
},
|
||||
"trackSaveLyricsSubtitle": "Fetch and save lyrics as .lrc file",
|
||||
"@trackSaveLyricsSubtitle": {
|
||||
"description": "Subtitle for save lyrics action"
|
||||
},
|
||||
"trackSaveLyricsProgress": "Saving lyrics...",
|
||||
"@trackSaveLyricsProgress": {
|
||||
"description": "Snackbar while saving lyrics to file"
|
||||
@@ -3116,10 +3016,6 @@
|
||||
"@trackReEnrichOnlineSubtitle": {
|
||||
"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"
|
||||
@@ -3203,18 +3099,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"queueFlacFindingProgress": "Finding FLAC matches... ({current}/{total})",
|
||||
"@queueFlacFindingProgress": {
|
||||
"description": "Snackbar while resolving remote matches for local FLAC redownloads",
|
||||
"placeholders": {
|
||||
"current": {
|
||||
"type": "int"
|
||||
},
|
||||
"total": {
|
||||
"type": "int"
|
||||
}
|
||||
}
|
||||
},
|
||||
"queueFlacNoReliableMatches": "No reliable online matches found for the selection",
|
||||
"@queueFlacNoReliableMatches": {
|
||||
"description": "Snackbar when no safe FLAC redownload matches were found"
|
||||
@@ -3244,10 +3128,6 @@
|
||||
"@trackConvertFormat": {
|
||||
"description": "Menu item - convert audio format"
|
||||
},
|
||||
"trackConvertFormatSubtitle": "Convert to AAC/M4A, MP3, Opus, ALAC, or FLAC",
|
||||
"@trackConvertFormatSubtitle": {
|
||||
"description": "Subtitle for convert format menu item"
|
||||
},
|
||||
"trackConvertTitle": "Convert Audio",
|
||||
"@trackConvertTitle": {
|
||||
"description": "Title of convert bottom sheet"
|
||||
@@ -3260,6 +3140,14 @@
|
||||
"@trackConvertBitrate": {
|
||||
"description": "Label for bitrate selection"
|
||||
},
|
||||
"trackConvertKeepOriginal": "Keep original file",
|
||||
"@trackConvertKeepOriginal": {
|
||||
"description": "Toggle to preserve the source file during conversion"
|
||||
},
|
||||
"trackConvertKeepOriginalDescription": "Add the converted file as a separate library entry",
|
||||
"@trackConvertKeepOriginalDescription": {
|
||||
"description": "Description for preserving the source file during conversion"
|
||||
},
|
||||
"trackConvertConfirmTitle": "Confirm Conversion",
|
||||
"@trackConvertConfirmTitle": {
|
||||
"description": "Confirmation dialog title"
|
||||
@@ -3291,6 +3179,18 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"trackConvertConfirmKeepOriginal": "Convert from {sourceFormat} to {targetFormat}?\n\nThe original file will be kept and the converted file will be added as a separate library entry.",
|
||||
"@trackConvertConfirmKeepOriginal": {
|
||||
"description": "Confirmation message when the source file will be preserved",
|
||||
"placeholders": {
|
||||
"sourceFormat": {
|
||||
"type": "String"
|
||||
},
|
||||
"targetFormat": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"trackConvertLosslessHint": "Lossless conversion — no quality loss",
|
||||
"@trackConvertLosslessHint": {
|
||||
"description": "Hint shown when converting between lossless formats"
|
||||
@@ -3316,10 +3216,6 @@
|
||||
"@cueSplitTitle": {
|
||||
"description": "Title for CUE split bottom sheet"
|
||||
},
|
||||
"cueSplitSubtitle": "Split CUE+FLAC into individual tracks",
|
||||
"@cueSplitSubtitle": {
|
||||
"description": "Subtitle for CUE split menu item"
|
||||
},
|
||||
"cueSplitAlbum": "Album: {album}",
|
||||
"@cueSplitAlbum": {
|
||||
"description": "Album name in CUE split sheet",
|
||||
@@ -3416,10 +3312,6 @@
|
||||
"@collectionFavoriteArtists": {
|
||||
"description": "Custom folder for favorite artists"
|
||||
},
|
||||
"collectionPlaylists": "Playlists",
|
||||
"@collectionPlaylists": {
|
||||
"description": "Custom user playlists folder"
|
||||
},
|
||||
"collectionPlaylist": "Playlist",
|
||||
"@collectionPlaylist": {
|
||||
"description": "Single playlist label"
|
||||
@@ -3436,10 +3328,6 @@
|
||||
"@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",
|
||||
@@ -3476,10 +3364,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"collectionPlaylistCreated": "Playlist created",
|
||||
"@collectionPlaylistCreated": {
|
||||
"description": "Snackbar after creating playlist"
|
||||
},
|
||||
"collectionPlaylistNameHint": "Playlist name",
|
||||
"@collectionPlaylistNameHint": {
|
||||
"description": "Hint text for playlist name input"
|
||||
@@ -3496,19 +3380,6 @@
|
||||
"@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"
|
||||
@@ -3553,15 +3424,6 @@
|
||||
"@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",
|
||||
@@ -3705,15 +3567,15 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"selectionBatchConvertProgress": "Converting {current} of {total}...",
|
||||
"@selectionBatchConvertProgress": {
|
||||
"description": "Snackbar during batch conversion progress",
|
||||
"selectionBatchConvertConfirmKeepOriginal": "Convert {count} {count, plural, =1{track} other{tracks}} to {format}?\n\nOriginal files will be kept and converted files will be added as separate library entries.",
|
||||
"@selectionBatchConvertConfirmKeepOriginal": {
|
||||
"description": "Batch conversion confirmation when source files will be preserved",
|
||||
"placeholders": {
|
||||
"current": {
|
||||
"count": {
|
||||
"type": "int"
|
||||
},
|
||||
"total": {
|
||||
"type": "int"
|
||||
"format": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -3879,10 +3741,6 @@
|
||||
"@backupImportButton": {
|
||||
"description": "Button to pick a backup file to restore"
|
||||
},
|
||||
"backupCreating": "Creating backup...",
|
||||
"@backupCreating": {
|
||||
"description": "Progress text while a backup is being created"
|
||||
},
|
||||
"backupCreated": "Backup created",
|
||||
"@backupCreated": {
|
||||
"description": "Snackbar after a backup file is created"
|
||||
@@ -3891,10 +3749,6 @@
|
||||
"@backupCreateFailed": {
|
||||
"description": "Snackbar when backup creation fails"
|
||||
},
|
||||
"backupEmpty": "There is nothing to back up yet",
|
||||
"@backupEmpty": {
|
||||
"description": "Snackbar when there is no data to back up"
|
||||
},
|
||||
"backupRestoreConfirmTitle": "Restore this backup?",
|
||||
"@backupRestoreConfirmTitle": {
|
||||
"description": "Confirmation dialog title before restoring a backup"
|
||||
@@ -3907,10 +3761,6 @@
|
||||
"@backupRestoreConfirmButton": {
|
||||
"description": "Confirm button to proceed with restore"
|
||||
},
|
||||
"backupRestoring": "Restoring backup...",
|
||||
"@backupRestoring": {
|
||||
"description": "Progress text while restoring a backup"
|
||||
},
|
||||
"backupRestored": "Backup restored successfully",
|
||||
"@backupRestored": {
|
||||
"description": "Snackbar after a successful restore"
|
||||
@@ -3997,7 +3847,7 @@
|
||||
"@backupIncludeSecretsDescription": {
|
||||
"description": "Explanation for the include-credentials toggle"
|
||||
},
|
||||
"backupExtensionsRestoreFailed": "{count} {count, plural, =1{extension} other{extensions}} could not be reinstalled. Install them manually from the store.",
|
||||
"backupExtensionsRestoreFailed": "{count} {count, plural, =1{extension} other{extensions}} could not be reinstalled. Install them manually from the repo.",
|
||||
"@backupExtensionsRestoreFailed": {
|
||||
"description": "Snackbar/hint when some extensions failed to reinstall during restore",
|
||||
"placeholders": {
|
||||
@@ -4110,6 +3960,26 @@
|
||||
"@storageModeSafSubtitle": {
|
||||
"description": "Subtitle for SAF storage mode"
|
||||
},
|
||||
"downloadFolderAccessLostTitle": "Download folder access lost",
|
||||
"@downloadFolderAccessLostTitle": {
|
||||
"description": "Title of the warning banner shown in Files settings when the saved SAF folder grant is no longer valid"
|
||||
},
|
||||
"downloadFolderAccessLostSubtitle": "Downloads will fail until you re-select the folder",
|
||||
"@downloadFolderAccessLostSubtitle": {
|
||||
"description": "Subtitle of the warning banner shown when the saved SAF folder grant is no longer valid"
|
||||
},
|
||||
"downloadFolderReselect": "Re-select folder",
|
||||
"@downloadFolderReselect": {
|
||||
"description": "Button that reopens the folder picker to restore download folder access"
|
||||
},
|
||||
"downloadErrorSafPermissionLost": "SAF permission invalid or revoked. Please reconfigure download location in Settings.",
|
||||
"@downloadErrorSafPermissionLost": {
|
||||
"description": "Error shown on downloads that failed because the persisted Android SAF folder grant is no longer valid"
|
||||
},
|
||||
"downloadErrorFolderAccessLost": "Download folder access lost. Please re-select your download folder in Settings.",
|
||||
"@downloadErrorFolderAccessLost": {
|
||||
"description": "Error shown on downloads that failed because the iOS download folder bookmark could not be opened"
|
||||
},
|
||||
"downloadFilenameDescription": "Use {artist}, {title}, {album}, {track}, {year}, {date}, {disc} as placeholders.",
|
||||
"@downloadFilenameDescription": {
|
||||
"description": "Description shown in filename format editor"
|
||||
@@ -4178,10 +4048,6 @@
|
||||
"@downloadSelectServiceToEnable": {
|
||||
"description": "Subtitle when quality picker is disabled due to extension service"
|
||||
},
|
||||
"downloadSelectTidalQobuz": "Select a provider with quality options to choose audio quality",
|
||||
"@downloadSelectTidalQobuz": {
|
||||
"description": "Legacy info shown when a provider does not expose quality options"
|
||||
},
|
||||
"downloadEmbedLyricsDisabled": "Enable metadata embedding first",
|
||||
"@downloadEmbedLyricsDisabled": {
|
||||
"description": "Subtitle when lyrics embedding is blocked by metadata toggle"
|
||||
@@ -4430,10 +4296,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"queueDownloadedHeader": "Downloaded",
|
||||
"@queueDownloadedHeader": {
|
||||
"description": "Header label for downloaded items section in library"
|
||||
},
|
||||
"queueFilteringIndicator": "Filtering...",
|
||||
"@queueFilteringIndicator": {
|
||||
"description": "Shown while filter results are being computed"
|
||||
@@ -4588,15 +4450,6 @@
|
||||
"@audioAnalysisRescanning": {
|
||||
"description": "Loading text while audio is being re-analyzed after an explicit refresh"
|
||||
},
|
||||
"extensionsSearchWith": "Search with {providerName}",
|
||||
"@extensionsSearchWith": {
|
||||
"description": "Extensions page - subtitle for default metadata search provider option",
|
||||
"placeholders": {
|
||||
"providerName": {
|
||||
"type": "String"
|
||||
}
|
||||
}
|
||||
},
|
||||
"extensionsHomeFeedProvider": "Home Feed Provider",
|
||||
"@extensionsHomeFeedProvider": {
|
||||
"description": "Extensions page - label for home feed provider selector"
|
||||
@@ -4634,14 +4487,6 @@
|
||||
"@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"
|
||||
@@ -4676,34 +4521,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"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",
|
||||
@@ -4770,6 +4587,14 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"notifVerificationRequiredTitle": "Verification required",
|
||||
"@notifVerificationRequiredTitle": {
|
||||
"description": "Notification title shown when a download needs the user to complete a verification challenge but the app is in the background"
|
||||
},
|
||||
"notifVerificationRequiredBody": "Open the app to complete verification and resume downloads",
|
||||
"@notifVerificationRequiredBody": {
|
||||
"description": "Notification body prompting the user to return to the app to solve a verification challenge"
|
||||
},
|
||||
"notifAllDownloadsComplete": "All Downloads Complete",
|
||||
"@notifAllDownloadsComplete": {
|
||||
"description": "Notification title when all downloads finish successfully"
|
||||
@@ -4956,14 +4781,6 @@
|
||||
"@actionPaste": {
|
||||
"description": "Generic action - paste from clipboard"
|
||||
},
|
||||
"searchTracksHint": "Search tracks...",
|
||||
"@searchTracksHint": {
|
||||
"description": "Placeholder for the search screen input"
|
||||
},
|
||||
"searchTracksEmptyPrompt": "Search for tracks",
|
||||
"@searchTracksEmptyPrompt": {
|
||||
"description": "Empty-state prompt on the search screen"
|
||||
},
|
||||
"tutorialSearchHint": "Paste or search...",
|
||||
"@tutorialSearchHint": {
|
||||
"description": "Placeholder shown in the tutorial search demo"
|
||||
@@ -4992,14 +4809,6 @@
|
||||
"@optionsEmbedMetadataSubtitleOff": {
|
||||
"description": "Subtitle when metadata embedding is disabled"
|
||||
},
|
||||
"optionsMaxQualityCoverSubtitleDisabled": "Disabled when metadata embedding is off",
|
||||
"@optionsMaxQualityCoverSubtitleDisabled": {
|
||||
"description": "Subtitle for max quality cover when metadata embedding is disabled"
|
||||
},
|
||||
"downloadFilenameHintExample": "{artist} - {title}",
|
||||
"@downloadFilenameHintExample": {
|
||||
"description": "Example placeholder for the download filename format input"
|
||||
},
|
||||
"trackCoverNoEmbeddedArt": "No embedded album art found",
|
||||
"@trackCoverNoEmbeddedArt": {
|
||||
"description": "Message shown when a track file has no embedded cover art"
|
||||
@@ -5239,14 +5048,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"optionsDefaultSearchTabAlbums": "Albums",
|
||||
"@optionsDefaultSearchTabAlbums": {
|
||||
"description": "Default search tab option - Albums tab"
|
||||
},
|
||||
"optionsDefaultSearchTabTracks": "Tracks",
|
||||
"@optionsDefaultSearchTabTracks": {
|
||||
"description": "Default search tab option - Tracks tab"
|
||||
},
|
||||
"settingsFiles": "Files & Folders",
|
||||
"@settingsFiles": {
|
||||
"description": "Settings menu item - file and folder settings"
|
||||
@@ -5307,10 +5108,26 @@
|
||||
"@downloadDeduplicationEnabled": {
|
||||
"description": "Subtitle when deduplication is on"
|
||||
},
|
||||
"downloadDeduplicationWithQualityVariants": "Existing files at the selected quality will be skipped",
|
||||
"@downloadDeduplicationWithQualityVariants": {
|
||||
"description": "Deduplication subtitle when separate quality versions are allowed"
|
||||
},
|
||||
"downloadDeduplicationDisabled": "All tracks will be downloaded regardless of history",
|
||||
"@downloadDeduplicationDisabled": {
|
||||
"description": "Subtitle when deduplication is off"
|
||||
},
|
||||
"downloadQualityVariants": "Allow different quality versions",
|
||||
"@downloadQualityVariants": {
|
||||
"description": "Setting to retain multiple quality versions of the same track"
|
||||
},
|
||||
"downloadQualityVariantsDescription": "Add the selected quality to the filename and keep each version in download history",
|
||||
"@downloadQualityVariantsDescription": {
|
||||
"description": "Description for retaining multiple quality versions"
|
||||
},
|
||||
"trackOptionDownloadQualityVariant": "Download another quality",
|
||||
"@trackOptionDownloadQualityVariant": {
|
||||
"description": "Track menu action to download another quality version"
|
||||
},
|
||||
"downloadFallbackExtensions": "Fallback Extensions",
|
||||
"@downloadFallbackExtensions": {
|
||||
"description": "Settings item for configuring fallback extension providers"
|
||||
@@ -5451,6 +5268,11 @@
|
||||
}
|
||||
},
|
||||
"queueDownloadStarting": "Starting...",
|
||||
"queueCheckingDownloadSession": "Checking download session...",
|
||||
"queueResolvingDownloadMetadata": "Resolving track metadata...",
|
||||
"queueResolvingDownloadStream": "Preparing audio stream...",
|
||||
"queueWaitingForVerification": "Waiting for verification...",
|
||||
"queueResumingAfterVerification": "Resuming after verification...",
|
||||
"@queueDownloadStarting": {
|
||||
"description": "Queue status before download progress is available"
|
||||
},
|
||||
@@ -5539,7 +5361,7 @@
|
||||
"@downloadNativeWorker": {
|
||||
"description": "Setting title for Android native download worker"
|
||||
},
|
||||
"downloadNativeWorkerSubtitle": "Beta Android service worker for extension downloads",
|
||||
"downloadNativeWorkerSubtitle": "Android background service for extension downloads",
|
||||
"@downloadNativeWorkerSubtitle": {
|
||||
"description": "Setting subtitle for Android native download worker"
|
||||
},
|
||||
@@ -5699,10 +5521,6 @@
|
||||
"@errorInvalidFolderSelected": {
|
||||
"description": "Error when the selected folder is invalid"
|
||||
},
|
||||
"errorCouldNotKeepFolderAccess": "Could not keep access to the selected folder",
|
||||
"@errorCouldNotKeepFolderAccess": {
|
||||
"description": "Error when persistent folder access cannot be saved"
|
||||
},
|
||||
"storeAnyVersion": "Any",
|
||||
"@storeAnyVersion": {
|
||||
"description": "Store detail value when any app version is accepted"
|
||||
|
||||
Reference in New Issue
Block a user