diff --git a/lib/l10n/arb/app_de.arb b/lib/l10n/arb/app_de.arb index 07cfc58..188f5d3 100644 --- a/lib/l10n/arb/app_de.arb +++ b/lib/l10n/arb/app_de.arb @@ -17,7 +17,7 @@ "@navSettings": { "description": "Bottom navigation - Settings tab" }, - "navStore": "Store", + "navStore": "Repo", "@navStore": { "description": "Bottom navigation - Extension store tab" }, @@ -25,7 +25,7 @@ "@homeTitle": { "description": "Home screen title" }, - "homeSubtitle": "Spotify-Link einfügen oder nach Namen suchen", + "homeSubtitle": "Unterstützte URL einfügen oder nach Namen suchen", "@homeSubtitle": { "description": "Subtitle shown below search box" }, @@ -218,23 +218,23 @@ "@optionsReplayGainSubtitleOff": { "description": "Subtitle when ReplayGain is disabled" }, - "optionsArtistTagMode": "Artist Tag Mode", + "optionsArtistTagMode": "Künstler Tag-Modus", "@optionsArtistTagMode": { "description": "Setting title for how artist metadata is written into files" }, - "optionsArtistTagModeDescription": "Choose how multiple artists are written into embedded tags.", + "optionsArtistTagModeDescription": "Wähle aus, wie mehrere Künstler in eingebetteten Tags geschrieben sind.", "@optionsArtistTagModeDescription": { "description": "Bottom-sheet description for artist tag mode setting" }, - "optionsArtistTagModeJoined": "Single joined value", + "optionsArtistTagModeJoined": "Einzelne beigefügte Werte", "@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": "Einen Künstler wert wie \"Artist A, Artist B\" für maximale Spieler-Kompatibilität schreiben.", "@optionsArtistTagModeJoinedSubtitle": { "description": "Subtitle for joined artist tag mode" }, - "optionsArtistTagModeSplitVorbis": "Split tags for FLAC/Opus", + "optionsArtistTagModeSplitVorbis": "Tags für FLAC/Opus aufteilen", "@optionsArtistTagModeSplitVorbis": { "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" }, @@ -263,11 +263,11 @@ "@optionsConcurrentWarning": { "description": "Warning about rate limits" }, - "optionsExtensionStore": "Erweiterungs-Store", + "optionsExtensionStore": "Erweiterungs-Repo", "@optionsExtensionStore": { "description": "Show/hide store tab" }, - "optionsExtensionStoreSubtitle": "Store-Tab in Navigation anzeigen", + "optionsExtensionStoreSubtitle": "Repo-Tab in der Navigation anzeigen", "@optionsExtensionStoreSubtitle": { "description": "Subtitle for extension store toggle" }, @@ -370,7 +370,7 @@ "@extensionsUninstall": { "description": "Uninstall extension button" }, - "storeTitle": "Erweiterungs-Store", + "storeTitle": "Erweiterungs-Repo", "@storeTitle": { "description": "Store screen title" }, @@ -727,7 +727,7 @@ "@dialogImport": { "description": "Dialog button - import data" }, - "dialogDownload": "Download", + "dialogDownload": "Herunterladen", "@dialogDownload": { "description": "Confirm button in Download All dialog" }, @@ -788,7 +788,7 @@ "@dialogDeleteSelectedTitle": { "description": "Dialog title - delete selected items" }, - "dialogDeleteSelectedMessage": "Delete {count} {count, plural, =1{track} other{tracks}} from history?\n\nThis will also delete the files from storage.", + "dialogDeleteSelectedMessage": "Lösche {count} {count, plural, one {}=1{Track} other{Tracks}} aus dem Verlauf?\n\nDies löscht auch die Dateien aus dem Speicher.", "@dialogDeleteSelectedMessage": { "description": "Dialog message - delete selected tracks", "placeholders": { @@ -867,7 +867,7 @@ "@snackbarCredentialsCleared": { "description": "Snackbar - Spotify credentials removed" }, - "snackbarDeletedTracks": "Deleted {count} {count, plural, =1{track} other{tracks}}", + "snackbarDeletedTracks": "{count} {count, plural, one {}=1{Titel} other{Titel}}", "@snackbarDeletedTracks": { "description": "Snackbar - tracks deleted", "placeholders": { @@ -1051,47 +1051,47 @@ "@searchAlbums": { "description": "Search result category - albums" }, - "searchPlaylists": "Playlisten", + "searchPlaylists": "Playlists", "@searchPlaylists": { "description": "Search result category - playlists" }, - "searchSortTitle": "Sort Results", + "searchSortTitle": "Ergebnisse sortieren", "@searchSortTitle": { "description": "Bottom sheet title for search sort options" }, - "searchSortDefault": "Default", + "searchSortDefault": "Standard", "@searchSortDefault": { "description": "Sort option - default API order" }, - "searchSortTitleAZ": "Title (A-Z)", + "searchSortTitleAZ": "Titel (A-Z)", "@searchSortTitleAZ": { "description": "Sort option - title ascending" }, - "searchSortTitleZA": "Title (Z-A)", + "searchSortTitleZA": "Titel (Z-A)", "@searchSortTitleZA": { "description": "Sort option - title descending" }, - "searchSortArtistAZ": "Artist (A-Z)", + "searchSortArtistAZ": "Künstler (A-Z)", "@searchSortArtistAZ": { "description": "Sort option - artist ascending" }, - "searchSortArtistZA": "Artist (Z-A)", + "searchSortArtistZA": "Künstler (Z-A)", "@searchSortArtistZA": { "description": "Sort option - artist descending" }, - "searchSortDurationShort": "Duration (Shortest)", + "searchSortDurationShort": "Dauer (kürzeste)", "@searchSortDurationShort": { "description": "Sort option - shortest duration first" }, - "searchSortDurationLong": "Duration (Longest)", + "searchSortDurationLong": "Dauer (längste)", "@searchSortDurationLong": { "description": "Sort option - longest duration first" }, - "searchSortDateOldest": "Release Date (Oldest)", + "searchSortDateOldest": "Veröffentlichungsdatum (älteste)", "@searchSortDateOldest": { "description": "Sort option - oldest release first" }, - "searchSortDateNewest": "Release Date (Newest)", + "searchSortDateNewest": "Veröffentlichungsdatum (Neueste)", "@searchSortDateNewest": { "description": "Sort option - newest release first" }, @@ -1690,15 +1690,15 @@ "@storeClearFilters": { "description": "Button to clear all filters" }, - "storeAddRepoTitle": "Add Extension Repository", + "storeAddRepoTitle": "Erweiterungs-Repository hinzufügen", "@storeAddRepoTitle": { "description": "Store setup screen - heading when no repo is configured" }, - "storeAddRepoDescription": "Enter a GitHub repository URL that contains a registry.json file to browse and install extensions.", + "storeAddRepoDescription": "Gib eine GitHub Repository-URL ein, die eine Registry.json Datei enthält, um Erweiterungen zu durchsuchen und zu installieren.", "@storeAddRepoDescription": { "description": "Store setup screen - explanatory text" }, - "storeRepoUrlLabel": "Repository URL", + "storeRepoUrlLabel": "Repository-URL", "@storeRepoUrlLabel": { "description": "Label for the repository URL input field" }, @@ -1706,27 +1706,27 @@ "@storeRepoUrlHint": { "description": "Hint/placeholder for the repository URL input field" }, - "storeRepoUrlHelper": "e.g. https://github.com/user/extensions-repo", + "storeRepoUrlHelper": "z.B. https://github.com/user/extensions-repo", "@storeRepoUrlHelper": { "description": "Helper text below the repository URL input field" }, - "storeAddRepoButton": "Add Repository", + "storeAddRepoButton": "Repository hinzufügen", "@storeAddRepoButton": { "description": "Button to submit a new repository URL" }, - "storeChangeRepoTooltip": "Change repository", + "storeChangeRepoTooltip": "Repository ändern", "@storeChangeRepoTooltip": { "description": "Tooltip for the change-repository icon button in the app bar" }, - "storeRepoDialogTitle": "Extension Repository", + "storeRepoDialogTitle": "Erweiterungs-Repository", "@storeRepoDialogTitle": { "description": "Title of the change/remove repository dialog" }, - "storeRepoDialogCurrent": "Current repository:", + "storeRepoDialogCurrent": "Aktuelles Repository:", "@storeRepoDialogCurrent": { "description": "Label shown above the current repository URL in the dialog" }, - "storeNewRepoUrlLabel": "New Repository URL", + "storeNewRepoUrlLabel": "Neue Repository-URL", "@storeNewRepoUrlLabel": { "description": "Label for the new repository URL field inside the dialog" }, @@ -1742,7 +1742,7 @@ "@storeEmptyNoResults": { "description": "Message when search/filter returns no results" }, - "extensionDefaultProvider": "Standard (Deezer/Spotify)", + "extensionDefaultProvider": "Standard (Deezer)", "@extensionDefaultProvider": { "description": "Default search provider option" }, @@ -1949,11 +1949,11 @@ "@qualityHiResFlacMaxSubtitle": { "description": "Technical spec for hi-res max" }, - "downloadLossy320": "Lossy 320kbps", + "downloadLossy320": "Verlustbehaftet 320kbps", "@downloadLossy320": { "description": "Quality option label for Tidal lossy 320kbps" }, - "downloadLossyFormat": "Lossy Format", + "downloadLossyFormat": "Verlustbehaftetes Format", "@downloadLossyFormat": { "description": "Setting title to pick output format for Tidal lossy downloads" }, @@ -1961,7 +1961,7 @@ "@downloadLossy320Format": { "description": "Title of the Tidal lossy format picker bottom sheet" }, - "downloadLossy320FormatDesc": "Choose the output format for Tidal 320kbps lossy downloads. The original AAC stream will be converted to your selected format.", + "downloadLossy320FormatDesc": "Wähle das Ausgabeformat für Tidal 320kbps verlustbehaftete Downloads. Der ursprüngliche AAC Stream wird in das ausgewählte Format konvertiert.", "@downloadLossy320FormatDesc": { "description": "Description in the Tidal lossy format picker" }, @@ -1969,7 +1969,7 @@ "@downloadLossyMp3": { "description": "Tidal lossy format option - MP3 320kbps" }, - "downloadLossyMp3Subtitle": "Best compatibility, ~10MB per track", + "downloadLossyMp3Subtitle": "Beste Kompatibilität, ~10MB pro Titel", "@downloadLossyMp3Subtitle": { "description": "Subtitle for MP3 320kbps Tidal lossy option" }, @@ -1977,7 +1977,7 @@ "@downloadLossyOpus256": { "description": "Tidal lossy format option - Opus 256kbps" }, - "downloadLossyOpus256Subtitle": "Best quality Opus, ~8MB per track", + "downloadLossyOpus256Subtitle": "Beste Qualität, ~8MB pro Titel", "@downloadLossyOpus256Subtitle": { "description": "Subtitle for Opus 256kbps Tidal lossy option" }, @@ -1985,7 +1985,7 @@ "@downloadLossyOpus128": { "description": "Tidal lossy format option - Opus 128kbps" }, - "downloadLossyOpus128Subtitle": "Smallest size, ~4MB per track", + "downloadLossyOpus128Subtitle": "Kleinste Größe, ~4MB pro Track", "@downloadLossyOpus128Subtitle": { "description": "Subtitle for Opus 128kbps Tidal lossy option" }, @@ -2125,7 +2125,7 @@ "@downloadedAlbumDeleteSelected": { "description": "Button - delete selected tracks" }, - "downloadedAlbumDeleteMessage": "Delete {count} {count, plural, =1{track} other{tracks}} from this album?\n\nThis will also delete the files from storage.", + "downloadedAlbumDeleteMessage": "{count} {count, plural, one {}=1{Titel} other{Titel}} aus diesem Album löschen?\n\nDadurch werden auch die Dateien aus dem Speicher gelöscht.", "@downloadedAlbumDeleteMessage": { "description": "Delete confirmation with count", "placeholders": { @@ -2151,7 +2151,7 @@ "@downloadedAlbumTapToSelect": { "description": "Selection hint" }, - "downloadedAlbumDeleteCount": "Delete {count} {count, plural, =1{track} other{tracks}}", + "downloadedAlbumDeleteCount": "Lösche {count} {count, plural, one {}=1{Titel}other{Titel}}", "@downloadedAlbumDeleteCount": { "description": "Delete button text with count", "placeholders": { @@ -2402,7 +2402,7 @@ "@libraryShowDuplicateIndicatorSubtitle": { "description": "Subtitle for duplicate indicator toggle" }, - "libraryAutoScan": "Auto Scan", + "libraryAutoScan": "Auto-Scan", "@libraryAutoScan": { "description": "Setting for automatic library scanning" }, @@ -2410,19 +2410,19 @@ "@libraryAutoScanSubtitle": { "description": "Subtitle for auto scan setting" }, - "libraryAutoScanOff": "Off", + "libraryAutoScanOff": "Aus", "@libraryAutoScanOff": { "description": "Auto scan disabled" }, - "libraryAutoScanOnOpen": "Every app open", + "libraryAutoScanOnOpen": "Bei jeder App Öffnung", "@libraryAutoScanOnOpen": { "description": "Auto scan when app opens" }, - "libraryAutoScanDaily": "Daily", + "libraryAutoScanDaily": "Täglich", "@libraryAutoScanDaily": { "description": "Auto scan once per day" }, - "libraryAutoScanWeekly": "Weekly", + "libraryAutoScanWeekly": "Wöchentlich", "@libraryAutoScanWeekly": { "description": "Auto scan once per week" }, @@ -2483,7 +2483,7 @@ } } }, - "libraryFilesUnit": "{count, plural, =1{file} other{files}}", + "libraryFilesUnit": "{count, plural, =1{1 Datei} other{{count} Datein}}", "@libraryFilesUnit": { "description": "Unit label for files count during library scanning", "placeholders": { @@ -2509,7 +2509,7 @@ "@libraryScanning": { "description": "Status during scan" }, - "libraryScanFinalizing": "Finalizing library...", + "libraryScanFinalizing": "Bibliothek wird aktualisiert...", "@libraryScanFinalizing": { "description": "Status shown after file scanning finishes but library persistence is still running" }, @@ -2610,27 +2610,27 @@ "@libraryFilterFormat": { "description": "Filter section - file format" }, - "libraryFilterMetadata": "Metadata", + "libraryFilterMetadata": "Metadaten", "@libraryFilterMetadata": { "description": "Filter section - metadata completeness" }, - "libraryFilterMetadataComplete": "Complete metadata", + "libraryFilterMetadataComplete": "Komplette Metadaten", "@libraryFilterMetadataComplete": { "description": "Filter option - items with complete metadata" }, - "libraryFilterMetadataMissingAny": "Missing any metadata", + "libraryFilterMetadataMissingAny": "Metadaten fehlen", "@libraryFilterMetadataMissingAny": { "description": "Filter option - items missing any tracked metadata field" }, - "libraryFilterMetadataMissingYear": "Missing year", + "libraryFilterMetadataMissingYear": "Jahr fehlt", "@libraryFilterMetadataMissingYear": { "description": "Filter option - items missing release year/date" }, - "libraryFilterMetadataMissingGenre": "Missing genre", + "libraryFilterMetadataMissingGenre": "Genre fehlt", "@libraryFilterMetadataMissingGenre": { "description": "Filter option - items missing genre" }, - "libraryFilterMetadataMissingAlbumArtist": "Missing album artist", + "libraryFilterMetadataMissingAlbumArtist": "Fehlender Album-Künstler", "@libraryFilterMetadataMissingAlbumArtist": { "description": "Filter option - items missing album artist" }, @@ -2666,7 +2666,7 @@ "@timeJustNow": { "description": "Relative time - less than a minute ago" }, - "timeMinutesAgo": "{count, plural, =1{1 minute ago} other{{count} minutes ago}}", + "timeMinutesAgo": "{count, plural, one {}=1{vor 1 Minute} other{vor {count} Minuten}}", "@timeMinutesAgo": { "description": "Relative time - minutes ago", "placeholders": { @@ -2675,7 +2675,7 @@ } } }, - "timeHoursAgo": "{count, plural, =1{1 hour ago} other{{count} hours ago}}", + "timeHoursAgo": "{count, plural, one {}=1{vor 1 Stunde} other{vor {count} Stunden}}", "@timeHoursAgo": { "description": "Relative time - hours ago", "placeholders": { @@ -2748,7 +2748,7 @@ "@tutorialExtensionsDesc": { "description": "Tutorial extensions page description" }, - "tutorialExtensionsTip1": "Im Store Tab findest du nützliche Erweiterungen", + "tutorialExtensionsTip1": "Browse the Repo tab to discover useful extensions", "@tutorialExtensionsTip1": { "description": "Tutorial extensions tip 1" }, @@ -3088,11 +3088,11 @@ "@trackReEnrichFfmpegFailed": { "description": "Snackbar when FFmpeg embed fails for MP3/Opus" }, - "queueFlacAction": "Queue FLAC", + "queueFlacAction": "Warteschlange FLAC", "@queueFlacAction": { "description": "Action/button label for queueing FLAC redownloads for local tracks" }, - "queueFlacConfirmMessage": "Search online matches for the selected tracks and queue FLAC downloads.\n\nExisting files will not be modified or deleted.\n\nOnly high-confidence matches are queued automatically.\n\n{count} selected", + "queueFlacConfirmMessage": "Suche Online-Matches für ausgewählte Titel und Playlists für FLAC-Downloads.\n\nVorhandene Dateien werden weder geändert noch gelöscht.\n\nNur eindeutige Treffer werden automatisch zur Warteschlange hinzugefügt.\n\n{count} ausgewählt", "@queueFlacConfirmMessage": { "description": "Confirmation dialog body before queueing FLAC redownloads for local tracks", "placeholders": { @@ -3142,7 +3142,7 @@ "@trackConvertFormat": { "description": "Menu item - convert audio format" }, - "trackConvertFormatSubtitle": "In MP3 oder Opus konvertieren", + "trackConvertFormatSubtitle": "Convert to MP3, Opus, ALAC, or FLAC", "@trackConvertFormatSubtitle": { "description": "Subtitle for convert format menu item" }, @@ -3177,7 +3177,7 @@ } } }, - "trackConvertConfirmMessageLossless": "Convert from {sourceFormat} to {targetFormat}? (Lossless — no quality loss)\n\nThe original file will be deleted after conversion.", + "trackConvertConfirmMessageLossless": "Konvertieren von {sourceFormat} in {targetFormat}? (kein Qualitätsverlust)\n\nDie Originaldatei wird nach der Konvertierung gelöscht.", "@trackConvertConfirmMessageLossless": { "description": "Confirmation dialog message for lossless-to-lossless conversion", "placeholders": { @@ -3310,7 +3310,7 @@ "@collectionLoved": { "description": "Custom folder for favorite tracks" }, - "collectionPlaylists": "Playlisten", + "collectionPlaylists": "Playlists", "@collectionPlaylists": { "description": "Custom user playlists folder" }, @@ -3499,7 +3499,7 @@ "@collectionPlaylistRemoveCover": { "description": "Bottom sheet action to remove custom cover image from a playlist" }, - "selectionShareCount": "Share {count} {count, plural, =1{track} other{tracks}}", + "selectionShareCount": "Teile {count} {count, plural, one {}=1{Titel}other{Titel}}", "@selectionShareCount": { "description": "Share button text with count in selection mode", "placeholders": { @@ -3512,7 +3512,7 @@ "@selectionShareNoFiles": { "description": "Snackbar when no selected files exist on disk" }, - "selectionConvertCount": "Convert {count} {count, plural, =1{track} other{tracks}}", + "selectionConvertCount": "Konvertiere {count} {count, plural, one {}=1{Titel}other{Titel}}", "@selectionConvertCount": { "description": "Convert button text with count in selection mode", "placeholders": { @@ -3529,7 +3529,7 @@ "@selectionBatchConvertConfirmTitle": { "description": "Confirmation dialog title for batch conversion" }, - "selectionBatchConvertConfirmMessage": "Convert {count} {count, plural, =1{track} other{tracks}} to {format} at {bitrate}?\n\nOriginal files will be deleted after conversion.", + "selectionBatchConvertConfirmMessage": "Konvertiere {count} {format} {count, plural, one {}=1{Titel} other{Titel}} zu {bitrate}?\n\nOriginaldateien werden nach der Konvertierung gelöscht.", "@selectionBatchConvertConfirmMessage": { "description": "Confirmation dialog message for batch conversion", "placeholders": { @@ -3544,7 +3544,7 @@ } } }, - "selectionBatchConvertConfirmMessageLossless": "Convert {count} {count, plural, =1{track} other{tracks}} to {format}? (Lossless — no quality loss)\n\nOriginal files will be deleted after conversion.", + "selectionBatchConvertConfirmMessageLossless": "Konvertiere {count} {count, plural, one {}=1{Titel} other{Titel}} in {format}? (kein Qualitätsverlust)\n\nOriginaldateien werden nach der Konvertierung gelöscht.", "@selectionBatchConvertConfirmMessageLossless": { "description": "Confirmation dialog message for lossless batch conversion", "placeholders": { @@ -3600,19 +3600,19 @@ "@downloadUseAlbumArtistForFoldersTrackSubtitle": { "description": "Subtitle when Track Artist is used for folder naming" }, - "lyricsProvidersTitle": "Lyrics Providers", + "lyricsProvidersTitle": "Lyrics-Anbieter", "@lyricsProvidersTitle": { "description": "Title for the lyrics provider priority page" }, - "lyricsProvidersDescription": "Enable, disable and reorder lyrics sources. Providers are tried top-to-bottom until lyrics are found.", + "lyricsProvidersDescription": "Lyrics aktivieren, deaktivieren und neu ordnen. Anbieter werden von oben nach unten ausprobiert, bis Lyrics gefunden werden.", "@lyricsProvidersDescription": { "description": "Description on the lyrics provider priority page" }, - "lyricsProvidersInfoText": "Extension lyrics providers always run before built-in providers. At least one provider must remain enabled.", + "lyricsProvidersInfoText": "Erweiterungsanbieter werden immer vor eingebauten ausgeführt. Mindestens ein Anbieter muss aktiviert bleiben.", "@lyricsProvidersInfoText": { "description": "Info tip on lyrics provider priority page" }, - "lyricsProvidersEnabledSection": "Enabled ({count})", + "lyricsProvidersEnabledSection": "({count}) aktiviert", "@lyricsProvidersEnabledSection": { "description": "Section header for enabled providers", "placeholders": { @@ -3621,7 +3621,7 @@ } } }, - "lyricsProvidersDisabledSection": "Disabled ({count})", + "lyricsProvidersDisabledSection": "({count}) deaktiviert", "@lyricsProvidersDisabledSection": { "description": "Section header for disabled providers", "placeholders": { @@ -3646,35 +3646,35 @@ "@lyricsProviderLrclibDesc": { "description": "Description for LRCLIB provider" }, - "lyricsProviderNeteaseDesc": "NetEase Cloud Music (good for Asian songs)", + "lyricsProviderNeteaseDesc": "NetEase Cloud Music (gut für asiatische Lieder)", "@lyricsProviderNeteaseDesc": { "description": "Description for Netease provider" }, - "lyricsProviderMusixmatchDesc": "Largest lyrics database (multi-language)", + "lyricsProviderMusixmatchDesc": "Größte Lyrics-Datenbank (mehrsprachig)", "@lyricsProviderMusixmatchDesc": { "description": "Description for Musixmatch provider" }, - "lyricsProviderAppleMusicDesc": "Word-by-word synced lyrics (via proxy)", + "lyricsProviderAppleMusicDesc": "Wort-für-Wort-synchronisierte Lyrics (via Proxy)", "@lyricsProviderAppleMusicDesc": { "description": "Description for Apple Music provider" }, - "lyricsProviderQqMusicDesc": "QQ Music (good for Chinese songs, via proxy)", + "lyricsProviderQqMusicDesc": "QQ Music (gut für chinesische Lieder, via Proxy)", "@lyricsProviderQqMusicDesc": { "description": "Description for QQ Music provider" }, - "lyricsProviderExtensionDesc": "Extension provider", + "lyricsProviderExtensionDesc": "Erweiterungsanbieter", "@lyricsProviderExtensionDesc": { "description": "Generic description for extension-based lyrics providers" }, - "safMigrationTitle": "Storage Update Required", + "safMigrationTitle": "Speicheraktualisierung erforderlich", "@safMigrationTitle": { "description": "Title of SAF migration dialog" }, - "safMigrationMessage1": "SpotiFLAC now uses Android Storage Access Framework (SAF) for downloads. This fixes \"permission denied\" errors on Android 10+.", + "safMigrationMessage1": "SpotiFLAC verwendet jetzt Android Storage Access Framework (SAF) beim Herunterladen. Dies behebt Fehler bei Android 10+.", "@safMigrationMessage1": { "description": "First paragraph of SAF migration dialog" }, - "safMigrationMessage2": "Please select your download folder again to switch to the new storage system.", + "safMigrationMessage2": "Bitte wähle dein Download-Ordner erneut aus, um zum neuen System zu wechseln.", "@safMigrationMessage2": { "description": "Second paragraph of SAF migration dialog" }, @@ -3682,23 +3682,23 @@ "@safMigrationSuccess": { "description": "Snackbar after successfully migrating to SAF" }, - "settingsDonate": "Donate", + "settingsDonate": "Unterstützen", "@settingsDonate": { "description": "Settings menu item - donate" }, - "settingsDonateSubtitle": "Support SpotiFLAC-Mobile development", + "settingsDonateSubtitle": "Unterstütze die SpotiFLAC-Mobile Entwickler", "@settingsDonateSubtitle": { "description": "Subtitle for donate menu item" }, - "tooltipLoveAll": "Love All", + "tooltipLoveAll": "Alle lieben", "@tooltipLoveAll": { "description": "Tooltip for the Love All button on album/playlist screens" }, - "tooltipAddToPlaylist": "Add to Playlist", + "tooltipAddToPlaylist": "Zur Wiedergabeliste hinzufügen", "@tooltipAddToPlaylist": { "description": "Tooltip for the Add to Playlist button" }, - "snackbarRemovedTracksFromLoved": "Removed {count} tracks from Loved", + "snackbarRemovedTracksFromLoved": "{count} Titel von geliebt entfernt", "@snackbarRemovedTracksFromLoved": { "description": "Snackbar after removing multiple tracks from Loved folder", "placeholders": { @@ -3716,7 +3716,7 @@ } } }, - "dialogDownloadAllTitle": "Download All", + "dialogDownloadAllTitle": "Alle Herunterladen", "@dialogDownloadAllTitle": { "description": "Dialog title for bulk download confirmation" }, @@ -3733,7 +3733,7 @@ "@homeSkipAlreadyDownloaded": { "description": "Checkbox label in import dialog to skip already-downloaded songs" }, - "homeGoToAlbum": "Go to Album", + "homeGoToAlbum": "Zum Album gehen", "@homeGoToAlbum": { "description": "Context menu item to navigate to the album page" }, @@ -3757,7 +3757,7 @@ "@snackbarFailedToWriteStorage": { "description": "Snackbar when writing metadata back to file fails" }, - "snackbarError": "Error: {error}", + "snackbarError": "Fehler: {error}", "@snackbarError": { "description": "Generic error snackbar with error detail", "placeholders": { @@ -3786,7 +3786,7 @@ "@storageModeAppFolderSubtitle": { "description": "Subtitle for app folder storage mode" }, - "storageModeSaf": "SAF folder", + "storageModeSaf": "SAF-Ordner", "@storageModeSaf": { "description": "Storage mode option - use Android SAF picker" }, @@ -3798,7 +3798,7 @@ "@downloadFilenameDescription": { "description": "Description text in filename format bottom sheet" }, - "downloadFilenameInsertTag": "Tap to insert tag:", + "downloadFilenameInsertTag": "Tippe, um Tag einzufügen:", "@downloadFilenameInsertTag": { "description": "Label above filename tag chips" }, @@ -3830,11 +3830,11 @@ "@downloadCreatePlaylistSourceFolderRedundant": { "description": "Subtitle when playlist folder prefix setting is redundant because folder organization is already by playlist" }, - "downloadSongLinkRegion": "SongLink Region", + "downloadSongLinkRegion": "SongLink-Region", "@downloadSongLinkRegion": { "description": "Setting title for SongLink country region" }, - "downloadNetworkCompatibilityMode": "Network compatibility mode", + "downloadNetworkCompatibilityMode": "Netzwerkkompatibilitätsmodus", "@downloadNetworkCompatibilityMode": { "description": "Setting title for network compatibility toggle" }, @@ -3878,7 +3878,7 @@ "@downloadNeteaseIncludeRomanizationEnabled": { "description": "Subtitle when Netease romanization is enabled" }, - "downloadNeteaseIncludeRomanizationDisabled": "Disabled", + "downloadNeteaseIncludeRomanizationDisabled": "Deaktiviert", "@downloadNeteaseIncludeRomanizationDisabled": { "description": "Subtitle when Netease romanization is disabled" }, @@ -3914,11 +3914,11 @@ "@downloadFilterContributingDisabled": { "description": "Subtitle when contributing artist filter is disabled" }, - "downloadProvidersNoneEnabled": "None enabled", + "downloadProvidersNoneEnabled": "Keine aktiviert", "@downloadProvidersNoneEnabled": { "description": "Subtitle for lyrics providers setting when no providers are enabled" }, - "downloadMusixmatchLanguageCode": "Language code", + "downloadMusixmatchLanguageCode": "Sprach-Code", "@downloadMusixmatchLanguageCode": { "description": "Label for the Musixmatch language code text field" }, @@ -3934,7 +3934,7 @@ "@downloadMusixmatchAuto": { "description": "Button to reset Musixmatch language to automatic" }, - "downloadNetworkAnySubtitle": "WiFi + Mobile Data", + "downloadNetworkAnySubtitle": "WLAN + Mobile Daten", "@downloadNetworkAnySubtitle": { "description": "Subtitle for 'Any' network mode option" }, @@ -3950,11 +3950,11 @@ "@snackbarUnsupportedAudioFormat": { "description": "Snackbar when the audio format is not supported for the requested operation" }, - "cacheRefresh": "Refresh", + "cacheRefresh": "Aktualisieren", "@cacheRefresh": { "description": "Tooltip for refresh button on cache management page" }, - "dialogDownloadPlaylistsMessage": "Download {trackCount} {trackCount, plural, =1{track} other{tracks}} from {playlistCount} {playlistCount, plural, =1{playlist} other{playlists}}?", + "dialogDownloadPlaylistsMessage": "Lade {trackCount} {trackCount, plural, one {}=1{Titel} other{Titel}} von {playlistCount} {playlistCount, plural, one {}=1{Playlist} other{Playlists}}?", "@dialogDownloadPlaylistsMessage": { "description": "Dialog message for bulk playlist download confirmation", "placeholders": { @@ -4000,7 +4000,7 @@ "@editMetadataAutoFillDesc": { "description": "Description for the auto-fill section" }, - "editMetadataAutoFillFetch": "Fetch & Fill", + "editMetadataAutoFillFetch": "Abrufen & Ausfüllen", "@editMetadataAutoFillFetch": { "description": "Button label to fetch online metadata and fill selected fields" }, @@ -4025,11 +4025,11 @@ "@editMetadataAutoFillNoneSelected": { "description": "Snackbar when user taps Fetch without selecting any fields" }, - "editMetadataFieldTitle": "Title", + "editMetadataFieldTitle": "Titel", "@editMetadataFieldTitle": { "description": "Chip label for title field in auto-fill selector" }, - "editMetadataFieldArtist": "Artist", + "editMetadataFieldArtist": "Künstler", "@editMetadataFieldArtist": { "description": "Chip label for artist field in auto-fill selector" }, @@ -4037,19 +4037,19 @@ "@editMetadataFieldAlbum": { "description": "Chip label for album field in auto-fill selector" }, - "editMetadataFieldAlbumArtist": "Album Artist", + "editMetadataFieldAlbumArtist": "Album Künstler", "@editMetadataFieldAlbumArtist": { "description": "Chip label for album artist field in auto-fill selector" }, - "editMetadataFieldDate": "Date", + "editMetadataFieldDate": "Datum", "@editMetadataFieldDate": { "description": "Chip label for date field in auto-fill selector" }, - "editMetadataFieldTrackNum": "Track #", + "editMetadataFieldTrackNum": "Titel #", "@editMetadataFieldTrackNum": { "description": "Chip label for track number field in auto-fill selector" }, - "editMetadataFieldDiscNum": "Disc #", + "editMetadataFieldDiscNum": "Disk #", "@editMetadataFieldDiscNum": { "description": "Chip label for disc number field in auto-fill selector" }, @@ -4065,19 +4065,19 @@ "@editMetadataFieldLabel": { "description": "Chip label for label field in auto-fill selector" }, - "editMetadataFieldCopyright": "Copyright", + "editMetadataFieldCopyright": "Urheberrecht", "@editMetadataFieldCopyright": { "description": "Chip label for copyright field in auto-fill selector" }, - "editMetadataFieldCover": "Cover Art", + "editMetadataFieldCover": "Cover-Art", "@editMetadataFieldCover": { "description": "Chip label for cover art field in auto-fill selector" }, - "editMetadataSelectAll": "All", + "editMetadataSelectAll": "Alle", "@editMetadataSelectAll": { "description": "Button to select all fields for auto-fill" }, - "editMetadataSelectEmpty": "Empty only", + "editMetadataSelectEmpty": "Nur leer", "@editMetadataSelectEmpty": { "description": "Button to select only fields that are currently empty" }, @@ -4090,11 +4090,11 @@ } } }, - "queueDownloadedHeader": "Downloaded", + "queueDownloadedHeader": "Heruntergeladen", "@queueDownloadedHeader": { "description": "Header label for downloaded items section in library" }, - "queueFilteringIndicator": "Filtering...", + "queueFilteringIndicator": "Filtere...", "@queueFilteringIndicator": { "description": "Shown while filter results are being computed" }, @@ -4116,7 +4116,7 @@ } } }, - "queueEmptyAlbums": "No album downloads", + "queueEmptyAlbums": "Keine Album-Downloads", "@queueEmptyAlbums": { "description": "Empty state title when no album downloads exist" }, @@ -4148,7 +4148,7 @@ "@selectionTapPlaylistsToSelect": { "description": "Hint shown in playlist selection mode" }, - "selectionSelectPlaylistsToDelete": "Select playlists to delete", + "selectionSelectPlaylistsToDelete": "Playlist zum Löschen wählen", "@selectionSelectPlaylistsToDelete": { "description": "Hint shown when no playlists are selected for deletion" }, @@ -4160,7 +4160,7 @@ "@audioAnalysisDescription": { "description": "Description for audio analysis tap-to-analyze prompt" }, - "audioAnalysisAnalyzing": "Analyzing audio...", + "audioAnalysisAnalyzing": "Audio wird analysiert...", "@audioAnalysisAnalyzing": { "description": "Loading text while analyzing audio" }, @@ -4168,15 +4168,15 @@ "@audioAnalysisSampleRate": { "description": "Sample rate metric label" }, - "audioAnalysisBitDepth": "Bit Depth", + "audioAnalysisBitDepth": "Bit-Tiefe", "@audioAnalysisBitDepth": { "description": "Bit depth metric label" }, - "audioAnalysisChannels": "Channels", + "audioAnalysisChannels": "Kanäle", "@audioAnalysisChannels": { "description": "Channels metric label" }, - "audioAnalysisDuration": "Duration", + "audioAnalysisDuration": "Länge", "@audioAnalysisDuration": { "description": "Duration metric label" }, @@ -4184,15 +4184,15 @@ "@audioAnalysisNyquist": { "description": "Nyquist frequency metric label" }, - "audioAnalysisFileSize": "Size", + "audioAnalysisFileSize": "Größe", "@audioAnalysisFileSize": { "description": "File size metric label" }, - "audioAnalysisDynamicRange": "Dynamic Range", + "audioAnalysisDynamicRange": "Dynamischer Bereich", "@audioAnalysisDynamicRange": { "description": "Dynamic range metric label" }, - "audioAnalysisPeak": "Peak", + "audioAnalysisPeak": "Maximum", "@audioAnalysisPeak": { "description": "Peak amplitude metric label" }, @@ -4200,7 +4200,7 @@ "@audioAnalysisRms": { "description": "RMS level metric label" }, - "audioAnalysisSamples": "Samples", + "audioAnalysisSamples": "Proben", "@audioAnalysisSamples": { "description": "Total samples metric label" }, @@ -4213,7 +4213,7 @@ } } }, - "extensionsHomeFeedProvider": "Home Feed Provider", + "extensionsHomeFeedProvider": "Home Feed Anbieter", "@extensionsHomeFeedProvider": { "description": "Extensions page - label for home feed provider selector" }, @@ -4250,7 +4250,7 @@ "@sortAlphaDesc": { "description": "Sort option - alphabetical descending" }, - "cancelDownloadTitle": "Cancel download?", + "cancelDownloadTitle": "Download abbrechen?", "@cancelDownloadTitle": { "description": "Dialog title when confirming cancellation of an active download" }, @@ -4263,7 +4263,7 @@ } } }, - "cancelDownloadKeep": "Keep", + "cancelDownloadKeep": "Behalten", "@cancelDownloadKeep": { "description": "Dialog button - keep the active download (do not cancel)" }, @@ -4284,19 +4284,19 @@ } } }, - "errorLoadAlbum": "Failed to load album", + "errorLoadAlbum": "Fehler beim Laden des Albums", "@errorLoadAlbum": { "description": "Error state shown when album fails to load" }, - "errorLoadPlaylist": "Failed to load playlist", + "errorLoadPlaylist": "Fehler beim Laden der Playlist", "@errorLoadPlaylist": { "description": "Error state shown when playlist fails to load" }, - "errorLoadArtist": "Failed to load artist", + "errorLoadArtist": "Fehler beim Laden des Interpreten", "@errorLoadArtist": { "description": "Error state shown when artist fails to load" }, - "notifChannelDownloadName": "Download Progress", + "notifChannelDownloadName": "Download Fortschritt", "@notifChannelDownloadName": { "description": "Android notification channel name for download progress" }, @@ -4304,7 +4304,7 @@ "@notifChannelDownloadDesc": { "description": "Android notification channel description for download progress" }, - "notifChannelLibraryScanName": "Library Scan", + "notifChannelLibraryScanName": "Bibliotheksscan", "@notifChannelLibraryScanName": { "description": "Android notification channel name for library scan" }, @@ -4346,7 +4346,7 @@ } } }, - "notifAlreadyInLibrary": "Already in Library", + "notifAlreadyInLibrary": "Bereits in der Bibliothek", "@notifAlreadyInLibrary": { "description": "Notification title when track is already in library" }, @@ -4362,7 +4362,7 @@ } } }, - "notifDownloadComplete": "Download Complete", + "notifDownloadComplete": "Download abgeschlossen", "@notifDownloadComplete": { "description": "Notification title when a single download is complete" }, @@ -4435,7 +4435,7 @@ } } }, - "notifLibraryScanExcluded": "{count} excluded", + "notifLibraryScanExcluded": "{count} ausgeschlossen", "@notifLibraryScanExcluded": { "description": "Library scan complete suffix - excluded track count", "placeholders": { @@ -4444,7 +4444,7 @@ } } }, - "notifLibraryScanErrors": "{count} errors", + "notifLibraryScanErrors": "{count} Fehler", "@notifLibraryScanErrors": { "description": "Library scan complete suffix - error count", "placeholders": { @@ -4489,7 +4489,7 @@ } } }, - "notifUpdateReady": "Update Ready", + "notifUpdateReady": "Update bereit", "@notifUpdateReady": { "description": "Notification title when app update download is complete" }, @@ -4502,7 +4502,7 @@ } } }, - "notifUpdateFailed": "Update Failed", + "notifUpdateFailed": "Update fehlgeschlagen", "@notifUpdateFailed": { "description": "Notification title when app update download fails" },