New translations app_en.arb (Chinese Simplified)

[ci skip]
This commit is contained in:
Zarz Eleutherius
2026-07-25 10:12:56 +07:00
parent f0a7a043ec
commit a5f96b57e6
+146 -328
View File
@@ -19,7 +19,7 @@
},
"navStore": "仓库",
"@navStore": {
"description": "Bottom navigation - Extension store tab"
"description": "Bottom navigation - Extension repo tab"
},
"homeTitle": "主页",
"@homeTitle": {
@@ -73,10 +73,6 @@
"@settingsAppearance": {
"description": "Settings section - visual customization"
},
"settingsOptions": "选项",
"@settingsOptions": {
"description": "Settings section - app options"
},
"settingsExtensions": "扩展",
"@settingsExtensions": {
"description": "Settings section - extension management"
@@ -145,10 +141,6 @@
"@appearanceHistoryViewGrid": {
"description": "Grid layout option"
},
"optionsTitle": "选项",
"@optionsTitle": {
"description": "Options settings page title"
},
"optionsPrimaryProvider": "主要提供者",
"@optionsPrimaryProvider": {
"description": "Main search provider setting"
@@ -174,10 +166,6 @@
"@optionsDefaultSearchTabSubtitle": {
"description": "Subtitle for the preferred default search tab setting"
},
"optionsSwitchBack": "选择要从扩展中返回的默认搜索服务器",
"@optionsSwitchBack": {
"description": "Hint to switch back from extension search"
},
"optionsAutoFallback": "自动回退",
"@optionsAutoFallback": {
"description": "Auto-retry with other services"
@@ -186,18 +174,6 @@
"@optionsAutoFallbackSubtitle": {
"description": "Subtitle for auto fallback"
},
"optionsUseExtensionProviders": "使用扩展提供商",
"@optionsUseExtensionProviders": {
"description": "Legacy setting label for extension download providers"
},
"optionsUseExtensionProvidersOn": "扩展提供商已启用",
"@optionsUseExtensionProvidersOn": {
"description": "Status when extension providers enabled"
},
"optionsUseExtensionProvidersOff": "需要扩展提供商",
"@optionsUseExtensionProvidersOff": {
"description": "Legacy status when extension providers would be disabled"
},
"optionsEmbedLyrics": "内嵌歌词",
"@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": "分析响度并写入ReplayGain标签",
"@trackReplayGainSubtitle": {
"description": "Subtitle for the rescan ReplayGain menu option"
},
"trackReplayGainScanning": "正在分析声音……",
"@trackReplayGainScanning": {
"description": "Snackbar/progress message while scanning ReplayGain for a single track"
@@ -310,11 +282,11 @@
},
"optionsExtensionStore": "扩展仓库",
"@optionsExtensionStore": {
"description": "Show/hide store tab"
"description": "Show/hide repo tab"
},
"optionsExtensionStoreSubtitle": "在导航中显示仓库标签页",
"@optionsExtensionStoreSubtitle": {
"description": "Subtitle for extension store toggle"
"description": "Subtitle for extension repo toggle"
},
"optionsCheckUpdates": "检查更新",
"@optionsCheckUpdates": {
@@ -360,31 +332,6 @@
"@optionsDetailedLoggingOff": {
"description": "Status when logging disabled"
},
"optionsSpotifyCredentials": "Spotify 凭据",
"@optionsSpotifyCredentials": {
"description": "Spotify API credentials setting"
},
"optionsSpotifyCredentialsConfigured": "客户端 ID{clientId}……",
"@optionsSpotifyCredentialsConfigured": {
"description": "Shows configured client ID preview",
"placeholders": {
"clientId": {
"type": "String"
}
}
},
"optionsSpotifyCredentialsRequired": "必填 - 点击配置",
"@optionsSpotifyCredentialsRequired": {
"description": "Prompt to set up credentials"
},
"optionsSpotifyWarning": "Spotify 需要您自己的 API 凭据。在 developer.spotify.com 免费获取",
"@optionsSpotifyWarning": {
"description": "Info about Spotify API requirement"
},
"optionsSpotifyDeprecationWarning": "Spotify 搜索将在 2026 年 3 月 3 日因 Spotify API 更改而被废弃。请切换到 Deezer。",
"@optionsSpotifyDeprecationWarning": {
"description": "Warning about Spotify API deprecation"
},
"extensionsTitle": "扩展",
"@extensionsTitle": {
"description": "Extensions page title"
@@ -402,26 +349,17 @@
}
}
},
"extensionsAuthor": "来自 {author}",
"@extensionsAuthor": {
"description": "Extension author credit",
"placeholders": {
"author": {
"type": "String"
}
}
},
"extensionsUninstall": "卸载",
"@extensionsUninstall": {
"description": "Uninstall extension button"
},
"storeTitle": "扩展仓库地址",
"@storeTitle": {
"description": "Store screen title"
"description": "Repo screen title"
},
"storeSearch": "搜索扩展……",
"@storeSearch": {
"description": "Store search placeholder"
"description": "Repo search placeholder"
},
"storeInstall": "安装",
"@storeInstall": {
@@ -912,14 +850,6 @@
"@snackbarHistoryCleared": {
"description": "Snackbar - history deleted"
},
"snackbarCredentialsSaved": "凭据已保存",
"@snackbarCredentialsSaved": {
"description": "Snackbar - Spotify credentials saved"
},
"snackbarCredentialsCleared": "凭据已清除",
"@snackbarCredentialsCleared": {
"description": "Snackbar - Spotify credentials removed"
},
"snackbarDeletedTracks": "已删除 {count} {count, plural, =1{首歌曲} other{首歌曲}}",
"@snackbarDeletedTracks": {
"description": "Snackbar - tracks deleted",
@@ -938,10 +868,6 @@
}
}
},
"snackbarFillAllFields": "请填写所有字段",
"@snackbarFillAllFields": {
"description": "Snackbar - validation error"
},
"snackbarViewQueue": "查看队列",
"@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"