From dbbefdd75d2d891c282435b4409c36a61f0c8889 Mon Sep 17 00:00:00 2001 From: zarzet <42882290+zarzet@users.noreply.github.com> Date: Sat, 26 Sep 2026 02:26:15 +0700 Subject: [PATCH] chore(l10n): integrate Crowdin updates from PR #551 Import the Crowdin translations while preserving current app strings. Resolve locale IDs, ICU plurals, and placeholder mismatches so generated localization APIs remain compatible. Source: https://github.com/spotiflacapp/SpotiFLAC-Mobile/pull/551 --- lib/l10n/arb/app_ar.arb | 538 +- lib/l10n/arb/app_de.arb | 11859 ++++++++++++++++++---------------- lib/l10n/arb/app_es_ES.arb | 1211 +++- lib/l10n/arb/app_fr.arb | 11859 ++++++++++++++++++---------------- lib/l10n/arb/app_hi.arb | 334 +- lib/l10n/arb/app_id.arb | 11974 ++++++++++++++++++----------------- lib/l10n/arb/app_it.arb | 239 +- lib/l10n/arb/app_ja.arb | 11859 ++++++++++++++++++---------------- lib/l10n/arb/app_ko.arb | 931 ++- lib/l10n/arb/app_nl.arb | 334 +- lib/l10n/arb/app_pt_PT.arb | 11907 ++++++++++++++++++---------------- lib/l10n/arb/app_ru.arb | 11887 ++++++++++++++++++---------------- lib/l10n/arb/app_tr.arb | 11859 ++++++++++++++++++---------------- lib/l10n/arb/app_uk.arb | 11859 ++++++++++++++++++---------------- lib/l10n/arb/app_zh_CN.arb | 334 +- lib/l10n/arb/app_zh_TW.arb | 334 +- 16 files changed, 54126 insertions(+), 45192 deletions(-) diff --git a/lib/l10n/arb/app_ar.arb b/lib/l10n/arb/app_ar.arb index c3f2ea00..14151c58 100644 --- a/lib/l10n/arb/app_ar.arb +++ b/lib/l10n/arb/app_ar.arb @@ -1,4 +1,48 @@ { + "upgradeIntroWelcome": "Welcome to\nSpotiFLAC-Mobile 5.0", + "upgradeIntroThemeTitle": "Make it\nyour own.", + "upgradeIntroThemeBody": "Choose a look. Your choice applies immediately, and you can change it later in Appearance.", + "upgradeIntroThemeMaterialBody": "The familiar layout, with Material controls and your accent color.", + "upgradeIntroThemeMornyeBody": "Glass navigation, a redesigned Library and an immersive player.", + "upgradeIntroRustTitle": "A new engine.\nBuilt with Rust.", + "upgradeIntroRustBody": "In 5.0, the app’s backend has moved from Go to Rust. It is the engine working behind the screens you use every day.", + "upgradeIntroRustEngineTitle": "Working behind the scenes", + "upgradeIntroRustEngineBody": "Rust handles downloads, audio metadata, library scanning and the extension runtime on Android and iOS.", + "upgradeIntroRustMemoryTitle": "More careful with memory", + "upgradeIntroRustMemoryBody": "Reused buffers and fewer copies reduce temporary allocations when processing artwork and extension data.", + "upgradeIntroRustKeepTitle": "Keep your music", + "upgradeIntroRustKeepBody": "No need to download your collection again. Your saved music and settings stay in place, with no new setup required.", + "upgradeIntroWelcomeBody": "A quick look at what has changed, and where to find it.", + "upgradeIntroMornyeBody": "A new look for your player, lyrics and navigation.", + "upgradeIntroLibrarySummary": "Browse your music by playlist, artist or album.", + "upgradeIntroRepoSummary": "Choose your music sources and providers through extensions.", + "upgradeIntroLibraryTitle": "Get to know\nyour Library.", + "upgradeIntroLibraryBody": "In Mornye, browse by category or find your albums in Recently Added.", + "upgradeIntroDownloadsBody": "Pause and retry from Downloads at the top right. Finished music moves to Recently Added.", + "upgradeIntroSearchBody": "Search saved music here. The separate Search tab looks through your extensions.", + "upgradeIntroPlayerTitle": "Set up\nyour player.", + "upgradeIntroPlayerBody": "You can change your theme and playback options at any time. Here is where to find them.", + "upgradeIntroAppearanceBody": "Change themes in Settings → Appearance. In Mornye, scroll down for compact navigation; scroll up to expand it.", + "upgradeIntroAutoMixBody": "Match tempo and beats between tracks. Enable it in Settings → Local Library → Playback. Off by default.", + "upgradeIntroSettingsBody": "In Mornye, tap your profile on Home to open Settings and edit your name and photo.", + "upgradeIntroSkip": "Skip", + "upgradeIntroContinue": "Continue", + "upgradeIntroDone": "Start listening", + "upgradeIntroReplay": "What’s new in 5.0", + "cacheMotionArtwork": "Offline motion covers", + "cacheMotionArtworkDesc": "Album videos saved with downloads. Removing them keeps your music files and static covers.", + "nowPlayingVolume": "Volume", + "@nowPlayingVolume": { + "description": "System volume control label in the Mornye player" + }, + "appearanceStyle": "App Style", + "@appearanceStyle": { + "description": "Appearance section for choosing the app visual style" + }, + "discordRichPresence": "Discord Rich Presence", + "discordPresenceDescription": "Share the track playing in the built-in player on Discord. Requires Discord to be installed and signed in.", + "discordPresenceMissing": "Install Discord and sign in, then turn this setting off and on again.", + "discordPresenceUnavailable": "Discord Rich Presence is unavailable in this build or on this device.", "@@locale": "ar", "@@last_modified": "2026-04-28", "appName": "SpotiFLAC Mobile", @@ -57,6 +101,11 @@ "@historyFilterSingles": { "description": "Filter chip - show singles only" }, + "libraryRecentlyAdded": "Recently Added", + "libraryDownloads": "Downloads", + "libraryNoActiveDownloads": "No active downloads", + "librarySearchHint": "Search your library", + "libraryEmptyCollection": "Your music will appear here", "historySearchHint": "سجل البحث...", "@historySearchHint": { "description": "Search bar placeholder in history" @@ -237,6 +286,7 @@ "description": "Progress dialog title while batch scanning ReplayGain" }, "replayGainBatchSuccess": "تمت إضافة وسوم ReplyGain ل {success} أغنية من أصل {total}", + "replayGainUnsupportedDecoder": "Some tracks could not be analyzed because their audio codec is not supported by the ReplayGain decoder. Their files were not changed.", "@replayGainBatchSuccess": { "description": "Snackbar after batch ReplayGain completes", "placeholders": { @@ -461,6 +511,18 @@ "@aboutSachinsenalDesc": { "description": "Credit description for sachinsenal0x64" }, + "aboutUnituneDesc": "محلل رابط الموسيقى المفتوح المصدر بواسطة Flaze، يستخدم لمطابقة الظهر عبر المنصات.", + "@aboutUnituneDesc": { + "description": "Credit for the UniTune resolver" + }, + "aboutMusicBrainzDesc": "فتح قاعدة بيانات الموسيقى التي يحتفظ بها ميتابراينز ومجتمعه، تستخدم لتسجيل الإحالات المرجعية.", + "@aboutMusicBrainzDesc": { + "description": "Credit for the MusicBrainz database" + }, + "aboutSquiglyDesc": "خدمة وصلة موسيقية عالمية من قبل ليام ماكميلان، تستخدم كمرجع نهائي للحلول عبر المنصات.", + "@aboutSquiglyDesc": { + "description": "Credit for the Squigly resolver" + }, "aboutAppDescription": "البحث عن بيانات التعريف الموسيقي، وإدارة الملحقات، وتنظيم مكتبتك.", "@aboutAppDescription": { "description": "App description in header card" @@ -594,7 +656,7 @@ "@setupIcloudNotSupported": { "description": "Error when user selects iCloud Drive on iOS" }, - "setupDownloadInFlac": "Download music in lossless and Hi-Res quality", + "setupDownloadInFlac": "تحميل الموسيقى بجودة عالية و عالية", "@setupDownloadInFlac": { "description": "App tagline in setup" }, @@ -780,7 +842,7 @@ "@dialogImportPlaylistTitle": { "description": "Dialog title - import CSV playlist" }, - "dialogImportPlaylistMessage": "Found {count} tracks in the playlist file. Add them to download queue?", + "dialogImportPlaylistMessage": "تم العثور على {count} مسارات في ملف قائمة التشغيل. إضافتها لتنزيل؟", "csvImportTracks": "{count} مسارات من CSV", "@csvImportTracks": { "description": "Label shown in quality picker for CSV import", @@ -790,11 +852,11 @@ } } }, - "collectionExportM3u": "Export as M3U8", + "collectionExportM3u": "تصدير كـ M3U8", "@collectionExportM3u": { "description": "Tooltip on the collection screen action that exports the track list as an M3U8 playlist file" }, - "collectionExportM3uDone": "Exported {exported} of {total} tracks", + "collectionExportM3uDone": "تصدير {exported} من مسارات {total}", "@collectionExportM3uDone": { "description": "Snackbar after M3U8 export; tracks without a local file are not exported", "placeholders": { @@ -806,43 +868,59 @@ } } }, - "collectionExportM3uNone": "No downloaded files to export", + "collectionExportM3uNone": "لا توجد ملفات تم تنزيلها للتصدير", "@collectionExportM3uNone": { "description": "Snackbar when an M3U8 export finds no local files" }, - "collectionExportM3uFailed": "Export failed", + "collectionExportM3uFailed": "فشل التصدير", "@collectionExportM3uFailed": { "description": "Snackbar when writing or sharing the M3U8 export fails" }, - "trackOpenOn": "Open on...", + "trackOpenOn": "فتح على...", "@trackOpenOn": { "description": "Track option and sheet title listing streaming platforms where the track can be opened" }, - "trackOpenOnNoLinks": "No platform links found for this track.", + "trackOpenOnNoLinks": "لم يتم العثور على روابط منصة لهذا المسار.", "@trackOpenOnNoLinks": { "description": "Shown in the Open on sheet when song.link returns no links" }, - "libraryReviewDuplicates": "Review duplicates", + "libraryReviewDuplicates": "مراجعة التكرار", "@libraryReviewDuplicates": { "description": "Library settings row opening the duplicate review sheet" }, - "libraryReviewDuplicatesSubtitle": "Find tracks stored more than once", + "libraryReviewDuplicatesSubtitle": "العثور على المسارات المخزنة أكثر من مرة", "@libraryReviewDuplicatesSubtitle": { "description": "Subtitle for the duplicate review settings row" }, - "duplicatesTitle": "Duplicates", + "duplicatesTitle": "مكرر", "@duplicatesTitle": { "description": "Title of the duplicate review sheet" }, - "duplicatesEmpty": "No duplicate tracks found.", + "duplicatesEmpty": "لم يتم العثور على مسارات مكررة.", "@duplicatesEmpty": { "description": "Shown when the duplicate review sheet finds nothing" }, - "duplicatesKeepBest": "Keep best", + "duplicatesKeepBest": "احتفظ بأفضل", "@duplicatesKeepBest": { "description": "Button that deletes all but the highest-quality copy in a duplicate group" }, - "duplicatesKeepBestMessage": "Delete {count} lower-quality copies of \"{trackName}\"?", + "duplicatesKeepBestAll": "Keep best for all", + "@duplicatesKeepBestAll": { + "description": "Button that keeps the highest-quality copy in every duplicate group and deletes the rest" + }, + "duplicatesKeepBestAllMessage": "Keep the best copy of {groupCount} {groupCount, plural, =1{track} other{tracks}} and delete {count} lower-quality {count, plural, =1{copy} other{copies}}?\n\nThe deleted files will be removed from storage.", + "@duplicatesKeepBestAllMessage": { + "description": "Confirmation message for keeping the best copy across every duplicate group", + "placeholders": { + "count": { + "type": "int" + }, + "groupCount": { + "type": "int" + } + } + }, + "duplicatesKeepBestMessage": "حذف {count} نسخ أقل جودة من \"{trackName}\"؟", "@duplicatesKeepBestMessage": { "description": "Confirmation message for the keep-best action", "placeholders": { @@ -854,7 +932,7 @@ } } }, - "duplicatesDeleteCopyMessage": "Delete this copy of \"{trackName}\"?", + "duplicatesDeleteCopyMessage": "حذف هذه النسخة من \"{trackName}\"؟", "@duplicatesDeleteCopyMessage": { "description": "Confirmation message for deleting one duplicate copy", "placeholders": { @@ -1215,11 +1293,11 @@ "@updateNewVersionReady": { "description": "Update subtitle" }, - "updateRequiredTitle": "Update required", + "updateRequiredTitle": "التحديث مطلوب", "@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": "هذا الإصدار هو إصدارات {count} وراءه ولم يعد مدعوماً. قم بالتحديث لمواصلة استخدام التطبيق.", "@updateRequiredNotice": { "description": "Subtitle of the mandatory update dialog; explains why the dialog cannot be dismissed", "placeholders": { @@ -1564,7 +1642,23 @@ "@trackAudioQuality": { "description": "Metadata label - audio quality" }, - "libraryQualityLabelFileFormat": "File format", + "trackReplayGainTrackGain": "ReplayGain Track Gain", + "@trackReplayGainTrackGain": { + "description": "Metadata label - ReplayGain track gain" + }, + "trackReplayGainTrackPeak": "ReplayGain Track Peak", + "@trackReplayGainTrackPeak": { + "description": "Metadata label - ReplayGain track peak" + }, + "trackReplayGainAlbumGain": "ReplayGain Album Gain", + "@trackReplayGainAlbumGain": { + "description": "Metadata label - ReplayGain album gain" + }, + "trackReplayGainAlbumPeak": "ReplayGain Album Peak", + "@trackReplayGainAlbumPeak": { + "description": "Metadata label - ReplayGain album peak" + }, + "libraryQualityLabelFileFormat": "صيغة الملف", "@libraryQualityLabelFileFormat": { "description": "Library audio quality label mode that shows the detected file format" }, @@ -1931,27 +2025,27 @@ "@extensionsNoMetadataProvider": { "description": "Empty state - no metadata providers" }, - "extensionsSearchProvider": "Search Provider", + "extensionsSearchProvider": "مزود البحث", "@extensionsSearchProvider": { "description": "Setting - search provider selection" }, - "extensionsNoCustomSearch": "No extensions with custom search", + "extensionsNoCustomSearch": "لا توجد ملحقات مع بحث مخصص", "@extensionsNoCustomSearch": { "description": "Empty state - no search providers" }, - "extensionsSearchProviderDescription": "Choose which service to use for searching tracks", + "extensionsSearchProviderDescription": "اختر الخدمة التي يمكن استخدامها للبحث عن المسارات", "@extensionsSearchProviderDescription": { "description": "Search provider setting description" }, - "extensionsCustomSearch": "Custom search", + "extensionsCustomSearch": "بحث مخصص", "@extensionsCustomSearch": { "description": "Label for custom search provider" }, - "extensionsErrorLoading": "Error loading extension", + "extensionsErrorLoading": "خطأ في تحميل الملحق", "@extensionsErrorLoading": { "description": "Error message when extension fails to load" }, - "qualityFlacLossless": "FLAC Lossless", + "qualityFlacLossless": "عدم فقدان الدقة FLAC", "@qualityFlacLossless": { "description": "Quality option - CD quality FLAC" }, @@ -1983,39 +2077,39 @@ "@downloadLossyFormat": { "description": "Setting title to pick output format for lossy downloads" }, - "downloadAutoConvert": "Auto-convert after download", + "downloadAutoConvert": "التحويل التلقائي بعد التحميل", "@downloadAutoConvert": { "description": "Toggle for automatic post-download audio conversion" }, - "downloadAutoConvertSubtitle": "Convert completed downloads to a smaller lossy format. The original is replaced only after conversion succeeds.", + "downloadAutoConvertSubtitle": "تحويل التنزيلات المكتملة إلى تنسيق أقل خسارة. يتم استبدال الأصل فقط بعد نجاح التحويل.", "@downloadAutoConvertSubtitle": { "description": "Explanation of safe automatic post-download conversion" }, - "downloadAutoConvertFormat": "Output format", + "downloadAutoConvertFormat": "تنسيق الإخراج", "@downloadAutoConvertFormat": { "description": "Automatic conversion output format setting" }, - "downloadAutoConvertFormatSubtitle": "Choose the lossy format used for newly completed downloads.", + "downloadAutoConvertFormatSubtitle": "اختر التنسيق المستخدم للتنزيلات المكتملة حديثا.", "@downloadAutoConvertFormatSubtitle": { "description": "Automatic conversion format picker explanation" }, - "downloadAutoConvertBitrate": "Output quality", + "downloadAutoConvertBitrate": "جودة الإخراج", "@downloadAutoConvertBitrate": { "description": "Automatic conversion bitrate setting" }, - "downloadAutoConvertBitrateSubtitle": "Higher bitrates preserve more detail but create larger files.", + "downloadAutoConvertBitrateSubtitle": "معدلات البتات الأعلى تحافظ على المزيد من التفاصيل ولكن تنشئ ملفات أكبر.", "@downloadAutoConvertBitrateSubtitle": { "description": "Automatic conversion bitrate picker explanation" }, - "downloadAutoConvertMp3Subtitle": "Best compatibility across players and devices", + "downloadAutoConvertMp3Subtitle": "أفضل توافق عبر اللاعبين والأجهزة", "@downloadAutoConvertMp3Subtitle": { "description": "MP3 automatic conversion option description" }, - "downloadAutoConvertM4aSubtitle": "Efficient AAC audio in an M4A container", + "downloadAutoConvertM4aSubtitle": "صوت AC فعال في حاوية M4A", "@downloadAutoConvertM4aSubtitle": { "description": "M4A AAC automatic conversion option description" }, - "downloadAutoConvertOpusSubtitle": "Best efficiency for modern players", + "downloadAutoConvertOpusSubtitle": "أفضل كفاءة للاعبين الجدد", "@downloadAutoConvertOpusSubtitle": { "description": "Opus automatic conversion option description" }, @@ -2075,7 +2169,7 @@ "@downloadAlbumFolderStructure": { "description": "Setting - album folder organization" }, - "albumFolderStructureDescription": "Choose how album folders are structured", + "albumFolderStructureDescription": "اختر كيف يتم تنظيم مجلدات الألبوم", "@albumFolderStructureDescription": { "description": "Album folder structure picker description" }, @@ -2111,19 +2205,19 @@ "@appearanceAmoledDarkSubtitle": { "description": "Subtitle for AMOLED dark" }, - "appearanceHeroAnimations": "Hero animations", + "appearanceHeroAnimations": "الرسوم المتحركة ", "@appearanceHeroAnimations": { "description": "Toggle for shared-element (Hero) transitions" }, - "appearanceHeroAnimationsSubtitle": "Fly covers between screens, e.g. when opening the player", + "appearanceHeroAnimationsSubtitle": "أغطية الطيران بين الشاشات، على سبيل المثال عند فتح اللاعب", "@appearanceHeroAnimationsSubtitle": { "description": "Subtitle for the Hero animations toggle" }, - "appearanceForceBlur": "Always use blur effects", + "appearanceForceBlur": "استخدام تأثيرات الضبابية دائمًا", "@appearanceForceBlur": { "description": "Toggle that forces backdrop blur on even when the device profile disabled it" }, - "appearanceForceBlurSubtitle": "Enable the navigation bar blur even on devices where it is off by default. May cost performance.", + "appearanceForceBlurSubtitle": "تمكين شريط التنقل يطمس حتى على الأجهزة حيث يتم إيقافه بشكل افتراضي. قد يكون أداء التكلفة.", "@appearanceForceBlurSubtitle": { "description": "Subtitle for the force-blur toggle" }, @@ -2159,19 +2253,19 @@ "@settingsDownloadNetworkSubtitle": { "description": "Subtitle explaining network preference" }, - "settingsConcurrentDownloads": "Concurrent downloads", + "settingsConcurrentDownloads": "عدد التنزيلات في نفس الوقت", "@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": "تنزيل عدة مسارات في وقت واحد أسرع، ولكن بعض مقدمي الخدمات قد يحدون من الطلبات الموازية.", "@settingsConcurrentDownloadsSubtitle": { "description": "Subtitle explaining the concurrent downloads picker" }, - "concurrentDownloadsOne": "1 track at a time", + "concurrentDownloadsOne": "مسار واحد في وقت واحد", "@concurrentDownloadsOne": { "description": "Concurrent downloads option - sequential" }, - "concurrentDownloadsCount": "Up to {count} tracks at once", + "concurrentDownloadsCount": "حتى {count} مسارات في وقت واحد", "@concurrentDownloadsCount": { "description": "Concurrent downloads option - parallel", "placeholders": { @@ -2228,11 +2322,11 @@ "@albumFolderArtistAlbumFlatSubtitle": { "description": "Folder structure example for flat singles" }, - "downloadedAlbumDeleteSelected": "Delete Selected", + "downloadedAlbumDeleteSelected": "حذف المحدد", "@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, zero {} one {أغنية} two {أغنيتين} few {أغانٍ} many {أغنية} other{الأغاني}} من التاريخ؟\n\nسيؤدي هذا أيضا إلى حذف الملفات من وحدة التخزين.", "@downloadedAlbumDeleteMessage": { "description": "Delete confirmation with count", "placeholders": { @@ -2241,7 +2335,7 @@ } } }, - "downloadedAlbumSelectedCount": "{count} selected", + "downloadedAlbumSelectedCount": "تم تحديد {count}", "@downloadedAlbumSelectedCount": { "description": "Selection count indicator", "placeholders": { @@ -2250,11 +2344,11 @@ } } }, - "downloadedAlbumTapToSelect": "Tap tracks to select", + "downloadedAlbumTapToSelect": "اضغط على المسارات لتحديد", "@downloadedAlbumTapToSelect": { "description": "Selection hint" }, - "downloadedAlbumDeleteCount": "Delete {count} {count, plural, =1{track} other{tracks}}", + "downloadedAlbumDeleteCount": "تم حذف {count} {count, plural, zero {} one {أغنية} two {أغنيتين} few {أغانٍ} many {أغنية} other{أغانٍ}}", "@downloadedAlbumDeleteCount": { "description": "Delete button text with count", "placeholders": { @@ -2263,11 +2357,11 @@ } } }, - "downloadedAlbumSelectToDelete": "Select tracks to delete", + "downloadedAlbumSelectToDelete": "حدد الأغاني المراد حذفها", "@downloadedAlbumSelectToDelete": { "description": "Placeholder when nothing selected" }, - "downloadedAlbumDiscHeader": "Disc {discNumber}", + "downloadedAlbumDiscHeader": "قرص {discNumber}", "@downloadedAlbumDiscHeader": { "description": "Header for disc separator in multi-disc albums", "placeholders": { @@ -2277,11 +2371,11 @@ } } }, - "recentTypeArtist": "Artist", + "recentTypeArtist": "الفنان", "@recentTypeArtist": { "description": "Recent access item type - artist" }, - "recentTypeAlbum": "Album", + "recentTypeAlbum": "الألبوم", "@recentTypeAlbum": { "description": "Recent access item type - album" }, @@ -2552,75 +2646,75 @@ "@libraryShowDuplicateIndicator": { "description": "Toggle for duplicate indicator in search" }, - "libraryShowDuplicateIndicatorSubtitle": "Show when searching for existing tracks", + "libraryShowDuplicateIndicatorSubtitle": "إظهار عند البحث عن المسارات الموجودة", "@libraryShowDuplicateIndicatorSubtitle": { "description": "Subtitle for duplicate indicator toggle" }, - "libraryAutoScan": "Auto Scan", + "libraryAutoScan": "فحص تلقائي", "@libraryAutoScan": { "description": "Setting for automatic library scanning" }, - "libraryAutoScanSubtitle": "Automatically scan your library for new files", + "libraryAutoScanSubtitle": "مسح مكتبتك تلقائياً للملفات الجديدة", "@libraryAutoScanSubtitle": { "description": "Subtitle for auto scan setting" }, - "libraryAutoScanOff": "Off", + "libraryAutoScanOff": "إيقاف", "@libraryAutoScanOff": { "description": "Auto scan disabled" }, - "libraryAutoScanOnOpen": "Every app open", + "libraryAutoScanOnOpen": "كل مرة يتم فيها فتح التطبيق", "@libraryAutoScanOnOpen": { "description": "Auto scan when app opens" }, - "libraryAutoScanDaily": "Daily", + "libraryAutoScanDaily": "يومياً", "@libraryAutoScanDaily": { "description": "Auto scan once per day" }, - "libraryAutoScanWeekly": "Weekly", + "libraryAutoScanWeekly": "أسبوعيًا", "@libraryAutoScanWeekly": { "description": "Auto scan once per week" }, - "libraryActions": "Actions", + "libraryActions": "الإجراءات", "@libraryActions": { "description": "Section header for library actions" }, - "libraryScan": "Scan Library", + "libraryScan": "تفحص المكتبة", "@libraryScan": { "description": "Button to start library scan" }, - "libraryScanSubtitle": "Scan for audio files", + "libraryScanSubtitle": "البحث عن الملفات الصوتية", "@libraryScanSubtitle": { "description": "Subtitle for scan button" }, - "libraryScanSelectFolderFirst": "Select a folder first", + "libraryScanSelectFolderFirst": "حدد مجلد أولاً", "@libraryScanSelectFolderFirst": { "description": "Message when trying to scan without folder" }, - "libraryCleanupMissingFiles": "Cleanup Missing Files", + "libraryCleanupMissingFiles": "تنظيف الملفات المفقودة", "@libraryCleanupMissingFiles": { "description": "Button to remove entries for missing files" }, - "libraryCleanupMissingFilesSubtitle": "Remove entries for files that no longer exist", + "libraryCleanupMissingFilesSubtitle": "إزالة المدخلات للملفات التي لم تعد موجودة", "@libraryCleanupMissingFilesSubtitle": { "description": "Subtitle for cleanup button" }, - "libraryClear": "Clear Library", + "libraryClear": "مسح المكتبة", "@libraryClear": { "description": "Button to clear all library entries" }, - "libraryClearSubtitle": "Remove all scanned tracks", + "libraryClearSubtitle": "إزالة جميع المسارات الممسوحة ضوئيا", "@libraryClearSubtitle": { "description": "Subtitle for clear button" }, - "libraryClearConfirmTitle": "Clear Library", + "libraryClearConfirmTitle": "مسح المكتبة", "@libraryClearConfirmTitle": { "description": "Dialog title for clear confirmation" }, - "libraryClearConfirmMessage": "This will remove all scanned tracks from your library. Your actual music files will not be deleted.", + "libraryClearConfirmMessage": "سيؤدي هذا إلى إزالة جميع المسارات التي تم فحصها من مكتبتك. لن يتم حذف ملفات الموسيقى الفعلية الخاصة بك.", "@libraryClearConfirmMessage": { "description": "Dialog message for clear confirmation" }, - "libraryAbout": "About Local Library", + "libraryAbout": "حول المكتبة المحلية", "@libraryAbout": { "description": "Section header for about info" }, @@ -2628,7 +2722,7 @@ "@libraryAboutDescription": { "description": "Description of local library feature" }, - "libraryTracksUnit": "{count, plural, =1{track} other{tracks}}", + "libraryTracksUnit": "{count, plural, zero {لا توجد أغاني محددة} one {أغنية واحدة} two {أغنيتين} few {{count} أغانٍ} many {{count} أغانٍ} other{{count} أغانٍ}}", "@libraryTracksUnit": { "description": "Unit label for tracks count (without the number itself)", "placeholders": { @@ -2637,7 +2731,7 @@ } } }, - "libraryFilesUnit": "{count, plural, =1{file} other{files}}", + "libraryFilesUnit": "{count, plural, zero {} one {ملف} two {ملفات} few {ملفات} many {ملفات} other{ملفات}}", "@libraryFilesUnit": { "description": "Unit label for files count during library scanning", "placeholders": { @@ -2646,7 +2740,7 @@ } } }, - "libraryLastScanned": "Last scanned: {time}", + "libraryLastScanned": "آخر مسح: {time}", "@libraryLastScanned": { "description": "Last scan time display", "placeholders": { @@ -2655,19 +2749,19 @@ } } }, - "libraryLastScannedNever": "Never", + "libraryLastScannedNever": "مطلقًا", "@libraryLastScannedNever": { "description": "Shown when library has never been scanned" }, - "libraryScanning": "Scanning...", + "libraryScanning": "جارٍ الفحص...", "@libraryScanning": { "description": "Status during scan" }, - "libraryScanFinalizing": "Finalizing library...", + "libraryScanFinalizing": "الانتهاء من المكتبة...", "@libraryScanFinalizing": { "description": "Status shown after file scanning finishes but library persistence is still running" }, - "libraryScanProgress": "{progress}% of {total} files", + "libraryScanProgress": "{progress}% من ملفات {total}", "@libraryScanProgress": { "description": "Scan progress display", "placeholders": { @@ -2679,11 +2773,11 @@ } } }, - "libraryInLibrary": "In Library", + "libraryInLibrary": "في المكتبة", "@libraryInLibrary": { "description": "Badge shown on tracks that exist in local library" }, - "libraryRemovedMissingFiles": "Removed {count} missing files from library", + "libraryRemovedMissingFiles": "إزالة الملفات المفقودة {count} من المكتبة", "@libraryRemovedMissingFiles": { "description": "Snackbar after cleanup", "placeholders": { @@ -2692,59 +2786,59 @@ } } }, - "libraryCleared": "Library cleared", + "libraryCleared": "تم مسح السجل", "@libraryCleared": { "description": "Snackbar after clearing library" }, - "libraryStorageAccessRequired": "Storage Access Required", + "libraryStorageAccessRequired": "إذن دخول وحدة التخزين مطلوب", "@libraryStorageAccessRequired": { "description": "Dialog title for storage permission" }, - "libraryStorageAccessMessage": "SpotiFLAC needs storage access to scan your music library. Please grant permission in settings.", + "libraryStorageAccessMessage": "SpotiFLAC يحتاج إلى الوصول إلى التخزين لمسح مكتبة الموسيقى الخاصة بك. الرجاء منح الإذن في الإعدادات.", "@libraryStorageAccessMessage": { "description": "Dialog message for storage permission" }, - "libraryFolderNotExist": "Selected folder does not exist", + "libraryFolderNotExist": "المجلد المحدد غير موجود", "@libraryFolderNotExist": { "description": "Error when folder doesn't exist" }, - "librarySourceDownloaded": "Downloaded", + "librarySourceDownloaded": "تم التنزيل", "@librarySourceDownloaded": { "description": "Badge for tracks downloaded via SpotiFLAC" }, - "librarySourceLocal": "Local", + "librarySourceLocal": "محلي", "@librarySourceLocal": { "description": "Badge for tracks from local library scan" }, - "libraryFilterAll": "All", + "libraryFilterAll": "الكل", "@libraryFilterAll": { "description": "Filter chip - show all library items" }, - "libraryFilterDownloaded": "Downloaded", + "libraryFilterDownloaded": "تم التنزيل", "@libraryFilterDownloaded": { "description": "Filter chip - show only downloaded items" }, - "libraryFilterLocal": "Local", + "libraryFilterLocal": "محلي", "@libraryFilterLocal": { "description": "Filter chip - show only local library items" }, - "libraryFilterTitle": "Filters", + "libraryFilterTitle": "المرشحات", "@libraryFilterTitle": { "description": "Filter bottom sheet title" }, - "libraryFilterReset": "Reset", + "libraryFilterReset": "إعادة الضبط", "@libraryFilterReset": { "description": "Reset all filters button" }, - "libraryFilterApply": "Apply", + "libraryFilterApply": "تطبيق", "@libraryFilterApply": { "description": "Apply filters button" }, - "libraryFilterSource": "Source", + "libraryFilterSource": "المصدر", "@libraryFilterSource": { "description": "Filter section - source type" }, - "libraryFilterQuality": "Quality", + "libraryFilterQuality": "الجودة", "@libraryFilterQuality": { "description": "Filter section - audio quality" }, @@ -2752,35 +2846,35 @@ "@libraryFilterQualityHiRes": { "description": "Filter option - high resolution audio" }, - "libraryFilterQualityCD": "CD (16bit)", + "libraryFilterQualityCD": "قرص مدمج (16bit)", "@libraryFilterQualityCD": { "description": "Filter option - CD quality audio" }, - "libraryFilterQualityLossy": "Lossy", + "libraryFilterQualityLossy": "فقدان", "@libraryFilterQualityLossy": { "description": "Filter option - lossy compressed audio" }, - "libraryFilterFormat": "Format", + "libraryFilterFormat": "التنسيق", "@libraryFilterFormat": { "description": "Filter section - file format" }, - "libraryFilterMetadata": "Metadata", + "libraryFilterMetadata": "البيانات الوصفية (Metadata)", "@libraryFilterMetadata": { "description": "Filter section - metadata completeness" }, - "libraryFilterMetadataComplete": "Complete metadata", + "libraryFilterMetadataComplete": "أكمل البيانات الوصفية", "@libraryFilterMetadataComplete": { "description": "Filter option - items with complete metadata" }, - "libraryFilterMetadataMissingAny": "Missing any metadata", + "libraryFilterMetadataMissingAny": "بيانات التعريف مفقودة", "@libraryFilterMetadataMissingAny": { "description": "Filter option - items missing any tracked metadata field" }, - "libraryFilterMetadataMissingYear": "Missing year", + "libraryFilterMetadataMissingYear": "السنة المفقودة", "@libraryFilterMetadataMissingYear": { "description": "Filter option - items missing release year/date" }, - "libraryFilterMetadataMissingGenre": "Missing genre", + "libraryFilterMetadataMissingGenre": "السنة المفقودة", "@libraryFilterMetadataMissingGenre": { "description": "Filter option - items missing genre" }, @@ -3004,11 +3098,11 @@ "@cacheAppDirectoryDesc": { "description": "Description of what app cache directory contains" }, - "cacheTempDirectory": "Temporary directory", + "cacheTempDirectory": "مجلد مؤقت", "@cacheTempDirectory": { "description": "Cache item title for temporary files directory" }, - "cacheTempDirectoryDesc": "Temporary files from downloads and audio conversion.", + "cacheTempDirectoryDesc": "الملفات المؤقتة من التنزيلات وتحويل الصوت.", "@cacheTempDirectoryDesc": { "description": "Description of what temporary directory contains" }, @@ -3176,6 +3270,10 @@ "@trackReEnrichOnlineSubtitle": { "description": "Subtitle for re-enrich metadata action for local items" }, + "trackReEnrichBatchSubtitle": "Choose an online or manual update, then review every change before writing", + "@trackReEnrichBatchSubtitle": { + "description": "Subtitle for batch metadata update choices" + }, "trackReEnrichFieldCover": "Cover Art", "@trackReEnrichFieldCover": { "description": "Checkbox label for cover art field in re-enrich" @@ -3228,6 +3326,22 @@ "@trackReEnrichModeReplaceSubtitle": { "description": "Explanation for the selected-tag batch metadata mode" }, + "trackReEnrichModeManual": "Set common values", + "@trackReEnrichModeManual": { + "description": "Batch metadata mode that applies shared values to every selected track" + }, + "trackReEnrichModeManualSubtitle": "Apply the same values to every selected track", + "@trackReEnrichModeManualSubtitle": { + "description": "Explanation for the manual shared-value batch metadata mode" + }, + "trackReEnrichManualFieldsTitle": "Values to apply", + "@trackReEnrichManualFieldsTitle": { + "description": "Heading above manual batch metadata inputs" + }, + "trackReEnrichManualHint": "Leave a field empty to keep its current value. Track titles, numbers, and ISRCs stay unchanged.", + "@trackReEnrichManualHint": { + "description": "Safety explanation for manual batch metadata inputs" + }, "trackReEnrichFieldsTitle": "Tags to update", "@trackReEnrichFieldsTitle": { "description": "Heading above batch re-enrich field checkboxes" @@ -3298,7 +3412,15 @@ "@trackReEnrichSearching": { "description": "Snackbar while searching metadata from internet for local items" }, + "trackReEnrichPreparing": "Preparing metadata changes...", + "@trackReEnrichPreparing": { + "description": "Progress message while preparing manual batch metadata changes" + }, "trackReEnrichSuccess": "Metadata re-enriched successfully", + "trackReEnrichMetadataSaved": "Metadata saved", + "trackReEnrichLyricsUpdated": "Lyrics updated", + "trackReEnrichLyricsPreserved": "No new lyrics found; existing lyrics kept", + "trackReEnrichLyricsDisabled": "Lyrics not updated: lyric downloading is disabled in Settings", "@trackReEnrichSuccess": { "description": "Snackbar after successful re-enrichment" }, @@ -3889,7 +4011,7 @@ "@lyricsProviderAppleMusicDesc": { "description": "Description for Apple Music provider" }, - "lyricsProviderQqMusicDesc": "QQ Music (good for Chinese songs, via proxy)", + "lyricsProviderQqMusicDesc": "QQ Music (good for Chinese songs, direct API)", "@lyricsProviderQqMusicDesc": { "description": "Description for QQ Music provider" }, @@ -4001,6 +4123,14 @@ "@backupContentsTitle": { "description": "Header above the list summarizing what the backup contains" }, + "backupSettingsOnly": "Settings only", + "backupSelectHistory": "Download history", + "backupSelectCollections": "Library collections", + "backupSelectCollectionsDescription": "Liked tracks, wishlist, favorite artists, playlists and playlist covers.", + "backupSelectExtensions": "Extensions and their settings", + "backupSelectedExportDescription": "Save the selected categories to a backup file. Audio files are not included.", + "backupSelectAtLeastOne": "Select at least one category to create a backup.", + "backupSelectedRestoreMessage": "Only the categories listed below will be restored. Categories not included in this backup will stay unchanged. Restoring can replace existing data and cannot be undone.", "backupContentsSettings": "App settings", "@backupContentsSettings": { "description": "Backup contents row label for settings" @@ -4164,6 +4294,10 @@ "@downloadLocationSubtitle": { "description": "Subtitle shown in the download location picker sheet" }, + "storageAutomaticFolder": "Automatic folder", + "storageAutomaticDownloadFolder": "Uses Download/SpotiFLAC when writable, otherwise app storage", + "storageSafRecommended": "Choose folder (Recommended)", + "storageDownloadFolderHint": "In the Android folder picker, open Download and select SpotiFLAC. If it does not exist, create it using New folder, then tap Use this folder to grant access.", "storageModeAppFolder": "App Folder (Recommended)", "@storageModeAppFolder": { "description": "Storage mode option - app-managed folder" @@ -4732,6 +4866,131 @@ "@audioAnalysisRescan": { "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" }, + "downloadRedownloadFakeHiRes": "Re-download fake Hi-Res", + "@downloadRedownloadFakeHiRes": { + "description": "Setting title: automatically replace downloads that measure as fake Hi-Res" + }, + "downloadRedownloadFakeHiResSubtitle": "Off by default. Check Hi-Res downloads and replace only when every audio sample is preserved. Keep the original if verification or processing fails", + "@downloadRedownloadFakeHiResSubtitle": { + "description": "Setting subtitle for the fake Hi-Res re-download toggle" + }, + "hiResCheckVerdictFakeCertain": "Fake Hi-Res", + "@hiResCheckVerdictFakeCertain": { + "description": "Verdict: an exact fingerprint (padded bits or upsampling pattern) proves the file is not real Hi-Res" + }, + "hiResCheckVerdictFakeSuspect": "Possibly a filtered master", + "@hiResCheckVerdictFakeSuspect": { + "description": "Verdict: fails the cutoff test but may be a genuine master low-pass filtered in mastering" + }, + "hiResCheckReasonSampleHold": "Every sample is repeated: upsampled by duplication", + "@hiResCheckReasonSampleHold": { + "description": "Reason: sample-and-hold upsampling detected" + }, + "hiResCheckReasonInterpolation": "In-between samples are linearly interpolated", + "@hiResCheckReasonInterpolation": { + "description": "Reason: linear-interpolation upsampling detected" + }, + "hiResCheckReasonImaging": "Content above 22 kHz mirrors the audible band", + "@hiResCheckReasonImaging": { + "description": "Reason: spectral imaging from upsampling detected" + }, + "hiResCheckMusicContent": "Musical content", + "@hiResCheckMusicContent": { + "description": "Label for the highest frequency that still moves with the music" + }, + "hiResCheckUltrasonicNoise": "Above {cutoff} only steady noise (typical of DSD or analog tape transfers): a {rate} file would hold all the music", + "@hiResCheckUltrasonicNoise": { + "description": "Shown when the ultrasonic content of a Hi-Res file is noise rather than music", + "placeholders": { + "cutoff": { + "type": "String" + }, + "rate": { + "type": "String" + } + } + }, + "hiResCheckTitle": "Hi-Res Authenticity", + "@hiResCheckTitle": { + "description": "Title of the fake Hi-Res check card" + }, + "hiResCheckDescription": "Detect upsampled or bit-padded fake Hi-Res files", + "@hiResCheckDescription": { + "description": "Explains what the Hi-Res authenticity check does" + }, + "hiResCheckRun": "Check", + "@hiResCheckRun": { + "description": "Button that starts the Hi-Res authenticity check" + }, + "hiResCheckChecking": "Checking Hi-Res authenticity...", + "@hiResCheckChecking": { + "description": "Loading text while the Hi-Res check runs" + }, + "hiResCheckVerdictFake": "Likely fake Hi-Res", + "@hiResCheckVerdictFake": { + "description": "Verdict: the file claims Hi-Res but does not measure as it" + }, + "hiResCheckVerdictGenuine": "Measures as genuine Hi-Res", + "@hiResCheckVerdictGenuine": { + "description": "Verdict: no upsampling or padded bit depth found" + }, + "hiResCheckVerdictStandard": "Standard definition, nothing to flag", + "@hiResCheckVerdictStandard": { + "description": "Verdict: neither sample rate nor bit depth claims Hi-Res" + }, + "hiResCheckVerdictInconclusive": "Inconclusive: the analyzed segment is too quiet or short", + "@hiResCheckVerdictInconclusive": { + "description": "Verdict: analysis could not reach a reliable conclusion" + }, + "hiResCheckUnsupported": "Only FLAC and WAV files can be checked", + "@hiResCheckUnsupported": { + "description": "Shown when the file format cannot be decoded by the Hi-Res check" + }, + "hiResCheckCutoff": "Content cutoff", + "@hiResCheckCutoff": { + "description": "Label for the highest frequency with real content" + }, + "hiResCheckBitsInUse": "Bits in use", + "@hiResCheckBitsInUse": { + "description": "Label for effective vs declared bit depth" + }, + "hiResCheckDisclaimer": "The spectrum stops early, but nothing proves it was upsampled: it may be a genuine master low-pass filtered in mastering. It is not replaced automatically.", + "@hiResCheckDisclaimer": { + "description": "Caveat shown under a fake Hi-Res verdict" + }, + "hiResCheckFailed": "Hi-Res check failed: {error}", + "@hiResCheckFailed": { + "description": "Error shown when the Hi-Res check fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "hiResCheckReasonRate": "Declares {sampleRate} but content stops at ~{cutoff}", + "@hiResCheckReasonRate": { + "description": "Reason for a fake verdict caused by upsampling", + "placeholders": { + "sampleRate": { + "type": "String" + }, + "cutoff": { + "type": "String" + } + } + }, + "hiResCheckReasonDepth": "Declares {declared}-bit but only {effective} bits carry data", + "@hiResCheckReasonDepth": { + "description": "Reason for a fake verdict caused by padded bit depth", + "placeholders": { + "declared": { + "type": "int" + }, + "effective": { + "type": "int" + } + } + }, "audioAnalysisRescanning": "Re-analyzing audio...", "@audioAnalysisRescanning": { "description": "Loading text while audio is being re-analyzed after an explicit refresh" @@ -6047,6 +6306,45 @@ "@nowPlayingDetails": { "description": "Menu item and section title for track metadata details" }, + "nowPlayingSleepTimer": "Sleep timer", + "@nowPlayingSleepTimer": { + "description": "Menu item and sheet title for the playback sleep timer" + }, + "nowPlayingSleepTimerActive": "Ends at {time}", + "@nowPlayingSleepTimerActive": { + "description": "Active sleep timer deadline shown in the player menu", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "nowPlayingSleepTimerMinutes": "{minutes, plural, =1{1 minute} other{{minutes} minutes}}", + "@nowPlayingSleepTimerMinutes": { + "description": "Duration choice for the playback sleep timer", + "placeholders": { + "minutes": { + "type": "int" + } + } + }, + "nowPlayingSleepTimerOff": "Turn off sleep timer", + "@nowPlayingSleepTimerOff": { + "description": "Action to cancel the active playback sleep timer" + }, + "nowPlayingSleepTimerSet": "Sleep timer set for {duration}", + "@nowPlayingSleepTimerSet": { + "description": "Confirmation after setting the playback sleep timer", + "placeholders": { + "duration": { + "type": "String" + } + } + }, + "nowPlayingSleepTimerCancelled": "Sleep timer turned off", + "@nowPlayingSleepTimerCancelled": { + "description": "Confirmation after cancelling the playback sleep timer" + }, "nowPlayingOpenInExternalPlayer": "Open in external player", "@nowPlayingOpenInExternalPlayer": { "description": "Menu item to open the current track in an external player" @@ -6389,6 +6687,15 @@ "@extensionVerificationBrowserInApp": { "description": "Chip label for in-app browser verification mode" }, + "extensionVerificationUnavailable": "No verification page is available for {extension}. Retry the download to request a new challenge.", + "@extensionVerificationUnavailable": { + "description": "Shown when the app cannot retrieve a pending verification challenge", + "placeholders": { + "extension": { + "type": "String" + } + } + }, "extensionVerificationHelpTitleManual": "Open verification manually", "@extensionVerificationHelpTitleManual": { "description": "Dialog title when automatic browser launch for verification fails" @@ -6478,6 +6785,9 @@ "@metadataCopyField": { "description": "Metadata menu action that copies the selected key and value" }, + "mornyeShowTabs": "Show tabs", + "mornyeSearch": "Search", + "mornyeContinuePlaying": "Continue Playing", "metadataCopyAll": "Copy all metadata", "@metadataCopyAll": { "description": "Metadata menu action that copies every visible key and value" @@ -6490,6 +6800,28 @@ "@optionsEmbeddedCoverSizeDescription": { "description": "Description shown in the embedded cover size picker" }, + "mornyeFavorite": "Favorite", + "mornyeGoToArtist": "Go to Artist", + "@mornyeFavorite": { + "description": "Compact context menu action that adds a track to Loved" + }, + "mornyeFavorited": "Favorited", + "@mornyeFavorited": { + "description": "Selected state of the compact favorite action" + }, + "autoMixDescription": "Blend songs with beat matching and pitch-preserving tempo adjustment. Uses crossfade when beats cannot be matched.", + "autoMixOn": "AutoMix on", + "autoMixOff": "AutoMix off", + "profileTitle": "Profile", + "profileSetUp": "Set up your profile", + "profileEdit": "Edit name and photo", + "backupIncludesProfile": "Includes your profile name and photo", + "profileName": "Name", + "profileNameHint": "Your name", + "profileChangePhoto": "Choose photo", + "profileRemovePhoto": "Remove photo", + "profilePhotoError": "Choose a valid image smaller than 20 MB.", + "profileSaveError": "Could not save your profile. Please try again.", "optionsEmbeddedCoverSizeOriginal": "Original resolution", "@optionsEmbeddedCoverSizeOriginal": { "description": "Option that preserves the provider artwork at its original resolution" diff --git a/lib/l10n/arb/app_de.arb b/lib/l10n/arb/app_de.arb index 7ab11dc5..69d3d437 100644 --- a/lib/l10n/arb/app_de.arb +++ b/lib/l10n/arb/app_de.arb @@ -1,78 +1,278 @@ { + "upgradeIntroWelcome": "Welcome to\nSpotiFLAC-Mobile 5.0", + "upgradeIntroThemeTitle": "Make it\nyour own.", + "upgradeIntroThemeBody": "Choose a look. Your choice applies immediately, and you can change it later in Appearance.", + "upgradeIntroThemeMaterialBody": "The familiar layout, with Material controls and your accent color.", + "upgradeIntroThemeMornyeBody": "Glass navigation, a redesigned Library and an immersive player.", + "upgradeIntroRustTitle": "A new engine.\nBuilt with Rust.", + "upgradeIntroRustBody": "In 5.0, the app’s backend has moved from Go to Rust. It is the engine working behind the screens you use every day.", + "upgradeIntroRustEngineTitle": "Working behind the scenes", + "upgradeIntroRustEngineBody": "Rust handles downloads, audio metadata, library scanning and the extension runtime on Android and iOS.", + "upgradeIntroRustMemoryTitle": "More careful with memory", + "upgradeIntroRustMemoryBody": "Reused buffers and fewer copies reduce temporary allocations when processing artwork and extension data.", + "upgradeIntroRustKeepTitle": "Keep your music", + "upgradeIntroRustKeepBody": "No need to download your collection again. Your saved music and settings stay in place, with no new setup required.", + "upgradeIntroWelcomeBody": "A quick look at what has changed, and where to find it.", + "upgradeIntroMornyeBody": "A new look for your player, lyrics and navigation.", + "upgradeIntroLibrarySummary": "Browse your music by playlist, artist or album.", + "upgradeIntroRepoSummary": "Choose your music sources and providers through extensions.", + "upgradeIntroLibraryTitle": "Get to know\nyour Library.", + "upgradeIntroLibraryBody": "In Mornye, browse by category or find your albums in Recently Added.", + "upgradeIntroDownloadsBody": "Pause and retry from Downloads at the top right. Finished music moves to Recently Added.", + "upgradeIntroSearchBody": "Search saved music here. The separate Search tab looks through your extensions.", + "upgradeIntroPlayerTitle": "Set up\nyour player.", + "upgradeIntroPlayerBody": "You can change your theme and playback options at any time. Here is where to find them.", + "upgradeIntroAppearanceBody": "Change themes in Settings → Appearance. In Mornye, scroll down for compact navigation; scroll up to expand it.", + "upgradeIntroAutoMixBody": "Match tempo and beats between tracks. Enable it in Settings → Local Library → Playback. Off by default.", + "upgradeIntroSettingsBody": "In Mornye, tap your profile on Home to open Settings and edit your name and photo.", + "upgradeIntroSkip": "Skip", + "upgradeIntroContinue": "Continue", + "upgradeIntroDone": "Start listening", + "upgradeIntroReplay": "What’s new in 5.0", + "cacheMotionArtwork": "Offline motion covers", + "cacheMotionArtworkDesc": "Album videos saved with downloads. Removing them keeps your music files and static covers.", + "nowPlayingVolume": "Volume", + "@nowPlayingVolume": { + "description": "System volume control label in the Mornye player" + }, + "appearanceStyle": "App Style", + "@appearanceStyle": { + "description": "Appearance section for choosing the app visual style" + }, + "discordRichPresence": "Discord Rich Presence", + "discordPresenceDescription": "Share the track playing in the built-in player on Discord. Requires Discord to be installed and signed in.", + "discordPresenceMissing": "Install Discord and sign in, then turn this setting off and on again.", + "discordPresenceUnavailable": "Discord Rich Presence is unavailable in this build or on this device.", "@@locale": "de", "@@last_modified": "2026-04-28", - "libraryEnableLocalLibrarySubtitle": "Scan und verfolge deine bestehende Musik", - "@libraryEnableLocalLibrarySubtitle": { - "description": "Subtitle for enable toggle" + "appName": "SpotiFLAC Mobile", + "@appName": { + "description": "App name - DO NOT TRANSLATE" }, - "@audioAnalysisCodec": { - "description": "Audio codec metric label" + "navHome": "Startseite", + "@navHome": { + "description": "Bottom navigation - Home tab" }, - "extensionUtilityFunctions": "Hilfsfunktionen", - "@extensionUtilityFunctions": { - "description": "Capability label for utility-only extensions" + "navLibrary": "Bibliothek", + "@navLibrary": { + "description": "Bottom navigation - Library tab" }, - "logClearLogsMessage": "Bist du dir sicher, dass Sie alle Logs löschen möchtest?", - "@logClearLogsMessage": { - "description": "Clear logs confirmation message" + "navSettings": "Einstellungen", + "@navSettings": { + "description": "Bottom navigation - Settings tab" }, - "@storeClearFilters": { - "description": "Button to clear all filters" + "navStore": "Repo", + "@navStore": { + "description": "Bottom navigation - Extension repo tab" }, - "cacheCleanupUnused": "Unbenutzte Daten bereinigen", - "@cacheCleanupUnused": { - "description": "Action title for cleaning unused entries" + "homeTitle": "Startseite", + "@homeTitle": { + "description": "Home screen title" }, - "trackConvertDitherNone": "Keine", - "@trackConvertDitherNone": { - "description": "Lossless conversion dither option with no dithering applied" + "homeSubtitle": "Unterstützte URL einfügen oder nach Namen suchen", + "@homeSubtitle": { + "description": "Subtitle shown below search box" }, - "libraryTracksUnit": "{count, plural, =1{1 Titel} other{{count} Titel}}", - "@libraryTracksUnit": { - "description": "Unit label for tracks count (without the number itself)", + "homeEmptyTitle": "Noch keine Suchanbieter", + "@homeEmptyTitle": { + "description": "Title shown on home when no providers are available yet" + }, + "homeEmptySubtitle": "Installiere eine Erweiterung um fortzufahren.", + "@homeEmptySubtitle": { + "description": "Subtitle shown on home when no providers are available yet" + }, + "homeSupports": "Unterstützt: Titel, Album, Playlist, Künstler-URLs", + "@homeSupports": { + "description": "Info text about supported URL types" + }, + "homeRecent": "Zuletzt", + "@homeRecent": { + "description": "Section header for recent searches" + }, + "historyFilterAll": "Alle", + "@historyFilterAll": { + "description": "Filter chip - show all items" + }, + "historyFilterAlbums": "Alben", + "@historyFilterAlbums": { + "description": "Filter chip - show albums only" + }, + "historyFilterSingles": "Singles", + "@historyFilterSingles": { + "description": "Filter chip - show singles only" + }, + "libraryRecentlyAdded": "Recently Added", + "libraryDownloads": "Downloads", + "libraryNoActiveDownloads": "No active downloads", + "librarySearchHint": "Search your library", + "libraryEmptyCollection": "Your music will appear here", + "historySearchHint": "Suchverlauf...", + "@historySearchHint": { + "description": "Search bar placeholder in history" + }, + "settingsTitle": "Einstellungen", + "@settingsTitle": { + "description": "Settings screen title" + }, + "settingsDownload": "Herunterladen", + "@settingsDownload": { + "description": "Settings section - download options" + }, + "settingsAppearance": "Erscheinungsbild", + "@settingsAppearance": { + "description": "Settings section - visual customization" + }, + "settingsExtensions": "Erweiterungen", + "@settingsExtensions": { + "description": "Settings section - extension management" + }, + "settingsAbout": "Über", + "@settingsAbout": { + "description": "Settings section - app info" + }, + "downloadTitle": "Herunterladen", + "@downloadTitle": { + "description": "Download settings page title" + }, + "downloadAskQualitySubtitle": "Qualitätsauswahl für jeden Download anzeigen", + "@downloadAskQualitySubtitle": { + "description": "Subtitle for ask quality toggle" + }, + "downloadFilenameFormat": "Dateinamenformat", + "@downloadFilenameFormat": { + "description": "Setting for output filename pattern" + }, + "downloadSingleFilenameFormat": "Einzelnes Dateinamenformat", + "@downloadSingleFilenameFormat": { + "description": "Setting for output filename pattern for singles/EPs" + }, + "downloadSingleFilenameFormatDescription": "Dateinamenmuster für Singles und EPs. Verwendet die gleichen Tags wie das Albumformat.", + "@downloadSingleFilenameFormatDescription": { + "description": "Subtitle description for single filename format setting" + }, + "downloadFolderOrganization": "Ordnerstruktur", + "@downloadFolderOrganization": { + "description": "Title of the folder organization picker bottom sheet" + }, + "appearanceTitle": "Erscheinungsbild", + "@appearanceTitle": { + "description": "Appearance settings page title" + }, + "appearanceThemeSystem": "System", + "@appearanceThemeSystem": { + "description": "Follow system theme" + }, + "appearanceThemeLight": "Hell", + "@appearanceThemeLight": { + "description": "Light theme" + }, + "appearanceThemeDark": "Dunkel", + "@appearanceThemeDark": { + "description": "Dark theme" + }, + "appearanceDynamicColor": "Dynamische Farben", + "@appearanceDynamicColor": { + "description": "Material You dynamic colors" + }, + "appearanceDynamicColorSubtitle": "Farben deines Hintergrundbilds verwenden", + "@appearanceDynamicColorSubtitle": { + "description": "Subtitle for dynamic color" + }, + "appearanceHistoryView": "Verlaufsansicht", + "@appearanceHistoryView": { + "description": "Layout style for history" + }, + "appearanceHistoryViewList": "Liste", + "@appearanceHistoryViewList": { + "description": "List layout option" + }, + "appearanceHistoryViewGrid": "Raster", + "@appearanceHistoryViewGrid": { + "description": "Grid layout option" + }, + "optionsPrimaryProvider": "Primärer Anbieter", + "@optionsPrimaryProvider": { + "description": "Main search provider setting" + }, + "optionsPrimaryProviderSubtitle": "Dienst zur Suche nach Titel oder Albumnamen", + "@optionsPrimaryProviderSubtitle": { + "description": "Subtitle for primary provider" + }, + "optionsUsingExtension": "Erweiterung verwenden: {extensionName}", + "@optionsUsingExtension": { + "description": "Shows active extension name", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "optionsDefaultSearchTab": "Standard Such-Tab", + "@optionsDefaultSearchTab": { + "description": "Title for the preferred default search tab setting" + }, + "optionsDefaultSearchTabSubtitle": "Wähle aus, welcher Tab zuerst für neue Suchergebnisse geöffnet wird.", + "@optionsDefaultSearchTabSubtitle": { + "description": "Subtitle for the preferred default search tab setting" + }, + "optionsAutoFallback": "Automatischer Fallback", + "@optionsAutoFallback": { + "description": "Auto-retry with other services" + }, + "optionsAutoFallbackSubtitle": "Andere Dienste versuchen, wenn Download fehlschlägt", + "@optionsAutoFallbackSubtitle": { + "description": "Subtitle for auto fallback" + }, + "optionsEmbedLyrics": "Liedtexte einbetten", + "@optionsEmbedLyrics": { + "description": "Embed lyrics in audio files" + }, + "optionsEmbedLyricsSubtitle": "Speichere synchronisierte Liedtexte zusammen mit heruntergeladenen Titeln", + "@optionsEmbedLyricsSubtitle": { + "description": "Subtitle for embed lyrics" + }, + "optionsReplayGain": "ReplayGain", + "@optionsReplayGain": { + "description": "Title for ReplayGain setting toggle" + }, + "optionsReplayGainSubtitleOn": "Scanne Lautstärke und füge ReplayGain-Tags ein (EBU R128)", + "@optionsReplayGainSubtitleOn": { + "description": "Subtitle when ReplayGain is enabled" + }, + "optionsReplayGainSubtitleOff": "Deaktiviert: keine Lautstärke-Normalisierungs-Tags", + "@optionsReplayGainSubtitleOff": { + "description": "Subtitle when ReplayGain is disabled" + }, + "trackReplayGain": "Rescan ReplayGain", + "@trackReplayGain": { + "description": "Three-dot menu option to scan loudness and write ReplayGain tags" + }, + "trackReplayGainScanning": "Analyzing loudness...", + "@trackReplayGainScanning": { + "description": "Snackbar/progress message while scanning ReplayGain for a single track" + }, + "trackReplayGainSuccess": "ReplayGain tags added", + "@trackReplayGainSuccess": { + "description": "Snackbar message after ReplayGain tags written for a single track" + }, + "trackReplayGainFailed": "Failed to add ReplayGain tags", + "@trackReplayGainFailed": { + "description": "Snackbar message when ReplayGain scan/write fails" + }, + "selectionReplayGainCount": "ReplayGain ({count})", + "@selectionReplayGainCount": { + "description": "Batch selection action button label for ReplayGain", "placeholders": { "count": { "type": "int" } } }, - "folderOrganizationNone": "Keine Organisation", - "@folderOrganizationNone": { - "description": "Folder option - flat structure" - }, - "@storeRepoUrlHint": { - "description": "Hint/placeholder for the repository URL input field" - }, - "@trackConvertConfirmTitle": { - "description": "Confirmation dialog title" - }, - "@extensionPatternsCount": { - "description": "URL patterns count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "audioAnalysisContainer": "Container", - "@audioAnalysisContainer": { - "description": "Audio container metric label" - }, - "libraryAutoScanOff": "Aus", - "@libraryAutoScanOff": { - "description": "Auto scan disabled" - }, - "shareSheetLinkCopied": "{service} link copied", - "@shareSheetLinkCopied": { - "description": "Snackbar after copying a cross-service link", - "placeholders": { - "service": {} - } - }, - "providerPriorityFallbackExtensionsDescription": "Wähle aus, welche installierten Download-Erweiterungen beim automatischen Fallback verwendet werden sollen.", - "@providerPriorityFallbackExtensionsDescription": { - "description": "Section description for extension fallback selection" + "replayGainBatchConfirmTitle": "Add ReplayGain", + "@replayGainBatchConfirmTitle": { + "description": "Title of the batch ReplayGain confirmation dialog" }, + "replayGainBatchConfirmMessage": "Analyze loudness and write ReplayGain tags to {count} track(s)?", "@replayGainBatchConfirmMessage": { "description": "Message of the batch ReplayGain confirmation dialog", "placeholders": { @@ -81,75 +281,12 @@ } } }, - "@extensionsHomeFeedUse": { - "description": "Extensions page - subtitle for a specific extension home feed option", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "selectionShareCount": "Teile {count} {count, plural, =1{Titel} other{Titel}}", - "@selectionShareCount": { - "description": "Share button text with count in selection mode", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@storeExtensionsCount": { - "description": "Store extension result count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@logSearchHint": { - "description": "Log search placeholder" - }, - "@audioAnalysisSamples": { - "description": "Total samples metric label" - }, - "trackCoverReplace": "Cover ersetzen", - "@trackCoverReplace": { - "description": "Button label for replacing selected cover art" - }, - "@discographyAddedToQueue": { - "description": "Snackbar - tracks added from discography", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadAppleElrcWordSyncEnabled": "Rohe Zeitstempel erhalten", - "@downloadAppleElrcWordSyncEnabled": { - "description": "Subtitle when Apple Music eLRC word sync is enabled" - }, - "@nowPlayingDetails": { - "description": "Menu item and section title for track metadata details" - }, - "@trackGenre": { - "description": "Metadata label - music genre" - }, - "recentTypeSong": "Titel", - "@recentTypeSong": { - "description": "Recent access item type - song/track" - }, - "logShareLogs": "Logs teilen", - "@logShareLogs": { - "description": "Share button tooltip" - }, - "@storeFilterLyrics": { - "description": "Repo filter - lyrics providers" - }, - "extensionsInstallButton": "Erweiterung installieren", - "@extensionsInstallButton": { - "description": "Button to install extension from file" + "replayGainBatchAnalyzing": "Analyzing ReplayGain...", + "@replayGainBatchAnalyzing": { + "description": "Progress dialog title while batch scanning ReplayGain" }, "replayGainBatchSuccess": "ReplayGain added to {success} of {total} tracks", + "replayGainUnsupportedDecoder": "Some tracks could not be analyzed because their audio codec is not supported by the ReplayGain decoder. Their files were not changed.", "@replayGainBatchSuccess": { "description": "Snackbar after batch ReplayGain completes", "placeholders": { @@ -161,548 +298,536 @@ } } }, - "nowPlayingMinimize": "Minimize", - "@nowPlayingMinimize": { - "description": "Tooltip for minimizing the now playing screen" + "optionsArtistTagMode": "Künstler Tag-Modus", + "@optionsArtistTagMode": { + "description": "Setting title for how artist metadata is written into files" }, - "logIssueNetworkErrorSuggestion": "Überprüfe deine Internetverbindung", - "@logIssueNetworkErrorSuggestion": { - "description": "Diagnostic badge suggestion for generic network errors" + "optionsArtistTagModeDescription": "Wähle aus, wie mehrere Künstler in eingebetteten Tags geschrieben sind.", + "@optionsArtistTagModeDescription": { + "description": "Bottom-sheet description for artist tag mode setting" }, - "extensionsNoExtensions": "Keine Erweiterungen installiert", - "@extensionsNoExtensions": { - "description": "Empty state - no extensions" + "optionsArtistTagModeJoined": "Einzelne beigefügte Werte", + "@optionsArtistTagModeJoined": { + "description": "Artist tag mode option that joins multiple artists into one value" }, - "@cacheRefresh": { - "description": "Tooltip for refresh button on cache management page" + "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" }, - "@snackbarHistoryCleared": { - "description": "Snackbar - history deleted" + "optionsArtistTagModeSplitVorbis": "Tags für FLAC/Opus aufteilen", + "@optionsArtistTagModeSplitVorbis": { + "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" }, - "cueSplitFailed": "CUE-Aufteilung fehlgeschlagen", - "@cueSplitFailed": { - "description": "Snackbar when CUE split fails" - }, - "trackConvertLosslessSuffix": "Lossless", - "@trackConvertLosslessSuffix": { - "description": "Suffix used in converted lossless quality labels" - }, - "homeSubtitle": "Unterstützte URL einfügen oder nach Namen suchen", - "@homeSubtitle": { - "description": "Subtitle shown below search box" - }, - "selectionBatchConvertConfirmMessageLossless": "Konvertiere {count} {count, plural, =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": { - "count": { - "type": "int" - }, - "format": { - "type": "String" - } - } - }, - "@extensionVerificationHelpMessageManual": { - "description": "Dialog message when automatic browser launch for verification fails" - }, - "queueRateLimitMessage": "This track may still be available. Wait a few minutes, reduce parallel downloads, then retry.", - "@queueRateLimitMessage": { - "description": "Explanation shown on a failed queue item when the download service rate limits requests" - }, - "searchSortDateOldest": "Veröffentlichungsdatum (älteste)", - "@searchSortDateOldest": { - "description": "Sort option - oldest release first" - }, - "nowPlayingShuffleOn": "Shuffle on", - "@nowPlayingShuffleOn": { - "description": "Tooltip when shuffle mode is enabled" - }, - "sectionColor": "Farbe", - "@sectionColor": { - "description": "Settings section header" - }, - "@providerPriorityFallbackExtensionsHint": { - "description": "Hint below the extension fallback selection list" - }, - "cacheCoverImage": "Cover-Cache", - "@cacheCoverImage": { - "description": "Cache item title for persistent cover images" - }, - "@navSettings": { - "description": "Bottom navigation - Settings tab" - }, - "@trackCoverReplaceNotice": { - "description": "Notice shown when a new cover has been selected but not saved yet" - }, - "cueSplitConfirmTitle": "CUE-Album aufteilen", - "@cueSplitConfirmTitle": { - "description": "CUE split confirmation dialog title" - }, - "@trackDeleteConfirmMessage": { - "description": "Delete confirmation message" - }, - "cacheClearSuccess": "Entfernt: {target}", - "@cacheClearSuccess": { - "description": "Snackbar after clearing selected cache", - "placeholders": { - "target": { - "type": "String" - } - } - }, - "editMetadataFieldCover": "Cover-Art", - "@editMetadataFieldCover": { - "description": "Chip label for cover art field in auto-fill selector" - }, - "snackbarSelectExtFile": "Bitte wähle eine .spotiflac-ext Datei", - "@snackbarSelectExtFile": { - "description": "Snackbar - wrong file type selected" - }, - "libraryFilterFormat": "Format", - "@libraryFilterFormat": { - "description": "Filter section - file format" - }, - "@downloadLossyAac": { - "description": "Lossy format option - AAC in M4A container at 320kbps" - }, - "@setupNext": { - "description": "Next button text" - }, - "@releaseTypeSingle": { - "description": "Badge label for single releases" - }, - "@optionsDefaultSearchTab": { - "description": "Title for the preferred default search tab setting" - }, - "trackConvertLosslessOutputWithCap": "Lossless output with {quality} cap", - "@trackConvertLosslessOutputWithCap": { - "description": "Hint shown when lossless conversion will cap bit depth or sample rate", - "placeholders": { - "quality": { - "type": "String" - } - } - }, - "bulkDownloadSelectPlaylists": "Playlist zum Herunterladen wählen", - "@bulkDownloadSelectPlaylists": { - "description": "Button label when no playlists are selected for download" - }, - "artistOptionAddToFavorites": "Zu Favoriten hinzufügen", - "@artistOptionAddToFavorites": { - "description": "Action label - add artist to favorite artists" - }, - "@timeJustNow": { - "description": "Relative time - less than a minute ago" - }, - "downloadLossyOpus256": "Opus 256kbps", - "@downloadLossyOpus256": { - "description": "Lossy format option - Opus 256kbps" - }, - "discographySinglesOnlySubtitle": "{count} Titel von {albumCount} Singles", - "@discographySinglesOnlySubtitle": { - "description": "Subtitle showing singles tracks count", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } + "optionsArtistTagModeSplitVorbisSubtitle": "Schreibe einen Künstler Tag pro Künstler für FLAC und Opus; MP3 und M4A bleiben beigetreten.", + "@optionsArtistTagModeSplitVorbisSubtitle": { + "description": "Subtitle for split Vorbis artist tag mode" }, "optionsExtensionStore": "Erweiterungs-Repo", "@optionsExtensionStore": { "description": "Show/hide repo tab" }, - "libraryDownloadsHistoryExcluded": "{count} aus dem Download-Verlauf (von der Liste ausgeschlossen)", - "@libraryDownloadsHistoryExcluded": { - "description": "Library count note for downloaded history items excluded from the local list", - "placeholders": { - "count": { - "type": "int" - } - } + "optionsExtensionStoreSubtitle": "Repo-Tab in der Navigation anzeigen", + "@optionsExtensionStoreSubtitle": { + "description": "Subtitle for extension repo toggle" }, - "@errorUrlFetchFailed": { - "description": "Error message - generic URL fetch failure" + "optionsCheckUpdates": "Nach Updates suchen", + "@optionsCheckUpdates": { + "description": "Auto update check toggle" }, - "@trackOptionAddToWishlist": { - "description": "Bottom sheet action label - add track to wishlist" + "optionsCheckUpdatesSubtitle": "Benachrichtigen, wenn neue Version verfügbar", + "@optionsCheckUpdatesSubtitle": { + "description": "Subtitle for update check" }, - "discographySinglesOnly": "Nur Singles & EPs", - "@discographySinglesOnly": { - "description": "Option - download only singles" + "optionsUpdateChannel": "Update-Kanal", + "@optionsUpdateChannel": { + "description": "Stable vs preview releases" }, - "@downloadSongLinkRegionDesc": { - "description": "Description in SongLink region picker" + "optionsUpdateChannelStable": "Nur stabile Versionen", + "@optionsUpdateChannelStable": { + "description": "Only stable updates" }, - "notifEmbeddingMetadata": "Bette Metadaten ein...", - "@notifEmbeddingMetadata": { - "description": "Notification body while embedding metadata into a downloaded track" + "optionsUpdateChannelPreview": "Vorschau-Versionen erhalten", + "@optionsUpdateChannelPreview": { + "description": "Include beta/preview updates" }, - "@settingsLocalLibrarySubtitle": { - "description": "Subtitle for local library settings" + "optionsUpdateChannelWarning": "Vorschau kann Fehler oder unvollständige Funktionen enthalten", + "@optionsUpdateChannelWarning": { + "description": "Warning about preview channel" }, - "@downloadLocationSubtitle": { - "description": "Subtitle shown in the download location picker sheet" + "optionsClearHistory": "Download-Verlauf löschen", + "@optionsClearHistory": { + "description": "Delete all download history" }, - "trackConvertOriginalQuality": "Original quality", - "@trackConvertOriginalQuality": { - "description": "Label when no bit depth or sample rate cap is applied during lossless conversion" + "optionsClearHistorySubtitle": "Alle heruntergeladenen Titel aus dem Verlauf entfernen", + "@optionsClearHistorySubtitle": { + "description": "Subtitle for clear history" }, - "nowPlayingTabLyrics": "Lyrics", - "@nowPlayingTabLyrics": { - "description": "Tab label for the lyrics view" + "optionsDetailedLogging": "Detaillierte Protokollierung", + "@optionsDetailedLogging": { + "description": "Enable verbose logs for debugging" }, - "selectionConvertCount": "Konvertiere {count} {count, plural, =1{Titel} other{Titel}}", - "@selectionConvertCount": { - "description": "Convert button text with count in selection mode", - "placeholders": { - "count": { - "type": "int" - } - } + "optionsDetailedLoggingOn": "Detaillierte Logs werden aufgezeichnet", + "@optionsDetailedLoggingOn": { + "description": "Status when logging enabled" }, - "@extensionsInstalledSection": { - "description": "Section header - installed extensions" + "optionsDetailedLoggingOff": "Für Fehlerberichte aktivieren", + "@optionsDetailedLoggingOff": { + "description": "Status when logging disabled" }, - "@downloadNetworkCompatibilityModeDisabled": { - "description": "Subtitle when network compatibility mode is off" + "extensionsTitle": "Erweiterungen", + "@extensionsTitle": { + "description": "Extensions page title" }, - "nowPlayingShuffleLibrary": "Shuffle library", - "@nowPlayingShuffleLibrary": { - "description": "Button label to shuffle and play the entire local library" + "extensionsDisabled": "Deaktiviert", + "@extensionsDisabled": { + "description": "Extension status - inactive" }, - "trackReEnrichFieldCover": "Cover-Art", - "@trackReEnrichFieldCover": { - "description": "Checkbox label for cover art field in re-enrich" - }, - "tutorialExtensionsTip3": "Connect accounts when required and keep extensions up to date", - "@tutorialExtensionsTip3": { - "description": "Tutorial extensions tip 3" - }, - "@cacheCleanupUnusedDesc": { - "description": "Description of what cleanup unused data does" - }, - "a11yOpenAlbum": "Album öffnen {albumName}", - "@a11yOpenAlbum": { - "description": "Accessibility label for opening an album", - "placeholders": { - "albumName": { - "type": "String" - } - } - }, - "@settingsLyrics": { - "description": "Settings menu item - lyrics settings" - }, - "nowPlayingQueueEmpty": "Queue is empty", - "@nowPlayingQueueEmpty": { - "description": "Empty state when the playback queue has no items" - }, - "@settingsDownload": { - "description": "Settings section - download options" - }, - "notifTracksDownloadedSuccess": "{count, plural, =1{1 Titel erfolgreich heruntergeladen} other{{count} Titel erfolgreich heruntergeladen}}", - "@notifTracksDownloadedSuccess": { - "description": "Notification body for queue complete - how many tracks were downloaded", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storeCategoryDownload": "Herunterladen", - "@storeCategoryDownload": { - "description": "Store extension category - download" - }, - "aboutTelegramChannel": "Telegram Kanal", - "@aboutTelegramChannel": { - "description": "Link to Telegram channel" - }, - "@downloadedAlbumDiscHeader": { - "description": "Header for disc separator in multi-disc albums", - "placeholders": { - "discNumber": { - "type": "int", - "example": "1" - } - } - }, - "@recentEmpty": { - "description": "Empty state text for recent access list" - }, - "@backupRestoreConfirmMessage": { - "description": "Confirmation dialog message before restoring a backup" - }, - "@shareSheetCopyLink": { - "description": "Tooltip for copying a cross-service link" - }, - "regionCountryID": "Indonesia", - "@regionCountryID": { - "description": "Country name for SongLink region picker" - }, - "@libraryInLibrary": { - "description": "Badge shown on tracks that exist in local library" - }, - "extensionPostProcessingHooks": "Post-Processing Hooks", - "@extensionPostProcessingHooks": { - "description": "Capability - post-processing" - }, - "@setupGrantPermission": { - "description": "Button to request permission" - }, - "storeFilterDownload": "Herunterladen", - "@storeFilterDownload": { - "description": "Repo filter - download providers" - }, - "@collectionAddToPlaylist": { - "description": "Action to add a track to user playlist" - }, - "@discographyFailedToFetch": { - "description": "Error - some albums failed to load" - }, - "@updateWhatsNew": { - "description": "Changelog section title" - }, - "@setupLanguageDescription": { - "description": "Description for the language selection step in setup" - }, - "dialogDeleteSelectedTitle": "Ausgewählte löschen", - "@dialogDeleteSelectedTitle": { - "description": "Dialog title - delete selected items" - }, - "trackCoverPick": "Cover auswählen", - "@trackCoverPick": { - "description": "Button label for selecting cover art" - }, - "@collectionCreatePlaylist": { - "description": "Action to create a new playlist" - }, - "selectionBatchConvertSuccess": "{success} von {total} Titeln in {format} konvertiert", - "@selectionBatchConvertSuccess": { - "description": "Snackbar after batch conversion completes", - "placeholders": { - "success": { - "type": "int" - }, - "total": { - "type": "int" - }, - "format": { - "type": "String" - } - } - }, - "qualityHiResFlacMax": "Hi-Res FLAC Max", - "@qualityHiResFlacMax": { - "description": "Quality option - maximum resolution FLAC" - }, - "audioAnalysisStereo": "Stereo", - "@audioAnalysisStereo": { - "description": "Audio channel layout label - stereo" - }, - "backupExportButton": "Create backup file", - "@backupExportButton": { - "description": "Button to create and share a backup file" - }, - "settingsApp": "App", - "@settingsApp": { - "description": "Settings menu item - app settings" - }, - "clickableInformationUnavailable": "{type} Informationen nicht verfügbar", - "@clickableInformationUnavailable": { - "description": "Snackbar shown when clickable metadata cannot open a destination", - "placeholders": { - "type": { - "type": "String" - } - } - }, - "@logFilterLevel": { - "description": "Filter by log level" - }, - "sectionTheme": "Design", - "@sectionTheme": { - "description": "Settings section header" - }, - "@extensionActionFailed": { - "description": "Fallback error when an extension action fails without details" - }, - "@downloadAppleElrcWordSync": { - "description": "Setting for preserving Apple Music word-by-word eLRC timestamps" - }, - "@extensionsNoCustomSearch": { - "description": "Empty state - no search providers" - }, - "@collectionPlaylistRemoveCover": { - "description": "Bottom sheet action to remove custom cover image from a playlist" - }, - "@tutorialWelcomeDesc": { - "description": "Tutorial welcome page description" - }, - "@tutorialSearchDesc": { - "description": "Tutorial search page description" - }, - "collectionAddedToWishlist": "\"{trackName}\" zur Wunschliste hinzugefügt", - "@collectionAddedToWishlist": { - "description": "Snackbar after adding track to wishlist", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "logAffectedDomains": "Betroffen: {domains}", - "@logAffectedDomains": { - "description": "Affected domains in log issue analysis", - "placeholders": { - "domains": { - "type": "String" - } - } - }, - "@folderOrganizationByArtistSubtitle": { - "description": "Subtitle for artist folder option" - }, - "errorNoTracksFound": "Keine Titel gefunden", - "@errorNoTracksFound": { - "description": "Error - search returned no results" - }, - "providerPriorityTitle": "Anbieterpriorität", - "@providerPriorityTitle": { - "description": "Provider priority page title" - }, - "@notifUpdateReadyBody": { - "description": "Notification body when app update is ready to install", + "extensionsVersion": "Version {version}", + "@extensionsVersion": { + "description": "Extension version display", "placeholders": { "version": { "type": "String" } } }, - "@settingsExtensions": { - "description": "Settings section - extension management" + "extensionsUninstall": "Deinstallieren", + "@extensionsUninstall": { + "description": "Uninstall extension button" }, - "trackDeleteConfirmTitle": "Vom Gerät entfernen?", - "@trackDeleteConfirmTitle": { - "description": "Delete confirmation title" + "storeTitle": "Erweiterungs-Repo", + "@storeTitle": { + "description": "Repo screen title" }, - "@settingsDownloadNetwork": { - "description": "Setting for network type preference" + "storeSearch": "Erweiterungen suchen...", + "@storeSearch": { + "description": "Repo search placeholder" }, - "downloadProvidersNoneEnabled": "Keine Anbieter aktiviert", - "@downloadProvidersNoneEnabled": { - "description": "Shown when no lyrics providers are active" + "storeInstall": "Installieren", + "@storeInstall": { + "description": "Install extension button" }, - "@homeEmptySubtitle": { - "description": "Subtitle shown on home when no providers are available yet" + "storeInstalled": "Installiert", + "@storeInstalled": { + "description": "Already installed badge" }, - "trackReEnrichFieldBasicTags": "Album, Album-Künstler", - "@trackReEnrichFieldBasicTags": { - "description": "Checkbox label for basic tags in re-enrich (title/artist are never overwritten)" + "storeUpdate": "Aktualisieren", + "@storeUpdate": { + "description": "Update available button" }, - "@audioAnalysisSpectralCutoff": { - "description": "Estimated spectral cutoff metric label" + "aboutTitle": "Über", + "@aboutTitle": { + "description": "About page title" }, - "@logClearLogsTitle": { - "description": "Clear logs dialog title" + "aboutContributors": "Mitwirkende", + "@aboutContributors": { + "description": "Section for contributors" }, - "storageModeSafSubtitle": "Wähle einen beliebigen Ordner, inklusive SD-Karte", - "@storageModeSafSubtitle": { - "description": "Subtitle for SAF storage mode" + "aboutMobileDeveloper": "Mobile-Version Entwickler", + "@aboutMobileDeveloper": { + "description": "Role description for mobile dev" }, - "@notifUpdateProgress": { - "description": "Notification body showing update download progress", + "aboutOriginalCreator": "Schöpfer des ursprünglichen SpotiFLAC", + "@aboutOriginalCreator": { + "description": "Role description for original creator" + }, + "aboutLogoArtist": "Der talentierte Künstler, der unser wunderschönes App-Logo entworfen hat!", + "@aboutLogoArtist": { + "description": "Role description for logo artist" + }, + "aboutTranslators": "Übersetzer", + "@aboutTranslators": { + "description": "Section for translators" + }, + "aboutSpecialThanks": "Besonderer Dank", + "@aboutSpecialThanks": { + "description": "Section for special thanks" + }, + "aboutLinks": "Links", + "@aboutLinks": { + "description": "Section for external links" + }, + "aboutMobileSource": "Mobiler Quellcode", + "@aboutMobileSource": { + "description": "Link to mobile GitHub repo" + }, + "aboutPCSource": "PC Quellcode", + "@aboutPCSource": { + "description": "Link to PC GitHub repo" + }, + "aboutKeepAndroidOpen": "Keep Android Open", + "@aboutKeepAndroidOpen": { + "description": "Link to Keep Android Open campaign website" + }, + "aboutReportIssue": "Problem melden", + "@aboutReportIssue": { + "description": "Link to report bugs" + }, + "aboutReportIssueSubtitle": "Melde Probleme, die dir auffallen", + "@aboutReportIssueSubtitle": { + "description": "Subtitle for report issue" + }, + "aboutFeatureRequest": "Feature vorschlagen", + "@aboutFeatureRequest": { + "description": "Link to suggest features" + }, + "aboutFeatureRequestSubtitle": "Schlage neue Funktionen für die App vor", + "@aboutFeatureRequestSubtitle": { + "description": "Subtitle for feature request" + }, + "aboutTelegramChannel": "Telegram Kanal", + "@aboutTelegramChannel": { + "description": "Link to Telegram channel" + }, + "aboutTelegramChannelSubtitle": "Ankündigungen und Updates", + "@aboutTelegramChannelSubtitle": { + "description": "Subtitle for Telegram channel" + }, + "aboutTelegramChat": "Telegram Community", + "@aboutTelegramChat": { + "description": "Link to Telegram chat group" + }, + "aboutTelegramChatSubtitle": "Mit anderen Nutzern chatten", + "@aboutTelegramChatSubtitle": { + "description": "Subtitle for Telegram chat" + }, + "aboutSocial": "Sozial", + "@aboutSocial": { + "description": "Section for social links" + }, + "aboutApp": "App", + "@aboutApp": { + "description": "Section for app info" + }, + "aboutVersion": "Version", + "@aboutVersion": { + "description": "Version info label" + }, + "aboutBinimumDesc": "The creator of QQDL & HiFi API. This project helped shape lossless download support.", + "@aboutBinimumDesc": { + "description": "Credit description for binimum" + }, + "aboutSachinsenalDesc": "The original HiFi project creator. A foundation for lossless-source integration.", + "@aboutSachinsenalDesc": { + "description": "Credit description for sachinsenal0x64" + }, + "aboutUnituneDesc": "Open-source music link resolver by Flaze, used for cross-platform fallback matching.", + "@aboutUnituneDesc": { + "description": "Credit for the UniTune resolver" + }, + "aboutMusicBrainzDesc": "Open music database maintained by MetaBrainz and its community, used for recording cross-references.", + "@aboutMusicBrainzDesc": { + "description": "Credit for the MusicBrainz database" + }, + "aboutSquiglyDesc": "Universal music link service by Liam Macmillan, used as a final cross-platform resolver fallback.", + "@aboutSquiglyDesc": { + "description": "Credit for the Squigly resolver" + }, + "aboutAppDescription": "Musik-Metadaten durchsuchen, Erweiterungen verwalten und deine Bibliothek organisieren.", + "@aboutAppDescription": { + "description": "App description in header card" + }, + "artistAlbums": "Alben", + "@artistAlbums": { + "description": "Section header for artist albums" + }, + "artistSingles": "Singles & EPs", + "@artistSingles": { + "description": "Section header for singles/EPs" + }, + "artistCompilations": "Zusammenstellungen", + "@artistCompilations": { + "description": "Section header for compilations" + }, + "artistPopular": "Beliebt", + "@artistPopular": { + "description": "Section header for popular/top tracks" + }, + "artistMonthlyListeners": "{count} monatliche Hörer", + "@artistMonthlyListeners": { + "description": "Monthly listener count display", "placeholders": { - "received": { - "type": "String" - }, - "total": { - "type": "String" - }, - "percentage": { - "type": "int" + "count": { + "type": "String", + "description": "Formatted listener count" } } }, - "downloadUsePrimaryArtistOnlyEnabled": "Vorgestellte Künstler aus dem Ordnernamen entfernt (z.B. Justin Bieber, Quavo → Justin Bieber)", - "@downloadUsePrimaryArtistOnlyEnabled": { - "description": "Subtitle when primary artist only is enabled" + "trackMetadataService": "Anbieter", + "@trackMetadataService": { + "description": "Metadata field - download service used" }, - "notifScanningLibrary": "Scanne lokale Bibliothek", - "@notifScanningLibrary": { - "description": "Notification title while scanning local library" + "trackMetadataPlay": "Abspielen", + "@trackMetadataPlay": { + "description": "Action button - play track" }, - "@metadataProvidersSubtitle": { - "description": "Subtitle for metadata provider priority item" + "trackMetadataShare": "Teilen", + "@trackMetadataShare": { + "description": "Action button - share track" + }, + "trackMetadataDelete": "Löschen", + "@trackMetadataDelete": { + "description": "Action button - delete track" + }, + "setupGrantPermission": "Berechtigung erlauben", + "@setupGrantPermission": { + "description": "Button to request permission" + }, + "setupSkip": "Vorerst überspringen", + "@setupSkip": { + "description": "Skip current step button" + }, + "setupStorageAccessRequired": "Speicherzugriff erforderlich", + "@setupStorageAccessRequired": { + "description": "Title when storage access needed" + }, + "setupStorageAccessMessageAndroid11": "Android 11+ benötigt die Berechtigung „Auf alle Dateien“, um Dateien im ausgewählten Download-Ordner zu speichern.", + "@setupStorageAccessMessageAndroid11": { + "description": "Android 11+ specific explanation" + }, + "setupOpenSettings": "Einstellungen öffnen", + "@setupOpenSettings": { + "description": "Button to open system settings" + }, + "setupPermissionDeniedMessage": "Berechtigung verweigert. Bitte erteile alle Berechtigungen um fortzufahren.", + "@setupPermissionDeniedMessage": { + "description": "Error when permission denied" + }, + "setupPermissionRequired": "{permissionType}-Berechtigung erforderlich", + "@setupPermissionRequired": { + "description": "Generic permission required title", + "placeholders": { + "permissionType": { + "type": "String", + "description": "Type of permission (Storage/Notification)" + } + } + }, + "setupPermissionRequiredMessage": "{permissionType}-Berechtigung ist erforderlich für\ndie beste Benutzererfahrung. Du kannst dies später in den Einstellungen ändern.", + "@setupPermissionRequiredMessage": { + "description": "Generic permission required message", + "placeholders": { + "permissionType": { + "type": "String" + } + } + }, + "setupUseDefaultFolder": "Als Standardordner verwenden?", + "@setupUseDefaultFolder": { + "description": "Dialog title for default folder" + }, + "setupNoFolderSelected": "Kein Ordner ausgewählt. Soll der Standard-Musikordner verwendet werden?", + "@setupNoFolderSelected": { + "description": "Prompt when no folder selected" + }, + "setupUseDefault": "Standard verwenden", + "@setupUseDefault": { + "description": "Button to use default folder" + }, + "setupDownloadLocationTitle": "Speicherort", + "@setupDownloadLocationTitle": { + "description": "Download location dialog title" + }, + "setupDownloadLocationIosMessage": "Auf iOS werden Downloads im Dokumentenordner der App gespeichert. Du kannst sie über die Datei-App aufrufen.", + "@setupDownloadLocationIosMessage": { + "description": "iOS-specific folder info" + }, + "setupAppDocumentsFolder": "App-Dokumentenordner", + "@setupAppDocumentsFolder": { + "description": "iOS documents folder option" + }, + "setupAppDocumentsFolderSubtitle": "Empfohlen - zugänglich über die Datei-App", + "@setupAppDocumentsFolderSubtitle": { + "description": "Subtitle for documents folder" + }, + "setupChooseFromFiles": "Aus Dateien auswählen", + "@setupChooseFromFiles": { + "description": "iOS file picker option" + }, + "setupChooseFromFilesSubtitle": "Wähle iCloud oder einen anderen Speicherort", + "@setupChooseFromFilesSubtitle": { + "description": "Subtitle for file picker" + }, + "setupIosEmptyFolderWarning": "iOS-Einschränkung: Leere Ordner können nicht ausgewählt werden. Wähle einen Ordner mit mindestens einer Datei.", + "@setupIosEmptyFolderWarning": { + "description": "iOS folder selection warning" + }, + "setupIcloudNotSupported": "iCloud Drive wird nicht unterstützt. Bitte verwende den \"Dokumente\" Ordner.", + "@setupIcloudNotSupported": { + "description": "Error when user selects iCloud Drive on iOS" + }, + "setupDownloadInFlac": "Download music in lossless and Hi-Res quality", + "@setupDownloadInFlac": { + "description": "App tagline in setup" + }, + "setupStorageGranted": "Speicherberechtigung erlaubt!", + "@setupStorageGranted": { + "description": "Success message for storage permission" + }, + "setupStorageRequired": "Speicherzugriff erforderlich", + "@setupStorageRequired": { + "description": "Title when storage permission needed" + }, + "setupStorageDescription": "SpotiFLAC benötigt Speicherrechte, um die heruntergeladenen Musikdateien zu speichern.", + "@setupStorageDescription": { + "description": "Explanation for storage permission" + }, + "setupNotificationGranted": "Benachrichtigungs-Berechtigung erteilt", + "@setupNotificationGranted": { + "description": "Success message for notification permission" + }, + "setupNotificationEnable": "Benachrichtigungen aktivieren", + "@setupNotificationEnable": { + "description": "Button to enable notifications" + }, + "setupFolderChoose": "Speicherort auswählen", + "@setupFolderChoose": { + "description": "Button to choose folder" + }, + "setupFolderDescription": "Wähle einen Ordner, in dem die heruntergeladene Musik gespeichert wird.", + "@setupFolderDescription": { + "description": "Explanation for folder selection" + }, + "setupSelectFolder": "Ordner wählen", + "@setupSelectFolder": { + "description": "Button to select folder" + }, + "setupEnableNotifications": "Benachrichtigungen aktivieren", + "@setupEnableNotifications": { + "description": "Button to enable notifications" + }, + "setupNotificationBackgroundDescription": "Erhalte Benachrichtigungen über den Fortschritt und die Fertigstellung deiner Downloads, selbst wenn die App im Hintergrund läuft.", + "@setupNotificationBackgroundDescription": { + "description": "Detailed notification explanation" + }, + "setupSkipForNow": "Vorerst überspringen", + "@setupSkipForNow": { + "description": "Skip button text" + }, + "setupNext": "Weiter", + "@setupNext": { + "description": "Next button text" }, "setupGetStarted": "Los geht‘s", "@setupGetStarted": { "description": "Final setup button" }, - "libraryFilterQualityCD": "CD (16bit)", - "@libraryFilterQualityCD": { - "description": "Filter option - CD quality audio" + "setupAllowAccessToManageFiles": "Bitte aktiviere \"Zugriff auf alle Dateien erlauben\" auf dem nächsten Bildschirm.", + "@setupAllowAccessToManageFiles": { + "description": "Instruction for file access permission" }, - "sectionLayout": "Layout", - "@sectionLayout": { - "description": "Settings section header" + "setupLanguageTitle": "Sprache auswählen", + "@setupLanguageTitle": { + "description": "Title for the language selection step in setup" }, - "@tooltipLoveAll": { - "description": "Tooltip for the Love All button on album/playlist screens" + "setupLanguageDescription": "Wählen deine bevorzugte Sprache für die App. Dies kann später in den Einstellungen geändert werden.", + "@setupLanguageDescription": { + "description": "Description for the language selection step in setup" }, - "queueFinalizingDownload": "Download wird abgeschlossen", - "@queueFinalizingDownload": { - "description": "Accessibility label for a queue item that is finalizing" + "setupLanguageSystemDefault": "Systemstandard", + "@setupLanguageSystemDefault": { + "description": "Option to use the system language" }, - "trackConvertActionLabelLossy": "{sourceFormat} → {targetFormat} @ {bitrate}", - "@trackConvertActionLabelLossy": { - "description": "Convert button label for lossy conversion", + "dialogCancel": "Abbrechen", + "@dialogCancel": { + "description": "Dialog button - cancel action" + }, + "dialogSave": "Speichern", + "@dialogSave": { + "description": "Dialog button - save changes" + }, + "dialogDelete": "Löschen", + "@dialogDelete": { + "description": "Dialog button - delete item" + }, + "dialogRetry": "Wiederholen", + "@dialogRetry": { + "description": "Dialog button - retry action" + }, + "dialogClear": "Leeren", + "@dialogClear": { + "description": "Dialog button - clear items" + }, + "dialogDone": "Fertig", + "@dialogDone": { + "description": "Dialog button - action completed" + }, + "dialogImport": "Importieren", + "@dialogImport": { + "description": "Dialog button - import data" + }, + "dialogDownload": "Herunterladen", + "@dialogDownload": { + "description": "Confirm button in Download All dialog" + }, + "previewPlay": "Vorschau abspielen", + "@previewPlay": { + "description": "Tooltip for the button that plays a short track preview snippet" + }, + "previewStop": "Vorschau stoppen", + "@previewStop": { + "description": "Tooltip for the button that stops the playing track preview snippet" + }, + "previewUnavailable": "Preview unavailable", + "@previewUnavailable": { + "description": "Snackbar shown when a track preview snippet cannot be played" + }, + "dialogDiscard": "Verwerfen", + "@dialogDiscard": { + "description": "Dialog button - discard changes" + }, + "dialogRemove": "Entfernen", + "@dialogRemove": { + "description": "Dialog button - remove item" + }, + "dialogUninstall": "Deinstallieren", + "@dialogUninstall": { + "description": "Dialog button - uninstall extension" + }, + "dialogDiscardChanges": "Änderungen verwerfen?", + "@dialogDiscardChanges": { + "description": "Dialog title - unsaved changes warning" + }, + "dialogUnsavedChanges": "Du hast ungespeicherte Änderungen. Möchtest du sie verwerfen?", + "@dialogUnsavedChanges": { + "description": "Dialog message - unsaved changes" + }, + "dialogClearAll": "Alles löschen", + "@dialogClearAll": { + "description": "Dialog title - clear all items" + }, + "dialogRemoveExtension": "Erweiterung entfernen", + "@dialogRemoveExtension": { + "description": "Dialog title - uninstall extension" + }, + "dialogRemoveExtensionMessage": "Bist du sicher, dass du diese Erweiterung entfernen möchtest? Diese Aktion kann nicht rückgängig gemacht werden.", + "@dialogRemoveExtensionMessage": { + "description": "Dialog message - uninstall confirmation" + }, + "dialogUninstallExtension": "Erweiterung deinstallieren?", + "@dialogUninstallExtension": { + "description": "Dialog title - uninstall extension" + }, + "dialogUninstallExtensionMessage": "Bist du sicher, dass du {extensionName} entfernen möchtest?", + "@dialogUninstallExtensionMessage": { + "description": "Dialog message - uninstall specific extension", "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "bitrate": { + "extensionName": { "type": "String" } } }, - "extensionsMetadataPriority": "Metadaten Priorität", - "@extensionsMetadataPriority": { - "description": "Setting - metadata provider order" + "dialogClearHistoryTitle": "Verlauf löschen", + "@dialogClearHistoryTitle": { + "description": "Dialog title - clear download history" }, - "updateCurrent": "Aktuell", - "@updateCurrent": { - "description": "Label for current version" + "dialogClearHistoryMessage": "Bist du sicher, dass du den gesamten Downloadverlauf löschen möchtest? Dies kann nicht rückgängig gemacht werden.", + "@dialogClearHistoryMessage": { + "description": "Dialog message - clear history confirmation" }, - "@aboutFeatureRequest": { - "description": "Link to suggest features" - }, - "@safMigrationSuccess": { - "description": "Snackbar after successfully migrating to SAF" - }, - "backupRestoreConfirmMessage": "This will replace your current settings, download history, liked tracks, wishlist and playlists with the contents of the backup. This cannot be undone.", - "@cleanupOrphanedDownloadsNone": { - "description": "Snackbar when no orphans found" - }, - "lyricsProviderNeteaseDesc": "NetEase Cloud Music (gut für asiatische Lieder)", - "@lyricsProviderNeteaseDesc": { - "description": "Description for Netease provider" - }, - "libraryScanCancelledSubtitle": "Du kannst erneut Scannen, wenn er fertig ist.", - "@libraryScanCancelledSubtitle": { - "description": "Library scan status subtitle after cancellation" - }, - "@collectionFavoriteArtists": { - "description": "Custom folder for favorite artists" - }, - "@trackAlbum": { - "description": "Metadata label - album name" + "dialogDeleteSelectedTitle": "Ausgewählte löschen", + "@dialogDeleteSelectedTitle": { + "description": "Dialog title - delete selected items" }, "dialogDeleteSelectedMessage": "Lösche {count} {count, plural, =1{Track} other{Tracks}} aus dem Verlauf?\n\nDies löscht auch die Dateien aus dem Speicher.", "@dialogDeleteSelectedMessage": { @@ -713,811 +838,29 @@ } } }, - "trackReEnrich": "Neu-anreichern", - "@trackReEnrich": { - "description": "Menu action - re-embed metadata into audio file" - }, - "@lyricsProvidersSaved": { - "description": "Snackbar after saving lyrics provider priority" - }, - "@storageModeSaf": { - "description": "Storage mode option - Storage Access Framework" - }, - "libraryStorageAccessRequired": "Speicherzugriff erforderlich", - "@libraryStorageAccessRequired": { - "description": "Dialog title for storage permission" - }, - "@cacheClearAllConfirmTitle": { - "description": "Dialog title before clearing all caches" - }, - "@unknownArtist": { - "description": "Fallback artist name when metadata is missing" - }, - "downloadCreatePlaylistSourceFolderEnabled": "Für jede Playlist wird ein Unterordner erstellt", - "@downloadCreatePlaylistSourceFolderEnabled": { - "description": "Subtitle when playlist folder is enabled" - }, - "dialogClearHistoryMessage": "Bist du sicher, dass du den gesamten Downloadverlauf löschen möchtest? Dies kann nicht rückgängig gemacht werden.", - "@dialogClearHistoryMessage": { - "description": "Dialog message - clear history confirmation" - }, - "@sectionData": { - "description": "Settings section header" - }, - "audioAnalysisRms": "RMS", - "@audioAnalysisRms": { - "description": "RMS level metric label" - }, - "downloadFilterContributingEnabled": "Mitwirkende Künstler vom Albumname des Künstlers entfernt", - "@downloadFilterContributingEnabled": { - "description": "Subtitle when contributing artist filter is on" - }, - "timeJustNow": "Gerade eben", - "@extensionCustomUrlHandlingShareHint": { - "description": "Extension detail hint explaining share-to-app URL handling" - }, - "cleanupOrphanedDownloads": "Verwaiste Downloads bereinigen", - "@cleanupOrphanedDownloads": { - "description": "Button to remove history entries for deleted files" - }, - "@audioAnalysisNoClipping": { - "description": "Displayed when no clipped samples were detected" - }, - "@tutorialWelcomeTitle": { - "description": "Tutorial welcome page title" - }, - "collectionFavoriteArtists": "Lieblingskünstler", - "audioAnalysisRescanning": "Audio wird analysiert...", - "@audioAnalysisRescanning": { - "description": "Loading text while audio is being re-analyzed after an explicit refresh" - }, - "logTitle": "Protokolle", - "@logTitle": { - "description": "Logs screen title" - }, - "@regionCountryGB": { - "description": "Country name for SongLink region picker" - }, - "@progressFetchingMetadata": { - "description": "Progress indicator - loading track info", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "aboutLogoArtist": "Der talentierte Künstler, der unser wunderschönes App-Logo entworfen hat!", - "@aboutLogoArtist": { - "description": "Role description for logo artist" - }, - "channelPreview": "Vorschau", - "@channelPreview": { - "description": "Update channel - beta/preview releases" - }, - "collectionPlaylistsDeleted": "{count} {count, plural, =1{Playlist} other{Playlists}} gelöscht", - "@collectionPlaylistsDeleted": { - "description": "Snackbar after deleting selected playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@libraryFilterMetadataMissingGenre": { - "description": "Filter option - items missing genre" - }, - "homeTitle": "Startseite", - "@homeTitle": { - "description": "Home screen title" - }, - "extensionMinAppVersion": "Min App-Version", - "@extensionMinAppVersion": { - "description": "Extension detail - minimum app version" - }, - "backupContentsLiked": "{count} liked {count, plural, =1{track} other{tracks}}", - "@backupContentsLiked": { - "description": "Backup contents row for liked tracks count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "audioAnalysisTruePeak": "True Peak", - "@audioAnalysisTruePeak": { - "description": "True peak metric label" - }, - "notifDownloadsCanceledBody": "{count, plural, =1{1 Download vom Nutzer abgebrochen} other{{count} Downloads vom Nutzer abgebrochen}}", - "@notifDownloadsCanceledBody": { - "description": "Notification body when downloads are canceled by the user", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@dialogRetry": { - "description": "Dialog button - retry action" - }, - "@homeChangeSearchProviderTooltip": { - "description": "Tooltip for the Home search provider picker" - }, - "@sectionLyricsProviderOptions": { - "description": "Settings section header for per-provider lyrics options" - }, - "@trackReEnrichSuccessWithFailures": { - "description": "Snackbar summary after batch metadata re-enrichment finishes with failures", - "placeholders": { - "successCount": { - "type": "int" - }, - "total": { - "type": "int" - }, - "failedCount": { - "type": "int" - } - } - }, - "previewUnavailable": "Preview unavailable", - "@previewUnavailable": { - "description": "Snackbar shown when a track preview snippet cannot be played" - }, - "nowPlayingTabPlayer": "Player", - "@nowPlayingTabPlayer": { - "description": "Tab label for the player view" - }, - "backupContentsPlaylists": "{count, plural, =1{1 playlist} other{{count} playlists}}", - "@backupContentsPlaylists": { - "description": "Backup contents row for playlist count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "libraryLastScannedNever": "Nie", - "@libraryLastScannedNever": { - "description": "Shown when library has never been scanned" - }, - "trackTrackNumber": "Titelnummer", - "@trackTrackNumber": { - "description": "Metadata label - track number" - }, - "trackReplayGainScanning": "Analyzing loudness...", - "@trackReplayGainScanning": { - "description": "Snackbar/progress message while scanning ReplayGain for a single track" - }, - "downloadLossyMp3": "MP3 320kbps", - "@downloadLossyMp3": { - "description": "Lossy format option - MP3 320kbps" - }, - "@albumFolderArtistAlbumSingles": { - "description": "Album folder option with singles inside artist" - }, - "@extensionHealthNotConfigured": { - "description": "Extension service health status - not configured" - }, - "@downloadSeparateSinglesDisabled": { - "description": "Subtitle when separate singles folder is off" - }, - "downloadCreatePlaylistSourceFolder": "Playlist-Quellordner", - "@downloadCreatePlaylistSourceFolder": { - "description": "Setting to create a subfolder per playlist source" - }, - "@trackReleaseDate": { - "description": "Metadata label - release date" - }, - "aboutContributors": "Mitwirkende", - "@aboutContributors": { - "description": "Section for contributors" - }, - "@audioAnalysisMono": { - "description": "Audio channel layout label - mono" - }, - "@audioAnalysisNyquist": { - "description": "Nyquist frequency metric label" - }, - "permissionStorage": "Speicher", - "@permissionStorage": { - "description": "Storage permission type label" - }, - "permissionAudio": "Audio", - "@permissionAudio": { - "description": "Audio permission type label" - }, - "@libraryScanSubtitle": { - "description": "Subtitle for scan button" - }, - "@snackbarUnsupportedAudioFormat": { - "description": "Snackbar when the audio format is not supported for the requested operation" - }, - "@notifLibraryScanStopped": { - "description": "Notification body when library scan is cancelled" - }, - "@downloadMusixmatchAuto": { - "description": "Button to clear Musixmatch language (use auto)" - }, - "@trackLyricsTimeout": { - "description": "Message when lyrics request times out" - }, - "@trackReEnrichFieldReleaseInfo": { - "description": "Checkbox label for release info in re-enrich" - }, - "@regionCountryXK": { - "description": "Country name for SongLink region picker" - }, - "aboutTelegramChatSubtitle": "Mit anderen Nutzern chatten", - "@aboutTelegramChatSubtitle": { - "description": "Subtitle for Telegram chat" - }, - "selectionAllPlaylistsSelected": "Alle Playlists ausgewählt", - "@selectionAllPlaylistsSelected": { - "description": "Shown when all playlists are selected in selection mode" - }, - "cacheTrackLookupDesc": "Spotify/Deezer Track-ID-Lookups. Das Löschen kann die nächsten Suchergebnisse verlangsamen.", - "@cacheTrackLookupDesc": { - "description": "Description of what track lookup cache contains" - }, - "@unknownAlbum": { - "description": "Fallback album name when metadata is missing" - }, - "@extensionsErrorLoading": { - "description": "Error message when extension fails to load" - }, - "@cacheTitle": { - "description": "Cache management page title" - }, - "@downloadFilenameFormat": { - "description": "Setting for output filename pattern" - }, - "errorUrlNotRecognized": "Link wurde nicht erkannt", - "@errorUrlNotRecognized": { - "description": "Error title - URL not handled by any extension or service" - }, - "downloadAppleElrcWordSync": "Apple Music eLRC Word Sync", - "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { - "description": "Subtitle when album artist is used for folder names" - }, - "@qualityFlacLossless": { - "description": "Quality option - CD quality FLAC" - }, - "downloadNeteaseIncludeTranslationEnabled": "Chinesische Übersetzungszeilen enthalten", - "@downloadNeteaseIncludeTranslationEnabled": { - "description": "Subtitle when Netease translation is on" - }, - "collectionLovedEmptySubtitle": "Tippe auf das Herz, um deine Favoriten zu behalten", - "@collectionLovedEmptySubtitle": { - "description": "Loved empty state subtitle" - }, - "@libraryBuiltInPlayerInfo": { - "description": "Info note explaining the built-in player is for previews only" - }, - "@notifLibraryScanProgressNoTotal": { - "description": "Notification body for library scan progress when total is unknown", - "placeholders": { - "scanned": { - "type": "int" - }, - "percentage": { - "type": "int" - } - } - }, - "@tutorialSearchTitle": { - "description": "Tutorial search page title" - }, - "trackReEnrichSuccessWithFailures": "Metadaten erfolgreich neu angereichert ({successCount}/{total}) - fehlgeschlagen: {failedCount}", - "@a11yTrackByArtist": { - "description": "Accessibility label for a queue or list track item", - "placeholders": { - "trackName": { - "type": "String" - }, - "artistName": { - "type": "String" - } - } - }, - "libraryFilterMetadataMissingLabel": "Label fehlt", - "@libraryFilterMetadataMissingLabel": { - "description": "Filter option - items missing record label" - }, - "@audioAnalysisLufs": { - "description": "Integrated loudness metric label" - }, - "trackMetadata": "Metadaten", - "@trackMetadata": { - "description": "Tab title - track metadata" - }, - "trackOptionRemoveFromLoved": "Aus Lieblingssongs entfernt", - "@trackOptionRemoveFromLoved": { - "description": "Bottom sheet action label - remove track from loved folder" - }, - "@aboutTelegramChat": { - "description": "Link to Telegram chat group" - }, - "@trackCopiedToClipboard": { - "description": "Snackbar - content copied" - }, - "aboutKeepAndroidOpen": "Keep Android Open", - "@aboutKeepAndroidOpen": { - "description": "Link to Keep Android Open campaign website" - }, - "@lyricsProvidersDisabledSection": { - "description": "Section header for disabled providers", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@downloadAllowLocalNetwork": { - "description": "Setting title for allowing requests to private/local network targets" - }, - "@openInOtherServices": { - "description": "Title and tooltip for finding the current collection in other services" - }, - "@extensionVerificationBrowserInApp": { - "description": "Chip label for in-app browser verification mode" - }, - "sectionSearchSource": "Suchquelle", - "@sectionSearchSource": { - "description": "Settings section header" - }, - "allFilesAccess": "Zugriff auf alle Dateien", - "@allFilesAccess": { - "description": "Toggle for MANAGE_EXTERNAL_STORAGE permission" - }, - "extensionsInstalledCount": "{count} Erweiterungen erfolgreich installiert", - "@extensionsInstalledCount": { - "description": "Success message after installing multiple extensions", - "placeholders": { - "count": { - "type": "int", - "description": "Number of installed extensions" - } - } - }, - "snackbarFailedToEmbedLyrics": "Fehler beim Einbinden der Lyrics", - "@snackbarFailedToEmbedLyrics": { - "description": "Snackbar when lyrics embedding fails" - }, - "@lyricsProviderMusixmatchDesc": { - "description": "Description for Musixmatch provider" - }, - "queueRateLimitTitle": "Service rate limited", - "@queueRateLimitTitle": { - "description": "Title shown on a failed queue item when the download service rate limits requests" - }, - "@notifDownloadComplete": { - "description": "Notification title when a single download is complete" - }, - "@homeSupports": { - "description": "Info text about supported URL types" - }, - "notifDownloadsCanceledTitle": "Downloads abgebrochen", - "@notifDownloadsCanceledTitle": { - "description": "Notification title when downloads are canceled by the user" - }, - "@lyricsModeEmbedSubtitle": { - "description": "Subtitle for embed option" - }, - "optionsReplayGain": "ReplayGain", - "@optionsReplayGain": { - "description": "Title for ReplayGain setting toggle" - }, - "@storeLoadError": { - "description": "Error heading when the store cannot be loaded" - }, - "@trackArtist": { - "description": "Metadata label - artist name" - }, - "cacheCoverImageDesc": "Album- und Titelcover heruntergeladen. Werden erneut heruntergeladen.", - "@cacheCoverImageDesc": { - "description": "Description of what cover image cache contains" - }, - "queueClearAll": "Alles löschen", - "@queueClearAll": { - "description": "Button - clear all queue items" - }, - "downloadUsePrimaryArtistOnlyDisabled": "Vollständiger Künstler für Ordnername", - "@downloadUsePrimaryArtistOnlyDisabled": { - "description": "Subtitle when primary artist only is disabled" - }, - "backupImportSectionTitle": "Restore backup", - "@backupImportSectionTitle": { - "description": "Section title for the import/restore card" - }, - "@downloadMusixmatchLanguageHint": { - "description": "Placeholder for Musixmatch language input" - }, - "collectionRemoveFromFolder": "Aus Ordner entfernen", - "@collectionRemoveFromFolder": { - "description": "Tooltip for removing track from wishlist/loved folder" - }, - "storeFilterMetadata": "Metadaten", - "@storeFilterMetadata": { - "description": "Repo filter - metadata providers" - }, - "shareSheetCopyLink": "Copy Link", - "errorRateLimitedMessage": "Zu viele Anfragen. Bitte warte einen Moment, bevor du es erneut suchst.", - "@errorRateLimitedMessage": { - "description": "Error message - rate limit explanation" - }, - "libraryFilterSortGenreDesc": "Genre (Z-A)", - "@libraryFilterSortGenreDesc": { - "description": "Sort option - genre descending" - }, - "trackFileNotFound": "Datei nicht gefunden", - "@trackFileNotFound": { - "description": "Error - file doesn't exist" - }, - "@queueEmptySinglesSubtitle": { - "description": "Empty state subtitle for single track downloads" - }, - "@queueDownloadStarting": { - "description": "Queue status before download progress is available" - }, - "metadataProviderPriorityInfo": "Deezer hat keine Limits und wird als primäre empfohlen. Spotify kann nach vielen Anfragen begrenzen.", - "@metadataProviderPriorityInfo": { - "description": "Info tip about rate limits" - }, - "aboutPCSource": "PC Quellcode", - "@aboutPCSource": { - "description": "Link to PC GitHub repo" - }, - "editMetadataAutoFill": "Aus online ausfüllen", - "@editMetadataAutoFill": { - "description": "Section title for selective online metadata auto-fill in the edit metadata sheet" - }, - "snackbarDeletedTracks": "{count} {count, plural, =1{Titel} other{Titel}}", - "@snackbarDeletedTracks": { - "description": "Snackbar - tracks deleted", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@extensionHealthServiceDegraded": { - "description": "Tooltip for degraded extension service" - }, - "lyricsProviderLrclibDesc": "Open-Source-Synchronisierte Lyrics-Datenbank", - "@lyricsProviderLrclibDesc": { - "description": "Description for LRCLIB provider" - }, - "downloadMusixmatchLanguageDesc": "Gib einen BCP-47 Sprachcode ein (z.B. en, de, ja), um übersetzte Lyrics von Musixmatch anzufordern.", - "@downloadMusixmatchLanguageDesc": { - "description": "Description in Musixmatch language picker" - }, - "@optionsEmbedMetadataSubtitleOn": { - "description": "Subtitle when metadata embedding is enabled" - }, - "@setupSkipForNow": { - "description": "Skip button text" - }, - "@a11ySelectTrack": { - "description": "Accessibility label for selecting a track" - }, - "@folderOrganizationByAlbumSubtitle": { - "description": "Subtitle for album folder option" - }, - "downloadLossyAac": "AAC/M4A 320kbps", - "@extensionVerificationBrowserTitle": { - "description": "Settings option title for extension verification browser preference" - }, - "@backupContentsExtensions": { - "description": "Backup contents row for installed extensions count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarUrlCopied": "{platform} URL in die Zwischenablage kopiert", - "@snackbarUrlCopied": { - "description": "Snackbar - URL copied", - "placeholders": { - "platform": { - "type": "String", - "description": "Platform name (Spotify/Deezer)" - } - } - }, - "aboutBinimumDesc": "The creator of QQDL & HiFi API. This project helped shape lossless download support.", - "@aboutBinimumDesc": { - "description": "Credit description for binimum" - }, - "discographyFetchingAlbum": "Lade {current} von {total}...", - "@discographyFetchingAlbum": { - "description": "Progress - fetching specific album", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "logAutoScrollOn": "Auto-Scrollen AN", - "@logAutoScrollOn": { - "description": "Tooltip when auto-scroll is enabled on the log screen" - }, - "@settingsMetadataSubtitle": { - "description": "Subtitle for metadata settings" - }, - "@regionCountryBR": { - "description": "Country name for SongLink region picker" - }, - "@lyricsProvidersTitle": { - "description": "Settings item title for lyrics provider order" - }, - "trackMetadataService": "Anbieter", - "@trackMetadataService": { - "description": "Metadata field - download service used" - }, - "discographyAddedToQueue": "{count} Titel zur Warteschlange hinzugefügt", - "cueSplitTrackCount": "{count} Titel", - "@cueSplitTrackCount": { - "description": "Number of tracks in CUE sheet", - "placeholders": { - "count": { - "type": "int" - } - } - }, "dialogImportPlaylistTitle": "Playlist importieren", "@dialogImportPlaylistTitle": { "description": "Dialog title - import CSV playlist" }, - "@cleanupOrphanedDownloadsSubtitle": { - "description": "Subtitle for orphaned cleanup button" - }, - "settingsLocalLibrary": "Lokale Bibliothek", - "@settingsLocalLibrary": { - "description": "Settings menu item - local library" - }, - "@metadataSaveFailedStorage": { - "description": "Snackbar error when writing metadata file back to storage fails" - }, - "logCopyLogs": "Logs kopieren", - "@logCopyLogs": { - "description": "Tooltip for copying logs" - }, - "downloadNetworkWifiOnlySubtitle": "Downloads bei mobilen Daten pausieren", - "@downloadNetworkWifiOnlySubtitle": { - "description": "Subtitle for WiFi-only option in picker" - }, - "@lyricsModeBothSubtitle": { - "description": "Subtitle for both option" - }, - "@collectionAlreadyInPlaylist": { - "description": "Snackbar when track already exists in playlist", - "placeholders": { - "playlistName": { - "type": "String" - } - } - }, - "@collectionFoldersTitle": { - "description": "Library section title for custom folders" - }, - "searchSortDateNewest": "Veröffentlichungsdatum (Neueste)", - "@searchSortDateNewest": { - "description": "Sort option - newest release first" - }, - "downloadDeduplicationDisabled": "Alle Titel werden unabhängig vom Verlauf heruntergeladen", - "@downloadDeduplicationDisabled": { - "description": "Subtitle when deduplication is off" - }, - "@recentTypeAlbum": { - "description": "Recent access item type - album" - }, - "nowPlayingPlayInOrder": "Play in order", - "@nowPlayingPlayInOrder": { - "description": "Tooltip when shuffle mode is disabled" - }, - "@cueSplitConfirmMessage": { - "description": "CUE split confirmation dialog message", - "placeholders": { - "album": { - "type": "String" - }, - "count": { - "type": "int" - } - } - }, - "@audioAnalysisFileSize": { - "description": "File size metric label" - }, - "artistSingles": "Singles & EPs", - "@artistSingles": { - "description": "Section header for singles/EPs" - }, - "@snackbarProviderPrioritySaved": { - "description": "Snackbar - provider order saved" - }, - "@recentPlaylistInfo": { - "description": "Snackbar message when tapping playlist in recent access", - "placeholders": { - "name": { - "type": "String", - "description": "Playlist name" - } - } - }, - "@lyricsProviderLyricsPlusDesc": { - "description": "Description for LyricsPlus provider" - }, - "@libraryFilterDownloaded": { - "description": "Filter chip - show only downloaded items" - }, - "recentPlaylistInfo": "Playlist: {name}", - "@optionsReplayGainSubtitleOn": { - "description": "Subtitle when ReplayGain is enabled" - }, - "@actionCreate": { - "description": "Generic action button - create" - }, - "@downloadSelectQuality": { - "description": "Dialog title - choose audio quality" - }, - "cueSplitAlbum": "Album: {album}", - "@cueSplitAlbum": { - "description": "Album name in CUE split sheet", - "placeholders": { - "album": { - "type": "String" - } - } - }, - "@trackCoverNoSource": { - "description": "Snackbar when no cover art URL or embedded cover" - }, - "@storeRepoUrlLabel": { - "description": "Label for the repository URL input field" - }, - "@notifLibraryScanCompleteBody": { - "description": "Notification body for library scan complete - number of indexed tracks", + "dialogImportPlaylistMessage": "Found {count} tracks in the playlist file. Add them to download queue?", + "csvImportTracks": "{count} Titel aus CSV", + "@csvImportTracks": { + "description": "Label shown in quality picker for CSV import", "placeholders": { "count": { "type": "int" } } }, - "optionsDetailedLogging": "Detaillierte Protokollierung", - "@optionsDetailedLogging": { - "description": "Enable verbose logs for debugging" + "collectionExportM3u": "Export as M3U8", + "@collectionExportM3u": { + "description": "Tooltip on the collection screen action that exports the track list as an M3U8 playlist file" }, - "@lyricsProvidersDiscardContent": { - "description": "Body text of the discard-changes dialog on lyrics provider page" - }, - "@dialogDisableHistoryTitle": { - "description": "Confirmation dialog title shown before disabling download history" - }, - "downloadLossyOpus128Subtitle": "Kleinste Größe, ~4MB pro Track", - "@downloadLossyOpus128Subtitle": { - "description": "Subtitle for Opus 128kbps lossy option" - }, - "@appName": { - "description": "App name - DO NOT TRANSLATE" - }, - "libraryActions": "Aktionen", - "@libraryActions": { - "description": "Section header for library actions" - }, - "setupNoFolderSelected": "Kein Ordner ausgewählt. Soll der Standard-Musikordner verwendet werden?", - "@setupNoFolderSelected": { - "description": "Prompt when no folder selected" - }, - "downloadMusixmatchLanguageHint": "e.g. en, de, ja", - "trackSaveFailed": "Fehler: {error}", - "@trackSaveFailed": { - "description": "Snackbar when save operation fails", + "collectionExportM3uDone": "Exported {exported} of {total} tracks", + "@collectionExportM3uDone": { + "description": "Snackbar after M3U8 export; tracks without a local file are not exported", "placeholders": { - "error": { - "type": "String" - } - } - }, - "replayGainBatchConfirmTitle": "Add ReplayGain", - "@replayGainBatchConfirmTitle": { - "description": "Title of the batch ReplayGain confirmation dialog" - }, - "tutorialExtensionsTip1": "Im Repo Tab findest du nützliche Erweiterungen", - "@tutorialExtensionsTip1": { - "description": "Tutorial extensions tip 1" - }, - "@trackAddToQueue": { - "description": "Menu action to add a track to the playback queue" - }, - "@cacheTrackLookup": { - "description": "Cache item title for track ID lookup cache" - }, - "@discographyNoAlbums": { - "description": "Error - no albums found for artist" - }, - "@updateLater": { - "description": "Update button - dismiss" - }, - "@snackbarFailedToInstall": { - "description": "Snackbar - extension install error" - }, - "@albumFolderArtistAlbumFlatSubtitle": { - "description": "Folder structure example for flat singles" - }, - "@errorMissingExtensionSource": { - "description": "Error - extension source not available", - "placeholders": { - "item": { - "type": "String" - } - } - }, - "libraryFilterSortAlbumAsc": "Album (A-Z)", - "@libraryFilterSortAlbumAsc": { - "description": "Sort option - album ascending" - }, - "@queueTrackCount": { - "description": "Track count label with plural support", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "audioAnalysisMono": "Mono", - "@trackLyricsSource": { - "description": "Label showing the lyrics source/provider", - "placeholders": { - "source": { - "type": "String" - } - } - }, - "@lyricsModeEmbed": { - "description": "Lyrics mode option - embed in audio file" - }, - "@storeRepoDialogCurrent": { - "description": "Label shown above the current repository URL in the dialog" - }, - "@cacheRefreshStats": { - "description": "Button label to refresh cache statistics" - }, - "lyricsProviderAppleMusicDesc": "Wort-für-Wort-synchronisierte Lyrics (via Proxy)", - "@lyricsProviderAppleMusicDesc": { - "description": "Description for Apple Music provider" - }, - "@downloadDeduplication": { - "description": "Setting - skip tracks already in download history" - }, - "updateFailedMessage": "Das Update konnte nicht heruntergeladen werden", - "@updateFailedMessage": { - "description": "Update error message" - }, - "cacheEstimatedTotal": "Geschätzte Cache-Größe: {size}", - "@cacheEstimatedTotal": { - "description": "Total cache size shown in summary", - "placeholders": { - "size": { - "type": "String" - } - } - }, - "@aboutVersion": { - "description": "Version info label" - }, - "dialogRetry": "Wiederholen", - "@cueSplitSplitting": { - "description": "Snackbar while splitting CUE", - "placeholders": { - "current": { + "exported": { "type": "int" }, "total": { @@ -1525,769 +868,81 @@ } } }, - "@searchSortTitleZA": { - "description": "Sort option - title descending" + "collectionExportM3uNone": "No downloaded files to export", + "@collectionExportM3uNone": { + "description": "Snackbar when an M3U8 export finds no local files" }, - "tutorialLibraryTip2": "Tap a track to play it with the built-in player", - "@tutorialLibraryTip2": { - "description": "Tutorial library tip 2" + "collectionExportM3uFailed": "Export failed", + "@collectionExportM3uFailed": { + "description": "Snackbar when writing or sharing the M3U8 export fails" }, - "extensionHealthServiceOffline": "Dienst offline", - "@extensionHealthServiceOffline": { - "description": "Tooltip for offline extension service" + "trackOpenOn": "Open on...", + "@trackOpenOn": { + "description": "Track option and sheet title listing streaming platforms where the track can be opened" }, - "actionDeselect": "Alle abwählen", - "@actionDeselect": { - "description": "Action button - deselect all" + "trackOpenOnNoLinks": "No platform links found for this track.", + "@trackOpenOnNoLinks": { + "description": "Shown in the Open on sheet when song.link returns no links" }, - "@trackConvertOriginal": { - "description": "Label for keeping original bit depth or sample rate during conversion" + "libraryReviewDuplicates": "Review duplicates", + "@libraryReviewDuplicates": { + "description": "Library settings row opening the duplicate review sheet" }, - "@libraryClearConfirmTitle": { - "description": "Dialog title for clear confirmation" + "libraryReviewDuplicatesSubtitle": "Find tracks stored more than once", + "@libraryReviewDuplicatesSubtitle": { + "description": "Subtitle for the duplicate review settings row" }, - "@dialogDownloadAllMessage": { - "description": "Body of the Download All confirmation dialog", - "placeholders": { - "count": { - "type": "int" - } - } + "duplicatesTitle": "Duplicates", + "@duplicatesTitle": { + "description": "Title of the duplicate review sheet" }, - "homeSupports": "Unterstützt: Titel, Album, Playlist, Künstler-URLs", - "@downloadedAlbumDeleteSelected": { - "description": "Button - delete selected tracks" + "duplicatesEmpty": "No duplicate tracks found.", + "@duplicatesEmpty": { + "description": "Shown when the duplicate review sheet finds nothing" }, - "@recentShowAllDownloads": { - "description": "Button label to unhide hidden downloads in recent access" + "duplicatesKeepBest": "Keep best", + "@duplicatesKeepBest": { + "description": "Button that deletes all but the highest-quality copy in a duplicate group" }, - "artistOptionRemoveFromFavorites": "Aus Favoriten entfernen", - "@artistOptionRemoveFromFavorites": { - "description": "Action label - remove artist from favorite artists" + "duplicatesKeepBestAll": "Keep best for all", + "@duplicatesKeepBestAll": { + "description": "Button that keeps the highest-quality copy in every duplicate group and deletes the rest" }, - "collectionPlaylistEmptyTitle": "Die Playlist ist leer", - "@collectionPlaylistEmptyTitle": { - "description": "Playlist empty state title" - }, - "libraryFilterSortLatest": "Neuste", - "@libraryFilterSortLatest": { - "description": "Sort option - newest first" - }, - "@libraryFilterMetadataMissingYear": { - "description": "Filter option - items missing release year/date" - }, - "@selectionSelected": { - "description": "Selection count indicator", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@tracksCount": { - "description": "Track count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@optionsCheckUpdates": { - "description": "Auto update check toggle" - }, - "@qualityHiResFlacMaxSubtitle": { - "description": "Technical spec for hi-res max" - }, - "actionStop": "Stop", - "@actionStop": { - "description": "Generic action - stop" - }, - "@selectionSelectToDelete": { - "description": "Placeholder when nothing selected" - }, - "folderOrganizationNoneSubtitle": "Alle Dateien im Download-Ordner", - "@folderOrganizationNoneSubtitle": { - "description": "Subtitle for no organization option" - }, - "@updateDownloading": { - "description": "Update status - downloading" - }, - "artistAlbums": "Alben", - "@artistAlbums": { - "description": "Section header for artist albums" - }, - "trackConvertDitherTriangular": "TPDF", - "@trackConvertDitherTriangular": { - "description": "Lossless conversion triangular probability density function dither option" - }, - "nowPlayingShuffleLibraryFailed": "Could not shuffle library: {error}", - "@nowPlayingShuffleLibraryFailed": { - "description": "Snackbar when shuffling the library fails", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "@setupIcloudNotSupported": { - "description": "Error when user selects iCloud Drive on iOS" - }, - "@optionsArtistTagModeSplitVorbis": { - "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" - }, - "@extensionsProviderPrioritySection": { - "description": "Section header - provider priority" - }, - "@libraryShowDuplicateIndicatorSubtitle": { - "description": "Subtitle for duplicate indicator toggle" - }, - "sectionDuplicates": "Duplikate", - "@sectionDuplicates": { - "description": "Settings section header for deduplication" - }, - "@backupTitle": { - "description": "App bar title for the backup and restore page" - }, - "trackCoverReplaceNotice": "Das ausgewählte Cover ersetzt das aktuell eingebettete Cover, wenn auf speichern gedrückt wird.", - "cacheSectionMaintenance": "Wartung", - "@cacheSectionMaintenance": { - "description": "Section header for cleanup actions" - }, - "@editMetadataFieldGenre": { - "description": "Chip label for genre field in auto-fill selector" - }, - "@extensionsFallbackSubtitle": { - "description": "Subtitle for download fallback extensions menu" - }, - "selectionBatchConvertConfirmMessage": "Konvertiere {count} {format} {count, plural, =1{Titel} other{Titel}} zu {bitrate}?\n\nOriginaldateien werden nach der Konvertierung gelöscht.", - "@selectionBatchConvertConfirmMessage": { - "description": "Confirmation dialog message for batch conversion", + "duplicatesKeepBestAllMessage": "Keep the best copy of {groupCount} {groupCount, plural, =1{track} other{tracks}} and delete {count} lower-quality {count, plural, =1{copy} other{copies}}?\n\nThe deleted files will be removed from storage.", + "@duplicatesKeepBestAllMessage": { + "description": "Confirmation message for keeping the best copy across every duplicate group", "placeholders": { "count": { "type": "int" }, - "format": { - "type": "String" - }, - "bitrate": { - "type": "String" - } - } - }, - "@selectionTapPlaylistsToSelect": { - "description": "Hint shown in playlist selection mode" - }, - "qualityHiResFlacMaxSubtitle": "24-Bit / bis 192kHz", - "snackbarRemovedTracksFromLoved": "{count} Titel von geliebt entfernt", - "@snackbarRemovedTracksFromLoved": { - "description": "Snackbar after removing multiple tracks from Loved folder", - "placeholders": { - "count": { + "groupCount": { "type": "int" } } }, - "folderOrganizationByArtistAlbum": "Künstler/Album", - "@folderOrganizationByArtistAlbum": { - "description": "Folder option - nested folders" - }, - "snackbarCannotOpenFile": "Datei kann nicht geöffnet werden: {error}", - "@snackbarCannotOpenFile": { - "description": "Snackbar - file open error", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "@optionsDetailedLoggingOff": { - "description": "Status when logging disabled" - }, - "@setupStorageDescription": { - "description": "Explanation for storage permission" - }, - "audioAnalysisCodec": "Codec", - "@regionCountryFR": { - "description": "Country name for SongLink region picker" - }, - "@optionsArtistTagMode": { - "description": "Setting title for how artist metadata is written into files" - }, - "@libraryClearConfirmMessage": { - "description": "Dialog message for clear confirmation" - }, - "trackLyricsNotAvailable": "Lyrics sind für diesen Titel nicht verfügbar", - "@trackLyricsNotAvailable": { - "description": "Message when lyrics not found" - }, - "storeFilterUtility": "Utility", - "@storeFilterUtility": { - "description": "Repo filter - utility extensions" - }, - "collectionAddedToPlaylist": "Zu \"{playlistName} \" hinzugefügt", - "@collectionAddedToPlaylist": { - "description": "Snackbar after adding track to playlist", - "placeholders": { - "playlistName": { - "type": "String" - } - } - }, - "cacheClearConfirmTitle": "Cache leeren?", - "@cacheClearConfirmTitle": { - "description": "Dialog title before clearing one cache category" - }, - "@downloadAppleElrcWordSyncDisabled": { - "description": "Subtitle when Apple Music eLRC word sync is disabled" - }, - "@aboutMobileDeveloper": { - "description": "Role description for mobile dev" - }, - "albumFolderYearAlbum": "[Year] Album", - "@albumFolderYearAlbum": { - "description": "Album folder option with year" - }, - "cacheTitle": "Speicher & Cache", - "@extensionPostProcessing": { - "description": "Capability - post-download processing" - }, - "extensionsNoMetadataProvider": "Keine Erweiterungen mit Metadaten-Anbieter", - "@extensionsNoMetadataProvider": { - "description": "Empty state - no metadata providers" - }, - "searchSortTitleZA": "Titel (Z-A)", - "@queueClearAllMessage": { - "description": "Clear queue confirmation" - }, - "audioAnalysisTitle": "Audio-Qualitätsanalyse", - "@audioAnalysisTitle": { - "description": "Title for audio analysis section" - }, - "@aboutReportIssueSubtitle": { - "description": "Subtitle for report issue" - }, - "@audioAnalysisSampleRate": { - "description": "Sample rate metric label" - }, - "@discographySelectedCount": { - "description": "Selection count badge", + "duplicatesKeepBestMessage": "Delete {count} lower-quality copies of \"{trackName}\"?", + "@duplicatesKeepBestMessage": { + "description": "Confirmation message for the keep-best action", "placeholders": { "count": { "type": "int" - } - } - }, - "qualityFlacLosslessSubtitle": "16-bit / 44,1kHz", - "@qualityFlacLosslessSubtitle": { - "description": "Technical spec for lossless" - }, - "libraryScanFinalizing": "Bibliothek wird aktualisiert...", - "@libraryScanFinalizing": { - "description": "Status shown after file scanning finishes but library persistence is still running" - }, - "@trackEditMetadata": { - "description": "Menu action - edit embedded metadata" - }, - "@downloadNeteaseIncludeRomanization": { - "description": "Setting to include romanized lyrics from Netease" - }, - "@optionsArtistTagModeJoinedSubtitle": { - "description": "Subtitle for joined artist tag mode" - }, - "regionCountryDE": "Germany", - "@regionCountryDE": { - "description": "Country name for SongLink region picker" - }, - "optionsAutoFallback": "Automatischer Fallback", - "@optionsAutoFallback": { - "description": "Auto-retry with other services" - }, - "@trackMetadataPlay": { - "description": "Action button - play track" - }, - "settingsFiles": "Dateien & Ordner", - "@settingsFiles": { - "description": "Settings menu item - file and folder settings" - }, - "aboutMobileDeveloper": "Mobile-Version Entwickler", - "@trackDownloaded": { - "description": "Metadata label - download date" - }, - "homeSkipAlreadyDownloaded": "Bereits heruntergeladene Titel überspringen", - "@homeSkipAlreadyDownloaded": { - "description": "Checkbox label in import dialog to skip already-downloaded songs" - }, - "dialogUninstall": "Deinstallieren", - "@dialogUninstall": { - "description": "Dialog button - uninstall extension" - }, - "collectionDeletePlaylist": "Playlist löschen", - "@collectionDeletePlaylist": { - "description": "Action to delete playlist" - }, - "trackCoverOnline": "Online cover", - "@trackCoverOnline": { - "description": "Label shown when metadata autofill downloaded cover art from the internet" - }, - "downloadTitle": "Herunterladen", - "@downloadTitle": { - "description": "Download settings page title" - }, - "searchArtists": "Künstler", - "@searchArtists": { - "description": "Search result category - artists" - }, - "extensionUrlHandler": "URL Handler", - "@extensionUrlHandler": { - "description": "Capability - handles URLs" - }, - "@timeHoursAgo": { - "description": "Relative time - hours ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "editMetadataAdvanced": "Erweitert", - "@editMetadataAdvanced": { - "description": "Expandable section label for advanced metadata fields" - }, - "@actionSelectAll": { - "description": "Action button - select all items" - }, - "timeMinutesAgo": "{count, plural, =1{vor 1 Minute} other{vor {count} Minuten}}", - "@timeMinutesAgo": { - "description": "Relative time - minutes ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "regionCountryXK": "Kosovo", - "@downloadAskQualitySubtitle": { - "description": "Subtitle for ask quality toggle" - }, - "setupLanguageSystemDefault": "Systemstandard", - "@setupLanguageSystemDefault": { - "description": "Option to use the system language" - }, - "@updateAvailable": { - "description": "Update dialog title" - }, - "cacheEntries": "{count} Einträge", - "@cacheEntries": { - "description": "Track cache entry count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@notifLibraryScanExcluded": { - "description": "Library scan complete suffix - excluded track count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionsMetadataPrioritySubtitle": "Reihenfolge der Such- und Metadaten quellen festlegen", - "@extensionsMetadataPrioritySubtitle": { - "description": "Subtitle for metadata priority" - }, - "downloadedAlbumSelectToDelete": "Titel zum Löschen wählen", - "@downloadedAlbumSelectToDelete": { - "description": "Placeholder when nothing selected" - }, - "@dialogClearHistoryTitle": { - "description": "Dialog title - clear download history" - }, - "tutorialSettingsTip1": "Download-Ordner und Ordner-Organisation ändern", - "@tutorialSettingsTip1": { - "description": "Tutorial settings tip 1" - }, - "@extensionsInstalledSuccess": { - "description": "Success message after install" - }, - "allFilesAccessDisabledSubtitle": "Nur auf Medienordner begrenzt", - "@allFilesAccessDisabledSubtitle": { - "description": "Subtitle when all files access is disabled" - }, - "@appearanceHistoryViewList": { - "description": "List layout option" - }, - "@notifAlreadyInLibraryCount": { - "description": "Notification title when track is already in library, with count", - "placeholders": { - "completed": { - "type": "int" }, - "total": { - "type": "int" - } - } - }, - "@libraryFilterAll": { - "description": "Filter chip - show all library items" - }, - "settingsDownload": "Herunterladen", - "settingsFilesSubtitle": "Speicherort, Dateiname, Ordnerstruktur", - "@settingsFilesSubtitle": { - "description": "Subtitle for files & folders settings" - }, - "@libraryFilterSort": { - "description": "Filter section - sort order" - }, - "metadataProvidersSubtitle": "Zieh, um Such- und Metadatenquellenreihenfolge zu setzen", - "@extensionPermissions": { - "description": "Section header - required permissions" - }, - "selectionSelectToDelete": "Titel zum Löschen wählen", - "@libraryExternalPlayerSubtitle": { - "description": "Subtitle for external player option" - }, - "extensionVerificationOpenBrowser": "Open browser", - "@extensionVerificationOpenBrowser": { - "description": "Button to open the extension verification URL in a browser" - }, - "@trackConvertConfirmMessageLossless": { - "description": "Confirmation dialog message for lossless-to-lossless conversion", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { + "trackName": { "type": "String" } } }, - "@snackbarAddedTracksToQueue": { - "description": "Snackbar - multiple tracks added to queue", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@backupContentsWishlist": { - "description": "Backup contents row for wishlist tracks count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@cacheCleanupUnusedSubtitle": { - "description": "Subtitle for cleanup unused data action" - }, - "trackLabel": "Label", - "@trackLabel": { - "description": "Metadata label - record label" - }, - "@collectionAddedToLoved": { - "description": "Snackbar after adding track to loved folder", + "duplicatesDeleteCopyMessage": "Delete this copy of \"{trackName}\"?", + "@duplicatesDeleteCopyMessage": { + "description": "Confirmation message for deleting one duplicate copy", "placeholders": { "trackName": { "type": "String" } } }, - "regionCountryGB": "United Kingdom", - "dialogCancel": "Abbrechen", - "@dialogCancel": { - "description": "Dialog button - cancel action" - }, - "@folderOrganizationByArtistAlbumSubtitle": { - "description": "Subtitle for nested folder option" - }, - "@notifAllDownloadsComplete": { - "description": "Notification title when all downloads finish successfully" - }, - "setupEnableNotifications": "Benachrichtigungen aktivieren", - "@setupEnableNotifications": { - "description": "Button to enable notifications" - }, - "@notifFinalizingTrack": { - "description": "Notification title while finalizing (embedding metadata) a track", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "@downloadLossy320FormatDesc": { - "description": "Description in the lossy format picker" - }, - "filenameFormat": "Dateinamenformat", - "@filenameFormat": { - "description": "Setting title - filename pattern" - }, - "historySearchHint": "Suchverlauf...", - "@historySearchHint": { - "description": "Search bar placeholder in history" - }, - "@tutorialReadyMessage": { - "description": "Tutorial completion message" - }, - "cacheTempDirectoryDesc": "Temporäre Dateien von Downloads und Audio-Konvertierung.", - "@cacheTempDirectoryDesc": { - "description": "Description of what temporary directory contains" - }, - "@trackSaveLyrics": { - "description": "Menu action - save lyrics as .lrc file" - }, - "@notifDownloadsFinished": { - "description": "Notification title when queue finishes with some failures", - "placeholders": { - "completed": { - "type": "int" - }, - "failed": { - "type": "int" - } - } - }, - "@historyFilterAlbums": { - "description": "Filter chip - show albums only" - }, - "trackEmbedLyrics": "Lyrics einbetten", - "@trackEmbedLyrics": { - "description": "Action - embed lyrics into audio file" - }, - "@downloadPrimaryArtistOnlyOff": { - "description": "Status label when primary-artist-only folder naming is disabled" - }, - "@trackReEnrichFieldTrackInfo": { - "description": "Checkbox label for track info in re-enrich" - }, - "snackbarHistoryCleared": "Verlauf gelöscht", - "downloadNetworkCompatibilityModeDisabled": "Standard-Netzwerkeinstellungen verwenden", - "@artistPopular": { - "description": "Section header for popular/top tracks" - }, - "@trackFetchOnlineLyrics": { - "description": "Action - fetch lyrics from online providers" - }, - "extensionLyricsProvider": "Lyrics-Anbieter", - "@extensionLyricsProvider": { - "description": "Capability - provides lyrics" - }, - "historyFilterAll": "Alle", - "@historyFilterAll": { - "description": "Filter chip - show all items" - }, - "tutorialSearchTitle": "Suche Musik", - "@lyricsModeExternal": { - "description": "Lyrics mode option - separate LRC file" - }, - "@actionDismiss": { - "description": "Generic action - dismiss" - }, - "trackOpenInSpotify": "In Spotify öffnen", - "@trackOpenInSpotify": { - "description": "Action - open track in Spotify app" - }, - "@libraryClear": { - "description": "Button to clear all library entries" - }, - "discographyFailedToFetch": "Fehler beim Abrufen einiger Alben", - "@filenameShowAdvancedTagsDescription": { - "description": "Description for advanced filename tag toggle" - }, - "@storeUpdate": { - "description": "Update available button" - }, - "collectionPlaylistTracks": "{count, plural, =1{1 Titel} other{{count} Titel}}", - "@collectionPlaylistTracks": { - "description": "Track count label for custom playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "optionsPrimaryProviderSubtitle": "Dienst zur Suche nach Titel oder Albumnamen", - "@optionsPrimaryProviderSubtitle": { - "description": "Subtitle for primary provider" - }, - "@downloadEmbedLyricsDisabled": { - "description": "Subtitle when lyrics embedding is blocked by metadata toggle" - }, - "@librarySourceLocal": { - "description": "Badge for tracks from local library scan" - }, - "@searchSortDurationLong": { - "description": "Sort option - longest duration first" - }, - "@downloadFilterContributingDisabled": { - "description": "Subtitle when contributing artist filter is off" - }, - "queueDownloadingCount": "{count} werden heruntergeladen", - "@queueDownloadingCount": { - "description": "Header for active downloads section with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionVerificationBrowserInApp": "In-app", - "trackAudioQuality": "Audioqualität", - "@trackAudioQuality": { - "description": "Metadata label - audio quality" - }, - "libraryRemovedMissingFiles": "Entfernte {count} fehlende Dateien aus der Bibliothek", - "@libraryRemovedMissingFiles": { - "description": "Snackbar after cleanup", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "collectionFavoriteArtistsEmptyTitle": "Noch keine Lieblingskünstler", - "@collectionFavoriteArtistsEmptyTitle": { - "description": "Favorite artists empty state title" - }, - "@errorInvalidFolderSelected": { - "description": "Error when the selected folder is invalid" - }, - "@searchSortArtistZA": { - "description": "Sort option - artist descending" - }, - "snackbarAddedTracksToLoved": "{count} titel zu geliebt hinzugefügt", - "@snackbarAddedTracksToLoved": { - "description": "Snackbar after adding multiple tracks to Loved folder", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cancelDownloadContent": "Dadurch wird der aktive Download für \"{trackName}\" abgebrochen.", - "@cancelDownloadContent": { - "description": "Dialog body when confirming cancellation of an active download", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "settingsCacheSubtitle": "Größe anzeigen und Daten im Cache leeren", - "@settingsCacheSubtitle": { - "description": "Subtitle for cache management menu" - }, - "notifLibraryScanCompleteBody": "{count} titel indiziert", - "@cacheSizeWithFiles": { - "description": "Cache size and file count", - "placeholders": { - "size": { - "type": "String" - }, - "count": { - "type": "int" - } - } - }, - "@downloadAskBeforeDownload": { - "description": "Setting - show quality picker" - }, - "@extensionHealthDegraded": { - "description": "Extension service health status - degraded" - }, - "@sectionPerformance": { - "description": "Settings section header" - }, - "@trackCoverCurrent": { - "description": "Label for the currently embedded cover preview" - }, - "discographySelectAlbums": "Alben auswählen...", - "@discographySelectAlbums": { - "description": "Option - manually select albums to download" - }, - "aboutAppDescription": "Musik-Metadaten durchsuchen, Erweiterungen verwalten und deine Bibliothek organisieren.", - "@aboutAppDescription": { - "description": "App description in header card" - }, - "extensionCustomTrackMatching": "Benutzerdefiniertes Track-Matching", - "@extensionCustomTrackMatching": { - "description": "Capability - custom track matching algorithm" - }, - "@editMetadataSelectNone": { - "description": "Button to clear selected fields for auto-fill" - }, - "@trackPlayNext": { - "description": "Menu action to play a track as the next queue item" - }, - "extensionCapabilities": "Eigenschaften", - "@extensionCapabilities": { - "description": "Section header - extension features" - }, - "@downloadSelectServiceToEnable": { - "description": "Subtitle when quality picker is disabled due to extension service" - }, - "logIssueRateLimitedDescription": "Zu viele Anfragen an den Dienst", - "@logIssueRateLimitedDescription": { - "description": "Diagnostic badge description for rate limiting" - }, - "@actionResume": { - "description": "Action button - resume download" - }, - "@updateDownloadInstall": { - "description": "Update button - download and install" - }, - "downloadLossy320Format": "Verlustbehaftetes 320kbps-Format", - "@downloadLossy320Format": { - "description": "Title of the lossy format picker bottom sheet" - }, - "settingsMetadataSubtitle": "Cover Art, Tags, ReplayGain, Anbieter", - "@trackCopyright": { - "description": "Metadata label - copyright information" - }, - "@snackbarExtensionInstalled": { - "description": "Snackbar - extension installed successfully", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "@regionCountryJP": { - "description": "Country name for SongLink region picker" - }, - "trackReEnrichOnlineSubtitle": "Metadaten online suchen und in Datei einbinden", - "@trackReEnrichOnlineSubtitle": { - "description": "Subtitle for re-enrich metadata action for local items" - }, - "nowPlayingNothingPlaying": "Nothing is playing", - "@nowPlayingNothingPlaying": { - "description": "Empty state when no track is currently playing" - }, - "tutorialDownloadDesc": "Pick an available quality, start the download, and follow its progress in the queue.", - "@tutorialDownloadDesc": { - "description": "Tutorial download page description" - }, - "@appearanceTitle": { - "description": "Appearance settings page title" - }, - "@backupExportSectionDescription": { - "description": "Description of what a backup contains" - }, - "@downloadLossyOpus128": { - "description": "Lossy format option - Opus 128kbps" - }, - "@logFilterSection": { - "description": "Filter section title" - }, - "trackReEnrichSuccess": "Metadaten erfolgreich neu angereichert", - "@trackReEnrichSuccess": { - "description": "Snackbar after successful re-enrichment" - }, - "backupContentsHistory": "{count} history {count, plural, =1{item} other{items}}", - "@backupContentsHistory": { - "description": "Backup contents row for history count", + "@dialogImportPlaylistMessage": { + "description": "Dialog message - import playlist confirmation", "placeholders": { "count": { "type": "int" @@ -2303,692 +958,93 @@ } } }, - "libraryAutoScanOnOpen": "Bei jeder App Öffnung", - "@libraryAutoScanOnOpen": { - "description": "Auto scan when app opens" + "snackbarAddedTracksToQueue": "{count} Titel hinzugefügt", + "@snackbarAddedTracksToQueue": { + "description": "Snackbar - multiple tracks added to queue", + "placeholders": { + "count": { + "type": "int" + } + } }, - "audioAnalysisChannels": "Kanäle", - "@audioAnalysisChannels": { - "description": "Channels metric label" - }, - "appearanceHistoryViewList": "Liste", - "updateDownloadInstall": "Herunterladen & Installieren", - "@libraryShowDuplicateIndicator": { - "description": "Toggle for duplicate indicator in search" - }, - "extensionsHomeFeedOff": "Aus", - "@extensionsHomeFeedOff": { - "description": "Extensions page - home feed provider option: off" - }, - "searchSortTitleAZ": "Titel (A-Z)", - "@searchSortTitleAZ": { - "description": "Sort option - title ascending" - }, - "collectionRemovedFromLoved": "\"{trackName}\" aus Lieblingssongs entfernt", - "@collectionRemovedFromLoved": { - "description": "Snackbar after removing track from loved folder", + "snackbarAlreadyDownloaded": "\"{trackName}\" bereits heruntergeladen", + "@snackbarAlreadyDownloaded": { + "description": "Snackbar - track already exists", "placeholders": { "trackName": { "type": "String" } } }, - "sectionAudioQuality": "Audioqualität", - "@sectionAudioQuality": { - "description": "Settings section header" - }, - "trackConvertSuccess": "Konvertiert in {format} erfolgreich", - "@trackConvertSuccess": { - "description": "Snackbar after successful conversion", - "placeholders": { - "format": { - "type": "String" - } - } - }, - "dialogUninstallExtensionMessage": "Bist du sicher, dass du {extensionName} entfernen möchtest?", - "@dialogUninstallExtensionMessage": { - "description": "Dialog message - uninstall specific extension", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "downloadNativeWorkerSubtitle": "Android-Hintergrunddienst für Downloads von Erweiterungen", - "@downloadNativeWorkerSubtitle": { - "description": "Setting subtitle for Android native download worker" - }, - "storeUpdate": "Aktualisieren", - "libraryFilterMetadataMissingAny": "Metadaten fehlen", - "@libraryFilterMetadataMissingAny": { - "description": "Filter option - items missing any tracked metadata field" - }, - "@selectionBatchConvertConfirmMessageLosslessCapped": { - "description": "Confirmation dialog message for capped lossless batch conversion", - "placeholders": { - "count": { - "type": "int" - }, - "format": { - "type": "String" - }, - "quality": { - "type": "String" - } - } - }, - "editMetadataAutoFillDesc": "Choose a metadata extension, select fields, then review its data before applying", - "@editMetadataAutoFillDesc": { - "description": "Description for the auto-fill section" - }, - "@lyricsProviderExtensionDesc": { - "description": "Generic description for extension-based lyrics providers" - }, - "downloadSongLinkRegion": "SongLink-Region", - "@downloadSongLinkRegion": { - "description": "Setting for SongLink region used during fallback resolution" - }, - "shareSheetNoExtensions": "No other compatible services", - "@shareSheetNoExtensions": { - "description": "Empty state when no extensions can be searched for cross-service links" - }, - "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": { - "count": { - "type": "int" - } - } - }, - "tooltipAddToPlaylist": "Zur Wiedergabeliste hinzufügen", - "@tooltipAddToPlaylist": { - "description": "Tooltip for the Add to Playlist button" - }, - "@snackbarAddedToQueueGeneric": { - "description": "Snackbar when a track is added to the playback queue without naming it" - }, - "@tutorialSettingsTip2": { - "description": "Tutorial settings tip 2" - }, - "extensionPermissions": "Berechtigungen", - "releaseTypeSingle": "Single", - "aboutTelegramChannelSubtitle": "Ankündigungen und Updates", - "@aboutTelegramChannelSubtitle": { - "description": "Subtitle for Telegram channel" - }, - "@dialogDisableAndClear": { - "description": "Confirmation action to disable download history and clear existing entries" - }, - "@homeSearchHintProvider": { - "description": "Placeholder for the main search field when a provider is selected", - "placeholders": { - "providerName": { - "type": "String" - } - } - }, - "metadataProvidersTitle": "Priorität des Metadaten-Anbieters", - "@metadataProvidersTitle": { - "description": "Settings item title for metadata provider order" - }, - "trackAddToQueue": "Add to queue", - "audioAnalysisDecodedFormat": "Dekodiertes Format", - "@audioAnalysisDecodedFormat": { - "description": "Decoded sample format metric label" - }, - "@editMetadataSelectEmpty": { - "description": "Button to select only fields that are currently empty" - }, - "collectionAlreadyInPlaylist": "Bereits in \"{playlistName}\"", - "discographyAlbumsOnlySubtitle": "{count} Titel aus {albumCount} Alben", - "@discographyAlbumsOnlySubtitle": { - "description": "Subtitle showing album tracks count", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } - }, - "setupNotificationEnable": "Benachrichtigungen aktivieren", - "@setupNotificationEnable": { - "description": "Button to enable notifications" - }, - "settingsAppearanceSubtitle": "Design, Farben, Anzeige", - "@settingsAppearanceSubtitle": { - "description": "Appearance settings description" - }, - "@notifUpdateFailedBody": { - "description": "Notification body when app update download fails" - }, - "@aboutOriginalCreator": { - "description": "Role description for original creator" - }, - "libraryBuiltInPreviewPlayer": "Built-in preview player", - "@libraryBuiltInPreviewPlayer": { - "description": "Setting option to use the built-in preview player" - }, - "tooltipPlay": "Abspielen", - "@tooltipPlay": { - "description": "Tooltip - play button" - }, - "@safMigrationMessage2": { - "description": "Second paragraph of SAF migration dialog" - }, - "@extensionsSearchProvider": { - "description": "Setting - search provider selection" - }, - "libraryAboutDescription": "Durchsucht deine bestehende Musiksammlung, um Duplikate beim Herunterladen zu erkennen. Unterstützt die Formate FLAC, M4A, MP3, Opus und OGG. Metadaten werden, sofern verfügbar, aus den Dateitags gelesen.", - "@libraryAboutDescription": { - "description": "Description of local library feature" - }, - "downloadAskBeforeDownload": "Qualität vor Download fragen", - "nowPlayingNoMetadata": "No metadata available", - "@nowPlayingNoMetadata": { - "description": "Empty state when track metadata cannot be loaded" - }, - "trackInstrumental": "Instrumentalspur", - "@trackInstrumental": { - "description": "Message when track is instrumental (no lyrics)" - }, - "@collectionWishlistEmptyTitle": { - "description": "Wishlist empty state title" - }, - "selectionBatchConvertConfirmMessageLosslessCapped": "Convert {count} {count, plural, =1{track} other{tracks}} to {format} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original files will be deleted after conversion.", - "downloadDeduplication": "Doppelte Downloads überspringen", - "libraryFilterSortOldest": "Älteste", - "@libraryFilterSortOldest": { - "description": "Sort option - oldest first" - }, - "setupSkip": "Vorerst überspringen", - "@setupSkip": { - "description": "Skip current step button" - }, - "@setupFolderDescription": { - "description": "Explanation for folder selection" - }, - "@settingsLogsSubtitle": { - "description": "Logs settings description" - }, - "storeNewRepoUrlLabel": "Neue Repository-URL", - "@storeNewRepoUrlLabel": { - "description": "Label for the new repository URL field inside the dialog" - }, - "cacheClearConfirmMessage": "Dies löscht zwischengespeicherte Daten in {target}. Die Musikdateien werden nicht gelöscht.", - "@cacheClearConfirmMessage": { - "description": "Dialog message before clearing selected cache", - "placeholders": { - "target": { - "type": "String" - } - } - }, - "trackMetadataPlay": "Abspielen", - "@libraryEnableLocalLibrary": { - "description": "Toggle to enable library scanning" - }, - "optionsUpdateChannel": "Update-Kanal", - "@optionsUpdateChannel": { - "description": "Stable vs preview releases" - }, - "@downloadCreatePlaylistSourceFolderDisabled": { - "description": "Subtitle when playlist folder is disabled" - }, - "@extensionRefreshStatus": { - "description": "Tooltip for refreshing extension service health status" - }, - "backupRestoreRestartHint": "Restart the app to make sure every change is applied.", - "@backupRestoreRestartHint": { - "description": "Hint shown after restoring that an app restart is recommended" - }, - "@snackbarExtensionInstalledEnable": { - "description": "Snackbar after installing an extension from the repo tab", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "settingsAutoExportFailedSubtitle": "Fehlgeschlagene Downloads automatisch in eine TXT-Datei speichern", - "@settingsAutoExportFailedSubtitle": { - "description": "Subtitle for auto-export setting" - }, - "searchSortArtistAZ": "Künstler (A-Z)", - "@searchSortArtistAZ": { - "description": "Sort option - artist ascending" - }, - "editMetadataFieldAlbumArtist": "Album Künstler", - "@editMetadataFieldAlbumArtist": { - "description": "Chip label for album artist field in auto-fill selector" - }, - "@queueEmptyHistory": { - "description": "Empty state title when download history is empty" - }, - "@dialogDisableHistoryMessage": { - "description": "Confirmation dialog message shown before disabling download history" - }, - "queueFlacNoReliableMatches": "Keine zuverlässigen Online-Übereinstimmungen für die Auswahl gefunden", - "@queueFlacNoReliableMatches": { - "description": "Snackbar when no safe FLAC redownload matches were found" - }, - "trackOpenInDeezer": "In Deezer öffnen", - "@trackOpenInDeezer": { - "description": "Action - open track in Deezer app" - }, - "setupChooseFromFilesSubtitle": "Wähle iCloud oder einen anderen Speicherort", - "@setupChooseFromFilesSubtitle": { - "description": "Subtitle for file picker" - }, - "artistMonthlyListeners": "{count} monatliche Hörer", - "@artistMonthlyListeners": { - "description": "Monthly listener count display", - "placeholders": { - "count": { - "type": "String", - "description": "Formatted listener count" - } - } - }, - "@downloadLossyAacSubtitle": { - "description": "Subtitle for AAC/M4A 320kbps lossy option" - }, - "cacheSectionStorage": "Zwischengespeicherte Daten", - "@cacheSectionStorage": { - "description": "Section header for cache entries" - }, - "@libraryAutoScanWeekly": { - "description": "Auto scan once per week" - }, - "tutorialDownloadCompletedSemantics": "Download abgeschlossen", - "@tutorialDownloadCompletedSemantics": { - "description": "Accessibility label for completed download state in tutorial demo" - }, - "@logNoLogsYet": { - "description": "Empty state title" - }, - "@selectionDeletePlaylistsCount": { - "description": "Button label for deleting multiple selected playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadSeparateSinglesEnabled": "Singles und EPs werden in einem separaten Ordner gespeichert", - "@downloadSeparateSinglesEnabled": { - "description": "Subtitle when separate singles folder is on" - }, - "setupAppDocumentsFolder": "App-Dokumentenordner", - "@setupAppDocumentsFolder": { - "description": "iOS documents folder option" - }, - "storeLoadError": "Fehler beim Laden der Repository", - "settingsDownloadNetwork": "Download Netzwerk", - "metadataSaveFailedStorage": "Metadaten konnten nicht zurück in den Speicher geschrieben werden", - "@logAutoScrollOff": { - "description": "Tooltip when auto-scroll is disabled on the log screen" - }, - "@trackConvertFormat": { - "description": "Menu item - convert audio format" - }, - "optionsArtistTagModeJoined": "Einzelne beigefügte Werte", - "@optionsArtistTagModeJoined": { - "description": "Artist tag mode option that joins multiple artists into one value" - }, - "@dateYesterday": { - "description": "Relative date - yesterday" - }, - "@settingsExtensionsSubtitle": { - "description": "Extensions settings description" - }, - "searchSortArtistZA": "Künstler (Z-A)", - "@extensionSettings": { - "description": "Section header - extension settings" - }, - "@extensionOauthConnectHint": { - "description": "Hint for an OAuth login link field before connecting Spotify" - }, - "@notifUpdateReady": { - "description": "Notification title when app update download is complete" - }, - "@regionCountryMX": { - "description": "Country name for SongLink region picker" - }, - "@nowPlayingOpenInExternalPlayer": { - "description": "Menu item to open the current track in an external player" - }, - "trackConvertDithering": "Dithering", - "@trackConvertDithering": { - "description": "Section label for lossless conversion dithering options" - }, - "settingsDownloadSubtitle": "Anbieter, Qualität, Rückfall", - "@settingsDownloadSubtitle": { - "description": "Download settings description" - }, - "libraryLastScanned": "Zuletzt gescannt: {time}", - "@libraryLastScanned": { - "description": "Last scan time display", - "placeholders": { - "time": { - "type": "String" - } - } - }, - "setupIosEmptyFolderWarning": "iOS-Einschränkung: Leere Ordner können nicht ausgewählt werden. Wähle einen Ordner mit mindestens einer Datei.", - "@setupIosEmptyFolderWarning": { - "description": "iOS folder selection warning" - }, - "@storeAddRepoDescription": { - "description": "Store setup screen - explanatory text" - }, - "@snackbarFailedToInstallNamed": { - "description": "Snackbar when extension install fails in the repo tab", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "@collectionAddedTracksToPlaylist": { - "description": "Snackbar after adding multiple tracks to a playlist", - "placeholders": { - "count": { - "type": "int" - }, - "playlistName": { - "type": "String" - } - } - }, - "updateNew": "Neu", - "@updateNew": { - "description": "Label for new version" - }, - "settingsExtensionsSubtitle": "Download-Anbieter verwalten", - "@albumFolderArtistAlbumSinglesSubtitle": { - "description": "Folder structure example" - }, - "trackReEnrichSelectAll": "Alles Auswählen", - "@trackReEnrichSelectAll": { - "description": "Select all fields checkbox in re-enrich" - }, - "@extensionsUninstall": { - "description": "Uninstall extension button" - }, - "@downloadUseAlbumArtistForFoldersTrackSubtitle": { - "description": "Subtitle when track artist is used for folder names" - }, - "@logIssueNetworkErrorLabel": { - "description": "Diagnostic badge label for generic network errors" - }, - "albumFolderArtistYearAlbumSubtitle": "Alben/Künster Name/[2005] Album Name/", - "@albumFolderArtistYearAlbumSubtitle": { - "description": "Folder structure example" - }, - "itemCount": "{count} {count, plural, =1{Sache} other{Sachen}}", - "@itemCount": { - "description": "Generic item count label", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "discographyFetchingTracks": "Lade Titel...", - "@discographyFetchingTracks": { - "description": "Progress - fetching album tracks" - }, - "@libraryFolder": { - "description": "Folder selection setting" - }, - "queueEmptyAlbums": "Keine Album-Downloads", - "@queueEmptyAlbums": { - "description": "Empty state title when no album downloads exist" - }, - "@metadataProviderPriorityDescription": { - "description": "Metadata priority page description" - }, - "@extensionVerificationHelpTitleManual": { - "description": "Dialog title when automatic browser launch for verification fails" - }, - "extensionError": "Fehler", - "@extensionError": { - "description": "Extension detail - error message" - }, - "@trackLyricsLoadFailed": { - "description": "Message when lyrics loading fails" - }, - "@downloadedAlbumDeleteCount": { - "description": "Delete button text with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@extensionsNoHomeFeedExtensions": { - "description": "Extensions page - shown when no installed extension has home feed" - }, - "@collectionArtistCount": { - "description": "Artist count label for favorite artists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "backupContentsArtists": "{count, plural, =1{1 favorite artist} other{{count} favorite artists}}", - "@backupContentsArtists": { - "description": "Backup contents row for favorite artists count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@trackRemoveFromDevice": { - "description": "Action - delete downloaded file" - }, - "lyricsProvidersEnabledSection": "({count}) aktiviert", - "@lyricsProvidersEnabledSection": { - "description": "Section header for enabled providers", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@cueSplitTitle": { - "description": "Title for CUE split bottom sheet" - }, - "@downloadedAlbumSelectedCount": { - "description": "Selection count indicator", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@trackOptionRemoveFromWishlist": { - "description": "Bottom sheet action label - remove track from wishlist" - }, - "notifDownloadingTrack": "{trackName} wird heruntergeladen", - "@notifDownloadingTrack": { - "description": "Notification title while downloading a track", + "snackbarAlreadyInLibrary": "\"{trackName}\" existiert bereits in deiner Bibliothek", + "@snackbarAlreadyInLibrary": { + "description": "Snackbar - track already exists in local library", "placeholders": { "trackName": { "type": "String" } } }, - "@discographySkippedDownloaded": { - "description": "Snackbar - with skipped tracks count", + "snackbarHistoryCleared": "Verlauf gelöscht", + "@snackbarHistoryCleared": { + "description": "Snackbar - history deleted" + }, + "snackbarDeletedTracks": "{count} {count, plural, =1{Titel} other{Titel}}", + "@snackbarDeletedTracks": { + "description": "Snackbar - tracks deleted", "placeholders": { - "added": { - "type": "int" - }, - "skipped": { + "count": { "type": "int" } } }, - "@tutorialSettingsTip3": { - "description": "Tutorial settings tip 3" - }, - "@announcementUnableToOpenLink": { - "description": "Snackbar shown when an announcement CTA link cannot be opened" - }, - "trackReleaseDate": "Erscheinungsdatum", - "discographySelectedCount": "{count} ausgewählt", - "collectionArtistCount": "{count, plural, =1{1 Künstler} other{{count} Künstler}}", - "logIssueNetworkErrorLabel": "NETZWERKFEHLER", - "updateStartingDownload": "Download wird gestartet...", - "@updateStartingDownload": { - "description": "Update status - initializing" - }, - "trackDiscNumber": "CD-Nummer", - "@trackDiscNumber": { - "description": "Metadata label - disc number" - }, - "optionsUsingExtension": "Erweiterung verwenden: {extensionName}", - "@optionsUsingExtension": { - "description": "Shows active extension name", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "dialogDisableHistoryTitle": "Turn off download history?", - "tutorialWelcomeTip3": "Embed metadata, cover art, lyrics, and release information automatically", - "@tutorialWelcomeTip3": { - "description": "Tutorial welcome tip 3" - }, - "@collectionPlaylistEmptySubtitle": { - "description": "Playlist empty state subtitle" - }, - "@tutorialSearchHint": { - "description": "Placeholder shown in the tutorial search demo" - }, - "cleanupOrphanedDownloadsNone": "Keine verwaisten Einträge gefunden", - "discographySkippedDownloaded": "{added} hinzugefügt, {skipped} bereits heruntergeladen", - "@updateDontRemind": { - "description": "Update button - skip this version" - }, - "@snackbarLoadingCueSheet": { - "description": "Snackbar while loading a CUE sheet file" - }, - "@dialogUninstallExtension": { - "description": "Dialog title - uninstall extension" - }, - "lyricsProvidersTitle": "Priorität des Lyrics-Anbieters", - "@dialogRemove": { - "description": "Dialog button - remove item" - }, - "snackbarError": "Fehler: {error}", - "@snackbarError": { - "description": "Generic error snackbar with error detail", + "snackbarCannotOpenFile": "Datei kann nicht geöffnet werden: {error}", + "@snackbarCannotOpenFile": { + "description": "Snackbar - file open error", "placeholders": { "error": { "type": "String" } } }, - "@sectionApp": { - "description": "Settings section header" + "snackbarViewQueue": "Warteschlange anzeigen", + "@snackbarViewQueue": { + "description": "Snackbar action - view download queue" }, - "@libraryPlayback": { - "description": "Section header for playback settings in library settings" + "snackbarUrlCopied": "{platform} URL in die Zwischenablage kopiert", + "@snackbarUrlCopied": { + "description": "Snackbar - URL copied", + "placeholders": { + "platform": { + "type": "String", + "description": "Platform name (Spotify/Deezer)" + } + } }, - "@downloadPrimaryArtistOnlyOn": { - "description": "Status label when primary-artist-only folder naming is enabled" + "snackbarFileNotFound": "Datei nicht gefunden", + "@snackbarFileNotFound": { + "description": "Snackbar - file doesn't exist" }, - "lyricsProvidersDiscardContent": "Ungespeicherte Änderungen die verloren gehen.", - "previewStop": "Vorschau stoppen", - "@previewStop": { - "description": "Tooltip for the button that stops the playing track preview snippet" + "snackbarSelectExtFile": "Bitte wähle eine .spotiflac-ext Datei", + "@snackbarSelectExtFile": { + "description": "Snackbar - wrong file type selected" }, - "trackConvertConfirmMessageLossless": "Konvertieren von {sourceFormat} in {targetFormat}? (kein Qualitätsverlust)\n\nDie Originaldatei wird nach der Konvertierung gelöscht.", - "discographyAlbumsOnly": "Nur Alben", - "@discographyAlbumsOnly": { - "description": "Option - download only albums" + "snackbarProviderPrioritySaved": "Anbieterpriorität gespeichert", + "@snackbarProviderPrioritySaved": { + "description": "Snackbar - provider order saved" }, - "@editMetadataFieldCopyright": { - "description": "Chip label for copyright field in auto-fill selector" + "snackbarMetadataProviderSaved": "Priorität des Metadaten-Anbieters gespeichert", + "@snackbarMetadataProviderSaved": { + "description": "Snackbar - metadata provider order saved" }, - "extensionsFallbackSubtitle": "Wähle welche installierten Download-Erweiterungen als Fallback verwendet werden sollen", - "aboutSocial": "Sozial", - "@aboutSocial": { - "description": "Section for social links" - }, - "audioAnalysisNyquist": "Nyquist", - "trackCoverSelected": "Ausgewähltes Cover", - "@trackCoverSelected": { - "description": "Label for the newly selected cover preview" - }, - "downloadDeduplicationEnabled": "Bereits heruntergeladene Titel werden übersprungen", - "@downloadDeduplicationEnabled": { - "description": "Subtitle when deduplication is on" - }, - "homeEmptyTitle": "Noch keine Suchanbieter", - "@homeEmptyTitle": { - "description": "Title shown on home when no providers are available yet" - }, - "@extensionHealthUnknown": { - "description": "Extension service health status - unknown" - }, - "storeInstalled": "Installiert", - "@storeInstalled": { - "description": "Already installed badge" - }, - "trackReplayGainSuccess": "ReplayGain tags added", - "@trackReplayGainSuccess": { - "description": "Snackbar message after ReplayGain tags written for a single track" - }, - "libraryShowDuplicateIndicatorSubtitle": "Bei der Suche nach vorhandenen Titeln anzeigen", - "@collectionPlaylistRenamed": { - "description": "Snackbar after renaming playlist" - }, - "@trackConvertResamplerSoxr": { - "description": "Lossless conversion SoX resampler option" - }, - "@dialogUnsavedChanges": { - "description": "Dialog message - unsaved changes" - }, - "dialogDownload": "Herunterladen", - "@dialogDownload": { - "description": "Confirm button in Download All dialog" - }, - "trackLyricsLoadFailed": "Fehler beim Laden der Lyrics", - "@backupContentsTitle": { - "description": "Header above the list summarizing what the backup contains" - }, - "@safMigrationTitle": { - "description": "Title of SAF migration dialog" - }, - "@trackReEnrichFieldLyrics": { - "description": "Checkbox label for lyrics field in re-enrich" - }, - "setupPermissionDeniedMessage": "Berechtigung verweigert. Bitte erteile alle Berechtigungen um fortzufahren.", - "@setupPermissionDeniedMessage": { - "description": "Error when permission denied" - }, - "settingsDownloadNetworkWifiOnly": "Nur WLAN", - "@settingsDownloadNetworkWifiOnly": { - "description": "Network option - only use WiFi" - }, - "@backupIncludeSecrets": { - "description": "Toggle to include secret extension settings (tokens, API keys) in the backup" - }, - "@libraryFilterMetadataMissingAlbumArtist": { - "description": "Filter option - items missing album artist" - }, - "@extensionHealthServiceUnknown": { - "description": "Tooltip for unknown extension service health" + "snackbarExtensionInstalled": "{extensionName} installiert.", + "@snackbarExtensionInstalled": { + "description": "Snackbar - extension installed successfully", + "placeholders": { + "extensionName": { + "type": "String" + } + } }, "snackbarExtensionUpdated": "{extensionName} aktualisiert.", "@snackbarExtensionUpdated": { @@ -2999,114 +1055,365 @@ } } }, - "homeEmptySubtitle": "Installiere eine Erweiterung um fortzufahren.", - "@settingsTitle": { - "description": "Settings screen title" + "snackbarFailedToInstall": "Erweiterung konnte nicht installiert werden", + "@snackbarFailedToInstall": { + "description": "Snackbar - extension install error" }, - "@libraryFilterMetadataIncorrectIsrcFormat": { - "description": "Filter option - items with an invalid ISRC format" + "snackbarFailedToUpdate": "Erweiterung konnte nicht aktualisiert werden", + "@snackbarFailedToUpdate": { + "description": "Snackbar - extension update error" }, - "@notifLibraryScanComplete": { - "description": "Notification title when library scan finishes" + "errorRateLimited": "Anfragelimit überschritten", + "@errorRateLimited": { + "description": "Error title - too many requests" }, - "@logIssueIspBlockingLabel": { - "description": "Diagnostic badge label when ISP blocking is detected" + "errorRateLimitedMessage": "Zu viele Anfragen. Bitte warte einen Moment, bevor du es erneut suchst.", + "@errorRateLimitedMessage": { + "description": "Error message - rate limit explanation" }, - "tutorialDownloadTitle": "Musik wird heruntergeladen", - "@tutorialDownloadTitle": { - "description": "Tutorial download page title" + "errorNoTracksFound": "Keine Titel gefunden", + "@errorNoTracksFound": { + "description": "Error - search returned no results" }, - "unknownTitle": "Unknown title", - "@unknownTitle": { - "description": "Fallback track title when metadata is missing" + "searchEmptyResultSubtitle": "Try another keyword", + "@searchEmptyResultSubtitle": { + "description": "Subtitle shown under the empty search result state on the home screen" }, - "navLibrary": "Bibliothek", - "@navLibrary": { - "description": "Bottom navigation - Library tab" + "errorUrlNotRecognized": "Link wurde nicht erkannt", + "@errorUrlNotRecognized": { + "description": "Error title - URL not handled by any extension or service" }, - "@snackbarAlreadyDownloaded": { - "description": "Snackbar - track already exists", + "errorUrlNotRecognizedMessage": "Dieser Link ist inkompatibel. Prüfe die URL und stelle sicher, dass eine kompatible Erweiterung installiert ist.", + "@errorUrlNotRecognizedMessage": { + "description": "Error message - URL not recognized explanation" + }, + "errorUrlFetchFailed": "Laden fehlgeschlagen. Bitte erneut versuchen.", + "@errorUrlFetchFailed": { + "description": "Error message - generic URL fetch failure" + }, + "errorMissingExtensionSource": "Kann {item} nicht laden wegen fehlender Erweiterungsquelle", + "@errorMissingExtensionSource": { + "description": "Error - extension source not available", "placeholders": { - "trackName": { + "item": { "type": "String" } } }, - "editMetadataSelectAll": "Alle", - "@editMetadataSelectAll": { - "description": "Button to select all fields for auto-fill" + "actionPause": "Pause", + "@actionPause": { + "description": "Action button - pause download" }, - "storeEmptyNoExtensions": "Keine Erweiterung verfügbar", - "@storeEmptyNoExtensions": { - "description": "Message when store has no extensions" + "actionResume": "Fortfahren", + "@actionResume": { + "description": "Action button - resume download" }, - "optionsUpdateChannelWarning": "Vorschau kann Fehler oder unvollständige Funktionen enthalten", - "@optionsUpdateChannelWarning": { - "description": "Warning about preview channel" + "actionCancel": "Abbrechen", + "@actionCancel": { + "description": "Action button - cancel operation" }, - "@collectionPlaylistNameHint": { - "description": "Hint text for playlist name input" + "actionSelectAll": "Alles Auswählen", + "@actionSelectAll": { + "description": "Action button - select all items" }, - "notifLibraryScanComplete": "Bibliotheksscan abgeschlossen", - "editMetadataFieldIsrc": "ISRC", - "@editMetadataFieldIsrc": { - "description": "Chip label for ISRC field in auto-fill selector" + "actionDeselect": "Alle abwählen", + "@actionDeselect": { + "description": "Action button - deselect all" }, - "@libraryFolderHint": { - "description": "Placeholder when no folder selected" - }, - "homeSearchHintDefault": "Unterstützte URL einfügen oder suchen...", - "@homeSearchHintDefault": { - "description": "Default placeholder for the main search field on Home" - }, - "extensionsNoExtensionsSubtitle": "Installiere .spotiflac-ext Dateien um neue Anbieter hinzuzufügen", - "@extensionsNoExtensionsSubtitle": { - "description": "Empty state subtitle" - }, - "@extensionEnterValue": { - "description": "Hint for editing an extension setting value" - }, - "backupRestoreConfirmTitle": "Restore this backup?", - "@backupRestoreConfirmTitle": { - "description": "Confirmation dialog title before restoring a backup" - }, - "@libraryScanSelectFolderFirst": { - "description": "Message when trying to scan without folder" - }, - "@qualityHiResFlac": { - "description": "Quality option - high resolution FLAC" - }, - "aboutSpecialThanks": "Besonderer Dank", - "@aboutSpecialThanks": { - "description": "Section for special thanks" - }, - "storeInstall": "Installieren", - "@storeInstall": { - "description": "Install extension button" - }, - "@collectionWishlistEmptySubtitle": { - "description": "Wishlist empty state subtitle" - }, - "historyFilterAlbums": "Alben", - "extensionCustomUrlHandlingSubtitle": "Diese Erweiterung kann Links von diesen Seiten benutzen", - "@extensionCustomUrlHandlingSubtitle": { - "description": "Extension detail subtitle for custom URL handling" - }, - "filenameShowAdvancedTagsDescription": "Formatierte Tags für Track-Padding und Datumsmuster aktivieren", - "@aboutReportIssue": { - "description": "Link to report bugs" - }, - "@folderOrganizationByPlaylist": { - "description": "Folder option - playlist folders" - }, - "@dateWeeksAgo": { - "description": "Relative date - weeks ago", + "selectionSelected": "{count} ausgewählt", + "@selectionSelected": { + "description": "Selection count indicator", "placeholders": { "count": { "type": "int" } } }, + "selectionAllSelected": "Alle Titel sind ausgewählt", + "@selectionAllSelected": { + "description": "Status - all items selected" + }, + "selectionSelectToDelete": "Titel zum Löschen wählen", + "@selectionSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "progressFetchingMetadata": "Lade Metadaten... {current}/{total}", + "@progressFetchingMetadata": { + "description": "Progress indicator - loading track info", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "progressReadingCsv": "CSV wird gelesen...", + "@progressReadingCsv": { + "description": "Progress indicator - parsing CSV file" + }, + "searchSongs": "Titel", + "@searchSongs": { + "description": "Search result category - songs" + }, + "searchArtists": "Künstler", + "@searchArtists": { + "description": "Search result category - artists" + }, + "searchAlbums": "Alben", + "@searchAlbums": { + "description": "Search result category - albums" + }, + "searchPlaylists": "Playlists", + "@searchPlaylists": { + "description": "Search result category - playlists" + }, + "searchSortTitle": "Ergebnisse sortieren", + "@searchSortTitle": { + "description": "Bottom sheet title for search sort options" + }, + "searchSortDefault": "Standard", + "@searchSortDefault": { + "description": "Sort option - default API order" + }, + "searchSortTitleAZ": "Titel (A-Z)", + "@searchSortTitleAZ": { + "description": "Sort option - title ascending" + }, + "searchSortTitleZA": "Titel (Z-A)", + "@searchSortTitleZA": { + "description": "Sort option - title descending" + }, + "searchSortArtistAZ": "Künstler (A-Z)", + "@searchSortArtistAZ": { + "description": "Sort option - artist ascending" + }, + "searchSortArtistZA": "Künstler (Z-A)", + "@searchSortArtistZA": { + "description": "Sort option - artist descending" + }, + "searchSortDurationShort": "Dauer (kürzeste)", + "@searchSortDurationShort": { + "description": "Sort option - shortest duration first" + }, + "searchSortDurationLong": "Dauer (längste)", + "@searchSortDurationLong": { + "description": "Sort option - longest duration first" + }, + "searchSortDateOldest": "Veröffentlichungsdatum (älteste)", + "@searchSortDateOldest": { + "description": "Sort option - oldest release first" + }, + "searchSortDateNewest": "Veröffentlichungsdatum (Neueste)", + "@searchSortDateNewest": { + "description": "Sort option - newest release first" + }, + "tooltipPlay": "Abspielen", + "@tooltipPlay": { + "description": "Tooltip - play button" + }, + "filenameFormat": "Dateinamenformat", + "@filenameFormat": { + "description": "Setting title - filename pattern" + }, + "filenameShowAdvancedTags": "Erweiterte Tags anzeigen", + "@filenameShowAdvancedTags": { + "description": "Toggle label for showing advanced filename tags" + }, + "filenameShowAdvancedTagsDescription": "Formatierte Tags für Track-Padding und Datumsmuster aktivieren", + "@filenameShowAdvancedTagsDescription": { + "description": "Description for advanced filename tag toggle" + }, + "folderOrganizationNone": "Keine Organisation", + "@folderOrganizationNone": { + "description": "Folder option - flat structure" + }, + "folderOrganizationByPlaylist": "Nach Playlist", + "@folderOrganizationByPlaylist": { + "description": "Folder option - playlist folders" + }, + "folderOrganizationByPlaylistSubtitle": "Ordner für jede Playlist trennen", + "@folderOrganizationByPlaylistSubtitle": { + "description": "Subtitle for playlist folder option" + }, + "folderOrganizationByArtist": "Nach Künstler", + "@folderOrganizationByArtist": { + "description": "Folder option - artist folders" + }, + "folderOrganizationByAlbum": "Nach Album", + "@folderOrganizationByAlbum": { + "description": "Folder option - album folders" + }, + "folderOrganizationByArtistAlbum": "Künstler/Album", + "@folderOrganizationByArtistAlbum": { + "description": "Folder option - nested folders" + }, + "folderOrganizationDescription": "Heruntergeladene Dateien in Ordner organisieren", + "@folderOrganizationDescription": { + "description": "Folder organization sheet description" + }, + "folderOrganizationNoneSubtitle": "Alle Dateien im Download-Ordner", + "@folderOrganizationNoneSubtitle": { + "description": "Subtitle for no organization option" + }, + "folderOrganizationByArtistSubtitle": "Trenne Ordner nach Künstler", + "@folderOrganizationByArtistSubtitle": { + "description": "Subtitle for artist folder option" + }, + "folderOrganizationByAlbumSubtitle": "Trenne Ordner nach Album", + "@folderOrganizationByAlbumSubtitle": { + "description": "Subtitle for album folder option" + }, + "folderOrganizationByArtistAlbumSubtitle": "Verschachtelte Ordner für Künstler und Album", + "@folderOrganizationByArtistAlbumSubtitle": { + "description": "Subtitle for nested folder option" + }, + "updateAvailable": "Update verfügbar", + "@updateAvailable": { + "description": "Update dialog title" + }, + "updateLater": "Später", + "@updateLater": { + "description": "Update button - dismiss" + }, + "updateStartingDownload": "Download wird gestartet...", + "@updateStartingDownload": { + "description": "Update status - initializing" + }, + "updateDownloadFailed": "Download fehlgeschlagen", + "@updateDownloadFailed": { + "description": "Update error title" + }, + "updateFailedMessage": "Das Update konnte nicht heruntergeladen werden", + "@updateFailedMessage": { + "description": "Update error message" + }, + "updateNewVersionReady": "Eine neue Version ist verfügbar", + "@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": "Aktuell", + "@updateCurrent": { + "description": "Label for current version" + }, + "updateNew": "Neu", + "@updateNew": { + "description": "Label for new version" + }, + "updateDownloading": "Wird heruntergeladen...", + "@updateDownloading": { + "description": "Update status - downloading" + }, + "updateWhatsNew": "Was ist neu", + "@updateWhatsNew": { + "description": "Changelog section title" + }, + "updateDownloadInstall": "Herunterladen & Installieren", + "@updateDownloadInstall": { + "description": "Update button - download and install" + }, + "updateDontRemind": "Nicht erinnern", + "@updateDontRemind": { + "description": "Update button - skip this version" + }, + "providerPriorityTitle": "Anbieterpriorität", + "@providerPriorityTitle": { + "description": "Provider priority page title" + }, + "providerPriorityDescription": "Ziehen, um Download-Anbieter neu zu ordnen. Die App versucht Anbieter von oben nach unten, wenn Titel heruntergeladen werden.", + "@providerPriorityDescription": { + "description": "Provider priority page description" + }, + "providerPriorityInfo": "Wenn kein Titel bei dem ersten Anbieter nicht verfügbar ist, wird die App automatisch den nächsten versuchen.", + "@providerPriorityInfo": { + "description": "Info tip about fallback behavior" + }, + "providerPriorityFallbackExtensionsDescription": "Wähle aus, welche installierten Download-Erweiterungen beim automatischen Fallback verwendet werden sollen.", + "@providerPriorityFallbackExtensionsDescription": { + "description": "Section description for extension fallback selection" + }, + "providerPriorityFallbackExtensionsHint": "Hier werden nur aktivierte Erweiterungen mit Download-Provider-Funktion aufgelistet.", + "@providerPriorityFallbackExtensionsHint": { + "description": "Hint below the extension fallback selection list" + }, + "providerExtension": "Erweiterung", + "@providerExtension": { + "description": "Label for extension-provided providers" + }, + "metadataProviderPriorityTitle": "Metadaten Priorität", + "@metadataProviderPriorityTitle": { + "description": "Metadata priority page title" + }, + "metadataProviderPriorityDescription": "Ziehe, um Metadatenanbieter neu zu ordnen. Die App versucht Anbieter von oben nach unten, wenn sie nach Tracks suchen und Metadaten abrufen.", + "@metadataProviderPriorityDescription": { + "description": "Metadata priority page description" + }, + "metadataProviderPriorityInfo": "Deezer hat keine Limits und wird als primäre empfohlen. Spotify kann nach vielen Anfragen begrenzen.", + "@metadataProviderPriorityInfo": { + "description": "Info tip about rate limits" + }, + "logTitle": "Protokolle", + "@logTitle": { + "description": "Logs screen title" + }, + "logCopied": "Logs in Zwischenablage kopiert", + "@logCopied": { + "description": "Snackbar - logs copied" + }, + "logSearchHint": "Logs durchsuchen ...", + "@logSearchHint": { + "description": "Log search placeholder" + }, + "logFilterLevel": "Stufe", + "@logFilterLevel": { + "description": "Filter by log level" + }, + "logFilterSection": "Filter", + "@logFilterSection": { + "description": "Filter section title" + }, + "logShareLogs": "Logs teilen", + "@logShareLogs": { + "description": "Share button tooltip" + }, + "logClearLogs": "Logs löschen", + "@logClearLogs": { + "description": "Clear button tooltip" + }, + "logClearLogsTitle": "Logs leeren", + "@logClearLogsTitle": { + "description": "Clear logs dialog title" + }, + "logClearLogsMessage": "Bist du dir sicher, dass Sie alle Logs löschen möchtest?", + "@logClearLogsMessage": { + "description": "Clear logs confirmation message" + }, + "logFilterBySeverity": "Logs nach Schweregrad filtern", + "@logFilterBySeverity": { + "description": "Filter dialog title" + }, + "logNoLogsYet": "Noch keine Logs", + "@logNoLogsYet": { + "description": "Empty state title" + }, + "logNoLogsYetSubtitle": "Logs werden hier angezeigt, während du die App benutzt", + "@logNoLogsYetSubtitle": { + "description": "Empty state subtitle" + }, "logEntriesFiltered": "Einträge ({count} gefiltert)", "@logEntriesFiltered": { "description": "Log count with filter active", @@ -3116,173 +1423,6 @@ } } }, - "@lyricsModeDescription": { - "description": "Lyrics mode picker description" - }, - "@setupAppDocumentsFolderSubtitle": { - "description": "Subtitle for documents folder" - }, - "storeAddRepoButton": "Repository hinzufügen", - "@storeAddRepoButton": { - "description": "Button to submit a new repository URL" - }, - "@collectionLovedEmptyTitle": { - "description": "Loved empty state title" - }, - "aboutReportIssue": "Problem melden", - "snackbarFailedToWriteStorage": "Fehler beim Zurückschreiben in den Speicher", - "@snackbarFailedToWriteStorage": { - "description": "Snackbar when writing metadata back to file fails" - }, - "errorInvalidFolderSelected": "Ungültiger Ordner ausgewählt", - "allFilesAccessDisabledMessage": "Zugriff auf alle Dateien ist deaktiviert. Die App verwendet nur begrenzten Zugriff auf den Speicher.", - "@allFilesAccessDisabledMessage": { - "description": "Snackbar message when user disables all files access" - }, - "downloadMusixmatchLanguageCode": "Sprach-Code", - "@downloadMusixmatchLanguageCode": { - "description": "Label for Musixmatch language input field" - }, - "dialogUnsavedChanges": "Du hast ungespeicherte Änderungen. Möchtest du sie verwerfen?", - "setupChooseFromFiles": "Aus Dateien auswählen", - "@setupChooseFromFiles": { - "description": "iOS file picker option" - }, - "@collectionFavoriteArtistsEmptySubtitle": { - "description": "Favorite artists empty state subtitle" - }, - "downloadLossy320FormatDesc": "Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.", - "@backupRestoreConfirmButton": { - "description": "Confirm button to proceed with restore" - }, - "@queueEmptyAlbumsSubtitle": { - "description": "Empty state subtitle for album downloads" - }, - "collectionRemovedFromWishlist": "\"{trackName}\" aus der Wunschliste entfernt", - "@collectionRemovedFromWishlist": { - "description": "Snackbar after removing track from wishlist", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "extensionsInstalledSuccess": "Erweiterung erfolgreich installiert", - "progressReadingCsv": "CSV wird gelesen...", - "@progressReadingCsv": { - "description": "Progress indicator - parsing CSV file" - }, - "artistReleases": "Releases", - "@artistReleases": { - "description": "Section header for all artist releases" - }, - "extensionVerificationBrowserTitle": "Verification browser", - "@optionsDefaultSearchTabSubtitle": { - "description": "Subtitle for the preferred default search tab setting" - }, - "optionsArtistTagModeJoinedSubtitle": "Einen Künstler wert wie \"Artist A, Artist B\" für maximale Spieler-Kompatibilität schreiben.", - "downloadLossy320": "Verlustbehaftet 320kbps", - "@downloadLossy320": { - "description": "Quality option label for lossy 320kbps" - }, - "queueFlacAction": "Warteschlange FLAC", - "@queueFlacAction": { - "description": "Action/button label for queueing FLAC redownloads for local tracks" - }, - "@setupDownloadLocationIosMessage": { - "description": "iOS-specific folder info" - }, - "trackConvertOriginal": "Original", - "sectionLyricsProviderOptions": "Anbieter-Optionen", - "nowPlayingTitle": "Jetzt läuft", - "@nowPlayingTitle": { - "description": "Title for the now playing screen" - }, - "@extensionHealthChecksConfigured": { - "description": "Extension service health check count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@cacheClearAll": { - "description": "Button label to clear all caches" - }, - "a11yDeselectTrack": "Titel abwählen", - "@a11yDeselectTrack": { - "description": "Accessibility label for deselecting a track" - }, - "@lyricsProvidersInfoText": { - "description": "Info tip on lyrics provider priority page" - }, - "queueEmptyHistory": "Kein Download-Verlauf", - "dialogClear": "Leeren", - "@dialogClear": { - "description": "Dialog button - clear items" - }, - "allFilesAccessDescription": "Option bei Schreibfehlern bitte aktivieren (erforderlich ab Android 13).", - "@allFilesAccessDescription": { - "description": "Description explaining when to enable all files access" - }, - "trackConvertConfirmTitle": "Konvertierung bestätigen", - "storeCategoryLyrics": "Lyrics", - "@storeCategoryLyrics": { - "description": "Store extension category - lyrics" - }, - "@lyricsProvidersDescription": { - "description": "Description on the lyrics provider priority page" - }, - "tooltipLoveAll": "Alle lieben", - "downloadDirectory": "Download-Ordner", - "@downloadDirectory": { - "description": "Setting - download folder" - }, - "@tutorialExtensionsTip2": { - "description": "Tutorial extensions tip 2" - }, - "libraryFolder": "Bibliotheksordner", - "@metadataProviderPriorityTitle": { - "description": "Metadata priority page title" - }, - "@cleanupOrphanedDownloadsResult": { - "description": "Snackbar after orphan cleanup", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cacheExploreFeedDesc": "Startseiten-Inhalt (neue Releases, Trends). Wird bei einem Neustart aktualisiert.", - "@cacheExploreFeedDesc": { - "description": "Description of what explore feed cache contains" - }, - "a11yOpenTrackByArtist": "Öffne Track {trackName} von {artistName}", - "@a11yOpenTrackByArtist": { - "description": "Accessibility label for opening a track item", - "placeholders": { - "trackName": { - "type": "String" - }, - "artistName": { - "type": "String" - } - } - }, - "announcementUnableToOpenLink": "Unable to open link. Please try again.", - "libraryFilterSortAlbumDesc": "Album (Z-A)", - "@libraryFilterSortAlbumDesc": { - "description": "Sort option - album descending" - }, - "trackConvertBitrate": "Bitrate", - "@trackConvertBitrate": { - "description": "Label for bitrate selection" - }, - "audioAnalysisFileSize": "Größe", - "extensionHealthServiceOnline": "Dienste online", - "@extensionHealthServiceOnline": { - "description": "Tooltip for online extension service" - }, "logEntries": "{count} Einträge", "@logEntries": { "description": "Total log count", @@ -3292,846 +1432,552 @@ } } }, - "trackConvertConfirmMessage": "Konvertieren von {sourceFormat} in {targetFormat} bei {bitrate}?\n\nDie Originaldatei wird nach der Konvertierung gelöscht.", - "@trackConvertConfirmMessage": { - "description": "Confirmation dialog message", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "bitrate": { - "type": "String" - } - } + "channelStable": "Stabil", + "@channelStable": { + "description": "Update channel - stable releases" }, - "@optionsArtistTagModeSplitVorbisSubtitle": { - "description": "Subtitle for split Vorbis artist tag mode" + "channelPreview": "Vorschau", + "@channelPreview": { + "description": "Update channel - beta/preview releases" }, - "folderOrganizationByAlbum": "Nach Album", - "@folderOrganizationByAlbum": { - "description": "Folder option - album folders" + "sectionSearchSource": "Suchquelle", + "@sectionSearchSource": { + "description": "Settings section header" }, - "libraryPlayback": "Playback", - "@storeFilterAll": { - "description": "Repo filter - all extensions" + "sectionDownload": "Herunterladen", + "@sectionDownload": { + "description": "Settings section header" }, - "aboutApp": "App", - "@aboutApp": { - "description": "Section for app info" + "sectionPerformance": "Performance", + "@sectionPerformance": { + "description": "Settings section header" }, - "optionsReplayGainSubtitleOff": "Deaktiviert: keine Lautstärke-Normalisierungs-Tags", - "@optionsReplayGainSubtitleOff": { - "description": "Subtitle when ReplayGain is disabled" + "sectionApp": "App", + "@sectionApp": { + "description": "Settings section header" }, - "@storeRepoDialogTitle": { - "description": "Title of the change/remove repository dialog" + "sectionData": "Daten", + "@sectionData": { + "description": "Settings section header" }, - "settingsLyricsSubtitle": "Einbetten, Modus, Anbieter, Sprachoptionen", - "@settingsLyricsSubtitle": { - "description": "Subtitle for lyrics settings" + "sectionDebug": "Debug", + "@sectionDebug": { + "description": "Settings section header" }, - "logIssueIspBlockingLabel": "ISP BLOCKIERUNG ERKANNT", - "storeFilterIntegration": "Integration", - "@storeFilterIntegration": { - "description": "Repo filter - integrations" + "sectionService": "Anbieter", + "@sectionService": { + "description": "Settings section header" }, - "@lyricsProvidersAtLeastOne": { - "description": "Snackbar when user tries to disable the last enabled provider" - }, - "@appearanceHistoryViewGrid": { - "description": "Grid layout option" - }, - "trackDownloaded": "Heruntergeladen", - "extensionVerificationHelpMessageManual": "SpotiFLAC Mobile could not open the browser automatically. Open this link in your browser, or copy it manually.", - "setupDownloadLocationIosMessage": "Auf iOS werden Downloads im Dokumentenordner der App gespeichert. Du kannst sie über die Datei-App aufrufen.", - "optionsArtistTagModeDescription": "Wähle aus, wie mehrere Künstler in eingebetteten Tags geschrieben sind.", - "@optionsArtistTagModeDescription": { - "description": "Bottom-sheet description for artist tag mode setting" - }, - "@queueRetryAllFailed": { - "description": "Button to retry every failed download in the queue", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@trackConvertDitherTriangularHp": { - "description": "Lossless conversion high-pass triangular dither option" - }, - "@extensionVerificationCopyLink": { - "description": "Button to copy the extension verification URL" - }, - "searchSongs": "Titel", - "@searchSongs": { - "description": "Search result category - songs" - }, - "@appearanceHistoryView": { - "description": "Layout style for history" + "sectionAudioQuality": "Audioqualität", + "@sectionAudioQuality": { + "description": "Settings section header" }, "sectionFileSettings": "Datei-Einstellungen", "@sectionFileSettings": { "description": "Settings section header" }, - "@cancelDownloadTitle": { - "description": "Dialog title when confirming cancellation of an active download" + "sectionLyrics": "Lyrics", + "@sectionLyrics": { + "description": "Settings section header" }, - "@cacheLibraryCover": { - "description": "Cache item title for local library cover art images" + "lyricsMode": "Lyrics-Modus", + "@lyricsMode": { + "description": "Setting - how to save lyrics" }, - "audioAnalysisSpectralCutoff": "Spektralschnitt", - "dialogDelete": "Löschen", - "@dialogDelete": { - "description": "Dialog button - delete item" + "lyricsModeDescription": "Wähle wie Songtexte mit deinen Downloads gespeichert werden", + "@lyricsModeDescription": { + "description": "Lyrics mode picker description" }, - "tutorialLibraryDesc": "Downloaded and locally scanned music is organized in your Library.", - "@tutorialLibraryDesc": { - "description": "Tutorial library page description" + "lyricsModeEmbed": "In Datei einbetten", + "@lyricsModeEmbed": { + "description": "Lyrics mode option - embed in audio file" }, - "@queueDownloadSpeedStatus": { - "description": "Queue status while downloading with speed", - "placeholders": { - "speed": { - "type": "String" - } - } + "lyricsModeEmbedSubtitle": "Lyrics in FLAC Metadaten gespeichert", + "@lyricsModeEmbedSubtitle": { + "description": "Subtitle for embed option" }, - "@extensionsHomeFeedOffSubtitle": { - "description": "Extensions page - subtitle for off home feed option" - }, - "cacheCleanupResult": "Bereinigung: {downloadCount} verwaiste Downloads, {libraryCount} fehlende Bibliothekseinträge", - "@cacheCleanupResult": { - "description": "Snackbar after unused data cleanup", - "placeholders": { - "downloadCount": { - "type": "int" - }, - "libraryCount": { - "type": "int" - } - } - }, - "trackConvertLosslessHint": "Verlustfreie Konvertierung kein Qualitätsverlust", - "@trackConvertLosslessHint": { - "description": "Hint shown when converting between lossless formats" - }, - "collectionRenamePlaylist": "Playlist umbenennen", - "@collectionRenamePlaylist": { - "description": "Action to rename playlist" - }, - "@libraryFilterTitle": { - "description": "Filter bottom sheet title" - }, - "@storageModeAppFolder": { - "description": "Storage mode option - app-managed folder" - }, - "logTotalErrors": "Gesamte Fehler: {count}", - "@logTotalErrors": { - "description": "Total error count in log issue analysis", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@setupStorageRequired": { - "description": "Title when storage permission needed" - }, - "@snackbarMetadataProviderSaved": { - "description": "Snackbar - metadata provider order saved" - }, - "@selectionBatchConvertConfirmTitle": { - "description": "Confirmation dialog title for batch conversion" - }, - "extensionsHomeFeedAutoSubtitle": "Automatisch die besten verfügbaren auswählen", - "@extensionsHomeFeedAutoSubtitle": { - "description": "Extensions page - subtitle for auto home feed option" - }, - "setupLanguageDescription": "Wählen deine bevorzugte Sprache für die App. Dies kann später in den Einstellungen geändert werden.", - "settingsBackupSubtitle": "Move your library, history and settings to a new device", - "@settingsBackupSubtitle": { - "description": "Subtitle for backup and restore settings item" - }, - "recentTypeArtist": "Künstler", - "@recentTypeArtist": { - "description": "Recent access item type - artist" - }, - "collectionPlaylistEmptySubtitle": "Drücke lange + auf einem beliebigen Titel, um ihn hier hinzuzufügen", - "artistCompilations": "Zusammenstellungen", - "@artistCompilations": { - "description": "Section header for compilations" - }, - "snackbarFolderPickerFailed": "Fehler beim Öffnen des Ordners: {error}", - "@snackbarFolderPickerFailed": { - "description": "Snackbar shown when folder picker fails to open", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "@optionsDetailedLoggingOn": { - "description": "Status when logging enabled" - }, - "settingsSaveDownloadHistory": "Save download history", - "@settingsSaveDownloadHistory": { - "description": "Settings switch title for storing completed downloads in history" - }, - "@storeCategoryIntegration": { - "description": "Store extension category - integration" - }, - "a11yOpenItemCount": "Öffne {title}, {count} {count, plural, =1{Item} other{Items}}", - "@a11yOpenItemCount": { - "description": "Accessibility label for opening a grouped item with count", - "placeholders": { - "title": { - "type": "String" - }, - "count": { - "type": "int" - } - } - }, - "trackFileInfo": "Datei-Info", - "@trackFileInfo": { - "description": "Tab title - file information" - }, - "libraryFilterMetadataMissingAlbumArtist": "Fehlender Album-Künstler", - "audioAnalysisNoClipping": "Kein Clipping", - "tutorialSettingsDesc": "Fine-tune downloads, playback, Library behavior, appearance, and storage.", - "@tutorialSettingsDesc": { - "description": "Tutorial settings page description" + "lyricsModeExternal": "Externe .lrc Datei", + "@lyricsModeExternal": { + "description": "Lyrics mode option - separate LRC file" }, "lyricsModeExternalSubtitle": "Separate .lrc Datei für Player wie Samsung Music", "@lyricsModeExternalSubtitle": { "description": "Subtitle for external option" }, - "trackLoadLyrics": "Lade Lyrics", - "@trackLoadLyrics": { - "description": "Action - fetch lyrics" + "lyricsModeBoth": "Beides", + "@lyricsModeBoth": { + "description": "Lyrics mode option - embed and external" }, - "extensionVerificationHelpTitleWaiting": "Verification still waiting", - "@extensionVerificationHelpTitleWaiting": { - "description": "Dialog title when verification is taking longer than expected" + "lyricsModeBothSubtitle": "Lyrics einbetten und als .lrc speichern", + "@lyricsModeBothSubtitle": { + "description": "Subtitle for both option" }, - "libraryFilterReset": "Zurücksetzen", - "@libraryFilterReset": { - "description": "Reset all filters button" - }, - "@downloadAlbumArtistMetadataFull": { - "description": "Status label when album-artist folder filtering uses full metadata" - }, - "storeTitle": "Erweiterungs-Repo", - "@storeTitle": { - "description": "Repo screen title" - }, - "libraryCleared": "Bibliothek geleert", - "@libraryCleared": { - "description": "Snackbar after clearing library" - }, - "queueDownloadCompleted": "Download abgeschlossen", - "@queueDownloadCompleted": { - "description": "Accessibility label for completed download state in queue" - }, - "libraryTitle": "Lokale Bibliothek", - "@libraryTitle": { - "description": "Library settings page title" - }, - "queueAlbumCount": "{count, plural, =1{1 Album} other{{count} Alben}}", - "@queueAlbumCount": { - "description": "Album count label with plural support", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "libraryClearConfirmTitle": "Bibliothek löschen", - "@backupExportSectionTitle": { - "description": "Section title for the export/backup card" - }, - "dialogClearAll": "Alles löschen", - "@dialogClearAll": { - "description": "Dialog title - clear all items" - }, - "tutorialExtensionsDesc": "Extensions add search, download, metadata, lyrics, and other integrations.", - "@tutorialExtensionsDesc": { - "description": "Tutorial extensions page description" - }, - "libraryExternalPlayer": "External player", - "@libraryExternalPlayer": { - "description": "Setting option to use an external music player" - }, - "editMetadataFieldGenre": "Genre", - "@tutorialLibraryTitle": { - "description": "Tutorial library page title" - }, - "folderOrganizationByPlaylist": "Nach Playlist", - "queueTrackCount": "{count, plural, =1{1 Titel} other{{count} Titel}}", - "@searchSortTitle": { - "description": "Bottom sheet title for search sort options" - }, - "editMetadataSelectNone": "Keine", - "@historyFilterSingles": { - "description": "Filter chip - show singles only" - }, - "@setupLanguageTitle": { - "description": "Title for the language selection step in setup" - }, - "trackSaveCoverArt": "Cover speichern", - "@trackSaveCoverArt": { - "description": "Menu action - save album cover art as file" - }, - "@downloadAlbumFolderStructure": { - "description": "Setting - album folder organization" - }, - "lyricsProvidersAtLeastOne": "Mindestens ein Anbieter muss aktiviert bleiben", - "@notifDownloadCompleteCount": { - "description": "Notification title when download is complete, with count", - "placeholders": { - "completed": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "setupUseDefault": "Standard verwenden", - "@setupUseDefault": { - "description": "Button to use default folder" - }, - "logNoLogsYetSubtitle": "Logs werden hier angezeigt, während du die App benutzt", - "@logNoLogsYetSubtitle": { - "description": "Empty state subtitle" - }, - "@dateToday": { - "description": "Relative date - today" - }, - "trackSaveLyricsProgress": "Speichere Lyrics...", - "@trackSaveLyricsProgress": { - "description": "Snackbar while saving lyrics to file" - }, - "trackCoverSaved": "Cover in {fileName} gespeichert", - "@trackCoverSaved": { - "description": "Snackbar after cover art saved", - "placeholders": { - "fileName": { - "type": "String" - } - } - }, - "trackReEnrichFieldLyrics": "Lyrics", - "@audioAnalysisRescan": { - "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" - }, - "@downloadNeteaseIncludeRomanizationEnabled": { - "description": "Subtitle when Netease romanization is on" - }, - "dialogDisableAndClear": "Turn off and clear", - "extensionHealthChecksConfigured": "{count} {count, plural, =1{Prüfung} other{Prüfungen}} konfiguriert", - "cleanupOrphanedDownloadsSubtitle": "Verlaufseinträge für Dateien löschen, die nicht mehr existieren", - "@notifLibraryScanProgressWithTotal": { - "description": "Notification body for library scan progress when total is known", - "placeholders": { - "scanned": { - "type": "int" - }, - "total": { - "type": "int" - }, - "percentage": { - "type": "int" - } - } - }, - "@extensionDetailsTags": { - "description": "Section title for extension tags" - }, - "@albumFolderAlbumOnlySubtitle": { - "description": "Folder structure example" - }, - "@audioAnalysisAnalyzing": { - "description": "Loading text while analyzing audio" - }, - "@settingsDonate": { - "description": "Settings menu item - donate page" - }, - "@collectionPlaylistNameRequired": { - "description": "Validation error for empty playlist name" - }, - "@backupImportSectionDescription": { - "description": "Description for the restore action" - }, - "storeFilterLyrics": "Lyrics", - "libraryAutoScan": "Auto-Scan", - "@libraryAutoScan": { - "description": "Setting for automatic library scanning" - }, - "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" - }, - "setupStorageRequired": "Speicherzugriff erforderlich", - "@notifLibraryScanErrors": { - "description": "Library scan complete suffix - error count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "appearanceHistoryViewGrid": "Raster", - "trackConvertConverting": "Konvertiere Audio...", - "@trackConvertConverting": { - "description": "Snackbar while converting" - }, - "@setupUseDefaultFolder": { - "description": "Dialog title for default folder" - }, - "optionsArtistTagModeSplitVorbisSubtitle": "Schreibe einen Künstler Tag pro Künstler für FLAC und Opus; MP3 und M4A bleiben beigetreten.", - "snackbarPlayingNext": "Als nächstes", - "@snackbarPlayingNext": { - "description": "Snackbar when a track is inserted as the next queue item" - }, - "optionsDefaultSearchTabSubtitle": "Wähle aus, welcher Tab zuerst für neue Suchergebnisse geöffnet wird.", - "@editMetadataAutoFillFetch": { - "description": "Button label to fetch online metadata and fill selected fields" - }, - "tutorialSearchDesc": "Search with your selected extension or paste a supported music link.", - "@sectionService": { + "sectionColor": "Farbe", + "@sectionColor": { "description": "Settings section header" }, - "notifUpdateProgress": "{received} / {total} MB • {percentage}%", - "@discographyDownloadSelected": { - "description": "Button - download selected albums" + "sectionTheme": "Design", + "@sectionTheme": { + "description": "Settings section header" }, - "cacheClearAllConfirmMessage": "Dadurch werden alle Cache-Kategorien auf dieser Seite gelöscht. Heruntergeladene Musikdateien werden nicht gelöscht.", - "@cacheClearAllConfirmMessage": { - "description": "Dialog message before clearing all caches" + "sectionLayout": "Layout", + "@sectionLayout": { + "description": "Settings section header" }, - "extensionsHomeFeedProvider": "Home Feed Anbieter", - "@extensionsHomeFeedProvider": { - "description": "Extensions page - label for home feed provider selector" + "sectionLanguage": "Sprache", + "@sectionLanguage": { + "description": "Settings section header for language" }, - "@cacheExploreFeed": { - "description": "Cache item title for explore home feed cache" + "appearanceLanguage": "App Sprache", + "@appearanceLanguage": { + "description": "Language setting title" }, - "@audioAnalysisDynamicRange": { - "description": "Dynamic range metric label" + "settingsAppearanceSubtitle": "Design, Farben, Anzeige", + "@settingsAppearanceSubtitle": { + "description": "Appearance settings description" }, - "unknownAlbum": "Unbekanntes Album", - "trackCoverCurrent": "Aktuelles Cover", - "downloadSongLinkRegionDesc": "Region, die beim Auflösen von Titellinks über SongLink verwendet wird. Wähle das Land, in dem der Streaming-Dienste verfügbar sind.", - "downloadPrimaryArtistOnlyOff": "Primary only: Off", - "dialogDone": "Fertig", - "@dialogDone": { - "description": "Dialog button - action completed" + "settingsDownloadSubtitle": "Anbieter, Qualität, Rückfall", + "@settingsDownloadSubtitle": { + "description": "Download settings description" }, - "storeRepoUrlLabel": "Repository-URL", - "downloadSelectServiceToEnable": "Select a provider with quality options to enable this option", - "@logIssueRateLimitedSuggestion": { - "description": "Diagnostic badge suggestion for rate limiting" + "settingsExtensionsSubtitle": "Download-Anbieter verwalten", + "@settingsExtensionsSubtitle": { + "description": "Extensions settings description" }, - "libraryScanProgress": "{progress}% von {total} Dateien", - "@libraryScanProgress": { - "description": "Scan progress display", + "settingsLogsSubtitle": "App-Logs zum Debuggen anzeigen", + "@settingsLogsSubtitle": { + "description": "Logs settings description" + }, + "loadingSharedLink": "Link wird geladen...", + "@loadingSharedLink": { + "description": "Status when opening shared URL" + }, + "pressBackAgainToExit": "Drücke wieder \"zurück\" um die App zu beenden", + "@pressBackAgainToExit": { + "description": "Exit confirmation message" + }, + "downloadAllCount": "Alle {count} Titel herunterladen", + "@downloadAllCount": { + "description": "Download all button with count", "placeholders": { - "progress": { - "type": "String" - }, - "total": { + "count": { "type": "int" } } }, - "collectionLovedEmptyTitle": "Lieblingssongs sind leer", - "tutorialExtensionsTitle": "Erweiterungen", - "@tutorialExtensionsTitle": { - "description": "Tutorial extensions page title" - }, - "searchSortDurationShort": "Dauer (kürzeste)", - "@searchSortDurationShort": { - "description": "Sort option - shortest duration first" + "tracksCount": "{count, plural, =1{1 Titel} other{{count} Titel}}", + "@tracksCount": { + "description": "Track count display", + "placeholders": { + "count": { + "type": "int" + } + } }, "trackCopyFilePath": "Dateipfad kopieren", "@trackCopyFilePath": { "description": "Action - copy file path" }, - "albumFolderArtistAlbumFlatSubtitle": "Künstler/Album/ Und Künstler/Lied.flac", - "@trackConvertResampler": { - "description": "Section label for lossless conversion resampler options" + "trackRemoveFromDevice": "Vom Gerät entfernen", + "@trackRemoveFromDevice": { + "description": "Action - delete downloaded file" }, - "editMetadataFieldTrackNum": "Titel #", - "@editMetadataFieldTrackNum": { - "description": "Chip label for track number field in auto-fill selector" + "trackLoadLyrics": "Lade Lyrics", + "@trackLoadLyrics": { + "description": "Action - fetch lyrics" }, - "snackbarFailedToUpdate": "Erweiterung konnte nicht aktualisiert werden", - "@snackbarFailedToUpdate": { - "description": "Snackbar - extension update error" + "trackMetadata": "Metadaten", + "@trackMetadata": { + "description": "Tab title - track metadata" }, - "notifAlreadyInLibrary": "Bereits in der Bibliothek", - "@notifAlreadyInLibrary": { - "description": "Notification title when track is already in library" + "trackFileInfo": "Datei-Info", + "@trackFileInfo": { + "description": "Tab title - file information" }, - "collectionPlaylistNameHint": "Playlist-Name", - "extensionVerificationCopyLink": "Copy link", - "@replayGainBatchAnalyzing": { - "description": "Progress dialog title while batch scanning ReplayGain" + "trackLyrics": "Lyrics", + "@trackLyrics": { + "description": "Tab title - lyrics" + }, + "trackFileNotFound": "Datei nicht gefunden", + "@trackFileNotFound": { + "description": "Error - file doesn't exist" + }, + "trackOpenInDeezer": "In Deezer öffnen", + "@trackOpenInDeezer": { + "description": "Action - open track in Deezer app" + }, + "trackOpenInSpotify": "In Spotify öffnen", + "@trackOpenInSpotify": { + "description": "Action - open track in Spotify app" + }, + "trackTrackName": "Name des Titels", + "@trackTrackName": { + "description": "Metadata label - track title" + }, + "trackArtist": "Künstler", + "@trackArtist": { + "description": "Metadata label - artist name" + }, + "trackAlbumArtist": "Album Künstler", + "@trackAlbumArtist": { + "description": "Metadata label - album artist" + }, + "trackAlbum": "Album", + "@trackAlbum": { + "description": "Metadata label - album name" + }, + "trackTrackNumber": "Titelnummer", + "@trackTrackNumber": { + "description": "Metadata label - track number" + }, + "trackDiscNumber": "CD-Nummer", + "@trackDiscNumber": { + "description": "Metadata label - disc number" + }, + "trackDuration": "Länge", + "@trackDuration": { + "description": "Metadata label - track length" + }, + "trackAudioQuality": "Audioqualität", + "@trackAudioQuality": { + "description": "Metadata label - audio quality" + }, + "trackReplayGainTrackGain": "ReplayGain Track Gain", + "@trackReplayGainTrackGain": { + "description": "Metadata label - ReplayGain track gain" + }, + "trackReplayGainTrackPeak": "ReplayGain Track Peak", + "@trackReplayGainTrackPeak": { + "description": "Metadata label - ReplayGain track peak" + }, + "trackReplayGainAlbumGain": "ReplayGain Album Gain", + "@trackReplayGainAlbumGain": { + "description": "Metadata label - ReplayGain album gain" + }, + "trackReplayGainAlbumPeak": "ReplayGain Album Peak", + "@trackReplayGainAlbumPeak": { + "description": "Metadata label - ReplayGain album peak" + }, + "libraryQualityLabelFileFormat": "File format", + "@libraryQualityLabelFileFormat": { + "description": "Library audio quality label mode that shows the detected file format" + }, + "trackReleaseDate": "Erscheinungsdatum", + "@trackReleaseDate": { + "description": "Metadata label - release date" + }, + "trackGenre": "Genre", + "@trackGenre": { + "description": "Metadata label - music genre" + }, + "trackLabel": "Label", + "@trackLabel": { + "description": "Metadata label - record label" + }, + "trackCopyright": "Urheberrecht", + "@trackCopyright": { + "description": "Metadata label - copyright information" + }, + "trackDownloaded": "Heruntergeladen", + "@trackDownloaded": { + "description": "Metadata label - download date" + }, + "trackCopyLyrics": "Lyrics kopieren", + "@trackCopyLyrics": { + "description": "Action - copy lyrics to clipboard" + }, + "trackLyricsSource": "Quelle: {source}", + "@trackLyricsSource": { + "description": "Label showing the lyrics source/provider", + "placeholders": { + "source": { + "type": "String" + } + } + }, + "trackLyricsNotAvailable": "Lyrics sind für diesen Titel nicht verfügbar", + "@trackLyricsNotAvailable": { + "description": "Message when lyrics not found" + }, + "trackLyricsNotInFile": "Keine Lyrics in dieser Datei gefunden", + "@trackLyricsNotInFile": { + "description": "Message when no embedded lyrics in audio file" + }, + "trackFetchOnlineLyrics": "Online abrufen", + "@trackFetchOnlineLyrics": { + "description": "Action - fetch lyrics from online providers" + }, + "trackLyricsTimeout": "Anfrage Timeout. Versuche es später erneut.", + "@trackLyricsTimeout": { + "description": "Message when lyrics request times out" + }, + "trackLyricsLoadFailed": "Fehler beim Laden der Lyrics", + "@trackLyricsLoadFailed": { + "description": "Message when lyrics loading fails" + }, + "trackEmbedLyrics": "Lyrics einbetten", + "@trackEmbedLyrics": { + "description": "Action - embed lyrics into audio file" + }, + "trackLyricsEmbedded": "Lyrics erfolgreich eingebettet", + "@trackLyricsEmbedded": { + "description": "Snackbar - lyrics saved to file" + }, + "trackInstrumental": "Instrumentalspur", + "@trackInstrumental": { + "description": "Message when track is instrumental (no lyrics)" + }, + "trackCopiedToClipboard": "In Zwischenablage kopiert", + "@trackCopiedToClipboard": { + "description": "Snackbar - content copied" + }, + "trackDeleteConfirmTitle": "Vom Gerät entfernen?", + "@trackDeleteConfirmTitle": { + "description": "Delete confirmation title" + }, + "trackDeleteConfirmMessage": "Dies wird die heruntergeladene Datei dauerhaft löschen und sie aus deinem Verlauf entfernen.", + "@trackDeleteConfirmMessage": { + "description": "Delete confirmation message" + }, + "dateToday": "Heute", + "@dateToday": { + "description": "Relative date - today" + }, + "dateYesterday": "Gestern", + "@dateYesterday": { + "description": "Relative date - yesterday" + }, + "dateDaysAgo": "Vor {count} Tagen", + "@dateDaysAgo": { + "description": "Relative date - days ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dateWeeksAgo": "Vor {count} Wochen", + "@dateWeeksAgo": { + "description": "Relative date - weeks ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dateMonthsAgo": "Vor {count} Monaten", + "@dateMonthsAgo": { + "description": "Relative date - months ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "storeFilterAll": "Alle", + "@storeFilterAll": { + "description": "Repo filter - all extensions" + }, + "storeFilterMetadata": "Metadaten", + "@storeFilterMetadata": { + "description": "Repo filter - metadata providers" + }, + "storeFilterDownload": "Herunterladen", + "@storeFilterDownload": { + "description": "Repo filter - download providers" + }, + "storeFilterUtility": "Utility", + "@storeFilterUtility": { + "description": "Repo filter - utility extensions" + }, + "storeFilterLyrics": "Lyrics", + "@storeFilterLyrics": { + "description": "Repo filter - lyrics providers" + }, + "storeFilterIntegration": "Integration", + "@storeFilterIntegration": { + "description": "Repo filter - integrations" + }, + "storeClearFilters": "Filter entfernen", + "@storeClearFilters": { + "description": "Button to clear all filters" + }, + "storeAddRepoTitle": "Erweiterungs-Repository hinzufügen", + "@storeAddRepoTitle": { + "description": "Store setup screen - heading when no repo is configured" + }, + "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": { + "description": "Label for the repository URL input field" + }, + "storeRepoUrlHint": "https://github.com/user/repo", + "@storeRepoUrlHint": { + "description": "Hint/placeholder for the repository URL input field" + }, + "storeAddRepoButton": "Repository hinzufügen", + "@storeAddRepoButton": { + "description": "Button to submit a new repository URL" + }, + "storeChangeRepoTooltip": "Repository ändern", + "@storeChangeRepoTooltip": { + "description": "Tooltip for the change-repository icon button in the app bar" + }, + "storeRepoDialogTitle": "Erweiterungs-Repository", + "@storeRepoDialogTitle": { + "description": "Title of the change/remove repository dialog" + }, + "storeRepoDialogCurrent": "Aktuelles Repository:", + "@storeRepoDialogCurrent": { + "description": "Label shown above the current repository URL in the dialog" + }, + "storeNewRepoUrlLabel": "Neue Repository-URL", + "@storeNewRepoUrlLabel": { + "description": "Label for the new repository URL field inside the dialog" + }, + "storeLoadError": "Fehler beim Laden der Repository", + "@storeLoadError": { + "description": "Error heading when the store cannot be loaded" + }, + "storeEmptyNoExtensions": "Keine Erweiterung verfügbar", + "@storeEmptyNoExtensions": { + "description": "Message when store has no extensions" + }, + "storeEmptyNoResults": "Keine Erweiterungen gefunden", + "@storeEmptyNoResults": { + "description": "Message when search/filter returns no results" }, - "setupLanguageTitle": "Sprache auswählen", "extensionId": "ID", "@extensionId": { "description": "Extension detail - unique ID" }, - "regionCountryBR": "Brazil", - "@updateNewVersionReady": { - "description": "Update subtitle" + "extensionError": "Fehler", + "@extensionError": { + "description": "Extension detail - error message" }, - "@queueDownloadedFileMissing": { - "description": "Accessibility label when a downloaded file is missing from disk" - }, - "@lyricsMode": { - "description": "Setting - how to save lyrics" - }, - "@settingsAppearance": { - "description": "Settings section - visual customization" - }, - "@setupStorageAccessMessageAndroid11": { - "description": "Android 11+ specific explanation" - }, - "@tutorialLibraryTip3": { - "description": "Tutorial library tip 3" - }, - "@downloadAppleQqMultiPersonDisabled": { - "description": "Subtitle when multi-person lyrics is off" - }, - "libraryStorageAccessMessage": "SpotiFLAC benötigt Speicherzugriff, um deine Musikbibliothek zu scannen. Bitte erteile die Berechtigung in den Einstellungen.", - "@libraryStorageAccessMessage": { - "description": "Dialog message for storage permission" - }, - "@tutorialLibraryTip1": { - "description": "Tutorial library tip 1" - }, - "dialogRemoveExtensionMessage": "Bist du sicher, dass du diese Erweiterung entfernen möchtest? Diese Aktion kann nicht rückgängig gemacht werden.", - "@dialogRemoveExtensionMessage": { - "description": "Dialog message - uninstall confirmation" - }, - "setupDownloadLocationTitle": "Speicherort", - "@setupDownloadLocationTitle": { - "description": "Download location dialog title" - }, - "downloadNetworkCompatibilityModeEnabled": "Legacy-HTTP-Endpunkte erlaubt; TLS-Prüfung bleibt aktiviert", - "@downloadNetworkCompatibilityModeEnabled": { - "description": "Subtitle when network compatibility mode is on" - }, - "@audioAnalysisBitDepth": { - "description": "Bit depth metric label" - }, - "trackOptionAddToLoved": "Zu Lieblingssongs hinzufügen", - "@trackOptionAddToLoved": { - "description": "Bottom sheet action label - add track to loved folder" - }, - "cacheAppDirectory": "App-Cache Ordner", - "@cacheAppDirectory": { - "description": "Cache item title for app cache directory" - }, - "lyricsProviderMusixmatchDesc": "Größte Lyrics-Datenbank (mehrsprachig)", - "@navStore": { - "description": "Bottom navigation - Extension repo tab" - }, - "extensionPostProcessing": "Post-processing", - "@searchTracks": { - "description": "Search filter label - tracks" - }, - "logCopied": "Logs in Zwischenablage kopiert", - "@logCopied": { - "description": "Snackbar - logs copied" - }, - "@extensionHealthRequired": { - "description": "Label for a required extension service health check" - }, - "@previewPlay": { - "description": "Tooltip for the button that plays a short track preview snippet" - }, - "clickableLookingUpArtist": "Künstler wird gesucht...", - "@clickableLookingUpArtist": { - "description": "Snackbar shown while clickable artist metadata is being resolved" - }, - "@extensionVerificationBrowserSubtitleInApp": { - "description": "Subtitle when in-app browser is preferred for extension verification" - }, - "setupUseDefaultFolder": "Als Standardordner verwenden?", - "tutorialSearchHint": "Einfügen oder suchen...", - "@logIssueTrackNotFoundLabel": { - "description": "Diagnostic badge label when a track is unavailable" - }, - "@storageModeAppFolderSubtitle": { - "description": "Subtitle for app folder storage mode" - }, - "downloadMusixmatchLanguage": "Musixmatch Sprache", - "@downloadMusixmatchLanguage": { - "description": "Setting for Musixmatch lyrics translation language" - }, - "lyricsModeExternal": "Externe .lrc Datei", - "@setupSelectFolder": { - "description": "Button to select folder" - }, - "logSearchHint": "Logs durchsuchen ...", - "@backupCreateFailed": { - "description": "Snackbar when backup creation fails" - }, - "@settingsSaveDownloadHistorySubtitle": { - "description": "Settings switch subtitle for storing completed downloads in history" - }, - "@albumFolderArtistAlbumFlat": { - "description": "Album folder option with singles directly in artist folder" - }, - "extensionHealthRequired": "benötigt", - "actionCancel": "Abbrechen", - "@actionCancel": { - "description": "Action button - cancel operation" - }, - "optionsEmbedMetadataSubtitleOff": "Deaktiviert (erweitert): Metadateneinbettung überspringen", - "@optionsEmbedMetadataSubtitleOff": { - "description": "Subtitle when metadata embedding is disabled" - }, - "downloadAllowLocalNetworkDisabled": "Local/private addresses are blocked for security", - "@downloadAllowLocalNetworkDisabled": { - "description": "Subtitle when allow local network access is off" - }, - "@extensionsDownloadPrioritySubtitle": { - "description": "Subtitle for download priority" - }, - "downloadSingleFilenameFormat": "Einzelnes Dateinamenformat", - "@downloadSingleFilenameFormat": { - "description": "Setting for output filename pattern for singles/EPs" - }, - "cacheSummarySubtitle": "Das Leeren des Caches entfernt nicht heruntergeladene Musikdateien.", - "@cacheSummarySubtitle": { - "description": "Helper text for cache summary card" - }, - "libraryFilterMetadataIncorrectIsrcFormat": "Falsches ISRC-Format", - "libraryFilterMetadataMissingTrackNumber": "Fehlende Tracknummer", - "@libraryFilterMetadataMissingTrackNumber": { - "description": "Filter option - items missing track number" - }, - "backupIncludeSecretsDescription": "Tokens and API keys from extensions will be saved into the backup file. Keep the file private. When off, you re-enter them after restoring.", - "@backupIncludeSecretsDescription": { - "description": "Explanation for the include-credentials toggle" - }, - "audioAnalysisChannelStats": "Pro Kanal Statistik", - "@audioAnalysisChannelStats": { - "description": "Per-channel audio analysis section label" - }, - "@extensionServiceStatus": { - "description": "Extension detail section header for service status" - }, - "queueEmptySingles": "Kein Single Download", - "@queueEmptySingles": { - "description": "Empty state title when no single track downloads exist" - }, - "@snackbarSelectedPlaylistsEmpty": { - "description": "Snackbar when selected playlists contain no tracks" - }, - "@errorRateLimited": { - "description": "Error title - too many requests" - }, - "setupDownloadInFlac": "Download music in lossless and Hi-Res quality", - "@setupDownloadInFlac": { - "description": "App tagline in setup" - }, - "trackRemoveFromDevice": "Vom Gerät entfernen", - "@extensionsNoDownloadProvider": { - "description": "Empty state - no download providers" - }, - "@backupCreated": { - "description": "Snackbar after a backup file is created" - }, - "cacheSummaryTitle": "Cache-Übersicht", - "@cacheSummaryTitle": { - "description": "Heading for cache summary card" - }, - "selectionReplayGainCount": "ReplayGain ({count})", - "@selectionReplayGainCount": { - "description": "Batch selection action button label for ReplayGain", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@setupNotificationBackgroundDescription": { - "description": "Detailed notification explanation" - }, - "safMigrationTitle": "Speicheraktualisierung erforderlich", - "snackbarMetadataSaved": "Metadaten erfolgreich gespeichert", - "@snackbarMetadataSaved": { - "description": "Snackbar after successfully saving track metadata" - }, - "@backupContentsSettings": { - "description": "Backup contents row label for settings" - }, - "logClearLogsTitle": "Logs leeren", - "extensionsCustomSearch": "Benutzerdefinierte Suche", - "@extensionsCustomSearch": { - "description": "Label for custom search provider" - }, - "@downloadFrom": { - "description": "Label - download source" - }, - "cacheSizeWithFiles": "{size} in {count} Dateien", - "selectionShareNoFiles": "Keine teilbare Dateien gefunden", - "@selectionShareNoFiles": { - "description": "Snackbar when no selected files exist on disk" - }, - "snackbarAddedTracksToQueue": "{count} Titel hinzugefügt", - "downloadFilenameInsertTag": "Tippe, um Tag einzufügen:", - "@downloadFilenameInsertTag": { - "description": "Label above filename tag chips" - }, - "collectionRemovedFromFavoriteArtists": "\"{artistName}\" entfernt aus Lieblingskünstlern", - "@collectionRemovedFromFavoriteArtists": { - "description": "Snackbar after removing artist from favorite artists", - "placeholders": { - "artistName": { - "type": "String" - } - } - }, - "queueDownloadSpeedStatus": "Herunterladen - {speed} MB/s", - "backupRestoreConfirmButton": "Restore", - "@libraryCleanupMissingFiles": { - "description": "Button to remove entries for missing files" - }, - "backupCreateFailed": "Failed to create backup", - "notifLibraryScanFailed": "Bibliotheksscan fehlgeschlagen", - "@notifLibraryScanFailed": { - "description": "Notification title when library scan fails" - }, - "audioAnalysisRescan": "Neu analysieren", - "@trackTrackName": { - "description": "Metadata label - track title" - }, - "@setupPermissionRequired": { - "description": "Generic permission required title", - "placeholders": { - "permissionType": { - "type": "String", - "description": "Type of permission (Storage/Notification)" - } - } - }, - "@nowPlayingNoLyrics": { - "description": "Empty state when the playing file has no embedded lyrics" - }, - "libraryFilesUnit": "{count, plural, =1{1 Datei} other{{count} Datein}}", - "@libraryFilesUnit": { - "description": "Unit label for files count during library scanning", - "placeholders": { - "count": { - "type": "int" - } - } + "extensionCapabilities": "Eigenschaften", + "@extensionCapabilities": { + "description": "Section header - extension features" }, + "extensionMetadataProvider": "Metadaten-Anbieter", "@extensionMetadataProvider": { "description": "Capability - provides metadata" }, - "@downloadFilterContributing": { - "description": "Setting to strip contributing artists from Album Artist folder name" + "extensionDownloadProvider": "Download-Anbieter", + "@extensionDownloadProvider": { + "description": "Capability - provides downloads" }, - "libraryScanSelectFolderFirst": "Wähle zuerst einen Ordner", - "@sectionDownload": { - "description": "Settings section header" + "extensionLyricsProvider": "Lyrics-Anbieter", + "@extensionLyricsProvider": { + "description": "Capability - provides lyrics" }, - "extensionHealthNotConfigured": "Nicht konfiguriert", - "queueRetryAllFailed": "Retry {count} failed", - "folderOrganizationByPlaylistSubtitle": "Ordner für jede Playlist trennen", - "@folderOrganizationByPlaylistSubtitle": { - "description": "Subtitle for playlist folder option" + "extensionUrlHandler": "URL Handler", + "@extensionUrlHandler": { + "description": "Capability - handles URLs" }, - "lyricsProviderExtensionDesc": "Erweiterungsanbieter", - "@libraryFilterQualityHiRes": { - "description": "Filter option - high resolution audio" + "extensionQualityOptions": "Qualitätsoptionen", + "@extensionQualityOptions": { + "description": "Capability - quality selection" }, - "trackConvertTitle": "Audio konvertieren", - "@trackConvertTitle": { - "description": "Title of convert bottom sheet" + "extensionPostProcessingHooks": "Post-Processing Hooks", + "@extensionPostProcessingHooks": { + "description": "Capability - post-processing" }, - "setupSkipForNow": "Vorerst überspringen", - "sectionDownload": "Herunterladen", - "downloadLossyOpus256Subtitle": "Beste Qualität, ~8MB pro Titel", - "@downloadLossyOpus256Subtitle": { - "description": "Subtitle for Opus 256kbps lossy option" + "extensionPermissions": "Berechtigungen", + "@extensionPermissions": { + "description": "Section header - required permissions" }, - "@trackConvertActionLabelLossless": { - "description": "Convert button label for lossless conversion with quality cap", + "extensionSettings": "Einstellungen", + "@extensionSettings": { + "description": "Section header - extension settings" + }, + "extensionRemoveButton": "Erweiterung entfernen", + "@extensionRemoveButton": { + "description": "Button to uninstall extension" + }, + "extensionUpdated": "Aktualisiert", + "@extensionUpdated": { + "description": "Extension detail - last update" + }, + "extensionMinAppVersion": "Min App-Version", + "@extensionMinAppVersion": { + "description": "Extension detail - minimum app version" + }, + "extensionCustomTrackMatching": "Benutzerdefiniertes Track-Matching", + "@extensionCustomTrackMatching": { + "description": "Capability - custom track matching algorithm" + }, + "extensionPostProcessing": "Post-processing", + "@extensionPostProcessing": { + "description": "Capability - post-download processing" + }, + "extensionHooksAvailable": "{count} Hook(s) verfügbar", + "@extensionHooksAvailable": { + "description": "Post-processing hooks count", "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "quality": { + "count": { + "type": "int" + } + } + }, + "extensionPatternsCount": "{count} Muster", + "@extensionPatternsCount": { + "description": "URL patterns count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionStrategy": "Strategie: {strategy}", + "@extensionStrategy": { + "description": "Track matching strategy name", + "placeholders": { + "strategy": { "type": "String" } } }, - "storeRequiresVersion": "Benötigt v{version}+", - "@storeRequiresVersion": { - "description": "Store compatibility badge for minimum app version", - "placeholders": { - "version": { - "type": "String" - } - } + "extensionsProviderPrioritySection": "Provider-Priorität", + "@extensionsProviderPrioritySection": { + "description": "Section header - provider priority" }, - "metadataProviderPriorityDescription": "Ziehe, um Metadatenanbieter neu zu ordnen. Die App versucht Anbieter von oben nach unten, wenn sie nach Tracks suchen und Metadaten abrufen.", - "@notifUpdateFailed": { - "description": "Notification title when app update download fails" + "extensionsInstalledSection": "Installierte Erweiterungen", + "@extensionsInstalledSection": { + "description": "Section header - installed extensions" + }, + "extensionsNoExtensions": "Keine Erweiterungen installiert", + "@extensionsNoExtensions": { + "description": "Empty state - no extensions" + }, + "extensionsNoExtensionsSubtitle": "Installiere .spotiflac-ext Dateien um neue Anbieter hinzuzufügen", + "@extensionsNoExtensionsSubtitle": { + "description": "Empty state subtitle" + }, + "extensionsInstallButton": "Erweiterung installieren", + "@extensionsInstallButton": { + "description": "Button to install extension from file" }, "extensionsInfoTip": "Erweiterungen können neue Metadaten und Download-Anbieter hinzufügen. Installiere nur Erweiterungen von vertrauenswürdigen Quellen.", "@extensionsInfoTip": { "description": "Security warning about extensions" }, - "@downloadAppleQqMultiPersonEnabled": { - "description": "Subtitle when multi-person lyrics is on" + "extensionsInstalledSuccess": "Erweiterung erfolgreich installiert", + "@extensionsInstalledSuccess": { + "description": "Success message after install" }, - "libraryFilterMetadataMissingYear": "Jahr fehlt", - "extensionsDownloadPriority": "Download-Priorität", - "@extensionsDownloadPriority": { - "description": "Setting - download provider order" - }, - "@downloadAllowLocalNetworkEnabled": { - "description": "Subtitle when allow local network access is on" - }, - "libraryScan": "Bibliothek scannen", - "@libraryScan": { - "description": "Button to start library scan" - }, - "editMetadataFieldLabel": "Label", - "@editMetadataFieldLabel": { - "description": "Chip label for label field in auto-fill selector" - }, - "updateDownloadFailed": "Download fehlgeschlagen", - "@updateDownloadFailed": { - "description": "Update error title" - }, - "appearanceAmoledDarkSubtitle": "AMOLED Hintergrund", - "@appearanceAmoledDarkSubtitle": { - "description": "Subtitle for AMOLED dark" - }, - "setupIcloudNotSupported": "iCloud Drive wird nicht unterstützt. Bitte verwende den \"Dokumente\" Ordner.", - "trackLyricsEmbeddedSource": "Eingebettet", - "@trackLyricsEmbeddedSource": { - "description": "Lyrics source label for embedded lyrics" - }, - "@trackAlbumArtist": { - "description": "Metadata label - album artist" + "extensionsInstalledCount": "{count} Erweiterungen erfolgreich installiert", + "@extensionsInstalledCount": { + "description": "Success message after installing multiple extensions", + "placeholders": { + "count": { + "type": "int", + "description": "Number of installed extensions" + } + } }, "extensionsInstallPartialSuccess": "{installed} von {attempted} Erweiterungen installiert", "@extensionsInstallPartialSuccess": { @@ -4147,1741 +1993,217 @@ } } }, - "@extensionSettingsCount": { - "description": "Count of settings exposed by an extension quality option", - "placeholders": { - "count": { - "type": "int" - } - } + "extensionsDownloadPriority": "Download-Priorität", + "@extensionsDownloadPriority": { + "description": "Setting - download provider order" }, - "notifLibraryScanCancelled": "Bibliotheksscan abgebrochen", - "@notifLibraryScanCancelled": { - "description": "Notification title when library scan is cancelled by the user" + "extensionsDownloadPrioritySubtitle": "Download-Service-Reihenfolge festlegen", + "@extensionsDownloadPrioritySubtitle": { + "description": "Subtitle for download priority" }, - "collectionPlaylistNameRequired": "Playlist-Name ist erforderlich", - "libraryCleanupMissingFiles": "Fehlende Dateien bereinigen", - "storeCategoryUtility": "Utility", - "@storeCategoryUtility": { - "description": "Store extension category - utility" + "extensionsFallbackTitle": "Fallback-Erweiterungen", + "@extensionsFallbackTitle": { + "description": "Setting and page title for choosing which download extensions can be used during fallback" }, - "searchSortTitle": "Ergebnisse sortieren", - "@extensionVerificationBrowserExternal": { - "description": "Chip label for external browser verification mode" + "extensionsFallbackSubtitle": "Wähle welche installierten Download-Erweiterungen als Fallback verwendet werden sollen", + "@extensionsFallbackSubtitle": { + "description": "Subtitle for download fallback extensions menu" }, - "audioAnalysisLufs": "LUFS", - "@setupAllowAccessToManageFiles": { - "description": "Instruction for file access permission" + "extensionsNoDownloadProvider": "Keine Erweiterungen mit Download-Provider", + "@extensionsNoDownloadProvider": { + "description": "Empty state - no download providers" + }, + "extensionsMetadataPriority": "Metadaten Priorität", + "@extensionsMetadataPriority": { + "description": "Setting - metadata provider order" + }, + "extensionsMetadataPrioritySubtitle": "Reihenfolge der Such- und Metadaten quellen festlegen", + "@extensionsMetadataPrioritySubtitle": { + "description": "Subtitle for metadata priority" + }, + "extensionsNoMetadataProvider": "Keine Erweiterungen mit Metadaten-Anbieter", + "@extensionsNoMetadataProvider": { + "description": "Empty state - no metadata providers" + }, + "extensionsSearchProvider": "Such-Provider", + "@extensionsSearchProvider": { + "description": "Setting - search provider selection" + }, + "extensionsNoCustomSearch": "Keine Erweiterungen mit benutzerdefinierter Suche", + "@extensionsNoCustomSearch": { + "description": "Empty state - no search providers" + }, + "extensionsSearchProviderDescription": "Wähle den Dienst für die Suche von Titel", + "@extensionsSearchProviderDescription": { + "description": "Search provider setting description" + }, + "extensionsCustomSearch": "Benutzerdefinierte Suche", + "@extensionsCustomSearch": { + "description": "Label for custom search provider" }, "extensionsErrorLoading": "Fehler beim Laden der Erweiterung", - "@actionPaste": { - "description": "Generic action - paste from clipboard" + "@extensionsErrorLoading": { + "description": "Error message when extension fails to load" }, - "aboutFeatureRequestSubtitle": "Schlage neue Funktionen für die App vor", - "@aboutFeatureRequestSubtitle": { - "description": "Subtitle for feature request" + "qualityFlacLossless": "FLAC Verlustfrei", + "@qualityFlacLossless": { + "description": "Quality option - CD quality FLAC" }, - "@aboutTitle": { - "description": "About page title" + "qualityFlacLosslessSubtitle": "16-bit / 44,1kHz", + "@qualityFlacLosslessSubtitle": { + "description": "Technical spec for lossless" }, - "@downloadNeteaseIncludeTranslation": { - "description": "Setting to include translated lyrics from Netease" + "qualityHiResFlac": "Hi-Res FLAC", + "@qualityHiResFlac": { + "description": "Quality option - high resolution FLAC" }, - "@actionGo": { - "description": "Generic action button label" + "qualityHiResFlacSubtitle": "24-Bit / bis 96kHz", + "@qualityHiResFlacSubtitle": { + "description": "Technical spec for hi-res" }, - "regionCountryFR": "France", - "trackConvertResamplerSoxr": "SoXr", - "extensionUpdated": "Aktualisiert", - "@extensionUpdated": { - "description": "Extension detail - last update" + "qualityHiResFlacMax": "Hi-Res FLAC Max", + "@qualityHiResFlacMax": { + "description": "Quality option - maximum resolution FLAC" + }, + "qualityHiResFlacMaxSubtitle": "24-Bit / bis 192kHz", + "@qualityHiResFlacMaxSubtitle": { + "description": "Technical spec for hi-res max" + }, + "downloadLossy320": "Verlustbehaftet 320kbps", + "@downloadLossy320": { + "description": "Quality option label for lossy 320kbps" }, "downloadLossyFormat": "Verlustbehaftetes Format", "@downloadLossyFormat": { "description": "Setting title to pick output format for lossy downloads" }, - "snackbarAlreadyInLibrary": "\"{trackName}\" existiert bereits in deiner Bibliothek", - "@snackbarAlreadyInLibrary": { - "description": "Snackbar - track already exists in local library", - "placeholders": { - "trackName": { - "type": "String" - } - } + "downloadAutoConvert": "Auto-convert after download", + "@downloadAutoConvert": { + "description": "Toggle for automatic post-download audio conversion" }, - "libraryExternalPlayerSubtitle": "Recommended for listening, best quality, gapless playback, EQ, and wider format support", - "extensionCustomUrlHandlingShareHint": "Teile Links von diesen Seiten mit SpotiFLAC Mobile und diese Erweiterung wird sie verarbeiten.", - "libraryFilterQuality": "Qualität", - "@libraryFilterQuality": { - "description": "Filter section - audio quality" + "downloadAutoConvertSubtitle": "Convert completed downloads to a smaller lossy format. The original is replaced only after conversion succeeds.", + "@downloadAutoConvertSubtitle": { + "description": "Explanation of safe automatic post-download conversion" }, - "editMetadataAutoFillDone": "{count} {count, plural, =1{Feld} other{Felder}} aus Online-Metadaten gefüllt", - "@editMetadataAutoFillDone": { - "description": "Snackbar confirming how many fields were auto-filled", - "placeholders": { - "count": { - "type": "int" - } - } + "downloadAutoConvertFormat": "Output format", + "@downloadAutoConvertFormat": { + "description": "Automatic conversion output format setting" }, - "@discographyDownload": { - "description": "Button - download artist discography" + "downloadAutoConvertFormatSubtitle": "Choose the lossy format used for newly completed downloads.", + "@downloadAutoConvertFormatSubtitle": { + "description": "Automatic conversion format picker explanation" }, - "aboutFeatureRequest": "Feature vorschlagen", - "downloadSingleFilenameFormatDescription": "Dateinamenmuster für Singles und EPs. Verwendet die gleichen Tags wie das Albumformat.", - "@downloadSingleFilenameFormatDescription": { - "description": "Subtitle description for single filename format setting" + "downloadAutoConvertBitrate": "Output quality", + "@downloadAutoConvertBitrate": { + "description": "Automatic conversion bitrate setting" }, - "queueClearAllMessage": "Bist du dir sicher, dass du alle Downloads löschen möchten?", - "dialogDisableHistoryMessage": "Existing history will be cleared. Downloaded files will not be deleted.", - "extensionLastChecked": "Zuletzt geprüft {time}", - "@extensionLastChecked": { - "description": "Timestamp for the latest extension service health check", - "placeholders": { - "time": { - "type": "String" - } - } + "downloadAutoConvertBitrateSubtitle": "Higher bitrates preserve more detail but create larger files.", + "@downloadAutoConvertBitrateSubtitle": { + "description": "Automatic conversion bitrate picker explanation" }, - "homeImportCsvTooltip": "Import playlist (CSV, M3U)", - "@homeImportCsvTooltip": { - "description": "Tooltip for importing a CSV file into Home search" + "downloadAutoConvertMp3Subtitle": "Best compatibility across players and devices", + "@downloadAutoConvertMp3Subtitle": { + "description": "MP3 automatic conversion option description" }, - "trackConvertResamplerSwr": "SWR", - "@trackConvertResamplerSwr": { - "description": "Lossless conversion default FFmpeg swresample resampler option" + "downloadAutoConvertM4aSubtitle": "Efficient AAC audio in an M4A container", + "@downloadAutoConvertM4aSubtitle": { + "description": "M4A AAC automatic conversion option description" }, - "@downloadFolderOrganization": { - "description": "Title of the folder organization picker bottom sheet" + "downloadAutoConvertOpusSubtitle": "Best efficiency for modern players", + "@downloadAutoConvertOpusSubtitle": { + "description": "Opus automatic conversion option description" }, - "dialogClearHistoryTitle": "Verlauf löschen", - "@logClearSearch": { - "description": "Tooltip for clearing the log search field" + "downloadLossy320Format": "Verlustbehaftetes 320kbps-Format", + "@downloadLossy320Format": { + "description": "Title of the lossy format picker bottom sheet" }, - "dialogImport": "Importieren", - "@dialogImport": { - "description": "Dialog button - import data" + "downloadLossy320FormatDesc": "Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.", + "@downloadLossy320FormatDesc": { + "description": "Description in the lossy format picker" }, - "@setupChangeFolderTooltip": { - "description": "Tooltip for editing the selected download folder" + "downloadLossyMp3": "MP3 320kbps", + "@downloadLossyMp3": { + "description": "Lossy format option - MP3 320kbps" }, - "notifLibraryScanErrors": "{count} Fehler", - "@downloadNetworkCompatibilityMode": { - "description": "Setting for legacy TLS/network handling" + "downloadLossyMp3Subtitle": "Beste Kompatibilität, ~10MB pro Titel", + "@downloadLossyMp3Subtitle": { + "description": "Subtitle for MP3 320kbps lossy option" }, - "@metadataSaveFailedFfmpeg": { - "description": "Snackbar error when FFmpeg fails to write metadata" + "downloadLossyAac": "AAC/M4A 320kbps", + "@downloadLossyAac": { + "description": "Lossy format option - AAC in M4A container at 320kbps" }, - "dialogUninstallExtension": "Erweiterung deinstallieren?", - "recentTypePlaylist": "Playlist", - "@recentTypePlaylist": { - "description": "Recent access item type - playlist" + "downloadLossyAacSubtitle": "Beste mobile Kompatibilität, M4A Container", + "@downloadLossyAacSubtitle": { + "description": "Subtitle for AAC/M4A 320kbps lossy option" }, - "trackDeleteConfirmMessage": "Dies wird die heruntergeladene Datei dauerhaft löschen und sie aus deinem Verlauf entfernen.", - "@logIssueNetworkErrorDescription": { - "description": "Diagnostic badge description for generic network errors" + "downloadLossyOpus256": "Opus 256kbps", + "@downloadLossyOpus256": { + "description": "Lossy format option - Opus 256kbps" }, - "appearanceThemeSystem": "System", - "@appearanceThemeSystem": { - "description": "Follow system theme" + "downloadLossyOpus256Subtitle": "Beste Qualität, ~8MB pro Titel", + "@downloadLossyOpus256Subtitle": { + "description": "Subtitle for Opus 256kbps lossy option" }, - "albumFolderArtistAlbumSingles": "Künstler / Album + Singles", - "@aboutTranslators": { - "description": "Section for translators" - }, - "shareSheetNotFound": "Not found", - "@shareSheetNotFound": { - "description": "Cross-service share sheet row subtitle when a service has no match" - }, - "@tutorialDownloadInProgressSemantics": { - "description": "Accessibility label for active download state in tutorial demo" - }, - "editMetadataAutoFillNoneSelected": "Wähle mindestens ein Feld zum automatischen Ausfüllen aus", - "@editMetadataAutoFillNoneSelected": { - "description": "Snackbar when user taps Fetch without selecting any fields" - }, - "@snackbarViewQueue": { - "description": "Snackbar action - view download queue" - }, - "@optionsUpdateChannelPreview": { - "description": "Include beta/preview updates" - }, - "editMetadataFieldComposer": "Komponist", - "@editMetadataFieldComposer": { - "description": "Label for composer field in the edit metadata sheet" - }, - "aboutSachinsenalDesc": "The original HiFi project creator. A foundation for lossless-source integration.", - "@aboutSachinsenalDesc": { - "description": "Credit description for sachinsenal0x64" - }, - "backupTitle": "Backup & Restore", - "@libraryFilterMetadata": { - "description": "Filter section - metadata completeness" - }, - "setupStorageAccessRequired": "Speicherzugriff erforderlich", - "@setupStorageAccessRequired": { - "description": "Title when storage access needed" - }, - "trackMetadataDelete": "Löschen", - "@trackMetadataDelete": { - "description": "Action button - delete track" - }, - "libraryFilterMetadataMissingDiscNumber": "Fehlende Disc-Nummer", - "@libraryFilterMetadataMissingDiscNumber": { - "description": "Filter option - items missing disc number" - }, - "snackbarMetadataProviderSaved": "Priorität des Metadaten-Anbieters gespeichert", - "setupPermissionRequired": "{permissionType}-Berechtigung erforderlich", - "@selectionConvertNoConvertible": { - "description": "Snackbar when no selected tracks support conversion" - }, - "extensionHealthDegraded": "Eingeschränkt", - "regionCountryKR": "Südkorea", - "@regionCountryKR": { - "description": "Country name for SongLink region picker" - }, - "trackLyricsNotInFile": "Keine Lyrics in dieser Datei gefunden", - "@trackLyricsNotInFile": { - "description": "Message when no embedded lyrics in audio file" - }, - "@downloadedAlbumTapToSelect": { - "description": "Selection hint" - }, - "downloadArtistNameFilters": "Künstlernamen-Filter", - "@downloadArtistNameFilters": { - "description": "Setting title for artist folder filter options" - }, - "@libraryFilterMetadataMissingArtist": { - "description": "Filter option - items missing artist" - }, - "recentShowAllDownloads": "Alle Downloads anzeigen", - "@appearanceThemeLight": { - "description": "Light theme" - }, - "trackReEnrichFieldTrackInfo": "Track & Disc Nummer", - "@appearanceThemeDark": { - "description": "Dark theme" - }, - "extensionVerificationLinkCopied": "Verification link copied", - "@extensionVerificationLinkCopied": { - "description": "Snackbar after copying the extension verification URL" - }, - "@extensionsHomeFeedDescription": { - "description": "Extensions page - description for home feed provider picker" - }, - "downloadAlbumArtistMetadataPrimaryOnly": "Album Artist metadata: Primary only", - "@downloadAlbumArtistMetadataPrimaryOnly": { - "description": "Status label when album-artist folder filtering uses primary artist only" - }, - "extensionOauthConnectHint": "Tippe auf \"Mit Spotify verbinden\" um dieses Feld auszufüllen.", - "setupNext": "Weiter", - "extensionVerificationBrowserSubtitleInApp": "Open challenges in the in-app browser first", - "libraryAutoScanDaily": "Täglich", - "@libraryAutoScanDaily": { - "description": "Auto scan once per day" - }, - "@audioAnalysisDescription": { - "description": "Description for audio analysis tap-to-analyze prompt" - }, - "nowPlayingUpNext": "Up next", - "@nowPlayingUpNext": { - "description": "Title for the playback queue sheet" - }, - "nowPlayingPreviousTrack": "Previous track", - "nowPlayingNextTrack": "Next track", - "logAutoScrollOff": "Auto-Scrollen AUS", - "trackConvertFailed": "Konvertierung fehlgeschlagen", - "@trackConvertFailed": { - "description": "Snackbar when conversion fails" - }, - "extensionsUninstall": "Deinstallieren", - "safMigrationSuccess": "Download-Ordner auf SAF-Modus aktualisiert", - "optionsClearHistorySubtitle": "Alle heruntergeladenen Titel aus dem Verlauf entfernen", - "@optionsClearHistorySubtitle": { - "description": "Subtitle for clear history" - }, - "trackPlayNext": "Play next", - "extensionsNoHomeFeedExtensions": "Keine Erweiterungen mit Home-Feed", - "optionsUpdateChannelStable": "Nur stabile Versionen", - "@optionsUpdateChannelStable": { - "description": "Only stable updates" - }, - "@discographyDownloadAllSubtitle": { - "description": "Subtitle showing total tracks and albums", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } - }, - "searchPlaylists": "Playlists", - "@searchPlaylists": { - "description": "Search result category - playlists" - }, - "downloadNetworkCompatibilityMode": "Netzwerkkompatibilitätsmodus", - "settingsAppearance": "Erscheinungsbild", - "logIssueRateLimitedLabel": "LIMIT ERKANNT", - "@logIssueRateLimitedLabel": { - "description": "Diagnostic badge label when the service rate limits requests" - }, - "logIssueSummary": "Problemübersicht", - "@logIssueSummary": { - "description": "Header for log issue analysis summary" - }, - "appName": "SpotiFLAC Mobile", - "storeRepoDialogCurrent": "Aktuelles Repository:", - "@optionsExtensionStoreSubtitle": { - "description": "Subtitle for extension repo toggle" - }, - "@trackLyrics": { - "description": "Tab title - lyrics" - }, - "@backupImportButton": { - "description": "Button to pick a backup file to restore" - }, - "@setupFolderChoose": { - "description": "Button to choose folder" - }, - "storageModeAppFolderSubtitle": "Standardmäßig in Music/SpotiFLAC speichern", - "@extensionsDisabled": { - "description": "Extension status - inactive" - }, - "@regionCountryAU": { - "description": "Country name for SongLink region picker" - }, - "@storeCategoryMetadata": { - "description": "Store extension category - metadata" - }, - "libraryFilterApply": "Anwenden", - "@libraryFilterApply": { - "description": "Apply filters button" - }, - "@libraryFilterSortGenreAsc": { - "description": "Sort option - genre ascending" - }, - "setupAllowAccessToManageFiles": "Bitte aktiviere \"Zugriff auf alle Dateien erlauben\" auf dem nächsten Bildschirm.", - "@dialogSave": { - "description": "Dialog button - save changes" - }, - "trackLyrics": "Lyrics", - "extensionSettingNotSet": "Nicht eingestellt", - "@extensionSettingNotSet": { - "description": "Value shown when an extension setting has no value" - }, - "@audioAnalysisClipping": { - "description": "Clipping metric label" - }, - "downloadNeteaseIncludeTranslation": "Netease: Übersetzung einschließen", - "@albumFolderArtistAlbumSubtitle": { - "description": "Folder structure example" - }, - "@settingsDonateSubtitle": { - "description": "Subtitle for donate menu item" - }, - "cueSplitSuccess": "{count} Titel erfolgreich aufgeteilt", - "@cueSplitSuccess": { - "description": "Snackbar after successful CUE split", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cueSplitArtist": "Künstler: {artist}", - "@cueSplitArtist": { - "description": "Artist name in CUE split sheet", - "placeholders": { - "artist": { - "type": "String" - } - } - }, - "updateSeeReleaseNotes": "See release notes for details.", - "@updateSeeReleaseNotes": { - "description": "Fallback changelog text when release notes cannot be parsed" - }, - "@trackReEnrichFfmpegFailed": { - "description": "Snackbar when FFmpeg embed fails for MP3/Opus" - }, - "collectionWishlist": "Wunschliste", - "@collectionWishlist": { - "description": "Custom folder for saved tracks to download later" - }, - "editMetadataAutoFillFetch": "Abrufen & Ausfüllen", - "@extensionsHomeFeedAuto": { - "description": "Label for auto-selected search provider" - }, - "providerPriorityDescription": "Ziehen, um Download-Anbieter neu zu ordnen. Die App versucht Anbieter von oben nach unten, wenn Titel heruntergeladen werden.", - "@providerPriorityDescription": { - "description": "Provider priority page description" - }, - "queueEmptySinglesSubtitle": "Einzelne Titel-Downloads werden hier angezeigt", "downloadLossyOpus128": "Opus 128kbps", - "downloadUseAlbumArtistForFolders": "Album-Künstler für Ordner verwenden", - "@downloadUseAlbumArtistForFolders": { - "description": "Setting - choose whether artist folders use Album Artist or Track Artist" + "@downloadLossyOpus128": { + "description": "Lossy format option - Opus 128kbps" }, - "@aboutLinks": { - "description": "Section for external links" + "downloadLossyOpus128Subtitle": "Kleinste Größe, ~4MB pro Track", + "@downloadLossyOpus128Subtitle": { + "description": "Subtitle for Opus 128kbps lossy option" }, - "downloadedAlbumDeleteCount": "Lösche {count} {count, plural, =1{Titel} other{Titel}}", - "updateLater": "Später", - "@logIssueIspBlockingSuggestion": { - "description": "Diagnostic badge suggestion for ISP blocking" + "downloadAskBeforeDownload": "Qualität vor Download fragen", + "@downloadAskBeforeDownload": { + "description": "Setting - show quality picker" }, - "actionResume": "Fortfahren", - "optionsDetailedLoggingOff": "Für Fehlerberichte aktivieren", - "@searchSortDefault": { - "description": "Sort option - default API order" + "downloadDirectory": "Download-Ordner", + "@downloadDirectory": { + "description": "Setting - download folder" }, - "@regionCountryCA": { - "description": "Country name for SongLink region picker" + "downloadSeparateSinglesFolder": "Singles Ordner trennen", + "@downloadSeparateSinglesFolder": { + "description": "Setting - separate folder for singles" }, - "@sectionStorageAccess": { - "description": "Section header for storage access settings" - }, - "downloadFilterContributing": "Mitwirkende Künstler filtern", - "downloadUseAlbumArtistForFoldersTrackSubtitle": "Ordner benannt nach dem Tag des Künstlers", - "storeSearch": "Erweiterungen suchen...", - "@storeSearch": { - "description": "Repo search placeholder" - }, - "aboutTelegramChat": "Telegram Community", - "lyricsModeBoth": "Beides", - "@lyricsModeBoth": { - "description": "Lyrics mode option - embed and external" - }, - "@permissionNotification": { - "description": "Notification permission type label" - }, - "libraryAutoScanSubtitle": "Scanne die Bibliothek automatisch nach neuen Dateien", - "@libraryAutoScanSubtitle": { - "description": "Subtitle for auto scan setting" - }, - "libraryEnableLocalLibrary": "Lokale Bibliothek aktivieren", - "trackConvertTargetFormat": "Zielformat", - "@trackConvertTargetFormat": { - "description": "Label for format selection" - }, - "extensionSettings": "Einstellungen", - "@editMetadataAutoFillSearching": { - "description": "Snackbar shown while searching for online metadata" - }, - "trackLyricsTimeout": "Anfrage Timeout. Versuche es später erneut.", - "settingsExtensions": "Erweiterungen", - "@settingsBackup": { - "description": "Settings menu item - backup and restore page" - }, - "librarySourceDownloaded": "Heruntergeladen", - "@librarySourceDownloaded": { - "description": "Badge for tracks downloaded via SpotiFLAC" - }, - "appearanceDynamicColor": "Dynamische Farben", - "@appearanceDynamicColor": { - "description": "Material You dynamic colors" - }, - "backupImportButton": "Choose backup file", - "downloadAppleElrcWordSyncDisabled": "Sichere Line-by-line Apple Music Texte", - "@optionsEmbedMetadata": { - "description": "Settings toggle title for writing metadata into downloaded files" - }, - "appearanceTitle": "Erscheinungsbild", - "downloadNeteaseIncludeRomanizationDisabled": "Keine Romanisierung", - "@downloadNeteaseIncludeRomanizationDisabled": { - "description": "Subtitle when Netease romanization is off" - }, - "@libraryScanCancelled": { - "description": "Library scan status when a scan was cancelled" - }, - "tracksCount": "{count, plural, =1{1 Titel} other{{count} Titel}}", - "@snackbarFailedToUpdateNamed": { - "description": "Snackbar when extension update fails in the repo tab", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "@extensionQualityOptions": { - "description": "Capability - quality selection" - }, - "logClearSearch": "Suche löschen", - "trackSaveLyrics": "Lyrics als .lrc speichern", - "@trackReEnrichSearching": { - "description": "Snackbar while searching metadata from internet for local items" - }, - "@editMetadataAutoFillNoResults": { - "description": "Snackbar when online metadata search returns no results" - }, - "notifDownloadComplete": "Download abgeschlossen", - "snackbarAlreadyDownloaded": "\"{trackName}\" bereits heruntergeladen", - "folderOrganizationByAlbumSubtitle": "Trenne Ordner nach Album", - "storeRepoUrlHint": "https://github.com/user/repo", - "trackConvertDitherTriangularHp": "Triangular HP", - "lyricsModeBothSubtitle": "Lyrics einbetten und als .lrc speichern", - "trackReEnrichFieldExtra": "Genre, Label, Copyright", - "@trackReEnrichFieldExtra": { - "description": "Checkbox label for extra metadata in re-enrich" - }, - "sectionLyrics": "Lyrics", - "@sectionLyrics": { - "description": "Settings section header" - }, - "extensionStrategy": "Strategie: {strategy}", - "@extensionStrategy": { - "description": "Track matching strategy name", - "placeholders": { - "strategy": { - "type": "String" - } - } - }, - "@downloadNativeWorker": { - "description": "Setting title for Android native download worker" - }, - "optionsArtistTagModeSplitVorbis": "Tags für FLAC/Opus aufteilen", - "extensionsHomeFeedUse": "{extensionName} Home Feed verwenden", - "@cacheAppDirectoryDesc": { - "description": "Description of what app cache directory contains" - }, - "cancelDownloadTitle": "Download abbrechen?", - "updateWhatsNew": "Was ist neu", - "updateNewVersionReady": "Eine neue Version ist verfügbar", - "@extensionVerificationClose": { - "description": "Button to dismiss the extension verification help dialog" - }, - "a11ySelectTrack": "Titel auswählen", - "libraryClearSubtitle": "Alle gescannten Titel entfernen", - "@libraryClearSubtitle": { - "description": "Subtitle for clear button" - }, - "@settingsDownloadNetworkSubtitle": { - "description": "Subtitle explaining network preference" - }, - "storeAnyVersion": "Alle", - "@storeAnyVersion": { - "description": "Store detail value when any app version is accepted" - }, - "navStore": "Repo", - "backupExportSectionDescription": "Save your settings, download history, liked tracks, wishlist, favorite artists and playlists into a single file you can keep or move to another phone.", - "libraryScanSettings": "Scan Einstellungen", - "@libraryScanSettings": { - "description": "Section header for scan settings" - }, - "trackDuration": "Länge", - "@trackDuration": { - "description": "Metadata label - track length" - }, - "extensionHealthOffline": "Offline", - "@extensionHealthOffline": { - "description": "Extension service health status - offline" - }, - "editMetadataFieldArtist": "Künstler", - "@editMetadataFieldArtist": { - "description": "Chip label for artist field in auto-fill selector" - }, - "libraryInLibrary": "In Bibliothek", - "pressBackAgainToExit": "Drücke wieder \"zurück\" um die App zu beenden", - "@pressBackAgainToExit": { - "description": "Exit confirmation message" - }, - "setupNotificationGranted": "Benachrichtigungs-Berechtigung erteilt", - "@setupNotificationGranted": { - "description": "Success message for notification permission" - }, - "settingsDonate": "Unterstütze die Entwicklung", - "snackbarFailedToUpdateNamed": "Failed to update {extensionName}", - "backupContentsTitle": "Backup contents", - "updateDontRemind": "Nicht erinnern", - "@dialogDiscard": { - "description": "Dialog button - discard changes" - }, - "editMetadataAutoFillSearching": "Online suchen...", - "discographyDownloadSelected": "Auswahl herunterladen", - "trackConvertResampler": "Resampler", - "queueFilteringIndicator": "Filtere...", - "@queueFilteringIndicator": { - "description": "Shown while filter results are being computed" - }, - "@dialogDownloadAllTitle": { - "description": "Dialog title for bulk download confirmation" - }, - "cueSplitConfirmMessage": "Soll „{album}“ in {count} einzelne FLAC-Dateien aufgeteilt werden?\n\nDie Dateien werden im selben Ordner gespeichert.", - "@downloadCreatePlaylistSourceFolderRedundant": { - "description": "Subtitle when folder organization is already set to playlist" - }, - "regionCountryCA": "Canada", - "cacheTempDirectory": "Temporärer Ordner", - "@cacheTempDirectory": { - "description": "Cache item title for temporary files directory" - }, - "libraryShowDuplicateIndicator": "Duplikat Indikator anzeigen", - "@logFilterBySeverity": { - "description": "Filter dialog title" - }, - "homeSearchHintProvider": "Mit {providerName} suchen...", - "@downloadNeteaseIncludeTranslationDisabled": { - "description": "Subtitle when Netease translation is off" - }, - "optionsCheckUpdates": "Nach Updates suchen", - "replayGainBatchAnalyzing": "Analyzing ReplayGain...", - "recentTypeAlbum": "Album", - "providerExtension": "Erweiterung", - "@providerExtension": { - "description": "Label for extension-provided providers" - }, - "trackCoverNoSource": "Keine Cover Quelle vorhanden", - "libraryFilterMetadata": "Metadaten", - "albumFolderArtistYearAlbum": "Künstler / [Year] Album", - "@albumFolderArtistYearAlbum": { - "description": "Album folder option with year" - }, - "audioAnalysisClipping": "Clipping", - "@a11yOpenAlbumByArtistTrackCount": { - "description": "Accessibility label for opening an album item with track count", - "placeholders": { - "albumName": { - "type": "String" - }, - "artistName": { - "type": "String" - }, - "trackCount": { - "type": "int" - } - } - }, - "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": { - "count": { - "type": "int" - } - } - }, - "channelStable": "Stabil", - "@channelStable": { - "description": "Update channel - stable releases" - }, - "tutorialSettingsTip3": "App-Design und Aussehen anpassen", - "setupAppDocumentsFolderSubtitle": "Empfohlen - zugänglich über die Datei-App", - "a11yPlayTrackByArtist": "Spiele {trackName} von {artistName}", - "@a11yPlayTrackByArtist": { - "description": "Accessibility label for playing a local library track", - "placeholders": { - "trackName": { - "type": "String" - }, - "artistName": { - "type": "String" - } - } - }, - "dialogRemove": "Entfernen", - "extensionVerificationClose": "Schließen", - "bulkDownloadPlaylistsButton": "Lade {count} {count, plural, =1{Playlist} other{Playlists}} herunter", - "@bulkDownloadPlaylistsButton": { - "description": "Button label for bulk downloading selected playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "optionsAutoFallbackSubtitle": "Andere Dienste versuchen, wenn Download fehlschlägt", - "@optionsAutoFallbackSubtitle": { - "description": "Subtitle for auto fallback" - }, - "extensionPatternsCount": "{count} Muster", - "@libraryFilterLocal": { - "description": "Filter chip - show only local library items" - }, - "errorUrlNotRecognizedMessage": "Dieser Link ist inkompatibel. Prüfe die URL und stelle sicher, dass eine kompatible Erweiterung installiert ist.", - "@errorUrlNotRecognizedMessage": { - "description": "Error message - URL not recognized explanation" - }, - "@extensionVerificationBrowserSubtitleExternal": { - "description": "Subtitle when external browser is preferred for extension verification" - }, - "optionsArtistTagMode": "Künstler Tag-Modus", - "libraryFilterMetadataComplete": "Komplette Metadaten", - "@libraryFilterMetadataComplete": { - "description": "Filter option - items with complete metadata" - }, - "@extensionsVersion": { - "description": "Extension version display", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "@downloadNetworkAnySubtitle": { - "description": "Subtitle for any-network option in picker" - }, - "optionsReplayGainSubtitleOn": "Scanne Lautstärke und füge ReplayGain-Tags ein (EBU R128)", - "libraryScanning": "Scannen...", - "@libraryScanning": { - "description": "Status during scan" - }, - "cacheRefresh": "Aktualisieren", - "@actionShuffle": { - "description": "Tooltip for shuffle playback action" - }, - "optionsEmbedLyricsSubtitle": "Speichere synchronisierte Liedtexte zusammen mit heruntergeladenen Titeln", - "@optionsEmbedLyricsSubtitle": { - "description": "Subtitle for embed lyrics" - }, - "queueEmptyAlbumsSubtitle": "Lade mehrere Titel eines Albums herunter, um sie hier zu sehen", - "extensionEnterValue": "Wert eingeben", - "@settingsDownloadNetworkAny": { - "description": "Network option - use any connection" - }, - "collectionLoved": "Lieblingssongs", - "@collectionLoved": { - "description": "Custom folder for favorite tracks" - }, - "storeAddRepoTitle": "Erweiterungs-Repository hinzufügen", - "@storeAddRepoTitle": { - "description": "Store setup screen - heading when no repo is configured" - }, - "collectionNoPlaylistsYet": "Noch keine Playlists", - "@collectionNoPlaylistsYet": { - "description": "Empty state title when user has no playlists" - }, - "libraryCleanupMissingFilesSubtitle": "Verlaufseinträge für Dateien löschen, die nicht mehr existieren", - "@libraryCleanupMissingFilesSubtitle": { - "description": "Subtitle for cleanup button" - }, - "folderOrganizationByArtist": "Nach Künstler", - "@folderOrganizationByArtist": { - "description": "Folder option - artist folders" - }, - "aboutTranslators": "Übersetzer", - "notifAlreadyInLibraryCount": "Bereits in der Bibliothek ({completed}/{total})", - "editMetadataFieldTitle": "Titel", - "@editMetadataFieldTitle": { - "description": "Chip label for title field in auto-fill selector" - }, - "downloadFilenameDescription": "Verwende {artist}, {title}, {album}, {track}, {year}, {date}, {disc} als Platzhalter.", - "@downloadFilenameDescription": { - "description": "Description shown in filename format editor" - }, - "@notifDownloadsFinishedBody": { - "description": "Notification body when queue finishes with failures", - "placeholders": { - "completed": { - "type": "int" - }, - "failed": { - "type": "int" - } - } - }, - "@libraryFolderNotExist": { - "description": "Error when folder doesn't exist" - }, - "@playlistsCount": { - "description": "Playlist count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@loadingSharedLink": { - "description": "Status when opening shared URL" - }, - "extensionServiceHealth": "Service-Gesundheit", - "@extensionServiceHealth": { - "description": "Extension capability label for service health checks" - }, - "@collectionDeletePlaylistsMessage": { - "description": "Confirmation message for deleting selected playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "setupStorageDescription": "SpotiFLAC benötigt Speicherrechte, um die heruntergeladenen Musikdateien zu speichern.", - "tutorialReadyMessage": "You're ready. Select your extensions, then search or paste a supported link.", - "tutorialLibraryTip3": "Browse tracks, albums, and playlists in list or grid views", - "selectionDeletePlaylistsCount": "Delete {count} {count, plural, =1{playlist} other{playlists}}", - "appearanceThemeLight": "Hell", - "queueEmptyHistorySubtitle": "Heruntergeladene Titel werden hier angezeigt", - "@queueEmptyHistorySubtitle": { - "description": "Empty state subtitle for download history" - }, - "backupRestoreFailed": "Failed to restore backup", - "@backupRestoreFailed": { - "description": "Snackbar when restore fails" - }, - "queueFlacQueuedWithSkipped": "{addedCount} Titel zur Warteschlange hinzugefügt, {skippedCount} übersprungen", - "@queueFlacQueuedWithSkipped": { - "description": "Snackbar when some selected local tracks were queued for FLAC redownload and some were skipped", - "placeholders": { - "addedCount": { - "type": "int" - }, - "skippedCount": { - "type": "int" - } - } - }, - "@trackReplayGain": { - "description": "Three-dot menu option to scan loudness and write ReplayGain tags" - }, - "@downloadedAlbumDownloadedCount": { - "description": "Downloaded tracks count badge", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "setupFolderChoose": "Speicherort auswählen", - "dialogDownloadAllTitle": "Alle Herunterladen", - "providerPriorityInfo": "Wenn kein Titel bei dem ersten Anbieter nicht verfügbar ist, wird die App automatisch den nächsten versuchen.", - "@providerPriorityInfo": { - "description": "Info tip about fallback behavior" - }, - "@dialogDiscardChanges": { - "description": "Dialog title - unsaved changes warning" - }, - "discographyNoAlbums": "Es sind keine Alben verfügbar", - "downloadAppleQqMultiPersonDisabled": "Standardlyrics ohne Lautsprecher-Labels", - "cacheNoData": "Keine gecachten Daten", - "@cacheNoData": { - "description": "Label when cache category has no data" - }, - "tutorialStartDownloadSemantics": "Download starten", - "@tutorialStartDownloadSemantics": { - "description": "Accessibility label for idle download button in tutorial demo" - }, - "logIssueIspBlockingSuggestion": "Versuche es einem VPN oder ändere DNS auf 1.1.1.1 oder 8.8.8.8", - "aboutTitle": "Über", - "@cueSplitButton": { - "description": "Button text to start CUE splitting" - }, - "appearanceHistoryView": "Verlaufsansicht", - "audioAnalysisSampleRate": "Abtastrate", - "@settingsCache": { - "description": "Settings menu item - cache management" - }, - "lyricsProvidersInfoText": "Extension lyrics providers run before built-in lyrics providers. At least one provider must remain enabled.", - "cacheTrackLookup": "Titel Such-Cache", - "extensionsHomeFeedOffSubtitle": "Start-Feed nicht auf dem Hauptbildschirm anzeigen", - "@downloadUsePrimaryArtistOnly": { - "description": "Setting - strip featured artists from folder name" - }, - "@regionCountryIN": { - "description": "Country name for SongLink region picker" - }, - "@libraryFilterQualityLossy": { - "description": "Filter option - lossy compressed audio" - }, - "extensionRefreshStatus": "Status aktualisieren", - "notifAllDownloadsComplete": "Alle Downloads abgeschlossen", - "downloadNeteaseIncludeRomanizationEnabled": "Romanisierungszeilen enthalten", - "editMetadataFieldDateHint": "JJJJ-MM-TT oder JJJJJ", - "@editMetadataFieldDateHint": { - "description": "Hint text for the edit metadata date field" - }, - "trackMetadataShare": "Teilen", - "@trackMetadataShare": { - "description": "Action button - share track" - }, - "discographyDownloadAllSubtitle": "{count} Titel von {albumCount} Releases", - "settingsDonateSubtitle": "Kaufe dem Entwickler einen Kaffee", - "libraryFilterDownloaded": "Heruntergeladen", - "downloadNetworkAnySubtitle": "WLAN oder mobile Daten verwenden", - "@cueSplitNoAudioFile": { - "description": "Error when CUE audio file is missing" - }, - "notifLibraryScanStopped": "Scan wurde vor Abschluss gestoppt.", - "@settingsMetadata": { - "description": "Settings menu item - metadata settings" - }, - "snackbarFailedToInstallNamed": "Failed to install {extensionName}", - "trackCopyLyrics": "Lyrics kopieren", - "@trackCopyLyrics": { - "description": "Action - copy lyrics to clipboard" - }, - "regionCountryAU": "Australia", "downloadAlbumFolderStructure": "Album-Ordnerstruktur", - "downloadMusixmatchAuto": "Auto", - "actionDismiss": "Schließen", - "storeFilterAll": "Alle", - "extensionsDisabled": "Deaktiviert", - "@logClearLogs": { - "description": "Clear button tooltip" - }, - "dialogDownloadAllMessage": "{count} titel herunterladen?", - "@optionsEmbedLyrics": { - "description": "Embed lyrics in audio files" - }, - "tutorialLibraryTitle": "Deine Bibliothek", - "optionsCheckUpdatesSubtitle": "Benachrichtigen, wenn neue Version verfügbar", - "@optionsCheckUpdatesSubtitle": { - "description": "Subtitle for update check" - }, - "collectionPlaylist": "Playlist", - "@collectionPlaylist": { - "description": "Single playlist label" - }, - "dateMonthsAgo": "Vor {count} Monaten", - "@dateMonthsAgo": { - "description": "Relative date - months ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@extensionRemoveButton": { - "description": "Button to uninstall extension" - }, - "collectionPlaylistRenamed": "Playlist umbenannt", - "collectionCreatePlaylist": "Playlist erstellen", - "homeGoToAlbum": "Zum Album gehen", - "@homeGoToAlbum": { - "description": "Context menu item to navigate to the album page" - }, - "folderOrganizationByArtistSubtitle": "Trenne Ordner nach Künstler", - "@optionsClearHistory": { - "description": "Delete all download history" - }, - "@searchAlbums": { - "description": "Search result category - albums" - }, - "@sectionDebug": { - "description": "Settings section header" - }, - "extensionsVersion": "Version {version}", - "@navHome": { - "description": "Bottom navigation - Home tab" - }, - "@editMetadataFieldDate": { - "description": "Chip label for date field in auto-fill selector" - }, - "downloadUsePrimaryArtistOnly": "Primärer Künstler nur für Ordner", - "tutorialExtensionsTip2": "Choose providers for search, downloads, metadata, and fallbacks", - "@setupStorageGranted": { - "description": "Success message for storage permission" - }, - "tutorialWelcomeTitle": "Welcome to SpotiFLAC Mobile!", - "a11ySelectAlbum": "Wähle Album {albumName}", - "@a11ySelectAlbum": { - "description": "Accessibility label for selecting an album", - "placeholders": { - "albumName": { - "type": "String" - } - } - }, - "aboutMobileSource": "Mobiler Quellcode", - "@aboutMobileSource": { - "description": "Link to mobile GitHub repo" - }, - "@extensionCustomUrlHandling": { - "description": "Extension detail section title for custom URL handling" - }, - "@downloadMusixmatchLanguageAuto": { - "description": "Subtitle when no language is set" - }, - "@cancelDownloadKeep": { - "description": "Dialog button - keep the active download (do not cancel)" - }, - "libraryFilterSource": "Quelle", - "@libraryFilterSource": { - "description": "Filter section - source type" - }, - "sectionStorageAccess": "Speicherzugriff", - "logFilterBySeverity": "Logs nach Schweregrad filtern", - "libraryFolderNotExist": "Der ausgewählte Ordner existiert nicht", - "optionsEmbedMetadataSubtitleOn": "Schreibe Metadaten, Cover und eingebettete Songtexte in Dateien", - "albumFolderArtistAlbum": "Künstler/Album", - "@albumFolderArtistAlbum": { - "description": "Album folder option" - }, - "allFilesAccessDeniedMessage": "Zugriff verweigert. Bitte aktiviere \"Zugriff auf alle Dateien\" manuell in den Systemeinstellungen.", - "@allFilesAccessDeniedMessage": { - "description": "Message when permission is permanently denied" - }, - "editMetadataSelectEmpty": "Nur leer", - "settingsLocalLibrarySubtitle": "Musik scannen & Duplikate erkennen", - "@settingsAutoExportFailed": { - "description": "Setting toggle for auto-export" - }, - "cacheCleanupUnusedSubtitle": "Verwaisten Downloadverlauf und fehlende Bibliothekseinträge löschen", - "@tutorialSettingsTitle": { - "description": "Tutorial settings page title" - }, - "libraryFilterMetadataMissingGenre": "Genre fehlt", - "@appearanceSelectAccentColor": { - "description": "Accessibility label for picking an accent color", - "placeholders": { - "hex": { - "type": "String" - } - } - }, - "setupFolderDescription": "Wähle einen Ordner, in dem die heruntergeladene Musik gespeichert wird.", - "extensionDetailsTags": "Tags", - "unknownArtist": "Unbekannter Künstler", - "trackFetchOnlineLyrics": "Online abrufen", - "snackbarNoActionDefined": "Keine Aktion für Taste definiert", - "@snackbarNoActionDefined": { - "description": "Snackbar when an extension button has no action configured" - }, - "downloadAllCount": "Alle {count} Titel herunterladen", - "@downloadAllCount": { - "description": "Download all button with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadedAlbumDiscHeader": "Disc {discNumber}", - "@backupInvalidFile": { - "description": "Snackbar when the chosen file is not a valid backup" - }, - "@extensionHooksAvailable": { - "description": "Post-processing hooks count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@logIssueTrackNotFoundSuggestion": { - "description": "Diagnostic badge suggestion when a track is unavailable" - }, - "@snackbarFileNotFound": { - "description": "Snackbar - file doesn't exist" - }, - "extensionHealthOnline": "Online", - "@extensionHealthOnline": { - "description": "Extension service health status - online" - }, - "settingsSaveDownloadHistorySubtitle": "Keep completed downloads in history and library views", - "trackOptionRemoveFromWishlist": "Von der Wunschliste entfernen", - "extensionsFallbackTitle": "Fallback-Erweiterungen", - "@extensionsFallbackTitle": { - "description": "Setting and page title for choosing which download extensions can be used during fallback" - }, - "metadataSaveFailedFfmpeg": "Fehler beim Speichern der Metadaten über FFmpeg", - "@albumFolderAlbumOnly": { - "description": "Album folder option" - }, - "@albumFolderYearAlbumSubtitle": { - "description": "Folder structure example" - }, - "downloadedAlbumDeleteSelected": "Ausgewählte löschen", - "selectionSelectPlaylistsToDelete": "Playlist zum Löschen wählen", - "@selectionSelectPlaylistsToDelete": { - "description": "Hint shown when no playlists are selected for deletion" - }, - "storeAddRepoDescription": "Gib eine GitHub Repository-URL ein, die eine Registry.json Datei enthält, um Erweiterungen zu durchsuchen und zu installieren.", - "appearanceThemeDark": "Dunkel", - "downloadedAlbumTapToSelect": "Tippe auf Titel zum Auswählen", - "@collectionAddedToFavoriteArtists": { - "description": "Snackbar after adding artist to favorite artists", - "placeholders": { - "artistName": { - "type": "String" - } - } - }, - "@backupRestored": { - "description": "Snackbar after a successful restore" - }, - "nowPlayingLibraryEmpty": "Your library is empty", - "@nowPlayingLibraryEmpty": { - "description": "Snackbar when shuffle library is requested but library has no tracks" - }, - "editMetadataAutoFillNoResults": "Keine passenden Metadaten online gefunden", - "updateDownloading": "Wird heruntergeladen...", - "trackLyricsSource": "Quelle: {source}", - "logFilterLevel": "Stufe", - "logNoLogsYet": "Noch keine Logs", - "cacheSizeOnly": "{size}", - "@cacheSizeOnly": { - "description": "Cache size only", - "placeholders": { - "size": { - "type": "String" - } - } - }, - "trackOpenInService": "Öffne in {serviceName}", - "@trackOpenInService": { - "description": "Button label to open a track in a named music service", - "placeholders": { - "serviceName": { - "type": "String" - } - } - }, - "@cacheLibraryCoverDesc": { - "description": "Description of what library cover cache contains" - }, - "libraryClearConfirmMessage": "Dadurch werden alle gescannten Titel aus deiner Bibliothek entfernt. Deine eigentlichen Musikdateien werden nicht gelöscht.", - "@dialogImportPlaylistMessage": { - "description": "Dialog message - import playlist confirmation", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionsHomeFeedAuto": "Auto", - "searchEmptyResultSubtitle": "Try another keyword", - "@searchEmptyResultSubtitle": { - "description": "Subtitle shown under the empty search result state on the home screen" - }, - "dateToday": "Heute", - "a11yOpenItem": "{itemType} {name} öffnen", - "@a11yOpenItem": { - "description": "Accessibility label for opening a generic item", - "placeholders": { - "itemType": { - "type": "String" - }, - "name": { - "type": "String" - } - } - }, - "audioAnalysisBitDepth": "Bit-Tiefe", - "editMetadataFieldTrackTotal": "Titel insgesamt", - "@editMetadataFieldTrackTotal": { - "description": "Label for total tracks field in the edit metadata sheet" - }, - "@editMetadataFieldDiscTotal": { - "description": "Label for total discs field in the edit metadata sheet" - }, - "replayGainBatchConfirmMessage": "Analyze loudness and write ReplayGain tags to {count} track(s)?", - "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Ordner benannt nach dem Tag des Albumkünstlers", - "@notifDownloadingUpdate": { - "description": "Notification title while downloading an app update", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "@csvImportTracks": { - "description": "Label shown in quality picker for CSV import", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "trackEditMetadata": "Metadaten bearbeiten", - "discographyDownloadAll": "Alle Herunterladen", - "@discographyDownloadAll": { - "description": "Option - download entire discography" - }, - "@editMetadataFieldAlbum": { - "description": "Chip label for album field in auto-fill selector" - }, - "albumFolderArtistAlbumSubtitle": "Alben/Künster Name/Album Name/", - "extensionHealthServiceUnknown": "Dienst-Status unbekannt", - "navHome": "Startseite", - "queueDownloadStarting": "Starte...", - "@dialogRemoveExtension": { - "description": "Dialog title - uninstall extension" - }, - "notifLibraryScanProgressNoTotal": "{scanned} gescannte Dateien • {percentage}%", - "@appearanceAmoledDark": { - "description": "Theme option - pure black" - }, - "qualityHiResFlac": "Hi-Res FLAC", - "selectionSelected": "{count} ausgewählt", - "extensionDetailsInformation": "Info", - "@extensionDetailsInformation": { - "description": "Section title for extension metadata information" - }, - "discographyDownload": "Diskographie herunterladen", - "editMetadataFieldCopyright": "Urheberrecht", - "@setupOpenSettings": { - "description": "Button to open system settings" - }, - "libraryFilterSort": "Sortieren", - "cacheLibraryCoverDesc": "Cover aus lokalen Musikdateien extrahiert. Wird beim nächsten Scannen neu extrahiert.", - "dialogRemoveExtension": "Erweiterung entfernen", - "backupExportSectionTitle": "Create backup", - "downloadEmbedLyricsDisabled": "Metadaten-Einbettung zuerst aktivieren", - "openInOtherServices": "Open in Other Services", - "actionSelectAll": "Alles Auswählen", - "settingsDownloadNetworkSubtitle": "Wähle aus, welches Netzwerk für Downloads verwendet werden soll. Wenn nur WLAN aktiviert wird, werden Downloads auf mobilen Daten angehalten.", - "downloadFolderOrganization": "Ordnerstruktur", - "tutorialWelcomeTip2": "Choose from the audio qualities offered by your download provider", - "@tutorialWelcomeTip2": { - "description": "Tutorial welcome tip 2" - }, - "selectionAllSelected": "Alle Titel sind ausgewählt", - "@selectionAllSelected": { - "description": "Status - all items selected" - }, - "settingsLogsSubtitle": "App-Logs zum Debuggen anzeigen", - "albumFolderYearAlbumSubtitle": "Alben/[2005] Album Name/", - "cancelDownloadKeep": "Behalten", - "optionsDetailedLoggingOn": "Detaillierte Logs werden aufgezeichnet", - "safMigrationMessage2": "Bitte wähle dein Download-Ordner erneut aus, um zum neuen System zu wechseln.", - "@storeChangeRepoTooltip": { - "description": "Tooltip for the change-repository icon button in the app bar" - }, - "regionCountryJP": "Japan", - "notifUpdateFailed": "Update fehlgeschlagen", - "downloadCreatePlaylistSourceFolderRedundant": "Wird durch die Ordnerorganisationseinstellung verarbeitet", - "@trackLyricsSaved": { - "description": "Snackbar after lyrics saved", - "placeholders": { - "fileName": { - "type": "String" - } - } - }, - "downloadLocationSubtitle": "Wählen Sie den Speicherort für Ihre heruntergeladenen Titel", - "trackConvertActionLabelLossless": "{sourceFormat} → {targetFormat} ({quality})", - "lyricsProvidersDisabledSection": "({count}) deaktiviert", - "@dateDaysAgo": { - "description": "Relative date - days ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "librarySourceLocal": "Lokal", - "backupContentsExtensions": "{count, plural, =1{1 extension} other{{count} extensions}}", - "sectionService": "Anbieter", - "lyricsProviderQqMusicDesc": "QQ Music (gut für chinesische Lieder, via Proxy)", - "@lyricsProviderQqMusicDesc": { - "description": "Description for QQ Music provider" - }, - "cacheCleanupUnusedDesc": "Verwaisten Downloadverlauf und Bibliothekseinträge für fehlende Dateien entfernen.", - "selectionTapPlaylistsToSelect": "Zum Auswählen auf Playlists tippen", - "notifUpdateFailedBody": "Update konnte nicht heruntergeladen werden. Versuche es später erneut.", - "downloadNeteaseIncludeTranslationDisabled": "Original Lyrics verwenden", - "artistPopular": "Beliebt", - "extensionRemoveButton": "Erweiterung entfernen", - "allFilesAccessEnabledSubtitle": "Darf in jeden Ordner schreiben", - "@allFilesAccessEnabledSubtitle": { - "description": "Subtitle when all files access is enabled" - }, - "extensionsSearchProvider": "Such-Provider", - "tutorialWelcomeDesc": "Learn how to find music with extensions, choose the quality you want, and manage downloads in SpotiFLAC Mobile.", - "selectionBatchConvertConfirmTitle": "Batch-Konvertierung", - "extensionMetadataProvider": "Metadaten-Anbieter", - "queueDownloadedFileMissing": "Heruntergeladene Datei fehlt", - "logClearLogs": "Logs löschen", - "@downloadAppleQqMultiPerson": { - "description": "Setting for word-by-word multi-person lyrics from Apple Music and QQ Music" - }, - "tutorialWelcomeTip1": "Search with an installed extension or paste a supported music link", - "@tutorialWelcomeTip1": { - "description": "Tutorial welcome tip 1" - }, - "logIssueRateLimitedSuggestion": "Warte ein paar Minuten, bevor du es erneut versuchst", - "downloadAllowLocalNetworkEnabled": "Requests to local/private addresses are allowed (for local proxy or custom DNS)", - "@regionCountryUS": { - "description": "Country name for SongLink region picker" - }, - "trackArtist": "Künstler", - "extensionCustomUrlHandling": "Benutzerdefinierte URL-Handling", - "appearanceDynamicColorSubtitle": "Farben deines Hintergrundbilds verwenden", - "@appearanceDynamicColorSubtitle": { - "description": "Subtitle for dynamic color" - }, - "searchSortDefault": "Standard", - "@downloadFallbackExtensions": { - "description": "Settings item for configuring fallback extension providers" + "@downloadAlbumFolderStructure": { + "description": "Setting - album folder organization" }, "albumFolderStructureDescription": "Choose how album folders are structured", "@albumFolderStructureDescription": { "description": "Album folder structure picker description" }, - "libraryBuiltInPreviewPlayerSubtitle": "Quick local previews inside SpotiFLAC Mobile", - "@libraryBuiltInPreviewPlayerSubtitle": { - "description": "Subtitle for built-in preview player option" + "downloadUseAlbumArtistForFolders": "Album-Künstler für Ordner verwenden", + "@downloadUseAlbumArtistForFolders": { + "description": "Setting - choose whether artist folders use Album Artist or Track Artist" }, - "storageModeAppFolder": "App-Ordner (empfohlen)", - "@actionPause": { - "description": "Action button - pause download" + "downloadUsePrimaryArtistOnly": "Primärer Künstler nur für Ordner", + "@downloadUsePrimaryArtistOnly": { + "description": "Setting - strip featured artists from folder name" }, - "actionPaste": "Einfügen", - "extensionSettingsCount": "{count} {count, plural, =1{Einstellung} other{Einstellungen}}", - "downloadNativeWorker": "Nativer Download Dienst", - "releaseTypeEp": "EP", - "@releaseTypeEp": { - "description": "Badge label for EP releases" + "downloadUsePrimaryArtistOnlyEnabled": "Vorgestellte Künstler aus dem Ordnernamen entfernt (z.B. Justin Bieber, Quavo → Justin Bieber)", + "@downloadUsePrimaryArtistOnlyEnabled": { + "description": "Subtitle when primary artist only is enabled" }, - "snackbarExtensionInstalledEnable": "{extensionName} installed. Enable it in Settings > Extensions", - "cacheRefreshStats": "Statistik aktualisieren", - "collectionPlaylistChangeCover": "Coverbild ändern", - "@collectionPlaylistChangeCover": { - "description": "Bottom sheet action to pick a custom cover image for a playlist" + "downloadUsePrimaryArtistOnlyDisabled": "Vollständiger Künstler für Ordnername", + "@downloadUsePrimaryArtistOnlyDisabled": { + "description": "Subtitle when primary artist only is disabled" }, - "optionsClearHistory": "Download-Verlauf löschen", - "trackGenre": "Genre", - "snackbarSelectedPlaylistsEmpty": "Ausgewählte Playlisten haben keine Titel", - "collectionAddedTracksToPlaylist": "{count} {count, plural, =1{Titel} other{Titel}} zu {playlistName} hinzugefügt", - "downloadNeteaseIncludeRomanization": "Netease: Romanisierung einschließen", - "libraryFilterMetadataMissingArtist": "Fehlender Künstler", - "extensionsNoCustomSearch": "Keine Erweiterungen mit benutzerdefinierter Suche", - "@extensionsTitle": { - "description": "Extensions page title" + "downloadSelectQuality": "Qualität wählen", + "@downloadSelectQuality": { + "description": "Dialog title - choose audio quality" }, - "extensionDownloadProvider": "Download-Anbieter", - "@extensionDownloadProvider": { - "description": "Capability - provides downloads" - }, - "lyricsMode": "Lyrics-Modus", - "aboutReportIssueSubtitle": "Melde Probleme, die dir auffallen", - "@downloadSeparateSinglesFolder": { - "description": "Setting - separate folder for singles" + "downloadFrom": "Herunterladen von", + "@downloadFrom": { + "description": "Label - download source" }, "appearanceAmoledDark": "AMOLED Schwarz", - "logIssueNetworkErrorDescription": "Verbindungsprobleme erkannt", - "folderOrganizationByArtistAlbumSubtitle": "Verschachtelte Ordner für Künstler und Album", - "@libraryForceFullScanSubtitle": { - "description": "Subtitle for force full scan button" + "@appearanceAmoledDark": { + "description": "Theme option - pure black" }, - "setupGrantPermission": "Berechtigung erlauben", - "lyricsProvidersDescription": "Lyrics aktivieren, deaktivieren und neu ordnen. Anbieter werden von oben nach unten ausprobiert, bis Lyrics gefunden werden.", - "dateDaysAgo": "Vor {count} Tagen", - "extensionsHomeFeedDescription": "Wählen Sie die Erweiterung aus, die den Start-Feed auf dem Hauptbildschirm anzeigt", - "downloadLossyMp3Subtitle": "Beste Kompatibilität, ~10MB pro Titel", - "@downloadLossyMp3Subtitle": { - "description": "Subtitle for MP3 320kbps lossy option" - }, - "nowPlayingDetails": "Details", - "collectionWishlistEmptyTitle": "Wunschliste ist leer", - "downloadAppleQqMultiPersonEnabled": "Sängerlabel für Duette und Gruppentitel enthalten", - "@snackbarExtensionUpdatedVersion": { - "description": "Snackbar after updating an extension from the repo tab", - "placeholders": { - "extensionName": { - "type": "String" - }, - "version": { - "type": "String" - } - } - }, - "extensionHealthServiceDegraded": "Dienst Eingeschränkt", - "selectionConvertNoConvertible": "Keine konvertierbare Titel ausgewählt", - "setupStorageGranted": "Speicherberechtigung erlaubt!", - "downloadAllowLocalNetwork": "Allow Local Network Access", - "nowPlayingNoLyrics": "No lyrics in this file", - "selectionDeleteTracksCount": "Lösche {count} {count, plural, =1{Titel} other{Titel}}", - "@selectionDeleteTracksCount": { - "description": "Button label for deleting selected tracks", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@libraryForceFullScan": { - "description": "Button to force a complete rescan of library" - }, - "notifLibraryScanExcluded": "{count} ausgeschlossen", - "@aboutPaxsenixSubtitle": { - "description": "Subtitle for Paxsenix special thanks entry on the about page" - }, - "setupChangeFolderTooltip": "Ordner ändern", - "logIssueIspBlockingDescription": "Dein ISP blockiert möglicherweise den Zugriff auf den Download Dienst", - "@logIssueIspBlockingDescription": { - "description": "Diagnostic badge description for ISP blocking" - }, - "libraryClear": "Bibliothek löschen", - "collectionRemoveFromPlaylist": "Von Playlist entfernen", - "@collectionRemoveFromPlaylist": { - "description": "Tooltip for removing track from playlist" - }, - "backupIncludeSecrets": "Include extension credentials", - "notifDownloadsFinishedBody": "{completed, plural, =1{1 Titel heruntergeladen} other{{completed} Titel heruntergeladen}}, {failed, plural, =1{1 fehlgeschlagen} other{{failed} fehlgeschlagen}}", - "storeCategoryMetadata": "Metadaten", - "@trackLyricsEmbedded": { - "description": "Snackbar - lyrics saved to file" - }, - "editMetadataFieldDiscTotal": "Disc gesamt", - "tutorialLibraryTip1": "Manage active, pending, and completed downloads from the Library queue", - "playlistsCount": "{count, plural, =1{1 Playlist} other{{count} Playlists}}", - "downloadCreatePlaylistSourceFolderDisabled": "Alle Titel direkt im Download-Ordner gespeichert", - "@downloadFallbackExtensionsSubtitle": { - "description": "Subtitle for fallback extensions item" - }, - "libraryFilterLocal": "Lokal", - "tutorialDownloadInProgressSemantics": "Download wird ausgeführt", - "searchSortDurationLong": "Dauer (längste)", - "@appearanceLanguage": { - "description": "Language setting title" - }, - "libraryAbout": "Über die lokale Bibliothek", - "@libraryAbout": { - "description": "Section header for about info" - }, - "cueSplitNoAudioFile": "Audiodatei für dieses CUE-Sheet nicht gefunden", - "notifUpdateReadyBody": "SpotiFLAC Mobile v{version} heruntergeladen. Zum Installieren tippen.", - "appearanceSelectAccentColor": "Wähle Akzentfarbe {hex}", - "@homeAlbumInfoUnavailable": { - "description": "Snackbar when album info cannot be loaded" - }, - "trackReplayGain": "Rescan ReplayGain", - "downloadSeparateSinglesFolder": "Singles Ordner trennen", - "trackAlbumArtist": "Album Künstler", - "qualityFlacLossless": "FLAC Verlustfrei", - "@extensionVerificationHelpMessageWaiting": { - "description": "Dialog message when verification may need manual browser help" - }, - "tutorialSettingsTitle": "Passe deine Benutzererfahrung an", - "extensionActionFailed": "Aktion fehlgeschlagen", - "@storeEmptyNoResults": { - "description": "Message when search/filter returns no results" - }, - "downloadAppleQqMultiPerson": "Apple / QQ: Multi-Personen-Lyrics", - "downloadFallbackExtensionsSubtitle": "Wähle, welche Erweiterungen als Fallback verwendet werden können", - "storeExtensionsCount": "{count} {count, plural, =1{Erweiterung} other{Erweiterungen}}", - "trackCoverNoEmbeddedArt": "Kein eingebettetes Albumcover gefunden", - "@trackCoverNoEmbeddedArt": { - "description": "Message shown when a track file has no embedded cover art" - }, - "snackbarExtensionUpdatedVersion": "{extensionName} updated to v{version}", - "setupStorageAccessMessageAndroid11": "Android 11+ benötigt die Berechtigung „Auf alle Dateien“, um Dateien im ausgewählten Download-Ordner zu speichern.", - "notifDownloadsFinished": "Downloads abgeschlossen ({completed} fertig, {failed} fehlgeschlagen)", - "notifLibraryScanProgressWithTotal": "{scanned}/{total} Dateien • {percentage}%", - "optionsPrimaryProvider": "Primärer Anbieter", - "@optionsPrimaryProvider": { - "description": "Main search provider setting" - }, - "logIssueTrackNotFoundSuggestion": "Der Titel ist möglicherweise nicht in verlustfreier Qualität verfügbar", - "collectionAddedToLoved": "\"{trackName}\" zu Lieblingssongs hinzugefügt", - "albumFolderArtistAlbumFlat": "Künstler / Album (Singles flach)", - "homeAlbumInfoUnavailable": "Albuminfo nicht verfügbar", - "settingsLyrics": "Lyrics", - "extensionVerificationBrowserExternal": "External", - "regionCountryIN": "Indien", - "extensionHealthUnknown": "Unbekannt", - "backupContentsWishlist": "{count} wishlist {count, plural, =1{track} other{tracks}}", - "settingsAutoExportFailed": "Auto-Export fehlgeschlagener Downloads", - "logFilterSection": "Filter", - "dialogDiscardChanges": "Änderungen verwerfen?", - "@qualityHiResFlacSubtitle": { - "description": "Technical spec for hi-res" - }, - "searchTracks": "Titel", - "searchAlbums": "Alben", - "trackConvertFormat": "Format konvertieren", - "metadataProviderPriorityTitle": "Metadaten Priorität", - "libraryFolderHint": "Tippe um Ordner auszuwählen", - "downloadedAlbumDeleteMessage": "{count} {count, plural, =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": { - "count": { - "type": "int" - } - } - }, - "trackAlbum": "Album", - "updateAvailable": "Update verfügbar", - "optionsEmbedLyrics": "Liedtexte einbetten", - "trackReEnrichProgress": "Metadaten neu anreichern...", - "@trackReEnrichProgress": { - "description": "Snackbar while re-enriching metadata" - }, - "audioAnalysisPeak": "Maximum", - "@audioAnalysisPeak": { - "description": "Peak amplitude metric label" - }, - "optionsExtensionStoreSubtitle": "Repo-Tab in der Navigation anzeigen", - "settingsTitle": "Einstellungen", - "@settingsAbout": { - "description": "Settings section - app info" - }, - "cacheExploreFeed": "Feed-Cache entdecken", - "@dialogDownloadPlaylistsMessage": { - "description": "Dialog message for bulk playlist download confirmation", - "placeholders": { - "trackCount": { - "type": "int" - }, - "playlistCount": { - "type": "int" - } - } - }, - "downloadedAlbumSelectedCount": "{count} ausgewählt", - "downloadAskQualitySubtitle": "Qualitätsauswahl für jeden Download anzeigen", - "filenameShowAdvancedTags": "Erweiterte Tags anzeigen", - "@filenameShowAdvancedTags": { - "description": "Toggle label for showing advanced filename tags" - }, - "@editMetadataFieldComment": { - "description": "Label for comment field in the edit metadata sheet" - }, - "downloadFallbackExtensions": "Fallback-Erweiterungen", - "downloadAlbumArtistMetadataFull": "Album Artist metadata: Full", - "cacheLibraryCover": "Bibliotheks-Cover-Cache", - "actionShuffle": "Shuffle", - "backupCreated": "Backup created", - "downloadLossyAacSubtitle": "Beste mobile Kompatibilität, M4A Container", - "actionCreate": "Erstellen", - "snackbarAddedToQueueGeneric": "Added to queue", - "downloadedAlbumDownloadedCount": "{count} heruntergeladen", - "snackbarLoadingCueSheet": "CAE-Sheet wird geladen...", - "@trackCoverClearSelected": { - "description": "Tooltip for clearing the newly selected cover art" - }, - "aboutOriginalCreator": "Schöpfer des ursprünglichen SpotiFLAC", - "a11yTrackByArtist": "{trackName} von {artistName}", - "audioAnalysisDynamicRange": "Dynamischer Bereich", - "homeChangeSearchProviderTooltip": "Suchanbieter ändern", - "loadingSharedLink": "Link wird geladen...", - "lyricsModeEmbedSubtitle": "Lyrics in FLAC Metadaten gespeichert", - "setupNotificationBackgroundDescription": "Erhalte Benachrichtigungen über den Fortschritt und die Fertigstellung deiner Downloads, selbst wenn die App im Hintergrund läuft.", - "snackbarViewQueue": "Warteschlange anzeigen", - "@audioAnalysisDuration": { - "description": "Duration metric label" - }, - "downloadSeparateSinglesDisabled": "Singles und Alben im selben Ordner gespeichert", - "backupRestored": "Backup restored successfully", - "trackConvertConfirmMessageLosslessCapped": "Convert from {sourceFormat} to {targetFormat} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original file will be deleted after conversion.", - "@trackConvertConfirmMessageLosslessCapped": { - "description": "Confirmation dialog message for capped lossless conversion of a single file", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "quality": { - "type": "String" - } - } - }, - "discographySelectAlbumsSubtitle": "Wähle bestimmte Alben oder Singles", - "@discographySelectAlbumsSubtitle": { - "description": "Subtitle for select albums option" - }, - "backupImportSectionDescription": "Pick a backup file to restore your data. This replaces the current settings, history and library on this device.", - "errorUrlFetchFailed": "Laden fehlgeschlagen. Bitte erneut versuchen.", - "lyricsProviderLyricsPlusDesc": "Word-by-word karaoke lyrics (Apple/Musixmatch/Spotify/QQ, via proxy)", - "dialogSave": "Speichern", - "trackReEnrichSearching": "Suche Metadaten online...", - "regionCountryUS": "United States", - "audioAnalysisDescription": "Verlustfreie Qualität mit Spektrumanalyse überprüfen", - "downloadFilenameFormat": "Dateinamenformat", - "cueSplitTitle": "CUE-Sheet aufteilen", - "settingsAppSubtitle": "Updates, Daten, Erweiterungsrepo, Debug", - "@settingsAppSubtitle": { - "description": "Subtitle for app settings" - }, - "@setupPermissionRequiredMessage": { - "description": "Generic permission required message", - "placeholders": { - "permissionType": { - "type": "String" - } - } - }, - "errorMissingExtensionSource": "Kann {item} nicht laden wegen fehlender Erweiterungsquelle", - "albumFolderAlbumOnlySubtitle": "Alben/Album Name/", - "logIssueTrackNotFoundLabel": "TITEL NICHT GEFUNDEN", - "extensionVerificationHelpTitleManual": "Open verification manually", - "dialogDiscard": "Verwerfen", - "storageModeSaf": "Benutzerdefinierter Ordner (SAF)", - "errorRateLimited": "Anfragelimit überschritten", - "downloadSelectQuality": "Qualität wählen", - "dialogDownloadPlaylistsMessage": "Lade {trackCount} {trackCount, plural, =1{Titel} other{Titel}} von {playlistCount} {playlistCount, plural, =1{Playlist} other{Playlists}}?", - "collectionFoldersTitle": "Meine Ordner", - "progressFetchingMetadata": "Lade Metadaten... {current}/{total}", - "settingsDownloadNetworkAny": "WLAN + Mobile Daten", - "audioAnalysisDuration": "Länge", - "audioAnalysisAnalyzing": "Audio wird analysiert...", - "extensionVerificationHelpMessageWaiting": "If the browser did not open, or verification finished but did not return to SpotiFLAC Mobile, open this link again or copy it manually.", - "editMetadataFieldDiscNum": "Disk #", - "@editMetadataFieldDiscNum": { - "description": "Chip label for disc number field in auto-fill selector" - }, - "@noTracksFoundForAlbum": { - "description": "Empty state message when an album has no tracks" - }, - "previewPlay": "Vorschau abspielen", - "setupPermissionRequiredMessage": "{permissionType}-Berechtigung ist erforderlich für\ndie beste Benutzererfahrung. Du kannst dies später in den Einstellungen ändern.", - "aboutVersion": "Version", - "qualityHiResFlacSubtitle": "24-Bit / bis 96kHz", - "audioAnalysisSamples": "Proben", - "libraryFilterQualityHiRes": "Hi-Res (24bit)", - "sectionMetadataProviders": "Anbieter", - "@sectionMetadataProviders": { - "description": "Settings section header for metadata providers" - }, - "trackCopyright": "Urheberrecht", - "libraryForceFullScanSubtitle": "Alle Dateien erneut scannen und Cache ignorieren", - "trackCopiedToClipboard": "In Zwischenablage kopiert", - "optionsEmbedMetadata": "Eingebettete Metadaten", - "collectionAddedTracksToPlaylistWithExisting": "{count} {count, plural, =1{Titel} other{Titel}} zu {playlistName} ({alreadyCount} bereits in der Playlist)", - "@collectionAddedTracksToPlaylistWithExisting": { - "description": "Snackbar after adding multiple tracks to a playlist when some were already present", - "placeholders": { - "count": { - "type": "int" - }, - "playlistName": { - "type": "String" - }, - "alreadyCount": { - "type": "int" - } - } - }, - "storeCategoryIntegration": "Integration", - "storeClearFilters": "Filter entfernen", - "navSettings": "Einstellungen", - "@homeRecent": { - "description": "Section header for recent searches" - }, - "sectionApp": "App", - "@sectionLanguage": { - "description": "Settings section header for language" - }, - "downloadFilterContributingDisabled": "Volle Album Künstler String verwendet", - "albumFolderArtistAlbumSinglesSubtitle": "Künstler/Album/ und Künstler/Singles/", - "collectionDeletePlaylistsMessage": "Lösche {count} {count, plural, =1{Playlist} other{Playlists}}?", - "lyricsProvidersSaved": "Priorität des Lyrics-Anbieters gespeichert", - "@trackReplayGainFailed": { - "description": "Snackbar message when ReplayGain scan/write fails" - }, - "trackTrackName": "Name des Titels", - "homeRecent": "Zuletzt", - "recentEmpty": "Noch keine aktuellen Einträge", - "cacheClearAll": "Gesamten Cache leeren", - "trackReEnrichFieldReleaseInfo": "Datum & ISRC", - "regionCountryMX": "Mexico", - "a11yOpenAlbumByArtistTrackCount": "Öffne Album {albumName} von {artistName}, {trackCount} Titel", - "editMetadataFieldAlbum": "Album", - "settingsAbout": "Über", - "libraryFilterTitle": "Filter", - "cleanupOrphanedDownloadsResult": "Entfernte {count} verwaiste Einträge aus dem Verlauf", - "extensionHooksAvailable": "{count} Hook(s) verfügbar", - "backupContentsSettings": "Appeinstellungen", - "trackLyricsEmbedded": "Lyrics erfolgreich eingebettet", - "optionsUpdateChannelPreview": "Vorschau-Versionen erhalten", - "collectionAddedToFavoriteArtists": "\"{artistName}\" zu Lieblingskünstlern hinzugefügt", - "libraryForceFullScan": "Vollen Neu-Scan erzwingen", - "snackbarProviderPrioritySaved": "Anbieterpriorität gespeichert", - "collectionFavoriteArtistsEmptySubtitle": "Tippe auf das Herz auf einer Künstlerseite, um sie hier zu sehen", - "libraryBuiltInPlayerInfo": "The built-in player is a preview tool for checking local tracks quickly. Use an external music player for actual listening.", - "extensionServiceStatus": "Dienststatus", - "dateWeeksAgo": "Vor {count} Wochen", - "historyFilterSingles": "Singles", - "tutorialSettingsTip2": "Set quality, concurrency, filenames, and conversion preferences", - "trackLyricsSaved": "Lyrics in {fileName} gespeichert", - "cacheClearAllConfirmTitle": "Gesamten Cache leeren?", - "noTracksFoundForAlbum": "Keine Titel in diesem Album gefunden", - "sectionLanguage": "Sprache", - "@logIssueTrackNotFoundDescription": { - "description": "Diagnostic badge description when a track is unavailable" - }, - "setupSelectFolder": "Ordner wählen", - "dateYesterday": "Gestern", - "collectionAddToPlaylist": "Zur Playlist hinzufügen", - "snackbarUnsupportedAudioFormat": "Nicht unterstütztes Audioformat", - "libraryScanCancelled": "Scan abgebrochen", - "appearanceLanguage": "App Sprache", - "extensionsTitle": "Erweiterungen", - "dialogImportPlaylistMessage": "Found {count} tracks in the playlist file. Add them to download queue?", - "permissionNotification": "Benachrichtigung", - "notifUpdateReady": "Update bereit", - "lyricsModeDescription": "Wähle wie Songtexte mit deinen Downloads gespeichert werden", - "downloadFrom": "Herunterladen von", - "collectionWishlistEmptySubtitle": "Tippe auf das + bei den Titeln, um sie zum späteren Herunterladen zu speichern", - "cueSplitSplitting": "CUE-Sheet wird geteilt... ({current}/{total})", - "trackOptionAddToWishlist": "Zur Wunschliste hinzufügen", - "settingsBackup": "Backup & Restore", - "aboutPaxsenixSubtitle": "Lyrics proxy for Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou, and Genius", - "notifDownloadCompleteCount": "Download abgeschlossen ({completed}/{total})", - "extensionsNoDownloadProvider": "Keine Erweiterungen mit Download-Provider", - "libraryFilterSortGenreAsc": "Genre (A-Z)", - "trackReplayGainFailed": "Failed to add ReplayGain tags", - "collectionPlaylistRemoveCover": "Cover entfernen", - "storeEmptyNoResults": "Keine Erweiterungen gefunden", - "logIssueTrackNotFoundDescription": "Einige Titel konnten auf Download-Diensten nicht gefunden werden", - "editMetadataFieldComment": "Kommentar", - "settingsMetadata": "Metadaten", - "settingsCache": "Speicher & Cache", - "providerPriorityFallbackExtensionsHint": "Hier werden nur aktivierte Erweiterungen mit Download-Provider-Funktion aufgelistet.", - "libraryFilterAll": "Alle", - "notifDownloadingUpdate": "SpotiFLAC Mobile v{version} wird heruntergeladen", - "extensionsProviderPrioritySection": "Provider-Priorität", - "storeChangeRepoTooltip": "Repository ändern", - "snackbarFailedToInstall": "Erweiterung konnte nicht installiert werden", - "libraryScanSubtitle": "Suche nach Audiodateien", - "snackbarExtensionInstalled": "{extensionName} installiert.", - "setupOpenSettings": "Einstellungen öffnen", - "extensionsInstalledSection": "Installierte Erweiterungen", - "aboutLinks": "Links", - "trackCoverClearSelected": "Ausgewähltes Cover löschen", - "libraryAutoScanWeekly": "Wöchentlich", - "downloadMusixmatchLanguageAuto": "Auto (Originalsprache)", - "optionsDefaultSearchTab": "Standard Such-Tab", - "downloadPrimaryArtistOnlyOn": "Primary only: On", - "folderOrganizationDescription": "Heruntergeladene Dateien in Ordner organisieren", - "@folderOrganizationDescription": { - "description": "Folder organization sheet description" - }, - "lyricsModeEmbed": "In Datei einbetten", - "trackReEnrichFfmpegFailed": "FFmpeg Metadaten-Einbettung fehlgeschlagen", - "@extensionsSearchProviderDescription": { - "description": "Search provider setting description" - }, - "libraryFilterQualityLossy": "Verlustbehaftet", - "actionPause": "Pause", - "csvImportTracks": "{count} Titel aus CSV", - "actionGo": "Los", - "sectionDebug": "Debug", - "editMetadataFieldDate": "Datum", - "timeHoursAgo": "{count, plural, =1{vor 1 Stunde} other{vor {count} Stunden}}", - "sectionPerformance": "Performance", - "extensionsDownloadPrioritySubtitle": "Download-Service-Reihenfolge festlegen", - "cacheAppDirectoryDesc": "HTTP-Antworten, WebView Daten und andere temporäre App-Daten.", - "sectionData": "Daten", - "notifFinalizingTrack": "{trackName} wird fertiggestellt", - "snackbarFileNotFound": "Datei nicht gefunden", - "extensionQualityOptions": "Qualitätsoptionen", - "extensionVerificationBrowserSubtitleExternal": "Open challenges in the default browser first", - "backupInvalidFile": "This file is not a valid SpotiFLAC backup", - "storeRepoDialogTitle": "Erweiterungs-Repository", - "extensionsSearchProviderDescription": "Wähle den Dienst für die Suche von Titel", - "albumFolderAlbumOnly": "Nur Alben", - "nowPlayingOpenInExternalPlayer": "Open in external player", - "cueSplitButton": "In Titel aufteilen", - "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" - } - } + "appearanceAmoledDarkSubtitle": "AMOLED Hintergrund", + "@appearanceAmoledDarkSubtitle": { + "description": "Subtitle for AMOLED dark" }, "appearanceHeroAnimations": "Hero animations", "@appearanceHeroAnimations": { @@ -5891,6 +2213,46 @@ "@appearanceHeroAnimationsSubtitle": { "description": "Subtitle for the Hero animations toggle" }, + "appearanceForceBlur": "Always use blur effects", + "@appearanceForceBlur": { + "description": "Toggle that forces backdrop blur on even when the device profile disabled it" + }, + "appearanceForceBlurSubtitle": "Enable the navigation bar blur even on devices where it is off by default. May cost performance.", + "@appearanceForceBlurSubtitle": { + "description": "Subtitle for the force-blur toggle" + }, + "queueClearAll": "Alles löschen", + "@queueClearAll": { + "description": "Button - clear all queue items" + }, + "queueClearAllMessage": "Bist du dir sicher, dass du alle Downloads löschen möchten?", + "@queueClearAllMessage": { + "description": "Clear queue confirmation" + }, + "settingsAutoExportFailed": "Auto-Export fehlgeschlagener Downloads", + "@settingsAutoExportFailed": { + "description": "Setting toggle for auto-export" + }, + "settingsAutoExportFailedSubtitle": "Fehlgeschlagene Downloads automatisch in eine TXT-Datei speichern", + "@settingsAutoExportFailedSubtitle": { + "description": "Subtitle for auto-export setting" + }, + "settingsDownloadNetwork": "Download Netzwerk", + "@settingsDownloadNetwork": { + "description": "Setting for network type preference" + }, + "settingsDownloadNetworkAny": "WLAN + Mobile Daten", + "@settingsDownloadNetworkAny": { + "description": "Network option - use any connection" + }, + "settingsDownloadNetworkWifiOnly": "Nur WLAN", + "@settingsDownloadNetworkWifiOnly": { + "description": "Network option - only use WiFi" + }, + "settingsDownloadNetworkSubtitle": "Wähle aus, welches Netzwerk für Downloads verwendet werden soll. Wenn nur WLAN aktiviert wird, werden Downloads auf mobilen Daten angehalten.", + "@settingsDownloadNetworkSubtitle": { + "description": "Subtitle explaining network preference" + }, "settingsConcurrentDownloads": "Concurrent downloads", "@settingsConcurrentDownloads": { "description": "Setting title - how many tracks download at the same time" @@ -5912,6 +2274,854 @@ } } }, + "albumFolderArtistAlbum": "Künstler/Album", + "@albumFolderArtistAlbum": { + "description": "Album folder option" + }, + "albumFolderArtistAlbumSubtitle": "Alben/Künster Name/Album Name/", + "@albumFolderArtistAlbumSubtitle": { + "description": "Folder structure example" + }, + "albumFolderArtistYearAlbum": "Künstler / [Year] Album", + "@albumFolderArtistYearAlbum": { + "description": "Album folder option with year" + }, + "albumFolderArtistYearAlbumSubtitle": "Alben/Künster Name/[2005] Album Name/", + "@albumFolderArtistYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "albumFolderAlbumOnly": "Nur Alben", + "@albumFolderAlbumOnly": { + "description": "Album folder option" + }, + "albumFolderAlbumOnlySubtitle": "Alben/Album Name/", + "@albumFolderAlbumOnlySubtitle": { + "description": "Folder structure example" + }, + "albumFolderYearAlbum": "[Year] Album", + "@albumFolderYearAlbum": { + "description": "Album folder option with year" + }, + "albumFolderYearAlbumSubtitle": "Alben/[2005] Album Name/", + "@albumFolderYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "albumFolderArtistAlbumSingles": "Künstler / Album + Singles", + "@albumFolderArtistAlbumSingles": { + "description": "Album folder option with singles inside artist" + }, + "albumFolderArtistAlbumSinglesSubtitle": "Künstler/Album/ und Künstler/Singles/", + "@albumFolderArtistAlbumSinglesSubtitle": { + "description": "Folder structure example" + }, + "albumFolderArtistAlbumFlat": "Künstler / Album (Singles flach)", + "@albumFolderArtistAlbumFlat": { + "description": "Album folder option with singles directly in artist folder" + }, + "albumFolderArtistAlbumFlatSubtitle": "Künstler/Album/ Und Künstler/Lied.flac", + "@albumFolderArtistAlbumFlatSubtitle": { + "description": "Folder structure example for flat singles" + }, + "downloadedAlbumDeleteSelected": "Ausgewählte löschen", + "@downloadedAlbumDeleteSelected": { + "description": "Button - delete selected tracks" + }, + "downloadedAlbumDeleteMessage": "{count} {count, plural, =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": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumSelectedCount": "{count} ausgewählt", + "@downloadedAlbumSelectedCount": { + "description": "Selection count indicator", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumTapToSelect": "Tippe auf Titel zum Auswählen", + "@downloadedAlbumTapToSelect": { + "description": "Selection hint" + }, + "downloadedAlbumDeleteCount": "Lösche {count} {count, plural, =1{Titel} other{Titel}}", + "@downloadedAlbumDeleteCount": { + "description": "Delete button text with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumSelectToDelete": "Titel zum Löschen wählen", + "@downloadedAlbumSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "downloadedAlbumDiscHeader": "Disc {discNumber}", + "@downloadedAlbumDiscHeader": { + "description": "Header for disc separator in multi-disc albums", + "placeholders": { + "discNumber": { + "type": "int", + "example": "1" + } + } + }, + "recentTypeArtist": "Künstler", + "@recentTypeArtist": { + "description": "Recent access item type - artist" + }, + "recentTypeAlbum": "Album", + "@recentTypeAlbum": { + "description": "Recent access item type - album" + }, + "recentTypeSong": "Titel", + "@recentTypeSong": { + "description": "Recent access item type - song/track" + }, + "recentTypePlaylist": "Playlist", + "@recentTypePlaylist": { + "description": "Recent access item type - playlist" + }, + "recentEmpty": "Noch keine aktuellen Einträge", + "@recentEmpty": { + "description": "Empty state text for recent access list" + }, + "recentClearAllMessage": "Clear all recent activity? Download history and music files will not be deleted.", + "@recentClearAllMessage": { + "description": "Confirmation message before clearing all recent activity" + }, + "recentShowAllDownloads": "Alle Downloads anzeigen", + "@recentShowAllDownloads": { + "description": "Button label to unhide hidden downloads in recent access" + }, + "recentPlaylistInfo": "Playlist: {name}", + "@recentPlaylistInfo": { + "description": "Snackbar message when tapping playlist in recent access", + "placeholders": { + "name": { + "type": "String", + "description": "Playlist name" + } + } + }, + "discographyDownload": "Diskographie herunterladen", + "@discographyDownload": { + "description": "Button - download artist discography" + }, + "discographyDownloadAll": "Alle Herunterladen", + "@discographyDownloadAll": { + "description": "Option - download entire discography" + }, + "discographyDownloadAllSubtitle": "{count} Titel von {albumCount} Releases", + "@discographyDownloadAllSubtitle": { + "description": "Subtitle showing total tracks and albums", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "discographyAlbumsOnly": "Nur Alben", + "@discographyAlbumsOnly": { + "description": "Option - download only albums" + }, + "discographyAlbumsOnlySubtitle": "{count} Titel aus {albumCount} Alben", + "@discographyAlbumsOnlySubtitle": { + "description": "Subtitle showing album tracks count", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "discographySinglesOnly": "Nur Singles & EPs", + "@discographySinglesOnly": { + "description": "Option - download only singles" + }, + "discographySinglesOnlySubtitle": "{count} Titel von {albumCount} Singles", + "@discographySinglesOnlySubtitle": { + "description": "Subtitle showing singles tracks count", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "discographySelectAlbums": "Alben auswählen...", + "@discographySelectAlbums": { + "description": "Option - manually select albums to download" + }, + "discographySelectAlbumsSubtitle": "Wähle bestimmte Alben oder Singles", + "@discographySelectAlbumsSubtitle": { + "description": "Subtitle for select albums option" + }, + "discographyFetchingTracks": "Lade Titel...", + "@discographyFetchingTracks": { + "description": "Progress - fetching album tracks" + }, + "discographyFetchingAlbum": "Lade {current} von {total}...", + "@discographyFetchingAlbum": { + "description": "Progress - fetching specific album", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "discographySelectedCount": "{count} ausgewählt", + "@discographySelectedCount": { + "description": "Selection count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "discographyDownloadSelected": "Auswahl herunterladen", + "@discographyDownloadSelected": { + "description": "Button - download selected albums" + }, + "discographyAddedToQueue": "{count} Titel zur Warteschlange hinzugefügt", + "@discographyAddedToQueue": { + "description": "Snackbar - tracks added from discography", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "discographySkippedDownloaded": "{added} hinzugefügt, {skipped} bereits heruntergeladen", + "@discographySkippedDownloaded": { + "description": "Snackbar - with skipped tracks count", + "placeholders": { + "added": { + "type": "int" + }, + "skipped": { + "type": "int" + } + } + }, + "discographyNoAlbums": "Es sind keine Alben verfügbar", + "@discographyNoAlbums": { + "description": "Error - no albums found for artist" + }, + "discographyFailedToFetch": "Fehler beim Abrufen einiger Alben", + "@discographyFailedToFetch": { + "description": "Error - some albums failed to load" + }, + "sectionStorageAccess": "Speicherzugriff", + "@sectionStorageAccess": { + "description": "Section header for storage access settings" + }, + "allFilesAccess": "Zugriff auf alle Dateien", + "@allFilesAccess": { + "description": "Toggle for MANAGE_EXTERNAL_STORAGE permission" + }, + "allFilesAccessEnabledSubtitle": "Darf in jeden Ordner schreiben", + "@allFilesAccessEnabledSubtitle": { + "description": "Subtitle when all files access is enabled" + }, + "allFilesAccessDisabledSubtitle": "Nur auf Medienordner begrenzt", + "@allFilesAccessDisabledSubtitle": { + "description": "Subtitle when all files access is disabled" + }, + "allFilesAccessDescription": "Option bei Schreibfehlern bitte aktivieren (erforderlich ab Android 13).", + "@allFilesAccessDescription": { + "description": "Description explaining when to enable all files access" + }, + "allFilesAccessDeniedMessage": "Zugriff verweigert. Bitte aktiviere \"Zugriff auf alle Dateien\" manuell in den Systemeinstellungen.", + "@allFilesAccessDeniedMessage": { + "description": "Message when permission is permanently denied" + }, + "allFilesAccessDisabledMessage": "Zugriff auf alle Dateien ist deaktiviert. Die App verwendet nur begrenzten Zugriff auf den Speicher.", + "@allFilesAccessDisabledMessage": { + "description": "Snackbar message when user disables all files access" + }, + "settingsLocalLibrary": "Lokale Bibliothek", + "@settingsLocalLibrary": { + "description": "Settings menu item - local library" + }, + "settingsLocalLibrarySubtitle": "Musik scannen & Duplikate erkennen", + "@settingsLocalLibrarySubtitle": { + "description": "Subtitle for local library settings" + }, + "settingsCache": "Speicher & Cache", + "@settingsCache": { + "description": "Settings menu item - cache management" + }, + "settingsCacheSubtitle": "Größe anzeigen und Daten im Cache leeren", + "@settingsCacheSubtitle": { + "description": "Subtitle for cache management menu" + }, + "libraryTitle": "Lokale Bibliothek", + "@libraryTitle": { + "description": "Library settings page title" + }, + "libraryScanSettings": "Scan Einstellungen", + "@libraryScanSettings": { + "description": "Section header for scan settings" + }, + "libraryEnableLocalLibrary": "Lokale Bibliothek aktivieren", + "@libraryEnableLocalLibrary": { + "description": "Toggle to enable library scanning" + }, + "libraryEnableLocalLibrarySubtitle": "Scan und verfolge deine bestehende Musik", + "@libraryEnableLocalLibrarySubtitle": { + "description": "Subtitle for enable toggle" + }, + "libraryFolder": "Bibliotheksordner", + "@libraryFolder": { + "description": "Folder selection setting" + }, + "libraryFolderHint": "Tippe um Ordner auszuwählen", + "@libraryFolderHint": { + "description": "Placeholder when no folder selected" + }, + "libraryAddFolder": "Add library folder", + "@libraryAddFolder": { + "description": "Action to add another local library source" + }, + "libraryAddFolderSubtitle": "Internal storage, SD card, SSD, or another external drive", + "@libraryAddFolderSubtitle": { + "description": "Supported storage locations for local library sources" + }, + "librarySourceOnline": "Online", + "@librarySourceOnline": { + "description": "Library source is connected and accessible" + }, + "librarySourceOffline": "Offline. Reconnect the storage to restore these tracks", + "@librarySourceOffline": { + "description": "Library source is temporarily disconnected" + }, + "librarySourceDisabled": "Disabled", + "@librarySourceDisabled": { + "description": "Library source has been disabled by the user" + }, + "librarySourceScanCount": "{scanned} of {total} files scanned ({progress}%)", + "@librarySourceScanCount": { + "description": "Live progress for one library folder scan", + "placeholders": { + "scanned": { + "type": "int" + }, + "total": { + "type": "int" + }, + "progress": { + "type": "String" + } + } + }, + "libraryExternalStorage": "External storage", + "@libraryExternalStorage": { + "description": "Label for a removable or external library source" + }, + "libraryRemoveFolder": "Remove library folder", + "@libraryRemoveFolder": { + "description": "Action to remove one indexed library source" + }, + "libraryRemoveFolderMessage": "Remove this folder and its indexed tracks from SpotiFLAC Mobile? Audio files on the storage will not be deleted.", + "@libraryRemoveFolderMessage": { + "description": "Confirmation shown before removing a library source" + }, + "libraryShowDuplicateIndicator": "Duplikat Indikator anzeigen", + "@libraryShowDuplicateIndicator": { + "description": "Toggle for duplicate indicator in search" + }, + "libraryShowDuplicateIndicatorSubtitle": "Bei der Suche nach vorhandenen Titeln anzeigen", + "@libraryShowDuplicateIndicatorSubtitle": { + "description": "Subtitle for duplicate indicator toggle" + }, + "libraryAutoScan": "Auto-Scan", + "@libraryAutoScan": { + "description": "Setting for automatic library scanning" + }, + "libraryAutoScanSubtitle": "Scanne die Bibliothek automatisch nach neuen Dateien", + "@libraryAutoScanSubtitle": { + "description": "Subtitle for auto scan setting" + }, + "libraryAutoScanOff": "Aus", + "@libraryAutoScanOff": { + "description": "Auto scan disabled" + }, + "libraryAutoScanOnOpen": "Bei jeder App Öffnung", + "@libraryAutoScanOnOpen": { + "description": "Auto scan when app opens" + }, + "libraryAutoScanDaily": "Täglich", + "@libraryAutoScanDaily": { + "description": "Auto scan once per day" + }, + "libraryAutoScanWeekly": "Wöchentlich", + "@libraryAutoScanWeekly": { + "description": "Auto scan once per week" + }, + "libraryActions": "Aktionen", + "@libraryActions": { + "description": "Section header for library actions" + }, + "libraryScan": "Bibliothek scannen", + "@libraryScan": { + "description": "Button to start library scan" + }, + "libraryScanSubtitle": "Suche nach Audiodateien", + "@libraryScanSubtitle": { + "description": "Subtitle for scan button" + }, + "libraryScanSelectFolderFirst": "Wähle zuerst einen Ordner", + "@libraryScanSelectFolderFirst": { + "description": "Message when trying to scan without folder" + }, + "libraryCleanupMissingFiles": "Fehlende Dateien bereinigen", + "@libraryCleanupMissingFiles": { + "description": "Button to remove entries for missing files" + }, + "libraryCleanupMissingFilesSubtitle": "Verlaufseinträge für Dateien löschen, die nicht mehr existieren", + "@libraryCleanupMissingFilesSubtitle": { + "description": "Subtitle for cleanup button" + }, + "libraryClear": "Bibliothek löschen", + "@libraryClear": { + "description": "Button to clear all library entries" + }, + "libraryClearSubtitle": "Alle gescannten Titel entfernen", + "@libraryClearSubtitle": { + "description": "Subtitle for clear button" + }, + "libraryClearConfirmTitle": "Bibliothek löschen", + "@libraryClearConfirmTitle": { + "description": "Dialog title for clear confirmation" + }, + "libraryClearConfirmMessage": "Dadurch werden alle gescannten Titel aus deiner Bibliothek entfernt. Deine eigentlichen Musikdateien werden nicht gelöscht.", + "@libraryClearConfirmMessage": { + "description": "Dialog message for clear confirmation" + }, + "libraryAbout": "Über die lokale Bibliothek", + "@libraryAbout": { + "description": "Section header for about info" + }, + "libraryAboutDescription": "Durchsucht deine bestehende Musiksammlung, um Duplikate beim Herunterladen zu erkennen. Unterstützt die Formate FLAC, M4A, MP3, Opus und OGG. Metadaten werden, sofern verfügbar, aus den Dateitags gelesen.", + "@libraryAboutDescription": { + "description": "Description of local library feature" + }, + "libraryTracksUnit": "{count, plural, =1{1 Titel} other{{count} Titel}}", + "@libraryTracksUnit": { + "description": "Unit label for tracks count (without the number itself)", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryFilesUnit": "{count, plural, =1{1 Datei} other{{count} Datein}}", + "@libraryFilesUnit": { + "description": "Unit label for files count during library scanning", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryLastScanned": "Zuletzt gescannt: {time}", + "@libraryLastScanned": { + "description": "Last scan time display", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "libraryLastScannedNever": "Nie", + "@libraryLastScannedNever": { + "description": "Shown when library has never been scanned" + }, + "libraryScanning": "Scannen...", + "@libraryScanning": { + "description": "Status during scan" + }, + "libraryScanFinalizing": "Bibliothek wird aktualisiert...", + "@libraryScanFinalizing": { + "description": "Status shown after file scanning finishes but library persistence is still running" + }, + "libraryScanProgress": "{progress}% von {total} Dateien", + "@libraryScanProgress": { + "description": "Scan progress display", + "placeholders": { + "progress": { + "type": "String" + }, + "total": { + "type": "int" + } + } + }, + "libraryInLibrary": "In Bibliothek", + "@libraryInLibrary": { + "description": "Badge shown on tracks that exist in local library" + }, + "libraryRemovedMissingFiles": "Entfernte {count} fehlende Dateien aus der Bibliothek", + "@libraryRemovedMissingFiles": { + "description": "Snackbar after cleanup", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryCleared": "Bibliothek geleert", + "@libraryCleared": { + "description": "Snackbar after clearing library" + }, + "libraryStorageAccessRequired": "Speicherzugriff erforderlich", + "@libraryStorageAccessRequired": { + "description": "Dialog title for storage permission" + }, + "libraryStorageAccessMessage": "SpotiFLAC benötigt Speicherzugriff, um deine Musikbibliothek zu scannen. Bitte erteile die Berechtigung in den Einstellungen.", + "@libraryStorageAccessMessage": { + "description": "Dialog message for storage permission" + }, + "libraryFolderNotExist": "Der ausgewählte Ordner existiert nicht", + "@libraryFolderNotExist": { + "description": "Error when folder doesn't exist" + }, + "librarySourceDownloaded": "Heruntergeladen", + "@librarySourceDownloaded": { + "description": "Badge for tracks downloaded via SpotiFLAC" + }, + "librarySourceLocal": "Lokal", + "@librarySourceLocal": { + "description": "Badge for tracks from local library scan" + }, + "libraryFilterAll": "Alle", + "@libraryFilterAll": { + "description": "Filter chip - show all library items" + }, + "libraryFilterDownloaded": "Heruntergeladen", + "@libraryFilterDownloaded": { + "description": "Filter chip - show only downloaded items" + }, + "libraryFilterLocal": "Lokal", + "@libraryFilterLocal": { + "description": "Filter chip - show only local library items" + }, + "libraryFilterTitle": "Filter", + "@libraryFilterTitle": { + "description": "Filter bottom sheet title" + }, + "libraryFilterReset": "Zurücksetzen", + "@libraryFilterReset": { + "description": "Reset all filters button" + }, + "libraryFilterApply": "Anwenden", + "@libraryFilterApply": { + "description": "Apply filters button" + }, + "libraryFilterSource": "Quelle", + "@libraryFilterSource": { + "description": "Filter section - source type" + }, + "libraryFilterQuality": "Qualität", + "@libraryFilterQuality": { + "description": "Filter section - audio quality" + }, + "libraryFilterQualityHiRes": "Hi-Res (24bit)", + "@libraryFilterQualityHiRes": { + "description": "Filter option - high resolution audio" + }, + "libraryFilterQualityCD": "CD (16bit)", + "@libraryFilterQualityCD": { + "description": "Filter option - CD quality audio" + }, + "libraryFilterQualityLossy": "Verlustbehaftet", + "@libraryFilterQualityLossy": { + "description": "Filter option - lossy compressed audio" + }, + "libraryFilterFormat": "Format", + "@libraryFilterFormat": { + "description": "Filter section - file format" + }, + "libraryFilterMetadata": "Metadaten", + "@libraryFilterMetadata": { + "description": "Filter section - metadata completeness" + }, + "libraryFilterMetadataComplete": "Komplette Metadaten", + "@libraryFilterMetadataComplete": { + "description": "Filter option - items with complete metadata" + }, + "libraryFilterMetadataMissingAny": "Metadaten fehlen", + "@libraryFilterMetadataMissingAny": { + "description": "Filter option - items missing any tracked metadata field" + }, + "libraryFilterMetadataMissingYear": "Jahr fehlt", + "@libraryFilterMetadataMissingYear": { + "description": "Filter option - items missing release year/date" + }, + "libraryFilterMetadataMissingGenre": "Genre fehlt", + "@libraryFilterMetadataMissingGenre": { + "description": "Filter option - items missing genre" + }, + "libraryFilterMetadataMissingAlbumArtist": "Fehlender Album-Künstler", + "@libraryFilterMetadataMissingAlbumArtist": { + "description": "Filter option - items missing album artist" + }, + "libraryFilterSort": "Sortieren", + "@libraryFilterSort": { + "description": "Filter section - sort order" + }, + "libraryFilterSortLatest": "Neuste", + "@libraryFilterSortLatest": { + "description": "Sort option - newest first" + }, + "libraryFilterSortOldest": "Älteste", + "@libraryFilterSortOldest": { + "description": "Sort option - oldest first" + }, + "libraryFilterSortAlbumAsc": "Album (A-Z)", + "@libraryFilterSortAlbumAsc": { + "description": "Sort option - album ascending" + }, + "libraryFilterSortAlbumDesc": "Album (Z-A)", + "@libraryFilterSortAlbumDesc": { + "description": "Sort option - album descending" + }, + "libraryFilterSortGenreAsc": "Genre (A-Z)", + "@libraryFilterSortGenreAsc": { + "description": "Sort option - genre ascending" + }, + "libraryFilterSortGenreDesc": "Genre (Z-A)", + "@libraryFilterSortGenreDesc": { + "description": "Sort option - genre descending" + }, + "timeJustNow": "Gerade eben", + "@timeJustNow": { + "description": "Relative time - less than a minute ago" + }, + "timeMinutesAgo": "{count, plural, =1{vor 1 Minute} other{vor {count} Minuten}}", + "@timeMinutesAgo": { + "description": "Relative time - minutes ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "timeHoursAgo": "{count, plural, =1{vor 1 Stunde} other{vor {count} Stunden}}", + "@timeHoursAgo": { + "description": "Relative time - hours ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "tutorialWelcomeTitle": "Welcome to SpotiFLAC Mobile!", + "@tutorialWelcomeTitle": { + "description": "Tutorial welcome page title" + }, + "tutorialWelcomeDesc": "Learn how to find music with extensions, choose the quality you want, and manage downloads in SpotiFLAC Mobile.", + "@tutorialWelcomeDesc": { + "description": "Tutorial welcome page description" + }, + "tutorialWelcomeTip1": "Search with an installed extension or paste a supported music link", + "@tutorialWelcomeTip1": { + "description": "Tutorial welcome tip 1" + }, + "tutorialWelcomeTip2": "Choose from the audio qualities offered by your download provider", + "@tutorialWelcomeTip2": { + "description": "Tutorial welcome tip 2" + }, + "tutorialWelcomeTip3": "Embed metadata, cover art, lyrics, and release information automatically", + "@tutorialWelcomeTip3": { + "description": "Tutorial welcome tip 3" + }, + "tutorialSearchTitle": "Suche Musik", + "@tutorialSearchTitle": { + "description": "Tutorial search page title" + }, + "tutorialSearchDesc": "Search with your selected extension or paste a supported music link.", + "@tutorialSearchDesc": { + "description": "Tutorial search page description" + }, + "tutorialDownloadTitle": "Musik wird heruntergeladen", + "@tutorialDownloadTitle": { + "description": "Tutorial download page title" + }, + "tutorialDownloadDesc": "Pick an available quality, start the download, and follow its progress in the queue.", + "@tutorialDownloadDesc": { + "description": "Tutorial download page description" + }, + "tutorialLibraryTitle": "Deine Bibliothek", + "@tutorialLibraryTitle": { + "description": "Tutorial library page title" + }, + "tutorialLibraryDesc": "Downloaded and locally scanned music is organized in your Library.", + "@tutorialLibraryDesc": { + "description": "Tutorial library page description" + }, + "tutorialLibraryTip1": "Manage active, pending, and completed downloads from the Library queue", + "@tutorialLibraryTip1": { + "description": "Tutorial library tip 1" + }, + "tutorialLibraryTip2": "Tap a track to play it with the built-in player", + "@tutorialLibraryTip2": { + "description": "Tutorial library tip 2" + }, + "tutorialLibraryTip3": "Browse tracks, albums, and playlists in list or grid views", + "@tutorialLibraryTip3": { + "description": "Tutorial library tip 3" + }, + "tutorialExtensionsTitle": "Erweiterungen", + "@tutorialExtensionsTitle": { + "description": "Tutorial extensions page title" + }, + "tutorialExtensionsDesc": "Extensions add search, download, metadata, lyrics, and other integrations.", + "@tutorialExtensionsDesc": { + "description": "Tutorial extensions page description" + }, + "tutorialExtensionsTip1": "Im Repo Tab findest du nützliche Erweiterungen", + "@tutorialExtensionsTip1": { + "description": "Tutorial extensions tip 1" + }, + "tutorialExtensionsTip2": "Choose providers for search, downloads, metadata, and fallbacks", + "@tutorialExtensionsTip2": { + "description": "Tutorial extensions tip 2" + }, + "tutorialExtensionsTip3": "Connect accounts when required and keep extensions up to date", + "@tutorialExtensionsTip3": { + "description": "Tutorial extensions tip 3" + }, + "tutorialSettingsTitle": "Passe deine Benutzererfahrung an", + "@tutorialSettingsTitle": { + "description": "Tutorial settings page title" + }, + "tutorialSettingsDesc": "Fine-tune downloads, playback, Library behavior, appearance, and storage.", + "@tutorialSettingsDesc": { + "description": "Tutorial settings page description" + }, + "tutorialSettingsTip1": "Download-Ordner und Ordner-Organisation ändern", + "@tutorialSettingsTip1": { + "description": "Tutorial settings tip 1" + }, + "tutorialSettingsTip2": "Set quality, concurrency, filenames, and conversion preferences", + "@tutorialSettingsTip2": { + "description": "Tutorial settings tip 2" + }, + "tutorialSettingsTip3": "App-Design und Aussehen anpassen", + "@tutorialSettingsTip3": { + "description": "Tutorial settings tip 3" + }, + "tutorialReadyMessage": "You're ready. Select your extensions, then search or paste a supported link.", + "@tutorialReadyMessage": { + "description": "Tutorial completion message" + }, + "libraryForceFullScan": "Vollen Neu-Scan erzwingen", + "@libraryForceFullScan": { + "description": "Button to force a complete rescan of library" + }, + "libraryForceFullScanSubtitle": "Alle Dateien erneut scannen und Cache ignorieren", + "@libraryForceFullScanSubtitle": { + "description": "Subtitle for force full scan button" + }, + "cleanupOrphanedDownloads": "Verwaiste Downloads bereinigen", + "@cleanupOrphanedDownloads": { + "description": "Button to remove history entries for deleted files" + }, + "cleanupOrphanedDownloadsSubtitle": "Verlaufseinträge für Dateien löschen, die nicht mehr existieren", + "@cleanupOrphanedDownloadsSubtitle": { + "description": "Subtitle for orphaned cleanup button" + }, + "cleanupOrphanedDownloadsResult": "Entfernte {count} verwaiste Einträge aus dem Verlauf", + "@cleanupOrphanedDownloadsResult": { + "description": "Snackbar after orphan cleanup", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cleanupOrphanedDownloadsNone": "Keine verwaisten Einträge gefunden", + "@cleanupOrphanedDownloadsNone": { + "description": "Snackbar when no orphans found" + }, + "cacheTitle": "Speicher & Cache", + "@cacheTitle": { + "description": "Cache management page title" + }, + "cacheSummaryTitle": "Cache-Übersicht", + "@cacheSummaryTitle": { + "description": "Heading for cache summary card" + }, + "cacheSummarySubtitle": "Das Leeren des Caches entfernt nicht heruntergeladene Musikdateien.", + "@cacheSummarySubtitle": { + "description": "Helper text for cache summary card" + }, + "cacheEstimatedTotal": "Geschätzte Cache-Größe: {size}", + "@cacheEstimatedTotal": { + "description": "Total cache size shown in summary", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "cacheSectionStorage": "Zwischengespeicherte Daten", + "@cacheSectionStorage": { + "description": "Section header for cache entries" + }, + "cacheSectionMaintenance": "Wartung", + "@cacheSectionMaintenance": { + "description": "Section header for cleanup actions" + }, + "cacheAppDirectory": "App-Cache Ordner", + "@cacheAppDirectory": { + "description": "Cache item title for app cache directory" + }, + "cacheAppDirectoryDesc": "HTTP-Antworten, WebView Daten und andere temporäre App-Daten.", + "@cacheAppDirectoryDesc": { + "description": "Description of what app cache directory contains" + }, + "cacheTempDirectory": "Temporärer Ordner", + "@cacheTempDirectory": { + "description": "Cache item title for temporary files directory" + }, + "cacheTempDirectoryDesc": "Temporäre Dateien von Downloads und Audio-Konvertierung.", + "@cacheTempDirectoryDesc": { + "description": "Description of what temporary directory contains" + }, + "cacheCoverImage": "Cover-Cache", + "@cacheCoverImage": { + "description": "Cache item title for persistent cover images" + }, + "cacheCoverImageDesc": "Album- und Titelcover heruntergeladen. Werden erneut heruntergeladen.", + "@cacheCoverImageDesc": { + "description": "Description of what cover image cache contains" + }, + "cacheLibraryCover": "Bibliotheks-Cover-Cache", + "@cacheLibraryCover": { + "description": "Cache item title for local library cover art images" + }, + "cacheLibraryCoverDesc": "Cover aus lokalen Musikdateien extrahiert. Wird beim nächsten Scannen neu extrahiert.", + "@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" @@ -5928,6 +3138,350 @@ "@cacheAudioAnalysisDesc": { "description": "Description of what audio analysis cache contains" }, + "cacheExploreFeed": "Feed-Cache entdecken", + "@cacheExploreFeed": { + "description": "Cache item title for explore home feed cache" + }, + "cacheExploreFeedDesc": "Startseiten-Inhalt (neue Releases, Trends). Wird bei einem Neustart aktualisiert.", + "@cacheExploreFeedDesc": { + "description": "Description of what explore feed cache contains" + }, + "cacheTrackLookup": "Titel Such-Cache", + "@cacheTrackLookup": { + "description": "Cache item title for track ID lookup cache" + }, + "cacheTrackLookupDesc": "Spotify/Deezer Track-ID-Lookups. Das Löschen kann die nächsten Suchergebnisse verlangsamen.", + "@cacheTrackLookupDesc": { + "description": "Description of what track lookup cache contains" + }, + "cacheCleanupUnusedDesc": "Verwaisten Downloadverlauf und Bibliothekseinträge für fehlende Dateien entfernen.", + "@cacheCleanupUnusedDesc": { + "description": "Description of what cleanup unused data does" + }, + "cacheNoData": "Keine gecachten Daten", + "@cacheNoData": { + "description": "Label when cache category has no data" + }, + "cacheSizeWithFiles": "{size} in {count} Dateien", + "@cacheSizeWithFiles": { + "description": "Cache size and file count", + "placeholders": { + "size": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "cacheSizeOnly": "{size}", + "@cacheSizeOnly": { + "description": "Cache size only", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "cacheEntries": "{count} Einträge", + "@cacheEntries": { + "description": "Track cache entry count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cacheClearSuccess": "Entfernt: {target}", + "@cacheClearSuccess": { + "description": "Snackbar after clearing selected cache", + "placeholders": { + "target": { + "type": "String" + } + } + }, + "cacheClearConfirmTitle": "Cache leeren?", + "@cacheClearConfirmTitle": { + "description": "Dialog title before clearing one cache category" + }, + "cacheClearConfirmMessage": "Dies löscht zwischengespeicherte Daten in {target}. Die Musikdateien werden nicht gelöscht.", + "@cacheClearConfirmMessage": { + "description": "Dialog message before clearing selected cache", + "placeholders": { + "target": { + "type": "String" + } + } + }, + "cacheClearAllConfirmTitle": "Gesamten Cache leeren?", + "@cacheClearAllConfirmTitle": { + "description": "Dialog title before clearing all caches" + }, + "cacheClearAllConfirmMessage": "Dadurch werden alle Cache-Kategorien auf dieser Seite gelöscht. Heruntergeladene Musikdateien werden nicht gelöscht.", + "@cacheClearAllConfirmMessage": { + "description": "Dialog message before clearing all caches" + }, + "cacheClearAll": "Gesamten Cache leeren", + "@cacheClearAll": { + "description": "Button label to clear all caches" + }, + "cacheCleanupUnused": "Unbenutzte Daten bereinigen", + "@cacheCleanupUnused": { + "description": "Action title for cleaning unused entries" + }, + "cacheCleanupUnusedSubtitle": "Verwaisten Downloadverlauf und fehlende Bibliothekseinträge löschen", + "@cacheCleanupUnusedSubtitle": { + "description": "Subtitle for cleanup unused data action" + }, + "cacheCleanupResult": "Bereinigung: {downloadCount} verwaiste Downloads, {libraryCount} fehlende Bibliothekseinträge", + "@cacheCleanupResult": { + "description": "Snackbar after unused data cleanup", + "placeholders": { + "downloadCount": { + "type": "int" + }, + "libraryCount": { + "type": "int" + } + } + }, + "cacheRefreshStats": "Statistik aktualisieren", + "@cacheRefreshStats": { + "description": "Button label to refresh cache statistics" + }, + "trackSaveCoverArt": "Cover speichern", + "@trackSaveCoverArt": { + "description": "Menu action - save album cover art as file" + }, + "trackSaveLyrics": "Lyrics als .lrc speichern", + "@trackSaveLyrics": { + "description": "Menu action - save lyrics as .lrc file" + }, + "trackSaveLyricsProgress": "Speichere Lyrics...", + "@trackSaveLyricsProgress": { + "description": "Snackbar while saving lyrics to file" + }, + "trackReEnrich": "Neu-anreichern", + "@trackReEnrich": { + "description": "Menu action - re-embed metadata into audio file" + }, + "trackReEnrichOnlineSubtitle": "Metadaten online suchen und in Datei einbinden", + "@trackReEnrichOnlineSubtitle": { + "description": "Subtitle for re-enrich metadata action for local items" + }, + "trackReEnrichBatchSubtitle": "Choose an online or manual update, then review every change before writing", + "@trackReEnrichBatchSubtitle": { + "description": "Subtitle for batch metadata update choices" + }, + "trackReEnrichFieldCover": "Cover-Art", + "@trackReEnrichFieldCover": { + "description": "Checkbox label for cover art field in re-enrich" + }, + "trackReEnrichFieldLyrics": "Lyrics", + "@trackReEnrichFieldLyrics": { + "description": "Checkbox label for lyrics field in re-enrich" + }, + "trackReEnrichFieldBasicTags": "Album, Album-Künstler", + "@trackReEnrichFieldBasicTags": { + "description": "Checkbox label for basic tags in re-enrich (title/artist are never overwritten)" + }, + "trackReEnrichFieldTrackInfo": "Track & Disc Nummer", + "@trackReEnrichFieldTrackInfo": { + "description": "Checkbox label for track info in re-enrich" + }, + "trackReEnrichFieldReleaseInfo": "Datum & ISRC", + "@trackReEnrichFieldReleaseInfo": { + "description": "Checkbox label for release info in re-enrich" + }, + "trackReEnrichFieldExtra": "Genre, Label, Copyright", + "@trackReEnrichFieldExtra": { + "description": "Checkbox label for extra metadata in re-enrich" + }, + "trackReEnrichSelectAll": "Alles Auswählen", + "@trackReEnrichSelectAll": { + "description": "Select all fields checkbox in re-enrich" + }, + "trackReEnrichModeIsrc": "ISRC only", + "@trackReEnrichModeIsrc": { + "description": "Batch metadata mode that only writes ISRC" + }, + "trackReEnrichModeIsrcSubtitle": "Find and add the recording identifier without changing other tags", + "@trackReEnrichModeIsrcSubtitle": { + "description": "Explanation for the ISRC-only batch metadata mode" + }, + "trackReEnrichModeMissing": "Fill missing tags", + "@trackReEnrichModeMissing": { + "description": "Batch metadata mode that fills only empty tags" + }, + "trackReEnrichModeMissingSubtitle": "Keep existing values and fill only fields that are empty", + "@trackReEnrichModeMissingSubtitle": { + "description": "Explanation for the fill-missing batch metadata mode" + }, + "trackReEnrichModeReplace": "Update selected tags", + "@trackReEnrichModeReplace": { + "description": "Batch metadata mode that replaces selected tag groups" + }, + "trackReEnrichModeReplaceSubtitle": "Choose which existing values may be replaced by online metadata", + "@trackReEnrichModeReplaceSubtitle": { + "description": "Explanation for the selected-tag batch metadata mode" + }, + "trackReEnrichModeManual": "Set common values", + "@trackReEnrichModeManual": { + "description": "Batch metadata mode that applies shared values to every selected track" + }, + "trackReEnrichModeManualSubtitle": "Apply the same values to every selected track", + "@trackReEnrichModeManualSubtitle": { + "description": "Explanation for the manual shared-value batch metadata mode" + }, + "trackReEnrichManualFieldsTitle": "Values to apply", + "@trackReEnrichManualFieldsTitle": { + "description": "Heading above manual batch metadata inputs" + }, + "trackReEnrichManualHint": "Leave a field empty to keep its current value. Track titles, numbers, and ISRCs stay unchanged.", + "@trackReEnrichManualHint": { + "description": "Safety explanation for manual batch metadata inputs" + }, + "trackReEnrichFieldsTitle": "Tags to update", + "@trackReEnrichFieldsTitle": { + "description": "Heading above batch re-enrich field checkboxes" + }, + "trackReEnrichReview": "Review changes", + "@trackReEnrichReview": { + "description": "Button that searches metadata and opens the batch change review" + }, + "trackReEnrichReviewTitle": "Review metadata changes", + "@trackReEnrichReviewTitle": { + "description": "Title of the batch metadata review sheet" + }, + "trackReEnrichReviewSubtitle": "{changeCount} proposed changes across {trackCount} tracks", + "@trackReEnrichReviewSubtitle": { + "description": "Summary shown above proposed batch metadata changes", + "placeholders": { + "changeCount": { + "type": "int" + }, + "trackCount": { + "type": "int" + } + } + }, + "trackReEnrichNoChanges": "No metadata changes were found for the selected tracks.", + "@trackReEnrichNoChanges": { + "description": "Message when batch metadata preview has no proposed changes" + }, + "trackReEnrichApplyChanges": "Apply changes", + "@trackReEnrichApplyChanges": { + "description": "Confirmation button in the batch metadata review sheet" + }, + "trackReEnrichRefreshOnline": "Refresh from online", + "@trackReEnrichRefreshOnline": { + "description": "Proposed value when lyrics will be refreshed during re-enrich" + }, + "trackEditMetadata": "Metadaten bearbeiten", + "@trackEditMetadata": { + "description": "Menu action - edit embedded metadata" + }, + "trackCoverSaved": "Cover in {fileName} gespeichert", + "@trackCoverSaved": { + "description": "Snackbar after cover art saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "trackCoverNoSource": "Keine Cover Quelle vorhanden", + "@trackCoverNoSource": { + "description": "Snackbar when no cover art URL or embedded cover" + }, + "trackLyricsSaved": "Lyrics in {fileName} gespeichert", + "@trackLyricsSaved": { + "description": "Snackbar after lyrics saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "trackReEnrichProgress": "Metadaten neu anreichern...", + "@trackReEnrichProgress": { + "description": "Snackbar while re-enriching metadata" + }, + "trackReEnrichSearching": "Suche Metadaten online...", + "@trackReEnrichSearching": { + "description": "Snackbar while searching metadata from internet for local items" + }, + "trackReEnrichPreparing": "Preparing metadata changes...", + "@trackReEnrichPreparing": { + "description": "Progress message while preparing manual batch metadata changes" + }, + "trackReEnrichSuccess": "Metadaten erfolgreich neu angereichert", + "trackReEnrichMetadataSaved": "Metadata saved", + "trackReEnrichLyricsUpdated": "Lyrics updated", + "trackReEnrichLyricsPreserved": "No new lyrics found; existing lyrics kept", + "trackReEnrichLyricsDisabled": "Lyrics not updated: lyric downloading is disabled in Settings", + "@trackReEnrichSuccess": { + "description": "Snackbar after successful re-enrichment" + }, + "trackReEnrichFfmpegFailed": "FFmpeg Metadaten-Einbettung fehlgeschlagen", + "@trackReEnrichFfmpegFailed": { + "description": "Snackbar when FFmpeg embed fails for MP3/Opus" + }, + "queueFlacAction": "Warteschlange FLAC", + "@queueFlacAction": { + "description": "Action/button label for queueing FLAC redownloads for local tracks" + }, + "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": { + "count": { + "type": "int" + } + } + }, + "queueFlacNoReliableMatches": "Keine zuverlässigen Online-Übereinstimmungen für die Auswahl gefunden", + "@queueFlacNoReliableMatches": { + "description": "Snackbar when no safe FLAC redownload matches were found" + }, + "queueFlacQueuedWithSkipped": "{addedCount} Titel zur Warteschlange hinzugefügt, {skippedCount} übersprungen", + "@queueFlacQueuedWithSkipped": { + "description": "Snackbar when some selected local tracks were queued for FLAC redownload and some were skipped", + "placeholders": { + "addedCount": { + "type": "int" + }, + "skippedCount": { + "type": "int" + } + } + }, + "trackSaveFailed": "Fehler: {error}", + "@trackSaveFailed": { + "description": "Snackbar when save operation fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "trackConvertFormat": "Format konvertieren", + "@trackConvertFormat": { + "description": "Menu item - convert audio format" + }, + "trackConvertTitle": "Audio konvertieren", + "@trackConvertTitle": { + "description": "Title of convert bottom sheet" + }, + "trackConvertTargetFormat": "Zielformat", + "@trackConvertTargetFormat": { + "description": "Label for format selection" + }, + "trackConvertBitrate": "Bitrate", + "@trackConvertBitrate": { + "description": "Label for bitrate selection" + }, "trackConvertKeepOriginal": "Keep original file", "@trackConvertKeepOriginal": { "description": "Toggle to preserve the source file during conversion" @@ -5936,6 +3490,37 @@ "@trackConvertKeepOriginalDescription": { "description": "Description for preserving the source file during conversion" }, + "trackConvertConfirmTitle": "Konvertierung bestätigen", + "@trackConvertConfirmTitle": { + "description": "Confirmation dialog title" + }, + "trackConvertConfirmMessage": "Konvertieren von {sourceFormat} in {targetFormat} bei {bitrate}?\n\nDie Originaldatei wird nach der Konvertierung gelöscht.", + "@trackConvertConfirmMessage": { + "description": "Confirmation dialog message", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "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": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + } + } + }, "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", @@ -5948,6 +3533,382 @@ } } }, + "trackConvertLosslessHint": "Verlustfreie Konvertierung kein Qualitätsverlust", + "@trackConvertLosslessHint": { + "description": "Hint shown when converting between lossless formats" + }, + "trackConvertConverting": "Konvertiere Audio...", + "@trackConvertConverting": { + "description": "Snackbar while converting" + }, + "trackConvertSuccess": "Konvertiert in {format} erfolgreich", + "@trackConvertSuccess": { + "description": "Snackbar after successful conversion", + "placeholders": { + "format": { + "type": "String" + } + } + }, + "trackConvertFailed": "Konvertierung fehlgeschlagen", + "@trackConvertFailed": { + "description": "Snackbar when conversion fails" + }, + "cueSplitTitle": "CUE-Sheet aufteilen", + "@cueSplitTitle": { + "description": "Title for CUE split bottom sheet" + }, + "cueSplitAlbum": "Album: {album}", + "@cueSplitAlbum": { + "description": "Album name in CUE split sheet", + "placeholders": { + "album": { + "type": "String" + } + } + }, + "cueSplitArtist": "Künstler: {artist}", + "@cueSplitArtist": { + "description": "Artist name in CUE split sheet", + "placeholders": { + "artist": { + "type": "String" + } + } + }, + "cueSplitTrackCount": "{count} Titel", + "@cueSplitTrackCount": { + "description": "Number of tracks in CUE sheet", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cueSplitConfirmTitle": "CUE-Album aufteilen", + "@cueSplitConfirmTitle": { + "description": "CUE split confirmation dialog title" + }, + "cueSplitConfirmMessage": "Soll „{album}“ in {count} einzelne FLAC-Dateien aufgeteilt werden?\n\nDie Dateien werden im selben Ordner gespeichert.", + "@cueSplitConfirmMessage": { + "description": "CUE split confirmation dialog message", + "placeholders": { + "album": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "cueSplitSplitting": "CUE-Sheet wird geteilt... ({current}/{total})", + "@cueSplitSplitting": { + "description": "Snackbar while splitting CUE", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "cueSplitSuccess": "{count} Titel erfolgreich aufgeteilt", + "@cueSplitSuccess": { + "description": "Snackbar after successful CUE split", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cueSplitFailed": "CUE-Aufteilung fehlgeschlagen", + "@cueSplitFailed": { + "description": "Snackbar when CUE split fails" + }, + "cueSplitNoAudioFile": "Audiodatei für dieses CUE-Sheet nicht gefunden", + "@cueSplitNoAudioFile": { + "description": "Error when CUE audio file is missing" + }, + "cueSplitButton": "In Titel aufteilen", + "@cueSplitButton": { + "description": "Button text to start CUE splitting" + }, + "actionCreate": "Erstellen", + "@actionCreate": { + "description": "Generic action button - create" + }, + "collectionFoldersTitle": "Meine Ordner", + "@collectionFoldersTitle": { + "description": "Library section title for custom folders" + }, + "collectionWishlist": "Wunschliste", + "@collectionWishlist": { + "description": "Custom folder for saved tracks to download later" + }, + "collectionLoved": "Lieblingssongs", + "@collectionLoved": { + "description": "Custom folder for favorite tracks" + }, + "collectionFavoriteArtists": "Lieblingskünstler", + "@collectionFavoriteArtists": { + "description": "Custom folder for favorite artists" + }, + "collectionPlaylist": "Playlist", + "@collectionPlaylist": { + "description": "Single playlist label" + }, + "collectionAddToPlaylist": "Zur Playlist hinzufügen", + "@collectionAddToPlaylist": { + "description": "Action to add a track to user playlist" + }, + "collectionCreatePlaylist": "Playlist erstellen", + "@collectionCreatePlaylist": { + "description": "Action to create a new playlist" + }, + "collectionNoPlaylistsYet": "Noch keine Playlists", + "@collectionNoPlaylistsYet": { + "description": "Empty state title when user has no playlists" + }, + "collectionPlaylistTracks": "{count, plural, =1{1 Titel} other{{count} Titel}}", + "@collectionPlaylistTracks": { + "description": "Track count label for custom playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionArtistCount": "{count, plural, =1{1 Künstler} other{{count} Künstler}}", + "@collectionArtistCount": { + "description": "Artist count label for favorite artists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionAddedToPlaylist": "Zu \"{playlistName} \" hinzugefügt", + "@collectionAddedToPlaylist": { + "description": "Snackbar after adding track to playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "collectionAlreadyInPlaylist": "Bereits in \"{playlistName}\"", + "@collectionAlreadyInPlaylist": { + "description": "Snackbar when track already exists in playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "collectionPlaylistNameHint": "Playlist-Name", + "@collectionPlaylistNameHint": { + "description": "Hint text for playlist name input" + }, + "collectionPlaylistNameRequired": "Playlist-Name ist erforderlich", + "@collectionPlaylistNameRequired": { + "description": "Validation error for empty playlist name" + }, + "collectionRenamePlaylist": "Playlist umbenennen", + "@collectionRenamePlaylist": { + "description": "Action to rename playlist" + }, + "collectionDeletePlaylist": "Playlist löschen", + "@collectionDeletePlaylist": { + "description": "Action to delete playlist" + }, + "collectionPlaylistRenamed": "Playlist umbenannt", + "@collectionPlaylistRenamed": { + "description": "Snackbar after renaming playlist" + }, + "collectionWishlistEmptyTitle": "Wunschliste ist leer", + "@collectionWishlistEmptyTitle": { + "description": "Wishlist empty state title" + }, + "collectionWishlistEmptySubtitle": "Tippe auf das + bei den Titeln, um sie zum späteren Herunterladen zu speichern", + "@collectionWishlistEmptySubtitle": { + "description": "Wishlist empty state subtitle" + }, + "collectionLovedEmptyTitle": "Lieblingssongs sind leer", + "@collectionLovedEmptyTitle": { + "description": "Loved empty state title" + }, + "collectionLovedEmptySubtitle": "Tippe auf das Herz, um deine Favoriten zu behalten", + "@collectionLovedEmptySubtitle": { + "description": "Loved empty state subtitle" + }, + "collectionFavoriteArtistsEmptyTitle": "Noch keine Lieblingskünstler", + "@collectionFavoriteArtistsEmptyTitle": { + "description": "Favorite artists empty state title" + }, + "collectionFavoriteArtistsEmptySubtitle": "Tippe auf das Herz auf einer Künstlerseite, um sie hier zu sehen", + "@collectionFavoriteArtistsEmptySubtitle": { + "description": "Favorite artists empty state subtitle" + }, + "collectionPlaylistEmptyTitle": "Die Playlist ist leer", + "@collectionPlaylistEmptyTitle": { + "description": "Playlist empty state title" + }, + "collectionPlaylistEmptySubtitle": "Drücke lange + auf einem beliebigen Titel, um ihn hier hinzuzufügen", + "@collectionPlaylistEmptySubtitle": { + "description": "Playlist empty state subtitle" + }, + "collectionRemoveFromPlaylist": "Von Playlist entfernen", + "@collectionRemoveFromPlaylist": { + "description": "Tooltip for removing track from playlist" + }, + "collectionRemoveFromFolder": "Aus Ordner entfernen", + "@collectionRemoveFromFolder": { + "description": "Tooltip for removing track from wishlist/loved folder" + }, + "collectionAddedToLoved": "\"{trackName}\" zu Lieblingssongs hinzugefügt", + "@collectionAddedToLoved": { + "description": "Snackbar after adding track to loved folder", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "collectionRemovedFromLoved": "\"{trackName}\" aus Lieblingssongs entfernt", + "@collectionRemovedFromLoved": { + "description": "Snackbar after removing track from loved folder", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "collectionAddedToWishlist": "\"{trackName}\" zur Wunschliste hinzugefügt", + "@collectionAddedToWishlist": { + "description": "Snackbar after adding track to wishlist", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "collectionRemovedFromWishlist": "\"{trackName}\" aus der Wunschliste entfernt", + "@collectionRemovedFromWishlist": { + "description": "Snackbar after removing track from wishlist", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "collectionAddedToFavoriteArtists": "\"{artistName}\" zu Lieblingskünstlern hinzugefügt", + "@collectionAddedToFavoriteArtists": { + "description": "Snackbar after adding artist to favorite artists", + "placeholders": { + "artistName": { + "type": "String" + } + } + }, + "collectionRemovedFromFavoriteArtists": "\"{artistName}\" entfernt aus Lieblingskünstlern", + "@collectionRemovedFromFavoriteArtists": { + "description": "Snackbar after removing artist from favorite artists", + "placeholders": { + "artistName": { + "type": "String" + } + } + }, + "trackOptionAddToLoved": "Zu Lieblingssongs hinzufügen", + "@trackOptionAddToLoved": { + "description": "Bottom sheet action label - add track to loved folder" + }, + "trackOptionRemoveFromLoved": "Aus Lieblingssongs entfernt", + "@trackOptionRemoveFromLoved": { + "description": "Bottom sheet action label - remove track from loved folder" + }, + "trackOptionAddToWishlist": "Zur Wunschliste hinzufügen", + "@trackOptionAddToWishlist": { + "description": "Bottom sheet action label - add track to wishlist" + }, + "trackOptionRemoveFromWishlist": "Von der Wunschliste entfernen", + "@trackOptionRemoveFromWishlist": { + "description": "Bottom sheet action label - remove track from wishlist" + }, + "artistOptionAddToFavorites": "Zu Favoriten hinzufügen", + "@artistOptionAddToFavorites": { + "description": "Action label - add artist to favorite artists" + }, + "artistOptionRemoveFromFavorites": "Aus Favoriten entfernen", + "@artistOptionRemoveFromFavorites": { + "description": "Action label - remove artist from favorite artists" + }, + "collectionPlaylistChangeCover": "Coverbild ändern", + "@collectionPlaylistChangeCover": { + "description": "Bottom sheet action to pick a custom cover image for a playlist" + }, + "collectionPlaylistRemoveCover": "Cover entfernen", + "@collectionPlaylistRemoveCover": { + "description": "Bottom sheet action to remove custom cover image from a playlist" + }, + "selectionShareCount": "Teile {count} {count, plural, =1{Titel} other{Titel}}", + "@selectionShareCount": { + "description": "Share button text with count in selection mode", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "selectionShareNoFiles": "Keine teilbare Dateien gefunden", + "@selectionShareNoFiles": { + "description": "Snackbar when no selected files exist on disk" + }, + "selectionConvertCount": "Konvertiere {count} {count, plural, =1{Titel} other{Titel}}", + "@selectionConvertCount": { + "description": "Convert button text with count in selection mode", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "selectionConvertNoConvertible": "Keine konvertierbare Titel ausgewählt", + "@selectionConvertNoConvertible": { + "description": "Snackbar when no selected tracks support conversion" + }, + "selectionBatchConvertConfirmTitle": "Batch-Konvertierung", + "@selectionBatchConvertConfirmTitle": { + "description": "Confirmation dialog title for batch conversion" + }, + "selectionBatchConvertConfirmMessage": "Konvertiere {count} {format} {count, plural, =1{Titel} other{Titel}} zu {bitrate}?\n\nOriginaldateien werden nach der Konvertierung gelöscht.", + "@selectionBatchConvertConfirmMessage": { + "description": "Confirmation dialog message for batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "selectionBatchConvertConfirmMessageLossless": "Konvertiere {count} {count, plural, =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": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + } + } + }, "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", @@ -5960,6 +3921,399 @@ } } }, + "selectionBatchConvertSuccess": "{success} von {total} Titeln in {format} konvertiert", + "@selectionBatchConvertSuccess": { + "description": "Snackbar after batch conversion completes", + "placeholders": { + "success": { + "type": "int" + }, + "total": { + "type": "int" + }, + "format": { + "type": "String" + } + } + }, + "downloadedAlbumDownloadedCount": "{count} heruntergeladen", + "@downloadedAlbumDownloadedCount": { + "description": "Downloaded tracks count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Ordner benannt nach dem Tag des Albumkünstlers", + "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { + "description": "Subtitle when album artist is used for folder names" + }, + "downloadUseAlbumArtistForFoldersTrackSubtitle": "Ordner benannt nach dem Tag des Künstlers", + "@downloadUseAlbumArtistForFoldersTrackSubtitle": { + "description": "Subtitle when track artist is used for folder names" + }, + "lyricsProvidersTitle": "Priorität des Lyrics-Anbieters", + "@lyricsProvidersTitle": { + "description": "Settings item title for lyrics provider order" + }, + "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 run before built-in lyrics providers. At least one provider must remain enabled.", + "@lyricsProvidersInfoText": { + "description": "Info tip on lyrics provider priority page" + }, + "lyricsProvidersEnabledSection": "({count}) aktiviert", + "@lyricsProvidersEnabledSection": { + "description": "Section header for enabled providers", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "lyricsProvidersDisabledSection": "({count}) deaktiviert", + "@lyricsProvidersDisabledSection": { + "description": "Section header for disabled providers", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "lyricsProvidersAtLeastOne": "Mindestens ein Anbieter muss aktiviert bleiben", + "@lyricsProvidersAtLeastOne": { + "description": "Snackbar when user tries to disable the last enabled provider" + }, + "lyricsProvidersSaved": "Priorität des Lyrics-Anbieters gespeichert", + "@lyricsProvidersSaved": { + "description": "Snackbar after saving lyrics provider priority" + }, + "lyricsProvidersDiscardContent": "Ungespeicherte Änderungen die verloren gehen.", + "@lyricsProvidersDiscardContent": { + "description": "Body text of the discard-changes dialog on lyrics provider page" + }, + "lyricsProviderLrclibDesc": "Open-Source-Synchronisierte Lyrics-Datenbank", + "@lyricsProviderLrclibDesc": { + "description": "Description for LRCLIB provider" + }, + "lyricsProviderNeteaseDesc": "NetEase Cloud Music (gut für asiatische Lieder)", + "@lyricsProviderNeteaseDesc": { + "description": "Description for Netease provider" + }, + "lyricsProviderMusixmatchDesc": "Größte Lyrics-Datenbank (mehrsprachig)", + "@lyricsProviderMusixmatchDesc": { + "description": "Description for Musixmatch provider" + }, + "lyricsProviderAppleMusicDesc": "Wort-für-Wort-synchronisierte Lyrics (via Proxy)", + "@lyricsProviderAppleMusicDesc": { + "description": "Description for Apple Music provider" + }, + "lyricsProviderQqMusicDesc": "QQ Music (good for Chinese songs, direct API)", + "@lyricsProviderQqMusicDesc": { + "description": "Description for QQ Music provider" + }, + "lyricsProviderLyricsPlusDesc": "Word-by-word karaoke lyrics (Apple/Musixmatch/Spotify/QQ, via proxy)", + "@lyricsProviderLyricsPlusDesc": { + "description": "Description for LyricsPlus provider" + }, + "lyricsProviderExtensionDesc": "Erweiterungsanbieter", + "@lyricsProviderExtensionDesc": { + "description": "Generic description for extension-based lyrics providers" + }, + "safMigrationTitle": "Speicheraktualisierung erforderlich", + "@safMigrationTitle": { + "description": "Title of SAF migration dialog" + }, + "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": "Bitte wähle dein Download-Ordner erneut aus, um zum neuen System zu wechseln.", + "@safMigrationMessage2": { + "description": "Second paragraph of SAF migration dialog" + }, + "safMigrationSuccess": "Download-Ordner auf SAF-Modus aktualisiert", + "@safMigrationSuccess": { + "description": "Snackbar after successfully migrating to SAF" + }, + "settingsDonate": "Unterstütze die Entwicklung", + "@settingsDonate": { + "description": "Settings menu item - donate page" + }, + "settingsDonateSubtitle": "Kaufe dem Entwickler einen Kaffee", + "@settingsDonateSubtitle": { + "description": "Subtitle for donate menu item" + }, + "settingsBackup": "Backup & Restore", + "@settingsBackup": { + "description": "Settings menu item - backup and restore page" + }, + "settingsBackupSubtitle": "Move your library, history and settings to a new device", + "@settingsBackupSubtitle": { + "description": "Subtitle for backup and restore settings item" + }, + "backupTitle": "Backup & Restore", + "@backupTitle": { + "description": "App bar title for the backup and restore page" + }, + "backupExportSectionTitle": "Create backup", + "@backupExportSectionTitle": { + "description": "Section title for the export/backup card" + }, + "backupExportSectionDescription": "Save your settings, download history, liked tracks, wishlist, favorite artists and playlists into a single file you can keep or move to another phone.", + "@backupExportSectionDescription": { + "description": "Description of what a backup contains" + }, + "backupExportButton": "Create backup file", + "@backupExportButton": { + "description": "Button to create and share a backup file" + }, + "backupImportSectionTitle": "Restore backup", + "@backupImportSectionTitle": { + "description": "Section title for the import/restore card" + }, + "backupImportSectionDescription": "Pick a backup file to restore your data. This replaces the current settings, history and library on this device.", + "@backupImportSectionDescription": { + "description": "Description for the restore action" + }, + "backupImportButton": "Choose backup file", + "@backupImportButton": { + "description": "Button to pick a backup file to restore" + }, + "backupCreated": "Backup created", + "@backupCreated": { + "description": "Snackbar after a backup file is created" + }, + "backupCreateFailed": "Failed to create backup", + "@backupCreateFailed": { + "description": "Snackbar when backup creation fails" + }, + "backupRestoreConfirmTitle": "Restore this backup?", + "@backupRestoreConfirmTitle": { + "description": "Confirmation dialog title before restoring a backup" + }, + "backupRestoreConfirmMessage": "This will replace your current settings, download history, liked tracks, wishlist and playlists with the contents of the backup. This cannot be undone.", + "@backupRestoreConfirmMessage": { + "description": "Confirmation dialog message before restoring a backup" + }, + "backupRestoreConfirmButton": "Restore", + "@backupRestoreConfirmButton": { + "description": "Confirm button to proceed with restore" + }, + "backupRestored": "Backup restored successfully", + "@backupRestored": { + "description": "Snackbar after a successful restore" + }, + "backupRestoreFailed": "Failed to restore backup", + "@backupRestoreFailed": { + "description": "Snackbar when restore fails" + }, + "backupInvalidFile": "This file is not a valid SpotiFLAC backup", + "@backupInvalidFile": { + "description": "Snackbar when the chosen file is not a valid backup" + }, + "backupRestoreRestartHint": "Restart the app to make sure every change is applied.", + "@backupRestoreRestartHint": { + "description": "Hint shown after restoring that an app restart is recommended" + }, + "backupContentsTitle": "Backup contents", + "@backupContentsTitle": { + "description": "Header above the list summarizing what the backup contains" + }, + "backupSettingsOnly": "Settings only", + "backupSelectHistory": "Download history", + "backupSelectCollections": "Library collections", + "backupSelectCollectionsDescription": "Liked tracks, wishlist, favorite artists, playlists and playlist covers.", + "backupSelectExtensions": "Extensions and their settings", + "backupSelectedExportDescription": "Save the selected categories to a backup file. Audio files are not included.", + "backupSelectAtLeastOne": "Select at least one category to create a backup.", + "backupSelectedRestoreMessage": "Only the categories listed below will be restored. Categories not included in this backup will stay unchanged. Restoring can replace existing data and cannot be undone.", + "backupContentsSettings": "Appeinstellungen", + "@backupContentsSettings": { + "description": "Backup contents row label for settings" + }, + "backupContentsHistory": "{count} history {count, plural, =1{item} other{items}}", + "@backupContentsHistory": { + "description": "Backup contents row for history count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsLiked": "{count} liked {count, plural, =1{track} other{tracks}}", + "@backupContentsLiked": { + "description": "Backup contents row for liked tracks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsWishlist": "{count} wishlist {count, plural, =1{track} other{tracks}}", + "@backupContentsWishlist": { + "description": "Backup contents row for wishlist tracks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsPlaylists": "{count, plural, =1{1 playlist} other{{count} playlists}}", + "@backupContentsPlaylists": { + "description": "Backup contents row for playlist count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsArtists": "{count, plural, =1{1 favorite artist} other{{count} favorite artists}}", + "@backupContentsArtists": { + "description": "Backup contents row for favorite artists count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsExtensions": "{count, plural, =1{1 extension} other{{count} extensions}}", + "@backupContentsExtensions": { + "description": "Backup contents row for installed extensions count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupIncludeSecrets": "Include extension credentials", + "@backupIncludeSecrets": { + "description": "Toggle to include secret extension settings (tokens, API keys) in the backup" + }, + "backupIncludeSecretsDescription": "Tokens and API keys from extensions will be saved into the backup file. Keep the file private. When off, you re-enter them after restoring.", + "@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 repo.", + "@backupExtensionsRestoreFailed": { + "description": "Snackbar/hint when some extensions failed to reinstall during restore", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "tooltipLoveAll": "Alle lieben", + "@tooltipLoveAll": { + "description": "Tooltip for the Love All button on album/playlist screens" + }, + "tooltipAddToPlaylist": "Zur Wiedergabeliste hinzufügen", + "@tooltipAddToPlaylist": { + "description": "Tooltip for the Add to Playlist button" + }, + "snackbarRemovedTracksFromLoved": "{count} Titel von geliebt entfernt", + "@snackbarRemovedTracksFromLoved": { + "description": "Snackbar after removing multiple tracks from Loved folder", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarAddedTracksToLoved": "{count} titel zu geliebt hinzugefügt", + "@snackbarAddedTracksToLoved": { + "description": "Snackbar after adding multiple tracks to Loved folder", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dialogDownloadAllTitle": "Alle Herunterladen", + "@dialogDownloadAllTitle": { + "description": "Dialog title for bulk download confirmation" + }, + "dialogDownloadAllMessage": "{count} titel herunterladen?", + "@dialogDownloadAllMessage": { + "description": "Body of the Download All confirmation dialog", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "homeSkipAlreadyDownloaded": "Bereits heruntergeladene Titel überspringen", + "@homeSkipAlreadyDownloaded": { + "description": "Checkbox label in import dialog to skip already-downloaded songs" + }, + "homeGoToAlbum": "Zum Album gehen", + "@homeGoToAlbum": { + "description": "Context menu item to navigate to the album page" + }, + "homeAlbumInfoUnavailable": "Albuminfo nicht verfügbar", + "@homeAlbumInfoUnavailable": { + "description": "Snackbar when album info cannot be loaded" + }, + "snackbarLoadingCueSheet": "CAE-Sheet wird geladen...", + "@snackbarLoadingCueSheet": { + "description": "Snackbar while loading a CUE sheet file" + }, + "snackbarMetadataSaved": "Metadaten erfolgreich gespeichert", + "@snackbarMetadataSaved": { + "description": "Snackbar after successfully saving track metadata" + }, + "snackbarFailedToEmbedLyrics": "Fehler beim Einbinden der Lyrics", + "@snackbarFailedToEmbedLyrics": { + "description": "Snackbar when lyrics embedding fails" + }, + "snackbarFailedToWriteStorage": "Fehler beim Zurückschreiben in den Speicher", + "@snackbarFailedToWriteStorage": { + "description": "Snackbar when writing metadata back to file fails" + }, + "snackbarError": "Fehler: {error}", + "@snackbarError": { + "description": "Generic error snackbar with error detail", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "snackbarNoActionDefined": "Keine Aktion für Taste definiert", + "@snackbarNoActionDefined": { + "description": "Snackbar when an extension button has no action configured" + }, + "noTracksFoundForAlbum": "Keine Titel in diesem Album gefunden", + "@noTracksFoundForAlbum": { + "description": "Empty state message when an album has no tracks" + }, + "downloadLocationSubtitle": "Wählen Sie den Speicherort für Ihre heruntergeladenen Titel", + "@downloadLocationSubtitle": { + "description": "Subtitle shown in the download location picker sheet" + }, + "storageAutomaticFolder": "Automatic folder", + "storageAutomaticDownloadFolder": "Uses Download/SpotiFLAC when writable, otherwise app storage", + "storageSafRecommended": "Choose folder (Recommended)", + "storageDownloadFolderHint": "In the Android folder picker, open Download and select SpotiFLAC. If it does not exist, create it using New folder, then tap Use this folder to grant access.", + "storageModeAppFolder": "App-Ordner (empfohlen)", + "@storageModeAppFolder": { + "description": "Storage mode option - app-managed folder" + }, + "storageModeAppFolderSubtitle": "Standardmäßig in Music/SpotiFLAC speichern", + "@storageModeAppFolderSubtitle": { + "description": "Subtitle for app folder storage mode" + }, + "storageModeSaf": "Benutzerdefinierter Ordner (SAF)", + "@storageModeSaf": { + "description": "Storage mode option - Storage Access Framework" + }, + "storageModeSafSubtitle": "Wähle einen beliebigen Ordner, inklusive SD-Karte", + "@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" @@ -5980,6 +4334,812 @@ "@downloadErrorFolderAccessLost": { "description": "Error shown on downloads that failed because the iOS download folder bookmark could not be opened" }, + "downloadFilenameDescription": "Verwende {artist}, {title}, {album}, {track}, {year}, {date}, {disc} als Platzhalter.", + "@downloadFilenameDescription": { + "description": "Description shown in filename format editor" + }, + "downloadFilenameInsertTag": "Tippe, um Tag einzufügen:", + "@downloadFilenameInsertTag": { + "description": "Label above filename tag chips" + }, + "downloadSeparateSinglesEnabled": "Singles und EPs werden in einem separaten Ordner gespeichert", + "@downloadSeparateSinglesEnabled": { + "description": "Subtitle when separate singles folder is on" + }, + "downloadSeparateSinglesDisabled": "Singles und Alben im selben Ordner gespeichert", + "@downloadSeparateSinglesDisabled": { + "description": "Subtitle when separate singles folder is off" + }, + "downloadArtistNameFilters": "Künstlernamen-Filter", + "@downloadArtistNameFilters": { + "description": "Setting title for artist folder filter options" + }, + "downloadCreatePlaylistSourceFolder": "Playlist-Quellordner", + "@downloadCreatePlaylistSourceFolder": { + "description": "Setting to create a subfolder per playlist source" + }, + "downloadCreatePlaylistSourceFolderEnabled": "Für jede Playlist wird ein Unterordner erstellt", + "@downloadCreatePlaylistSourceFolderEnabled": { + "description": "Subtitle when playlist folder is enabled" + }, + "downloadCreatePlaylistSourceFolderDisabled": "Alle Titel direkt im Download-Ordner gespeichert", + "@downloadCreatePlaylistSourceFolderDisabled": { + "description": "Subtitle when playlist folder is disabled" + }, + "downloadCreatePlaylistSourceFolderRedundant": "Wird durch die Ordnerorganisationseinstellung verarbeitet", + "@downloadCreatePlaylistSourceFolderRedundant": { + "description": "Subtitle when folder organization is already set to playlist" + }, + "downloadSongLinkRegion": "SongLink-Region", + "@downloadSongLinkRegion": { + "description": "Setting for SongLink region used during fallback resolution" + }, + "downloadNetworkCompatibilityMode": "Netzwerkkompatibilitätsmodus", + "@downloadNetworkCompatibilityMode": { + "description": "Setting for legacy TLS/network handling" + }, + "downloadNetworkCompatibilityModeEnabled": "Allowing legacy HTTP endpoints; TLS verification remains enabled", + "@downloadNetworkCompatibilityModeEnabled": { + "description": "Subtitle when network compatibility mode is on" + }, + "downloadNetworkCompatibilityModeDisabled": "Standard-Netzwerkeinstellungen verwenden", + "@downloadNetworkCompatibilityModeDisabled": { + "description": "Subtitle when network compatibility mode is off" + }, + "downloadAllowLocalNetwork": "Allow Local Network Access", + "@downloadAllowLocalNetwork": { + "description": "Setting title for allowing requests to private/local network targets" + }, + "downloadAllowLocalNetworkEnabled": "Requests to local/private addresses are allowed (for local proxy or custom DNS)", + "@downloadAllowLocalNetworkEnabled": { + "description": "Subtitle when allow local network access is on" + }, + "downloadAllowLocalNetworkDisabled": "Local/private addresses are blocked for security", + "@downloadAllowLocalNetworkDisabled": { + "description": "Subtitle when allow local network access is off" + }, + "downloadSelectServiceToEnable": "Select a provider with quality options to enable this option", + "@downloadSelectServiceToEnable": { + "description": "Subtitle when quality picker is disabled due to extension service" + }, + "downloadEmbedLyricsDisabled": "Metadaten-Einbettung zuerst aktivieren", + "@downloadEmbedLyricsDisabled": { + "description": "Subtitle when lyrics embedding is blocked by metadata toggle" + }, + "downloadNeteaseIncludeTranslation": "Netease: Übersetzung einschließen", + "@downloadNeteaseIncludeTranslation": { + "description": "Setting to include translated lyrics from Netease" + }, + "downloadNeteaseIncludeTranslationEnabled": "Chinesische Übersetzungszeilen enthalten", + "@downloadNeteaseIncludeTranslationEnabled": { + "description": "Subtitle when Netease translation is on" + }, + "downloadNeteaseIncludeTranslationDisabled": "Original Lyrics verwenden", + "@downloadNeteaseIncludeTranslationDisabled": { + "description": "Subtitle when Netease translation is off" + }, + "downloadNeteaseIncludeRomanization": "Netease: Romanisierung einschließen", + "@downloadNeteaseIncludeRomanization": { + "description": "Setting to include romanized lyrics from Netease" + }, + "downloadNeteaseIncludeRomanizationEnabled": "Romanisierungszeilen enthalten", + "@downloadNeteaseIncludeRomanizationEnabled": { + "description": "Subtitle when Netease romanization is on" + }, + "downloadNeteaseIncludeRomanizationDisabled": "Keine Romanisierung", + "@downloadNeteaseIncludeRomanizationDisabled": { + "description": "Subtitle when Netease romanization is off" + }, + "downloadAppleQqMultiPerson": "Apple / QQ: Multi-Personen-Lyrics", + "@downloadAppleQqMultiPerson": { + "description": "Setting for word-by-word multi-person lyrics from Apple Music and QQ Music" + }, + "downloadAppleQqMultiPersonEnabled": "Sängerlabel für Duette und Gruppentitel enthalten", + "@downloadAppleQqMultiPersonEnabled": { + "description": "Subtitle when multi-person lyrics is on" + }, + "downloadAppleQqMultiPersonDisabled": "Standardlyrics ohne Lautsprecher-Labels", + "@downloadAppleQqMultiPersonDisabled": { + "description": "Subtitle when multi-person lyrics is off" + }, + "downloadAppleElrcWordSync": "Apple Music eLRC Word Sync", + "@downloadAppleElrcWordSync": { + "description": "Setting for preserving Apple Music word-by-word eLRC timestamps" + }, + "downloadAppleElrcWordSyncEnabled": "Rohe Zeitstempel erhalten", + "@downloadAppleElrcWordSyncEnabled": { + "description": "Subtitle when Apple Music eLRC word sync is enabled" + }, + "downloadAppleElrcWordSyncDisabled": "Sichere Line-by-line Apple Music Texte", + "@downloadAppleElrcWordSyncDisabled": { + "description": "Subtitle when Apple Music eLRC word sync is disabled" + }, + "downloadMusixmatchLanguage": "Musixmatch Sprache", + "@downloadMusixmatchLanguage": { + "description": "Setting for Musixmatch lyrics translation language" + }, + "downloadMusixmatchLanguageAuto": "Auto (Originalsprache)", + "@downloadMusixmatchLanguageAuto": { + "description": "Subtitle when no language is set" + }, + "downloadFilterContributing": "Mitwirkende Künstler filtern", + "@downloadFilterContributing": { + "description": "Setting to strip contributing artists from Album Artist folder name" + }, + "downloadFilterContributingEnabled": "Mitwirkende Künstler vom Albumname des Künstlers entfernt", + "@downloadFilterContributingEnabled": { + "description": "Subtitle when contributing artist filter is on" + }, + "downloadFilterContributingDisabled": "Volle Album Künstler String verwendet", + "@downloadFilterContributingDisabled": { + "description": "Subtitle when contributing artist filter is off" + }, + "downloadProvidersNoneEnabled": "Keine Anbieter aktiviert", + "@downloadProvidersNoneEnabled": { + "description": "Shown when no lyrics providers are active" + }, + "downloadMusixmatchLanguageCode": "Sprach-Code", + "@downloadMusixmatchLanguageCode": { + "description": "Label for Musixmatch language input field" + }, + "downloadMusixmatchLanguageHint": "e.g. en, de, ja", + "@downloadMusixmatchLanguageHint": { + "description": "Placeholder for Musixmatch language input" + }, + "downloadMusixmatchLanguageDesc": "Gib einen BCP-47 Sprachcode ein (z.B. en, de, ja), um übersetzte Lyrics von Musixmatch anzufordern.", + "@downloadMusixmatchLanguageDesc": { + "description": "Description in Musixmatch language picker" + }, + "downloadMusixmatchAuto": "Auto", + "@downloadMusixmatchAuto": { + "description": "Button to clear Musixmatch language (use auto)" + }, + "downloadNetworkAnySubtitle": "WLAN oder mobile Daten verwenden", + "@downloadNetworkAnySubtitle": { + "description": "Subtitle for any-network option in picker" + }, + "downloadNetworkWifiOnlySubtitle": "Downloads bei mobilen Daten pausieren", + "@downloadNetworkWifiOnlySubtitle": { + "description": "Subtitle for WiFi-only option in picker" + }, + "downloadSongLinkRegionDesc": "Region, die beim Auflösen von Titellinks über SongLink verwendet wird. Wähle das Land, in dem der Streaming-Dienste verfügbar sind.", + "@downloadSongLinkRegionDesc": { + "description": "Description in SongLink region picker" + }, + "snackbarUnsupportedAudioFormat": "Nicht unterstütztes Audioformat", + "@snackbarUnsupportedAudioFormat": { + "description": "Snackbar when the audio format is not supported for the requested operation" + }, + "cacheRefresh": "Aktualisieren", + "@cacheRefresh": { + "description": "Tooltip for refresh button on cache management page" + }, + "dialogDownloadPlaylistsMessage": "Lade {trackCount} {trackCount, plural, =1{Titel} other{Titel}} von {playlistCount} {playlistCount, plural, =1{Playlist} other{Playlists}}?", + "@dialogDownloadPlaylistsMessage": { + "description": "Dialog message for bulk playlist download confirmation", + "placeholders": { + "trackCount": { + "type": "int" + }, + "playlistCount": { + "type": "int" + } + } + }, + "bulkDownloadPlaylistsButton": "Lade {count} {count, plural, =1{Playlist} other{Playlists}} herunter", + "@bulkDownloadPlaylistsButton": { + "description": "Button label for bulk downloading selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "bulkDownloadSelectPlaylists": "Playlist zum Herunterladen wählen", + "@bulkDownloadSelectPlaylists": { + "description": "Button label when no playlists are selected for download" + }, + "snackbarSelectedPlaylistsEmpty": "Ausgewählte Playlisten haben keine Titel", + "@snackbarSelectedPlaylistsEmpty": { + "description": "Snackbar when selected playlists contain no tracks" + }, + "playlistsCount": "{count, plural, =1{1 Playlist} other{{count} Playlists}}", + "@playlistsCount": { + "description": "Playlist count display", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "editMetadataAutoFill": "Aus online ausfüllen", + "@editMetadataAutoFill": { + "description": "Section title for selective online metadata auto-fill in the edit metadata sheet" + }, + "editMetadataAutoFillDesc": "Choose a metadata extension, select fields, then review its data before applying", + "@editMetadataAutoFillDesc": { + "description": "Description for the auto-fill section" + }, + "editMetadataAutoFillSource": "Metadata source", + "@editMetadataAutoFillSource": { + "description": "Label for the metadata extension selector in online auto-fill" + }, + "editMetadataAutoFillSourceAutomatic": "Automatic (provider priority)", + "@editMetadataAutoFillSourceAutomatic": { + "description": "Automatic source option that follows configured metadata provider priority" + }, + "editMetadataAutoFillFind": "Find metadata", + "@editMetadataAutoFillFind": { + "description": "Button label for finding an online metadata candidate" + }, + "editMetadataAutoFillPreview": "Data from {source}", + "@editMetadataAutoFillPreview": { + "description": "Title for the online metadata preview", + "placeholders": { + "source": { + "type": "String" + } + } + }, + "editMetadataAutoFillCoverAvailable": "Cover artwork available", + "@editMetadataAutoFillCoverAvailable": { + "description": "Preview value when the selected metadata source provides cover artwork" + }, + "editMetadataAutoFillApply": "Apply selected data", + "@editMetadataAutoFillApply": { + "description": "Button label for applying the previewed metadata" + }, + "editMetadataAutoFillDoneFromSource": "Filled {count} {count, plural, =1{field} other{fields}} from {source}", + "@editMetadataAutoFillDoneFromSource": { + "description": "Snackbar confirming fields applied from a selected metadata source", + "placeholders": { + "count": { + "type": "int" + }, + "source": { + "type": "String" + } + } + }, + "editMetadataAutoFillFetch": "Abrufen & Ausfüllen", + "@editMetadataAutoFillFetch": { + "description": "Button label to fetch online metadata and fill selected fields" + }, + "editMetadataAutoFillSearching": "Online suchen...", + "@editMetadataAutoFillSearching": { + "description": "Snackbar shown while searching for online metadata" + }, + "editMetadataAutoFillNoResults": "Keine passenden Metadaten online gefunden", + "@editMetadataAutoFillNoResults": { + "description": "Snackbar when online metadata search returns no results" + }, + "editMetadataAutoFillDone": "{count} {count, plural, =1{Feld} other{Felder}} aus Online-Metadaten gefüllt", + "@editMetadataAutoFillDone": { + "description": "Snackbar confirming how many fields were auto-filled", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "editMetadataAutoFillNoneSelected": "Wähle mindestens ein Feld zum automatischen Ausfüllen aus", + "@editMetadataAutoFillNoneSelected": { + "description": "Snackbar when user taps Fetch without selecting any fields" + }, + "editMetadataFieldTitle": "Titel", + "@editMetadataFieldTitle": { + "description": "Chip label for title field in auto-fill selector" + }, + "editMetadataFieldArtist": "Künstler", + "@editMetadataFieldArtist": { + "description": "Chip label for artist field in auto-fill selector" + }, + "editMetadataFieldAlbum": "Album", + "@editMetadataFieldAlbum": { + "description": "Chip label for album field in auto-fill selector" + }, + "editMetadataFieldAlbumArtist": "Album Künstler", + "@editMetadataFieldAlbumArtist": { + "description": "Chip label for album artist field in auto-fill selector" + }, + "editMetadataFieldDate": "Datum", + "@editMetadataFieldDate": { + "description": "Chip label for date field in auto-fill selector" + }, + "editMetadataFieldTrackNum": "Titel #", + "@editMetadataFieldTrackNum": { + "description": "Chip label for track number field in auto-fill selector" + }, + "editMetadataFieldDiscNum": "Disk #", + "@editMetadataFieldDiscNum": { + "description": "Chip label for disc number field in auto-fill selector" + }, + "editMetadataFieldGenre": "Genre", + "@editMetadataFieldGenre": { + "description": "Chip label for genre field in auto-fill selector" + }, + "editMetadataFieldIsrc": "ISRC", + "@editMetadataFieldIsrc": { + "description": "Chip label for ISRC field in auto-fill selector" + }, + "editMetadataFieldLabel": "Label", + "@editMetadataFieldLabel": { + "description": "Chip label for label field in auto-fill selector" + }, + "editMetadataFieldCopyright": "Urheberrecht", + "@editMetadataFieldCopyright": { + "description": "Chip label for copyright field in auto-fill selector" + }, + "editMetadataFieldCover": "Cover-Art", + "@editMetadataFieldCover": { + "description": "Chip label for cover art field in auto-fill selector" + }, + "editMetadataSelectAll": "Alle", + "@editMetadataSelectAll": { + "description": "Button to select all fields for auto-fill" + }, + "editMetadataSelectEmpty": "Nur leer", + "@editMetadataSelectEmpty": { + "description": "Button to select only fields that are currently empty" + }, + "queueDownloadingCount": "{count} werden heruntergeladen", + "@queueDownloadingCount": { + "description": "Header for active downloads section with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueFilteringIndicator": "Filtere...", + "@queueFilteringIndicator": { + "description": "Shown while filter results are being computed" + }, + "queueTrackCount": "{count, plural, =1{1 Titel} other{{count} Titel}}", + "@queueTrackCount": { + "description": "Track count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueAlbumCount": "{count, plural, =1{1 Album} other{{count} Alben}}", + "@queueAlbumCount": { + "description": "Album count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueEmptyAlbums": "Keine Album-Downloads", + "@queueEmptyAlbums": { + "description": "Empty state title when no album downloads exist" + }, + "queueEmptyAlbumsSubtitle": "Lade mehrere Titel eines Albums herunter, um sie hier zu sehen", + "@queueEmptyAlbumsSubtitle": { + "description": "Empty state subtitle for album downloads" + }, + "queueEmptySingles": "Kein Single Download", + "@queueEmptySingles": { + "description": "Empty state title when no single track downloads exist" + }, + "queueEmptySinglesSubtitle": "Einzelne Titel-Downloads werden hier angezeigt", + "@queueEmptySinglesSubtitle": { + "description": "Empty state subtitle for single track downloads" + }, + "queuePlaylistCount": "{count, plural, =1{1 playlist} other{{count} playlists}}", + "@queuePlaylistCount": { + "description": "Playlist count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueEmptyPlaylistsSubtitle": "Create a playlist to organize your tracks", + "@queueEmptyPlaylistsSubtitle": { + "description": "Empty state subtitle for the playlists library view" + }, + "libraryDefaultView": "Default view", + "@libraryDefaultView": { + "description": "Setting title - which library view opens when switching to the Library tab" + }, + "libraryDefaultViewLastUsed": "Last used", + "@libraryDefaultViewLastUsed": { + "description": "Default view option - keep the last used library view" + }, + "queueEmptyHistory": "Kein Download-Verlauf", + "@queueEmptyHistory": { + "description": "Empty state title when download history is empty" + }, + "queueEmptyHistorySubtitle": "Heruntergeladene Titel werden hier angezeigt", + "@queueEmptyHistorySubtitle": { + "description": "Empty state subtitle for download history" + }, + "selectionAllPlaylistsSelected": "Alle Playlists ausgewählt", + "@selectionAllPlaylistsSelected": { + "description": "Shown when all playlists are selected in selection mode" + }, + "selectionTapPlaylistsToSelect": "Zum Auswählen auf Playlists tippen", + "@selectionTapPlaylistsToSelect": { + "description": "Hint shown in playlist selection mode" + }, + "selectionSelectPlaylistsToDelete": "Playlist zum Löschen wählen", + "@selectionSelectPlaylistsToDelete": { + "description": "Hint shown when no playlists are selected for deletion" + }, + "audioAnalysisTitle": "Audio-Qualitätsanalyse", + "@audioAnalysisTitle": { + "description": "Title for audio analysis section" + }, + "audioAnalysisDescription": "Verlustfreie Qualität mit Spektrumanalyse überprüfen", + "@audioAnalysisDescription": { + "description": "Description for audio analysis tap-to-analyze prompt" + }, + "audioAnalysisAnalyzing": "Audio wird analysiert...", + "@audioAnalysisAnalyzing": { + "description": "Loading text while analyzing audio" + }, + "audioAnalysisSampleRate": "Abtastrate", + "@audioAnalysisSampleRate": { + "description": "Sample rate metric label" + }, + "audioAnalysisCodec": "Codec", + "@audioAnalysisCodec": { + "description": "Audio codec metric label" + }, + "audioAnalysisContainer": "Container", + "@audioAnalysisContainer": { + "description": "Audio container metric label" + }, + "audioAnalysisDecodedFormat": "Dekodiertes Format", + "@audioAnalysisDecodedFormat": { + "description": "Decoded sample format metric label" + }, + "audioAnalysisBitDepth": "Bit-Tiefe", + "@audioAnalysisBitDepth": { + "description": "Bit depth metric label" + }, + "audioAnalysisChannels": "Kanäle", + "@audioAnalysisChannels": { + "description": "Channels metric label" + }, + "audioAnalysisDuration": "Länge", + "@audioAnalysisDuration": { + "description": "Duration metric label" + }, + "audioAnalysisNyquist": "Nyquist", + "@audioAnalysisNyquist": { + "description": "Nyquist frequency metric label" + }, + "audioAnalysisFileSize": "Größe", + "@audioAnalysisFileSize": { + "description": "File size metric label" + }, + "audioAnalysisDynamicRange": "Dynamischer Bereich", + "@audioAnalysisDynamicRange": { + "description": "Dynamic range metric label" + }, + "audioAnalysisPeak": "Maximum", + "@audioAnalysisPeak": { + "description": "Peak amplitude metric label" + }, + "audioAnalysisRms": "RMS", + "@audioAnalysisRms": { + "description": "RMS level metric label" + }, + "audioAnalysisLufs": "LUFS", + "@audioAnalysisLufs": { + "description": "Integrated loudness metric label" + }, + "audioAnalysisTruePeak": "True Peak", + "@audioAnalysisTruePeak": { + "description": "True peak metric label" + }, + "audioAnalysisClipping": "Clipping", + "@audioAnalysisClipping": { + "description": "Clipping metric label" + }, + "audioAnalysisNoClipping": "Kein Clipping", + "@audioAnalysisNoClipping": { + "description": "Displayed when no clipped samples were detected" + }, + "audioAnalysisSpectralCutoff": "Spektralschnitt", + "@audioAnalysisSpectralCutoff": { + "description": "Estimated spectral cutoff metric label" + }, + "audioAnalysisCutoffNotDetected": "Not detected", + "@audioAnalysisCutoffNotDetected": { + "description": "Displayed when no reliable broadband spectral cutoff can be detected" + }, + "audioAnalysisChannelStats": "Pro Kanal Statistik", + "@audioAnalysisChannelStats": { + "description": "Per-channel audio analysis section label" + }, + "audioAnalysisSamples": "Proben", + "@audioAnalysisSamples": { + "description": "Total samples metric label" + }, + "audioAnalysisRescan": "Neu analysieren", + "@audioAnalysisRescan": { + "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" + }, + "downloadRedownloadFakeHiRes": "Re-download fake Hi-Res", + "@downloadRedownloadFakeHiRes": { + "description": "Setting title: automatically replace downloads that measure as fake Hi-Res" + }, + "downloadRedownloadFakeHiResSubtitle": "Off by default. Check Hi-Res downloads and replace only when every audio sample is preserved. Keep the original if verification or processing fails", + "@downloadRedownloadFakeHiResSubtitle": { + "description": "Setting subtitle for the fake Hi-Res re-download toggle" + }, + "hiResCheckVerdictFakeCertain": "Fake Hi-Res", + "@hiResCheckVerdictFakeCertain": { + "description": "Verdict: an exact fingerprint (padded bits or upsampling pattern) proves the file is not real Hi-Res" + }, + "hiResCheckVerdictFakeSuspect": "Possibly a filtered master", + "@hiResCheckVerdictFakeSuspect": { + "description": "Verdict: fails the cutoff test but may be a genuine master low-pass filtered in mastering" + }, + "hiResCheckReasonSampleHold": "Every sample is repeated: upsampled by duplication", + "@hiResCheckReasonSampleHold": { + "description": "Reason: sample-and-hold upsampling detected" + }, + "hiResCheckReasonInterpolation": "In-between samples are linearly interpolated", + "@hiResCheckReasonInterpolation": { + "description": "Reason: linear-interpolation upsampling detected" + }, + "hiResCheckReasonImaging": "Content above 22 kHz mirrors the audible band", + "@hiResCheckReasonImaging": { + "description": "Reason: spectral imaging from upsampling detected" + }, + "hiResCheckMusicContent": "Musical content", + "@hiResCheckMusicContent": { + "description": "Label for the highest frequency that still moves with the music" + }, + "hiResCheckUltrasonicNoise": "Above {cutoff} only steady noise (typical of DSD or analog tape transfers): a {rate} file would hold all the music", + "@hiResCheckUltrasonicNoise": { + "description": "Shown when the ultrasonic content of a Hi-Res file is noise rather than music", + "placeholders": { + "cutoff": { + "type": "String" + }, + "rate": { + "type": "String" + } + } + }, + "hiResCheckTitle": "Hi-Res Authenticity", + "@hiResCheckTitle": { + "description": "Title of the fake Hi-Res check card" + }, + "hiResCheckDescription": "Detect upsampled or bit-padded fake Hi-Res files", + "@hiResCheckDescription": { + "description": "Explains what the Hi-Res authenticity check does" + }, + "hiResCheckRun": "Check", + "@hiResCheckRun": { + "description": "Button that starts the Hi-Res authenticity check" + }, + "hiResCheckChecking": "Checking Hi-Res authenticity...", + "@hiResCheckChecking": { + "description": "Loading text while the Hi-Res check runs" + }, + "hiResCheckVerdictFake": "Likely fake Hi-Res", + "@hiResCheckVerdictFake": { + "description": "Verdict: the file claims Hi-Res but does not measure as it" + }, + "hiResCheckVerdictGenuine": "Measures as genuine Hi-Res", + "@hiResCheckVerdictGenuine": { + "description": "Verdict: no upsampling or padded bit depth found" + }, + "hiResCheckVerdictStandard": "Standard definition, nothing to flag", + "@hiResCheckVerdictStandard": { + "description": "Verdict: neither sample rate nor bit depth claims Hi-Res" + }, + "hiResCheckVerdictInconclusive": "Inconclusive: the analyzed segment is too quiet or short", + "@hiResCheckVerdictInconclusive": { + "description": "Verdict: analysis could not reach a reliable conclusion" + }, + "hiResCheckUnsupported": "Only FLAC and WAV files can be checked", + "@hiResCheckUnsupported": { + "description": "Shown when the file format cannot be decoded by the Hi-Res check" + }, + "hiResCheckCutoff": "Content cutoff", + "@hiResCheckCutoff": { + "description": "Label for the highest frequency with real content" + }, + "hiResCheckBitsInUse": "Bits in use", + "@hiResCheckBitsInUse": { + "description": "Label for effective vs declared bit depth" + }, + "hiResCheckDisclaimer": "The spectrum stops early, but nothing proves it was upsampled: it may be a genuine master low-pass filtered in mastering. It is not replaced automatically.", + "@hiResCheckDisclaimer": { + "description": "Caveat shown under a fake Hi-Res verdict" + }, + "hiResCheckFailed": "Hi-Res check failed: {error}", + "@hiResCheckFailed": { + "description": "Error shown when the Hi-Res check fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "hiResCheckReasonRate": "Declares {sampleRate} but content stops at ~{cutoff}", + "@hiResCheckReasonRate": { + "description": "Reason for a fake verdict caused by upsampling", + "placeholders": { + "sampleRate": { + "type": "String" + }, + "cutoff": { + "type": "String" + } + } + }, + "hiResCheckReasonDepth": "Declares {declared}-bit but only {effective} bits carry data", + "@hiResCheckReasonDepth": { + "description": "Reason for a fake verdict caused by padded bit depth", + "placeholders": { + "declared": { + "type": "int" + }, + "effective": { + "type": "int" + } + } + }, + "audioAnalysisRescanning": "Audio wird analysiert...", + "@audioAnalysisRescanning": { + "description": "Loading text while audio is being re-analyzed after an explicit refresh" + }, + "extensionsHomeFeedProvider": "Home Feed Anbieter", + "@extensionsHomeFeedProvider": { + "description": "Extensions page - label for home feed provider selector" + }, + "extensionsHomeFeedDescription": "Wählen Sie die Erweiterung aus, die den Start-Feed auf dem Hauptbildschirm anzeigt", + "@extensionsHomeFeedDescription": { + "description": "Extensions page - description for home feed provider picker" + }, + "extensionsHomeFeedAuto": "Auto", + "@extensionsHomeFeedAuto": { + "description": "Label for auto-selected search provider" + }, + "extensionsHomeFeedAutoSubtitle": "Automatisch die besten verfügbaren auswählen", + "@extensionsHomeFeedAutoSubtitle": { + "description": "Extensions page - subtitle for auto home feed option" + }, + "extensionsHomeFeedOff": "Aus", + "@extensionsHomeFeedOff": { + "description": "Extensions page - home feed provider option: off" + }, + "extensionsHomeFeedOffSubtitle": "Start-Feed nicht auf dem Hauptbildschirm anzeigen", + "@extensionsHomeFeedOffSubtitle": { + "description": "Extensions page - subtitle for off home feed option" + }, + "extensionsHomeFeedUse": "{extensionName} Home Feed verwenden", + "@extensionsHomeFeedUse": { + "description": "Extensions page - subtitle for a specific extension home feed option", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "extensionsNoHomeFeedExtensions": "Keine Erweiterungen mit Home-Feed", + "@extensionsNoHomeFeedExtensions": { + "description": "Extensions page - shown when no installed extension has home feed" + }, + "cancelDownloadTitle": "Download abbrechen?", + "@cancelDownloadTitle": { + "description": "Dialog title when confirming cancellation of an active download" + }, + "cancelDownloadContent": "Dadurch wird der aktive Download für \"{trackName}\" abgebrochen.", + "@cancelDownloadContent": { + "description": "Dialog body when confirming cancellation of an active download", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "cancelDownloadKeep": "Behalten", + "@cancelDownloadKeep": { + "description": "Dialog button - keep the active download (do not cancel)" + }, + "queueCancelledTitle": "Download cancelled", + "@queueCancelledTitle": { + "description": "Dialog title when opening a cancelled queue item" + }, + "queueCancelledMessage": "This download was cancelled. Retry it or remove it from the queue.", + "@queueCancelledMessage": { + "description": "Dialog body when opening a cancelled queue item" + }, + "metadataSaveFailedFfmpeg": "Fehler beim Speichern der Metadaten über FFmpeg", + "@metadataSaveFailedFfmpeg": { + "description": "Snackbar error when FFmpeg fails to write metadata" + }, + "metadataSaveFailedStorage": "Metadaten konnten nicht zurück in den Speicher geschrieben werden", + "@metadataSaveFailedStorage": { + "description": "Snackbar error when writing metadata file back to storage fails" + }, + "snackbarFolderPickerFailed": "Fehler beim Öffnen des Ordners: {error}", + "@snackbarFolderPickerFailed": { + "description": "Snackbar shown when folder picker fails to open", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "notifDownloadingTrack": "{trackName} wird heruntergeladen", + "@notifDownloadingTrack": { + "description": "Notification title while downloading a track", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "notifFinalizingTrack": "{trackName} wird fertiggestellt", + "@notifFinalizingTrack": { + "description": "Notification title while finalizing (embedding metadata) a track", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "notifEmbeddingMetadata": "Bette Metadaten ein...", + "@notifEmbeddingMetadata": { + "description": "Notification body while embedding metadata into a downloaded track" + }, + "notifAlreadyInLibraryCount": "Bereits in der Bibliothek ({completed}/{total})", + "@notifAlreadyInLibraryCount": { + "description": "Notification title when track is already in library, with count", + "placeholders": { + "completed": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "notifAlreadyInLibrary": "Bereits in der Bibliothek", + "@notifAlreadyInLibrary": { + "description": "Notification title when track is already in library" + }, + "notifDownloadCompleteCount": "Download abgeschlossen ({completed}/{total})", + "@notifDownloadCompleteCount": { + "description": "Notification title when download is complete, with count", + "placeholders": { + "completed": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "notifDownloadComplete": "Download abgeschlossen", + "@notifDownloadComplete": { + "description": "Notification title when a single download is complete" + }, + "notifDownloadsFinished": "Downloads abgeschlossen ({completed} fertig, {failed} fehlgeschlagen)", + "@notifDownloadsFinished": { + "description": "Notification title when queue finishes with some failures", + "placeholders": { + "completed": { + "type": "int" + }, + "failed": { + "type": "int" + } + } + }, "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" @@ -5988,10 +5148,592 @@ "@notifVerificationRequiredBody": { "description": "Notification body prompting the user to return to the app to solve a verification challenge" }, + "notifAllDownloadsComplete": "Alle Downloads abgeschlossen", + "@notifAllDownloadsComplete": { + "description": "Notification title when all downloads finish successfully" + }, + "notifTracksDownloadedSuccess": "{count, plural, =1{1 Titel erfolgreich heruntergeladen} other{{count} Titel erfolgreich heruntergeladen}}", + "@notifTracksDownloadedSuccess": { + "description": "Notification body for queue complete - how many tracks were downloaded", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifDownloadsFinishedBody": "{completed, plural, =1{1 Titel heruntergeladen} other{{completed} Titel heruntergeladen}}, {failed, plural, =1{1 fehlgeschlagen} other{{failed} fehlgeschlagen}}", + "@notifDownloadsFinishedBody": { + "description": "Notification body when queue finishes with failures", + "placeholders": { + "completed": { + "type": "int" + }, + "failed": { + "type": "int" + } + } + }, + "notifDownloadsCanceledTitle": "Downloads abgebrochen", + "@notifDownloadsCanceledTitle": { + "description": "Notification title when downloads are canceled by the user" + }, + "notifDownloadsCanceledBody": "{count, plural, =1{1 Download vom Nutzer abgebrochen} other{{count} Downloads vom Nutzer abgebrochen}}", + "@notifDownloadsCanceledBody": { + "description": "Notification body when downloads are canceled by the user", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifScanningLibrary": "Scanne lokale Bibliothek", + "@notifScanningLibrary": { + "description": "Notification title while scanning local library" + }, + "notifLibraryScanProgressWithTotal": "{scanned}/{total} Dateien • {percentage}%", + "@notifLibraryScanProgressWithTotal": { + "description": "Notification body for library scan progress when total is known", + "placeholders": { + "scanned": { + "type": "int" + }, + "total": { + "type": "int" + }, + "percentage": { + "type": "int" + } + } + }, + "notifLibraryScanProgressNoTotal": "{scanned} gescannte Dateien • {percentage}%", + "@notifLibraryScanProgressNoTotal": { + "description": "Notification body for library scan progress when total is unknown", + "placeholders": { + "scanned": { + "type": "int" + }, + "percentage": { + "type": "int" + } + } + }, + "notifLibraryScanComplete": "Bibliotheksscan abgeschlossen", + "@notifLibraryScanComplete": { + "description": "Notification title when library scan finishes" + }, + "notifLibraryScanCompleteBody": "{count} titel indiziert", + "@notifLibraryScanCompleteBody": { + "description": "Notification body for library scan complete - number of indexed tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifLibraryScanExcluded": "{count} ausgeschlossen", + "@notifLibraryScanExcluded": { + "description": "Library scan complete suffix - excluded track count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifLibraryScanErrors": "{count} Fehler", + "@notifLibraryScanErrors": { + "description": "Library scan complete suffix - error count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifLibraryScanFailed": "Bibliotheksscan fehlgeschlagen", + "@notifLibraryScanFailed": { + "description": "Notification title when library scan fails" + }, + "notifLibraryScanCancelled": "Bibliotheksscan abgebrochen", + "@notifLibraryScanCancelled": { + "description": "Notification title when library scan is cancelled by the user" + }, + "notifLibraryScanStopped": "Scan wurde vor Abschluss gestoppt.", + "@notifLibraryScanStopped": { + "description": "Notification body when library scan is cancelled" + }, + "notifDownloadingUpdate": "SpotiFLAC Mobile v{version} wird heruntergeladen", + "@notifDownloadingUpdate": { + "description": "Notification title while downloading an app update", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "notifUpdateProgress": "{received} / {total} MB • {percentage}%", + "@notifUpdateProgress": { + "description": "Notification body showing update download progress", + "placeholders": { + "received": { + "type": "String" + }, + "total": { + "type": "String" + }, + "percentage": { + "type": "int" + } + } + }, + "notifUpdateReady": "Update bereit", + "@notifUpdateReady": { + "description": "Notification title when app update download is complete" + }, + "notifUpdateReadyBody": "SpotiFLAC Mobile v{version} heruntergeladen. Zum Installieren tippen.", + "@notifUpdateReadyBody": { + "description": "Notification body when app update is ready to install", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "notifUpdateFailed": "Update fehlgeschlagen", + "@notifUpdateFailed": { + "description": "Notification title when app update download fails" + }, + "notifUpdateFailedBody": "Update konnte nicht heruntergeladen werden. Versuche es später erneut.", + "@notifUpdateFailedBody": { + "description": "Notification body when app update download fails" + }, + "searchTracks": "Titel", + "@searchTracks": { + "description": "Search filter label - tracks" + }, + "homeSearchHintDefault": "Unterstützte URL einfügen oder suchen...", + "@homeSearchHintDefault": { + "description": "Default placeholder for the main search field on Home" + }, + "homeSearchHintProvider": "Mit {providerName} suchen...", + "@homeSearchHintProvider": { + "description": "Placeholder for the main search field when a provider is selected", + "placeholders": { + "providerName": { + "type": "String" + } + } + }, + "homeImportCsvTooltip": "Import playlist (CSV, M3U)", + "@homeImportCsvTooltip": { + "description": "Tooltip for importing a CSV or M3U playlist file into Home search" + }, + "homeChangeSearchProviderTooltip": "Suchanbieter ändern", + "@homeChangeSearchProviderTooltip": { + "description": "Tooltip for the Home search provider picker" + }, + "actionPaste": "Einfügen", + "@actionPaste": { + "description": "Generic action - paste from clipboard" + }, + "tutorialSearchHint": "Einfügen oder suchen...", + "@tutorialSearchHint": { + "description": "Placeholder shown in the tutorial search demo" + }, + "tutorialDownloadCompletedSemantics": "Download abgeschlossen", + "@tutorialDownloadCompletedSemantics": { + "description": "Accessibility label for completed download state in tutorial demo" + }, + "tutorialDownloadInProgressSemantics": "Download wird ausgeführt", + "@tutorialDownloadInProgressSemantics": { + "description": "Accessibility label for active download state in tutorial demo" + }, + "tutorialStartDownloadSemantics": "Download starten", + "@tutorialStartDownloadSemantics": { + "description": "Accessibility label for idle download button in tutorial demo" + }, + "optionsEmbedMetadata": "Eingebettete Metadaten", + "@optionsEmbedMetadata": { + "description": "Settings toggle title for writing metadata into downloaded files" + }, + "optionsEmbedMetadataSubtitleOn": "Schreibe Metadaten, Cover und eingebettete Songtexte in Dateien", + "@optionsEmbedMetadataSubtitleOn": { + "description": "Subtitle when metadata embedding is enabled" + }, + "optionsEmbedMetadataSubtitleOff": "Deaktiviert (erweitert): Metadateneinbettung überspringen", + "@optionsEmbedMetadataSubtitleOff": { + "description": "Subtitle when metadata embedding is disabled" + }, + "trackCoverNoEmbeddedArt": "Kein eingebettetes Albumcover gefunden", + "@trackCoverNoEmbeddedArt": { + "description": "Message shown when a track file has no embedded cover art" + }, + "trackCoverReplace": "Cover ersetzen", + "@trackCoverReplace": { + "description": "Button label for replacing selected cover art" + }, + "trackCoverPick": "Cover auswählen", + "@trackCoverPick": { + "description": "Button label for selecting cover art" + }, + "trackCoverClearSelected": "Ausgewähltes Cover löschen", + "@trackCoverClearSelected": { + "description": "Tooltip for clearing the newly selected cover art" + }, + "trackCoverCurrent": "Aktuelles Cover", + "@trackCoverCurrent": { + "description": "Label for the currently embedded cover preview" + }, + "trackCoverSelected": "Ausgewähltes Cover", + "@trackCoverSelected": { + "description": "Label for the newly selected cover preview" + }, + "trackCoverReplaceNotice": "Das ausgewählte Cover ersetzt das aktuell eingebettete Cover, wenn auf speichern gedrückt wird.", + "@trackCoverReplaceNotice": { + "description": "Notice shown when a new cover has been selected but not saved yet" + }, + "trackCoverResolution": "Cover resolution", + "@trackCoverResolution": { + "description": "Label for selecting the embedded cover art resolution" + }, + "trackCoverResolutionHint": "Sets the longest edge when saved. Enlarging does not add image detail.", + "@trackCoverResolutionHint": { + "description": "Explanation below the embedded cover art resolution selector" + }, + "trackCoverResizeFailed": "The cover image could not be resized. Please try another size or image.", + "@trackCoverResizeFailed": { + "description": "Error shown when resizing cover art before saving metadata fails" + }, + "actionStop": "Stop", + "@actionStop": { + "description": "Generic action - stop" + }, + "queueFinalizingDownload": "Download wird abgeschlossen", + "@queueFinalizingDownload": { + "description": "Accessibility label for a queue item that is finalizing" + }, + "queueDownloadNext": "Download next", + "@queueDownloadNext": { + "description": "Tooltip on a queued download row; moves the item to the front of the queue so the next free slot downloads it" + }, + "queueMoveUp": "Move up", + "@queueMoveUp": { + "description": "Queue item menu action - move the queued item one position earlier" + }, + "queueMoveDown": "Move down", + "@queueMoveDown": { + "description": "Queue item menu action - move the queued item one position later" + }, + "editMetadataMusicBrainzButton": "Fetch from MusicBrainz", + "@editMetadataMusicBrainzButton": { + "description": "Tag editor button that fills genre and album artist from MusicBrainz by ISRC" + }, + "editMetadataMusicBrainzFilled": "Updated from MusicBrainz", + "@editMetadataMusicBrainzFilled": { + "description": "Snackbar after MusicBrainz suggestions were applied to the tag editor fields" + }, + "editMetadataMusicBrainzNothing": "Nothing found on MusicBrainz", + "@editMetadataMusicBrainzNothing": { + "description": "Snackbar when the MusicBrainz lookup returns no data" + }, + "editMetadataMusicBrainzNeedsIsrc": "Requires an ISRC tag", + "@editMetadataMusicBrainzNeedsIsrc": { + "description": "Snackbar when the MusicBrainz lookup is tapped without an ISRC" + }, + "nowPlayingRepeatOff": "Repeat off", + "@nowPlayingRepeatOff": { + "description": "Repeat toggle tooltip when repeat is disabled" + }, + "nowPlayingRepeatAll": "Repeat all", + "@nowPlayingRepeatAll": { + "description": "Repeat toggle tooltip when the whole queue repeats" + }, + "nowPlayingRepeatOne": "Repeat one", + "@nowPlayingRepeatOne": { + "description": "Repeat toggle tooltip when the current track repeats" + }, + "queueNetworkFailedOffline": "{count} downloads failed while offline", + "@queueNetworkFailedOffline": { + "description": "Snackbar shown when connectivity returns and network-failed downloads can be retried", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueDownloadedFileMissing": "Heruntergeladene Datei fehlt", + "@queueDownloadedFileMissing": { + "description": "Accessibility label when a downloaded file is missing from disk" + }, + "queueCheckingDownloadedFile": "Checking downloaded file...", + "@queueCheckingDownloadedFile": { + "description": "Accessibility label while the app checks whether a just-completed download has appeared at its final path yet. Not about authentication or a download session." + }, + "queueDownloadCompleted": "Download abgeschlossen", + "@queueDownloadCompleted": { + "description": "Accessibility label for completed download state in queue" + }, + "queueRateLimitTitle": "Service rate limited", + "@queueRateLimitTitle": { + "description": "Title shown on a failed queue item when the download service rate limits requests" + }, + "queueRateLimitMessage": "This track may still be available. Wait a few minutes, reduce parallel downloads, then retry.", + "@queueRateLimitMessage": { + "description": "Explanation shown on a failed queue item when the download service rate limits requests" + }, + "appearanceSelectAccentColor": "Wähle Akzentfarbe {hex}", + "@appearanceSelectAccentColor": { + "description": "Accessibility label for picking an accent color", + "placeholders": { + "hex": { + "type": "String" + } + } + }, + "logAutoScrollOn": "Auto-Scrollen AN", + "@logAutoScrollOn": { + "description": "Tooltip when auto-scroll is enabled on the log screen" + }, + "logAutoScrollOff": "Auto-Scrollen AUS", + "@logAutoScrollOff": { + "description": "Tooltip when auto-scroll is disabled on the log screen" + }, + "logCopyLogs": "Logs kopieren", + "@logCopyLogs": { + "description": "Tooltip for copying logs" + }, + "logClearSearch": "Suche löschen", + "@logClearSearch": { + "description": "Tooltip for clearing the log search field" + }, + "logIssueIspBlockingLabel": "ISP BLOCKIERUNG ERKANNT", + "@logIssueIspBlockingLabel": { + "description": "Diagnostic badge label when ISP blocking is detected" + }, + "logIssueIspBlockingDescription": "Dein ISP blockiert möglicherweise den Zugriff auf den Download Dienst", + "@logIssueIspBlockingDescription": { + "description": "Diagnostic badge description for ISP blocking" + }, + "logIssueIspBlockingSuggestion": "Versuche es einem VPN oder ändere DNS auf 1.1.1.1 oder 8.8.8.8", + "@logIssueIspBlockingSuggestion": { + "description": "Diagnostic badge suggestion for ISP blocking" + }, + "logIssueRateLimitedLabel": "LIMIT ERKANNT", + "@logIssueRateLimitedLabel": { + "description": "Diagnostic badge label when the service rate limits requests" + }, + "logIssueRateLimitedDescription": "Zu viele Anfragen an den Dienst", + "@logIssueRateLimitedDescription": { + "description": "Diagnostic badge description for rate limiting" + }, + "logIssueRateLimitedSuggestion": "Warte ein paar Minuten, bevor du es erneut versuchst", + "@logIssueRateLimitedSuggestion": { + "description": "Diagnostic badge suggestion for rate limiting" + }, + "logIssueNetworkErrorLabel": "NETZWERKFEHLER", + "@logIssueNetworkErrorLabel": { + "description": "Diagnostic badge label for generic network errors" + }, + "logIssueNetworkErrorDescription": "Verbindungsprobleme erkannt", + "@logIssueNetworkErrorDescription": { + "description": "Diagnostic badge description for generic network errors" + }, + "logIssueNetworkErrorSuggestion": "Überprüfe deine Internetverbindung", + "@logIssueNetworkErrorSuggestion": { + "description": "Diagnostic badge suggestion for generic network errors" + }, + "logIssueTrackNotFoundLabel": "TITEL NICHT GEFUNDEN", + "@logIssueTrackNotFoundLabel": { + "description": "Diagnostic badge label when a track is unavailable" + }, + "logIssueTrackNotFoundDescription": "Einige Titel konnten auf Download-Diensten nicht gefunden werden", + "@logIssueTrackNotFoundDescription": { + "description": "Diagnostic badge description when a track is unavailable" + }, + "logIssueTrackNotFoundSuggestion": "Der Titel ist möglicherweise nicht in verlustfreier Qualität verfügbar", + "@logIssueTrackNotFoundSuggestion": { + "description": "Diagnostic badge suggestion when a track is unavailable" + }, + "clickableLookingUpArtist": "Künstler wird gesucht...", + "@clickableLookingUpArtist": { + "description": "Snackbar shown while clickable artist metadata is being resolved" + }, + "clickableInformationUnavailable": "{type} Informationen nicht verfügbar", + "@clickableInformationUnavailable": { + "description": "Snackbar shown when clickable metadata cannot open a destination", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "extensionDetailsTags": "Tags", + "@extensionDetailsTags": { + "description": "Section title for extension tags" + }, + "extensionDetailsInformation": "Info", + "@extensionDetailsInformation": { + "description": "Section title for extension metadata information" + }, + "extensionUtilityFunctions": "Hilfsfunktionen", + "@extensionUtilityFunctions": { + "description": "Capability label for utility-only extensions" + }, + "actionDismiss": "Schließen", + "@actionDismiss": { + "description": "Generic action - dismiss" + }, + "setupChangeFolderTooltip": "Ordner ändern", + "@setupChangeFolderTooltip": { + "description": "Tooltip for editing the selected download folder" + }, + "a11yOpenTrackByArtist": "Öffne Track {trackName} von {artistName}", + "@a11yOpenTrackByArtist": { + "description": "Accessibility label for opening a track item", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "a11yOpenItem": "{itemType} {name} öffnen", + "@a11yOpenItem": { + "description": "Accessibility label for opening a generic item", + "placeholders": { + "itemType": { + "type": "String" + }, + "name": { + "type": "String" + } + } + }, + "a11yOpenItemCount": "Öffne {title}, {count} {count, plural, =1{Item} other{Items}}", + "@a11yOpenItemCount": { + "description": "Accessibility label for opening a grouped item with count", + "placeholders": { + "title": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "a11yOpenAlbumByArtistTrackCount": "Öffne Album {albumName} von {artistName}, {trackCount} Titel", + "@a11yOpenAlbumByArtistTrackCount": { + "description": "Accessibility label for opening an album item with track count", + "placeholders": { + "albumName": { + "type": "String" + }, + "artistName": { + "type": "String" + }, + "trackCount": { + "type": "int" + } + } + }, + "a11yTrackByArtist": "{trackName} von {artistName}", + "@a11yTrackByArtist": { + "description": "Accessibility label for a queue or list track item", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "a11ySelectAlbum": "Wähle Album {albumName}", + "@a11ySelectAlbum": { + "description": "Accessibility label for selecting an album", + "placeholders": { + "albumName": { + "type": "String" + } + } + }, + "a11yOpenAlbum": "Album öffnen {albumName}", + "@a11yOpenAlbum": { + "description": "Accessibility label for opening an album", + "placeholders": { + "albumName": { + "type": "String" + } + } + }, + "settingsFiles": "Dateien & Ordner", + "@settingsFiles": { + "description": "Settings menu item - file and folder settings" + }, + "settingsFilesSubtitle": "Speicherort, Dateiname, Ordnerstruktur", + "@settingsFilesSubtitle": { + "description": "Subtitle for files & folders settings" + }, + "settingsMetadata": "Metadaten", + "@settingsMetadata": { + "description": "Settings menu item - metadata settings" + }, + "settingsMetadataSubtitle": "Cover Art, Tags, ReplayGain, Anbieter", + "@settingsMetadataSubtitle": { + "description": "Subtitle for metadata settings" + }, + "settingsLyrics": "Lyrics", + "@settingsLyrics": { + "description": "Settings menu item - lyrics settings" + }, + "settingsLyricsSubtitle": "Einbetten, Modus, Anbieter, Sprachoptionen", + "@settingsLyricsSubtitle": { + "description": "Subtitle for lyrics settings" + }, + "settingsApp": "App", + "@settingsApp": { + "description": "Settings menu item - app settings" + }, + "settingsAppSubtitle": "Updates, Daten, Erweiterungsrepo, Debug", + "@settingsAppSubtitle": { + "description": "Subtitle for app settings" + }, + "sectionMetadataProviders": "Anbieter", + "@sectionMetadataProviders": { + "description": "Settings section header for metadata providers" + }, + "sectionDuplicates": "Duplikate", + "@sectionDuplicates": { + "description": "Settings section header for deduplication" + }, + "sectionLyricsProviderOptions": "Anbieter-Optionen", + "@sectionLyricsProviderOptions": { + "description": "Settings section header for per-provider lyrics options" + }, + "metadataProvidersTitle": "Priorität des Metadaten-Anbieters", + "@metadataProvidersTitle": { + "description": "Settings item title for metadata provider order" + }, + "metadataProvidersSubtitle": "Zieh, um Such- und Metadatenquellenreihenfolge zu setzen", + "@metadataProvidersSubtitle": { + "description": "Subtitle for metadata provider priority item" + }, + "downloadDeduplication": "Doppelte Downloads überspringen", + "@downloadDeduplication": { + "description": "Setting - skip tracks already in download history" + }, + "downloadDeduplicationEnabled": "Bereits heruntergeladene Titel werden übersprungen", + "@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": "Alle Titel werden unabhängig vom Verlauf heruntergeladen", + "@downloadDeduplicationDisabled": { + "description": "Subtitle when deduplication is off" + }, "downloadQualityVariants": "Allow different quality versions", "@downloadQualityVariants": { "description": "Setting to retain multiple quality versions of the same track" @@ -6004,99 +5746,1084 @@ "@trackOptionDownloadQualityVariant": { "description": "Track menu action to download another quality version" }, + "downloadFallbackExtensions": "Fallback-Erweiterungen", + "@downloadFallbackExtensions": { + "description": "Settings item for configuring fallback extension providers" + }, + "downloadFallbackExtensionsSubtitle": "Wähle, welche Erweiterungen als Fallback verwendet werden können", + "@downloadFallbackExtensionsSubtitle": { + "description": "Subtitle for fallback extensions item" + }, + "editMetadataFieldDateHint": "JJJJ-MM-TT oder JJJJJ", + "@editMetadataFieldDateHint": { + "description": "Hint text for the edit metadata date field" + }, + "editMetadataFieldTrackTotal": "Titel insgesamt", + "@editMetadataFieldTrackTotal": { + "description": "Label for total tracks field in the edit metadata sheet" + }, + "editMetadataFieldDiscTotal": "Disc gesamt", + "@editMetadataFieldDiscTotal": { + "description": "Label for total discs field in the edit metadata sheet" + }, + "editMetadataFieldComposer": "Komponist", + "@editMetadataFieldComposer": { + "description": "Label for composer field in the edit metadata sheet" + }, + "editMetadataFieldComment": "Kommentar", + "@editMetadataFieldComment": { + "description": "Label for comment field in the edit metadata sheet" + }, + "trackAlbumType": "Release Type", + "@trackAlbumType": { + "description": "Label for an album or release type metadata value" + }, + "editMetadataFieldAlbumTypeHint": "Album, single, EP, compilation...", + "@editMetadataFieldAlbumTypeHint": { + "description": "Hint for the release type metadata field" + }, + "editMetadataFieldExplicit": "Explicit", + "@editMetadataFieldExplicit": { + "description": "Label for the explicit content metadata field" + }, + "editMetadataFieldExplicitHint": "Mark this track as containing explicit content", + "@editMetadataFieldExplicitHint": { + "description": "Description for the explicit content metadata switch" + }, + "metadataExplicitValue": "Explicit", + "@metadataExplicitValue": { + "description": "Displayed value when a track is marked explicit" + }, + "editMetadataFieldUpc": "UPC / Barcode", + "@editMetadataFieldUpc": { + "description": "Label for the release barcode metadata field" + }, + "editMetadataFieldUpcHint": "Numeric UPC, EAN, or GTIN", + "@editMetadataFieldUpcHint": { + "description": "Hint for the release barcode metadata field" + }, + "editMetadataAdvanced": "Erweitert", + "@editMetadataAdvanced": { + "description": "Expandable section label for advanced metadata fields" + }, + "libraryFilterMetadataMissingTrackNumber": "Fehlende Tracknummer", + "@libraryFilterMetadataMissingTrackNumber": { + "description": "Filter option - items missing track number" + }, + "libraryFilterMetadataMissingDiscNumber": "Fehlende Disc-Nummer", + "@libraryFilterMetadataMissingDiscNumber": { + "description": "Filter option - items missing disc number" + }, + "libraryFilterMetadataMissingArtist": "Fehlender Künstler", + "@libraryFilterMetadataMissingArtist": { + "description": "Filter option - items missing artist" + }, + "libraryFilterMetadataIncorrectIsrcFormat": "Falsches ISRC-Format", + "@libraryFilterMetadataIncorrectIsrcFormat": { + "description": "Filter option - items with an invalid ISRC format" + }, + "libraryFilterMetadataMissingIsrc": "Missing ISRC", + "@libraryFilterMetadataMissingIsrc": { + "description": "Filter option - items without any ISRC tag" + }, + "libraryFilterMetadataMissingLabel": "Label fehlt", + "@libraryFilterMetadataMissingLabel": { + "description": "Filter option - items missing record label" + }, + "collectionDeletePlaylistsMessage": "Lösche {count} {count, plural, =1{Playlist} other{Playlists}}?", + "@collectionDeletePlaylistsMessage": { + "description": "Confirmation message for deleting selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionPlaylistsDeleted": "{count} {count, plural, =1{Playlist} other{Playlists}} gelöscht", + "@collectionPlaylistsDeleted": { + "description": "Snackbar after deleting selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionAddedTracksToPlaylist": "{count} {count, plural, =1{Titel} other{Titel}} zu {playlistName} hinzugefügt", + "@collectionAddedTracksToPlaylist": { + "description": "Snackbar after adding multiple tracks to a playlist", + "placeholders": { + "count": { + "type": "int" + }, + "playlistName": { + "type": "String" + } + } + }, + "collectionAddedTracksToPlaylistWithExisting": "{count} {count, plural, =1{Titel} other{Titel}} zu {playlistName} ({alreadyCount} bereits in der Playlist)", + "@collectionAddedTracksToPlaylistWithExisting": { + "description": "Snackbar after adding multiple tracks to a playlist when some were already present", + "placeholders": { + "count": { + "type": "int" + }, + "playlistName": { + "type": "String" + }, + "alreadyCount": { + "type": "int" + } + } + }, + "itemCount": "{count} {count, plural, =1{Sache} other{Sachen}}", + "@itemCount": { + "description": "Generic item count label", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackReEnrichSuccessWithFailures": "Metadaten erfolgreich neu angereichert ({successCount}/{total}) - fehlgeschlagen: {failedCount}", + "@trackReEnrichSuccessWithFailures": { + "description": "Snackbar summary after batch metadata re-enrichment finishes with failures", + "placeholders": { + "successCount": { + "type": "int" + }, + "total": { + "type": "int" + }, + "failedCount": { + "type": "int" + } + } + }, + "selectionDeleteTracksCount": "Lösche {count} {count, plural, =1{Titel} other{Titel}}", + "@selectionDeleteTracksCount": { + "description": "Button label for deleting selected tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueDownloadSpeedStatus": "Herunterladen - {speed} MB/s", + "@queueDownloadSpeedStatus": { + "description": "Queue status while downloading with speed", + "placeholders": { + "speed": { + "type": "String" + } + } + }, + "queueDownloadStarting": "Starte...", "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" + }, + "@queueCheckingDownloadSession": { + "description": "Queue status while the download provider's session is being checked during preparation (preparationStage 'checking_session'). This is about the provider session, not about locating a finished file." + }, + "a11ySelectTrack": "Titel auswählen", + "@a11ySelectTrack": { + "description": "Accessibility label for selecting a track" + }, + "a11yDeselectTrack": "Titel abwählen", + "@a11yDeselectTrack": { + "description": "Accessibility label for deselecting a track" + }, + "a11yPlayTrackByArtist": "Spiele {trackName} von {artistName}", + "@a11yPlayTrackByArtist": { + "description": "Accessibility label for playing a local library track", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "storeExtensionsCount": "{count} {count, plural, =1{Erweiterung} other{Erweiterungen}}", + "@storeExtensionsCount": { + "description": "Store extension result count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "storeRequiresVersion": "Benötigt v{version}+", + "@storeRequiresVersion": { + "description": "Store compatibility badge for minimum app version", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "actionGo": "Los", + "@actionGo": { + "description": "Generic action button label" + }, + "logIssueSummary": "Problemübersicht", + "@logIssueSummary": { + "description": "Header for log issue analysis summary" + }, + "logTotalErrors": "Gesamte Fehler: {count}", + "@logTotalErrors": { + "description": "Total error count in log issue analysis", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "logAffectedDomains": "Betroffen: {domains}", + "@logAffectedDomains": { + "description": "Affected domains in log issue analysis", + "placeholders": { + "domains": { + "type": "String" + } + } + }, + "libraryScanCancelled": "Scan abgebrochen", + "@libraryScanCancelled": { + "description": "Library scan status when a scan was cancelled" + }, + "libraryScanCancelledSubtitle": "Du kannst erneut Scannen, wenn er fertig ist.", + "@libraryScanCancelledSubtitle": { + "description": "Library scan status subtitle after cancellation" + }, + "libraryDownloadsHistoryExcluded": "{count} aus dem Download-Verlauf (von der Liste ausgeschlossen)", + "@libraryDownloadsHistoryExcluded": { + "description": "Library count note for downloaded history items excluded from the local list", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadNativeWorker": "Nativer Download Dienst", + "@downloadNativeWorker": { + "description": "Setting title for Android native download worker" + }, + "downloadNativeWorkerSubtitle": "Android background service for extension downloads", + "@downloadNativeWorkerSubtitle": { + "description": "Setting subtitle for Android native download worker" + }, + "extensionServiceStatus": "Dienststatus", + "@extensionServiceStatus": { + "description": "Extension detail section header for service status" + }, + "extensionServiceHealth": "Service-Gesundheit", + "@extensionServiceHealth": { + "description": "Extension capability label for service health checks" + }, + "extensionHealthChecksConfigured": "{count} {count, plural, =1{Prüfung} other{Prüfungen}} konfiguriert", + "@extensionHealthChecksConfigured": { + "description": "Extension service health check count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionOauthConnectHint": "Tippe auf \"Mit Spotify verbinden\" um dieses Feld auszufüllen.", + "@extensionOauthConnectHint": { + "description": "Hint for an OAuth login link field before connecting Spotify" + }, + "extensionLastChecked": "Zuletzt geprüft {time}", + "@extensionLastChecked": { + "description": "Timestamp for the latest extension service health check", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "extensionRefreshStatus": "Status aktualisieren", + "@extensionRefreshStatus": { + "description": "Tooltip for refreshing extension service health status" + }, + "extensionCustomUrlHandling": "Benutzerdefinierte URL-Handling", + "@extensionCustomUrlHandling": { + "description": "Extension detail section title for custom URL handling" + }, + "extensionCustomUrlHandlingSubtitle": "Diese Erweiterung kann Links von diesen Seiten benutzen", + "@extensionCustomUrlHandlingSubtitle": { + "description": "Extension detail subtitle for custom URL handling" + }, + "extensionCustomUrlHandlingShareHint": "Teile Links von diesen Seiten mit SpotiFLAC Mobile und diese Erweiterung wird sie verarbeiten.", + "@extensionCustomUrlHandlingShareHint": { + "description": "Extension detail hint explaining share-to-app URL handling" + }, + "extensionSettingsCount": "{count} {count, plural, =1{Einstellung} other{Einstellungen}}", + "@extensionSettingsCount": { + "description": "Count of settings exposed by an extension quality option", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionHealthOnline": "Online", + "@extensionHealthOnline": { + "description": "Extension service health status - online" + }, + "extensionHealthDegraded": "Eingeschränkt", + "@extensionHealthDegraded": { + "description": "Extension service health status - degraded" + }, + "extensionHealthOffline": "Offline", + "@extensionHealthOffline": { + "description": "Extension service health status - offline" + }, + "extensionHealthNotConfigured": "Nicht konfiguriert", + "@extensionHealthNotConfigured": { + "description": "Extension service health status - not configured" + }, + "extensionHealthUnknown": "Unbekannt", + "@extensionHealthUnknown": { + "description": "Extension service health status - unknown" + }, + "extensionHealthRequired": "benötigt", + "@extensionHealthRequired": { + "description": "Label for a required extension service health check" + }, + "extensionSettingNotSet": "Nicht eingestellt", + "@extensionSettingNotSet": { + "description": "Value shown when an extension setting has no value" + }, + "extensionActionFailed": "Aktion fehlgeschlagen", + "@extensionActionFailed": { + "description": "Fallback error when an extension action fails without details" + }, + "extensionEnterValue": "Wert eingeben", + "@extensionEnterValue": { + "description": "Hint for editing an extension setting value" + }, + "extensionHealthServiceOnline": "Dienste online", + "@extensionHealthServiceOnline": { + "description": "Tooltip for online extension service" + }, + "extensionHealthServiceDegraded": "Dienst Eingeschränkt", + "@extensionHealthServiceDegraded": { + "description": "Tooltip for degraded extension service" + }, + "extensionHealthServiceOffline": "Dienst offline", + "@extensionHealthServiceOffline": { + "description": "Tooltip for offline extension service" + }, + "extensionHealthServiceUnknown": "Dienst-Status unbekannt", + "@extensionHealthServiceUnknown": { + "description": "Tooltip for unknown extension service health" + }, + "audioAnalysisStereo": "Stereo", + "@audioAnalysisStereo": { + "description": "Audio channel layout label - stereo" + }, + "audioAnalysisMono": "Mono", + "@audioAnalysisMono": { + "description": "Audio channel layout label - mono" + }, + "trackOpenInService": "Öffne in {serviceName}", + "@trackOpenInService": { + "description": "Button label to open a track in a named music service", + "placeholders": { + "serviceName": { + "type": "String" + } + } + }, + "trackLyricsEmbeddedSource": "Eingebettet", + "@trackLyricsEmbeddedSource": { + "description": "Lyrics source label for embedded lyrics" + }, + "unknownAlbum": "Unbekanntes Album", + "@unknownAlbum": { + "description": "Fallback album name when metadata is missing" + }, + "unknownArtist": "Unbekannter Künstler", + "@unknownArtist": { + "description": "Fallback artist name when metadata is missing" + }, + "permissionAudio": "Audio", + "@permissionAudio": { + "description": "Audio permission type label" + }, + "permissionStorage": "Speicher", + "@permissionStorage": { + "description": "Storage permission type label" + }, + "permissionNotification": "Benachrichtigung", + "@permissionNotification": { + "description": "Notification permission type label" + }, + "errorInvalidFolderSelected": "Ungültiger Ordner ausgewählt", + "@errorInvalidFolderSelected": { + "description": "Error when the selected folder is invalid" + }, + "storeAnyVersion": "Alle", + "@storeAnyVersion": { + "description": "Store detail value when any app version is accepted" + }, + "storeCategoryMetadata": "Metadaten", + "@storeCategoryMetadata": { + "description": "Store extension category - metadata" + }, + "storeCategoryDownload": "Herunterladen", + "@storeCategoryDownload": { + "description": "Store extension category - download" + }, + "storeCategoryUtility": "Utility", + "@storeCategoryUtility": { + "description": "Store extension category - utility" + }, + "storeCategoryLyrics": "Lyrics", + "@storeCategoryLyrics": { + "description": "Store extension category - lyrics" + }, + "storeCategoryIntegration": "Integration", + "@storeCategoryIntegration": { + "description": "Store extension category - integration" + }, + "artistReleases": "Releases", + "@artistReleases": { + "description": "Section header for all artist releases" + }, + "editMetadataSelectNone": "Keine", + "@editMetadataSelectNone": { + "description": "Button to clear selected fields for auto-fill" + }, + "queueRetryAllFailed": "Retry {count} failed", + "@queueRetryAllFailed": { + "description": "Button to retry every failed download in the queue", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "settingsSaveDownloadHistory": "Save download history", + "@settingsSaveDownloadHistory": { + "description": "Settings switch title for storing completed downloads in history" + }, + "settingsSaveDownloadHistorySubtitle": "Keep completed downloads in history and library views", + "@settingsSaveDownloadHistorySubtitle": { + "description": "Settings switch subtitle for storing completed downloads in history" + }, + "dialogDisableHistoryTitle": "Turn off download history?", + "@dialogDisableHistoryTitle": { + "description": "Confirmation dialog title shown before disabling download history" + }, + "dialogDisableHistoryMessage": "Existing history will be cleared. Downloaded files will not be deleted.", + "@dialogDisableHistoryMessage": { + "description": "Confirmation dialog message shown before disabling download history" + }, + "dialogDisableAndClear": "Turn off and clear", + "@dialogDisableAndClear": { + "description": "Confirmation action to disable download history and clear existing entries" + }, + "openInOtherServices": "Open in Other Services", + "@openInOtherServices": { + "description": "Title and tooltip for finding the current collection in other services" + }, + "shareSheetNoExtensions": "No other compatible services", + "@shareSheetNoExtensions": { + "description": "Empty state when no extensions can be searched for cross-service links" + }, + "shareSheetNotFound": "Not found", + "@shareSheetNotFound": { + "description": "Cross-service share sheet row subtitle when a service has no match" + }, + "shareSheetCopyLink": "Copy Link", + "@shareSheetCopyLink": { + "description": "Tooltip for copying a cross-service link" + }, + "shareSheetLinkCopied": "{service} link copied", + "@shareSheetLinkCopied": { + "description": "Snackbar after copying a cross-service link", + "placeholders": { + "service": {} + } + }, + "libraryPlayback": "Playback", + "@libraryPlayback": { + "description": "Section header for playback settings in library settings" + }, + "libraryExternalPlayer": "External player", + "@libraryExternalPlayer": { + "description": "Setting option to use an external music player" + }, + "libraryExternalPlayerSubtitle": "Recommended for listening, best quality, gapless playback, EQ, and wider format support", + "@libraryExternalPlayerSubtitle": { + "description": "Subtitle for external player option" + }, + "libraryBuiltInPreviewPlayer": "Built-in preview player", + "@libraryBuiltInPreviewPlayer": { + "description": "Setting option to use the built-in preview player" + }, + "libraryBuiltInPreviewPlayerSubtitle": "Quick local previews inside SpotiFLAC Mobile", + "@libraryBuiltInPreviewPlayerSubtitle": { + "description": "Subtitle for built-in preview player option" + }, + "libraryBuiltInPlayerInfo": "The built-in player is a preview tool for checking local tracks quickly. Use an external music player for actual listening.", + "@libraryBuiltInPlayerInfo": { + "description": "Info note explaining the built-in player is for previews only" + }, + "nowPlayingTitle": "Jetzt läuft", + "@nowPlayingTitle": { + "description": "Title for the now playing screen" + }, + "nowPlayingNothingPlaying": "Nothing is playing", + "@nowPlayingNothingPlaying": { + "description": "Empty state when no track is currently playing" + }, + "nowPlayingMinimize": "Minimize", + "@nowPlayingMinimize": { + "description": "Tooltip for minimizing the now playing screen" + }, + "nowPlayingUpNext": "Up next", + "@nowPlayingUpNext": { + "description": "Title for the playback queue sheet" + }, + "nowPlayingPreviousTrack": "Previous track", + "@nowPlayingPreviousTrack": { + "description": "Tooltip for the previous-track playback control" + }, + "nowPlayingNextTrack": "Next track", + "@nowPlayingNextTrack": { + "description": "Tooltip for the next-track playback control" + }, + "nowPlayingDetails": "Details", + "@nowPlayingDetails": { + "description": "Menu item and section title for track metadata details" + }, + "nowPlayingSleepTimer": "Sleep timer", + "@nowPlayingSleepTimer": { + "description": "Menu item and sheet title for the playback sleep timer" + }, + "nowPlayingSleepTimerActive": "Ends at {time}", + "@nowPlayingSleepTimerActive": { + "description": "Active sleep timer deadline shown in the player menu", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "nowPlayingSleepTimerMinutes": "{minutes, plural, =1{1 minute} other{{minutes} minutes}}", + "@nowPlayingSleepTimerMinutes": { + "description": "Duration choice for the playback sleep timer", + "placeholders": { + "minutes": { + "type": "int" + } + } + }, + "nowPlayingSleepTimerOff": "Turn off sleep timer", + "@nowPlayingSleepTimerOff": { + "description": "Action to cancel the active playback sleep timer" + }, + "nowPlayingSleepTimerSet": "Sleep timer set for {duration}", + "@nowPlayingSleepTimerSet": { + "description": "Confirmation after setting the playback sleep timer", + "placeholders": { + "duration": { + "type": "String" + } + } + }, + "nowPlayingSleepTimerCancelled": "Sleep timer turned off", + "@nowPlayingSleepTimerCancelled": { + "description": "Confirmation after cancelling the playback sleep timer" + }, + "nowPlayingOpenInExternalPlayer": "Open in external player", + "@nowPlayingOpenInExternalPlayer": { + "description": "Menu item to open the current track in an external player" + }, + "nowPlayingTabPlayer": "Player", + "@nowPlayingTabPlayer": { + "description": "Tab label for the player view" + }, + "nowPlayingTabLyrics": "Lyrics", + "@nowPlayingTabLyrics": { + "description": "Tab label for the lyrics view" + }, + "nowPlayingNoLyrics": "No lyrics in this file", + "@nowPlayingNoLyrics": { + "description": "Empty state when the playing file has no embedded lyrics" + }, + "nowPlayingLibraryEmpty": "Your library is empty", + "@nowPlayingLibraryEmpty": { + "description": "Snackbar when shuffle library is requested but library has no tracks" + }, + "nowPlayingShuffleLibraryFailed": "Could not shuffle library: {error}", + "@nowPlayingShuffleLibraryFailed": { + "description": "Snackbar when shuffling the library fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "nowPlayingShuffleOn": "Shuffle on", + "@nowPlayingShuffleOn": { + "description": "Tooltip when shuffle mode is enabled" + }, + "nowPlayingPlayInOrder": "Play in order", + "@nowPlayingPlayInOrder": { + "description": "Tooltip when shuffle mode is disabled" + }, + "nowPlayingShuffleLibrary": "Shuffle library", + "@nowPlayingShuffleLibrary": { + "description": "Button label to shuffle and play the entire local library" + }, + "nowPlayingQueueEmpty": "Queue is empty", + "@nowPlayingQueueEmpty": { + "description": "Empty state when the playback queue has no items" + }, + "nowPlayingNoMetadata": "No metadata available", + "@nowPlayingNoMetadata": { + "description": "Empty state when track metadata cannot be loaded" + }, + "announcementUnableToOpenLink": "Unable to open link. Please try again.", + "@announcementUnableToOpenLink": { + "description": "Snackbar shown when an announcement CTA link cannot be opened" + }, + "trackConvertLosslessOutputWithCap": "Lossless output with {quality} cap", + "@trackConvertLosslessOutputWithCap": { + "description": "Hint shown when lossless conversion will cap bit depth or sample rate", + "placeholders": { + "quality": { + "type": "String" + } + } + }, + "trackConvertConfirmMessageLosslessCapped": "Convert from {sourceFormat} to {targetFormat} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original file will be deleted after conversion.", + "@trackConvertConfirmMessageLosslessCapped": { + "description": "Confirmation dialog message for capped lossless conversion of a single file", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "selectionBatchConvertConfirmMessageLosslessCapped": "Convert {count} {count, plural, =1{track} other{tracks}} to {format} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original files will be deleted after conversion.", + "@selectionBatchConvertConfirmMessageLosslessCapped": { + "description": "Confirmation dialog message for capped lossless batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "trackConvertActionLabelLossless": "{sourceFormat} → {targetFormat} ({quality})", + "@trackConvertActionLabelLossless": { + "description": "Convert button label for lossless conversion with quality cap", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "trackConvertActionLabelLossy": "{sourceFormat} → {targetFormat} @ {bitrate}", + "@trackConvertActionLabelLossy": { + "description": "Convert button label for lossy conversion", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "aboutPaxsenixSubtitle": "Lyrics proxy for Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou, and Genius", + "@aboutPaxsenixSubtitle": { + "description": "Subtitle for Paxsenix special thanks entry on the about page" + }, + "snackbarPlayingNext": "Als nächstes", + "@snackbarPlayingNext": { + "description": "Snackbar when a track is inserted as the next queue item" + }, + "snackbarAddedToQueueGeneric": "Added to queue", + "@snackbarAddedToQueueGeneric": { + "description": "Snackbar when a track is added to the playback queue without naming it" + }, + "selectionDeletePlaylistsCount": "Delete {count} {count, plural, =1{playlist} other{playlists}}", + "@selectionDeletePlaylistsCount": { + "description": "Button label for deleting multiple selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "actionShuffle": "Shuffle", + "@actionShuffle": { + "description": "Tooltip for shuffle playback action" + }, + "downloadPrimaryArtistOnlyOn": "Primary only: On", + "@downloadPrimaryArtistOnlyOn": { + "description": "Status label when primary-artist-only folder naming is enabled" + }, + "downloadPrimaryArtistOnlyOff": "Primary only: Off", + "@downloadPrimaryArtistOnlyOff": { + "description": "Status label when primary-artist-only folder naming is disabled" + }, + "downloadAlbumArtistMetadataPrimaryOnly": "Album Artist metadata: Primary only", + "@downloadAlbumArtistMetadataPrimaryOnly": { + "description": "Status label when album-artist folder filtering uses primary artist only" + }, + "downloadAlbumArtistMetadataFull": "Album Artist metadata: Full", + "@downloadAlbumArtistMetadataFull": { + "description": "Status label when album-artist folder filtering uses full metadata" + }, + "trackConvertOriginal": "Original", + "@trackConvertOriginal": { + "description": "Label for keeping original bit depth or sample rate during conversion" + }, + "trackConvertOriginalQuality": "Original quality", + "@trackConvertOriginalQuality": { + "description": "Label when no bit depth or sample rate cap is applied during lossless conversion" + }, + "trackConvertLosslessSuffix": "Lossless", + "@trackConvertLosslessSuffix": { + "description": "Suffix used in converted lossless quality labels" + }, + "trackConvertDithering": "Dithering", + "@trackConvertDithering": { + "description": "Section label for lossless conversion dithering options" + }, + "trackConvertResampler": "Resampler", + "@trackConvertResampler": { + "description": "Section label for lossless conversion resampler options" + }, + "trackConvertDitherNone": "Keine", + "@trackConvertDitherNone": { + "description": "Lossless conversion dither option with no dithering applied" + }, + "trackConvertDitherTriangular": "TPDF", + "@trackConvertDitherTriangular": { + "description": "Lossless conversion triangular probability density function dither option" + }, + "trackConvertDitherTriangularHp": "Triangular HP", + "@trackConvertDitherTriangularHp": { + "description": "Lossless conversion high-pass triangular dither option" + }, + "trackConvertResamplerSwr": "SWR", + "@trackConvertResamplerSwr": { + "description": "Lossless conversion default FFmpeg swresample resampler option" + }, + "trackConvertResamplerSoxr": "SoXr", + "@trackConvertResamplerSoxr": { + "description": "Lossless conversion SoX resampler option" + }, + "updateSeeReleaseNotes": "See release notes for details.", + "@updateSeeReleaseNotes": { + "description": "Fallback changelog text when release notes cannot be parsed" + }, + "unknownTitle": "Unknown title", + "@unknownTitle": { + "description": "Fallback track title when metadata is missing" + }, + "trackPlayNext": "Play next", + "@trackPlayNext": { + "description": "Menu action to play a track as the next queue item" + }, + "trackAddToQueue": "Add to queue", + "@trackAddToQueue": { + "description": "Menu action to add a track to the playback queue" + }, + "snackbarExtensionInstalledEnable": "{extensionName} installed. Enable it in Settings > Extensions", + "@snackbarExtensionInstalledEnable": { + "description": "Snackbar after installing an extension from the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "snackbarExtensionUpdatedVersion": "{extensionName} updated to v{version}", + "@snackbarExtensionUpdatedVersion": { + "description": "Snackbar after updating an extension from the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + }, + "version": { + "type": "String" + } + } + }, + "snackbarFailedToInstallNamed": "Failed to install {extensionName}", + "@snackbarFailedToInstallNamed": { + "description": "Snackbar when extension install fails in the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "snackbarFailedToUpdateNamed": "Failed to update {extensionName}", + "@snackbarFailedToUpdateNamed": { + "description": "Snackbar when extension update fails in the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "releaseTypeEp": "EP", + "@releaseTypeEp": { + "description": "Badge label for EP releases" + }, + "releaseTypeSingle": "Single", + "@releaseTypeSingle": { + "description": "Badge label for single releases" + }, + "trackCoverOnline": "Online cover", + "@trackCoverOnline": { + "description": "Label shown when metadata autofill downloaded cover art from the internet" + }, + "regionCountryUS": "United States", + "@regionCountryUS": { + "description": "Country name for SongLink region picker" + }, + "regionCountryGB": "United Kingdom", + "@regionCountryGB": { + "description": "Country name for SongLink region picker" + }, + "regionCountryFR": "France", + "@regionCountryFR": { + "description": "Country name for SongLink region picker" + }, + "regionCountryDE": "Germany", + "@regionCountryDE": { + "description": "Country name for SongLink region picker" + }, + "regionCountryJP": "Japan", + "@regionCountryJP": { + "description": "Country name for SongLink region picker" + }, + "regionCountryKR": "Südkorea", + "@regionCountryKR": { + "description": "Country name for SongLink region picker" + }, + "regionCountryIN": "Indien", + "@regionCountryIN": { + "description": "Country name for SongLink region picker" + }, + "regionCountryID": "Indonesia", + "@regionCountryID": { + "description": "Country name for SongLink region picker" + }, + "regionCountryBR": "Brazil", + "@regionCountryBR": { + "description": "Country name for SongLink region picker" + }, + "regionCountryMX": "Mexico", + "@regionCountryMX": { + "description": "Country name for SongLink region picker" + }, + "regionCountryAU": "Australia", + "@regionCountryAU": { + "description": "Country name for SongLink region picker" + }, + "regionCountryCA": "Canada", + "@regionCountryCA": { + "description": "Country name for SongLink region picker" + }, + "regionCountryXK": "Kosovo", + "@regionCountryXK": { + "description": "Country name for SongLink region picker" + }, + "extensionVerificationBrowserTitle": "Verification browser", + "@extensionVerificationBrowserTitle": { + "description": "Settings option title for extension verification browser preference" + }, + "extensionVerificationBrowserSubtitleExternal": "Open challenges in the default browser first", + "@extensionVerificationBrowserSubtitleExternal": { + "description": "Subtitle when external browser is preferred for extension verification" + }, + "extensionVerificationBrowserSubtitleInApp": "Open challenges in the in-app browser first", + "@extensionVerificationBrowserSubtitleInApp": { + "description": "Subtitle when in-app browser is preferred for extension verification" + }, + "extensionVerificationBrowserExternal": "External", + "@extensionVerificationBrowserExternal": { + "description": "Chip label for external browser verification mode" + }, + "extensionVerificationBrowserInApp": "In-app", + "@extensionVerificationBrowserInApp": { + "description": "Chip label for in-app browser verification mode" + }, + "extensionVerificationUnavailable": "No verification page is available for {extension}. Retry the download to request a new challenge.", + "@extensionVerificationUnavailable": { + "description": "Shown when the app cannot retrieve a pending verification challenge", + "placeholders": { + "extension": { + "type": "String" + } + } + }, + "extensionVerificationHelpTitleManual": "Open verification manually", + "@extensionVerificationHelpTitleManual": { + "description": "Dialog title when automatic browser launch for verification fails" + }, + "extensionVerificationHelpTitleWaiting": "Verification still waiting", + "@extensionVerificationHelpTitleWaiting": { + "description": "Dialog title when verification is taking longer than expected" + }, + "extensionVerificationHelpMessageManual": "SpotiFLAC Mobile could not open the browser automatically. Open this link in your browser, or copy it manually.", + "@extensionVerificationHelpMessageManual": { + "description": "Dialog message when automatic browser launch for verification fails" + }, + "extensionVerificationHelpMessageWaiting": "If the browser did not open, or verification finished but did not return to SpotiFLAC Mobile, open this link again or copy it manually.", + "@extensionVerificationHelpMessageWaiting": { + "description": "Dialog message when verification may need manual browser help" + }, + "extensionVerificationClose": "Schließen", + "@extensionVerificationClose": { + "description": "Button to dismiss the extension verification help dialog" + }, + "extensionVerificationCopyLink": "Copy link", + "@extensionVerificationCopyLink": { + "description": "Button to copy the extension verification URL" + }, + "extensionVerificationLinkCopied": "Verification link copied", + "@extensionVerificationLinkCopied": { + "description": "Snackbar after copying the extension verification URL" + }, + "extensionVerificationOpenBrowser": "Open browser", + "@extensionVerificationOpenBrowser": { + "description": "Button to open the extension verification URL in a browser" + }, "settingsSearchHint": "Search settings", + "@settingsSearchHint": { + "description": "Placeholder of the search field on the Settings tab" + }, "settingsSearchNoResults": "No settings match \"{query}\"", + "@settingsSearchNoResults": { + "description": "Shown when a Settings search returns nothing", + "placeholders": { + "query": { + "type": "String" + } + } + }, "settingsGroupInterface": "Extensions & appearance", + "@settingsGroupInterface": { + "description": "Settings group covering look and feel" + }, "settingsGroupContent": "Content & metadata", + "@settingsGroupContent": { + "description": "Settings group covering the library, metadata and lyrics" + }, "settingsGroupDownloads": "Downloads & files", + "@settingsGroupDownloads": { + "description": "Settings group covering download behaviour and storage" + }, "settingsGroupSystem": "System", + "@settingsGroupSystem": { + "description": "Settings group covering app-level data, cache and logs" + }, "settingsGroupHelp": "About & support", - "collectionExportM3u": "Export as M3U8", - "collectionExportM3uDone": "Exported {exported} of {total} tracks", - "collectionExportM3uNone": "No downloaded files to export", - "collectionExportM3uFailed": "Export failed", - "trackOpenOn": "Open on...", - "trackOpenOnNoLinks": "No platform links found for this track.", - "libraryReviewDuplicates": "Review duplicates", - "libraryReviewDuplicatesSubtitle": "Find tracks stored more than once", - "duplicatesTitle": "Duplicates", - "duplicatesEmpty": "No duplicate tracks found.", - "duplicatesKeepBest": "Keep best", - "duplicatesKeepBestMessage": "Delete {count} lower-quality copies of \"{trackName}\"?", - "duplicatesDeleteCopyMessage": "Delete this copy of \"{trackName}\"?", - "downloadAutoConvert": "Auto-convert after download", - "downloadAutoConvertSubtitle": "Convert completed downloads to a smaller lossy format. The original is replaced only after conversion succeeds.", - "downloadAutoConvertFormat": "Output format", - "downloadAutoConvertFormatSubtitle": "Choose the lossy format used for newly completed downloads.", - "downloadAutoConvertBitrate": "Output quality", - "downloadAutoConvertBitrateSubtitle": "Higher bitrates preserve more detail but create larger files.", - "downloadAutoConvertMp3Subtitle": "Best compatibility across players and devices", - "downloadAutoConvertM4aSubtitle": "Efficient AAC audio in an M4A container", - "downloadAutoConvertOpusSubtitle": "Best efficiency for modern players", - "appearanceForceBlur": "Always use blur effects", - "appearanceForceBlurSubtitle": "Enable the navigation bar blur even on devices where it is off by default. May cost performance.", - "recentClearAllMessage": "Clear all recent activity? Download history and music files will not be deleted.", - "libraryAddFolder": "Add library folder", - "libraryAddFolderSubtitle": "Internal storage, SD card, SSD, or another external drive", - "librarySourceOnline": "Online", - "librarySourceOffline": "Offline. Reconnect the storage to restore these tracks", - "librarySourceDisabled": "Disabled", - "librarySourceScanCount": "{scanned} of {total} files scanned ({progress}%)", - "libraryExternalStorage": "External storage", - "libraryRemoveFolder": "Remove library folder", - "libraryRemoveFolderMessage": "Remove this folder and its indexed tracks from SpotiFLAC Mobile? Audio files on the storage will not be deleted.", - "trackReEnrichModeIsrc": "ISRC only", - "trackReEnrichModeIsrcSubtitle": "Find and add the recording identifier without changing other tags", - "trackReEnrichModeMissing": "Fill missing tags", - "trackReEnrichModeMissingSubtitle": "Keep existing values and fill only fields that are empty", - "trackReEnrichModeReplace": "Update selected tags", - "trackReEnrichModeReplaceSubtitle": "Choose which existing values may be replaced by online metadata", - "trackReEnrichFieldsTitle": "Tags to update", - "trackReEnrichReview": "Review changes", - "trackReEnrichReviewTitle": "Review metadata changes", - "trackReEnrichReviewSubtitle": "{changeCount} proposed changes across {trackCount} tracks", - "trackReEnrichNoChanges": "No metadata changes were found for the selected tracks.", - "trackReEnrichApplyChanges": "Apply changes", - "trackReEnrichRefreshOnline": "Refresh from online", - "editMetadataAutoFillSource": "Metadata source", - "editMetadataAutoFillSourceAutomatic": "Automatic (provider priority)", - "editMetadataAutoFillFind": "Find metadata", - "editMetadataAutoFillPreview": "Data from {source}", - "editMetadataAutoFillCoverAvailable": "Cover artwork available", - "editMetadataAutoFillApply": "Apply selected data", - "editMetadataAutoFillDoneFromSource": "Filled {count} {count, plural, =1{field} other{fields}} from {source}", - "queuePlaylistCount": "{count, plural, =1{1 playlist} other{{count} playlists}}", - "queueEmptyPlaylistsSubtitle": "Create a playlist to organize your tracks", - "libraryDefaultView": "Default view", - "libraryDefaultViewLastUsed": "Last used", - "audioAnalysisCutoffNotDetected": "Not detected", - "queueCancelledTitle": "Download cancelled", - "queueCancelledMessage": "This download was cancelled. Retry it or remove it from the queue.", - "trackCoverResolution": "Cover resolution", - "trackCoverResolutionHint": "Sets the longest edge when saved. Enlarging does not add image detail.", - "trackCoverResizeFailed": "The cover image could not be resized. Please try another size or image.", - "queueDownloadNext": "Download next", - "queueMoveUp": "Move up", - "queueMoveDown": "Move down", - "editMetadataMusicBrainzButton": "Fetch from MusicBrainz", - "editMetadataMusicBrainzFilled": "Updated from MusicBrainz", - "editMetadataMusicBrainzNothing": "Nothing found on MusicBrainz", - "editMetadataMusicBrainzNeedsIsrc": "Requires an ISRC tag", - "nowPlayingRepeatOff": "Repeat off", - "nowPlayingRepeatAll": "Repeat all", - "nowPlayingRepeatOne": "Repeat one", - "queueNetworkFailedOffline": "{count} downloads failed while offline", - "trackAlbumType": "Release Type", - "editMetadataFieldAlbumTypeHint": "Album, single, EP, compilation...", - "editMetadataFieldExplicit": "Explicit", - "editMetadataFieldExplicitHint": "Mark this track as containing explicit content", - "metadataExplicitValue": "Explicit", - "editMetadataFieldUpc": "UPC / Barcode", - "editMetadataFieldUpcHint": "Numeric UPC, EAN, or GTIN", - "libraryFilterMetadataMissingIsrc": "Missing ISRC" + "@settingsGroupHelp": { + "description": "Settings group covering the about page and donations" + }, + "libraryFilterMetadataMissingLyrics": "Missing lyrics", + "@libraryFilterMetadataMissingLyrics": { + "description": "Filter option for tracks without embedded or sidecar lyrics" + }, + "trackOptionCopyTrackName": "Copy track name", + "@trackOptionCopyTrackName": { + "description": "Track menu action that copies the track title" + }, + "trackOptionCopyArtist": "Copy artist", + "@trackOptionCopyArtist": { + "description": "Track menu action that copies the artist name" + }, + "trackOptionCopyTrackAndArtist": "Copy track and artist", + "@trackOptionCopyTrackAndArtist": { + "description": "Track menu action that copies the track title and artist" + }, + "metadataCopyValue": "Copy value", + "@metadataCopyValue": { + "description": "Metadata menu action that copies only the selected value" + }, + "metadataCopyField": "Copy field and value", + "@metadataCopyField": { + "description": "Metadata menu action that copies the selected key and value" + }, + "mornyeShowTabs": "Show tabs", + "mornyeSearch": "Search", + "mornyeContinuePlaying": "Continue Playing", + "metadataCopyAll": "Copy all metadata", + "@metadataCopyAll": { + "description": "Metadata menu action that copies every visible key and value" + }, + "optionsEmbeddedCoverSize": "Embedded Cover Size", + "@optionsEmbeddedCoverSize": { + "description": "Metadata setting that limits downloaded artwork resolution before it is embedded" + }, + "optionsEmbeddedCoverSizeDescription": "Downscale remotely downloaded cover art before embedding it. Images already within the limit are kept unchanged.", + "@optionsEmbeddedCoverSizeDescription": { + "description": "Description shown in the embedded cover size picker" + }, + "mornyeFavorite": "Favorite", + "mornyeGoToArtist": "Go to Artist", + "@mornyeFavorite": { + "description": "Compact context menu action that adds a track to Loved" + }, + "mornyeFavorited": "Favorited", + "@mornyeFavorited": { + "description": "Selected state of the compact favorite action" + }, + "autoMixDescription": "Blend songs with beat matching and pitch-preserving tempo adjustment. Uses crossfade when beats cannot be matched.", + "autoMixOn": "AutoMix on", + "autoMixOff": "AutoMix off", + "profileTitle": "Profile", + "profileSetUp": "Set up your profile", + "profileEdit": "Edit name and photo", + "backupIncludesProfile": "Includes your profile name and photo", + "profileName": "Name", + "profileNameHint": "Your name", + "profileChangePhoto": "Choose photo", + "profileRemovePhoto": "Remove photo", + "profilePhotoError": "Choose a valid image smaller than 20 MB.", + "profileSaveError": "Could not save your profile. Please try again.", + "optionsEmbeddedCoverSizeOriginal": "Original resolution", + "@optionsEmbeddedCoverSizeOriginal": { + "description": "Option that preserves the provider artwork at its original resolution" + } } diff --git a/lib/l10n/arb/app_es_ES.arb b/lib/l10n/arb/app_es_ES.arb index 88b6049d..345bfb08 100644 --- a/lib/l10n/arb/app_es_ES.arb +++ b/lib/l10n/arb/app_es_ES.arb @@ -1,4 +1,48 @@ { + "upgradeIntroWelcome": "Welcome to\nSpotiFLAC-Mobile 5.0", + "upgradeIntroThemeTitle": "Make it\nyour own.", + "upgradeIntroThemeBody": "Choose a look. Your choice applies immediately, and you can change it later in Appearance.", + "upgradeIntroThemeMaterialBody": "The familiar layout, with Material controls and your accent color.", + "upgradeIntroThemeMornyeBody": "Glass navigation, a redesigned Library and an immersive player.", + "upgradeIntroRustTitle": "A new engine.\nBuilt with Rust.", + "upgradeIntroRustBody": "In 5.0, the app’s backend has moved from Go to Rust. It is the engine working behind the screens you use every day.", + "upgradeIntroRustEngineTitle": "Working behind the scenes", + "upgradeIntroRustEngineBody": "Rust handles downloads, audio metadata, library scanning and the extension runtime on Android and iOS.", + "upgradeIntroRustMemoryTitle": "More careful with memory", + "upgradeIntroRustMemoryBody": "Reused buffers and fewer copies reduce temporary allocations when processing artwork and extension data.", + "upgradeIntroRustKeepTitle": "Keep your music", + "upgradeIntroRustKeepBody": "No need to download your collection again. Your saved music and settings stay in place, with no new setup required.", + "upgradeIntroWelcomeBody": "A quick look at what has changed, and where to find it.", + "upgradeIntroMornyeBody": "A new look for your player, lyrics and navigation.", + "upgradeIntroLibrarySummary": "Browse your music by playlist, artist or album.", + "upgradeIntroRepoSummary": "Choose your music sources and providers through extensions.", + "upgradeIntroLibraryTitle": "Get to know\nyour Library.", + "upgradeIntroLibraryBody": "In Mornye, browse by category or find your albums in Recently Added.", + "upgradeIntroDownloadsBody": "Pause and retry from Downloads at the top right. Finished music moves to Recently Added.", + "upgradeIntroSearchBody": "Search saved music here. The separate Search tab looks through your extensions.", + "upgradeIntroPlayerTitle": "Set up\nyour player.", + "upgradeIntroPlayerBody": "You can change your theme and playback options at any time. Here is where to find them.", + "upgradeIntroAppearanceBody": "Change themes in Settings → Appearance. In Mornye, scroll down for compact navigation; scroll up to expand it.", + "upgradeIntroAutoMixBody": "Match tempo and beats between tracks. Enable it in Settings → Local Library → Playback. Off by default.", + "upgradeIntroSettingsBody": "In Mornye, tap your profile on Home to open Settings and edit your name and photo.", + "upgradeIntroSkip": "Skip", + "upgradeIntroContinue": "Continue", + "upgradeIntroDone": "Start listening", + "upgradeIntroReplay": "What’s new in 5.0", + "cacheMotionArtwork": "Offline motion covers", + "cacheMotionArtworkDesc": "Album videos saved with downloads. Removing them keeps your music files and static covers.", + "nowPlayingVolume": "Volume", + "@nowPlayingVolume": { + "description": "System volume control label in the Mornye player" + }, + "appearanceStyle": "App Style", + "@appearanceStyle": { + "description": "Appearance section for choosing the app visual style" + }, + "discordRichPresence": "Discord Rich Presence", + "discordPresenceDescription": "Share the track playing in the built-in player on Discord. Requires Discord to be installed and signed in.", + "discordPresenceMissing": "Install Discord and sign in, then turn this setting off and on again.", + "discordPresenceUnavailable": "Discord Rich Presence is unavailable in this build or on this device.", "@@locale": "es_ES", "@@last_modified": "2026-04-28", "appName": "SpotiFLAC Mobile", @@ -57,6 +101,11 @@ "@historyFilterSingles": { "description": "Filter chip - show singles only" }, + "libraryRecentlyAdded": "Recently Added", + "libraryDownloads": "Downloads", + "libraryNoActiveDownloads": "No active downloads", + "librarySearchHint": "Search your library", + "libraryEmptyCollection": "Your music will appear here", "historySearchHint": "Buscar en historial...", "@historySearchHint": { "description": "Search bar placeholder in history" @@ -237,6 +286,7 @@ "description": "Progress dialog title while batch scanning ReplayGain" }, "replayGainBatchSuccess": "Se agregaron las etiquetas ReplayGain a {success} de {total} pistas", + "replayGainUnsupportedDecoder": "Algunas pistas no se pudieron analizar porque el decodificador de ReplayGain no es compatible con su códec de audio. Los archivos no se modificaron.", "@replayGainBatchSuccess": { "description": "Snackbar after batch ReplayGain completes", "placeholders": { @@ -461,6 +511,18 @@ "@aboutSachinsenalDesc": { "description": "Credit description for sachinsenal0x64" }, + "aboutUnituneDesc": "Resolvedor de links de música por Flaze, usado para coincidencias multiplataforma de respaldo.", + "@aboutUnituneDesc": { + "description": "Credit for the UniTune resolver" + }, + "aboutMusicBrainzDesc": "Base de datos abierta mantenida por MetaBrainz y su comunidad, usado para grabar multi-referencias.", + "@aboutMusicBrainzDesc": { + "description": "Credit for the MusicBrainz database" + }, + "aboutSquiglyDesc": "Servicio de enlaces de música universal por Liam Macmillan, usado como resolvedor multiplataforma final de respaldo.", + "@aboutSquiglyDesc": { + "description": "Credit for the Squigly resolver" + }, "aboutAppDescription": "Busca información musical, gestiona extensiones y organiza tu biblioteca.", "@aboutAppDescription": { "description": "App description in header card" @@ -594,7 +656,7 @@ "@setupIcloudNotSupported": { "description": "Error when user selects iCloud Drive on iOS" }, - "setupDownloadInFlac": "Download music in lossless and Hi-Res quality", + "setupDownloadInFlac": "Descarga música sin pérdida y Hi-Res", "@setupDownloadInFlac": { "description": "App tagline in setup" }, @@ -790,6 +852,95 @@ } } }, + "collectionExportM3u": "Exportar como M3U8", + "@collectionExportM3u": { + "description": "Tooltip on the collection screen action that exports the track list as an M3U8 playlist file" + }, + "collectionExportM3uDone": "Exportado {exported} de {total} pistas", + "@collectionExportM3uDone": { + "description": "Snackbar after M3U8 export; tracks without a local file are not exported", + "placeholders": { + "exported": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "collectionExportM3uNone": "No hay archivos descargados para exportar", + "@collectionExportM3uNone": { + "description": "Snackbar when an M3U8 export finds no local files" + }, + "collectionExportM3uFailed": "Exportación fallida", + "@collectionExportM3uFailed": { + "description": "Snackbar when writing or sharing the M3U8 export fails" + }, + "trackOpenOn": "Abrir en...", + "@trackOpenOn": { + "description": "Track option and sheet title listing streaming platforms where the track can be opened" + }, + "trackOpenOnNoLinks": "No se han encontrado enlaces para esta pista.", + "@trackOpenOnNoLinks": { + "description": "Shown in the Open on sheet when song.link returns no links" + }, + "libraryReviewDuplicates": "Revisar duplicados", + "@libraryReviewDuplicates": { + "description": "Library settings row opening the duplicate review sheet" + }, + "libraryReviewDuplicatesSubtitle": "Encontrar pistas almacenadas más de una vez", + "@libraryReviewDuplicatesSubtitle": { + "description": "Subtitle for the duplicate review settings row" + }, + "duplicatesTitle": "Duplicados", + "@duplicatesTitle": { + "description": "Title of the duplicate review sheet" + }, + "duplicatesEmpty": "No se han encontrado pistas duplicadas.", + "@duplicatesEmpty": { + "description": "Shown when the duplicate review sheet finds nothing" + }, + "duplicatesKeepBest": "Mantener mejor", + "@duplicatesKeepBest": { + "description": "Button that deletes all but the highest-quality copy in a duplicate group" + }, + "duplicatesKeepBestAll": "Lo mejor para todos", + "@duplicatesKeepBestAll": { + "description": "Button that keeps the highest-quality copy in every duplicate group and deletes the rest" + }, + "duplicatesKeepBestAllMessage": "¿Quieres conservar la mejor copia de {groupCount} {groupCount, plural, =1{track} other{tracks}} y eliminar {count} copias de menor calidad {count, plural, =1{copy} other{copies}}?\n\nLos archivos eliminados se borrarán del almacenamiento.", + "@duplicatesKeepBestAllMessage": { + "description": "Confirmation message for keeping the best copy across every duplicate group", + "placeholders": { + "count": { + "type": "int" + }, + "groupCount": { + "type": "int" + } + } + }, + "duplicatesKeepBestMessage": "¿Eliminar {count} copias de menor calidad del \"{trackName}\"?", + "@duplicatesKeepBestMessage": { + "description": "Confirmation message for the keep-best action", + "placeholders": { + "count": { + "type": "int" + }, + "trackName": { + "type": "String" + } + } + }, + "duplicatesDeleteCopyMessage": "¿Eliminar esta copia de \"{trackName}\"?", + "@duplicatesDeleteCopyMessage": { + "description": "Confirmation message for deleting one duplicate copy", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, "@dialogImportPlaylistMessage": { "description": "Dialog message - import playlist confirmation", "placeholders": { @@ -1142,6 +1293,19 @@ "@updateNewVersionReady": { "description": "Update subtitle" }, + "updateRequiredTitle": "Actualización Necesaria", + "@updateRequiredTitle": { + "description": "Title of the mandatory update dialog shown when the installed version is too old" + }, + "updateRequiredNotice": "Esta versión está {count} lanzamientos detrás de la actual y ya no es soportada. Actualice para seguir usando la app.", + "@updateRequiredNotice": { + "description": "Subtitle of the mandatory update dialog; explains why the dialog cannot be dismissed", + "placeholders": { + "count": { + "type": "int" + } + } + }, "updateCurrent": "Actual", "@updateCurrent": { "description": "Label for current version" @@ -1478,6 +1642,26 @@ "@trackAudioQuality": { "description": "Metadata label - audio quality" }, + "trackReplayGainTrackGain": "ReplayGain Track Gain", + "@trackReplayGainTrackGain": { + "description": "Metadata label - ReplayGain track gain" + }, + "trackReplayGainTrackPeak": "ReplayGain Track Peak", + "@trackReplayGainTrackPeak": { + "description": "Metadata label - ReplayGain track peak" + }, + "trackReplayGainAlbumGain": "ReplayGain Album Gain", + "@trackReplayGainAlbumGain": { + "description": "Metadata label - ReplayGain album gain" + }, + "trackReplayGainAlbumPeak": "ReplayGain Album Peak", + "@trackReplayGainAlbumPeak": { + "description": "Metadata label - ReplayGain album peak" + }, + "libraryQualityLabelFileFormat": "Formato de archivo", + "@libraryQualityLabelFileFormat": { + "description": "Library audio quality label mode that shows the detected file format" + }, "trackReleaseDate": "Fecha de lanzamiento", "@trackReleaseDate": { "description": "Metadata label - release date" @@ -1893,6 +2077,42 @@ "@downloadLossyFormat": { "description": "Setting title to pick output format for lossy downloads" }, + "downloadAutoConvert": "Autoconvertir después de descargar", + "@downloadAutoConvert": { + "description": "Toggle for automatic post-download audio conversion" + }, + "downloadAutoConvertSubtitle": "Convierte descargas completadas a un formato con pérdidas más pequeño. El original solo es reemplazado después que la conversión sea exitosa.", + "@downloadAutoConvertSubtitle": { + "description": "Explanation of safe automatic post-download conversion" + }, + "downloadAutoConvertFormat": "Formato de salida", + "@downloadAutoConvertFormat": { + "description": "Automatic conversion output format setting" + }, + "downloadAutoConvertFormatSubtitle": "Elige el formato con pérdidas para descargas completadas nuevas.", + "@downloadAutoConvertFormatSubtitle": { + "description": "Automatic conversion format picker explanation" + }, + "downloadAutoConvertBitrate": "Calidad de salida", + "@downloadAutoConvertBitrate": { + "description": "Automatic conversion bitrate setting" + }, + "downloadAutoConvertBitrateSubtitle": "Las tasas de bits más altas preservan más detalles pero hacen archivos más grandes.", + "@downloadAutoConvertBitrateSubtitle": { + "description": "Automatic conversion bitrate picker explanation" + }, + "downloadAutoConvertMp3Subtitle": "Mejor compatibilidad en reproductores y dispositivos", + "@downloadAutoConvertMp3Subtitle": { + "description": "MP3 automatic conversion option description" + }, + "downloadAutoConvertM4aSubtitle": "Audio AAC eficiente en un contenedor M4A", + "@downloadAutoConvertM4aSubtitle": { + "description": "M4A AAC automatic conversion option description" + }, + "downloadAutoConvertOpusSubtitle": "Mejor eficiencia para reproductores modernos", + "@downloadAutoConvertOpusSubtitle": { + "description": "Opus automatic conversion option description" + }, "downloadLossy320Format": "Formato con pérdida a 320 kbps", "@downloadLossy320Format": { "description": "Title of the lossy format picker bottom sheet" @@ -1985,6 +2205,22 @@ "@appearanceAmoledDarkSubtitle": { "description": "Subtitle for AMOLED dark" }, + "appearanceHeroAnimations": "Animaciones Hero", + "@appearanceHeroAnimations": { + "description": "Toggle for shared-element (Hero) transitions" + }, + "appearanceHeroAnimationsSubtitle": "Covers voladores entre pantallas, ejemplo: cuando abre el reproductor", + "@appearanceHeroAnimationsSubtitle": { + "description": "Subtitle for the Hero animations toggle" + }, + "appearanceForceBlur": "Siempre use efecto desenfoque", + "@appearanceForceBlur": { + "description": "Toggle that forces backdrop blur on even when the device profile disabled it" + }, + "appearanceForceBlurSubtitle": "Habilite la barra de navegación desenfocada incluso en dispositivos donde está desactivada por defecto. Puede costar rendimiento.", + "@appearanceForceBlurSubtitle": { + "description": "Subtitle for the force-blur toggle" + }, "queueClearAll": "Eliminar todo", "@queueClearAll": { "description": "Button - clear all queue items" @@ -2017,6 +2253,27 @@ "@settingsDownloadNetworkSubtitle": { "description": "Subtitle explaining network preference" }, + "settingsConcurrentDownloads": "Descargas concurrentes", + "@settingsConcurrentDownloads": { + "description": "Setting title - how many tracks download at the same time" + }, + "settingsConcurrentDownloadsSubtitle": "Descargar varios archivos a la vez es rápido, pero con algunos proveedores puede haber un límite en pedidos paralelos.", + "@settingsConcurrentDownloadsSubtitle": { + "description": "Subtitle explaining the concurrent downloads picker" + }, + "concurrentDownloadsOne": "1 archivo a la vez", + "@concurrentDownloadsOne": { + "description": "Concurrent downloads option - sequential" + }, + "concurrentDownloadsCount": "Hasta {count} archivos a la vez", + "@concurrentDownloadsCount": { + "description": "Concurrent downloads option - parallel", + "placeholders": { + "count": { + "type": "int" + } + } + }, "albumFolderArtistAlbum": "Artista / Álbum", "@albumFolderArtistAlbum": { "description": "Album folder option" @@ -2134,6 +2391,10 @@ "@recentEmpty": { "description": "Empty state text for recent access list" }, + "recentClearAllMessage": "¿Borrar toda la actividad reciente? No se eliminarán los archivos del historial de descargas y de música.", + "@recentClearAllMessage": { + "description": "Confirmation message before clearing all recent activity" + }, "recentShowAllDownloads": "Mostrar todas las descargas", "@recentShowAllDownloads": { "description": "Button label to unhide hidden downloads in recent access" @@ -2334,6 +2595,53 @@ "@libraryFolderHint": { "description": "Placeholder when no folder selected" }, + "libraryAddFolder": "Añadir carpeta de biblioteca", + "@libraryAddFolder": { + "description": "Action to add another local library source" + }, + "libraryAddFolderSubtitle": "Almacenamiento interno, tarjeta SD, o otro drive externo", + "@libraryAddFolderSubtitle": { + "description": "Supported storage locations for local library sources" + }, + "librarySourceOnline": "Online", + "@librarySourceOnline": { + "description": "Library source is connected and accessible" + }, + "librarySourceOffline": "Offline. Reconecta el almacenamiento para restaurar estas pistas", + "@librarySourceOffline": { + "description": "Library source is temporarily disconnected" + }, + "librarySourceDisabled": "Desactivado", + "@librarySourceDisabled": { + "description": "Library source has been disabled by the user" + }, + "librarySourceScanCount": "{scanned} archivos de {total} escaneados ({progress}%)", + "@librarySourceScanCount": { + "description": "Live progress for one library folder scan", + "placeholders": { + "scanned": { + "type": "int" + }, + "total": { + "type": "int" + }, + "progress": { + "type": "String" + } + } + }, + "libraryExternalStorage": "Almacenamiento externo", + "@libraryExternalStorage": { + "description": "Label for a removable or external library source" + }, + "libraryRemoveFolder": "Eliminar carpeta de biblioteca", + "@libraryRemoveFolder": { + "description": "Action to remove one indexed library source" + }, + "libraryRemoveFolderMessage": "¿Deseas eliminar esta carpeta y sus pistas indexadas de SpotiFLAC Mobile? Los archivos de audio almacenados no se borrarán.", + "@libraryRemoveFolderMessage": { + "description": "Confirmation shown before removing a library source" + }, "libraryShowDuplicateIndicator": "Mostrar indicador de duplicados", "@libraryShowDuplicateIndicator": { "description": "Toggle for duplicate indicator in search" @@ -2628,19 +2936,19 @@ "@tutorialWelcomeTitle": { "description": "Tutorial welcome page title" }, - "tutorialWelcomeDesc": "Learn how to find music with extensions, choose the quality you want, and manage downloads in SpotiFLAC Mobile.", + "tutorialWelcomeDesc": "Aprende a buscar música con extensiones, a elegir la calidad que desees y a administrar las descargas en SpotiFLAC Mobile.", "@tutorialWelcomeDesc": { "description": "Tutorial welcome page description" }, - "tutorialWelcomeTip1": "Search with an installed extension or paste a supported music link", + "tutorialWelcomeTip1": "Busca con una extensión instalada o pega un enlace de música compatible", "@tutorialWelcomeTip1": { "description": "Tutorial welcome tip 1" }, - "tutorialWelcomeTip2": "Choose from the audio qualities offered by your download provider", + "tutorialWelcomeTip2": "Elige entre las calidades de audio que ofrece tu proveedor de descargas", "@tutorialWelcomeTip2": { "description": "Tutorial welcome tip 2" }, - "tutorialWelcomeTip3": "Embed metadata, cover art, lyrics, and release information automatically", + "tutorialWelcomeTip3": "Incorpora metadatos, portadas, letras e información sobre el lanzamiento automáticamente", "@tutorialWelcomeTip3": { "description": "Tutorial welcome tip 3" }, @@ -2648,7 +2956,7 @@ "@tutorialSearchTitle": { "description": "Tutorial search page title" }, - "tutorialSearchDesc": "Search with your selected extension or paste a supported music link.", + "tutorialSearchDesc": "Busca con la extensión que hayas seleccionado o pega un enlace de música compatible.", "@tutorialSearchDesc": { "description": "Tutorial search page description" }, @@ -2656,7 +2964,7 @@ "@tutorialDownloadTitle": { "description": "Tutorial download page title" }, - "tutorialDownloadDesc": "Pick an available quality, start the download, and follow its progress in the queue.", + "tutorialDownloadDesc": "Elige una calidad disponible, inicia la descarga y sigue su avance en la fila.", "@tutorialDownloadDesc": { "description": "Tutorial download page description" }, @@ -2664,19 +2972,19 @@ "@tutorialLibraryTitle": { "description": "Tutorial library page title" }, - "tutorialLibraryDesc": "Downloaded and locally scanned music is organized in your Library.", + "tutorialLibraryDesc": "La música descargada y escaneada localmente se organiza en tu biblioteca.", "@tutorialLibraryDesc": { "description": "Tutorial library page description" }, - "tutorialLibraryTip1": "Manage active, pending, and completed downloads from the Library queue", + "tutorialLibraryTip1": "Administra las descargas activas, pendientes y completadas desde la cola de la Biblioteca", "@tutorialLibraryTip1": { "description": "Tutorial library tip 1" }, - "tutorialLibraryTip2": "Tap a track to play it with the built-in player", + "tutorialLibraryTip2": "Toca una canción para reproducirla con el reproductor integrado", "@tutorialLibraryTip2": { "description": "Tutorial library tip 2" }, - "tutorialLibraryTip3": "Browse tracks, albums, and playlists in list or grid views", + "tutorialLibraryTip3": "Explora canciones, álbumes y listas de reproducción en vista de lista o de cuadrícula", "@tutorialLibraryTip3": { "description": "Tutorial library tip 3" }, @@ -2684,7 +2992,7 @@ "@tutorialExtensionsTitle": { "description": "Tutorial extensions page title" }, - "tutorialExtensionsDesc": "Extensions add search, download, metadata, lyrics, and other integrations.", + "tutorialExtensionsDesc": "Las extensiones añaden funciones de búsqueda, descarga, metadatos, letras de canciones y otras integraciones.", "@tutorialExtensionsDesc": { "description": "Tutorial extensions page description" }, @@ -2692,11 +3000,11 @@ "@tutorialExtensionsTip1": { "description": "Tutorial extensions tip 1" }, - "tutorialExtensionsTip2": "Choose providers for search, downloads, metadata, and fallbacks", + "tutorialExtensionsTip2": "Selecciona proveedores para búsquedas, descargas, metadatos y opciones alternativas", "@tutorialExtensionsTip2": { "description": "Tutorial extensions tip 2" }, - "tutorialExtensionsTip3": "Connect accounts when required and keep extensions up to date", + "tutorialExtensionsTip3": "Conecta las cuentas cuando sea necesario y mantén las extensiones actualizadas", "@tutorialExtensionsTip3": { "description": "Tutorial extensions tip 3" }, @@ -2814,6 +3122,22 @@ "@cacheLibraryCoverDesc": { "description": "Description of what library cover cache contains" }, + "libraryPlaybackNormalization": "Normalización de volumen", + "@libraryPlaybackNormalization": { + "description": "Toggle title for ReplayGain playback normalization in the built-in player" + }, + "libraryPlaybackNormalizationSubtitle": "Equaliza el volumen entre las pistas utilizando sus etiquetas ReplayGain o R128, cuando estén presentes", + "@libraryPlaybackNormalizationSubtitle": { + "description": "Subtitle explaining playback volume normalization" + }, + "cacheAudioAnalysis": "Caché de análisis de audio", + "@cacheAudioAnalysis": { + "description": "Cache item title for saved audio analysis results" + }, + "cacheAudioAnalysisDesc": "Espectrogramas y resultados de análisis guardados. Se volverán a analizar la próxima vez que se abra el programa.", + "@cacheAudioAnalysisDesc": { + "description": "Description of what audio analysis cache contains" + }, "cacheExploreFeed": "Explorar caché de inicio", "@cacheExploreFeed": { "description": "Cache item title for explore home feed cache" @@ -2946,6 +3270,10 @@ "@trackReEnrichOnlineSubtitle": { "description": "Subtitle for re-enrich metadata action for local items" }, + "trackReEnrichBatchSubtitle": "Choose an online or manual update, then review every change before writing", + "@trackReEnrichBatchSubtitle": { + "description": "Subtitle for batch metadata update choices" + }, "trackReEnrichFieldCover": "Carátula", "@trackReEnrichFieldCover": { "description": "Checkbox label for cover art field in re-enrich" @@ -2974,6 +3302,82 @@ "@trackReEnrichSelectAll": { "description": "Select all fields checkbox in re-enrich" }, + "trackReEnrichModeIsrc": "ISRC only", + "@trackReEnrichModeIsrc": { + "description": "Batch metadata mode that only writes ISRC" + }, + "trackReEnrichModeIsrcSubtitle": "Find and add the recording identifier without changing other tags", + "@trackReEnrichModeIsrcSubtitle": { + "description": "Explanation for the ISRC-only batch metadata mode" + }, + "trackReEnrichModeMissing": "Fill missing tags", + "@trackReEnrichModeMissing": { + "description": "Batch metadata mode that fills only empty tags" + }, + "trackReEnrichModeMissingSubtitle": "Keep existing values and fill only fields that are empty", + "@trackReEnrichModeMissingSubtitle": { + "description": "Explanation for the fill-missing batch metadata mode" + }, + "trackReEnrichModeReplace": "Update selected tags", + "@trackReEnrichModeReplace": { + "description": "Batch metadata mode that replaces selected tag groups" + }, + "trackReEnrichModeReplaceSubtitle": "Choose which existing values may be replaced by online metadata", + "@trackReEnrichModeReplaceSubtitle": { + "description": "Explanation for the selected-tag batch metadata mode" + }, + "trackReEnrichModeManual": "Set common values", + "@trackReEnrichModeManual": { + "description": "Batch metadata mode that applies shared values to every selected track" + }, + "trackReEnrichModeManualSubtitle": "Apply the same values to every selected track", + "@trackReEnrichModeManualSubtitle": { + "description": "Explanation for the manual shared-value batch metadata mode" + }, + "trackReEnrichManualFieldsTitle": "Values to apply", + "@trackReEnrichManualFieldsTitle": { + "description": "Heading above manual batch metadata inputs" + }, + "trackReEnrichManualHint": "Leave a field empty to keep its current value. Track titles, numbers, and ISRCs stay unchanged.", + "@trackReEnrichManualHint": { + "description": "Safety explanation for manual batch metadata inputs" + }, + "trackReEnrichFieldsTitle": "Tags to update", + "@trackReEnrichFieldsTitle": { + "description": "Heading above batch re-enrich field checkboxes" + }, + "trackReEnrichReview": "Review changes", + "@trackReEnrichReview": { + "description": "Button that searches metadata and opens the batch change review" + }, + "trackReEnrichReviewTitle": "Review metadata changes", + "@trackReEnrichReviewTitle": { + "description": "Title of the batch metadata review sheet" + }, + "trackReEnrichReviewSubtitle": "{changeCount} proposed changes across {trackCount} tracks", + "@trackReEnrichReviewSubtitle": { + "description": "Summary shown above proposed batch metadata changes", + "placeholders": { + "changeCount": { + "type": "int" + }, + "trackCount": { + "type": "int" + } + } + }, + "trackReEnrichNoChanges": "No metadata changes were found for the selected tracks.", + "@trackReEnrichNoChanges": { + "description": "Message when batch metadata preview has no proposed changes" + }, + "trackReEnrichApplyChanges": "Apply changes", + "@trackReEnrichApplyChanges": { + "description": "Confirmation button in the batch metadata review sheet" + }, + "trackReEnrichRefreshOnline": "Refresh from online", + "@trackReEnrichRefreshOnline": { + "description": "Proposed value when lyrics will be refreshed during re-enrich" + }, "trackEditMetadata": "Editar información", "@trackEditMetadata": { "description": "Menu action - edit embedded metadata" @@ -3008,7 +3412,15 @@ "@trackReEnrichSearching": { "description": "Snackbar while searching metadata from internet for local items" }, + "trackReEnrichPreparing": "Preparing metadata changes...", + "@trackReEnrichPreparing": { + "description": "Progress message while preparing manual batch metadata changes" + }, "trackReEnrichSuccess": "Información ", + "trackReEnrichMetadataSaved": "Metadata saved", + "trackReEnrichLyricsUpdated": "Lyrics updated", + "trackReEnrichLyricsPreserved": "No new lyrics found; existing lyrics kept", + "trackReEnrichLyricsDisabled": "Lyrics not updated: lyric downloading is disabled in Settings", "@trackReEnrichSuccess": { "description": "Snackbar after successful re-enrichment" }, @@ -3070,6 +3482,14 @@ "@trackConvertBitrate": { "description": "Label for bitrate selection" }, + "trackConvertKeepOriginal": "Mantener archivo original", + "@trackConvertKeepOriginal": { + "description": "Toggle to preserve the source file during conversion" + }, + "trackConvertKeepOriginalDescription": "Agrega el archivo convertido como una entrada independiente en la biblioteca", + "@trackConvertKeepOriginalDescription": { + "description": "Description for preserving the source file during conversion" + }, "trackConvertConfirmTitle": "Confirmar conversión", "@trackConvertConfirmTitle": { "description": "Confirmation dialog title" @@ -3101,6 +3521,18 @@ } } }, + "trackConvertConfirmKeepOriginal": "¿Convertir desde {sourceFormat} a {targetFormat}?\n\nEl archivo original se conservará y el archivo convertido se agregará como una entrada independiente en la biblioteca.\n", + "@trackConvertConfirmKeepOriginal": { + "description": "Confirmation message when the source file will be preserved", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + } + } + }, "trackConvertLosslessHint": "Conversión sin pérdidas — sin pérdida de calidad", "@trackConvertLosslessHint": { "description": "Hint shown when converting between lossless formats" @@ -3169,7 +3601,7 @@ } } }, - "cueSplitSplitting": "Dividiendo hoja CUE... ({current}/{total})", + "cueSplitSplitting": "Dividiendo la hoja CUE... ({current}/{total})", "@cueSplitSplitting": { "description": "Snackbar while splitting CUE", "placeholders": { @@ -3477,6 +3909,18 @@ } } }, + "selectionBatchConvertConfirmKeepOriginal": "¿Convertir {count} {count, plural, =1{track} other{tracks}} a {format}?\n\nLos archivos originales se conservarán y los archivos convertidos se agregarán como entradas separadas en la biblioteca.", + "@selectionBatchConvertConfirmKeepOriginal": { + "description": "Batch conversion confirmation when source files will be preserved", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + } + } + }, "selectionBatchConvertSuccess": "Se convirtieron {success} de {total} pistas a {format}", "@selectionBatchConvertSuccess": { "description": "Snackbar after batch conversion completes", @@ -3567,7 +4011,7 @@ "@lyricsProviderAppleMusicDesc": { "description": "Description for Apple Music provider" }, - "lyricsProviderQqMusicDesc": "QQ Music (buena para canciones chinas, a\ntravés de proxy)", + "lyricsProviderQqMusicDesc": "QQ Music (good for Chinese songs, direct API)", "@lyricsProviderQqMusicDesc": { "description": "Description for QQ Music provider" }, @@ -3679,6 +4123,14 @@ "@backupContentsTitle": { "description": "Header above the list summarizing what the backup contains" }, + "backupSettingsOnly": "Settings only", + "backupSelectHistory": "Download history", + "backupSelectCollections": "Library collections", + "backupSelectCollectionsDescription": "Liked tracks, wishlist, favorite artists, playlists and playlist covers.", + "backupSelectExtensions": "Extensions and their settings", + "backupSelectedExportDescription": "Save the selected categories to a backup file. Audio files are not included.", + "backupSelectAtLeastOne": "Select at least one category to create a backup.", + "backupSelectedRestoreMessage": "Only the categories listed below will be restored. Categories not included in this backup will stay unchanged. Restoring can replace existing data and cannot be undone.", "backupContentsSettings": "Configuración de la aplicación", "@backupContentsSettings": { "description": "Backup contents row label for settings" @@ -3842,6 +4294,10 @@ "@downloadLocationSubtitle": { "description": "Subtitle shown in the download location picker sheet" }, + "storageAutomaticFolder": "Automatic folder", + "storageAutomaticDownloadFolder": "Uses Download/SpotiFLAC when writable, otherwise app storage", + "storageSafRecommended": "Choose folder (Recommended)", + "storageDownloadFolderHint": "In the Android folder picker, open Download and select SpotiFLAC. If it does not exist, create it using New folder, then tap Use this folder to grant access.", "storageModeAppFolder": "Carpeta de la App (Recomendado)", "@storageModeAppFolder": { "description": "Storage mode option - app-managed folder" @@ -3858,6 +4314,26 @@ "@storageModeSafSubtitle": { "description": "Subtitle for SAF storage mode" }, + "downloadFolderAccessLostTitle": "Se perdió el acceso a la carpeta de descargas", + "@downloadFolderAccessLostTitle": { + "description": "Title of the warning banner shown in Files settings when the saved SAF folder grant is no longer valid" + }, + "downloadFolderAccessLostSubtitle": "Las descargas fallarán hasta que vuelvas a seleccionar la carpeta", + "@downloadFolderAccessLostSubtitle": { + "description": "Subtitle of the warning banner shown when the saved SAF folder grant is no longer valid" + }, + "downloadFolderReselect": "Volver a seleccionar carpeta", + "@downloadFolderReselect": { + "description": "Button that reopens the folder picker to restore download folder access" + }, + "downloadErrorSafPermissionLost": "Permiso SAF inválido o revocado. Por favor, reconfigura la ubicación de descarga en Configuración.", + "@downloadErrorSafPermissionLost": { + "description": "Error shown on downloads that failed because the persisted Android SAF folder grant is no longer valid" + }, + "downloadErrorFolderAccessLost": "Se ha perdido el acceso a la carpeta de descarga. Por favor, vuelve a seleccionar tu carpeta de descargas en Configuración.", + "@downloadErrorFolderAccessLost": { + "description": "Error shown on downloads that failed because the iOS download folder bookmark could not be opened" + }, "downloadFilenameDescription": "Usa {artist}, {title}, {album}, {track}, {year}, {date}, {disc} como marcadores de posición.", "@downloadFilenameDescription": { "description": "Description shown in filename format editor" @@ -3902,7 +4378,7 @@ "@downloadNetworkCompatibilityMode": { "description": "Setting for legacy TLS/network handling" }, - "downloadNetworkCompatibilityModeEnabled": "Uso de ajustes TLS heredados para redes antiguas", + "downloadNetworkCompatibilityModeEnabled": "Allowing legacy HTTP endpoints; TLS verification remains enabled", "@downloadNetworkCompatibilityModeEnabled": { "description": "Subtitle when network compatibility mode is on" }, @@ -4084,6 +4560,47 @@ "@editMetadataAutoFillDesc": { "description": "Description for the auto-fill section" }, + "editMetadataAutoFillSource": "Fuente de metadatos", + "@editMetadataAutoFillSource": { + "description": "Label for the metadata extension selector in online auto-fill" + }, + "editMetadataAutoFillSourceAutomatic": "Automático (prioridad del proveedor)", + "@editMetadataAutoFillSourceAutomatic": { + "description": "Automatic source option that follows configured metadata provider priority" + }, + "editMetadataAutoFillFind": "Buscar metadatos", + "@editMetadataAutoFillFind": { + "description": "Button label for finding an online metadata candidate" + }, + "editMetadataAutoFillPreview": "Datos de {source}", + "@editMetadataAutoFillPreview": { + "description": "Title for the online metadata preview", + "placeholders": { + "source": { + "type": "String" + } + } + }, + "editMetadataAutoFillCoverAvailable": "Portada disponible", + "@editMetadataAutoFillCoverAvailable": { + "description": "Preview value when the selected metadata source provides cover artwork" + }, + "editMetadataAutoFillApply": "Aplicar datos seleccionados", + "@editMetadataAutoFillApply": { + "description": "Button label for applying the previewed metadata" + }, + "editMetadataAutoFillDoneFromSource": "Rellenado {count} {count, plural, =1{field} other{fields}} de {source}", + "@editMetadataAutoFillDoneFromSource": { + "description": "Snackbar confirming fields applied from a selected metadata source", + "placeholders": { + "count": { + "type": "int" + }, + "source": { + "type": "String" + } + } + }, "editMetadataAutoFillFetch": "Recuperar y llenar", "@editMetadataAutoFillFetch": { "description": "Button label to fetch online metadata and fill selected fields" @@ -4212,6 +4729,27 @@ "@queueEmptySinglesSubtitle": { "description": "Empty state subtitle for single track downloads" }, + "queuePlaylistCount": "{count, plural, =1{1 playlist} other{{count} playlists}}", + "@queuePlaylistCount": { + "description": "Playlist count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueEmptyPlaylistsSubtitle": "Crea una lista de reproducción para organizar tus temas", + "@queueEmptyPlaylistsSubtitle": { + "description": "Empty state subtitle for the playlists library view" + }, + "libraryDefaultView": "Vista predeterminada", + "@libraryDefaultView": { + "description": "Setting title - which library view opens when switching to the Library tab" + }, + "libraryDefaultViewLastUsed": "Último uso", + "@libraryDefaultViewLastUsed": { + "description": "Default view option - keep the last used library view" + }, "queueEmptyHistory": "No hay historial de descargas", "@queueEmptyHistory": { "description": "Empty state title when download history is empty" @@ -4312,6 +4850,10 @@ "@audioAnalysisSpectralCutoff": { "description": "Estimated spectral cutoff metric label" }, + "audioAnalysisCutoffNotDetected": "Not detected", + "@audioAnalysisCutoffNotDetected": { + "description": "Displayed when no reliable broadband spectral cutoff can be detected" + }, "audioAnalysisChannelStats": "Per-channel Stats", "@audioAnalysisChannelStats": { "description": "Per-channel audio analysis section label" @@ -4324,6 +4866,131 @@ "@audioAnalysisRescan": { "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" }, + "downloadRedownloadFakeHiRes": "Re-download fake Hi-Res", + "@downloadRedownloadFakeHiRes": { + "description": "Setting title: automatically replace downloads that measure as fake Hi-Res" + }, + "downloadRedownloadFakeHiResSubtitle": "Off by default. Check Hi-Res downloads and replace only when every audio sample is preserved. Keep the original if verification or processing fails", + "@downloadRedownloadFakeHiResSubtitle": { + "description": "Setting subtitle for the fake Hi-Res re-download toggle" + }, + "hiResCheckVerdictFakeCertain": "Fake Hi-Res", + "@hiResCheckVerdictFakeCertain": { + "description": "Verdict: an exact fingerprint (padded bits or upsampling pattern) proves the file is not real Hi-Res" + }, + "hiResCheckVerdictFakeSuspect": "Possibly a filtered master", + "@hiResCheckVerdictFakeSuspect": { + "description": "Verdict: fails the cutoff test but may be a genuine master low-pass filtered in mastering" + }, + "hiResCheckReasonSampleHold": "Every sample is repeated: upsampled by duplication", + "@hiResCheckReasonSampleHold": { + "description": "Reason: sample-and-hold upsampling detected" + }, + "hiResCheckReasonInterpolation": "In-between samples are linearly interpolated", + "@hiResCheckReasonInterpolation": { + "description": "Reason: linear-interpolation upsampling detected" + }, + "hiResCheckReasonImaging": "Content above 22 kHz mirrors the audible band", + "@hiResCheckReasonImaging": { + "description": "Reason: spectral imaging from upsampling detected" + }, + "hiResCheckMusicContent": "Musical content", + "@hiResCheckMusicContent": { + "description": "Label for the highest frequency that still moves with the music" + }, + "hiResCheckUltrasonicNoise": "Above {cutoff} only steady noise (typical of DSD or analog tape transfers): a {rate} file would hold all the music", + "@hiResCheckUltrasonicNoise": { + "description": "Shown when the ultrasonic content of a Hi-Res file is noise rather than music", + "placeholders": { + "cutoff": { + "type": "String" + }, + "rate": { + "type": "String" + } + } + }, + "hiResCheckTitle": "Hi-Res Authenticity", + "@hiResCheckTitle": { + "description": "Title of the fake Hi-Res check card" + }, + "hiResCheckDescription": "Detect upsampled or bit-padded fake Hi-Res files", + "@hiResCheckDescription": { + "description": "Explains what the Hi-Res authenticity check does" + }, + "hiResCheckRun": "Check", + "@hiResCheckRun": { + "description": "Button that starts the Hi-Res authenticity check" + }, + "hiResCheckChecking": "Checking Hi-Res authenticity...", + "@hiResCheckChecking": { + "description": "Loading text while the Hi-Res check runs" + }, + "hiResCheckVerdictFake": "Likely fake Hi-Res", + "@hiResCheckVerdictFake": { + "description": "Verdict: the file claims Hi-Res but does not measure as it" + }, + "hiResCheckVerdictGenuine": "Measures as genuine Hi-Res", + "@hiResCheckVerdictGenuine": { + "description": "Verdict: no upsampling or padded bit depth found" + }, + "hiResCheckVerdictStandard": "Standard definition, nothing to flag", + "@hiResCheckVerdictStandard": { + "description": "Verdict: neither sample rate nor bit depth claims Hi-Res" + }, + "hiResCheckVerdictInconclusive": "Inconclusive: the analyzed segment is too quiet or short", + "@hiResCheckVerdictInconclusive": { + "description": "Verdict: analysis could not reach a reliable conclusion" + }, + "hiResCheckUnsupported": "Only FLAC and WAV files can be checked", + "@hiResCheckUnsupported": { + "description": "Shown when the file format cannot be decoded by the Hi-Res check" + }, + "hiResCheckCutoff": "Content cutoff", + "@hiResCheckCutoff": { + "description": "Label for the highest frequency with real content" + }, + "hiResCheckBitsInUse": "Bits in use", + "@hiResCheckBitsInUse": { + "description": "Label for effective vs declared bit depth" + }, + "hiResCheckDisclaimer": "The spectrum stops early, but nothing proves it was upsampled: it may be a genuine master low-pass filtered in mastering. It is not replaced automatically.", + "@hiResCheckDisclaimer": { + "description": "Caveat shown under a fake Hi-Res verdict" + }, + "hiResCheckFailed": "Hi-Res check failed: {error}", + "@hiResCheckFailed": { + "description": "Error shown when the Hi-Res check fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "hiResCheckReasonRate": "Declares {sampleRate} but content stops at ~{cutoff}", + "@hiResCheckReasonRate": { + "description": "Reason for a fake verdict caused by upsampling", + "placeholders": { + "sampleRate": { + "type": "String" + }, + "cutoff": { + "type": "String" + } + } + }, + "hiResCheckReasonDepth": "Declares {declared}-bit but only {effective} bits carry data", + "@hiResCheckReasonDepth": { + "description": "Reason for a fake verdict caused by padded bit depth", + "placeholders": { + "declared": { + "type": "int" + }, + "effective": { + "type": "int" + } + } + }, "audioAnalysisRescanning": "Volviendo a analizar audio...", "@audioAnalysisRescanning": { "description": "Loading text while audio is being re-analyzed after an explicit refresh" @@ -4382,6 +5049,14 @@ "@cancelDownloadKeep": { "description": "Dialog button - keep the active download (do not cancel)" }, + "queueCancelledTitle": "Descarga cancelada", + "@queueCancelledTitle": { + "description": "Dialog title when opening a cancelled queue item" + }, + "queueCancelledMessage": "This download was cancelled. Retry it or remove it from the queue.", + "@queueCancelledMessage": { + "description": "Dialog body when opening a cancelled queue item" + }, "metadataSaveFailedFfmpeg": "Failed to save metadata via FFmpeg", "@metadataSaveFailedFfmpeg": { "description": "Snackbar error when FFmpeg fails to write metadata" @@ -4465,6 +5140,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": "Todas las descargas completadas", "@notifAllDownloadsComplete": { "description": "Notification title when all downloads finish successfully" @@ -4565,7 +5248,7 @@ } } }, - "notifLibraryScanFailed": "Library scan failed", + "notifLibraryScanFailed": "Error al escanear la biblioteca", "@notifLibraryScanFailed": { "description": "Notification title when library scan fails" }, @@ -4641,7 +5324,7 @@ }, "homeImportCsvTooltip": "Import playlist (CSV, M3U)", "@homeImportCsvTooltip": { - "description": "Tooltip for importing a CSV file into Home search" + "description": "Tooltip for importing a CSV or M3U playlist file into Home search" }, "homeChangeSearchProviderTooltip": "Change search provider", "@homeChangeSearchProviderTooltip": { @@ -4707,6 +5390,18 @@ "@trackCoverReplaceNotice": { "description": "Notice shown when a new cover has been selected but not saved yet" }, + "trackCoverResolution": "Cover resolution", + "@trackCoverResolution": { + "description": "Label for selecting the embedded cover art resolution" + }, + "trackCoverResolutionHint": "Sets the longest edge when saved. Enlarging does not add image detail.", + "@trackCoverResolutionHint": { + "description": "Explanation below the embedded cover art resolution selector" + }, + "trackCoverResizeFailed": "The cover image could not be resized. Please try another size or image.", + "@trackCoverResizeFailed": { + "description": "Error shown when resizing cover art before saving metadata fails" + }, "actionStop": "Detener", "@actionStop": { "description": "Generic action - stop" @@ -4715,10 +5410,63 @@ "@queueFinalizingDownload": { "description": "Accessibility label for a queue item that is finalizing" }, + "queueDownloadNext": "Download next", + "@queueDownloadNext": { + "description": "Tooltip on a queued download row; moves the item to the front of the queue so the next free slot downloads it" + }, + "queueMoveUp": "Move up", + "@queueMoveUp": { + "description": "Queue item menu action - move the queued item one position earlier" + }, + "queueMoveDown": "Move down", + "@queueMoveDown": { + "description": "Queue item menu action - move the queued item one position later" + }, + "editMetadataMusicBrainzButton": "Fetch from MusicBrainz", + "@editMetadataMusicBrainzButton": { + "description": "Tag editor button that fills genre and album artist from MusicBrainz by ISRC" + }, + "editMetadataMusicBrainzFilled": "Updated from MusicBrainz", + "@editMetadataMusicBrainzFilled": { + "description": "Snackbar after MusicBrainz suggestions were applied to the tag editor fields" + }, + "editMetadataMusicBrainzNothing": "Nothing found on MusicBrainz", + "@editMetadataMusicBrainzNothing": { + "description": "Snackbar when the MusicBrainz lookup returns no data" + }, + "editMetadataMusicBrainzNeedsIsrc": "Requires an ISRC tag", + "@editMetadataMusicBrainzNeedsIsrc": { + "description": "Snackbar when the MusicBrainz lookup is tapped without an ISRC" + }, + "nowPlayingRepeatOff": "Repeat off", + "@nowPlayingRepeatOff": { + "description": "Repeat toggle tooltip when repeat is disabled" + }, + "nowPlayingRepeatAll": "Repeat all", + "@nowPlayingRepeatAll": { + "description": "Repeat toggle tooltip when the whole queue repeats" + }, + "nowPlayingRepeatOne": "Repeat one", + "@nowPlayingRepeatOne": { + "description": "Repeat toggle tooltip when the current track repeats" + }, + "queueNetworkFailedOffline": "{count} downloads failed while offline", + "@queueNetworkFailedOffline": { + "description": "Snackbar shown when connectivity returns and network-failed downloads can be retried", + "placeholders": { + "count": { + "type": "int" + } + } + }, "queueDownloadedFileMissing": "Downloaded file missing", "@queueDownloadedFileMissing": { "description": "Accessibility label when a downloaded file is missing from disk" }, + "queueCheckingDownloadedFile": "Checking downloaded file...", + "@queueCheckingDownloadedFile": { + "description": "Accessibility label while the app checks whether a just-completed download has appeared at its final path yet. Not about authentication or a download session." + }, "queueDownloadCompleted": "Descarga completada", "@queueDownloadCompleted": { "description": "Accessibility label for completed download state in queue" @@ -4978,10 +5726,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": "Todas las pistas se descargarán independientemente del historial", "@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": "Keep every quality version; add its measured quality to the filename only when the name is already used", + "@downloadQualityVariantsDescription": { + "description": "Description for retaining multiple quality versions" + }, + "trackOptionDownloadQualityVariant": "Download another quality", + "@trackOptionDownloadQualityVariant": { + "description": "Track menu action to download another quality version" + }, "downloadFallbackExtensions": "Reslpado de extensiones", "@downloadFallbackExtensions": { "description": "Settings item for configuring fallback extension providers" @@ -5010,6 +5774,34 @@ "@editMetadataFieldComment": { "description": "Label for comment field in the edit metadata sheet" }, + "trackAlbumType": "Release Type", + "@trackAlbumType": { + "description": "Label for an album or release type metadata value" + }, + "editMetadataFieldAlbumTypeHint": "Album, single, EP, compilation...", + "@editMetadataFieldAlbumTypeHint": { + "description": "Hint for the release type metadata field" + }, + "editMetadataFieldExplicit": "Explicit", + "@editMetadataFieldExplicit": { + "description": "Label for the explicit content metadata field" + }, + "editMetadataFieldExplicitHint": "Mark this track as containing explicit content", + "@editMetadataFieldExplicitHint": { + "description": "Description for the explicit content metadata switch" + }, + "metadataExplicitValue": "Explicit", + "@metadataExplicitValue": { + "description": "Displayed value when a track is marked explicit" + }, + "editMetadataFieldUpc": "UPC / Barcode", + "@editMetadataFieldUpc": { + "description": "Label for the release barcode metadata field" + }, + "editMetadataFieldUpcHint": "Numeric UPC, EAN, or GTIN", + "@editMetadataFieldUpcHint": { + "description": "Hint for the release barcode metadata field" + }, "editMetadataAdvanced": "Avanzado", "@editMetadataAdvanced": { "description": "Expandable section label for advanced metadata fields" @@ -5030,6 +5822,10 @@ "@libraryFilterMetadataIncorrectIsrcFormat": { "description": "Filter option - items with an invalid ISRC format" }, + "libraryFilterMetadataMissingIsrc": "Missing ISRC", + "@libraryFilterMetadataMissingIsrc": { + "description": "Filter option - items without any ISRC tag" + }, "libraryFilterMetadataMissingLabel": "Falta etiqueta", "@libraryFilterMetadataMissingLabel": { "description": "Filter option - items missing record label" @@ -5122,9 +5918,17 @@ } }, "queueDownloadStarting": "Comenzando...", + "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" }, + "@queueCheckingDownloadSession": { + "description": "Queue status while the download provider's session is being checked during preparation (preparationStage 'checking_session'). This is about the provider session, not about locating a finished file." + }, "a11ySelectTrack": "Seleccionar pista", "@a11ySelectTrack": { "description": "Accessibility label for selecting a track" @@ -5210,7 +6014,7 @@ "@downloadNativeWorker": { "description": "Setting title for Android native download worker" }, - "downloadNativeWorkerSubtitle": "Servicio de Android en segundo plano para descargas de extensiones", + "downloadNativeWorkerSubtitle": "Android background service for extension downloads", "@downloadNativeWorkerSubtitle": { "description": "Setting subtitle for Android native download worker" }, @@ -5491,11 +6295,56 @@ "description": "Title for the playback queue sheet" }, "nowPlayingPreviousTrack": "Previous track", + "@nowPlayingPreviousTrack": { + "description": "Tooltip for the previous-track playback control" + }, "nowPlayingNextTrack": "Next track", + "@nowPlayingNextTrack": { + "description": "Tooltip for the next-track playback control" + }, "nowPlayingDetails": "Details", "@nowPlayingDetails": { "description": "Menu item and section title for track metadata details" }, + "nowPlayingSleepTimer": "Sleep timer", + "@nowPlayingSleepTimer": { + "description": "Menu item and sheet title for the playback sleep timer" + }, + "nowPlayingSleepTimerActive": "Ends at {time}", + "@nowPlayingSleepTimerActive": { + "description": "Active sleep timer deadline shown in the player menu", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "nowPlayingSleepTimerMinutes": "{minutes, plural, =1{1 minute} other{{minutes} minutes}}", + "@nowPlayingSleepTimerMinutes": { + "description": "Duration choice for the playback sleep timer", + "placeholders": { + "minutes": { + "type": "int" + } + } + }, + "nowPlayingSleepTimerOff": "Turn off sleep timer", + "@nowPlayingSleepTimerOff": { + "description": "Action to cancel the active playback sleep timer" + }, + "nowPlayingSleepTimerSet": "Sleep timer set for {duration}", + "@nowPlayingSleepTimerSet": { + "description": "Confirmation after setting the playback sleep timer", + "placeholders": { + "duration": { + "type": "String" + } + } + }, + "nowPlayingSleepTimerCancelled": "Sleep timer turned off", + "@nowPlayingSleepTimerCancelled": { + "description": "Confirmation after cancelling the playback sleep timer" + }, "nowPlayingOpenInExternalPlayer": "Open in external player", "@nowPlayingOpenInExternalPlayer": { "description": "Menu item to open the current track in an external player" @@ -5838,6 +6687,15 @@ "@extensionVerificationBrowserInApp": { "description": "Chip label for in-app browser verification mode" }, + "extensionVerificationUnavailable": "No verification page is available for {extension}. Retry the download to request a new challenge.", + "@extensionVerificationUnavailable": { + "description": "Shown when the app cannot retrieve a pending verification challenge", + "placeholders": { + "extension": { + "type": "String" + } + } + }, "extensionVerificationHelpTitleManual": "Open verification manually", "@extensionVerificationHelpTitleManual": { "description": "Dialog title when automatic browser launch for verification fails" @@ -5870,233 +6728,102 @@ "@extensionVerificationOpenBrowser": { "description": "Button to open the extension verification URL in a browser" }, - "updateRequiredTitle": "Actualización Necesaria", - "@updateRequiredTitle": { - "description": "Title of the mandatory update dialog shown when the installed version is too old" - }, - "updateRequiredNotice": "Esta versión está {count} lanzamientos detrás de la actual y ya no es soportada. Actualice para seguir usando la app.", - "@updateRequiredNotice": { - "description": "Subtitle of the mandatory update dialog; explains why the dialog cannot be dismissed", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "appearanceHeroAnimations": "Animaciones Hero", - "@appearanceHeroAnimations": { - "description": "Toggle for shared-element (Hero) transitions" - }, - "appearanceHeroAnimationsSubtitle": "Covers voladores entre pantallas, ejemplo: cuando abre el reproductor", - "@appearanceHeroAnimationsSubtitle": { - "description": "Subtitle for the Hero animations toggle" - }, - "settingsConcurrentDownloads": "Descargas concurrentes", - "@settingsConcurrentDownloads": { - "description": "Setting title - how many tracks download at the same time" - }, - "settingsConcurrentDownloadsSubtitle": "Descargar varios archivos a la vez es rápido, pero con algunos proveedores puede haber un límite en pedidos paralelos.", - "@settingsConcurrentDownloadsSubtitle": { - "description": "Subtitle explaining the concurrent downloads picker" - }, - "concurrentDownloadsOne": "1 archivo a la vez", - "@concurrentDownloadsOne": { - "description": "Concurrent downloads option - sequential" - }, - "concurrentDownloadsCount": "Hasta {count} archivos a la vez", - "@concurrentDownloadsCount": { - "description": "Concurrent downloads option - parallel", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "libraryPlaybackNormalization": "Normalización de volumen", - "@libraryPlaybackNormalization": { - "description": "Toggle title for ReplayGain playback normalization in the built-in player" - }, - "libraryPlaybackNormalizationSubtitle": "Equaliza el volumen entre las pistas utilizando sus etiquetas ReplayGain o R128, cuando estén presentes", - "@libraryPlaybackNormalizationSubtitle": { - "description": "Subtitle explaining playback volume normalization" - }, - "cacheAudioAnalysis": "Caché de análisis de audio", - "@cacheAudioAnalysis": { - "description": "Cache item title for saved audio analysis results" - }, - "cacheAudioAnalysisDesc": "Espectrogramas y resultados de análisis guardados. Se volverán a analizar la próxima vez que se abra el programa.", - "@cacheAudioAnalysisDesc": { - "description": "Description of what audio analysis cache contains" - }, - "trackConvertKeepOriginal": "Mantener archivo original", - "@trackConvertKeepOriginal": { - "description": "Toggle to preserve the source file during conversion" - }, - "trackConvertKeepOriginalDescription": "Agrega el archivo convertido como una entrada independiente en la biblioteca", - "@trackConvertKeepOriginalDescription": { - "description": "Description for preserving the source file during conversion" - }, - "trackConvertConfirmKeepOriginal": "¿Convertir desde {sourceFormat} a {targetFormat}?\n\nEl archivo original se conservará y el archivo convertido se agregará como una entrada independiente en la biblioteca.\n", - "@trackConvertConfirmKeepOriginal": { - "description": "Confirmation message when the source file will be preserved", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - } - } - }, - "selectionBatchConvertConfirmKeepOriginal": "¿Convertir {count} {count, plural, =1{track} other{tracks}} a {format}?\n\nLos archivos originales se conservarán y los archivos convertidos se agregarán como entradas separadas en la biblioteca.", - "@selectionBatchConvertConfirmKeepOriginal": { - "description": "Batch conversion confirmation when source files will be preserved", - "placeholders": { - "count": { - "type": "int" - }, - "format": { - "type": "String" - } - } - }, - "downloadFolderAccessLostTitle": "Se perdió el acceso a la carpeta de descargas", - "@downloadFolderAccessLostTitle": { - "description": "Title of the warning banner shown in Files settings when the saved SAF folder grant is no longer valid" - }, - "downloadFolderAccessLostSubtitle": "Las descargas fallarán hasta que vuelvas a seleccionar la carpeta", - "@downloadFolderAccessLostSubtitle": { - "description": "Subtitle of the warning banner shown when the saved SAF folder grant is no longer valid" - }, - "downloadFolderReselect": "Volver a seleccionar carpeta", - "@downloadFolderReselect": { - "description": "Button that reopens the folder picker to restore download folder access" - }, - "downloadErrorSafPermissionLost": "Permiso SAF inválido o revocado. Por favor, reconfigura la ubicación de descarga en Configuración.", - "@downloadErrorSafPermissionLost": { - "description": "Error shown on downloads that failed because the persisted Android SAF folder grant is no longer valid" - }, - "downloadErrorFolderAccessLost": "Se ha perdido el acceso a la carpeta de descarga. Por favor, vuelve a seleccionar tu carpeta de descargas en Configuración.", - "@downloadErrorFolderAccessLost": { - "description": "Error shown on downloads that failed because the iOS download folder bookmark could not be opened" - }, - "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" - }, - "downloadDeduplicationWithQualityVariants": "Existing files at the selected quality will be skipped", - "@downloadDeduplicationWithQualityVariants": { - "description": "Deduplication subtitle when separate quality versions are allowed" - }, - "downloadQualityVariants": "Allow different quality versions", - "@downloadQualityVariants": { - "description": "Setting to retain multiple quality versions of the same track" - }, - "downloadQualityVariantsDescription": "Keep every quality version; add its measured quality to the filename only when the name is already used", - "@downloadQualityVariantsDescription": { - "description": "Description for retaining multiple quality versions" - }, - "trackOptionDownloadQualityVariant": "Download another quality", - "@trackOptionDownloadQualityVariant": { - "description": "Track menu action to download another quality version" - }, - "queueCheckingDownloadSession": "Checking download session...", - "queueResolvingDownloadMetadata": "Resolving track metadata...", - "queueResolvingDownloadStream": "Preparing audio stream...", - "queueWaitingForVerification": "Waiting for verification...", - "queueResumingAfterVerification": "Resuming after verification...", "settingsSearchHint": "Search settings", + "@settingsSearchHint": { + "description": "Placeholder of the search field on the Settings tab" + }, "settingsSearchNoResults": "No settings match \"{query}\"", + "@settingsSearchNoResults": { + "description": "Shown when a Settings search returns nothing", + "placeholders": { + "query": { + "type": "String" + } + } + }, "settingsGroupInterface": "Extensions & appearance", + "@settingsGroupInterface": { + "description": "Settings group covering look and feel" + }, "settingsGroupContent": "Content & metadata", + "@settingsGroupContent": { + "description": "Settings group covering the library, metadata and lyrics" + }, "settingsGroupDownloads": "Downloads & files", + "@settingsGroupDownloads": { + "description": "Settings group covering download behaviour and storage" + }, "settingsGroupSystem": "System", + "@settingsGroupSystem": { + "description": "Settings group covering app-level data, cache and logs" + }, "settingsGroupHelp": "About & support", - "collectionExportM3u": "Exportar como M3U8", - "collectionExportM3uDone": "Exportado {exported} de {total} pistas", - "collectionExportM3uNone": "No hay archivos descargados para exportar", - "collectionExportM3uFailed": "Exportación fallida", - "trackOpenOn": "Abrir en...", - "trackOpenOnNoLinks": "No se han encontrado enlaces para esta pista.", - "libraryReviewDuplicates": "Revisar duplicados", - "libraryReviewDuplicatesSubtitle": "Encontrar pistas almacenadas más de una vez", - "duplicatesTitle": "Duplicados", - "duplicatesEmpty": "No se han encontrado pistas duplicadas.", - "duplicatesKeepBest": "Mantener mejor", - "duplicatesKeepBestMessage": "¿Eliminar {count} copias de menor calidad del \"{trackName}\"?", - "duplicatesDeleteCopyMessage": "¿Eliminar esta copia de \"{trackName}\"?", - "downloadAutoConvert": "Auto-convert after download", - "downloadAutoConvertSubtitle": "Convert completed downloads to a smaller lossy format. The original is replaced only after conversion succeeds.", - "downloadAutoConvertFormat": "Output format", - "downloadAutoConvertFormatSubtitle": "Choose the lossy format used for newly completed downloads.", - "downloadAutoConvertBitrate": "Output quality", - "downloadAutoConvertBitrateSubtitle": "Higher bitrates preserve more detail but create larger files.", - "downloadAutoConvertMp3Subtitle": "Best compatibility across players and devices", - "downloadAutoConvertM4aSubtitle": "Efficient AAC audio in an M4A container", - "downloadAutoConvertOpusSubtitle": "Best efficiency for modern players", - "appearanceForceBlur": "Siempre use efecto desenfoque", - "appearanceForceBlurSubtitle": "Habilite la barra de navegación desenfocada incluso en dispositivos donde está desactivada por defecto. Puede costar rendimiento.", - "recentClearAllMessage": "Clear all recent activity? Download history and music files will not be deleted.", - "libraryAddFolder": "Add library folder", - "libraryAddFolderSubtitle": "Internal storage, SD card, SSD, or another external drive", - "librarySourceOnline": "Online", - "librarySourceOffline": "Offline. Reconnect the storage to restore these tracks", - "librarySourceDisabled": "Disabled", - "librarySourceScanCount": "{scanned} of {total} files scanned ({progress}%)", - "libraryExternalStorage": "External storage", - "libraryRemoveFolder": "Remove library folder", - "libraryRemoveFolderMessage": "Remove this folder and its indexed tracks from SpotiFLAC Mobile? Audio files on the storage will not be deleted.", - "trackReEnrichModeIsrc": "ISRC only", - "trackReEnrichModeIsrcSubtitle": "Find and add the recording identifier without changing other tags", - "trackReEnrichModeMissing": "Fill missing tags", - "trackReEnrichModeMissingSubtitle": "Keep existing values and fill only fields that are empty", - "trackReEnrichModeReplace": "Update selected tags", - "trackReEnrichModeReplaceSubtitle": "Choose which existing values may be replaced by online metadata", - "trackReEnrichFieldsTitle": "Tags to update", - "trackReEnrichReview": "Review changes", - "trackReEnrichReviewTitle": "Review metadata changes", - "trackReEnrichReviewSubtitle": "{changeCount} proposed changes across {trackCount} tracks", - "trackReEnrichNoChanges": "No metadata changes were found for the selected tracks.", - "trackReEnrichApplyChanges": "Apply changes", - "trackReEnrichRefreshOnline": "Refresh from online", - "editMetadataAutoFillSource": "Fuente de metadatos", - "editMetadataAutoFillSourceAutomatic": "Automático (prioridad del proveedor)", - "editMetadataAutoFillFind": "Buscar metadatos", - "editMetadataAutoFillPreview": "Datos de {source}", - "editMetadataAutoFillCoverAvailable": "Portada disponible", - "editMetadataAutoFillApply": "Aplicar datos seleccionados", - "editMetadataAutoFillDoneFromSource": "Rellenado {count} {count, plural, =1{field} other{fields}} de {source}", - "queuePlaylistCount": "{count, plural, =1{1 playlist} other{{count} playlists}}", - "queueEmptyPlaylistsSubtitle": "Crea una lista de reproducción para organizar tus temas", - "libraryDefaultView": "Vista predeterminada", - "libraryDefaultViewLastUsed": "Último uso", - "audioAnalysisCutoffNotDetected": "Not detected", - "queueCancelledTitle": "Download cancelled", - "queueCancelledMessage": "This download was cancelled. Retry it or remove it from the queue.", - "trackCoverResolution": "Cover resolution", - "trackCoverResolutionHint": "Sets the longest edge when saved. Enlarging does not add image detail.", - "trackCoverResizeFailed": "The cover image could not be resized. Please try another size or image.", - "queueDownloadNext": "Download next", - "queueMoveUp": "Move up", - "queueMoveDown": "Move down", - "editMetadataMusicBrainzButton": "Fetch from MusicBrainz", - "editMetadataMusicBrainzFilled": "Updated from MusicBrainz", - "editMetadataMusicBrainzNothing": "Nothing found on MusicBrainz", - "editMetadataMusicBrainzNeedsIsrc": "Requires an ISRC tag", - "nowPlayingRepeatOff": "Repeat off", - "nowPlayingRepeatAll": "Repeat all", - "nowPlayingRepeatOne": "Repeat one", - "queueNetworkFailedOffline": "{count} downloads failed while offline", - "trackAlbumType": "Release Type", - "editMetadataFieldAlbumTypeHint": "Album, single, EP, compilation...", - "editMetadataFieldExplicit": "Explicit", - "editMetadataFieldExplicitHint": "Mark this track as containing explicit content", - "metadataExplicitValue": "Explicit", - "editMetadataFieldUpc": "UPC / Barcode", - "editMetadataFieldUpcHint": "Numeric UPC, EAN, or GTIN", - "libraryFilterMetadataMissingIsrc": "Missing ISRC" + "@settingsGroupHelp": { + "description": "Settings group covering the about page and donations" + }, + "libraryFilterMetadataMissingLyrics": "Missing lyrics", + "@libraryFilterMetadataMissingLyrics": { + "description": "Filter option for tracks without embedded or sidecar lyrics" + }, + "trackOptionCopyTrackName": "Copy track name", + "@trackOptionCopyTrackName": { + "description": "Track menu action that copies the track title" + }, + "trackOptionCopyArtist": "Copy artist", + "@trackOptionCopyArtist": { + "description": "Track menu action that copies the artist name" + }, + "trackOptionCopyTrackAndArtist": "Copy track and artist", + "@trackOptionCopyTrackAndArtist": { + "description": "Track menu action that copies the track title and artist" + }, + "metadataCopyValue": "Copy value", + "@metadataCopyValue": { + "description": "Metadata menu action that copies only the selected value" + }, + "metadataCopyField": "Copy field and value", + "@metadataCopyField": { + "description": "Metadata menu action that copies the selected key and value" + }, + "mornyeShowTabs": "Show tabs", + "mornyeSearch": "Search", + "mornyeContinuePlaying": "Continue Playing", + "metadataCopyAll": "Copy all metadata", + "@metadataCopyAll": { + "description": "Metadata menu action that copies every visible key and value" + }, + "optionsEmbeddedCoverSize": "Embedded Cover Size", + "@optionsEmbeddedCoverSize": { + "description": "Metadata setting that limits downloaded artwork resolution before it is embedded" + }, + "optionsEmbeddedCoverSizeDescription": "Downscale remotely downloaded cover art before embedding it. Images already within the limit are kept unchanged.", + "@optionsEmbeddedCoverSizeDescription": { + "description": "Description shown in the embedded cover size picker" + }, + "mornyeFavorite": "Favorite", + "mornyeGoToArtist": "Go to Artist", + "@mornyeFavorite": { + "description": "Compact context menu action that adds a track to Loved" + }, + "mornyeFavorited": "Favorited", + "@mornyeFavorited": { + "description": "Selected state of the compact favorite action" + }, + "autoMixDescription": "Blend songs with beat matching and pitch-preserving tempo adjustment. Uses crossfade when beats cannot be matched.", + "autoMixOn": "AutoMix on", + "autoMixOff": "AutoMix off", + "profileTitle": "Profile", + "profileSetUp": "Set up your profile", + "profileEdit": "Edit name and photo", + "backupIncludesProfile": "Includes your profile name and photo", + "profileName": "Name", + "profileNameHint": "Your name", + "profileChangePhoto": "Choose photo", + "profileRemovePhoto": "Remove photo", + "profilePhotoError": "Choose a valid image smaller than 20 MB.", + "profileSaveError": "Could not save your profile. Please try again.", + "optionsEmbeddedCoverSizeOriginal": "Original resolution", + "@optionsEmbeddedCoverSizeOriginal": { + "description": "Option that preserves the provider artwork at its original resolution" + } } diff --git a/lib/l10n/arb/app_fr.arb b/lib/l10n/arb/app_fr.arb index 6a5319dc..fd1003bf 100644 --- a/lib/l10n/arb/app_fr.arb +++ b/lib/l10n/arb/app_fr.arb @@ -1,78 +1,278 @@ { + "upgradeIntroWelcome": "Welcome to\nSpotiFLAC-Mobile 5.0", + "upgradeIntroThemeTitle": "Make it\nyour own.", + "upgradeIntroThemeBody": "Choose a look. Your choice applies immediately, and you can change it later in Appearance.", + "upgradeIntroThemeMaterialBody": "The familiar layout, with Material controls and your accent color.", + "upgradeIntroThemeMornyeBody": "Glass navigation, a redesigned Library and an immersive player.", + "upgradeIntroRustTitle": "A new engine.\nBuilt with Rust.", + "upgradeIntroRustBody": "In 5.0, the app’s backend has moved from Go to Rust. It is the engine working behind the screens you use every day.", + "upgradeIntroRustEngineTitle": "Travaille en arrière-plan", + "upgradeIntroRustEngineBody": "Rust handles downloads, audio metadata, library scanning and the extension runtime on Android and iOS.", + "upgradeIntroRustMemoryTitle": "More careful with memory", + "upgradeIntroRustMemoryBody": "Reused buffers and fewer copies reduce temporary allocations when processing artwork and extension data.", + "upgradeIntroRustKeepTitle": "Keep your music", + "upgradeIntroRustKeepBody": "No need to download your collection again. Your saved music and settings stay in place, with no new setup required.", + "upgradeIntroWelcomeBody": "A quick look at what has changed, and where to find it.", + "upgradeIntroMornyeBody": "A new look for your player, lyrics and navigation.", + "upgradeIntroLibrarySummary": "Browse your music by playlist, artist or album.", + "upgradeIntroRepoSummary": "Choose your music sources and providers through extensions.", + "upgradeIntroLibraryTitle": "Get to know\nyour Library.", + "upgradeIntroLibraryBody": "In Mornye, browse by category or find your albums in Recently Added.", + "upgradeIntroDownloadsBody": "Pause and retry from Downloads at the top right. Finished music moves to Recently Added.", + "upgradeIntroSearchBody": "Search saved music here. The separate Search tab looks through your extensions.", + "upgradeIntroPlayerTitle": "Set up\nyour player.", + "upgradeIntroPlayerBody": "You can change your theme and playback options at any time. Here is where to find them.", + "upgradeIntroAppearanceBody": "Change themes in Settings → Appearance. In Mornye, scroll down for compact navigation; scroll up to expand it.", + "upgradeIntroAutoMixBody": "Match tempo and beats between tracks. Enable it in Settings → Local Library → Playback. Off by default.", + "upgradeIntroSettingsBody": "In Mornye, tap your profile on Home to open Settings and edit your name and photo.", + "upgradeIntroSkip": "Skip", + "upgradeIntroContinue": "Continue", + "upgradeIntroDone": "Start listening", + "upgradeIntroReplay": "What’s new in 5.0", + "cacheMotionArtwork": "Offline motion covers", + "cacheMotionArtworkDesc": "Album videos saved with downloads. Removing them keeps your music files and static covers.", + "nowPlayingVolume": "Volume", + "@nowPlayingVolume": { + "description": "System volume control label in the Mornye player" + }, + "appearanceStyle": "App Style", + "@appearanceStyle": { + "description": "Appearance section for choosing the app visual style" + }, + "discordRichPresence": "Discord Rich Presence", + "discordPresenceDescription": "Share the track playing in the built-in player on Discord. Requires Discord to be installed and signed in.", + "discordPresenceMissing": "Install Discord and sign in, then turn this setting off and on again.", + "discordPresenceUnavailable": "Discord Rich Presence is unavailable in this build or on this device.", "@@locale": "fr", "@@last_modified": "2026-04-28", - "libraryEnableLocalLibrarySubtitle": "Analysez et gérez votre bibliothèque musicale", - "@libraryEnableLocalLibrarySubtitle": { - "description": "Subtitle for enable toggle" + "appName": "SpotiFLAC Mobile", + "@appName": { + "description": "App name - DO NOT TRANSLATE" }, - "@audioAnalysisCodec": { - "description": "Audio codec metric label" + "navHome": "Accueil", + "@navHome": { + "description": "Bottom navigation - Home tab" }, - "extensionUtilityFunctions": "Fonctions utilitaires", - "@extensionUtilityFunctions": { - "description": "Capability label for utility-only extensions" + "navLibrary": "Bibliothèque", + "@navLibrary": { + "description": "Bottom navigation - Library tab" }, - "logClearLogsMessage": "Êtes-vous sûr de vouloir effacer tous les journaux ?", - "@logClearLogsMessage": { - "description": "Clear logs confirmation message" + "navSettings": "Paramètres", + "@navSettings": { + "description": "Bottom navigation - Settings tab" }, - "@storeClearFilters": { - "description": "Button to clear all filters" + "navStore": "Dépôt", + "@navStore": { + "description": "Bottom navigation - Extension repo tab" }, - "cacheCleanupUnused": "Nettoyer les données inutilisées", - "@cacheCleanupUnused": { - "description": "Action title for cleaning unused entries" + "homeTitle": "Accueil", + "@homeTitle": { + "description": "Home screen title" }, - "trackConvertDitherNone": "Aucun", - "@trackConvertDitherNone": { - "description": "Lossless conversion dither option with no dithering applied" + "homeSubtitle": "Collez une URL prise en charge ou effectuez une recherche par nom", + "@homeSubtitle": { + "description": "Subtitle shown below search box" }, - "libraryTracksUnit": "{count, plural, =1{piste} other{pistes}}", - "@libraryTracksUnit": { - "description": "Unit label for tracks count (without the number itself)", + "homeEmptyTitle": "Aucun moteur de recherche pour le moment", + "@homeEmptyTitle": { + "description": "Title shown on home when no providers are available yet" + }, + "homeEmptySubtitle": "Installez une extension pour continuer.", + "@homeEmptySubtitle": { + "description": "Subtitle shown on home when no providers are available yet" + }, + "homeSupports": "Prise en charge : URL de titres, d’albums, de playlists et d’artistes", + "@homeSupports": { + "description": "Info text about supported URL types" + }, + "homeRecent": "Récent", + "@homeRecent": { + "description": "Section header for recent searches" + }, + "historyFilterAll": "Tous", + "@historyFilterAll": { + "description": "Filter chip - show all items" + }, + "historyFilterAlbums": "Albums", + "@historyFilterAlbums": { + "description": "Filter chip - show albums only" + }, + "historyFilterSingles": "Titres", + "@historyFilterSingles": { + "description": "Filter chip - show singles only" + }, + "libraryRecentlyAdded": "Recently Added", + "libraryDownloads": "Downloads", + "libraryNoActiveDownloads": "No active downloads", + "librarySearchHint": "Search your library", + "libraryEmptyCollection": "Your music will appear here", + "historySearchHint": "Historique de recherche...", + "@historySearchHint": { + "description": "Search bar placeholder in history" + }, + "settingsTitle": "Paramètres", + "@settingsTitle": { + "description": "Settings screen title" + }, + "settingsDownload": "Télécharger", + "@settingsDownload": { + "description": "Settings section - download options" + }, + "settingsAppearance": "Apparence", + "@settingsAppearance": { + "description": "Settings section - visual customization" + }, + "settingsExtensions": "Extensions", + "@settingsExtensions": { + "description": "Settings section - extension management" + }, + "settingsAbout": "À propos", + "@settingsAbout": { + "description": "Settings section - app info" + }, + "downloadTitle": "Télécharger", + "@downloadTitle": { + "description": "Download settings page title" + }, + "downloadAskQualitySubtitle": "Afficher le sélecteur de qualité pour chaque téléchargement", + "@downloadAskQualitySubtitle": { + "description": "Subtitle for ask quality toggle" + }, + "downloadFilenameFormat": "Nom du fichier", + "@downloadFilenameFormat": { + "description": "Setting for output filename pattern" + }, + "downloadSingleFilenameFormat": "Format de nom de fichier unique", + "@downloadSingleFilenameFormat": { + "description": "Setting for output filename pattern for singles/EPs" + }, + "downloadSingleFilenameFormatDescription": "Modèle de nom de fichier pour les singles et les EP. Utilise les mêmes balises que le format album.", + "@downloadSingleFilenameFormatDescription": { + "description": "Subtitle description for single filename format setting" + }, + "downloadFolderOrganization": "Organisation du dossier", + "@downloadFolderOrganization": { + "description": "Title of the folder organization picker bottom sheet" + }, + "appearanceTitle": "Apparence", + "@appearanceTitle": { + "description": "Appearance settings page title" + }, + "appearanceThemeSystem": "Système", + "@appearanceThemeSystem": { + "description": "Follow system theme" + }, + "appearanceThemeLight": "Clair", + "@appearanceThemeLight": { + "description": "Light theme" + }, + "appearanceThemeDark": "Sombre", + "@appearanceThemeDark": { + "description": "Dark theme" + }, + "appearanceDynamicColor": "Couleur dynamique", + "@appearanceDynamicColor": { + "description": "Material You dynamic colors" + }, + "appearanceDynamicColorSubtitle": "Utilisez les couleurs de votre fond d'écran", + "@appearanceDynamicColorSubtitle": { + "description": "Subtitle for dynamic color" + }, + "appearanceHistoryView": "Historique", + "@appearanceHistoryView": { + "description": "Layout style for history" + }, + "appearanceHistoryViewList": "Liste", + "@appearanceHistoryViewList": { + "description": "List layout option" + }, + "appearanceHistoryViewGrid": "Grille", + "@appearanceHistoryViewGrid": { + "description": "Grid layout option" + }, + "optionsPrimaryProvider": "Fournisseur principal", + "@optionsPrimaryProvider": { + "description": "Main search provider setting" + }, + "optionsPrimaryProviderSubtitle": "Service permettant d'effectuer une recherche par titre de morceau ou d'album", + "@optionsPrimaryProviderSubtitle": { + "description": "Subtitle for primary provider" + }, + "optionsUsingExtension": "Utilisation de l'extension : {extensionName}", + "@optionsUsingExtension": { + "description": "Shows active extension name", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "optionsDefaultSearchTab": "Onglet de recherche par défaut", + "@optionsDefaultSearchTab": { + "description": "Title for the preferred default search tab setting" + }, + "optionsDefaultSearchTabSubtitle": "Choisissez l'onglet qui s'ouvre en premier pour les nouveaux résultats de recherche.", + "@optionsDefaultSearchTabSubtitle": { + "description": "Subtitle for the preferred default search tab setting" + }, + "optionsAutoFallback": "Récupération automatique", + "@optionsAutoFallback": { + "description": "Auto-retry with other services" + }, + "optionsAutoFallbackSubtitle": "Essayez d'autres services si le téléchargement échoue", + "@optionsAutoFallbackSubtitle": { + "description": "Subtitle for auto fallback" + }, + "optionsEmbedLyrics": "Intégrer les paroles", + "@optionsEmbedLyrics": { + "description": "Embed lyrics in audio files" + }, + "optionsEmbedLyricsSubtitle": "Enregistrez les paroles synchronisées avec vos morceaux téléchargés", + "@optionsEmbedLyricsSubtitle": { + "description": "Subtitle for embed lyrics" + }, + "optionsReplayGain": "ReplayGain", + "@optionsReplayGain": { + "description": "Title for ReplayGain setting toggle" + }, + "optionsReplayGainSubtitleOn": "Analyser le niveau sonore et intégrer des balises ReplayGain (EBU R128)", + "@optionsReplayGainSubtitleOn": { + "description": "Subtitle when ReplayGain is enabled" + }, + "optionsReplayGainSubtitleOff": "Désactivé : aucune balise de normalisation du volume", + "@optionsReplayGainSubtitleOff": { + "description": "Subtitle when ReplayGain is disabled" + }, + "trackReplayGain": "Réanalyser ReplayGain", + "@trackReplayGain": { + "description": "Three-dot menu option to scan loudness and write ReplayGain tags" + }, + "trackReplayGainScanning": "Analyse du volume sonore...", + "@trackReplayGainScanning": { + "description": "Snackbar/progress message while scanning ReplayGain for a single track" + }, + "trackReplayGainSuccess": "Ajout des balises ReplayGain", + "@trackReplayGainSuccess": { + "description": "Snackbar message after ReplayGain tags written for a single track" + }, + "trackReplayGainFailed": "Impossible d'ajouter les balises ReplayGain", + "@trackReplayGainFailed": { + "description": "Snackbar message when ReplayGain scan/write fails" + }, + "selectionReplayGainCount": "ReplayGain ({count})", + "@selectionReplayGainCount": { + "description": "Batch selection action button label for ReplayGain", "placeholders": { "count": { "type": "int" } } }, - "folderOrganizationNone": "Aucune organisation", - "@folderOrganizationNone": { - "description": "Folder option - flat structure" - }, - "@storeRepoUrlHint": { - "description": "Hint/placeholder for the repository URL input field" - }, - "@trackConvertConfirmTitle": { - "description": "Confirmation dialog title" - }, - "@extensionPatternsCount": { - "description": "URL patterns count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "audioAnalysisContainer": "Conteneur", - "@audioAnalysisContainer": { - "description": "Audio container metric label" - }, - "libraryAutoScanOff": "Désactivée", - "@libraryAutoScanOff": { - "description": "Auto scan disabled" - }, - "shareSheetLinkCopied": "Lien {service} copié", - "@shareSheetLinkCopied": { - "description": "Snackbar after copying a cross-service link", - "placeholders": { - "service": {} - } - }, - "providerPriorityFallbackExtensionsDescription": "Sélectionnez les extensions de téléchargement installées qui peuvent être utilisées lors du basculement automatique.", - "@providerPriorityFallbackExtensionsDescription": { - "description": "Section description for extension fallback selection" + "replayGainBatchConfirmTitle": "Ajouter ReplayGain", + "@replayGainBatchConfirmTitle": { + "description": "Title of the batch ReplayGain confirmation dialog" }, + "replayGainBatchConfirmMessage": "Analyser le niveau sonore et ajouter des balises ReplayGain à {count} piste(s) ?", "@replayGainBatchConfirmMessage": { "description": "Message of the batch ReplayGain confirmation dialog", "placeholders": { @@ -81,75 +281,12 @@ } } }, - "@extensionsHomeFeedUse": { - "description": "Extensions page - subtitle for a specific extension home feed option", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "selectionShareCount": "Partager {count} {count, plural, =1{titre} other{titres}}", - "@selectionShareCount": { - "description": "Share button text with count in selection mode", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@storeExtensionsCount": { - "description": "Store extension result count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@logSearchHint": { - "description": "Log search placeholder" - }, - "@audioAnalysisSamples": { - "description": "Total samples metric label" - }, - "trackCoverReplace": "Remplacer la pochette", - "@trackCoverReplace": { - "description": "Button label for replacing selected cover art" - }, - "@discographyAddedToQueue": { - "description": "Snackbar - tracks added from discography", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadAppleElrcWordSyncEnabled": "Conservation des horodatages bruts mot à mot", - "@downloadAppleElrcWordSyncEnabled": { - "description": "Subtitle when Apple Music eLRC word sync is enabled" - }, - "@nowPlayingDetails": { - "description": "Menu item and section title for track metadata details" - }, - "@trackGenre": { - "description": "Metadata label - music genre" - }, - "recentTypeSong": "Titre", - "@recentTypeSong": { - "description": "Recent access item type - song/track" - }, - "logShareLogs": "Partager les journaux", - "@logShareLogs": { - "description": "Share button tooltip" - }, - "@storeFilterLyrics": { - "description": "Repo filter - lyrics providers" - }, - "extensionsInstallButton": "Installer l'extension", - "@extensionsInstallButton": { - "description": "Button to install extension from file" + "replayGainBatchAnalyzing": "Analyse de ReplayGain...", + "@replayGainBatchAnalyzing": { + "description": "Progress dialog title while batch scanning ReplayGain" }, "replayGainBatchSuccess": "ReplayGain ajouté à {success} de {total} pistes", + "replayGainUnsupportedDecoder": "Certaines pistes n'ont pas pu être analysées car leur codec audio n'est pas pris en charge par le décodeur ReplayGain. Leurs fichiers n'ont pas été modifiés.", "@replayGainBatchSuccess": { "description": "Snackbar after batch ReplayGain completes", "placeholders": { @@ -161,548 +298,536 @@ } } }, - "nowPlayingMinimize": "Réduire", - "@nowPlayingMinimize": { - "description": "Tooltip for minimizing the now playing screen" + "optionsArtistTagMode": "Mode « Artiste »", + "@optionsArtistTagMode": { + "description": "Setting title for how artist metadata is written into files" }, - "logIssueNetworkErrorSuggestion": "Vérifiez votre connexion Internet", - "@logIssueNetworkErrorSuggestion": { - "description": "Diagnostic badge suggestion for generic network errors" + "optionsArtistTagModeDescription": "Choisissez comment les noms de plusieurs artistes doivent apparaître dans les balises intégrées.", + "@optionsArtistTagModeDescription": { + "description": "Bottom-sheet description for artist tag mode setting" }, - "extensionsNoExtensions": "Aucune extension installée", - "@extensionsNoExtensions": { - "description": "Empty state - no extensions" + "optionsArtistTagModeJoined": "Valeur unique combinée", + "@optionsArtistTagModeJoined": { + "description": "Artist tag mode option that joins multiple artists into one value" }, - "@cacheRefresh": { - "description": "Tooltip for refresh button on cache management page" + "optionsArtistTagModeJoinedSubtitle": "Indiquez une seule valeur ARTIST, par exemple « Artiste A, Artiste B », pour garantir une compatibilité maximale avec les lecteurs.", + "@optionsArtistTagModeJoinedSubtitle": { + "description": "Subtitle for joined artist tag mode" }, - "@snackbarHistoryCleared": { - "description": "Snackbar - history deleted" + "optionsArtistTagModeSplitVorbis": "Diviser les balises pour FLAC/Opus", + "@optionsArtistTagModeSplitVorbis": { + "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" }, - "cueSplitFailed": "Échec de la division CUE", - "@cueSplitFailed": { - "description": "Snackbar when CUE split fails" - }, - "trackConvertLosslessSuffix": "Sans perte", - "@trackConvertLosslessSuffix": { - "description": "Suffix used in converted lossless quality labels" - }, - "homeSubtitle": "Collez une URL prise en charge ou effectuez une recherche par nom", - "@homeSubtitle": { - "description": "Subtitle shown below search box" - }, - "selectionBatchConvertConfirmMessageLossless": "Convertir {count} {count, plural, =1{titre} other{titres}} au format {format} ? (Sans perte — aucune perte de qualité)\n\nLes fichiers d'origine seront supprimés après la conversion.", - "@selectionBatchConvertConfirmMessageLossless": { - "description": "Confirmation dialog message for lossless batch conversion", - "placeholders": { - "count": { - "type": "int" - }, - "format": { - "type": "String" - } - } - }, - "@extensionVerificationHelpMessageManual": { - "description": "Dialog message when automatic browser launch for verification fails" - }, - "queueRateLimitMessage": "Ce titre est peut-être encore disponible. Patientez quelques minutes, réduisez le nombre de téléchargements simultanés, puis réessayez.", - "@queueRateLimitMessage": { - "description": "Explanation shown on a failed queue item when the download service rate limits requests" - }, - "searchSortDateOldest": "Date de sortie (la plus ancienne)", - "@searchSortDateOldest": { - "description": "Sort option - oldest release first" - }, - "nowPlayingShuffleOn": "Lecture aléatoire activée", - "@nowPlayingShuffleOn": { - "description": "Tooltip when shuffle mode is enabled" - }, - "sectionColor": "Couleur", - "@sectionColor": { - "description": "Settings section header" - }, - "@providerPriorityFallbackExtensionsHint": { - "description": "Hint below the extension fallback selection list" - }, - "cacheCoverImage": "Cache des images de couverture", - "@cacheCoverImage": { - "description": "Cache item title for persistent cover images" - }, - "@navSettings": { - "description": "Bottom navigation - Settings tab" - }, - "@trackCoverReplaceNotice": { - "description": "Notice shown when a new cover has been selected but not saved yet" - }, - "cueSplitConfirmTitle": "Album CUE fractionné", - "@cueSplitConfirmTitle": { - "description": "CUE split confirmation dialog title" - }, - "@trackDeleteConfirmMessage": { - "description": "Delete confirmation message" - }, - "cacheClearSuccess": "Effacé : {target}", - "@cacheClearSuccess": { - "description": "Snackbar after clearing selected cache", - "placeholders": { - "target": { - "type": "String" - } - } - }, - "editMetadataFieldCover": "Illustration de couverture", - "@editMetadataFieldCover": { - "description": "Chip label for cover art field in auto-fill selector" - }, - "snackbarSelectExtFile": "Veuillez sélectionner un fichier .spotiflac-ext", - "@snackbarSelectExtFile": { - "description": "Snackbar - wrong file type selected" - }, - "libraryFilterFormat": "Format", - "@libraryFilterFormat": { - "description": "Filter section - file format" - }, - "@downloadLossyAac": { - "description": "Lossy format option - AAC in M4A container at 320kbps" - }, - "@setupNext": { - "description": "Next button text" - }, - "@releaseTypeSingle": { - "description": "Badge label for single releases" - }, - "@optionsDefaultSearchTab": { - "description": "Title for the preferred default search tab setting" - }, - "trackConvertLosslessOutputWithCap": "Sortie sans perte avec une limite de {quality}", - "@trackConvertLosslessOutputWithCap": { - "description": "Hint shown when lossless conversion will cap bit depth or sample rate", - "placeholders": { - "quality": { - "type": "String" - } - } - }, - "bulkDownloadSelectPlaylists": "Sélectionnez les playlists à télécharger", - "@bulkDownloadSelectPlaylists": { - "description": "Button label when no playlists are selected for download" - }, - "artistOptionAddToFavorites": "Ajouter aux Artistes Favoris", - "@artistOptionAddToFavorites": { - "description": "Action label - add artist to favorite artists" - }, - "@timeJustNow": { - "description": "Relative time - less than a minute ago" - }, - "downloadLossyOpus256": "Opus 256 kbps", - "@downloadLossyOpus256": { - "description": "Lossy format option - Opus 256kbps" - }, - "discographySinglesOnlySubtitle": "{count} titres issus de {albumCount} singles", - "@discographySinglesOnlySubtitle": { - "description": "Subtitle showing singles tracks count", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } + "optionsArtistTagModeSplitVorbisSubtitle": "Créez une balise « artiste » par artiste pour les fichiers FLAC et Opus ; les fichiers MP3 et M4A restent regroupés.", + "@optionsArtistTagModeSplitVorbisSubtitle": { + "description": "Subtitle for split Vorbis artist tag mode" }, "optionsExtensionStore": "Référentiel d'extensions", "@optionsExtensionStore": { "description": "Show/hide repo tab" }, - "libraryDownloadsHistoryExcluded": "{count} dans l'historique des téléchargements (exclu de la liste)", - "@libraryDownloadsHistoryExcluded": { - "description": "Library count note for downloaded history items excluded from the local list", - "placeholders": { - "count": { - "type": "int" - } - } + "optionsExtensionStoreSubtitle": "Afficher l'onglet « Dépôt » dans le menu de navigation", + "@optionsExtensionStoreSubtitle": { + "description": "Subtitle for extension repo toggle" }, - "@errorUrlFetchFailed": { - "description": "Error message - generic URL fetch failure" + "optionsCheckUpdates": "Vérifier les mises à jour", + "@optionsCheckUpdates": { + "description": "Auto update check toggle" }, - "@trackOptionAddToWishlist": { - "description": "Bottom sheet action label - add track to wishlist" + "optionsCheckUpdatesSubtitle": "M'avertir lorsqu'une nouvelle version est disponible", + "@optionsCheckUpdatesSubtitle": { + "description": "Subtitle for update check" }, - "discographySinglesOnly": "Uniquement les singles et les EP", - "@discographySinglesOnly": { - "description": "Option - download only singles" + "optionsUpdateChannel": "Chaîne de mise à jour", + "@optionsUpdateChannel": { + "description": "Stable vs preview releases" }, - "@downloadSongLinkRegionDesc": { - "description": "Description in SongLink region picker" + "optionsUpdateChannelStable": "Uniquement les versions stables", + "@optionsUpdateChannelStable": { + "description": "Only stable updates" }, - "notifEmbeddingMetadata": "Intégration des métadonnées...", - "@notifEmbeddingMetadata": { - "description": "Notification body while embedding metadata into a downloaded track" + "optionsUpdateChannelPreview": "Accédez aux versions préliminaires", + "@optionsUpdateChannelPreview": { + "description": "Include beta/preview updates" }, - "@settingsLocalLibrarySubtitle": { - "description": "Subtitle for local library settings" + "optionsUpdateChannelWarning": "La version préliminaire peut contenir des bogues ou des fonctionnalités incomplètes", + "@optionsUpdateChannelWarning": { + "description": "Warning about preview channel" }, - "@downloadLocationSubtitle": { - "description": "Subtitle shown in the download location picker sheet" + "optionsClearHistory": "Effacer l'historique des téléchargements", + "@optionsClearHistory": { + "description": "Delete all download history" }, - "trackConvertOriginalQuality": "Qualité d'origine", - "@trackConvertOriginalQuality": { - "description": "Label when no bit depth or sample rate cap is applied during lossless conversion" + "optionsClearHistorySubtitle": "Supprimez tous les morceaux téléchargés de l'historique", + "@optionsClearHistorySubtitle": { + "description": "Subtitle for clear history" }, - "nowPlayingTabLyrics": "Paroles", - "@nowPlayingTabLyrics": { - "description": "Tab label for the lyrics view" + "optionsDetailedLogging": "Journalisation détaillée", + "@optionsDetailedLogging": { + "description": "Enable verbose logs for debugging" }, - "selectionConvertCount": "Convertir {count} {count, plural, =1{titre} other{titres}}", - "@selectionConvertCount": { - "description": "Convert button text with count in selection mode", - "placeholders": { - "count": { - "type": "int" - } - } + "optionsDetailedLoggingOn": "Des journaux détaillés sont enregistrés", + "@optionsDetailedLoggingOn": { + "description": "Status when logging enabled" }, - "@extensionsInstalledSection": { - "description": "Section header - installed extensions" + "optionsDetailedLoggingOff": "Activer pour les rapports de bogues", + "@optionsDetailedLoggingOff": { + "description": "Status when logging disabled" }, - "@downloadNetworkCompatibilityModeDisabled": { - "description": "Subtitle when network compatibility mode is off" + "extensionsTitle": "Extensions", + "@extensionsTitle": { + "description": "Extensions page title" }, - "nowPlayingShuffleLibrary": "Lecture aléatoire de la bibliothèque", - "@nowPlayingShuffleLibrary": { - "description": "Button label to shuffle and play the entire local library" + "extensionsDisabled": "Désactivée", + "@extensionsDisabled": { + "description": "Extension status - inactive" }, - "trackReEnrichFieldCover": "Illustration de couverture", - "@trackReEnrichFieldCover": { - "description": "Checkbox label for cover art field in re-enrich" - }, - "tutorialExtensionsTip3": "Connect accounts when required and keep extensions up to date", - "@tutorialExtensionsTip3": { - "description": "Tutorial extensions tip 3" - }, - "@cacheCleanupUnusedDesc": { - "description": "Description of what cleanup unused data does" - }, - "a11yOpenAlbum": "Ouvrir l'album {albumName}", - "@a11yOpenAlbum": { - "description": "Accessibility label for opening an album", - "placeholders": { - "albumName": { - "type": "String" - } - } - }, - "@settingsLyrics": { - "description": "Settings menu item - lyrics settings" - }, - "nowPlayingQueueEmpty": "La file d'attente est vide", - "@nowPlayingQueueEmpty": { - "description": "Empty state when the playback queue has no items" - }, - "@settingsDownload": { - "description": "Settings section - download options" - }, - "notifTracksDownloadedSuccess": "{count, plural, =1{1 piste téléchargée avec succès} other{{count} pistes téléchargées avec succès}}", - "@notifTracksDownloadedSuccess": { - "description": "Notification body for queue complete - how many tracks were downloaded", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storeCategoryDownload": "Télécharger", - "@storeCategoryDownload": { - "description": "Store extension category - download" - }, - "aboutTelegramChannel": "Chaîne Telegram", - "@aboutTelegramChannel": { - "description": "Link to Telegram channel" - }, - "@downloadedAlbumDiscHeader": { - "description": "Header for disc separator in multi-disc albums", - "placeholders": { - "discNumber": { - "type": "int", - "example": "1" - } - } - }, - "@recentEmpty": { - "description": "Empty state text for recent access list" - }, - "@backupRestoreConfirmMessage": { - "description": "Confirmation dialog message before restoring a backup" - }, - "@shareSheetCopyLink": { - "description": "Tooltip for copying a cross-service link" - }, - "regionCountryID": "Indonésie", - "@regionCountryID": { - "description": "Country name for SongLink region picker" - }, - "@libraryInLibrary": { - "description": "Badge shown on tracks that exist in local library" - }, - "extensionPostProcessingHooks": "Crochets de post-traitement", - "@extensionPostProcessingHooks": { - "description": "Capability - post-processing" - }, - "@setupGrantPermission": { - "description": "Button to request permission" - }, - "storeFilterDownload": "Télécharger", - "@storeFilterDownload": { - "description": "Repo filter - download providers" - }, - "@collectionAddToPlaylist": { - "description": "Action to add a track to user playlist" - }, - "@discographyFailedToFetch": { - "description": "Error - some albums failed to load" - }, - "@updateWhatsNew": { - "description": "Changelog section title" - }, - "@setupLanguageDescription": { - "description": "Description for the language selection step in setup" - }, - "dialogDeleteSelectedTitle": "Supprimer la sélection", - "@dialogDeleteSelectedTitle": { - "description": "Dialog title - delete selected items" - }, - "trackCoverPick": "Choisir une pochette", - "@trackCoverPick": { - "description": "Button label for selecting cover art" - }, - "@collectionCreatePlaylist": { - "description": "Action to create a new playlist" - }, - "selectionBatchConvertSuccess": "{success} pistes sur {total} ont été converties au format {format}", - "@selectionBatchConvertSuccess": { - "description": "Snackbar after batch conversion completes", - "placeholders": { - "success": { - "type": "int" - }, - "total": { - "type": "int" - }, - "format": { - "type": "String" - } - } - }, - "qualityHiResFlacMax": "FLAC haute résolution Max", - "@qualityHiResFlacMax": { - "description": "Quality option - maximum resolution FLAC" - }, - "audioAnalysisStereo": "Stéréo", - "@audioAnalysisStereo": { - "description": "Audio channel layout label - stereo" - }, - "backupExportButton": "Créer un fichier de sauvegarde", - "@backupExportButton": { - "description": "Button to create and share a backup file" - }, - "settingsApp": "Application", - "@settingsApp": { - "description": "Settings menu item - app settings" - }, - "clickableInformationUnavailable": "Informations sur {type} non disponibles", - "@clickableInformationUnavailable": { - "description": "Snackbar shown when clickable metadata cannot open a destination", - "placeholders": { - "type": { - "type": "String" - } - } - }, - "@logFilterLevel": { - "description": "Filter by log level" - }, - "sectionTheme": "Thème", - "@sectionTheme": { - "description": "Settings section header" - }, - "@extensionActionFailed": { - "description": "Fallback error when an extension action fails without details" - }, - "@downloadAppleElrcWordSync": { - "description": "Setting for preserving Apple Music word-by-word eLRC timestamps" - }, - "@extensionsNoCustomSearch": { - "description": "Empty state - no search providers" - }, - "@collectionPlaylistRemoveCover": { - "description": "Bottom sheet action to remove custom cover image from a playlist" - }, - "@tutorialWelcomeDesc": { - "description": "Tutorial welcome page description" - }, - "@tutorialSearchDesc": { - "description": "Tutorial search page description" - }, - "collectionAddedToWishlist": "« {trackName} » a été ajouté à la liste de souhaits", - "@collectionAddedToWishlist": { - "description": "Snackbar after adding track to wishlist", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "logAffectedDomains": "Concerne : {domains}", - "@logAffectedDomains": { - "description": "Affected domains in log issue analysis", - "placeholders": { - "domains": { - "type": "String" - } - } - }, - "@folderOrganizationByArtistSubtitle": { - "description": "Subtitle for artist folder option" - }, - "errorNoTracksFound": "Aucun titre trouvé", - "@errorNoTracksFound": { - "description": "Error - search returned no results" - }, - "providerPriorityTitle": "Priorité accordée aux prestataires", - "@providerPriorityTitle": { - "description": "Provider priority page title" - }, - "@notifUpdateReadyBody": { - "description": "Notification body when app update is ready to install", + "extensionsVersion": "Version {version}", + "@extensionsVersion": { + "description": "Extension version display", "placeholders": { "version": { "type": "String" } } }, - "@settingsExtensions": { - "description": "Settings section - extension management" + "extensionsUninstall": "Désinstaller", + "@extensionsUninstall": { + "description": "Uninstall extension button" }, - "trackDeleteConfirmTitle": "Supprimer de l'appareil ?", - "@trackDeleteConfirmTitle": { - "description": "Delete confirmation title" + "storeTitle": "Répertoire des extensions", + "@storeTitle": { + "description": "Repo screen title" }, - "@settingsDownloadNetwork": { - "description": "Setting for network type preference" + "storeSearch": "Recherche d'extensions...", + "@storeSearch": { + "description": "Repo search placeholder" }, - "downloadProvidersNoneEnabled": "Aucun fournisseur n'est activé", - "@downloadProvidersNoneEnabled": { - "description": "Shown when no lyrics providers are active" + "storeInstall": "Installer", + "@storeInstall": { + "description": "Install extension button" }, - "@homeEmptySubtitle": { - "description": "Subtitle shown on home when no providers are available yet" + "storeInstalled": "Installé", + "@storeInstalled": { + "description": "Already installed badge" }, - "trackReEnrichFieldBasicTags": "Album, Album Artiste", - "@trackReEnrichFieldBasicTags": { - "description": "Checkbox label for basic tags in re-enrich (title/artist are never overwritten)" + "storeUpdate": "Mettre à jour", + "@storeUpdate": { + "description": "Update available button" }, - "@audioAnalysisSpectralCutoff": { - "description": "Estimated spectral cutoff metric label" + "aboutTitle": "À propos", + "@aboutTitle": { + "description": "About page title" }, - "@logClearLogsTitle": { - "description": "Clear logs dialog title" + "aboutContributors": "Contributeurs", + "@aboutContributors": { + "description": "Section for contributors" }, - "storageModeSafSubtitle": "Choisissez n'importe quel dossier, y compris la carte SD", - "@storageModeSafSubtitle": { - "description": "Subtitle for SAF storage mode" + "aboutMobileDeveloper": "Développeur de la version mobile", + "@aboutMobileDeveloper": { + "description": "Role description for mobile dev" }, - "@notifUpdateProgress": { - "description": "Notification body showing update download progress", + "aboutOriginalCreator": "Créateur de la version originale de SpotiFLAC", + "@aboutOriginalCreator": { + "description": "Role description for original creator" + }, + "aboutLogoArtist": "Le talentueux artiste qui a créé le magnifique logo de notre application !", + "@aboutLogoArtist": { + "description": "Role description for logo artist" + }, + "aboutTranslators": "Traducteurs", + "@aboutTranslators": { + "description": "Section for translators" + }, + "aboutSpecialThanks": "Remerciements particuliers", + "@aboutSpecialThanks": { + "description": "Section for special thanks" + }, + "aboutLinks": "Liens", + "@aboutLinks": { + "description": "Section for external links" + }, + "aboutMobileSource": "Code source pour mobile", + "@aboutMobileSource": { + "description": "Link to mobile GitHub repo" + }, + "aboutPCSource": "Code source pour PC", + "@aboutPCSource": { + "description": "Link to PC GitHub repo" + }, + "aboutKeepAndroidOpen": "Garder Android ouvert", + "@aboutKeepAndroidOpen": { + "description": "Link to Keep Android Open campaign website" + }, + "aboutReportIssue": "Signaler un problème", + "@aboutReportIssue": { + "description": "Link to report bugs" + }, + "aboutReportIssueSubtitle": "Signalez tout problème que vous rencontrez", + "@aboutReportIssueSubtitle": { + "description": "Subtitle for report issue" + }, + "aboutFeatureRequest": "Demande de fonctionnalité", + "@aboutFeatureRequest": { + "description": "Link to suggest features" + }, + "aboutFeatureRequestSubtitle": "Proposez de nouvelles fonctionnalités pour l'application", + "@aboutFeatureRequestSubtitle": { + "description": "Subtitle for feature request" + }, + "aboutTelegramChannel": "Chaîne Telegram", + "@aboutTelegramChannel": { + "description": "Link to Telegram channel" + }, + "aboutTelegramChannelSubtitle": "Annonces et mises à jour", + "@aboutTelegramChannelSubtitle": { + "description": "Subtitle for Telegram channel" + }, + "aboutTelegramChat": "Communauté Telegram", + "@aboutTelegramChat": { + "description": "Link to Telegram chat group" + }, + "aboutTelegramChatSubtitle": "Discutez avec d'autres utilisateurs", + "@aboutTelegramChatSubtitle": { + "description": "Subtitle for Telegram chat" + }, + "aboutSocial": "Réseaux sociaux", + "@aboutSocial": { + "description": "Section for social links" + }, + "aboutApp": "Application", + "@aboutApp": { + "description": "Section for app info" + }, + "aboutVersion": "Version", + "@aboutVersion": { + "description": "Version info label" + }, + "aboutBinimumDesc": "Créateur de QQDL et de l'API HiFi. Ce projet a contribué à mettre en place la prise en charge des téléchargements sans perte.", + "@aboutBinimumDesc": { + "description": "Credit description for binimum" + }, + "aboutSachinsenalDesc": "Le créateur du projet HiFi original. Une base pour l'intégration de sources sans perte.", + "@aboutSachinsenalDesc": { + "description": "Credit description for sachinsenal0x64" + }, + "aboutUnituneDesc": "Résolveur de liens musicaux open source développé par Flaze, utilisé pour la correspondance de repli multiplateforme.", + "@aboutUnituneDesc": { + "description": "Credit for the UniTune resolver" + }, + "aboutMusicBrainzDesc": "Base de données musicale ouverte gérée par MetaBrainz et sa communauté, utilisée pour enregistrer des références croisées.", + "@aboutMusicBrainzDesc": { + "description": "Credit for the MusicBrainz database" + }, + "aboutSquiglyDesc": "Service de liens musicaux universel développé par Liam Macmillan, utilisé comme solution de secours finale pour la résolution multiplateforme.", + "@aboutSquiglyDesc": { + "description": "Credit for the Squigly resolver" + }, + "aboutAppDescription": "Recherchez des métadonnées musicales, gérez les extensions et organisez votre bibliothèque.", + "@aboutAppDescription": { + "description": "App description in header card" + }, + "artistAlbums": "Albums", + "@artistAlbums": { + "description": "Section header for artist albums" + }, + "artistSingles": "Singles & EPs", + "@artistSingles": { + "description": "Section header for singles/EPs" + }, + "artistCompilations": "Compilations", + "@artistCompilations": { + "description": "Section header for compilations" + }, + "artistPopular": "Populaire", + "@artistPopular": { + "description": "Section header for popular/top tracks" + }, + "artistMonthlyListeners": "{count} auditeurs mensuels", + "@artistMonthlyListeners": { + "description": "Monthly listener count display", "placeholders": { - "received": { - "type": "String" - }, - "total": { - "type": "String" - }, - "percentage": { - "type": "int" + "count": { + "type": "String", + "description": "Formatted listener count" } } }, - "downloadUsePrimaryArtistOnlyEnabled": "Les noms des artistes mis en avant ont été supprimés du nom du dossier (par exemple : Justin Bieber, Quavo → Justin Bieber)", - "@downloadUsePrimaryArtistOnlyEnabled": { - "description": "Subtitle when primary artist only is enabled" + "trackMetadataService": "Service", + "@trackMetadataService": { + "description": "Metadata field - download service used" }, - "notifScanningLibrary": "Numérisation de la bibliothèque locale", - "@notifScanningLibrary": { - "description": "Notification title while scanning local library" + "trackMetadataPlay": "Lire", + "@trackMetadataPlay": { + "description": "Action button - play track" }, - "@metadataProvidersSubtitle": { - "description": "Subtitle for metadata provider priority item" + "trackMetadataShare": "Partager", + "@trackMetadataShare": { + "description": "Action button - share track" + }, + "trackMetadataDelete": "Supprimer", + "@trackMetadataDelete": { + "description": "Action button - delete track" + }, + "setupGrantPermission": "Accorder l'autorisation", + "@setupGrantPermission": { + "description": "Button to request permission" + }, + "setupSkip": "Ignorer pour le moment", + "@setupSkip": { + "description": "Skip current step button" + }, + "setupStorageAccessRequired": "Accès au stockage requis", + "@setupStorageAccessRequired": { + "description": "Title when storage access needed" + }, + "setupStorageAccessMessageAndroid11": "Depuis Android 11, l'autorisation « Accès à tous les fichiers » est requise pour enregistrer des fichiers dans le dossier de téléchargement de votre choix.", + "@setupStorageAccessMessageAndroid11": { + "description": "Android 11+ specific explanation" + }, + "setupOpenSettings": "Ouvrir les paramètres", + "@setupOpenSettings": { + "description": "Button to open system settings" + }, + "setupPermissionDeniedMessage": "Autorisation refusée. Veuillez accorder toutes les autorisations pour continuer.", + "@setupPermissionDeniedMessage": { + "description": "Error when permission denied" + }, + "setupPermissionRequired": "Autorisation {permissionType} requise", + "@setupPermissionRequired": { + "description": "Generic permission required title", + "placeholders": { + "permissionType": { + "type": "String", + "description": "Type of permission (Storage/Notification)" + } + } + }, + "setupPermissionRequiredMessage": "L'autorisation {permissionType} est requise pour profiter pleinement de l'application. Vous pourrez modifier ce paramètre ultérieurement dans les Paramètres.", + "@setupPermissionRequiredMessage": { + "description": "Generic permission required message", + "placeholders": { + "permissionType": { + "type": "String" + } + } + }, + "setupUseDefaultFolder": "Utiliser le dossier par défaut ?", + "@setupUseDefaultFolder": { + "description": "Dialog title for default folder" + }, + "setupNoFolderSelected": "Aucun dossier n'est sélectionné. Souhaitez-vous utiliser le dossier Musique par défaut ?", + "@setupNoFolderSelected": { + "description": "Prompt when no folder selected" + }, + "setupUseDefault": "Utiliser les paramètres par défaut", + "@setupUseDefault": { + "description": "Button to use default folder" + }, + "setupDownloadLocationTitle": "Emplacement de téléchargement", + "@setupDownloadLocationTitle": { + "description": "Download location dialog title" + }, + "setupDownloadLocationIosMessage": "Sous iOS, les fichiers téléchargés sont enregistrés dans le dossier « Documents » de l'application. Vous pouvez y accéder via l'application Fichiers.", + "@setupDownloadLocationIosMessage": { + "description": "iOS-specific folder info" + }, + "setupAppDocumentsFolder": "Dossier « Documents » de l'application", + "@setupAppDocumentsFolder": { + "description": "iOS documents folder option" + }, + "setupAppDocumentsFolderSubtitle": "Recommandé - accessible via l'application Fichiers", + "@setupAppDocumentsFolderSubtitle": { + "description": "Subtitle for documents folder" + }, + "setupChooseFromFiles": "Sélectionnez un fichier", + "@setupChooseFromFiles": { + "description": "iOS file picker option" + }, + "setupChooseFromFilesSubtitle": "Sélectionnez iCloud ou un autre emplacement", + "@setupChooseFromFilesSubtitle": { + "description": "Subtitle for file picker" + }, + "setupIosEmptyFolderWarning": "Limitation iOS : les dossiers vides ne peuvent pas être sélectionnés. Choisissez un dossier contenant au moins un fichier.", + "@setupIosEmptyFolderWarning": { + "description": "iOS folder selection warning" + }, + "setupIcloudNotSupported": "iCloud Drive n'est pas pris en charge. Veuillez utiliser le dossier « Documents » de l'application.", + "@setupIcloudNotSupported": { + "description": "Error when user selects iCloud Drive on iOS" + }, + "setupDownloadInFlac": "Télécharger de la musique en qualité sans perte et haute résolution", + "@setupDownloadInFlac": { + "description": "App tagline in setup" + }, + "setupStorageGranted": "Autorisation de stockage accordée !", + "@setupStorageGranted": { + "description": "Success message for storage permission" + }, + "setupStorageRequired": "Autorisation de stockage requise", + "@setupStorageRequired": { + "description": "Title when storage permission needed" + }, + "setupStorageDescription": "SpotiFLAC a besoin d'une autorisation d'accès au stockage pour enregistrer vos fichiers musicaux téléchargés.", + "@setupStorageDescription": { + "description": "Explanation for storage permission" + }, + "setupNotificationGranted": "Autorisation de notification accordée !", + "@setupNotificationGranted": { + "description": "Success message for notification permission" + }, + "setupNotificationEnable": "Activer les notifications", + "@setupNotificationEnable": { + "description": "Button to enable notifications" + }, + "setupFolderChoose": "Choisissez le dossier de téléchargement", + "@setupFolderChoose": { + "description": "Button to choose folder" + }, + "setupFolderDescription": "Sélectionnez un dossier dans lequel votre musique téléchargée sera enregistrée.", + "@setupFolderDescription": { + "description": "Explanation for folder selection" + }, + "setupSelectFolder": "Sélectionner un dossier", + "@setupSelectFolder": { + "description": "Button to select folder" + }, + "setupEnableNotifications": "Activer les notifications", + "@setupEnableNotifications": { + "description": "Button to enable notifications" + }, + "setupNotificationBackgroundDescription": "Recevez des notifications sur la progression et la fin du téléchargement. Cela vous permet de suivre les téléchargements lorsque l'application est en arrière-plan.", + "@setupNotificationBackgroundDescription": { + "description": "Detailed notification explanation" + }, + "setupSkipForNow": "Ignorer pour le moment", + "@setupSkipForNow": { + "description": "Skip button text" + }, + "setupNext": "Suivant", + "@setupNext": { + "description": "Next button text" }, "setupGetStarted": "Démarrer", "@setupGetStarted": { "description": "Final setup button" }, - "libraryFilterQualityCD": "CD (16 bits)", - "@libraryFilterQualityCD": { - "description": "Filter option - CD quality audio" + "setupAllowAccessToManageFiles": "Veuillez cocher la case « Autoriser l'accès pour gérer tous les fichiers » sur l'écran suivant.", + "@setupAllowAccessToManageFiles": { + "description": "Instruction for file access permission" }, - "sectionLayout": "Mise en page", - "@sectionLayout": { - "description": "Settings section header" + "setupLanguageTitle": "Choisir la langue", + "@setupLanguageTitle": { + "description": "Title for the language selection step in setup" }, - "@tooltipLoveAll": { - "description": "Tooltip for the Love All button on album/playlist screens" + "setupLanguageDescription": "Sélectionnez la langue de votre choix pour l'application. Vous pourrez la modifier ultérieurement dans les Paramètres.", + "@setupLanguageDescription": { + "description": "Description for the language selection step in setup" }, - "queueFinalizingDownload": "Téléchargement en cours", - "@queueFinalizingDownload": { - "description": "Accessibility label for a queue item that is finalizing" + "setupLanguageSystemDefault": "Paramètres par défaut du système", + "@setupLanguageSystemDefault": { + "description": "Option to use the system language" }, - "trackConvertActionLabelLossy": "{sourceFormat} → {targetFormat} @ {bitrate}", - "@trackConvertActionLabelLossy": { - "description": "Convert button label for lossy conversion", + "dialogCancel": "Annuler", + "@dialogCancel": { + "description": "Dialog button - cancel action" + }, + "dialogSave": "Sauvegarder", + "@dialogSave": { + "description": "Dialog button - save changes" + }, + "dialogDelete": "Supprimer", + "@dialogDelete": { + "description": "Dialog button - delete item" + }, + "dialogRetry": "Réessayer", + "@dialogRetry": { + "description": "Dialog button - retry action" + }, + "dialogClear": "Effacer", + "@dialogClear": { + "description": "Dialog button - clear items" + }, + "dialogDone": "C'est fait", + "@dialogDone": { + "description": "Dialog button - action completed" + }, + "dialogImport": "Importer", + "@dialogImport": { + "description": "Dialog button - import data" + }, + "dialogDownload": "Télécharger", + "@dialogDownload": { + "description": "Confirm button in Download All dialog" + }, + "previewPlay": "Écouter un aperçu", + "@previewPlay": { + "description": "Tooltip for the button that plays a short track preview snippet" + }, + "previewStop": "Arrêter l'aperçu", + "@previewStop": { + "description": "Tooltip for the button that stops the playing track preview snippet" + }, + "previewUnavailable": "Aperçu indisponible", + "@previewUnavailable": { + "description": "Snackbar shown when a track preview snippet cannot be played" + }, + "dialogDiscard": "Ignorer", + "@dialogDiscard": { + "description": "Dialog button - discard changes" + }, + "dialogRemove": "Supprimer", + "@dialogRemove": { + "description": "Dialog button - remove item" + }, + "dialogUninstall": "Désinstaller", + "@dialogUninstall": { + "description": "Dialog button - uninstall extension" + }, + "dialogDiscardChanges": "Ignorer les modifications ?", + "@dialogDiscardChanges": { + "description": "Dialog title - unsaved changes warning" + }, + "dialogUnsavedChanges": "Vous avez des modifications non enregistrées. Voulez-vous les ignorer ?", + "@dialogUnsavedChanges": { + "description": "Dialog message - unsaved changes" + }, + "dialogClearAll": "Tout effacer", + "@dialogClearAll": { + "description": "Dialog title - clear all items" + }, + "dialogRemoveExtension": "Supprimer l'extension", + "@dialogRemoveExtension": { + "description": "Dialog title - uninstall extension" + }, + "dialogRemoveExtensionMessage": "Êtes-vous sûr de vouloir supprimer cette extension ? Cette action ne peut pas être annulée.", + "@dialogRemoveExtensionMessage": { + "description": "Dialog message - uninstall confirmation" + }, + "dialogUninstallExtension": "Supprimer l'extension ?", + "@dialogUninstallExtension": { + "description": "Dialog title - uninstall extension" + }, + "dialogUninstallExtensionMessage": "Êtes-vous sûr de vouloir supprimer {extensionName} ?", + "@dialogUninstallExtensionMessage": { + "description": "Dialog message - uninstall specific extension", "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "bitrate": { + "extensionName": { "type": "String" } } }, - "extensionsMetadataPriority": "Priorité des métadonnées", - "@extensionsMetadataPriority": { - "description": "Setting - metadata provider order" + "dialogClearHistoryTitle": "Effacer l'historique", + "@dialogClearHistoryTitle": { + "description": "Dialog title - clear download history" }, - "updateCurrent": "Actuel", - "@updateCurrent": { - "description": "Label for current version" + "dialogClearHistoryMessage": "Êtes-vous sûr de vouloir effacer tout l'historique des téléchargements ? Cette action ne peut pas être annulée.", + "@dialogClearHistoryMessage": { + "description": "Dialog message - clear history confirmation" }, - "@aboutFeatureRequest": { - "description": "Link to suggest features" - }, - "@safMigrationSuccess": { - "description": "Snackbar after successfully migrating to SAF" - }, - "backupRestoreConfirmMessage": "Cette opération remplacera vos paramètres actuels, votre historique de téléchargements, vos titres favoris, votre liste de souhaits et vos listes de lecture par le contenu de la sauvegarde. Cette opération est irréversible.", - "@cleanupOrphanedDownloadsNone": { - "description": "Snackbar when no orphans found" - }, - "lyricsProviderNeteaseDesc": "NetEase Cloud Music (idéal pour les titres asiatiques)", - "@lyricsProviderNeteaseDesc": { - "description": "Description for Netease provider" - }, - "libraryScanCancelledSubtitle": "Vous pouvez relancer l'analyse dès que vous êtes prêt.", - "@libraryScanCancelledSubtitle": { - "description": "Library scan status subtitle after cancellation" - }, - "@collectionFavoriteArtists": { - "description": "Custom folder for favorite artists" - }, - "@trackAlbum": { - "description": "Metadata label - album name" + "dialogDeleteSelectedTitle": "Supprimer la sélection", + "@dialogDeleteSelectedTitle": { + "description": "Dialog title - delete selected items" }, "dialogDeleteSelectedMessage": "Supprimer {count} {count, plural, =1{titre} other{titres}} de l'historique ?\n\nCela supprimera également les fichiers du stockage.", "@dialogDeleteSelectedMessage": { @@ -713,811 +838,29 @@ } } }, - "trackReEnrich": "Réenrichir", - "@trackReEnrich": { - "description": "Menu action - re-embed metadata into audio file" - }, - "@lyricsProvidersSaved": { - "description": "Snackbar after saving lyrics provider priority" - }, - "@storageModeSaf": { - "description": "Storage mode option - Storage Access Framework" - }, - "libraryStorageAccessRequired": "Accès au stockage requis", - "@libraryStorageAccessRequired": { - "description": "Dialog title for storage permission" - }, - "@cacheClearAllConfirmTitle": { - "description": "Dialog title before clearing all caches" - }, - "@unknownArtist": { - "description": "Fallback artist name when metadata is missing" - }, - "downloadCreatePlaylistSourceFolderEnabled": "Un sous-dossier est créé pour chaque playlist", - "@downloadCreatePlaylistSourceFolderEnabled": { - "description": "Subtitle when playlist folder is enabled" - }, - "dialogClearHistoryMessage": "Êtes-vous sûr de vouloir effacer tout l'historique des téléchargements ? Cette action ne peut pas être annulée.", - "@dialogClearHistoryMessage": { - "description": "Dialog message - clear history confirmation" - }, - "@sectionData": { - "description": "Settings section header" - }, - "audioAnalysisRms": "RMS", - "@audioAnalysisRms": { - "description": "RMS level metric label" - }, - "downloadFilterContributingEnabled": "Les artistes ayant contribué à l'album ont été supprimés du nom du dossier « Artiste de l'album »", - "@downloadFilterContributingEnabled": { - "description": "Subtitle when contributing artist filter is on" - }, - "timeJustNow": "Il y a quelques instants", - "@extensionCustomUrlHandlingShareHint": { - "description": "Extension detail hint explaining share-to-app URL handling" - }, - "cleanupOrphanedDownloads": "Nettoyage des téléchargements orphelins", - "@cleanupOrphanedDownloads": { - "description": "Button to remove history entries for deleted files" - }, - "@audioAnalysisNoClipping": { - "description": "Displayed when no clipped samples were detected" - }, - "@tutorialWelcomeTitle": { - "description": "Tutorial welcome page title" - }, - "collectionFavoriteArtists": "Artistes Favoris", - "audioAnalysisRescanning": "Réanalyse du fichier audio...", - "@audioAnalysisRescanning": { - "description": "Loading text while audio is being re-analyzed after an explicit refresh" - }, - "logTitle": "Journaux", - "@logTitle": { - "description": "Logs screen title" - }, - "@regionCountryGB": { - "description": "Country name for SongLink region picker" - }, - "@progressFetchingMetadata": { - "description": "Progress indicator - loading track info", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "aboutLogoArtist": "Le talentueux artiste qui a créé le magnifique logo de notre application !", - "@aboutLogoArtist": { - "description": "Role description for logo artist" - }, - "channelPreview": "Aperçu", - "@channelPreview": { - "description": "Update channel - beta/preview releases" - }, - "collectionPlaylistsDeleted": "{count} {count, plural, =1{playlist} other{playlists}} supprimées", - "@collectionPlaylistsDeleted": { - "description": "Snackbar after deleting selected playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@libraryFilterMetadataMissingGenre": { - "description": "Filter option - items missing genre" - }, - "homeTitle": "Accueil", - "@homeTitle": { - "description": "Home screen title" - }, - "extensionMinAppVersion": "Version minimale de l'application", - "@extensionMinAppVersion": { - "description": "Extension detail - minimum app version" - }, - "backupContentsLiked": "{count} favoris {count, plural, =1{titre} other{titres}}", - "@backupContentsLiked": { - "description": "Backup contents row for liked tracks count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "audioAnalysisTruePeak": "True Peak", - "@audioAnalysisTruePeak": { - "description": "True peak metric label" - }, - "notifDownloadsCanceledBody": "{count, plural, =1{1 téléchargement annulé par l'utilisateur} other{{count} téléchargements annulés par l'utilisateur}}", - "@notifDownloadsCanceledBody": { - "description": "Notification body when downloads are canceled by the user", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@dialogRetry": { - "description": "Dialog button - retry action" - }, - "@homeChangeSearchProviderTooltip": { - "description": "Tooltip for the Home search provider picker" - }, - "@sectionLyricsProviderOptions": { - "description": "Settings section header for per-provider lyrics options" - }, - "@trackReEnrichSuccessWithFailures": { - "description": "Snackbar summary after batch metadata re-enrichment finishes with failures", - "placeholders": { - "successCount": { - "type": "int" - }, - "total": { - "type": "int" - }, - "failedCount": { - "type": "int" - } - } - }, - "previewUnavailable": "Aperçu indisponible", - "@previewUnavailable": { - "description": "Snackbar shown when a track preview snippet cannot be played" - }, - "nowPlayingTabPlayer": "Lecteur", - "@nowPlayingTabPlayer": { - "description": "Tab label for the player view" - }, - "backupContentsPlaylists": "{count, plural, =1{1 playlist} other{{count} playlists}}", - "@backupContentsPlaylists": { - "description": "Backup contents row for playlist count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "libraryLastScannedNever": "Jamais", - "@libraryLastScannedNever": { - "description": "Shown when library has never been scanned" - }, - "trackTrackNumber": "Numéro de piste", - "@trackTrackNumber": { - "description": "Metadata label - track number" - }, - "trackReplayGainScanning": "Analyse du volume sonore...", - "@trackReplayGainScanning": { - "description": "Snackbar/progress message while scanning ReplayGain for a single track" - }, - "downloadLossyMp3": "MP3 320 kbps", - "@downloadLossyMp3": { - "description": "Lossy format option - MP3 320kbps" - }, - "@albumFolderArtistAlbumSingles": { - "description": "Album folder option with singles inside artist" - }, - "@extensionHealthNotConfigured": { - "description": "Extension service health status - not configured" - }, - "@downloadSeparateSinglesDisabled": { - "description": "Subtitle when separate singles folder is off" - }, - "downloadCreatePlaylistSourceFolder": "Dossier source de la playlist", - "@downloadCreatePlaylistSourceFolder": { - "description": "Setting to create a subfolder per playlist source" - }, - "@trackReleaseDate": { - "description": "Metadata label - release date" - }, - "aboutContributors": "Contributeurs", - "@aboutContributors": { - "description": "Section for contributors" - }, - "@audioAnalysisMono": { - "description": "Audio channel layout label - mono" - }, - "@audioAnalysisNyquist": { - "description": "Nyquist frequency metric label" - }, - "permissionStorage": "Stockage", - "@permissionStorage": { - "description": "Storage permission type label" - }, - "permissionAudio": "Audio", - "@permissionAudio": { - "description": "Audio permission type label" - }, - "@libraryScanSubtitle": { - "description": "Subtitle for scan button" - }, - "@snackbarUnsupportedAudioFormat": { - "description": "Snackbar when the audio format is not supported for the requested operation" - }, - "@notifLibraryScanStopped": { - "description": "Notification body when library scan is cancelled" - }, - "@downloadMusixmatchAuto": { - "description": "Button to clear Musixmatch language (use auto)" - }, - "@trackLyricsTimeout": { - "description": "Message when lyrics request times out" - }, - "@trackReEnrichFieldReleaseInfo": { - "description": "Checkbox label for release info in re-enrich" - }, - "@regionCountryXK": { - "description": "Country name for SongLink region picker" - }, - "aboutTelegramChatSubtitle": "Discutez avec d'autres utilisateurs", - "@aboutTelegramChatSubtitle": { - "description": "Subtitle for Telegram chat" - }, - "selectionAllPlaylistsSelected": "Toutes les playlists sélectionnées", - "@selectionAllPlaylistsSelected": { - "description": "Shown when all playlists are selected in selection mode" - }, - "cacheTrackLookupDesc": "Recherche d'identifiant de titre sur Spotify/Deezer. La suppression des données peut ralentir les prochaines recherches.", - "@cacheTrackLookupDesc": { - "description": "Description of what track lookup cache contains" - }, - "@unknownAlbum": { - "description": "Fallback album name when metadata is missing" - }, - "@extensionsErrorLoading": { - "description": "Error message when extension fails to load" - }, - "@cacheTitle": { - "description": "Cache management page title" - }, - "@downloadFilenameFormat": { - "description": "Setting for output filename pattern" - }, - "errorUrlNotRecognized": "Lien non reconnu", - "@errorUrlNotRecognized": { - "description": "Error title - URL not handled by any extension or service" - }, - "downloadAppleElrcWordSync": "Synchronisation des paroles Apple Music eLRC", - "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { - "description": "Subtitle when album artist is used for folder names" - }, - "@qualityFlacLossless": { - "description": "Quality option - CD quality FLAC" - }, - "downloadNeteaseIncludeTranslationEnabled": "Lignes de traduction en chinois incluses", - "@downloadNeteaseIncludeTranslationEnabled": { - "description": "Subtitle when Netease translation is on" - }, - "collectionLovedEmptySubtitle": "Appuyez sur les morceaux que vous aimez pour les ajouter à vos favoris", - "@collectionLovedEmptySubtitle": { - "description": "Loved empty state subtitle" - }, - "@libraryBuiltInPlayerInfo": { - "description": "Info note explaining the built-in player is for previews only" - }, - "@notifLibraryScanProgressNoTotal": { - "description": "Notification body for library scan progress when total is unknown", - "placeholders": { - "scanned": { - "type": "int" - }, - "percentage": { - "type": "int" - } - } - }, - "@tutorialSearchTitle": { - "description": "Tutorial search page title" - }, - "trackReEnrichSuccessWithFailures": "Les métadonnées ont été réenrichies avec succès ({successCount}/{total}) - Échec : {failedCount}", - "@a11yTrackByArtist": { - "description": "Accessibility label for a queue or list track item", - "placeholders": { - "trackName": { - "type": "String" - }, - "artistName": { - "type": "String" - } - } - }, - "libraryFilterMetadataMissingLabel": "Label manquant", - "@libraryFilterMetadataMissingLabel": { - "description": "Filter option - items missing record label" - }, - "@audioAnalysisLufs": { - "description": "Integrated loudness metric label" - }, - "trackMetadata": "Métadonnées", - "@trackMetadata": { - "description": "Tab title - track metadata" - }, - "trackOptionRemoveFromLoved": "Supprimer des Favoris", - "@trackOptionRemoveFromLoved": { - "description": "Bottom sheet action label - remove track from loved folder" - }, - "@aboutTelegramChat": { - "description": "Link to Telegram chat group" - }, - "@trackCopiedToClipboard": { - "description": "Snackbar - content copied" - }, - "aboutKeepAndroidOpen": "Garder Android ouvert", - "@aboutKeepAndroidOpen": { - "description": "Link to Keep Android Open campaign website" - }, - "@lyricsProvidersDisabledSection": { - "description": "Section header for disabled providers", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@downloadAllowLocalNetwork": { - "description": "Setting title for allowing requests to private/local network targets" - }, - "@openInOtherServices": { - "description": "Title and tooltip for finding the current collection in other services" - }, - "@extensionVerificationBrowserInApp": { - "description": "Chip label for in-app browser verification mode" - }, - "sectionSearchSource": "Rechercher dans la source", - "@sectionSearchSource": { - "description": "Settings section header" - }, - "allFilesAccess": "Accès à tous les fichiers", - "@allFilesAccess": { - "description": "Toggle for MANAGE_EXTERNAL_STORAGE permission" - }, - "extensionsInstalledCount": "{count} extensions ont été installées avec succès", - "@extensionsInstalledCount": { - "description": "Success message after installing multiple extensions", - "placeholders": { - "count": { - "type": "int", - "description": "Number of installed extensions" - } - } - }, - "snackbarFailedToEmbedLyrics": "Impossible d'intégrer les paroles", - "@snackbarFailedToEmbedLyrics": { - "description": "Snackbar when lyrics embedding fails" - }, - "@lyricsProviderMusixmatchDesc": { - "description": "Description for Musixmatch provider" - }, - "queueRateLimitTitle": "Débit limité", - "@queueRateLimitTitle": { - "description": "Title shown on a failed queue item when the download service rate limits requests" - }, - "@notifDownloadComplete": { - "description": "Notification title when a single download is complete" - }, - "@homeSupports": { - "description": "Info text about supported URL types" - }, - "notifDownloadsCanceledTitle": "Téléchargements annulés", - "@notifDownloadsCanceledTitle": { - "description": "Notification title when downloads are canceled by the user" - }, - "@lyricsModeEmbedSubtitle": { - "description": "Subtitle for embed option" - }, - "optionsReplayGain": "ReplayGain", - "@optionsReplayGain": { - "description": "Title for ReplayGain setting toggle" - }, - "@storeLoadError": { - "description": "Error heading when the store cannot be loaded" - }, - "@trackArtist": { - "description": "Metadata label - artist name" - }, - "cacheCoverImageDesc": "J'ai téléchargé les pochettes de l'album et des titres. Je les téléchargerai à nouveau lors de leur consultation.", - "@cacheCoverImageDesc": { - "description": "Description of what cover image cache contains" - }, - "queueClearAll": "Tout effacer", - "@queueClearAll": { - "description": "Button - clear all queue items" - }, - "downloadUsePrimaryArtistOnlyDisabled": "Nom complet de l'artiste utilisé pour le nom du dossier", - "@downloadUsePrimaryArtistOnlyDisabled": { - "description": "Subtitle when primary artist only is disabled" - }, - "backupImportSectionTitle": "Restaurer la sauvegarde", - "@backupImportSectionTitle": { - "description": "Section title for the import/restore card" - }, - "@downloadMusixmatchLanguageHint": { - "description": "Placeholder for Musixmatch language input" - }, - "collectionRemoveFromFolder": "Supprimer du dossier", - "@collectionRemoveFromFolder": { - "description": "Tooltip for removing track from wishlist/loved folder" - }, - "storeFilterMetadata": "Métadonnées", - "@storeFilterMetadata": { - "description": "Repo filter - metadata providers" - }, - "shareSheetCopyLink": "Copier le lien", - "errorRateLimitedMessage": "Trop de requêtes. Veuillez patienter quelques instants avant de relancer la recherche.", - "@errorRateLimitedMessage": { - "description": "Error message - rate limit explanation" - }, - "libraryFilterSortGenreDesc": "Genre (Z-A)", - "@libraryFilterSortGenreDesc": { - "description": "Sort option - genre descending" - }, - "trackFileNotFound": "Fichier introuvable", - "@trackFileNotFound": { - "description": "Error - file doesn't exist" - }, - "@queueEmptySinglesSubtitle": { - "description": "Empty state subtitle for single track downloads" - }, - "@queueDownloadStarting": { - "description": "Queue status before download progress is available" - }, - "metadataProviderPriorityInfo": "Deezer n'impose aucune limite de débit et est recommandé comme service principal. Spotify peut limiter le débit après un certain nombre de requêtes.", - "@metadataProviderPriorityInfo": { - "description": "Info tip about rate limits" - }, - "aboutPCSource": "Code source pour PC", - "@aboutPCSource": { - "description": "Link to PC GitHub repo" - }, - "editMetadataAutoFill": "Remplissage automatique en ligne", - "@editMetadataAutoFill": { - "description": "Section title for selective online metadata auto-fill in the edit metadata sheet" - }, - "snackbarDeletedTracks": "Supprimé {count} {count, plural, =1{titre} other{titres}}", - "@snackbarDeletedTracks": { - "description": "Snackbar - tracks deleted", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@extensionHealthServiceDegraded": { - "description": "Tooltip for degraded extension service" - }, - "lyricsProviderLrclibDesc": "Base de données open source de paroles synchronisées", - "@lyricsProviderLrclibDesc": { - "description": "Description for LRCLIB provider" - }, - "downloadMusixmatchLanguageDesc": "Saisissez un code de langue BCP-47 (par exemple : en, de, ja) pour demander les paroles traduites à Musixmatch.", - "@downloadMusixmatchLanguageDesc": { - "description": "Description in Musixmatch language picker" - }, - "@optionsEmbedMetadataSubtitleOn": { - "description": "Subtitle when metadata embedding is enabled" - }, - "@setupSkipForNow": { - "description": "Skip button text" - }, - "@a11ySelectTrack": { - "description": "Accessibility label for selecting a track" - }, - "@folderOrganizationByAlbumSubtitle": { - "description": "Subtitle for album folder option" - }, - "downloadLossyAac": "AAC/M4A 320 kbps", - "@extensionVerificationBrowserTitle": { - "description": "Settings option title for extension verification browser preference" - }, - "@backupContentsExtensions": { - "description": "Backup contents row for installed extensions count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarUrlCopied": "L'URL de {platform} a été copiée dans le presse-papiers", - "@snackbarUrlCopied": { - "description": "Snackbar - URL copied", - "placeholders": { - "platform": { - "type": "String", - "description": "Platform name (Spotify/Deezer)" - } - } - }, - "aboutBinimumDesc": "Créateur de QQDL et de l'API HiFi. Ce projet a contribué à mettre en place la prise en charge des téléchargements sans perte.", - "@aboutBinimumDesc": { - "description": "Credit description for binimum" - }, - "discographyFetchingAlbum": "Récupération de {current} sur {total}...", - "@discographyFetchingAlbum": { - "description": "Progress - fetching specific album", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "logAutoScrollOn": "Défilement automatique activé", - "@logAutoScrollOn": { - "description": "Tooltip when auto-scroll is enabled on the log screen" - }, - "@settingsMetadataSubtitle": { - "description": "Subtitle for metadata settings" - }, - "@regionCountryBR": { - "description": "Country name for SongLink region picker" - }, - "@lyricsProvidersTitle": { - "description": "Settings item title for lyrics provider order" - }, - "trackMetadataService": "Service", - "@trackMetadataService": { - "description": "Metadata field - download service used" - }, - "discographyAddedToQueue": "{count} titres ont été ajoutés à la file d'attente", - "cueSplitTrackCount": "{count} titres", - "@cueSplitTrackCount": { - "description": "Number of tracks in CUE sheet", - "placeholders": { - "count": { - "type": "int" - } - } - }, "dialogImportPlaylistTitle": "Importer une playlist", "@dialogImportPlaylistTitle": { "description": "Dialog title - import CSV playlist" }, - "@cleanupOrphanedDownloadsSubtitle": { - "description": "Subtitle for orphaned cleanup button" - }, - "settingsLocalLibrary": "Bibliothèque locale", - "@settingsLocalLibrary": { - "description": "Settings menu item - local library" - }, - "@metadataSaveFailedStorage": { - "description": "Snackbar error when writing metadata file back to storage fails" - }, - "logCopyLogs": "Copier les journaux", - "@logCopyLogs": { - "description": "Tooltip for copying logs" - }, - "downloadNetworkWifiOnlySubtitle": "Les téléchargements sont mis en pause lors de l'utilisation des données mobiles", - "@downloadNetworkWifiOnlySubtitle": { - "description": "Subtitle for WiFi-only option in picker" - }, - "@lyricsModeBothSubtitle": { - "description": "Subtitle for both option" - }, - "@collectionAlreadyInPlaylist": { - "description": "Snackbar when track already exists in playlist", - "placeholders": { - "playlistName": { - "type": "String" - } - } - }, - "@collectionFoldersTitle": { - "description": "Library section title for custom folders" - }, - "searchSortDateNewest": "Date de sortie (la plus récente)", - "@searchSortDateNewest": { - "description": "Sort option - newest release first" - }, - "downloadDeduplicationDisabled": "Tous les morceaux seront téléchargés, quel que soit l'historique", - "@downloadDeduplicationDisabled": { - "description": "Subtitle when deduplication is off" - }, - "@recentTypeAlbum": { - "description": "Recent access item type - album" - }, - "nowPlayingPlayInOrder": "Lire dans l'ordre", - "@nowPlayingPlayInOrder": { - "description": "Tooltip when shuffle mode is disabled" - }, - "@cueSplitConfirmMessage": { - "description": "CUE split confirmation dialog message", - "placeholders": { - "album": { - "type": "String" - }, - "count": { - "type": "int" - } - } - }, - "@audioAnalysisFileSize": { - "description": "File size metric label" - }, - "artistSingles": "Singles & EPs", - "@artistSingles": { - "description": "Section header for singles/EPs" - }, - "@snackbarProviderPrioritySaved": { - "description": "Snackbar - provider order saved" - }, - "@recentPlaylistInfo": { - "description": "Snackbar message when tapping playlist in recent access", - "placeholders": { - "name": { - "type": "String", - "description": "Playlist name" - } - } - }, - "@lyricsProviderLyricsPlusDesc": { - "description": "Description for LyricsPlus provider" - }, - "@libraryFilterDownloaded": { - "description": "Filter chip - show only downloaded items" - }, - "recentPlaylistInfo": "Playlist : {name}", - "@optionsReplayGainSubtitleOn": { - "description": "Subtitle when ReplayGain is enabled" - }, - "@actionCreate": { - "description": "Generic action button - create" - }, - "@downloadSelectQuality": { - "description": "Dialog title - choose audio quality" - }, - "cueSplitAlbum": "Album : {album}", - "@cueSplitAlbum": { - "description": "Album name in CUE split sheet", - "placeholders": { - "album": { - "type": "String" - } - } - }, - "@trackCoverNoSource": { - "description": "Snackbar when no cover art URL or embedded cover" - }, - "@storeRepoUrlLabel": { - "description": "Label for the repository URL input field" - }, - "@notifLibraryScanCompleteBody": { - "description": "Notification body for library scan complete - number of indexed tracks", + "dialogImportPlaylistMessage": "{count} titres ont été trouvés dans le fichier de la playlist. Voulez-vous les ajouter à la file d'attente de téléchargement ?", + "csvImportTracks": "{count} pistes issues d'un fichier CSV", + "@csvImportTracks": { + "description": "Label shown in quality picker for CSV import", "placeholders": { "count": { "type": "int" } } }, - "optionsDetailedLogging": "Journalisation détaillée", - "@optionsDetailedLogging": { - "description": "Enable verbose logs for debugging" + "collectionExportM3u": "Exporter au format M3U8", + "@collectionExportM3u": { + "description": "Tooltip on the collection screen action that exports the track list as an M3U8 playlist file" }, - "@lyricsProvidersDiscardContent": { - "description": "Body text of the discard-changes dialog on lyrics provider page" - }, - "@dialogDisableHistoryTitle": { - "description": "Confirmation dialog title shown before disabling download history" - }, - "downloadLossyOpus128Subtitle": "Taille minimale : environ 4 Mo par piste", - "@downloadLossyOpus128Subtitle": { - "description": "Subtitle for Opus 128kbps lossy option" - }, - "@appName": { - "description": "App name - DO NOT TRANSLATE" - }, - "libraryActions": "Actions", - "@libraryActions": { - "description": "Section header for library actions" - }, - "setupNoFolderSelected": "Aucun dossier n'est sélectionné. Souhaitez-vous utiliser le dossier Musique par défaut ?", - "@setupNoFolderSelected": { - "description": "Prompt when no folder selected" - }, - "downloadMusixmatchLanguageHint": "par exemple : en, de, ja", - "trackSaveFailed": "Échec : {error}", - "@trackSaveFailed": { - "description": "Snackbar when save operation fails", + "collectionExportM3uDone": "{exported} titres exportés sur {total}", + "@collectionExportM3uDone": { + "description": "Snackbar after M3U8 export; tracks without a local file are not exported", "placeholders": { - "error": { - "type": "String" - } - } - }, - "replayGainBatchConfirmTitle": "Ajouter ReplayGain", - "@replayGainBatchConfirmTitle": { - "description": "Title of the batch ReplayGain confirmation dialog" - }, - "tutorialExtensionsTip1": "Consultez l'onglet « Dépôt » pour découvrir des extensions utiles", - "@tutorialExtensionsTip1": { - "description": "Tutorial extensions tip 1" - }, - "@trackAddToQueue": { - "description": "Menu action to add a track to the playback queue" - }, - "@cacheTrackLookup": { - "description": "Cache item title for track ID lookup cache" - }, - "@discographyNoAlbums": { - "description": "Error - no albums found for artist" - }, - "@updateLater": { - "description": "Update button - dismiss" - }, - "@snackbarFailedToInstall": { - "description": "Snackbar - extension install error" - }, - "@albumFolderArtistAlbumFlatSubtitle": { - "description": "Folder structure example for flat singles" - }, - "@errorMissingExtensionSource": { - "description": "Error - extension source not available", - "placeholders": { - "item": { - "type": "String" - } - } - }, - "libraryFilterSortAlbumAsc": "Album (A-Z)", - "@libraryFilterSortAlbumAsc": { - "description": "Sort option - album ascending" - }, - "@queueTrackCount": { - "description": "Track count label with plural support", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "audioAnalysisMono": "Mono", - "@trackLyricsSource": { - "description": "Label showing the lyrics source/provider", - "placeholders": { - "source": { - "type": "String" - } - } - }, - "@lyricsModeEmbed": { - "description": "Lyrics mode option - embed in audio file" - }, - "@storeRepoDialogCurrent": { - "description": "Label shown above the current repository URL in the dialog" - }, - "@cacheRefreshStats": { - "description": "Button label to refresh cache statistics" - }, - "lyricsProviderAppleMusicDesc": "Paroles synchronisées mot à mot (via un proxy)", - "@lyricsProviderAppleMusicDesc": { - "description": "Description for Apple Music provider" - }, - "@downloadDeduplication": { - "description": "Setting - skip tracks already in download history" - }, - "updateFailedMessage": "Échec du téléchargement de la mise à jour", - "@updateFailedMessage": { - "description": "Update error message" - }, - "cacheEstimatedTotal": "Utilisation estimée du cache : {size}", - "@cacheEstimatedTotal": { - "description": "Total cache size shown in summary", - "placeholders": { - "size": { - "type": "String" - } - } - }, - "@aboutVersion": { - "description": "Version info label" - }, - "dialogRetry": "Réessayer", - "@cueSplitSplitting": { - "description": "Snackbar while splitting CUE", - "placeholders": { - "current": { + "exported": { "type": "int" }, "total": { @@ -1525,769 +868,81 @@ } } }, - "@searchSortTitleZA": { - "description": "Sort option - title descending" + "collectionExportM3uNone": "Aucun fichier téléchargé à exporter", + "@collectionExportM3uNone": { + "description": "Snackbar when an M3U8 export finds no local files" }, - "tutorialLibraryTip2": "Tap a track to play it with the built-in player", - "@tutorialLibraryTip2": { - "description": "Tutorial library tip 2" + "collectionExportM3uFailed": "L'exportation a échoué", + "@collectionExportM3uFailed": { + "description": "Snackbar when writing or sharing the M3U8 export fails" }, - "extensionHealthServiceOffline": "Service hors ligne", - "@extensionHealthServiceOffline": { - "description": "Tooltip for offline extension service" + "trackOpenOn": "Ouvrir sur...", + "@trackOpenOn": { + "description": "Track option and sheet title listing streaming platforms where the track can be opened" }, - "actionDeselect": "Désélectionner", - "@actionDeselect": { - "description": "Action button - deselect all" + "trackOpenOnNoLinks": "Aucun lien vers une plateforme n'a été trouvé pour ce titre.", + "@trackOpenOnNoLinks": { + "description": "Shown in the Open on sheet when song.link returns no links" }, - "@trackConvertOriginal": { - "description": "Label for keeping original bit depth or sample rate during conversion" + "libraryReviewDuplicates": "Vérifier les doublons", + "@libraryReviewDuplicates": { + "description": "Library settings row opening the duplicate review sheet" }, - "@libraryClearConfirmTitle": { - "description": "Dialog title for clear confirmation" + "libraryReviewDuplicatesSubtitle": "Rechercher les titres enregistrés plusieurs fois", + "@libraryReviewDuplicatesSubtitle": { + "description": "Subtitle for the duplicate review settings row" }, - "@dialogDownloadAllMessage": { - "description": "Body of the Download All confirmation dialog", - "placeholders": { - "count": { - "type": "int" - } - } + "duplicatesTitle": "Doublons", + "@duplicatesTitle": { + "description": "Title of the duplicate review sheet" }, - "homeSupports": "Prise en charge : URL de titres, d’albums, de playlists et d’artistes", - "@downloadedAlbumDeleteSelected": { - "description": "Button - delete selected tracks" + "duplicatesEmpty": "Aucun titre en double n'a été détecté.", + "@duplicatesEmpty": { + "description": "Shown when the duplicate review sheet finds nothing" }, - "@recentShowAllDownloads": { - "description": "Button label to unhide hidden downloads in recent access" + "duplicatesKeepBest": "Garder le meilleur", + "@duplicatesKeepBest": { + "description": "Button that deletes all but the highest-quality copy in a duplicate group" }, - "artistOptionRemoveFromFavorites": "Supprimer des Artistes Favoris", - "@artistOptionRemoveFromFavorites": { - "description": "Action label - remove artist from favorite artists" + "duplicatesKeepBestAll": "À conserver dans les meilleures conditions pour tous", + "@duplicatesKeepBestAll": { + "description": "Button that keeps the highest-quality copy in every duplicate group and deletes the rest" }, - "collectionPlaylistEmptyTitle": "La playlist est vide", - "@collectionPlaylistEmptyTitle": { - "description": "Playlist empty state title" - }, - "libraryFilterSortLatest": "Le plus récent", - "@libraryFilterSortLatest": { - "description": "Sort option - newest first" - }, - "@libraryFilterMetadataMissingYear": { - "description": "Filter option - items missing release year/date" - }, - "@selectionSelected": { - "description": "Selection count indicator", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@tracksCount": { - "description": "Track count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@optionsCheckUpdates": { - "description": "Auto update check toggle" - }, - "@qualityHiResFlacMaxSubtitle": { - "description": "Technical spec for hi-res max" - }, - "actionStop": "Arrêter", - "@actionStop": { - "description": "Generic action - stop" - }, - "@selectionSelectToDelete": { - "description": "Placeholder when nothing selected" - }, - "folderOrganizationNoneSubtitle": "Tous les fichiers du dossier « Téléchargements »", - "@folderOrganizationNoneSubtitle": { - "description": "Subtitle for no organization option" - }, - "@updateDownloading": { - "description": "Update status - downloading" - }, - "artistAlbums": "Albums", - "@artistAlbums": { - "description": "Section header for artist albums" - }, - "trackConvertDitherTriangular": "TPDF", - "@trackConvertDitherTriangular": { - "description": "Lossless conversion triangular probability density function dither option" - }, - "nowPlayingShuffleLibraryFailed": "Impossible de lire aléatoirement la bibliothèque : {error}", - "@nowPlayingShuffleLibraryFailed": { - "description": "Snackbar when shuffling the library fails", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "@setupIcloudNotSupported": { - "description": "Error when user selects iCloud Drive on iOS" - }, - "@optionsArtistTagModeSplitVorbis": { - "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" - }, - "@extensionsProviderPrioritySection": { - "description": "Section header - provider priority" - }, - "@libraryShowDuplicateIndicatorSubtitle": { - "description": "Subtitle for duplicate indicator toggle" - }, - "sectionDuplicates": "Doublons", - "@sectionDuplicates": { - "description": "Settings section header for deduplication" - }, - "@backupTitle": { - "description": "App bar title for the backup and restore page" - }, - "trackCoverReplaceNotice": "La pochette sélectionnée remplacera la pochette actuellement intégrée lorsque vous appuierez sur « Enregistrer ».", - "cacheSectionMaintenance": "Entretien", - "@cacheSectionMaintenance": { - "description": "Section header for cleanup actions" - }, - "@editMetadataFieldGenre": { - "description": "Chip label for genre field in auto-fill selector" - }, - "@extensionsFallbackSubtitle": { - "description": "Subtitle for download fallback extensions menu" - }, - "selectionBatchConvertConfirmMessage": "Convertir {count} {count, plural, =1{titre} other{titres}} au format {format} avec un débit binaire de {bitrate} ?\n\nLes fichiers d'origine seront supprimés après la conversion.", - "@selectionBatchConvertConfirmMessage": { - "description": "Confirmation dialog message for batch conversion", + "duplicatesKeepBestAllMessage": "Conserver la meilleure copie parmi {groupCount} {groupCount, plural, =1{piste} other{pistes}} et supprimer {count} copies de moindre qualité parmi {count, plural, =1{copie} other{copies}} ?\n\nLes fichiers supprimés seront retirés de l'espace de stockage.", + "@duplicatesKeepBestAllMessage": { + "description": "Confirmation message for keeping the best copy across every duplicate group", "placeholders": { "count": { "type": "int" }, - "format": { - "type": "String" - }, - "bitrate": { - "type": "String" - } - } - }, - "@selectionTapPlaylistsToSelect": { - "description": "Hint shown in playlist selection mode" - }, - "qualityHiResFlacMaxSubtitle": "24 bits / jusqu'à 192 kHz", - "snackbarRemovedTracksFromLoved": "{count} titres supprimés des Favoris", - "@snackbarRemovedTracksFromLoved": { - "description": "Snackbar after removing multiple tracks from Loved folder", - "placeholders": { - "count": { + "groupCount": { "type": "int" } } }, - "folderOrganizationByArtistAlbum": "Artiste/Album", - "@folderOrganizationByArtistAlbum": { - "description": "Folder option - nested folders" - }, - "snackbarCannotOpenFile": "Impossible d'ouvrir le fichier : {error}", - "@snackbarCannotOpenFile": { - "description": "Snackbar - file open error", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "@optionsDetailedLoggingOff": { - "description": "Status when logging disabled" - }, - "@setupStorageDescription": { - "description": "Explanation for storage permission" - }, - "audioAnalysisCodec": "Codec", - "@regionCountryFR": { - "description": "Country name for SongLink region picker" - }, - "@optionsArtistTagMode": { - "description": "Setting title for how artist metadata is written into files" - }, - "@libraryClearConfirmMessage": { - "description": "Dialog message for clear confirmation" - }, - "trackLyricsNotAvailable": "Les paroles de ce morceau ne sont pas disponibles", - "@trackLyricsNotAvailable": { - "description": "Message when lyrics not found" - }, - "storeFilterUtility": "Utilitaire", - "@storeFilterUtility": { - "description": "Repo filter - utility extensions" - }, - "collectionAddedToPlaylist": "Ajouté à « {playlistName} »", - "@collectionAddedToPlaylist": { - "description": "Snackbar after adding track to playlist", - "placeholders": { - "playlistName": { - "type": "String" - } - } - }, - "cacheClearConfirmTitle": "Vider le cache ?", - "@cacheClearConfirmTitle": { - "description": "Dialog title before clearing one cache category" - }, - "@downloadAppleElrcWordSyncDisabled": { - "description": "Subtitle when Apple Music eLRC word sync is disabled" - }, - "@aboutMobileDeveloper": { - "description": "Role description for mobile dev" - }, - "albumFolderYearAlbum": "[Année] Album", - "@albumFolderYearAlbum": { - "description": "Album folder option with year" - }, - "cacheTitle": "Stockage & Cache", - "@extensionPostProcessing": { - "description": "Capability - post-download processing" - }, - "extensionsNoMetadataProvider": "Aucune extension avec fournisseur de métadonnées", - "@extensionsNoMetadataProvider": { - "description": "Empty state - no metadata providers" - }, - "searchSortTitleZA": "Titre (Z-A)", - "@queueClearAllMessage": { - "description": "Clear queue confirmation" - }, - "audioAnalysisTitle": "Analyse de la qualité audio", - "@audioAnalysisTitle": { - "description": "Title for audio analysis section" - }, - "@aboutReportIssueSubtitle": { - "description": "Subtitle for report issue" - }, - "@audioAnalysisSampleRate": { - "description": "Sample rate metric label" - }, - "@discographySelectedCount": { - "description": "Selection count badge", + "duplicatesKeepBestMessage": "Supprimer {count} copies de moindre qualité de « {trackName} » ?", + "@duplicatesKeepBestMessage": { + "description": "Confirmation message for the keep-best action", "placeholders": { "count": { "type": "int" - } - } - }, - "qualityFlacLosslessSubtitle": "16 bits / 44,1 kHz", - "@qualityFlacLosslessSubtitle": { - "description": "Technical spec for lossless" - }, - "libraryScanFinalizing": "Finalisation de la bibliothèque...", - "@libraryScanFinalizing": { - "description": "Status shown after file scanning finishes but library persistence is still running" - }, - "@trackEditMetadata": { - "description": "Menu action - edit embedded metadata" - }, - "@downloadNeteaseIncludeRomanization": { - "description": "Setting to include romanized lyrics from Netease" - }, - "@optionsArtistTagModeJoinedSubtitle": { - "description": "Subtitle for joined artist tag mode" - }, - "regionCountryDE": "Allemagne", - "@regionCountryDE": { - "description": "Country name for SongLink region picker" - }, - "optionsAutoFallback": "Récupération automatique", - "@optionsAutoFallback": { - "description": "Auto-retry with other services" - }, - "@trackMetadataPlay": { - "description": "Action button - play track" - }, - "settingsFiles": "Fichiers & Dossiers", - "@settingsFiles": { - "description": "Settings menu item - file and folder settings" - }, - "aboutMobileDeveloper": "Développeur de la version mobile", - "@trackDownloaded": { - "description": "Metadata label - download date" - }, - "homeSkipAlreadyDownloaded": "Ignorer les morceaux déjà téléchargés", - "@homeSkipAlreadyDownloaded": { - "description": "Checkbox label in import dialog to skip already-downloaded songs" - }, - "dialogUninstall": "Désinstaller", - "@dialogUninstall": { - "description": "Dialog button - uninstall extension" - }, - "collectionDeletePlaylist": "Supprimer la playlist", - "@collectionDeletePlaylist": { - "description": "Action to delete playlist" - }, - "trackCoverOnline": "Pochette en ligne", - "@trackCoverOnline": { - "description": "Label shown when metadata autofill downloaded cover art from the internet" - }, - "downloadTitle": "Télécharger", - "@downloadTitle": { - "description": "Download settings page title" - }, - "searchArtists": "Artistes", - "@searchArtists": { - "description": "Search result category - artists" - }, - "extensionUrlHandler": "Gestionnaire d'URL", - "@extensionUrlHandler": { - "description": "Capability - handles URLs" - }, - "@timeHoursAgo": { - "description": "Relative time - hours ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "editMetadataAdvanced": "Avancé", - "@editMetadataAdvanced": { - "description": "Expandable section label for advanced metadata fields" - }, - "@actionSelectAll": { - "description": "Action button - select all items" - }, - "timeMinutesAgo": "{count, plural, =1{il y a 1 minute} other{il y a {count} minutes}}", - "@timeMinutesAgo": { - "description": "Relative time - minutes ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "regionCountryXK": "Kosovo", - "@downloadAskQualitySubtitle": { - "description": "Subtitle for ask quality toggle" - }, - "setupLanguageSystemDefault": "Paramètres par défaut du système", - "@setupLanguageSystemDefault": { - "description": "Option to use the system language" - }, - "@updateAvailable": { - "description": "Update dialog title" - }, - "cacheEntries": "{count} entrées", - "@cacheEntries": { - "description": "Track cache entry count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@notifLibraryScanExcluded": { - "description": "Library scan complete suffix - excluded track count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionsMetadataPrioritySubtitle": "Définissez l'ordre des sources de recherche et de métadonnées", - "@extensionsMetadataPrioritySubtitle": { - "description": "Subtitle for metadata priority" - }, - "downloadedAlbumSelectToDelete": "Sélectionnez les pistes à supprimer", - "@downloadedAlbumSelectToDelete": { - "description": "Placeholder when nothing selected" - }, - "@dialogClearHistoryTitle": { - "description": "Dialog title - clear download history" - }, - "tutorialSettingsTip1": "Modifier l'emplacement de téléchargement et l'organisation des dossiers", - "@tutorialSettingsTip1": { - "description": "Tutorial settings tip 1" - }, - "@extensionsInstalledSuccess": { - "description": "Success message after install" - }, - "allFilesAccessDisabledSubtitle": "Réservé aux dossiers multimédias uniquement", - "@allFilesAccessDisabledSubtitle": { - "description": "Subtitle when all files access is disabled" - }, - "@appearanceHistoryViewList": { - "description": "List layout option" - }, - "@notifAlreadyInLibraryCount": { - "description": "Notification title when track is already in library, with count", - "placeholders": { - "completed": { - "type": "int" }, - "total": { - "type": "int" - } - } - }, - "@libraryFilterAll": { - "description": "Filter chip - show all library items" - }, - "settingsDownload": "Télécharger", - "settingsFilesSubtitle": "Emplacement de téléchargement, nom de fichier, structure des dossiers", - "@settingsFilesSubtitle": { - "description": "Subtitle for files & folders settings" - }, - "@libraryFilterSort": { - "description": "Filter section - sort order" - }, - "metadataProvidersSubtitle": "Faites glisser pour définir l'ordre des sources de recherche et de métadonnées", - "@extensionPermissions": { - "description": "Section header - required permissions" - }, - "selectionSelectToDelete": "Sélectionnez les titres à supprimer", - "@libraryExternalPlayerSubtitle": { - "description": "Subtitle for external player option" - }, - "extensionVerificationOpenBrowser": "Ouvrir le navigateur", - "@extensionVerificationOpenBrowser": { - "description": "Button to open the extension verification URL in a browser" - }, - "@trackConvertConfirmMessageLossless": { - "description": "Confirmation dialog message for lossless-to-lossless conversion", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { + "trackName": { "type": "String" } } }, - "@snackbarAddedTracksToQueue": { - "description": "Snackbar - multiple tracks added to queue", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@backupContentsWishlist": { - "description": "Backup contents row for wishlist tracks count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@cacheCleanupUnusedSubtitle": { - "description": "Subtitle for cleanup unused data action" - }, - "trackLabel": "Label", - "@trackLabel": { - "description": "Metadata label - record label" - }, - "@collectionAddedToLoved": { - "description": "Snackbar after adding track to loved folder", + "duplicatesDeleteCopyMessage": "Souhaitez-vous supprimer cette copie de « {trackName} » ?", + "@duplicatesDeleteCopyMessage": { + "description": "Confirmation message for deleting one duplicate copy", "placeholders": { "trackName": { "type": "String" } } }, - "regionCountryGB": "Royaume-Uni", - "dialogCancel": "Annuler", - "@dialogCancel": { - "description": "Dialog button - cancel action" - }, - "@folderOrganizationByArtistAlbumSubtitle": { - "description": "Subtitle for nested folder option" - }, - "@notifAllDownloadsComplete": { - "description": "Notification title when all downloads finish successfully" - }, - "setupEnableNotifications": "Activer les notifications", - "@setupEnableNotifications": { - "description": "Button to enable notifications" - }, - "@notifFinalizingTrack": { - "description": "Notification title while finalizing (embedding metadata) a track", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "@downloadLossy320FormatDesc": { - "description": "Description in the lossy format picker" - }, - "filenameFormat": "Format des noms de fichiers", - "@filenameFormat": { - "description": "Setting title - filename pattern" - }, - "historySearchHint": "Historique de recherche...", - "@historySearchHint": { - "description": "Search bar placeholder in history" - }, - "@tutorialReadyMessage": { - "description": "Tutorial completion message" - }, - "cacheTempDirectoryDesc": "Fichiers temporaires liés aux téléchargements et à la conversion audio.", - "@cacheTempDirectoryDesc": { - "description": "Description of what temporary directory contains" - }, - "@trackSaveLyrics": { - "description": "Menu action - save lyrics as .lrc file" - }, - "@notifDownloadsFinished": { - "description": "Notification title when queue finishes with some failures", - "placeholders": { - "completed": { - "type": "int" - }, - "failed": { - "type": "int" - } - } - }, - "@historyFilterAlbums": { - "description": "Filter chip - show albums only" - }, - "trackEmbedLyrics": "Intégrer les paroles", - "@trackEmbedLyrics": { - "description": "Action - embed lyrics into audio file" - }, - "@downloadPrimaryArtistOnlyOff": { - "description": "Status label when primary-artist-only folder naming is disabled" - }, - "@trackReEnrichFieldTrackInfo": { - "description": "Checkbox label for track info in re-enrich" - }, - "snackbarHistoryCleared": "Historique effacé", - "downloadNetworkCompatibilityModeDisabled": "Utilisation des paramètres réseau par défaut", - "@artistPopular": { - "description": "Section header for popular/top tracks" - }, - "@trackFetchOnlineLyrics": { - "description": "Action - fetch lyrics from online providers" - }, - "extensionLyricsProvider": "Fournisseur de paroles", - "@extensionLyricsProvider": { - "description": "Capability - provides lyrics" - }, - "historyFilterAll": "Tous", - "@historyFilterAll": { - "description": "Filter chip - show all items" - }, - "tutorialSearchTitle": "Trouver de la musique", - "@lyricsModeExternal": { - "description": "Lyrics mode option - separate LRC file" - }, - "@actionDismiss": { - "description": "Generic action - dismiss" - }, - "trackOpenInSpotify": "Ouvrir dans Spotify", - "@trackOpenInSpotify": { - "description": "Action - open track in Spotify app" - }, - "@libraryClear": { - "description": "Button to clear all library entries" - }, - "discographyFailedToFetch": "Impossible de récupérer certains albums", - "@filenameShowAdvancedTagsDescription": { - "description": "Description for advanced filename tag toggle" - }, - "@storeUpdate": { - "description": "Update available button" - }, - "collectionPlaylistTracks": "{count, plural, =1{1 titre} other{{count} titres}}", - "@collectionPlaylistTracks": { - "description": "Track count label for custom playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "optionsPrimaryProviderSubtitle": "Service permettant d'effectuer une recherche par titre de morceau ou d'album", - "@optionsPrimaryProviderSubtitle": { - "description": "Subtitle for primary provider" - }, - "@downloadEmbedLyricsDisabled": { - "description": "Subtitle when lyrics embedding is blocked by metadata toggle" - }, - "@librarySourceLocal": { - "description": "Badge for tracks from local library scan" - }, - "@searchSortDurationLong": { - "description": "Sort option - longest duration first" - }, - "@downloadFilterContributingDisabled": { - "description": "Subtitle when contributing artist filter is off" - }, - "queueDownloadingCount": "Téléchargement ({count})", - "@queueDownloadingCount": { - "description": "Header for active downloads section with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionVerificationBrowserInApp": "Dans l'application", - "trackAudioQuality": "Qualité audio", - "@trackAudioQuality": { - "description": "Metadata label - audio quality" - }, - "libraryRemovedMissingFiles": "{count} fichiers manquants ont été supprimés de la bibliothèque", - "@libraryRemovedMissingFiles": { - "description": "Snackbar after cleanup", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "collectionFavoriteArtistsEmptyTitle": "Pas encore d'artistes préférés", - "@collectionFavoriteArtistsEmptyTitle": { - "description": "Favorite artists empty state title" - }, - "@errorInvalidFolderSelected": { - "description": "Error when the selected folder is invalid" - }, - "@searchSortArtistZA": { - "description": "Sort option - artist descending" - }, - "snackbarAddedTracksToLoved": "{count} titres ajoutés aux Favoris", - "@snackbarAddedTracksToLoved": { - "description": "Snackbar after adding multiple tracks to Loved folder", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cancelDownloadContent": "Cela annulera le téléchargement en cours de « {trackName} ».", - "@cancelDownloadContent": { - "description": "Dialog body when confirming cancellation of an active download", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "settingsCacheSubtitle": "Afficher la taille et vider le cache", - "@settingsCacheSubtitle": { - "description": "Subtitle for cache management menu" - }, - "notifLibraryScanCompleteBody": "{count} titres indexés", - "@cacheSizeWithFiles": { - "description": "Cache size and file count", - "placeholders": { - "size": { - "type": "String" - }, - "count": { - "type": "int" - } - } - }, - "@downloadAskBeforeDownload": { - "description": "Setting - show quality picker" - }, - "@extensionHealthDegraded": { - "description": "Extension service health status - degraded" - }, - "@sectionPerformance": { - "description": "Settings section header" - }, - "@trackCoverCurrent": { - "description": "Label for the currently embedded cover preview" - }, - "discographySelectAlbums": "Sélectionner des albums...", - "@discographySelectAlbums": { - "description": "Option - manually select albums to download" - }, - "aboutAppDescription": "Recherchez des métadonnées musicales, gérez les extensions et organisez votre bibliothèque.", - "@aboutAppDescription": { - "description": "App description in header card" - }, - "extensionCustomTrackMatching": "Correspondance personnalisée des pistes", - "@extensionCustomTrackMatching": { - "description": "Capability - custom track matching algorithm" - }, - "@editMetadataSelectNone": { - "description": "Button to clear selected fields for auto-fill" - }, - "@trackPlayNext": { - "description": "Menu action to play a track as the next queue item" - }, - "extensionCapabilities": "Fonctionnalités", - "@extensionCapabilities": { - "description": "Section header - extension features" - }, - "@downloadSelectServiceToEnable": { - "description": "Subtitle when quality picker is disabled due to extension service" - }, - "logIssueRateLimitedDescription": "Trop de requêtes adressées au service", - "@logIssueRateLimitedDescription": { - "description": "Diagnostic badge description for rate limiting" - }, - "@actionResume": { - "description": "Action button - resume download" - }, - "@updateDownloadInstall": { - "description": "Update button - download and install" - }, - "downloadLossy320Format": "Format avec perte à 320 kbps", - "@downloadLossy320Format": { - "description": "Title of the lossy format picker bottom sheet" - }, - "settingsMetadataSubtitle": "Pochettes, balises, ReplayGain, fournisseurs", - "@trackCopyright": { - "description": "Metadata label - copyright information" - }, - "@snackbarExtensionInstalled": { - "description": "Snackbar - extension installed successfully", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "@regionCountryJP": { - "description": "Country name for SongLink region picker" - }, - "trackReEnrichOnlineSubtitle": "Rechercher des métadonnées en ligne et les intégrer dans un fichier", - "@trackReEnrichOnlineSubtitle": { - "description": "Subtitle for re-enrich metadata action for local items" - }, - "nowPlayingNothingPlaying": "Il n'y a rien à l'écran", - "@nowPlayingNothingPlaying": { - "description": "Empty state when no track is currently playing" - }, - "tutorialDownloadDesc": "Pick an available quality, start the download, and follow its progress in the queue.", - "@tutorialDownloadDesc": { - "description": "Tutorial download page description" - }, - "@appearanceTitle": { - "description": "Appearance settings page title" - }, - "@backupExportSectionDescription": { - "description": "Description of what a backup contains" - }, - "@downloadLossyOpus128": { - "description": "Lossy format option - Opus 128kbps" - }, - "@logFilterSection": { - "description": "Filter section title" - }, - "trackReEnrichSuccess": "Métadonnées réenrichies avec succès", - "@trackReEnrichSuccess": { - "description": "Snackbar after successful re-enrichment" - }, - "backupContentsHistory": "{count} historique {count, plural, =1{élément} other{éléments}}", - "@backupContentsHistory": { - "description": "Backup contents row for history count", + "@dialogImportPlaylistMessage": { + "description": "Dialog message - import playlist confirmation", "placeholders": { "count": { "type": "int" @@ -2303,692 +958,93 @@ } } }, - "libraryAutoScanOnOpen": "À chaque ouverture de l'application", - "@libraryAutoScanOnOpen": { - "description": "Auto scan when app opens" + "snackbarAddedTracksToQueue": "{count} titres ont été ajoutés à la file d'attente", + "@snackbarAddedTracksToQueue": { + "description": "Snackbar - multiple tracks added to queue", + "placeholders": { + "count": { + "type": "int" + } + } }, - "audioAnalysisChannels": "Chaînes", - "@audioAnalysisChannels": { - "description": "Channels metric label" - }, - "appearanceHistoryViewList": "Liste", - "updateDownloadInstall": "Télécharger & Installer", - "@libraryShowDuplicateIndicator": { - "description": "Toggle for duplicate indicator in search" - }, - "extensionsHomeFeedOff": "Désactivé", - "@extensionsHomeFeedOff": { - "description": "Extensions page - home feed provider option: off" - }, - "searchSortTitleAZ": "Titre (A-Z)", - "@searchSortTitleAZ": { - "description": "Sort option - title ascending" - }, - "collectionRemovedFromLoved": "\"{trackName}\" supprimé des Favoris", - "@collectionRemovedFromLoved": { - "description": "Snackbar after removing track from loved folder", + "snackbarAlreadyDownloaded": "« {trackName} » a déjà été téléchargé", + "@snackbarAlreadyDownloaded": { + "description": "Snackbar - track already exists", "placeholders": { "trackName": { "type": "String" } } }, - "sectionAudioQuality": "Qualité audio", - "@sectionAudioQuality": { - "description": "Settings section header" - }, - "trackConvertSuccess": "Conversion vers {format} réussie", - "@trackConvertSuccess": { - "description": "Snackbar after successful conversion", - "placeholders": { - "format": { - "type": "String" - } - } - }, - "dialogUninstallExtensionMessage": "Êtes-vous sûr de vouloir supprimer {extensionName} ?", - "@dialogUninstallExtensionMessage": { - "description": "Dialog message - uninstall specific extension", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "downloadNativeWorkerSubtitle": "Service Android en arrière-plan pour les téléchargements d'extensions", - "@downloadNativeWorkerSubtitle": { - "description": "Setting subtitle for Android native download worker" - }, - "storeUpdate": "Mettre à jour", - "libraryFilterMetadataMissingAny": "Métadonnées manquantes", - "@libraryFilterMetadataMissingAny": { - "description": "Filter option - items missing any tracked metadata field" - }, - "@selectionBatchConvertConfirmMessageLosslessCapped": { - "description": "Confirmation dialog message for capped lossless batch conversion", - "placeholders": { - "count": { - "type": "int" - }, - "format": { - "type": "String" - }, - "quality": { - "type": "String" - } - } - }, - "editMetadataAutoFillDesc": "Choisissez une extension de métadonnées, sélectionnez les champs, puis vérifiez les données avant de l'appliquer", - "@editMetadataAutoFillDesc": { - "description": "Description for the auto-fill section" - }, - "@lyricsProviderExtensionDesc": { - "description": "Generic description for extension-based lyrics providers" - }, - "downloadSongLinkRegion": "Région SongLink", - "@downloadSongLinkRegion": { - "description": "Setting for SongLink region used during fallback resolution" - }, - "shareSheetNoExtensions": "Aucun autre service compatible", - "@shareSheetNoExtensions": { - "description": "Empty state when no extensions can be searched for cross-service links" - }, - "queueFlacConfirmMessage": "Recherchez en ligne les correspondances pour les morceaux sélectionnés et ajoutez les téléchargements FLAC à la file d'attente.\n\nLes fichiers existants ne seront ni modifiés ni supprimés.\n\nSeules les correspondances hautement fiables sont automatiquement ajoutées à la file d'attente.\n\n{count} sélectionnés", - "@queueFlacConfirmMessage": { - "description": "Confirmation dialog body before queueing FLAC redownloads for local tracks", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "tooltipAddToPlaylist": "Ajouter à la playlist", - "@tooltipAddToPlaylist": { - "description": "Tooltip for the Add to Playlist button" - }, - "@snackbarAddedToQueueGeneric": { - "description": "Snackbar when a track is added to the playback queue without naming it" - }, - "@tutorialSettingsTip2": { - "description": "Tutorial settings tip 2" - }, - "extensionPermissions": "Autorisations", - "releaseTypeSingle": "Single", - "aboutTelegramChannelSubtitle": "Annonces et mises à jour", - "@aboutTelegramChannelSubtitle": { - "description": "Subtitle for Telegram channel" - }, - "@dialogDisableAndClear": { - "description": "Confirmation action to disable download history and clear existing entries" - }, - "@homeSearchHintProvider": { - "description": "Placeholder for the main search field when a provider is selected", - "placeholders": { - "providerName": { - "type": "String" - } - } - }, - "metadataProvidersTitle": "Priorité des fournisseurs de métadonnées", - "@metadataProvidersTitle": { - "description": "Settings item title for metadata provider order" - }, - "trackAddToQueue": "Ajouter à la file d'attente", - "audioAnalysisDecodedFormat": "Format décodé", - "@audioAnalysisDecodedFormat": { - "description": "Decoded sample format metric label" - }, - "@editMetadataSelectEmpty": { - "description": "Button to select only fields that are currently empty" - }, - "collectionAlreadyInPlaylist": "Déjà présent dans « {playlistName} »", - "discographyAlbumsOnlySubtitle": "{count} titres issus de {albumCount} albums", - "@discographyAlbumsOnlySubtitle": { - "description": "Subtitle showing album tracks count", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } - }, - "setupNotificationEnable": "Activer les notifications", - "@setupNotificationEnable": { - "description": "Button to enable notifications" - }, - "settingsAppearanceSubtitle": "Thème, couleurs, affichage", - "@settingsAppearanceSubtitle": { - "description": "Appearance settings description" - }, - "@notifUpdateFailedBody": { - "description": "Notification body when app update download fails" - }, - "@aboutOriginalCreator": { - "description": "Role description for original creator" - }, - "libraryBuiltInPreviewPlayer": "Lecteur de prévisualisation intégré", - "@libraryBuiltInPreviewPlayer": { - "description": "Setting option to use the built-in preview player" - }, - "tooltipPlay": "Lecture", - "@tooltipPlay": { - "description": "Tooltip - play button" - }, - "@safMigrationMessage2": { - "description": "Second paragraph of SAF migration dialog" - }, - "@extensionsSearchProvider": { - "description": "Setting - search provider selection" - }, - "libraryAboutDescription": "Analyse votre bibliothèque musicale existante pour détecter les doublons lors du téléchargement. Prend en charge les formats FLAC, M4A, MP3, Opus et OGG. Les métadonnées sont extraites des balises des fichiers lorsqu'elles sont disponibles.", - "@libraryAboutDescription": { - "description": "Description of local library feature" - }, - "downloadAskBeforeDownload": "Demander avant de télécharger", - "nowPlayingNoMetadata": "Aucune métadonnée disponible", - "@nowPlayingNoMetadata": { - "description": "Empty state when track metadata cannot be loaded" - }, - "trackInstrumental": "Morceau instrumental", - "@trackInstrumental": { - "description": "Message when track is instrumental (no lyrics)" - }, - "@collectionWishlistEmptyTitle": { - "description": "Wishlist empty state title" - }, - "selectionBatchConvertConfirmMessageLosslessCapped": "Convertir {count} {count, plural, =1{titre} other{titres}} en {format} ({quality}) ?\n\nLe fichier de sortie conservera un codec sans perte, mais la profondeur de bits et la fréquence d'échantillonnage seront limitées. Les fichiers d'origine seront supprimés après la conversion.", - "downloadDeduplication": "Éviter les téléchargements en double", - "libraryFilterSortOldest": "Le plus ancien", - "@libraryFilterSortOldest": { - "description": "Sort option - oldest first" - }, - "setupSkip": "Ignorer pour le moment", - "@setupSkip": { - "description": "Skip current step button" - }, - "@setupFolderDescription": { - "description": "Explanation for folder selection" - }, - "@settingsLogsSubtitle": { - "description": "Logs settings description" - }, - "storeNewRepoUrlLabel": "Nouvelle URL du dépôt", - "@storeNewRepoUrlLabel": { - "description": "Label for the new repository URL field inside the dialog" - }, - "cacheClearConfirmMessage": "Cette opération effacera les données mises en cache pour {target}. Les fichiers musicaux téléchargés ne seront pas supprimés.", - "@cacheClearConfirmMessage": { - "description": "Dialog message before clearing selected cache", - "placeholders": { - "target": { - "type": "String" - } - } - }, - "trackMetadataPlay": "Lire", - "@libraryEnableLocalLibrary": { - "description": "Toggle to enable library scanning" - }, - "optionsUpdateChannel": "Chaîne de mise à jour", - "@optionsUpdateChannel": { - "description": "Stable vs preview releases" - }, - "@downloadCreatePlaylistSourceFolderDisabled": { - "description": "Subtitle when playlist folder is disabled" - }, - "@extensionRefreshStatus": { - "description": "Tooltip for refreshing extension service health status" - }, - "backupRestoreRestartHint": "Redémarrez l'application pour vous assurer que toutes les modifications ont bien été prises en compte.", - "@backupRestoreRestartHint": { - "description": "Hint shown after restoring that an app restart is recommended" - }, - "@snackbarExtensionInstalledEnable": { - "description": "Snackbar after installing an extension from the repo tab", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "settingsAutoExportFailedSubtitle": "Enregistrez automatiquement les téléchargements ayant échoué dans un fichier TXT", - "@settingsAutoExportFailedSubtitle": { - "description": "Subtitle for auto-export setting" - }, - "searchSortArtistAZ": "Artiste (A-Z)", - "@searchSortArtistAZ": { - "description": "Sort option - artist ascending" - }, - "editMetadataFieldAlbumArtist": "Artiste de l'album", - "@editMetadataFieldAlbumArtist": { - "description": "Chip label for album artist field in auto-fill selector" - }, - "@queueEmptyHistory": { - "description": "Empty state title when download history is empty" - }, - "@dialogDisableHistoryMessage": { - "description": "Confirmation dialog message shown before disabling download history" - }, - "queueFlacNoReliableMatches": "Aucun résultat pertinent n'a été trouvé en ligne pour cette sélection", - "@queueFlacNoReliableMatches": { - "description": "Snackbar when no safe FLAC redownload matches were found" - }, - "trackOpenInDeezer": "Ouvrir dans Deezer", - "@trackOpenInDeezer": { - "description": "Action - open track in Deezer app" - }, - "setupChooseFromFilesSubtitle": "Sélectionnez iCloud ou un autre emplacement", - "@setupChooseFromFilesSubtitle": { - "description": "Subtitle for file picker" - }, - "artistMonthlyListeners": "{count} auditeurs mensuels", - "@artistMonthlyListeners": { - "description": "Monthly listener count display", - "placeholders": { - "count": { - "type": "String", - "description": "Formatted listener count" - } - } - }, - "@downloadLossyAacSubtitle": { - "description": "Subtitle for AAC/M4A 320kbps lossy option" - }, - "cacheSectionStorage": "Données mises en cache", - "@cacheSectionStorage": { - "description": "Section header for cache entries" - }, - "@libraryAutoScanWeekly": { - "description": "Auto scan once per week" - }, - "tutorialDownloadCompletedSemantics": "Téléchargement terminé", - "@tutorialDownloadCompletedSemantics": { - "description": "Accessibility label for completed download state in tutorial demo" - }, - "@logNoLogsYet": { - "description": "Empty state title" - }, - "@selectionDeletePlaylistsCount": { - "description": "Button label for deleting multiple selected playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadSeparateSinglesEnabled": "Les singles et les EP sont enregistrés dans un dossier séparé", - "@downloadSeparateSinglesEnabled": { - "description": "Subtitle when separate singles folder is on" - }, - "setupAppDocumentsFolder": "Dossier « Documents » de l'application", - "@setupAppDocumentsFolder": { - "description": "iOS documents folder option" - }, - "storeLoadError": "Échec du chargement du dépôt", - "settingsDownloadNetwork": "Réseau de téléchargement", - "metadataSaveFailedStorage": "Échec de la réécriture des métadonnées sur le support de stockage", - "@logAutoScrollOff": { - "description": "Tooltip when auto-scroll is disabled on the log screen" - }, - "@trackConvertFormat": { - "description": "Menu item - convert audio format" - }, - "optionsArtistTagModeJoined": "Valeur unique combinée", - "@optionsArtistTagModeJoined": { - "description": "Artist tag mode option that joins multiple artists into one value" - }, - "@dateYesterday": { - "description": "Relative date - yesterday" - }, - "@settingsExtensionsSubtitle": { - "description": "Extensions settings description" - }, - "searchSortArtistZA": "Artiste (Z-A)", - "@extensionSettings": { - "description": "Section header - extension settings" - }, - "@extensionOauthConnectHint": { - "description": "Hint for an OAuth login link field before connecting Spotify" - }, - "@notifUpdateReady": { - "description": "Notification title when app update download is complete" - }, - "@regionCountryMX": { - "description": "Country name for SongLink region picker" - }, - "@nowPlayingOpenInExternalPlayer": { - "description": "Menu item to open the current track in an external player" - }, - "trackConvertDithering": "Hésitation", - "@trackConvertDithering": { - "description": "Section label for lossless conversion dithering options" - }, - "settingsDownloadSubtitle": "Service, qualité, solution de secours", - "@settingsDownloadSubtitle": { - "description": "Download settings description" - }, - "libraryLastScanned": "Dernière analyse : {time}", - "@libraryLastScanned": { - "description": "Last scan time display", - "placeholders": { - "time": { - "type": "String" - } - } - }, - "setupIosEmptyFolderWarning": "Limitation iOS : les dossiers vides ne peuvent pas être sélectionnés. Choisissez un dossier contenant au moins un fichier.", - "@setupIosEmptyFolderWarning": { - "description": "iOS folder selection warning" - }, - "@storeAddRepoDescription": { - "description": "Store setup screen - explanatory text" - }, - "@snackbarFailedToInstallNamed": { - "description": "Snackbar when extension install fails in the repo tab", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "@collectionAddedTracksToPlaylist": { - "description": "Snackbar after adding multiple tracks to a playlist", - "placeholders": { - "count": { - "type": "int" - }, - "playlistName": { - "type": "String" - } - } - }, - "updateNew": "Nouveau", - "@updateNew": { - "description": "Label for new version" - }, - "settingsExtensionsSubtitle": "Gérez les fournisseurs de téléchargement", - "@albumFolderArtistAlbumSinglesSubtitle": { - "description": "Folder structure example" - }, - "trackReEnrichSelectAll": "Tout sélectionner", - "@trackReEnrichSelectAll": { - "description": "Select all fields checkbox in re-enrich" - }, - "@extensionsUninstall": { - "description": "Uninstall extension button" - }, - "@downloadUseAlbumArtistForFoldersTrackSubtitle": { - "description": "Subtitle when track artist is used for folder names" - }, - "@logIssueNetworkErrorLabel": { - "description": "Diagnostic badge label for generic network errors" - }, - "albumFolderArtistYearAlbumSubtitle": "Albums/Nom de l'artiste/[2005] Nom de l'album/", - "@albumFolderArtistYearAlbumSubtitle": { - "description": "Folder structure example" - }, - "itemCount": "{count} {count, plural, =1{élément} other{éléments}}", - "@itemCount": { - "description": "Generic item count label", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "discographyFetchingTracks": "Chargement des pistes...", - "@discographyFetchingTracks": { - "description": "Progress - fetching album tracks" - }, - "@libraryFolder": { - "description": "Folder selection setting" - }, - "queueEmptyAlbums": "Aucun album téléchargé", - "@queueEmptyAlbums": { - "description": "Empty state title when no album downloads exist" - }, - "@metadataProviderPriorityDescription": { - "description": "Metadata priority page description" - }, - "@extensionVerificationHelpTitleManual": { - "description": "Dialog title when automatic browser launch for verification fails" - }, - "extensionError": "Erreur", - "@extensionError": { - "description": "Extension detail - error message" - }, - "@trackLyricsLoadFailed": { - "description": "Message when lyrics loading fails" - }, - "@downloadedAlbumDeleteCount": { - "description": "Delete button text with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@extensionsNoHomeFeedExtensions": { - "description": "Extensions page - shown when no installed extension has home feed" - }, - "@collectionArtistCount": { - "description": "Artist count label for favorite artists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "backupContentsArtists": "{count, plural, =1{1 artiste préféré} other{{count} artistes préférés}}", - "@backupContentsArtists": { - "description": "Backup contents row for favorite artists count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@trackRemoveFromDevice": { - "description": "Action - delete downloaded file" - }, - "lyricsProvidersEnabledSection": "Activé ({count})", - "@lyricsProvidersEnabledSection": { - "description": "Section header for enabled providers", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@cueSplitTitle": { - "description": "Title for CUE split bottom sheet" - }, - "@downloadedAlbumSelectedCount": { - "description": "Selection count indicator", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@trackOptionRemoveFromWishlist": { - "description": "Bottom sheet action label - remove track from wishlist" - }, - "notifDownloadingTrack": "Téléchargement de {trackName}", - "@notifDownloadingTrack": { - "description": "Notification title while downloading a track", + "snackbarAlreadyInLibrary": "« {trackName} » existe déjà dans votre bibliothèque", + "@snackbarAlreadyInLibrary": { + "description": "Snackbar - track already exists in local library", "placeholders": { "trackName": { "type": "String" } } }, - "@discographySkippedDownloaded": { - "description": "Snackbar - with skipped tracks count", + "snackbarHistoryCleared": "Historique effacé", + "@snackbarHistoryCleared": { + "description": "Snackbar - history deleted" + }, + "snackbarDeletedTracks": "Supprimé {count} {count, plural, =1{titre} other{titres}}", + "@snackbarDeletedTracks": { + "description": "Snackbar - tracks deleted", "placeholders": { - "added": { - "type": "int" - }, - "skipped": { + "count": { "type": "int" } } }, - "@tutorialSettingsTip3": { - "description": "Tutorial settings tip 3" - }, - "@announcementUnableToOpenLink": { - "description": "Snackbar shown when an announcement CTA link cannot be opened" - }, - "trackReleaseDate": "Date de sortie", - "discographySelectedCount": "{count} sélectionnés", - "collectionArtistCount": "{count, plural, =1{1 artiste} other{{count} artistes}}", - "logIssueNetworkErrorLabel": "ERREUR DE RÉSEAU", - "updateStartingDownload": "Début du téléchargement...", - "@updateStartingDownload": { - "description": "Update status - initializing" - }, - "trackDiscNumber": "Numéro de disque", - "@trackDiscNumber": { - "description": "Metadata label - disc number" - }, - "optionsUsingExtension": "Utilisation de l'extension : {extensionName}", - "@optionsUsingExtension": { - "description": "Shows active extension name", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "dialogDisableHistoryTitle": "Désactiver l'historique des téléchargements ?", - "tutorialWelcomeTip3": "Embed metadata, cover art, lyrics, and release information automatically", - "@tutorialWelcomeTip3": { - "description": "Tutorial welcome tip 3" - }, - "@collectionPlaylistEmptySubtitle": { - "description": "Playlist empty state subtitle" - }, - "@tutorialSearchHint": { - "description": "Placeholder shown in the tutorial search demo" - }, - "cleanupOrphanedDownloadsNone": "Aucune entrée orpheline n'a été trouvée", - "discographySkippedDownloaded": "{added} ajouté, {skipped} déjà téléchargé", - "@updateDontRemind": { - "description": "Update button - skip this version" - }, - "@snackbarLoadingCueSheet": { - "description": "Snackbar while loading a CUE sheet file" - }, - "@dialogUninstallExtension": { - "description": "Dialog title - uninstall extension" - }, - "lyricsProvidersTitle": "Priorité au fournisseur de paroles", - "@dialogRemove": { - "description": "Dialog button - remove item" - }, - "snackbarError": "Erreur : {error}", - "@snackbarError": { - "description": "Generic error snackbar with error detail", + "snackbarCannotOpenFile": "Impossible d'ouvrir le fichier : {error}", + "@snackbarCannotOpenFile": { + "description": "Snackbar - file open error", "placeholders": { "error": { "type": "String" } } }, - "@sectionApp": { - "description": "Settings section header" + "snackbarViewQueue": "Afficher la file d'attente", + "@snackbarViewQueue": { + "description": "Snackbar action - view download queue" }, - "@libraryPlayback": { - "description": "Section header for playback settings in library settings" + "snackbarUrlCopied": "L'URL de {platform} a été copiée dans le presse-papiers", + "@snackbarUrlCopied": { + "description": "Snackbar - URL copied", + "placeholders": { + "platform": { + "type": "String", + "description": "Platform name (Spotify/Deezer)" + } + } }, - "@downloadPrimaryArtistOnlyOn": { - "description": "Status label when primary-artist-only folder naming is enabled" + "snackbarFileNotFound": "Fichier introuvable", + "@snackbarFileNotFound": { + "description": "Snackbar - file doesn't exist" }, - "lyricsProvidersDiscardContent": "Vous avez des modifications non enregistrées qui seront perdues.", - "previewStop": "Arrêter l'aperçu", - "@previewStop": { - "description": "Tooltip for the button that stops the playing track preview snippet" + "snackbarSelectExtFile": "Veuillez sélectionner un fichier .spotiflac-ext", + "@snackbarSelectExtFile": { + "description": "Snackbar - wrong file type selected" }, - "trackConvertConfirmMessageLossless": "Convertir de {sourceFormat} vers {targetFormat} ? (Sans perte — aucune perte de qualité)\n\nLe fichier d'origine sera supprimé après la conversion.", - "discographyAlbumsOnly": "Albums uniquement", - "@discographyAlbumsOnly": { - "description": "Option - download only albums" + "snackbarProviderPrioritySaved": "Priorité du fournisseur enregistrée", + "@snackbarProviderPrioritySaved": { + "description": "Snackbar - provider order saved" }, - "@editMetadataFieldCopyright": { - "description": "Chip label for copyright field in auto-fill selector" + "snackbarMetadataProviderSaved": "Priorité du fournisseur de métadonnées enregistrée", + "@snackbarMetadataProviderSaved": { + "description": "Snackbar - metadata provider order saved" }, - "extensionsFallbackSubtitle": "Choisissez les extensions de téléchargement installées qui peuvent servir de solution de secours", - "aboutSocial": "Réseaux sociaux", - "@aboutSocial": { - "description": "Section for social links" - }, - "audioAnalysisNyquist": "Nyquist", - "trackCoverSelected": "Pochette choisie", - "@trackCoverSelected": { - "description": "Label for the newly selected cover preview" - }, - "downloadDeduplicationEnabled": "Les morceaux déjà téléchargés seront ignorés", - "@downloadDeduplicationEnabled": { - "description": "Subtitle when deduplication is on" - }, - "homeEmptyTitle": "Aucun moteur de recherche pour le moment", - "@homeEmptyTitle": { - "description": "Title shown on home when no providers are available yet" - }, - "@extensionHealthUnknown": { - "description": "Extension service health status - unknown" - }, - "storeInstalled": "Installé", - "@storeInstalled": { - "description": "Already installed badge" - }, - "trackReplayGainSuccess": "Ajout des balises ReplayGain", - "@trackReplayGainSuccess": { - "description": "Snackbar message after ReplayGain tags written for a single track" - }, - "libraryShowDuplicateIndicatorSubtitle": "Afficher lors de la recherche de pistes existantes", - "@collectionPlaylistRenamed": { - "description": "Snackbar after renaming playlist" - }, - "@trackConvertResamplerSoxr": { - "description": "Lossless conversion SoX resampler option" - }, - "@dialogUnsavedChanges": { - "description": "Dialog message - unsaved changes" - }, - "dialogDownload": "Télécharger", - "@dialogDownload": { - "description": "Confirm button in Download All dialog" - }, - "trackLyricsLoadFailed": "Impossible de charger les paroles", - "@backupContentsTitle": { - "description": "Header above the list summarizing what the backup contains" - }, - "@safMigrationTitle": { - "description": "Title of SAF migration dialog" - }, - "@trackReEnrichFieldLyrics": { - "description": "Checkbox label for lyrics field in re-enrich" - }, - "setupPermissionDeniedMessage": "Autorisation refusée. Veuillez accorder toutes les autorisations pour continuer.", - "@setupPermissionDeniedMessage": { - "description": "Error when permission denied" - }, - "settingsDownloadNetworkWifiOnly": "Wi-Fi uniquement", - "@settingsDownloadNetworkWifiOnly": { - "description": "Network option - only use WiFi" - }, - "@backupIncludeSecrets": { - "description": "Toggle to include secret extension settings (tokens, API keys) in the backup" - }, - "@libraryFilterMetadataMissingAlbumArtist": { - "description": "Filter option - items missing album artist" - }, - "@extensionHealthServiceUnknown": { - "description": "Tooltip for unknown extension service health" + "snackbarExtensionInstalled": "{extensionName} est installée.", + "@snackbarExtensionInstalled": { + "description": "Snackbar - extension installed successfully", + "placeholders": { + "extensionName": { + "type": "String" + } + } }, "snackbarExtensionUpdated": "{extensionName} a été mis à jour.", "@snackbarExtensionUpdated": { @@ -2999,114 +1055,365 @@ } } }, - "homeEmptySubtitle": "Installez une extension pour continuer.", - "@settingsTitle": { - "description": "Settings screen title" + "snackbarFailedToInstall": "Échec de l'installation de l'extension", + "@snackbarFailedToInstall": { + "description": "Snackbar - extension install error" }, - "@libraryFilterMetadataIncorrectIsrcFormat": { - "description": "Filter option - items with an invalid ISRC format" + "snackbarFailedToUpdate": "Échec de la mise à jour de l'extension", + "@snackbarFailedToUpdate": { + "description": "Snackbar - extension update error" }, - "@notifLibraryScanComplete": { - "description": "Notification title when library scan finishes" + "errorRateLimited": "Débit limité", + "@errorRateLimited": { + "description": "Error title - too many requests" }, - "@logIssueIspBlockingLabel": { - "description": "Diagnostic badge label when ISP blocking is detected" + "errorRateLimitedMessage": "Trop de requêtes. Veuillez patienter quelques instants avant de relancer la recherche.", + "@errorRateLimitedMessage": { + "description": "Error message - rate limit explanation" }, - "tutorialDownloadTitle": "Télécharger de la musique", - "@tutorialDownloadTitle": { - "description": "Tutorial download page title" + "errorNoTracksFound": "Aucun titre trouvé", + "@errorNoTracksFound": { + "description": "Error - search returned no results" }, - "unknownTitle": "Titre inconnu", - "@unknownTitle": { - "description": "Fallback track title when metadata is missing" + "searchEmptyResultSubtitle": "Essayez un autre mot-clé", + "@searchEmptyResultSubtitle": { + "description": "Subtitle shown under the empty search result state on the home screen" }, - "navLibrary": "Bibliothèque", - "@navLibrary": { - "description": "Bottom navigation - Library tab" + "errorUrlNotRecognized": "Lien non reconnu", + "@errorUrlNotRecognized": { + "description": "Error title - URL not handled by any extension or service" }, - "@snackbarAlreadyDownloaded": { - "description": "Snackbar - track already exists", + "errorUrlNotRecognizedMessage": "Ce lien n'est pas pris en charge. Vérifiez que l'URL est correcte et qu'une extension compatible est installée.", + "@errorUrlNotRecognizedMessage": { + "description": "Error message - URL not recognized explanation" + }, + "errorUrlFetchFailed": "Impossible de charger le contenu de ce lien. Veuillez réessayer.", + "@errorUrlFetchFailed": { + "description": "Error message - generic URL fetch failure" + }, + "errorMissingExtensionSource": "Impossible de charger {item} : source de l'extension manquante", + "@errorMissingExtensionSource": { + "description": "Error - extension source not available", "placeholders": { - "trackName": { + "item": { "type": "String" } } }, - "editMetadataSelectAll": "Tout", - "@editMetadataSelectAll": { - "description": "Button to select all fields for auto-fill" + "actionPause": "Pause", + "@actionPause": { + "description": "Action button - pause download" }, - "storeEmptyNoExtensions": "Aucune extension disponible", - "@storeEmptyNoExtensions": { - "description": "Message when store has no extensions" + "actionResume": "Resumer", + "@actionResume": { + "description": "Action button - resume download" }, - "optionsUpdateChannelWarning": "La version préliminaire peut contenir des bogues ou des fonctionnalités incomplètes", - "@optionsUpdateChannelWarning": { - "description": "Warning about preview channel" + "actionCancel": "Annuler", + "@actionCancel": { + "description": "Action button - cancel operation" }, - "@collectionPlaylistNameHint": { - "description": "Hint text for playlist name input" + "actionSelectAll": "Tout sélectionner", + "@actionSelectAll": { + "description": "Action button - select all items" }, - "notifLibraryScanComplete": "Analyse de la bibliothèque terminée", - "editMetadataFieldIsrc": "ISRC", - "@editMetadataFieldIsrc": { - "description": "Chip label for ISRC field in auto-fill selector" + "actionDeselect": "Désélectionner", + "@actionDeselect": { + "description": "Action button - deselect all" }, - "@libraryFolderHint": { - "description": "Placeholder when no folder selected" - }, - "homeSearchHintDefault": "Collez une URL valide ou effectuez une recherche...", - "@homeSearchHintDefault": { - "description": "Default placeholder for the main search field on Home" - }, - "extensionsNoExtensionsSubtitle": "Installez les fichiers .spotiflac-ext pour ajouter de nouveaux fournisseurs", - "@extensionsNoExtensionsSubtitle": { - "description": "Empty state subtitle" - }, - "@extensionEnterValue": { - "description": "Hint for editing an extension setting value" - }, - "backupRestoreConfirmTitle": "Restaurer cette sauvegarde ?", - "@backupRestoreConfirmTitle": { - "description": "Confirmation dialog title before restoring a backup" - }, - "@libraryScanSelectFolderFirst": { - "description": "Message when trying to scan without folder" - }, - "@qualityHiResFlac": { - "description": "Quality option - high resolution FLAC" - }, - "aboutSpecialThanks": "Remerciements particuliers", - "@aboutSpecialThanks": { - "description": "Section for special thanks" - }, - "storeInstall": "Installer", - "@storeInstall": { - "description": "Install extension button" - }, - "@collectionWishlistEmptySubtitle": { - "description": "Wishlist empty state subtitle" - }, - "historyFilterAlbums": "Albums", - "extensionCustomUrlHandlingSubtitle": "Cette extension prend en charge les liens provenant de ces sites", - "@extensionCustomUrlHandlingSubtitle": { - "description": "Extension detail subtitle for custom URL handling" - }, - "filenameShowAdvancedTagsDescription": "Activer les balises de formatage pour le remplissage des pistes et les formats de date", - "@aboutReportIssue": { - "description": "Link to report bugs" - }, - "@folderOrganizationByPlaylist": { - "description": "Folder option - playlist folders" - }, - "@dateWeeksAgo": { - "description": "Relative date - weeks ago", + "selectionSelected": "{count} sélectionnés", + "@selectionSelected": { + "description": "Selection count indicator", "placeholders": { "count": { "type": "int" } } }, + "selectionAllSelected": "Toutes les pistes sélectionnées", + "@selectionAllSelected": { + "description": "Status - all items selected" + }, + "selectionSelectToDelete": "Sélectionnez les titres à supprimer", + "@selectionSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "progressFetchingMetadata": "Récupération des métadonnées... {current}/{total}", + "@progressFetchingMetadata": { + "description": "Progress indicator - loading track info", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "progressReadingCsv": "Lecture du fichier CSV...", + "@progressReadingCsv": { + "description": "Progress indicator - parsing CSV file" + }, + "searchSongs": "Titres", + "@searchSongs": { + "description": "Search result category - songs" + }, + "searchArtists": "Artistes", + "@searchArtists": { + "description": "Search result category - artists" + }, + "searchAlbums": "Albums", + "@searchAlbums": { + "description": "Search result category - albums" + }, + "searchPlaylists": "Playlists", + "@searchPlaylists": { + "description": "Search result category - playlists" + }, + "searchSortTitle": "Trier les résultats", + "@searchSortTitle": { + "description": "Bottom sheet title for search sort options" + }, + "searchSortDefault": "Par défaut", + "@searchSortDefault": { + "description": "Sort option - default API order" + }, + "searchSortTitleAZ": "Titre (A-Z)", + "@searchSortTitleAZ": { + "description": "Sort option - title ascending" + }, + "searchSortTitleZA": "Titre (Z-A)", + "@searchSortTitleZA": { + "description": "Sort option - title descending" + }, + "searchSortArtistAZ": "Artiste (A-Z)", + "@searchSortArtistAZ": { + "description": "Sort option - artist ascending" + }, + "searchSortArtistZA": "Artiste (Z-A)", + "@searchSortArtistZA": { + "description": "Sort option - artist descending" + }, + "searchSortDurationShort": "Durée (la plus courte)", + "@searchSortDurationShort": { + "description": "Sort option - shortest duration first" + }, + "searchSortDurationLong": "Durée (la plus longue)", + "@searchSortDurationLong": { + "description": "Sort option - longest duration first" + }, + "searchSortDateOldest": "Date de sortie (la plus ancienne)", + "@searchSortDateOldest": { + "description": "Sort option - oldest release first" + }, + "searchSortDateNewest": "Date de sortie (la plus récente)", + "@searchSortDateNewest": { + "description": "Sort option - newest release first" + }, + "tooltipPlay": "Lecture", + "@tooltipPlay": { + "description": "Tooltip - play button" + }, + "filenameFormat": "Format des noms de fichiers", + "@filenameFormat": { + "description": "Setting title - filename pattern" + }, + "filenameShowAdvancedTags": "Afficher les balises avancées", + "@filenameShowAdvancedTags": { + "description": "Toggle label for showing advanced filename tags" + }, + "filenameShowAdvancedTagsDescription": "Activer les balises de formatage pour le remplissage des pistes et les formats de date", + "@filenameShowAdvancedTagsDescription": { + "description": "Description for advanced filename tag toggle" + }, + "folderOrganizationNone": "Aucune organisation", + "@folderOrganizationNone": { + "description": "Folder option - flat structure" + }, + "folderOrganizationByPlaylist": "Par playlist", + "@folderOrganizationByPlaylist": { + "description": "Folder option - playlist folders" + }, + "folderOrganizationByPlaylistSubtitle": "Un dossier distinct pour chaque playlist", + "@folderOrganizationByPlaylistSubtitle": { + "description": "Subtitle for playlist folder option" + }, + "folderOrganizationByArtist": "Par artiste", + "@folderOrganizationByArtist": { + "description": "Folder option - artist folders" + }, + "folderOrganizationByAlbum": "Par album", + "@folderOrganizationByAlbum": { + "description": "Folder option - album folders" + }, + "folderOrganizationByArtistAlbum": "Artiste/Album", + "@folderOrganizationByArtistAlbum": { + "description": "Folder option - nested folders" + }, + "folderOrganizationDescription": "Classer les fichiers téléchargés dans des dossiers", + "@folderOrganizationDescription": { + "description": "Folder organization sheet description" + }, + "folderOrganizationNoneSubtitle": "Tous les fichiers du dossier « Téléchargements »", + "@folderOrganizationNoneSubtitle": { + "description": "Subtitle for no organization option" + }, + "folderOrganizationByArtistSubtitle": "Un dossier distinct pour chaque artiste", + "@folderOrganizationByArtistSubtitle": { + "description": "Subtitle for artist folder option" + }, + "folderOrganizationByAlbumSubtitle": "Un dossier distinct pour chaque album", + "@folderOrganizationByAlbumSubtitle": { + "description": "Subtitle for album folder option" + }, + "folderOrganizationByArtistAlbumSubtitle": "Dossiers imbriqués pour les artistes et les albums", + "@folderOrganizationByArtistAlbumSubtitle": { + "description": "Subtitle for nested folder option" + }, + "updateAvailable": "Mise à jour disponible", + "@updateAvailable": { + "description": "Update dialog title" + }, + "updateLater": "Plus tard", + "@updateLater": { + "description": "Update button - dismiss" + }, + "updateStartingDownload": "Début du téléchargement...", + "@updateStartingDownload": { + "description": "Update status - initializing" + }, + "updateDownloadFailed": "Échec du téléchargement", + "@updateDownloadFailed": { + "description": "Update error title" + }, + "updateFailedMessage": "Échec du téléchargement de la mise à jour", + "@updateFailedMessage": { + "description": "Update error message" + }, + "updateNewVersionReady": "Une nouvelle version est disponible", + "@updateNewVersionReady": { + "description": "Update subtitle" + }, + "updateRequiredTitle": "Mise à jour requise", + "@updateRequiredTitle": { + "description": "Title of the mandatory update dialog shown when the installed version is too old" + }, + "updateRequiredNotice": "Cette version a {count} versions de retard et n'est plus prise en charge. Effectuez la mise à jour pour continuer à utiliser l'application.", + "@updateRequiredNotice": { + "description": "Subtitle of the mandatory update dialog; explains why the dialog cannot be dismissed", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "updateCurrent": "Actuel", + "@updateCurrent": { + "description": "Label for current version" + }, + "updateNew": "Nouveau", + "@updateNew": { + "description": "Label for new version" + }, + "updateDownloading": "Téléchargement en cours...", + "@updateDownloading": { + "description": "Update status - downloading" + }, + "updateWhatsNew": "Quoi de neuf ?", + "@updateWhatsNew": { + "description": "Changelog section title" + }, + "updateDownloadInstall": "Télécharger & Installer", + "@updateDownloadInstall": { + "description": "Update button - download and install" + }, + "updateDontRemind": "Ne plus me le rappeler", + "@updateDontRemind": { + "description": "Update button - skip this version" + }, + "providerPriorityTitle": "Priorité accordée aux prestataires", + "@providerPriorityTitle": { + "description": "Provider priority page title" + }, + "providerPriorityDescription": "Faites glisser pour réorganiser les fournisseurs de téléchargement. L'application testera les fournisseurs dans l'ordre indiqué, de haut en bas, lors du téléchargement des morceaux.", + "@providerPriorityDescription": { + "description": "Provider priority page description" + }, + "providerPriorityInfo": "Si un morceau n'est pas disponible chez le premier fournisseur, l'application essaiera automatiquement le suivant.", + "@providerPriorityInfo": { + "description": "Info tip about fallback behavior" + }, + "providerPriorityFallbackExtensionsDescription": "Sélectionnez les extensions de téléchargement installées qui peuvent être utilisées lors du basculement automatique.", + "@providerPriorityFallbackExtensionsDescription": { + "description": "Section description for extension fallback selection" + }, + "providerPriorityFallbackExtensionsHint": "Seules les extensions activées disposant de la fonctionnalité « fournisseur de téléchargement » sont répertoriées ici.", + "@providerPriorityFallbackExtensionsHint": { + "description": "Hint below the extension fallback selection list" + }, + "providerExtension": "Extension", + "@providerExtension": { + "description": "Label for extension-provided providers" + }, + "metadataProviderPriorityTitle": "Priorité des métadonnées", + "@metadataProviderPriorityTitle": { + "description": "Metadata priority page title" + }, + "metadataProviderPriorityDescription": "Faites glisser pour réorganiser les fournisseurs de métadonnées. L'application testera les fournisseurs dans l'ordre de haut en bas lors de la recherche de morceaux et de la récupération des métadonnées.", + "@metadataProviderPriorityDescription": { + "description": "Metadata priority page description" + }, + "metadataProviderPriorityInfo": "Deezer n'impose aucune limite de débit et est recommandé comme service principal. Spotify peut limiter le débit après un certain nombre de requêtes.", + "@metadataProviderPriorityInfo": { + "description": "Info tip about rate limits" + }, + "logTitle": "Journaux", + "@logTitle": { + "description": "Logs screen title" + }, + "logCopied": "Journaux copiés dans le presse-papiers", + "@logCopied": { + "description": "Snackbar - logs copied" + }, + "logSearchHint": "Recherche dans les journaux...", + "@logSearchHint": { + "description": "Log search placeholder" + }, + "logFilterLevel": "Niveau", + "@logFilterLevel": { + "description": "Filter by log level" + }, + "logFilterSection": "Filtre", + "@logFilterSection": { + "description": "Filter section title" + }, + "logShareLogs": "Partager les journaux", + "@logShareLogs": { + "description": "Share button tooltip" + }, + "logClearLogs": "Effacer les journaux", + "@logClearLogs": { + "description": "Clear button tooltip" + }, + "logClearLogsTitle": "Effacer les journaux", + "@logClearLogsTitle": { + "description": "Clear logs dialog title" + }, + "logClearLogsMessage": "Êtes-vous sûr de vouloir effacer tous les journaux ?", + "@logClearLogsMessage": { + "description": "Clear logs confirmation message" + }, + "logFilterBySeverity": "Filtrer les journaux par niveau de gravité", + "@logFilterBySeverity": { + "description": "Filter dialog title" + }, + "logNoLogsYet": "Pas encore de journal", + "@logNoLogsYet": { + "description": "Empty state title" + }, + "logNoLogsYetSubtitle": "Les journaux s'afficheront ici au fur et à mesure que vous utiliserez l'application", + "@logNoLogsYetSubtitle": { + "description": "Empty state subtitle" + }, "logEntriesFiltered": "Entrées ({count} résultats filtrés)", "@logEntriesFiltered": { "description": "Log count with filter active", @@ -3116,173 +1423,6 @@ } } }, - "@lyricsModeDescription": { - "description": "Lyrics mode picker description" - }, - "@setupAppDocumentsFolderSubtitle": { - "description": "Subtitle for documents folder" - }, - "storeAddRepoButton": "Ajouter un dépôt", - "@storeAddRepoButton": { - "description": "Button to submit a new repository URL" - }, - "@collectionLovedEmptyTitle": { - "description": "Loved empty state title" - }, - "aboutReportIssue": "Signaler un problème", - "snackbarFailedToWriteStorage": "Échec de l'écriture sur le support de stockage", - "@snackbarFailedToWriteStorage": { - "description": "Snackbar when writing metadata back to file fails" - }, - "errorInvalidFolderSelected": "Dossier non valide sélectionné", - "allFilesAccessDisabledMessage": "L'accès à tous les fichiers est désactivé. L'application disposera d'un accès limité au stockage.", - "@allFilesAccessDisabledMessage": { - "description": "Snackbar message when user disables all files access" - }, - "downloadMusixmatchLanguageCode": "Code de langue", - "@downloadMusixmatchLanguageCode": { - "description": "Label for Musixmatch language input field" - }, - "dialogUnsavedChanges": "Vous avez des modifications non enregistrées. Voulez-vous les ignorer ?", - "setupChooseFromFiles": "Sélectionnez un fichier", - "@setupChooseFromFiles": { - "description": "iOS file picker option" - }, - "@collectionFavoriteArtistsEmptySubtitle": { - "description": "Favorite artists empty state subtitle" - }, - "downloadLossy320FormatDesc": "Choisissez le format de sortie pour les téléchargements avec perte à 320 kbps. Le flux d'origine sera converti au format que vous aurez sélectionné lorsque cela sera nécessaire.", - "@backupRestoreConfirmButton": { - "description": "Confirm button to proceed with restore" - }, - "@queueEmptyAlbumsSubtitle": { - "description": "Empty state subtitle for album downloads" - }, - "collectionRemovedFromWishlist": "« {trackName} » a été supprimé de la liste de souhaits", - "@collectionRemovedFromWishlist": { - "description": "Snackbar after removing track from wishlist", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "extensionsInstalledSuccess": "L'extension a été installée avec succès", - "progressReadingCsv": "Lecture du fichier CSV...", - "@progressReadingCsv": { - "description": "Progress indicator - parsing CSV file" - }, - "artistReleases": "Sorties", - "@artistReleases": { - "description": "Section header for all artist releases" - }, - "extensionVerificationBrowserTitle": "Navigateur de vérification", - "@optionsDefaultSearchTabSubtitle": { - "description": "Subtitle for the preferred default search tab setting" - }, - "optionsArtistTagModeJoinedSubtitle": "Indiquez une seule valeur ARTIST, par exemple « Artiste A, Artiste B », pour garantir une compatibilité maximale avec les lecteurs.", - "downloadLossy320": "Compression avec perte à 320 kbps", - "@downloadLossy320": { - "description": "Quality option label for lossy 320kbps" - }, - "queueFlacAction": "File d'attente FLAC", - "@queueFlacAction": { - "description": "Action/button label for queueing FLAC redownloads for local tracks" - }, - "@setupDownloadLocationIosMessage": { - "description": "iOS-specific folder info" - }, - "trackConvertOriginal": "Original", - "sectionLyricsProviderOptions": "Options du fournisseur", - "nowPlayingTitle": "En cours de lecture", - "@nowPlayingTitle": { - "description": "Title for the now playing screen" - }, - "@extensionHealthChecksConfigured": { - "description": "Extension service health check count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@cacheClearAll": { - "description": "Button label to clear all caches" - }, - "a11yDeselectTrack": "Désélectionner la piste", - "@a11yDeselectTrack": { - "description": "Accessibility label for deselecting a track" - }, - "@lyricsProvidersInfoText": { - "description": "Info tip on lyrics provider priority page" - }, - "queueEmptyHistory": "Aucun historique de téléchargement", - "dialogClear": "Effacer", - "@dialogClear": { - "description": "Dialog button - clear items" - }, - "allFilesAccessDescription": "Activez cette option si vous rencontrez des erreurs d'écriture lors de l'enregistrement dans des dossiers personnalisés. À partir d'Android 13, l'accès à certains répertoires est restreint par défaut.", - "@allFilesAccessDescription": { - "description": "Description explaining when to enable all files access" - }, - "trackConvertConfirmTitle": "Confirmer la conversion", - "storeCategoryLyrics": "Paroles", - "@storeCategoryLyrics": { - "description": "Store extension category - lyrics" - }, - "@lyricsProvidersDescription": { - "description": "Description on the lyrics provider priority page" - }, - "tooltipLoveAll": "Tout aimer", - "downloadDirectory": "Répertoire de téléchargement", - "@downloadDirectory": { - "description": "Setting - download folder" - }, - "@tutorialExtensionsTip2": { - "description": "Tutorial extensions tip 2" - }, - "libraryFolder": "Dossier de bibliothèque", - "@metadataProviderPriorityTitle": { - "description": "Metadata priority page title" - }, - "@cleanupOrphanedDownloadsResult": { - "description": "Snackbar after orphan cleanup", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cacheExploreFeedDesc": "Contenu de l'onglet « Explorer » (nouvelles sorties, tendances). Se mettra à jour lors de votre prochaine visite.", - "@cacheExploreFeedDesc": { - "description": "Description of what explore feed cache contains" - }, - "a11yOpenTrackByArtist": "Écouter le morceau {trackName} de {artistName}", - "@a11yOpenTrackByArtist": { - "description": "Accessibility label for opening a track item", - "placeholders": { - "trackName": { - "type": "String" - }, - "artistName": { - "type": "String" - } - } - }, - "announcementUnableToOpenLink": "Impossible d'ouvrir le lien. Veuillez réessayer.", - "libraryFilterSortAlbumDesc": "Album (Z-A)", - "@libraryFilterSortAlbumDesc": { - "description": "Sort option - album descending" - }, - "trackConvertBitrate": "Débit binaire", - "@trackConvertBitrate": { - "description": "Label for bitrate selection" - }, - "audioAnalysisFileSize": "Taille", - "extensionHealthServiceOnline": "Service en ligne", - "@extensionHealthServiceOnline": { - "description": "Tooltip for online extension service" - }, "logEntries": "Entrées ({count})", "@logEntries": { "description": "Total log count", @@ -3292,846 +1432,552 @@ } } }, - "trackConvertConfirmMessage": "Convertir du format {sourceFormat} au format {targetFormat} avec un débit binaire de {bitrate} ?\n\nLe fichier d'origine sera supprimé après la conversion.", - "@trackConvertConfirmMessage": { - "description": "Confirmation dialog message", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "bitrate": { - "type": "String" - } - } + "channelStable": "Stable", + "@channelStable": { + "description": "Update channel - stable releases" }, - "@optionsArtistTagModeSplitVorbisSubtitle": { - "description": "Subtitle for split Vorbis artist tag mode" + "channelPreview": "Aperçu", + "@channelPreview": { + "description": "Update channel - beta/preview releases" }, - "folderOrganizationByAlbum": "Par album", - "@folderOrganizationByAlbum": { - "description": "Folder option - album folders" + "sectionSearchSource": "Rechercher dans la source", + "@sectionSearchSource": { + "description": "Settings section header" }, - "libraryPlayback": "Lecture", - "@storeFilterAll": { - "description": "Repo filter - all extensions" + "sectionDownload": "Télécharger", + "@sectionDownload": { + "description": "Settings section header" }, - "aboutApp": "Application", - "@aboutApp": { - "description": "Section for app info" + "sectionPerformance": "Performances", + "@sectionPerformance": { + "description": "Settings section header" }, - "optionsReplayGainSubtitleOff": "Désactivé : aucune balise de normalisation du volume", - "@optionsReplayGainSubtitleOff": { - "description": "Subtitle when ReplayGain is disabled" + "sectionApp": "Application", + "@sectionApp": { + "description": "Settings section header" }, - "@storeRepoDialogTitle": { - "description": "Title of the change/remove repository dialog" + "sectionData": "Données", + "@sectionData": { + "description": "Settings section header" }, - "settingsLyricsSubtitle": "Intégration, mode, fournisseurs, options linguistiques", - "@settingsLyricsSubtitle": { - "description": "Subtitle for lyrics settings" + "sectionDebug": "Débogage", + "@sectionDebug": { + "description": "Settings section header" }, - "logIssueIspBlockingLabel": "BLOCAGE PAR LE FAI DÉTECTÉ", - "storeFilterIntegration": "Intégration", - "@storeFilterIntegration": { - "description": "Repo filter - integrations" + "sectionService": "Service", + "@sectionService": { + "description": "Settings section header" }, - "@lyricsProvidersAtLeastOne": { - "description": "Snackbar when user tries to disable the last enabled provider" - }, - "@appearanceHistoryViewGrid": { - "description": "Grid layout option" - }, - "trackDownloaded": "Téléchargé", - "extensionVerificationHelpMessageManual": "SpotiFLAC Mobile n'a pas pu ouvrir automatiquement le navigateur. Ouvrez ce lien dans votre navigateur ou copiez-le manuellement.", - "setupDownloadLocationIosMessage": "Sous iOS, les fichiers téléchargés sont enregistrés dans le dossier « Documents » de l'application. Vous pouvez y accéder via l'application Fichiers.", - "optionsArtistTagModeDescription": "Choisissez comment les noms de plusieurs artistes doivent apparaître dans les balises intégrées.", - "@optionsArtistTagModeDescription": { - "description": "Bottom-sheet description for artist tag mode setting" - }, - "@queueRetryAllFailed": { - "description": "Button to retry every failed download in the queue", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@trackConvertDitherTriangularHp": { - "description": "Lossless conversion high-pass triangular dither option" - }, - "@extensionVerificationCopyLink": { - "description": "Button to copy the extension verification URL" - }, - "searchSongs": "Titres", - "@searchSongs": { - "description": "Search result category - songs" - }, - "@appearanceHistoryView": { - "description": "Layout style for history" + "sectionAudioQuality": "Qualité audio", + "@sectionAudioQuality": { + "description": "Settings section header" }, "sectionFileSettings": "Paramètres du fichier", "@sectionFileSettings": { "description": "Settings section header" }, - "@cancelDownloadTitle": { - "description": "Dialog title when confirming cancellation of an active download" + "sectionLyrics": "Paroles", + "@sectionLyrics": { + "description": "Settings section header" }, - "@cacheLibraryCover": { - "description": "Cache item title for local library cover art images" + "lyricsMode": "Mode Paroles", + "@lyricsMode": { + "description": "Setting - how to save lyrics" }, - "audioAnalysisSpectralCutoff": "Limite spectrale", - "dialogDelete": "Supprimer", - "@dialogDelete": { - "description": "Dialog button - delete item" + "lyricsModeDescription": "Choisissez comment les paroles sont enregistrées avec vos téléchargements", + "@lyricsModeDescription": { + "description": "Lyrics mode picker description" }, - "tutorialLibraryDesc": "Downloaded and locally scanned music is organized in your Library.", - "@tutorialLibraryDesc": { - "description": "Tutorial library page description" + "lyricsModeEmbed": "Intégrer dans un fichier", + "@lyricsModeEmbed": { + "description": "Lyrics mode option - embed in audio file" }, - "@queueDownloadSpeedStatus": { - "description": "Queue status while downloading with speed", - "placeholders": { - "speed": { - "type": "String" - } - } + "lyricsModeEmbedSubtitle": "Paroles enregistrées dans les métadonnées FLAC", + "@lyricsModeEmbedSubtitle": { + "description": "Subtitle for embed option" }, - "@extensionsHomeFeedOffSubtitle": { - "description": "Extensions page - subtitle for off home feed option" - }, - "cacheCleanupResult": "Nettoyage terminé : {downloadCount} téléchargements orphelins, {libraryCount} entrées de bibliothèque manquantes", - "@cacheCleanupResult": { - "description": "Snackbar after unused data cleanup", - "placeholders": { - "downloadCount": { - "type": "int" - }, - "libraryCount": { - "type": "int" - } - } - }, - "trackConvertLosslessHint": "Conversion sans perte — aucune perte de qualité", - "@trackConvertLosslessHint": { - "description": "Hint shown when converting between lossless formats" - }, - "collectionRenamePlaylist": "Renommer la playlist", - "@collectionRenamePlaylist": { - "description": "Action to rename playlist" - }, - "@libraryFilterTitle": { - "description": "Filter bottom sheet title" - }, - "@storageModeAppFolder": { - "description": "Storage mode option - app-managed folder" - }, - "logTotalErrors": "Nombre total d'erreurs : {count}", - "@logTotalErrors": { - "description": "Total error count in log issue analysis", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@setupStorageRequired": { - "description": "Title when storage permission needed" - }, - "@snackbarMetadataProviderSaved": { - "description": "Snackbar - metadata provider order saved" - }, - "@selectionBatchConvertConfirmTitle": { - "description": "Confirmation dialog title for batch conversion" - }, - "extensionsHomeFeedAutoSubtitle": "Sélectionnez automatiquement la meilleure option disponible", - "@extensionsHomeFeedAutoSubtitle": { - "description": "Extensions page - subtitle for auto home feed option" - }, - "setupLanguageDescription": "Sélectionnez la langue de votre choix pour l'application. Vous pourrez la modifier ultérieurement dans les Paramètres.", - "settingsBackupSubtitle": "Transférer votre bibliothèque, votre historique et vos paramètres vers un nouvel appareil", - "@settingsBackupSubtitle": { - "description": "Subtitle for backup and restore settings item" - }, - "recentTypeArtist": "Artiste", - "@recentTypeArtist": { - "description": "Recent access item type - artist" - }, - "collectionPlaylistEmptySubtitle": "Appuyez longuement sur le bouton « + » sur n'importe quel morceau pour l'ajouter ici", - "artistCompilations": "Compilations", - "@artistCompilations": { - "description": "Section header for compilations" - }, - "snackbarFolderPickerFailed": "Impossible d'ouvrir le sélecteur de dossiers : {error}", - "@snackbarFolderPickerFailed": { - "description": "Snackbar shown when folder picker fails to open", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "@optionsDetailedLoggingOn": { - "description": "Status when logging enabled" - }, - "settingsSaveDownloadHistory": "Enregistrer l'historique des téléchargements", - "@settingsSaveDownloadHistory": { - "description": "Settings switch title for storing completed downloads in history" - }, - "@storeCategoryIntegration": { - "description": "Store extension category - integration" - }, - "a11yOpenItemCount": "Ouvrir {title}, {count} {count, plural, =1{item} other{éléments}}", - "@a11yOpenItemCount": { - "description": "Accessibility label for opening a grouped item with count", - "placeholders": { - "title": { - "type": "String" - }, - "count": { - "type": "int" - } - } - }, - "trackFileInfo": "Informations sur le fichier", - "@trackFileInfo": { - "description": "Tab title - file information" - }, - "libraryFilterMetadataMissingAlbumArtist": "Artiste d'album manquant", - "audioAnalysisNoClipping": "Pas de coupure", - "tutorialSettingsDesc": "Fine-tune downloads, playback, Library behavior, appearance, and storage.", - "@tutorialSettingsDesc": { - "description": "Tutorial settings page description" + "lyricsModeExternal": "Fichier .lrc externe", + "@lyricsModeExternal": { + "description": "Lyrics mode option - separate LRC file" }, "lyricsModeExternalSubtitle": "Fichier .lrc distinct pour les lecteurs tels que Samsung Music", "@lyricsModeExternalSubtitle": { "description": "Subtitle for external option" }, - "trackLoadLyrics": "Charger les paroles", - "@trackLoadLyrics": { - "description": "Action - fetch lyrics" + "lyricsModeBoth": "Les deux", + "@lyricsModeBoth": { + "description": "Lyrics mode option - embed and external" }, - "extensionVerificationHelpTitleWaiting": "La vérification est toujours en attente", - "@extensionVerificationHelpTitleWaiting": { - "description": "Dialog title when verification is taking longer than expected" + "lyricsModeBothSubtitle": "Intégrer et enregistrer le fichier .lrc", + "@lyricsModeBothSubtitle": { + "description": "Subtitle for both option" }, - "libraryFilterReset": "Réinitialiser", - "@libraryFilterReset": { - "description": "Reset all filters button" - }, - "@downloadAlbumArtistMetadataFull": { - "description": "Status label when album-artist folder filtering uses full metadata" - }, - "storeTitle": "Répertoire des extensions", - "@storeTitle": { - "description": "Repo screen title" - }, - "libraryCleared": "Bibliothèque vidée", - "@libraryCleared": { - "description": "Snackbar after clearing library" - }, - "queueDownloadCompleted": "Téléchargement terminé", - "@queueDownloadCompleted": { - "description": "Accessibility label for completed download state in queue" - }, - "libraryTitle": "Bibliothèque locale", - "@libraryTitle": { - "description": "Library settings page title" - }, - "queueAlbumCount": "{count, plural, =1{1 album} other{{count} albums}}", - "@queueAlbumCount": { - "description": "Album count label with plural support", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "libraryClearConfirmTitle": "Vider la bibliothèque", - "@backupExportSectionTitle": { - "description": "Section title for the export/backup card" - }, - "dialogClearAll": "Tout effacer", - "@dialogClearAll": { - "description": "Dialog title - clear all items" - }, - "tutorialExtensionsDesc": "Extensions add search, download, metadata, lyrics, and other integrations.", - "@tutorialExtensionsDesc": { - "description": "Tutorial extensions page description" - }, - "libraryExternalPlayer": "Lecteur externe", - "@libraryExternalPlayer": { - "description": "Setting option to use an external music player" - }, - "editMetadataFieldGenre": "Genre", - "@tutorialLibraryTitle": { - "description": "Tutorial library page title" - }, - "folderOrganizationByPlaylist": "Par playlist", - "queueTrackCount": "{count, plural, =1{1 titre} other{{count} titres}}", - "@searchSortTitle": { - "description": "Bottom sheet title for search sort options" - }, - "editMetadataSelectNone": "Aucun", - "@historyFilterSingles": { - "description": "Filter chip - show singles only" - }, - "@setupLanguageTitle": { - "description": "Title for the language selection step in setup" - }, - "trackSaveCoverArt": "Enregistrer la pochette", - "@trackSaveCoverArt": { - "description": "Menu action - save album cover art as file" - }, - "@downloadAlbumFolderStructure": { - "description": "Setting - album folder organization" - }, - "lyricsProvidersAtLeastOne": "Au moins un fournisseur doit rester activé", - "@notifDownloadCompleteCount": { - "description": "Notification title when download is complete, with count", - "placeholders": { - "completed": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "setupUseDefault": "Utiliser les paramètres par défaut", - "@setupUseDefault": { - "description": "Button to use default folder" - }, - "logNoLogsYetSubtitle": "Les journaux s'afficheront ici au fur et à mesure que vous utiliserez l'application", - "@logNoLogsYetSubtitle": { - "description": "Empty state subtitle" - }, - "@dateToday": { - "description": "Relative date - today" - }, - "trackSaveLyricsProgress": "Enregistrement des paroles...", - "@trackSaveLyricsProgress": { - "description": "Snackbar while saving lyrics to file" - }, - "trackCoverSaved": "La pochette a été enregistrée sous le nom {fileName}", - "@trackCoverSaved": { - "description": "Snackbar after cover art saved", - "placeholders": { - "fileName": { - "type": "String" - } - } - }, - "trackReEnrichFieldLyrics": "Paroles", - "@audioAnalysisRescan": { - "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" - }, - "@downloadNeteaseIncludeRomanizationEnabled": { - "description": "Subtitle when Netease romanization is on" - }, - "dialogDisableAndClear": "Désactiver et effacer", - "extensionHealthChecksConfigured": "{count} {count, plural, =1{vérification} other{vérifications}} configurées", - "cleanupOrphanedDownloadsSubtitle": "Supprimez les entrées de l'historique correspondant aux fichiers qui n'existent plus", - "@notifLibraryScanProgressWithTotal": { - "description": "Notification body for library scan progress when total is known", - "placeholders": { - "scanned": { - "type": "int" - }, - "total": { - "type": "int" - }, - "percentage": { - "type": "int" - } - } - }, - "@extensionDetailsTags": { - "description": "Section title for extension tags" - }, - "@albumFolderAlbumOnlySubtitle": { - "description": "Folder structure example" - }, - "@audioAnalysisAnalyzing": { - "description": "Loading text while analyzing audio" - }, - "@settingsDonate": { - "description": "Settings menu item - donate page" - }, - "@collectionPlaylistNameRequired": { - "description": "Validation error for empty playlist name" - }, - "@backupImportSectionDescription": { - "description": "Description for the restore action" - }, - "storeFilterLyrics": "Paroles", - "libraryAutoScan": "Analyse automatique", - "@libraryAutoScan": { - "description": "Setting for automatic library scanning" - }, - "safMigrationMessage1": "SpotiFLAC utilise désormais le framework d'accès au stockage Android (SAF) pour les téléchargements. Cela permet de résoudre les erreurs « autorisation refusée » sur Android 10 et versions ultérieures.", - "@safMigrationMessage1": { - "description": "First paragraph of SAF migration dialog" - }, - "setupStorageRequired": "Autorisation de stockage requise", - "@notifLibraryScanErrors": { - "description": "Library scan complete suffix - error count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "appearanceHistoryViewGrid": "Grille", - "trackConvertConverting": "Conversion audio en cours...", - "@trackConvertConverting": { - "description": "Snackbar while converting" - }, - "@setupUseDefaultFolder": { - "description": "Dialog title for default folder" - }, - "optionsArtistTagModeSplitVorbisSubtitle": "Créez une balise « artiste » par artiste pour les fichiers FLAC et Opus ; les fichiers MP3 et M4A restent regroupés.", - "snackbarPlayingNext": "Prochainement", - "@snackbarPlayingNext": { - "description": "Snackbar when a track is inserted as the next queue item" - }, - "optionsDefaultSearchTabSubtitle": "Choisissez l'onglet qui s'ouvre en premier pour les nouveaux résultats de recherche.", - "@editMetadataAutoFillFetch": { - "description": "Button label to fetch online metadata and fill selected fields" - }, - "tutorialSearchDesc": "Search with your selected extension or paste a supported music link.", - "@sectionService": { + "sectionColor": "Couleur", + "@sectionColor": { "description": "Settings section header" }, - "notifUpdateProgress": "{received} / {total} Mo • {percentage}%", - "@discographyDownloadSelected": { - "description": "Button - download selected albums" + "sectionTheme": "Thème", + "@sectionTheme": { + "description": "Settings section header" }, - "cacheClearAllConfirmMessage": "Cette opération effacera toutes les catégories mises en cache sur cette page. Les fichiers musicaux téléchargés ne seront pas supprimés.", - "@cacheClearAllConfirmMessage": { - "description": "Dialog message before clearing all caches" + "sectionLayout": "Mise en page", + "@sectionLayout": { + "description": "Settings section header" }, - "extensionsHomeFeedProvider": "Fournisseur de flux RSS", - "@extensionsHomeFeedProvider": { - "description": "Extensions page - label for home feed provider selector" + "sectionLanguage": "Langue", + "@sectionLanguage": { + "description": "Settings section header for language" }, - "@cacheExploreFeed": { - "description": "Cache item title for explore home feed cache" + "appearanceLanguage": "Langue de l'application", + "@appearanceLanguage": { + "description": "Language setting title" }, - "@audioAnalysisDynamicRange": { - "description": "Dynamic range metric label" + "settingsAppearanceSubtitle": "Thème, couleurs, affichage", + "@settingsAppearanceSubtitle": { + "description": "Appearance settings description" }, - "unknownAlbum": "Album inconnu", - "trackCoverCurrent": "Pochette actuelle", - "downloadSongLinkRegionDesc": "Région utilisée lors de la résolution des liens vers les morceaux via SongLink. Sélectionnez le pays dans lequel vos services de streaming sont disponibles.", - "downloadPrimaryArtistOnlyOff": "Primaire uniquement : Désactivé", - "dialogDone": "C'est fait", - "@dialogDone": { - "description": "Dialog button - action completed" + "settingsDownloadSubtitle": "Service, qualité, solution de secours", + "@settingsDownloadSubtitle": { + "description": "Download settings description" }, - "storeRepoUrlLabel": "URL du dépôt", - "downloadSelectServiceToEnable": "Choisissez un fournisseur proposant des options de qualité pour activer cette fonctionnalité", - "@logIssueRateLimitedSuggestion": { - "description": "Diagnostic badge suggestion for rate limiting" + "settingsExtensionsSubtitle": "Gérez les fournisseurs de téléchargement", + "@settingsExtensionsSubtitle": { + "description": "Extensions settings description" }, - "libraryScanProgress": "{progress} % des {total} fichiers", - "@libraryScanProgress": { - "description": "Scan progress display", + "settingsLogsSubtitle": "Consulter les journaux de l'application pour le débogage", + "@settingsLogsSubtitle": { + "description": "Logs settings description" + }, + "loadingSharedLink": "Chargement du lien partagé...", + "@loadingSharedLink": { + "description": "Status when opening shared URL" + }, + "pressBackAgainToExit": "Appuyez de nouveau sur retour pour quitter", + "@pressBackAgainToExit": { + "description": "Exit confirmation message" + }, + "downloadAllCount": "Tout télécharger ({count})", + "@downloadAllCount": { + "description": "Download all button with count", "placeholders": { - "progress": { - "type": "String" - }, - "total": { + "count": { "type": "int" } } }, - "collectionLovedEmptyTitle": "Le dossier « Favoris » est vide", - "tutorialExtensionsTitle": "Extensions", - "@tutorialExtensionsTitle": { - "description": "Tutorial extensions page title" - }, - "searchSortDurationShort": "Durée (la plus courte)", - "@searchSortDurationShort": { - "description": "Sort option - shortest duration first" + "tracksCount": "{count, plural, =1{1 titre} other{{count} titres}}", + "@tracksCount": { + "description": "Track count display", + "placeholders": { + "count": { + "type": "int" + } + } }, "trackCopyFilePath": "Copier le chemin d'accès au fichier", "@trackCopyFilePath": { "description": "Action - copy file path" }, - "albumFolderArtistAlbumFlatSubtitle": "Artiste/Album/ et Artiste/titre.flac", - "@trackConvertResampler": { - "description": "Section label for lossless conversion resampler options" + "trackRemoveFromDevice": "Supprimer de l'appareil", + "@trackRemoveFromDevice": { + "description": "Action - delete downloaded file" }, - "editMetadataFieldTrackNum": "Piste n°", - "@editMetadataFieldTrackNum": { - "description": "Chip label for track number field in auto-fill selector" + "trackLoadLyrics": "Charger les paroles", + "@trackLoadLyrics": { + "description": "Action - fetch lyrics" }, - "snackbarFailedToUpdate": "Échec de la mise à jour de l'extension", - "@snackbarFailedToUpdate": { - "description": "Snackbar - extension update error" + "trackMetadata": "Métadonnées", + "@trackMetadata": { + "description": "Tab title - track metadata" }, - "notifAlreadyInLibrary": "Déjà dans la bibliothèque", - "@notifAlreadyInLibrary": { - "description": "Notification title when track is already in library" + "trackFileInfo": "Informations sur le fichier", + "@trackFileInfo": { + "description": "Tab title - file information" }, - "collectionPlaylistNameHint": "Nom de la playlist", - "extensionVerificationCopyLink": "Copier le lien", - "@replayGainBatchAnalyzing": { - "description": "Progress dialog title while batch scanning ReplayGain" + "trackLyrics": "Paroles", + "@trackLyrics": { + "description": "Tab title - lyrics" + }, + "trackFileNotFound": "Fichier introuvable", + "@trackFileNotFound": { + "description": "Error - file doesn't exist" + }, + "trackOpenInDeezer": "Ouvrir dans Deezer", + "@trackOpenInDeezer": { + "description": "Action - open track in Deezer app" + }, + "trackOpenInSpotify": "Ouvrir dans Spotify", + "@trackOpenInSpotify": { + "description": "Action - open track in Spotify app" + }, + "trackTrackName": "Nom de la piste", + "@trackTrackName": { + "description": "Metadata label - track title" + }, + "trackArtist": "Artiste", + "@trackArtist": { + "description": "Metadata label - artist name" + }, + "trackAlbumArtist": "Artiste de l'album", + "@trackAlbumArtist": { + "description": "Metadata label - album artist" + }, + "trackAlbum": "Album", + "@trackAlbum": { + "description": "Metadata label - album name" + }, + "trackTrackNumber": "Numéro de piste", + "@trackTrackNumber": { + "description": "Metadata label - track number" + }, + "trackDiscNumber": "Numéro de disque", + "@trackDiscNumber": { + "description": "Metadata label - disc number" + }, + "trackDuration": "Durée", + "@trackDuration": { + "description": "Metadata label - track length" + }, + "trackAudioQuality": "Qualité audio", + "@trackAudioQuality": { + "description": "Metadata label - audio quality" + }, + "trackReplayGainTrackGain": "ReplayGain Track Gain", + "@trackReplayGainTrackGain": { + "description": "Metadata label - ReplayGain track gain" + }, + "trackReplayGainTrackPeak": "ReplayGain Track Peak", + "@trackReplayGainTrackPeak": { + "description": "Metadata label - ReplayGain track peak" + }, + "trackReplayGainAlbumGain": "ReplayGain Album Gain", + "@trackReplayGainAlbumGain": { + "description": "Metadata label - ReplayGain album gain" + }, + "trackReplayGainAlbumPeak": "ReplayGain Album Peak", + "@trackReplayGainAlbumPeak": { + "description": "Metadata label - ReplayGain album peak" + }, + "libraryQualityLabelFileFormat": "Format de fichier", + "@libraryQualityLabelFileFormat": { + "description": "Library audio quality label mode that shows the detected file format" + }, + "trackReleaseDate": "Date de sortie", + "@trackReleaseDate": { + "description": "Metadata label - release date" + }, + "trackGenre": "Genre", + "@trackGenre": { + "description": "Metadata label - music genre" + }, + "trackLabel": "Label", + "@trackLabel": { + "description": "Metadata label - record label" + }, + "trackCopyright": "Droits d'auteur", + "@trackCopyright": { + "description": "Metadata label - copyright information" + }, + "trackDownloaded": "Téléchargé", + "@trackDownloaded": { + "description": "Metadata label - download date" + }, + "trackCopyLyrics": "Copier les paroles", + "@trackCopyLyrics": { + "description": "Action - copy lyrics to clipboard" + }, + "trackLyricsSource": "Source : {source}", + "@trackLyricsSource": { + "description": "Label showing the lyrics source/provider", + "placeholders": { + "source": { + "type": "String" + } + } + }, + "trackLyricsNotAvailable": "Les paroles de ce morceau ne sont pas disponibles", + "@trackLyricsNotAvailable": { + "description": "Message when lyrics not found" + }, + "trackLyricsNotInFile": "Aucune parole n'a été trouvée dans ce fichier", + "@trackLyricsNotInFile": { + "description": "Message when no embedded lyrics in audio file" + }, + "trackFetchOnlineLyrics": "Télécharger depuis Internet", + "@trackFetchOnlineLyrics": { + "description": "Action - fetch lyrics from online providers" + }, + "trackLyricsTimeout": "La requête a expiré. Veuillez réessayer plus tard.", + "@trackLyricsTimeout": { + "description": "Message when lyrics request times out" + }, + "trackLyricsLoadFailed": "Impossible de charger les paroles", + "@trackLyricsLoadFailed": { + "description": "Message when lyrics loading fails" + }, + "trackEmbedLyrics": "Intégrer les paroles", + "@trackEmbedLyrics": { + "description": "Action - embed lyrics into audio file" + }, + "trackLyricsEmbedded": "Les paroles ont été intégrées avec succès", + "@trackLyricsEmbedded": { + "description": "Snackbar - lyrics saved to file" + }, + "trackInstrumental": "Morceau instrumental", + "@trackInstrumental": { + "description": "Message when track is instrumental (no lyrics)" + }, + "trackCopiedToClipboard": "Copié dans le presse-papiers", + "@trackCopiedToClipboard": { + "description": "Snackbar - content copied" + }, + "trackDeleteConfirmTitle": "Supprimer de l'appareil ?", + "@trackDeleteConfirmTitle": { + "description": "Delete confirmation title" + }, + "trackDeleteConfirmMessage": "Cela supprimera définitivement le fichier téléchargé et l'effacera de votre historique.", + "@trackDeleteConfirmMessage": { + "description": "Delete confirmation message" + }, + "dateToday": "Aujourd'hui", + "@dateToday": { + "description": "Relative date - today" + }, + "dateYesterday": "Hier", + "@dateYesterday": { + "description": "Relative date - yesterday" + }, + "dateDaysAgo": "Il y a {count} jours", + "@dateDaysAgo": { + "description": "Relative date - days ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dateWeeksAgo": "Il y a {count} semaines", + "@dateWeeksAgo": { + "description": "Relative date - weeks ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dateMonthsAgo": "Il y a {count} mois", + "@dateMonthsAgo": { + "description": "Relative date - months ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "storeFilterAll": "Tout", + "@storeFilterAll": { + "description": "Repo filter - all extensions" + }, + "storeFilterMetadata": "Métadonnées", + "@storeFilterMetadata": { + "description": "Repo filter - metadata providers" + }, + "storeFilterDownload": "Télécharger", + "@storeFilterDownload": { + "description": "Repo filter - download providers" + }, + "storeFilterUtility": "Utilitaire", + "@storeFilterUtility": { + "description": "Repo filter - utility extensions" + }, + "storeFilterLyrics": "Paroles", + "@storeFilterLyrics": { + "description": "Repo filter - lyrics providers" + }, + "storeFilterIntegration": "Intégration", + "@storeFilterIntegration": { + "description": "Repo filter - integrations" + }, + "storeClearFilters": "Effacer les filtres", + "@storeClearFilters": { + "description": "Button to clear all filters" + }, + "storeAddRepoTitle": "Ajouter un dépôt d'extensions", + "@storeAddRepoTitle": { + "description": "Store setup screen - heading when no repo is configured" + }, + "storeAddRepoDescription": "Saisissez l'URL d'un dépôt GitHub contenant un fichier registry.json pour parcourir et installer des extensions.", + "@storeAddRepoDescription": { + "description": "Store setup screen - explanatory text" + }, + "storeRepoUrlLabel": "URL du dépôt", + "@storeRepoUrlLabel": { + "description": "Label for the repository URL input field" + }, + "storeRepoUrlHint": "https://github.com/user/repo", + "@storeRepoUrlHint": { + "description": "Hint/placeholder for the repository URL input field" + }, + "storeAddRepoButton": "Ajouter un dépôt", + "@storeAddRepoButton": { + "description": "Button to submit a new repository URL" + }, + "storeChangeRepoTooltip": "Changer de dépôt", + "@storeChangeRepoTooltip": { + "description": "Tooltip for the change-repository icon button in the app bar" + }, + "storeRepoDialogTitle": "Répertoire des extensions", + "@storeRepoDialogTitle": { + "description": "Title of the change/remove repository dialog" + }, + "storeRepoDialogCurrent": "Dépôt actuel :", + "@storeRepoDialogCurrent": { + "description": "Label shown above the current repository URL in the dialog" + }, + "storeNewRepoUrlLabel": "Nouvelle URL du dépôt", + "@storeNewRepoUrlLabel": { + "description": "Label for the new repository URL field inside the dialog" + }, + "storeLoadError": "Échec du chargement du dépôt", + "@storeLoadError": { + "description": "Error heading when the store cannot be loaded" + }, + "storeEmptyNoExtensions": "Aucune extension disponible", + "@storeEmptyNoExtensions": { + "description": "Message when store has no extensions" + }, + "storeEmptyNoResults": "Aucune extension trouvée", + "@storeEmptyNoResults": { + "description": "Message when search/filter returns no results" }, - "setupLanguageTitle": "Choisir la langue", "extensionId": "Identifiant", "@extensionId": { "description": "Extension detail - unique ID" }, - "regionCountryBR": "Brésil", - "@updateNewVersionReady": { - "description": "Update subtitle" + "extensionError": "Erreur", + "@extensionError": { + "description": "Extension detail - error message" }, - "@queueDownloadedFileMissing": { - "description": "Accessibility label when a downloaded file is missing from disk" - }, - "@lyricsMode": { - "description": "Setting - how to save lyrics" - }, - "@settingsAppearance": { - "description": "Settings section - visual customization" - }, - "@setupStorageAccessMessageAndroid11": { - "description": "Android 11+ specific explanation" - }, - "@tutorialLibraryTip3": { - "description": "Tutorial library tip 3" - }, - "@downloadAppleQqMultiPersonDisabled": { - "description": "Subtitle when multi-person lyrics is off" - }, - "libraryStorageAccessMessage": "SpotiFLAC a besoin d'un accès au stockage pour analyser votre bibliothèque musicale. Veuillez lui accorder l'autorisation dans les paramètres.", - "@libraryStorageAccessMessage": { - "description": "Dialog message for storage permission" - }, - "@tutorialLibraryTip1": { - "description": "Tutorial library tip 1" - }, - "dialogRemoveExtensionMessage": "Êtes-vous sûr de vouloir supprimer cette extension ? Cette action ne peut pas être annulée.", - "@dialogRemoveExtensionMessage": { - "description": "Dialog message - uninstall confirmation" - }, - "setupDownloadLocationTitle": "Emplacement de téléchargement", - "@setupDownloadLocationTitle": { - "description": "Download location dialog title" - }, - "downloadNetworkCompatibilityModeEnabled": "Points de terminaison HTTP hérités autorisés ; la vérification TLS reste active", - "@downloadNetworkCompatibilityModeEnabled": { - "description": "Subtitle when network compatibility mode is on" - }, - "@audioAnalysisBitDepth": { - "description": "Bit depth metric label" - }, - "trackOptionAddToLoved": "Ajouter aux Favoris", - "@trackOptionAddToLoved": { - "description": "Bottom sheet action label - add track to loved folder" - }, - "cacheAppDirectory": "Répertoire de cache de l'application", - "@cacheAppDirectory": { - "description": "Cache item title for app cache directory" - }, - "lyricsProviderMusixmatchDesc": "La plus grande base de données de paroles (multilingue)", - "@navStore": { - "description": "Bottom navigation - Extension repo tab" - }, - "extensionPostProcessing": "Post-traitement", - "@searchTracks": { - "description": "Search filter label - tracks" - }, - "logCopied": "Journaux copiés dans le presse-papiers", - "@logCopied": { - "description": "Snackbar - logs copied" - }, - "@extensionHealthRequired": { - "description": "Label for a required extension service health check" - }, - "@previewPlay": { - "description": "Tooltip for the button that plays a short track preview snippet" - }, - "clickableLookingUpArtist": "Recherche d'artiste...", - "@clickableLookingUpArtist": { - "description": "Snackbar shown while clickable artist metadata is being resolved" - }, - "@extensionVerificationBrowserSubtitleInApp": { - "description": "Subtitle when in-app browser is preferred for extension verification" - }, - "setupUseDefaultFolder": "Utiliser le dossier par défaut ?", - "tutorialSearchHint": "Collez ou effectuez une recherche...", - "@logIssueTrackNotFoundLabel": { - "description": "Diagnostic badge label when a track is unavailable" - }, - "@storageModeAppFolderSubtitle": { - "description": "Subtitle for app folder storage mode" - }, - "downloadMusixmatchLanguage": "Langue Musixmatch", - "@downloadMusixmatchLanguage": { - "description": "Setting for Musixmatch lyrics translation language" - }, - "lyricsModeExternal": "Fichier .lrc externe", - "@setupSelectFolder": { - "description": "Button to select folder" - }, - "logSearchHint": "Recherche dans les journaux...", - "@backupCreateFailed": { - "description": "Snackbar when backup creation fails" - }, - "@settingsSaveDownloadHistorySubtitle": { - "description": "Settings switch subtitle for storing completed downloads in history" - }, - "@albumFolderArtistAlbumFlat": { - "description": "Album folder option with singles directly in artist folder" - }, - "extensionHealthRequired": "requis", - "actionCancel": "Annuler", - "@actionCancel": { - "description": "Action button - cancel operation" - }, - "optionsEmbedMetadataSubtitleOff": "Désactivé (avancé) : ignorer l'intégration de toutes les métadonnées", - "@optionsEmbedMetadataSubtitleOff": { - "description": "Subtitle when metadata embedding is disabled" - }, - "downloadAllowLocalNetworkDisabled": "Les adresses locales/privées sont bloquées pour des raisons de sécurité", - "@downloadAllowLocalNetworkDisabled": { - "description": "Subtitle when allow local network access is off" - }, - "@extensionsDownloadPrioritySubtitle": { - "description": "Subtitle for download priority" - }, - "downloadSingleFilenameFormat": "Format de nom de fichier unique", - "@downloadSingleFilenameFormat": { - "description": "Setting for output filename pattern for singles/EPs" - }, - "cacheSummarySubtitle": "La suppression du cache n'entraînera pas la suppression des fichiers musicaux téléchargés.", - "@cacheSummarySubtitle": { - "description": "Helper text for cache summary card" - }, - "libraryFilterMetadataIncorrectIsrcFormat": "Format ISRC incorrect", - "libraryFilterMetadataMissingTrackNumber": "Numéro de piste manquant", - "@libraryFilterMetadataMissingTrackNumber": { - "description": "Filter option - items missing track number" - }, - "backupIncludeSecretsDescription": "Les jetons et les clés API des extensions seront enregistrés dans le fichier de sauvegarde. Veillez à ne pas divulguer ce fichier. Si l'extension est désactivée, vous devrez les saisir à nouveau après la restauration.", - "@backupIncludeSecretsDescription": { - "description": "Explanation for the include-credentials toggle" - }, - "audioAnalysisChannelStats": "Statistiques par chaîne", - "@audioAnalysisChannelStats": { - "description": "Per-channel audio analysis section label" - }, - "@extensionServiceStatus": { - "description": "Extension detail section header for service status" - }, - "queueEmptySingles": "Pas de téléchargement individuel", - "@queueEmptySingles": { - "description": "Empty state title when no single track downloads exist" - }, - "@snackbarSelectedPlaylistsEmpty": { - "description": "Snackbar when selected playlists contain no tracks" - }, - "@errorRateLimited": { - "description": "Error title - too many requests" - }, - "setupDownloadInFlac": "Download music in lossless and Hi-Res quality", - "@setupDownloadInFlac": { - "description": "App tagline in setup" - }, - "trackRemoveFromDevice": "Supprimer de l'appareil", - "@extensionsNoDownloadProvider": { - "description": "Empty state - no download providers" - }, - "@backupCreated": { - "description": "Snackbar after a backup file is created" - }, - "cacheSummaryTitle": "Présentation du cache", - "@cacheSummaryTitle": { - "description": "Heading for cache summary card" - }, - "selectionReplayGainCount": "ReplayGain ({count})", - "@selectionReplayGainCount": { - "description": "Batch selection action button label for ReplayGain", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@setupNotificationBackgroundDescription": { - "description": "Detailed notification explanation" - }, - "safMigrationTitle": "Mise à jour du stockage requise", - "snackbarMetadataSaved": "Les métadonnées ont été enregistrées avec succès", - "@snackbarMetadataSaved": { - "description": "Snackbar after successfully saving track metadata" - }, - "@backupContentsSettings": { - "description": "Backup contents row label for settings" - }, - "logClearLogsTitle": "Effacer les journaux", - "extensionsCustomSearch": "Recherche personnalisée", - "@extensionsCustomSearch": { - "description": "Label for custom search provider" - }, - "@downloadFrom": { - "description": "Label - download source" - }, - "cacheSizeWithFiles": "{size} dans {count} fichiers", - "selectionShareNoFiles": "Aucun fichier partageable n'a été trouvé", - "@selectionShareNoFiles": { - "description": "Snackbar when no selected files exist on disk" - }, - "snackbarAddedTracksToQueue": "{count} titres ont été ajoutés à la file d'attente", - "downloadFilenameInsertTag": "Appuyez pour insérer une balise :", - "@downloadFilenameInsertTag": { - "description": "Label above filename tag chips" - }, - "collectionRemovedFromFavoriteArtists": "« {artistName} » a été supprimé de vos artistes favoris", - "@collectionRemovedFromFavoriteArtists": { - "description": "Snackbar after removing artist from favorite artists", - "placeholders": { - "artistName": { - "type": "String" - } - } - }, - "queueDownloadSpeedStatus": "Téléchargement - {speed} Mo/s", - "backupRestoreConfirmButton": "Restaurer", - "@libraryCleanupMissingFiles": { - "description": "Button to remove entries for missing files" - }, - "backupCreateFailed": "Échec de la création de la sauvegarde", - "notifLibraryScanFailed": "Échec de l'analyse de la bibliothèque", - "@notifLibraryScanFailed": { - "description": "Notification title when library scan fails" - }, - "audioAnalysisRescan": "Réanalyser", - "@trackTrackName": { - "description": "Metadata label - track title" - }, - "@setupPermissionRequired": { - "description": "Generic permission required title", - "placeholders": { - "permissionType": { - "type": "String", - "description": "Type of permission (Storage/Notification)" - } - } - }, - "@nowPlayingNoLyrics": { - "description": "Empty state when the playing file has no embedded lyrics" - }, - "libraryFilesUnit": "{count, plural, =1{fichier} other{fichiers}}", - "@libraryFilesUnit": { - "description": "Unit label for files count during library scanning", - "placeholders": { - "count": { - "type": "int" - } - } + "extensionCapabilities": "Fonctionnalités", + "@extensionCapabilities": { + "description": "Section header - extension features" }, + "extensionMetadataProvider": "Fournisseur de métadonnées", "@extensionMetadataProvider": { "description": "Capability - provides metadata" }, - "@downloadFilterContributing": { - "description": "Setting to strip contributing artists from Album Artist folder name" + "extensionDownloadProvider": "Fournisseur de téléchargement", + "@extensionDownloadProvider": { + "description": "Capability - provides downloads" }, - "libraryScanSelectFolderFirst": "Sélectionnez d'abord un dossier", - "@sectionDownload": { - "description": "Settings section header" + "extensionLyricsProvider": "Fournisseur de paroles", + "@extensionLyricsProvider": { + "description": "Capability - provides lyrics" }, - "extensionHealthNotConfigured": "Non configuré", - "queueRetryAllFailed": "{count} tentatives ont échoué", - "folderOrganizationByPlaylistSubtitle": "Un dossier distinct pour chaque playlist", - "@folderOrganizationByPlaylistSubtitle": { - "description": "Subtitle for playlist folder option" + "extensionUrlHandler": "Gestionnaire d'URL", + "@extensionUrlHandler": { + "description": "Capability - handles URLs" }, - "lyricsProviderExtensionDesc": "Fournisseur d'extensions", - "@libraryFilterQualityHiRes": { - "description": "Filter option - high resolution audio" + "extensionQualityOptions": "Options de qualité", + "@extensionQualityOptions": { + "description": "Capability - quality selection" }, - "trackConvertTitle": "Convertir un fichier audio", - "@trackConvertTitle": { - "description": "Title of convert bottom sheet" + "extensionPostProcessingHooks": "Crochets de post-traitement", + "@extensionPostProcessingHooks": { + "description": "Capability - post-processing" }, - "setupSkipForNow": "Ignorer pour le moment", - "sectionDownload": "Télécharger", - "downloadLossyOpus256Subtitle": "Opus en qualité optimale, environ 8 Mo par piste", - "@downloadLossyOpus256Subtitle": { - "description": "Subtitle for Opus 256kbps lossy option" + "extensionPermissions": "Autorisations", + "@extensionPermissions": { + "description": "Section header - required permissions" }, - "@trackConvertActionLabelLossless": { - "description": "Convert button label for lossless conversion with quality cap", + "extensionSettings": "Paramètres", + "@extensionSettings": { + "description": "Section header - extension settings" + }, + "extensionRemoveButton": "Supprimer l'extension", + "@extensionRemoveButton": { + "description": "Button to uninstall extension" + }, + "extensionUpdated": "Mis à jour", + "@extensionUpdated": { + "description": "Extension detail - last update" + }, + "extensionMinAppVersion": "Version minimale de l'application", + "@extensionMinAppVersion": { + "description": "Extension detail - minimum app version" + }, + "extensionCustomTrackMatching": "Correspondance personnalisée des pistes", + "@extensionCustomTrackMatching": { + "description": "Capability - custom track matching algorithm" + }, + "extensionPostProcessing": "Post-traitement", + "@extensionPostProcessing": { + "description": "Capability - post-download processing" + }, + "extensionHooksAvailable": "{count} crochet(s) disponibles", + "@extensionHooksAvailable": { + "description": "Post-processing hooks count", "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "quality": { + "count": { + "type": "int" + } + } + }, + "extensionPatternsCount": "{count} motif(s)", + "@extensionPatternsCount": { + "description": "URL patterns count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionStrategy": "Stratégie : {strategy}", + "@extensionStrategy": { + "description": "Track matching strategy name", + "placeholders": { + "strategy": { "type": "String" } } }, - "storeRequiresVersion": "Nécessite la version v{version}+", - "@storeRequiresVersion": { - "description": "Store compatibility badge for minimum app version", - "placeholders": { - "version": { - "type": "String" - } - } + "extensionsProviderPrioritySection": "Priorité accordée aux prestataires", + "@extensionsProviderPrioritySection": { + "description": "Section header - provider priority" }, - "metadataProviderPriorityDescription": "Faites glisser pour réorganiser les fournisseurs de métadonnées. L'application testera les fournisseurs dans l'ordre de haut en bas lors de la recherche de morceaux et de la récupération des métadonnées.", - "@notifUpdateFailed": { - "description": "Notification title when app update download fails" + "extensionsInstalledSection": "Extensions installées", + "@extensionsInstalledSection": { + "description": "Section header - installed extensions" + }, + "extensionsNoExtensions": "Aucune extension installée", + "@extensionsNoExtensions": { + "description": "Empty state - no extensions" + }, + "extensionsNoExtensionsSubtitle": "Installez les fichiers .spotiflac-ext pour ajouter de nouveaux fournisseurs", + "@extensionsNoExtensionsSubtitle": { + "description": "Empty state subtitle" + }, + "extensionsInstallButton": "Installer l'extension", + "@extensionsInstallButton": { + "description": "Button to install extension from file" }, "extensionsInfoTip": "Les extensions permettent d'ajouter de nouvelles métadonnées et de nouveaux fournisseurs de téléchargement. N'installez que des extensions provenant de sources fiables.", "@extensionsInfoTip": { "description": "Security warning about extensions" }, - "@downloadAppleQqMultiPersonEnabled": { - "description": "Subtitle when multi-person lyrics is on" + "extensionsInstalledSuccess": "L'extension a été installée avec succès", + "@extensionsInstalledSuccess": { + "description": "Success message after install" }, - "libraryFilterMetadataMissingYear": "Année manquante", - "extensionsDownloadPriority": "Priorité de téléchargement", - "@extensionsDownloadPriority": { - "description": "Setting - download provider order" - }, - "@downloadAllowLocalNetworkEnabled": { - "description": "Subtitle when allow local network access is on" - }, - "libraryScan": "Analyse de la bibliothèque", - "@libraryScan": { - "description": "Button to start library scan" - }, - "editMetadataFieldLabel": "Label", - "@editMetadataFieldLabel": { - "description": "Chip label for label field in auto-fill selector" - }, - "updateDownloadFailed": "Échec du téléchargement", - "@updateDownloadFailed": { - "description": "Update error title" - }, - "appearanceAmoledDarkSubtitle": "Fond noir pur", - "@appearanceAmoledDarkSubtitle": { - "description": "Subtitle for AMOLED dark" - }, - "setupIcloudNotSupported": "iCloud Drive n'est pas pris en charge. Veuillez utiliser le dossier « Documents » de l'application.", - "trackLyricsEmbeddedSource": "Intégré", - "@trackLyricsEmbeddedSource": { - "description": "Lyrics source label for embedded lyrics" - }, - "@trackAlbumArtist": { - "description": "Metadata label - album artist" + "extensionsInstalledCount": "{count} extensions ont été installées avec succès", + "@extensionsInstalledCount": { + "description": "Success message after installing multiple extensions", + "placeholders": { + "count": { + "type": "int", + "description": "Number of installed extensions" + } + } }, "extensionsInstallPartialSuccess": "{installed} extensions sur {attempted}", "@extensionsInstallPartialSuccess": { @@ -4147,1741 +1993,217 @@ } } }, - "@extensionSettingsCount": { - "description": "Count of settings exposed by an extension quality option", - "placeholders": { - "count": { - "type": "int" - } - } + "extensionsDownloadPriority": "Priorité de téléchargement", + "@extensionsDownloadPriority": { + "description": "Setting - download provider order" }, - "notifLibraryScanCancelled": "Annulation de la numérisation de la bibliothèque", - "@notifLibraryScanCancelled": { - "description": "Notification title when library scan is cancelled by the user" + "extensionsDownloadPrioritySubtitle": "Définissez l'ordre des services de téléchargement", + "@extensionsDownloadPrioritySubtitle": { + "description": "Subtitle for download priority" }, - "collectionPlaylistNameRequired": "Le nom de la playlist est requis", - "libraryCleanupMissingFiles": "Nettoyage des fichiers manquants", - "storeCategoryUtility": "Utilitaire", - "@storeCategoryUtility": { - "description": "Store extension category - utility" + "extensionsFallbackTitle": "Extensions de secours", + "@extensionsFallbackTitle": { + "description": "Setting and page title for choosing which download extensions can be used during fallback" }, - "searchSortTitle": "Trier les résultats", - "@extensionVerificationBrowserExternal": { - "description": "Chip label for external browser verification mode" + "extensionsFallbackSubtitle": "Choisissez les extensions de téléchargement installées qui peuvent servir de solution de secours", + "@extensionsFallbackSubtitle": { + "description": "Subtitle for download fallback extensions menu" }, - "audioAnalysisLufs": "LUFS", - "@setupAllowAccessToManageFiles": { - "description": "Instruction for file access permission" + "extensionsNoDownloadProvider": "Aucune extension avec le fournisseur de téléchargement", + "@extensionsNoDownloadProvider": { + "description": "Empty state - no download providers" + }, + "extensionsMetadataPriority": "Priorité des métadonnées", + "@extensionsMetadataPriority": { + "description": "Setting - metadata provider order" + }, + "extensionsMetadataPrioritySubtitle": "Définissez l'ordre des sources de recherche et de métadonnées", + "@extensionsMetadataPrioritySubtitle": { + "description": "Subtitle for metadata priority" + }, + "extensionsNoMetadataProvider": "Aucune extension avec fournisseur de métadonnées", + "@extensionsNoMetadataProvider": { + "description": "Empty state - no metadata providers" + }, + "extensionsSearchProvider": "Moteur de recherche", + "@extensionsSearchProvider": { + "description": "Setting - search provider selection" + }, + "extensionsNoCustomSearch": "Aucune extension avec recherche personnalisée", + "@extensionsNoCustomSearch": { + "description": "Empty state - no search providers" + }, + "extensionsSearchProviderDescription": "Choisissez le service que vous souhaitez utiliser pour rechercher des morceaux", + "@extensionsSearchProviderDescription": { + "description": "Search provider setting description" + }, + "extensionsCustomSearch": "Recherche personnalisée", + "@extensionsCustomSearch": { + "description": "Label for custom search provider" }, "extensionsErrorLoading": "Erreur lors du chargement de l'extension", - "@actionPaste": { - "description": "Generic action - paste from clipboard" + "@extensionsErrorLoading": { + "description": "Error message when extension fails to load" }, - "aboutFeatureRequestSubtitle": "Proposez de nouvelles fonctionnalités pour l'application", - "@aboutFeatureRequestSubtitle": { - "description": "Subtitle for feature request" + "qualityFlacLossless": "FLAC sans perte", + "@qualityFlacLossless": { + "description": "Quality option - CD quality FLAC" }, - "@aboutTitle": { - "description": "About page title" + "qualityFlacLosslessSubtitle": "16 bits / 44,1 kHz", + "@qualityFlacLosslessSubtitle": { + "description": "Technical spec for lossless" }, - "@downloadNeteaseIncludeTranslation": { - "description": "Setting to include translated lyrics from Netease" + "qualityHiResFlac": "FLAC haute résolution", + "@qualityHiResFlac": { + "description": "Quality option - high resolution FLAC" }, - "@actionGo": { - "description": "Generic action button label" + "qualityHiResFlacSubtitle": "24 bits / jusqu'à 96 kHz", + "@qualityHiResFlacSubtitle": { + "description": "Technical spec for hi-res" }, - "regionCountryFR": "France", - "trackConvertResamplerSoxr": "SoXr", - "extensionUpdated": "Mis à jour", - "@extensionUpdated": { - "description": "Extension detail - last update" + "qualityHiResFlacMax": "FLAC haute résolution Max", + "@qualityHiResFlacMax": { + "description": "Quality option - maximum resolution FLAC" + }, + "qualityHiResFlacMaxSubtitle": "24 bits / jusqu'à 192 kHz", + "@qualityHiResFlacMaxSubtitle": { + "description": "Technical spec for hi-res max" + }, + "downloadLossy320": "Compression avec perte à 320 kbps", + "@downloadLossy320": { + "description": "Quality option label for lossy 320kbps" }, "downloadLossyFormat": "Format avec perte", "@downloadLossyFormat": { "description": "Setting title to pick output format for lossy downloads" }, - "snackbarAlreadyInLibrary": "« {trackName} » existe déjà dans votre bibliothèque", - "@snackbarAlreadyInLibrary": { - "description": "Snackbar - track already exists in local library", - "placeholders": { - "trackName": { - "type": "String" - } - } + "downloadAutoConvert": "Conversion automatique après le téléchargement", + "@downloadAutoConvert": { + "description": "Toggle for automatic post-download audio conversion" }, - "libraryExternalPlayerSubtitle": "Recommandé pour l'écoute, la meilleure qualité, la lecture en continu, l'égaliseur et la prise en charge d'un plus grand nombre de formats", - "extensionCustomUrlHandlingShareHint": "Partagez des liens provenant de ces sites vers SpotiFLAC Mobile et cette extension s'en chargera.", - "libraryFilterQuality": "Qualité", - "@libraryFilterQuality": { - "description": "Filter section - audio quality" + "downloadAutoConvertSubtitle": "Convertissez les téléchargements terminés dans un format compressé avec perte plus léger. Le fichier d'origine n'est remplacé qu'une fois la conversion réussie.", + "@downloadAutoConvertSubtitle": { + "description": "Explanation of safe automatic post-download conversion" }, - "editMetadataAutoFillDone": "{count} {count, plural, =1{champ} other{champs}} renseignés à partir des métadonnées en ligne", - "@editMetadataAutoFillDone": { - "description": "Snackbar confirming how many fields were auto-filled", - "placeholders": { - "count": { - "type": "int" - } - } + "downloadAutoConvertFormat": "Format de sortie", + "@downloadAutoConvertFormat": { + "description": "Automatic conversion output format setting" }, - "@discographyDownload": { - "description": "Button - download artist discography" + "downloadAutoConvertFormatSubtitle": "Choisissez le format avec perte à utiliser pour les téléchargements qui viennent d'être terminés.", + "@downloadAutoConvertFormatSubtitle": { + "description": "Automatic conversion format picker explanation" }, - "aboutFeatureRequest": "Demande de fonctionnalité", - "downloadSingleFilenameFormatDescription": "Modèle de nom de fichier pour les singles et les EP. Utilise les mêmes balises que le format album.", - "@downloadSingleFilenameFormatDescription": { - "description": "Subtitle description for single filename format setting" + "downloadAutoConvertBitrate": "Qualité de sortie", + "@downloadAutoConvertBitrate": { + "description": "Automatic conversion bitrate setting" }, - "queueClearAllMessage": "Êtes-vous sûr de vouloir supprimer tous les fichiers téléchargés ?", - "dialogDisableHistoryMessage": "L'historique actuel sera effacé. Les fichiers téléchargés ne seront pas supprimés.", - "extensionLastChecked": "Dernière vérification à {time}", - "@extensionLastChecked": { - "description": "Timestamp for the latest extension service health check", - "placeholders": { - "time": { - "type": "String" - } - } + "downloadAutoConvertBitrateSubtitle": "Des débits binaires plus élevés permettent de conserver davantage de détails, mais génèrent des fichiers plus volumineux.", + "@downloadAutoConvertBitrateSubtitle": { + "description": "Automatic conversion bitrate picker explanation" }, - "homeImportCsvTooltip": "Importer une playlist (CSV, M3U)", - "@homeImportCsvTooltip": { - "description": "Tooltip for importing a CSV file into Home search" + "downloadAutoConvertMp3Subtitle": "Compatibilité optimale entre les lecteurs et les appareils", + "@downloadAutoConvertMp3Subtitle": { + "description": "MP3 automatic conversion option description" }, - "trackConvertResamplerSwr": "SWR", - "@trackConvertResamplerSwr": { - "description": "Lossless conversion default FFmpeg swresample resampler option" + "downloadAutoConvertM4aSubtitle": "Fichier audio AAC de haute qualité au format M4A", + "@downloadAutoConvertM4aSubtitle": { + "description": "M4A AAC automatic conversion option description" }, - "@downloadFolderOrganization": { - "description": "Title of the folder organization picker bottom sheet" + "downloadAutoConvertOpusSubtitle": "Une efficacité optimale pour les lecteurs d'aujourd'hui", + "@downloadAutoConvertOpusSubtitle": { + "description": "Opus automatic conversion option description" }, - "dialogClearHistoryTitle": "Effacer l'historique", - "@logClearSearch": { - "description": "Tooltip for clearing the log search field" + "downloadLossy320Format": "Format avec perte à 320 kbps", + "@downloadLossy320Format": { + "description": "Title of the lossy format picker bottom sheet" }, - "dialogImport": "Importer", - "@dialogImport": { - "description": "Dialog button - import data" + "downloadLossy320FormatDesc": "Choisissez le format de sortie pour les téléchargements avec perte à 320 kbps. Le flux d'origine sera converti au format que vous aurez sélectionné lorsque cela sera nécessaire.", + "@downloadLossy320FormatDesc": { + "description": "Description in the lossy format picker" }, - "@setupChangeFolderTooltip": { - "description": "Tooltip for editing the selected download folder" + "downloadLossyMp3": "MP3 320 kbps", + "@downloadLossyMp3": { + "description": "Lossy format option - MP3 320kbps" }, - "notifLibraryScanErrors": "{count} erreurs", - "@downloadNetworkCompatibilityMode": { - "description": "Setting for legacy TLS/network handling" + "downloadLossyMp3Subtitle": "Compatibilité optimale, environ 10 Mo par piste", + "@downloadLossyMp3Subtitle": { + "description": "Subtitle for MP3 320kbps lossy option" }, - "@metadataSaveFailedFfmpeg": { - "description": "Snackbar error when FFmpeg fails to write metadata" + "downloadLossyAac": "AAC/M4A 320 kbps", + "@downloadLossyAac": { + "description": "Lossy format option - AAC in M4A container at 320kbps" }, - "dialogUninstallExtension": "Supprimer l'extension ?", - "recentTypePlaylist": "Playlist", - "@recentTypePlaylist": { - "description": "Recent access item type - playlist" + "downloadLossyAacSubtitle": "Compatibilité optimale avec les appareils mobiles, format M4A", + "@downloadLossyAacSubtitle": { + "description": "Subtitle for AAC/M4A 320kbps lossy option" }, - "trackDeleteConfirmMessage": "Cela supprimera définitivement le fichier téléchargé et l'effacera de votre historique.", - "@logIssueNetworkErrorDescription": { - "description": "Diagnostic badge description for generic network errors" + "downloadLossyOpus256": "Opus 256 kbps", + "@downloadLossyOpus256": { + "description": "Lossy format option - Opus 256kbps" }, - "appearanceThemeSystem": "Système", - "@appearanceThemeSystem": { - "description": "Follow system theme" + "downloadLossyOpus256Subtitle": "Opus en qualité optimale, environ 8 Mo par piste", + "@downloadLossyOpus256Subtitle": { + "description": "Subtitle for Opus 256kbps lossy option" }, - "albumFolderArtistAlbumSingles": "Artiste / Album + Singles", - "@aboutTranslators": { - "description": "Section for translators" - }, - "shareSheetNotFound": "Introuvable", - "@shareSheetNotFound": { - "description": "Cross-service share sheet row subtitle when a service has no match" - }, - "@tutorialDownloadInProgressSemantics": { - "description": "Accessibility label for active download state in tutorial demo" - }, - "editMetadataAutoFillNoneSelected": "Sélectionnez au moins un champ pour le remplir automatiquement", - "@editMetadataAutoFillNoneSelected": { - "description": "Snackbar when user taps Fetch without selecting any fields" - }, - "@snackbarViewQueue": { - "description": "Snackbar action - view download queue" - }, - "@optionsUpdateChannelPreview": { - "description": "Include beta/preview updates" - }, - "editMetadataFieldComposer": "Compositeur", - "@editMetadataFieldComposer": { - "description": "Label for composer field in the edit metadata sheet" - }, - "aboutSachinsenalDesc": "Le créateur du projet HiFi original. Une base pour l'intégration de sources sans perte.", - "@aboutSachinsenalDesc": { - "description": "Credit description for sachinsenal0x64" - }, - "backupTitle": "Sauvegarde & Restauration", - "@libraryFilterMetadata": { - "description": "Filter section - metadata completeness" - }, - "setupStorageAccessRequired": "Accès au stockage requis", - "@setupStorageAccessRequired": { - "description": "Title when storage access needed" - }, - "trackMetadataDelete": "Supprimer", - "@trackMetadataDelete": { - "description": "Action button - delete track" - }, - "libraryFilterMetadataMissingDiscNumber": "Numéro de disque manquant", - "@libraryFilterMetadataMissingDiscNumber": { - "description": "Filter option - items missing disc number" - }, - "snackbarMetadataProviderSaved": "Priorité du fournisseur de métadonnées enregistrée", - "setupPermissionRequired": "Autorisation {permissionType} requise", - "@selectionConvertNoConvertible": { - "description": "Snackbar when no selected tracks support conversion" - }, - "extensionHealthDegraded": "Dégradé", - "regionCountryKR": "Corée du Sud", - "@regionCountryKR": { - "description": "Country name for SongLink region picker" - }, - "trackLyricsNotInFile": "Aucune parole n'a été trouvée dans ce fichier", - "@trackLyricsNotInFile": { - "description": "Message when no embedded lyrics in audio file" - }, - "@downloadedAlbumTapToSelect": { - "description": "Selection hint" - }, - "downloadArtistNameFilters": "Filtres par nom d'artiste", - "@downloadArtistNameFilters": { - "description": "Setting title for artist folder filter options" - }, - "@libraryFilterMetadataMissingArtist": { - "description": "Filter option - items missing artist" - }, - "recentShowAllDownloads": "Afficher tous les téléchargements", - "@appearanceThemeLight": { - "description": "Light theme" - }, - "trackReEnrichFieldTrackInfo": "Numéro de piste & de disque", - "@appearanceThemeDark": { - "description": "Dark theme" - }, - "extensionVerificationLinkCopied": "Lien de vérification copié", - "@extensionVerificationLinkCopied": { - "description": "Snackbar after copying the extension verification URL" - }, - "@extensionsHomeFeedDescription": { - "description": "Extensions page - description for home feed provider picker" - }, - "downloadAlbumArtistMetadataPrimaryOnly": "Métadonnées « Album » et « Artiste » : uniquement les données principales", - "@downloadAlbumArtistMetadataPrimaryOnly": { - "description": "Status label when album-artist folder filtering uses primary artist only" - }, - "extensionOauthConnectHint": "Appuyez sur « Se connecter à Spotify » pour remplir ce champ.", - "setupNext": "Suivant", - "extensionVerificationBrowserSubtitleInApp": "Ouvrez d'abord les défis dans le navigateur intégré à l'application", - "libraryAutoScanDaily": "Tous les jours", - "@libraryAutoScanDaily": { - "description": "Auto scan once per day" - }, - "@audioAnalysisDescription": { - "description": "Description for audio analysis tap-to-analyze prompt" - }, - "nowPlayingUpNext": "À suivre", - "@nowPlayingUpNext": { - "description": "Title for the playback queue sheet" - }, - "nowPlayingPreviousTrack": "Previous track", - "nowPlayingNextTrack": "Next track", - "logAutoScrollOff": "Défilement automatique désactivé", - "trackConvertFailed": "Échec de la conversion", - "@trackConvertFailed": { - "description": "Snackbar when conversion fails" - }, - "extensionsUninstall": "Désinstaller", - "safMigrationSuccess": "Le dossier de téléchargement a été mis à jour en mode SAF", - "optionsClearHistorySubtitle": "Supprimez tous les morceaux téléchargés de l'historique", - "@optionsClearHistorySubtitle": { - "description": "Subtitle for clear history" - }, - "trackPlayNext": "Suivant", - "extensionsNoHomeFeedExtensions": "Aucune extension avec le flux principal", - "optionsUpdateChannelStable": "Uniquement les versions stables", - "@optionsUpdateChannelStable": { - "description": "Only stable updates" - }, - "@discographyDownloadAllSubtitle": { - "description": "Subtitle showing total tracks and albums", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } - }, - "searchPlaylists": "Playlists", - "@searchPlaylists": { - "description": "Search result category - playlists" - }, - "downloadNetworkCompatibilityMode": "Mode de compatibilité réseau", - "settingsAppearance": "Apparence", - "logIssueRateLimitedLabel": "NOMBRE LIMITÉ", - "@logIssueRateLimitedLabel": { - "description": "Diagnostic badge label when the service rate limits requests" - }, - "logIssueSummary": "Résumé du problème", - "@logIssueSummary": { - "description": "Header for log issue analysis summary" - }, - "appName": "SpotiFLAC Mobile", - "storeRepoDialogCurrent": "Dépôt actuel :", - "@optionsExtensionStoreSubtitle": { - "description": "Subtitle for extension repo toggle" - }, - "@trackLyrics": { - "description": "Tab title - lyrics" - }, - "@backupImportButton": { - "description": "Button to pick a backup file to restore" - }, - "@setupFolderChoose": { - "description": "Button to choose folder" - }, - "storageModeAppFolderSubtitle": "Enregistrement par défaut dans le dossier « Musique/SpotiFLAC »", - "@extensionsDisabled": { - "description": "Extension status - inactive" - }, - "@regionCountryAU": { - "description": "Country name for SongLink region picker" - }, - "@storeCategoryMetadata": { - "description": "Store extension category - metadata" - }, - "libraryFilterApply": "Appliquer", - "@libraryFilterApply": { - "description": "Apply filters button" - }, - "@libraryFilterSortGenreAsc": { - "description": "Sort option - genre ascending" - }, - "setupAllowAccessToManageFiles": "Veuillez cocher la case « Autoriser l'accès pour gérer tous les fichiers » sur l'écran suivant.", - "@dialogSave": { - "description": "Dialog button - save changes" - }, - "trackLyrics": "Paroles", - "extensionSettingNotSet": "Non défini", - "@extensionSettingNotSet": { - "description": "Value shown when an extension setting has no value" - }, - "@audioAnalysisClipping": { - "description": "Clipping metric label" - }, - "downloadNeteaseIncludeTranslation": "Netease : inclure la traduction", - "@albumFolderArtistAlbumSubtitle": { - "description": "Folder structure example" - }, - "@settingsDonateSubtitle": { - "description": "Subtitle for donate menu item" - }, - "cueSplitSuccess": "Le fichier a été divisé en {count} pistes avec succès", - "@cueSplitSuccess": { - "description": "Snackbar after successful CUE split", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cueSplitArtist": "Artiste : {artist}", - "@cueSplitArtist": { - "description": "Artist name in CUE split sheet", - "placeholders": { - "artist": { - "type": "String" - } - } - }, - "updateSeeReleaseNotes": "Pour plus de détails, consultez les notes de mise à jour.", - "@updateSeeReleaseNotes": { - "description": "Fallback changelog text when release notes cannot be parsed" - }, - "@trackReEnrichFfmpegFailed": { - "description": "Snackbar when FFmpeg embed fails for MP3/Opus" - }, - "collectionWishlist": "Liste de souhaits", - "@collectionWishlist": { - "description": "Custom folder for saved tracks to download later" - }, - "editMetadataAutoFillFetch": "Récupérer & remplir", - "@extensionsHomeFeedAuto": { - "description": "Label for auto-selected search provider" - }, - "providerPriorityDescription": "Faites glisser pour réorganiser les fournisseurs de téléchargement. L'application testera les fournisseurs dans l'ordre indiqué, de haut en bas, lors du téléchargement des morceaux.", - "@providerPriorityDescription": { - "description": "Provider priority page description" - }, - "queueEmptySinglesSubtitle": "Les téléchargements de titres individuels apparaîtront ici", "downloadLossyOpus128": "Opus 128 kbps", - "downloadUseAlbumArtistForFolders": "Utilisez l'artiste de l'album pour les dossiers", - "@downloadUseAlbumArtistForFolders": { - "description": "Setting - choose whether artist folders use Album Artist or Track Artist" + "@downloadLossyOpus128": { + "description": "Lossy format option - Opus 128kbps" }, - "@aboutLinks": { - "description": "Section for external links" + "downloadLossyOpus128Subtitle": "Taille minimale : environ 4 Mo par piste", + "@downloadLossyOpus128Subtitle": { + "description": "Subtitle for Opus 128kbps lossy option" }, - "downloadedAlbumDeleteCount": "Supprimer {count} {count, plural, =1{piste} other{pistes}}", - "updateLater": "Plus tard", - "@logIssueIspBlockingSuggestion": { - "description": "Diagnostic badge suggestion for ISP blocking" + "downloadAskBeforeDownload": "Demander avant de télécharger", + "@downloadAskBeforeDownload": { + "description": "Setting - show quality picker" }, - "actionResume": "Resumer", - "optionsDetailedLoggingOff": "Activer pour les rapports de bogues", - "@searchSortDefault": { - "description": "Sort option - default API order" + "downloadDirectory": "Répertoire de téléchargement", + "@downloadDirectory": { + "description": "Setting - download folder" }, - "@regionCountryCA": { - "description": "Country name for SongLink region picker" + "downloadSeparateSinglesFolder": "Dossier dédié aux titres individuels", + "@downloadSeparateSinglesFolder": { + "description": "Setting - separate folder for singles" }, - "@sectionStorageAccess": { - "description": "Section header for storage access settings" - }, - "downloadFilterContributing": "Filtrer les artistes participants", - "downloadUseAlbumArtistForFoldersTrackSubtitle": "Dossier nommé d'après la balise « Artiste » de la piste", - "storeSearch": "Recherche d'extensions...", - "@storeSearch": { - "description": "Repo search placeholder" - }, - "aboutTelegramChat": "Communauté Telegram", - "lyricsModeBoth": "Les deux", - "@lyricsModeBoth": { - "description": "Lyrics mode option - embed and external" - }, - "@permissionNotification": { - "description": "Notification permission type label" - }, - "libraryAutoScanSubtitle": "Analysez automatiquement votre bibliothèque à la recherche de nouveaux fichiers", - "@libraryAutoScanSubtitle": { - "description": "Subtitle for auto scan setting" - }, - "libraryEnableLocalLibrary": "Activer la bibliothèque locale", - "trackConvertTargetFormat": "Format cible", - "@trackConvertTargetFormat": { - "description": "Label for format selection" - }, - "extensionSettings": "Paramètres", - "@editMetadataAutoFillSearching": { - "description": "Snackbar shown while searching for online metadata" - }, - "trackLyricsTimeout": "La requête a expiré. Veuillez réessayer plus tard.", - "settingsExtensions": "Extensions", - "@settingsBackup": { - "description": "Settings menu item - backup and restore page" - }, - "librarySourceDownloaded": "Téléchargé", - "@librarySourceDownloaded": { - "description": "Badge for tracks downloaded via SpotiFLAC" - }, - "appearanceDynamicColor": "Couleur dynamique", - "@appearanceDynamicColor": { - "description": "Material You dynamic colors" - }, - "backupImportButton": "Choisissez un fichier de sauvegarde", - "downloadAppleElrcWordSyncDisabled": "Paroles d'Apple Music, ligne par ligne, en toute sécurité", - "@optionsEmbedMetadata": { - "description": "Settings toggle title for writing metadata into downloaded files" - }, - "appearanceTitle": "Apparence", - "downloadNeteaseIncludeRomanizationDisabled": "Pas de romanisation", - "@downloadNeteaseIncludeRomanizationDisabled": { - "description": "Subtitle when Netease romanization is off" - }, - "@libraryScanCancelled": { - "description": "Library scan status when a scan was cancelled" - }, - "tracksCount": "{count, plural, =1{1 titre} other{{count} titres}}", - "@snackbarFailedToUpdateNamed": { - "description": "Snackbar when extension update fails in the repo tab", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "@extensionQualityOptions": { - "description": "Capability - quality selection" - }, - "logClearSearch": "Effacer la recherche", - "trackSaveLyrics": "Enregistrer les paroles (.lrc)", - "@trackReEnrichSearching": { - "description": "Snackbar while searching metadata from internet for local items" - }, - "@editMetadataAutoFillNoResults": { - "description": "Snackbar when online metadata search returns no results" - }, - "notifDownloadComplete": "Télécharger l'intégralité", - "snackbarAlreadyDownloaded": "« {trackName} » a déjà été téléchargé", - "folderOrganizationByAlbumSubtitle": "Un dossier distinct pour chaque album", - "storeRepoUrlHint": "https://github.com/user/repo", - "trackConvertDitherTriangularHp": "HP triangulaire", - "lyricsModeBothSubtitle": "Intégrer et enregistrer le fichier .lrc", - "trackReEnrichFieldExtra": "Genre, Label, Droits d'auteur", - "@trackReEnrichFieldExtra": { - "description": "Checkbox label for extra metadata in re-enrich" - }, - "sectionLyrics": "Paroles", - "@sectionLyrics": { - "description": "Settings section header" - }, - "extensionStrategy": "Stratégie : {strategy}", - "@extensionStrategy": { - "description": "Track matching strategy name", - "placeholders": { - "strategy": { - "type": "String" - } - } - }, - "@downloadNativeWorker": { - "description": "Setting title for Android native download worker" - }, - "optionsArtistTagModeSplitVorbis": "Diviser les balises pour FLAC/Opus", - "extensionsHomeFeedUse": "Utiliser le fil d'actualité de {extensionName}", - "@cacheAppDirectoryDesc": { - "description": "Description of what app cache directory contains" - }, - "cancelDownloadTitle": "Annuler le téléchargement ?", - "updateWhatsNew": "Quoi de neuf ?", - "updateNewVersionReady": "Une nouvelle version est disponible", - "@extensionVerificationClose": { - "description": "Button to dismiss the extension verification help dialog" - }, - "a11ySelectTrack": "Sélectionner une piste", - "libraryClearSubtitle": "Supprimez tous les titres numérisés", - "@libraryClearSubtitle": { - "description": "Subtitle for clear button" - }, - "@settingsDownloadNetworkSubtitle": { - "description": "Subtitle explaining network preference" - }, - "storeAnyVersion": "N'importe lequel", - "@storeAnyVersion": { - "description": "Store detail value when any app version is accepted" - }, - "navStore": "Dépôt", - "backupExportSectionDescription": "Enregistrez vos paramètres, votre historique de téléchargement, les titres que vous avez aimés, votre liste de souhaits, vos artistes préférés et vos playlists dans un seul fichier que vous pourrez conserver ou transférer vers un autre téléphone.", - "libraryScanSettings": "Paramètres de numérisation", - "@libraryScanSettings": { - "description": "Section header for scan settings" - }, - "trackDuration": "Durée", - "@trackDuration": { - "description": "Metadata label - track length" - }, - "extensionHealthOffline": "Hors ligne", - "@extensionHealthOffline": { - "description": "Extension service health status - offline" - }, - "editMetadataFieldArtist": "Artiste", - "@editMetadataFieldArtist": { - "description": "Chip label for artist field in auto-fill selector" - }, - "libraryInLibrary": "Dans la bibliothèque", - "pressBackAgainToExit": "Appuyez de nouveau sur retour pour quitter", - "@pressBackAgainToExit": { - "description": "Exit confirmation message" - }, - "setupNotificationGranted": "Autorisation de notification accordée !", - "@setupNotificationGranted": { - "description": "Success message for notification permission" - }, - "settingsDonate": "Soutien au développement", - "snackbarFailedToUpdateNamed": "Échec de la mise à jour de {extensionName}", - "backupContentsTitle": "Contenu de la sauvegarde", - "updateDontRemind": "Ne plus me le rappeler", - "@dialogDiscard": { - "description": "Dialog button - discard changes" - }, - "editMetadataAutoFillSearching": "Recherche en ligne...", - "discographyDownloadSelected": "Télécharger la sélection", - "trackConvertResampler": "Rééchantillonneur", - "queueFilteringIndicator": "Filtrage...", - "@queueFilteringIndicator": { - "description": "Shown while filter results are being computed" - }, - "@dialogDownloadAllTitle": { - "description": "Dialog title for bulk download confirmation" - }, - "cueSplitConfirmMessage": "Diviser « {album} » en {count} fichiers FLAC individuels ?\n\nLes fichiers seront enregistrés dans le même répertoire.", - "@downloadCreatePlaylistSourceFolderRedundant": { - "description": "Subtitle when folder organization is already set to playlist" - }, - "regionCountryCA": "Canada", - "cacheTempDirectory": "Répertoire temporaire", - "@cacheTempDirectory": { - "description": "Cache item title for temporary files directory" - }, - "libraryShowDuplicateIndicator": "Afficher l'indicateur de doublons", - "@logFilterBySeverity": { - "description": "Filter dialog title" - }, - "homeSearchHintProvider": "Rechercher avec {providerName}...", - "@downloadNeteaseIncludeTranslationDisabled": { - "description": "Subtitle when Netease translation is off" - }, - "optionsCheckUpdates": "Vérifier les mises à jour", - "replayGainBatchAnalyzing": "Analyse de ReplayGain...", - "recentTypeAlbum": "Album", - "providerExtension": "Extension", - "@providerExtension": { - "description": "Label for extension-provided providers" - }, - "trackCoverNoSource": "Aucune source d'illustration de couverture disponible", - "libraryFilterMetadata": "Métadonnées", - "albumFolderArtistYearAlbum": "Artiste / [Année] Album", - "@albumFolderArtistYearAlbum": { - "description": "Album folder option with year" - }, - "audioAnalysisClipping": "Coupure", - "@a11yOpenAlbumByArtistTrackCount": { - "description": "Accessibility label for opening an album item with track count", - "placeholders": { - "albumName": { - "type": "String" - }, - "artistName": { - "type": "String" - }, - "trackCount": { - "type": "int" - } - } - }, - "backupExtensionsRestoreFailed": "{count} {count, plural, =1{extension} other{extensions}} n'ont pas pu être réinstallées. Installez-les manuellement depuis le dépôt.", - "@backupExtensionsRestoreFailed": { - "description": "Snackbar/hint when some extensions failed to reinstall during restore", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "channelStable": "Stable", - "@channelStable": { - "description": "Update channel - stable releases" - }, - "tutorialSettingsTip3": "Personnaliser le thème et l'apparence de l'application", - "setupAppDocumentsFolderSubtitle": "Recommandé - accessible via l'application Fichiers", - "a11yPlayTrackByArtist": "Écouter {trackName} de {artistName}", - "@a11yPlayTrackByArtist": { - "description": "Accessibility label for playing a local library track", - "placeholders": { - "trackName": { - "type": "String" - }, - "artistName": { - "type": "String" - } - } - }, - "dialogRemove": "Supprimer", - "extensionVerificationClose": "Fermer", - "bulkDownloadPlaylistsButton": "Télécharger {count} {count, plural, =1{playlist} other{playlists}}", - "@bulkDownloadPlaylistsButton": { - "description": "Button label for bulk downloading selected playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "optionsAutoFallbackSubtitle": "Essayez d'autres services si le téléchargement échoue", - "@optionsAutoFallbackSubtitle": { - "description": "Subtitle for auto fallback" - }, - "extensionPatternsCount": "{count} motif(s)", - "@libraryFilterLocal": { - "description": "Filter chip - show only local library items" - }, - "errorUrlNotRecognizedMessage": "Ce lien n'est pas pris en charge. Vérifiez que l'URL est correcte et qu'une extension compatible est installée.", - "@errorUrlNotRecognizedMessage": { - "description": "Error message - URL not recognized explanation" - }, - "@extensionVerificationBrowserSubtitleExternal": { - "description": "Subtitle when external browser is preferred for extension verification" - }, - "optionsArtistTagMode": "Mode « Artiste »", - "libraryFilterMetadataComplete": "Métadonnées complètes", - "@libraryFilterMetadataComplete": { - "description": "Filter option - items with complete metadata" - }, - "@extensionsVersion": { - "description": "Extension version display", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "@downloadNetworkAnySubtitle": { - "description": "Subtitle for any-network option in picker" - }, - "optionsReplayGainSubtitleOn": "Analyser le niveau sonore et intégrer des balises ReplayGain (EBU R128)", - "libraryScanning": "En cours d'analyse...", - "@libraryScanning": { - "description": "Status during scan" - }, - "cacheRefresh": "Actualiser", - "@actionShuffle": { - "description": "Tooltip for shuffle playback action" - }, - "optionsEmbedLyricsSubtitle": "Enregistrez les paroles synchronisées avec vos morceaux téléchargés", - "@optionsEmbedLyricsSubtitle": { - "description": "Subtitle for embed lyrics" - }, - "queueEmptyAlbumsSubtitle": "Téléchargez plusieurs titres d'un album pour les écouter ici", - "extensionEnterValue": "Saisir une valeur", - "@settingsDownloadNetworkAny": { - "description": "Network option - use any connection" - }, - "collectionLoved": "Favoris", - "@collectionLoved": { - "description": "Custom folder for favorite tracks" - }, - "storeAddRepoTitle": "Ajouter un dépôt d'extensions", - "@storeAddRepoTitle": { - "description": "Store setup screen - heading when no repo is configured" - }, - "collectionNoPlaylistsYet": "Aucune playlist pour le moment", - "@collectionNoPlaylistsYet": { - "description": "Empty state title when user has no playlists" - }, - "libraryCleanupMissingFilesSubtitle": "Supprimez les entrées correspondant aux fichiers qui n'existent plus", - "@libraryCleanupMissingFilesSubtitle": { - "description": "Subtitle for cleanup button" - }, - "folderOrganizationByArtist": "Par artiste", - "@folderOrganizationByArtist": { - "description": "Folder option - artist folders" - }, - "aboutTranslators": "Traducteurs", - "notifAlreadyInLibraryCount": "Déjà dans la bibliothèque ({completed}/{total})", - "editMetadataFieldTitle": "Titre", - "@editMetadataFieldTitle": { - "description": "Chip label for title field in auto-fill selector" - }, - "downloadFilenameDescription": "Utilisez {artist}, {title}, {album}, {track}, {year}, {date} et {disc} comme variables de remplacement.", - "@downloadFilenameDescription": { - "description": "Description shown in filename format editor" - }, - "@notifDownloadsFinishedBody": { - "description": "Notification body when queue finishes with failures", - "placeholders": { - "completed": { - "type": "int" - }, - "failed": { - "type": "int" - } - } - }, - "@libraryFolderNotExist": { - "description": "Error when folder doesn't exist" - }, - "@playlistsCount": { - "description": "Playlist count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@loadingSharedLink": { - "description": "Status when opening shared URL" - }, - "extensionServiceHealth": "Santé du service", - "@extensionServiceHealth": { - "description": "Extension capability label for service health checks" - }, - "@collectionDeletePlaylistsMessage": { - "description": "Confirmation message for deleting selected playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "setupStorageDescription": "SpotiFLAC a besoin d'une autorisation d'accès au stockage pour enregistrer vos fichiers musicaux téléchargés.", - "tutorialReadyMessage": "You're ready. Select your extensions, then search or paste a supported link.", - "tutorialLibraryTip3": "Browse tracks, albums, and playlists in list or grid views", - "selectionDeletePlaylistsCount": "Supprimer {count} {count, plural, =1{playlist} other{playlists}}", - "appearanceThemeLight": "Clair", - "queueEmptyHistorySubtitle": "Les morceaux téléchargés apparaîtront ici", - "@queueEmptyHistorySubtitle": { - "description": "Empty state subtitle for download history" - }, - "backupRestoreFailed": "Échec de la restauration de la sauvegarde", - "@backupRestoreFailed": { - "description": "Snackbar when restore fails" - }, - "queueFlacQueuedWithSkipped": "{addedCount} titres ajoutés à la file d'attente, {skippedCount} titres ignorés", - "@queueFlacQueuedWithSkipped": { - "description": "Snackbar when some selected local tracks were queued for FLAC redownload and some were skipped", - "placeholders": { - "addedCount": { - "type": "int" - }, - "skippedCount": { - "type": "int" - } - } - }, - "@trackReplayGain": { - "description": "Three-dot menu option to scan loudness and write ReplayGain tags" - }, - "@downloadedAlbumDownloadedCount": { - "description": "Downloaded tracks count badge", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "setupFolderChoose": "Choisissez le dossier de téléchargement", - "dialogDownloadAllTitle": "Tout télécharger", - "providerPriorityInfo": "Si un morceau n'est pas disponible chez le premier fournisseur, l'application essaiera automatiquement le suivant.", - "@providerPriorityInfo": { - "description": "Info tip about fallback behavior" - }, - "@dialogDiscardChanges": { - "description": "Dialog title - unsaved changes warning" - }, - "discographyNoAlbums": "Aucun album disponible", - "downloadAppleQqMultiPersonDisabled": "Paroles standard sans indication du haut-parleur", - "cacheNoData": "Aucune donnée mise en cache", - "@cacheNoData": { - "description": "Label when cache category has no data" - }, - "tutorialStartDownloadSemantics": "Lancer le téléchargement", - "@tutorialStartDownloadSemantics": { - "description": "Accessibility label for idle download button in tutorial demo" - }, - "logIssueIspBlockingSuggestion": "Essayez d'utiliser un VPN ou de modifier vos paramètres DNS pour les remplacer par 1.1.1.1 ou 8.8.8.8", - "aboutTitle": "À propos", - "@cueSplitButton": { - "description": "Button text to start CUE splitting" - }, - "appearanceHistoryView": "Historique", - "audioAnalysisSampleRate": "Fréquence d'échantillonnage", - "@settingsCache": { - "description": "Settings menu item - cache management" - }, - "lyricsProvidersInfoText": "Les fournisseurs de paroles d'extension s'exécutent avant les fournisseurs de paroles intégrés. Au moins un fournisseur doit rester activé.", - "cacheTrackLookup": "Cache de recherche de piste", - "extensionsHomeFeedOffSubtitle": "Ne pas afficher le fil d'actualité sur l'écran principal", - "@downloadUsePrimaryArtistOnly": { - "description": "Setting - strip featured artists from folder name" - }, - "@regionCountryIN": { - "description": "Country name for SongLink region picker" - }, - "@libraryFilterQualityLossy": { - "description": "Filter option - lossy compressed audio" - }, - "extensionRefreshStatus": "Actualiser l'état", - "notifAllDownloadsComplete": "Tous les téléchargements sont terminés", - "downloadNeteaseIncludeRomanizationEnabled": "Lignes de romanisation incluses", - "editMetadataFieldDateHint": "AAAA-MM-JJ ou AAAA", - "@editMetadataFieldDateHint": { - "description": "Hint text for the edit metadata date field" - }, - "trackMetadataShare": "Partager", - "@trackMetadataShare": { - "description": "Action button - share track" - }, - "discographyDownloadAllSubtitle": "{count} titres issus de {albumCount} albums", - "settingsDonateSubtitle": "Offrez un café au développeur", - "libraryFilterDownloaded": "Téléchargé", - "downloadNetworkAnySubtitle": "Utilisez le Wi-Fi ou les données mobiles", - "@cueSplitNoAudioFile": { - "description": "Error when CUE audio file is missing" - }, - "notifLibraryScanStopped": "L'analyse a été interrompue avant d'être terminée.", - "@settingsMetadata": { - "description": "Settings menu item - metadata settings" - }, - "snackbarFailedToInstallNamed": "Échec de l'installation de {extensionName}", - "trackCopyLyrics": "Copier les paroles", - "@trackCopyLyrics": { - "description": "Action - copy lyrics to clipboard" - }, - "regionCountryAU": "Australie", "downloadAlbumFolderStructure": "Structure du dossier de l'album", - "downloadMusixmatchAuto": "Auto", - "actionDismiss": "Ignorer", - "storeFilterAll": "Tout", - "extensionsDisabled": "Désactivée", - "@logClearLogs": { - "description": "Clear button tooltip" - }, - "dialogDownloadAllMessage": "Télécharger {count} titres ?", - "@optionsEmbedLyrics": { - "description": "Embed lyrics in audio files" - }, - "tutorialLibraryTitle": "Votre bibliothèque", - "optionsCheckUpdatesSubtitle": "M'avertir lorsqu'une nouvelle version est disponible", - "@optionsCheckUpdatesSubtitle": { - "description": "Subtitle for update check" - }, - "collectionPlaylist": "Playlist", - "@collectionPlaylist": { - "description": "Single playlist label" - }, - "dateMonthsAgo": "Il y a {count} mois", - "@dateMonthsAgo": { - "description": "Relative date - months ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@extensionRemoveButton": { - "description": "Button to uninstall extension" - }, - "collectionPlaylistRenamed": "Playlist renommée", - "collectionCreatePlaylist": "Créer une playlist", - "homeGoToAlbum": "Aller à l'album", - "@homeGoToAlbum": { - "description": "Context menu item to navigate to the album page" - }, - "folderOrganizationByArtistSubtitle": "Un dossier distinct pour chaque artiste", - "@optionsClearHistory": { - "description": "Delete all download history" - }, - "@searchAlbums": { - "description": "Search result category - albums" - }, - "@sectionDebug": { - "description": "Settings section header" - }, - "extensionsVersion": "Version {version}", - "@navHome": { - "description": "Bottom navigation - Home tab" - }, - "@editMetadataFieldDate": { - "description": "Chip label for date field in auto-fill selector" - }, - "downloadUsePrimaryArtistOnly": "Artiste principal uniquement pour les dossiers", - "tutorialExtensionsTip2": "Choose providers for search, downloads, metadata, and fallbacks", - "@setupStorageGranted": { - "description": "Success message for storage permission" - }, - "tutorialWelcomeTitle": "Bienvenue sur SpotiFLAC Mobile !", - "a11ySelectAlbum": "Sélectionnez l'album {albumName}", - "@a11ySelectAlbum": { - "description": "Accessibility label for selecting an album", - "placeholders": { - "albumName": { - "type": "String" - } - } - }, - "aboutMobileSource": "Code source pour mobile", - "@aboutMobileSource": { - "description": "Link to mobile GitHub repo" - }, - "@extensionCustomUrlHandling": { - "description": "Extension detail section title for custom URL handling" - }, - "@downloadMusixmatchLanguageAuto": { - "description": "Subtitle when no language is set" - }, - "@cancelDownloadKeep": { - "description": "Dialog button - keep the active download (do not cancel)" - }, - "libraryFilterSource": "Source", - "@libraryFilterSource": { - "description": "Filter section - source type" - }, - "sectionStorageAccess": "Accès au stockage", - "logFilterBySeverity": "Filtrer les journaux par niveau de gravité", - "libraryFolderNotExist": "Le dossier sélectionné n'existe pas", - "optionsEmbedMetadataSubtitleOn": "Ajouter des métadonnées, des pochettes et des paroles intégrées aux fichiers", - "albumFolderArtistAlbum": "Artiste / Album", - "@albumFolderArtistAlbum": { - "description": "Album folder option" - }, - "allFilesAccessDeniedMessage": "L'autorisation a été refusée. Veuillez activer manuellement l'option « Accès à tous les fichiers » dans les paramètres système.", - "@allFilesAccessDeniedMessage": { - "description": "Message when permission is permanently denied" - }, - "editMetadataSelectEmpty": "Vide uniquement", - "settingsLocalLibrarySubtitle": "Analysez la musique et détectez les doublons", - "@settingsAutoExportFailed": { - "description": "Setting toggle for auto-export" - }, - "cacheCleanupUnusedSubtitle": "Supprimer l'historique des téléchargements orphelins et les entrées manquantes dans la bibliothèque", - "@tutorialSettingsTitle": { - "description": "Tutorial settings page title" - }, - "libraryFilterMetadataMissingGenre": "Genre manquant", - "@appearanceSelectAccentColor": { - "description": "Accessibility label for picking an accent color", - "placeholders": { - "hex": { - "type": "String" - } - } - }, - "setupFolderDescription": "Sélectionnez un dossier dans lequel votre musique téléchargée sera enregistrée.", - "extensionDetailsTags": "Balises", - "unknownArtist": "Artiste inconnu", - "trackFetchOnlineLyrics": "Télécharger depuis Internet", - "snackbarNoActionDefined": "Aucune action n'est associée à ce bouton", - "@snackbarNoActionDefined": { - "description": "Snackbar when an extension button has no action configured" - }, - "downloadAllCount": "Tout télécharger ({count})", - "@downloadAllCount": { - "description": "Download all button with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadedAlbumDiscHeader": "Disque {discNumber}", - "@backupInvalidFile": { - "description": "Snackbar when the chosen file is not a valid backup" - }, - "@extensionHooksAvailable": { - "description": "Post-processing hooks count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@logIssueTrackNotFoundSuggestion": { - "description": "Diagnostic badge suggestion when a track is unavailable" - }, - "@snackbarFileNotFound": { - "description": "Snackbar - file doesn't exist" - }, - "extensionHealthOnline": "En ligne", - "@extensionHealthOnline": { - "description": "Extension service health status - online" - }, - "settingsSaveDownloadHistorySubtitle": "Conserver les téléchargements terminés dans l'historique et la bibliothèque", - "trackOptionRemoveFromWishlist": "Supprimer de la liste de souhaits", - "extensionsFallbackTitle": "Extensions de secours", - "@extensionsFallbackTitle": { - "description": "Setting and page title for choosing which download extensions can be used during fallback" - }, - "metadataSaveFailedFfmpeg": "Échec de l'enregistrement des métadonnées via FFmpeg", - "@albumFolderAlbumOnly": { - "description": "Album folder option" - }, - "@albumFolderYearAlbumSubtitle": { - "description": "Folder structure example" - }, - "downloadedAlbumDeleteSelected": "Supprimer la sélection", - "selectionSelectPlaylistsToDelete": "Sélectionnez les playlists à supprimer", - "@selectionSelectPlaylistsToDelete": { - "description": "Hint shown when no playlists are selected for deletion" - }, - "storeAddRepoDescription": "Saisissez l'URL d'un dépôt GitHub contenant un fichier registry.json pour parcourir et installer des extensions.", - "appearanceThemeDark": "Sombre", - "downloadedAlbumTapToSelect": "Appuyez sur les titres pour les sélectionner", - "@collectionAddedToFavoriteArtists": { - "description": "Snackbar after adding artist to favorite artists", - "placeholders": { - "artistName": { - "type": "String" - } - } - }, - "@backupRestored": { - "description": "Snackbar after a successful restore" - }, - "nowPlayingLibraryEmpty": "Votre bibliothèque est vide", - "@nowPlayingLibraryEmpty": { - "description": "Snackbar when shuffle library is requested but library has no tracks" - }, - "editMetadataAutoFillNoResults": "Aucune métadonnée correspondante n'a été trouvée en ligne", - "updateDownloading": "Téléchargement en cours...", - "trackLyricsSource": "Source : {source}", - "logFilterLevel": "Niveau", - "logNoLogsYet": "Pas encore de journal", - "cacheSizeOnly": "{size}", - "@cacheSizeOnly": { - "description": "Cache size only", - "placeholders": { - "size": { - "type": "String" - } - } - }, - "trackOpenInService": "Ouvrir dans {serviceName}", - "@trackOpenInService": { - "description": "Button label to open a track in a named music service", - "placeholders": { - "serviceName": { - "type": "String" - } - } - }, - "@cacheLibraryCoverDesc": { - "description": "Description of what library cover cache contains" - }, - "libraryClearConfirmMessage": "Cette opération supprimera toutes les pistes numérisées de votre bibliothèque. Vos fichiers musicaux ne seront pas supprimés.", - "@dialogImportPlaylistMessage": { - "description": "Dialog message - import playlist confirmation", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionsHomeFeedAuto": "Auto", - "searchEmptyResultSubtitle": "Essayez un autre mot-clé", - "@searchEmptyResultSubtitle": { - "description": "Subtitle shown under the empty search result state on the home screen" - }, - "dateToday": "Aujourd'hui", - "a11yOpenItem": "Ouvrir {itemType} {name}", - "@a11yOpenItem": { - "description": "Accessibility label for opening a generic item", - "placeholders": { - "itemType": { - "type": "String" - }, - "name": { - "type": "String" - } - } - }, - "audioAnalysisBitDepth": "Nombre de bits", - "editMetadataFieldTrackTotal": "Total des pistes", - "@editMetadataFieldTrackTotal": { - "description": "Label for total tracks field in the edit metadata sheet" - }, - "@editMetadataFieldDiscTotal": { - "description": "Label for total discs field in the edit metadata sheet" - }, - "replayGainBatchConfirmMessage": "Analyser le niveau sonore et ajouter des balises ReplayGain à {count} piste(s) ?", - "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Dossier nommé d'après la balise « Artiste de l'album »", - "@notifDownloadingUpdate": { - "description": "Notification title while downloading an app update", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "@csvImportTracks": { - "description": "Label shown in quality picker for CSV import", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "trackEditMetadata": "Modifier les métadonnées", - "discographyDownloadAll": "Tout télécharger", - "@discographyDownloadAll": { - "description": "Option - download entire discography" - }, - "@editMetadataFieldAlbum": { - "description": "Chip label for album field in auto-fill selector" - }, - "albumFolderArtistAlbumSubtitle": "Albums/Nom de l'artiste/Titre de l'album/", - "extensionHealthServiceUnknown": "État du service inconnu", - "navHome": "Accueil", - "queueDownloadStarting": "C'est parti...", - "@dialogRemoveExtension": { - "description": "Dialog title - uninstall extension" - }, - "notifLibraryScanProgressNoTotal": "{scanned} fichiers analysés • {percentage} %", - "@appearanceAmoledDark": { - "description": "Theme option - pure black" - }, - "qualityHiResFlac": "FLAC haute résolution", - "selectionSelected": "{count} sélectionnés", - "extensionDetailsInformation": "Information", - "@extensionDetailsInformation": { - "description": "Section title for extension metadata information" - }, - "discographyDownload": "Télécharger la discographie", - "editMetadataFieldCopyright": "Droits d'auteur", - "@setupOpenSettings": { - "description": "Button to open system settings" - }, - "libraryFilterSort": "Trier", - "cacheLibraryCoverDesc": "Pochettes extraites des fichiers musicaux locaux. Elles seront extraites à nouveau lors de la prochaine analyse.", - "dialogRemoveExtension": "Supprimer l'extension", - "backupExportSectionTitle": "Créer une sauvegarde", - "downloadEmbedLyricsDisabled": "Activez d'abord l'intégration des métadonnées", - "openInOtherServices": "Ouvrir dans d'autres services", - "actionSelectAll": "Tout sélectionner", - "settingsDownloadNetworkSubtitle": "Choisissez le réseau à utiliser pour les téléchargements. Si vous sélectionnez « Wi-Fi uniquement », les téléchargements seront interrompus lorsque vous utilisez les données mobiles.", - "downloadFolderOrganization": "Organisation du dossier", - "tutorialWelcomeTip2": "Choose from the audio qualities offered by your download provider", - "@tutorialWelcomeTip2": { - "description": "Tutorial welcome tip 2" - }, - "selectionAllSelected": "Toutes les pistes sélectionnées", - "@selectionAllSelected": { - "description": "Status - all items selected" - }, - "settingsLogsSubtitle": "Consulter les journaux de l'application pour le débogage", - "albumFolderYearAlbumSubtitle": "Albums/[2005] Titre de l'album/", - "cancelDownloadKeep": "Conserver", - "optionsDetailedLoggingOn": "Des journaux détaillés sont enregistrés", - "safMigrationMessage2": "Veuillez sélectionner à nouveau votre dossier de téléchargement pour passer au nouveau système de stockage.", - "@storeChangeRepoTooltip": { - "description": "Tooltip for the change-repository icon button in the app bar" - }, - "regionCountryJP": "Japon", - "notifUpdateFailed": "Échec de la mise à jour", - "downloadCreatePlaylistSourceFolderRedundant": "Géré par les paramètres d'organisation des dossiers", - "@trackLyricsSaved": { - "description": "Snackbar after lyrics saved", - "placeholders": { - "fileName": { - "type": "String" - } - } - }, - "downloadLocationSubtitle": "Choisissez l'emplacement où enregistrer vos morceaux téléchargés", - "trackConvertActionLabelLossless": "{sourceFormat} → {targetFormat} ({quality})", - "lyricsProvidersDisabledSection": "Désactivés ({count})", - "@dateDaysAgo": { - "description": "Relative date - days ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "librarySourceLocal": "Locale", - "backupContentsExtensions": "{count, plural, =1{1 extension} other{{count} extensions}}", - "sectionService": "Service", - "lyricsProviderQqMusicDesc": "QQ Music (idéal pour écouter des titres chinois, via un proxy)", - "@lyricsProviderQqMusicDesc": { - "description": "Description for QQ Music provider" - }, - "cacheCleanupUnusedDesc": "Supprimer les entrées orphelines de l'historique des téléchargements et de la bibliothèque pour les fichiers manquants.", - "selectionTapPlaylistsToSelect": "Appuyez sur les playlists pour les sélectionner", - "notifUpdateFailedBody": "Impossible de télécharger la mise à jour. Veuillez réessayer plus tard.", - "downloadNeteaseIncludeTranslationDisabled": "Paroles originales uniquement", - "artistPopular": "Populaire", - "extensionRemoveButton": "Supprimer l'extension", - "allFilesAccessEnabledSubtitle": "Peut écrire dans n'importe quel dossier", - "@allFilesAccessEnabledSubtitle": { - "description": "Subtitle when all files access is enabled" - }, - "extensionsSearchProvider": "Moteur de recherche", - "tutorialWelcomeDesc": "Learn how to find music with extensions, choose the quality you want, and manage downloads in SpotiFLAC Mobile.", - "selectionBatchConvertConfirmTitle": "Conversion par lots", - "extensionMetadataProvider": "Fournisseur de métadonnées", - "queueDownloadedFileMissing": "Fichier téléchargé manquant", - "logClearLogs": "Effacer les journaux", - "@downloadAppleQqMultiPerson": { - "description": "Setting for word-by-word multi-person lyrics from Apple Music and QQ Music" - }, - "tutorialWelcomeTip1": "Search with an installed extension or paste a supported music link", - "@tutorialWelcomeTip1": { - "description": "Tutorial welcome tip 1" - }, - "logIssueRateLimitedSuggestion": "Attendez quelques minutes avant de réessayer", - "downloadAllowLocalNetworkEnabled": "Les requêtes vers des adresses locales ou privées sont autorisées (pour un proxy local ou un DNS personnalisé)", - "@regionCountryUS": { - "description": "Country name for SongLink region picker" - }, - "trackArtist": "Artiste", - "extensionCustomUrlHandling": "Gestion des URL personnalisées", - "appearanceDynamicColorSubtitle": "Utilisez les couleurs de votre fond d'écran", - "@appearanceDynamicColorSubtitle": { - "description": "Subtitle for dynamic color" - }, - "searchSortDefault": "Par défaut", - "@downloadFallbackExtensions": { - "description": "Settings item for configuring fallback extension providers" + "@downloadAlbumFolderStructure": { + "description": "Setting - album folder organization" }, "albumFolderStructureDescription": "Choisissez la structure des dossiers d'albums", "@albumFolderStructureDescription": { "description": "Album folder structure picker description" }, - "libraryBuiltInPreviewPlayerSubtitle": "Uniquement pour des écoutes rapides et locales dans SpotiFLAC Mobile ; non recommandé pour une écoute régulière", - "@libraryBuiltInPreviewPlayerSubtitle": { - "description": "Subtitle for built-in preview player option" + "downloadUseAlbumArtistForFolders": "Utilisez l'artiste de l'album pour les dossiers", + "@downloadUseAlbumArtistForFolders": { + "description": "Setting - choose whether artist folders use Album Artist or Track Artist" }, - "storageModeAppFolder": "Dossier « Applications » (recommandé)", - "@actionPause": { - "description": "Action button - pause download" + "downloadUsePrimaryArtistOnly": "Artiste principal uniquement pour les dossiers", + "@downloadUsePrimaryArtistOnly": { + "description": "Setting - strip featured artists from folder name" }, - "actionPaste": "Coller", - "extensionSettingsCount": "{count} {count, plural, =1{paramètre} other{paramètres}}", - "downloadNativeWorker": "Tâche de téléchargement native", - "releaseTypeEp": "EP", - "@releaseTypeEp": { - "description": "Badge label for EP releases" + "downloadUsePrimaryArtistOnlyEnabled": "Les noms des artistes mis en avant ont été supprimés du nom du dossier (par exemple : Justin Bieber, Quavo → Justin Bieber)", + "@downloadUsePrimaryArtistOnlyEnabled": { + "description": "Subtitle when primary artist only is enabled" }, - "snackbarExtensionInstalledEnable": "{extensionName} est installée. Activez-la dans Paramètres > Extensions", - "cacheRefreshStats": "Actualiser les statistiques", - "collectionPlaylistChangeCover": "Changer l'image de couverture", - "@collectionPlaylistChangeCover": { - "description": "Bottom sheet action to pick a custom cover image for a playlist" + "downloadUsePrimaryArtistOnlyDisabled": "Nom complet de l'artiste utilisé pour le nom du dossier", + "@downloadUsePrimaryArtistOnlyDisabled": { + "description": "Subtitle when primary artist only is disabled" }, - "optionsClearHistory": "Effacer l'historique des téléchargements", - "trackGenre": "Genre", - "snackbarSelectedPlaylistsEmpty": "Les playlists sélectionnées ne contiennent aucun morceau", - "collectionAddedTracksToPlaylist": "Ajout de {count} {count, plural, =1{titre} other{titres}} à {playlistName}", - "downloadNeteaseIncludeRomanization": "Netease : inclure la romanisation", - "libraryFilterMetadataMissingArtist": "Artiste manquant", - "extensionsNoCustomSearch": "Aucune extension avec recherche personnalisée", - "@extensionsTitle": { - "description": "Extensions page title" + "downloadSelectQuality": "Sélectionner la qualité", + "@downloadSelectQuality": { + "description": "Dialog title - choose audio quality" }, - "extensionDownloadProvider": "Fournisseur de téléchargement", - "@extensionDownloadProvider": { - "description": "Capability - provides downloads" - }, - "lyricsMode": "Mode Paroles", - "aboutReportIssueSubtitle": "Signalez tout problème que vous rencontrez", - "@downloadSeparateSinglesFolder": { - "description": "Setting - separate folder for singles" + "downloadFrom": "Télécharger depuis", + "@downloadFrom": { + "description": "Label - download source" }, "appearanceAmoledDark": "Noir Amoled", - "logIssueNetworkErrorDescription": "Problèmes de connexion détectés", - "folderOrganizationByArtistAlbumSubtitle": "Dossiers imbriqués pour les artistes et les albums", - "@libraryForceFullScanSubtitle": { - "description": "Subtitle for force full scan button" + "@appearanceAmoledDark": { + "description": "Theme option - pure black" }, - "setupGrantPermission": "Accorder l'autorisation", - "lyricsProvidersDescription": "Activer, désactiver et réorganiser les sources de paroles. Les sources sont parcourues de haut en bas jusqu'à ce que les paroles soient trouvées.", - "dateDaysAgo": "Il y a {count} jours", - "extensionsHomeFeedDescription": "Choisissez l'extension qui affiche le fil d'actualité sur l'écran principal", - "downloadLossyMp3Subtitle": "Compatibilité optimale, environ 10 Mo par piste", - "@downloadLossyMp3Subtitle": { - "description": "Subtitle for MP3 320kbps lossy option" - }, - "nowPlayingDetails": "Détails", - "collectionWishlistEmptyTitle": "La liste de souhaits est vide", - "downloadAppleQqMultiPersonEnabled": "Étiquettes d'intervenants incluses pour les duos et les morceaux en groupe", - "@snackbarExtensionUpdatedVersion": { - "description": "Snackbar after updating an extension from the repo tab", - "placeholders": { - "extensionName": { - "type": "String" - }, - "version": { - "type": "String" - } - } - }, - "extensionHealthServiceDegraded": "Service perturbé", - "selectionConvertNoConvertible": "Aucune piste convertible sélectionnée", - "setupStorageGranted": "Autorisation de stockage accordée !", - "downloadAllowLocalNetwork": "Autoriser l'accès au réseau local", - "nowPlayingNoLyrics": "Ce fichier ne contient pas de paroles", - "selectionDeleteTracksCount": "Supprimer {count} {count, plural, =1{titre} other{titres}}", - "@selectionDeleteTracksCount": { - "description": "Button label for deleting selected tracks", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@libraryForceFullScan": { - "description": "Button to force a complete rescan of library" - }, - "notifLibraryScanExcluded": "{count} exclus", - "@aboutPaxsenixSubtitle": { - "description": "Subtitle for Paxsenix special thanks entry on the about page" - }, - "setupChangeFolderTooltip": "Changer de dossier", - "logIssueIspBlockingDescription": "Il se peut que votre fournisseur d'accès Internet bloque l'accès aux services de téléchargement", - "@logIssueIspBlockingDescription": { - "description": "Diagnostic badge description for ISP blocking" - }, - "libraryClear": "Vider la bibliothèque", - "collectionRemoveFromPlaylist": "Supprimer de la playlist", - "@collectionRemoveFromPlaylist": { - "description": "Tooltip for removing track from playlist" - }, - "backupIncludeSecrets": "Inclure les informations d'identification de l'extension", - "notifDownloadsFinishedBody": "{completed, plural, =1{1 titre téléchargé} other{{completed} titres téléchargés}}, {failed, plural, =1{1 échec} other{{failed} échecs}}", - "storeCategoryMetadata": "Métadonnées", - "@trackLyricsEmbedded": { - "description": "Snackbar - lyrics saved to file" - }, - "editMetadataFieldDiscTotal": "Total des disques", - "tutorialLibraryTip1": "Manage active, pending, and completed downloads from the Library queue", - "playlistsCount": "{count, plural, =1{1 playlist} other{{count} playlists}}", - "downloadCreatePlaylistSourceFolderDisabled": "Tous les morceaux sont enregistrés directement dans le dossier de téléchargement", - "@downloadFallbackExtensionsSubtitle": { - "description": "Subtitle for fallback extensions item" - }, - "libraryFilterLocal": "Locale", - "tutorialDownloadInProgressSemantics": "Téléchargement en cours", - "searchSortDurationLong": "Durée (la plus longue)", - "@appearanceLanguage": { - "description": "Language setting title" - }, - "libraryAbout": "À propos de la bibliothèque locale", - "@libraryAbout": { - "description": "Section header for about info" - }, - "cueSplitNoAudioFile": "Fichier audio introuvable pour cette liste CUE", - "notifUpdateReadyBody": "SpotiFLAC v{version} a été téléchargé. Appuyez pour l'installer.", - "appearanceSelectAccentColor": "Sélectionnez une couleur d'accentuation {hex}", - "@homeAlbumInfoUnavailable": { - "description": "Snackbar when album info cannot be loaded" - }, - "trackReplayGain": "Réanalyser ReplayGain", - "downloadSeparateSinglesFolder": "Dossier dédié aux titres individuels", - "trackAlbumArtist": "Artiste de l'album", - "qualityFlacLossless": "FLAC sans perte", - "@extensionVerificationHelpMessageWaiting": { - "description": "Dialog message when verification may need manual browser help" - }, - "tutorialSettingsTitle": "Personnalisez votre expérience", - "extensionActionFailed": "L'action a échoué", - "@storeEmptyNoResults": { - "description": "Message when search/filter returns no results" - }, - "downloadAppleQqMultiPerson": "Apple / QQ : Paroles pour plusieurs personnes", - "downloadFallbackExtensionsSubtitle": "Choisissez les extensions pouvant servir de solution de secours", - "storeExtensionsCount": "{count} {count, plural, =1{extension} other{extensions}}", - "trackCoverNoEmbeddedArt": "Aucune pochette d'album n'a été trouvée", - "@trackCoverNoEmbeddedArt": { - "description": "Message shown when a track file has no embedded cover art" - }, - "snackbarExtensionUpdatedVersion": "{extensionName} a été mis à jour vers la version {version}", - "setupStorageAccessMessageAndroid11": "Depuis Android 11, l'autorisation « Accès à tous les fichiers » est requise pour enregistrer des fichiers dans le dossier de téléchargement de votre choix.", - "notifDownloadsFinished": "Téléchargements terminés ({completed} terminé, {failed} en échec)", - "notifLibraryScanProgressWithTotal": "{scanned}/{total} fichiers • {percentage} %", - "optionsPrimaryProvider": "Fournisseur principal", - "@optionsPrimaryProvider": { - "description": "Main search provider setting" - }, - "logIssueTrackNotFoundSuggestion": "Il se peut que ce morceau ne soit pas disponible en qualité sans perte", - "collectionAddedToLoved": "\"{trackName}\" ajouté aux Favoris", - "albumFolderArtistAlbumFlat": "Artiste / Album (singles)", - "homeAlbumInfoUnavailable": "Informations sur l'album non disponibles", - "settingsLyrics": "Paroles", - "extensionVerificationBrowserExternal": "Externe", - "regionCountryIN": "Inde", - "extensionHealthUnknown": "Inconnu", - "backupContentsWishlist": "{count} liste de souhaits {count, plural, =1{titre} other{titres}}", - "settingsAutoExportFailed": "Échec de l'exportation automatique des téléchargements", - "logFilterSection": "Filtre", - "dialogDiscardChanges": "Ignorer les modifications ?", - "@qualityHiResFlacSubtitle": { - "description": "Technical spec for hi-res" - }, - "searchTracks": "Titres", - "searchAlbums": "Albums", - "trackConvertFormat": "Convertir le format", - "metadataProviderPriorityTitle": "Priorité des métadonnées", - "libraryFolderHint": "Appuyez pour sélectionner un dossier", - "downloadedAlbumDeleteMessage": "Souhaitez-vous supprimer {count} {count, plural, =1{piste} other{pistes}} de cet album ?\n\nCela supprimera également les fichiers de l'espace de stockage.", - "@downloadedAlbumDeleteMessage": { - "description": "Delete confirmation with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "trackAlbum": "Album", - "updateAvailable": "Mise à jour disponible", - "optionsEmbedLyrics": "Intégrer les paroles", - "trackReEnrichProgress": "Réenrichissement des métadonnées...", - "@trackReEnrichProgress": { - "description": "Snackbar while re-enriching metadata" - }, - "audioAnalysisPeak": "Pic", - "@audioAnalysisPeak": { - "description": "Peak amplitude metric label" - }, - "optionsExtensionStoreSubtitle": "Afficher l'onglet « Dépôt » dans le menu de navigation", - "settingsTitle": "Paramètres", - "@settingsAbout": { - "description": "Settings section - app info" - }, - "cacheExploreFeed": "Explorer le cache des flux", - "@dialogDownloadPlaylistsMessage": { - "description": "Dialog message for bulk playlist download confirmation", - "placeholders": { - "trackCount": { - "type": "int" - }, - "playlistCount": { - "type": "int" - } - } - }, - "downloadedAlbumSelectedCount": "{count} sélectionnés", - "downloadAskQualitySubtitle": "Afficher le sélecteur de qualité pour chaque téléchargement", - "filenameShowAdvancedTags": "Afficher les balises avancées", - "@filenameShowAdvancedTags": { - "description": "Toggle label for showing advanced filename tags" - }, - "@editMetadataFieldComment": { - "description": "Label for comment field in the edit metadata sheet" - }, - "downloadFallbackExtensions": "Extensions de secours", - "downloadAlbumArtistMetadataFull": "Métadonnées de l'artiste de l'album : complètes", - "cacheLibraryCover": "Cache de couverture de bibliothèque", - "actionShuffle": "Lecture aléatoire", - "backupCreated": "Sauvegarde créée", - "downloadLossyAacSubtitle": "Compatibilité optimale avec les appareils mobiles, format M4A", - "actionCreate": "Créer", - "snackbarAddedToQueueGeneric": "Ajouté à la file d'attente", - "downloadedAlbumDownloadedCount": "{count} téléchargements", - "snackbarLoadingCueSheet": "Chargement de la liste CUE...", - "@trackCoverClearSelected": { - "description": "Tooltip for clearing the newly selected cover art" - }, - "aboutOriginalCreator": "Créateur de la version originale de SpotiFLAC", - "a11yTrackByArtist": "{trackName} de {artistName}", - "audioAnalysisDynamicRange": "Plage dynamique", - "homeChangeSearchProviderTooltip": "Changer de moteur de recherche", - "loadingSharedLink": "Chargement du lien partagé...", - "lyricsModeEmbedSubtitle": "Paroles enregistrées dans les métadonnées FLAC", - "setupNotificationBackgroundDescription": "Recevez des notifications sur la progression et la fin du téléchargement. Cela vous permet de suivre les téléchargements lorsque l'application est en arrière-plan.", - "snackbarViewQueue": "Afficher la file d'attente", - "@audioAnalysisDuration": { - "description": "Duration metric label" - }, - "downloadSeparateSinglesDisabled": "Les singles et les albums sont enregistrés dans le même dossier", - "backupRestored": "La sauvegarde a été restaurée avec succès", - "trackConvertConfirmMessageLosslessCapped": "Convertir du format {sourceFormat} au format {targetFormat} ({quality}) ?\n\nLe fichier de sortie conservera un codec sans perte, mais la profondeur de bits et la fréquence d'échantillonnage seront limitées. Le fichier d'origine sera supprimé après la conversion.", - "@trackConvertConfirmMessageLosslessCapped": { - "description": "Confirmation dialog message for capped lossless conversion of a single file", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "quality": { - "type": "String" - } - } - }, - "discographySelectAlbumsSubtitle": "Choisissez des albums ou des titres spécifiques", - "@discographySelectAlbumsSubtitle": { - "description": "Subtitle for select albums option" - }, - "backupImportSectionDescription": "Sélectionnez un fichier de sauvegarde pour restaurer vos données. Cette opération remplacera les réglages actuels, l'historique et la bibliothèque de cet appareil.", - "errorUrlFetchFailed": "Impossible de charger le contenu de ce lien. Veuillez réessayer.", - "lyricsProviderLyricsPlusDesc": "Paroles de karaoké mot à mot (Apple/Musixmatch/Spotify/QQ, via un proxy)", - "dialogSave": "Sauvegarder", - "trackReEnrichSearching": "Recherche de métadonnées en ligne...", - "regionCountryUS": "États-Unis", - "audioAnalysisDescription": "Vérifier la qualité sans perte à l'aide d'une analyse spectrale", - "downloadFilenameFormat": "Nom du fichier", - "cueSplitTitle": "Fiche CUE fractionnée", - "settingsAppSubtitle": "Mises à jour, données, dépôt d'extension, débogage", - "@settingsAppSubtitle": { - "description": "Subtitle for app settings" - }, - "@setupPermissionRequiredMessage": { - "description": "Generic permission required message", - "placeholders": { - "permissionType": { - "type": "String" - } - } - }, - "errorMissingExtensionSource": "Impossible de charger {item} : source de l'extension manquante", - "albumFolderAlbumOnlySubtitle": "Albums/Nom de l'album/", - "logIssueTrackNotFoundLabel": "PISTE INTROUVABLE", - "extensionVerificationHelpTitleManual": "Lancer la vérification manuellement", - "dialogDiscard": "Ignorer", - "storageModeSaf": "Dossier personnalisé (SAF)", - "errorRateLimited": "Débit limité", - "downloadSelectQuality": "Sélectionner la qualité", - "dialogDownloadPlaylistsMessage": "Télécharger {trackCount} {trackCount, plural, =1{titre} other{titres}} depuis {playlistCount} {playlistCount, plural, =1{playlist} other{playlists}} ?", - "collectionFoldersTitle": "Mes dossiers", - "progressFetchingMetadata": "Récupération des métadonnées... {current}/{total}", - "settingsDownloadNetworkAny": "Wi-Fi + données mobiles", - "audioAnalysisDuration": "Durée", - "audioAnalysisAnalyzing": "Analyse audio en cours...", - "extensionVerificationHelpMessageWaiting": "Si le navigateur ne s'est pas ouvert, ou si la vérification s'est terminée sans que vous ne soyez redirigé vers SpotiFLAC Mobile, ouvrez à nouveau ce lien ou copiez-le manuellement.", - "editMetadataFieldDiscNum": "Disque n°", - "@editMetadataFieldDiscNum": { - "description": "Chip label for disc number field in auto-fill selector" - }, - "@noTracksFoundForAlbum": { - "description": "Empty state message when an album has no tracks" - }, - "previewPlay": "Écouter un aperçu", - "setupPermissionRequiredMessage": "L'autorisation {permissionType} est requise pour profiter pleinement de l'application. Vous pourrez modifier ce paramètre ultérieurement dans les Paramètres.", - "aboutVersion": "Version", - "qualityHiResFlacSubtitle": "24 bits / jusqu'à 96 kHz", - "audioAnalysisSamples": "Échantillons", - "libraryFilterQualityHiRes": "Haute résolution (24 bits)", - "sectionMetadataProviders": "Fournisseurs", - "@sectionMetadataProviders": { - "description": "Settings section header for metadata providers" - }, - "trackCopyright": "Droits d'auteur", - "libraryForceFullScanSubtitle": "Réanalysez tous les fichiers en ignorant le cache", - "trackCopiedToClipboard": "Copié dans le presse-papiers", - "optionsEmbedMetadata": "Intégrer des métadonnées", - "collectionAddedTracksToPlaylistWithExisting": "Ajout de {count} {count, plural, =1{titre} other{titres}} à {playlistName} ({alreadyCount} titres déjà présents dans la playlist)", - "@collectionAddedTracksToPlaylistWithExisting": { - "description": "Snackbar after adding multiple tracks to a playlist when some were already present", - "placeholders": { - "count": { - "type": "int" - }, - "playlistName": { - "type": "String" - }, - "alreadyCount": { - "type": "int" - } - } - }, - "storeCategoryIntegration": "Intégration", - "storeClearFilters": "Effacer les filtres", - "navSettings": "Paramètres", - "@homeRecent": { - "description": "Section header for recent searches" - }, - "sectionApp": "Application", - "@sectionLanguage": { - "description": "Settings section header for language" - }, - "downloadFilterContributingDisabled": "Chaîne « Artiste » de l'album complet utilisée", - "albumFolderArtistAlbumSinglesSubtitle": "Artiste/Album/ et Artiste/Singles/", - "collectionDeletePlaylistsMessage": "Supprimer {count} {count, plural, =1{playlist} other{playlists}}?", - "lyricsProvidersSaved": "Priorité du fournisseur de paroles enregistrée", - "@trackReplayGainFailed": { - "description": "Snackbar message when ReplayGain scan/write fails" - }, - "trackTrackName": "Nom de la piste", - "homeRecent": "Récent", - "recentEmpty": "Aucun élément récent pour le moment", - "cacheClearAll": "Vider tout le cache", - "trackReEnrichFieldReleaseInfo": "Date & ISRC", - "regionCountryMX": "Mexique", - "a11yOpenAlbumByArtistTrackCount": "Ouvrir l'album {albumName} de {artistName}, {trackCount} titres", - "editMetadataFieldAlbum": "Album", - "settingsAbout": "À propos", - "libraryFilterTitle": "Filtres", - "cleanupOrphanedDownloadsResult": "{count} entrées orphelines ont été supprimées de l'historique", - "extensionHooksAvailable": "{count} crochet(s) disponibles", - "backupContentsSettings": "Paramètres de l'application", - "trackLyricsEmbedded": "Les paroles ont été intégrées avec succès", - "optionsUpdateChannelPreview": "Accédez aux versions préliminaires", - "collectionAddedToFavoriteArtists": "« {artistName} » a été ajouté à vos artistes préférés", - "libraryForceFullScan": "Lancer une analyse complète", - "snackbarProviderPrioritySaved": "Priorité du fournisseur enregistrée", - "collectionFavoriteArtistsEmptySubtitle": "Appuyez sur le cœur sur la page d'un artiste pour le garder ici", - "libraryBuiltInPlayerInfo": "Le lecteur intégré est un outil de prévisualisation permettant de vérifier rapidement les morceaux stockés localement. Utilisez un lecteur de musique externe pour les écouter.", - "extensionServiceStatus": "État du service", - "dateWeeksAgo": "Il y a {count} semaines", - "historyFilterSingles": "Titres", - "tutorialSettingsTip2": "Set quality, concurrency, filenames, and conversion preferences", - "trackLyricsSaved": "Paroles enregistrées dans {fileName}", - "cacheClearAllConfirmTitle": "Vider tout le cache ?", - "noTracksFoundForAlbum": "Aucun morceau trouvé pour cet album", - "sectionLanguage": "Langue", - "@logIssueTrackNotFoundDescription": { - "description": "Diagnostic badge description when a track is unavailable" - }, - "setupSelectFolder": "Sélectionner un dossier", - "dateYesterday": "Hier", - "collectionAddToPlaylist": "Ajouter à la playlist", - "snackbarUnsupportedAudioFormat": "Format audio non pris en charge", - "libraryScanCancelled": "Analyse annulée", - "appearanceLanguage": "Langue de l'application", - "extensionsTitle": "Extensions", - "dialogImportPlaylistMessage": "{count} titres ont été trouvés dans le fichier de la playlist. Voulez-vous les ajouter à la file d'attente de téléchargement ?", - "permissionNotification": "Notification", - "notifUpdateReady": "Prêt pour la mise à jour", - "lyricsModeDescription": "Choisissez comment les paroles sont enregistrées avec vos téléchargements", - "downloadFrom": "Télécharger depuis", - "collectionWishlistEmptySubtitle": "Appuyez sur le signe « + » à côté des morceaux pour enregistrer ceux que vous souhaitez télécharger plus tard", - "cueSplitSplitting": "Fractionnement de la liste CUE... ({current}/{total})", - "trackOptionAddToWishlist": "Ajouter à la liste de souhaits", - "settingsBackup": "Sauvegarde & Restauration", - "aboutPaxsenixSubtitle": "Proxy de paroles pour Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou et Genius", - "notifDownloadCompleteCount": "Téléchargement terminé ({completed}/{total})", - "extensionsNoDownloadProvider": "Aucune extension avec le fournisseur de téléchargement", - "libraryFilterSortGenreAsc": "Genre (A-Z)", - "trackReplayGainFailed": "Impossible d'ajouter les balises ReplayGain", - "collectionPlaylistRemoveCover": "Supprimer l'image de couverture", - "storeEmptyNoResults": "Aucune extension trouvée", - "logIssueTrackNotFoundDescription": "Certains titres n'ont pas pu être trouvés sur les plateformes de téléchargement", - "editMetadataFieldComment": "Commentaire", - "settingsMetadata": "Métadonnées", - "settingsCache": "Stockage & Cache", - "providerPriorityFallbackExtensionsHint": "Seules les extensions activées disposant de la fonctionnalité « fournisseur de téléchargement » sont répertoriées ici.", - "libraryFilterAll": "Tout", - "notifDownloadingUpdate": "Télécharger SpotiFLAC v{version}", - "extensionsProviderPrioritySection": "Priorité accordée aux prestataires", - "storeChangeRepoTooltip": "Changer de dépôt", - "snackbarFailedToInstall": "Échec de l'installation de l'extension", - "libraryScanSubtitle": "Recherchez des fichiers audio", - "snackbarExtensionInstalled": "{extensionName} est installée.", - "setupOpenSettings": "Ouvrir les paramètres", - "extensionsInstalledSection": "Extensions installées", - "aboutLinks": "Liens", - "trackCoverClearSelected": "Supprimer la pochette sélectionnée", - "libraryAutoScanWeekly": "Hebdomadaire", - "downloadMusixmatchLanguageAuto": "Auto (langue d'origine)", - "optionsDefaultSearchTab": "Onglet de recherche par défaut", - "downloadPrimaryArtistOnlyOn": "Primaire uniquement : Activé", - "folderOrganizationDescription": "Classer les fichiers téléchargés dans des dossiers", - "@folderOrganizationDescription": { - "description": "Folder organization sheet description" - }, - "lyricsModeEmbed": "Intégrer dans un fichier", - "trackReEnrichFfmpegFailed": "Échec de l'intégration des métadonnées FFmpeg", - "@extensionsSearchProviderDescription": { - "description": "Search provider setting description" - }, - "libraryFilterQualityLossy": "Avec perte", - "actionPause": "Pause", - "csvImportTracks": "{count} pistes issues d'un fichier CSV", - "actionGo": "Aller", - "sectionDebug": "Débogage", - "editMetadataFieldDate": "Date", - "timeHoursAgo": "{count, plural, =1{il y a 1 heure} other{il y a {count} heures}}", - "sectionPerformance": "Performances", - "extensionsDownloadPrioritySubtitle": "Définissez l'ordre des services de téléchargement", - "cacheAppDirectoryDesc": "Réponses HTTP, données WebView et autres données temporaires de l'application.", - "sectionData": "Données", - "notifFinalizingTrack": "Finalisation de {trackName}", - "snackbarFileNotFound": "Fichier introuvable", - "extensionQualityOptions": "Options de qualité", - "extensionVerificationBrowserSubtitleExternal": "Ouvrez d'abord les défis dans le navigateur par défaut", - "backupInvalidFile": "Ce fichier n'est pas une sauvegarde SpotiFLAC valide", - "storeRepoDialogTitle": "Répertoire des extensions", - "extensionsSearchProviderDescription": "Choisissez le service que vous souhaitez utiliser pour rechercher des morceaux", - "albumFolderAlbumOnly": "Album uniquement", - "nowPlayingOpenInExternalPlayer": "Ouvrir dans un lecteur externe", - "cueSplitButton": "Diviser en pistes", - "updateRequiredTitle": "Mise à jour requise", - "@updateRequiredTitle": { - "description": "Title of the mandatory update dialog shown when the installed version is too old" - }, - "updateRequiredNotice": "Cette version a {count} versions de retard et n'est plus prise en charge. Effectuez la mise à jour pour continuer à utiliser l'application.", - "@updateRequiredNotice": { - "description": "Subtitle of the mandatory update dialog; explains why the dialog cannot be dismissed", - "placeholders": { - "count": { - "type": "int" - } - } + "appearanceAmoledDarkSubtitle": "Fond noir pur", + "@appearanceAmoledDarkSubtitle": { + "description": "Subtitle for AMOLED dark" }, "appearanceHeroAnimations": "Animations des héros", "@appearanceHeroAnimations": { @@ -5891,6 +2213,46 @@ "@appearanceHeroAnimationsSubtitle": { "description": "Subtitle for the Hero animations toggle" }, + "appearanceForceBlur": "Utilisez toujours des effets de flou", + "@appearanceForceBlur": { + "description": "Toggle that forces backdrop blur on even when the device profile disabled it" + }, + "appearanceForceBlurSubtitle": "Activer l'effet de flou de la barre de navigation même sur les appareils où cette option est désactivée par défaut. Cela peut nuire aux performances.", + "@appearanceForceBlurSubtitle": { + "description": "Subtitle for the force-blur toggle" + }, + "queueClearAll": "Tout effacer", + "@queueClearAll": { + "description": "Button - clear all queue items" + }, + "queueClearAllMessage": "Êtes-vous sûr de vouloir supprimer tous les fichiers téléchargés ?", + "@queueClearAllMessage": { + "description": "Clear queue confirmation" + }, + "settingsAutoExportFailed": "Échec de l'exportation automatique des téléchargements", + "@settingsAutoExportFailed": { + "description": "Setting toggle for auto-export" + }, + "settingsAutoExportFailedSubtitle": "Enregistrez automatiquement les téléchargements ayant échoué dans un fichier TXT", + "@settingsAutoExportFailedSubtitle": { + "description": "Subtitle for auto-export setting" + }, + "settingsDownloadNetwork": "Réseau de téléchargement", + "@settingsDownloadNetwork": { + "description": "Setting for network type preference" + }, + "settingsDownloadNetworkAny": "Wi-Fi + données mobiles", + "@settingsDownloadNetworkAny": { + "description": "Network option - use any connection" + }, + "settingsDownloadNetworkWifiOnly": "Wi-Fi uniquement", + "@settingsDownloadNetworkWifiOnly": { + "description": "Network option - only use WiFi" + }, + "settingsDownloadNetworkSubtitle": "Choisissez le réseau à utiliser pour les téléchargements. Si vous sélectionnez « Wi-Fi uniquement », les téléchargements seront interrompus lorsque vous utilisez les données mobiles.", + "@settingsDownloadNetworkSubtitle": { + "description": "Subtitle explaining network preference" + }, "settingsConcurrentDownloads": "Téléchargements simultanés", "@settingsConcurrentDownloads": { "description": "Setting title - how many tracks download at the same time" @@ -5912,6 +2274,854 @@ } } }, + "albumFolderArtistAlbum": "Artiste / Album", + "@albumFolderArtistAlbum": { + "description": "Album folder option" + }, + "albumFolderArtistAlbumSubtitle": "Albums/Nom de l'artiste/Titre de l'album/", + "@albumFolderArtistAlbumSubtitle": { + "description": "Folder structure example" + }, + "albumFolderArtistYearAlbum": "Artiste / [Année] Album", + "@albumFolderArtistYearAlbum": { + "description": "Album folder option with year" + }, + "albumFolderArtistYearAlbumSubtitle": "Albums/Nom de l'artiste/[2005] Nom de l'album/", + "@albumFolderArtistYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "albumFolderAlbumOnly": "Album uniquement", + "@albumFolderAlbumOnly": { + "description": "Album folder option" + }, + "albumFolderAlbumOnlySubtitle": "Albums/Nom de l'album/", + "@albumFolderAlbumOnlySubtitle": { + "description": "Folder structure example" + }, + "albumFolderYearAlbum": "[Année] Album", + "@albumFolderYearAlbum": { + "description": "Album folder option with year" + }, + "albumFolderYearAlbumSubtitle": "Albums/[2005] Titre de l'album/", + "@albumFolderYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "albumFolderArtistAlbumSingles": "Artiste / Album + Singles", + "@albumFolderArtistAlbumSingles": { + "description": "Album folder option with singles inside artist" + }, + "albumFolderArtistAlbumSinglesSubtitle": "Artiste/Album/ et Artiste/Singles/", + "@albumFolderArtistAlbumSinglesSubtitle": { + "description": "Folder structure example" + }, + "albumFolderArtistAlbumFlat": "Artiste / Album (singles)", + "@albumFolderArtistAlbumFlat": { + "description": "Album folder option with singles directly in artist folder" + }, + "albumFolderArtistAlbumFlatSubtitle": "Artiste/Album/ et Artiste/titre.flac", + "@albumFolderArtistAlbumFlatSubtitle": { + "description": "Folder structure example for flat singles" + }, + "downloadedAlbumDeleteSelected": "Supprimer la sélection", + "@downloadedAlbumDeleteSelected": { + "description": "Button - delete selected tracks" + }, + "downloadedAlbumDeleteMessage": "Souhaitez-vous supprimer {count} {count, plural, =1{piste} other{pistes}} de cet album ?\n\nCela supprimera également les fichiers de l'espace de stockage.", + "@downloadedAlbumDeleteMessage": { + "description": "Delete confirmation with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumSelectedCount": "{count} sélectionnés", + "@downloadedAlbumSelectedCount": { + "description": "Selection count indicator", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumTapToSelect": "Appuyez sur les titres pour les sélectionner", + "@downloadedAlbumTapToSelect": { + "description": "Selection hint" + }, + "downloadedAlbumDeleteCount": "Supprimer {count} {count, plural, =1{piste} other{pistes}}", + "@downloadedAlbumDeleteCount": { + "description": "Delete button text with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumSelectToDelete": "Sélectionnez les pistes à supprimer", + "@downloadedAlbumSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "downloadedAlbumDiscHeader": "Disque {discNumber}", + "@downloadedAlbumDiscHeader": { + "description": "Header for disc separator in multi-disc albums", + "placeholders": { + "discNumber": { + "type": "int", + "example": "1" + } + } + }, + "recentTypeArtist": "Artiste", + "@recentTypeArtist": { + "description": "Recent access item type - artist" + }, + "recentTypeAlbum": "Album", + "@recentTypeAlbum": { + "description": "Recent access item type - album" + }, + "recentTypeSong": "Titre", + "@recentTypeSong": { + "description": "Recent access item type - song/track" + }, + "recentTypePlaylist": "Playlist", + "@recentTypePlaylist": { + "description": "Recent access item type - playlist" + }, + "recentEmpty": "Aucun élément récent pour le moment", + "@recentEmpty": { + "description": "Empty state text for recent access list" + }, + "recentClearAllMessage": "Effacer toutes les activités récentes ? L'historique des téléchargements et les fichiers musicaux ne seront pas supprimés.", + "@recentClearAllMessage": { + "description": "Confirmation message before clearing all recent activity" + }, + "recentShowAllDownloads": "Afficher tous les téléchargements", + "@recentShowAllDownloads": { + "description": "Button label to unhide hidden downloads in recent access" + }, + "recentPlaylistInfo": "Playlist : {name}", + "@recentPlaylistInfo": { + "description": "Snackbar message when tapping playlist in recent access", + "placeholders": { + "name": { + "type": "String", + "description": "Playlist name" + } + } + }, + "discographyDownload": "Télécharger la discographie", + "@discographyDownload": { + "description": "Button - download artist discography" + }, + "discographyDownloadAll": "Tout télécharger", + "@discographyDownloadAll": { + "description": "Option - download entire discography" + }, + "discographyDownloadAllSubtitle": "{count} titres issus de {albumCount} albums", + "@discographyDownloadAllSubtitle": { + "description": "Subtitle showing total tracks and albums", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "discographyAlbumsOnly": "Albums uniquement", + "@discographyAlbumsOnly": { + "description": "Option - download only albums" + }, + "discographyAlbumsOnlySubtitle": "{count} titres issus de {albumCount} albums", + "@discographyAlbumsOnlySubtitle": { + "description": "Subtitle showing album tracks count", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "discographySinglesOnly": "Uniquement les singles et les EP", + "@discographySinglesOnly": { + "description": "Option - download only singles" + }, + "discographySinglesOnlySubtitle": "{count} titres issus de {albumCount} singles", + "@discographySinglesOnlySubtitle": { + "description": "Subtitle showing singles tracks count", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "discographySelectAlbums": "Sélectionner des albums...", + "@discographySelectAlbums": { + "description": "Option - manually select albums to download" + }, + "discographySelectAlbumsSubtitle": "Choisissez des albums ou des titres spécifiques", + "@discographySelectAlbumsSubtitle": { + "description": "Subtitle for select albums option" + }, + "discographyFetchingTracks": "Chargement des pistes...", + "@discographyFetchingTracks": { + "description": "Progress - fetching album tracks" + }, + "discographyFetchingAlbum": "Récupération de {current} sur {total}...", + "@discographyFetchingAlbum": { + "description": "Progress - fetching specific album", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "discographySelectedCount": "{count} sélectionnés", + "@discographySelectedCount": { + "description": "Selection count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "discographyDownloadSelected": "Télécharger la sélection", + "@discographyDownloadSelected": { + "description": "Button - download selected albums" + }, + "discographyAddedToQueue": "{count} titres ont été ajoutés à la file d'attente", + "@discographyAddedToQueue": { + "description": "Snackbar - tracks added from discography", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "discographySkippedDownloaded": "{added} ajouté, {skipped} déjà téléchargé", + "@discographySkippedDownloaded": { + "description": "Snackbar - with skipped tracks count", + "placeholders": { + "added": { + "type": "int" + }, + "skipped": { + "type": "int" + } + } + }, + "discographyNoAlbums": "Aucun album disponible", + "@discographyNoAlbums": { + "description": "Error - no albums found for artist" + }, + "discographyFailedToFetch": "Impossible de récupérer certains albums", + "@discographyFailedToFetch": { + "description": "Error - some albums failed to load" + }, + "sectionStorageAccess": "Accès au stockage", + "@sectionStorageAccess": { + "description": "Section header for storage access settings" + }, + "allFilesAccess": "Accès à tous les fichiers", + "@allFilesAccess": { + "description": "Toggle for MANAGE_EXTERNAL_STORAGE permission" + }, + "allFilesAccessEnabledSubtitle": "Peut écrire dans n'importe quel dossier", + "@allFilesAccessEnabledSubtitle": { + "description": "Subtitle when all files access is enabled" + }, + "allFilesAccessDisabledSubtitle": "Réservé aux dossiers multimédias uniquement", + "@allFilesAccessDisabledSubtitle": { + "description": "Subtitle when all files access is disabled" + }, + "allFilesAccessDescription": "Activez cette option si vous rencontrez des erreurs d'écriture lors de l'enregistrement dans des dossiers personnalisés. À partir d'Android 13, l'accès à certains répertoires est restreint par défaut.", + "@allFilesAccessDescription": { + "description": "Description explaining when to enable all files access" + }, + "allFilesAccessDeniedMessage": "L'autorisation a été refusée. Veuillez activer manuellement l'option « Accès à tous les fichiers » dans les paramètres système.", + "@allFilesAccessDeniedMessage": { + "description": "Message when permission is permanently denied" + }, + "allFilesAccessDisabledMessage": "L'accès à tous les fichiers est désactivé. L'application disposera d'un accès limité au stockage.", + "@allFilesAccessDisabledMessage": { + "description": "Snackbar message when user disables all files access" + }, + "settingsLocalLibrary": "Bibliothèque locale", + "@settingsLocalLibrary": { + "description": "Settings menu item - local library" + }, + "settingsLocalLibrarySubtitle": "Analysez la musique et détectez les doublons", + "@settingsLocalLibrarySubtitle": { + "description": "Subtitle for local library settings" + }, + "settingsCache": "Stockage & Cache", + "@settingsCache": { + "description": "Settings menu item - cache management" + }, + "settingsCacheSubtitle": "Afficher la taille et vider le cache", + "@settingsCacheSubtitle": { + "description": "Subtitle for cache management menu" + }, + "libraryTitle": "Bibliothèque locale", + "@libraryTitle": { + "description": "Library settings page title" + }, + "libraryScanSettings": "Paramètres de numérisation", + "@libraryScanSettings": { + "description": "Section header for scan settings" + }, + "libraryEnableLocalLibrary": "Activer la bibliothèque locale", + "@libraryEnableLocalLibrary": { + "description": "Toggle to enable library scanning" + }, + "libraryEnableLocalLibrarySubtitle": "Analysez et gérez votre bibliothèque musicale", + "@libraryEnableLocalLibrarySubtitle": { + "description": "Subtitle for enable toggle" + }, + "libraryFolder": "Dossier de bibliothèque", + "@libraryFolder": { + "description": "Folder selection setting" + }, + "libraryFolderHint": "Appuyez pour sélectionner un dossier", + "@libraryFolderHint": { + "description": "Placeholder when no folder selected" + }, + "libraryAddFolder": "Ajouter un dossier de bibliothèque", + "@libraryAddFolder": { + "description": "Action to add another local library source" + }, + "libraryAddFolderSubtitle": "Mémoire interne, carte SD, SSD ou autre disque externe", + "@libraryAddFolderSubtitle": { + "description": "Supported storage locations for local library sources" + }, + "librarySourceOnline": "En ligne", + "@librarySourceOnline": { + "description": "Library source is connected and accessible" + }, + "librarySourceOffline": "Hors ligne. Reconnectez le périphérique de stockage pour restaurer ces morceaux.", + "@librarySourceOffline": { + "description": "Library source is temporarily disconnected" + }, + "librarySourceDisabled": "Désactivé", + "@librarySourceDisabled": { + "description": "Library source has been disabled by the user" + }, + "librarySourceScanCount": "{scanned} fichiers analysés sur {total} ({progress} %)", + "@librarySourceScanCount": { + "description": "Live progress for one library folder scan", + "placeholders": { + "scanned": { + "type": "int" + }, + "total": { + "type": "int" + }, + "progress": { + "type": "String" + } + } + }, + "libraryExternalStorage": "Stockage externe", + "@libraryExternalStorage": { + "description": "Label for a removable or external library source" + }, + "libraryRemoveFolder": "Supprimer le dossier de la bibliothèque", + "@libraryRemoveFolder": { + "description": "Action to remove one indexed library source" + }, + "libraryRemoveFolderMessage": "Supprimer ce dossier et les morceaux indexés qu'il contient de SpotiFLAC Mobile ? Les fichiers audio présents sur le périphérique de stockage ne seront pas supprimés.", + "@libraryRemoveFolderMessage": { + "description": "Confirmation shown before removing a library source" + }, + "libraryShowDuplicateIndicator": "Afficher l'indicateur de doublons", + "@libraryShowDuplicateIndicator": { + "description": "Toggle for duplicate indicator in search" + }, + "libraryShowDuplicateIndicatorSubtitle": "Afficher lors de la recherche de pistes existantes", + "@libraryShowDuplicateIndicatorSubtitle": { + "description": "Subtitle for duplicate indicator toggle" + }, + "libraryAutoScan": "Analyse automatique", + "@libraryAutoScan": { + "description": "Setting for automatic library scanning" + }, + "libraryAutoScanSubtitle": "Analysez automatiquement votre bibliothèque à la recherche de nouveaux fichiers", + "@libraryAutoScanSubtitle": { + "description": "Subtitle for auto scan setting" + }, + "libraryAutoScanOff": "Désactivée", + "@libraryAutoScanOff": { + "description": "Auto scan disabled" + }, + "libraryAutoScanOnOpen": "À chaque ouverture de l'application", + "@libraryAutoScanOnOpen": { + "description": "Auto scan when app opens" + }, + "libraryAutoScanDaily": "Tous les jours", + "@libraryAutoScanDaily": { + "description": "Auto scan once per day" + }, + "libraryAutoScanWeekly": "Hebdomadaire", + "@libraryAutoScanWeekly": { + "description": "Auto scan once per week" + }, + "libraryActions": "Actions", + "@libraryActions": { + "description": "Section header for library actions" + }, + "libraryScan": "Analyse de la bibliothèque", + "@libraryScan": { + "description": "Button to start library scan" + }, + "libraryScanSubtitle": "Recherchez des fichiers audio", + "@libraryScanSubtitle": { + "description": "Subtitle for scan button" + }, + "libraryScanSelectFolderFirst": "Sélectionnez d'abord un dossier", + "@libraryScanSelectFolderFirst": { + "description": "Message when trying to scan without folder" + }, + "libraryCleanupMissingFiles": "Nettoyage des fichiers manquants", + "@libraryCleanupMissingFiles": { + "description": "Button to remove entries for missing files" + }, + "libraryCleanupMissingFilesSubtitle": "Supprimez les entrées correspondant aux fichiers qui n'existent plus", + "@libraryCleanupMissingFilesSubtitle": { + "description": "Subtitle for cleanup button" + }, + "libraryClear": "Vider la bibliothèque", + "@libraryClear": { + "description": "Button to clear all library entries" + }, + "libraryClearSubtitle": "Supprimez tous les titres numérisés", + "@libraryClearSubtitle": { + "description": "Subtitle for clear button" + }, + "libraryClearConfirmTitle": "Vider la bibliothèque", + "@libraryClearConfirmTitle": { + "description": "Dialog title for clear confirmation" + }, + "libraryClearConfirmMessage": "Cette opération supprimera toutes les pistes numérisées de votre bibliothèque. Vos fichiers musicaux ne seront pas supprimés.", + "@libraryClearConfirmMessage": { + "description": "Dialog message for clear confirmation" + }, + "libraryAbout": "À propos de la bibliothèque locale", + "@libraryAbout": { + "description": "Section header for about info" + }, + "libraryAboutDescription": "Analyse votre bibliothèque musicale existante pour détecter les doublons lors du téléchargement. Prend en charge les formats FLAC, M4A, MP3, Opus et OGG. Les métadonnées sont extraites des balises des fichiers lorsqu'elles sont disponibles.", + "@libraryAboutDescription": { + "description": "Description of local library feature" + }, + "libraryTracksUnit": "{count, plural, =1{piste} other{pistes}}", + "@libraryTracksUnit": { + "description": "Unit label for tracks count (without the number itself)", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryFilesUnit": "{count, plural, =1{fichier} other{fichiers}}", + "@libraryFilesUnit": { + "description": "Unit label for files count during library scanning", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryLastScanned": "Dernière analyse : {time}", + "@libraryLastScanned": { + "description": "Last scan time display", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "libraryLastScannedNever": "Jamais", + "@libraryLastScannedNever": { + "description": "Shown when library has never been scanned" + }, + "libraryScanning": "En cours d'analyse...", + "@libraryScanning": { + "description": "Status during scan" + }, + "libraryScanFinalizing": "Finalisation de la bibliothèque...", + "@libraryScanFinalizing": { + "description": "Status shown after file scanning finishes but library persistence is still running" + }, + "libraryScanProgress": "{progress} % des {total} fichiers", + "@libraryScanProgress": { + "description": "Scan progress display", + "placeholders": { + "progress": { + "type": "String" + }, + "total": { + "type": "int" + } + } + }, + "libraryInLibrary": "Dans la bibliothèque", + "@libraryInLibrary": { + "description": "Badge shown on tracks that exist in local library" + }, + "libraryRemovedMissingFiles": "{count} fichiers manquants ont été supprimés de la bibliothèque", + "@libraryRemovedMissingFiles": { + "description": "Snackbar after cleanup", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryCleared": "Bibliothèque vidée", + "@libraryCleared": { + "description": "Snackbar after clearing library" + }, + "libraryStorageAccessRequired": "Accès au stockage requis", + "@libraryStorageAccessRequired": { + "description": "Dialog title for storage permission" + }, + "libraryStorageAccessMessage": "SpotiFLAC a besoin d'un accès au stockage pour analyser votre bibliothèque musicale. Veuillez lui accorder l'autorisation dans les paramètres.", + "@libraryStorageAccessMessage": { + "description": "Dialog message for storage permission" + }, + "libraryFolderNotExist": "Le dossier sélectionné n'existe pas", + "@libraryFolderNotExist": { + "description": "Error when folder doesn't exist" + }, + "librarySourceDownloaded": "Téléchargé", + "@librarySourceDownloaded": { + "description": "Badge for tracks downloaded via SpotiFLAC" + }, + "librarySourceLocal": "Locale", + "@librarySourceLocal": { + "description": "Badge for tracks from local library scan" + }, + "libraryFilterAll": "Tout", + "@libraryFilterAll": { + "description": "Filter chip - show all library items" + }, + "libraryFilterDownloaded": "Téléchargé", + "@libraryFilterDownloaded": { + "description": "Filter chip - show only downloaded items" + }, + "libraryFilterLocal": "Locale", + "@libraryFilterLocal": { + "description": "Filter chip - show only local library items" + }, + "libraryFilterTitle": "Filtres", + "@libraryFilterTitle": { + "description": "Filter bottom sheet title" + }, + "libraryFilterReset": "Réinitialiser", + "@libraryFilterReset": { + "description": "Reset all filters button" + }, + "libraryFilterApply": "Appliquer", + "@libraryFilterApply": { + "description": "Apply filters button" + }, + "libraryFilterSource": "Source", + "@libraryFilterSource": { + "description": "Filter section - source type" + }, + "libraryFilterQuality": "Qualité", + "@libraryFilterQuality": { + "description": "Filter section - audio quality" + }, + "libraryFilterQualityHiRes": "Haute résolution (24 bits)", + "@libraryFilterQualityHiRes": { + "description": "Filter option - high resolution audio" + }, + "libraryFilterQualityCD": "CD (16 bits)", + "@libraryFilterQualityCD": { + "description": "Filter option - CD quality audio" + }, + "libraryFilterQualityLossy": "Avec perte", + "@libraryFilterQualityLossy": { + "description": "Filter option - lossy compressed audio" + }, + "libraryFilterFormat": "Format", + "@libraryFilterFormat": { + "description": "Filter section - file format" + }, + "libraryFilterMetadata": "Métadonnées", + "@libraryFilterMetadata": { + "description": "Filter section - metadata completeness" + }, + "libraryFilterMetadataComplete": "Métadonnées complètes", + "@libraryFilterMetadataComplete": { + "description": "Filter option - items with complete metadata" + }, + "libraryFilterMetadataMissingAny": "Métadonnées manquantes", + "@libraryFilterMetadataMissingAny": { + "description": "Filter option - items missing any tracked metadata field" + }, + "libraryFilterMetadataMissingYear": "Année manquante", + "@libraryFilterMetadataMissingYear": { + "description": "Filter option - items missing release year/date" + }, + "libraryFilterMetadataMissingGenre": "Genre manquant", + "@libraryFilterMetadataMissingGenre": { + "description": "Filter option - items missing genre" + }, + "libraryFilterMetadataMissingAlbumArtist": "Artiste d'album manquant", + "@libraryFilterMetadataMissingAlbumArtist": { + "description": "Filter option - items missing album artist" + }, + "libraryFilterSort": "Trier", + "@libraryFilterSort": { + "description": "Filter section - sort order" + }, + "libraryFilterSortLatest": "Le plus récent", + "@libraryFilterSortLatest": { + "description": "Sort option - newest first" + }, + "libraryFilterSortOldest": "Le plus ancien", + "@libraryFilterSortOldest": { + "description": "Sort option - oldest first" + }, + "libraryFilterSortAlbumAsc": "Album (A-Z)", + "@libraryFilterSortAlbumAsc": { + "description": "Sort option - album ascending" + }, + "libraryFilterSortAlbumDesc": "Album (Z-A)", + "@libraryFilterSortAlbumDesc": { + "description": "Sort option - album descending" + }, + "libraryFilterSortGenreAsc": "Genre (A-Z)", + "@libraryFilterSortGenreAsc": { + "description": "Sort option - genre ascending" + }, + "libraryFilterSortGenreDesc": "Genre (Z-A)", + "@libraryFilterSortGenreDesc": { + "description": "Sort option - genre descending" + }, + "timeJustNow": "Il y a quelques instants", + "@timeJustNow": { + "description": "Relative time - less than a minute ago" + }, + "timeMinutesAgo": "{count, plural, =1{il y a 1 minute} other{il y a {count} minutes}}", + "@timeMinutesAgo": { + "description": "Relative time - minutes ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "timeHoursAgo": "{count, plural, =1{il y a 1 heure} other{il y a {count} heures}}", + "@timeHoursAgo": { + "description": "Relative time - hours ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "tutorialWelcomeTitle": "Bienvenue sur SpotiFLAC Mobile !", + "@tutorialWelcomeTitle": { + "description": "Tutorial welcome page title" + }, + "tutorialWelcomeDesc": "Découvrez comment rechercher de la musique avec des extensions, choisir la qualité souhaitée et gérer vos téléchargements dans SpotiFLAC Mobile.", + "@tutorialWelcomeDesc": { + "description": "Tutorial welcome page description" + }, + "tutorialWelcomeTip1": "Effectuez une recherche à l'aide d'une extension installée ou collez un lien musical pris en charge", + "@tutorialWelcomeTip1": { + "description": "Tutorial welcome tip 1" + }, + "tutorialWelcomeTip2": "Choisissez parmi les qualités audio proposées par votre fournisseur de téléchargement", + "@tutorialWelcomeTip2": { + "description": "Tutorial welcome tip 2" + }, + "tutorialWelcomeTip3": "Intégrez automatiquement les métadonnées, la pochette, les paroles et les informations relatives à la sortie", + "@tutorialWelcomeTip3": { + "description": "Tutorial welcome tip 3" + }, + "tutorialSearchTitle": "Trouver de la musique", + "@tutorialSearchTitle": { + "description": "Tutorial search page title" + }, + "tutorialSearchDesc": "Effectuez une recherche à l'aide de l'extension que vous avez sélectionnée ou collez un lien musical pris en charge.", + "@tutorialSearchDesc": { + "description": "Tutorial search page description" + }, + "tutorialDownloadTitle": "Télécharger de la musique", + "@tutorialDownloadTitle": { + "description": "Tutorial download page title" + }, + "tutorialDownloadDesc": "Choisissez une qualité disponible, lancez le téléchargement et suivez sa progression dans la file d'attente.", + "@tutorialDownloadDesc": { + "description": "Tutorial download page description" + }, + "tutorialLibraryTitle": "Votre bibliothèque", + "@tutorialLibraryTitle": { + "description": "Tutorial library page title" + }, + "tutorialLibraryDesc": "La musique téléchargée et numérisée localement est classée dans votre bibliothèque.", + "@tutorialLibraryDesc": { + "description": "Tutorial library page description" + }, + "tutorialLibraryTip1": "Gérez les téléchargements en cours, en attente et terminés depuis la file d'attente de la bibliothèque", + "@tutorialLibraryTip1": { + "description": "Tutorial library tip 1" + }, + "tutorialLibraryTip2": "Appuyez sur un morceau pour le lire avec le lecteur intégré", + "@tutorialLibraryTip2": { + "description": "Tutorial library tip 2" + }, + "tutorialLibraryTip3": "Parcourez les titres, les albums et les playlists sous forme de liste ou de grille", + "@tutorialLibraryTip3": { + "description": "Tutorial library tip 3" + }, + "tutorialExtensionsTitle": "Extensions", + "@tutorialExtensionsTitle": { + "description": "Tutorial extensions page title" + }, + "tutorialExtensionsDesc": "Les extensions permettent d'ajouter des fonctionnalités de recherche, de téléchargement, de métadonnées, de paroles de morceaux et d'autres intégrations.", + "@tutorialExtensionsDesc": { + "description": "Tutorial extensions page description" + }, + "tutorialExtensionsTip1": "Consultez l'onglet « Dépôt » pour découvrir des extensions utiles", + "@tutorialExtensionsTip1": { + "description": "Tutorial extensions tip 1" + }, + "tutorialExtensionsTip2": "Choisissez les fournisseurs pour la recherche, les téléchargements, les métadonnées et les solutions de secours", + "@tutorialExtensionsTip2": { + "description": "Tutorial extensions tip 2" + }, + "tutorialExtensionsTip3": "Connectez les comptes lorsque cela est nécessaire et veillez à ce que les extensions soient à jour", + "@tutorialExtensionsTip3": { + "description": "Tutorial extensions tip 3" + }, + "tutorialSettingsTitle": "Personnalisez votre expérience", + "@tutorialSettingsTitle": { + "description": "Tutorial settings page title" + }, + "tutorialSettingsDesc": "Personnalisez les téléchargements, la lecture, le fonctionnement de la bibliothèque, l'apparence et le stockage.", + "@tutorialSettingsDesc": { + "description": "Tutorial settings page description" + }, + "tutorialSettingsTip1": "Modifier l'emplacement de téléchargement et l'organisation des dossiers", + "@tutorialSettingsTip1": { + "description": "Tutorial settings tip 1" + }, + "tutorialSettingsTip2": "Définissez la qualité, le nombre de tâches simultanées, les noms de fichiers et les préférences de conversion", + "@tutorialSettingsTip2": { + "description": "Tutorial settings tip 2" + }, + "tutorialSettingsTip3": "Personnaliser le thème et l'apparence de l'application", + "@tutorialSettingsTip3": { + "description": "Tutorial settings tip 3" + }, + "tutorialReadyMessage": "Vous êtes prêt. Sélectionnez vos extensions, puis effectuez une recherche ou collez un lien compatible.", + "@tutorialReadyMessage": { + "description": "Tutorial completion message" + }, + "libraryForceFullScan": "Lancer une analyse complète", + "@libraryForceFullScan": { + "description": "Button to force a complete rescan of library" + }, + "libraryForceFullScanSubtitle": "Réanalysez tous les fichiers en ignorant le cache", + "@libraryForceFullScanSubtitle": { + "description": "Subtitle for force full scan button" + }, + "cleanupOrphanedDownloads": "Nettoyage des téléchargements orphelins", + "@cleanupOrphanedDownloads": { + "description": "Button to remove history entries for deleted files" + }, + "cleanupOrphanedDownloadsSubtitle": "Supprimez les entrées de l'historique correspondant aux fichiers qui n'existent plus", + "@cleanupOrphanedDownloadsSubtitle": { + "description": "Subtitle for orphaned cleanup button" + }, + "cleanupOrphanedDownloadsResult": "{count} entrées orphelines ont été supprimées de l'historique", + "@cleanupOrphanedDownloadsResult": { + "description": "Snackbar after orphan cleanup", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cleanupOrphanedDownloadsNone": "Aucune entrée orpheline n'a été trouvée", + "@cleanupOrphanedDownloadsNone": { + "description": "Snackbar when no orphans found" + }, + "cacheTitle": "Stockage & Cache", + "@cacheTitle": { + "description": "Cache management page title" + }, + "cacheSummaryTitle": "Présentation du cache", + "@cacheSummaryTitle": { + "description": "Heading for cache summary card" + }, + "cacheSummarySubtitle": "La suppression du cache n'entraînera pas la suppression des fichiers musicaux téléchargés.", + "@cacheSummarySubtitle": { + "description": "Helper text for cache summary card" + }, + "cacheEstimatedTotal": "Utilisation estimée du cache : {size}", + "@cacheEstimatedTotal": { + "description": "Total cache size shown in summary", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "cacheSectionStorage": "Données mises en cache", + "@cacheSectionStorage": { + "description": "Section header for cache entries" + }, + "cacheSectionMaintenance": "Entretien", + "@cacheSectionMaintenance": { + "description": "Section header for cleanup actions" + }, + "cacheAppDirectory": "Répertoire de cache de l'application", + "@cacheAppDirectory": { + "description": "Cache item title for app cache directory" + }, + "cacheAppDirectoryDesc": "Réponses HTTP, données WebView et autres données temporaires de l'application.", + "@cacheAppDirectoryDesc": { + "description": "Description of what app cache directory contains" + }, + "cacheTempDirectory": "Répertoire temporaire", + "@cacheTempDirectory": { + "description": "Cache item title for temporary files directory" + }, + "cacheTempDirectoryDesc": "Fichiers temporaires liés aux téléchargements et à la conversion audio.", + "@cacheTempDirectoryDesc": { + "description": "Description of what temporary directory contains" + }, + "cacheCoverImage": "Cache des images de couverture", + "@cacheCoverImage": { + "description": "Cache item title for persistent cover images" + }, + "cacheCoverImageDesc": "J'ai téléchargé les pochettes de l'album et des titres. Je les téléchargerai à nouveau lors de leur consultation.", + "@cacheCoverImageDesc": { + "description": "Description of what cover image cache contains" + }, + "cacheLibraryCover": "Cache de couverture de bibliothèque", + "@cacheLibraryCover": { + "description": "Cache item title for local library cover art images" + }, + "cacheLibraryCoverDesc": "Pochettes extraites des fichiers musicaux locaux. Elles seront extraites à nouveau lors de la prochaine analyse.", + "@cacheLibraryCoverDesc": { + "description": "Description of what library cover cache contains" + }, "libraryPlaybackNormalization": "Normalisation du volume", "@libraryPlaybackNormalization": { "description": "Toggle title for ReplayGain playback normalization in the built-in player" @@ -5928,6 +3138,350 @@ "@cacheAudioAnalysisDesc": { "description": "Description of what audio analysis cache contains" }, + "cacheExploreFeed": "Explorer le cache des flux", + "@cacheExploreFeed": { + "description": "Cache item title for explore home feed cache" + }, + "cacheExploreFeedDesc": "Contenu de l'onglet « Explorer » (nouvelles sorties, tendances). Se mettra à jour lors de votre prochaine visite.", + "@cacheExploreFeedDesc": { + "description": "Description of what explore feed cache contains" + }, + "cacheTrackLookup": "Cache de recherche de piste", + "@cacheTrackLookup": { + "description": "Cache item title for track ID lookup cache" + }, + "cacheTrackLookupDesc": "Recherche d'identifiant de titre sur Spotify/Deezer. La suppression des données peut ralentir les prochaines recherches.", + "@cacheTrackLookupDesc": { + "description": "Description of what track lookup cache contains" + }, + "cacheCleanupUnusedDesc": "Supprimer les entrées orphelines de l'historique des téléchargements et de la bibliothèque pour les fichiers manquants.", + "@cacheCleanupUnusedDesc": { + "description": "Description of what cleanup unused data does" + }, + "cacheNoData": "Aucune donnée mise en cache", + "@cacheNoData": { + "description": "Label when cache category has no data" + }, + "cacheSizeWithFiles": "{size} dans {count} fichiers", + "@cacheSizeWithFiles": { + "description": "Cache size and file count", + "placeholders": { + "size": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "cacheSizeOnly": "{size}", + "@cacheSizeOnly": { + "description": "Cache size only", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "cacheEntries": "{count} entrées", + "@cacheEntries": { + "description": "Track cache entry count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cacheClearSuccess": "Effacé : {target}", + "@cacheClearSuccess": { + "description": "Snackbar after clearing selected cache", + "placeholders": { + "target": { + "type": "String" + } + } + }, + "cacheClearConfirmTitle": "Vider le cache ?", + "@cacheClearConfirmTitle": { + "description": "Dialog title before clearing one cache category" + }, + "cacheClearConfirmMessage": "Cette opération effacera les données mises en cache pour {target}. Les fichiers musicaux téléchargés ne seront pas supprimés.", + "@cacheClearConfirmMessage": { + "description": "Dialog message before clearing selected cache", + "placeholders": { + "target": { + "type": "String" + } + } + }, + "cacheClearAllConfirmTitle": "Vider tout le cache ?", + "@cacheClearAllConfirmTitle": { + "description": "Dialog title before clearing all caches" + }, + "cacheClearAllConfirmMessage": "Cette opération effacera toutes les catégories mises en cache sur cette page. Les fichiers musicaux téléchargés ne seront pas supprimés.", + "@cacheClearAllConfirmMessage": { + "description": "Dialog message before clearing all caches" + }, + "cacheClearAll": "Vider tout le cache", + "@cacheClearAll": { + "description": "Button label to clear all caches" + }, + "cacheCleanupUnused": "Nettoyer les données inutilisées", + "@cacheCleanupUnused": { + "description": "Action title for cleaning unused entries" + }, + "cacheCleanupUnusedSubtitle": "Supprimer l'historique des téléchargements orphelins et les entrées manquantes dans la bibliothèque", + "@cacheCleanupUnusedSubtitle": { + "description": "Subtitle for cleanup unused data action" + }, + "cacheCleanupResult": "Nettoyage terminé : {downloadCount} téléchargements orphelins, {libraryCount} entrées de bibliothèque manquantes", + "@cacheCleanupResult": { + "description": "Snackbar after unused data cleanup", + "placeholders": { + "downloadCount": { + "type": "int" + }, + "libraryCount": { + "type": "int" + } + } + }, + "cacheRefreshStats": "Actualiser les statistiques", + "@cacheRefreshStats": { + "description": "Button label to refresh cache statistics" + }, + "trackSaveCoverArt": "Enregistrer la pochette", + "@trackSaveCoverArt": { + "description": "Menu action - save album cover art as file" + }, + "trackSaveLyrics": "Enregistrer les paroles (.lrc)", + "@trackSaveLyrics": { + "description": "Menu action - save lyrics as .lrc file" + }, + "trackSaveLyricsProgress": "Enregistrement des paroles...", + "@trackSaveLyricsProgress": { + "description": "Snackbar while saving lyrics to file" + }, + "trackReEnrich": "Réenrichir", + "@trackReEnrich": { + "description": "Menu action - re-embed metadata into audio file" + }, + "trackReEnrichOnlineSubtitle": "Rechercher des métadonnées en ligne et les intégrer dans un fichier", + "@trackReEnrichOnlineSubtitle": { + "description": "Subtitle for re-enrich metadata action for local items" + }, + "trackReEnrichBatchSubtitle": "Choisissez une mise à jour en ligne ou manuelle, puis vérifiez chaque modification avant de valider", + "@trackReEnrichBatchSubtitle": { + "description": "Subtitle for batch metadata update choices" + }, + "trackReEnrichFieldCover": "Illustration de couverture", + "@trackReEnrichFieldCover": { + "description": "Checkbox label for cover art field in re-enrich" + }, + "trackReEnrichFieldLyrics": "Paroles", + "@trackReEnrichFieldLyrics": { + "description": "Checkbox label for lyrics field in re-enrich" + }, + "trackReEnrichFieldBasicTags": "Album, Album Artiste", + "@trackReEnrichFieldBasicTags": { + "description": "Checkbox label for basic tags in re-enrich (title/artist are never overwritten)" + }, + "trackReEnrichFieldTrackInfo": "Numéro de piste & de disque", + "@trackReEnrichFieldTrackInfo": { + "description": "Checkbox label for track info in re-enrich" + }, + "trackReEnrichFieldReleaseInfo": "Date & ISRC", + "@trackReEnrichFieldReleaseInfo": { + "description": "Checkbox label for release info in re-enrich" + }, + "trackReEnrichFieldExtra": "Genre, Label, Droits d'auteur", + "@trackReEnrichFieldExtra": { + "description": "Checkbox label for extra metadata in re-enrich" + }, + "trackReEnrichSelectAll": "Tout sélectionner", + "@trackReEnrichSelectAll": { + "description": "Select all fields checkbox in re-enrich" + }, + "trackReEnrichModeIsrc": "ISRC uniquement", + "@trackReEnrichModeIsrc": { + "description": "Batch metadata mode that only writes ISRC" + }, + "trackReEnrichModeIsrcSubtitle": "Rechercher et ajouter l'identifiant de l'enregistrement sans modifier les autres balises", + "@trackReEnrichModeIsrcSubtitle": { + "description": "Explanation for the ISRC-only batch metadata mode" + }, + "trackReEnrichModeMissing": "Compléter les balises manquantes", + "@trackReEnrichModeMissing": { + "description": "Batch metadata mode that fills only empty tags" + }, + "trackReEnrichModeMissingSubtitle": "Conserver les valeurs existantes et ne remplir que les champs vides", + "@trackReEnrichModeMissingSubtitle": { + "description": "Explanation for the fill-missing batch metadata mode" + }, + "trackReEnrichModeReplace": "Mettre à jour les balises sélectionnées", + "@trackReEnrichModeReplace": { + "description": "Batch metadata mode that replaces selected tag groups" + }, + "trackReEnrichModeReplaceSubtitle": "Sélectionnez les valeurs existantes pouvant être remplacées par des métadonnées en ligne", + "@trackReEnrichModeReplaceSubtitle": { + "description": "Explanation for the selected-tag batch metadata mode" + }, + "trackReEnrichModeManual": "Définir des valeurs communes", + "@trackReEnrichModeManual": { + "description": "Batch metadata mode that applies shared values to every selected track" + }, + "trackReEnrichModeManualSubtitle": "Appliquer les mêmes valeurs à toutes les pistes sélectionnées", + "@trackReEnrichModeManualSubtitle": { + "description": "Explanation for the manual shared-value batch metadata mode" + }, + "trackReEnrichManualFieldsTitle": "Valeurs à appliquer", + "@trackReEnrichManualFieldsTitle": { + "description": "Heading above manual batch metadata inputs" + }, + "trackReEnrichManualHint": "Laissez un champ vide pour conserver sa valeur actuelle. Les titres, numéros et codes ISRC des morceaux restent inchangés.", + "@trackReEnrichManualHint": { + "description": "Safety explanation for manual batch metadata inputs" + }, + "trackReEnrichFieldsTitle": "Balises à mettre à jour", + "@trackReEnrichFieldsTitle": { + "description": "Heading above batch re-enrich field checkboxes" + }, + "trackReEnrichReview": "Vérifier les modifications", + "@trackReEnrichReview": { + "description": "Button that searches metadata and opens the batch change review" + }, + "trackReEnrichReviewTitle": "Vérifier les modifications apportées aux métadonnées", + "@trackReEnrichReviewTitle": { + "description": "Title of the batch metadata review sheet" + }, + "trackReEnrichReviewSubtitle": "{changeCount} modifications proposées sur {trackCount} titres", + "@trackReEnrichReviewSubtitle": { + "description": "Summary shown above proposed batch metadata changes", + "placeholders": { + "changeCount": { + "type": "int" + }, + "trackCount": { + "type": "int" + } + } + }, + "trackReEnrichNoChanges": "Aucune modification des métadonnées n'a été détectée pour les morceaux sélectionnés.", + "@trackReEnrichNoChanges": { + "description": "Message when batch metadata preview has no proposed changes" + }, + "trackReEnrichApplyChanges": "Appliquer les modifications", + "@trackReEnrichApplyChanges": { + "description": "Confirmation button in the batch metadata review sheet" + }, + "trackReEnrichRefreshOnline": "Actualiser depuis Internet", + "@trackReEnrichRefreshOnline": { + "description": "Proposed value when lyrics will be refreshed during re-enrich" + }, + "trackEditMetadata": "Modifier les métadonnées", + "@trackEditMetadata": { + "description": "Menu action - edit embedded metadata" + }, + "trackCoverSaved": "La pochette a été enregistrée sous le nom {fileName}", + "@trackCoverSaved": { + "description": "Snackbar after cover art saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "trackCoverNoSource": "Aucune source d'illustration de couverture disponible", + "@trackCoverNoSource": { + "description": "Snackbar when no cover art URL or embedded cover" + }, + "trackLyricsSaved": "Paroles enregistrées dans {fileName}", + "@trackLyricsSaved": { + "description": "Snackbar after lyrics saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "trackReEnrichProgress": "Réenrichissement des métadonnées...", + "@trackReEnrichProgress": { + "description": "Snackbar while re-enriching metadata" + }, + "trackReEnrichSearching": "Recherche de métadonnées en ligne...", + "@trackReEnrichSearching": { + "description": "Snackbar while searching metadata from internet for local items" + }, + "trackReEnrichPreparing": "Préparation des modifications des métadonnées...", + "@trackReEnrichPreparing": { + "description": "Progress message while preparing manual batch metadata changes" + }, + "trackReEnrichSuccess": "Métadonnées réenrichies avec succès", + "trackReEnrichMetadataSaved": "Metadata saved", + "trackReEnrichLyricsUpdated": "Lyrics updated", + "trackReEnrichLyricsPreserved": "No new lyrics found; existing lyrics kept", + "trackReEnrichLyricsDisabled": "Lyrics not updated: lyric downloading is disabled in Settings", + "@trackReEnrichSuccess": { + "description": "Snackbar after successful re-enrichment" + }, + "trackReEnrichFfmpegFailed": "Échec de l'intégration des métadonnées FFmpeg", + "@trackReEnrichFfmpegFailed": { + "description": "Snackbar when FFmpeg embed fails for MP3/Opus" + }, + "queueFlacAction": "File d'attente FLAC", + "@queueFlacAction": { + "description": "Action/button label for queueing FLAC redownloads for local tracks" + }, + "queueFlacConfirmMessage": "Recherchez en ligne les correspondances pour les morceaux sélectionnés et ajoutez les téléchargements FLAC à la file d'attente.\n\nLes fichiers existants ne seront ni modifiés ni supprimés.\n\nSeules les correspondances hautement fiables sont automatiquement ajoutées à la file d'attente.\n\n{count} sélectionnés", + "@queueFlacConfirmMessage": { + "description": "Confirmation dialog body before queueing FLAC redownloads for local tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueFlacNoReliableMatches": "Aucun résultat pertinent n'a été trouvé en ligne pour cette sélection", + "@queueFlacNoReliableMatches": { + "description": "Snackbar when no safe FLAC redownload matches were found" + }, + "queueFlacQueuedWithSkipped": "{addedCount} titres ajoutés à la file d'attente, {skippedCount} titres ignorés", + "@queueFlacQueuedWithSkipped": { + "description": "Snackbar when some selected local tracks were queued for FLAC redownload and some were skipped", + "placeholders": { + "addedCount": { + "type": "int" + }, + "skippedCount": { + "type": "int" + } + } + }, + "trackSaveFailed": "Échec : {error}", + "@trackSaveFailed": { + "description": "Snackbar when save operation fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "trackConvertFormat": "Convertir le format", + "@trackConvertFormat": { + "description": "Menu item - convert audio format" + }, + "trackConvertTitle": "Convertir un fichier audio", + "@trackConvertTitle": { + "description": "Title of convert bottom sheet" + }, + "trackConvertTargetFormat": "Format cible", + "@trackConvertTargetFormat": { + "description": "Label for format selection" + }, + "trackConvertBitrate": "Débit binaire", + "@trackConvertBitrate": { + "description": "Label for bitrate selection" + }, "trackConvertKeepOriginal": "Conserver le fichier d'origine", "@trackConvertKeepOriginal": { "description": "Toggle to preserve the source file during conversion" @@ -5936,6 +3490,37 @@ "@trackConvertKeepOriginalDescription": { "description": "Description for preserving the source file during conversion" }, + "trackConvertConfirmTitle": "Confirmer la conversion", + "@trackConvertConfirmTitle": { + "description": "Confirmation dialog title" + }, + "trackConvertConfirmMessage": "Convertir du format {sourceFormat} au format {targetFormat} avec un débit binaire de {bitrate} ?\n\nLe fichier d'origine sera supprimé après la conversion.", + "@trackConvertConfirmMessage": { + "description": "Confirmation dialog message", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "trackConvertConfirmMessageLossless": "Convertir de {sourceFormat} vers {targetFormat} ? (Sans perte — aucune perte de qualité)\n\nLe fichier d'origine sera supprimé après la conversion.", + "@trackConvertConfirmMessageLossless": { + "description": "Confirmation dialog message for lossless-to-lossless conversion", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + } + } + }, "trackConvertConfirmKeepOriginal": "Convertir du format {sourceFormat} au format {targetFormat} ?\n\nLe fichier d'origine sera conservé et le fichier converti sera ajouté en tant qu'entrée distincte dans la bibliothèque.", "@trackConvertConfirmKeepOriginal": { "description": "Confirmation message when the source file will be preserved", @@ -5948,6 +3533,382 @@ } } }, + "trackConvertLosslessHint": "Conversion sans perte — aucune perte de qualité", + "@trackConvertLosslessHint": { + "description": "Hint shown when converting between lossless formats" + }, + "trackConvertConverting": "Conversion audio en cours...", + "@trackConvertConverting": { + "description": "Snackbar while converting" + }, + "trackConvertSuccess": "Conversion vers {format} réussie", + "@trackConvertSuccess": { + "description": "Snackbar after successful conversion", + "placeholders": { + "format": { + "type": "String" + } + } + }, + "trackConvertFailed": "Échec de la conversion", + "@trackConvertFailed": { + "description": "Snackbar when conversion fails" + }, + "cueSplitTitle": "Fiche CUE fractionnée", + "@cueSplitTitle": { + "description": "Title for CUE split bottom sheet" + }, + "cueSplitAlbum": "Album : {album}", + "@cueSplitAlbum": { + "description": "Album name in CUE split sheet", + "placeholders": { + "album": { + "type": "String" + } + } + }, + "cueSplitArtist": "Artiste : {artist}", + "@cueSplitArtist": { + "description": "Artist name in CUE split sheet", + "placeholders": { + "artist": { + "type": "String" + } + } + }, + "cueSplitTrackCount": "{count} titres", + "@cueSplitTrackCount": { + "description": "Number of tracks in CUE sheet", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cueSplitConfirmTitle": "Album CUE fractionné", + "@cueSplitConfirmTitle": { + "description": "CUE split confirmation dialog title" + }, + "cueSplitConfirmMessage": "Diviser « {album} » en {count} fichiers FLAC individuels ?\n\nLes fichiers seront enregistrés dans le même répertoire.", + "@cueSplitConfirmMessage": { + "description": "CUE split confirmation dialog message", + "placeholders": { + "album": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "cueSplitSplitting": "Fractionnement de la liste CUE... ({current}/{total})", + "@cueSplitSplitting": { + "description": "Snackbar while splitting CUE", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "cueSplitSuccess": "Le fichier a été divisé en {count} pistes avec succès", + "@cueSplitSuccess": { + "description": "Snackbar after successful CUE split", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cueSplitFailed": "Échec de la division CUE", + "@cueSplitFailed": { + "description": "Snackbar when CUE split fails" + }, + "cueSplitNoAudioFile": "Fichier audio introuvable pour cette liste CUE", + "@cueSplitNoAudioFile": { + "description": "Error when CUE audio file is missing" + }, + "cueSplitButton": "Diviser en pistes", + "@cueSplitButton": { + "description": "Button text to start CUE splitting" + }, + "actionCreate": "Créer", + "@actionCreate": { + "description": "Generic action button - create" + }, + "collectionFoldersTitle": "Mes dossiers", + "@collectionFoldersTitle": { + "description": "Library section title for custom folders" + }, + "collectionWishlist": "Liste de souhaits", + "@collectionWishlist": { + "description": "Custom folder for saved tracks to download later" + }, + "collectionLoved": "Favoris", + "@collectionLoved": { + "description": "Custom folder for favorite tracks" + }, + "collectionFavoriteArtists": "Artistes Favoris", + "@collectionFavoriteArtists": { + "description": "Custom folder for favorite artists" + }, + "collectionPlaylist": "Playlist", + "@collectionPlaylist": { + "description": "Single playlist label" + }, + "collectionAddToPlaylist": "Ajouter à la playlist", + "@collectionAddToPlaylist": { + "description": "Action to add a track to user playlist" + }, + "collectionCreatePlaylist": "Créer une playlist", + "@collectionCreatePlaylist": { + "description": "Action to create a new playlist" + }, + "collectionNoPlaylistsYet": "Aucune playlist pour le moment", + "@collectionNoPlaylistsYet": { + "description": "Empty state title when user has no playlists" + }, + "collectionPlaylistTracks": "{count, plural, =1{1 titre} other{{count} titres}}", + "@collectionPlaylistTracks": { + "description": "Track count label for custom playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionArtistCount": "{count, plural, =1{1 artiste} other{{count} artistes}}", + "@collectionArtistCount": { + "description": "Artist count label for favorite artists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionAddedToPlaylist": "Ajouté à « {playlistName} »", + "@collectionAddedToPlaylist": { + "description": "Snackbar after adding track to playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "collectionAlreadyInPlaylist": "Déjà présent dans « {playlistName} »", + "@collectionAlreadyInPlaylist": { + "description": "Snackbar when track already exists in playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "collectionPlaylistNameHint": "Nom de la playlist", + "@collectionPlaylistNameHint": { + "description": "Hint text for playlist name input" + }, + "collectionPlaylistNameRequired": "Le nom de la playlist est requis", + "@collectionPlaylistNameRequired": { + "description": "Validation error for empty playlist name" + }, + "collectionRenamePlaylist": "Renommer la playlist", + "@collectionRenamePlaylist": { + "description": "Action to rename playlist" + }, + "collectionDeletePlaylist": "Supprimer la playlist", + "@collectionDeletePlaylist": { + "description": "Action to delete playlist" + }, + "collectionPlaylistRenamed": "Playlist renommée", + "@collectionPlaylistRenamed": { + "description": "Snackbar after renaming playlist" + }, + "collectionWishlistEmptyTitle": "La liste de souhaits est vide", + "@collectionWishlistEmptyTitle": { + "description": "Wishlist empty state title" + }, + "collectionWishlistEmptySubtitle": "Appuyez sur le signe « + » à côté des morceaux pour enregistrer ceux que vous souhaitez télécharger plus tard", + "@collectionWishlistEmptySubtitle": { + "description": "Wishlist empty state subtitle" + }, + "collectionLovedEmptyTitle": "Le dossier « Favoris » est vide", + "@collectionLovedEmptyTitle": { + "description": "Loved empty state title" + }, + "collectionLovedEmptySubtitle": "Appuyez sur les morceaux que vous aimez pour les ajouter à vos favoris", + "@collectionLovedEmptySubtitle": { + "description": "Loved empty state subtitle" + }, + "collectionFavoriteArtistsEmptyTitle": "Pas encore d'artistes préférés", + "@collectionFavoriteArtistsEmptyTitle": { + "description": "Favorite artists empty state title" + }, + "collectionFavoriteArtistsEmptySubtitle": "Appuyez sur le cœur sur la page d'un artiste pour le garder ici", + "@collectionFavoriteArtistsEmptySubtitle": { + "description": "Favorite artists empty state subtitle" + }, + "collectionPlaylistEmptyTitle": "La playlist est vide", + "@collectionPlaylistEmptyTitle": { + "description": "Playlist empty state title" + }, + "collectionPlaylistEmptySubtitle": "Appuyez longuement sur le bouton « + » sur n'importe quel morceau pour l'ajouter ici", + "@collectionPlaylistEmptySubtitle": { + "description": "Playlist empty state subtitle" + }, + "collectionRemoveFromPlaylist": "Supprimer de la playlist", + "@collectionRemoveFromPlaylist": { + "description": "Tooltip for removing track from playlist" + }, + "collectionRemoveFromFolder": "Supprimer du dossier", + "@collectionRemoveFromFolder": { + "description": "Tooltip for removing track from wishlist/loved folder" + }, + "collectionAddedToLoved": "\"{trackName}\" ajouté aux Favoris", + "@collectionAddedToLoved": { + "description": "Snackbar after adding track to loved folder", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "collectionRemovedFromLoved": "\"{trackName}\" supprimé des Favoris", + "@collectionRemovedFromLoved": { + "description": "Snackbar after removing track from loved folder", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "collectionAddedToWishlist": "« {trackName} » a été ajouté à la liste de souhaits", + "@collectionAddedToWishlist": { + "description": "Snackbar after adding track to wishlist", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "collectionRemovedFromWishlist": "« {trackName} » a été supprimé de la liste de souhaits", + "@collectionRemovedFromWishlist": { + "description": "Snackbar after removing track from wishlist", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "collectionAddedToFavoriteArtists": "« {artistName} » a été ajouté à vos artistes préférés", + "@collectionAddedToFavoriteArtists": { + "description": "Snackbar after adding artist to favorite artists", + "placeholders": { + "artistName": { + "type": "String" + } + } + }, + "collectionRemovedFromFavoriteArtists": "« {artistName} » a été supprimé de vos artistes favoris", + "@collectionRemovedFromFavoriteArtists": { + "description": "Snackbar after removing artist from favorite artists", + "placeholders": { + "artistName": { + "type": "String" + } + } + }, + "trackOptionAddToLoved": "Ajouter aux Favoris", + "@trackOptionAddToLoved": { + "description": "Bottom sheet action label - add track to loved folder" + }, + "trackOptionRemoveFromLoved": "Supprimer des Favoris", + "@trackOptionRemoveFromLoved": { + "description": "Bottom sheet action label - remove track from loved folder" + }, + "trackOptionAddToWishlist": "Ajouter à la liste de souhaits", + "@trackOptionAddToWishlist": { + "description": "Bottom sheet action label - add track to wishlist" + }, + "trackOptionRemoveFromWishlist": "Supprimer de la liste de souhaits", + "@trackOptionRemoveFromWishlist": { + "description": "Bottom sheet action label - remove track from wishlist" + }, + "artistOptionAddToFavorites": "Ajouter aux Artistes Favoris", + "@artistOptionAddToFavorites": { + "description": "Action label - add artist to favorite artists" + }, + "artistOptionRemoveFromFavorites": "Supprimer des Artistes Favoris", + "@artistOptionRemoveFromFavorites": { + "description": "Action label - remove artist from favorite artists" + }, + "collectionPlaylistChangeCover": "Changer l'image de couverture", + "@collectionPlaylistChangeCover": { + "description": "Bottom sheet action to pick a custom cover image for a playlist" + }, + "collectionPlaylistRemoveCover": "Supprimer l'image de couverture", + "@collectionPlaylistRemoveCover": { + "description": "Bottom sheet action to remove custom cover image from a playlist" + }, + "selectionShareCount": "Partager {count} {count, plural, =1{titre} other{titres}}", + "@selectionShareCount": { + "description": "Share button text with count in selection mode", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "selectionShareNoFiles": "Aucun fichier partageable n'a été trouvé", + "@selectionShareNoFiles": { + "description": "Snackbar when no selected files exist on disk" + }, + "selectionConvertCount": "Convertir {count} {count, plural, =1{titre} other{titres}}", + "@selectionConvertCount": { + "description": "Convert button text with count in selection mode", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "selectionConvertNoConvertible": "Aucune piste convertible sélectionnée", + "@selectionConvertNoConvertible": { + "description": "Snackbar when no selected tracks support conversion" + }, + "selectionBatchConvertConfirmTitle": "Conversion par lots", + "@selectionBatchConvertConfirmTitle": { + "description": "Confirmation dialog title for batch conversion" + }, + "selectionBatchConvertConfirmMessage": "Convertir {count} {count, plural, =1{titre} other{titres}} au format {format} avec un débit binaire de {bitrate} ?\n\nLes fichiers d'origine seront supprimés après la conversion.", + "@selectionBatchConvertConfirmMessage": { + "description": "Confirmation dialog message for batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "selectionBatchConvertConfirmMessageLossless": "Convertir {count} {count, plural, =1{titre} other{titres}} au format {format} ? (Sans perte — aucune perte de qualité)\n\nLes fichiers d'origine seront supprimés après la conversion.", + "@selectionBatchConvertConfirmMessageLossless": { + "description": "Confirmation dialog message for lossless batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + } + } + }, "selectionBatchConvertConfirmKeepOriginal": "Convertir {count} {count, plural, =1{titre} other{titres}} au format {format} ?\n\nLes fichiers d'origine seront conservés et les fichiers convertis seront ajoutés sous forme d'entrées distinctes dans la bibliothèque.", "@selectionBatchConvertConfirmKeepOriginal": { "description": "Batch conversion confirmation when source files will be preserved", @@ -5960,6 +3921,399 @@ } } }, + "selectionBatchConvertSuccess": "{success} pistes sur {total} ont été converties au format {format}", + "@selectionBatchConvertSuccess": { + "description": "Snackbar after batch conversion completes", + "placeholders": { + "success": { + "type": "int" + }, + "total": { + "type": "int" + }, + "format": { + "type": "String" + } + } + }, + "downloadedAlbumDownloadedCount": "{count} téléchargements", + "@downloadedAlbumDownloadedCount": { + "description": "Downloaded tracks count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Dossier nommé d'après la balise « Artiste de l'album »", + "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { + "description": "Subtitle when album artist is used for folder names" + }, + "downloadUseAlbumArtistForFoldersTrackSubtitle": "Dossier nommé d'après la balise « Artiste » de la piste", + "@downloadUseAlbumArtistForFoldersTrackSubtitle": { + "description": "Subtitle when track artist is used for folder names" + }, + "lyricsProvidersTitle": "Priorité au fournisseur de paroles", + "@lyricsProvidersTitle": { + "description": "Settings item title for lyrics provider order" + }, + "lyricsProvidersDescription": "Activer, désactiver et réorganiser les sources de paroles. Les sources sont parcourues de haut en bas jusqu'à ce que les paroles soient trouvées.", + "@lyricsProvidersDescription": { + "description": "Description on the lyrics provider priority page" + }, + "lyricsProvidersInfoText": "Les fournisseurs de paroles d'extension s'exécutent avant les fournisseurs de paroles intégrés. Au moins un fournisseur doit rester activé.", + "@lyricsProvidersInfoText": { + "description": "Info tip on lyrics provider priority page" + }, + "lyricsProvidersEnabledSection": "Activé ({count})", + "@lyricsProvidersEnabledSection": { + "description": "Section header for enabled providers", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "lyricsProvidersDisabledSection": "Désactivés ({count})", + "@lyricsProvidersDisabledSection": { + "description": "Section header for disabled providers", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "lyricsProvidersAtLeastOne": "Au moins un fournisseur doit rester activé", + "@lyricsProvidersAtLeastOne": { + "description": "Snackbar when user tries to disable the last enabled provider" + }, + "lyricsProvidersSaved": "Priorité du fournisseur de paroles enregistrée", + "@lyricsProvidersSaved": { + "description": "Snackbar after saving lyrics provider priority" + }, + "lyricsProvidersDiscardContent": "Vous avez des modifications non enregistrées qui seront perdues.", + "@lyricsProvidersDiscardContent": { + "description": "Body text of the discard-changes dialog on lyrics provider page" + }, + "lyricsProviderLrclibDesc": "Base de données open source de paroles synchronisées", + "@lyricsProviderLrclibDesc": { + "description": "Description for LRCLIB provider" + }, + "lyricsProviderNeteaseDesc": "NetEase Cloud Music (idéal pour les titres asiatiques)", + "@lyricsProviderNeteaseDesc": { + "description": "Description for Netease provider" + }, + "lyricsProviderMusixmatchDesc": "La plus grande base de données de paroles (multilingue)", + "@lyricsProviderMusixmatchDesc": { + "description": "Description for Musixmatch provider" + }, + "lyricsProviderAppleMusicDesc": "Paroles synchronisées mot à mot (via un proxy)", + "@lyricsProviderAppleMusicDesc": { + "description": "Description for Apple Music provider" + }, + "lyricsProviderQqMusicDesc": "QQ Music (idéal pour les morceaux chinois, API directe)", + "@lyricsProviderQqMusicDesc": { + "description": "Description for QQ Music provider" + }, + "lyricsProviderLyricsPlusDesc": "Paroles de karaoké mot à mot (Apple/Musixmatch/Spotify/QQ, via un proxy)", + "@lyricsProviderLyricsPlusDesc": { + "description": "Description for LyricsPlus provider" + }, + "lyricsProviderExtensionDesc": "Fournisseur d'extensions", + "@lyricsProviderExtensionDesc": { + "description": "Generic description for extension-based lyrics providers" + }, + "safMigrationTitle": "Mise à jour du stockage requise", + "@safMigrationTitle": { + "description": "Title of SAF migration dialog" + }, + "safMigrationMessage1": "SpotiFLAC utilise désormais le framework d'accès au stockage Android (SAF) pour les téléchargements. Cela permet de résoudre les erreurs « autorisation refusée » sur Android 10 et versions ultérieures.", + "@safMigrationMessage1": { + "description": "First paragraph of SAF migration dialog" + }, + "safMigrationMessage2": "Veuillez sélectionner à nouveau votre dossier de téléchargement pour passer au nouveau système de stockage.", + "@safMigrationMessage2": { + "description": "Second paragraph of SAF migration dialog" + }, + "safMigrationSuccess": "Le dossier de téléchargement a été mis à jour en mode SAF", + "@safMigrationSuccess": { + "description": "Snackbar after successfully migrating to SAF" + }, + "settingsDonate": "Soutien au développement", + "@settingsDonate": { + "description": "Settings menu item - donate page" + }, + "settingsDonateSubtitle": "Offrez un café au développeur", + "@settingsDonateSubtitle": { + "description": "Subtitle for donate menu item" + }, + "settingsBackup": "Sauvegarde & Restauration", + "@settingsBackup": { + "description": "Settings menu item - backup and restore page" + }, + "settingsBackupSubtitle": "Transférer votre bibliothèque, votre historique et vos paramètres vers un nouvel appareil", + "@settingsBackupSubtitle": { + "description": "Subtitle for backup and restore settings item" + }, + "backupTitle": "Sauvegarde & Restauration", + "@backupTitle": { + "description": "App bar title for the backup and restore page" + }, + "backupExportSectionTitle": "Créer une sauvegarde", + "@backupExportSectionTitle": { + "description": "Section title for the export/backup card" + }, + "backupExportSectionDescription": "Enregistrez vos paramètres, votre historique de téléchargement, les titres que vous avez aimés, votre liste de souhaits, vos artistes préférés et vos playlists dans un seul fichier que vous pourrez conserver ou transférer vers un autre téléphone.", + "@backupExportSectionDescription": { + "description": "Description of what a backup contains" + }, + "backupExportButton": "Créer un fichier de sauvegarde", + "@backupExportButton": { + "description": "Button to create and share a backup file" + }, + "backupImportSectionTitle": "Restaurer la sauvegarde", + "@backupImportSectionTitle": { + "description": "Section title for the import/restore card" + }, + "backupImportSectionDescription": "Sélectionnez un fichier de sauvegarde pour restaurer vos données. Cette opération remplacera les réglages actuels, l'historique et la bibliothèque de cet appareil.", + "@backupImportSectionDescription": { + "description": "Description for the restore action" + }, + "backupImportButton": "Choisissez un fichier de sauvegarde", + "@backupImportButton": { + "description": "Button to pick a backup file to restore" + }, + "backupCreated": "Sauvegarde créée", + "@backupCreated": { + "description": "Snackbar after a backup file is created" + }, + "backupCreateFailed": "Échec de la création de la sauvegarde", + "@backupCreateFailed": { + "description": "Snackbar when backup creation fails" + }, + "backupRestoreConfirmTitle": "Restaurer cette sauvegarde ?", + "@backupRestoreConfirmTitle": { + "description": "Confirmation dialog title before restoring a backup" + }, + "backupRestoreConfirmMessage": "Cette opération remplacera vos paramètres actuels, votre historique de téléchargements, vos titres favoris, votre liste de souhaits et vos listes de lecture par le contenu de la sauvegarde. Cette opération est irréversible.", + "@backupRestoreConfirmMessage": { + "description": "Confirmation dialog message before restoring a backup" + }, + "backupRestoreConfirmButton": "Restaurer", + "@backupRestoreConfirmButton": { + "description": "Confirm button to proceed with restore" + }, + "backupRestored": "La sauvegarde a été restaurée avec succès", + "@backupRestored": { + "description": "Snackbar after a successful restore" + }, + "backupRestoreFailed": "Échec de la restauration de la sauvegarde", + "@backupRestoreFailed": { + "description": "Snackbar when restore fails" + }, + "backupInvalidFile": "Ce fichier n'est pas une sauvegarde SpotiFLAC valide", + "@backupInvalidFile": { + "description": "Snackbar when the chosen file is not a valid backup" + }, + "backupRestoreRestartHint": "Redémarrez l'application pour vous assurer que toutes les modifications ont bien été prises en compte.", + "@backupRestoreRestartHint": { + "description": "Hint shown after restoring that an app restart is recommended" + }, + "backupContentsTitle": "Contenu de la sauvegarde", + "@backupContentsTitle": { + "description": "Header above the list summarizing what the backup contains" + }, + "backupSettingsOnly": "Settings only", + "backupSelectHistory": "Download history", + "backupSelectCollections": "Library collections", + "backupSelectCollectionsDescription": "Liked tracks, wishlist, favorite artists, playlists and playlist covers.", + "backupSelectExtensions": "Extensions and their settings", + "backupSelectedExportDescription": "Save the selected categories to a backup file. Audio files are not included.", + "backupSelectAtLeastOne": "Select at least one category to create a backup.", + "backupSelectedRestoreMessage": "Only the categories listed below will be restored. Categories not included in this backup will stay unchanged. Restoring can replace existing data and cannot be undone.", + "backupContentsSettings": "Paramètres de l'application", + "@backupContentsSettings": { + "description": "Backup contents row label for settings" + }, + "backupContentsHistory": "{count} historique {count, plural, one{élément} other{éléments}}", + "@backupContentsHistory": { + "description": "Backup contents row for history count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsLiked": "{count} favoris {count, plural, one{titre} other{titres}}", + "@backupContentsLiked": { + "description": "Backup contents row for liked tracks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsWishlist": "{count} liste de souhaits {count, plural, one{titre} other{titres}}", + "@backupContentsWishlist": { + "description": "Backup contents row for wishlist tracks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsPlaylists": "{count, plural, =1{1 playlist} other{{count} playlists}}", + "@backupContentsPlaylists": { + "description": "Backup contents row for playlist count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsArtists": "{count, plural, one{{count} artiste préféré} other{{count} artistes préférés}}", + "@backupContentsArtists": { + "description": "Backup contents row for favorite artists count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsExtensions": "{count, plural, =1{1 extension} other{{count} extensions}}", + "@backupContentsExtensions": { + "description": "Backup contents row for installed extensions count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupIncludeSecrets": "Inclure les informations d'identification de l'extension", + "@backupIncludeSecrets": { + "description": "Toggle to include secret extension settings (tokens, API keys) in the backup" + }, + "backupIncludeSecretsDescription": "Les jetons et les clés API des extensions seront enregistrés dans le fichier de sauvegarde. Veillez à ne pas divulguer ce fichier. Si l'extension est désactivée, vous devrez les saisir à nouveau après la restauration.", + "@backupIncludeSecretsDescription": { + "description": "Explanation for the include-credentials toggle" + }, + "backupExtensionsRestoreFailed": "{count} {count, plural, =1{extension} other{extensions}} n'ont pas pu être réinstallées. Installez-les manuellement à partir du dépôt.", + "@backupExtensionsRestoreFailed": { + "description": "Snackbar/hint when some extensions failed to reinstall during restore", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "tooltipLoveAll": "Tout aimer", + "@tooltipLoveAll": { + "description": "Tooltip for the Love All button on album/playlist screens" + }, + "tooltipAddToPlaylist": "Ajouter à la playlist", + "@tooltipAddToPlaylist": { + "description": "Tooltip for the Add to Playlist button" + }, + "snackbarRemovedTracksFromLoved": "{count} titres supprimés des Favoris", + "@snackbarRemovedTracksFromLoved": { + "description": "Snackbar after removing multiple tracks from Loved folder", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarAddedTracksToLoved": "{count} titres ajoutés aux Favoris", + "@snackbarAddedTracksToLoved": { + "description": "Snackbar after adding multiple tracks to Loved folder", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dialogDownloadAllTitle": "Tout télécharger", + "@dialogDownloadAllTitle": { + "description": "Dialog title for bulk download confirmation" + }, + "dialogDownloadAllMessage": "Télécharger {count} titres ?", + "@dialogDownloadAllMessage": { + "description": "Body of the Download All confirmation dialog", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "homeSkipAlreadyDownloaded": "Ignorer les morceaux déjà téléchargés", + "@homeSkipAlreadyDownloaded": { + "description": "Checkbox label in import dialog to skip already-downloaded songs" + }, + "homeGoToAlbum": "Aller à l'album", + "@homeGoToAlbum": { + "description": "Context menu item to navigate to the album page" + }, + "homeAlbumInfoUnavailable": "Informations sur l'album non disponibles", + "@homeAlbumInfoUnavailable": { + "description": "Snackbar when album info cannot be loaded" + }, + "snackbarLoadingCueSheet": "Chargement de la liste CUE...", + "@snackbarLoadingCueSheet": { + "description": "Snackbar while loading a CUE sheet file" + }, + "snackbarMetadataSaved": "Les métadonnées ont été enregistrées avec succès", + "@snackbarMetadataSaved": { + "description": "Snackbar after successfully saving track metadata" + }, + "snackbarFailedToEmbedLyrics": "Impossible d'intégrer les paroles", + "@snackbarFailedToEmbedLyrics": { + "description": "Snackbar when lyrics embedding fails" + }, + "snackbarFailedToWriteStorage": "Échec de l'écriture sur le support de stockage", + "@snackbarFailedToWriteStorage": { + "description": "Snackbar when writing metadata back to file fails" + }, + "snackbarError": "Erreur : {error}", + "@snackbarError": { + "description": "Generic error snackbar with error detail", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "snackbarNoActionDefined": "Aucune action n'est associée à ce bouton", + "@snackbarNoActionDefined": { + "description": "Snackbar when an extension button has no action configured" + }, + "noTracksFoundForAlbum": "Aucun morceau trouvé pour cet album", + "@noTracksFoundForAlbum": { + "description": "Empty state message when an album has no tracks" + }, + "downloadLocationSubtitle": "Choisissez l'emplacement où enregistrer vos morceaux téléchargés", + "@downloadLocationSubtitle": { + "description": "Subtitle shown in the download location picker sheet" + }, + "storageAutomaticFolder": "Automatic folder", + "storageAutomaticDownloadFolder": "Uses Download/SpotiFLAC when writable, otherwise app storage", + "storageSafRecommended": "Choose folder (Recommended)", + "storageDownloadFolderHint": "In the Android folder picker, open Download and select SpotiFLAC. If it does not exist, create it using New folder, then tap Use this folder to grant access.", + "storageModeAppFolder": "Dossier « Applications » (recommandé)", + "@storageModeAppFolder": { + "description": "Storage mode option - app-managed folder" + }, + "storageModeAppFolderSubtitle": "Enregistrement par défaut dans le dossier « Musique/SpotiFLAC »", + "@storageModeAppFolderSubtitle": { + "description": "Subtitle for app folder storage mode" + }, + "storageModeSaf": "Dossier personnalisé (SAF)", + "@storageModeSaf": { + "description": "Storage mode option - Storage Access Framework" + }, + "storageModeSafSubtitle": "Choisissez n'importe quel dossier, y compris la carte SD", + "@storageModeSafSubtitle": { + "description": "Subtitle for SAF storage mode" + }, "downloadFolderAccessLostTitle": "Accès au dossier de téléchargement perdu", "@downloadFolderAccessLostTitle": { "description": "Title of the warning banner shown in Files settings when the saved SAF folder grant is no longer valid" @@ -5980,6 +4334,812 @@ "@downloadErrorFolderAccessLost": { "description": "Error shown on downloads that failed because the iOS download folder bookmark could not be opened" }, + "downloadFilenameDescription": "Utilisez {artist}, {title}, {album}, {track}, {year}, {date} et {disc} comme variables de remplacement.", + "@downloadFilenameDescription": { + "description": "Description shown in filename format editor" + }, + "downloadFilenameInsertTag": "Appuyez pour insérer une balise :", + "@downloadFilenameInsertTag": { + "description": "Label above filename tag chips" + }, + "downloadSeparateSinglesEnabled": "Les singles et les EP sont enregistrés dans un dossier séparé", + "@downloadSeparateSinglesEnabled": { + "description": "Subtitle when separate singles folder is on" + }, + "downloadSeparateSinglesDisabled": "Les singles et les albums sont enregistrés dans le même dossier", + "@downloadSeparateSinglesDisabled": { + "description": "Subtitle when separate singles folder is off" + }, + "downloadArtistNameFilters": "Filtres par nom d'artiste", + "@downloadArtistNameFilters": { + "description": "Setting title for artist folder filter options" + }, + "downloadCreatePlaylistSourceFolder": "Dossier source de la playlist", + "@downloadCreatePlaylistSourceFolder": { + "description": "Setting to create a subfolder per playlist source" + }, + "downloadCreatePlaylistSourceFolderEnabled": "Un sous-dossier est créé pour chaque playlist", + "@downloadCreatePlaylistSourceFolderEnabled": { + "description": "Subtitle when playlist folder is enabled" + }, + "downloadCreatePlaylistSourceFolderDisabled": "Tous les morceaux sont enregistrés directement dans le dossier de téléchargement", + "@downloadCreatePlaylistSourceFolderDisabled": { + "description": "Subtitle when playlist folder is disabled" + }, + "downloadCreatePlaylistSourceFolderRedundant": "Géré par les paramètres d'organisation des dossiers", + "@downloadCreatePlaylistSourceFolderRedundant": { + "description": "Subtitle when folder organization is already set to playlist" + }, + "downloadSongLinkRegion": "Région SongLink", + "@downloadSongLinkRegion": { + "description": "Setting for SongLink region used during fallback resolution" + }, + "downloadNetworkCompatibilityMode": "Mode de compatibilité réseau", + "@downloadNetworkCompatibilityMode": { + "description": "Setting for legacy TLS/network handling" + }, + "downloadNetworkCompatibilityModeEnabled": "Les points de terminaison HTTP hérités sont autorisés ; la vérification TLS reste activée", + "@downloadNetworkCompatibilityModeEnabled": { + "description": "Subtitle when network compatibility mode is on" + }, + "downloadNetworkCompatibilityModeDisabled": "Utilisation des paramètres réseau par défaut", + "@downloadNetworkCompatibilityModeDisabled": { + "description": "Subtitle when network compatibility mode is off" + }, + "downloadAllowLocalNetwork": "Autoriser l'accès au réseau local", + "@downloadAllowLocalNetwork": { + "description": "Setting title for allowing requests to private/local network targets" + }, + "downloadAllowLocalNetworkEnabled": "Les requêtes vers des adresses locales ou privées sont autorisées (pour un proxy local ou un DNS personnalisé)", + "@downloadAllowLocalNetworkEnabled": { + "description": "Subtitle when allow local network access is on" + }, + "downloadAllowLocalNetworkDisabled": "Les adresses locales/privées sont bloquées pour des raisons de sécurité", + "@downloadAllowLocalNetworkDisabled": { + "description": "Subtitle when allow local network access is off" + }, + "downloadSelectServiceToEnable": "Choisissez un fournisseur proposant des options de qualité pour activer cette fonctionnalité", + "@downloadSelectServiceToEnable": { + "description": "Subtitle when quality picker is disabled due to extension service" + }, + "downloadEmbedLyricsDisabled": "Activez d'abord l'intégration des métadonnées", + "@downloadEmbedLyricsDisabled": { + "description": "Subtitle when lyrics embedding is blocked by metadata toggle" + }, + "downloadNeteaseIncludeTranslation": "Netease : inclure la traduction", + "@downloadNeteaseIncludeTranslation": { + "description": "Setting to include translated lyrics from Netease" + }, + "downloadNeteaseIncludeTranslationEnabled": "Lignes de traduction en chinois incluses", + "@downloadNeteaseIncludeTranslationEnabled": { + "description": "Subtitle when Netease translation is on" + }, + "downloadNeteaseIncludeTranslationDisabled": "Paroles originales uniquement", + "@downloadNeteaseIncludeTranslationDisabled": { + "description": "Subtitle when Netease translation is off" + }, + "downloadNeteaseIncludeRomanization": "Netease : inclure la romanisation", + "@downloadNeteaseIncludeRomanization": { + "description": "Setting to include romanized lyrics from Netease" + }, + "downloadNeteaseIncludeRomanizationEnabled": "Lignes de romanisation incluses", + "@downloadNeteaseIncludeRomanizationEnabled": { + "description": "Subtitle when Netease romanization is on" + }, + "downloadNeteaseIncludeRomanizationDisabled": "Pas de romanisation", + "@downloadNeteaseIncludeRomanizationDisabled": { + "description": "Subtitle when Netease romanization is off" + }, + "downloadAppleQqMultiPerson": "Apple / QQ : Paroles pour plusieurs personnes", + "@downloadAppleQqMultiPerson": { + "description": "Setting for word-by-word multi-person lyrics from Apple Music and QQ Music" + }, + "downloadAppleQqMultiPersonEnabled": "Étiquettes d'intervenants incluses pour les duos et les morceaux en groupe", + "@downloadAppleQqMultiPersonEnabled": { + "description": "Subtitle when multi-person lyrics is on" + }, + "downloadAppleQqMultiPersonDisabled": "Paroles standard sans indication du haut-parleur", + "@downloadAppleQqMultiPersonDisabled": { + "description": "Subtitle when multi-person lyrics is off" + }, + "downloadAppleElrcWordSync": "Synchronisation des paroles Apple Music eLRC", + "@downloadAppleElrcWordSync": { + "description": "Setting for preserving Apple Music word-by-word eLRC timestamps" + }, + "downloadAppleElrcWordSyncEnabled": "Conservation des horodatages bruts mot à mot", + "@downloadAppleElrcWordSyncEnabled": { + "description": "Subtitle when Apple Music eLRC word sync is enabled" + }, + "downloadAppleElrcWordSyncDisabled": "Paroles d'Apple Music, ligne par ligne, en toute sécurité", + "@downloadAppleElrcWordSyncDisabled": { + "description": "Subtitle when Apple Music eLRC word sync is disabled" + }, + "downloadMusixmatchLanguage": "Langue Musixmatch", + "@downloadMusixmatchLanguage": { + "description": "Setting for Musixmatch lyrics translation language" + }, + "downloadMusixmatchLanguageAuto": "Auto (langue d'origine)", + "@downloadMusixmatchLanguageAuto": { + "description": "Subtitle when no language is set" + }, + "downloadFilterContributing": "Filtrer les artistes participants", + "@downloadFilterContributing": { + "description": "Setting to strip contributing artists from Album Artist folder name" + }, + "downloadFilterContributingEnabled": "Les artistes ayant contribué à l'album ont été supprimés du nom du dossier « Artiste de l'album »", + "@downloadFilterContributingEnabled": { + "description": "Subtitle when contributing artist filter is on" + }, + "downloadFilterContributingDisabled": "Chaîne « Artiste » de l'album complet utilisée", + "@downloadFilterContributingDisabled": { + "description": "Subtitle when contributing artist filter is off" + }, + "downloadProvidersNoneEnabled": "Aucun fournisseur n'est activé", + "@downloadProvidersNoneEnabled": { + "description": "Shown when no lyrics providers are active" + }, + "downloadMusixmatchLanguageCode": "Code de langue", + "@downloadMusixmatchLanguageCode": { + "description": "Label for Musixmatch language input field" + }, + "downloadMusixmatchLanguageHint": "par exemple : en, de, ja", + "@downloadMusixmatchLanguageHint": { + "description": "Placeholder for Musixmatch language input" + }, + "downloadMusixmatchLanguageDesc": "Saisissez un code de langue BCP-47 (par exemple : en, de, ja) pour demander les paroles traduites à Musixmatch.", + "@downloadMusixmatchLanguageDesc": { + "description": "Description in Musixmatch language picker" + }, + "downloadMusixmatchAuto": "Auto", + "@downloadMusixmatchAuto": { + "description": "Button to clear Musixmatch language (use auto)" + }, + "downloadNetworkAnySubtitle": "Utilisez le Wi-Fi ou les données mobiles", + "@downloadNetworkAnySubtitle": { + "description": "Subtitle for any-network option in picker" + }, + "downloadNetworkWifiOnlySubtitle": "Les téléchargements sont mis en pause lors de l'utilisation des données mobiles", + "@downloadNetworkWifiOnlySubtitle": { + "description": "Subtitle for WiFi-only option in picker" + }, + "downloadSongLinkRegionDesc": "Région utilisée lors de la résolution des liens vers les morceaux via SongLink. Sélectionnez le pays dans lequel vos services de streaming sont disponibles.", + "@downloadSongLinkRegionDesc": { + "description": "Description in SongLink region picker" + }, + "snackbarUnsupportedAudioFormat": "Format audio non pris en charge", + "@snackbarUnsupportedAudioFormat": { + "description": "Snackbar when the audio format is not supported for the requested operation" + }, + "cacheRefresh": "Actualiser", + "@cacheRefresh": { + "description": "Tooltip for refresh button on cache management page" + }, + "dialogDownloadPlaylistsMessage": "Télécharger {trackCount} {trackCount, plural, =1{titre} other{titres}} depuis {playlistCount} {playlistCount, plural, =1{playlist} other{playlists}} ?", + "@dialogDownloadPlaylistsMessage": { + "description": "Dialog message for bulk playlist download confirmation", + "placeholders": { + "trackCount": { + "type": "int" + }, + "playlistCount": { + "type": "int" + } + } + }, + "bulkDownloadPlaylistsButton": "Télécharger {count} {count, plural, =1{playlist} other{playlists}}", + "@bulkDownloadPlaylistsButton": { + "description": "Button label for bulk downloading selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "bulkDownloadSelectPlaylists": "Sélectionnez les playlists à télécharger", + "@bulkDownloadSelectPlaylists": { + "description": "Button label when no playlists are selected for download" + }, + "snackbarSelectedPlaylistsEmpty": "Les playlists sélectionnées ne contiennent aucun morceau", + "@snackbarSelectedPlaylistsEmpty": { + "description": "Snackbar when selected playlists contain no tracks" + }, + "playlistsCount": "{count, plural, one{{count} playlist} other{{count} playlists}}", + "@playlistsCount": { + "description": "Playlist count display", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "editMetadataAutoFill": "Remplissage automatique en ligne", + "@editMetadataAutoFill": { + "description": "Section title for selective online metadata auto-fill in the edit metadata sheet" + }, + "editMetadataAutoFillDesc": "Choisissez une extension de métadonnées, sélectionnez les champs, puis vérifiez les données avant de l'appliquer", + "@editMetadataAutoFillDesc": { + "description": "Description for the auto-fill section" + }, + "editMetadataAutoFillSource": "Source des métadonnées", + "@editMetadataAutoFillSource": { + "description": "Label for the metadata extension selector in online auto-fill" + }, + "editMetadataAutoFillSourceAutomatic": "Automatique (priorité au fournisseur)", + "@editMetadataAutoFillSourceAutomatic": { + "description": "Automatic source option that follows configured metadata provider priority" + }, + "editMetadataAutoFillFind": "Rechercher des métadonnées", + "@editMetadataAutoFillFind": { + "description": "Button label for finding an online metadata candidate" + }, + "editMetadataAutoFillPreview": "Données provenant de {source}", + "@editMetadataAutoFillPreview": { + "description": "Title for the online metadata preview", + "placeholders": { + "source": { + "type": "String" + } + } + }, + "editMetadataAutoFillCoverAvailable": "Illustration de couverture disponible", + "@editMetadataAutoFillCoverAvailable": { + "description": "Preview value when the selected metadata source provides cover artwork" + }, + "editMetadataAutoFillApply": "Appliquer les données sélectionnées", + "@editMetadataAutoFillApply": { + "description": "Button label for applying the previewed metadata" + }, + "editMetadataAutoFillDoneFromSource": "Rempli {count} {count, plural, one {}=1{champ} other{champs}} ont été renseignés à partir de {source}", + "@editMetadataAutoFillDoneFromSource": { + "description": "Snackbar confirming fields applied from a selected metadata source", + "placeholders": { + "count": { + "type": "int" + }, + "source": { + "type": "String" + } + } + }, + "editMetadataAutoFillFetch": "Récupérer & remplir", + "@editMetadataAutoFillFetch": { + "description": "Button label to fetch online metadata and fill selected fields" + }, + "editMetadataAutoFillSearching": "Recherche en ligne...", + "@editMetadataAutoFillSearching": { + "description": "Snackbar shown while searching for online metadata" + }, + "editMetadataAutoFillNoResults": "Aucune métadonnée correspondante n'a été trouvée en ligne", + "@editMetadataAutoFillNoResults": { + "description": "Snackbar when online metadata search returns no results" + }, + "editMetadataAutoFillDone": "{count} {count, plural, =1{champ} other{champs}} renseignés à partir des métadonnées en ligne", + "@editMetadataAutoFillDone": { + "description": "Snackbar confirming how many fields were auto-filled", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "editMetadataAutoFillNoneSelected": "Sélectionnez au moins un champ pour le remplir automatiquement", + "@editMetadataAutoFillNoneSelected": { + "description": "Snackbar when user taps Fetch without selecting any fields" + }, + "editMetadataFieldTitle": "Titre", + "@editMetadataFieldTitle": { + "description": "Chip label for title field in auto-fill selector" + }, + "editMetadataFieldArtist": "Artiste", + "@editMetadataFieldArtist": { + "description": "Chip label for artist field in auto-fill selector" + }, + "editMetadataFieldAlbum": "Album", + "@editMetadataFieldAlbum": { + "description": "Chip label for album field in auto-fill selector" + }, + "editMetadataFieldAlbumArtist": "Artiste de l'album", + "@editMetadataFieldAlbumArtist": { + "description": "Chip label for album artist field in auto-fill selector" + }, + "editMetadataFieldDate": "Date", + "@editMetadataFieldDate": { + "description": "Chip label for date field in auto-fill selector" + }, + "editMetadataFieldTrackNum": "Piste n°", + "@editMetadataFieldTrackNum": { + "description": "Chip label for track number field in auto-fill selector" + }, + "editMetadataFieldDiscNum": "Disque n°", + "@editMetadataFieldDiscNum": { + "description": "Chip label for disc number field in auto-fill selector" + }, + "editMetadataFieldGenre": "Genre", + "@editMetadataFieldGenre": { + "description": "Chip label for genre field in auto-fill selector" + }, + "editMetadataFieldIsrc": "ISRC", + "@editMetadataFieldIsrc": { + "description": "Chip label for ISRC field in auto-fill selector" + }, + "editMetadataFieldLabel": "Label", + "@editMetadataFieldLabel": { + "description": "Chip label for label field in auto-fill selector" + }, + "editMetadataFieldCopyright": "Droits d'auteur", + "@editMetadataFieldCopyright": { + "description": "Chip label for copyright field in auto-fill selector" + }, + "editMetadataFieldCover": "Illustration de couverture", + "@editMetadataFieldCover": { + "description": "Chip label for cover art field in auto-fill selector" + }, + "editMetadataSelectAll": "Tout", + "@editMetadataSelectAll": { + "description": "Button to select all fields for auto-fill" + }, + "editMetadataSelectEmpty": "Vide uniquement", + "@editMetadataSelectEmpty": { + "description": "Button to select only fields that are currently empty" + }, + "queueDownloadingCount": "Téléchargement ({count})", + "@queueDownloadingCount": { + "description": "Header for active downloads section with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueFilteringIndicator": "Filtrage...", + "@queueFilteringIndicator": { + "description": "Shown while filter results are being computed" + }, + "queueTrackCount": "{count, plural, =1{1 titre} other{{count} titres}}", + "@queueTrackCount": { + "description": "Track count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueAlbumCount": "{count, plural, one{{count} album} other{{count} albums}}", + "@queueAlbumCount": { + "description": "Album count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueEmptyAlbums": "Aucun album téléchargé", + "@queueEmptyAlbums": { + "description": "Empty state title when no album downloads exist" + }, + "queueEmptyAlbumsSubtitle": "Téléchargez plusieurs titres d'un album pour les écouter ici", + "@queueEmptyAlbumsSubtitle": { + "description": "Empty state subtitle for album downloads" + }, + "queueEmptySingles": "Pas de téléchargement individuel", + "@queueEmptySingles": { + "description": "Empty state title when no single track downloads exist" + }, + "queueEmptySinglesSubtitle": "Les téléchargements de titres individuels apparaîtront ici", + "@queueEmptySinglesSubtitle": { + "description": "Empty state subtitle for single track downloads" + }, + "queuePlaylistCount": "{count, plural, =1{1 playlist} other{{count} playlists}}", + "@queuePlaylistCount": { + "description": "Playlist count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueEmptyPlaylistsSubtitle": "Créez une playlist pour organiser vos morceaux", + "@queueEmptyPlaylistsSubtitle": { + "description": "Empty state subtitle for the playlists library view" + }, + "libraryDefaultView": "Affichage par défaut", + "@libraryDefaultView": { + "description": "Setting title - which library view opens when switching to the Library tab" + }, + "libraryDefaultViewLastUsed": "Dernière utilisation", + "@libraryDefaultViewLastUsed": { + "description": "Default view option - keep the last used library view" + }, + "queueEmptyHistory": "Aucun historique de téléchargement", + "@queueEmptyHistory": { + "description": "Empty state title when download history is empty" + }, + "queueEmptyHistorySubtitle": "Les morceaux téléchargés apparaîtront ici", + "@queueEmptyHistorySubtitle": { + "description": "Empty state subtitle for download history" + }, + "selectionAllPlaylistsSelected": "Toutes les playlists sélectionnées", + "@selectionAllPlaylistsSelected": { + "description": "Shown when all playlists are selected in selection mode" + }, + "selectionTapPlaylistsToSelect": "Appuyez sur les playlists pour les sélectionner", + "@selectionTapPlaylistsToSelect": { + "description": "Hint shown in playlist selection mode" + }, + "selectionSelectPlaylistsToDelete": "Sélectionnez les playlists à supprimer", + "@selectionSelectPlaylistsToDelete": { + "description": "Hint shown when no playlists are selected for deletion" + }, + "audioAnalysisTitle": "Analyse de la qualité audio", + "@audioAnalysisTitle": { + "description": "Title for audio analysis section" + }, + "audioAnalysisDescription": "Vérifier la qualité sans perte à l'aide d'une analyse spectrale", + "@audioAnalysisDescription": { + "description": "Description for audio analysis tap-to-analyze prompt" + }, + "audioAnalysisAnalyzing": "Analyse audio en cours...", + "@audioAnalysisAnalyzing": { + "description": "Loading text while analyzing audio" + }, + "audioAnalysisSampleRate": "Fréquence d'échantillonnage", + "@audioAnalysisSampleRate": { + "description": "Sample rate metric label" + }, + "audioAnalysisCodec": "Codec", + "@audioAnalysisCodec": { + "description": "Audio codec metric label" + }, + "audioAnalysisContainer": "Conteneur", + "@audioAnalysisContainer": { + "description": "Audio container metric label" + }, + "audioAnalysisDecodedFormat": "Format décodé", + "@audioAnalysisDecodedFormat": { + "description": "Decoded sample format metric label" + }, + "audioAnalysisBitDepth": "Nombre de bits", + "@audioAnalysisBitDepth": { + "description": "Bit depth metric label" + }, + "audioAnalysisChannels": "Chaînes", + "@audioAnalysisChannels": { + "description": "Channels metric label" + }, + "audioAnalysisDuration": "Durée", + "@audioAnalysisDuration": { + "description": "Duration metric label" + }, + "audioAnalysisNyquist": "Nyquist", + "@audioAnalysisNyquist": { + "description": "Nyquist frequency metric label" + }, + "audioAnalysisFileSize": "Taille", + "@audioAnalysisFileSize": { + "description": "File size metric label" + }, + "audioAnalysisDynamicRange": "Plage dynamique", + "@audioAnalysisDynamicRange": { + "description": "Dynamic range metric label" + }, + "audioAnalysisPeak": "Pic", + "@audioAnalysisPeak": { + "description": "Peak amplitude metric label" + }, + "audioAnalysisRms": "RMS", + "@audioAnalysisRms": { + "description": "RMS level metric label" + }, + "audioAnalysisLufs": "LUFS", + "@audioAnalysisLufs": { + "description": "Integrated loudness metric label" + }, + "audioAnalysisTruePeak": "True Peak", + "@audioAnalysisTruePeak": { + "description": "True peak metric label" + }, + "audioAnalysisClipping": "Coupure", + "@audioAnalysisClipping": { + "description": "Clipping metric label" + }, + "audioAnalysisNoClipping": "Pas de coupure", + "@audioAnalysisNoClipping": { + "description": "Displayed when no clipped samples were detected" + }, + "audioAnalysisSpectralCutoff": "Limite spectrale", + "@audioAnalysisSpectralCutoff": { + "description": "Estimated spectral cutoff metric label" + }, + "audioAnalysisCutoffNotDetected": "Non détecté", + "@audioAnalysisCutoffNotDetected": { + "description": "Displayed when no reliable broadband spectral cutoff can be detected" + }, + "audioAnalysisChannelStats": "Statistiques par chaîne", + "@audioAnalysisChannelStats": { + "description": "Per-channel audio analysis section label" + }, + "audioAnalysisSamples": "Échantillons", + "@audioAnalysisSamples": { + "description": "Total samples metric label" + }, + "audioAnalysisRescan": "Réanalyser", + "@audioAnalysisRescan": { + "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" + }, + "downloadRedownloadFakeHiRes": "Re-download fake Hi-Res", + "@downloadRedownloadFakeHiRes": { + "description": "Setting title: automatically replace downloads that measure as fake Hi-Res" + }, + "downloadRedownloadFakeHiResSubtitle": "Off by default. Check Hi-Res downloads and replace only when every audio sample is preserved. Keep the original if verification or processing fails", + "@downloadRedownloadFakeHiResSubtitle": { + "description": "Setting subtitle for the fake Hi-Res re-download toggle" + }, + "hiResCheckVerdictFakeCertain": "Fake Hi-Res", + "@hiResCheckVerdictFakeCertain": { + "description": "Verdict: an exact fingerprint (padded bits or upsampling pattern) proves the file is not real Hi-Res" + }, + "hiResCheckVerdictFakeSuspect": "Possibly a filtered master", + "@hiResCheckVerdictFakeSuspect": { + "description": "Verdict: fails the cutoff test but may be a genuine master low-pass filtered in mastering" + }, + "hiResCheckReasonSampleHold": "Every sample is repeated: upsampled by duplication", + "@hiResCheckReasonSampleHold": { + "description": "Reason: sample-and-hold upsampling detected" + }, + "hiResCheckReasonInterpolation": "In-between samples are linearly interpolated", + "@hiResCheckReasonInterpolation": { + "description": "Reason: linear-interpolation upsampling detected" + }, + "hiResCheckReasonImaging": "Content above 22 kHz mirrors the audible band", + "@hiResCheckReasonImaging": { + "description": "Reason: spectral imaging from upsampling detected" + }, + "hiResCheckMusicContent": "Musical content", + "@hiResCheckMusicContent": { + "description": "Label for the highest frequency that still moves with the music" + }, + "hiResCheckUltrasonicNoise": "Above {cutoff} only steady noise (typical of DSD or analog tape transfers): a {rate} file would hold all the music", + "@hiResCheckUltrasonicNoise": { + "description": "Shown when the ultrasonic content of a Hi-Res file is noise rather than music", + "placeholders": { + "cutoff": { + "type": "String" + }, + "rate": { + "type": "String" + } + } + }, + "hiResCheckTitle": "Hi-Res Authenticity", + "@hiResCheckTitle": { + "description": "Title of the fake Hi-Res check card" + }, + "hiResCheckDescription": "Detect upsampled or bit-padded fake Hi-Res files", + "@hiResCheckDescription": { + "description": "Explains what the Hi-Res authenticity check does" + }, + "hiResCheckRun": "Check", + "@hiResCheckRun": { + "description": "Button that starts the Hi-Res authenticity check" + }, + "hiResCheckChecking": "Checking Hi-Res authenticity...", + "@hiResCheckChecking": { + "description": "Loading text while the Hi-Res check runs" + }, + "hiResCheckVerdictFake": "Likely fake Hi-Res", + "@hiResCheckVerdictFake": { + "description": "Verdict: the file claims Hi-Res but does not measure as it" + }, + "hiResCheckVerdictGenuine": "Measures as genuine Hi-Res", + "@hiResCheckVerdictGenuine": { + "description": "Verdict: no upsampling or padded bit depth found" + }, + "hiResCheckVerdictStandard": "Standard definition, nothing to flag", + "@hiResCheckVerdictStandard": { + "description": "Verdict: neither sample rate nor bit depth claims Hi-Res" + }, + "hiResCheckVerdictInconclusive": "Inconclusive: the analyzed segment is too quiet or short", + "@hiResCheckVerdictInconclusive": { + "description": "Verdict: analysis could not reach a reliable conclusion" + }, + "hiResCheckUnsupported": "Only FLAC and WAV files can be checked", + "@hiResCheckUnsupported": { + "description": "Shown when the file format cannot be decoded by the Hi-Res check" + }, + "hiResCheckCutoff": "Content cutoff", + "@hiResCheckCutoff": { + "description": "Label for the highest frequency with real content" + }, + "hiResCheckBitsInUse": "Bits in use", + "@hiResCheckBitsInUse": { + "description": "Label for effective vs declared bit depth" + }, + "hiResCheckDisclaimer": "The spectrum stops early, but nothing proves it was upsampled: it may be a genuine master low-pass filtered in mastering. It is not replaced automatically.", + "@hiResCheckDisclaimer": { + "description": "Caveat shown under a fake Hi-Res verdict" + }, + "hiResCheckFailed": "Hi-Res check failed: {error}", + "@hiResCheckFailed": { + "description": "Error shown when the Hi-Res check fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "hiResCheckReasonRate": "Declares {sampleRate} but content stops at ~{cutoff}", + "@hiResCheckReasonRate": { + "description": "Reason for a fake verdict caused by upsampling", + "placeholders": { + "sampleRate": { + "type": "String" + }, + "cutoff": { + "type": "String" + } + } + }, + "hiResCheckReasonDepth": "Declares {declared}-bit but only {effective} bits carry data", + "@hiResCheckReasonDepth": { + "description": "Reason for a fake verdict caused by padded bit depth", + "placeholders": { + "declared": { + "type": "int" + }, + "effective": { + "type": "int" + } + } + }, + "audioAnalysisRescanning": "Réanalyse du fichier audio...", + "@audioAnalysisRescanning": { + "description": "Loading text while audio is being re-analyzed after an explicit refresh" + }, + "extensionsHomeFeedProvider": "Fournisseur de flux RSS", + "@extensionsHomeFeedProvider": { + "description": "Extensions page - label for home feed provider selector" + }, + "extensionsHomeFeedDescription": "Choisissez l'extension qui affiche le fil d'actualité sur l'écran principal", + "@extensionsHomeFeedDescription": { + "description": "Extensions page - description for home feed provider picker" + }, + "extensionsHomeFeedAuto": "Auto", + "@extensionsHomeFeedAuto": { + "description": "Label for auto-selected search provider" + }, + "extensionsHomeFeedAutoSubtitle": "Sélectionnez automatiquement la meilleure option disponible", + "@extensionsHomeFeedAutoSubtitle": { + "description": "Extensions page - subtitle for auto home feed option" + }, + "extensionsHomeFeedOff": "Désactivé", + "@extensionsHomeFeedOff": { + "description": "Extensions page - home feed provider option: off" + }, + "extensionsHomeFeedOffSubtitle": "Ne pas afficher le fil d'actualité sur l'écran principal", + "@extensionsHomeFeedOffSubtitle": { + "description": "Extensions page - subtitle for off home feed option" + }, + "extensionsHomeFeedUse": "Utiliser le fil d'actualité de {extensionName}", + "@extensionsHomeFeedUse": { + "description": "Extensions page - subtitle for a specific extension home feed option", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "extensionsNoHomeFeedExtensions": "Aucune extension avec le flux principal", + "@extensionsNoHomeFeedExtensions": { + "description": "Extensions page - shown when no installed extension has home feed" + }, + "cancelDownloadTitle": "Annuler le téléchargement ?", + "@cancelDownloadTitle": { + "description": "Dialog title when confirming cancellation of an active download" + }, + "cancelDownloadContent": "Cela annulera le téléchargement en cours de « {trackName} ».", + "@cancelDownloadContent": { + "description": "Dialog body when confirming cancellation of an active download", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "cancelDownloadKeep": "Conserver", + "@cancelDownloadKeep": { + "description": "Dialog button - keep the active download (do not cancel)" + }, + "queueCancelledTitle": "Téléchargement annulé", + "@queueCancelledTitle": { + "description": "Dialog title when opening a cancelled queue item" + }, + "queueCancelledMessage": "Ce téléchargement a été annulé. Veuillez réessayer ou le supprimer de la file d'attente.", + "@queueCancelledMessage": { + "description": "Dialog body when opening a cancelled queue item" + }, + "metadataSaveFailedFfmpeg": "Échec de l'enregistrement des métadonnées via FFmpeg", + "@metadataSaveFailedFfmpeg": { + "description": "Snackbar error when FFmpeg fails to write metadata" + }, + "metadataSaveFailedStorage": "Échec de la réécriture des métadonnées sur le support de stockage", + "@metadataSaveFailedStorage": { + "description": "Snackbar error when writing metadata file back to storage fails" + }, + "snackbarFolderPickerFailed": "Impossible d'ouvrir le sélecteur de dossiers : {error}", + "@snackbarFolderPickerFailed": { + "description": "Snackbar shown when folder picker fails to open", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "notifDownloadingTrack": "Téléchargement de {trackName}", + "@notifDownloadingTrack": { + "description": "Notification title while downloading a track", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "notifFinalizingTrack": "Finalisation de {trackName}", + "@notifFinalizingTrack": { + "description": "Notification title while finalizing (embedding metadata) a track", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "notifEmbeddingMetadata": "Intégration des métadonnées...", + "@notifEmbeddingMetadata": { + "description": "Notification body while embedding metadata into a downloaded track" + }, + "notifAlreadyInLibraryCount": "Déjà dans la bibliothèque ({completed}/{total})", + "@notifAlreadyInLibraryCount": { + "description": "Notification title when track is already in library, with count", + "placeholders": { + "completed": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "notifAlreadyInLibrary": "Déjà dans la bibliothèque", + "@notifAlreadyInLibrary": { + "description": "Notification title when track is already in library" + }, + "notifDownloadCompleteCount": "Téléchargement terminé ({completed}/{total})", + "@notifDownloadCompleteCount": { + "description": "Notification title when download is complete, with count", + "placeholders": { + "completed": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "notifDownloadComplete": "Télécharger l'intégralité", + "@notifDownloadComplete": { + "description": "Notification title when a single download is complete" + }, + "notifDownloadsFinished": "Téléchargements terminés ({completed} terminé, {failed} en échec)", + "@notifDownloadsFinished": { + "description": "Notification title when queue finishes with some failures", + "placeholders": { + "completed": { + "type": "int" + }, + "failed": { + "type": "int" + } + } + }, "notifVerificationRequiredTitle": "Vérification requise", "@notifVerificationRequiredTitle": { "description": "Notification title shown when a download needs the user to complete a verification challenge but the app is in the background" @@ -5988,10 +5148,592 @@ "@notifVerificationRequiredBody": { "description": "Notification body prompting the user to return to the app to solve a verification challenge" }, + "notifAllDownloadsComplete": "Tous les téléchargements sont terminés", + "@notifAllDownloadsComplete": { + "description": "Notification title when all downloads finish successfully" + }, + "notifTracksDownloadedSuccess": "{count, plural, =1{1 piste téléchargée avec succès} other{{count} pistes téléchargées avec succès}}", + "@notifTracksDownloadedSuccess": { + "description": "Notification body for queue complete - how many tracks were downloaded", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifDownloadsFinishedBody": "{completed, plural, =1{1 titre téléchargé} other{{completed} titres téléchargés}}, {failed, plural, =1{1 échec} other{{failed} échecs}}", + "@notifDownloadsFinishedBody": { + "description": "Notification body when queue finishes with failures", + "placeholders": { + "completed": { + "type": "int" + }, + "failed": { + "type": "int" + } + } + }, + "notifDownloadsCanceledTitle": "Téléchargements annulés", + "@notifDownloadsCanceledTitle": { + "description": "Notification title when downloads are canceled by the user" + }, + "notifDownloadsCanceledBody": "{count, plural, =1{1 téléchargement annulé par l'utilisateur} other{{count} téléchargements annulés par l'utilisateur}}", + "@notifDownloadsCanceledBody": { + "description": "Notification body when downloads are canceled by the user", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifScanningLibrary": "Numérisation de la bibliothèque locale", + "@notifScanningLibrary": { + "description": "Notification title while scanning local library" + }, + "notifLibraryScanProgressWithTotal": "{scanned}/{total} fichiers • {percentage} %", + "@notifLibraryScanProgressWithTotal": { + "description": "Notification body for library scan progress when total is known", + "placeholders": { + "scanned": { + "type": "int" + }, + "total": { + "type": "int" + }, + "percentage": { + "type": "int" + } + } + }, + "notifLibraryScanProgressNoTotal": "{scanned} fichiers analysés • {percentage} %", + "@notifLibraryScanProgressNoTotal": { + "description": "Notification body for library scan progress when total is unknown", + "placeholders": { + "scanned": { + "type": "int" + }, + "percentage": { + "type": "int" + } + } + }, + "notifLibraryScanComplete": "Analyse de la bibliothèque terminée", + "@notifLibraryScanComplete": { + "description": "Notification title when library scan finishes" + }, + "notifLibraryScanCompleteBody": "{count} titres indexés", + "@notifLibraryScanCompleteBody": { + "description": "Notification body for library scan complete - number of indexed tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifLibraryScanExcluded": "{count} exclus", + "@notifLibraryScanExcluded": { + "description": "Library scan complete suffix - excluded track count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifLibraryScanErrors": "{count} erreurs", + "@notifLibraryScanErrors": { + "description": "Library scan complete suffix - error count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifLibraryScanFailed": "Échec de l'analyse de la bibliothèque", + "@notifLibraryScanFailed": { + "description": "Notification title when library scan fails" + }, + "notifLibraryScanCancelled": "Annulation de la numérisation de la bibliothèque", + "@notifLibraryScanCancelled": { + "description": "Notification title when library scan is cancelled by the user" + }, + "notifLibraryScanStopped": "L'analyse a été interrompue avant d'être terminée.", + "@notifLibraryScanStopped": { + "description": "Notification body when library scan is cancelled" + }, + "notifDownloadingUpdate": "Télécharger SpotiFLAC v{version}", + "@notifDownloadingUpdate": { + "description": "Notification title while downloading an app update", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "notifUpdateProgress": "{received} / {total} Mo • {percentage}%", + "@notifUpdateProgress": { + "description": "Notification body showing update download progress", + "placeholders": { + "received": { + "type": "String" + }, + "total": { + "type": "String" + }, + "percentage": { + "type": "int" + } + } + }, + "notifUpdateReady": "Prêt pour la mise à jour", + "@notifUpdateReady": { + "description": "Notification title when app update download is complete" + }, + "notifUpdateReadyBody": "SpotiFLAC v{version} a été téléchargé. Appuyez pour l'installer.", + "@notifUpdateReadyBody": { + "description": "Notification body when app update is ready to install", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "notifUpdateFailed": "Échec de la mise à jour", + "@notifUpdateFailed": { + "description": "Notification title when app update download fails" + }, + "notifUpdateFailedBody": "Impossible de télécharger la mise à jour. Veuillez réessayer plus tard.", + "@notifUpdateFailedBody": { + "description": "Notification body when app update download fails" + }, + "searchTracks": "Titres", + "@searchTracks": { + "description": "Search filter label - tracks" + }, + "homeSearchHintDefault": "Collez une URL valide ou effectuez une recherche...", + "@homeSearchHintDefault": { + "description": "Default placeholder for the main search field on Home" + }, + "homeSearchHintProvider": "Rechercher avec {providerName}...", + "@homeSearchHintProvider": { + "description": "Placeholder for the main search field when a provider is selected", + "placeholders": { + "providerName": { + "type": "String" + } + } + }, + "homeImportCsvTooltip": "Importer une playlist (CSV, M3U)", + "@homeImportCsvTooltip": { + "description": "Tooltip for importing a CSV or M3U playlist file into Home search" + }, + "homeChangeSearchProviderTooltip": "Changer de moteur de recherche", + "@homeChangeSearchProviderTooltip": { + "description": "Tooltip for the Home search provider picker" + }, + "actionPaste": "Coller", + "@actionPaste": { + "description": "Generic action - paste from clipboard" + }, + "tutorialSearchHint": "Collez ou effectuez une recherche...", + "@tutorialSearchHint": { + "description": "Placeholder shown in the tutorial search demo" + }, + "tutorialDownloadCompletedSemantics": "Téléchargement terminé", + "@tutorialDownloadCompletedSemantics": { + "description": "Accessibility label for completed download state in tutorial demo" + }, + "tutorialDownloadInProgressSemantics": "Téléchargement en cours", + "@tutorialDownloadInProgressSemantics": { + "description": "Accessibility label for active download state in tutorial demo" + }, + "tutorialStartDownloadSemantics": "Lancer le téléchargement", + "@tutorialStartDownloadSemantics": { + "description": "Accessibility label for idle download button in tutorial demo" + }, + "optionsEmbedMetadata": "Intégrer des métadonnées", + "@optionsEmbedMetadata": { + "description": "Settings toggle title for writing metadata into downloaded files" + }, + "optionsEmbedMetadataSubtitleOn": "Ajouter des métadonnées, des pochettes et des paroles intégrées aux fichiers", + "@optionsEmbedMetadataSubtitleOn": { + "description": "Subtitle when metadata embedding is enabled" + }, + "optionsEmbedMetadataSubtitleOff": "Désactivé (avancé) : ignorer l'intégration de toutes les métadonnées", + "@optionsEmbedMetadataSubtitleOff": { + "description": "Subtitle when metadata embedding is disabled" + }, + "trackCoverNoEmbeddedArt": "Aucune pochette d'album n'a été trouvée", + "@trackCoverNoEmbeddedArt": { + "description": "Message shown when a track file has no embedded cover art" + }, + "trackCoverReplace": "Remplacer la pochette", + "@trackCoverReplace": { + "description": "Button label for replacing selected cover art" + }, + "trackCoverPick": "Choisir une pochette", + "@trackCoverPick": { + "description": "Button label for selecting cover art" + }, + "trackCoverClearSelected": "Supprimer la pochette sélectionnée", + "@trackCoverClearSelected": { + "description": "Tooltip for clearing the newly selected cover art" + }, + "trackCoverCurrent": "Pochette actuelle", + "@trackCoverCurrent": { + "description": "Label for the currently embedded cover preview" + }, + "trackCoverSelected": "Pochette choisie", + "@trackCoverSelected": { + "description": "Label for the newly selected cover preview" + }, + "trackCoverReplaceNotice": "La pochette sélectionnée remplacera la pochette actuellement intégrée lorsque vous appuierez sur « Enregistrer ».", + "@trackCoverReplaceNotice": { + "description": "Notice shown when a new cover has been selected but not saved yet" + }, + "trackCoverResolution": "Résolution de la couverture", + "@trackCoverResolution": { + "description": "Label for selecting the embedded cover art resolution" + }, + "trackCoverResolutionHint": "Définit la longueur maximale de l'image lors de l'enregistrement. L'agrandissement n'apporte pas davantage de détails à l'image.", + "@trackCoverResolutionHint": { + "description": "Explanation below the embedded cover art resolution selector" + }, + "trackCoverResizeFailed": "L'image de couverture n'a pas pu être redimensionnée. Veuillez essayer une autre taille ou une autre image.", + "@trackCoverResizeFailed": { + "description": "Error shown when resizing cover art before saving metadata fails" + }, + "actionStop": "Arrêter", + "@actionStop": { + "description": "Generic action - stop" + }, + "queueFinalizingDownload": "Téléchargement en cours", + "@queueFinalizingDownload": { + "description": "Accessibility label for a queue item that is finalizing" + }, + "queueDownloadNext": "Télécharger le suivant", + "@queueDownloadNext": { + "description": "Tooltip on a queued download row; moves the item to the front of the queue so the next free slot downloads it" + }, + "queueMoveUp": "Remonter", + "@queueMoveUp": { + "description": "Queue item menu action - move the queued item one position earlier" + }, + "queueMoveDown": "Descendre", + "@queueMoveDown": { + "description": "Queue item menu action - move the queued item one position later" + }, + "editMetadataMusicBrainzButton": "Récupérer depuis MusicBrainz", + "@editMetadataMusicBrainzButton": { + "description": "Tag editor button that fills genre and album artist from MusicBrainz by ISRC" + }, + "editMetadataMusicBrainzFilled": "Mise à jour à partir de MusicBrainz", + "@editMetadataMusicBrainzFilled": { + "description": "Snackbar after MusicBrainz suggestions were applied to the tag editor fields" + }, + "editMetadataMusicBrainzNothing": "Aucun résultat trouvé sur MusicBrainz", + "@editMetadataMusicBrainzNothing": { + "description": "Snackbar when the MusicBrainz lookup returns no data" + }, + "editMetadataMusicBrainzNeedsIsrc": "Nécessite une balise ISRC", + "@editMetadataMusicBrainzNeedsIsrc": { + "description": "Snackbar when the MusicBrainz lookup is tapped without an ISRC" + }, + "nowPlayingRepeatOff": "Répétition désactivée", + "@nowPlayingRepeatOff": { + "description": "Repeat toggle tooltip when repeat is disabled" + }, + "nowPlayingRepeatAll": "Tout répéter", + "@nowPlayingRepeatAll": { + "description": "Repeat toggle tooltip when the whole queue repeats" + }, + "nowPlayingRepeatOne": "Répéter une fois", + "@nowPlayingRepeatOne": { + "description": "Repeat toggle tooltip when the current track repeats" + }, + "queueNetworkFailedOffline": "{count} téléchargements ont échoué en mode hors ligne", + "@queueNetworkFailedOffline": { + "description": "Snackbar shown when connectivity returns and network-failed downloads can be retried", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueDownloadedFileMissing": "Fichier téléchargé manquant", + "@queueDownloadedFileMissing": { + "description": "Accessibility label when a downloaded file is missing from disk" + }, + "queueCheckingDownloadedFile": "Vérification du fichier téléchargé...", + "@queueCheckingDownloadedFile": { + "description": "Accessibility label while the app checks whether a just-completed download has appeared at its final path yet. Not about authentication or a download session." + }, + "queueDownloadCompleted": "Téléchargement terminé", + "@queueDownloadCompleted": { + "description": "Accessibility label for completed download state in queue" + }, + "queueRateLimitTitle": "Débit limité", + "@queueRateLimitTitle": { + "description": "Title shown on a failed queue item when the download service rate limits requests" + }, + "queueRateLimitMessage": "Ce titre est peut-être encore disponible. Patientez quelques minutes, réduisez le nombre de téléchargements simultanés, puis réessayez.", + "@queueRateLimitMessage": { + "description": "Explanation shown on a failed queue item when the download service rate limits requests" + }, + "appearanceSelectAccentColor": "Sélectionnez une couleur d'accentuation {hex}", + "@appearanceSelectAccentColor": { + "description": "Accessibility label for picking an accent color", + "placeholders": { + "hex": { + "type": "String" + } + } + }, + "logAutoScrollOn": "Défilement automatique activé", + "@logAutoScrollOn": { + "description": "Tooltip when auto-scroll is enabled on the log screen" + }, + "logAutoScrollOff": "Défilement automatique désactivé", + "@logAutoScrollOff": { + "description": "Tooltip when auto-scroll is disabled on the log screen" + }, + "logCopyLogs": "Copier les journaux", + "@logCopyLogs": { + "description": "Tooltip for copying logs" + }, + "logClearSearch": "Effacer la recherche", + "@logClearSearch": { + "description": "Tooltip for clearing the log search field" + }, + "logIssueIspBlockingLabel": "BLOCAGE PAR LE FAI DÉTECTÉ", + "@logIssueIspBlockingLabel": { + "description": "Diagnostic badge label when ISP blocking is detected" + }, + "logIssueIspBlockingDescription": "Il se peut que votre fournisseur d'accès Internet bloque l'accès aux services de téléchargement", + "@logIssueIspBlockingDescription": { + "description": "Diagnostic badge description for ISP blocking" + }, + "logIssueIspBlockingSuggestion": "Essayez d'utiliser un VPN ou de modifier vos paramètres DNS pour les remplacer par 1.1.1.1 ou 8.8.8.8", + "@logIssueIspBlockingSuggestion": { + "description": "Diagnostic badge suggestion for ISP blocking" + }, + "logIssueRateLimitedLabel": "NOMBRE LIMITÉ", + "@logIssueRateLimitedLabel": { + "description": "Diagnostic badge label when the service rate limits requests" + }, + "logIssueRateLimitedDescription": "Trop de requêtes adressées au service", + "@logIssueRateLimitedDescription": { + "description": "Diagnostic badge description for rate limiting" + }, + "logIssueRateLimitedSuggestion": "Attendez quelques minutes avant de réessayer", + "@logIssueRateLimitedSuggestion": { + "description": "Diagnostic badge suggestion for rate limiting" + }, + "logIssueNetworkErrorLabel": "ERREUR DE RÉSEAU", + "@logIssueNetworkErrorLabel": { + "description": "Diagnostic badge label for generic network errors" + }, + "logIssueNetworkErrorDescription": "Problèmes de connexion détectés", + "@logIssueNetworkErrorDescription": { + "description": "Diagnostic badge description for generic network errors" + }, + "logIssueNetworkErrorSuggestion": "Vérifiez votre connexion Internet", + "@logIssueNetworkErrorSuggestion": { + "description": "Diagnostic badge suggestion for generic network errors" + }, + "logIssueTrackNotFoundLabel": "PISTE INTROUVABLE", + "@logIssueTrackNotFoundLabel": { + "description": "Diagnostic badge label when a track is unavailable" + }, + "logIssueTrackNotFoundDescription": "Certains titres n'ont pas pu être trouvés sur les plateformes de téléchargement", + "@logIssueTrackNotFoundDescription": { + "description": "Diagnostic badge description when a track is unavailable" + }, + "logIssueTrackNotFoundSuggestion": "Il se peut que ce morceau ne soit pas disponible en qualité sans perte", + "@logIssueTrackNotFoundSuggestion": { + "description": "Diagnostic badge suggestion when a track is unavailable" + }, + "clickableLookingUpArtist": "Recherche d'artiste...", + "@clickableLookingUpArtist": { + "description": "Snackbar shown while clickable artist metadata is being resolved" + }, + "clickableInformationUnavailable": "Informations sur {type} non disponibles", + "@clickableInformationUnavailable": { + "description": "Snackbar shown when clickable metadata cannot open a destination", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "extensionDetailsTags": "Balises", + "@extensionDetailsTags": { + "description": "Section title for extension tags" + }, + "extensionDetailsInformation": "Information", + "@extensionDetailsInformation": { + "description": "Section title for extension metadata information" + }, + "extensionUtilityFunctions": "Fonctions utilitaires", + "@extensionUtilityFunctions": { + "description": "Capability label for utility-only extensions" + }, + "actionDismiss": "Ignorer", + "@actionDismiss": { + "description": "Generic action - dismiss" + }, + "setupChangeFolderTooltip": "Changer de dossier", + "@setupChangeFolderTooltip": { + "description": "Tooltip for editing the selected download folder" + }, + "a11yOpenTrackByArtist": "Écouter le morceau {trackName} de {artistName}", + "@a11yOpenTrackByArtist": { + "description": "Accessibility label for opening a track item", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "a11yOpenItem": "Ouvrir {itemType} {name}", + "@a11yOpenItem": { + "description": "Accessibility label for opening a generic item", + "placeholders": { + "itemType": { + "type": "String" + }, + "name": { + "type": "String" + } + } + }, + "a11yOpenItemCount": "Ouvrir {title}, {count} {count, plural, =1{item} other{éléments}}", + "@a11yOpenItemCount": { + "description": "Accessibility label for opening a grouped item with count", + "placeholders": { + "title": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "a11yOpenAlbumByArtistTrackCount": "Ouvrir l'album {albumName} de {artistName}, {trackCount} titres", + "@a11yOpenAlbumByArtistTrackCount": { + "description": "Accessibility label for opening an album item with track count", + "placeholders": { + "albumName": { + "type": "String" + }, + "artistName": { + "type": "String" + }, + "trackCount": { + "type": "int" + } + } + }, + "a11yTrackByArtist": "{trackName} de {artistName}", + "@a11yTrackByArtist": { + "description": "Accessibility label for a queue or list track item", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "a11ySelectAlbum": "Sélectionnez l'album {albumName}", + "@a11ySelectAlbum": { + "description": "Accessibility label for selecting an album", + "placeholders": { + "albumName": { + "type": "String" + } + } + }, + "a11yOpenAlbum": "Ouvrir l'album {albumName}", + "@a11yOpenAlbum": { + "description": "Accessibility label for opening an album", + "placeholders": { + "albumName": { + "type": "String" + } + } + }, + "settingsFiles": "Fichiers & Dossiers", + "@settingsFiles": { + "description": "Settings menu item - file and folder settings" + }, + "settingsFilesSubtitle": "Emplacement de téléchargement, nom de fichier, structure des dossiers", + "@settingsFilesSubtitle": { + "description": "Subtitle for files & folders settings" + }, + "settingsMetadata": "Métadonnées", + "@settingsMetadata": { + "description": "Settings menu item - metadata settings" + }, + "settingsMetadataSubtitle": "Pochettes, balises, ReplayGain, fournisseurs", + "@settingsMetadataSubtitle": { + "description": "Subtitle for metadata settings" + }, + "settingsLyrics": "Paroles", + "@settingsLyrics": { + "description": "Settings menu item - lyrics settings" + }, + "settingsLyricsSubtitle": "Intégration, mode, fournisseurs, options linguistiques", + "@settingsLyricsSubtitle": { + "description": "Subtitle for lyrics settings" + }, + "settingsApp": "Application", + "@settingsApp": { + "description": "Settings menu item - app settings" + }, + "settingsAppSubtitle": "Mises à jour, données, dépôt d'extension, débogage", + "@settingsAppSubtitle": { + "description": "Subtitle for app settings" + }, + "sectionMetadataProviders": "Fournisseurs", + "@sectionMetadataProviders": { + "description": "Settings section header for metadata providers" + }, + "sectionDuplicates": "Doublons", + "@sectionDuplicates": { + "description": "Settings section header for deduplication" + }, + "sectionLyricsProviderOptions": "Options du fournisseur", + "@sectionLyricsProviderOptions": { + "description": "Settings section header for per-provider lyrics options" + }, + "metadataProvidersTitle": "Priorité des fournisseurs de métadonnées", + "@metadataProvidersTitle": { + "description": "Settings item title for metadata provider order" + }, + "metadataProvidersSubtitle": "Faites glisser pour définir l'ordre des sources de recherche et de métadonnées", + "@metadataProvidersSubtitle": { + "description": "Subtitle for metadata provider priority item" + }, + "downloadDeduplication": "Éviter les téléchargements en double", + "@downloadDeduplication": { + "description": "Setting - skip tracks already in download history" + }, + "downloadDeduplicationEnabled": "Les morceaux déjà téléchargés seront ignorés", + "@downloadDeduplicationEnabled": { + "description": "Subtitle when deduplication is on" + }, "downloadDeduplicationWithQualityVariants": "Les fichiers existants correspondant à la qualité sélectionnée seront ignorés", "@downloadDeduplicationWithQualityVariants": { "description": "Deduplication subtitle when separate quality versions are allowed" }, + "downloadDeduplicationDisabled": "Tous les morceaux seront téléchargés, quel que soit l'historique", + "@downloadDeduplicationDisabled": { + "description": "Subtitle when deduplication is off" + }, "downloadQualityVariants": "Autoriser différentes versions de qualité", "@downloadQualityVariants": { "description": "Setting to retain multiple quality versions of the same track" @@ -6004,99 +5746,1084 @@ "@trackOptionDownloadQualityVariant": { "description": "Track menu action to download another quality version" }, + "downloadFallbackExtensions": "Extensions de secours", + "@downloadFallbackExtensions": { + "description": "Settings item for configuring fallback extension providers" + }, + "downloadFallbackExtensionsSubtitle": "Choisissez les extensions pouvant servir de solution de secours", + "@downloadFallbackExtensionsSubtitle": { + "description": "Subtitle for fallback extensions item" + }, + "editMetadataFieldDateHint": "AAAA-MM-JJ ou AAAA", + "@editMetadataFieldDateHint": { + "description": "Hint text for the edit metadata date field" + }, + "editMetadataFieldTrackTotal": "Total des pistes", + "@editMetadataFieldTrackTotal": { + "description": "Label for total tracks field in the edit metadata sheet" + }, + "editMetadataFieldDiscTotal": "Total des disques", + "@editMetadataFieldDiscTotal": { + "description": "Label for total discs field in the edit metadata sheet" + }, + "editMetadataFieldComposer": "Compositeur", + "@editMetadataFieldComposer": { + "description": "Label for composer field in the edit metadata sheet" + }, + "editMetadataFieldComment": "Commentaire", + "@editMetadataFieldComment": { + "description": "Label for comment field in the edit metadata sheet" + }, + "trackAlbumType": "Type de publication", + "@trackAlbumType": { + "description": "Label for an album or release type metadata value" + }, + "editMetadataFieldAlbumTypeHint": "Album, single, EP, compilation...", + "@editMetadataFieldAlbumTypeHint": { + "description": "Hint for the release type metadata field" + }, + "editMetadataFieldExplicit": "Explicite", + "@editMetadataFieldExplicit": { + "description": "Label for the explicit content metadata field" + }, + "editMetadataFieldExplicitHint": "Signaler ce morceau comme contenant du contenu explicite", + "@editMetadataFieldExplicitHint": { + "description": "Description for the explicit content metadata switch" + }, + "metadataExplicitValue": "Explicite", + "@metadataExplicitValue": { + "description": "Displayed value when a track is marked explicit" + }, + "editMetadataFieldUpc": "UPC / Code-barres", + "@editMetadataFieldUpc": { + "description": "Label for the release barcode metadata field" + }, + "editMetadataFieldUpcHint": "UPC, EAN ou GTIN sous forme numérique", + "@editMetadataFieldUpcHint": { + "description": "Hint for the release barcode metadata field" + }, + "editMetadataAdvanced": "Avancé", + "@editMetadataAdvanced": { + "description": "Expandable section label for advanced metadata fields" + }, + "libraryFilterMetadataMissingTrackNumber": "Numéro de piste manquant", + "@libraryFilterMetadataMissingTrackNumber": { + "description": "Filter option - items missing track number" + }, + "libraryFilterMetadataMissingDiscNumber": "Numéro de disque manquant", + "@libraryFilterMetadataMissingDiscNumber": { + "description": "Filter option - items missing disc number" + }, + "libraryFilterMetadataMissingArtist": "Artiste manquant", + "@libraryFilterMetadataMissingArtist": { + "description": "Filter option - items missing artist" + }, + "libraryFilterMetadataIncorrectIsrcFormat": "Format ISRC incorrect", + "@libraryFilterMetadataIncorrectIsrcFormat": { + "description": "Filter option - items with an invalid ISRC format" + }, + "libraryFilterMetadataMissingIsrc": "ISRC manquant", + "@libraryFilterMetadataMissingIsrc": { + "description": "Filter option - items without any ISRC tag" + }, + "libraryFilterMetadataMissingLabel": "Label manquant", + "@libraryFilterMetadataMissingLabel": { + "description": "Filter option - items missing record label" + }, + "collectionDeletePlaylistsMessage": "Supprimer {count} {count, plural, =1{playlist} other{playlists}}?", + "@collectionDeletePlaylistsMessage": { + "description": "Confirmation message for deleting selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionPlaylistsDeleted": "{count} {count, plural, =1{playlist} other{playlists}} supprimées", + "@collectionPlaylistsDeleted": { + "description": "Snackbar after deleting selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionAddedTracksToPlaylist": "Ajout de {count} {count, plural, =1{titre} other{titres}} à {playlistName}", + "@collectionAddedTracksToPlaylist": { + "description": "Snackbar after adding multiple tracks to a playlist", + "placeholders": { + "count": { + "type": "int" + }, + "playlistName": { + "type": "String" + } + } + }, + "collectionAddedTracksToPlaylistWithExisting": "Ajout de {count} {count, plural, =1{titre} other{titres}} à {playlistName} ({alreadyCount} titres déjà présents dans la playlist)", + "@collectionAddedTracksToPlaylistWithExisting": { + "description": "Snackbar after adding multiple tracks to a playlist when some were already present", + "placeholders": { + "count": { + "type": "int" + }, + "playlistName": { + "type": "String" + }, + "alreadyCount": { + "type": "int" + } + } + }, + "itemCount": "{count} {count, plural, =1{élément} other{éléments}}", + "@itemCount": { + "description": "Generic item count label", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackReEnrichSuccessWithFailures": "Les métadonnées ont été réenrichies avec succès ({successCount}/{total}) - Échec : {failedCount}", + "@trackReEnrichSuccessWithFailures": { + "description": "Snackbar summary after batch metadata re-enrichment finishes with failures", + "placeholders": { + "successCount": { + "type": "int" + }, + "total": { + "type": "int" + }, + "failedCount": { + "type": "int" + } + } + }, + "selectionDeleteTracksCount": "Supprimer {count} {count, plural, =1{titre} other{titres}}", + "@selectionDeleteTracksCount": { + "description": "Button label for deleting selected tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueDownloadSpeedStatus": "Téléchargement - {speed} Mo/s", + "@queueDownloadSpeedStatus": { + "description": "Queue status while downloading with speed", + "placeholders": { + "speed": { + "type": "String" + } + } + }, + "queueDownloadStarting": "C'est parti...", "queueCheckingDownloadSession": "Vérification de la session de téléchargement...", "queueResolvingDownloadMetadata": "Récupération des métadonnées du morceau...", "queueResolvingDownloadStream": "Préparation du flux audio...", "queueWaitingForVerification": "En attente de vérification...", "queueResumingAfterVerification": "Reprise après vérification...", + "@queueDownloadStarting": { + "description": "Queue status before download progress is available" + }, + "@queueCheckingDownloadSession": { + "description": "Queue status while the download provider's session is being checked during preparation (preparationStage 'checking_session'). This is about the provider session, not about locating a finished file." + }, + "a11ySelectTrack": "Sélectionner une piste", + "@a11ySelectTrack": { + "description": "Accessibility label for selecting a track" + }, + "a11yDeselectTrack": "Désélectionner la piste", + "@a11yDeselectTrack": { + "description": "Accessibility label for deselecting a track" + }, + "a11yPlayTrackByArtist": "Écouter {trackName} de {artistName}", + "@a11yPlayTrackByArtist": { + "description": "Accessibility label for playing a local library track", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "storeExtensionsCount": "{count} {count, plural, one{extension} other{extensions}}", + "@storeExtensionsCount": { + "description": "Store extension result count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "storeRequiresVersion": "Nécessite la version v{version}+", + "@storeRequiresVersion": { + "description": "Store compatibility badge for minimum app version", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "actionGo": "Aller", + "@actionGo": { + "description": "Generic action button label" + }, + "logIssueSummary": "Résumé du problème", + "@logIssueSummary": { + "description": "Header for log issue analysis summary" + }, + "logTotalErrors": "Nombre total d'erreurs : {count}", + "@logTotalErrors": { + "description": "Total error count in log issue analysis", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "logAffectedDomains": "Concerne : {domains}", + "@logAffectedDomains": { + "description": "Affected domains in log issue analysis", + "placeholders": { + "domains": { + "type": "String" + } + } + }, + "libraryScanCancelled": "Analyse annulée", + "@libraryScanCancelled": { + "description": "Library scan status when a scan was cancelled" + }, + "libraryScanCancelledSubtitle": "Vous pouvez relancer l'analyse dès que vous êtes prêt.", + "@libraryScanCancelledSubtitle": { + "description": "Library scan status subtitle after cancellation" + }, + "libraryDownloadsHistoryExcluded": "{count} dans l'historique des téléchargements (exclu de la liste)", + "@libraryDownloadsHistoryExcluded": { + "description": "Library count note for downloaded history items excluded from the local list", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadNativeWorker": "Tâche de téléchargement native", + "@downloadNativeWorker": { + "description": "Setting title for Android native download worker" + }, + "downloadNativeWorkerSubtitle": "Service d'arrière-plan Android pour le téléchargement d'extensions", + "@downloadNativeWorkerSubtitle": { + "description": "Setting subtitle for Android native download worker" + }, + "extensionServiceStatus": "État du service", + "@extensionServiceStatus": { + "description": "Extension detail section header for service status" + }, + "extensionServiceHealth": "Santé du service", + "@extensionServiceHealth": { + "description": "Extension capability label for service health checks" + }, + "extensionHealthChecksConfigured": "{count} {count, plural, =1{vérification} other{vérifications}} configurées", + "@extensionHealthChecksConfigured": { + "description": "Extension service health check count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionOauthConnectHint": "Appuyez sur « Se connecter à Spotify » pour remplir ce champ.", + "@extensionOauthConnectHint": { + "description": "Hint for an OAuth login link field before connecting Spotify" + }, + "extensionLastChecked": "Dernière vérification à {time}", + "@extensionLastChecked": { + "description": "Timestamp for the latest extension service health check", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "extensionRefreshStatus": "Actualiser l'état", + "@extensionRefreshStatus": { + "description": "Tooltip for refreshing extension service health status" + }, + "extensionCustomUrlHandling": "Gestion des URL personnalisées", + "@extensionCustomUrlHandling": { + "description": "Extension detail section title for custom URL handling" + }, + "extensionCustomUrlHandlingSubtitle": "Cette extension prend en charge les liens provenant de ces sites", + "@extensionCustomUrlHandlingSubtitle": { + "description": "Extension detail subtitle for custom URL handling" + }, + "extensionCustomUrlHandlingShareHint": "Partagez des liens provenant de ces sites vers SpotiFLAC Mobile et cette extension s'en chargera.", + "@extensionCustomUrlHandlingShareHint": { + "description": "Extension detail hint explaining share-to-app URL handling" + }, + "extensionSettingsCount": "{count} {count, plural, =1{paramètre} other{paramètres}}", + "@extensionSettingsCount": { + "description": "Count of settings exposed by an extension quality option", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionHealthOnline": "En ligne", + "@extensionHealthOnline": { + "description": "Extension service health status - online" + }, + "extensionHealthDegraded": "Dégradé", + "@extensionHealthDegraded": { + "description": "Extension service health status - degraded" + }, + "extensionHealthOffline": "Hors ligne", + "@extensionHealthOffline": { + "description": "Extension service health status - offline" + }, + "extensionHealthNotConfigured": "Non configuré", + "@extensionHealthNotConfigured": { + "description": "Extension service health status - not configured" + }, + "extensionHealthUnknown": "Inconnu", + "@extensionHealthUnknown": { + "description": "Extension service health status - unknown" + }, + "extensionHealthRequired": "requis", + "@extensionHealthRequired": { + "description": "Label for a required extension service health check" + }, + "extensionSettingNotSet": "Non défini", + "@extensionSettingNotSet": { + "description": "Value shown when an extension setting has no value" + }, + "extensionActionFailed": "L'action a échoué", + "@extensionActionFailed": { + "description": "Fallback error when an extension action fails without details" + }, + "extensionEnterValue": "Saisir une valeur", + "@extensionEnterValue": { + "description": "Hint for editing an extension setting value" + }, + "extensionHealthServiceOnline": "Service en ligne", + "@extensionHealthServiceOnline": { + "description": "Tooltip for online extension service" + }, + "extensionHealthServiceDegraded": "Service perturbé", + "@extensionHealthServiceDegraded": { + "description": "Tooltip for degraded extension service" + }, + "extensionHealthServiceOffline": "Service hors ligne", + "@extensionHealthServiceOffline": { + "description": "Tooltip for offline extension service" + }, + "extensionHealthServiceUnknown": "État du service inconnu", + "@extensionHealthServiceUnknown": { + "description": "Tooltip for unknown extension service health" + }, + "audioAnalysisStereo": "Stéréo", + "@audioAnalysisStereo": { + "description": "Audio channel layout label - stereo" + }, + "audioAnalysisMono": "Mono", + "@audioAnalysisMono": { + "description": "Audio channel layout label - mono" + }, + "trackOpenInService": "Ouvrir dans {serviceName}", + "@trackOpenInService": { + "description": "Button label to open a track in a named music service", + "placeholders": { + "serviceName": { + "type": "String" + } + } + }, + "trackLyricsEmbeddedSource": "Intégré", + "@trackLyricsEmbeddedSource": { + "description": "Lyrics source label for embedded lyrics" + }, + "unknownAlbum": "Album inconnu", + "@unknownAlbum": { + "description": "Fallback album name when metadata is missing" + }, + "unknownArtist": "Artiste inconnu", + "@unknownArtist": { + "description": "Fallback artist name when metadata is missing" + }, + "permissionAudio": "Audio", + "@permissionAudio": { + "description": "Audio permission type label" + }, + "permissionStorage": "Stockage", + "@permissionStorage": { + "description": "Storage permission type label" + }, + "permissionNotification": "Notification", + "@permissionNotification": { + "description": "Notification permission type label" + }, + "errorInvalidFolderSelected": "Dossier non valide sélectionné", + "@errorInvalidFolderSelected": { + "description": "Error when the selected folder is invalid" + }, + "storeAnyVersion": "N'importe lequel", + "@storeAnyVersion": { + "description": "Store detail value when any app version is accepted" + }, + "storeCategoryMetadata": "Métadonnées", + "@storeCategoryMetadata": { + "description": "Store extension category - metadata" + }, + "storeCategoryDownload": "Télécharger", + "@storeCategoryDownload": { + "description": "Store extension category - download" + }, + "storeCategoryUtility": "Utilitaire", + "@storeCategoryUtility": { + "description": "Store extension category - utility" + }, + "storeCategoryLyrics": "Paroles", + "@storeCategoryLyrics": { + "description": "Store extension category - lyrics" + }, + "storeCategoryIntegration": "Intégration", + "@storeCategoryIntegration": { + "description": "Store extension category - integration" + }, + "artistReleases": "Sorties", + "@artistReleases": { + "description": "Section header for all artist releases" + }, + "editMetadataSelectNone": "Aucun", + "@editMetadataSelectNone": { + "description": "Button to clear selected fields for auto-fill" + }, + "queueRetryAllFailed": "{count} tentatives ont échoué", + "@queueRetryAllFailed": { + "description": "Button to retry every failed download in the queue", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "settingsSaveDownloadHistory": "Enregistrer l'historique des téléchargements", + "@settingsSaveDownloadHistory": { + "description": "Settings switch title for storing completed downloads in history" + }, + "settingsSaveDownloadHistorySubtitle": "Conserver les téléchargements terminés dans l'historique et la bibliothèque", + "@settingsSaveDownloadHistorySubtitle": { + "description": "Settings switch subtitle for storing completed downloads in history" + }, + "dialogDisableHistoryTitle": "Désactiver l'historique des téléchargements ?", + "@dialogDisableHistoryTitle": { + "description": "Confirmation dialog title shown before disabling download history" + }, + "dialogDisableHistoryMessage": "L'historique actuel sera effacé. Les fichiers téléchargés ne seront pas supprimés.", + "@dialogDisableHistoryMessage": { + "description": "Confirmation dialog message shown before disabling download history" + }, + "dialogDisableAndClear": "Désactiver et effacer", + "@dialogDisableAndClear": { + "description": "Confirmation action to disable download history and clear existing entries" + }, + "openInOtherServices": "Ouvrir dans d'autres services", + "@openInOtherServices": { + "description": "Title and tooltip for finding the current collection in other services" + }, + "shareSheetNoExtensions": "Aucun autre service compatible", + "@shareSheetNoExtensions": { + "description": "Empty state when no extensions can be searched for cross-service links" + }, + "shareSheetNotFound": "Introuvable", + "@shareSheetNotFound": { + "description": "Cross-service share sheet row subtitle when a service has no match" + }, + "shareSheetCopyLink": "Copier le lien", + "@shareSheetCopyLink": { + "description": "Tooltip for copying a cross-service link" + }, + "shareSheetLinkCopied": "Lien {service} copié", + "@shareSheetLinkCopied": { + "description": "Snackbar after copying a cross-service link", + "placeholders": { + "service": {} + } + }, + "libraryPlayback": "Lecture", + "@libraryPlayback": { + "description": "Section header for playback settings in library settings" + }, + "libraryExternalPlayer": "Lecteur externe", + "@libraryExternalPlayer": { + "description": "Setting option to use an external music player" + }, + "libraryExternalPlayerSubtitle": "Recommandé pour l'écoute, la meilleure qualité, la lecture en continu, l'égaliseur et la prise en charge d'un plus grand nombre de formats", + "@libraryExternalPlayerSubtitle": { + "description": "Subtitle for external player option" + }, + "libraryBuiltInPreviewPlayer": "Lecteur de prévisualisation intégré", + "@libraryBuiltInPreviewPlayer": { + "description": "Setting option to use the built-in preview player" + }, + "libraryBuiltInPreviewPlayerSubtitle": "Quick local previews inside SpotiFLAC Mobile", + "@libraryBuiltInPreviewPlayerSubtitle": { + "description": "Subtitle for built-in preview player option" + }, + "libraryBuiltInPlayerInfo": "Le lecteur intégré est un outil de prévisualisation permettant de vérifier rapidement les morceaux stockés localement. Utilisez un lecteur de musique externe pour les écouter.", + "@libraryBuiltInPlayerInfo": { + "description": "Info note explaining the built-in player is for previews only" + }, + "nowPlayingTitle": "En cours de lecture", + "@nowPlayingTitle": { + "description": "Title for the now playing screen" + }, + "nowPlayingNothingPlaying": "Il n'y a rien à l'écran", + "@nowPlayingNothingPlaying": { + "description": "Empty state when no track is currently playing" + }, + "nowPlayingMinimize": "Réduire", + "@nowPlayingMinimize": { + "description": "Tooltip for minimizing the now playing screen" + }, + "nowPlayingUpNext": "À suivre", + "@nowPlayingUpNext": { + "description": "Title for the playback queue sheet" + }, + "nowPlayingPreviousTrack": "Piste précédente", + "@nowPlayingPreviousTrack": { + "description": "Tooltip for the previous-track playback control" + }, + "nowPlayingNextTrack": "Piste suivante", + "@nowPlayingNextTrack": { + "description": "Tooltip for the next-track playback control" + }, + "nowPlayingDetails": "Détails", + "@nowPlayingDetails": { + "description": "Menu item and section title for track metadata details" + }, + "nowPlayingSleepTimer": "Minuterie", + "@nowPlayingSleepTimer": { + "description": "Menu item and sheet title for the playback sleep timer" + }, + "nowPlayingSleepTimerActive": "Se termine à {time}", + "@nowPlayingSleepTimerActive": { + "description": "Active sleep timer deadline shown in the player menu", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "nowPlayingSleepTimerMinutes": "{minutes, plural, one{{minutes} minute} other{{minutes} minutes}}", + "@nowPlayingSleepTimerMinutes": { + "description": "Duration choice for the playback sleep timer", + "placeholders": { + "minutes": { + "type": "int" + } + } + }, + "nowPlayingSleepTimerOff": "Désactiver la minuterie", + "@nowPlayingSleepTimerOff": { + "description": "Action to cancel the active playback sleep timer" + }, + "nowPlayingSleepTimerSet": "Minuterie réglée sur {duration}", + "@nowPlayingSleepTimerSet": { + "description": "Confirmation after setting the playback sleep timer", + "placeholders": { + "duration": { + "type": "String" + } + } + }, + "nowPlayingSleepTimerCancelled": "La minuterie est désactivée", + "@nowPlayingSleepTimerCancelled": { + "description": "Confirmation after cancelling the playback sleep timer" + }, + "nowPlayingOpenInExternalPlayer": "Ouvrir dans un lecteur externe", + "@nowPlayingOpenInExternalPlayer": { + "description": "Menu item to open the current track in an external player" + }, + "nowPlayingTabPlayer": "Lecteur", + "@nowPlayingTabPlayer": { + "description": "Tab label for the player view" + }, + "nowPlayingTabLyrics": "Paroles", + "@nowPlayingTabLyrics": { + "description": "Tab label for the lyrics view" + }, + "nowPlayingNoLyrics": "Ce fichier ne contient pas de paroles", + "@nowPlayingNoLyrics": { + "description": "Empty state when the playing file has no embedded lyrics" + }, + "nowPlayingLibraryEmpty": "Votre bibliothèque est vide", + "@nowPlayingLibraryEmpty": { + "description": "Snackbar when shuffle library is requested but library has no tracks" + }, + "nowPlayingShuffleLibraryFailed": "Impossible de lire aléatoirement la bibliothèque : {error}", + "@nowPlayingShuffleLibraryFailed": { + "description": "Snackbar when shuffling the library fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "nowPlayingShuffleOn": "Lecture aléatoire activée", + "@nowPlayingShuffleOn": { + "description": "Tooltip when shuffle mode is enabled" + }, + "nowPlayingPlayInOrder": "Lire dans l'ordre", + "@nowPlayingPlayInOrder": { + "description": "Tooltip when shuffle mode is disabled" + }, + "nowPlayingShuffleLibrary": "Lecture aléatoire de la bibliothèque", + "@nowPlayingShuffleLibrary": { + "description": "Button label to shuffle and play the entire local library" + }, + "nowPlayingQueueEmpty": "La file d'attente est vide", + "@nowPlayingQueueEmpty": { + "description": "Empty state when the playback queue has no items" + }, + "nowPlayingNoMetadata": "Aucune métadonnée disponible", + "@nowPlayingNoMetadata": { + "description": "Empty state when track metadata cannot be loaded" + }, + "announcementUnableToOpenLink": "Impossible d'ouvrir le lien. Veuillez réessayer.", + "@announcementUnableToOpenLink": { + "description": "Snackbar shown when an announcement CTA link cannot be opened" + }, + "trackConvertLosslessOutputWithCap": "Sortie sans perte avec une limite de {quality}", + "@trackConvertLosslessOutputWithCap": { + "description": "Hint shown when lossless conversion will cap bit depth or sample rate", + "placeholders": { + "quality": { + "type": "String" + } + } + }, + "trackConvertConfirmMessageLosslessCapped": "Convertir du format {sourceFormat} au format {targetFormat} ({quality}) ?\n\nLe fichier de sortie conservera un codec sans perte, mais la profondeur de bits et la fréquence d'échantillonnage seront limitées. Le fichier d'origine sera supprimé après la conversion.", + "@trackConvertConfirmMessageLosslessCapped": { + "description": "Confirmation dialog message for capped lossless conversion of a single file", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "selectionBatchConvertConfirmMessageLosslessCapped": "Convertir {count} {count, plural, =1{titre} other{titres}} en {format} ({quality}) ?\n\nLe fichier de sortie conservera un codec sans perte, mais la profondeur de bits et la fréquence d'échantillonnage seront limitées. Les fichiers d'origine seront supprimés après la conversion.", + "@selectionBatchConvertConfirmMessageLosslessCapped": { + "description": "Confirmation dialog message for capped lossless batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "trackConvertActionLabelLossless": "{sourceFormat} → {targetFormat} ({quality})", + "@trackConvertActionLabelLossless": { + "description": "Convert button label for lossless conversion with quality cap", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "trackConvertActionLabelLossy": "{sourceFormat} → {targetFormat} @ {bitrate}", + "@trackConvertActionLabelLossy": { + "description": "Convert button label for lossy conversion", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "aboutPaxsenixSubtitle": "Proxy de paroles pour Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou et Genius", + "@aboutPaxsenixSubtitle": { + "description": "Subtitle for Paxsenix special thanks entry on the about page" + }, + "snackbarPlayingNext": "Prochainement", + "@snackbarPlayingNext": { + "description": "Snackbar when a track is inserted as the next queue item" + }, + "snackbarAddedToQueueGeneric": "Ajouté à la file d'attente", + "@snackbarAddedToQueueGeneric": { + "description": "Snackbar when a track is added to the playback queue without naming it" + }, + "selectionDeletePlaylistsCount": "Supprimer {count} {count, plural, one{playlist} other{playlists}}", + "@selectionDeletePlaylistsCount": { + "description": "Button label for deleting multiple selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "actionShuffle": "Lecture aléatoire", + "@actionShuffle": { + "description": "Tooltip for shuffle playback action" + }, + "downloadPrimaryArtistOnlyOn": "Primaire uniquement : Activé", + "@downloadPrimaryArtistOnlyOn": { + "description": "Status label when primary-artist-only folder naming is enabled" + }, + "downloadPrimaryArtistOnlyOff": "Primaire uniquement : Désactivé", + "@downloadPrimaryArtistOnlyOff": { + "description": "Status label when primary-artist-only folder naming is disabled" + }, + "downloadAlbumArtistMetadataPrimaryOnly": "Métadonnées « Album » et « Artiste » : uniquement les données principales", + "@downloadAlbumArtistMetadataPrimaryOnly": { + "description": "Status label when album-artist folder filtering uses primary artist only" + }, + "downloadAlbumArtistMetadataFull": "Métadonnées de l'artiste de l'album : complètes", + "@downloadAlbumArtistMetadataFull": { + "description": "Status label when album-artist folder filtering uses full metadata" + }, + "trackConvertOriginal": "Original", + "@trackConvertOriginal": { + "description": "Label for keeping original bit depth or sample rate during conversion" + }, + "trackConvertOriginalQuality": "Qualité d'origine", + "@trackConvertOriginalQuality": { + "description": "Label when no bit depth or sample rate cap is applied during lossless conversion" + }, + "trackConvertLosslessSuffix": "Sans perte", + "@trackConvertLosslessSuffix": { + "description": "Suffix used in converted lossless quality labels" + }, + "trackConvertDithering": "Hésitation", + "@trackConvertDithering": { + "description": "Section label for lossless conversion dithering options" + }, + "trackConvertResampler": "Rééchantillonneur", + "@trackConvertResampler": { + "description": "Section label for lossless conversion resampler options" + }, + "trackConvertDitherNone": "Aucun", + "@trackConvertDitherNone": { + "description": "Lossless conversion dither option with no dithering applied" + }, + "trackConvertDitherTriangular": "TPDF", + "@trackConvertDitherTriangular": { + "description": "Lossless conversion triangular probability density function dither option" + }, + "trackConvertDitherTriangularHp": "HP triangulaire", + "@trackConvertDitherTriangularHp": { + "description": "Lossless conversion high-pass triangular dither option" + }, + "trackConvertResamplerSwr": "SWR", + "@trackConvertResamplerSwr": { + "description": "Lossless conversion default FFmpeg swresample resampler option" + }, + "trackConvertResamplerSoxr": "SoXr", + "@trackConvertResamplerSoxr": { + "description": "Lossless conversion SoX resampler option" + }, + "updateSeeReleaseNotes": "Pour plus de détails, consultez les notes de mise à jour.", + "@updateSeeReleaseNotes": { + "description": "Fallback changelog text when release notes cannot be parsed" + }, + "unknownTitle": "Titre inconnu", + "@unknownTitle": { + "description": "Fallback track title when metadata is missing" + }, + "trackPlayNext": "Suivant", + "@trackPlayNext": { + "description": "Menu action to play a track as the next queue item" + }, + "trackAddToQueue": "Ajouter à la file d'attente", + "@trackAddToQueue": { + "description": "Menu action to add a track to the playback queue" + }, + "snackbarExtensionInstalledEnable": "{extensionName} est installée. Activez-la dans Paramètres > Extensions", + "@snackbarExtensionInstalledEnable": { + "description": "Snackbar after installing an extension from the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "snackbarExtensionUpdatedVersion": "{extensionName} a été mis à jour vers la version {version}", + "@snackbarExtensionUpdatedVersion": { + "description": "Snackbar after updating an extension from the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + }, + "version": { + "type": "String" + } + } + }, + "snackbarFailedToInstallNamed": "Échec de l'installation de {extensionName}", + "@snackbarFailedToInstallNamed": { + "description": "Snackbar when extension install fails in the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "snackbarFailedToUpdateNamed": "Échec de la mise à jour de {extensionName}", + "@snackbarFailedToUpdateNamed": { + "description": "Snackbar when extension update fails in the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "releaseTypeEp": "EP", + "@releaseTypeEp": { + "description": "Badge label for EP releases" + }, + "releaseTypeSingle": "Single", + "@releaseTypeSingle": { + "description": "Badge label for single releases" + }, + "trackCoverOnline": "Pochette en ligne", + "@trackCoverOnline": { + "description": "Label shown when metadata autofill downloaded cover art from the internet" + }, + "regionCountryUS": "États-Unis", + "@regionCountryUS": { + "description": "Country name for SongLink region picker" + }, + "regionCountryGB": "Royaume-Uni", + "@regionCountryGB": { + "description": "Country name for SongLink region picker" + }, + "regionCountryFR": "France", + "@regionCountryFR": { + "description": "Country name for SongLink region picker" + }, + "regionCountryDE": "Allemagne", + "@regionCountryDE": { + "description": "Country name for SongLink region picker" + }, + "regionCountryJP": "Japon", + "@regionCountryJP": { + "description": "Country name for SongLink region picker" + }, + "regionCountryKR": "Corée du Sud", + "@regionCountryKR": { + "description": "Country name for SongLink region picker" + }, + "regionCountryIN": "Inde", + "@regionCountryIN": { + "description": "Country name for SongLink region picker" + }, + "regionCountryID": "Indonésie", + "@regionCountryID": { + "description": "Country name for SongLink region picker" + }, + "regionCountryBR": "Brésil", + "@regionCountryBR": { + "description": "Country name for SongLink region picker" + }, + "regionCountryMX": "Mexique", + "@regionCountryMX": { + "description": "Country name for SongLink region picker" + }, + "regionCountryAU": "Australie", + "@regionCountryAU": { + "description": "Country name for SongLink region picker" + }, + "regionCountryCA": "Canada", + "@regionCountryCA": { + "description": "Country name for SongLink region picker" + }, + "regionCountryXK": "Kosovo", + "@regionCountryXK": { + "description": "Country name for SongLink region picker" + }, + "extensionVerificationBrowserTitle": "Navigateur de vérification", + "@extensionVerificationBrowserTitle": { + "description": "Settings option title for extension verification browser preference" + }, + "extensionVerificationBrowserSubtitleExternal": "Ouvrez d'abord les défis dans le navigateur par défaut", + "@extensionVerificationBrowserSubtitleExternal": { + "description": "Subtitle when external browser is preferred for extension verification" + }, + "extensionVerificationBrowserSubtitleInApp": "Ouvrez d'abord les défis dans le navigateur intégré à l'application", + "@extensionVerificationBrowserSubtitleInApp": { + "description": "Subtitle when in-app browser is preferred for extension verification" + }, + "extensionVerificationBrowserExternal": "Externe", + "@extensionVerificationBrowserExternal": { + "description": "Chip label for external browser verification mode" + }, + "extensionVerificationBrowserInApp": "Dans l'application", + "@extensionVerificationBrowserInApp": { + "description": "Chip label for in-app browser verification mode" + }, + "extensionVerificationUnavailable": "Aucune page de vérification n'est disponible pour {extension}. Réessayez le téléchargement pour demander un nouveau code de vérification.", + "@extensionVerificationUnavailable": { + "description": "Shown when the app cannot retrieve a pending verification challenge", + "placeholders": { + "extension": { + "type": "String" + } + } + }, + "extensionVerificationHelpTitleManual": "Lancer la vérification manuellement", + "@extensionVerificationHelpTitleManual": { + "description": "Dialog title when automatic browser launch for verification fails" + }, + "extensionVerificationHelpTitleWaiting": "La vérification est toujours en attente", + "@extensionVerificationHelpTitleWaiting": { + "description": "Dialog title when verification is taking longer than expected" + }, + "extensionVerificationHelpMessageManual": "SpotiFLAC Mobile n'a pas pu ouvrir automatiquement le navigateur. Ouvrez ce lien dans votre navigateur ou copiez-le manuellement.", + "@extensionVerificationHelpMessageManual": { + "description": "Dialog message when automatic browser launch for verification fails" + }, + "extensionVerificationHelpMessageWaiting": "Si le navigateur ne s'est pas ouvert, ou si la vérification s'est terminée sans que vous ne soyez redirigé vers SpotiFLAC Mobile, ouvrez à nouveau ce lien ou copiez-le manuellement.", + "@extensionVerificationHelpMessageWaiting": { + "description": "Dialog message when verification may need manual browser help" + }, + "extensionVerificationClose": "Fermer", + "@extensionVerificationClose": { + "description": "Button to dismiss the extension verification help dialog" + }, + "extensionVerificationCopyLink": "Copier le lien", + "@extensionVerificationCopyLink": { + "description": "Button to copy the extension verification URL" + }, + "extensionVerificationLinkCopied": "Lien de vérification copié", + "@extensionVerificationLinkCopied": { + "description": "Snackbar after copying the extension verification URL" + }, + "extensionVerificationOpenBrowser": "Ouvrir le navigateur", + "@extensionVerificationOpenBrowser": { + "description": "Button to open the extension verification URL in a browser" + }, "settingsSearchHint": "Paramètres de recherche", + "@settingsSearchHint": { + "description": "Placeholder of the search field on the Settings tab" + }, "settingsSearchNoResults": "Aucun paramètre ne correspond à « {query} »", + "@settingsSearchNoResults": { + "description": "Shown when a Settings search returns nothing", + "placeholders": { + "query": { + "type": "String" + } + } + }, "settingsGroupInterface": "Extensions & Apparence", + "@settingsGroupInterface": { + "description": "Settings group covering look and feel" + }, "settingsGroupContent": "Contenu & Métadonnées", + "@settingsGroupContent": { + "description": "Settings group covering the library, metadata and lyrics" + }, "settingsGroupDownloads": "Téléchargements & Fichiers", + "@settingsGroupDownloads": { + "description": "Settings group covering download behaviour and storage" + }, "settingsGroupSystem": "Système", + "@settingsGroupSystem": { + "description": "Settings group covering app-level data, cache and logs" + }, "settingsGroupHelp": "À propos & Assistance", - "collectionExportM3u": "Exporter au format M3U8", - "collectionExportM3uDone": "{exported} titres exportés sur {total}", - "collectionExportM3uNone": "Aucun fichier téléchargé à exporter", - "collectionExportM3uFailed": "L'exportation a échoué", - "trackOpenOn": "Ouvrir sur...", - "trackOpenOnNoLinks": "Aucun lien vers une plateforme n'a été trouvé pour ce titre.", - "libraryReviewDuplicates": "Vérifier les doublons", - "libraryReviewDuplicatesSubtitle": "Rechercher les titres enregistrés plusieurs fois", - "duplicatesTitle": "Doublons", - "duplicatesEmpty": "Aucun titre en double n'a été détecté.", - "duplicatesKeepBest": "Garder le meilleur", - "duplicatesKeepBestMessage": "Supprimer {count} copies de moindre qualité de « {trackName} » ?", - "duplicatesDeleteCopyMessage": "Souhaitez-vous supprimer cette copie de « {trackName} » ?", - "downloadAutoConvert": "Auto-convert after download", - "downloadAutoConvertSubtitle": "Convert completed downloads to a smaller lossy format. The original is replaced only after conversion succeeds.", - "downloadAutoConvertFormat": "Output format", - "downloadAutoConvertFormatSubtitle": "Choose the lossy format used for newly completed downloads.", - "downloadAutoConvertBitrate": "Output quality", - "downloadAutoConvertBitrateSubtitle": "Higher bitrates preserve more detail but create larger files.", - "downloadAutoConvertMp3Subtitle": "Best compatibility across players and devices", - "downloadAutoConvertM4aSubtitle": "Efficient AAC audio in an M4A container", - "downloadAutoConvertOpusSubtitle": "Best efficiency for modern players", - "appearanceForceBlur": "Utilisez toujours des effets de flou", - "appearanceForceBlurSubtitle": "Activer l'effet de flou de la barre de navigation même sur les appareils où cette option est désactivée par défaut. Cela peut nuire aux performances.", - "recentClearAllMessage": "Clear all recent activity? Download history and music files will not be deleted.", - "libraryAddFolder": "Add library folder", - "libraryAddFolderSubtitle": "Internal storage, SD card, SSD, or another external drive", - "librarySourceOnline": "Online", - "librarySourceOffline": "Offline. Reconnect the storage to restore these tracks", - "librarySourceDisabled": "Disabled", - "librarySourceScanCount": "{scanned} of {total} files scanned ({progress}%)", - "libraryExternalStorage": "External storage", - "libraryRemoveFolder": "Remove library folder", - "libraryRemoveFolderMessage": "Remove this folder and its indexed tracks from SpotiFLAC Mobile? Audio files on the storage will not be deleted.", - "trackReEnrichModeIsrc": "ISRC only", - "trackReEnrichModeIsrcSubtitle": "Find and add the recording identifier without changing other tags", - "trackReEnrichModeMissing": "Fill missing tags", - "trackReEnrichModeMissingSubtitle": "Keep existing values and fill only fields that are empty", - "trackReEnrichModeReplace": "Update selected tags", - "trackReEnrichModeReplaceSubtitle": "Choose which existing values may be replaced by online metadata", - "trackReEnrichFieldsTitle": "Tags to update", - "trackReEnrichReview": "Review changes", - "trackReEnrichReviewTitle": "Review metadata changes", - "trackReEnrichReviewSubtitle": "{changeCount} proposed changes across {trackCount} tracks", - "trackReEnrichNoChanges": "No metadata changes were found for the selected tracks.", - "trackReEnrichApplyChanges": "Apply changes", - "trackReEnrichRefreshOnline": "Refresh from online", - "editMetadataAutoFillSource": "Source des métadonnées", - "editMetadataAutoFillSourceAutomatic": "Automatique (priorité au fournisseur)", - "editMetadataAutoFillFind": "Rechercher des métadonnées", - "editMetadataAutoFillPreview": "Données provenant de {source}", - "editMetadataAutoFillCoverAvailable": "Illustration de couverture disponible", - "editMetadataAutoFillApply": "Appliquer les données sélectionnées", - "editMetadataAutoFillDoneFromSource": "Rempli {count} {count, plural, one {}=1{champ} other{champs}} ont été renseignés à partir de {source}", - "queuePlaylistCount": "{count, plural, =1{1 playlist} other{{count} playlists}}", - "queueEmptyPlaylistsSubtitle": "Créez une playlist pour organiser vos morceaux", - "libraryDefaultView": "Affichage par défaut", - "libraryDefaultViewLastUsed": "Dernière utilisation", - "audioAnalysisCutoffNotDetected": "Non détecté", - "queueCancelledTitle": "Téléchargement annulé", - "queueCancelledMessage": "Ce téléchargement a été annulé. Veuillez réessayer ou le supprimer de la file d'attente.", - "trackCoverResolution": "Résolution de la couverture", - "trackCoverResolutionHint": "Définit la longueur maximale de l'image lors de l'enregistrement. L'agrandissement n'apporte pas davantage de détails à l'image.", - "trackCoverResizeFailed": "L'image de couverture n'a pas pu être redimensionnée. Veuillez essayer une autre taille ou une autre image.", - "queueDownloadNext": "Télécharger le suivant", - "queueMoveUp": "Remonter", - "queueMoveDown": "Descendre", - "editMetadataMusicBrainzButton": "Récupérer depuis MusicBrainz", - "editMetadataMusicBrainzFilled": "Mise à jour à partir de MusicBrainz", - "editMetadataMusicBrainzNothing": "Aucun résultat trouvé sur MusicBrainz", - "editMetadataMusicBrainzNeedsIsrc": "Nécessite une balise ISRC", - "nowPlayingRepeatOff": "Répétition désactivée", - "nowPlayingRepeatAll": "Tout répéter", - "nowPlayingRepeatOne": "Répéter une fois", - "queueNetworkFailedOffline": "{count} téléchargements ont échoué en mode hors ligne", - "trackAlbumType": "Release Type", - "editMetadataFieldAlbumTypeHint": "Album, single, EP, compilation...", - "editMetadataFieldExplicit": "Explicit", - "editMetadataFieldExplicitHint": "Mark this track as containing explicit content", - "metadataExplicitValue": "Explicit", - "editMetadataFieldUpc": "UPC / Barcode", - "editMetadataFieldUpcHint": "Numeric UPC, EAN, or GTIN", - "libraryFilterMetadataMissingIsrc": "ISRC manquant" + "@settingsGroupHelp": { + "description": "Settings group covering the about page and donations" + }, + "libraryFilterMetadataMissingLyrics": "Paroles manquantes", + "@libraryFilterMetadataMissingLyrics": { + "description": "Filter option for tracks without embedded or sidecar lyrics" + }, + "trackOptionCopyTrackName": "Copier le titre de la piste", + "@trackOptionCopyTrackName": { + "description": "Track menu action that copies the track title" + }, + "trackOptionCopyArtist": "Copier l'artiste", + "@trackOptionCopyArtist": { + "description": "Track menu action that copies the artist name" + }, + "trackOptionCopyTrackAndArtist": "Copier le titre et l'interprète", + "@trackOptionCopyTrackAndArtist": { + "description": "Track menu action that copies the track title and artist" + }, + "metadataCopyValue": "Copier la valeur", + "@metadataCopyValue": { + "description": "Metadata menu action that copies only the selected value" + }, + "metadataCopyField": "Copier le champ et la valeur", + "@metadataCopyField": { + "description": "Metadata menu action that copies the selected key and value" + }, + "mornyeShowTabs": "Show tabs", + "mornyeSearch": "Search", + "mornyeContinuePlaying": "Continue Playing", + "metadataCopyAll": "Copier toutes les métadonnées", + "@metadataCopyAll": { + "description": "Metadata menu action that copies every visible key and value" + }, + "optionsEmbeddedCoverSize": "Dimensions de la pochette intégrée", + "@optionsEmbeddedCoverSize": { + "description": "Metadata setting that limits downloaded artwork resolution before it is embedded" + }, + "optionsEmbeddedCoverSizeDescription": "Réduire la taille des pochettes téléchargées à distance avant de les intégrer. Les images qui respectent déjà la limite restent inchangées.", + "@optionsEmbeddedCoverSizeDescription": { + "description": "Description shown in the embedded cover size picker" + }, + "mornyeFavorite": "Favorite", + "mornyeGoToArtist": "Go to Artist", + "@mornyeFavorite": { + "description": "Compact context menu action that adds a track to Loved" + }, + "mornyeFavorited": "Favorited", + "@mornyeFavorited": { + "description": "Selected state of the compact favorite action" + }, + "autoMixDescription": "Blend songs with beat matching and pitch-preserving tempo adjustment. Uses crossfade when beats cannot be matched.", + "autoMixOn": "AutoMix on", + "autoMixOff": "AutoMix off", + "profileTitle": "Profile", + "profileSetUp": "Set up your profile", + "profileEdit": "Edit name and photo", + "backupIncludesProfile": "Includes your profile name and photo", + "profileName": "Name", + "profileNameHint": "Your name", + "profileChangePhoto": "Choose photo", + "profileRemovePhoto": "Remove photo", + "profilePhotoError": "Choose a valid image smaller than 20 MB.", + "profileSaveError": "Could not save your profile. Please try again.", + "optionsEmbeddedCoverSizeOriginal": "Résolution originale", + "@optionsEmbeddedCoverSizeOriginal": { + "description": "Option that preserves the provider artwork at its original resolution" + } } diff --git a/lib/l10n/arb/app_hi.arb b/lib/l10n/arb/app_hi.arb index 5d0903a2..1d2b74b6 100644 --- a/lib/l10n/arb/app_hi.arb +++ b/lib/l10n/arb/app_hi.arb @@ -1,4 +1,48 @@ { + "upgradeIntroWelcome": "Welcome to\nSpotiFLAC-Mobile 5.0", + "upgradeIntroThemeTitle": "Make it\nyour own.", + "upgradeIntroThemeBody": "Choose a look. Your choice applies immediately, and you can change it later in Appearance.", + "upgradeIntroThemeMaterialBody": "The familiar layout, with Material controls and your accent color.", + "upgradeIntroThemeMornyeBody": "Glass navigation, a redesigned Library and an immersive player.", + "upgradeIntroRustTitle": "A new engine.\nBuilt with Rust.", + "upgradeIntroRustBody": "In 5.0, the app’s backend has moved from Go to Rust. It is the engine working behind the screens you use every day.", + "upgradeIntroRustEngineTitle": "Working behind the scenes", + "upgradeIntroRustEngineBody": "Rust handles downloads, audio metadata, library scanning and the extension runtime on Android and iOS.", + "upgradeIntroRustMemoryTitle": "More careful with memory", + "upgradeIntroRustMemoryBody": "Reused buffers and fewer copies reduce temporary allocations when processing artwork and extension data.", + "upgradeIntroRustKeepTitle": "Keep your music", + "upgradeIntroRustKeepBody": "No need to download your collection again. Your saved music and settings stay in place, with no new setup required.", + "upgradeIntroWelcomeBody": "A quick look at what has changed, and where to find it.", + "upgradeIntroMornyeBody": "A new look for your player, lyrics and navigation.", + "upgradeIntroLibrarySummary": "Browse your music by playlist, artist or album.", + "upgradeIntroRepoSummary": "Choose your music sources and providers through extensions.", + "upgradeIntroLibraryTitle": "Get to know\nyour Library.", + "upgradeIntroLibraryBody": "In Mornye, browse by category or find your albums in Recently Added.", + "upgradeIntroDownloadsBody": "Pause and retry from Downloads at the top right. Finished music moves to Recently Added.", + "upgradeIntroSearchBody": "Search saved music here. The separate Search tab looks through your extensions.", + "upgradeIntroPlayerTitle": "Set up\nyour player.", + "upgradeIntroPlayerBody": "You can change your theme and playback options at any time. Here is where to find them.", + "upgradeIntroAppearanceBody": "Change themes in Settings → Appearance. In Mornye, scroll down for compact navigation; scroll up to expand it.", + "upgradeIntroAutoMixBody": "Match tempo and beats between tracks. Enable it in Settings → Local Library → Playback. Off by default.", + "upgradeIntroSettingsBody": "In Mornye, tap your profile on Home to open Settings and edit your name and photo.", + "upgradeIntroSkip": "Skip", + "upgradeIntroContinue": "Continue", + "upgradeIntroDone": "Start listening", + "upgradeIntroReplay": "What’s new in 5.0", + "cacheMotionArtwork": "Offline motion covers", + "cacheMotionArtworkDesc": "Album videos saved with downloads. Removing them keeps your music files and static covers.", + "nowPlayingVolume": "Volume", + "@nowPlayingVolume": { + "description": "System volume control label in the Mornye player" + }, + "appearanceStyle": "App Style", + "@appearanceStyle": { + "description": "Appearance section for choosing the app visual style" + }, + "discordRichPresence": "Discord Rich Presence", + "discordPresenceDescription": "Share the track playing in the built-in player on Discord. Requires Discord to be installed and signed in.", + "discordPresenceMissing": "Install Discord and sign in, then turn this setting off and on again.", + "discordPresenceUnavailable": "Discord Rich Presence is unavailable in this build or on this device.", "@@locale": "hi", "@@last_modified": "2026-04-28", "appName": "Dd", @@ -57,6 +101,11 @@ "@historyFilterSingles": { "description": "Filter chip - show singles only" }, + "libraryRecentlyAdded": "Recently Added", + "libraryDownloads": "Downloads", + "libraryNoActiveDownloads": "No active downloads", + "librarySearchHint": "Search your library", + "libraryEmptyCollection": "Your music will appear here", "historySearchHint": "Search history...", "@historySearchHint": { "description": "Search bar placeholder in history" @@ -237,6 +286,7 @@ "description": "Progress dialog title while batch scanning ReplayGain" }, "replayGainBatchSuccess": "ReplayGain added to {success} of {total} tracks", + "replayGainUnsupportedDecoder": "Some tracks could not be analyzed because their audio codec is not supported by the ReplayGain decoder. Their files were not changed.", "@replayGainBatchSuccess": { "description": "Snackbar after batch ReplayGain completes", "placeholders": { @@ -461,6 +511,18 @@ "@aboutSachinsenalDesc": { "description": "Credit description for sachinsenal0x64" }, + "aboutUnituneDesc": "Open-source music link resolver by Flaze, used for cross-platform fallback matching.", + "@aboutUnituneDesc": { + "description": "Credit for the UniTune resolver" + }, + "aboutMusicBrainzDesc": "Open music database maintained by MetaBrainz and its community, used for recording cross-references.", + "@aboutMusicBrainzDesc": { + "description": "Credit for the MusicBrainz database" + }, + "aboutSquiglyDesc": "Universal music link service by Liam Macmillan, used as a final cross-platform resolver fallback.", + "@aboutSquiglyDesc": { + "description": "Credit for the Squigly resolver" + }, "aboutAppDescription": "Search music metadata, manage extensions, and organize your library.", "@aboutAppDescription": { "description": "App description in header card" @@ -842,6 +904,22 @@ "@duplicatesKeepBest": { "description": "Button that deletes all but the highest-quality copy in a duplicate group" }, + "duplicatesKeepBestAll": "Keep best for all", + "@duplicatesKeepBestAll": { + "description": "Button that keeps the highest-quality copy in every duplicate group and deletes the rest" + }, + "duplicatesKeepBestAllMessage": "Keep the best copy of {groupCount} {groupCount, plural, =1{track} other{tracks}} and delete {count} lower-quality {count, plural, =1{copy} other{copies}}?\n\nThe deleted files will be removed from storage.", + "@duplicatesKeepBestAllMessage": { + "description": "Confirmation message for keeping the best copy across every duplicate group", + "placeholders": { + "count": { + "type": "int" + }, + "groupCount": { + "type": "int" + } + } + }, "duplicatesKeepBestMessage": "Delete {count} lower-quality copies of \"{trackName}\"?", "@duplicatesKeepBestMessage": { "description": "Confirmation message for the keep-best action", @@ -1564,6 +1642,22 @@ "@trackAudioQuality": { "description": "Metadata label - audio quality" }, + "trackReplayGainTrackGain": "ReplayGain Track Gain", + "@trackReplayGainTrackGain": { + "description": "Metadata label - ReplayGain track gain" + }, + "trackReplayGainTrackPeak": "ReplayGain Track Peak", + "@trackReplayGainTrackPeak": { + "description": "Metadata label - ReplayGain track peak" + }, + "trackReplayGainAlbumGain": "ReplayGain Album Gain", + "@trackReplayGainAlbumGain": { + "description": "Metadata label - ReplayGain album gain" + }, + "trackReplayGainAlbumPeak": "ReplayGain Album Peak", + "@trackReplayGainAlbumPeak": { + "description": "Metadata label - ReplayGain album peak" + }, "libraryQualityLabelFileFormat": "File format", "@libraryQualityLabelFileFormat": { "description": "Library audio quality label mode that shows the detected file format" @@ -3176,6 +3270,10 @@ "@trackReEnrichOnlineSubtitle": { "description": "Subtitle for re-enrich metadata action for local items" }, + "trackReEnrichBatchSubtitle": "Choose an online or manual update, then review every change before writing", + "@trackReEnrichBatchSubtitle": { + "description": "Subtitle for batch metadata update choices" + }, "trackReEnrichFieldCover": "Cover Art", "@trackReEnrichFieldCover": { "description": "Checkbox label for cover art field in re-enrich" @@ -3228,6 +3326,22 @@ "@trackReEnrichModeReplaceSubtitle": { "description": "Explanation for the selected-tag batch metadata mode" }, + "trackReEnrichModeManual": "Set common values", + "@trackReEnrichModeManual": { + "description": "Batch metadata mode that applies shared values to every selected track" + }, + "trackReEnrichModeManualSubtitle": "Apply the same values to every selected track", + "@trackReEnrichModeManualSubtitle": { + "description": "Explanation for the manual shared-value batch metadata mode" + }, + "trackReEnrichManualFieldsTitle": "Values to apply", + "@trackReEnrichManualFieldsTitle": { + "description": "Heading above manual batch metadata inputs" + }, + "trackReEnrichManualHint": "Leave a field empty to keep its current value. Track titles, numbers, and ISRCs stay unchanged.", + "@trackReEnrichManualHint": { + "description": "Safety explanation for manual batch metadata inputs" + }, "trackReEnrichFieldsTitle": "Tags to update", "@trackReEnrichFieldsTitle": { "description": "Heading above batch re-enrich field checkboxes" @@ -3298,7 +3412,15 @@ "@trackReEnrichSearching": { "description": "Snackbar while searching metadata from internet for local items" }, + "trackReEnrichPreparing": "Preparing metadata changes...", + "@trackReEnrichPreparing": { + "description": "Progress message while preparing manual batch metadata changes" + }, "trackReEnrichSuccess": "Metadata re-enriched successfully", + "trackReEnrichMetadataSaved": "Metadata saved", + "trackReEnrichLyricsUpdated": "Lyrics updated", + "trackReEnrichLyricsPreserved": "No new lyrics found; existing lyrics kept", + "trackReEnrichLyricsDisabled": "Lyrics not updated: lyric downloading is disabled in Settings", "@trackReEnrichSuccess": { "description": "Snackbar after successful re-enrichment" }, @@ -3889,7 +4011,7 @@ "@lyricsProviderAppleMusicDesc": { "description": "Description for Apple Music provider" }, - "lyricsProviderQqMusicDesc": "QQ Music (good for Chinese songs, via proxy)", + "lyricsProviderQqMusicDesc": "QQ Music (good for Chinese songs, direct API)", "@lyricsProviderQqMusicDesc": { "description": "Description for QQ Music provider" }, @@ -4001,6 +4123,14 @@ "@backupContentsTitle": { "description": "Header above the list summarizing what the backup contains" }, + "backupSettingsOnly": "Settings only", + "backupSelectHistory": "Download history", + "backupSelectCollections": "Library collections", + "backupSelectCollectionsDescription": "Liked tracks, wishlist, favorite artists, playlists and playlist covers.", + "backupSelectExtensions": "Extensions and their settings", + "backupSelectedExportDescription": "Save the selected categories to a backup file. Audio files are not included.", + "backupSelectAtLeastOne": "Select at least one category to create a backup.", + "backupSelectedRestoreMessage": "Only the categories listed below will be restored. Categories not included in this backup will stay unchanged. Restoring can replace existing data and cannot be undone.", "backupContentsSettings": "App settings", "@backupContentsSettings": { "description": "Backup contents row label for settings" @@ -4164,6 +4294,10 @@ "@downloadLocationSubtitle": { "description": "Subtitle shown in the download location picker sheet" }, + "storageAutomaticFolder": "Automatic folder", + "storageAutomaticDownloadFolder": "Uses Download/SpotiFLAC when writable, otherwise app storage", + "storageSafRecommended": "Choose folder (Recommended)", + "storageDownloadFolderHint": "In the Android folder picker, open Download and select SpotiFLAC. If it does not exist, create it using New folder, then tap Use this folder to grant access.", "storageModeAppFolder": "App Folder (Recommended)", "@storageModeAppFolder": { "description": "Storage mode option - app-managed folder" @@ -4732,6 +4866,131 @@ "@audioAnalysisRescan": { "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" }, + "downloadRedownloadFakeHiRes": "Re-download fake Hi-Res", + "@downloadRedownloadFakeHiRes": { + "description": "Setting title: automatically replace downloads that measure as fake Hi-Res" + }, + "downloadRedownloadFakeHiResSubtitle": "Off by default. Check Hi-Res downloads and replace only when every audio sample is preserved. Keep the original if verification or processing fails", + "@downloadRedownloadFakeHiResSubtitle": { + "description": "Setting subtitle for the fake Hi-Res re-download toggle" + }, + "hiResCheckVerdictFakeCertain": "Fake Hi-Res", + "@hiResCheckVerdictFakeCertain": { + "description": "Verdict: an exact fingerprint (padded bits or upsampling pattern) proves the file is not real Hi-Res" + }, + "hiResCheckVerdictFakeSuspect": "Possibly a filtered master", + "@hiResCheckVerdictFakeSuspect": { + "description": "Verdict: fails the cutoff test but may be a genuine master low-pass filtered in mastering" + }, + "hiResCheckReasonSampleHold": "Every sample is repeated: upsampled by duplication", + "@hiResCheckReasonSampleHold": { + "description": "Reason: sample-and-hold upsampling detected" + }, + "hiResCheckReasonInterpolation": "In-between samples are linearly interpolated", + "@hiResCheckReasonInterpolation": { + "description": "Reason: linear-interpolation upsampling detected" + }, + "hiResCheckReasonImaging": "Content above 22 kHz mirrors the audible band", + "@hiResCheckReasonImaging": { + "description": "Reason: spectral imaging from upsampling detected" + }, + "hiResCheckMusicContent": "Musical content", + "@hiResCheckMusicContent": { + "description": "Label for the highest frequency that still moves with the music" + }, + "hiResCheckUltrasonicNoise": "Above {cutoff} only steady noise (typical of DSD or analog tape transfers): a {rate} file would hold all the music", + "@hiResCheckUltrasonicNoise": { + "description": "Shown when the ultrasonic content of a Hi-Res file is noise rather than music", + "placeholders": { + "cutoff": { + "type": "String" + }, + "rate": { + "type": "String" + } + } + }, + "hiResCheckTitle": "Hi-Res Authenticity", + "@hiResCheckTitle": { + "description": "Title of the fake Hi-Res check card" + }, + "hiResCheckDescription": "Detect upsampled or bit-padded fake Hi-Res files", + "@hiResCheckDescription": { + "description": "Explains what the Hi-Res authenticity check does" + }, + "hiResCheckRun": "Check", + "@hiResCheckRun": { + "description": "Button that starts the Hi-Res authenticity check" + }, + "hiResCheckChecking": "Checking Hi-Res authenticity...", + "@hiResCheckChecking": { + "description": "Loading text while the Hi-Res check runs" + }, + "hiResCheckVerdictFake": "Likely fake Hi-Res", + "@hiResCheckVerdictFake": { + "description": "Verdict: the file claims Hi-Res but does not measure as it" + }, + "hiResCheckVerdictGenuine": "Measures as genuine Hi-Res", + "@hiResCheckVerdictGenuine": { + "description": "Verdict: no upsampling or padded bit depth found" + }, + "hiResCheckVerdictStandard": "Standard definition, nothing to flag", + "@hiResCheckVerdictStandard": { + "description": "Verdict: neither sample rate nor bit depth claims Hi-Res" + }, + "hiResCheckVerdictInconclusive": "Inconclusive: the analyzed segment is too quiet or short", + "@hiResCheckVerdictInconclusive": { + "description": "Verdict: analysis could not reach a reliable conclusion" + }, + "hiResCheckUnsupported": "Only FLAC and WAV files can be checked", + "@hiResCheckUnsupported": { + "description": "Shown when the file format cannot be decoded by the Hi-Res check" + }, + "hiResCheckCutoff": "Content cutoff", + "@hiResCheckCutoff": { + "description": "Label for the highest frequency with real content" + }, + "hiResCheckBitsInUse": "Bits in use", + "@hiResCheckBitsInUse": { + "description": "Label for effective vs declared bit depth" + }, + "hiResCheckDisclaimer": "The spectrum stops early, but nothing proves it was upsampled: it may be a genuine master low-pass filtered in mastering. It is not replaced automatically.", + "@hiResCheckDisclaimer": { + "description": "Caveat shown under a fake Hi-Res verdict" + }, + "hiResCheckFailed": "Hi-Res check failed: {error}", + "@hiResCheckFailed": { + "description": "Error shown when the Hi-Res check fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "hiResCheckReasonRate": "Declares {sampleRate} but content stops at ~{cutoff}", + "@hiResCheckReasonRate": { + "description": "Reason for a fake verdict caused by upsampling", + "placeholders": { + "sampleRate": { + "type": "String" + }, + "cutoff": { + "type": "String" + } + } + }, + "hiResCheckReasonDepth": "Declares {declared}-bit but only {effective} bits carry data", + "@hiResCheckReasonDepth": { + "description": "Reason for a fake verdict caused by padded bit depth", + "placeholders": { + "declared": { + "type": "int" + }, + "effective": { + "type": "int" + } + } + }, "audioAnalysisRescanning": "Re-analyzing audio...", "@audioAnalysisRescanning": { "description": "Loading text while audio is being re-analyzed after an explicit refresh" @@ -6047,6 +6306,45 @@ "@nowPlayingDetails": { "description": "Menu item and section title for track metadata details" }, + "nowPlayingSleepTimer": "Sleep timer", + "@nowPlayingSleepTimer": { + "description": "Menu item and sheet title for the playback sleep timer" + }, + "nowPlayingSleepTimerActive": "Ends at {time}", + "@nowPlayingSleepTimerActive": { + "description": "Active sleep timer deadline shown in the player menu", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "nowPlayingSleepTimerMinutes": "{minutes, plural, =1{1 minute} other{{minutes} minutes}}", + "@nowPlayingSleepTimerMinutes": { + "description": "Duration choice for the playback sleep timer", + "placeholders": { + "minutes": { + "type": "int" + } + } + }, + "nowPlayingSleepTimerOff": "Turn off sleep timer", + "@nowPlayingSleepTimerOff": { + "description": "Action to cancel the active playback sleep timer" + }, + "nowPlayingSleepTimerSet": "Sleep timer set for {duration}", + "@nowPlayingSleepTimerSet": { + "description": "Confirmation after setting the playback sleep timer", + "placeholders": { + "duration": { + "type": "String" + } + } + }, + "nowPlayingSleepTimerCancelled": "Sleep timer turned off", + "@nowPlayingSleepTimerCancelled": { + "description": "Confirmation after cancelling the playback sleep timer" + }, "nowPlayingOpenInExternalPlayer": "Open in external player", "@nowPlayingOpenInExternalPlayer": { "description": "Menu item to open the current track in an external player" @@ -6389,6 +6687,15 @@ "@extensionVerificationBrowserInApp": { "description": "Chip label for in-app browser verification mode" }, + "extensionVerificationUnavailable": "No verification page is available for {extension}. Retry the download to request a new challenge.", + "@extensionVerificationUnavailable": { + "description": "Shown when the app cannot retrieve a pending verification challenge", + "placeholders": { + "extension": { + "type": "String" + } + } + }, "extensionVerificationHelpTitleManual": "Open verification manually", "@extensionVerificationHelpTitleManual": { "description": "Dialog title when automatic browser launch for verification fails" @@ -6478,6 +6785,9 @@ "@metadataCopyField": { "description": "Metadata menu action that copies the selected key and value" }, + "mornyeShowTabs": "Show tabs", + "mornyeSearch": "Search", + "mornyeContinuePlaying": "Continue Playing", "metadataCopyAll": "Copy all metadata", "@metadataCopyAll": { "description": "Metadata menu action that copies every visible key and value" @@ -6490,6 +6800,28 @@ "@optionsEmbeddedCoverSizeDescription": { "description": "Description shown in the embedded cover size picker" }, + "mornyeFavorite": "Favorite", + "mornyeGoToArtist": "Go to Artist", + "@mornyeFavorite": { + "description": "Compact context menu action that adds a track to Loved" + }, + "mornyeFavorited": "Favorited", + "@mornyeFavorited": { + "description": "Selected state of the compact favorite action" + }, + "autoMixDescription": "Blend songs with beat matching and pitch-preserving tempo adjustment. Uses crossfade when beats cannot be matched.", + "autoMixOn": "AutoMix on", + "autoMixOff": "AutoMix off", + "profileTitle": "Profile", + "profileSetUp": "Set up your profile", + "profileEdit": "Edit name and photo", + "backupIncludesProfile": "Includes your profile name and photo", + "profileName": "Name", + "profileNameHint": "Your name", + "profileChangePhoto": "Choose photo", + "profileRemovePhoto": "Remove photo", + "profilePhotoError": "Choose a valid image smaller than 20 MB.", + "profileSaveError": "Could not save your profile. Please try again.", "optionsEmbeddedCoverSizeOriginal": "Original resolution", "@optionsEmbeddedCoverSizeOriginal": { "description": "Option that preserves the provider artwork at its original resolution" diff --git a/lib/l10n/arb/app_id.arb b/lib/l10n/arb/app_id.arb index 97d26aac..f8dd8334 100644 --- a/lib/l10n/arb/app_id.arb +++ b/lib/l10n/arb/app_id.arb @@ -45,78 +45,234 @@ "discordPresenceUnavailable": "Discord Rich Presence tidak tersedia pada build atau perangkat ini.", "@@locale": "id", "@@last_modified": "2026-04-28", - "libraryEnableLocalLibrarySubtitle": "Scan and track your existing music", - "@libraryEnableLocalLibrarySubtitle": { - "description": "Subtitle for enable toggle" + "appName": "SpotiFLAC Mobile", + "@appName": { + "description": "App name - DO NOT TRANSLATE" }, - "@audioAnalysisCodec": { - "description": "Audio codec metric label" + "navHome": "Beranda", + "@navHome": { + "description": "Bottom navigation - Home tab" }, - "extensionUtilityFunctions": "Utility Functions", - "@extensionUtilityFunctions": { - "description": "Capability label for utility-only extensions" + "navLibrary": "Koleksi", + "@navLibrary": { + "description": "Bottom navigation - Library tab" }, - "logClearLogsMessage": "Apakah Anda yakin ingin menghapus semua log?", - "@logClearLogsMessage": { - "description": "Clear logs confirmation message" + "navSettings": "Setelan", + "@navSettings": { + "description": "Bottom navigation - Settings tab" }, - "@storeClearFilters": { - "description": "Button to clear all filters" + "navStore": "Repo", + "@navStore": { + "description": "Bottom navigation - Extension repo tab" }, - "cacheCleanupUnused": "Cleanup unused data", - "@cacheCleanupUnused": { - "description": "Action title for cleaning unused entries" + "homeTitle": "Beranda", + "@homeTitle": { + "description": "Home screen title" }, - "trackConvertDitherNone": "None", - "@trackConvertDitherNone": { - "description": "Lossless conversion dither option with no dithering applied" + "homeSubtitle": "Tempel URL yang didukung atau cari berdasarkan nama", + "@homeSubtitle": { + "description": "Subtitle shown below search box" }, - "libraryTracksUnit": "{count, plural, =1{track} other{tracks}}", - "@libraryTracksUnit": { - "description": "Unit label for tracks count (without the number itself)", + "homeEmptyTitle": "Belum ada provider penelusuran", + "@homeEmptyTitle": { + "description": "Title shown on home when no providers are available yet" + }, + "homeEmptySubtitle": "Instal ekstensi untuk melanjutkan.", + "@homeEmptySubtitle": { + "description": "Subtitle shown on home when no providers are available yet" + }, + "homeSupports": "Mendukung: URL Track, Album, Playlist, Artis", + "@homeSupports": { + "description": "Info text about supported URL types" + }, + "homeRecent": "Terbaru", + "@homeRecent": { + "description": "Section header for recent searches" + }, + "historyFilterAll": "Semua", + "@historyFilterAll": { + "description": "Filter chip - show all items" + }, + "historyFilterAlbums": "Album", + "@historyFilterAlbums": { + "description": "Filter chip - show albums only" + }, + "historyFilterSingles": "Single", + "@historyFilterSingles": { + "description": "Filter chip - show singles only" + }, + "libraryRecentlyAdded": "Baru Ditambahkan", + "libraryDownloads": "Unduhan", + "libraryNoActiveDownloads": "Tidak ada unduhan aktif", + "librarySearchHint": "Cari di koleksi musik", + "libraryEmptyCollection": "Musikmu akan muncul di sini", + "historySearchHint": "Telusuri histori...", + "@historySearchHint": { + "description": "Search bar placeholder in history" + }, + "settingsTitle": "Setelan", + "@settingsTitle": { + "description": "Settings screen title" + }, + "settingsDownload": "Download", + "@settingsDownload": { + "description": "Settings section - download options" + }, + "settingsAppearance": "Tampilan", + "@settingsAppearance": { + "description": "Settings section - visual customization" + }, + "settingsExtensions": "Ekstensi", + "@settingsExtensions": { + "description": "Settings section - extension management" + }, + "settingsAbout": "Tentang", + "@settingsAbout": { + "description": "Settings section - app info" + }, + "downloadTitle": "Download", + "@downloadTitle": { + "description": "Download settings page title" + }, + "downloadAskQualitySubtitle": "Tampilkan pemilih kualitas setiap mendownload", + "@downloadAskQualitySubtitle": { + "description": "Subtitle for ask quality toggle" + }, + "downloadFilenameFormat": "Format Nama File", + "@downloadFilenameFormat": { + "description": "Setting for output filename pattern" + }, + "downloadSingleFilenameFormat": "Format Nama FileTunggal", + "@downloadSingleFilenameFormat": { + "description": "Setting for output filename pattern for singles/EPs" + }, + "downloadSingleFilenameFormatDescription": "Pola nama file untuk single dan EP. Menggunakan tag yang sama dengan format album.", + "@downloadSingleFilenameFormatDescription": { + "description": "Subtitle description for single filename format setting" + }, + "downloadFolderOrganization": "Organisasi Folder", + "@downloadFolderOrganization": { + "description": "Title of the folder organization picker bottom sheet" + }, + "appearanceTitle": "Tampilan", + "@appearanceTitle": { + "description": "Appearance settings page title" + }, + "appearanceThemeSystem": "Sistem", + "@appearanceThemeSystem": { + "description": "Follow system theme" + }, + "appearanceThemeLight": "Terang", + "@appearanceThemeLight": { + "description": "Light theme" + }, + "appearanceThemeDark": "Gelap", + "@appearanceThemeDark": { + "description": "Dark theme" + }, + "appearanceDynamicColor": "Warna Dinamis", + "@appearanceDynamicColor": { + "description": "Material You dynamic colors" + }, + "appearanceDynamicColorSubtitle": "Gunakan warna dari wallpaper Anda", + "@appearanceDynamicColorSubtitle": { + "description": "Subtitle for dynamic color" + }, + "appearanceHistoryView": "Tampilan Histori", + "@appearanceHistoryView": { + "description": "Layout style for history" + }, + "appearanceHistoryViewList": "Daftar", + "@appearanceHistoryViewList": { + "description": "List layout option" + }, + "appearanceHistoryViewGrid": "Kisi", + "@appearanceHistoryViewGrid": { + "description": "Grid layout option" + }, + "optionsPrimaryProvider": "Provider Utama", + "@optionsPrimaryProvider": { + "description": "Main search provider setting" + }, + "optionsPrimaryProviderSubtitle": "Layanan yang digunakan untuk menelusuri lagu atau album", + "@optionsPrimaryProviderSubtitle": { + "description": "Subtitle for primary provider" + }, + "optionsUsingExtension": "Menggunakan ekstensi: {extensionName}", + "@optionsUsingExtension": { + "description": "Shows active extension name", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "optionsDefaultSearchTab": "Tab Penelusuran Default", + "@optionsDefaultSearchTab": { + "description": "Title for the preferred default search tab setting" + }, + "optionsDefaultSearchTabSubtitle": "Pilih tab mana yang terbuka terlebih dahulu untuk hasil penelusuran baru.", + "@optionsDefaultSearchTabSubtitle": { + "description": "Subtitle for the preferred default search tab setting" + }, + "optionsAutoFallback": "Layanan Cadangan", + "@optionsAutoFallback": { + "description": "Auto-retry with other services" + }, + "optionsAutoFallbackSubtitle": "Gunakan layanan lain jika download gagal", + "@optionsAutoFallbackSubtitle": { + "description": "Subtitle for auto fallback" + }, + "optionsEmbedLyrics": "Lirik Tersemat", + "@optionsEmbedLyrics": { + "description": "Embed lyrics in audio files" + }, + "optionsEmbedLyricsSubtitle": "Simpan lirik berjalan dalam file lagu yang terdownload", + "@optionsEmbedLyricsSubtitle": { + "description": "Subtitle for embed lyrics" + }, + "optionsReplayGain": "ReplayGain", + "@optionsReplayGain": { + "description": "Title for ReplayGain setting toggle" + }, + "optionsReplayGainSubtitleOn": "Pindai kenyaringan dan sematkan tag ReplayGain (EBU R128)", + "@optionsReplayGainSubtitleOn": { + "description": "Subtitle when ReplayGain is enabled" + }, + "optionsReplayGainSubtitleOff": "Mati: tidak ada tag normalisasi kenyaringan", + "@optionsReplayGainSubtitleOff": { + "description": "Subtitle when ReplayGain is disabled" + }, + "trackReplayGain": "Pindai ulang ReplayGain", + "@trackReplayGain": { + "description": "Three-dot menu option to scan loudness and write ReplayGain tags" + }, + "trackReplayGainScanning": "Menganalisis kenyaringan...", + "@trackReplayGainScanning": { + "description": "Snackbar/progress message while scanning ReplayGain for a single track" + }, + "trackReplayGainSuccess": "Tag ReplayGain ditambahkan", + "@trackReplayGainSuccess": { + "description": "Snackbar message after ReplayGain tags written for a single track" + }, + "trackReplayGainFailed": "Gagal menambahkan tag ReplayGain", + "@trackReplayGainFailed": { + "description": "Snackbar message when ReplayGain scan/write fails" + }, + "selectionReplayGainCount": "ReplayGain ({count})", + "@selectionReplayGainCount": { + "description": "Batch selection action button label for ReplayGain", "placeholders": { "count": { "type": "int" } } }, - "folderOrganizationNone": "Tidak ada", - "@folderOrganizationNone": { - "description": "Folder option - flat structure" - }, - "@storeRepoUrlHint": { - "description": "Hint/placeholder for the repository URL input field" - }, - "@trackConvertConfirmTitle": { - "description": "Confirmation dialog title" - }, - "@extensionPatternsCount": { - "description": "URL patterns count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "audioAnalysisContainer": "Container", - "@audioAnalysisContainer": { - "description": "Audio container metric label" - }, - "libraryAutoScanOff": "Off", - "@libraryAutoScanOff": { - "description": "Auto scan disabled" - }, - "shareSheetLinkCopied": "{service} link copied", - "@shareSheetLinkCopied": { - "description": "Snackbar after copying a cross-service link", - "placeholders": { - "service": {} - } - }, - "providerPriorityFallbackExtensionsDescription": "Pilih ekstensi unduhan terpasang mana yang dapat digunakan selama fallback otomatis.", - "@providerPriorityFallbackExtensionsDescription": { - "description": "Section description for extension fallback selection" + "replayGainBatchConfirmTitle": "Tambah ReplayGain", + "@replayGainBatchConfirmTitle": { + "description": "Title of the batch ReplayGain confirmation dialog" }, + "replayGainBatchConfirmMessage": "Analisis kenyaringan dan tulis tag ReplayGain ke {count} trek?", "@replayGainBatchConfirmMessage": { "description": "Message of the batch ReplayGain confirmation dialog", "placeholders": { @@ -125,73 +281,9 @@ } } }, - "@extensionsHomeFeedUse": { - "description": "Extensions page - subtitle for a specific extension home feed option", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "selectionShareCount": "Share {count} {count, plural, =1{track} other{tracks}}", - "@selectionShareCount": { - "description": "Share button text with count in selection mode", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@storeExtensionsCount": { - "description": "Store extension result count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@logSearchHint": { - "description": "Log search placeholder" - }, - "@audioAnalysisSamples": { - "description": "Total samples metric label" - }, - "trackCoverReplace": "Replace Cover", - "@trackCoverReplace": { - "description": "Button label for replacing selected cover art" - }, - "@discographyAddedToQueue": { - "description": "Snackbar - tracks added from discography", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadAppleElrcWordSyncEnabled": "Raw word-by-word timestamps preserved", - "@downloadAppleElrcWordSyncEnabled": { - "description": "Subtitle when Apple Music eLRC word sync is enabled" - }, - "@nowPlayingDetails": { - "description": "Menu item and section title for track metadata details" - }, - "@trackGenre": { - "description": "Metadata label - music genre" - }, - "recentTypeSong": "Lagu", - "@recentTypeSong": { - "description": "Recent access item type - song/track" - }, - "logShareLogs": "Bagikan log", - "@logShareLogs": { - "description": "Share button tooltip" - }, - "@storeFilterLyrics": { - "description": "Repo filter - lyrics providers" - }, - "extensionsInstallButton": "Pasang Ekstensi", - "@extensionsInstallButton": { - "description": "Button to install extension from file" + "replayGainBatchAnalyzing": "Menganalisis ReplayGain...", + "@replayGainBatchAnalyzing": { + "description": "Progress dialog title while batch scanning ReplayGain" }, "replayGainBatchSuccess": "ReplayGain ditambahkan ke {success} dari {total} trek", "replayGainUnsupportedDecoder": "Sebagian trek tidak dapat dianalisis karena codec audionya belum didukung decoder ReplayGain. File trek tersebut tidak diubah.", @@ -206,550 +298,538 @@ } } }, - "nowPlayingMinimize": "Minimize", - "@nowPlayingMinimize": { - "description": "Tooltip for minimizing the now playing screen" + "optionsArtistTagMode": "Mode Tag Artis", + "@optionsArtistTagMode": { + "description": "Setting title for how artist metadata is written into files" }, - "logIssueNetworkErrorSuggestion": "Check your internet connection", - "@logIssueNetworkErrorSuggestion": { - "description": "Diagnostic badge suggestion for generic network errors" + "optionsArtistTagModeDescription": "Pilih cara mencantumkan artis di tag tersemat.", + "@optionsArtistTagModeDescription": { + "description": "Bottom-sheet description for artist tag mode setting" }, - "extensionsNoExtensions": "Tidak ada ekstensi terpasang", - "@extensionsNoExtensions": { - "description": "Empty state - no extensions" + "optionsArtistTagModeJoined": "Gabungkan semuanya", + "@optionsArtistTagModeJoined": { + "description": "Artist tag mode option that joins multiple artists into one value" }, - "@cacheRefresh": { - "description": "Tooltip for refresh button on cache management page" + "optionsArtistTagModeJoinedSubtitle": "Tulis semua ARTIS dalam satu tag \"Artis A, Artis B\", mendukung lebih banyak pemutar,", + "@optionsArtistTagModeJoinedSubtitle": { + "description": "Subtitle for joined artist tag mode" }, - "@snackbarHistoryCleared": { - "description": "Snackbar - history deleted" + "optionsArtistTagModeSplitVorbis": "Pisahkan tag (hanya FLAC/Opus)", + "@optionsArtistTagModeSplitVorbis": { + "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" }, - "cueSplitFailed": "CUE split failed", - "@cueSplitFailed": { - "description": "Snackbar when CUE split fails" + "optionsArtistTagModeSplitVorbisSubtitle": "Pisahkan tag hanya untuk satu artis untuk file FLAC/Opus; MP3 dan M4A tetap tergabung.", + "@optionsArtistTagModeSplitVorbisSubtitle": { + "description": "Subtitle for split Vorbis artist tag mode" }, - "trackConvertLosslessSuffix": "Lossless", - "@trackConvertLosslessSuffix": { - "description": "Suffix used in converted lossless quality labels" - }, - "homeSubtitle": "Tempel URL yang didukung atau cari berdasarkan nama", - "@homeSubtitle": { - "description": "Subtitle shown below search box" - }, - "selectionBatchConvertConfirmMessageLossless": "Convert {count} {count, plural, =1{track} other{tracks}} to {format}? (Lossless — no quality loss)\n\nOriginal files will be deleted after conversion.", - "@selectionBatchConvertConfirmMessageLossless": { - "description": "Confirmation dialog message for lossless batch conversion", - "placeholders": { - "count": { - "type": "int" - }, - "format": { - "type": "String" - } - } - }, - "@extensionVerificationHelpMessageManual": { - "description": "Dialog message when automatic browser launch for verification fails" - }, - "queueRateLimitMessage": "This track may still be available. Wait a few minutes, reduce parallel downloads, then retry.", - "@queueRateLimitMessage": { - "description": "Explanation shown on a failed queue item when the download service rate limits requests" - }, - "searchSortDateOldest": "Tanggal rilis (Terlama)", - "@searchSortDateOldest": { - "description": "Sort option - oldest release first" - }, - "nowPlayingShuffleOn": "Shuffle on", - "@nowPlayingShuffleOn": { - "description": "Tooltip when shuffle mode is enabled" - }, - "sectionColor": "Warna", - "@sectionColor": { - "description": "Settings section header" - }, - "@providerPriorityFallbackExtensionsHint": { - "description": "Hint below the extension fallback selection list" - }, - "cacheCoverImage": "Cover image cache", - "@cacheCoverImage": { - "description": "Cache item title for persistent cover images" - }, - "@navSettings": { - "description": "Bottom navigation - Settings tab" - }, - "@trackCoverReplaceNotice": { - "description": "Notice shown when a new cover has been selected but not saved yet" - }, - "cueSplitConfirmTitle": "Split CUE Album", - "@cueSplitConfirmTitle": { - "description": "CUE split confirmation dialog title" - }, - "@trackDeleteConfirmMessage": { - "description": "Delete confirmation message" - }, - "cacheClearSuccess": "Cleared: {target}", - "@cacheClearSuccess": { - "description": "Snackbar after clearing selected cache", - "placeholders": { - "target": { - "type": "String" - } - } - }, - "editMetadataFieldCover": "Cover Art", - "@editMetadataFieldCover": { - "description": "Chip label for cover art field in auto-fill selector" - }, - "snackbarSelectExtFile": "Harap pilih file .spotiflac-ext", - "@snackbarSelectExtFile": { - "description": "Snackbar - wrong file type selected" - }, - "libraryFilterFormat": "Format", - "@libraryFilterFormat": { - "description": "Filter section - file format" - }, - "@downloadLossyAac": { - "description": "Lossy format option - AAC in M4A container at 320kbps" - }, - "@setupNext": { - "description": "Next button text" - }, - "@releaseTypeSingle": { - "description": "Badge label for single releases" - }, - "@optionsDefaultSearchTab": { - "description": "Title for the preferred default search tab setting" - }, - "trackConvertLosslessOutputWithCap": "Lossless output with {quality} cap", - "@trackConvertLosslessOutputWithCap": { - "description": "Hint shown when lossless conversion will cap bit depth or sample rate", - "placeholders": { - "quality": { - "type": "String" - } - } - }, - "bulkDownloadSelectPlaylists": "Select playlists to download", - "@bulkDownloadSelectPlaylists": { - "description": "Button label when no playlists are selected for download" - }, - "artistOptionAddToFavorites": "Add to Favorite Artists", - "@artistOptionAddToFavorites": { - "description": "Action label - add artist to favorite artists" - }, - "@timeJustNow": { - "description": "Relative time - less than a minute ago" - }, - "downloadLossyOpus256": "Opus 256kbps", - "@downloadLossyOpus256": { - "description": "Lossy format option - Opus 256kbps" - }, - "discographySinglesOnlySubtitle": "​{count} lagu dari {albumCount} single", - "@discographySinglesOnlySubtitle": { - "description": "Subtitle showing singles tracks count", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } - }, - "optionsExtensionStore": "Repositori Ekstensi", + "optionsExtensionStore": "Repo Ekstensi", "@optionsExtensionStore": { "description": "Show/hide repo tab" }, - "libraryDownloadsHistoryExcluded": "{count} from Downloads history (excluded from list)", - "@libraryDownloadsHistoryExcluded": { - "description": "Library count note for downloaded history items excluded from the local list", - "placeholders": { - "count": { - "type": "int" - } - } + "optionsExtensionStoreSubtitle": "Tampilkan tab Repo di navigasi", + "@optionsExtensionStoreSubtitle": { + "description": "Subtitle for extension repo toggle" }, - "@errorUrlFetchFailed": { - "description": "Error message - generic URL fetch failure" + "optionsCheckUpdates": "Periksa Update", + "@optionsCheckUpdates": { + "description": "Auto update check toggle" }, - "@trackOptionAddToWishlist": { - "description": "Bottom sheet action label - add track to wishlist" + "optionsCheckUpdatesSubtitle": "Beritahu saat versi baru tersedia", + "@optionsCheckUpdatesSubtitle": { + "description": "Subtitle for update check" }, - "discographySinglesOnly": "Hanya Single & EP", - "@discographySinglesOnly": { - "description": "Option - download only singles" + "optionsUpdateChannel": "Channel Update", + "@optionsUpdateChannel": { + "description": "Stable vs preview releases" }, - "@downloadSongLinkRegionDesc": { - "description": "Description in SongLink region picker" + "optionsUpdateChannelStable": "Versi Stabil", + "@optionsUpdateChannelStable": { + "description": "Only stable updates" }, - "notifEmbeddingMetadata": "Embedding metadata...", - "@notifEmbeddingMetadata": { - "description": "Notification body while embedding metadata into a downloaded track" + "optionsUpdateChannelPreview": "Versi Preview", + "@optionsUpdateChannelPreview": { + "description": "Include beta/preview updates" }, - "@settingsLocalLibrarySubtitle": { - "description": "Subtitle for local library settings" + "optionsUpdateChannelWarning": "Mungkin ada bug atau fitur belum selesai di versi Preview", + "@optionsUpdateChannelWarning": { + "description": "Warning about preview channel" }, - "@downloadLocationSubtitle": { - "description": "Subtitle shown in the download location picker sheet" + "optionsClearHistory": "Hapus Histori Download", + "@optionsClearHistory": { + "description": "Delete all download history" }, - "trackConvertOriginalQuality": "Original quality", - "@trackConvertOriginalQuality": { - "description": "Label when no bit depth or sample rate cap is applied during lossless conversion" + "optionsClearHistorySubtitle": "Hapus semua lagu dari histori", + "@optionsClearHistorySubtitle": { + "description": "Subtitle for clear history" }, - "nowPlayingTabLyrics": "Lyrics", - "@nowPlayingTabLyrics": { - "description": "Tab label for the lyrics view" + "optionsDetailedLogging": "Logging Mendetail", + "@optionsDetailedLogging": { + "description": "Enable verbose logs for debugging" }, - "selectionConvertCount": "Convert {count} {count, plural, =1{track} other{tracks}}", - "@selectionConvertCount": { - "description": "Convert button text with count in selection mode", - "placeholders": { - "count": { - "type": "int" - } - } + "optionsDetailedLoggingOn": "Log mendetail sedang direkam", + "@optionsDetailedLoggingOn": { + "description": "Status when logging enabled" }, - "@extensionsInstalledSection": { - "description": "Section header - installed extensions" + "optionsDetailedLoggingOff": "Hidupkan untuk laporan bug", + "@optionsDetailedLoggingOff": { + "description": "Status when logging disabled" }, - "@downloadNetworkCompatibilityModeDisabled": { - "description": "Subtitle when network compatibility mode is off" + "extensionsTitle": "Ekstensi", + "@extensionsTitle": { + "description": "Extensions page title" }, - "nowPlayingShuffleLibrary": "Shuffle library", - "@nowPlayingShuffleLibrary": { - "description": "Button label to shuffle and play the entire local library" + "extensionsDisabled": "Mati", + "@extensionsDisabled": { + "description": "Extension status - inactive" }, - "trackReEnrichFieldCover": "Cover Art", - "@trackReEnrichFieldCover": { - "description": "Checkbox label for cover art field in re-enrich" - }, - "tutorialExtensionsTip3": "Connect accounts when required and keep extensions up to date", - "@tutorialExtensionsTip3": { - "description": "Tutorial extensions tip 3" - }, - "@cacheCleanupUnusedDesc": { - "description": "Description of what cleanup unused data does" - }, - "a11yOpenAlbum": "Open album {albumName}", - "@a11yOpenAlbum": { - "description": "Accessibility label for opening an album", - "placeholders": { - "albumName": { - "type": "String" - } - } - }, - "@settingsLyrics": { - "description": "Settings menu item - lyrics settings" - }, - "nowPlayingQueueEmpty": "Queue is empty", - "@nowPlayingQueueEmpty": { - "description": "Empty state when the playback queue has no items" - }, - "@settingsDownload": { - "description": "Settings section - download options" - }, - "notifTracksDownloadedSuccess": "{count, plural, =1{1 track downloaded successfully} other{{count} tracks downloaded successfully}}", - "@notifTracksDownloadedSuccess": { - "description": "Notification body for queue complete - how many tracks were downloaded", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storeCategoryDownload": "Download", - "@storeCategoryDownload": { - "description": "Store extension category - download" - }, - "aboutTelegramChannel": "Saluran Telegram", - "@aboutTelegramChannel": { - "description": "Link to Telegram channel" - }, - "@downloadedAlbumDiscHeader": { - "description": "Header for disc separator in multi-disc albums", - "placeholders": { - "discNumber": { - "type": "int", - "example": "1" - } - } - }, - "@recentEmpty": { - "description": "Empty state text for recent access list" - }, - "@backupRestoreConfirmMessage": { - "description": "Confirmation dialog message before restoring a backup" - }, - "@shareSheetCopyLink": { - "description": "Tooltip for copying a cross-service link" - }, - "regionCountryID": "Indonesia", - "@regionCountryID": { - "description": "Country name for SongLink region picker" - }, - "@libraryInLibrary": { - "description": "Badge shown on tracks that exist in local library" - }, - "extensionPostProcessingHooks": "Hook Pasca-Pemrosesan", - "@extensionPostProcessingHooks": { - "description": "Capability - post-processing" - }, - "@setupGrantPermission": { - "description": "Button to request permission" - }, - "storeFilterDownload": "Unduhan", - "@storeFilterDownload": { - "description": "Repo filter - download providers" - }, - "@collectionAddToPlaylist": { - "description": "Action to add a track to user playlist" - }, - "@discographyFailedToFetch": { - "description": "Error - some albums failed to load" - }, - "@updateWhatsNew": { - "description": "Changelog section title" - }, - "@setupLanguageDescription": { - "description": "Description for the language selection step in setup" - }, - "dialogDeleteSelectedTitle": "Hapus yang Dipilih", - "@dialogDeleteSelectedTitle": { - "description": "Dialog title - delete selected items" - }, - "trackCoverPick": "Pick Cover", - "@trackCoverPick": { - "description": "Button label for selecting cover art" - }, - "@collectionCreatePlaylist": { - "description": "Action to create a new playlist" - }, - "selectionBatchConvertSuccess": "Converted {success} of {total} tracks to {format}", - "@selectionBatchConvertSuccess": { - "description": "Snackbar after batch conversion completes", - "placeholders": { - "success": { - "type": "int" - }, - "total": { - "type": "int" - }, - "format": { - "type": "String" - } - } - }, - "qualityHiResFlacMax": "Hi-Res FLAC Max", - "@qualityHiResFlacMax": { - "description": "Quality option - maximum resolution FLAC" - }, - "audioAnalysisStereo": "Stereo", - "@audioAnalysisStereo": { - "description": "Audio channel layout label - stereo" - }, - "backupExportButton": "Create backup file", - "@backupExportButton": { - "description": "Button to create and share a backup file" - }, - "settingsApp": "App", - "@settingsApp": { - "description": "Settings menu item - app settings" - }, - "clickableInformationUnavailable": "{type} information not available", - "@clickableInformationUnavailable": { - "description": "Snackbar shown when clickable metadata cannot open a destination", - "placeholders": { - "type": { - "type": "String" - } - } - }, - "@logFilterLevel": { - "description": "Filter by log level" - }, - "sectionTheme": "Tema", - "@sectionTheme": { - "description": "Settings section header" - }, - "@extensionActionFailed": { - "description": "Fallback error when an extension action fails without details" - }, - "@downloadAppleElrcWordSync": { - "description": "Setting for preserving Apple Music word-by-word eLRC timestamps" - }, - "@extensionsNoCustomSearch": { - "description": "Empty state - no search providers" - }, - "@collectionPlaylistRemoveCover": { - "description": "Bottom sheet action to remove custom cover image from a playlist" - }, - "@tutorialWelcomeDesc": { - "description": "Tutorial welcome page description" - }, - "@tutorialSearchDesc": { - "description": "Tutorial search page description" - }, - "collectionAddedToWishlist": "\"{trackName}\" added to Wishlist", - "@collectionAddedToWishlist": { - "description": "Snackbar after adding track to wishlist", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "logAffectedDomains": "Affected: {domains}", - "@logAffectedDomains": { - "description": "Affected domains in log issue analysis", - "placeholders": { - "domains": { - "type": "String" - } - } - }, - "@folderOrganizationByArtistSubtitle": { - "description": "Subtitle for artist folder option" - }, - "errorNoTracksFound": "Tidak ada lagu ditemukan", - "@errorNoTracksFound": { - "description": "Error - search returned no results" - }, - "providerPriorityTitle": "Prioritas Provider", - "@providerPriorityTitle": { - "description": "Provider priority page title" - }, - "@notifUpdateReadyBody": { - "description": "Notification body when app update is ready to install", + "extensionsVersion": "Versi {version}", + "@extensionsVersion": { + "description": "Extension version display", "placeholders": { "version": { "type": "String" } } }, - "@settingsExtensions": { - "description": "Settings section - extension management" + "extensionsUninstall": "Uninstal", + "@extensionsUninstall": { + "description": "Uninstall extension button" }, - "trackDeleteConfirmTitle": "Hapus dari perangkat?", - "@trackDeleteConfirmTitle": { - "description": "Delete confirmation title" + "storeTitle": "Repo Ekstensi", + "@storeTitle": { + "description": "Repo screen title" }, - "@settingsDownloadNetwork": { - "description": "Setting for network type preference" + "storeSearch": "Cari ekstensi...", + "@storeSearch": { + "description": "Repo search placeholder" }, - "downloadProvidersNoneEnabled": "No providers enabled", - "@downloadProvidersNoneEnabled": { - "description": "Shown when no lyrics providers are active" + "storeInstall": "Instal", + "@storeInstall": { + "description": "Install extension button" }, - "@homeEmptySubtitle": { - "description": "Subtitle shown on home when no providers are available yet" + "storeInstalled": "Terinstal", + "@storeInstalled": { + "description": "Already installed badge" }, - "trackReEnrichFieldBasicTags": "Album, Album Artist", - "@trackReEnrichFieldBasicTags": { - "description": "Checkbox label for basic tags in re-enrich (title/artist are never overwritten)" + "storeUpdate": "Update", + "@storeUpdate": { + "description": "Update available button" }, - "@audioAnalysisSpectralCutoff": { - "description": "Estimated spectral cutoff metric label" + "aboutTitle": "Tentang", + "@aboutTitle": { + "description": "About page title" }, - "@logClearLogsTitle": { - "description": "Clear logs dialog title" + "aboutContributors": "Kontributor", + "@aboutContributors": { + "description": "Section for contributors" }, - "storageModeSafSubtitle": "Pick any folder, including SD card", - "@storageModeSafSubtitle": { - "description": "Subtitle for SAF storage mode" + "aboutMobileDeveloper": "Developer versi mobile", + "@aboutMobileDeveloper": { + "description": "Role description for mobile dev" }, - "@notifUpdateProgress": { - "description": "Notification body showing update download progress", + "aboutOriginalCreator": "Pencipta SpotiFLAC asli", + "@aboutOriginalCreator": { + "description": "Role description for original creator" + }, + "aboutLogoArtist": "Artist berbakat yang membuat logo indah untuk aplikasi kami!", + "@aboutLogoArtist": { + "description": "Role description for logo artist" + }, + "aboutTranslators": "Penerjemah", + "@aboutTranslators": { + "description": "Section for translators" + }, + "aboutSpecialThanks": "Terima Kasih Khusus", + "@aboutSpecialThanks": { + "description": "Section for special thanks" + }, + "aboutLinks": "Link", + "@aboutLinks": { + "description": "Section for external links" + }, + "aboutMobileSource": "Source code versi mobile", + "@aboutMobileSource": { + "description": "Link to mobile GitHub repo" + }, + "aboutPCSource": "Source code versi PC", + "@aboutPCSource": { + "description": "Link to PC GitHub repo" + }, + "aboutKeepAndroidOpen": "Jaga Android tetap terbuka", + "@aboutKeepAndroidOpen": { + "description": "Link to Keep Android Open campaign website" + }, + "aboutReportIssue": "Laporkan masalah", + "@aboutReportIssue": { + "description": "Link to report bugs" + }, + "aboutReportIssueSubtitle": "Laporkan masalah yang Anda temui", + "@aboutReportIssueSubtitle": { + "description": "Subtitle for report issue" + }, + "aboutFeatureRequest": "Kirim masukan", + "@aboutFeatureRequest": { + "description": "Link to suggest features" + }, + "aboutFeatureRequestSubtitle": "Berikan masukan untuk aplikasi", + "@aboutFeatureRequestSubtitle": { + "description": "Subtitle for feature request" + }, + "aboutTelegramChannel": "Channel Telegram", + "@aboutTelegramChannel": { + "description": "Link to Telegram channel" + }, + "aboutTelegramChannelSubtitle": "Pengumuman dan update", + "@aboutTelegramChannelSubtitle": { + "description": "Subtitle for Telegram channel" + }, + "aboutTelegramChat": "Komunitas Telegram", + "@aboutTelegramChat": { + "description": "Link to Telegram chat group" + }, + "aboutTelegramChatSubtitle": "Chat dengan pengguna lain", + "@aboutTelegramChatSubtitle": { + "description": "Subtitle for Telegram chat" + }, + "aboutSocial": "Media Sosial", + "@aboutSocial": { + "description": "Section for social links" + }, + "aboutApp": "Aplikasi", + "@aboutApp": { + "description": "Section for app info" + }, + "aboutVersion": "Versi", + "@aboutVersion": { + "description": "Version info label" + }, + "aboutBinimumDesc": "Pembuat API QQDL & HiFi. Proyeknya membantu membuat dukungan download lossless.", + "@aboutBinimumDesc": { + "description": "Credit description for binimum" + }, + "aboutSachinsenalDesc": "Pembuat proyek HiFi asli. Sebuah fondasi untuk integrasi sumber lossless.", + "@aboutSachinsenalDesc": { + "description": "Credit description for sachinsenal0x64" + }, + "aboutUnituneDesc": "Resolver link musik open-source oleh Flaze, untuk melakukan match link cadangan cross-platform.", + "@aboutUnituneDesc": { + "description": "Credit for the UniTune resolver" + }, + "aboutMusicBrainzDesc": "Database musik terbuka dimaintain oleh MetaBrainz dan komunitasnya, untuk merekam cross-reference.", + "@aboutMusicBrainzDesc": { + "description": "Credit for the MusicBrainz database" + }, + "aboutSquiglyDesc": "Layanan link musik universal oleh Liam Macmillan, digunakan untuk resolver fallback cross-platform final.", + "@aboutSquiglyDesc": { + "description": "Credit for the Squigly resolver" + }, + "aboutAppDescription": "Cari metadata musik, kelola ekstensi, dan atur Koleksi Anda.", + "@aboutAppDescription": { + "description": "App description in header card" + }, + "artistAlbums": "Album", + "@artistAlbums": { + "description": "Section header for artist albums" + }, + "artistSingles": "Single & EP", + "@artistSingles": { + "description": "Section header for singles/EPs" + }, + "artistCompilations": "Kompilasi", + "@artistCompilations": { + "description": "Section header for compilations" + }, + "artistPopular": "Populer", + "@artistPopular": { + "description": "Section header for popular/top tracks" + }, + "artistMonthlyListeners": "{count} pendengar bulanan", + "@artistMonthlyListeners": { + "description": "Monthly listener count display", "placeholders": { - "received": { - "type": "String" - }, - "total": { - "type": "String" - }, - "percentage": { - "type": "int" + "count": { + "type": "String", + "description": "Formatted listener count" } } }, - "downloadUsePrimaryArtistOnlyEnabled": "Artis unggulan dihapus dari nama folder (misalnya Justin Bieber, Quavo → Justin Bieber)", - "@downloadUsePrimaryArtistOnlyEnabled": { - "description": "Subtitle when primary artist only is enabled" + "trackMetadataService": "Layanan", + "@trackMetadataService": { + "description": "Metadata field - download service used" }, - "notifScanningLibrary": "Scanning local library", - "@notifScanningLibrary": { - "description": "Notification title while scanning local library" + "trackMetadataPlay": "Putar", + "@trackMetadataPlay": { + "description": "Action button - play track" }, - "@metadataProvidersSubtitle": { - "description": "Subtitle for metadata provider priority item" + "trackMetadataShare": "Bagikan", + "@trackMetadataShare": { + "description": "Action button - share track" + }, + "trackMetadataDelete": "Hapus", + "@trackMetadataDelete": { + "description": "Action button - delete track" + }, + "setupGrantPermission": "Berikan Izin", + "@setupGrantPermission": { + "description": "Button to request permission" + }, + "setupSkip": "Lewati untuk sekarang", + "@setupSkip": { + "description": "Skip current step button" + }, + "setupStorageAccessRequired": "Akses Penyimpanan Diperlukan", + "@setupStorageAccessRequired": { + "description": "Title when storage access needed" + }, + "setupStorageAccessMessageAndroid11": "Android 11+ memerlukan izin \"Akses semua file\" untuk menyimpan file ke folder unduhan pilihan Anda.", + "@setupStorageAccessMessageAndroid11": { + "description": "Android 11+ specific explanation" + }, + "setupOpenSettings": "Buka Setelan", + "@setupOpenSettings": { + "description": "Button to open system settings" + }, + "setupPermissionDeniedMessage": "Izin ditolak. Harap berikan semua izin untuk melanjutkan.", + "@setupPermissionDeniedMessage": { + "description": "Error when permission denied" + }, + "setupPermissionRequired": "Izin {permissionType} Diperlukan", + "@setupPermissionRequired": { + "description": "Generic permission required title", + "placeholders": { + "permissionType": { + "type": "String", + "description": "Type of permission (Storage/Notification)" + } + } + }, + "setupPermissionRequiredMessage": "Izin {permissionType} diperlukan untuk pengalaman terbaik. Anda dapat mengubahnya nanti di Pengaturan.", + "@setupPermissionRequiredMessage": { + "description": "Generic permission required message", + "placeholders": { + "permissionType": { + "type": "String" + } + } + }, + "setupUseDefaultFolder": "Gunakan Folder Default?", + "@setupUseDefaultFolder": { + "description": "Dialog title for default folder" + }, + "setupNoFolderSelected": "Tidak ada folder dipilih. Apakah Anda ingin menggunakan folder Musik default?", + "@setupNoFolderSelected": { + "description": "Prompt when no folder selected" + }, + "setupUseDefault": "Gunakan Default", + "@setupUseDefault": { + "description": "Button to use default folder" + }, + "setupDownloadLocationTitle": "Lokasi Download", + "@setupDownloadLocationTitle": { + "description": "Download location dialog title" + }, + "setupDownloadLocationIosMessage": "Di iOS, unduhan disimpan ke folder Documents aplikasi. Anda dapat mengaksesnya melalui aplikasi Files.", + "@setupDownloadLocationIosMessage": { + "description": "iOS-specific folder info" + }, + "setupAppDocumentsFolder": "Folder Documents Aplikasi", + "@setupAppDocumentsFolder": { + "description": "iOS documents folder option" + }, + "setupAppDocumentsFolderSubtitle": "Direkomendasikan - dapat diakses via aplikasi Files", + "@setupAppDocumentsFolderSubtitle": { + "description": "Subtitle for documents folder" + }, + "setupChooseFromFiles": "Pilih dari Files", + "@setupChooseFromFiles": { + "description": "iOS file picker option" + }, + "setupChooseFromFilesSubtitle": "Pilih lokasi iCloud atau lainnya", + "@setupChooseFromFilesSubtitle": { + "description": "Subtitle for file picker" + }, + "setupIosEmptyFolderWarning": "Batasan iOS: Folder kosong tidak dapat dipilih. Pilih folder dengan minimal satu file.", + "@setupIosEmptyFolderWarning": { + "description": "iOS folder selection warning" + }, + "setupIcloudNotSupported": "iCloud Drive tidak didukung. Silakan gunakan folder Dokumen di aplikasi.", + "@setupIcloudNotSupported": { + "description": "Error when user selects iCloud Drive on iOS" + }, + "setupDownloadInFlac": "Download musik dengan kualitas loseless dan Hi-Res", + "@setupDownloadInFlac": { + "description": "App tagline in setup" + }, + "setupStorageGranted": "Akses Penyimpanan Diberikan!", + "@setupStorageGranted": { + "description": "Success message for storage permission" + }, + "setupStorageRequired": "Butuh Akses Penyimpanan", + "@setupStorageRequired": { + "description": "Title when storage permission needed" + }, + "setupStorageDescription": "SpotiFLAC perlu akses penyimpanan untuk menyimpan file musik terdownload.", + "@setupStorageDescription": { + "description": "Explanation for storage permission" + }, + "setupNotificationGranted": "Akses Notifikasi Diberikan!", + "@setupNotificationGranted": { + "description": "Success message for notification permission" + }, + "setupNotificationEnable": "Aktifkan Akses Notifikasi", + "@setupNotificationEnable": { + "description": "Button to enable notifications" + }, + "setupFolderChoose": "Pilih Folder Download", + "@setupFolderChoose": { + "description": "Button to choose folder" + }, + "setupFolderDescription": "Pilih folder untuk menyimpan musik terdownload.", + "@setupFolderDescription": { + "description": "Explanation for folder selection" + }, + "setupSelectFolder": "Pilih Folder", + "@setupSelectFolder": { + "description": "Button to select folder" + }, + "setupEnableNotifications": "Aktifkan Akses Notifikasi", + "@setupEnableNotifications": { + "description": "Button to enable notifications" + }, + "setupNotificationBackgroundDescription": "Memberitahu progres download Anda. Akan membantu Anda mengetahui kondisi download Anda selama di luar aplikasi.", + "@setupNotificationBackgroundDescription": { + "description": "Detailed notification explanation" + }, + "setupSkipForNow": "Lewati untuk sekarang", + "@setupSkipForNow": { + "description": "Skip button text" + }, + "setupNext": "Lanjut", + "@setupNext": { + "description": "Next button text" }, "setupGetStarted": "Mulai", "@setupGetStarted": { "description": "Final setup button" }, - "libraryFilterQualityCD": "CD (16bit)", - "@libraryFilterQualityCD": { - "description": "Filter option - CD quality audio" + "setupAllowAccessToManageFiles": "Harap aktifkan \"Izinkan akses untuk mengelola semua file\" di layar berikutnya.", + "@setupAllowAccessToManageFiles": { + "description": "Instruction for file access permission" }, - "sectionLayout": "Tata Letak", - "@sectionLayout": { - "description": "Settings section header" + "setupLanguageTitle": "Pilih Bahasa", + "@setupLanguageTitle": { + "description": "Title for the language selection step in setup" }, - "@tooltipLoveAll": { - "description": "Tooltip for the Love All button on album/playlist screens" + "setupLanguageDescription": "Pilih bahasa pilihan Anda untuk aplikasi ini. Anda dapat mengubahnya nanti di Setelan.", + "@setupLanguageDescription": { + "description": "Description for the language selection step in setup" }, - "queueFinalizingDownload": "Finalizing download", - "@queueFinalizingDownload": { - "description": "Accessibility label for a queue item that is finalizing" + "setupLanguageSystemDefault": "Default Sistem", + "@setupLanguageSystemDefault": { + "description": "Option to use the system language" }, - "trackConvertActionLabelLossy": "{sourceFormat} → {targetFormat} @ {bitrate}", - "@trackConvertActionLabelLossy": { - "description": "Convert button label for lossy conversion", + "dialogCancel": "Batal", + "@dialogCancel": { + "description": "Dialog button - cancel action" + }, + "dialogSave": "Simpan", + "@dialogSave": { + "description": "Dialog button - save changes" + }, + "dialogDelete": "Hapus", + "@dialogDelete": { + "description": "Dialog button - delete item" + }, + "dialogRetry": "Coba Lagi", + "@dialogRetry": { + "description": "Dialog button - retry action" + }, + "dialogClear": "Hapus", + "@dialogClear": { + "description": "Dialog button - clear items" + }, + "dialogDone": "Selesai", + "@dialogDone": { + "description": "Dialog button - action completed" + }, + "dialogImport": "Impor", + "@dialogImport": { + "description": "Dialog button - import data" + }, + "dialogDownload": "Download", + "@dialogDownload": { + "description": "Confirm button in Download All dialog" + }, + "previewPlay": "Putar preview", + "@previewPlay": { + "description": "Tooltip for the button that plays a short track preview snippet" + }, + "previewStop": "Hentikan Preview", + "@previewStop": { + "description": "Tooltip for the button that stops the playing track preview snippet" + }, + "previewUnavailable": "Preview tidak tersedia", + "@previewUnavailable": { + "description": "Snackbar shown when a track preview snippet cannot be played" + }, + "dialogDiscard": "Buang", + "@dialogDiscard": { + "description": "Dialog button - discard changes" + }, + "dialogRemove": "Hapus", + "@dialogRemove": { + "description": "Dialog button - remove item" + }, + "dialogUninstall": "Uninstal", + "@dialogUninstall": { + "description": "Dialog button - uninstall extension" + }, + "dialogDiscardChanges": "Buang Perubahan?", + "@dialogDiscardChanges": { + "description": "Dialog title - unsaved changes warning" + }, + "dialogUnsavedChanges": "Ada perubahan yang belum disimpan. Anda ingin membuangnya?", + "@dialogUnsavedChanges": { + "description": "Dialog message - unsaved changes" + }, + "dialogClearAll": "Hapus Semua", + "@dialogClearAll": { + "description": "Dialog title - clear all items" + }, + "dialogRemoveExtension": "Hapus Ekstensi", + "@dialogRemoveExtension": { + "description": "Dialog title - uninstall extension" + }, + "dialogRemoveExtensionMessage": "Apakah Anda yakin ingin menghapus ekstensi ini? Ini tidak dapat dibatalkan.", + "@dialogRemoveExtensionMessage": { + "description": "Dialog message - uninstall confirmation" + }, + "dialogUninstallExtension": "Uninstal Ekstensi?", + "@dialogUninstallExtension": { + "description": "Dialog title - uninstall extension" + }, + "dialogUninstallExtensionMessage": "Apakah Anda yakin ingin menghapus {extensionName}?", + "@dialogUninstallExtensionMessage": { + "description": "Dialog message - uninstall specific extension", "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "bitrate": { + "extensionName": { "type": "String" } } }, - "extensionsMetadataPriority": "Prioritas Metadata", - "@extensionsMetadataPriority": { - "description": "Setting - metadata provider order" + "dialogClearHistoryTitle": "Hapus Riwayat", + "@dialogClearHistoryTitle": { + "description": "Dialog title - clear download history" }, - "updateCurrent": "Saat ini", - "@updateCurrent": { - "description": "Label for current version" + "dialogClearHistoryMessage": "Apakah Anda yakin ingin menghapus semua histori download? Ini tidak dapat dibatalkan.", + "@dialogClearHistoryMessage": { + "description": "Dialog message - clear history confirmation" }, - "@aboutFeatureRequest": { - "description": "Link to suggest features" + "dialogDeleteSelectedTitle": "Hapus Terpilih", + "@dialogDeleteSelectedTitle": { + "description": "Dialog title - delete selected items" }, - "@safMigrationSuccess": { - "description": "Snackbar after successfully migrating to SAF" - }, - "backupRestoreConfirmMessage": "This will replace your current settings, download history, liked tracks, wishlist and playlists with the contents of the backup. This cannot be undone.", - "@cleanupOrphanedDownloadsNone": { - "description": "Snackbar when no orphans found" - }, - "lyricsProviderNeteaseDesc": "NetEase Cloud Music (good for Asian songs)", - "@lyricsProviderNeteaseDesc": { - "description": "Description for Netease provider" - }, - "libraryScanCancelledSubtitle": "You can retry the scan when ready.", - "@libraryScanCancelledSubtitle": { - "description": "Library scan status subtitle after cancellation" - }, - "@collectionFavoriteArtists": { - "description": "Custom folder for favorite artists" - }, - "@trackAlbum": { - "description": "Metadata label - album name" - }, - "dialogDeleteSelectedMessage": "Hapus {count} {count, plural, =1{lagu} other{lagu}} dari riwayat?\n\nIni juga akan menghapus file dari penyimpanan.", + "dialogDeleteSelectedMessage": "Hapus {count} {count, plural, =1{lagu} other{lagu}} dari histori?\n\nIni juga akan menghapus file dari penyimpanan.", "@dialogDeleteSelectedMessage": { "description": "Dialog message - delete selected tracks", "placeholders": { @@ -758,102 +838,29 @@ } } }, - "trackReEnrich": "Perkaya ulang", - "trackReEnrichModeIsrc": "ISRC only", - "trackReEnrichModeIsrcSubtitle": "Find and add the recording identifier without changing other tags", - "trackReEnrichModeMissing": "Fill missing tags", - "trackReEnrichModeMissingSubtitle": "Keep existing values and fill only fields that are empty", - "trackReEnrichModeReplace": "Update selected tags", - "trackReEnrichModeReplaceSubtitle": "Choose which existing values may be replaced by online metadata", - "trackReEnrichModeManual": "Tetapkan nilai yang sama", - "trackReEnrichModeManualSubtitle": "Terapkan nilai yang sama ke setiap lagu yang dipilih", - "trackReEnrichManualFieldsTitle": "Nilai yang akan diterapkan", - "trackReEnrichManualHint": "Biarkan kolom kosong untuk mempertahankan nilai saat ini. Judul, nomor lagu, dan ISRC tidak akan diubah.", - "trackReEnrichFieldsTitle": "Tags to update", - "trackReEnrichReview": "Review changes", - "trackReEnrichReviewTitle": "Review metadata changes", - "trackReEnrichReviewSubtitle": "{changeCount} proposed changes across {trackCount} tracks", - "@trackReEnrichReviewSubtitle": { + "dialogImportPlaylistTitle": "Impor Playlist", + "@dialogImportPlaylistTitle": { + "description": "Dialog title - import CSV playlist" + }, + "dialogImportPlaylistMessage": "Menemukan {count} lagu di file playlist. Tambahkan ke antrean download?", + "csvImportTracks": "{count} lagu dari CSV", + "@csvImportTracks": { + "description": "Label shown in quality picker for CSV import", "placeholders": { - "changeCount": { - "type": "int" - }, - "trackCount": { + "count": { "type": "int" } } }, - "trackReEnrichNoChanges": "No metadata changes were found for the selected tracks.", - "trackReEnrichApplyChanges": "Apply changes", - "trackReEnrichRefreshOnline": "Refresh from online", - "@trackReEnrich": { - "description": "Menu action - re-embed metadata into audio file" + "collectionExportM3u": "Ekspor sebagai M3U8", + "@collectionExportM3u": { + "description": "Tooltip on the collection screen action that exports the track list as an M3U8 playlist file" }, - "@lyricsProvidersSaved": { - "description": "Snackbar after saving lyrics provider priority" - }, - "@storageModeSaf": { - "description": "Storage mode option - Storage Access Framework" - }, - "libraryStorageAccessRequired": "Storage Access Required", - "@libraryStorageAccessRequired": { - "description": "Dialog title for storage permission" - }, - "@cacheClearAllConfirmTitle": { - "description": "Dialog title before clearing all caches" - }, - "@unknownArtist": { - "description": "Fallback artist name when metadata is missing" - }, - "downloadCreatePlaylistSourceFolderEnabled": "A subfolder is created for each playlist", - "@downloadCreatePlaylistSourceFolderEnabled": { - "description": "Subtitle when playlist folder is enabled" - }, - "dialogClearHistoryMessage": "Apakah Anda yakin ingin menghapus semua riwayat unduhan? Ini tidak dapat dibatalkan.", - "@dialogClearHistoryMessage": { - "description": "Dialog message - clear history confirmation" - }, - "@sectionData": { - "description": "Settings section header" - }, - "audioAnalysisRms": "RMS", - "@audioAnalysisRms": { - "description": "RMS level metric label" - }, - "downloadFilterContributingEnabled": "Contributing artists removed from Album Artist folder name", - "@downloadFilterContributingEnabled": { - "description": "Subtitle when contributing artist filter is on" - }, - "timeJustNow": "Just now", - "@extensionCustomUrlHandlingShareHint": { - "description": "Extension detail hint explaining share-to-app URL handling" - }, - "cleanupOrphanedDownloads": "Cleanup Orphaned Downloads", - "@cleanupOrphanedDownloads": { - "description": "Button to remove history entries for deleted files" - }, - "@audioAnalysisNoClipping": { - "description": "Displayed when no clipped samples were detected" - }, - "@tutorialWelcomeTitle": { - "description": "Tutorial welcome page title" - }, - "collectionFavoriteArtists": "Favorite Artists", - "audioAnalysisRescanning": "Re-analyzing audio...", - "@audioAnalysisRescanning": { - "description": "Loading text while audio is being re-analyzed after an explicit refresh" - }, - "logTitle": "Log", - "@logTitle": { - "description": "Logs screen title" - }, - "@regionCountryGB": { - "description": "Country name for SongLink region picker" - }, - "@progressFetchingMetadata": { - "description": "Progress indicator - loading track info", + "collectionExportM3uDone": "Mengekspor {exported} dari {total} lagu", + "@collectionExportM3uDone": { + "description": "Snackbar after M3U8 export; tracks without a local file are not exported", "placeholders": { - "current": { + "exported": { "type": "int" }, "total": { @@ -861,390 +868,126 @@ } } }, - "aboutLogoArtist": "Seniman berbakat yang membuat logo aplikasi kita yang indah!", - "@aboutLogoArtist": { - "description": "Role description for logo artist" + "collectionExportM3uNone": "Tidak ada file terdownload untuk diekspor", + "@collectionExportM3uNone": { + "description": "Snackbar when an M3U8 export finds no local files" }, - "channelPreview": "Pratinjau", - "@channelPreview": { - "description": "Update channel - beta/preview releases" + "collectionExportM3uFailed": "Ekspor gagal", + "@collectionExportM3uFailed": { + "description": "Snackbar when writing or sharing the M3U8 export fails" }, - "collectionPlaylistsDeleted": "{count} {count, plural, =1{playlist} other{playlists}} deleted", - "@collectionPlaylistsDeleted": { - "description": "Snackbar after deleting selected playlists", + "trackOpenOn": "Buka di...", + "@trackOpenOn": { + "description": "Track option and sheet title listing streaming platforms where the track can be opened" + }, + "trackOpenOnNoLinks": "Tidak menemukan link platform untuk lagu ini.", + "@trackOpenOnNoLinks": { + "description": "Shown in the Open on sheet when song.link returns no links" + }, + "libraryReviewDuplicates": "Tinjau duplikat", + "@libraryReviewDuplicates": { + "description": "Library settings row opening the duplicate review sheet" + }, + "libraryReviewDuplicatesSubtitle": "Telusuri lagu yang disimpan lebih dari sekali", + "@libraryReviewDuplicatesSubtitle": { + "description": "Subtitle for the duplicate review settings row" + }, + "duplicatesTitle": "Duplikat", + "@duplicatesTitle": { + "description": "Title of the duplicate review sheet" + }, + "duplicatesEmpty": "Tidak menemukan lagu duplikat.", + "@duplicatesEmpty": { + "description": "Shown when the duplicate review sheet finds nothing" + }, + "duplicatesKeepBest": "Simpan lagu kualitas terbaik", + "@duplicatesKeepBest": { + "description": "Button that deletes all but the highest-quality copy in a duplicate group" + }, + "duplicatesKeepBestAll": "Simpan yang terbaik untuk semua", + "@duplicatesKeepBestAll": { + "description": "Button that keeps the highest-quality copy in every duplicate group and deletes the rest" + }, + "duplicatesKeepBestAllMessage": "Simpan salinan terbaik dari {groupCount} lagu dan hapus {count} salinan berkualitas lebih rendah?\n\nFile yang dihapus juga akan dihapus dari penyimpanan.", + "@duplicatesKeepBestAllMessage": { + "description": "Confirmation message for keeping the best copy across every duplicate group", "placeholders": { "count": { "type": "int" - } - } - }, - "@libraryFilterMetadataMissingGenre": { - "description": "Filter option - items missing genre" - }, - "homeTitle": "Beranda", - "@homeTitle": { - "description": "Home screen title" - }, - "extensionMinAppVersion": "Versi App Minimum", - "@extensionMinAppVersion": { - "description": "Extension detail - minimum app version" - }, - "backupContentsLiked": "{count} liked {count, plural, =1{track} other{tracks}}", - "@backupContentsLiked": { - "description": "Backup contents row for liked tracks count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "audioAnalysisTruePeak": "True Peak", - "@audioAnalysisTruePeak": { - "description": "True peak metric label" - }, - "notifDownloadsCanceledBody": "{count, plural, =1{1 download canceled by user} other{{count} downloads canceled by user}}", - "@notifDownloadsCanceledBody": { - "description": "Notification body when downloads are canceled by the user", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@dialogRetry": { - "description": "Dialog button - retry action" - }, - "@homeChangeSearchProviderTooltip": { - "description": "Tooltip for the Home search provider picker" - }, - "@sectionLyricsProviderOptions": { - "description": "Settings section header for per-provider lyrics options" - }, - "@trackReEnrichSuccessWithFailures": { - "description": "Snackbar summary after batch metadata re-enrichment finishes with failures", - "placeholders": { - "successCount": { - "type": "int" }, - "total": { - "type": "int" - }, - "failedCount": { + "groupCount": { "type": "int" } } }, - "previewUnavailable": "Pratinjau tidak tersedia", - "@previewUnavailable": { - "description": "Snackbar shown when a track preview snippet cannot be played" - }, - "nowPlayingTabPlayer": "Player", - "@nowPlayingTabPlayer": { - "description": "Tab label for the player view" - }, - "backupContentsPlaylists": "{count, plural, =1{1 playlist} other{{count} playlists}}", - "@backupContentsPlaylists": { - "description": "Backup contents row for playlist count", + "duplicatesKeepBestMessage": "Hapus {count} salinan kualitas rendah lagu \"{trackName}\"?", + "@duplicatesKeepBestMessage": { + "description": "Confirmation message for the keep-best action", "placeholders": { "count": { "type": "int" - } - } - }, - "libraryLastScannedNever": "Never", - "@libraryLastScannedNever": { - "description": "Shown when library has never been scanned" - }, - "trackTrackNumber": "Nomor lagu", - "@trackTrackNumber": { - "description": "Metadata label - track number" - }, - "trackReplayGainScanning": "Menganalisis kenyaringan...", - "@trackReplayGainScanning": { - "description": "Snackbar/progress message while scanning ReplayGain for a single track" - }, - "downloadLossyMp3": "MP3 320kbps", - "@downloadLossyMp3": { - "description": "Lossy format option - MP3 320kbps" - }, - "@albumFolderArtistAlbumSingles": { - "description": "Album folder option with singles inside artist" - }, - "@extensionHealthNotConfigured": { - "description": "Extension service health status - not configured" - }, - "@downloadSeparateSinglesDisabled": { - "description": "Subtitle when separate singles folder is off" - }, - "downloadCreatePlaylistSourceFolder": "Playlist Source Folder", - "@downloadCreatePlaylistSourceFolder": { - "description": "Setting to create a subfolder per playlist source" - }, - "@trackReleaseDate": { - "description": "Metadata label - release date" - }, - "aboutContributors": "Kontributor", - "@aboutContributors": { - "description": "Section for contributors" - }, - "@audioAnalysisMono": { - "description": "Audio channel layout label - mono" - }, - "@audioAnalysisNyquist": { - "description": "Nyquist frequency metric label" - }, - "permissionStorage": "Storage", - "@permissionStorage": { - "description": "Storage permission type label" - }, - "permissionAudio": "Audio", - "@permissionAudio": { - "description": "Audio permission type label" - }, - "@libraryScanSubtitle": { - "description": "Subtitle for scan button" - }, - "@snackbarUnsupportedAudioFormat": { - "description": "Snackbar when the audio format is not supported for the requested operation" - }, - "@notifLibraryScanStopped": { - "description": "Notification body when library scan is cancelled" - }, - "@downloadMusixmatchAuto": { - "description": "Button to clear Musixmatch language (use auto)" - }, - "@trackLyricsTimeout": { - "description": "Message when lyrics request times out" - }, - "@trackReEnrichFieldReleaseInfo": { - "description": "Checkbox label for release info in re-enrich" - }, - "@regionCountryXK": { - "description": "Country name for SongLink region picker" - }, - "aboutTelegramChatSubtitle": "Berbincang dengan pengguna lain", - "@aboutTelegramChatSubtitle": { - "description": "Subtitle for Telegram chat" - }, - "selectionAllPlaylistsSelected": "All playlists selected", - "@selectionAllPlaylistsSelected": { - "description": "Shown when all playlists are selected in selection mode" - }, - "cacheTrackLookupDesc": "Spotify/Deezer track ID lookups. Clearing may slow next few searches.", - "@cacheTrackLookupDesc": { - "description": "Description of what track lookup cache contains" - }, - "@unknownAlbum": { - "description": "Fallback album name when metadata is missing" - }, - "@extensionsErrorLoading": { - "description": "Error message when extension fails to load" - }, - "@cacheTitle": { - "description": "Cache management page title" - }, - "@downloadFilenameFormat": { - "description": "Setting for output filename pattern" - }, - "errorUrlNotRecognized": "Tautan tidak dikenali", - "@errorUrlNotRecognized": { - "description": "Error title - URL not handled by any extension or service" - }, - "downloadAppleElrcWordSync": "Apple Music eLRC Word Sync", - "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { - "description": "Subtitle when album artist is used for folder names" - }, - "@qualityFlacLossless": { - "description": "Quality option - CD quality FLAC" - }, - "downloadNeteaseIncludeTranslationEnabled": "Chinese translation lines included", - "@downloadNeteaseIncludeTranslationEnabled": { - "description": "Subtitle when Netease translation is on" - }, - "collectionLovedEmptySubtitle": "Tap love on tracks to keep your favorites", - "@collectionLovedEmptySubtitle": { - "description": "Loved empty state subtitle" - }, - "@libraryBuiltInPlayerInfo": { - "description": "Info note explaining the built-in player is for previews only" - }, - "@notifLibraryScanProgressNoTotal": { - "description": "Notification body for library scan progress when total is unknown", - "placeholders": { - "scanned": { - "type": "int" }, - "percentage": { - "type": "int" + "trackName": { + "type": "String" } } }, - "@tutorialSearchTitle": { - "description": "Tutorial search page title" - }, - "trackReEnrichSuccessWithFailures": "Metadata re-enriched successfully ({successCount}/{total}) - Failed: {failedCount}", - "@a11yTrackByArtist": { - "description": "Accessibility label for a queue or list track item", + "duplicatesDeleteCopyMessage": "Hapus salinan lagu \"{trackName}\"?", + "@duplicatesDeleteCopyMessage": { + "description": "Confirmation message for deleting one duplicate copy", "placeholders": { "trackName": { "type": "String" - }, - "artistName": { - "type": "String" } } }, - "libraryFilterMetadataMissingLabel": "Missing label", - "@libraryFilterMetadataMissingLabel": { - "description": "Filter option - items missing record label" - }, - "@audioAnalysisLufs": { - "description": "Integrated loudness metric label" - }, - "trackMetadata": "Metadata", - "@trackMetadata": { - "description": "Tab title - track metadata" - }, - "trackOptionRemoveFromLoved": "Remove from Loved", - "@trackOptionRemoveFromLoved": { - "description": "Bottom sheet action label - remove track from loved folder" - }, - "@aboutTelegramChat": { - "description": "Link to Telegram chat group" - }, - "@trackCopiedToClipboard": { - "description": "Snackbar - content copied" - }, - "aboutKeepAndroidOpen": "Biarkan Android tetap terbuka", - "@aboutKeepAndroidOpen": { - "description": "Link to Keep Android Open campaign website" - }, - "@lyricsProvidersDisabledSection": { - "description": "Section header for disabled providers", + "@dialogImportPlaylistMessage": { + "description": "Dialog message - import playlist confirmation", "placeholders": { "count": { "type": "int" } } }, - "@downloadAllowLocalNetwork": { - "description": "Setting title for allowing requests to private/local network targets" - }, - "@openInOtherServices": { - "description": "Title and tooltip for finding the current collection in other services" - }, - "@extensionVerificationBrowserInApp": { - "description": "Chip label for in-app browser verification mode" - }, - "sectionSearchSource": "Sumber Pencarian", - "@sectionSearchSource": { - "description": "Settings section header" - }, - "allFilesAccess": "All Files Access", - "@allFilesAccess": { - "description": "Toggle for MANAGE_EXTERNAL_STORAGE permission" - }, - "extensionsInstalledCount": "{count} ekstensi berhasil terpasang", - "@extensionsInstalledCount": { - "description": "Success message after installing multiple extensions", + "snackbarAddedToQueue": "Menambahkan \"{trackName}\" ke antrean", + "@snackbarAddedToQueue": { + "description": "Snackbar - track added to download queue", "placeholders": { - "count": { - "type": "int", - "description": "Number of installed extensions" + "trackName": { + "type": "String" } } }, - "snackbarFailedToEmbedLyrics": "Failed to embed lyrics", - "@snackbarFailedToEmbedLyrics": { - "description": "Snackbar when lyrics embedding fails" + "snackbarAddedTracksToQueue": "Menambahkan {count} lagu ke antrean", + "@snackbarAddedTracksToQueue": { + "description": "Snackbar - multiple tracks added to queue", + "placeholders": { + "count": { + "type": "int" + } + } }, - "@lyricsProviderMusixmatchDesc": { - "description": "Description for Musixmatch provider" + "snackbarAlreadyDownloaded": "\"{trackName}\" sudah terdownload", + "@snackbarAlreadyDownloaded": { + "description": "Snackbar - track already exists", + "placeholders": { + "trackName": { + "type": "String" + } + } }, - "queueRateLimitTitle": "Service rate limited", - "@queueRateLimitTitle": { - "description": "Title shown on a failed queue item when the download service rate limits requests" + "snackbarAlreadyInLibrary": "\"{trackName}\" sudah ada di Koleksi Anda", + "@snackbarAlreadyInLibrary": { + "description": "Snackbar - track already exists in local library", + "placeholders": { + "trackName": { + "type": "String" + } + } }, - "@notifDownloadComplete": { - "description": "Notification title when a single download is complete" - }, - "@homeSupports": { - "description": "Info text about supported URL types" - }, - "notifDownloadsCanceledTitle": "Downloads canceled", - "@notifDownloadsCanceledTitle": { - "description": "Notification title when downloads are canceled by the user" - }, - "@lyricsModeEmbedSubtitle": { - "description": "Subtitle for embed option" - }, - "optionsReplayGain": "ReplayGain", - "@optionsReplayGain": { - "description": "Title for ReplayGain setting toggle" - }, - "@storeLoadError": { - "description": "Error heading when the store cannot be loaded" - }, - "@trackArtist": { - "description": "Metadata label - artist name" - }, - "cacheCoverImageDesc": "Downloaded album and track cover art. Will re-download when viewed.", - "@cacheCoverImageDesc": { - "description": "Description of what cover image cache contains" - }, - "queueClearAll": "Hapus Semua", - "@queueClearAll": { - "description": "Button - clear all queue items" - }, - "downloadUsePrimaryArtistOnlyDisabled": "Nama lengkap artis digunakan untuk nama folder", - "@downloadUsePrimaryArtistOnlyDisabled": { - "description": "Subtitle when primary artist only is disabled" - }, - "backupImportSectionTitle": "Restore backup", - "@backupImportSectionTitle": { - "description": "Section title for the import/restore card" - }, - "@downloadMusixmatchLanguageHint": { - "description": "Placeholder for Musixmatch language input" - }, - "collectionRemoveFromFolder": "Remove from folder", - "@collectionRemoveFromFolder": { - "description": "Tooltip for removing track from wishlist/loved folder" - }, - "storeFilterMetadata": "Metadata", - "@storeFilterMetadata": { - "description": "Repo filter - metadata providers" - }, - "shareSheetCopyLink": "Copy Link", - "errorRateLimitedMessage": "Terlalu banyak permintaan. Harap tunggu sebentar sebelum mencari lagi.", - "@errorRateLimitedMessage": { - "description": "Error message - rate limit explanation" - }, - "libraryFilterSortGenreDesc": "Genre (Z-A)", - "@libraryFilterSortGenreDesc": { - "description": "Sort option - genre descending" - }, - "trackFileNotFound": "File tidak ditemukan", - "@trackFileNotFound": { - "description": "Error - file doesn't exist" - }, - "@queueEmptySinglesSubtitle": { - "description": "Empty state subtitle for single track downloads" - }, - "@queueDownloadStarting": { - "description": "Queue status before download progress is available" - }, - "metadataProviderPriorityInfo": "Deezer tidak memiliki batas rate dan direkomendasikan sebagai utama. Spotify mungkin membatasi rate setelah banyak permintaan.", - "@metadataProviderPriorityInfo": { - "description": "Info tip about rate limits" - }, - "aboutPCSource": "Kode sumber PC", - "@aboutPCSource": { - "description": "Link to PC GitHub repo" - }, - "editMetadataAutoFill": "Auto-fill from online", - "@editMetadataAutoFill": { - "description": "Section title for selective online metadata auto-fill in the edit metadata sheet" + "snackbarHistoryCleared": "Histori dihapus", + "@snackbarHistoryCleared": { + "description": "Snackbar - history deleted" }, "snackbarDeletedTracks": "Menghapus {count} {count, plural, =1{lagu} other{lagu}}", "@snackbarDeletedTracks": { @@ -1255,41 +998,19 @@ } } }, - "@extensionHealthServiceDegraded": { - "description": "Tooltip for degraded extension service" - }, - "lyricsProviderLrclibDesc": "Open-source synced lyrics database", - "@lyricsProviderLrclibDesc": { - "description": "Description for LRCLIB provider" - }, - "downloadMusixmatchLanguageDesc": "Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.", - "@downloadMusixmatchLanguageDesc": { - "description": "Description in Musixmatch language picker" - }, - "@optionsEmbedMetadataSubtitleOn": { - "description": "Subtitle when metadata embedding is enabled" - }, - "@setupSkipForNow": { - "description": "Skip button text" - }, - "@a11ySelectTrack": { - "description": "Accessibility label for selecting a track" - }, - "@folderOrganizationByAlbumSubtitle": { - "description": "Subtitle for album folder option" - }, - "downloadLossyAac": "AAC/M4A 320kbps", - "@extensionVerificationBrowserTitle": { - "description": "Settings option title for extension verification browser preference" - }, - "@backupContentsExtensions": { - "description": "Backup contents row for installed extensions count", + "snackbarCannotOpenFile": "Tidak dapat membuka file: {error}", + "@snackbarCannotOpenFile": { + "description": "Snackbar - file open error", "placeholders": { - "count": { - "type": "int" + "error": { + "type": "String" } } }, + "snackbarViewQueue": "Lihat Antrean", + "@snackbarViewQueue": { + "description": "Snackbar action - view download queue" + }, "snackbarUrlCopied": "URL {platform} disalin ke clipboard", "@snackbarUrlCopied": { "description": "Snackbar - URL copied", @@ -1300,230 +1021,77 @@ } } }, - "aboutBinimumDesc": "Pencipta QQDL & HiFi API. Proyek ini membantu membentuk dukungan unduhan lossless.", - "@aboutBinimumDesc": { - "description": "Credit description for binimum" + "snackbarFileNotFound": "File tidak ditemukan", + "@snackbarFileNotFound": { + "description": "Snackbar - file doesn't exist" }, - "discographyFetchingAlbum": "Memuat {current} dari {total}...", - "@discographyFetchingAlbum": { - "description": "Progress - fetching specific album", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "logAutoScrollOn": "Auto-scroll ON", - "@logAutoScrollOn": { - "description": "Tooltip when auto-scroll is enabled on the log screen" - }, - "@settingsMetadataSubtitle": { - "description": "Subtitle for metadata settings" - }, - "@regionCountryBR": { - "description": "Country name for SongLink region picker" - }, - "@lyricsProvidersTitle": { - "description": "Settings item title for lyrics provider order" - }, - "trackMetadataService": "Layanan", - "@trackMetadataService": { - "description": "Metadata field - download service used" - }, - "discographyAddedToQueue": "{count} lagu ditambahkan ke antrean", - "cueSplitTrackCount": "{count} tracks", - "@cueSplitTrackCount": { - "description": "Number of tracks in CUE sheet", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "dialogImportPlaylistTitle": "Impor Playlist", - "@dialogImportPlaylistTitle": { - "description": "Dialog title - import CSV playlist" - }, - "@cleanupOrphanedDownloadsSubtitle": { - "description": "Subtitle for orphaned cleanup button" - }, - "settingsLocalLibrary": "Local Library", - "@settingsLocalLibrary": { - "description": "Settings menu item - local library" - }, - "@metadataSaveFailedStorage": { - "description": "Snackbar error when writing metadata file back to storage fails" - }, - "logCopyLogs": "Copy logs", - "@logCopyLogs": { - "description": "Tooltip for copying logs" - }, - "downloadNetworkWifiOnlySubtitle": "Downloads pause when on mobile data", - "@downloadNetworkWifiOnlySubtitle": { - "description": "Subtitle for WiFi-only option in picker" - }, - "@lyricsModeBothSubtitle": { - "description": "Subtitle for both option" - }, - "@collectionAlreadyInPlaylist": { - "description": "Snackbar when track already exists in playlist", - "placeholders": { - "playlistName": { - "type": "String" - } - } - }, - "@collectionFoldersTitle": { - "description": "Library section title for custom folders" - }, - "searchSortDateNewest": "Tanggal rilis (Terbaru)", - "@searchSortDateNewest": { - "description": "Sort option - newest release first" - }, - "downloadDeduplicationDisabled": "All tracks will be downloaded regardless of history", - "@downloadDeduplicationDisabled": { - "description": "Subtitle when deduplication is off" - }, - "@recentTypeAlbum": { - "description": "Recent access item type - album" - }, - "nowPlayingPlayInOrder": "Play in order", - "@nowPlayingPlayInOrder": { - "description": "Tooltip when shuffle mode is disabled" - }, - "@cueSplitConfirmMessage": { - "description": "CUE split confirmation dialog message", - "placeholders": { - "album": { - "type": "String" - }, - "count": { - "type": "int" - } - } - }, - "@audioAnalysisFileSize": { - "description": "File size metric label" - }, - "artistSingles": "Single & EP", - "@artistSingles": { - "description": "Section header for singles/EPs" + "snackbarSelectExtFile": "Harap pilih file .spotiflac-ext", + "@snackbarSelectExtFile": { + "description": "Snackbar - wrong file type selected" }, + "snackbarProviderPrioritySaved": "Prioritas provider disimpan", "@snackbarProviderPrioritySaved": { "description": "Snackbar - provider order saved" }, - "@recentPlaylistInfo": { - "description": "Snackbar message when tapping playlist in recent access", + "snackbarMetadataProviderSaved": "Prioritas provider metadata disimpan", + "@snackbarMetadataProviderSaved": { + "description": "Snackbar - metadata provider order saved" + }, + "snackbarExtensionInstalled": "{extensionName} terinstal.", + "@snackbarExtensionInstalled": { + "description": "Snackbar - extension installed successfully", "placeholders": { - "name": { - "type": "String", - "description": "Playlist name" - } - } - }, - "@lyricsProviderLyricsPlusDesc": { - "description": "Description for LyricsPlus provider" - }, - "@libraryFilterDownloaded": { - "description": "Filter chip - show only downloaded items" - }, - "recentPlaylistInfo": "Daftar Putar: {name}", - "@optionsReplayGainSubtitleOn": { - "description": "Subtitle when ReplayGain is enabled" - }, - "@actionCreate": { - "description": "Generic action button - create" - }, - "@downloadSelectQuality": { - "description": "Dialog title - choose audio quality" - }, - "cueSplitAlbum": "Album: {album}", - "@cueSplitAlbum": { - "description": "Album name in CUE split sheet", - "placeholders": { - "album": { + "extensionName": { "type": "String" } } }, - "@trackCoverNoSource": { - "description": "Snackbar when no cover art URL or embedded cover" - }, - "@storeRepoUrlLabel": { - "description": "Label for the repository URL input field" - }, - "@notifLibraryScanCompleteBody": { - "description": "Notification body for library scan complete - number of indexed tracks", + "snackbarExtensionUpdated": "{extensionName} terupdate.", + "@snackbarExtensionUpdated": { + "description": "Snackbar - extension updated successfully", "placeholders": { - "count": { - "type": "int" - } - } - }, - "optionsDetailedLogging": "Log Detail", - "@optionsDetailedLogging": { - "description": "Enable verbose logs for debugging" - }, - "@lyricsProvidersDiscardContent": { - "description": "Body text of the discard-changes dialog on lyrics provider page" - }, - "@dialogDisableHistoryTitle": { - "description": "Confirmation dialog title shown before disabling download history" - }, - "downloadLossyOpus128Subtitle": "Ukuran terkecil, ~4MB per trek", - "@downloadLossyOpus128Subtitle": { - "description": "Subtitle for Opus 128kbps lossy option" - }, - "@appName": { - "description": "App name - DO NOT TRANSLATE" - }, - "libraryActions": "Actions", - "@libraryActions": { - "description": "Section header for library actions" - }, - "setupNoFolderSelected": "Tidak ada folder dipilih. Apakah Anda ingin menggunakan folder Musik default?", - "@setupNoFolderSelected": { - "description": "Prompt when no folder selected" - }, - "downloadMusixmatchLanguageHint": "e.g. en, de, ja", - "trackSaveFailed": "Failed: {error}", - "@trackSaveFailed": { - "description": "Snackbar when save operation fails", - "placeholders": { - "error": { + "extensionName": { "type": "String" } } }, - "replayGainBatchConfirmTitle": "Tambah ReplayGain", - "@replayGainBatchConfirmTitle": { - "description": "Title of the batch ReplayGain confirmation dialog" - }, - "tutorialExtensionsTip1": "Telusuri tab Repo untuk menemukan extension yang berguna", - "@tutorialExtensionsTip1": { - "description": "Tutorial extensions tip 1" - }, - "@trackAddToQueue": { - "description": "Menu action to add a track to the playback queue" - }, - "@cacheTrackLookup": { - "description": "Cache item title for track ID lookup cache" - }, - "@discographyNoAlbums": { - "description": "Error - no albums found for artist" - }, - "@updateLater": { - "description": "Update button - dismiss" - }, + "snackbarFailedToInstall": "Gagal menginstal ekstensi", "@snackbarFailedToInstall": { "description": "Snackbar - extension install error" }, - "@albumFolderArtistAlbumFlatSubtitle": { - "description": "Folder structure example for flat singles" + "snackbarFailedToUpdate": "Gagal mengupdate ekstensi", + "@snackbarFailedToUpdate": { + "description": "Snackbar - extension update error" }, + "errorRateLimited": "Dibatasi", + "@errorRateLimited": { + "description": "Error title - too many requests" + }, + "errorRateLimitedMessage": "Terlalu banyak permintaan. Tunggu sebentar sebelum menelusuri lagi.", + "@errorRateLimitedMessage": { + "description": "Error message - rate limit explanation" + }, + "errorNoTracksFound": "Tidak ada lagu ditemukan", + "@errorNoTracksFound": { + "description": "Error - search returned no results" + }, + "searchEmptyResultSubtitle": "Coba kata kunci lain", + "@searchEmptyResultSubtitle": { + "description": "Subtitle shown under the empty search result state on the home screen" + }, + "errorUrlNotRecognized": "Link tidak dikenali", + "@errorUrlNotRecognized": { + "description": "Error title - URL not handled by any extension or service" + }, + "errorUrlNotRecognizedMessage": "Link ini tidak didukung. Pastikan URL sudah benar dan ekstensi yang kompatibel telah terpasang.", + "@errorUrlNotRecognizedMessage": { + "description": "Error message - URL not recognized explanation" + }, + "errorUrlFetchFailed": "Konten dari link ini gagal dimuat. Silakan coba lagi.", + "@errorUrlFetchFailed": { + "description": "Error message - generic URL fetch failure" + }, + "errorMissingExtensionSource": "Tidak dapat memuat {item}: sumber ekstensi tidak ada", "@errorMissingExtensionSource": { "description": "Error - extension source not available", "placeholders": { @@ -1532,62 +1100,46 @@ } } }, - "libraryFilterSortAlbumAsc": "Album (A-Z)", - "@libraryFilterSortAlbumAsc": { - "description": "Sort option - album ascending" + "actionPause": "Jeda", + "@actionPause": { + "description": "Action button - pause download" }, - "@queueTrackCount": { - "description": "Track count label with plural support", + "actionResume": "Lanjutkan", + "@actionResume": { + "description": "Action button - resume download" + }, + "actionCancel": "Batal", + "@actionCancel": { + "description": "Action button - cancel operation" + }, + "actionSelectAll": "Pilih Semua", + "@actionSelectAll": { + "description": "Action button - select all items" + }, + "actionDeselect": "Batal Pilih", + "@actionDeselect": { + "description": "Action button - deselect all" + }, + "selectionSelected": "{count} dipilih", + "@selectionSelected": { + "description": "Selection count indicator", "placeholders": { "count": { "type": "int" } } }, - "audioAnalysisMono": "Mono", - "@trackLyricsSource": { - "description": "Label showing the lyrics source/provider", - "placeholders": { - "source": { - "type": "String" - } - } + "selectionAllSelected": "Semua lagu dipilih", + "@selectionAllSelected": { + "description": "Status - all items selected" }, - "@lyricsModeEmbed": { - "description": "Lyrics mode option - embed in audio file" + "selectionSelectToDelete": "Pilih lagu untuk dihapus", + "@selectionSelectToDelete": { + "description": "Placeholder when nothing selected" }, - "@storeRepoDialogCurrent": { - "description": "Label shown above the current repository URL in the dialog" - }, - "@cacheRefreshStats": { - "description": "Button label to refresh cache statistics" - }, - "lyricsProviderAppleMusicDesc": "Word-by-word synced lyrics (via proxy)", - "@lyricsProviderAppleMusicDesc": { - "description": "Description for Apple Music provider" - }, - "@downloadDeduplication": { - "description": "Setting - skip tracks already in download history" - }, - "updateFailedMessage": "Gagal mengunduh pembaruan", - "@updateFailedMessage": { - "description": "Update error message" - }, - "cacheEstimatedTotal": "Estimated cache usage: {size}", - "@cacheEstimatedTotal": { - "description": "Total cache size shown in summary", - "placeholders": { - "size": { - "type": "String" - } - } - }, - "@aboutVersion": { - "description": "Version info label" - }, - "dialogRetry": "Coba Lagi", - "@cueSplitSplitting": { - "description": "Snackbar while splitting CUE", + "progressFetchingMetadata": "Mengambil metadata... {current}/{total}", + "@progressFetchingMetadata": { + "description": "Progress indicator - loading track info", "placeholders": { "current": { "type": "int" @@ -1597,65 +1149,423 @@ } } }, + "progressReadingCsv": "Membaca CSV...", + "@progressReadingCsv": { + "description": "Progress indicator - parsing CSV file" + }, + "searchSongs": "Lagu", + "@searchSongs": { + "description": "Search result category - songs" + }, + "searchArtists": "Artis", + "@searchArtists": { + "description": "Search result category - artists" + }, + "searchAlbums": "Album", + "@searchAlbums": { + "description": "Search result category - albums" + }, + "searchPlaylists": "Playlist", + "@searchPlaylists": { + "description": "Search result category - playlists" + }, + "searchSortTitle": "Urutkan Hasil", + "@searchSortTitle": { + "description": "Bottom sheet title for search sort options" + }, + "searchSortDefault": "Default", + "@searchSortDefault": { + "description": "Sort option - default API order" + }, + "searchSortTitleAZ": "Judul (A-Z)", + "@searchSortTitleAZ": { + "description": "Sort option - title ascending" + }, + "searchSortTitleZA": "Judul (Z-A)", "@searchSortTitleZA": { "description": "Sort option - title descending" }, - "tutorialLibraryTip2": "Ketuk lagu untuk memutarnya dengan pemutar bawaan", - "@tutorialLibraryTip2": { - "description": "Tutorial library tip 2" + "searchSortArtistAZ": "Artis (A-Z)", + "@searchSortArtistAZ": { + "description": "Sort option - artist ascending" }, - "extensionHealthServiceOffline": "Service offline", - "@extensionHealthServiceOffline": { - "description": "Tooltip for offline extension service" + "searchSortArtistZA": "Artis (Z-A)", + "@searchSortArtistZA": { + "description": "Sort option - artist descending" }, - "actionDeselect": "Batal Pilih", - "@actionDeselect": { - "description": "Action button - deselect all" + "searchSortDurationShort": "Durasi (Terpendek)", + "@searchSortDurationShort": { + "description": "Sort option - shortest duration first" }, - "@trackConvertOriginal": { - "description": "Label for keeping original bit depth or sample rate during conversion" + "searchSortDurationLong": "Durasi (Terpanjang)", + "@searchSortDurationLong": { + "description": "Sort option - longest duration first" }, - "@libraryClearConfirmTitle": { - "description": "Dialog title for clear confirmation" + "searchSortDateOldest": "Tanggal Rilis (Terlama)", + "@searchSortDateOldest": { + "description": "Sort option - oldest release first" }, - "@dialogDownloadAllMessage": { - "description": "Body of the Download All confirmation dialog", + "searchSortDateNewest": "Tanggal Rilis (Terbaru)", + "@searchSortDateNewest": { + "description": "Sort option - newest release first" + }, + "tooltipPlay": "Putar", + "@tooltipPlay": { + "description": "Tooltip - play button" + }, + "filenameFormat": "Format Nama File", + "@filenameFormat": { + "description": "Setting title - filename pattern" + }, + "filenameShowAdvancedTags": "Tampilkan tag lanjutan", + "@filenameShowAdvancedTags": { + "description": "Toggle label for showing advanced filename tags" + }, + "filenameShowAdvancedTagsDescription": "Aktifkan tag yang diformat untuk padding lagu dan pola tanggal", + "@filenameShowAdvancedTagsDescription": { + "description": "Description for advanced filename tag toggle" + }, + "folderOrganizationNone": "Tidak ada", + "@folderOrganizationNone": { + "description": "Folder option - flat structure" + }, + "folderOrganizationByPlaylist": "Menurut Playlist", + "@folderOrganizationByPlaylist": { + "description": "Folder option - playlist folders" + }, + "folderOrganizationByPlaylistSubtitle": "Pisahkan folder untuk setiap playlist ", + "@folderOrganizationByPlaylistSubtitle": { + "description": "Subtitle for playlist folder option" + }, + "folderOrganizationByArtist": "Menurut Artis", + "@folderOrganizationByArtist": { + "description": "Folder option - artist folders" + }, + "folderOrganizationByAlbum": "Menurut Album", + "@folderOrganizationByAlbum": { + "description": "Folder option - album folders" + }, + "folderOrganizationByArtistAlbum": "Menurut Artis/Album", + "@folderOrganizationByArtistAlbum": { + "description": "Folder option - nested folders" + }, + "folderOrganizationDescription": "Atur file terdownload ke dalam folder", + "@folderOrganizationDescription": { + "description": "Folder organization sheet description" + }, + "folderOrganizationNoneSubtitle": "Semua file di folder download", + "@folderOrganizationNoneSubtitle": { + "description": "Subtitle for no organization option" + }, + "folderOrganizationByArtistSubtitle": "Pisahkan folder untuk setiap artis", + "@folderOrganizationByArtistSubtitle": { + "description": "Subtitle for artist folder option" + }, + "folderOrganizationByAlbumSubtitle": "Pisahkan folder untuk setiap album", + "@folderOrganizationByAlbumSubtitle": { + "description": "Subtitle for album folder option" + }, + "folderOrganizationByArtistAlbumSubtitle": "Satukan folder untuk artis dan album", + "@folderOrganizationByArtistAlbumSubtitle": { + "description": "Subtitle for nested folder option" + }, + "updateAvailable": "Update Tersedia", + "@updateAvailable": { + "description": "Update dialog title" + }, + "updateLater": "Nanti", + "@updateLater": { + "description": "Update button - dismiss" + }, + "updateStartingDownload": "Download dimulai...", + "@updateStartingDownload": { + "description": "Update status - initializing" + }, + "updateDownloadFailed": "Download gagal", + "@updateDownloadFailed": { + "description": "Update error title" + }, + "updateFailedMessage": "Gagal mendownload update", + "@updateFailedMessage": { + "description": "Update error message" + }, + "updateNewVersionReady": "Versi baru tersedia", + "@updateNewVersionReady": { + "description": "Update subtitle" + }, + "updateRequiredTitle": "Harus update", + "@updateRequiredTitle": { + "description": "Title of the mandatory update dialog shown when the installed version is too old" + }, + "updateRequiredNotice": "Versi yang Anda gunakan, {count} sudah tidak didukung. Update untuk terus menggunakan aplikasi.", + "@updateRequiredNotice": { + "description": "Subtitle of the mandatory update dialog; explains why the dialog cannot be dismissed", "placeholders": { "count": { "type": "int" } } }, - "homeSupports": "Mendukung: URL Lagu, Album, Daftar Putar, dan Artis", - "@downloadedAlbumDeleteSelected": { - "description": "Button - delete selected tracks" + "updateCurrent": "Saat ini", + "@updateCurrent": { + "description": "Label for current version" }, - "@recentShowAllDownloads": { - "description": "Button label to unhide hidden downloads in recent access" + "updateNew": "Baru", + "@updateNew": { + "description": "Label for new version" }, - "artistOptionRemoveFromFavorites": "Remove from Favorite Artists", - "@artistOptionRemoveFromFavorites": { - "description": "Action label - remove artist from favorite artists" + "updateDownloading": "Mendownload...", + "@updateDownloading": { + "description": "Update status - downloading" }, - "collectionPlaylistEmptyTitle": "Playlist is empty", - "@collectionPlaylistEmptyTitle": { - "description": "Playlist empty state title" + "updateWhatsNew": "Yang baru", + "@updateWhatsNew": { + "description": "Changelog section title" }, - "libraryFilterSortLatest": "Latest", - "@libraryFilterSortLatest": { - "description": "Sort option - newest first" + "updateDownloadInstall": "Download & Instal", + "@updateDownloadInstall": { + "description": "Update button - download and install" }, - "@libraryFilterMetadataMissingYear": { - "description": "Filter option - items missing release year/date" + "updateDontRemind": "Jangan ingatkan", + "@updateDontRemind": { + "description": "Update button - skip this version" }, - "@selectionSelected": { - "description": "Selection count indicator", + "providerPriorityTitle": "Prioritas Provider", + "@providerPriorityTitle": { + "description": "Provider priority page title" + }, + "providerPriorityDescription": "Seret untuk mengatur ulang urutan provider download. Aplikasi akan mencoba provider dari atas ke bawah saat mendownload lagu.", + "@providerPriorityDescription": { + "description": "Provider priority page description" + }, + "providerPriorityInfo": "Jika lagu tidak tersedia di provider pertama, aplikasi akan otomatis mencoba yang berikutnya.", + "@providerPriorityInfo": { + "description": "Info tip about fallback behavior" + }, + "providerPriorityFallbackExtensionsDescription": "Pilih ekstensi download terinstal yang digunakan selama fallback otomatis.", + "@providerPriorityFallbackExtensionsDescription": { + "description": "Section description for extension fallback selection" + }, + "providerPriorityFallbackExtensionsHint": "Hanya ekstensi dengan provider download yang sudah aktif yang ada di sini.", + "@providerPriorityFallbackExtensionsHint": { + "description": "Hint below the extension fallback selection list" + }, + "providerExtension": "Ekstensi", + "@providerExtension": { + "description": "Label for extension-provided providers" + }, + "metadataProviderPriorityTitle": "Prioritas Metadata", + "@metadataProviderPriorityTitle": { + "description": "Metadata priority page title" + }, + "metadataProviderPriorityDescription": "Seret untuk mengatur urutan provider metadata. Aplikasi akan mencoba provider dari atas ke bawah saat mencari lagu dan mengambil metadata.", + "@metadataProviderPriorityDescription": { + "description": "Metadata priority page description" + }, + "metadataProviderPriorityInfo": "Deezer tidak ada rate limit dan direkomendasikan jadi utama. Spotify mungkin ada bila banyak permintaan.", + "@metadataProviderPriorityInfo": { + "description": "Info tip about rate limits" + }, + "logTitle": "Log", + "@logTitle": { + "description": "Logs screen title" + }, + "logCopied": "Log disalin ke clipboard", + "@logCopied": { + "description": "Snackbar - logs copied" + }, + "logSearchHint": "Telusuri log...", + "@logSearchHint": { + "description": "Log search placeholder" + }, + "logFilterLevel": "Level", + "@logFilterLevel": { + "description": "Filter by log level" + }, + "logFilterSection": "Filter", + "@logFilterSection": { + "description": "Filter section title" + }, + "logShareLogs": "Bagikan log", + "@logShareLogs": { + "description": "Share button tooltip" + }, + "logClearLogs": "Hapus log", + "@logClearLogs": { + "description": "Clear button tooltip" + }, + "logClearLogsTitle": "Hapus Log", + "@logClearLogsTitle": { + "description": "Clear logs dialog title" + }, + "logClearLogsMessage": "Apakah Anda yakin ingin menghapus semua log?", + "@logClearLogsMessage": { + "description": "Clear logs confirmation message" + }, + "logFilterBySeverity": "Filter log menurut keparahan", + "@logFilterBySeverity": { + "description": "Filter dialog title" + }, + "logNoLogsYet": "Tidak ada log", + "@logNoLogsYet": { + "description": "Empty state title" + }, + "logNoLogsYetSubtitle": "Log akan muncul di sini saat Anda menggunakan aplikasi", + "@logNoLogsYetSubtitle": { + "description": "Empty state subtitle" + }, + "logEntriesFiltered": "Entri ({count} difilter)", + "@logEntriesFiltered": { + "description": "Log count with filter active", "placeholders": { "count": { "type": "int" } } }, + "logEntries": "Entri ({count})", + "@logEntries": { + "description": "Total log count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "channelStable": "Stabil", + "@channelStable": { + "description": "Update channel - stable releases" + }, + "channelPreview": "Pratinjau", + "@channelPreview": { + "description": "Update channel - beta/preview releases" + }, + "sectionSearchSource": "Sumber Penelusuran", + "@sectionSearchSource": { + "description": "Settings section header" + }, + "sectionDownload": "Download", + "@sectionDownload": { + "description": "Settings section header" + }, + "sectionPerformance": "Performa", + "@sectionPerformance": { + "description": "Settings section header" + }, + "sectionApp": "Aplikasi", + "@sectionApp": { + "description": "Settings section header" + }, + "sectionData": "Data", + "@sectionData": { + "description": "Settings section header" + }, + "sectionDebug": "Debug", + "@sectionDebug": { + "description": "Settings section header" + }, + "sectionService": "Layanan", + "@sectionService": { + "description": "Settings section header" + }, + "sectionAudioQuality": "Kualitas Audio", + "@sectionAudioQuality": { + "description": "Settings section header" + }, + "sectionFileSettings": "Setelan File", + "@sectionFileSettings": { + "description": "Settings section header" + }, + "sectionLyrics": "Lirik", + "@sectionLyrics": { + "description": "Settings section header" + }, + "lyricsMode": "Mode Lirik", + "@lyricsMode": { + "description": "Setting - how to save lyrics" + }, + "lyricsModeDescription": "Pilih cara lirik disimpan di lagu Anda", + "@lyricsModeDescription": { + "description": "Lyrics mode picker description" + }, + "lyricsModeEmbed": "Tersemat di file", + "@lyricsModeEmbed": { + "description": "Lyrics mode option - embed in audio file" + }, + "lyricsModeEmbedSubtitle": "Lirik disimpan di dalam metadata FLAC", + "@lyricsModeEmbedSubtitle": { + "description": "Subtitle for embed option" + }, + "lyricsModeExternal": "File .lrc eksternal", + "@lyricsModeExternal": { + "description": "Lyrics mode option - separate LRC file" + }, + "lyricsModeExternalSubtitle": "File .lrc dipisah untuk pemutar seperti Samsung Music", + "@lyricsModeExternalSubtitle": { + "description": "Subtitle for external option" + }, + "lyricsModeBoth": "Keduanya", + "@lyricsModeBoth": { + "description": "Lyrics mode option - embed and external" + }, + "lyricsModeBothSubtitle": "Sematkan lalu simpan file .lrc", + "@lyricsModeBothSubtitle": { + "description": "Subtitle for both option" + }, + "sectionColor": "Warna", + "@sectionColor": { + "description": "Settings section header" + }, + "sectionTheme": "Tema", + "@sectionTheme": { + "description": "Settings section header" + }, + "sectionLayout": "Tata Letak", + "@sectionLayout": { + "description": "Settings section header" + }, + "sectionLanguage": "Bahasa", + "@sectionLanguage": { + "description": "Settings section header for language" + }, + "appearanceLanguage": "Bahasa Aplikasi", + "@appearanceLanguage": { + "description": "Language setting title" + }, + "settingsAppearanceSubtitle": "Tema, warna, tampilan", + "@settingsAppearanceSubtitle": { + "description": "Appearance settings description" + }, + "settingsDownloadSubtitle": "Layanan, kualitas, cadangan", + "@settingsDownloadSubtitle": { + "description": "Download settings description" + }, + "settingsExtensionsSubtitle": "Kelola provider download", + "@settingsExtensionsSubtitle": { + "description": "Extensions settings description" + }, + "settingsLogsSubtitle": "Lihat log aplikasi untuk debugging", + "@settingsLogsSubtitle": { + "description": "Logs settings description" + }, + "loadingSharedLink": "Memuat link yang dibagikan...", + "@loadingSharedLink": { + "description": "Status when opening shared URL" + }, + "pressBackAgainToExit": "Tekan kembali sekali lagi untuk keluar", + "@pressBackAgainToExit": { + "description": "Exit confirmation message" + }, + "downloadAllCount": "Download Semua ({count})", + "@downloadAllCount": { + "description": "Download all button with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "tracksCount": "{count, plural, =1{1 lagu} other{{count} lagu}}", "@tracksCount": { "description": "Track count display", "placeholders": { @@ -1664,556 +1574,70 @@ } } }, - "@optionsCheckUpdates": { - "description": "Auto update check toggle" + "trackCopyFilePath": "Salin lokasi file", + "@trackCopyFilePath": { + "description": "Action - copy file path" }, - "@qualityHiResFlacMaxSubtitle": { - "description": "Technical spec for hi-res max" + "trackRemoveFromDevice": "Hapus dari perangkat", + "@trackRemoveFromDevice": { + "description": "Action - delete downloaded file" }, - "actionStop": "Stop", - "@actionStop": { - "description": "Generic action - stop" + "trackLoadLyrics": "Muat Lirik", + "@trackLoadLyrics": { + "description": "Action - fetch lyrics" }, - "@selectionSelectToDelete": { - "description": "Placeholder when nothing selected" + "trackMetadata": "Metadata", + "@trackMetadata": { + "description": "Tab title - track metadata" }, - "folderOrganizationNoneSubtitle": "Semua file di folder unduhan", - "@folderOrganizationNoneSubtitle": { - "description": "Subtitle for no organization option" + "trackFileInfo": "Info File", + "@trackFileInfo": { + "description": "Tab title - file information" }, - "@updateDownloading": { - "description": "Update status - downloading" + "trackLyrics": "Lirik", + "@trackLyrics": { + "description": "Tab title - lyrics" }, - "artistAlbums": "Album", - "@artistAlbums": { - "description": "Section header for artist albums" + "trackFileNotFound": "File tidak ditemukan", + "@trackFileNotFound": { + "description": "Error - file doesn't exist" }, - "trackConvertDitherTriangular": "TPDF", - "@trackConvertDitherTriangular": { - "description": "Lossless conversion triangular probability density function dither option" - }, - "nowPlayingShuffleLibraryFailed": "Could not shuffle library: {error}", - "@nowPlayingShuffleLibraryFailed": { - "description": "Snackbar when shuffling the library fails", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "@setupIcloudNotSupported": { - "description": "Error when user selects iCloud Drive on iOS" - }, - "@optionsArtistTagModeSplitVorbis": { - "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" - }, - "@extensionsProviderPrioritySection": { - "description": "Section header - provider priority" - }, - "@libraryShowDuplicateIndicatorSubtitle": { - "description": "Subtitle for duplicate indicator toggle" - }, - "sectionDuplicates": "Duplicates", - "@sectionDuplicates": { - "description": "Settings section header for deduplication" - }, - "@backupTitle": { - "description": "App bar title for the backup and restore page" - }, - "trackCoverReplaceNotice": "The selected cover will replace the current embedded cover when you tap Save.", - "trackCoverResolution": "Cover resolution", - "trackCoverResolutionHint": "Sets the longest edge when saved. Enlarging does not add image detail.", - "trackCoverResizeFailed": "The cover image could not be resized. Please try another size or image.", - "cacheSectionMaintenance": "Maintenance", - "@cacheSectionMaintenance": { - "description": "Section header for cleanup actions" - }, - "@editMetadataFieldGenre": { - "description": "Chip label for genre field in auto-fill selector" - }, - "@extensionsFallbackSubtitle": { - "description": "Subtitle for download fallback extensions menu" - }, - "selectionBatchConvertConfirmMessage": "Convert {count} {count, plural, =1{track} other{tracks}} to {format} at {bitrate}?\n\nOriginal files will be deleted after conversion.", - "@selectionBatchConvertConfirmMessage": { - "description": "Confirmation dialog message for batch conversion", - "placeholders": { - "count": { - "type": "int" - }, - "format": { - "type": "String" - }, - "bitrate": { - "type": "String" - } - } - }, - "@selectionTapPlaylistsToSelect": { - "description": "Hint shown in playlist selection mode" - }, - "qualityHiResFlacMaxSubtitle": "24-bit / hingga 192kHz", - "snackbarRemovedTracksFromLoved": "Removed {count} tracks from Loved", - "@snackbarRemovedTracksFromLoved": { - "description": "Snackbar after removing multiple tracks from Loved folder", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "folderOrganizationByArtistAlbum": "Berdasarkan Artis & Album", - "@folderOrganizationByArtistAlbum": { - "description": "Folder option - nested folders" - }, - "snackbarCannotOpenFile": "Tidak dapat membuka file: {error}", - "@snackbarCannotOpenFile": { - "description": "Snackbar - file open error", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "@optionsDetailedLoggingOff": { - "description": "Status when logging disabled" - }, - "@setupStorageDescription": { - "description": "Explanation for storage permission" - }, - "audioAnalysisCodec": "Codec", - "@regionCountryFR": { - "description": "Country name for SongLink region picker" - }, - "@optionsArtistTagMode": { - "description": "Setting title for how artist metadata is written into files" - }, - "@libraryClearConfirmMessage": { - "description": "Dialog message for clear confirmation" - }, - "trackLyricsNotAvailable": "Lirik tidak tersedia untuk lagu ini", - "@trackLyricsNotAvailable": { - "description": "Message when lyrics not found" - }, - "storeFilterUtility": "Utilitas", - "@storeFilterUtility": { - "description": "Repo filter - utility extensions" - }, - "collectionAddedToPlaylist": "Added to \"{playlistName}\"", - "@collectionAddedToPlaylist": { - "description": "Snackbar after adding track to playlist", - "placeholders": { - "playlistName": { - "type": "String" - } - } - }, - "cacheClearConfirmTitle": "Clear cache?", - "@cacheClearConfirmTitle": { - "description": "Dialog title before clearing one cache category" - }, - "@downloadAppleElrcWordSyncDisabled": { - "description": "Subtitle when Apple Music eLRC word sync is disabled" - }, - "@aboutMobileDeveloper": { - "description": "Role description for mobile dev" - }, - "albumFolderYearAlbum": "[Tahun] Album", - "@albumFolderYearAlbum": { - "description": "Album folder option with year" - }, - "cacheTitle": "Storage & Cache", - "@extensionPostProcessing": { - "description": "Capability - post-download processing" - }, - "extensionsNoMetadataProvider": "Tidak ada ekstensi dengan provider metadata", - "@extensionsNoMetadataProvider": { - "description": "Empty state - no metadata providers" - }, - "searchSortTitleZA": "Judul (Z-A)", - "@queueClearAllMessage": { - "description": "Clear queue confirmation" - }, - "audioAnalysisTitle": "Audio Quality Analysis", - "@audioAnalysisTitle": { - "description": "Title for audio analysis section" - }, - "@aboutReportIssueSubtitle": { - "description": "Subtitle for report issue" - }, - "@audioAnalysisSampleRate": { - "description": "Sample rate metric label" - }, - "@discographySelectedCount": { - "description": "Selection count badge", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "qualityFlacLosslessSubtitle": "16-bit / 44.1kHz", - "@qualityFlacLosslessSubtitle": { - "description": "Technical spec for lossless" - }, - "libraryScanFinalizing": "Finalizing library...", - "@libraryScanFinalizing": { - "description": "Status shown after file scanning finishes but library persistence is still running" - }, - "@trackEditMetadata": { - "description": "Menu action - edit embedded metadata" - }, - "@downloadNeteaseIncludeRomanization": { - "description": "Setting to include romanized lyrics from Netease" - }, - "@optionsArtistTagModeJoinedSubtitle": { - "description": "Subtitle for joined artist tag mode" - }, - "regionCountryDE": "Germany", - "@regionCountryDE": { - "description": "Country name for SongLink region picker" - }, - "optionsAutoFallback": "Layanan Cadangan", - "@optionsAutoFallback": { - "description": "Auto-retry with other services" - }, - "@trackMetadataPlay": { - "description": "Action button - play track" - }, - "settingsFiles": "Files & Folders", - "@settingsFiles": { - "description": "Settings menu item - file and folder settings" - }, - "aboutMobileDeveloper": "Pengembang versi mobile", - "@trackDownloaded": { - "description": "Metadata label - download date" - }, - "homeSkipAlreadyDownloaded": "Skip already downloaded songs", - "@homeSkipAlreadyDownloaded": { - "description": "Checkbox label in import dialog to skip already-downloaded songs" - }, - "dialogUninstall": "Copot", - "@dialogUninstall": { - "description": "Dialog button - uninstall extension" - }, - "collectionDeletePlaylist": "Delete playlist", - "@collectionDeletePlaylist": { - "description": "Action to delete playlist" - }, - "trackCoverOnline": "Online cover", - "@trackCoverOnline": { - "description": "Label shown when metadata autofill downloaded cover art from the internet" - }, - "downloadTitle": "Unduhan", - "@downloadTitle": { - "description": "Download settings page title" - }, - "searchArtists": "Artis", - "@searchArtists": { - "description": "Search result category - artists" - }, - "extensionUrlHandler": "Penanganan URL", - "@extensionUrlHandler": { - "description": "Capability - handles URLs" - }, - "@timeHoursAgo": { - "description": "Relative time - hours ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "editMetadataAdvanced": "Advanced", - "@editMetadataAdvanced": { - "description": "Expandable section label for advanced metadata fields" - }, - "@actionSelectAll": { - "description": "Action button - select all items" - }, - "timeMinutesAgo": "{count, plural, =1{1 minute ago} other{{count} minutes ago}}", - "@timeMinutesAgo": { - "description": "Relative time - minutes ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "regionCountryXK": "Kosovo", - "@downloadAskQualitySubtitle": { - "description": "Subtitle for ask quality toggle" - }, - "setupLanguageSystemDefault": "Bawaan Sistem", - "@setupLanguageSystemDefault": { - "description": "Option to use the system language" - }, - "@updateAvailable": { - "description": "Update dialog title" - }, - "cacheEntries": "{count} entries", - "@cacheEntries": { - "description": "Track cache entry count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@notifLibraryScanExcluded": { - "description": "Library scan complete suffix - excluded track count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionsMetadataPrioritySubtitle": "Atur urutan sumber pencarian & metadata", - "@extensionsMetadataPrioritySubtitle": { - "description": "Subtitle for metadata priority" - }, - "downloadedAlbumSelectToDelete": "Pilih lagu untuk dihapus", - "@downloadedAlbumSelectToDelete": { - "description": "Placeholder when nothing selected" - }, - "@dialogClearHistoryTitle": { - "description": "Dialog title - clear download history" - }, - "tutorialSettingsTip1": "Ubah lokasi unduhan dan pengaturan folder", - "@tutorialSettingsTip1": { - "description": "Tutorial settings tip 1" - }, - "@extensionsInstalledSuccess": { - "description": "Success message after install" - }, - "allFilesAccessDisabledSubtitle": "Limited to media folders only", - "@allFilesAccessDisabledSubtitle": { - "description": "Subtitle when all files access is disabled" - }, - "@appearanceHistoryViewList": { - "description": "List layout option" - }, - "@notifAlreadyInLibraryCount": { - "description": "Notification title when track is already in library, with count", - "placeholders": { - "completed": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "@libraryFilterAll": { - "description": "Filter chip - show all library items" - }, - "settingsDownload": "Unduhan", - "settingsFilesSubtitle": "Download location, filename, folder structure", - "@settingsFilesSubtitle": { - "description": "Subtitle for files & folders settings" - }, - "@libraryFilterSort": { - "description": "Filter section - sort order" - }, - "metadataProvidersSubtitle": "Drag to set search and metadata source order", - "@extensionPermissions": { - "description": "Section header - required permissions" - }, - "selectionSelectToDelete": "Pilih lagu untuk dihapus", - "@libraryExternalPlayerSubtitle": { - "description": "Subtitle for external player option" - }, - "extensionVerificationOpenBrowser": "Open browser", - "@extensionVerificationOpenBrowser": { - "description": "Button to open the extension verification URL in a browser" - }, - "@trackConvertConfirmMessageLossless": { - "description": "Confirmation dialog message for lossless-to-lossless conversion", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - } - } - }, - "@snackbarAddedTracksToQueue": { - "description": "Snackbar - multiple tracks added to queue", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@backupContentsWishlist": { - "description": "Backup contents row for wishlist tracks count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@cacheCleanupUnusedSubtitle": { - "description": "Subtitle for cleanup unused data action" - }, - "trackLabel": "Label", - "@trackLabel": { - "description": "Metadata label - record label" - }, - "@collectionAddedToLoved": { - "description": "Snackbar after adding track to loved folder", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "regionCountryGB": "United Kingdom", - "dialogCancel": "Batal", - "@dialogCancel": { - "description": "Dialog button - cancel action" - }, - "@folderOrganizationByArtistAlbumSubtitle": { - "description": "Subtitle for nested folder option" - }, - "@notifAllDownloadsComplete": { - "description": "Notification title when all downloads finish successfully" - }, - "setupEnableNotifications": "Aktifkan Notifikasi", - "@setupEnableNotifications": { - "description": "Button to enable notifications" - }, - "@notifFinalizingTrack": { - "description": "Notification title while finalizing (embedding metadata) a track", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "@downloadLossy320FormatDesc": { - "description": "Description in the lossy format picker" - }, - "filenameFormat": "Format Nama File", - "@filenameFormat": { - "description": "Setting title - filename pattern" - }, - "libraryRecentlyAdded": "Baru Ditambahkan", - "libraryDownloads": "Unduhan", - "libraryNoActiveDownloads": "Tidak ada unduhan aktif", - "librarySearchHint": "Cari di koleksi musik", - "libraryEmptyCollection": "Musikmu akan muncul di sini", - "historySearchHint": "Cari riwayat...", - "@historySearchHint": { - "description": "Search bar placeholder in history" - }, - "@tutorialReadyMessage": { - "description": "Tutorial completion message" - }, - "cacheTempDirectoryDesc": "Temporary files from downloads and audio conversion.", - "@cacheTempDirectoryDesc": { - "description": "Description of what temporary directory contains" - }, - "@trackSaveLyrics": { - "description": "Menu action - save lyrics as .lrc file" - }, - "@notifDownloadsFinished": { - "description": "Notification title when queue finishes with some failures", - "placeholders": { - "completed": { - "type": "int" - }, - "failed": { - "type": "int" - } - } - }, - "@historyFilterAlbums": { - "description": "Filter chip - show albums only" - }, - "trackEmbedLyrics": "Sematkan Lirik", - "@trackEmbedLyrics": { - "description": "Action - embed lyrics into audio file" - }, - "@downloadPrimaryArtistOnlyOff": { - "description": "Status label when primary-artist-only folder naming is disabled" - }, - "@trackReEnrichFieldTrackInfo": { - "description": "Checkbox label for track info in re-enrich" - }, - "snackbarHistoryCleared": "Riwayat dihapus", - "downloadNetworkCompatibilityModeDisabled": "Using standard network settings", - "@artistPopular": { - "description": "Section header for popular/top tracks" - }, - "@trackFetchOnlineLyrics": { - "description": "Action - fetch lyrics from online providers" - }, - "extensionLyricsProvider": "Provider Lirik", - "@extensionLyricsProvider": { - "description": "Capability - provides lyrics" - }, - "historyFilterAll": "Semua", - "@historyFilterAll": { - "description": "Filter chip - show all items" - }, - "tutorialSearchTitle": "Menemukan Musik", - "@lyricsModeExternal": { - "description": "Lyrics mode option - separate LRC file" - }, - "@actionDismiss": { - "description": "Generic action - dismiss" + "trackOpenInDeezer": "Buka di Deezer", + "@trackOpenInDeezer": { + "description": "Action - open track in Deezer app" }, "trackOpenInSpotify": "Buka di Spotify", "@trackOpenInSpotify": { "description": "Action - open track in Spotify app" }, - "@libraryClear": { - "description": "Button to clear all library entries" + "trackTrackName": "Nama lagu", + "@trackTrackName": { + "description": "Metadata label - track title" }, - "discographyFailedToFetch": "Failed to fetch some albums", - "@filenameShowAdvancedTagsDescription": { - "description": "Description for advanced filename tag toggle" + "trackArtist": "Artis", + "@trackArtist": { + "description": "Metadata label - artist name" }, - "@storeUpdate": { - "description": "Update available button" + "trackAlbumArtist": "Artis album", + "@trackAlbumArtist": { + "description": "Metadata label - album artist" }, - "collectionPlaylistTracks": "{count, plural, =1{1 track} other{{count} tracks}}", - "@collectionPlaylistTracks": { - "description": "Track count label for custom playlists", - "placeholders": { - "count": { - "type": "int" - } - } + "trackAlbum": "Album", + "@trackAlbum": { + "description": "Metadata label - album name" }, - "optionsPrimaryProviderSubtitle": "Layanan yang digunakan untuk mencari berdasarkan nama lagu atau album", - "@optionsPrimaryProviderSubtitle": { - "description": "Subtitle for primary provider" + "trackTrackNumber": "Nomor lagu", + "@trackTrackNumber": { + "description": "Metadata label - track number" }, - "@downloadEmbedLyricsDisabled": { - "description": "Subtitle when lyrics embedding is blocked by metadata toggle" + "trackDiscNumber": "Nomor disc", + "@trackDiscNumber": { + "description": "Metadata label - disc number" }, - "@librarySourceLocal": { - "description": "Badge for tracks from local library scan" + "trackDuration": "Durasi", + "@trackDuration": { + "description": "Metadata label - track length" }, - "@searchSortDurationLong": { - "description": "Sort option - longest duration first" - }, - "@downloadFilterContributingDisabled": { - "description": "Subtitle when contributing artist filter is off" - }, - "queueDownloadingCount": "Downloading ({count})", - "@queueDownloadingCount": { - "description": "Header for active downloads section with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionVerificationBrowserInApp": "In-app", "trackAudioQuality": "Kualitas audio", "@trackAudioQuality": { "description": "Metadata label - audio quality" @@ -2234,1014 +1658,105 @@ "@trackReplayGainAlbumPeak": { "description": "Metadata label - ReplayGain album peak" }, - "libraryQualityLabelFileFormat": "Format berkas", - "libraryRemovedMissingFiles": "Removed {count} missing files from library", - "@libraryRemovedMissingFiles": { - "description": "Snackbar after cleanup", - "placeholders": { - "count": { - "type": "int" - } - } + "libraryQualityLabelFileFormat": "Format file", + "@libraryQualityLabelFileFormat": { + "description": "Library audio quality label mode that shows the detected file format" }, - "collectionFavoriteArtistsEmptyTitle": "No favorite artists yet", - "@collectionFavoriteArtistsEmptyTitle": { - "description": "Favorite artists empty state title" + "trackReleaseDate": "Tanggal rilis", + "@trackReleaseDate": { + "description": "Metadata label - release date" }, - "@errorInvalidFolderSelected": { - "description": "Error when the selected folder is invalid" + "trackGenre": "Genre", + "@trackGenre": { + "description": "Metadata label - music genre" }, - "@searchSortArtistZA": { - "description": "Sort option - artist descending" + "trackLabel": "Label", + "@trackLabel": { + "description": "Metadata label - record label" }, - "snackbarAddedTracksToLoved": "Added {count} tracks to Loved", - "@snackbarAddedTracksToLoved": { - "description": "Snackbar after adding multiple tracks to Loved folder", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cancelDownloadContent": "This will cancel the active download for \"{trackName}\".", - "@cancelDownloadContent": { - "description": "Dialog body when confirming cancellation of an active download", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "settingsCacheSubtitle": "View size and clear cached data", - "@settingsCacheSubtitle": { - "description": "Subtitle for cache management menu" - }, - "notifLibraryScanCompleteBody": "{count} tracks indexed", - "@cacheSizeWithFiles": { - "description": "Cache size and file count", - "placeholders": { - "size": { - "type": "String" - }, - "count": { - "type": "int" - } - } - }, - "@downloadAskBeforeDownload": { - "description": "Setting - show quality picker" - }, - "@extensionHealthDegraded": { - "description": "Extension service health status - degraded" - }, - "@sectionPerformance": { - "description": "Settings section header" - }, - "@trackCoverCurrent": { - "description": "Label for the currently embedded cover preview" - }, - "discographySelectAlbums": "Pilih Album...", - "@discographySelectAlbums": { - "description": "Option - manually select albums to download" - }, - "aboutAppDescription": "Cari metadata musik, kelola ekstensi, dan atur perpustakaan Anda.", - "@aboutAppDescription": { - "description": "App description in header card" - }, - "extensionCustomTrackMatching": "Pencocokan Lagu Kustom", - "@extensionCustomTrackMatching": { - "description": "Capability - custom track matching algorithm" - }, - "@editMetadataSelectNone": { - "description": "Button to clear selected fields for auto-fill" - }, - "@trackPlayNext": { - "description": "Menu action to play a track as the next queue item" - }, - "extensionCapabilities": "Kemampuan", - "@extensionCapabilities": { - "description": "Section header - extension features" - }, - "@downloadSelectServiceToEnable": { - "description": "Subtitle when quality picker is disabled due to extension service" - }, - "logIssueRateLimitedDescription": "Too many requests to the service", - "@logIssueRateLimitedDescription": { - "description": "Diagnostic badge description for rate limiting" - }, - "@actionResume": { - "description": "Action button - resume download" - }, - "@updateDownloadInstall": { - "description": "Update button - download and install" - }, - "downloadLossy320Format": "Format Lossy 320kbps", - "@downloadLossy320Format": { - "description": "Title of the lossy format picker bottom sheet" - }, - "settingsMetadataSubtitle": "Cover art, tags, ReplayGain, providers", + "trackCopyright": "Hak cipta", "@trackCopyright": { "description": "Metadata label - copyright information" }, - "@snackbarExtensionInstalled": { - "description": "Snackbar - extension installed successfully", - "placeholders": { - "extensionName": { - "type": "String" - } - } + "trackDownloaded": "Terdownload", + "@trackDownloaded": { + "description": "Metadata label - download date" }, - "@regionCountryJP": { - "description": "Country name for SongLink region picker" + "trackCopyLyrics": "Salin lirik", + "@trackCopyLyrics": { + "description": "Action - copy lyrics to clipboard" }, - "trackReEnrichOnlineSubtitle": "Search metadata online and embed into file", - "@trackReEnrichOnlineSubtitle": { - "description": "Subtitle for re-enrich metadata action for local items" - }, - "trackReEnrichBatchSubtitle": "Pilih pembaruan online atau manual, lalu tinjau setiap perubahan sebelum ditulis", - "nowPlayingNothingPlaying": "Nothing is playing", - "@nowPlayingNothingPlaying": { - "description": "Empty state when no track is currently playing" - }, - "tutorialDownloadDesc": "Pick an available quality, start the download, and follow its progress in the queue.", - "@tutorialDownloadDesc": { - "description": "Tutorial download page description" - }, - "@appearanceTitle": { - "description": "Appearance settings page title" - }, - "@backupExportSectionDescription": { - "description": "Description of what a backup contains" - }, - "@downloadLossyOpus128": { - "description": "Lossy format option - Opus 128kbps" - }, - "@logFilterSection": { - "description": "Filter section title" - }, - "trackReEnrichSuccess": "Metadata re-enriched successfully", - "trackReEnrichMetadataSaved": "Metadata disimpan", - "trackReEnrichLyricsUpdated": "Lirik diperbarui", - "trackReEnrichLyricsPreserved": "Lirik baru tidak ditemukan; lirik lama dipertahankan", - "trackReEnrichLyricsDisabled": "Lirik tidak diperbarui: unduhan lirik dinonaktifkan di Pengaturan", - "@trackReEnrichSuccess": { - "description": "Snackbar after successful re-enrichment" - }, - "backupContentsHistory": "{count} history {count, plural, =1{item} other{items}}", - "@backupContentsHistory": { - "description": "Backup contents row for history count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarAddedToQueue": "Menambahkan \"{trackName}\" ke antrian", - "@snackbarAddedToQueue": { - "description": "Snackbar - track added to download queue", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "libraryAutoScanOnOpen": "Every app open", - "@libraryAutoScanOnOpen": { - "description": "Auto scan when app opens" - }, - "audioAnalysisChannels": "Channels", - "@audioAnalysisChannels": { - "description": "Channels metric label" - }, - "appearanceHistoryViewList": "Daftar", - "updateDownloadInstall": "Unduh & Pasang", - "@libraryShowDuplicateIndicator": { - "description": "Toggle for duplicate indicator in search" - }, - "extensionsHomeFeedOff": "Off", - "@extensionsHomeFeedOff": { - "description": "Extensions page - home feed provider option: off" - }, - "searchSortTitleAZ": "Judul (A-Z)", - "@searchSortTitleAZ": { - "description": "Sort option - title ascending" - }, - "collectionRemovedFromLoved": "\"{trackName}\" removed from Loved", - "@collectionRemovedFromLoved": { - "description": "Snackbar after removing track from loved folder", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "sectionAudioQuality": "Kualitas Audio", - "@sectionAudioQuality": { - "description": "Settings section header" - }, - "trackConvertSuccess": "Converted to {format} successfully", - "@trackConvertSuccess": { - "description": "Snackbar after successful conversion", - "placeholders": { - "format": { - "type": "String" - } - } - }, - "dialogUninstallExtensionMessage": "Apakah Anda yakin ingin menghapus {extensionName}?", - "@dialogUninstallExtensionMessage": { - "description": "Dialog message - uninstall specific extension", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "downloadNativeWorkerSubtitle": "Layanan latar belakang Android untuk unduhan ekstensi", - "@downloadNativeWorkerSubtitle": { - "description": "Setting subtitle for Android native download worker" - }, - "storeUpdate": "Perbarui", - "libraryFilterMetadataMissingAny": "Missing any metadata", - "@libraryFilterMetadataMissingAny": { - "description": "Filter option - items missing any tracked metadata field" - }, - "@selectionBatchConvertConfirmMessageLosslessCapped": { - "description": "Confirmation dialog message for capped lossless batch conversion", - "placeholders": { - "count": { - "type": "int" - }, - "format": { - "type": "String" - }, - "quality": { - "type": "String" - } - } - }, - "editMetadataAutoFillDesc": "Choose a metadata extension, select fields, then review its data before applying", - "@editMetadataAutoFillDesc": { - "description": "Description for the auto-fill section" - }, - "editMetadataAutoFillSource": "Metadata source", - "@editMetadataAutoFillSource": { - "description": "Label for the metadata extension selector in online auto-fill" - }, - "editMetadataAutoFillSourceAutomatic": "Automatic (provider priority)", - "@editMetadataAutoFillSourceAutomatic": { - "description": "Automatic source option that follows configured metadata provider priority" - }, - "editMetadataAutoFillFind": "Find metadata", - "@editMetadataAutoFillFind": { - "description": "Button label for finding an online metadata candidate" - }, - "editMetadataAutoFillPreview": "Data from {source}", - "@editMetadataAutoFillPreview": { - "description": "Title for the online metadata preview", + "trackLyricsSource": "Sumber: {source}", + "@trackLyricsSource": { + "description": "Label showing the lyrics source/provider", "placeholders": { "source": { "type": "String" } } }, - "editMetadataAutoFillCoverAvailable": "Cover artwork available", - "@editMetadataAutoFillCoverAvailable": { - "description": "Preview value when the selected metadata source provides cover artwork" + "trackLyricsNotAvailable": "Lirik tidak tersedia untuk lagu ini", + "@trackLyricsNotAvailable": { + "description": "Message when lyrics not found" }, - "editMetadataAutoFillApply": "Apply selected data", - "@editMetadataAutoFillApply": { - "description": "Button label for applying the previewed metadata" + "trackLyricsNotInFile": "Tidak ditemukan lirik dalam file ini", + "@trackLyricsNotInFile": { + "description": "Message when no embedded lyrics in audio file" }, - "editMetadataAutoFillDoneFromSource": "Filled {count} {count, plural, =1{field} other{fields}} from {source}", - "@editMetadataAutoFillDoneFromSource": { - "description": "Snackbar confirming fields applied from a selected metadata source", - "placeholders": { - "count": { - "type": "int" - }, - "source": { - "type": "String" - } - } + "trackFetchOnlineLyrics": "Ambil dari Online", + "@trackFetchOnlineLyrics": { + "description": "Action - fetch lyrics from online providers" }, - "@lyricsProviderExtensionDesc": { - "description": "Generic description for extension-based lyrics providers" + "trackLyricsTimeout": "Permintaan habis waktu. Coba lagi nanti.", + "@trackLyricsTimeout": { + "description": "Message when lyrics request times out" }, - "downloadSongLinkRegion": "SongLink Region", - "@downloadSongLinkRegion": { - "description": "Setting for SongLink region used during fallback resolution" + "trackLyricsLoadFailed": "Gagal memuat lirik", + "@trackLyricsLoadFailed": { + "description": "Message when lyrics loading fails" }, - "shareSheetNoExtensions": "No other compatible services", - "@shareSheetNoExtensions": { - "description": "Empty state when no extensions can be searched for cross-service links" + "trackEmbedLyrics": "Sematkan Lirik", + "@trackEmbedLyrics": { + "description": "Action - embed lyrics into audio file" }, - "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": { - "description": "Confirmation dialog body before queueing FLAC redownloads for local tracks", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "tooltipAddToPlaylist": "Add to Playlist", - "@tooltipAddToPlaylist": { - "description": "Tooltip for the Add to Playlist button" - }, - "@snackbarAddedToQueueGeneric": { - "description": "Snackbar when a track is added to the playback queue without naming it" - }, - "@tutorialSettingsTip2": { - "description": "Tutorial settings tip 2" - }, - "extensionPermissions": "Izin", - "releaseTypeSingle": "Single", - "aboutTelegramChannelSubtitle": "Pengumuman dan pembaruan", - "@aboutTelegramChannelSubtitle": { - "description": "Subtitle for Telegram channel" - }, - "@dialogDisableAndClear": { - "description": "Confirmation action to disable download history and clear existing entries" - }, - "@homeSearchHintProvider": { - "description": "Placeholder for the main search field when a provider is selected", - "placeholders": { - "providerName": { - "type": "String" - } - } - }, - "metadataProvidersTitle": "Metadata Provider Priority", - "@metadataProvidersTitle": { - "description": "Settings item title for metadata provider order" - }, - "trackAddToQueue": "Add to queue", - "audioAnalysisDecodedFormat": "Decoded Format", - "@audioAnalysisDecodedFormat": { - "description": "Decoded sample format metric label" - }, - "@editMetadataSelectEmpty": { - "description": "Button to select only fields that are currently empty" - }, - "collectionAlreadyInPlaylist": "Already in \"{playlistName}\"", - "discographyAlbumsOnlySubtitle": "{count} lagu dari {albumCount} album", - "@discographyAlbumsOnlySubtitle": { - "description": "Subtitle showing album tracks count", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } - }, - "setupNotificationEnable": "Aktifkan Notifikasi", - "@setupNotificationEnable": { - "description": "Button to enable notifications" - }, - "settingsAppearanceSubtitle": "Tema, warna, tampilan", - "@settingsAppearanceSubtitle": { - "description": "Appearance settings description" - }, - "@notifUpdateFailedBody": { - "description": "Notification body when app update download fails" - }, - "@aboutOriginalCreator": { - "description": "Role description for original creator" - }, - "libraryBuiltInPreviewPlayer": "Built-in preview player", - "@libraryBuiltInPreviewPlayer": { - "description": "Setting option to use the built-in preview player" - }, - "tooltipPlay": "Putar", - "@tooltipPlay": { - "description": "Tooltip - play button" - }, - "@safMigrationMessage2": { - "description": "Second paragraph of SAF migration dialog" - }, - "@extensionsSearchProvider": { - "description": "Setting - search provider selection" - }, - "libraryAboutDescription": "Memindai koleksi musik yang sudah ada untuk mendeteksi duplikat saat mengunduh. Mendukung format FLAC, ALAC, M4A, MP3, Opus, OGG, WAV, AIFF, dan APE. Metadata dibaca dari tag file jika tersedia.", - "@libraryAboutDescription": { - "description": "Description of local library feature" - }, - "downloadAskBeforeDownload": "Tanya Sebelum Unduh", - "nowPlayingNoMetadata": "No metadata available", - "@nowPlayingNoMetadata": { - "description": "Empty state when track metadata cannot be loaded" + "trackLyricsEmbedded": "Lirik berhasil disematkan", + "@trackLyricsEmbedded": { + "description": "Snackbar - lyrics saved to file" }, "trackInstrumental": "Lagu instrumental", "@trackInstrumental": { "description": "Message when track is instrumental (no lyrics)" }, - "@collectionWishlistEmptyTitle": { - "description": "Wishlist empty state title" + "trackCopiedToClipboard": "Tersalin ke clipboard", + "@trackCopiedToClipboard": { + "description": "Snackbar - content copied" }, - "selectionBatchConvertConfirmMessageLosslessCapped": "Convert {count} {count, plural, =1{track} other{tracks}} to {format} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original files will be deleted after conversion.", - "downloadDeduplication": "Skip Duplicate Downloads", - "libraryFilterSortOldest": "Oldest", - "@libraryFilterSortOldest": { - "description": "Sort option - oldest first" + "trackDeleteConfirmTitle": "Hapus dari perangkat?", + "@trackDeleteConfirmTitle": { + "description": "Delete confirmation title" }, - "setupSkip": "Lewati untuk sekarang", - "@setupSkip": { - "description": "Skip current step button" + "trackDeleteConfirmMessage": "Ini akan menghapus file unduhan secara permanen dan menghapusnya dari riwayat Anda.", + "@trackDeleteConfirmMessage": { + "description": "Delete confirmation message" }, - "@setupFolderDescription": { - "description": "Explanation for folder selection" - }, - "@settingsLogsSubtitle": { - "description": "Logs settings description" - }, - "storeNewRepoUrlLabel": "URL Repositori Baru", - "@storeNewRepoUrlLabel": { - "description": "Label for the new repository URL field inside the dialog" - }, - "cacheClearConfirmMessage": "This will clear cached data for {target}. Downloaded music files will not be deleted.", - "@cacheClearConfirmMessage": { - "description": "Dialog message before clearing selected cache", - "placeholders": { - "target": { - "type": "String" - } - } - }, - "trackMetadataPlay": "Putar", - "@libraryEnableLocalLibrary": { - "description": "Toggle to enable library scanning" - }, - "optionsUpdateChannel": "Saluran Pembaruan", - "@optionsUpdateChannel": { - "description": "Stable vs preview releases" - }, - "@downloadCreatePlaylistSourceFolderDisabled": { - "description": "Subtitle when playlist folder is disabled" - }, - "@extensionRefreshStatus": { - "description": "Tooltip for refreshing extension service health status" - }, - "backupRestoreRestartHint": "Restart the app to make sure every change is applied.", - "@backupRestoreRestartHint": { - "description": "Hint shown after restoring that an app restart is recommended" - }, - "@snackbarExtensionInstalledEnable": { - "description": "Snackbar after installing an extension from the repo tab", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "settingsAutoExportFailedSubtitle": "Simpan unduhan yang gagal ke file TXT secara otomatis", - "@settingsAutoExportFailedSubtitle": { - "description": "Subtitle for auto-export setting" - }, - "searchSortArtistAZ": "Artis (A-Z)", - "@searchSortArtistAZ": { - "description": "Sort option - artist ascending" - }, - "editMetadataFieldAlbumArtist": "Album Artist", - "@editMetadataFieldAlbumArtist": { - "description": "Chip label for album artist field in auto-fill selector" - }, - "@queueEmptyHistory": { - "description": "Empty state title when download history is empty" - }, - "@dialogDisableHistoryMessage": { - "description": "Confirmation dialog message shown before disabling download history" - }, - "queueFlacNoReliableMatches": "No reliable online matches found for the selection", - "@queueFlacNoReliableMatches": { - "description": "Snackbar when no safe FLAC redownload matches were found" - }, - "trackOpenInDeezer": "Buka di Deezer", - "@trackOpenInDeezer": { - "description": "Action - open track in Deezer app" - }, - "setupChooseFromFilesSubtitle": "Pilih lokasi iCloud atau lainnya", - "@setupChooseFromFilesSubtitle": { - "description": "Subtitle for file picker" - }, - "artistMonthlyListeners": "{count} pendengar bulanan", - "@artistMonthlyListeners": { - "description": "Monthly listener count display", - "placeholders": { - "count": { - "type": "String", - "description": "Formatted listener count" - } - } - }, - "@downloadLossyAacSubtitle": { - "description": "Subtitle for AAC/M4A 320kbps lossy option" - }, - "cacheSectionStorage": "Cached Data", - "@cacheSectionStorage": { - "description": "Section header for cache entries" - }, - "@libraryAutoScanWeekly": { - "description": "Auto scan once per week" - }, - "tutorialDownloadCompletedSemantics": "Download completed", - "@tutorialDownloadCompletedSemantics": { - "description": "Accessibility label for completed download state in tutorial demo" - }, - "@logNoLogsYet": { - "description": "Empty state title" - }, - "@selectionDeletePlaylistsCount": { - "description": "Button label for deleting multiple selected playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadSeparateSinglesEnabled": "Singles and EPs saved in a separate folder", - "@downloadSeparateSinglesEnabled": { - "description": "Subtitle when separate singles folder is on" - }, - "setupAppDocumentsFolder": "Folder Documents Aplikasi", - "@setupAppDocumentsFolder": { - "description": "iOS documents folder option" - }, - "storeLoadError": "Gagal memuat repositori", - "settingsDownloadNetwork": "Jaringan Unduhan", - "metadataSaveFailedStorage": "Failed to write metadata back to storage", - "@logAutoScrollOff": { - "description": "Tooltip when auto-scroll is disabled on the log screen" - }, - "@trackConvertFormat": { - "description": "Menu item - convert audio format" - }, - "optionsArtistTagModeJoined": "Nilai gabungan tunggal", - "@optionsArtistTagModeJoined": { - "description": "Artist tag mode option that joins multiple artists into one value" + "dateToday": "Hari ini", + "@dateToday": { + "description": "Relative date - today" }, + "dateYesterday": "Kemarin", "@dateYesterday": { "description": "Relative date - yesterday" }, - "@settingsExtensionsSubtitle": { - "description": "Extensions settings description" - }, - "searchSortArtistZA": "Artis (Z-A)", - "@extensionSettings": { - "description": "Section header - extension settings" - }, - "@extensionOauthConnectHint": { - "description": "Hint for an OAuth login link field before connecting Spotify" - }, - "@notifUpdateReady": { - "description": "Notification title when app update download is complete" - }, - "@regionCountryMX": { - "description": "Country name for SongLink region picker" - }, - "@nowPlayingOpenInExternalPlayer": { - "description": "Menu item to open the current track in an external player" - }, - "trackConvertDithering": "Dithering", - "@trackConvertDithering": { - "description": "Section label for lossless conversion dithering options" - }, - "settingsDownloadSubtitle": "Layanan, kualitas, cadangan", - "@settingsDownloadSubtitle": { - "description": "Download settings description" - }, - "libraryLastScanned": "Last scanned: {time}", - "@libraryLastScanned": { - "description": "Last scan time display", - "placeholders": { - "time": { - "type": "String" - } - } - }, - "setupIosEmptyFolderWarning": "Batasan iOS: Folder kosong tidak dapat dipilih. Pilih folder dengan minimal satu file.", - "@setupIosEmptyFolderWarning": { - "description": "iOS folder selection warning" - }, - "@storeAddRepoDescription": { - "description": "Store setup screen - explanatory text" - }, - "@snackbarFailedToInstallNamed": { - "description": "Snackbar when extension install fails in the repo tab", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "@collectionAddedTracksToPlaylist": { - "description": "Snackbar after adding multiple tracks to a playlist", - "placeholders": { - "count": { - "type": "int" - }, - "playlistName": { - "type": "String" - } - } - }, - "updateNew": "Baru", - "@updateNew": { - "description": "Label for new version" - }, - "settingsExtensionsSubtitle": "Kelola provider unduhan", - "@albumFolderArtistAlbumSinglesSubtitle": { - "description": "Folder structure example" - }, - "trackReEnrichSelectAll": "Select All", - "@trackReEnrichSelectAll": { - "description": "Select all fields checkbox in re-enrich" - }, - "@extensionsUninstall": { - "description": "Uninstall extension button" - }, - "@downloadUseAlbumArtistForFoldersTrackSubtitle": { - "description": "Subtitle when track artist is used for folder names" - }, - "@logIssueNetworkErrorLabel": { - "description": "Diagnostic badge label for generic network errors" - }, - "albumFolderArtistYearAlbumSubtitle": "Albums/Nama Artis/[2005] Nama Album/", - "@albumFolderArtistYearAlbumSubtitle": { - "description": "Folder structure example" - }, - "itemCount": "{count} {count, plural, =1{item} other{items}}", - "@itemCount": { - "description": "Generic item count label", + "dateDaysAgo": "{count} hari lalu", + "@dateDaysAgo": { + "description": "Relative date - days ago", "placeholders": { "count": { "type": "int" } } }, - "discographyFetchingTracks": "Memuat lagu...", - "@discographyFetchingTracks": { - "description": "Progress - fetching album tracks" - }, - "@libraryFolder": { - "description": "Folder selection setting" - }, - "queueEmptyAlbums": "No album downloads", - "@queueEmptyAlbums": { - "description": "Empty state title when no album downloads exist" - }, - "@metadataProviderPriorityDescription": { - "description": "Metadata priority page description" - }, - "@extensionVerificationHelpTitleManual": { - "description": "Dialog title when automatic browser launch for verification fails" - }, - "extensionError": "Terjadi kesalahan", - "@extensionError": { - "description": "Extension detail - error message" - }, - "@trackLyricsLoadFailed": { - "description": "Message when lyrics loading fails" - }, - "@downloadedAlbumDeleteCount": { - "description": "Delete button text with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@extensionsNoHomeFeedExtensions": { - "description": "Extensions page - shown when no installed extension has home feed" - }, - "@collectionArtistCount": { - "description": "Artist count label for favorite artists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "backupContentsArtists": "{count, plural, =1{1 favorite artist} other{{count} favorite artists}}", - "@backupContentsArtists": { - "description": "Backup contents row for favorite artists count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@trackRemoveFromDevice": { - "description": "Action - delete downloaded file" - }, - "lyricsProvidersEnabledSection": "Enabled ({count})", - "@lyricsProvidersEnabledSection": { - "description": "Section header for enabled providers", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@cueSplitTitle": { - "description": "Title for CUE split bottom sheet" - }, - "@downloadedAlbumSelectedCount": { - "description": "Selection count indicator", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@trackOptionRemoveFromWishlist": { - "description": "Bottom sheet action label - remove track from wishlist" - }, - "notifDownloadingTrack": "Downloading {trackName}", - "@notifDownloadingTrack": { - "description": "Notification title while downloading a track", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "@discographySkippedDownloaded": { - "description": "Snackbar - with skipped tracks count", - "placeholders": { - "added": { - "type": "int" - }, - "skipped": { - "type": "int" - } - } - }, - "@tutorialSettingsTip3": { - "description": "Tutorial settings tip 3" - }, - "@announcementUnableToOpenLink": { - "description": "Snackbar shown when an announcement CTA link cannot be opened" - }, - "trackReleaseDate": "Tanggal rilis", - "discographySelectedCount": "{count} dipilih", - "collectionArtistCount": "{count, plural, =1{1 artist} other{{count} artists}}", - "logIssueNetworkErrorLabel": "NETWORK ERROR", - "updateStartingDownload": "Memulai unduhan...", - "@updateStartingDownload": { - "description": "Update status - initializing" - }, - "trackDiscNumber": "Nomor disc", - "@trackDiscNumber": { - "description": "Metadata label - disc number" - }, - "optionsUsingExtension": "Menggunakan ekstensi: {extensionName}", - "@optionsUsingExtension": { - "description": "Shows active extension name", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "dialogDisableHistoryTitle": "Turn off download history?", - "tutorialWelcomeTip3": "Embed metadata, cover art, lyrics, and release information automatically", - "@tutorialWelcomeTip3": { - "description": "Tutorial welcome tip 3" - }, - "@collectionPlaylistEmptySubtitle": { - "description": "Playlist empty state subtitle" - }, - "@tutorialSearchHint": { - "description": "Placeholder shown in the tutorial search demo" - }, - "cleanupOrphanedDownloadsNone": "No orphaned entries found", - "discographySkippedDownloaded": "{added} added, {skipped} already downloaded", - "@updateDontRemind": { - "description": "Update button - skip this version" - }, - "@snackbarLoadingCueSheet": { - "description": "Snackbar while loading a CUE sheet file" - }, - "@dialogUninstallExtension": { - "description": "Dialog title - uninstall extension" - }, - "lyricsProvidersTitle": "Lyrics Provider Priority", - "@dialogRemove": { - "description": "Dialog button - remove item" - }, - "snackbarError": "Error: {error}", - "@snackbarError": { - "description": "Generic error snackbar with error detail", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "@sectionApp": { - "description": "Settings section header" - }, - "@libraryPlayback": { - "description": "Section header for playback settings in library settings" - }, - "@downloadPrimaryArtistOnlyOn": { - "description": "Status label when primary-artist-only folder naming is enabled" - }, - "lyricsProvidersDiscardContent": "You have unsaved changes that will be lost.", - "previewStop": "Hentikan pratinjau", - "@previewStop": { - "description": "Tooltip for the button that stops the playing track preview snippet" - }, - "trackConvertConfirmMessageLossless": "Convert from {sourceFormat} to {targetFormat}? (Lossless — no quality loss)\n\nThe original file will be deleted after conversion.", - "discographyAlbumsOnly": "Hanya Album", - "@discographyAlbumsOnly": { - "description": "Option - download only albums" - }, - "@editMetadataFieldCopyright": { - "description": "Chip label for copyright field in auto-fill selector" - }, - "extensionsFallbackSubtitle": "Pilih ekstensi unduhan terpasang mana yang dapat digunakan sebagai cadangan", - "aboutSocial": "Sosial", - "@aboutSocial": { - "description": "Section for social links" - }, - "audioAnalysisNyquist": "Nyquist", - "trackCoverSelected": "Selected cover", - "@trackCoverSelected": { - "description": "Label for the newly selected cover preview" - }, - "downloadDeduplicationEnabled": "Already-downloaded tracks will be skipped", - "@downloadDeduplicationEnabled": { - "description": "Subtitle when deduplication is on" - }, - "homeEmptyTitle": "Belum ada penyedia pencarian", - "@homeEmptyTitle": { - "description": "Title shown on home when no providers are available yet" - }, - "@extensionHealthUnknown": { - "description": "Extension service health status - unknown" - }, - "storeInstalled": "Terpasang", - "@storeInstalled": { - "description": "Already installed badge" - }, - "trackReplayGainSuccess": "Tag ReplayGain ditambahkan", - "@trackReplayGainSuccess": { - "description": "Snackbar message after ReplayGain tags written for a single track" - }, - "libraryShowDuplicateIndicatorSubtitle": "Show when searching for existing tracks", - "@collectionPlaylistRenamed": { - "description": "Snackbar after renaming playlist" - }, - "@trackConvertResamplerSoxr": { - "description": "Lossless conversion SoX resampler option" - }, - "@dialogUnsavedChanges": { - "description": "Dialog message - unsaved changes" - }, - "dialogDownload": "Unduh", - "@dialogDownload": { - "description": "Confirm button in Download All dialog" - }, - "trackLyricsLoadFailed": "Gagal memuat lirik", - "@backupContentsTitle": { - "description": "Header above the list summarizing what the backup contains" - }, - "@safMigrationTitle": { - "description": "Title of SAF migration dialog" - }, - "@trackReEnrichFieldLyrics": { - "description": "Checkbox label for lyrics field in re-enrich" - }, - "setupPermissionDeniedMessage": "Izin ditolak. Harap berikan semua izin untuk melanjutkan.", - "@setupPermissionDeniedMessage": { - "description": "Error when permission denied" - }, - "settingsDownloadNetworkWifiOnly": "Hanya WiFi", - "@settingsDownloadNetworkWifiOnly": { - "description": "Network option - only use WiFi" - }, - "@backupIncludeSecrets": { - "description": "Toggle to include secret extension settings (tokens, API keys) in the backup" - }, - "@libraryFilterMetadataMissingAlbumArtist": { - "description": "Filter option - items missing album artist" - }, - "@extensionHealthServiceUnknown": { - "description": "Tooltip for unknown extension service health" - }, - "snackbarExtensionUpdated": "{extensionName} diperbarui.", - "@snackbarExtensionUpdated": { - "description": "Snackbar - extension updated successfully", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "homeEmptySubtitle": "Instal ekstensi untuk melanjutkan.", - "@settingsTitle": { - "description": "Settings screen title" - }, - "@libraryFilterMetadataIncorrectIsrcFormat": { - "description": "Filter option - items with an invalid ISRC format" - }, - "@notifLibraryScanComplete": { - "description": "Notification title when library scan finishes" - }, - "@logIssueIspBlockingLabel": { - "description": "Diagnostic badge label when ISP blocking is detected" - }, - "tutorialDownloadTitle": "Mengunduh Musik", - "@tutorialDownloadTitle": { - "description": "Tutorial download page title" - }, - "unknownTitle": "Unknown title", - "@unknownTitle": { - "description": "Fallback track title when metadata is missing" - }, - "navLibrary": "Pustaka", - "@navLibrary": { - "description": "Bottom navigation - Library tab" - }, - "@snackbarAlreadyDownloaded": { - "description": "Snackbar - track already exists", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "editMetadataSelectAll": "All", - "@editMetadataSelectAll": { - "description": "Button to select all fields for auto-fill" - }, - "storeEmptyNoExtensions": "Tidak ada ekstensi yang tersedia", - "@storeEmptyNoExtensions": { - "description": "Message when store has no extensions" - }, - "optionsUpdateChannelWarning": "Preview mungkin mengandung bug atau fitur belum lengkap", - "@optionsUpdateChannelWarning": { - "description": "Warning about preview channel" - }, - "@collectionPlaylistNameHint": { - "description": "Hint text for playlist name input" - }, - "notifLibraryScanComplete": "Library scan complete", - "editMetadataFieldIsrc": "ISRC", - "@editMetadataFieldIsrc": { - "description": "Chip label for ISRC field in auto-fill selector" - }, - "@libraryFolderHint": { - "description": "Placeholder when no folder selected" - }, - "homeSearchHintDefault": "Paste supported URL or search...", - "@homeSearchHintDefault": { - "description": "Default placeholder for the main search field on Home" - }, - "extensionsNoExtensionsSubtitle": "Pasang file .spotiflac-ext untuk menambahkan provider baru", - "@extensionsNoExtensionsSubtitle": { - "description": "Empty state subtitle" - }, - "@extensionEnterValue": { - "description": "Hint for editing an extension setting value" - }, - "backupRestoreConfirmTitle": "Restore this backup?", - "@backupRestoreConfirmTitle": { - "description": "Confirmation dialog title before restoring a backup" - }, - "@libraryScanSelectFolderFirst": { - "description": "Message when trying to scan without folder" - }, - "@qualityHiResFlac": { - "description": "Quality option - high resolution FLAC" - }, - "aboutSpecialThanks": "Terima Kasih Khusus", - "@aboutSpecialThanks": { - "description": "Section for special thanks" - }, - "storeInstall": "Pasang", - "@storeInstall": { - "description": "Install extension button" - }, - "@collectionWishlistEmptySubtitle": { - "description": "Wishlist empty state subtitle" - }, - "historyFilterAlbums": "Album", - "extensionCustomUrlHandlingSubtitle": "This extension can handle links from these sites", - "@extensionCustomUrlHandlingSubtitle": { - "description": "Extension detail subtitle for custom URL handling" - }, - "filenameShowAdvancedTagsDescription": "Aktifkan tag yang diformat untuk padding trek dan pola tanggal", - "@aboutReportIssue": { - "description": "Link to report bugs" - }, - "@folderOrganizationByPlaylist": { - "description": "Folder option - playlist folders" - }, + "dateWeeksAgo": "{count} minggu lalu", "@dateWeeksAgo": { "description": "Relative date - weeks ago", "placeholders": { @@ -3250,1043 +1765,221 @@ } } }, - "logEntriesFiltered": "Entri ({count} difilter)", - "@logEntriesFiltered": { - "description": "Log count with filter active", + "dateMonthsAgo": "{count} bulan lalu", + "@dateMonthsAgo": { + "description": "Relative date - months ago", "placeholders": { "count": { "type": "int" } } }, - "@lyricsModeDescription": { - "description": "Lyrics mode picker description" - }, - "@setupAppDocumentsFolderSubtitle": { - "description": "Subtitle for documents folder" - }, - "storeAddRepoButton": "Tambahkan Repositori", - "@storeAddRepoButton": { - "description": "Button to submit a new repository URL" - }, - "@collectionLovedEmptyTitle": { - "description": "Loved empty state title" - }, - "aboutReportIssue": "Laporkan masalah", - "snackbarFailedToWriteStorage": "Failed to write back to storage", - "@snackbarFailedToWriteStorage": { - "description": "Snackbar when writing metadata back to file fails" - }, - "errorInvalidFolderSelected": "Invalid folder selected", - "allFilesAccessDisabledMessage": "All Files Access disabled. The app will use limited storage access.", - "@allFilesAccessDisabledMessage": { - "description": "Snackbar message when user disables all files access" - }, - "downloadMusixmatchLanguageCode": "Language code", - "@downloadMusixmatchLanguageCode": { - "description": "Label for Musixmatch language input field" - }, - "dialogUnsavedChanges": "Anda memiliki perubahan yang belum disimpan. Apakah Anda ingin membuangnya?", - "setupChooseFromFiles": "Pilih dari Files", - "@setupChooseFromFiles": { - "description": "iOS file picker option" - }, - "@collectionFavoriteArtistsEmptySubtitle": { - "description": "Favorite artists empty state subtitle" - }, - "downloadLossy320FormatDesc": "Pilih format output untuk unduhan lossy 320kbps. Aliran data asli akan dikonversi ke format yang Anda pilih bila diperlukan.", - "@backupRestoreConfirmButton": { - "description": "Confirm button to proceed with restore" - }, - "@queueEmptyAlbumsSubtitle": { - "description": "Empty state subtitle for album downloads" - }, - "collectionRemovedFromWishlist": "\"{trackName}\" removed from Wishlist", - "@collectionRemovedFromWishlist": { - "description": "Snackbar after removing track from wishlist", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "extensionsInstalledSuccess": "Ekstensi berhasil dipasang", - "progressReadingCsv": "Membaca CSV...", - "@progressReadingCsv": { - "description": "Progress indicator - parsing CSV file" - }, - "artistReleases": "Releases", - "@artistReleases": { - "description": "Section header for all artist releases" - }, - "extensionVerificationBrowserTitle": "Verification browser", - "@optionsDefaultSearchTabSubtitle": { - "description": "Subtitle for the preferred default search tab setting" - }, - "optionsArtistTagModeJoinedSubtitle": "Tuliskan satu nilai ARTIS seperti \"Artis A, Artis B\" untuk kompatibilitas pemain maksimal.", - "downloadLossy320": "Lossy 320kbps", - "@downloadLossy320": { - "description": "Quality option label for lossy 320kbps" - }, - "queueFlacAction": "Queue FLAC", - "@queueFlacAction": { - "description": "Action/button label for queueing FLAC redownloads for local tracks" - }, - "@setupDownloadLocationIosMessage": { - "description": "iOS-specific folder info" - }, - "trackConvertOriginal": "Original", - "sectionLyricsProviderOptions": "Provider Options", - "nowPlayingTitle": "Now Playing", - "@nowPlayingTitle": { - "description": "Title for the now playing screen" - }, - "@extensionHealthChecksConfigured": { - "description": "Extension service health check count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@cacheClearAll": { - "description": "Button label to clear all caches" - }, - "a11yDeselectTrack": "Deselect track", - "@a11yDeselectTrack": { - "description": "Accessibility label for deselecting a track" - }, - "@lyricsProvidersInfoText": { - "description": "Info tip on lyrics provider priority page" - }, - "queueEmptyHistory": "No download history", - "dialogClear": "Hapus", - "@dialogClear": { - "description": "Dialog button - clear items" - }, - "allFilesAccessDescription": "Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.", - "@allFilesAccessDescription": { - "description": "Description explaining when to enable all files access" - }, - "trackConvertConfirmTitle": "Confirm Conversion", - "storeCategoryLyrics": "Lyrics", - "@storeCategoryLyrics": { - "description": "Store extension category - lyrics" - }, - "@lyricsProvidersDescription": { - "description": "Description on the lyrics provider priority page" - }, - "tooltipLoveAll": "Love All", - "downloadDirectory": "Direktori Unduhan", - "@downloadDirectory": { - "description": "Setting - download folder" - }, - "@tutorialExtensionsTip2": { - "description": "Tutorial extensions tip 2" - }, - "libraryFolder": "Library Folder", - "libraryAddFolder": "Add library folder", - "libraryAddFolderSubtitle": "Internal storage, SD card, SSD, or another external drive", - "librarySourceOnline": "Online", - "librarySourceOffline": "Offline. Reconnect the storage to restore these tracks", - "librarySourceDisabled": "Disabled", - "librarySourceScanCount": "{scanned} of {total} files scanned ({progress}%)", - "libraryExternalStorage": "External storage", - "libraryRemoveFolder": "Remove library folder", - "libraryRemoveFolderMessage": "Remove this folder and its indexed tracks from SpotiFLAC Mobile? Audio files on the storage will not be deleted.", - "@metadataProviderPriorityTitle": { - "description": "Metadata priority page title" - }, - "@cleanupOrphanedDownloadsResult": { - "description": "Snackbar after orphan cleanup", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cacheExploreFeedDesc": "Explore tab content (new releases, trending). Will refresh on next visit.", - "@cacheExploreFeedDesc": { - "description": "Description of what explore feed cache contains" - }, - "a11yOpenTrackByArtist": "Open track {trackName} by {artistName}", - "@a11yOpenTrackByArtist": { - "description": "Accessibility label for opening a track item", - "placeholders": { - "trackName": { - "type": "String" - }, - "artistName": { - "type": "String" - } - } - }, - "announcementUnableToOpenLink": "Unable to open link. Please try again.", - "libraryFilterSortAlbumDesc": "Album (Z-A)", - "@libraryFilterSortAlbumDesc": { - "description": "Sort option - album descending" - }, - "trackConvertBitrate": "Bitrate", - "@trackConvertBitrate": { - "description": "Label for bitrate selection" - }, - "audioAnalysisFileSize": "Size", - "extensionHealthServiceOnline": "Service online", - "@extensionHealthServiceOnline": { - "description": "Tooltip for online extension service" - }, - "logEntries": "Entri ({count})", - "@logEntries": { - "description": "Total log count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "trackConvertConfirmMessage": "Convert from {sourceFormat} to {targetFormat} at {bitrate}?\n\nThe original file will be deleted after conversion.", - "@trackConvertConfirmMessage": { - "description": "Confirmation dialog message", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "bitrate": { - "type": "String" - } - } - }, - "@optionsArtistTagModeSplitVorbisSubtitle": { - "description": "Subtitle for split Vorbis artist tag mode" - }, - "folderOrganizationByAlbum": "Berdasarkan Album", - "@folderOrganizationByAlbum": { - "description": "Folder option - album folders" - }, - "libraryPlayback": "Playback", + "storeFilterAll": "Semua", "@storeFilterAll": { "description": "Repo filter - all extensions" }, - "aboutApp": "Aplikasi", - "@aboutApp": { - "description": "Section for app info" + "storeFilterMetadata": "Metadata", + "@storeFilterMetadata": { + "description": "Repo filter - metadata providers" }, - "optionsReplayGainSubtitleOff": "Dinonaktifkan: tidak ada tag normalisasi kenyaringan", - "@optionsReplayGainSubtitleOff": { - "description": "Subtitle when ReplayGain is disabled" + "storeFilterDownload": "Unduhan", + "@storeFilterDownload": { + "description": "Repo filter - download providers" }, - "@storeRepoDialogTitle": { - "description": "Title of the change/remove repository dialog" + "storeFilterUtility": "Utilitas", + "@storeFilterUtility": { + "description": "Repo filter - utility extensions" }, - "settingsLyricsSubtitle": "Embed, mode, providers, language options", - "@settingsLyricsSubtitle": { - "description": "Subtitle for lyrics settings" + "storeFilterLyrics": "Lirik", + "@storeFilterLyrics": { + "description": "Repo filter - lyrics providers" }, - "logIssueIspBlockingLabel": "ISP BLOCKING DETECTED", "storeFilterIntegration": "Integrasi", "@storeFilterIntegration": { "description": "Repo filter - integrations" }, - "@lyricsProvidersAtLeastOne": { - "description": "Snackbar when user tries to disable the last enabled provider" + "storeClearFilters": "Hapus filter", + "@storeClearFilters": { + "description": "Button to clear all filters" }, - "@appearanceHistoryViewGrid": { - "description": "Grid layout option" + "storeAddRepoTitle": "Tambah Repositori Ekstensi", + "@storeAddRepoTitle": { + "description": "Store setup screen - heading when no repo is configured" }, - "trackDownloaded": "Diunduh", - "extensionVerificationHelpMessageManual": "SpotiFLAC Mobile could not open the browser automatically. Open this link in your browser, or copy it manually.", - "setupDownloadLocationIosMessage": "Di iOS, unduhan disimpan ke folder Documents aplikasi. Anda dapat mengaksesnya melalui aplikasi Files.", - "optionsArtistTagModeDescription": "Pilih bagaimana beberapa artis dicantumkan dalam tag yang disematkan.", - "@optionsArtistTagModeDescription": { - "description": "Bottom-sheet description for artist tag mode setting" + "storeAddRepoDescription": "Masukkan URL repositori GitHub yang berisi file registry.json untuk menelusuri dan memasang ekstensi.", + "@storeAddRepoDescription": { + "description": "Store setup screen - explanatory text" }, - "@queueRetryAllFailed": { - "description": "Button to retry every failed download in the queue", - "placeholders": { - "count": { - "type": "int" - } - } + "storeRepoUrlLabel": "URL Repositori", + "@storeRepoUrlLabel": { + "description": "Label for the repository URL input field" }, - "@trackConvertDitherTriangularHp": { - "description": "Lossless conversion high-pass triangular dither option" + "storeRepoUrlHint": "https://github.com/user/repo", + "@storeRepoUrlHint": { + "description": "Hint/placeholder for the repository URL input field" }, - "@extensionVerificationCopyLink": { - "description": "Button to copy the extension verification URL" + "storeAddRepoButton": "Tambah Repositori", + "@storeAddRepoButton": { + "description": "Button to submit a new repository URL" }, - "searchSongs": "Lagu", - "@searchSongs": { - "description": "Search result category - songs" + "storeChangeRepoTooltip": "Ubah repositori", + "@storeChangeRepoTooltip": { + "description": "Tooltip for the change-repository icon button in the app bar" }, - "@appearanceHistoryView": { - "description": "Layout style for history" + "storeRepoDialogTitle": "Repositori Ekstensi", + "@storeRepoDialogTitle": { + "description": "Title of the change/remove repository dialog" }, - "sectionFileSettings": "Pengaturan File", - "@sectionFileSettings": { - "description": "Settings section header" + "storeRepoDialogCurrent": "Repositori saat ini:", + "@storeRepoDialogCurrent": { + "description": "Label shown above the current repository URL in the dialog" }, - "@cancelDownloadTitle": { - "description": "Dialog title when confirming cancellation of an active download" + "storeNewRepoUrlLabel": "URL Repositori Baru", + "@storeNewRepoUrlLabel": { + "description": "Label for the new repository URL field inside the dialog" }, - "@cacheLibraryCover": { - "description": "Cache item title for local library cover art images" + "storeLoadError": "Gagal memuat repositori", + "@storeLoadError": { + "description": "Error heading when the store cannot be loaded" }, - "audioAnalysisSpectralCutoff": "Spectral Cutoff", - "audioAnalysisCutoffNotDetected": "Not detected", - "dialogDelete": "Hapus", - "@dialogDelete": { - "description": "Dialog button - delete item" + "storeEmptyNoExtensions": "Tidak ada ekstensi tersedia", + "@storeEmptyNoExtensions": { + "description": "Message when store has no extensions" }, - "tutorialLibraryDesc": "Downloaded and locally scanned music is organized in your Library.", - "@tutorialLibraryDesc": { - "description": "Tutorial library page description" + "storeEmptyNoResults": "Tidak ada ekstensi ditemukan", + "@storeEmptyNoResults": { + "description": "Message when search/filter returns no results" }, - "@queueDownloadSpeedStatus": { - "description": "Queue status while downloading with speed", - "placeholders": { - "speed": { - "type": "String" - } - } - }, - "@extensionsHomeFeedOffSubtitle": { - "description": "Extensions page - subtitle for off home feed option" - }, - "cacheCleanupResult": "Cleanup completed: {downloadCount} orphaned downloads, {libraryCount} missing library entries", - "@cacheCleanupResult": { - "description": "Snackbar after unused data cleanup", - "placeholders": { - "downloadCount": { - "type": "int" - }, - "libraryCount": { - "type": "int" - } - } - }, - "trackConvertLosslessHint": "Lossless conversion — no quality loss", - "@trackConvertLosslessHint": { - "description": "Hint shown when converting between lossless formats" - }, - "collectionRenamePlaylist": "Rename playlist", - "@collectionRenamePlaylist": { - "description": "Action to rename playlist" - }, - "@libraryFilterTitle": { - "description": "Filter bottom sheet title" - }, - "@storageModeAppFolder": { - "description": "Storage mode option - app-managed folder" - }, - "logTotalErrors": "Total errors: {count}", - "@logTotalErrors": { - "description": "Total error count in log issue analysis", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@setupStorageRequired": { - "description": "Title when storage permission needed" - }, - "@snackbarMetadataProviderSaved": { - "description": "Snackbar - metadata provider order saved" - }, - "@selectionBatchConvertConfirmTitle": { - "description": "Confirmation dialog title for batch conversion" - }, - "extensionsHomeFeedAutoSubtitle": "Automatically select the best available", - "@extensionsHomeFeedAutoSubtitle": { - "description": "Extensions page - subtitle for auto home feed option" - }, - "setupLanguageDescription": "Pilih bahasa pilihan Anda untuk aplikasi ini. Anda dapat mengubahnya nanti di Pengaturan.", - "settingsBackupSubtitle": "Move your library, history and settings to a new device", - "@settingsBackupSubtitle": { - "description": "Subtitle for backup and restore settings item" - }, - "recentTypeArtist": "Artis", - "@recentTypeArtist": { - "description": "Recent access item type - artist" - }, - "collectionPlaylistEmptySubtitle": "Long-press + on any track to add it here", - "artistCompilations": "Kompilasi", - "@artistCompilations": { - "description": "Section header for compilations" - }, - "snackbarFolderPickerFailed": "Failed to open folder picker: {error}", - "@snackbarFolderPickerFailed": { - "description": "Snackbar shown when folder picker fails to open", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "@optionsDetailedLoggingOn": { - "description": "Status when logging enabled" - }, - "settingsSaveDownloadHistory": "Save download history", - "@settingsSaveDownloadHistory": { - "description": "Settings switch title for storing completed downloads in history" - }, - "@storeCategoryIntegration": { - "description": "Store extension category - integration" - }, - "a11yOpenItemCount": "Open {title}, {count} {count, plural, =1{item} other{items}}", - "@a11yOpenItemCount": { - "description": "Accessibility label for opening a grouped item with count", - "placeholders": { - "title": { - "type": "String" - }, - "count": { - "type": "int" - } - } - }, - "trackFileInfo": "Info File", - "@trackFileInfo": { - "description": "Tab title - file information" - }, - "libraryFilterMetadataMissingAlbumArtist": "Missing album artist", - "audioAnalysisNoClipping": "No clipping", - "tutorialSettingsDesc": "Fine-tune downloads, playback, Library behavior, appearance, and storage.", - "@tutorialSettingsDesc": { - "description": "Tutorial settings page description" - }, - "lyricsModeExternalSubtitle": "File .lrc terpisah untuk pemutar musik seperti Samsung Music", - "@lyricsModeExternalSubtitle": { - "description": "Subtitle for external option" - }, - "trackLoadLyrics": "Muat Lirik", - "@trackLoadLyrics": { - "description": "Action - fetch lyrics" - }, - "extensionVerificationHelpTitleWaiting": "Verification still waiting", - "@extensionVerificationHelpTitleWaiting": { - "description": "Dialog title when verification is taking longer than expected" - }, - "libraryFilterReset": "Reset", - "@libraryFilterReset": { - "description": "Reset all filters button" - }, - "@downloadAlbumArtistMetadataFull": { - "description": "Status label when album-artist folder filtering uses full metadata" - }, - "storeTitle": "Repositori Ekstensi", - "@storeTitle": { - "description": "Repo screen title" - }, - "libraryCleared": "Library cleared", - "@libraryCleared": { - "description": "Snackbar after clearing library" - }, - "queueDownloadCompleted": "Download completed", - "@queueDownloadCompleted": { - "description": "Accessibility label for completed download state in queue" - }, - "libraryTitle": "Local Library", - "@libraryTitle": { - "description": "Library settings page title" - }, - "queueAlbumCount": "{count, plural, =1{1 album} other{{count} albums}}", - "@queueAlbumCount": { - "description": "Album count label with plural support", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "libraryClearConfirmTitle": "Clear Library", - "@backupExportSectionTitle": { - "description": "Section title for the export/backup card" - }, - "dialogClearAll": "Hapus Semua", - "@dialogClearAll": { - "description": "Dialog title - clear all items" - }, - "tutorialExtensionsDesc": "Extensions add search, download, metadata, lyrics, and other integrations.", - "@tutorialExtensionsDesc": { - "description": "Tutorial extensions page description" - }, - "libraryExternalPlayer": "External player", - "@libraryExternalPlayer": { - "description": "Setting option to use an external music player" - }, - "editMetadataFieldGenre": "Genre", - "@tutorialLibraryTitle": { - "description": "Tutorial library page title" - }, - "folderOrganizationByPlaylist": "Berdasarkan Daftar Putar", - "queueTrackCount": "{count, plural, =1{1 track} other{{count} tracks}}", - "@searchSortTitle": { - "description": "Bottom sheet title for search sort options" - }, - "editMetadataSelectNone": "None", - "@historyFilterSingles": { - "description": "Filter chip - show singles only" - }, - "@setupLanguageTitle": { - "description": "Title for the language selection step in setup" - }, - "trackSaveCoverArt": "Save Cover Art", - "@trackSaveCoverArt": { - "description": "Menu action - save album cover art as file" - }, - "@downloadAlbumFolderStructure": { - "description": "Setting - album folder organization" - }, - "lyricsProvidersAtLeastOne": "At least one provider must remain enabled", - "@notifDownloadCompleteCount": { - "description": "Notification title when download is complete, with count", - "placeholders": { - "completed": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "setupUseDefault": "Gunakan Default", - "@setupUseDefault": { - "description": "Button to use default folder" - }, - "logNoLogsYetSubtitle": "Log akan muncul di sini saat Anda menggunakan aplikasi", - "@logNoLogsYetSubtitle": { - "description": "Empty state subtitle" - }, - "@dateToday": { - "description": "Relative date - today" - }, - "trackSaveLyricsProgress": "Saving lyrics...", - "@trackSaveLyricsProgress": { - "description": "Snackbar while saving lyrics to file" - }, - "trackCoverSaved": "Cover art saved to {fileName}", - "@trackCoverSaved": { - "description": "Snackbar after cover art saved", - "placeholders": { - "fileName": { - "type": "String" - } - } - }, - "trackReEnrichFieldLyrics": "Lyrics", - "@audioAnalysisRescan": { - "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" - }, - "@downloadNeteaseIncludeRomanizationEnabled": { - "description": "Subtitle when Netease romanization is on" - }, - "dialogDisableAndClear": "Turn off and clear", - "extensionHealthChecksConfigured": "{count} {count, plural, =1{check} other{checks}} configured", - "cleanupOrphanedDownloadsSubtitle": "Remove history entries for files that no longer exist", - "@notifLibraryScanProgressWithTotal": { - "description": "Notification body for library scan progress when total is known", - "placeholders": { - "scanned": { - "type": "int" - }, - "total": { - "type": "int" - }, - "percentage": { - "type": "int" - } - } - }, - "@extensionDetailsTags": { - "description": "Section title for extension tags" - }, - "@albumFolderAlbumOnlySubtitle": { - "description": "Folder structure example" - }, - "@audioAnalysisAnalyzing": { - "description": "Loading text while analyzing audio" - }, - "@settingsDonate": { - "description": "Settings menu item - donate page" - }, - "@collectionPlaylistNameRequired": { - "description": "Validation error for empty playlist name" - }, - "@backupImportSectionDescription": { - "description": "Description for the restore action" - }, - "storeFilterLyrics": "Lirik", - "libraryAutoScan": "Auto Scan", - "@libraryAutoScan": { - "description": "Setting for automatic library scanning" - }, - "safMigrationMessage1": "SpotiFLAC now uses Android Storage Access Framework (SAF) for downloads. This fixes \"permission denied\" errors on Android 10+.", - "@safMigrationMessage1": { - "description": "First paragraph of SAF migration dialog" - }, - "setupStorageRequired": "Izin Penyimpanan Diperlukan", - "@notifLibraryScanErrors": { - "description": "Library scan complete suffix - error count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "appearanceHistoryViewGrid": "Kisi", - "trackConvertConverting": "Converting audio...", - "@trackConvertConverting": { - "description": "Snackbar while converting" - }, - "@setupUseDefaultFolder": { - "description": "Dialog title for default folder" - }, - "optionsArtistTagModeSplitVorbisSubtitle": "Tulis satu tag artis per artis untuk FLAC dan Opus; MP3 dan M4A tetap tergabung.", - "snackbarPlayingNext": "Playing next", - "@snackbarPlayingNext": { - "description": "Snackbar when a track is inserted as the next queue item" - }, - "optionsDefaultSearchTabSubtitle": "Pilih tab mana yang terbuka terlebih dahulu untuk hasil pencarian baru.", - "@editMetadataAutoFillFetch": { - "description": "Button label to fetch online metadata and fill selected fields" - }, - "tutorialSearchDesc": "Search with your selected extension or paste a supported music link.", - "@sectionService": { - "description": "Settings section header" - }, - "notifUpdateProgress": "{received} / {total} MB • {percentage}%", - "@discographyDownloadSelected": { - "description": "Button - download selected albums" - }, - "cacheClearAllConfirmMessage": "This will clear all cache categories on this page. Downloaded music files will not be deleted.", - "@cacheClearAllConfirmMessage": { - "description": "Dialog message before clearing all caches" - }, - "extensionsHomeFeedProvider": "Home Feed Provider", - "@extensionsHomeFeedProvider": { - "description": "Extensions page - label for home feed provider selector" - }, - "@cacheExploreFeed": { - "description": "Cache item title for explore home feed cache" - }, - "@audioAnalysisDynamicRange": { - "description": "Dynamic range metric label" - }, - "unknownAlbum": "Unknown Album", - "trackCoverCurrent": "Current cover", - "downloadSongLinkRegionDesc": "Region used when resolving track links via SongLink. Choose the country where your streaming services are available.", - "downloadPrimaryArtistOnlyOff": "Primary only: Off", - "dialogDone": "Selesai", - "@dialogDone": { - "description": "Dialog button - action completed" - }, - "storeRepoUrlLabel": "Tautan Repositori", - "downloadSelectServiceToEnable": "Select a provider with quality options to enable this option", - "@logIssueRateLimitedSuggestion": { - "description": "Diagnostic badge suggestion for rate limiting" - }, - "libraryScanProgress": "{progress}% of {total} files", - "@libraryScanProgress": { - "description": "Scan progress display", - "placeholders": { - "progress": { - "type": "String" - }, - "total": { - "type": "int" - } - } - }, - "collectionLovedEmptyTitle": "Loved folder is empty", - "tutorialExtensionsTitle": "Extensions", - "@tutorialExtensionsTitle": { - "description": "Tutorial extensions page title" - }, - "searchSortDurationShort": "Durasi (Terpendek)", - "@searchSortDurationShort": { - "description": "Sort option - shortest duration first" - }, - "trackCopyFilePath": "Salin lokasi file", - "@trackCopyFilePath": { - "description": "Action - copy file path" - }, - "albumFolderArtistAlbumFlatSubtitle": "Artis/Album/ dan Artis/lagu.flac", - "@trackConvertResampler": { - "description": "Section label for lossless conversion resampler options" - }, - "editMetadataFieldTrackNum": "Track #", - "@editMetadataFieldTrackNum": { - "description": "Chip label for track number field in auto-fill selector" - }, - "snackbarFailedToUpdate": "Gagal memperbarui ekstensi", - "@snackbarFailedToUpdate": { - "description": "Snackbar - extension update error" - }, - "notifAlreadyInLibrary": "Already in Library", - "@notifAlreadyInLibrary": { - "description": "Notification title when track is already in library" - }, - "collectionPlaylistNameHint": "Playlist name", - "extensionVerificationCopyLink": "Copy link", - "@replayGainBatchAnalyzing": { - "description": "Progress dialog title while batch scanning ReplayGain" - }, - "setupLanguageTitle": "Pilih Bahasa", "extensionId": "ID", "@extensionId": { "description": "Extension detail - unique ID" }, - "regionCountryBR": "Brazil", - "@updateNewVersionReady": { - "description": "Update subtitle" + "extensionError": "Eror", + "@extensionError": { + "description": "Extension detail - error message" }, - "@queueDownloadedFileMissing": { - "description": "Accessibility label when a downloaded file is missing from disk" - }, - "@lyricsMode": { - "description": "Setting - how to save lyrics" - }, - "@settingsAppearance": { - "description": "Settings section - visual customization" - }, - "@setupStorageAccessMessageAndroid11": { - "description": "Android 11+ specific explanation" - }, - "@tutorialLibraryTip3": { - "description": "Tutorial library tip 3" - }, - "@downloadAppleQqMultiPersonDisabled": { - "description": "Subtitle when multi-person lyrics is off" - }, - "libraryStorageAccessMessage": "SpotiFLAC needs storage access to scan your music library. Please grant permission in settings.", - "@libraryStorageAccessMessage": { - "description": "Dialog message for storage permission" - }, - "@tutorialLibraryTip1": { - "description": "Tutorial library tip 1" - }, - "dialogRemoveExtensionMessage": "Apakah Anda yakin ingin menghapus ekstensi ini? Tindakan ini tidak dapat dibatalkan.", - "@dialogRemoveExtensionMessage": { - "description": "Dialog message - uninstall confirmation" - }, - "setupDownloadLocationTitle": "Lokasi Unduhan", - "@setupDownloadLocationTitle": { - "description": "Download location dialog title" - }, - "downloadNetworkCompatibilityModeEnabled": "Mengizinkan endpoint HTTP lama; verifikasi TLS tetap aktif", - "@downloadNetworkCompatibilityModeEnabled": { - "description": "Subtitle when network compatibility mode is on" - }, - "@audioAnalysisBitDepth": { - "description": "Bit depth metric label" - }, - "trackOptionAddToLoved": "Add to Loved", - "@trackOptionAddToLoved": { - "description": "Bottom sheet action label - add track to loved folder" - }, - "cacheAppDirectory": "App cache directory", - "@cacheAppDirectory": { - "description": "Cache item title for app cache directory" - }, - "lyricsProviderMusixmatchDesc": "Largest lyrics database (multi-language)", - "@navStore": { - "description": "Bottom navigation - Extension repo tab" - }, - "extensionPostProcessing": "Pasca-Pemrosesan", - "@searchTracks": { - "description": "Search filter label - tracks" - }, - "logCopied": "Log disalin ke clipboard", - "@logCopied": { - "description": "Snackbar - logs copied" - }, - "@extensionHealthRequired": { - "description": "Label for a required extension service health check" - }, - "@previewPlay": { - "description": "Tooltip for the button that plays a short track preview snippet" - }, - "clickableLookingUpArtist": "Looking up artist...", - "@clickableLookingUpArtist": { - "description": "Snackbar shown while clickable artist metadata is being resolved" - }, - "@extensionVerificationBrowserSubtitleInApp": { - "description": "Subtitle when in-app browser is preferred for extension verification" - }, - "setupUseDefaultFolder": "Gunakan Folder Default?", - "tutorialSearchHint": "Paste or search...", - "@logIssueTrackNotFoundLabel": { - "description": "Diagnostic badge label when a track is unavailable" - }, - "@storageModeAppFolderSubtitle": { - "description": "Subtitle for app folder storage mode" - }, - "downloadMusixmatchLanguage": "Musixmatch Language", - "@downloadMusixmatchLanguage": { - "description": "Setting for Musixmatch lyrics translation language" - }, - "lyricsModeExternal": "File .lrc eksternal", - "@setupSelectFolder": { - "description": "Button to select folder" - }, - "logSearchHint": "Cari log...", - "@backupCreateFailed": { - "description": "Snackbar when backup creation fails" - }, - "@settingsSaveDownloadHistorySubtitle": { - "description": "Settings switch subtitle for storing completed downloads in history" - }, - "@albumFolderArtistAlbumFlat": { - "description": "Album folder option with singles directly in artist folder" - }, - "extensionHealthRequired": "required", - "actionCancel": "Batal", - "@actionCancel": { - "description": "Action button - cancel operation" - }, - "optionsEmbedMetadataSubtitleOff": "Disabled (advanced): skip all metadata embedding", - "@optionsEmbedMetadataSubtitleOff": { - "description": "Subtitle when metadata embedding is disabled" - }, - "downloadAllowLocalNetworkDisabled": "Local/private addresses are blocked for security", - "@downloadAllowLocalNetworkDisabled": { - "description": "Subtitle when allow local network access is off" - }, - "@extensionsDownloadPrioritySubtitle": { - "description": "Subtitle for download priority" - }, - "downloadSingleFilenameFormat": "Format Nama Berkas Tunggal", - "@downloadSingleFilenameFormat": { - "description": "Setting for output filename pattern for singles/EPs" - }, - "cacheSummarySubtitle": "Clearing cache will not remove downloaded music files.", - "@cacheSummarySubtitle": { - "description": "Helper text for cache summary card" - }, - "libraryFilterMetadataIncorrectIsrcFormat": "Incorrect ISRC format", - "libraryFilterMetadataMissingTrackNumber": "Missing track number", - "@libraryFilterMetadataMissingTrackNumber": { - "description": "Filter option - items missing track number" - }, - "backupIncludeSecretsDescription": "Tokens and API keys from extensions will be saved into the backup file. Keep the file private. When off, you re-enter them after restoring.", - "@backupIncludeSecretsDescription": { - "description": "Explanation for the include-credentials toggle" - }, - "audioAnalysisChannelStats": "Per-channel Stats", - "@audioAnalysisChannelStats": { - "description": "Per-channel audio analysis section label" - }, - "@extensionServiceStatus": { - "description": "Extension detail section header for service status" - }, - "queueEmptySingles": "No single downloads", - "@queueEmptySingles": { - "description": "Empty state title when no single track downloads exist" - }, - "@snackbarSelectedPlaylistsEmpty": { - "description": "Snackbar when selected playlists contain no tracks" - }, - "@errorRateLimited": { - "description": "Error title - too many requests" - }, - "setupDownloadInFlac": "Download music in lossless and Hi-Res quality", - "@setupDownloadInFlac": { - "description": "App tagline in setup" - }, - "trackRemoveFromDevice": "Hapus dari perangkat", - "@extensionsNoDownloadProvider": { - "description": "Empty state - no download providers" - }, - "@backupCreated": { - "description": "Snackbar after a backup file is created" - }, - "cacheSummaryTitle": "Cache overview", - "@cacheSummaryTitle": { - "description": "Heading for cache summary card" - }, - "selectionReplayGainCount": "ReplayGain ({count})", - "@selectionReplayGainCount": { - "description": "Batch selection action button label for ReplayGain", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@setupNotificationBackgroundDescription": { - "description": "Detailed notification explanation" - }, - "safMigrationTitle": "Storage Update Required", - "snackbarMetadataSaved": "Metadata saved successfully", - "@snackbarMetadataSaved": { - "description": "Snackbar after successfully saving track metadata" - }, - "@backupContentsSettings": { - "description": "Backup contents row label for settings" - }, - "logClearLogsTitle": "Hapus Log", - "extensionsCustomSearch": "Pencarian kustom", - "@extensionsCustomSearch": { - "description": "Label for custom search provider" - }, - "@downloadFrom": { - "description": "Label - download source" - }, - "cacheSizeWithFiles": "{size} in {count} files", - "selectionShareNoFiles": "No shareable files found", - "@selectionShareNoFiles": { - "description": "Snackbar when no selected files exist on disk" - }, - "snackbarAddedTracksToQueue": "Menambahkan {count} lagu ke antrian", - "downloadFilenameInsertTag": "Tap to insert tag:", - "@downloadFilenameInsertTag": { - "description": "Label above filename tag chips" - }, - "collectionRemovedFromFavoriteArtists": "\"{artistName}\" removed from Favorite Artists", - "@collectionRemovedFromFavoriteArtists": { - "description": "Snackbar after removing artist from favorite artists", - "placeholders": { - "artistName": { - "type": "String" - } - } - }, - "queueDownloadSpeedStatus": "Downloading - {speed} MB/s", - "backupRestoreConfirmButton": "Restore", - "@libraryCleanupMissingFiles": { - "description": "Button to remove entries for missing files" - }, - "backupCreateFailed": "Failed to create backup", - "notifLibraryScanFailed": "Library scan failed", - "@notifLibraryScanFailed": { - "description": "Notification title when library scan fails" - }, - "audioAnalysisRescan": "Re-analyze", - "@trackTrackName": { - "description": "Metadata label - track title" - }, - "@setupPermissionRequired": { - "description": "Generic permission required title", - "placeholders": { - "permissionType": { - "type": "String", - "description": "Type of permission (Storage/Notification)" - } - } - }, - "@nowPlayingNoLyrics": { - "description": "Empty state when the playing file has no embedded lyrics" - }, - "libraryFilesUnit": "{count, plural, =1{file} other{files}}", - "@libraryFilesUnit": { - "description": "Unit label for files count during library scanning", - "placeholders": { - "count": { - "type": "int" - } - } + "extensionCapabilities": "Kemampuan", + "@extensionCapabilities": { + "description": "Section header - extension features" }, + "extensionMetadataProvider": "Provider Metadata", "@extensionMetadataProvider": { "description": "Capability - provides metadata" }, - "@downloadFilterContributing": { - "description": "Setting to strip contributing artists from Album Artist folder name" + "extensionDownloadProvider": "Provider Download", + "@extensionDownloadProvider": { + "description": "Capability - provides downloads" }, - "libraryScanSelectFolderFirst": "Select a folder first", - "@sectionDownload": { - "description": "Settings section header" + "extensionLyricsProvider": "Provider Lirik", + "@extensionLyricsProvider": { + "description": "Capability - provides lyrics" }, - "extensionHealthNotConfigured": "Not configured", - "queueRetryAllFailed": "Retry {count} failed", - "folderOrganizationByPlaylistSubtitle": "Setiap daftar putar memerlukan folder terpisah", - "@folderOrganizationByPlaylistSubtitle": { - "description": "Subtitle for playlist folder option" + "extensionUrlHandler": "Penanganan URL", + "@extensionUrlHandler": { + "description": "Capability - handles URLs" }, - "lyricsProviderExtensionDesc": "Extension provider", - "@libraryFilterQualityHiRes": { - "description": "Filter option - high resolution audio" + "extensionQualityOptions": "Opsi Kualitas", + "@extensionQualityOptions": { + "description": "Capability - quality selection" }, - "trackConvertTitle": "Convert Audio", - "@trackConvertTitle": { - "description": "Title of convert bottom sheet" + "extensionPostProcessingHooks": "Hook Post-Processing", + "@extensionPostProcessingHooks": { + "description": "Capability - post-processing" }, - "setupSkipForNow": "Lewati untuk sekarang", - "sectionDownload": "Unduhan", - "downloadLossyOpus256Subtitle": "Opus kualitas terbaik, ~8MB per trek", - "@downloadLossyOpus256Subtitle": { - "description": "Subtitle for Opus 256kbps lossy option" + "extensionPermissions": "Izin", + "@extensionPermissions": { + "description": "Section header - required permissions" }, - "@trackConvertActionLabelLossless": { - "description": "Convert button label for lossless conversion with quality cap", + "extensionSettings": "Setelan", + "@extensionSettings": { + "description": "Section header - extension settings" + }, + "extensionRemoveButton": "Hapus Ekstensi", + "@extensionRemoveButton": { + "description": "Button to uninstall extension" + }, + "extensionUpdated": "Terupdate", + "@extensionUpdated": { + "description": "Extension detail - last update" + }, + "extensionMinAppVersion": "Versi App Min", + "@extensionMinAppVersion": { + "description": "Extension detail - minimum app version" + }, + "extensionCustomTrackMatching": "Pencocokan Lagu Kustom", + "@extensionCustomTrackMatching": { + "description": "Capability - custom track matching algorithm" + }, + "extensionPostProcessing": "Post-Processing", + "@extensionPostProcessing": { + "description": "Capability - post-download processing" + }, + "extensionHooksAvailable": "{count} hook tersedia", + "@extensionHooksAvailable": { + "description": "Post-processing hooks count", "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "quality": { + "count": { + "type": "int" + } + } + }, + "extensionPatternsCount": "{count} pola", + "@extensionPatternsCount": { + "description": "URL patterns count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionStrategy": "Strategi: {strategy}", + "@extensionStrategy": { + "description": "Track matching strategy name", + "placeholders": { + "strategy": { "type": "String" } } }, - "storeRequiresVersion": "Requires v{version}+", - "@storeRequiresVersion": { - "description": "Store compatibility badge for minimum app version", - "placeholders": { - "version": { - "type": "String" - } - } + "extensionsProviderPrioritySection": "Prioritas Provider", + "@extensionsProviderPrioritySection": { + "description": "Section header - provider priority" }, - "metadataProviderPriorityDescription": "Seret untuk mengatur ulang urutan provider metadata. Aplikasi akan mencoba provider dari atas ke bawah saat mencari lagu dan mengambil metadata.", - "@notifUpdateFailed": { - "description": "Notification title when app update download fails" + "extensionsInstalledSection": "Ekstensi Terinstal", + "@extensionsInstalledSection": { + "description": "Section header - installed extensions" }, - "extensionsInfoTip": "Ekstensi dapat menambahkan provider metadata dan unduhan baru. Hanya pasang ekstensi dari sumber terpercaya.", + "extensionsNoExtensions": "Tidak ada ekstensi terinstal", + "@extensionsNoExtensions": { + "description": "Empty state - no extensions" + }, + "extensionsNoExtensionsSubtitle": "Pasang file .spotiflac-ext untuk menambahkan provider baru", + "@extensionsNoExtensionsSubtitle": { + "description": "Empty state subtitle" + }, + "extensionsInstallButton": "Instal Ekstensi", + "@extensionsInstallButton": { + "description": "Button to install extension from file" + }, + "extensionsInfoTip": "Ekstensi dapat menambahkan provider metadata dan download baru. Hanya instal ekstensi dari sumber terpercaya.", "@extensionsInfoTip": { "description": "Security warning about extensions" }, - "@downloadAppleQqMultiPersonEnabled": { - "description": "Subtitle when multi-person lyrics is on" + "extensionsInstalledSuccess": "Ekstensi berhasil diinstal", + "@extensionsInstalledSuccess": { + "description": "Success message after install" }, - "libraryFilterMetadataMissingYear": "Missing year", - "extensionsDownloadPriority": "Prioritas Unduhan", - "@extensionsDownloadPriority": { - "description": "Setting - download provider order" + "extensionsInstalledCount": "{count} ekstensi berhasil diinstal", + "@extensionsInstalledCount": { + "description": "Success message after installing multiple extensions", + "placeholders": { + "count": { + "type": "int", + "description": "Number of installed extensions" + } + } }, - "@downloadAllowLocalNetworkEnabled": { - "description": "Subtitle when allow local network access is on" - }, - "libraryScan": "Scan Library", - "@libraryScan": { - "description": "Button to start library scan" - }, - "editMetadataFieldLabel": "Label", - "@editMetadataFieldLabel": { - "description": "Chip label for label field in auto-fill selector" - }, - "updateDownloadFailed": "Unduhan gagal", - "@updateDownloadFailed": { - "description": "Update error title" - }, - "appearanceAmoledDarkSubtitle": "Latar belakang hitam murni", - "@appearanceAmoledDarkSubtitle": { - "description": "Subtitle for AMOLED dark" - }, - "setupIcloudNotSupported": "iCloud Drive tidak didukung. Silakan gunakan folder Dokumen di aplikasi.", - "trackLyricsEmbeddedSource": "Embedded", - "@trackLyricsEmbeddedSource": { - "description": "Lyrics source label for embedded lyrics" - }, - "@trackAlbumArtist": { - "description": "Metadata label - album artist" - }, - "extensionsInstallPartialSuccess": "Ekstensi yang terpasang berjumlah {installed} dari {attempted}", + "extensionsInstallPartialSuccess": "{installed} dari {attempted} ekstensi terinstal", "@extensionsInstallPartialSuccess": { "description": "Message when installing multiple extensions partially succeeds", "placeholders": { @@ -4300,1898 +1993,271 @@ } } }, - "@extensionSettingsCount": { - "description": "Count of settings exposed by an extension quality option", - "placeholders": { - "count": { - "type": "int" - } - } + "extensionsDownloadPriority": "Prioritas Download", + "@extensionsDownloadPriority": { + "description": "Setting - download provider order" }, - "notifLibraryScanCancelled": "Library scan cancelled", - "@notifLibraryScanCancelled": { - "description": "Notification title when library scan is cancelled by the user" + "extensionsDownloadPrioritySubtitle": "Atur urutan layanan download", + "@extensionsDownloadPrioritySubtitle": { + "description": "Subtitle for download priority" }, - "collectionPlaylistNameRequired": "Playlist name is required", - "libraryCleanupMissingFiles": "Cleanup Missing Files", - "storeCategoryUtility": "Utility", - "@storeCategoryUtility": { - "description": "Store extension category - utility" + "extensionsFallbackTitle": "Ekstensi Cadangan", + "@extensionsFallbackTitle": { + "description": "Setting and page title for choosing which download extensions can be used during fallback" }, - "searchSortTitle": "Urutkan hasil", - "@extensionVerificationBrowserExternal": { - "description": "Chip label for external browser verification mode" + "extensionsFallbackSubtitle": "Pilih ekstensi download terinstal mana yang dapat digunakan sebagai cadangan", + "@extensionsFallbackSubtitle": { + "description": "Subtitle for download fallback extensions menu" }, - "audioAnalysisLufs": "LUFS", - "@setupAllowAccessToManageFiles": { - "description": "Instruction for file access permission" + "extensionsNoDownloadProvider": "Tidak ada ekstensi dengan provider download", + "@extensionsNoDownloadProvider": { + "description": "Empty state - no download providers" + }, + "extensionsMetadataPriority": "Prioritas Metadata", + "@extensionsMetadataPriority": { + "description": "Setting - metadata provider order" + }, + "extensionsMetadataPrioritySubtitle": "Atur urutan sumber penelusuran & metadata", + "@extensionsMetadataPrioritySubtitle": { + "description": "Subtitle for metadata priority" + }, + "extensionsNoMetadataProvider": "Tidak ada ekstensi dengan provider metadata", + "@extensionsNoMetadataProvider": { + "description": "Empty state - no metadata providers" + }, + "extensionsSearchProvider": "Provider Penelusuran", + "@extensionsSearchProvider": { + "description": "Setting - search provider selection" + }, + "extensionsNoCustomSearch": "Tidak ada ekstensi dengan penelusuran kustom", + "@extensionsNoCustomSearch": { + "description": "Empty state - no search providers" + }, + "extensionsSearchProviderDescription": "Pilih layanan yang digunakan untuk menelusuri lagu", + "@extensionsSearchProviderDescription": { + "description": "Search provider setting description" + }, + "extensionsCustomSearch": "Penelusuran kustom", + "@extensionsCustomSearch": { + "description": "Label for custom search provider" }, "extensionsErrorLoading": "Error memuat ekstensi", - "@actionPaste": { - "description": "Generic action - paste from clipboard" + "@extensionsErrorLoading": { + "description": "Error message when extension fails to load" }, - "aboutFeatureRequestSubtitle": "Sarankan fitur baru untuk aplikasi", - "@aboutFeatureRequestSubtitle": { - "description": "Subtitle for feature request" + "qualityFlacLossless": "FLAC Lossless", + "@qualityFlacLossless": { + "description": "Quality option - CD quality FLAC" }, - "@aboutTitle": { - "description": "About page title" + "qualityFlacLosslessSubtitle": "16-bit / 44.1kHz", + "@qualityFlacLosslessSubtitle": { + "description": "Technical spec for lossless" }, - "@downloadNeteaseIncludeTranslation": { - "description": "Setting to include translated lyrics from Netease" + "qualityHiResFlac": "Hi-Res FLAC", + "@qualityHiResFlac": { + "description": "Quality option - high resolution FLAC" }, - "@actionGo": { - "description": "Generic action button label" + "qualityHiResFlacSubtitle": "24-bit / hingga 96kHz", + "@qualityHiResFlacSubtitle": { + "description": "Technical spec for hi-res" }, - "regionCountryFR": "France", - "trackConvertResamplerSoxr": "SoXr", - "extensionUpdated": "Diperbarui", - "@extensionUpdated": { - "description": "Extension detail - last update" + "qualityHiResFlacMax": "Hi-Res FLAC Max", + "@qualityHiResFlacMax": { + "description": "Quality option - maximum resolution FLAC" + }, + "qualityHiResFlacMaxSubtitle": "24-bit / hingga 192kHz", + "@qualityHiResFlacMaxSubtitle": { + "description": "Technical spec for hi-res max" + }, + "downloadLossy320": "Lossy 320kbps", + "@downloadLossy320": { + "description": "Quality option label for lossy 320kbps" }, "downloadLossyFormat": "Format Lossy", "@downloadLossyFormat": { "description": "Setting title to pick output format for lossy downloads" }, - "downloadAutoConvert": "Auto-convert after download", + "downloadAutoConvert": "Ubah format setelah terdownload", "@downloadAutoConvert": { "description": "Toggle for automatic post-download audio conversion" }, - "downloadAutoConvertSubtitle": "Convert completed downloads to a smaller lossy format. The original is replaced only after conversion succeeds.", + "downloadAutoConvertSubtitle": "Mengubah format ke lossy akan mengecilkan ukuran file. File asli akan dihapus setelah perubahan format selesai.", "@downloadAutoConvertSubtitle": { "description": "Explanation of safe automatic post-download conversion" }, - "downloadAutoConvertFormat": "Output format", + "downloadAutoConvertFormat": "Format output", "@downloadAutoConvertFormat": { "description": "Automatic conversion output format setting" }, - "downloadAutoConvertFormatSubtitle": "Choose the lossy format used for newly completed downloads.", + "downloadAutoConvertFormatSubtitle": "Pilih format lossy yang digunakan untuk download selanjutnya.", "@downloadAutoConvertFormatSubtitle": { "description": "Automatic conversion format picker explanation" }, - "downloadAutoConvertBitrate": "Output quality", + "downloadAutoConvertBitrate": "Kualitas output", "@downloadAutoConvertBitrate": { "description": "Automatic conversion bitrate setting" }, - "downloadAutoConvertBitrateSubtitle": "Higher bitrates preserve more detail but create larger files.", + "downloadAutoConvertBitrateSubtitle": "Bitrate yang tinggi menjaga banyak detail tapi ukuran file akan besar", "@downloadAutoConvertBitrateSubtitle": { "description": "Automatic conversion bitrate picker explanation" }, - "downloadAutoConvertMp3Subtitle": "Best compatibility across players and devices", + "downloadAutoConvertMp3Subtitle": "Dapat diputar di berbagai pemutar dan perangkat", "@downloadAutoConvertMp3Subtitle": { "description": "MP3 automatic conversion option description" }, - "downloadAutoConvertM4aSubtitle": "Efficient AAC audio in an M4A container", + "downloadAutoConvertM4aSubtitle": "Audio AAC dalam format file M4A", "@downloadAutoConvertM4aSubtitle": { "description": "M4A AAC automatic conversion option description" }, - "downloadAutoConvertOpusSubtitle": "Best efficiency for modern players", + "downloadAutoConvertOpusSubtitle": "Bagus untuk pemutar terbaru", "@downloadAutoConvertOpusSubtitle": { "description": "Opus automatic conversion option description" }, - "snackbarAlreadyInLibrary": "\"{trackName}\" sudah ada di perpustakaan Anda", - "@snackbarAlreadyInLibrary": { - "description": "Snackbar - track already exists in local library", - "placeholders": { - "trackName": { - "type": "String" - } - } + "downloadLossy320Format": "Format Lossy 320kbps", + "@downloadLossy320Format": { + "description": "Title of the lossy format picker bottom sheet" }, - "libraryExternalPlayerSubtitle": "Recommended for listening, best quality, gapless playback, EQ, and wider format support", - "extensionCustomUrlHandlingShareHint": "Share links from these sites to SpotiFLAC Mobile and this extension will handle them.", - "libraryFilterQuality": "Quality", - "@libraryFilterQuality": { - "description": "Filter section - audio quality" + "downloadLossy320FormatDesc": "Pilih format output untuk download lossy 320kbps. Data stream asli akan dikonversi ke format yang Anda pilih bila diperlukan.", + "@downloadLossy320FormatDesc": { + "description": "Description in the lossy format picker" }, - "editMetadataAutoFillDone": "Filled {count} {count, plural, =1{field} other{fields}} from online metadata", - "@editMetadataAutoFillDone": { - "description": "Snackbar confirming how many fields were auto-filled", - "placeholders": { - "count": { - "type": "int" - } - } + "downloadLossyMp3": "MP3 320kbps", + "@downloadLossyMp3": { + "description": "Lossy format option - MP3 320kbps" }, - "@discographyDownload": { - "description": "Button - download artist discography" + "downloadLossyMp3Subtitle": "Putar di mana saja, ~10MB per trek", + "@downloadLossyMp3Subtitle": { + "description": "Subtitle for MP3 320kbps lossy option" }, - "aboutFeatureRequest": "Permintaan fitur", - "downloadSingleFilenameFormatDescription": "Pola nama file untuk single dan EP. Menggunakan tag yang sama dengan format album.", - "@downloadSingleFilenameFormatDescription": { - "description": "Subtitle description for single filename format setting" + "downloadLossyAac": "AAC/M4A 320kbps", + "@downloadLossyAac": { + "description": "Lossy format option - AAC in M4A container at 320kbps" }, - "queueClearAllMessage": "Apakah Anda yakin ingin menghapus semua unduhan?", - "dialogDisableHistoryMessage": "Existing history will be cleared. Downloaded files will not be deleted.", - "extensionLastChecked": "Last checked {time}", - "@extensionLastChecked": { - "description": "Timestamp for the latest extension service health check", - "placeholders": { - "time": { - "type": "String" - } - } + "downloadLossyAacSubtitle": "Putar di perangkat mobile, format M4A", + "@downloadLossyAacSubtitle": { + "description": "Subtitle for AAC/M4A 320kbps lossy option" }, - "homeImportCsvTooltip": "Import playlist (CSV, M3U)", - "@homeImportCsvTooltip": { - "description": "Tooltip for importing a CSV file into Home search" + "downloadLossyOpus256": "Opus 256kbps", + "@downloadLossyOpus256": { + "description": "Lossy format option - Opus 256kbps" }, - "trackConvertResamplerSwr": "SWR", - "@trackConvertResamplerSwr": { - "description": "Lossless conversion default FFmpeg swresample resampler option" + "downloadLossyOpus256Subtitle": "Opus kualitas terbaik, ~8MB per lagu", + "@downloadLossyOpus256Subtitle": { + "description": "Subtitle for Opus 256kbps lossy option" }, - "@downloadFolderOrganization": { - "description": "Title of the folder organization picker bottom sheet" - }, - "dialogClearHistoryTitle": "Hapus Riwayat", - "@logClearSearch": { - "description": "Tooltip for clearing the log search field" - }, - "dialogImport": "Impor", - "@dialogImport": { - "description": "Dialog button - import data" - }, - "@setupChangeFolderTooltip": { - "description": "Tooltip for editing the selected download folder" - }, - "notifLibraryScanErrors": "{count} errors", - "@downloadNetworkCompatibilityMode": { - "description": "Setting for legacy TLS/network handling" - }, - "@metadataSaveFailedFfmpeg": { - "description": "Snackbar error when FFmpeg fails to write metadata" - }, - "dialogUninstallExtension": "Copot Ekstensi?", - "recentTypePlaylist": "Daftar putar", - "@recentTypePlaylist": { - "description": "Recent access item type - playlist" - }, - "trackDeleteConfirmMessage": "Ini akan menghapus file unduhan secara permanen dan menghapusnya dari riwayat Anda.", - "@logIssueNetworkErrorDescription": { - "description": "Diagnostic badge description for generic network errors" - }, - "appearanceThemeSystem": "Sistem", - "@appearanceThemeSystem": { - "description": "Follow system theme" - }, - "albumFolderArtistAlbumSingles": "Artis / Album + Singel", - "@aboutTranslators": { - "description": "Section for translators" - }, - "shareSheetNotFound": "Not found", - "@shareSheetNotFound": { - "description": "Cross-service share sheet row subtitle when a service has no match" - }, - "@tutorialDownloadInProgressSemantics": { - "description": "Accessibility label for active download state in tutorial demo" - }, - "editMetadataAutoFillNoneSelected": "Select at least one field to auto-fill", - "@editMetadataAutoFillNoneSelected": { - "description": "Snackbar when user taps Fetch without selecting any fields" - }, - "@snackbarViewQueue": { - "description": "Snackbar action - view download queue" - }, - "@optionsUpdateChannelPreview": { - "description": "Include beta/preview updates" - }, - "editMetadataFieldComposer": "Composer", - "@editMetadataFieldComposer": { - "description": "Label for composer field in the edit metadata sheet" - }, - "aboutSachinsenalDesc": "Pencipta proyek HiFi asli. Sebuah fondasi untuk integrasi sumber lossless.", - "@aboutSachinsenalDesc": { - "description": "Credit description for sachinsenal0x64" - }, - "backupTitle": "Backup & Restore", - "@libraryFilterMetadata": { - "description": "Filter section - metadata completeness" - }, - "setupStorageAccessRequired": "Akses Penyimpanan Diperlukan", - "@setupStorageAccessRequired": { - "description": "Title when storage access needed" - }, - "trackMetadataDelete": "Hapus", - "@trackMetadataDelete": { - "description": "Action button - delete track" - }, - "libraryFilterMetadataMissingDiscNumber": "Missing disc number", - "@libraryFilterMetadataMissingDiscNumber": { - "description": "Filter option - items missing disc number" - }, - "snackbarMetadataProviderSaved": "Prioritas provider metadata disimpan", - "setupPermissionRequired": "Izin {permissionType} Diperlukan", - "@selectionConvertNoConvertible": { - "description": "Snackbar when no selected tracks support conversion" - }, - "extensionHealthDegraded": "Degraded", - "regionCountryKR": "South Korea", - "@regionCountryKR": { - "description": "Country name for SongLink region picker" - }, - "trackLyricsNotInFile": "Tidak ditemukan lirik dalam file ini", - "@trackLyricsNotInFile": { - "description": "Message when no embedded lyrics in audio file" - }, - "@downloadedAlbumTapToSelect": { - "description": "Selection hint" - }, - "downloadArtistNameFilters": "Artist Name Filters", - "@downloadArtistNameFilters": { - "description": "Setting title for artist folder filter options" - }, - "@libraryFilterMetadataMissingArtist": { - "description": "Filter option - items missing artist" - }, - "recentShowAllDownloads": "Tampilkan Semua Unduhan", - "recentClearAllMessage": "Clear all recent activity? Download history and music files will not be deleted.", - "@recentClearAllMessage": { - "description": "Confirmation message before clearing all recent activity" - }, - "@appearanceThemeLight": { - "description": "Light theme" - }, - "trackReEnrichFieldTrackInfo": "Track & Disc Number", - "@appearanceThemeDark": { - "description": "Dark theme" - }, - "extensionVerificationLinkCopied": "Verification link copied", - "@extensionVerificationLinkCopied": { - "description": "Snackbar after copying the extension verification URL" - }, - "@extensionsHomeFeedDescription": { - "description": "Extensions page - description for home feed provider picker" - }, - "downloadAlbumArtistMetadataPrimaryOnly": "Album Artist metadata: Primary only", - "@downloadAlbumArtistMetadataPrimaryOnly": { - "description": "Status label when album-artist folder filtering uses primary artist only" - }, - "extensionOauthConnectHint": "Tap Connect to Spotify to fill this field.", - "setupNext": "Lanjut", - "extensionVerificationBrowserSubtitleInApp": "Open challenges in the in-app browser first", - "libraryAutoScanDaily": "Daily", - "@libraryAutoScanDaily": { - "description": "Auto scan once per day" - }, - "@audioAnalysisDescription": { - "description": "Description for audio analysis tap-to-analyze prompt" - }, - "nowPlayingUpNext": "Up next", - "nowPlayingAudioOutput": "Output Audio", - "nowPlayingWrittenBy": "Ditulis oleh: {writers}", - "nowPlayingLyricsProvider": "Lirik: {provider}", - "concertGetTickets": "Beli Tiket", - "concertSetList": "Set List Konser", - "concertSetListButton": "Set List", - "concertAddToCalendar": "Tambahkan ke Kalender", - "concertOpenMaps": "Buka Peta", - "concertDetailsUnavailable": "Detail konser belum tersedia saat ini.", - "concertCalendarUnavailable": "Tidak dapat membuka kalender.", - "nowPlayingAudioOutputUnavailable": "Tidak dapat membuka pengaturan output audio.", - "@nowPlayingUpNext": { - "description": "Title for the playback queue sheet" - }, - "nowPlayingPreviousTrack": "Previous track", - "@nowPlayingPreviousTrack": { - "description": "Tooltip for the previous-track playback control" - }, - "nowPlayingNextTrack": "Next track", - "@nowPlayingNextTrack": { - "description": "Tooltip for the next-track playback control" - }, - "logAutoScrollOff": "Auto-scroll OFF", - "trackConvertFailed": "Conversion failed", - "@trackConvertFailed": { - "description": "Snackbar when conversion fails" - }, - "extensionsUninstall": "Copot", - "safMigrationSuccess": "Download folder updated to SAF mode", - "optionsClearHistorySubtitle": "Hapus semua lagu dari riwayat", - "@optionsClearHistorySubtitle": { - "description": "Subtitle for clear history" - }, - "trackPlayNext": "Play next", - "extensionsNoHomeFeedExtensions": "No extensions with home feed", - "optionsUpdateChannelStable": "Hanya rilis stabil", - "@optionsUpdateChannelStable": { - "description": "Only stable updates" - }, - "@discographyDownloadAllSubtitle": { - "description": "Subtitle showing total tracks and albums", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } - }, - "searchPlaylists": "Playlist", - "@searchPlaylists": { - "description": "Search result category - playlists" - }, - "downloadNetworkCompatibilityMode": "Network Compatibility Mode", - "settingsAppearance": "Tampilan", - "logIssueRateLimitedLabel": "RATE LIMITED", - "@logIssueRateLimitedLabel": { - "description": "Diagnostic badge label when the service rate limits requests" - }, - "logIssueSummary": "Issue Summary", - "@logIssueSummary": { - "description": "Header for log issue analysis summary" - }, - "appName": "SpotiFLAC Mobile", - "storeRepoDialogCurrent": "Repositori saat ini:", - "@optionsExtensionStoreSubtitle": { - "description": "Subtitle for extension repo toggle" - }, - "@trackLyrics": { - "description": "Tab title - lyrics" - }, - "@backupImportButton": { - "description": "Button to pick a backup file to restore" - }, - "@setupFolderChoose": { - "description": "Button to choose folder" - }, - "storageModeAppFolderSubtitle": "Saves to Music/SpotiFLAC by default", - "@extensionsDisabled": { - "description": "Extension status - inactive" - }, - "@regionCountryAU": { - "description": "Country name for SongLink region picker" - }, - "@storeCategoryMetadata": { - "description": "Store extension category - metadata" - }, - "libraryFilterApply": "Apply", - "@libraryFilterApply": { - "description": "Apply filters button" - }, - "@libraryFilterSortGenreAsc": { - "description": "Sort option - genre ascending" - }, - "setupAllowAccessToManageFiles": "Harap aktifkan \"Izinkan akses untuk mengelola semua file\" di layar berikutnya.", - "@dialogSave": { - "description": "Dialog button - save changes" - }, - "trackLyrics": "Lirik", - "extensionSettingNotSet": "Not set", - "@extensionSettingNotSet": { - "description": "Value shown when an extension setting has no value" - }, - "@audioAnalysisClipping": { - "description": "Clipping metric label" - }, - "downloadNeteaseIncludeTranslation": "Netease: Include Translation", - "@albumFolderArtistAlbumSubtitle": { - "description": "Folder structure example" - }, - "@settingsDonateSubtitle": { - "description": "Subtitle for donate menu item" - }, - "cueSplitSuccess": "Split into {count} tracks successfully", - "@cueSplitSuccess": { - "description": "Snackbar after successful CUE split", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cueSplitArtist": "Artist: {artist}", - "@cueSplitArtist": { - "description": "Artist name in CUE split sheet", - "placeholders": { - "artist": { - "type": "String" - } - } - }, - "updateSeeReleaseNotes": "See release notes for details.", - "@updateSeeReleaseNotes": { - "description": "Fallback changelog text when release notes cannot be parsed" - }, - "@trackReEnrichFfmpegFailed": { - "description": "Snackbar when FFmpeg embed fails for MP3/Opus" - }, - "collectionWishlist": "Wishlist", - "@collectionWishlist": { - "description": "Custom folder for saved tracks to download later" - }, - "editMetadataAutoFillFetch": "Fetch & Fill", - "@extensionsHomeFeedAuto": { - "description": "Label for auto-selected search provider" - }, - "providerPriorityDescription": "Seret untuk mengatur ulang urutan provider unduhan. Aplikasi akan mencoba provider dari atas ke bawah saat mengunduh lagu.", - "@providerPriorityDescription": { - "description": "Provider priority page description" - }, - "queueEmptySinglesSubtitle": "Single track downloads will appear here", "downloadLossyOpus128": "Opus 128kbps", + "@downloadLossyOpus128": { + "description": "Lossy format option - Opus 128kbps" + }, + "downloadLossyOpus128Subtitle": "Ukuran terkecil, ~4MB per lagu", + "@downloadLossyOpus128Subtitle": { + "description": "Subtitle for Opus 128kbps lossy option" + }, + "downloadAskBeforeDownload": "Tanya Sebelum Download", + "@downloadAskBeforeDownload": { + "description": "Setting - show quality picker" + }, + "downloadDirectory": "Folder Download", + "@downloadDirectory": { + "description": "Setting - download folder" + }, + "downloadSeparateSinglesFolder": "Folder Single Terpisah", + "@downloadSeparateSinglesFolder": { + "description": "Setting - separate folder for singles" + }, + "downloadAlbumFolderStructure": "Struktur Folder Album", + "@downloadAlbumFolderStructure": { + "description": "Setting - album folder organization" + }, + "albumFolderStructureDescription": "Pilih struktur folder album", + "@albumFolderStructureDescription": { + "description": "Album folder structure picker description" + }, "downloadUseAlbumArtistForFolders": "Gunakan Artis Album untuk folder", "@downloadUseAlbumArtistForFolders": { "description": "Setting - choose whether artist folders use Album Artist or Track Artist" }, - "@aboutLinks": { - "description": "Section for external links" - }, - "downloadedAlbumDeleteCount": "Hapus {count} {count, plural, =1{lagu} other{lagu}}", - "updateLater": "Nanti", - "@logIssueIspBlockingSuggestion": { - "description": "Diagnostic badge suggestion for ISP blocking" - }, - "actionResume": "Lanjutkan", - "optionsDetailedLoggingOff": "Aktifkan untuk laporan bug", - "@searchSortDefault": { - "description": "Sort option - default API order" - }, - "@regionCountryCA": { - "description": "Country name for SongLink region picker" - }, - "@sectionStorageAccess": { - "description": "Section header for storage access settings" - }, - "downloadFilterContributing": "Filter Contributing Artists", - "downloadUseAlbumArtistForFoldersTrackSubtitle": "Folder named after Track Artist tag", - "storeSearch": "Cari ekstensi...", - "@storeSearch": { - "description": "Repo search placeholder" - }, - "aboutTelegramChat": "Komunitas Telegram", - "lyricsModeBoth": "Keduanya", - "@lyricsModeBoth": { - "description": "Lyrics mode option - embed and external" - }, - "@permissionNotification": { - "description": "Notification permission type label" - }, - "libraryAutoScanSubtitle": "Automatically scan your library for new files", - "@libraryAutoScanSubtitle": { - "description": "Subtitle for auto scan setting" - }, - "libraryEnableLocalLibrary": "Enable Local Library", - "trackConvertTargetFormat": "Target Format", - "@trackConvertTargetFormat": { - "description": "Label for format selection" - }, - "extensionSettings": "Pengaturan", - "@editMetadataAutoFillSearching": { - "description": "Snackbar shown while searching for online metadata" - }, - "trackLyricsTimeout": "Permintaan habis waktu. Coba lagi nanti.", - "settingsExtensions": "Ekstensi", - "@settingsBackup": { - "description": "Settings menu item - backup and restore page" - }, - "librarySourceDownloaded": "Downloaded", - "@librarySourceDownloaded": { - "description": "Badge for tracks downloaded via SpotiFLAC" - }, - "appearanceDynamicColor": "Warna Dinamis", - "@appearanceDynamicColor": { - "description": "Material You dynamic colors" - }, - "backupImportButton": "Choose backup file", - "downloadAppleElrcWordSyncDisabled": "Safer line-by-line Apple Music lyrics", - "@optionsEmbedMetadata": { - "description": "Settings toggle title for writing metadata into downloaded files" - }, - "appearanceTitle": "Tampilan", - "downloadNeteaseIncludeRomanizationDisabled": "No romanization", - "@downloadNeteaseIncludeRomanizationDisabled": { - "description": "Subtitle when Netease romanization is off" - }, - "@libraryScanCancelled": { - "description": "Library scan status when a scan was cancelled" - }, - "tracksCount": "{count, plural, =1{1 lagu} other{{count} lagu}}", - "@snackbarFailedToUpdateNamed": { - "description": "Snackbar when extension update fails in the repo tab", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "@extensionQualityOptions": { - "description": "Capability - quality selection" - }, - "logClearSearch": "Clear search", - "trackSaveLyrics": "Save Lyrics (.lrc)", - "@trackReEnrichSearching": { - "description": "Snackbar while searching metadata from internet for local items" - }, - "@editMetadataAutoFillNoResults": { - "description": "Snackbar when online metadata search returns no results" - }, - "notifDownloadComplete": "Download Complete", - "snackbarAlreadyDownloaded": "\"{trackName}\" sudah diunduh", - "folderOrganizationByAlbumSubtitle": "Folder terpisah untuk setiap album", - "storeRepoUrlHint": "https://github.com/user/repo", - "trackConvertDitherTriangularHp": "Triangular HP", - "lyricsModeBothSubtitle": "Sematkan dan simpan file .lrc", - "trackReEnrichFieldExtra": "Genre, Label, Copyright", - "@trackReEnrichFieldExtra": { - "description": "Checkbox label for extra metadata in re-enrich" - }, - "sectionLyrics": "Lirik", - "@sectionLyrics": { - "description": "Settings section header" - }, - "extensionStrategy": "Strategi: {strategy}", - "@extensionStrategy": { - "description": "Track matching strategy name", - "placeholders": { - "strategy": { - "type": "String" - } - } - }, - "@downloadNativeWorker": { - "description": "Setting title for Android native download worker" - }, - "optionsArtistTagModeSplitVorbis": "Tag terpisah untuk FLAC/Opus", - "extensionsHomeFeedUse": "Use {extensionName} home feed", - "@cacheAppDirectoryDesc": { - "description": "Description of what app cache directory contains" - }, - "cancelDownloadTitle": "Cancel download?", - "updateWhatsNew": "Apa yang baru", - "updateNewVersionReady": "Versi baru sudah siap", - "@extensionVerificationClose": { - "description": "Button to dismiss the extension verification help dialog" - }, - "a11ySelectTrack": "Select track", - "libraryClearSubtitle": "Remove all scanned tracks", - "@libraryClearSubtitle": { - "description": "Subtitle for clear button" - }, - "@settingsDownloadNetworkSubtitle": { - "description": "Subtitle explaining network preference" - }, - "storeAnyVersion": "Any", - "@storeAnyVersion": { - "description": "Store detail value when any app version is accepted" - }, - "navStore": "Repositori", - "backupExportSectionDescription": "Save your settings, download history, liked tracks, wishlist, favorite artists and playlists into a single file you can keep or move to another phone.", - "libraryScanSettings": "Scan Settings", - "@libraryScanSettings": { - "description": "Section header for scan settings" - }, - "trackDuration": "Durasi", - "@trackDuration": { - "description": "Metadata label - track length" - }, - "extensionHealthOffline": "Offline", - "@extensionHealthOffline": { - "description": "Extension service health status - offline" - }, - "editMetadataFieldArtist": "Artist", - "@editMetadataFieldArtist": { - "description": "Chip label for artist field in auto-fill selector" - }, - "libraryInLibrary": "In Library", - "pressBackAgainToExit": "Tekan kembali sekali lagi untuk keluar", - "@pressBackAgainToExit": { - "description": "Exit confirmation message" - }, - "setupNotificationGranted": "Izin Notifikasi Diberikan!", - "@setupNotificationGranted": { - "description": "Success message for notification permission" - }, - "settingsDonate": "Support Development", - "snackbarFailedToUpdateNamed": "Failed to update {extensionName}", - "backupContentsTitle": "Backup contents", - "updateDontRemind": "Jangan ingatkan", - "@dialogDiscard": { - "description": "Dialog button - discard changes" - }, - "editMetadataAutoFillSearching": "Searching online...", - "discographyDownloadSelected": "Unduh yang Dipilih", - "trackConvertResampler": "Resampler", - "queueFilteringIndicator": "Filtering...", - "@queueFilteringIndicator": { - "description": "Shown while filter results are being computed" - }, - "@dialogDownloadAllTitle": { - "description": "Dialog title for bulk download confirmation" - }, - "cueSplitConfirmMessage": "Split \"{album}\" into {count} individual FLAC files?\n\nFiles will be saved to the same directory.", - "@downloadCreatePlaylistSourceFolderRedundant": { - "description": "Subtitle when folder organization is already set to playlist" - }, - "regionCountryCA": "Canada", - "cacheTempDirectory": "Temporary directory", - "@cacheTempDirectory": { - "description": "Cache item title for temporary files directory" - }, - "libraryShowDuplicateIndicator": "Show Duplicate Indicator", - "@logFilterBySeverity": { - "description": "Filter dialog title" - }, - "homeSearchHintProvider": "Search with {providerName}...", - "@downloadNeteaseIncludeTranslationDisabled": { - "description": "Subtitle when Netease translation is off" - }, - "optionsCheckUpdates": "Periksa Pembaruan", - "replayGainBatchAnalyzing": "Menganalisis ReplayGain...", - "recentTypeAlbum": "Album", - "providerExtension": "Ekstensi", - "@providerExtension": { - "description": "Label for extension-provided providers" - }, - "trackCoverNoSource": "No cover art source available", - "libraryFilterMetadata": "Metadata", - "albumFolderArtistYearAlbum": "Artis / [Tahun] Album", - "@albumFolderArtistYearAlbum": { - "description": "Album folder option with year" - }, - "audioAnalysisClipping": "Clipping", - "@a11yOpenAlbumByArtistTrackCount": { - "description": "Accessibility label for opening an album item with track count", - "placeholders": { - "albumName": { - "type": "String" - }, - "artistName": { - "type": "String" - }, - "trackCount": { - "type": "int" - } - } - }, - "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": { - "count": { - "type": "int" - } - } - }, - "channelStable": "Stabil", - "@channelStable": { - "description": "Update channel - stable releases" - }, - "tutorialSettingsTip3": "Sesuaikan tema dan tampilan aplikasi", - "setupAppDocumentsFolderSubtitle": "Direkomendasikan - dapat diakses via aplikasi Files", - "a11yPlayTrackByArtist": "Play {trackName} by {artistName}", - "@a11yPlayTrackByArtist": { - "description": "Accessibility label for playing a local library track", - "placeholders": { - "trackName": { - "type": "String" - }, - "artistName": { - "type": "String" - } - } - }, - "dialogRemove": "Hapus", - "extensionVerificationClose": "Close", - "bulkDownloadPlaylistsButton": "Download {count} {count, plural, =1{playlist} other{playlists}}", - "@bulkDownloadPlaylistsButton": { - "description": "Button label for bulk downloading selected playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "optionsAutoFallbackSubtitle": "Coba layanan lain jika unduhan gagal", - "@optionsAutoFallbackSubtitle": { - "description": "Subtitle for auto fallback" - }, - "extensionPatternsCount": "{count} pola", - "@libraryFilterLocal": { - "description": "Filter chip - show only local library items" - }, - "errorUrlNotRecognizedMessage": "Tautan ini tidak didukung. Pastikan URL sudah benar dan ekstensi yang kompatibel telah terpasang.", - "@errorUrlNotRecognizedMessage": { - "description": "Error message - URL not recognized explanation" - }, - "@extensionVerificationBrowserSubtitleExternal": { - "description": "Subtitle when external browser is preferred for extension verification" - }, - "optionsArtistTagMode": "Mode Tag Artis", - "libraryFilterMetadataComplete": "Complete metadata", - "@libraryFilterMetadataComplete": { - "description": "Filter option - items with complete metadata" - }, - "@extensionsVersion": { - "description": "Extension version display", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "@downloadNetworkAnySubtitle": { - "description": "Subtitle for any-network option in picker" - }, - "optionsReplayGainSubtitleOn": "Pindai kenyaringan dan sematkan tag ReplayGain (EBU R128)", - "libraryScanning": "Scanning...", - "@libraryScanning": { - "description": "Status during scan" - }, - "cacheRefresh": "Refresh", - "@actionShuffle": { - "description": "Tooltip for shuffle playback action" - }, - "optionsEmbedLyricsSubtitle": "Simpan lirik yang disinkronkan bersama dengan lagu yang Anda unduh", - "@optionsEmbedLyricsSubtitle": { - "description": "Subtitle for embed lyrics" - }, - "queueEmptyAlbumsSubtitle": "Download multiple tracks from an album to see them here", - "extensionEnterValue": "Enter value", - "@settingsDownloadNetworkAny": { - "description": "Network option - use any connection" - }, - "collectionLoved": "Loved", - "@collectionLoved": { - "description": "Custom folder for favorite tracks" - }, - "storeAddRepoTitle": "Tambahkan Repositori Ekstensi", - "@storeAddRepoTitle": { - "description": "Store setup screen - heading when no repo is configured" - }, - "collectionNoPlaylistsYet": "No playlists yet", - "@collectionNoPlaylistsYet": { - "description": "Empty state title when user has no playlists" - }, - "libraryCleanupMissingFilesSubtitle": "Remove entries for files that no longer exist", - "@libraryCleanupMissingFilesSubtitle": { - "description": "Subtitle for cleanup button" - }, - "folderOrganizationByArtist": "Berdasarkan Artis", - "@folderOrganizationByArtist": { - "description": "Folder option - artist folders" - }, - "aboutTranslators": "Penerjemah", - "notifAlreadyInLibraryCount": "Already in Library ({completed}/{total})", - "editMetadataFieldTitle": "Title", - "@editMetadataFieldTitle": { - "description": "Chip label for title field in auto-fill selector" - }, - "downloadFilenameDescription": "Use {artist}, {title}, {album}, {track}, {year}, {date}, {disc} as placeholders.", - "@downloadFilenameDescription": { - "description": "Description shown in filename format editor" - }, - "@notifDownloadsFinishedBody": { - "description": "Notification body when queue finishes with failures", - "placeholders": { - "completed": { - "type": "int" - }, - "failed": { - "type": "int" - } - } - }, - "@libraryFolderNotExist": { - "description": "Error when folder doesn't exist" - }, - "@playlistsCount": { - "description": "Playlist count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@loadingSharedLink": { - "description": "Status when opening shared URL" - }, - "extensionServiceHealth": "Service health", - "@extensionServiceHealth": { - "description": "Extension capability label for service health checks" - }, - "@collectionDeletePlaylistsMessage": { - "description": "Confirmation message for deleting selected playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "setupStorageDescription": "SpotiFLAC membutuhkan izin penyimpanan untuk menyimpan file musik yang diunduh.", - "tutorialReadyMessage": "You're ready. Select your extensions, then search or paste a supported link.", - "tutorialLibraryTip3": "Browse tracks, albums, and playlists in list or grid views", - "selectionDeletePlaylistsCount": "Delete {count} {count, plural, =1{playlist} other{playlists}}", - "appearanceThemeLight": "Terang", - "queueEmptyHistorySubtitle": "Downloaded tracks will appear here", - "@queueEmptyHistorySubtitle": { - "description": "Empty state subtitle for download history" - }, - "backupRestoreFailed": "Failed to restore backup", - "@backupRestoreFailed": { - "description": "Snackbar when restore fails" - }, - "queueFlacQueuedWithSkipped": "Added {addedCount} tracks to queue, skipped {skippedCount}", - "@queueFlacQueuedWithSkipped": { - "description": "Snackbar when some selected local tracks were queued for FLAC redownload and some were skipped", - "placeholders": { - "addedCount": { - "type": "int" - }, - "skippedCount": { - "type": "int" - } - } - }, - "@trackReplayGain": { - "description": "Three-dot menu option to scan loudness and write ReplayGain tags" - }, - "@downloadedAlbumDownloadedCount": { - "description": "Downloaded tracks count badge", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "setupFolderChoose": "Pilih Folder Unduhan", - "dialogDownloadAllTitle": "Download All", - "providerPriorityInfo": "Jika lagu tidak tersedia di provider pertama, aplikasi akan otomatis mencoba yang berikutnya.", - "@providerPriorityInfo": { - "description": "Info tip about fallback behavior" - }, - "@dialogDiscardChanges": { - "description": "Dialog title - unsaved changes warning" - }, - "discographyNoAlbums": "No albums available", - "downloadAppleQqMultiPersonDisabled": "Standard lyrics without speaker labels", - "cacheNoData": "No cached data", - "@cacheNoData": { - "description": "Label when cache category has no data" - }, - "tutorialStartDownloadSemantics": "Start download", - "@tutorialStartDownloadSemantics": { - "description": "Accessibility label for idle download button in tutorial demo" - }, - "logIssueIspBlockingSuggestion": "Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8", - "aboutTitle": "Tentang", - "@cueSplitButton": { - "description": "Button text to start CUE splitting" - }, - "appearanceHistoryView": "Gaya Tampilan Histori", - "audioAnalysisSampleRate": "Sample Rate", - "@settingsCache": { - "description": "Settings menu item - cache management" - }, - "lyricsProvidersInfoText": "Extension lyrics providers run before built-in lyrics providers. At least one provider must remain enabled.", - "cacheTrackLookup": "Track lookup cache", - "extensionsHomeFeedOffSubtitle": "Do not show the home feed on the main screen", + "downloadUsePrimaryArtistOnly": "Hanya artis utama untuk folder", "@downloadUsePrimaryArtistOnly": { "description": "Setting - strip featured artists from folder name" }, - "@regionCountryIN": { - "description": "Country name for SongLink region picker" + "downloadUsePrimaryArtistOnlyEnabled": "Artis featuring dihapus dari nama folder (misalnya Justin Bieber, Quavo → Justin Bieber)", + "@downloadUsePrimaryArtistOnlyEnabled": { + "description": "Subtitle when primary artist only is enabled" }, - "@libraryFilterQualityLossy": { - "description": "Filter option - lossy compressed audio" + "downloadUsePrimaryArtistOnlyDisabled": "Nama lengkap artis digunakan untuk nama folder", + "@downloadUsePrimaryArtistOnlyDisabled": { + "description": "Subtitle when primary artist only is disabled" }, - "extensionRefreshStatus": "Refresh status", - "notifAllDownloadsComplete": "All Downloads Complete", - "downloadNeteaseIncludeRomanizationEnabled": "Romanization lines included", - "editMetadataFieldDateHint": "YYYY-MM-DD or YYYY", - "@editMetadataFieldDateHint": { - "description": "Hint text for the edit metadata date field" + "downloadSelectQuality": "Pilih Kualitas", + "@downloadSelectQuality": { + "description": "Dialog title - choose audio quality" }, - "trackMetadataShare": "Bagikan", - "@trackMetadataShare": { - "description": "Action button - share track" + "downloadFrom": "Download Dari", + "@downloadFrom": { + "description": "Label - download source" }, - "discographyDownloadAllSubtitle": "{count} lagu dari {albumCount} rilisan", - "settingsDonateSubtitle": "Buy the developer a coffee", - "libraryFilterDownloaded": "Downloaded", - "downloadNetworkAnySubtitle": "Use WiFi or mobile data", - "@cueSplitNoAudioFile": { - "description": "Error when CUE audio file is missing" - }, - "notifLibraryScanStopped": "Scan stopped before completion.", - "@settingsMetadata": { - "description": "Settings menu item - metadata settings" - }, - "snackbarFailedToInstallNamed": "Failed to install {extensionName}", - "trackCopyLyrics": "Salin lirik", - "@trackCopyLyrics": { - "description": "Action - copy lyrics to clipboard" - }, - "regionCountryAU": "Australia", - "downloadAlbumFolderStructure": "Struktur Folder Album", - "downloadMusixmatchAuto": "Auto", - "actionDismiss": "Dismiss", - "storeFilterAll": "Semua", - "extensionsDisabled": "Nonaktif", - "@logClearLogs": { - "description": "Clear button tooltip" - }, - "dialogDownloadAllMessage": "Download {count} tracks?", - "@optionsEmbedLyrics": { - "description": "Embed lyrics in audio files" - }, - "tutorialLibraryTitle": "Perpustakaan Anda", - "optionsCheckUpdatesSubtitle": "Beritahu saat versi baru tersedia", - "@optionsCheckUpdatesSubtitle": { - "description": "Subtitle for update check" - }, - "collectionPlaylist": "Playlist", - "@collectionPlaylist": { - "description": "Single playlist label" - }, - "dateMonthsAgo": "{count} bulan lalu", - "@dateMonthsAgo": { - "description": "Relative date - months ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@extensionRemoveButton": { - "description": "Button to uninstall extension" - }, - "collectionPlaylistRenamed": "Playlist renamed", - "collectionCreatePlaylist": "Create playlist", - "homeGoToAlbum": "Go to Album", - "@homeGoToAlbum": { - "description": "Context menu item to navigate to the album page" - }, - "folderOrganizationByArtistSubtitle": "Folder terpisah untuk setiap artis", - "@optionsClearHistory": { - "description": "Delete all download history" - }, - "@searchAlbums": { - "description": "Search result category - albums" - }, - "@sectionDebug": { - "description": "Settings section header" - }, - "extensionsVersion": "Versi {version}", - "@navHome": { - "description": "Bottom navigation - Home tab" - }, - "@editMetadataFieldDate": { - "description": "Chip label for date field in auto-fill selector" - }, - "downloadUsePrimaryArtistOnly": "Hanya artis utama untuk folder", - "tutorialExtensionsTip2": "Choose providers for search, downloads, metadata, and fallbacks", - "@setupStorageGranted": { - "description": "Success message for storage permission" - }, - "tutorialWelcomeTitle": "Welcome to SpotiFLAC Mobile!", - "a11ySelectAlbum": "Select album {albumName}", - "@a11ySelectAlbum": { - "description": "Accessibility label for selecting an album", - "placeholders": { - "albumName": { - "type": "String" - } - } - }, - "aboutMobileSource": "Kode sumber mobile", - "@aboutMobileSource": { - "description": "Link to mobile GitHub repo" - }, - "@extensionCustomUrlHandling": { - "description": "Extension detail section title for custom URL handling" - }, - "@downloadMusixmatchLanguageAuto": { - "description": "Subtitle when no language is set" - }, - "@cancelDownloadKeep": { - "description": "Dialog button - keep the active download (do not cancel)" - }, - "libraryFilterSource": "Source", - "@libraryFilterSource": { - "description": "Filter section - source type" - }, - "sectionStorageAccess": "Storage Access", - "logFilterBySeverity": "Filter log berdasarkan tingkat keparahan", - "libraryFolderNotExist": "Selected folder does not exist", - "optionsEmbedMetadataSubtitleOn": "Write metadata, cover art, and embedded lyrics to files", - "albumFolderArtistAlbum": "Artis / Album", - "@albumFolderArtistAlbum": { - "description": "Album folder option" - }, - "allFilesAccessDeniedMessage": "Permission was denied. Please enable 'All files access' manually in system settings.", - "@allFilesAccessDeniedMessage": { - "description": "Message when permission is permanently denied" - }, - "editMetadataSelectEmpty": "Empty only", - "settingsLocalLibrarySubtitle": "Scan music & detect duplicates", - "@settingsAutoExportFailed": { - "description": "Setting toggle for auto-export" - }, - "cacheCleanupUnusedSubtitle": "Remove orphaned download history and missing library entries", - "@tutorialSettingsTitle": { - "description": "Tutorial settings page title" - }, - "libraryFilterMetadataMissingGenre": "Missing genre", - "@appearanceSelectAccentColor": { - "description": "Accessibility label for picking an accent color", - "placeholders": { - "hex": { - "type": "String" - } - } - }, - "setupFolderDescription": "Pilih folder tempat musik yang diunduh akan disimpan.", - "extensionDetailsTags": "Tags", - "unknownArtist": "Unknown Artist", - "trackFetchOnlineLyrics": "Ambil dari Online", - "snackbarNoActionDefined": "No action defined for this button", - "@snackbarNoActionDefined": { - "description": "Snackbar when an extension button has no action configured" - }, - "downloadAllCount": "Unduh Semua ({count})", - "@downloadAllCount": { - "description": "Download all button with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadedAlbumDiscHeader": "Disc {discNumber}", - "@backupInvalidFile": { - "description": "Snackbar when the chosen file is not a valid backup" - }, - "@extensionHooksAvailable": { - "description": "Post-processing hooks count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@logIssueTrackNotFoundSuggestion": { - "description": "Diagnostic badge suggestion when a track is unavailable" - }, - "@snackbarFileNotFound": { - "description": "Snackbar - file doesn't exist" - }, - "extensionHealthOnline": "Online", - "@extensionHealthOnline": { - "description": "Extension service health status - online" - }, - "settingsSaveDownloadHistorySubtitle": "Keep completed downloads in history and library views", - "trackOptionRemoveFromWishlist": "Remove from Wishlist", - "extensionsFallbackTitle": "Ekstensi Cadangan", - "@extensionsFallbackTitle": { - "description": "Setting and page title for choosing which download extensions can be used during fallback" - }, - "metadataSaveFailedFfmpeg": "Failed to save metadata via FFmpeg", - "@albumFolderAlbumOnly": { - "description": "Album folder option" - }, - "@albumFolderYearAlbumSubtitle": { - "description": "Folder structure example" - }, - "downloadedAlbumDeleteSelected": "Hapus yang Dipilih", - "selectionSelectPlaylistsToDelete": "Select playlists to delete", - "@selectionSelectPlaylistsToDelete": { - "description": "Hint shown when no playlists are selected for deletion" - }, - "storeAddRepoDescription": "Masukkan URL repositori GitHub yang berisi file registry.json untuk menelusuri dan memasang ekstensi.", - "appearanceThemeDark": "Gelap", - "downloadedAlbumTapToSelect": "Ketuk lagu untuk memilih", - "@collectionAddedToFavoriteArtists": { - "description": "Snackbar after adding artist to favorite artists", - "placeholders": { - "artistName": { - "type": "String" - } - } - }, - "@backupRestored": { - "description": "Snackbar after a successful restore" - }, - "nowPlayingLibraryEmpty": "Your library is empty", - "@nowPlayingLibraryEmpty": { - "description": "Snackbar when shuffle library is requested but library has no tracks" - }, - "editMetadataAutoFillNoResults": "No matching metadata found online", - "updateDownloading": "Mengunduh...", - "trackLyricsSource": "Sumber: {source}", - "logFilterLevel": "Level", - "logNoLogsYet": "Belum ada log", - "cacheSizeOnly": "{size}", - "@cacheSizeOnly": { - "description": "Cache size only", - "placeholders": { - "size": { - "type": "String" - } - } - }, - "trackOpenInService": "Open in {serviceName}", - "@trackOpenInService": { - "description": "Button label to open a track in a named music service", - "placeholders": { - "serviceName": { - "type": "String" - } - } - }, - "@cacheLibraryCoverDesc": { - "description": "Description of what library cover cache contains" - }, - "libraryClearConfirmMessage": "This will remove all scanned tracks from your library. Your actual music files will not be deleted.", - "@dialogImportPlaylistMessage": { - "description": "Dialog message - import playlist confirmation", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionsHomeFeedAuto": "Auto", - "searchEmptyResultSubtitle": "Coba kata kunci lain", - "@searchEmptyResultSubtitle": { - "description": "Subtitle shown under the empty search result state on the home screen" - }, - "dateToday": "Hari ini", - "a11yOpenItem": "Open {itemType} {name}", - "@a11yOpenItem": { - "description": "Accessibility label for opening a generic item", - "placeholders": { - "itemType": { - "type": "String" - }, - "name": { - "type": "String" - } - } - }, - "audioAnalysisBitDepth": "Bit Depth", - "editMetadataFieldTrackTotal": "Track Total", - "@editMetadataFieldTrackTotal": { - "description": "Label for total tracks field in the edit metadata sheet" - }, - "@editMetadataFieldDiscTotal": { - "description": "Label for total discs field in the edit metadata sheet" - }, - "replayGainBatchConfirmMessage": "Analisis kenyaringan dan tulis tag ReplayGain ke {count} trek?", - "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Folder named after Album Artist tag", - "@notifDownloadingUpdate": { - "description": "Notification title while downloading an app update", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "@csvImportTracks": { - "description": "Label shown in quality picker for CSV import", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "trackEditMetadata": "Edit Metadata", - "discographyDownloadAll": "Unduh Semua", - "@discographyDownloadAll": { - "description": "Option - download entire discography" - }, - "@editMetadataFieldAlbum": { - "description": "Chip label for album field in auto-fill selector" - }, - "albumFolderArtistAlbumSubtitle": "Albums/Nama Artis/Nama Album/", - "extensionHealthServiceUnknown": "Service status unknown", - "navHome": "Beranda", - "queueDownloadStarting": "Starting...", - "queueCheckingDownloadSession": "Memeriksa sesi unduhan...", - "queueResolvingDownloadMetadata": "Mencari metadata lagu...", - "queueResolvingDownloadStream": "Menyiapkan stream audio...", - "queueWaitingForVerification": "Menunggu verifikasi...", - "queueResumingAfterVerification": "Melanjutkan setelah verifikasi...", - "@dialogRemoveExtension": { - "description": "Dialog title - uninstall extension" - }, - "notifLibraryScanProgressNoTotal": "{scanned} files scanned • {percentage}%", + "appearanceAmoledDark": "AMOLED Gelap", "@appearanceAmoledDark": { "description": "Theme option - pure black" }, - "qualityHiResFlac": "Hi-Res FLAC", - "selectionSelected": "{count} dipilih", - "extensionDetailsInformation": "Information", - "@extensionDetailsInformation": { - "description": "Section title for extension metadata information" + "appearanceAmoledDarkSubtitle": "Latar belakang hitam murni", + "@appearanceAmoledDarkSubtitle": { + "description": "Subtitle for AMOLED dark" }, - "discographyDownload": "Unduh Diskografi", - "editMetadataFieldCopyright": "Copyright", - "@setupOpenSettings": { - "description": "Button to open system settings" - }, - "libraryFilterSort": "Sort", - "cacheLibraryCoverDesc": "Cover art extracted from local music files. Will re-extract on next scan.", - "dialogRemoveExtension": "Hapus Ekstensi", - "backupExportSectionTitle": "Create backup", - "downloadEmbedLyricsDisabled": "Enable metadata embedding first", - "openInOtherServices": "Open in Other Services", - "actionSelectAll": "Pilih Semua", - "settingsDownloadNetworkSubtitle": "Pilih jaringan mana yang akan digunakan untuk mengunduh. Jika diatur ke Hanya WiFi, unduhan akan berhenti sementara dan menggunakan data seluler.", - "downloadFolderOrganization": "Organisasi Folder", - "tutorialWelcomeTip2": "Choose from the audio qualities offered by your download provider", - "@tutorialWelcomeTip2": { - "description": "Tutorial welcome tip 2" - }, - "selectionAllSelected": "Semua lagu dipilih", - "@selectionAllSelected": { - "description": "Status - all items selected" - }, - "settingsLogsSubtitle": "Lihat log aplikasi untuk debugging", - "albumFolderYearAlbumSubtitle": "Albums/[2005] Nama Album/", - "cancelDownloadKeep": "Keep", - "optionsDetailedLoggingOn": "Log detail sedang direkam", - "safMigrationMessage2": "Please select your download folder again to switch to the new storage system.", - "@storeChangeRepoTooltip": { - "description": "Tooltip for the change-repository icon button in the app bar" - }, - "regionCountryJP": "Japan", - "notifUpdateFailed": "Update Failed", - "downloadCreatePlaylistSourceFolderRedundant": "Handled by folder organization setting", - "@trackLyricsSaved": { - "description": "Snackbar after lyrics saved", - "placeholders": { - "fileName": { - "type": "String" - } - } - }, - "downloadLocationSubtitle": "Choose where to save your downloaded tracks", - "trackConvertActionLabelLossless": "{sourceFormat} → {targetFormat} ({quality})", - "lyricsProvidersDisabledSection": "Disabled ({count})", - "@dateDaysAgo": { - "description": "Relative date - days ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "librarySourceLocal": "Local", - "backupContentsExtensions": "{count, plural, =1{1 extension} other{{count} extensions}}", - "sectionService": "Layanan", - "lyricsProviderQqMusicDesc": "QQ Music (cocok untuk lagu berbahasa Mandarin, API langsung)", - "@lyricsProviderQqMusicDesc": { - "description": "Description for QQ Music provider" - }, - "cacheCleanupUnusedDesc": "Remove orphaned download history and library entries for missing files.", - "selectionTapPlaylistsToSelect": "Tap playlists to select", - "notifUpdateFailedBody": "Could not download update. Try again later.", - "downloadNeteaseIncludeTranslationDisabled": "Original lyrics only", - "artistPopular": "Populer", - "extensionRemoveButton": "Hapus Ekstensi", - "allFilesAccessEnabledSubtitle": "Can write to any folder", - "@allFilesAccessEnabledSubtitle": { - "description": "Subtitle when all files access is enabled" - }, - "extensionsSearchProvider": "Provider Pencarian", - "tutorialWelcomeDesc": "Learn how to find music with extensions, choose the quality you want, and manage downloads in SpotiFLAC Mobile.", - "selectionBatchConvertConfirmTitle": "Batch Convert", - "extensionMetadataProvider": "Provider Metadata", - "queueDownloadedFileMissing": "Downloaded file missing", - "logClearLogs": "Hapus log", - "@downloadAppleQqMultiPerson": { - "description": "Setting for word-by-word multi-person lyrics from Apple Music and QQ Music" - }, - "tutorialWelcomeTip1": "Search with an installed extension or paste a supported music link", - "@tutorialWelcomeTip1": { - "description": "Tutorial welcome tip 1" - }, - "logIssueRateLimitedSuggestion": "Wait a few minutes before trying again", - "downloadAllowLocalNetworkEnabled": "Requests to local/private addresses are allowed (for local proxy or custom DNS)", - "@regionCountryUS": { - "description": "Country name for SongLink region picker" - }, - "trackArtist": "Artis", - "extensionCustomUrlHandling": "Custom URL Handling", - "appearanceDynamicColorSubtitle": "Gunakan warna dari wallpaper Anda", - "@appearanceDynamicColorSubtitle": { - "description": "Subtitle for dynamic color" - }, - "searchSortDefault": "Default", - "@downloadFallbackExtensions": { - "description": "Settings item for configuring fallback extension providers" - }, - "albumFolderStructureDescription": "Pilih bagaimana struktur folder album akan dibuat", - "@albumFolderStructureDescription": { - "description": "Album folder structure picker description" - }, - "libraryBuiltInPreviewPlayerSubtitle": "Pratinjau lagu lokal di SpotiFLAC Mobile", - "@libraryBuiltInPreviewPlayerSubtitle": { - "description": "Subtitle for built-in preview player option" - }, - "storageModeAppFolder": "App Folder (Recommended)", - "@actionPause": { - "description": "Action button - pause download" - }, - "actionPaste": "Paste", - "extensionSettingsCount": "{count} {count, plural, =1{setting} other{settings}}", - "downloadNativeWorker": "Native download worker", - "releaseTypeEp": "EP", - "@releaseTypeEp": { - "description": "Badge label for EP releases" - }, - "snackbarExtensionInstalledEnable": "{extensionName} installed. Enable it in Settings > Extensions", - "cacheRefreshStats": "Refresh stats", - "collectionPlaylistChangeCover": "Change cover image", - "@collectionPlaylistChangeCover": { - "description": "Bottom sheet action to pick a custom cover image for a playlist" - }, - "optionsClearHistory": "Hapus Riwayat Unduhan", - "trackGenre": "Genre", - "snackbarSelectedPlaylistsEmpty": "Selected playlists have no tracks", - "collectionAddedTracksToPlaylist": "Added {count} {count, plural, =1{track} other{tracks}} to {playlistName}", - "downloadNeteaseIncludeRomanization": "Netease: Include Romanization", - "libraryFilterMetadataMissingArtist": "Missing artist", - "extensionsNoCustomSearch": "Tidak ada ekstensi dengan pencarian kustom", - "@extensionsTitle": { - "description": "Extensions page title" - }, - "extensionDownloadProvider": "Provider Unduhan", - "@extensionDownloadProvider": { - "description": "Capability - provides downloads" - }, - "lyricsMode": "Mode Lirik", - "aboutReportIssueSubtitle": "Laporkan masalah yang Anda temui", - "@downloadSeparateSinglesFolder": { - "description": "Setting - separate folder for singles" - }, - "appearanceAmoledDark": "AMOLED Gelap", - "logIssueNetworkErrorDescription": "Connection issues detected", - "folderOrganizationByArtistAlbumSubtitle": "Folder bersarang untuk artis dan album", - "@libraryForceFullScanSubtitle": { - "description": "Subtitle for force full scan button" - }, - "setupGrantPermission": "Berikan Izin", - "lyricsProvidersDescription": "Enable, disable and reorder lyrics sources. Providers are tried top-to-bottom until lyrics are found.", - "dateDaysAgo": "{count} hari lalu", - "extensionsHomeFeedDescription": "Choose which extension provides the home feed on the main screen", - "downloadLossyMp3Subtitle": "Kompatibilitas terbaik, ~10MB per trek", - "@downloadLossyMp3Subtitle": { - "description": "Subtitle for MP3 320kbps lossy option" - }, - "nowPlayingDetails": "Details", - "collectionWishlistEmptyTitle": "Wishlist is empty", - "downloadAppleQqMultiPersonEnabled": "Speaker labels included for duets and group tracks", - "@snackbarExtensionUpdatedVersion": { - "description": "Snackbar after updating an extension from the repo tab", - "placeholders": { - "extensionName": { - "type": "String" - }, - "version": { - "type": "String" - } - } - }, - "extensionHealthServiceDegraded": "Service degraded", - "selectionConvertNoConvertible": "No convertible tracks selected", - "setupStorageGranted": "Izin Penyimpanan Diberikan!", - "downloadAllowLocalNetwork": "Allow Local Network Access", - "nowPlayingNoLyrics": "No lyrics in this file", - "nowPlayingInstrumental": "Jeda instrumental", - "nowPlayingLyricsLanguageOptions": "Opsi bahasa lirik", - "nowPlayingHidePronunciation": "Sembunyikan Pelafalan", - "nowPlayingShowPronunciation": "Tampilkan Pelafalan", - "nowPlayingHideTranslation": "Sembunyikan Terjemahan", - "nowPlayingShowTranslation": "Tampilkan Terjemahan", - "selectionDeleteTracksCount": "Delete {count} {count, plural, =1{track} other{tracks}}", - "@selectionDeleteTracksCount": { - "description": "Button label for deleting selected tracks", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@libraryForceFullScan": { - "description": "Button to force a complete rescan of library" - }, - "notifLibraryScanExcluded": "{count} excluded", - "@aboutPaxsenixSubtitle": { - "description": "Subtitle for Paxsenix special thanks entry on the about page" - }, - "setupChangeFolderTooltip": "Change folder", - "logIssueIspBlockingDescription": "Your ISP may be blocking access to download services", - "@logIssueIspBlockingDescription": { - "description": "Diagnostic badge description for ISP blocking" - }, - "libraryClear": "Clear Library", - "collectionRemoveFromPlaylist": "Remove from playlist", - "@collectionRemoveFromPlaylist": { - "description": "Tooltip for removing track from playlist" - }, - "backupIncludeSecrets": "Include extension credentials", - "notifDownloadsFinishedBody": "{completed, plural, =1{1 track downloaded} other{{completed} tracks downloaded}}, {failed, plural, =1{1 failed} other{{failed} failed}}", - "storeCategoryMetadata": "Metadata", - "@trackLyricsEmbedded": { - "description": "Snackbar - lyrics saved to file" - }, - "editMetadataFieldDiscTotal": "Disc Total", - "tutorialLibraryTip1": "Manage active, pending, and completed downloads from the Library queue", - "playlistsCount": "{count, plural, =1{1 playlist} other{{count} playlists}}", - "downloadCreatePlaylistSourceFolderDisabled": "All tracks saved directly to download folder", - "@downloadFallbackExtensionsSubtitle": { - "description": "Subtitle for fallback extensions item" - }, - "libraryFilterLocal": "Local", - "tutorialDownloadInProgressSemantics": "Download in progress", - "searchSortDurationLong": "Durasi (Terpanjang)", - "@appearanceLanguage": { - "description": "Language setting title" - }, - "libraryAbout": "About Local Library", - "@libraryAbout": { - "description": "Section header for about info" - }, - "cueSplitNoAudioFile": "Audio file not found for this CUE sheet", - "notifUpdateReadyBody": "SpotiFLAC Mobile v{version} downloaded. Tap to install.", - "appearanceSelectAccentColor": "Select accent color {hex}", - "@homeAlbumInfoUnavailable": { - "description": "Snackbar when album info cannot be loaded" - }, - "trackReplayGain": "Pindai ulang ReplayGain", - "downloadSeparateSinglesFolder": "Folder Singles Terpisah", - "trackAlbumArtist": "Artis album", - "qualityFlacLossless": "FLAC Lossless", - "@extensionVerificationHelpMessageWaiting": { - "description": "Dialog message when verification may need manual browser help" - }, - "tutorialSettingsTitle": "Customize Your Experience", - "extensionActionFailed": "Action failed", - "@storeEmptyNoResults": { - "description": "Message when search/filter returns no results" - }, - "downloadAppleQqMultiPerson": "Apple / QQ: Multi-Person Lyrics", - "downloadFallbackExtensionsSubtitle": "Choose which extensions can be used as fallback", - "storeExtensionsCount": "{count} {count, plural, =1{extension} other{extensions}}", - "trackCoverNoEmbeddedArt": "No embedded album art found", - "@trackCoverNoEmbeddedArt": { - "description": "Message shown when a track file has no embedded cover art" - }, - "snackbarExtensionUpdatedVersion": "{extensionName} updated to v{version}", - "setupStorageAccessMessageAndroid11": "Android 11+ memerlukan izin \"Akses semua file\" untuk menyimpan file ke folder unduhan pilihan Anda.", - "notifDownloadsFinished": "Downloads Finished ({completed} done, {failed} failed)", - "notifLibraryScanProgressWithTotal": "{scanned}/{total} files • {percentage}%", - "optionsPrimaryProvider": "Provider Utama", - "@optionsPrimaryProvider": { - "description": "Main search provider setting" - }, - "logIssueTrackNotFoundSuggestion": "The track may not be available in lossless quality", - "collectionAddedToLoved": "\"{trackName}\" added to Loved", - "albumFolderArtistAlbumFlat": "Artis / Album (Single digabung)", - "homeAlbumInfoUnavailable": "Album info not available", - "settingsLyrics": "Lyrics", - "extensionVerificationBrowserExternal": "External", - "regionCountryIN": "India", - "extensionHealthUnknown": "Unknown", - "backupContentsWishlist": "{count} wishlist {count, plural, =1{track} other{tracks}}", - "settingsAutoExportFailed": "Unduhan yang gagal diekspor otomatis", - "logFilterSection": "Filter", - "dialogDiscardChanges": "Buang Perubahan?", - "@qualityHiResFlacSubtitle": { - "description": "Technical spec for hi-res" - }, - "searchTracks": "Tracks", - "searchAlbums": "Album", - "trackConvertFormat": "Convert Format", - "metadataProviderPriorityTitle": "Prioritas Metadata", - "libraryFolderHint": "Tap to select folder", - "downloadedAlbumDeleteMessage": "Hapus {count} {count, plural, =1{lagu} other{lagu}} dari album ini?\n\nIni juga akan menghapus file dari penyimpanan.", - "@downloadedAlbumDeleteMessage": { - "description": "Delete confirmation with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "trackAlbum": "Album", - "updateAvailable": "Pembaruan Tersedia", - "optionsEmbedLyrics": "Sematkan Lirik", - "trackReEnrichProgress": "Re-enriching metadata...", - "@trackReEnrichProgress": { - "description": "Snackbar while re-enriching metadata" - }, - "audioAnalysisPeak": "Peak", - "@audioAnalysisPeak": { - "description": "Peak amplitude metric label" - }, - "optionsExtensionStoreSubtitle": "Tampilkan tab Repo di navigasi", - "settingsTitle": "Pengaturan", - "@settingsAbout": { - "description": "Settings section - app info" - }, - "cacheExploreFeed": "Explore feed cache", - "@dialogDownloadPlaylistsMessage": { - "description": "Dialog message for bulk playlist download confirmation", - "placeholders": { - "trackCount": { - "type": "int" - }, - "playlistCount": { - "type": "int" - } - } - }, - "downloadedAlbumSelectedCount": "{count} dipilih", - "downloadAskQualitySubtitle": "Tampilkan pemilih kualitas untuk setiap unduhan", - "filenameShowAdvancedTags": "Tampilkan tag lanjutan", - "@filenameShowAdvancedTags": { - "description": "Toggle label for showing advanced filename tags" - }, - "@editMetadataFieldComment": { - "description": "Label for comment field in the edit metadata sheet" - }, - "downloadFallbackExtensions": "Fallback Extensions", - "downloadAlbumArtistMetadataFull": "Album Artist metadata: Full", - "cacheLibraryCover": "Library cover cache", - "actionShuffle": "Shuffle", - "backupCreated": "Backup created", - "downloadLossyAacSubtitle": "Kompatibilitas seluler terbaik, kontainer M4A", - "actionCreate": "Create", - "snackbarAddedToQueueGeneric": "Added to queue", - "downloadedAlbumDownloadedCount": "{count} diunduh", - "snackbarLoadingCueSheet": "Loading CUE sheet...", - "@trackCoverClearSelected": { - "description": "Tooltip for clearing the newly selected cover art" - }, - "aboutOriginalCreator": "Pencipta SpotiFLAC asli", - "a11yTrackByArtist": "{trackName} by {artistName}", - "audioAnalysisDynamicRange": "Dynamic Range", - "homeChangeSearchProviderTooltip": "Change search provider", - "loadingSharedLink": "Memuat link yang dibagikan...", - "lyricsModeEmbedSubtitle": "Lirik tersimpan di dalam metadata FLAC", - "setupNotificationBackgroundDescription": "Dapatkan notifikasi tentang progres dan penyelesaian unduhan. Ini membantu Anda melacak unduhan saat aplikasi di latar belakang.", - "snackbarViewQueue": "Lihat Antrian", - "@audioAnalysisDuration": { - "description": "Duration metric label" - }, - "downloadSeparateSinglesDisabled": "Singles and albums saved in the same folder", - "backupRestored": "Backup restored successfully", - "trackConvertConfirmMessageLosslessCapped": "Convert from {sourceFormat} to {targetFormat} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original file will be deleted after conversion.", - "@trackConvertConfirmMessageLosslessCapped": { - "description": "Confirmation dialog message for capped lossless conversion of a single file", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "quality": { - "type": "String" - } - } - }, - "discographySelectAlbumsSubtitle": "Pilih album atau single spesifik", - "@discographySelectAlbumsSubtitle": { - "description": "Subtitle for select albums option" - }, - "backupImportSectionDescription": "Pick a backup file to restore your data. This replaces the current settings, history and library on this device.", - "errorUrlFetchFailed": "Konten dari tautan ini gagal dimuat. Silakan coba lagi.", - "lyricsProviderLyricsPlusDesc": "Word-by-word karaoke lyrics (Apple/Musixmatch/Spotify/QQ, via proxy)", - "dialogSave": "Simpan", - "trackReEnrichSearching": "Searching metadata online...", - "trackReEnrichPreparing": "Menyiapkan perubahan metadata...", - "regionCountryUS": "United States", - "audioAnalysisDescription": "Verify lossless quality with spectrum analysis", - "downloadFilenameFormat": "Format Nama File", - "cueSplitTitle": "Split CUE Sheet", - "settingsAppSubtitle": "Updates, data, extension repo, debug", - "@settingsAppSubtitle": { - "description": "Subtitle for app settings" - }, - "@setupPermissionRequiredMessage": { - "description": "Generic permission required message", - "placeholders": { - "permissionType": { - "type": "String" - } - } - }, - "errorMissingExtensionSource": "Tidak dapat memuat {item}: sumber ekstensi tidak ada", - "albumFolderAlbumOnlySubtitle": "Albums/Nama Album/", - "logIssueTrackNotFoundLabel": "TRACK NOT FOUND", - "extensionVerificationHelpTitleManual": "Open verification manually", - "dialogDiscard": "Buang", - "storageModeSaf": "Custom Folder (SAF)", - "errorRateLimited": "Dibatasi", - "downloadSelectQuality": "Pilih Kualitas", - "dialogDownloadPlaylistsMessage": "Download {trackCount} {trackCount, plural, =1{track} other{tracks}} from {playlistCount} {playlistCount, plural, =1{playlist} other{playlists}}?", - "collectionFoldersTitle": "My folders", - "progressFetchingMetadata": "Mengambil metadata... {current}/{total}", - "settingsDownloadNetworkAny": "WiFi + Data Seluler", - "audioAnalysisDuration": "Duration", - "audioAnalysisAnalyzing": "Analyzing audio...", - "extensionVerificationHelpMessageWaiting": "If the browser did not open, or verification finished but did not return to SpotiFLAC Mobile, open this link again or copy it manually.", - "editMetadataFieldDiscNum": "Disc #", - "@editMetadataFieldDiscNum": { - "description": "Chip label for disc number field in auto-fill selector" - }, - "@noTracksFoundForAlbum": { - "description": "Empty state message when an album has no tracks" - }, - "previewPlay": "Putar pratinjau", - "setupPermissionRequiredMessage": "Izin {permissionType} diperlukan untuk pengalaman terbaik. Anda dapat mengubahnya nanti di Pengaturan.", - "aboutVersion": "Versi", - "qualityHiResFlacSubtitle": "24-bit / hingga 96kHz", - "audioAnalysisSamples": "Samples", - "libraryFilterQualityHiRes": "Hi-Res (24bit)", - "sectionMetadataProviders": "Providers", - "@sectionMetadataProviders": { - "description": "Settings section header for metadata providers" - }, - "trackCopyright": "Hak cipta", - "libraryForceFullScanSubtitle": "Rescan all files, ignoring cache", - "trackCopiedToClipboard": "Disalin ke clipboard", - "optionsEmbedMetadata": "Embed Metadata", - "collectionAddedTracksToPlaylistWithExisting": "Added {count} {count, plural, =1{track} other{tracks}} to {playlistName} ({alreadyCount} already in playlist)", - "@collectionAddedTracksToPlaylistWithExisting": { - "description": "Snackbar after adding multiple tracks to a playlist when some were already present", - "placeholders": { - "count": { - "type": "int" - }, - "playlistName": { - "type": "String" - }, - "alreadyCount": { - "type": "int" - } - } - }, - "storeCategoryIntegration": "Integration", - "storeClearFilters": "Hapus filter", - "navSettings": "Pengaturan", - "@homeRecent": { - "description": "Section header for recent searches" - }, - "sectionApp": "Aplikasi", - "@sectionLanguage": { - "description": "Settings section header for language" - }, - "downloadFilterContributingDisabled": "Full Album Artist string used", - "albumFolderArtistAlbumSinglesSubtitle": "Artis/Album/ dan Artis/Single/", - "collectionDeletePlaylistsMessage": "Delete {count} {count, plural, =1{playlist} other{playlists}}?", - "lyricsProvidersSaved": "Lyrics provider priority saved", - "@trackReplayGainFailed": { - "description": "Snackbar message when ReplayGain scan/write fails" - }, - "trackTrackName": "Nama lagu", - "homeRecent": "Terbaru", - "recentEmpty": "Belum ada item terbaru", - "cacheClearAll": "Clear all cache", - "trackReEnrichFieldReleaseInfo": "Date & ISRC", - "regionCountryMX": "Mexico", - "a11yOpenAlbumByArtistTrackCount": "Open album {albumName} by {artistName}, {trackCount} tracks", - "editMetadataFieldAlbum": "Album", - "settingsAbout": "Tentang", - "libraryFilterTitle": "Filters", - "cleanupOrphanedDownloadsResult": "Removed {count} orphaned entries from history", - "extensionHooksAvailable": "{count} hook tersedia", - "storageAutomaticFolder": "Folder otomatis", - "storageAutomaticDownloadFolder": "Menggunakan Download/SpotiFLAC jika dapat ditulis, atau penyimpanan aplikasi", - "storageSafRecommended": "Pilih folder (Disarankan)", - "storageDownloadFolderHint": "Di pemilih folder Android, buka Download dan pilih SpotiFLAC. Jika belum ada, buat melalui Folder baru, lalu ketuk Gunakan folder ini untuk memberikan akses.", - "backupSettingsOnly": "Pengaturan saja", - "backupSelectHistory": "Riwayat download", - "backupSelectCollections": "Koleksi library", - "backupSelectCollectionsDescription": "Lagu disukai, wishlist, artis favorit, playlist, dan sampul playlist.", - "backupSelectExtensions": "Ekstensi dan pengaturannya", - "backupSelectedExportDescription": "Simpan kategori yang dipilih ke file backup. File audio tidak disertakan.", - "backupSelectAtLeastOne": "Pilih minimal satu kategori untuk membuat backup.", - "backupSelectedRestoreMessage": "Hanya kategori di bawah yang akan dipulihkan. Kategori yang tidak disertakan dalam backup ini tidak akan berubah. Pemulihan dapat mengganti data yang ada dan tidak dapat dibatalkan.", - "backupContentsSettings": "App settings", - "trackLyricsEmbedded": "Lirik berhasil disematkan", - "optionsUpdateChannelPreview": "Dapatkan rilis preview", - "collectionAddedToFavoriteArtists": "\"{artistName}\" added to Favorite Artists", - "libraryForceFullScan": "Force Full Scan", - "snackbarProviderPrioritySaved": "Prioritas provider disimpan", - "collectionFavoriteArtistsEmptySubtitle": "Tap the heart on an artist page to keep them here", - "libraryBuiltInPlayerInfo": "The built-in player is a preview tool for checking local tracks quickly. Use an external music player for actual listening.", - "extensionServiceStatus": "Service Status", - "dateWeeksAgo": "{count} minggu lalu", - "historyFilterSingles": "Single", - "tutorialSettingsTip2": "Set quality, concurrency, filenames, and conversion preferences", - "trackLyricsSaved": "Lyrics saved to {fileName}", - "cacheClearAllConfirmTitle": "Clear all cache?", - "noTracksFoundForAlbum": "No tracks found for this album", - "sectionLanguage": "Bahasa", - "@logIssueTrackNotFoundDescription": { - "description": "Diagnostic badge description when a track is unavailable" - }, - "setupSelectFolder": "Pilih Folder", - "dateYesterday": "Kemarin", - "collectionAddToPlaylist": "Add to playlist", - "snackbarUnsupportedAudioFormat": "Unsupported audio format", - "libraryScanCancelled": "Scan cancelled", - "appearanceLanguage": "Bahasa Aplikasi", - "extensionsTitle": "Ekstensi", - "dialogImportPlaylistMessage": "Menemukan {count} lagu di file playlist. Tambahkan ke antrean download?", - "permissionNotification": "Notification", - "notifUpdateReady": "Update Ready", - "lyricsModeDescription": "Pilih cara lirik disimpan bersama unduhan Anda", - "downloadFrom": "Unduh Dari", - "collectionWishlistEmptySubtitle": "Tap + on tracks to save what you want to download later", - "cueSplitSplitting": "Splitting CUE sheet... ({current}/{total})", - "trackOptionAddToWishlist": "Add to Wishlist", - "settingsBackup": "Backup & Restore", - "aboutPaxsenixSubtitle": "Lyrics proxy for Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou, and Genius", - "notifDownloadCompleteCount": "Download Complete ({completed}/{total})", - "extensionsNoDownloadProvider": "Tidak ada ekstensi dengan provider unduhan", - "libraryFilterSortGenreAsc": "Genre (A-Z)", - "trackReplayGainFailed": "Gagal menambahkan tag ReplayGain", - "trackRemoveReplayGain": "Hapus ReplayGain", - "trackRemoveReplayGainSuccess": "Tag ReplayGain dihapus", - "trackRemoveReplayGainFailed": "Gagal menghapus tag ReplayGain", - "replayGainRemoving": "Menghapus ReplayGain...", - "replayGainRemoveConfirmMessage": "Hapus tag ReplayGain lagu dan album dari {count} lagu? Audio, sampul, dan metadata lainnya tetap tersimpan.", - "selectionRemoveReplayGainCount": "Hapus RG ({count})", - "replayGainRemoveBatchSuccess": "ReplayGain dihapus dari {success} dari {total} lagu", - "collectionPlaylistRemoveCover": "Remove cover image", - "storeEmptyNoResults": "Tidak ada ekstensi ditemukan", - "logIssueTrackNotFoundDescription": "Some tracks could not be found on download services", - "editMetadataFieldComment": "Comment", - "trackAlbumType": "Release Type", - "editMetadataFieldAlbumTypeHint": "Album, single, EP, compilation...", - "editMetadataFieldExplicit": "Explicit", - "editMetadataFieldExplicitHint": "Mark this track as containing explicit content", - "metadataExplicitValue": "Explicit", - "editMetadataFieldUpc": "UPC / Barcode", - "editMetadataFieldUpcHint": "Numeric UPC, EAN, or GTIN", - "settingsMetadata": "Metadata", - "settingsCache": "Storage & Cache", - "providerPriorityFallbackExtensionsHint": "Hanya ekstensi yang diaktifkan dengan kemampuan penyedia unduhan yang tercantum di sini.", - "libraryFilterAll": "All", - "notifDownloadingUpdate": "Downloading SpotiFLAC Mobile v{version}", - "extensionsProviderPrioritySection": "Prioritas Provider", - "storeChangeRepoTooltip": "Ubah repositori", - "snackbarFailedToInstall": "Gagal memasang ekstensi", - "libraryScanSubtitle": "Scan for audio files", - "snackbarExtensionInstalled": "{extensionName} terpasang.", - "setupOpenSettings": "Buka Pengaturan", - "extensionsInstalledSection": "Ekstensi Terpasang", - "aboutLinks": "Tautan", - "trackCoverClearSelected": "Clear selected cover", - "libraryAutoScanWeekly": "Weekly", - "downloadMusixmatchLanguageAuto": "Auto (original language)", - "optionsDefaultSearchTab": "Tab Pencarian Default", - "downloadPrimaryArtistOnlyOn": "Primary only: On", - "folderOrganizationDescription": "Atur file yang diunduh ke dalam folder", - "@folderOrganizationDescription": { - "description": "Folder organization sheet description" - }, - "lyricsModeEmbed": "Sematkan dalam file", - "trackReEnrichFfmpegFailed": "FFmpeg metadata embed failed", - "@extensionsSearchProviderDescription": { - "description": "Search provider setting description" - }, - "libraryFilterQualityLossy": "Lossy", - "actionPause": "Jeda", - "csvImportTracks": "{count} trek dari CSV", - "actionGo": "Go", - "sectionDebug": "Debug", - "editMetadataFieldDate": "Date", - "timeHoursAgo": "{count, plural, =1{1 hour ago} other{{count} hours ago}}", - "sectionPerformance": "Performa", - "extensionsDownloadPrioritySubtitle": "Atur urutan layanan unduhan", - "cacheAppDirectoryDesc": "HTTP responses, WebView data, and other temporary app data.", - "sectionData": "Data", - "notifFinalizingTrack": "Finalizing {trackName}", - "snackbarFileNotFound": "File tidak ditemukan", - "extensionQualityOptions": "Opsi Kualitas", - "extensionVerificationBrowserSubtitleExternal": "Open challenges in the default browser first", - "backupInvalidFile": "This file is not a valid SpotiFLAC backup", - "storeRepoDialogTitle": "Repositori Ekstensi", - "extensionsSearchProviderDescription": "Pilih layanan yang digunakan untuk mencari lagu", - "albumFolderAlbumOnly": "Album Saja", - "nowPlayingOpenInExternalPlayer": "Open in external player", - "cueSplitButton": "Split into Tracks", - "trackConvertKeepOriginal": "Pertahankan file asli", - "@trackConvertKeepOriginal": { - "description": "Toggle untuk mempertahankan file sumber saat konversi" - }, - "trackConvertKeepOriginalDescription": "Tambahkan file hasil konversi sebagai entri library terpisah", - "@trackConvertKeepOriginalDescription": { - "description": "Deskripsi opsi mempertahankan file sumber saat konversi" - }, - "trackConvertConfirmKeepOriginal": "Konversi dari {sourceFormat} ke {targetFormat}?\n\nFile asli akan dipertahankan dan file hasil konversi akan ditambahkan sebagai entri library terpisah.", - "@trackConvertConfirmKeepOriginal": { - "description": "Konfirmasi konversi ketika file sumber dipertahankan", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - } - } - }, - "selectionBatchConvertConfirmKeepOriginal": "Konversi {count} lagu ke {format}?\n\nFile asli akan dipertahankan dan file hasil konversi akan ditambahkan sebagai entri library terpisah.", - "@selectionBatchConvertConfirmKeepOriginal": { - "description": "Konfirmasi konversi batch ketika file sumber dipertahankan", - "placeholders": { - "count": { - "type": "int" - }, - "format": { - "type": "String" - } - } - }, - "downloadQualityVariants": "Izinkan versi dengan kualitas berbeda", - "@downloadQualityVariants": { - "description": "Pengaturan untuk menyimpan beberapa versi kualitas dari lagu yang sama" - }, - "downloadQualityVariantsDescription": "Keep every quality version; add its measured quality to the filename only when the name is already used", - "@downloadQualityVariantsDescription": { - "description": "Deskripsi penyimpanan beberapa versi kualitas" - }, - "trackOptionDownloadQualityVariant": "Unduh kualitas lain", - "@trackOptionDownloadQualityVariant": { - "description": "Aksi menu lagu untuk mengunduh versi kualitas lain" - }, - "downloadDeduplicationWithQualityVariants": "File yang sudah ada pada kualitas yang dipilih akan dilewati", - "@downloadDeduplicationWithQualityVariants": { - "description": "Subtitle deduplikasi ketika versi kualitas terpisah diizinkan" - }, - "updateRequiredTitle": "Harus update", - "@updateRequiredTitle": { - "description": "Title of the mandatory update dialog shown when the installed version is too old" - }, - "updateRequiredNotice": "Versi yang Anda gunakan adalah {count} dan sudah tidak didukung. Update untuk terus menggunakan aplikasi.", - "@updateRequiredNotice": { - "description": "Subtitle of the mandatory update dialog; explains why the dialog cannot be dismissed", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "appearanceHeroAnimations": "Animasi hero", + "appearanceHeroAnimations": "Transisi halus", "@appearanceHeroAnimations": { "description": "Toggle for shared-element (Hero) transitions" }, - "appearanceHeroAnimationsSubtitle": "Fly covers between screens, e.g. when opening the player", + "appearanceHeroAnimationsSubtitle": "Transisikan cover art antar layar, cont. membuka pemutar", "@appearanceHeroAnimationsSubtitle": { "description": "Subtitle for the Hero animations toggle" }, - "settingsConcurrentDownloads": "Unduhan bersamaan", + "appearanceForceBlur": "Selalu gunakan efek blur", + "@appearanceForceBlur": { + "description": "Toggle that forces backdrop blur on even when the device profile disabled it" + }, + "appearanceForceBlurSubtitle": "Aktifkan blur bar navigasi di perangkat yang dimatikan secara default. Dapat memengaruhi performa.", + "@appearanceForceBlurSubtitle": { + "description": "Subtitle for the force-blur toggle" + }, + "queueClearAll": "Hapus Semua", + "@queueClearAll": { + "description": "Button - clear all queue items" + }, + "queueClearAllMessage": "Anda yakin ingin menghapus semua download?", + "@queueClearAllMessage": { + "description": "Clear queue confirmation" + }, + "settingsAutoExportFailed": "Ekspor otomatis download gagal", + "@settingsAutoExportFailed": { + "description": "Setting toggle for auto-export" + }, + "settingsAutoExportFailedSubtitle": "Otomatis simpan download gagal ke file TXT", + "@settingsAutoExportFailedSubtitle": { + "description": "Subtitle for auto-export setting" + }, + "settingsDownloadNetwork": "Koneksi Download", + "@settingsDownloadNetwork": { + "description": "Setting for network type preference" + }, + "settingsDownloadNetworkAny": "WiFi + Data Seluler", + "@settingsDownloadNetworkAny": { + "description": "Network option - use any connection" + }, + "settingsDownloadNetworkWifiOnly": "Hanya WiFi", + "@settingsDownloadNetworkWifiOnly": { + "description": "Network option - only use WiFi" + }, + "settingsDownloadNetworkSubtitle": "Koneksi yang akan digunakan untuk mendownload. Jika diatur ke Hanya WiFi, download dihentikan saat menggunakan data seluler.", + "@settingsDownloadNetworkSubtitle": { + "description": "Subtitle explaining network preference" + }, + "settingsConcurrentDownloads": "Download bersamaan", "@settingsConcurrentDownloads": { "description": "Setting title - how many tracks download at the same time" }, - "settingsConcurrentDownloadsSubtitle": "Mengunduh beberapa lagu sekaligus lebih cepat, tetapi beberapa penyedia mungkin membatasi permintaan paralel.", + "settingsConcurrentDownloadsSubtitle": "Mendownload beberapa lagu sekaligus lebih cepat, tetapi beberapa penyedia mungkin membatasi permintaan paralel.", "@settingsConcurrentDownloadsSubtitle": { "description": "Subtitle explaining the concurrent downloads picker" }, @@ -6208,114 +2274,4544 @@ } } }, - "libraryPlaybackNormalization": "Volume normalization", + "albumFolderArtistAlbum": "Artis / Album", + "@albumFolderArtistAlbum": { + "description": "Album folder option" + }, + "albumFolderArtistAlbumSubtitle": "Albums/Nama Artis/Nama Album/", + "@albumFolderArtistAlbumSubtitle": { + "description": "Folder structure example" + }, + "albumFolderArtistYearAlbum": "Artis / [Tahun] Album", + "@albumFolderArtistYearAlbum": { + "description": "Album folder option with year" + }, + "albumFolderArtistYearAlbumSubtitle": "Albums/Nama Artis/[2005] Nama Album/", + "@albumFolderArtistYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "albumFolderAlbumOnly": "Album Saja", + "@albumFolderAlbumOnly": { + "description": "Album folder option" + }, + "albumFolderAlbumOnlySubtitle": "Albums/Nama Album/", + "@albumFolderAlbumOnlySubtitle": { + "description": "Folder structure example" + }, + "albumFolderYearAlbum": "[Tahun] Album", + "@albumFolderYearAlbum": { + "description": "Album folder option with year" + }, + "albumFolderYearAlbumSubtitle": "Albums/[2005] Nama Album/", + "@albumFolderYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "albumFolderArtistAlbumSingles": "Artis / Album + Singel", + "@albumFolderArtistAlbumSingles": { + "description": "Album folder option with singles inside artist" + }, + "albumFolderArtistAlbumSinglesSubtitle": "Artis/Album/ dan Artis/Single/", + "@albumFolderArtistAlbumSinglesSubtitle": { + "description": "Folder structure example" + }, + "albumFolderArtistAlbumFlat": "Artis / Album (Single digabung)", + "@albumFolderArtistAlbumFlat": { + "description": "Album folder option with singles directly in artist folder" + }, + "albumFolderArtistAlbumFlatSubtitle": "Artis/Album/ dan Artis/lagu.flac", + "@albumFolderArtistAlbumFlatSubtitle": { + "description": "Folder structure example for flat singles" + }, + "downloadedAlbumDeleteSelected": "Hapus yang Dipilih", + "@downloadedAlbumDeleteSelected": { + "description": "Button - delete selected tracks" + }, + "downloadedAlbumDeleteMessage": "Hapus {count} {count, plural, =1{lagu} other{lagu}} dari album ini?\n\nIni juga akan menghapus file dari penyimpanan.", + "@downloadedAlbumDeleteMessage": { + "description": "Delete confirmation with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumSelectedCount": "{count} dipilih", + "@downloadedAlbumSelectedCount": { + "description": "Selection count indicator", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumTapToSelect": "Ketuk lagu untuk memilih", + "@downloadedAlbumTapToSelect": { + "description": "Selection hint" + }, + "downloadedAlbumDeleteCount": "Hapus {count} {count, plural, =1{lagu} other{lagu}}", + "@downloadedAlbumDeleteCount": { + "description": "Delete button text with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumSelectToDelete": "Pilih lagu untuk dihapus", + "@downloadedAlbumSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "downloadedAlbumDiscHeader": "Disk {discNumber}", + "@downloadedAlbumDiscHeader": { + "description": "Header for disc separator in multi-disc albums", + "placeholders": { + "discNumber": { + "type": "int", + "example": "1" + } + } + }, + "recentTypeArtist": "Artis", + "@recentTypeArtist": { + "description": "Recent access item type - artist" + }, + "recentTypeAlbum": "Album", + "@recentTypeAlbum": { + "description": "Recent access item type - album" + }, + "recentTypeSong": "Lagu", + "@recentTypeSong": { + "description": "Recent access item type - song/track" + }, + "recentTypePlaylist": "Playlist", + "@recentTypePlaylist": { + "description": "Recent access item type - playlist" + }, + "recentEmpty": "Tidak ada baru-baru ini", + "@recentEmpty": { + "description": "Empty state text for recent access list" + }, + "recentClearAllMessage": "Hapus semua baru-baru ini? Histori download dan file musik tidak akan dihapus.", + "@recentClearAllMessage": { + "description": "Confirmation message before clearing all recent activity" + }, + "recentShowAllDownloads": "Tampilkan Semua Download", + "@recentShowAllDownloads": { + "description": "Button label to unhide hidden downloads in recent access" + }, + "recentPlaylistInfo": "Download: {name}", + "@recentPlaylistInfo": { + "description": "Snackbar message when tapping playlist in recent access", + "placeholders": { + "name": { + "type": "String", + "description": "Playlist name" + } + } + }, + "discographyDownload": "Download Diskografi", + "@discographyDownload": { + "description": "Button - download artist discography" + }, + "discographyDownloadAll": "Download Semua", + "@discographyDownloadAll": { + "description": "Option - download entire discography" + }, + "discographyDownloadAllSubtitle": "{count} lagu dari {albumCount} rilisan", + "@discographyDownloadAllSubtitle": { + "description": "Subtitle showing total tracks and albums", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "discographyAlbumsOnly": "Hanya Album", + "@discographyAlbumsOnly": { + "description": "Option - download only albums" + }, + "discographyAlbumsOnlySubtitle": "{count} lagu dari {albumCount} album", + "@discographyAlbumsOnlySubtitle": { + "description": "Subtitle showing album tracks count", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "discographySinglesOnly": "Hanya Single & EP", + "@discographySinglesOnly": { + "description": "Option - download only singles" + }, + "discographySinglesOnlySubtitle": "​{count} lagu dari {albumCount} single", + "@discographySinglesOnlySubtitle": { + "description": "Subtitle showing singles tracks count", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "discographySelectAlbums": "Pilih Album...", + "@discographySelectAlbums": { + "description": "Option - manually select albums to download" + }, + "discographySelectAlbumsSubtitle": "Pilih album atau single spesifik", + "@discographySelectAlbumsSubtitle": { + "description": "Subtitle for select albums option" + }, + "discographyFetchingTracks": "Memuat lagu...", + "@discographyFetchingTracks": { + "description": "Progress - fetching album tracks" + }, + "discographyFetchingAlbum": "Memuat {current} dari {total}...", + "@discographyFetchingAlbum": { + "description": "Progress - fetching specific album", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "discographySelectedCount": "{count} dipilih", + "@discographySelectedCount": { + "description": "Selection count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "discographyDownloadSelected": "Download Terpilih", + "@discographyDownloadSelected": { + "description": "Button - download selected albums" + }, + "discographyAddedToQueue": "{count} lagu ditambahkan ke antrean", + "@discographyAddedToQueue": { + "description": "Snackbar - tracks added from discography", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "discographySkippedDownloaded": "{added} ditambahkan, {skipped} terdownload", + "@discographySkippedDownloaded": { + "description": "Snackbar - with skipped tracks count", + "placeholders": { + "added": { + "type": "int" + }, + "skipped": { + "type": "int" + } + } + }, + "discographyNoAlbums": "Tidak ada album tersedia", + "@discographyNoAlbums": { + "description": "Error - no albums found for artist" + }, + "discographyFailedToFetch": "Gagal mendapatkan informasi album", + "@discographyFailedToFetch": { + "description": "Error - some albums failed to load" + }, + "sectionStorageAccess": "Akses Penyimpanan", + "@sectionStorageAccess": { + "description": "Section header for storage access settings" + }, + "allFilesAccess": "Akses Semua File", + "@allFilesAccess": { + "description": "Toggle for MANAGE_EXTERNAL_STORAGE permission" + }, + "allFilesAccessEnabledSubtitle": "Dapat menyimpan ke folder manapun", + "@allFilesAccessEnabledSubtitle": { + "description": "Subtitle when all files access is enabled" + }, + "allFilesAccessDisabledSubtitle": "Gunakan folder media saja", + "@allFilesAccessDisabledSubtitle": { + "description": "Subtitle when all files access is disabled" + }, + "allFilesAccessDescription": "Hidupkan ini bila aplikasi mengalami eror saat menyimpan ke folder tertentu. Android 13+ membatasi akses ke folder tertentu secara default.", + "@allFilesAccessDescription": { + "description": "Description explaining when to enable all files access" + }, + "allFilesAccessDeniedMessage": "Izin ditolak. Mohon hidupkan 'Akses semua file' di setelan sistem.", + "@allFilesAccessDeniedMessage": { + "description": "Message when permission is permanently denied" + }, + "allFilesAccessDisabledMessage": "Akses Semua File dimatikan. Aplikasi akan menyimpan di folder media saja.", + "@allFilesAccessDisabledMessage": { + "description": "Snackbar message when user disables all files access" + }, + "settingsLocalLibrary": "Koleksi Lokal", + "@settingsLocalLibrary": { + "description": "Settings menu item - local library" + }, + "settingsLocalLibrarySubtitle": "Pindai musik & deteksi file ganda", + "@settingsLocalLibrarySubtitle": { + "description": "Subtitle for local library settings" + }, + "settingsCache": "Penyimpanan & Cache", + "@settingsCache": { + "description": "Settings menu item - cache management" + }, + "settingsCacheSubtitle": "Lihat total dan bersihkan cache", + "@settingsCacheSubtitle": { + "description": "Subtitle for cache management menu" + }, + "libraryTitle": "Koleksi Lokal", + "@libraryTitle": { + "description": "Library settings page title" + }, + "libraryScanSettings": "Setelan Pemindaian", + "@libraryScanSettings": { + "description": "Section header for scan settings" + }, + "libraryEnableLocalLibrary": "Hidupkan Koleksi Lokal", + "@libraryEnableLocalLibrary": { + "description": "Toggle to enable library scanning" + }, + "libraryEnableLocalLibrarySubtitle": "Pindai seluruh musik di perangkat Anda", + "@libraryEnableLocalLibrarySubtitle": { + "description": "Subtitle for enable toggle" + }, + "libraryFolder": "Folder Koleksi", + "@libraryFolder": { + "description": "Folder selection setting" + }, + "libraryFolderHint": "Ketuk untuk memilih folder", + "@libraryFolderHint": { + "description": "Placeholder when no folder selected" + }, + "libraryAddFolder": "Tambahkan folder koleksi", + "@libraryAddFolder": { + "description": "Action to add another local library source" + }, + "libraryAddFolderSubtitle": "Penyimpanan internal, kartu SD, SSD, atau penyimpanan eksternal lain", + "@libraryAddFolderSubtitle": { + "description": "Supported storage locations for local library sources" + }, + "librarySourceOnline": "Online", + "@librarySourceOnline": { + "description": "Library source is connected and accessible" + }, + "librarySourceOffline": "Offline. Hubungkan penyimpanan ke ponsel untuk mengakses lagu", + "@librarySourceOffline": { + "description": "Library source is temporarily disconnected" + }, + "librarySourceDisabled": "Dimatikan", + "@librarySourceDisabled": { + "description": "Library source has been disabled by the user" + }, + "librarySourceScanCount": "{scanned} dari {total} file dipindai ({progress}%)", + "@librarySourceScanCount": { + "description": "Live progress for one library folder scan", + "placeholders": { + "scanned": { + "type": "int" + }, + "total": { + "type": "int" + }, + "progress": { + "type": "String" + } + } + }, + "libraryExternalStorage": "Penyimpanan eksternal", + "@libraryExternalStorage": { + "description": "Label for a removable or external library source" + }, + "libraryRemoveFolder": "Hapus folder koleksi", + "@libraryRemoveFolder": { + "description": "Action to remove one indexed library source" + }, + "libraryRemoveFolderMessage": "Hapus folder ini dan lagu di dalamnya dari SpotiFLAC Mobile? File audio di perangkat tidak akan dihapus.", + "@libraryRemoveFolderMessage": { + "description": "Confirmation shown before removing a library source" + }, + "libraryShowDuplicateIndicator": "Tampilkan Tanda File Ganda", + "@libraryShowDuplicateIndicator": { + "description": "Toggle for duplicate indicator in search" + }, + "libraryShowDuplicateIndicatorSubtitle": "Tampilkan saat menelusuri lagu", + "@libraryShowDuplicateIndicatorSubtitle": { + "description": "Subtitle for duplicate indicator toggle" + }, + "libraryAutoScan": "Pindai Oto", + "@libraryAutoScan": { + "description": "Setting for automatic library scanning" + }, + "libraryAutoScanSubtitle": "Otomatis memindai pustaka Anda", + "@libraryAutoScanSubtitle": { + "description": "Subtitle for auto scan setting" + }, + "libraryAutoScanOff": "Mati", + "@libraryAutoScanOff": { + "description": "Auto scan disabled" + }, + "libraryAutoScanOnOpen": "Setiap dibuka", + "@libraryAutoScanOnOpen": { + "description": "Auto scan when app opens" + }, + "libraryAutoScanDaily": "Harian", + "@libraryAutoScanDaily": { + "description": "Auto scan once per day" + }, + "libraryAutoScanWeekly": "Mingguan", + "@libraryAutoScanWeekly": { + "description": "Auto scan once per week" + }, + "libraryActions": "Tindakan", + "@libraryActions": { + "description": "Section header for library actions" + }, + "libraryScan": "Pindai Koleksi", + "@libraryScan": { + "description": "Button to start library scan" + }, + "libraryScanSubtitle": "Pindai file audio", + "@libraryScanSubtitle": { + "description": "Subtitle for scan button" + }, + "libraryScanSelectFolderFirst": "Pilih folder dahulu", + "@libraryScanSelectFolderFirst": { + "description": "Message when trying to scan without folder" + }, + "libraryCleanupMissingFiles": "Bersihkan file yang hilang", + "@libraryCleanupMissingFiles": { + "description": "Button to remove entries for missing files" + }, + "libraryCleanupMissingFilesSubtitle": "Bersihkan lagu yang sudah tidak ada", + "@libraryCleanupMissingFilesSubtitle": { + "description": "Subtitle for cleanup button" + }, + "libraryClear": "Bersihkan Koleksi", + "@libraryClear": { + "description": "Button to clear all library entries" + }, + "libraryClearSubtitle": "Hapus semua lagu terpindai", + "@libraryClearSubtitle": { + "description": "Subtitle for clear button" + }, + "libraryClearConfirmTitle": "Bersihkan Koleksi", + "@libraryClearConfirmTitle": { + "description": "Dialog title for clear confirmation" + }, + "libraryClearConfirmMessage": "Tindakan ini akan menghapus lagu terpindai dari Koleksi Anda. File asli akan tetap berada di ponsel Anda.", + "@libraryClearConfirmMessage": { + "description": "Dialog message for clear confirmation" + }, + "libraryAbout": "Tentang Koleksi Lokal", + "@libraryAbout": { + "description": "Section header for about info" + }, + "libraryAboutDescription": "Memindai koleksi musik yang sudah ada untuk mendeteksi duplikat saat mengunduh. Mendukung format FLAC, ALAC, M4A, MP3, Opus, OGG, WAV, AIFF, dan APE. Metadata dibaca dari tag file jika tersedia.", + "@libraryAboutDescription": { + "description": "Description of local library feature" + }, + "libraryTracksUnit": "{count, plural, =1{lagu} other{lagu}}", + "@libraryTracksUnit": { + "description": "Unit label for tracks count (without the number itself)", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryFilesUnit": "{count, plural, =1{file} other{file}}", + "@libraryFilesUnit": { + "description": "Unit label for files count during library scanning", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryLastScanned": "Terakhir dipindai: {time}", + "@libraryLastScanned": { + "description": "Last scan time display", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "libraryLastScannedNever": "Belum", + "@libraryLastScannedNever": { + "description": "Shown when library has never been scanned" + }, + "libraryScanning": "Memindai...", + "@libraryScanning": { + "description": "Status during scan" + }, + "libraryScanFinalizing": "Menyelesaikan koleksi...", + "@libraryScanFinalizing": { + "description": "Status shown after file scanning finishes but library persistence is still running" + }, + "libraryScanProgress": "{progress}% dari {total} file", + "@libraryScanProgress": { + "description": "Scan progress display", + "placeholders": { + "progress": { + "type": "String" + }, + "total": { + "type": "int" + } + } + }, + "libraryInLibrary": "Di Koleksi", + "@libraryInLibrary": { + "description": "Badge shown on tracks that exist in local library" + }, + "libraryRemovedMissingFiles": "Menghapus {count} file hilang dari Koleksi", + "@libraryRemovedMissingFiles": { + "description": "Snackbar after cleanup", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryCleared": "Koleksi dibersihkan", + "@libraryCleared": { + "description": "Snackbar after clearing library" + }, + "libraryStorageAccessRequired": "Butuh Akses Penyimpanan", + "@libraryStorageAccessRequired": { + "description": "Dialog title for storage permission" + }, + "libraryStorageAccessMessage": "SpotiFLAC butuh akses penyimpanan untuk memindai Koleksi musik Anda. Mohon berikan perizinan di Setelan.", + "@libraryStorageAccessMessage": { + "description": "Dialog message for storage permission" + }, + "libraryFolderNotExist": "Folder terpilih tidak ada", + "@libraryFolderNotExist": { + "description": "Error when folder doesn't exist" + }, + "librarySourceDownloaded": "Terdownload", + "@librarySourceDownloaded": { + "description": "Badge for tracks downloaded via SpotiFLAC" + }, + "librarySourceLocal": "Lokal", + "@librarySourceLocal": { + "description": "Badge for tracks from local library scan" + }, + "libraryFilterAll": "Semua", + "@libraryFilterAll": { + "description": "Filter chip - show all library items" + }, + "libraryFilterDownloaded": "Terdownload", + "@libraryFilterDownloaded": { + "description": "Filter chip - show only downloaded items" + }, + "libraryFilterLocal": "Lokal", + "@libraryFilterLocal": { + "description": "Filter chip - show only local library items" + }, + "libraryFilterTitle": "Filter", + "@libraryFilterTitle": { + "description": "Filter bottom sheet title" + }, + "libraryFilterReset": "Reset", + "@libraryFilterReset": { + "description": "Reset all filters button" + }, + "libraryFilterApply": "Terapkan", + "@libraryFilterApply": { + "description": "Apply filters button" + }, + "libraryFilterSource": "Sumber", + "@libraryFilterSource": { + "description": "Filter section - source type" + }, + "libraryFilterQuality": "Kualitas", + "@libraryFilterQuality": { + "description": "Filter section - audio quality" + }, + "libraryFilterQualityHiRes": "Hi-Res (24bit)", + "@libraryFilterQualityHiRes": { + "description": "Filter option - high resolution audio" + }, + "libraryFilterQualityCD": "CD (16bit)", + "@libraryFilterQualityCD": { + "description": "Filter option - CD quality audio" + }, + "libraryFilterQualityLossy": "Lossy", + "@libraryFilterQualityLossy": { + "description": "Filter option - lossy compressed audio" + }, + "libraryFilterFormat": "Format", + "@libraryFilterFormat": { + "description": "Filter section - file format" + }, + "libraryFilterMetadata": "Metadata", + "@libraryFilterMetadata": { + "description": "Filter section - metadata completeness" + }, + "libraryFilterMetadataComplete": "Metadata lengkap", + "@libraryFilterMetadataComplete": { + "description": "Filter option - items with complete metadata" + }, + "libraryFilterMetadataMissingAny": "Metadata belum lengkap", + "@libraryFilterMetadataMissingAny": { + "description": "Filter option - items missing any tracked metadata field" + }, + "libraryFilterMetadataMissingYear": "Tidak ada tahun", + "@libraryFilterMetadataMissingYear": { + "description": "Filter option - items missing release year/date" + }, + "libraryFilterMetadataMissingGenre": "Tidak ada genre", + "@libraryFilterMetadataMissingGenre": { + "description": "Filter option - items missing genre" + }, + "libraryFilterMetadataMissingAlbumArtist": "Tidak ada artis album", + "@libraryFilterMetadataMissingAlbumArtist": { + "description": "Filter option - items missing album artist" + }, + "libraryFilterSort": "Urut", + "@libraryFilterSort": { + "description": "Filter section - sort order" + }, + "libraryFilterSortLatest": "Terbaru", + "@libraryFilterSortLatest": { + "description": "Sort option - newest first" + }, + "libraryFilterSortOldest": "Terlama", + "@libraryFilterSortOldest": { + "description": "Sort option - oldest first" + }, + "libraryFilterSortAlbumAsc": "Album (A-Z)", + "@libraryFilterSortAlbumAsc": { + "description": "Sort option - album ascending" + }, + "libraryFilterSortAlbumDesc": "Album (Z-A)", + "@libraryFilterSortAlbumDesc": { + "description": "Sort option - album descending" + }, + "libraryFilterSortGenreAsc": "Genre (A-Z)", + "@libraryFilterSortGenreAsc": { + "description": "Sort option - genre ascending" + }, + "libraryFilterSortGenreDesc": "Genre (Z-A)", + "@libraryFilterSortGenreDesc": { + "description": "Sort option - genre descending" + }, + "timeJustNow": "Baru saja", + "@timeJustNow": { + "description": "Relative time - less than a minute ago" + }, + "timeMinutesAgo": "{count, plural, =1{1 menit lalu} other{{count} menit lalu}}", + "@timeMinutesAgo": { + "description": "Relative time - minutes ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "timeHoursAgo": "{count, plural, =1{1 jam lalu} other{{count} jam lalu}}", + "@timeHoursAgo": { + "description": "Relative time - hours ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "tutorialWelcomeTitle": "Selamat datang di SpotiFLAC Mobile!", + "@tutorialWelcomeTitle": { + "description": "Tutorial welcome page title" + }, + "tutorialWelcomeDesc": "Pelajari cara menemukan musik dengan ekstensi, pilih kualitas yang Anda inginkan, dan atur download-nya di SpotiFLAC Mobile.", + "@tutorialWelcomeDesc": { + "description": "Tutorial welcome page description" + }, + "tutorialWelcomeTip1": "Telusuri dengan ekstensi terinstal atau tempelkan link musik yang didukung.", + "@tutorialWelcomeTip1": { + "description": "Tutorial welcome tip 1" + }, + "tutorialWelcomeTip2": "Pilih kualitas audio yang diberikan provider download Anda", + "@tutorialWelcomeTip2": { + "description": "Tutorial welcome tip 2" + }, + "tutorialWelcomeTip3": "Otomatis menyatukan metadata, cover art, lirik, dan informasi rilisan", + "@tutorialWelcomeTip3": { + "description": "Tutorial welcome tip 3" + }, + "tutorialSearchTitle": "Menemukan Musik", + "@tutorialSearchTitle": { + "description": "Tutorial search page title" + }, + "tutorialSearchDesc": "Telusuri dengan ekstensi terinstal atau tempelkan link musik yang didukung.", + "@tutorialSearchDesc": { + "description": "Tutorial search page description" + }, + "tutorialDownloadTitle": "Mengunduh Musik", + "@tutorialDownloadTitle": { + "description": "Tutorial download page title" + }, + "tutorialDownloadDesc": "Pilih kualitas yang tersedia, mulai download, dan pantau progresnya di antrean.", + "@tutorialDownloadDesc": { + "description": "Tutorial download page description" + }, + "tutorialLibraryTitle": "Koleksi Anda", + "@tutorialLibraryTitle": { + "description": "Tutorial library page title" + }, + "tutorialLibraryDesc": "Musik yang terdownload dan terpindai akan muncul di Koleksi Anda.", + "@tutorialLibraryDesc": { + "description": "Tutorial library page description" + }, + "tutorialLibraryTip1": "Pantau download yang sedang berlangsung, menunggu, dan selesai lewat antrean Koleksi", + "@tutorialLibraryTip1": { + "description": "Tutorial library tip 1" + }, + "tutorialLibraryTip2": "Ketuk lagu untuk memutarnya dengan pemutar bawaan", + "@tutorialLibraryTip2": { + "description": "Tutorial library tip 2" + }, + "tutorialLibraryTip3": "Jelajahi lagu, album, dan playlist dalam tampilan daftar atau kisi", + "@tutorialLibraryTip3": { + "description": "Tutorial library tip 3" + }, + "tutorialExtensionsTitle": "Ekstensi", + "@tutorialExtensionsTitle": { + "description": "Tutorial extensions page title" + }, + "tutorialExtensionsDesc": "Ekstensi menambahkan penelusuran, download, metadata, lirik, dan lainnya.", + "@tutorialExtensionsDesc": { + "description": "Tutorial extensions page description" + }, + "tutorialExtensionsTip1": "Jelajahi menu Repositori untuk menemukan berbagai ekstensi.", + "@tutorialExtensionsTip1": { + "description": "Tutorial extensions tip 1" + }, + "tutorialExtensionsTip2": "Pilih provider untuk penelusuran, download, metadata, dan fallback", + "@tutorialExtensionsTip2": { + "description": "Tutorial extensions tip 2" + }, + "tutorialExtensionsTip3": "Hubungkan akun jika diperlukan dan pastikan ekstensi selalu terupdate", + "@tutorialExtensionsTip3": { + "description": "Tutorial extensions tip 3" + }, + "tutorialSettingsTitle": "Sesuaikan Selera Anda", + "@tutorialSettingsTitle": { + "description": "Tutorial settings page title" + }, + "tutorialSettingsDesc": "Sesuaikan download, pemutaran, perilaku Koleksi, tampilan, dan penyimpanan.", + "@tutorialSettingsDesc": { + "description": "Tutorial settings page description" + }, + "tutorialSettingsTip1": "Ubah lokasi download dan atur folder", + "@tutorialSettingsTip1": { + "description": "Tutorial settings tip 1" + }, + "tutorialSettingsTip2": "Atur kualitas, batas download, nama file, dan format favorit", + "@tutorialSettingsTip2": { + "description": "Tutorial settings tip 2" + }, + "tutorialSettingsTip3": "Sesuaikan tampilan dan tema aplikasi", + "@tutorialSettingsTip3": { + "description": "Tutorial settings tip 3" + }, + "tutorialReadyMessage": "Anda sudah siap, Pilih ekstensi Anda, lalu telusuri atau tempel link yang didukung.", + "@tutorialReadyMessage": { + "description": "Tutorial completion message" + }, + "libraryForceFullScan": "Paksa Pindai Ulang", + "@libraryForceFullScan": { + "description": "Button to force a complete rescan of library" + }, + "libraryForceFullScanSubtitle": "Pindah ulang semua file, tanpa cache", + "@libraryForceFullScanSubtitle": { + "description": "Subtitle for force full scan button" + }, + "cleanupOrphanedDownloads": "Bersihkan Sampah Download", + "@cleanupOrphanedDownloads": { + "description": "Button to remove history entries for deleted files" + }, + "cleanupOrphanedDownloadsSubtitle": "Hapus sampah download dari histori", + "@cleanupOrphanedDownloadsSubtitle": { + "description": "Subtitle for orphaned cleanup button" + }, + "cleanupOrphanedDownloadsResult": "Menghapus {count} sampah download dari histori", + "@cleanupOrphanedDownloadsResult": { + "description": "Snackbar after orphan cleanup", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cleanupOrphanedDownloadsNone": "Tidak ada histori sampah", + "@cleanupOrphanedDownloadsNone": { + "description": "Snackbar when no orphans found" + }, + "cacheTitle": "Penyimpanan & Cache", + "@cacheTitle": { + "description": "Cache management page title" + }, + "cacheSummaryTitle": "Penggunaan cache", + "@cacheSummaryTitle": { + "description": "Heading for cache summary card" + }, + "cacheSummarySubtitle": "Membersihkan cache tidak menghapus file terdownload.", + "@cacheSummarySubtitle": { + "description": "Helper text for cache summary card" + }, + "cacheEstimatedTotal": "Total cache yang digunakan:", + "@cacheEstimatedTotal": { + "description": "Total cache size shown in summary", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "cacheSectionStorage": "Data Cache", + "@cacheSectionStorage": { + "description": "Section header for cache entries" + }, + "cacheSectionMaintenance": "Perawatan", + "@cacheSectionMaintenance": { + "description": "Section header for cleanup actions" + }, + "cacheAppDirectory": "Folder cache aplikasi", + "@cacheAppDirectory": { + "description": "Cache item title for app cache directory" + }, + "cacheAppDirectoryDesc": "Respons HTTP, data WebView, dan data aplikasi sementara lain.", + "@cacheAppDirectoryDesc": { + "description": "Description of what app cache directory contains" + }, + "cacheTempDirectory": "Folder sementara", + "@cacheTempDirectory": { + "description": "Cache item title for temporary files directory" + }, + "cacheTempDirectoryDesc": "File sementara dari proses download dan ubah format.", + "@cacheTempDirectoryDesc": { + "description": "Description of what temporary directory contains" + }, + "cacheCoverImage": "Cache foto cover", + "@cacheCoverImage": { + "description": "Cache item title for persistent cover images" + }, + "cacheCoverImageDesc": "Foto cover album dan lagu yang terdownload. Akan didownload ulang bila dilihat. ", + "@cacheCoverImageDesc": { + "description": "Description of what cover image cache contains" + }, + "cacheLibraryCover": "Cache cover koleksi", + "@cacheLibraryCover": { + "description": "Cache item title for local library cover art images" + }, + "cacheLibraryCoverDesc": "Foto cover yang diekstrak dari file musik lokal. Diekstrak ulang saat memindai.", + "@cacheLibraryCoverDesc": { + "description": "Description of what library cover cache contains" + }, + "libraryPlaybackNormalization": "Normalisasi kenyaringan", "@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": "Atur kenyaringan antar lagu menggunakan tag ReplayGain atau R128, jika ada", "@libraryPlaybackNormalizationSubtitle": { "description": "Subtitle explaining playback volume normalization" }, - "cacheAudioAnalysis": "Audio analysis cache", + "cacheAudioAnalysis": "Cache analisis audio", "@cacheAudioAnalysis": { "description": "Cache item title for saved audio analysis results" }, - "cacheAudioAnalysisDesc": "Saved spectrograms and analysis results. Will re-analyze on next open.", + "cacheAudioAnalysisDesc": "Spektogram dan hasil analisis yang tersimpan. Akan dianalisis lagi jika dibuka.", "@cacheAudioAnalysisDesc": { "description": "Description of what audio analysis cache contains" }, - "downloadFolderAccessLostTitle": "Download folder access lost", + "cacheExploreFeed": "Cache penjelajahan", + "@cacheExploreFeed": { + "description": "Cache item title for explore home feed cache" + }, + "cacheExploreFeedDesc": "Cache dari konten termuat (rilis baru, trending). Akan direfresh setiap dibuka.", + "@cacheExploreFeedDesc": { + "description": "Description of what explore feed cache contains" + }, + "cacheTrackLookup": "Cache penelusuran lagu", + "@cacheTrackLookup": { + "description": "Cache item title for track ID lookup cache" + }, + "cacheTrackLookupDesc": "ID penelusuran lagu Spotify/Deezer. Dapat memperlambat penelusuran bila dibersihkan.", + "@cacheTrackLookupDesc": { + "description": "Description of what track lookup cache contains" + }, + "cacheCleanupUnusedDesc": "Menghapus sisa-sisa histori download dan file hilang di koleksi", + "@cacheCleanupUnusedDesc": { + "description": "Description of what cleanup unused data does" + }, + "cacheNoData": "Tidak ada cache", + "@cacheNoData": { + "description": "Label when cache category has no data" + }, + "cacheSizeWithFiles": "{size} di {count} file", + "@cacheSizeWithFiles": { + "description": "Cache size and file count", + "placeholders": { + "size": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "cacheSizeOnly": "{size}", + "@cacheSizeOnly": { + "description": "Cache size only", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "cacheEntries": "{count} item", + "@cacheEntries": { + "description": "Track cache entry count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cacheClearSuccess": "Terhapus: {target}", + "@cacheClearSuccess": { + "description": "Snackbar after clearing selected cache", + "placeholders": { + "target": { + "type": "String" + } + } + }, + "cacheClearConfirmTitle": "Hapus cache?", + "@cacheClearConfirmTitle": { + "description": "Dialog title before clearing one cache category" + }, + "cacheClearConfirmMessage": "Akan menghapus cache {target}. File musik terdownload tidak akan dihapus.", + "@cacheClearConfirmMessage": { + "description": "Dialog message before clearing selected cache", + "placeholders": { + "target": { + "type": "String" + } + } + }, + "cacheClearAllConfirmTitle": "Hapus semua cache?", + "@cacheClearAllConfirmTitle": { + "description": "Dialog title before clearing all caches" + }, + "cacheClearAllConfirmMessage": "Akan menghapus semua jenis cache. File musik terdownload tidak akan dihapus.", + "@cacheClearAllConfirmMessage": { + "description": "Dialog message before clearing all caches" + }, + "cacheClearAll": "Hapus semua cache", + "@cacheClearAll": { + "description": "Button label to clear all caches" + }, + "cacheCleanupUnused": "Bersihkan data tak terpakai", + "@cacheCleanupUnused": { + "description": "Action title for cleaning unused entries" + }, + "cacheCleanupUnusedSubtitle": "Menghapus sisa-sisa histori download dan file hilang di koleksi", + "@cacheCleanupUnusedSubtitle": { + "description": "Subtitle for cleanup unused data action" + }, + "cacheCleanupResult": "Pembersihan selesai: {downloadCount} sisa-sisa download, {libraryCount} file hilang di koleksi", + "@cacheCleanupResult": { + "description": "Snackbar after unused data cleanup", + "placeholders": { + "downloadCount": { + "type": "int" + }, + "libraryCount": { + "type": "int" + } + } + }, + "cacheRefreshStats": "Refresh", + "@cacheRefreshStats": { + "description": "Button label to refresh cache statistics" + }, + "trackSaveCoverArt": "Simpan Cover Art", + "@trackSaveCoverArt": { + "description": "Menu action - save album cover art as file" + }, + "trackSaveLyrics": "Simpan Lirik (.lrc)", + "@trackSaveLyrics": { + "description": "Menu action - save lyrics as .lrc file" + }, + "trackSaveLyricsProgress": "Menyimpan lirik...", + "@trackSaveLyricsProgress": { + "description": "Snackbar while saving lyrics to file" + }, + "trackReEnrich": "Update Metadata", + "@trackReEnrich": { + "description": "Menu action - re-embed metadata into audio file" + }, + "trackReEnrichOnlineSubtitle": "Telusuri metadata di internet lalu sematkan ke file", + "@trackReEnrichOnlineSubtitle": { + "description": "Subtitle for re-enrich metadata action for local items" + }, + "trackReEnrichBatchSubtitle": "Pilih pembaruan online atau manual, lalu tinjau setiap perubahan sebelum ditulis", + "@trackReEnrichBatchSubtitle": { + "description": "Subtitle for batch metadata update choices" + }, + "trackReEnrichFieldCover": "Cover Art", + "@trackReEnrichFieldCover": { + "description": "Checkbox label for cover art field in re-enrich" + }, + "trackReEnrichFieldLyrics": "Lirik", + "@trackReEnrichFieldLyrics": { + "description": "Checkbox label for lyrics field in re-enrich" + }, + "trackReEnrichFieldBasicTags": "Album, Artis Album", + "@trackReEnrichFieldBasicTags": { + "description": "Checkbox label for basic tags in re-enrich (title/artist are never overwritten)" + }, + "trackReEnrichFieldTrackInfo": "Lagu & Nomor Disk", + "@trackReEnrichFieldTrackInfo": { + "description": "Checkbox label for track info in re-enrich" + }, + "trackReEnrichFieldReleaseInfo": "Tanggal & ISRC", + "@trackReEnrichFieldReleaseInfo": { + "description": "Checkbox label for release info in re-enrich" + }, + "trackReEnrichFieldExtra": "Genre, Label, Hak Cipta", + "@trackReEnrichFieldExtra": { + "description": "Checkbox label for extra metadata in re-enrich" + }, + "trackReEnrichSelectAll": "Pilih Semua", + "@trackReEnrichSelectAll": { + "description": "Select all fields checkbox in re-enrich" + }, + "trackReEnrichModeIsrc": "Hanya ISRC", + "@trackReEnrichModeIsrc": { + "description": "Batch metadata mode that only writes ISRC" + }, + "trackReEnrichModeIsrcSubtitle": "Telusuri dan tambahkan identifier rekaman tanpa mengubah tag lain", + "@trackReEnrichModeIsrcSubtitle": { + "description": "Explanation for the ISRC-only batch metadata mode" + }, + "trackReEnrichModeMissing": "Isi tag yang hilang", + "@trackReEnrichModeMissing": { + "description": "Batch metadata mode that fills only empty tags" + }, + "trackReEnrichModeMissingSubtitle": "Biarkan tag yang ada dan isi tag yang kosong", + "@trackReEnrichModeMissingSubtitle": { + "description": "Explanation for the fill-missing batch metadata mode" + }, + "trackReEnrichModeReplace": "Update tag terpilih", + "@trackReEnrichModeReplace": { + "description": "Batch metadata mode that replaces selected tag groups" + }, + "trackReEnrichModeReplaceSubtitle": "Pilih metadata yang akan diubah dengan metadata internet", + "@trackReEnrichModeReplaceSubtitle": { + "description": "Explanation for the selected-tag batch metadata mode" + }, + "trackReEnrichModeManual": "Tetapkan nilai yang sama", + "@trackReEnrichModeManual": { + "description": "Batch metadata mode that applies shared values to every selected track" + }, + "trackReEnrichModeManualSubtitle": "Terapkan nilai yang sama ke setiap lagu yang dipilih", + "@trackReEnrichModeManualSubtitle": { + "description": "Explanation for the manual shared-value batch metadata mode" + }, + "trackReEnrichManualFieldsTitle": "Nilai yang akan diterapkan", + "@trackReEnrichManualFieldsTitle": { + "description": "Heading above manual batch metadata inputs" + }, + "trackReEnrichManualHint": "Biarkan kolom kosong untuk mempertahankan nilai saat ini. Judul, nomor lagu, dan ISRC tidak akan diubah.", + "@trackReEnrichManualHint": { + "description": "Safety explanation for manual batch metadata inputs" + }, + "trackReEnrichFieldsTitle": "Tag untuk diupdate", + "@trackReEnrichFieldsTitle": { + "description": "Heading above batch re-enrich field checkboxes" + }, + "trackReEnrichReview": "Tinjau perubahan", + "@trackReEnrichReview": { + "description": "Button that searches metadata and opens the batch change review" + }, + "trackReEnrichReviewTitle": "Tinjau perubahan metadata", + "@trackReEnrichReviewTitle": { + "description": "Title of the batch metadata review sheet" + }, + "trackReEnrichReviewSubtitle": "{changeCount} perubahan ke {trackCount} lagu", + "@trackReEnrichReviewSubtitle": { + "description": "Summary shown above proposed batch metadata changes", + "placeholders": { + "changeCount": { + "type": "int" + }, + "trackCount": { + "type": "int" + } + } + }, + "trackReEnrichNoChanges": "Tidak ada perubahan metadata pada lagu terpilih.", + "@trackReEnrichNoChanges": { + "description": "Message when batch metadata preview has no proposed changes" + }, + "trackReEnrichApplyChanges": "Terapkan perubahan", + "@trackReEnrichApplyChanges": { + "description": "Confirmation button in the batch metadata review sheet" + }, + "trackReEnrichRefreshOnline": "Refresh dari internet", + "@trackReEnrichRefreshOnline": { + "description": "Proposed value when lyrics will be refreshed during re-enrich" + }, + "trackEditMetadata": "Edit Metadata", + "@trackEditMetadata": { + "description": "Menu action - edit embedded metadata" + }, + "trackCoverSaved": "Cover art disimpan ke {fileName}", + "@trackCoverSaved": { + "description": "Snackbar after cover art saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "trackCoverNoSource": "Tidak ada sumber cover art", + "@trackCoverNoSource": { + "description": "Snackbar when no cover art URL or embedded cover" + }, + "trackLyricsSaved": "Lirik disimpan ke {fileName}", + "@trackLyricsSaved": { + "description": "Snackbar after lyrics saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "trackReEnrichProgress": "Mengupdate metadata...", + "@trackReEnrichProgress": { + "description": "Snackbar while re-enriching metadata" + }, + "trackReEnrichSearching": "Mencari metadata di internet...", + "@trackReEnrichSearching": { + "description": "Snackbar while searching metadata from internet for local items" + }, + "trackReEnrichPreparing": "Menyiapkan perubahan metadata...", + "@trackReEnrichPreparing": { + "description": "Progress message while preparing manual batch metadata changes" + }, + "trackReEnrichSuccess": "Metadata berhasil diupdate", + "trackReEnrichMetadataSaved": "Metadata disimpan", + "trackReEnrichLyricsUpdated": "Lirik diperbarui", + "trackReEnrichLyricsPreserved": "Lirik baru tidak ditemukan; lirik lama dipertahankan", + "trackReEnrichLyricsDisabled": "Lirik tidak diperbarui: unduhan lirik dinonaktifkan di Pengaturan", + "@trackReEnrichSuccess": { + "description": "Snackbar after successful re-enrichment" + }, + "trackReEnrichFfmpegFailed": "Gagal menyematkan metadata FFmpeg", + "@trackReEnrichFfmpegFailed": { + "description": "Snackbar when FFmpeg embed fails for MP3/Opus" + }, + "queueFlacAction": "Antrean FLAC", + "@queueFlacAction": { + "description": "Action/button label for queueing FLAC redownloads for local tracks" + }, + "queueFlacConfirmMessage": "Menelusuri internet untuk mencari kecocokan lagu terpilih dan download antrean FLAC.\n\nFile yang sudah ada tidak akan dimodifikasi atau dihapus\n\nHanya kecocokan terbaik yang akan diantrekan.\n\n{count} terpilih", + "@queueFlacConfirmMessage": { + "description": "Confirmation dialog body before queueing FLAC redownloads for local tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueFlacNoReliableMatches": "Tidak ada kecocokan yang ditemukan untuk lagu terpilih", + "@queueFlacNoReliableMatches": { + "description": "Snackbar when no safe FLAC redownload matches were found" + }, + "queueFlacQueuedWithSkipped": "Menambahkan {addedCount} lagu ke antrean, {skippedCount} dilewati", + "@queueFlacQueuedWithSkipped": { + "description": "Snackbar when some selected local tracks were queued for FLAC redownload and some were skipped", + "placeholders": { + "addedCount": { + "type": "int" + }, + "skippedCount": { + "type": "int" + } + } + }, + "trackSaveFailed": "Gagal: {error}", + "@trackSaveFailed": { + "description": "Snackbar when save operation fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "trackConvertFormat": "Ubah Format", + "@trackConvertFormat": { + "description": "Menu item - convert audio format" + }, + "trackConvertTitle": "Ubah Audio", + "@trackConvertTitle": { + "description": "Title of convert bottom sheet" + }, + "trackConvertTargetFormat": "Format Pilihan", + "@trackConvertTargetFormat": { + "description": "Label for format selection" + }, + "trackConvertBitrate": "Bitrate", + "@trackConvertBitrate": { + "description": "Label for bitrate selection" + }, + "trackConvertKeepOriginal": "Simpan file asli", + "@trackConvertKeepOriginal": { + "description": "Toggle to preserve the source file during conversion" + }, + "trackConvertKeepOriginalDescription": "Tambah format baru ke koleksi yang terpisah", + "@trackConvertKeepOriginalDescription": { + "description": "Description for preserving the source file during conversion" + }, + "trackConvertConfirmTitle": "Konfirmasi Perubahan", + "@trackConvertConfirmTitle": { + "description": "Confirmation dialog title" + }, + "trackConvertConfirmMessage": "Ubah format {sourceFormat} ke {targetFormat} dengan bitrate {bitrate}?\n\nFile asli akan dihapus setelah ini.", + "@trackConvertConfirmMessage": { + "description": "Confirmation dialog message", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "trackConvertConfirmMessageLossless": "Ubah format {sourceFormat} ke {targetFormat} dengan kualitas loseless?\n\nFile asli akan dihapus setelah ini.", + "@trackConvertConfirmMessageLossless": { + "description": "Confirmation dialog message for lossless-to-lossless conversion", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + } + } + }, + "trackConvertConfirmKeepOriginal": "Ubah format {sourceFormat} ke {targetFormat}?\n\nFile asli akan tetap disimpan dan file format baru akan ditambahkan ke koleksi terpisah.", + "@trackConvertConfirmKeepOriginal": { + "description": "Confirmation message when the source file will be preserved", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + } + } + }, + "trackConvertLosslessHint": "Kualitas loseless — kualitas tidak diturunkan", + "@trackConvertLosslessHint": { + "description": "Hint shown when converting between lossless formats" + }, + "trackConvertConverting": "Mengubah format...", + "@trackConvertConverting": { + "description": "Snackbar while converting" + }, + "trackConvertSuccess": "Berhasil mengubah format ke {format}", + "@trackConvertSuccess": { + "description": "Snackbar after successful conversion", + "placeholders": { + "format": { + "type": "String" + } + } + }, + "trackConvertFailed": "Perubahan format gagal", + "@trackConvertFailed": { + "description": "Snackbar when conversion fails" + }, + "cueSplitTitle": "Pisahkan Lembar CUE", + "@cueSplitTitle": { + "description": "Title for CUE split bottom sheet" + }, + "cueSplitAlbum": "Album {album}", + "@cueSplitAlbum": { + "description": "Album name in CUE split sheet", + "placeholders": { + "album": { + "type": "String" + } + } + }, + "cueSplitArtist": "Artis: {artist}", + "@cueSplitArtist": { + "description": "Artist name in CUE split sheet", + "placeholders": { + "artist": { + "type": "String" + } + } + }, + "cueSplitTrackCount": "{count} lagu", + "@cueSplitTrackCount": { + "description": "Number of tracks in CUE sheet", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cueSplitConfirmTitle": "Pisahkan Album CUE", + "@cueSplitConfirmTitle": { + "description": "CUE split confirmation dialog title" + }, + "cueSplitConfirmMessage": "Pisahkan \"{album}\" menjadi {count} file FLAC?\n\nFile akan disimpan ke folder yang sama.", + "@cueSplitConfirmMessage": { + "description": "CUE split confirmation dialog message", + "placeholders": { + "album": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "cueSplitSplitting": "Memisahkan lembar CUE... ({current}/{total})", + "@cueSplitSplitting": { + "description": "Snackbar while splitting CUE", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "cueSplitSuccess": "Berhasil memisah menjadi {count} lagu", + "@cueSplitSuccess": { + "description": "Snackbar after successful CUE split", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cueSplitFailed": "Gagal memisahkan CUE", + "@cueSplitFailed": { + "description": "Snackbar when CUE split fails" + }, + "cueSplitNoAudioFile": "Tidak menemukan lagu untuk lembar CUE ini", + "@cueSplitNoAudioFile": { + "description": "Error when CUE audio file is missing" + }, + "cueSplitButton": "Pisah menjadi Lagu", + "@cueSplitButton": { + "description": "Button text to start CUE splitting" + }, + "actionCreate": "Buat", + "@actionCreate": { + "description": "Generic action button - create" + }, + "collectionFoldersTitle": "Folder saya", + "@collectionFoldersTitle": { + "description": "Library section title for custom folders" + }, + "collectionWishlist": "Wishlist", + "@collectionWishlist": { + "description": "Custom folder for saved tracks to download later" + }, + "collectionLoved": "Disukai", + "@collectionLoved": { + "description": "Custom folder for favorite tracks" + }, + "collectionFavoriteArtists": "Artis Favorit", + "@collectionFavoriteArtists": { + "description": "Custom folder for favorite artists" + }, + "collectionPlaylist": "Playlist", + "@collectionPlaylist": { + "description": "Single playlist label" + }, + "collectionAddToPlaylist": "Tambah ke playlist", + "@collectionAddToPlaylist": { + "description": "Action to add a track to user playlist" + }, + "collectionCreatePlaylist": "Buat playlist", + "@collectionCreatePlaylist": { + "description": "Action to create a new playlist" + }, + "collectionNoPlaylistsYet": "Tidak ada playlist", + "@collectionNoPlaylistsYet": { + "description": "Empty state title when user has no playlists" + }, + "collectionPlaylistTracks": "{count, plural,=1{1 lagu} other{{count} lagu}}", + "@collectionPlaylistTracks": { + "description": "Track count label for custom playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionArtistCount": "{count, plural,=1{1 artis}other{{count} artis}}", + "@collectionArtistCount": { + "description": "Artist count label for favorite artists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionAddedToPlaylist": "Ditambahkan ke \"{playlistName}\"", + "@collectionAddedToPlaylist": { + "description": "Snackbar after adding track to playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "collectionAlreadyInPlaylist": "Sudah ada di \"{playlistName}\"", + "@collectionAlreadyInPlaylist": { + "description": "Snackbar when track already exists in playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "collectionPlaylistNameHint": "Nama playlist", + "@collectionPlaylistNameHint": { + "description": "Hint text for playlist name input" + }, + "collectionPlaylistNameRequired": "Butuh nama playlist", + "@collectionPlaylistNameRequired": { + "description": "Validation error for empty playlist name" + }, + "collectionRenamePlaylist": "Ubah nama playlist", + "@collectionRenamePlaylist": { + "description": "Action to rename playlist" + }, + "collectionDeletePlaylist": "Hapus playlist", + "@collectionDeletePlaylist": { + "description": "Action to delete playlist" + }, + "collectionPlaylistRenamed": "Playlist diubah nama", + "@collectionPlaylistRenamed": { + "description": "Snackbar after renaming playlist" + }, + "collectionWishlistEmptyTitle": "Wishlist kosong", + "@collectionWishlistEmptyTitle": { + "description": "Wishlist empty state title" + }, + "collectionWishlistEmptySubtitle": "Ketuk + di lagu untuk menyimpan lagu yang ingin Anda download nanti", + "@collectionWishlistEmptySubtitle": { + "description": "Wishlist empty state subtitle" + }, + "collectionLovedEmptyTitle": "Folder disukai kosong", + "@collectionLovedEmptyTitle": { + "description": "Loved empty state title" + }, + "collectionLovedEmptySubtitle": "Ketuk hati di lagu untuk menyimpan lagu favorit Anda", + "@collectionLovedEmptySubtitle": { + "description": "Loved empty state subtitle" + }, + "collectionFavoriteArtistsEmptyTitle": "Tidak ada artis favorit", + "@collectionFavoriteArtistsEmptyTitle": { + "description": "Favorite artists empty state title" + }, + "collectionFavoriteArtistsEmptySubtitle": "Ketuk hati di halaman artist untuk menyimpannya di sini", + "@collectionFavoriteArtistsEmptySubtitle": { + "description": "Favorite artists empty state subtitle" + }, + "collectionPlaylistEmptyTitle": "Playlist kosong", + "@collectionPlaylistEmptyTitle": { + "description": "Playlist empty state title" + }, + "collectionPlaylistEmptySubtitle": "Tekan lama + untuk menambahkan lagu ke sini", + "@collectionPlaylistEmptySubtitle": { + "description": "Playlist empty state subtitle" + }, + "collectionRemoveFromPlaylist": "Hapus dari playlist", + "@collectionRemoveFromPlaylist": { + "description": "Tooltip for removing track from playlist" + }, + "collectionRemoveFromFolder": "Hapus dari folder", + "@collectionRemoveFromFolder": { + "description": "Tooltip for removing track from wishlist/loved folder" + }, + "collectionAddedToLoved": "\"{trackName}\" ditambahkan ke Disukai", + "@collectionAddedToLoved": { + "description": "Snackbar after adding track to loved folder", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "collectionRemovedFromLoved": "\"{trackName}\" dihapus dari Disukai", + "@collectionRemovedFromLoved": { + "description": "Snackbar after removing track from loved folder", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "collectionAddedToWishlist": "\"{trackName}\" ditambahkan ke Wishlist", + "@collectionAddedToWishlist": { + "description": "Snackbar after adding track to wishlist", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "collectionRemovedFromWishlist": "\"{trackName}\" dihapus dari Wishlist", + "@collectionRemovedFromWishlist": { + "description": "Snackbar after removing track from wishlist", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "collectionAddedToFavoriteArtists": "\"{artistName}\" ditambahkan ke Artis Favorit", + "@collectionAddedToFavoriteArtists": { + "description": "Snackbar after adding artist to favorite artists", + "placeholders": { + "artistName": { + "type": "String" + } + } + }, + "collectionRemovedFromFavoriteArtists": "\"{artistName}\" dihapus dari Artis Favorit", + "@collectionRemovedFromFavoriteArtists": { + "description": "Snackbar after removing artist from favorite artists", + "placeholders": { + "artistName": { + "type": "String" + } + } + }, + "trackOptionAddToLoved": "Tambah ke Disukai", + "@trackOptionAddToLoved": { + "description": "Bottom sheet action label - add track to loved folder" + }, + "trackOptionRemoveFromLoved": "Hapus dari Disukai", + "@trackOptionRemoveFromLoved": { + "description": "Bottom sheet action label - remove track from loved folder" + }, + "trackOptionAddToWishlist": "Tambah ke Wishlist", + "@trackOptionAddToWishlist": { + "description": "Bottom sheet action label - add track to wishlist" + }, + "trackOptionRemoveFromWishlist": "Hapus dari Wishlist", + "@trackOptionRemoveFromWishlist": { + "description": "Bottom sheet action label - remove track from wishlist" + }, + "artistOptionAddToFavorites": "Tambah ke Artis Favorit", + "@artistOptionAddToFavorites": { + "description": "Action label - add artist to favorite artists" + }, + "artistOptionRemoveFromFavorites": "Hapus dari Artis Favorit", + "@artistOptionRemoveFromFavorites": { + "description": "Action label - remove artist from favorite artists" + }, + "collectionPlaylistChangeCover": "Ubah foto cover", + "@collectionPlaylistChangeCover": { + "description": "Bottom sheet action to pick a custom cover image for a playlist" + }, + "collectionPlaylistRemoveCover": "Hapus foto cover", + "@collectionPlaylistRemoveCover": { + "description": "Bottom sheet action to remove custom cover image from a playlist" + }, + "selectionShareCount": "Bagikan {count}{count, plural,=1{lagu} other{ lagu}}", + "@selectionShareCount": { + "description": "Share button text with count in selection mode", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "selectionShareNoFiles": "Tidak ditemukan file untuk dibagikan", + "@selectionShareNoFiles": { + "description": "Snackbar when no selected files exist on disk" + }, + "selectionConvertCount": "Ubah format {count}{count, plural,=1{lagu}other{ lagu}}", + "@selectionConvertCount": { + "description": "Convert button text with count in selection mode", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "selectionConvertNoConvertible": "Tidak ada lagu yang dapat diubah", + "@selectionConvertNoConvertible": { + "description": "Snackbar when no selected tracks support conversion" + }, + "selectionBatchConvertConfirmTitle": "Ubah Format Massal", + "@selectionBatchConvertConfirmTitle": { + "description": "Confirmation dialog title for batch conversion" + }, + "selectionBatchConvertConfirmMessage": "Ubah format {count}{count, plural,=1{lagu}other{ lagu}} ke format {format} dengan bitrate {bitrate}?\n\nFile asli akan dihapus setelah perubahan.", + "@selectionBatchConvertConfirmMessage": { + "description": "Confirmation dialog message for batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "selectionBatchConvertConfirmMessageLossless": "Ubah format {count}{count, plural,=1{lagu}other{ lagu}} ke format {format} dengan kualitas loseless?\n\nFile asli akan dihapus setelah perubahan.", + "@selectionBatchConvertConfirmMessageLossless": { + "description": "Confirmation dialog message for lossless batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + } + } + }, + "selectionBatchConvertConfirmKeepOriginal": "Ubah format {count} {count, plural, =1{lagu} other{lagu}} ke format {format}?\n\nFile asli akan disimpan dan file format baru akan ditambah ke koleksi baru.", + "@selectionBatchConvertConfirmKeepOriginal": { + "description": "Batch conversion confirmation when source files will be preserved", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + } + } + }, + "selectionBatchConvertSuccess": "Berhasil mengubah format {success} dari {total} lagu ke format {format}", + "@selectionBatchConvertSuccess": { + "description": "Snackbar after batch conversion completes", + "placeholders": { + "success": { + "type": "int" + }, + "total": { + "type": "int" + }, + "format": { + "type": "String" + } + } + }, + "downloadedAlbumDownloadedCount": "{count} terdownload", + "@downloadedAlbumDownloadedCount": { + "description": "Downloaded tracks count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Beri nama folder setelah tag Artis Album", + "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { + "description": "Subtitle when album artist is used for folder names" + }, + "downloadUseAlbumArtistForFoldersTrackSubtitle": "Beri nama folder setelah tag Artis Lagu", + "@downloadUseAlbumArtistForFoldersTrackSubtitle": { + "description": "Subtitle when track artist is used for folder names" + }, + "lyricsProvidersTitle": "Prioritas Provider Lirik", + "@lyricsProvidersTitle": { + "description": "Settings item title for lyrics provider order" + }, + "lyricsProvidersDescription": "Hidupkan, matikan, dan atur sumber lirik. Provider akan diperiksa dari atas ke bawah hingga lirik ditemukan.", + "@lyricsProvidersDescription": { + "description": "Description on the lyrics provider priority page" + }, + "lyricsProvidersInfoText": "Provider lirik ekstensi berjalan sebelum provider lirik bawaan. Setidaknya ada satu provider yang hidup.", + "@lyricsProvidersInfoText": { + "description": "Info tip on lyrics provider priority page" + }, + "lyricsProvidersEnabledSection": "Dihidupkan ({count})", + "@lyricsProvidersEnabledSection": { + "description": "Section header for enabled providers", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "lyricsProvidersDisabledSection": "Dimatikan ({count})", + "@lyricsProvidersDisabledSection": { + "description": "Section header for disabled providers", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "lyricsProvidersAtLeastOne": "Setidaknya ada satu provider yang hidup", + "@lyricsProvidersAtLeastOne": { + "description": "Snackbar when user tries to disable the last enabled provider" + }, + "lyricsProvidersSaved": "Prioritas provider lirik disimpan", + "@lyricsProvidersSaved": { + "description": "Snackbar after saving lyrics provider priority" + }, + "lyricsProvidersDiscardContent": "Ada perubahan yang belum disimpan yang akan hilang.", + "@lyricsProvidersDiscardContent": { + "description": "Body text of the discard-changes dialog on lyrics provider page" + }, + "lyricsProviderLrclibDesc": "Database lirik berjalan open-source", + "@lyricsProviderLrclibDesc": { + "description": "Description for LRCLIB provider" + }, + "lyricsProviderNeteaseDesc": "NetEase Cloud Music (bagus untuk lagu Asia)", + "@lyricsProviderNeteaseDesc": { + "description": "Description for Netease provider" + }, + "lyricsProviderMusixmatchDesc": "Database lirik terbesar (banyak bahasa)", + "@lyricsProviderMusixmatchDesc": { + "description": "Description for Musixmatch provider" + }, + "lyricsProviderAppleMusicDesc": "Lirik berjalan per kata (lewat proxy)", + "@lyricsProviderAppleMusicDesc": { + "description": "Description for Apple Music provider" + }, + "lyricsProviderQqMusicDesc": "QQ Music (bagus untuk lagu Cina, API langsung)", + "@lyricsProviderQqMusicDesc": { + "description": "Description for QQ Music provider" + }, + "lyricsProviderLyricsPlusDesc": "Lirik karaoke per kata (Apple/Musixmatch/Spotify/QQ, lewat proxy)", + "@lyricsProviderLyricsPlusDesc": { + "description": "Description for LyricsPlus provider" + }, + "lyricsProviderExtensionDesc": "Provider ekstensi", + "@lyricsProviderExtensionDesc": { + "description": "Generic description for extension-based lyrics providers" + }, + "safMigrationTitle": "Butuh Update Penyimpanan", + "@safMigrationTitle": { + "description": "Title of SAF migration dialog" + }, + "safMigrationMessage1": "SpotiFLAC kini menggunakan Android Storage Access (SAF) untuk mendownload. Ini memperbaiki eror \"izin ditolak\" di Android 10+.", + "@safMigrationMessage1": { + "description": "First paragraph of SAF migration dialog" + }, + "safMigrationMessage2": "Harap pilih folder download Anda lagi untuk pindah ke sistem penyimpanan baru.", + "@safMigrationMessage2": { + "description": "Second paragraph of SAF migration dialog" + }, + "safMigrationSuccess": "Folder download terupdate ke mode SAF", + "@safMigrationSuccess": { + "description": "Snackbar after successfully migrating to SAF" + }, + "settingsDonate": "Dukung Kami", + "@settingsDonate": { + "description": "Settings menu item - donate page" + }, + "settingsDonateSubtitle": "Belikan developer kami kopi", + "@settingsDonateSubtitle": { + "description": "Subtitle for donate menu item" + }, + "settingsBackup": "Cadangan & Pemulihan", + "@settingsBackup": { + "description": "Settings menu item - backup and restore page" + }, + "settingsBackupSubtitle": "Pindahkan koleksi, histori, dan setelan Anda ke perangkat baru", + "@settingsBackupSubtitle": { + "description": "Subtitle for backup and restore settings item" + }, + "backupTitle": "Cadangan & Pemulihan", + "@backupTitle": { + "description": "App bar title for the backup and restore page" + }, + "backupExportSectionTitle": "Buat cadangan", + "@backupExportSectionTitle": { + "description": "Section title for the export/backup card" + }, + "backupExportSectionDescription": "Simpan setelan, histori download, lagu disukai, wishlist, artis favorit, dan playlist dalam satu file yang dapat disimpan maupun dikirim ke ponsel lain.", + "@backupExportSectionDescription": { + "description": "Description of what a backup contains" + }, + "backupExportButton": "Buat file cadangan", + "@backupExportButton": { + "description": "Button to create and share a backup file" + }, + "backupImportSectionTitle": "Pulihkan cadangan", + "@backupImportSectionTitle": { + "description": "Section title for the import/restore card" + }, + "backupImportSectionDescription": "Pilih file cadangan untuk memulihkan data Anda. Ini akan mengubah setelan sekarang, histori, dan koleksi di perangkat ini.", + "@backupImportSectionDescription": { + "description": "Description for the restore action" + }, + "backupImportButton": "Pilih file cadangan", + "@backupImportButton": { + "description": "Button to pick a backup file to restore" + }, + "backupCreated": "Cadangan dibuat", + "@backupCreated": { + "description": "Snackbar after a backup file is created" + }, + "backupCreateFailed": "Gagal membuat cadangan", + "@backupCreateFailed": { + "description": "Snackbar when backup creation fails" + }, + "backupRestoreConfirmTitle": "Pulihkan cadangan ini?", + "@backupRestoreConfirmTitle": { + "description": "Confirmation dialog title before restoring a backup" + }, + "backupRestoreConfirmMessage": "Ini akan mengubah setelan sekarang, histori download, lagu yang disukai, wishlist, dan playlist Anda dengan isi cadangan ini. Tindakan tidak dapat dipulihkan.", + "@backupRestoreConfirmMessage": { + "description": "Confirmation dialog message before restoring a backup" + }, + "backupRestoreConfirmButton": "Pulihkan", + "@backupRestoreConfirmButton": { + "description": "Confirm button to proceed with restore" + }, + "backupRestored": "Cadangan berhasil dipulihkan", + "@backupRestored": { + "description": "Snackbar after a successful restore" + }, + "backupRestoreFailed": "Gagal memulihkan cadangan", + "@backupRestoreFailed": { + "description": "Snackbar when restore fails" + }, + "backupInvalidFile": "File ini bukan cadangan SpotiFLAC yang valid", + "@backupInvalidFile": { + "description": "Snackbar when the chosen file is not a valid backup" + }, + "backupRestoreRestartHint": "Restart aplikasi untuk memastikan setiap perubahan diterapkan.", + "@backupRestoreRestartHint": { + "description": "Hint shown after restoring that an app restart is recommended" + }, + "backupContentsTitle": "Akan dipulihkan", + "@backupContentsTitle": { + "description": "Header above the list summarizing what the backup contains" + }, + "backupSettingsOnly": "Pengaturan saja", + "backupSelectHistory": "Riwayat download", + "backupSelectCollections": "Koleksi library", + "backupSelectCollectionsDescription": "Lagu disukai, wishlist, artis favorit, playlist, dan sampul playlist.", + "backupSelectExtensions": "Ekstensi dan pengaturannya", + "backupSelectedExportDescription": "Simpan kategori yang dipilih ke file backup. File audio tidak disertakan.", + "backupSelectAtLeastOne": "Pilih minimal satu kategori untuk membuat backup.", + "backupSelectedRestoreMessage": "Hanya kategori di bawah yang akan dipulihkan. Kategori yang tidak disertakan dalam backup ini tidak akan berubah. Pemulihan dapat mengganti data yang ada dan tidak dapat dibatalkan.", + "backupContentsSettings": "Setelan aplikasi", + "@backupContentsSettings": { + "description": "Backup contents row label for settings" + }, + "backupContentsHistory": "{count} {count, plural, =1{histori} other{histori}}", + "@backupContentsHistory": { + "description": "Backup contents row for history count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsLiked": "{count} lagu {count, plural, =1{disukai} other{disukai}}", + "@backupContentsLiked": { + "description": "Backup contents row for liked tracks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsWishlist": "{count} lagu di {count, plural, =1{wishlist} other{wishlist}}", + "@backupContentsWishlist": { + "description": "Backup contents row for wishlist tracks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsPlaylists": "{count, plural, =1{1 playlist} other{{count} playlist}}", + "@backupContentsPlaylists": { + "description": "Backup contents row for playlist count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsArtists": "{count, plural, =1{1 artis favorit} other{{count} artis favorit}}", + "@backupContentsArtists": { + "description": "Backup contents row for favorite artists count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsExtensions": "{count, plural, =1{1 ekstensi} other{{count} ekstensi}}", + "@backupContentsExtensions": { + "description": "Backup contents row for installed extensions count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupIncludeSecrets": "Masukkan kredensial ekstensi", + "@backupIncludeSecrets": { + "description": "Toggle to include secret extension settings (tokens, API keys) in the backup" + }, + "backupIncludeSecretsDescription": "Token dan kunci API dari ekstensi disimpan ke dalam file cadangan. Jangan bagikan file ini. Jika dimatikan, Anda harus memasukkannya setelah memulihkan.", + "@backupIncludeSecretsDescription": { + "description": "Explanation for the include-credentials toggle" + }, + "backupExtensionsRestoreFailed": "{count} {count, plural, =1{ekstensi} other{ekstensi}} tidak dapat diinstal ulang. Instal manual lewat repo.", + "@backupExtensionsRestoreFailed": { + "description": "Snackbar/hint when some extensions failed to reinstall during restore", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "tooltipLoveAll": "Sukai Semua", + "@tooltipLoveAll": { + "description": "Tooltip for the Love All button on album/playlist screens" + }, + "tooltipAddToPlaylist": "Tambah ke Playlist", + "@tooltipAddToPlaylist": { + "description": "Tooltip for the Add to Playlist button" + }, + "snackbarRemovedTracksFromLoved": "Menghapus {count} lagu dari Disukai", + "@snackbarRemovedTracksFromLoved": { + "description": "Snackbar after removing multiple tracks from Loved folder", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarAddedTracksToLoved": "Menambahkan {count} lagu ke Disukai", + "@snackbarAddedTracksToLoved": { + "description": "Snackbar after adding multiple tracks to Loved folder", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dialogDownloadAllTitle": "Download Semua", + "@dialogDownloadAllTitle": { + "description": "Dialog title for bulk download confirmation" + }, + "dialogDownloadAllMessage": "Download {count} lagu?", + "@dialogDownloadAllMessage": { + "description": "Body of the Download All confirmation dialog", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "homeSkipAlreadyDownloaded": "Lewati lagu terdownload", + "@homeSkipAlreadyDownloaded": { + "description": "Checkbox label in import dialog to skip already-downloaded songs" + }, + "homeGoToAlbum": "Ke Album", + "@homeGoToAlbum": { + "description": "Context menu item to navigate to the album page" + }, + "homeAlbumInfoUnavailable": "Info album tidak tersedia", + "@homeAlbumInfoUnavailable": { + "description": "Snackbar when album info cannot be loaded" + }, + "snackbarLoadingCueSheet": "Memuat lembar CUE...", + "@snackbarLoadingCueSheet": { + "description": "Snackbar while loading a CUE sheet file" + }, + "snackbarMetadataSaved": "Berhasil menyimpan metadata", + "@snackbarMetadataSaved": { + "description": "Snackbar after successfully saving track metadata" + }, + "snackbarFailedToEmbedLyrics": "Gagal menyematkan lirik", + "@snackbarFailedToEmbedLyrics": { + "description": "Snackbar when lyrics embedding fails" + }, + "snackbarFailedToWriteStorage": "Gagal memodifikasi file", + "@snackbarFailedToWriteStorage": { + "description": "Snackbar when writing metadata back to file fails" + }, + "snackbarError": "Eror: {error}", + "@snackbarError": { + "description": "Generic error snackbar with error detail", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "snackbarNoActionDefined": "Tidak ada tindakan yang diatur untuk tombol ini", + "@snackbarNoActionDefined": { + "description": "Snackbar when an extension button has no action configured" + }, + "noTracksFoundForAlbum": "Tidak ada lagu di album ini", + "@noTracksFoundForAlbum": { + "description": "Empty state message when an album has no tracks" + }, + "downloadLocationSubtitle": "Pilih lokasi penyimpanan lagu terdownload", + "@downloadLocationSubtitle": { + "description": "Subtitle shown in the download location picker sheet" + }, + "storageAutomaticFolder": "Folder otomatis", + "storageAutomaticDownloadFolder": "Menggunakan Download/SpotiFLAC jika dapat ditulis, atau penyimpanan aplikasi", + "storageSafRecommended": "Pilih folder (Disarankan)", + "storageDownloadFolderHint": "Di pemilih folder Android, buka Download dan pilih SpotiFLAC. Jika belum ada, buat melalui Folder baru, lalu ketuk Gunakan folder ini untuk memberikan akses.", + "storageModeAppFolder": "Folder Aplikasi (Direkomendasikan)", + "@storageModeAppFolder": { + "description": "Storage mode option - app-managed folder" + }, + "storageModeAppFolderSubtitle": "Disimpan ke Music/SpotiFLAC secara default", + "@storageModeAppFolderSubtitle": { + "description": "Subtitle for app folder storage mode" + }, + "storageModeSaf": "Pilih Folder (SAF)", + "@storageModeSaf": { + "description": "Storage mode option - Storage Access Framework" + }, + "storageModeSafSubtitle": "Pilih folder apapun, termasuk kartu SD", + "@storageModeSafSubtitle": { + "description": "Subtitle for SAF storage mode" + }, + "downloadFolderAccessLostTitle": "Akses folder download hilang", "@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": "Download akan gagal hingga Anda memilih folder baru", "@downloadFolderAccessLostSubtitle": { "description": "Subtitle of the warning banner shown when the saved SAF folder grant is no longer valid" }, - "downloadFolderReselect": "Re-select folder", + "downloadFolderReselect": "Pilih Folder Baru", "@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": "Izin SAF tidak valid atau dicabut. Mohon pilih folder download baru di Setelan.", "@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": "Akses folder download hilang, mohon pilih folder download baru di Setelan.", "@downloadErrorFolderAccessLost": { "description": "Error shown on downloads that failed because the iOS download folder bookmark could not be opened" }, - "notifVerificationRequiredTitle": "Verification required", + "downloadFilenameDescription": "Gunakan {artist}, {title}, {album}, {track}, {year}, {date}, {disc} untuk sementara.", + "@downloadFilenameDescription": { + "description": "Description shown in filename format editor" + }, + "downloadFilenameInsertTag": "Ketuk untuk memasukkan tag:", + "@downloadFilenameInsertTag": { + "description": "Label above filename tag chips" + }, + "downloadSeparateSinglesEnabled": "Single dan EP disimpan di folder terpisah", + "@downloadSeparateSinglesEnabled": { + "description": "Subtitle when separate singles folder is on" + }, + "downloadSeparateSinglesDisabled": "Single dan EP disimpan di folder yang sama", + "@downloadSeparateSinglesDisabled": { + "description": "Subtitle when separate singles folder is off" + }, + "downloadArtistNameFilters": "Filter Nama Artis", + "@downloadArtistNameFilters": { + "description": "Setting title for artist folder filter options" + }, + "downloadCreatePlaylistSourceFolder": "Folder Sumber Playlist", + "@downloadCreatePlaylistSourceFolder": { + "description": "Setting to create a subfolder per playlist source" + }, + "downloadCreatePlaylistSourceFolderEnabled": "Subfolder dibuat untuk setiap playlist", + "@downloadCreatePlaylistSourceFolderEnabled": { + "description": "Subtitle when playlist folder is enabled" + }, + "downloadCreatePlaylistSourceFolderDisabled": "Semua lagu disimpan ke folder download", + "@downloadCreatePlaylistSourceFolderDisabled": { + "description": "Subtitle when playlist folder is disabled" + }, + "downloadCreatePlaylistSourceFolderRedundant": "Dipegang oleh setelan pengatur folder", + "@downloadCreatePlaylistSourceFolderRedundant": { + "description": "Subtitle when folder organization is already set to playlist" + }, + "downloadSongLinkRegion": "Wilayah SongLink", + "@downloadSongLinkRegion": { + "description": "Setting for SongLink region used during fallback resolution" + }, + "downloadNetworkCompatibilityMode": "Mode Kompatibilitas Koneksi", + "@downloadNetworkCompatibilityMode": { + "description": "Setting for legacy TLS/network handling" + }, + "downloadNetworkCompatibilityModeEnabled": "Mengizinkan endpoint HTTP lama; verifikasi TLS tetap hidup", + "@downloadNetworkCompatibilityModeEnabled": { + "description": "Subtitle when network compatibility mode is on" + }, + "downloadNetworkCompatibilityModeDisabled": "Menggunakan setelan koneksi standar", + "@downloadNetworkCompatibilityModeDisabled": { + "description": "Subtitle when network compatibility mode is off" + }, + "downloadAllowLocalNetwork": "Izinkan Akses Koneksi Lokal", + "@downloadAllowLocalNetwork": { + "description": "Setting title for allowing requests to private/local network targets" + }, + "downloadAllowLocalNetworkEnabled": "Permintaan ke alamat lokal/pribadi diizinkan (untuk proxy lokal atau DNS kustom)", + "@downloadAllowLocalNetworkEnabled": { + "description": "Subtitle when allow local network access is on" + }, + "downloadAllowLocalNetworkDisabled": "Alamat lokal/pribadi diblokir untuk keamanan", + "@downloadAllowLocalNetworkDisabled": { + "description": "Subtitle when allow local network access is off" + }, + "downloadSelectServiceToEnable": "Pilih provider dengan opsi kualitas untuk menghidupkan opsi ini", + "@downloadSelectServiceToEnable": { + "description": "Subtitle when quality picker is disabled due to extension service" + }, + "downloadEmbedLyricsDisabled": "Hidupkan penyematan metadata dulu", + "@downloadEmbedLyricsDisabled": { + "description": "Subtitle when lyrics embedding is blocked by metadata toggle" + }, + "downloadNeteaseIncludeTranslation": "NetEase: Termasuk Terjemahan", + "@downloadNeteaseIncludeTranslation": { + "description": "Setting to include translated lyrics from Netease" + }, + "downloadNeteaseIncludeTranslationEnabled": "Lirik terjemahan tionghoa dimasukkan", + "@downloadNeteaseIncludeTranslationEnabled": { + "description": "Subtitle when Netease translation is on" + }, + "downloadNeteaseIncludeTranslationDisabled": "Lirik asli saja", + "@downloadNeteaseIncludeTranslationDisabled": { + "description": "Subtitle when Netease translation is off" + }, + "downloadNeteaseIncludeRomanization": "NetEase: Termasuk Romanisasi", + "@downloadNeteaseIncludeRomanization": { + "description": "Setting to include romanized lyrics from Netease" + }, + "downloadNeteaseIncludeRomanizationEnabled": "Lirik romanisasi dimasukkan", + "@downloadNeteaseIncludeRomanizationEnabled": { + "description": "Subtitle when Netease romanization is on" + }, + "downloadNeteaseIncludeRomanizationDisabled": "Tidak ada romanisasi", + "@downloadNeteaseIncludeRomanizationDisabled": { + "description": "Subtitle when Netease romanization is off" + }, + "downloadAppleQqMultiPerson": "Apple/QQ: Lirik Per-Orang", + "@downloadAppleQqMultiPerson": { + "description": "Setting for word-by-word multi-person lyrics from Apple Music and QQ Music" + }, + "downloadAppleQqMultiPersonEnabled": "Label penyanyi untuk lagu duet dan grup dimasukkan", + "@downloadAppleQqMultiPersonEnabled": { + "description": "Subtitle when multi-person lyrics is on" + }, + "downloadAppleQqMultiPersonDisabled": "Lirik standar tanpa label penyanyi", + "@downloadAppleQqMultiPersonDisabled": { + "description": "Subtitle when multi-person lyrics is off" + }, + "downloadAppleElrcWordSync": "Apple Music eLRC Word Sync", + "@downloadAppleElrcWordSync": { + "description": "Setting for preserving Apple Music word-by-word eLRC timestamps" + }, + "downloadAppleElrcWordSyncEnabled": "Timestamp per kata mentah dimasukkan", + "@downloadAppleElrcWordSyncEnabled": { + "description": "Subtitle when Apple Music eLRC word sync is enabled" + }, + "downloadAppleElrcWordSyncDisabled": "Lirik per kata Apple Music yang lebih aman", + "@downloadAppleElrcWordSyncDisabled": { + "description": "Subtitle when Apple Music eLRC word sync is disabled" + }, + "downloadMusixmatchLanguage": "Bahasa Musixmatch", + "@downloadMusixmatchLanguage": { + "description": "Setting for Musixmatch lyrics translation language" + }, + "downloadMusixmatchLanguageAuto": "Oto (bahasa aasli)", + "@downloadMusixmatchLanguageAuto": { + "description": "Subtitle when no language is set" + }, + "downloadFilterContributing": "Filter Artis Kontributor", + "@downloadFilterContributing": { + "description": "Setting to strip contributing artists from Album Artist folder name" + }, + "downloadFilterContributingEnabled": "Artis kontributor dihapus dari nama folder Artis Album", + "@downloadFilterContributingEnabled": { + "description": "Subtitle when contributing artist filter is on" + }, + "downloadFilterContributingDisabled": "Menggunakan nama penuh Artis Album", + "@downloadFilterContributingDisabled": { + "description": "Subtitle when contributing artist filter is off" + }, + "downloadProvidersNoneEnabled": "Tidak ada provider dihidupkan", + "@downloadProvidersNoneEnabled": { + "description": "Shown when no lyrics providers are active" + }, + "downloadMusixmatchLanguageCode": "Kode bahasa", + "@downloadMusixmatchLanguageCode": { + "description": "Label for Musixmatch language input field" + }, + "downloadMusixmatchLanguageHint": "cont. en, de, ja", + "@downloadMusixmatchLanguageHint": { + "description": "Placeholder for Musixmatch language input" + }, + "downloadMusixmatchLanguageDesc": "Masukkan kode bahasa BCP-47 (cont. en, de, ja) untuk meminta lirik terjemahan dari Musixmatch.", + "@downloadMusixmatchLanguageDesc": { + "description": "Description in Musixmatch language picker" + }, + "downloadMusixmatchAuto": "Oto", + "@downloadMusixmatchAuto": { + "description": "Button to clear Musixmatch language (use auto)" + }, + "downloadNetworkAnySubtitle": "Gunakan WiFi atau data seluler", + "@downloadNetworkAnySubtitle": { + "description": "Subtitle for any-network option in picker" + }, + "downloadNetworkWifiOnlySubtitle": "Download dijeda saat menggunakan data seluler", + "@downloadNetworkWifiOnlySubtitle": { + "description": "Subtitle for WiFi-only option in picker" + }, + "downloadSongLinkRegionDesc": "Wilayah digunakan untuk resolve link lagu lewat SongLink. Pilih wilayah layanan streaming yang sama dengan wilayah Anda.", + "@downloadSongLinkRegionDesc": { + "description": "Description in SongLink region picker" + }, + "snackbarUnsupportedAudioFormat": "Format audio tidak didukung", + "@snackbarUnsupportedAudioFormat": { + "description": "Snackbar when the audio format is not supported for the requested operation" + }, + "cacheRefresh": "Refresh", + "@cacheRefresh": { + "description": "Tooltip for refresh button on cache management page" + }, + "dialogDownloadPlaylistsMessage": "Download {trackCount} {trackCount, plural, =1{lagu} other{lagu}} dari {playlistCount} {playlistCount, plural, =1{playlist} other{playlist}}?", + "@dialogDownloadPlaylistsMessage": { + "description": "Dialog message for bulk playlist download confirmation", + "placeholders": { + "trackCount": { + "type": "int" + }, + "playlistCount": { + "type": "int" + } + } + }, + "bulkDownloadPlaylistsButton": "Download {count} {count, plural, =1{playlist} other{playlist}}", + "@bulkDownloadPlaylistsButton": { + "description": "Button label for bulk downloading selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "bulkDownloadSelectPlaylists": "Pilih playlist untuk didownload", + "@bulkDownloadSelectPlaylists": { + "description": "Button label when no playlists are selected for download" + }, + "snackbarSelectedPlaylistsEmpty": "Playlist terpilih tidak memiliki lagu", + "@snackbarSelectedPlaylistsEmpty": { + "description": "Snackbar when selected playlists contain no tracks" + }, + "playlistsCount": "{count, plural, =1{1 playlist} other{{count} playlist}}", + "@playlistsCount": { + "description": "Playlist count display", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "editMetadataAutoFill": "Isi otomatis dari internet", + "@editMetadataAutoFill": { + "description": "Section title for selective online metadata auto-fill in the edit metadata sheet" + }, + "editMetadataAutoFillDesc": "Pilih ekstensi metadata, pilih tag, lalu tinjau data baru sebelum menerapkan", + "@editMetadataAutoFillDesc": { + "description": "Description for the auto-fill section" + }, + "editMetadataAutoFillSource": "Sumber metadata", + "@editMetadataAutoFillSource": { + "description": "Label for the metadata extension selector in online auto-fill" + }, + "editMetadataAutoFillSourceAutomatic": "Otomatis (prioritas provider)", + "@editMetadataAutoFillSourceAutomatic": { + "description": "Automatic source option that follows configured metadata provider priority" + }, + "editMetadataAutoFillFind": "Cari metadata", + "@editMetadataAutoFillFind": { + "description": "Button label for finding an online metadata candidate" + }, + "editMetadataAutoFillPreview": "Data dari {source}", + "@editMetadataAutoFillPreview": { + "description": "Title for the online metadata preview", + "placeholders": { + "source": { + "type": "String" + } + } + }, + "editMetadataAutoFillCoverAvailable": "Cover artwork tersedia", + "@editMetadataAutoFillCoverAvailable": { + "description": "Preview value when the selected metadata source provides cover artwork" + }, + "editMetadataAutoFillApply": "Terapkan data terpilih", + "@editMetadataAutoFillApply": { + "description": "Button label for applying the previewed metadata" + }, + "editMetadataAutoFillDoneFromSource": "Berhasil mengisi {count} {count, plural, =1{kolom} other{kolom}} dari {source}", + "@editMetadataAutoFillDoneFromSource": { + "description": "Snackbar confirming fields applied from a selected metadata source", + "placeholders": { + "count": { + "type": "int" + }, + "source": { + "type": "String" + } + } + }, + "editMetadataAutoFillFetch": "Gunakan metadata online", + "@editMetadataAutoFillFetch": { + "description": "Button label to fetch online metadata and fill selected fields" + }, + "editMetadataAutoFillSearching": "Menelusuri internet...", + "@editMetadataAutoFillSearching": { + "description": "Snackbar shown while searching for online metadata" + }, + "editMetadataAutoFillNoResults": "Tidak ada metadata yang cocok di internet", + "@editMetadataAutoFillNoResults": { + "description": "Snackbar when online metadata search returns no results" + }, + "editMetadataAutoFillDone": "Berhasil mengisi {count} {count, plural, =1{kolom} other{kolom}} dari metadata online", + "@editMetadataAutoFillDone": { + "description": "Snackbar confirming how many fields were auto-filled", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "editMetadataAutoFillNoneSelected": "Pilih setidaknya satu tag untuk diisi otomatis", + "@editMetadataAutoFillNoneSelected": { + "description": "Snackbar when user taps Fetch without selecting any fields" + }, + "editMetadataFieldTitle": "Judul", + "@editMetadataFieldTitle": { + "description": "Chip label for title field in auto-fill selector" + }, + "editMetadataFieldArtist": "Artis", + "@editMetadataFieldArtist": { + "description": "Chip label for artist field in auto-fill selector" + }, + "editMetadataFieldAlbum": "Album", + "@editMetadataFieldAlbum": { + "description": "Chip label for album field in auto-fill selector" + }, + "editMetadataFieldAlbumArtist": "Artis Album", + "@editMetadataFieldAlbumArtist": { + "description": "Chip label for album artist field in auto-fill selector" + }, + "editMetadataFieldDate": "Tanggal", + "@editMetadataFieldDate": { + "description": "Chip label for date field in auto-fill selector" + }, + "editMetadataFieldTrackNum": "Trek #", + "@editMetadataFieldTrackNum": { + "description": "Chip label for track number field in auto-fill selector" + }, + "editMetadataFieldDiscNum": "Disk #", + "@editMetadataFieldDiscNum": { + "description": "Chip label for disc number field in auto-fill selector" + }, + "editMetadataFieldGenre": "Genre", + "@editMetadataFieldGenre": { + "description": "Chip label for genre field in auto-fill selector" + }, + "editMetadataFieldIsrc": "ISRC", + "@editMetadataFieldIsrc": { + "description": "Chip label for ISRC field in auto-fill selector" + }, + "editMetadataFieldLabel": "Label", + "@editMetadataFieldLabel": { + "description": "Chip label for label field in auto-fill selector" + }, + "editMetadataFieldCopyright": "Hak Cipta", + "@editMetadataFieldCopyright": { + "description": "Chip label for copyright field in auto-fill selector" + }, + "editMetadataFieldCover": "Cover Art", + "@editMetadataFieldCover": { + "description": "Chip label for cover art field in auto-fill selector" + }, + "editMetadataSelectAll": "Semua", + "@editMetadataSelectAll": { + "description": "Button to select all fields for auto-fill" + }, + "editMetadataSelectEmpty": "Kosong saja", + "@editMetadataSelectEmpty": { + "description": "Button to select only fields that are currently empty" + }, + "queueDownloadingCount": "Mendownload ({count})", + "@queueDownloadingCount": { + "description": "Header for active downloads section with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueFilteringIndicator": "Menyaring...", + "@queueFilteringIndicator": { + "description": "Shown while filter results are being computed" + }, + "queueTrackCount": "{count, plural, =1{1 lagu} other{{count} lagu}}", + "@queueTrackCount": { + "description": "Track count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueAlbumCount": "{count, plural, =1{1 album} other{{count} album}}", + "@queueAlbumCount": { + "description": "Album count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueEmptyAlbums": "Tidak ada album terdownload", + "@queueEmptyAlbums": { + "description": "Empty state title when no album downloads exist" + }, + "queueEmptyAlbumsSubtitle": "Download beberapa lagu dari sebuah album untuk melihatnya di sini", + "@queueEmptyAlbumsSubtitle": { + "description": "Empty state subtitle for album downloads" + }, + "queueEmptySingles": "Tidak ada single terdownload", + "@queueEmptySingles": { + "description": "Empty state title when no single track downloads exist" + }, + "queueEmptySinglesSubtitle": "Lagu single terdownload akan muncul di sini", + "@queueEmptySinglesSubtitle": { + "description": "Empty state subtitle for single track downloads" + }, + "queuePlaylistCount": "{count, plural, =1{1 playlist} other{{count} playlist}}", + "@queuePlaylistCount": { + "description": "Playlist count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueEmptyPlaylistsSubtitle": "Buat playlist untuk menata lagu Anda", + "@queueEmptyPlaylistsSubtitle": { + "description": "Empty state subtitle for the playlists library view" + }, + "libraryDefaultView": "Tampilan default", + "@libraryDefaultView": { + "description": "Setting title - which library view opens when switching to the Library tab" + }, + "libraryDefaultViewLastUsed": "Terakhir digunakan", + "@libraryDefaultViewLastUsed": { + "description": "Default view option - keep the last used library view" + }, + "queueEmptyHistory": "Tidak ada histori download", + "@queueEmptyHistory": { + "description": "Empty state title when download history is empty" + }, + "queueEmptyHistorySubtitle": "Lagu yang terdownload akan muncul di sini", + "@queueEmptyHistorySubtitle": { + "description": "Empty state subtitle for download history" + }, + "selectionAllPlaylistsSelected": "Semua playlist terpilih", + "@selectionAllPlaylistsSelected": { + "description": "Shown when all playlists are selected in selection mode" + }, + "selectionTapPlaylistsToSelect": "Ketuk playlist untuk memilih", + "@selectionTapPlaylistsToSelect": { + "description": "Hint shown in playlist selection mode" + }, + "selectionSelectPlaylistsToDelete": "Pilih playlist untuk dihapus", + "@selectionSelectPlaylistsToDelete": { + "description": "Hint shown when no playlists are selected for deletion" + }, + "audioAnalysisTitle": "Analisis Kualitas Audio", + "@audioAnalysisTitle": { + "description": "Title for audio analysis section" + }, + "audioAnalysisDescription": "Verifikasi kualitas lossless dengan analisis spektrum", + "@audioAnalysisDescription": { + "description": "Description for audio analysis tap-to-analyze prompt" + }, + "audioAnalysisAnalyzing": "Menganalisis audio...", + "@audioAnalysisAnalyzing": { + "description": "Loading text while analyzing audio" + }, + "audioAnalysisSampleRate": "Sample Rate", + "@audioAnalysisSampleRate": { + "description": "Sample rate metric label" + }, + "audioAnalysisCodec": "Codec", + "@audioAnalysisCodec": { + "description": "Audio codec metric label" + }, + "audioAnalysisContainer": "Container", + "@audioAnalysisContainer": { + "description": "Audio container metric label" + }, + "audioAnalysisDecodedFormat": "Decoded Format", + "@audioAnalysisDecodedFormat": { + "description": "Decoded sample format metric label" + }, + "audioAnalysisBitDepth": "Bit Depth", + "@audioAnalysisBitDepth": { + "description": "Bit depth metric label" + }, + "audioAnalysisChannels": "Channel", + "@audioAnalysisChannels": { + "description": "Channels metric label" + }, + "audioAnalysisDuration": "Durasi", + "@audioAnalysisDuration": { + "description": "Duration metric label" + }, + "audioAnalysisNyquist": "Nyquist", + "@audioAnalysisNyquist": { + "description": "Nyquist frequency metric label" + }, + "audioAnalysisFileSize": "Ukuran", + "@audioAnalysisFileSize": { + "description": "File size metric label" + }, + "audioAnalysisDynamicRange": "Rentang Dinamis", + "@audioAnalysisDynamicRange": { + "description": "Dynamic range metric label" + }, + "audioAnalysisPeak": "Peak", + "@audioAnalysisPeak": { + "description": "Peak amplitude metric label" + }, + "audioAnalysisRms": "RMS", + "@audioAnalysisRms": { + "description": "RMS level metric label" + }, + "audioAnalysisLufs": "LUFS", + "@audioAnalysisLufs": { + "description": "Integrated loudness metric label" + }, + "audioAnalysisTruePeak": "True Peak", + "@audioAnalysisTruePeak": { + "description": "True peak metric label" + }, + "audioAnalysisClipping": "Clipping", + "@audioAnalysisClipping": { + "description": "Clipping metric label" + }, + "audioAnalysisNoClipping": "Tak clipping", + "@audioAnalysisNoClipping": { + "description": "Displayed when no clipped samples were detected" + }, + "audioAnalysisSpectralCutoff": "Cutoff Spectral", + "@audioAnalysisSpectralCutoff": { + "description": "Estimated spectral cutoff metric label" + }, + "audioAnalysisCutoffNotDetected": "Tak terdeteksi", + "@audioAnalysisCutoffNotDetected": { + "description": "Displayed when no reliable broadband spectral cutoff can be detected" + }, + "audioAnalysisChannelStats": "Stat Per-channel", + "@audioAnalysisChannelStats": { + "description": "Per-channel audio analysis section label" + }, + "audioAnalysisSamples": "Sampel", + "@audioAnalysisSamples": { + "description": "Total samples metric label" + }, + "audioAnalysisRescan": "Analisis Ulang", + "@audioAnalysisRescan": { + "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" + }, + "downloadRedownloadFakeHiRes": "Re-download fake Hi-Res", + "@downloadRedownloadFakeHiRes": { + "description": "Setting title: automatically replace downloads that measure as fake Hi-Res" + }, + "downloadRedownloadFakeHiResSubtitle": "Off by default. Check Hi-Res downloads and replace only when every audio sample is preserved. Keep the original if verification or processing fails", + "@downloadRedownloadFakeHiResSubtitle": { + "description": "Setting subtitle for the fake Hi-Res re-download toggle" + }, + "hiResCheckVerdictFakeCertain": "Fake Hi-Res", + "@hiResCheckVerdictFakeCertain": { + "description": "Verdict: an exact fingerprint (padded bits or upsampling pattern) proves the file is not real Hi-Res" + }, + "hiResCheckVerdictFakeSuspect": "Possibly a filtered master", + "@hiResCheckVerdictFakeSuspect": { + "description": "Verdict: fails the cutoff test but may be a genuine master low-pass filtered in mastering" + }, + "hiResCheckReasonSampleHold": "Every sample is repeated: upsampled by duplication", + "@hiResCheckReasonSampleHold": { + "description": "Reason: sample-and-hold upsampling detected" + }, + "hiResCheckReasonInterpolation": "In-between samples are linearly interpolated", + "@hiResCheckReasonInterpolation": { + "description": "Reason: linear-interpolation upsampling detected" + }, + "hiResCheckReasonImaging": "Content above 22 kHz mirrors the audible band", + "@hiResCheckReasonImaging": { + "description": "Reason: spectral imaging from upsampling detected" + }, + "hiResCheckMusicContent": "Musical content", + "@hiResCheckMusicContent": { + "description": "Label for the highest frequency that still moves with the music" + }, + "hiResCheckUltrasonicNoise": "Above {cutoff} only steady noise (typical of DSD or analog tape transfers): a {rate} file would hold all the music", + "@hiResCheckUltrasonicNoise": { + "description": "Shown when the ultrasonic content of a Hi-Res file is noise rather than music", + "placeholders": { + "cutoff": { + "type": "String" + }, + "rate": { + "type": "String" + } + } + }, + "hiResCheckTitle": "Keaslian Hi-Res", + "@hiResCheckTitle": { + "description": "Title of the fake Hi-Res check card" + }, + "hiResCheckDescription": "Detect upsampled or bit-padded fake Hi-Res files", + "@hiResCheckDescription": { + "description": "Explains what the Hi-Res authenticity check does" + }, + "hiResCheckRun": "Periksa", + "@hiResCheckRun": { + "description": "Button that starts the Hi-Res authenticity check" + }, + "hiResCheckChecking": "Memeriksa audio Hi-Res...", + "@hiResCheckChecking": { + "description": "Loading text while the Hi-Res check runs" + }, + "hiResCheckVerdictFake": "Likely fake Hi-Res", + "@hiResCheckVerdictFake": { + "description": "Verdict: the file claims Hi-Res but does not measure as it" + }, + "hiResCheckVerdictGenuine": "Measures as genuine Hi-Res", + "@hiResCheckVerdictGenuine": { + "description": "Verdict: no upsampling or padded bit depth found" + }, + "hiResCheckVerdictStandard": "Standard definition, nothing to flag", + "@hiResCheckVerdictStandard": { + "description": "Verdict: neither sample rate nor bit depth claims Hi-Res" + }, + "hiResCheckVerdictInconclusive": "Inconclusive: the analyzed segment is too quiet or short", + "@hiResCheckVerdictInconclusive": { + "description": "Verdict: analysis could not reach a reliable conclusion" + }, + "hiResCheckUnsupported": "Only FLAC and WAV files can be checked", + "@hiResCheckUnsupported": { + "description": "Shown when the file format cannot be decoded by the Hi-Res check" + }, + "hiResCheckCutoff": "Content cutoff", + "@hiResCheckCutoff": { + "description": "Label for the highest frequency with real content" + }, + "hiResCheckBitsInUse": "Bits in use", + "@hiResCheckBitsInUse": { + "description": "Label for effective vs declared bit depth" + }, + "hiResCheckDisclaimer": "The spectrum stops early, but nothing proves it was upsampled: it may be a genuine master low-pass filtered in mastering. It is not replaced automatically.", + "@hiResCheckDisclaimer": { + "description": "Caveat shown under a fake Hi-Res verdict" + }, + "hiResCheckFailed": "Hi-Res check failed: {error}", + "@hiResCheckFailed": { + "description": "Error shown when the Hi-Res check fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "hiResCheckReasonRate": "Declares {sampleRate} but content stops at ~{cutoff}", + "@hiResCheckReasonRate": { + "description": "Reason for a fake verdict caused by upsampling", + "placeholders": { + "sampleRate": { + "type": "String" + }, + "cutoff": { + "type": "String" + } + } + }, + "hiResCheckReasonDepth": "Declares {declared}-bit but only {effective} bits carry data", + "@hiResCheckReasonDepth": { + "description": "Reason for a fake verdict caused by padded bit depth", + "placeholders": { + "declared": { + "type": "int" + }, + "effective": { + "type": "int" + } + } + }, + "audioAnalysisRescanning": "Menganalisis ulang audio...", + "@audioAnalysisRescanning": { + "description": "Loading text while audio is being re-analyzed after an explicit refresh" + }, + "extensionsHomeFeedProvider": "Provider Feed Beranda", + "@extensionsHomeFeedProvider": { + "description": "Extensions page - label for home feed provider selector" + }, + "extensionsHomeFeedDescription": "Pilih ekstensi provider feed beranda di layar utama", + "@extensionsHomeFeedDescription": { + "description": "Extensions page - description for home feed provider picker" + }, + "extensionsHomeFeedAuto": "Oto", + "@extensionsHomeFeedAuto": { + "description": "Label for auto-selected search provider" + }, + "extensionsHomeFeedAutoSubtitle": "Pilih otomatis yang terbaik", + "@extensionsHomeFeedAutoSubtitle": { + "description": "Extensions page - subtitle for auto home feed option" + }, + "extensionsHomeFeedOff": "Mati", + "@extensionsHomeFeedOff": { + "description": "Extensions page - home feed provider option: off" + }, + "extensionsHomeFeedOffSubtitle": "Jangan tampilkan feed beranda di layar utama", + "@extensionsHomeFeedOffSubtitle": { + "description": "Extensions page - subtitle for off home feed option" + }, + "extensionsHomeFeedUse": "Pakai feed beranda {extensionName}", + "@extensionsHomeFeedUse": { + "description": "Extensions page - subtitle for a specific extension home feed option", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "extensionsNoHomeFeedExtensions": "Tak ada ekstensi feed beranda", + "@extensionsNoHomeFeedExtensions": { + "description": "Extensions page - shown when no installed extension has home feed" + }, + "cancelDownloadTitle": "Batalkan download?", + "@cancelDownloadTitle": { + "description": "Dialog title when confirming cancellation of an active download" + }, + "cancelDownloadContent": "Ini akan membatalkan download \"{trackName}\".", + "@cancelDownloadContent": { + "description": "Dialog body when confirming cancellation of an active download", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "cancelDownloadKeep": "Urung", + "@cancelDownloadKeep": { + "description": "Dialog button - keep the active download (do not cancel)" + }, + "queueCancelledTitle": "Download dibatalkan", + "@queueCancelledTitle": { + "description": "Dialog title when opening a cancelled queue item" + }, + "queueCancelledMessage": "Download sudah dibatalkan. Ulang atau hapus dari antrean.", + "@queueCancelledMessage": { + "description": "Dialog body when opening a cancelled queue item" + }, + "metadataSaveFailedFfmpeg": "Gagal menyimpan metadata lewat FFmpeg", + "@metadataSaveFailedFfmpeg": { + "description": "Snackbar error when FFmpeg fails to write metadata" + }, + "metadataSaveFailedStorage": "Gagal mengedit metadata ke penyimpanan", + "@metadataSaveFailedStorage": { + "description": "Snackbar error when writing metadata file back to storage fails" + }, + "snackbarFolderPickerFailed": "Gagal membuka pemilih folder: {error}", + "@snackbarFolderPickerFailed": { + "description": "Snackbar shown when folder picker fails to open", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "notifDownloadingTrack": "Mendownload {trackName}", + "@notifDownloadingTrack": { + "description": "Notification title while downloading a track", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "notifFinalizingTrack": "Menyelesaikan {trackName}", + "@notifFinalizingTrack": { + "description": "Notification title while finalizing (embedding metadata) a track", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "notifEmbeddingMetadata": "Menyematkan metadata...", + "@notifEmbeddingMetadata": { + "description": "Notification body while embedding metadata into a downloaded track" + }, + "notifAlreadyInLibraryCount": "Sudah ada di Koleksi ({completed}/{total})", + "@notifAlreadyInLibraryCount": { + "description": "Notification title when track is already in library, with count", + "placeholders": { + "completed": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "notifAlreadyInLibrary": "Sudah ada di Koleksi", + "@notifAlreadyInLibrary": { + "description": "Notification title when track is already in library" + }, + "notifDownloadCompleteCount": "Download Berhasil ({completed}/{total})", + "@notifDownloadCompleteCount": { + "description": "Notification title when download is complete, with count", + "placeholders": { + "completed": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "notifDownloadComplete": "Download Berhasil", + "@notifDownloadComplete": { + "description": "Notification title when a single download is complete" + }, + "notifDownloadsFinished": "Download Selesai ({completed} selesai, {failed} gagal)", + "@notifDownloadsFinished": { + "description": "Notification title when queue finishes with some failures", + "placeholders": { + "completed": { + "type": "int" + }, + "failed": { + "type": "int" + } + } + }, + "notifVerificationRequiredTitle": "Butuh verifikasi", "@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": "Buka aplikasi untuk menyelesaikan verifikasi dan lanjut download", "@notifVerificationRequiredBody": { "description": "Notification body prompting the user to return to the app to solve a verification challenge" }, - "settingsSearchHint": "Search settings", - "settingsSearchNoResults": "No settings match \"{query}\"", - "settingsGroupInterface": "Extensions & appearance", - "settingsGroupContent": "Content & metadata", - "settingsGroupDownloads": "Downloads & files", - "settingsGroupSystem": "System", - "settingsGroupHelp": "About & support", - "libraryFilterMetadataMissingLyrics": "Lirik tidak tersedia", - "trackOptionCopyTrackName": "Salin judul lagu", + "notifAllDownloadsComplete": "Semua Download Selesai", + "@notifAllDownloadsComplete": { + "description": "Notification title when all downloads finish successfully" + }, + "notifTracksDownloadedSuccess": "{count, plural, =1{1 lagu berhasil terdownload} other{{count} lagu berhasil terdownload}}", + "@notifTracksDownloadedSuccess": { + "description": "Notification body for queue complete - how many tracks were downloaded", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifDownloadsFinishedBody": "{completed, plural, =1{1 lagu terdownload} other{{completed} lagu terdownload}}, {failed, plural, =1{1 gagal} other{{failed} gagal}}", + "@notifDownloadsFinishedBody": { + "description": "Notification body when queue finishes with failures", + "placeholders": { + "completed": { + "type": "int" + }, + "failed": { + "type": "int" + } + } + }, + "notifDownloadsCanceledTitle": "Download dibatalkan", + "@notifDownloadsCanceledTitle": { + "description": "Notification title when downloads are canceled by the user" + }, + "notifDownloadsCanceledBody": "{count, plural, =1{1 download dibatalkan manual} other{{count} download dibatalkan manual}}", + "@notifDownloadsCanceledBody": { + "description": "Notification body when downloads are canceled by the user", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifScanningLibrary": "Memindai koleksi lokal", + "@notifScanningLibrary": { + "description": "Notification title while scanning local library" + }, + "notifLibraryScanProgressWithTotal": "{scanned}/{total} file • {percentage}%", + "@notifLibraryScanProgressWithTotal": { + "description": "Notification body for library scan progress when total is known", + "placeholders": { + "scanned": { + "type": "int" + }, + "total": { + "type": "int" + }, + "percentage": { + "type": "int" + } + } + }, + "notifLibraryScanProgressNoTotal": "{scanned} file terpindai • {percentage}%", + "@notifLibraryScanProgressNoTotal": { + "description": "Notification body for library scan progress when total is unknown", + "placeholders": { + "scanned": { + "type": "int" + }, + "percentage": { + "type": "int" + } + } + }, + "notifLibraryScanComplete": "Pindai koleksi selesai", + "@notifLibraryScanComplete": { + "description": "Notification title when library scan finishes" + }, + "notifLibraryScanCompleteBody": "{count} lagu terpindai", + "@notifLibraryScanCompleteBody": { + "description": "Notification body for library scan complete - number of indexed tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifLibraryScanExcluded": "{count} dikecualikan", + "@notifLibraryScanExcluded": { + "description": "Library scan complete suffix - excluded track count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifLibraryScanErrors": "{count} eror", + "@notifLibraryScanErrors": { + "description": "Library scan complete suffix - error count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifLibraryScanFailed": "Pindai koleksi gagal", + "@notifLibraryScanFailed": { + "description": "Notification title when library scan fails" + }, + "notifLibraryScanCancelled": "Pindai koleksi dibatalkan", + "@notifLibraryScanCancelled": { + "description": "Notification title when library scan is cancelled by the user" + }, + "notifLibraryScanStopped": "Pindai dihentikan sebelum selesai.", + "@notifLibraryScanStopped": { + "description": "Notification body when library scan is cancelled" + }, + "notifDownloadingUpdate": "Mendownload SpotiFLAC Mobile v{version}", + "@notifDownloadingUpdate": { + "description": "Notification title while downloading an app update", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "notifUpdateProgress": "{received}/{total}MB • {percentage}%", + "@notifUpdateProgress": { + "description": "Notification body showing update download progress", + "placeholders": { + "received": { + "type": "String" + }, + "total": { + "type": "String" + }, + "percentage": { + "type": "int" + } + } + }, + "notifUpdateReady": "Update Siap", + "@notifUpdateReady": { + "description": "Notification title when app update download is complete" + }, + "notifUpdateReadyBody": "SpotiFLAC Mobile v{version} terdownload. Ketuk untuk instal.", + "@notifUpdateReadyBody": { + "description": "Notification body when app update is ready to install", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "notifUpdateFailed": "Update Gagal", + "@notifUpdateFailed": { + "description": "Notification title when app update download fails" + }, + "notifUpdateFailedBody": "Tidak dapat mendownload update. Coba lagi nanti.", + "@notifUpdateFailedBody": { + "description": "Notification body when app update download fails" + }, + "searchTracks": "Lagu", + "@searchTracks": { + "description": "Search filter label - tracks" + }, + "homeSearchHintDefault": "Tempel URL yang didukung atau telusuri...", + "@homeSearchHintDefault": { + "description": "Default placeholder for the main search field on Home" + }, + "homeSearchHintProvider": "Telusuri dengan {providerName}...", + "@homeSearchHintProvider": { + "description": "Placeholder for the main search field when a provider is selected", + "placeholders": { + "providerName": { + "type": "String" + } + } + }, + "homeImportCsvTooltip": "Impor playlist (CSV, M3U)", + "@homeImportCsvTooltip": { + "description": "Tooltip for importing a CSV or M3U playlist file into Home search" + }, + "homeChangeSearchProviderTooltip": "Ubah provider penelusuran", + "@homeChangeSearchProviderTooltip": { + "description": "Tooltip for the Home search provider picker" + }, + "actionPaste": "Tempel", + "@actionPaste": { + "description": "Generic action - paste from clipboard" + }, + "tutorialSearchHint": "Tempel atau telusuri", + "@tutorialSearchHint": { + "description": "Placeholder shown in the tutorial search demo" + }, + "tutorialDownloadCompletedSemantics": "Download selesai", + "@tutorialDownloadCompletedSemantics": { + "description": "Accessibility label for completed download state in tutorial demo" + }, + "tutorialDownloadInProgressSemantics": "Sedang download", + "@tutorialDownloadInProgressSemantics": { + "description": "Accessibility label for active download state in tutorial demo" + }, + "tutorialStartDownloadSemantics": "Mulai download", + "@tutorialStartDownloadSemantics": { + "description": "Accessibility label for idle download button in tutorial demo" + }, + "optionsEmbedMetadata": "Metadata Tersemat", + "@optionsEmbedMetadata": { + "description": "Settings toggle title for writing metadata into downloaded files" + }, + "optionsEmbedMetadataSubtitleOn": "Edit metadata, foto cover, dan lirik tersemat ke file", + "@optionsEmbedMetadataSubtitleOn": { + "description": "Subtitle when metadata embedding is enabled" + }, + "optionsEmbedMetadataSubtitleOff": "Mati (lanjutan): lewati semua penyematan metadata", + "@optionsEmbedMetadataSubtitleOff": { + "description": "Subtitle when metadata embedding is disabled" + }, + "trackCoverNoEmbeddedArt": "Tidak ada foto cover tersemat", + "@trackCoverNoEmbeddedArt": { + "description": "Message shown when a track file has no embedded cover art" + }, + "trackCoverReplace": "Ubah Cover", + "@trackCoverReplace": { + "description": "Button label for replacing selected cover art" + }, + "trackCoverPick": "Pilih Cover", + "@trackCoverPick": { + "description": "Button label for selecting cover art" + }, + "trackCoverClearSelected": "Hapus cover terpilih", + "@trackCoverClearSelected": { + "description": "Tooltip for clearing the newly selected cover art" + }, + "trackCoverCurrent": "Cover sekarang", + "@trackCoverCurrent": { + "description": "Label for the currently embedded cover preview" + }, + "trackCoverSelected": "Cover terpilih", + "@trackCoverSelected": { + "description": "Label for the newly selected cover preview" + }, + "trackCoverReplaceNotice": "Cover terpilih akan mengganti cover tersemat bila Anda mengetuk Simpan.", + "@trackCoverReplaceNotice": { + "description": "Notice shown when a new cover has been selected but not saved yet" + }, + "trackCoverResolution": "Resolusi cover", + "@trackCoverResolution": { + "description": "Label for selecting the embedded cover art resolution" + }, + "trackCoverResolutionHint": "Atur sudut terpanjang saat disimpan. Melebarkan tidak menambah detail foto.", + "@trackCoverResolutionHint": { + "description": "Explanation below the embedded cover art resolution selector" + }, + "trackCoverResizeFailed": "Tidak dapat mengatur ukuran cover. Harap gunakan ukuran atau foto lain.", + "@trackCoverResizeFailed": { + "description": "Error shown when resizing cover art before saving metadata fails" + }, + "actionStop": "Stop", + "@actionStop": { + "description": "Generic action - stop" + }, + "queueFinalizingDownload": "Menyelesaikan download", + "@queueFinalizingDownload": { + "description": "Accessibility label for a queue item that is finalizing" + }, + "queueDownloadNext": "Download selanjutnya", + "@queueDownloadNext": { + "description": "Tooltip on a queued download row; moves the item to the front of the queue so the next free slot downloads it" + }, + "queueMoveUp": "Pindah ke atas", + "@queueMoveUp": { + "description": "Queue item menu action - move the queued item one position earlier" + }, + "queueMoveDown": "Pindah ke bawah", + "@queueMoveDown": { + "description": "Queue item menu action - move the queued item one position later" + }, + "editMetadataMusicBrainzButton": "Ambil dari MusicBrainz", + "@editMetadataMusicBrainzButton": { + "description": "Tag editor button that fills genre and album artist from MusicBrainz by ISRC" + }, + "editMetadataMusicBrainzFilled": "Terupdate dari MusicBrainz", + "@editMetadataMusicBrainzFilled": { + "description": "Snackbar after MusicBrainz suggestions were applied to the tag editor fields" + }, + "editMetadataMusicBrainzNothing": "Tidak ditemukan dari MusicBrainz", + "@editMetadataMusicBrainzNothing": { + "description": "Snackbar when the MusicBrainz lookup returns no data" + }, + "editMetadataMusicBrainzNeedsIsrc": "Butuh tag ISRC", + "@editMetadataMusicBrainzNeedsIsrc": { + "description": "Snackbar when the MusicBrainz lookup is tapped without an ISRC" + }, + "nowPlayingRepeatOff": "Ulangi mati", + "@nowPlayingRepeatOff": { + "description": "Repeat toggle tooltip when repeat is disabled" + }, + "nowPlayingRepeatAll": "Ulangi semua", + "@nowPlayingRepeatAll": { + "description": "Repeat toggle tooltip when the whole queue repeats" + }, + "nowPlayingRepeatOne": "Ulangi ini", + "@nowPlayingRepeatOne": { + "description": "Repeat toggle tooltip when the current track repeats" + }, + "queueNetworkFailedOffline": "{count} download gagal karena offline", + "@queueNetworkFailedOffline": { + "description": "Snackbar shown when connectivity returns and network-failed downloads can be retried", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueDownloadedFileMissing": "File terdownload hilang", + "@queueDownloadedFileMissing": { + "description": "Accessibility label when a downloaded file is missing from disk" + }, + "queueCheckingDownloadedFile": "Memeriksa file terdownload...", + "@queueCheckingDownloadedFile": { + "description": "Accessibility label while the app checks whether a just-completed download has appeared at its final path yet. Not about authentication or a download session." + }, + "queueDownloadCompleted": "Download selesai", + "@queueDownloadCompleted": { + "description": "Accessibility label for completed download state in queue" + }, + "queueRateLimitTitle": "Layanan dibatasi", + "@queueRateLimitTitle": { + "description": "Title shown on a failed queue item when the download service rate limits requests" + }, + "queueRateLimitMessage": "Lagu ini mungkin masih tersedia. Tunggu sebentar, kurangi download bersamaan, lalu coba lagi.", + "@queueRateLimitMessage": { + "description": "Explanation shown on a failed queue item when the download service rate limits requests" + }, + "appearanceSelectAccentColor": "Pilih warna aksen {hex}", + "@appearanceSelectAccentColor": { + "description": "Accessibility label for picking an accent color", + "placeholders": { + "hex": { + "type": "String" + } + } + }, + "logAutoScrollOn": "Gulir oto HIDUP", + "@logAutoScrollOn": { + "description": "Tooltip when auto-scroll is enabled on the log screen" + }, + "logAutoScrollOff": "Gulir oto MATI", + "@logAutoScrollOff": { + "description": "Tooltip when auto-scroll is disabled on the log screen" + }, + "logCopyLogs": "Salin log", + "@logCopyLogs": { + "description": "Tooltip for copying logs" + }, + "logClearSearch": "Hapus penelusuran", + "@logClearSearch": { + "description": "Tooltip for clearing the log search field" + }, + "logIssueIspBlockingLabel": "TERDETEKSI PEMBLOKIRAN ISP", + "@logIssueIspBlockingLabel": { + "description": "Diagnostic badge label when ISP blocking is detected" + }, + "logIssueIspBlockingDescription": "ISP Anda mungkin memblokir akses ke layanan download", + "@logIssueIspBlockingDescription": { + "description": "Diagnostic badge description for ISP blocking" + }, + "logIssueIspBlockingSuggestion": "Coba gunakan VPN atau ubah DNS ke 1.1.1.1 atau 8.8.8.8", + "@logIssueIspBlockingSuggestion": { + "description": "Diagnostic badge suggestion for ISP blocking" + }, + "logIssueRateLimitedLabel": "DIBATASI", + "@logIssueRateLimitedLabel": { + "description": "Diagnostic badge label when the service rate limits requests" + }, + "logIssueRateLimitedDescription": "Terlalu banyak permintaan ke layanan", + "@logIssueRateLimitedDescription": { + "description": "Diagnostic badge description for rate limiting" + }, + "logIssueRateLimitedSuggestion": "Tunggu sebentar sebelum mencoba lagi", + "@logIssueRateLimitedSuggestion": { + "description": "Diagnostic badge suggestion for rate limiting" + }, + "logIssueNetworkErrorLabel": "KONEKSI EROR", + "@logIssueNetworkErrorLabel": { + "description": "Diagnostic badge label for generic network errors" + }, + "logIssueNetworkErrorDescription": "Terdeteksi masalah koneksi", + "@logIssueNetworkErrorDescription": { + "description": "Diagnostic badge description for generic network errors" + }, + "logIssueNetworkErrorSuggestion": "Periksa koneksi internet Anda", + "@logIssueNetworkErrorSuggestion": { + "description": "Diagnostic badge suggestion for generic network errors" + }, + "logIssueTrackNotFoundLabel": "LAGU TIDAK DITEMUKAN", + "@logIssueTrackNotFoundLabel": { + "description": "Diagnostic badge label when a track is unavailable" + }, + "logIssueTrackNotFoundDescription": "Beberapa lagu tidak dapat ditemukan di layanan download", + "@logIssueTrackNotFoundDescription": { + "description": "Diagnostic badge description when a track is unavailable" + }, + "logIssueTrackNotFoundSuggestion": "Lagu mungkin tidak tersedia dalam kualitas loseless", + "@logIssueTrackNotFoundSuggestion": { + "description": "Diagnostic badge suggestion when a track is unavailable" + }, + "clickableLookingUpArtist": "Menelusuri artis...", + "@clickableLookingUpArtist": { + "description": "Snackbar shown while clickable artist metadata is being resolved" + }, + "clickableInformationUnavailable": "{type} informasi tidak tersedia", + "@clickableInformationUnavailable": { + "description": "Snackbar shown when clickable metadata cannot open a destination", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "extensionDetailsTags": "Tag", + "@extensionDetailsTags": { + "description": "Section title for extension tags" + }, + "extensionDetailsInformation": "Informasi", + "@extensionDetailsInformation": { + "description": "Section title for extension metadata information" + }, + "extensionUtilityFunctions": "Fungsi Utilitas", + "@extensionUtilityFunctions": { + "description": "Capability label for utility-only extensions" + }, + "actionDismiss": "Abaikan", + "@actionDismiss": { + "description": "Generic action - dismiss" + }, + "setupChangeFolderTooltip": "Ubah folder", + "@setupChangeFolderTooltip": { + "description": "Tooltip for editing the selected download folder" + }, + "a11yOpenTrackByArtist": "Buka lagu {trackName} oleh ", + "@a11yOpenTrackByArtist": { + "description": "Accessibility label for opening a track item", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "a11yOpenItem": "Buka {itemType} {name}", + "@a11yOpenItem": { + "description": "Accessibility label for opening a generic item", + "placeholders": { + "itemType": { + "type": "String" + }, + "name": { + "type": "String" + } + } + }, + "a11yOpenItemCount": "Buka {title}, {count} {count, plural, =1{item} other{item}}", + "@a11yOpenItemCount": { + "description": "Accessibility label for opening a grouped item with count", + "placeholders": { + "title": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "a11yOpenAlbumByArtistTrackCount": "Buka album {albumName} oleh {artistName}, {trackCount} lagu", + "@a11yOpenAlbumByArtistTrackCount": { + "description": "Accessibility label for opening an album item with track count", + "placeholders": { + "albumName": { + "type": "String" + }, + "artistName": { + "type": "String" + }, + "trackCount": { + "type": "int" + } + } + }, + "a11yTrackByArtist": "{trackName} oleh {artistName}", + "@a11yTrackByArtist": { + "description": "Accessibility label for a queue or list track item", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "a11ySelectAlbum": "Pilih album {albumName}", + "@a11ySelectAlbum": { + "description": "Accessibility label for selecting an album", + "placeholders": { + "albumName": { + "type": "String" + } + } + }, + "a11yOpenAlbum": "Buka album {albumName}", + "@a11yOpenAlbum": { + "description": "Accessibility label for opening an album", + "placeholders": { + "albumName": { + "type": "String" + } + } + }, + "settingsFiles": "File & Folder", + "@settingsFiles": { + "description": "Settings menu item - file and folder settings" + }, + "settingsFilesSubtitle": "Folder download, nama file, struktur folder", + "@settingsFilesSubtitle": { + "description": "Subtitle for files & folders settings" + }, + "settingsMetadata": "Metadata", + "@settingsMetadata": { + "description": "Settings menu item - metadata settings" + }, + "settingsMetadataSubtitle": "Foto cover, tag, ReplayGain, provider", + "@settingsMetadataSubtitle": { + "description": "Subtitle for metadata settings" + }, + "settingsLyrics": "Lirik", + "@settingsLyrics": { + "description": "Settings menu item - lyrics settings" + }, + "settingsLyricsSubtitle": "Tersemat, mode, provider, opsi bahasa", + "@settingsLyricsSubtitle": { + "description": "Subtitle for lyrics settings" + }, + "settingsApp": "Aplikasi", + "@settingsApp": { + "description": "Settings menu item - app settings" + }, + "settingsAppSubtitle": "Update, data, repo ekstensi, debug", + "@settingsAppSubtitle": { + "description": "Subtitle for app settings" + }, + "sectionMetadataProviders": "Provider", + "@sectionMetadataProviders": { + "description": "Settings section header for metadata providers" + }, + "sectionDuplicates": "Duplikat", + "@sectionDuplicates": { + "description": "Settings section header for deduplication" + }, + "sectionLyricsProviderOptions": "Opsi Provider", + "@sectionLyricsProviderOptions": { + "description": "Settings section header for per-provider lyrics options" + }, + "metadataProvidersTitle": "Prioritas Provider Metadata", + "@metadataProvidersTitle": { + "description": "Settings item title for metadata provider order" + }, + "metadataProvidersSubtitle": "Geser untuk mengatur urutan sumber penelusuran dan metadata", + "@metadataProvidersSubtitle": { + "description": "Subtitle for metadata provider priority item" + }, + "downloadDeduplication": "Lewati Lagu Terdownload", + "@downloadDeduplication": { + "description": "Setting - skip tracks already in download history" + }, + "downloadDeduplicationEnabled": "Lagu yang sudah ada akan dilewati", + "@downloadDeduplicationEnabled": { + "description": "Subtitle when deduplication is on" + }, + "downloadDeduplicationWithQualityVariants": "File yang sudah ada pada kualitas terpilih akan dilewati", + "@downloadDeduplicationWithQualityVariants": { + "description": "Deduplication subtitle when separate quality versions are allowed" + }, + "downloadDeduplicationDisabled": "Lagu akan tetap didownload walau sudah ada di perangkat", + "@downloadDeduplicationDisabled": { + "description": "Subtitle when deduplication is off" + }, + "downloadQualityVariants": "Izinkan kualitas berbeda", + "@downloadQualityVariants": { + "description": "Setting to retain multiple quality versions of the same track" + }, + "downloadQualityVariantsDescription": "Simpan versi setiap kualitas; tambahkan akhiran kualitas di nama file jika namanya sudah digunakan", + "@downloadQualityVariantsDescription": { + "description": "Description for retaining multiple quality versions" + }, + "trackOptionDownloadQualityVariant": "Download kualitas lain", + "@trackOptionDownloadQualityVariant": { + "description": "Track menu action to download another quality version" + }, + "downloadFallbackExtensions": "Ekstensi Cadangan", + "@downloadFallbackExtensions": { + "description": "Settings item for configuring fallback extension providers" + }, + "downloadFallbackExtensionsSubtitle": "Pilih ekstensi yang digunakan sebagai cadangan", + "@downloadFallbackExtensionsSubtitle": { + "description": "Subtitle for fallback extensions item" + }, + "editMetadataFieldDateHint": "HH-BB-TTTT atau TTTT", + "@editMetadataFieldDateHint": { + "description": "Hint text for the edit metadata date field" + }, + "editMetadataFieldTrackTotal": "Total Lagu", + "@editMetadataFieldTrackTotal": { + "description": "Label for total tracks field in the edit metadata sheet" + }, + "editMetadataFieldDiscTotal": "Total Disk", + "@editMetadataFieldDiscTotal": { + "description": "Label for total discs field in the edit metadata sheet" + }, + "editMetadataFieldComposer": "Komposer", + "@editMetadataFieldComposer": { + "description": "Label for composer field in the edit metadata sheet" + }, + "editMetadataFieldComment": "Komentar", + "@editMetadataFieldComment": { + "description": "Label for comment field in the edit metadata sheet" + }, + "trackAlbumType": "Jenis Rilisan", + "@trackAlbumType": { + "description": "Label for an album or release type metadata value" + }, + "editMetadataFieldAlbumTypeHint": "Album, single, EP, kompilasi...", + "@editMetadataFieldAlbumTypeHint": { + "description": "Hint for the release type metadata field" + }, + "editMetadataFieldExplicit": "Eksplisit", + "@editMetadataFieldExplicit": { + "description": "Label for the explicit content metadata field" + }, + "editMetadataFieldExplicitHint": "Tandai lagu bila mengandung konten eksplisit", + "@editMetadataFieldExplicitHint": { + "description": "Description for the explicit content metadata switch" + }, + "metadataExplicitValue": "Eksplisit", + "@metadataExplicitValue": { + "description": "Displayed value when a track is marked explicit" + }, + "editMetadataFieldUpc": "UPC/Barcode", + "@editMetadataFieldUpc": { + "description": "Label for the release barcode metadata field" + }, + "editMetadataFieldUpcHint": "Numerik UPC, EAN, atau GTIN", + "@editMetadataFieldUpcHint": { + "description": "Hint for the release barcode metadata field" + }, + "editMetadataAdvanced": "Lanjutan", + "@editMetadataAdvanced": { + "description": "Expandable section label for advanced metadata fields" + }, + "libraryFilterMetadataMissingTrackNumber": "Nomor lagu hilang", + "@libraryFilterMetadataMissingTrackNumber": { + "description": "Filter option - items missing track number" + }, + "libraryFilterMetadataMissingDiscNumber": "Nomor disk hilang", + "@libraryFilterMetadataMissingDiscNumber": { + "description": "Filter option - items missing disc number" + }, + "libraryFilterMetadataMissingArtist": "Nama artis hilang", + "@libraryFilterMetadataMissingArtist": { + "description": "Filter option - items missing artist" + }, + "libraryFilterMetadataIncorrectIsrcFormat": "Format ISRC salah", + "@libraryFilterMetadataIncorrectIsrcFormat": { + "description": "Filter option - items with an invalid ISRC format" + }, + "libraryFilterMetadataMissingIsrc": "ISRC hilang", + "@libraryFilterMetadataMissingIsrc": { + "description": "Filter option - items without any ISRC tag" + }, + "libraryFilterMetadataMissingLabel": "Nama label hilang", + "@libraryFilterMetadataMissingLabel": { + "description": "Filter option - items missing record label" + }, + "collectionDeletePlaylistsMessage": "Hapus {count} {count, plural, =1{playlist} other{playlist}}?", + "@collectionDeletePlaylistsMessage": { + "description": "Confirmation message for deleting selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionPlaylistsDeleted": "{count} {count, plural, =1{playlist} other{playlist}} terhapus", + "@collectionPlaylistsDeleted": { + "description": "Snackbar after deleting selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionAddedTracksToPlaylist": "Menambahkan {count} {count, plural, =1{lagu} other{lagu}} ke {playlistName}", + "@collectionAddedTracksToPlaylist": { + "description": "Snackbar after adding multiple tracks to a playlist", + "placeholders": { + "count": { + "type": "int" + }, + "playlistName": { + "type": "String" + } + } + }, + "collectionAddedTracksToPlaylistWithExisting": "Menambahkan {count} {count, plural, =1{lagu} other{lagu}} ke {playlistName} ({alreadyCount} sudah ada di playlist)", + "@collectionAddedTracksToPlaylistWithExisting": { + "description": "Snackbar after adding multiple tracks to a playlist when some were already present", + "placeholders": { + "count": { + "type": "int" + }, + "playlistName": { + "type": "String" + }, + "alreadyCount": { + "type": "int" + } + } + }, + "itemCount": "{count} {count, plural, =1{item} other{item}}", + "@itemCount": { + "description": "Generic item count label", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackReEnrichSuccessWithFailures": "Metadata berhasil diupdate ulang ({successCount}/{total}) - Gagal: {failedCount}", + "@trackReEnrichSuccessWithFailures": { + "description": "Snackbar summary after batch metadata re-enrichment finishes with failures", + "placeholders": { + "successCount": { + "type": "int" + }, + "total": { + "type": "int" + }, + "failedCount": { + "type": "int" + } + } + }, + "selectionDeleteTracksCount": "Hapus {count} {count, plural, =1{lagu} other{lagu}}", + "@selectionDeleteTracksCount": { + "description": "Button label for deleting selected tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueDownloadSpeedStatus": "Mendownload - {speed}MB/d", + "@queueDownloadSpeedStatus": { + "description": "Queue status while downloading with speed", + "placeholders": { + "speed": { + "type": "String" + } + } + }, + "queueDownloadStarting": "Memulai...", + "queueCheckingDownloadSession": "Memeriksa sesi download...", + "queueResolvingDownloadMetadata": "Menelusuri metadata lagu...", + "queueResolvingDownloadStream": "Menyiapkan stream audio...", + "queueWaitingForVerification": "Menunggu veridikasi...", + "queueResumingAfterVerification": "Melanjutkan setelah verifikasi...", + "@queueDownloadStarting": { + "description": "Queue status before download progress is available" + }, + "@queueCheckingDownloadSession": { + "description": "Queue status while the download provider's session is being checked during preparation (preparationStage 'checking_session'). This is about the provider session, not about locating a finished file." + }, + "a11ySelectTrack": "Pilih lagu", + "@a11ySelectTrack": { + "description": "Accessibility label for selecting a track" + }, + "a11yDeselectTrack": "Batal pilih lagu", + "@a11yDeselectTrack": { + "description": "Accessibility label for deselecting a track" + }, + "a11yPlayTrackByArtist": "Putar {trackName} oleh {artistName}", + "@a11yPlayTrackByArtist": { + "description": "Accessibility label for playing a local library track", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "storeExtensionsCount": "{count} {count, plural, =1{ekstensi} other{ekstensi}}", + "@storeExtensionsCount": { + "description": "Store extension result count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "storeRequiresVersion": "Harus v{version}+", + "@storeRequiresVersion": { + "description": "Store compatibility badge for minimum app version", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "actionGo": "Mulai", + "@actionGo": { + "description": "Generic action button label" + }, + "logIssueSummary": "Ringkasan Masalah", + "@logIssueSummary": { + "description": "Header for log issue analysis summary" + }, + "logTotalErrors": "Total eror: {count}", + "@logTotalErrors": { + "description": "Total error count in log issue analysis", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "logAffectedDomains": "Memengaruhi: {domains}", + "@logAffectedDomains": { + "description": "Affected domains in log issue analysis", + "placeholders": { + "domains": { + "type": "String" + } + } + }, + "libraryScanCancelled": "Pindai dibatalkan", + "@libraryScanCancelled": { + "description": "Library scan status when a scan was cancelled" + }, + "libraryScanCancelledSubtitle": "Anda dapat mencoba lagi saat siap.", + "@libraryScanCancelledSubtitle": { + "description": "Library scan status subtitle after cancellation" + }, + "libraryDownloadsHistoryExcluded": "{count} dari histori Download (dikecualikan dari daftar)", + "@libraryDownloadsHistoryExcluded": { + "description": "Library count note for downloaded history items excluded from the local list", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadNativeWorker": "Worker download native", + "@downloadNativeWorker": { + "description": "Setting title for Android native download worker" + }, + "downloadNativeWorkerSubtitle": "Layanan latar belakang Android untuk download ekstensi", + "@downloadNativeWorkerSubtitle": { + "description": "Setting subtitle for Android native download worker" + }, + "extensionServiceStatus": "Status Layanan", + "@extensionServiceStatus": { + "description": "Extension detail section header for service status" + }, + "extensionServiceHealth": "Kondisi layanan", + "@extensionServiceHealth": { + "description": "Extension capability label for service health checks" + }, + "extensionHealthChecksConfigured": "{count} {count, plural, =1{check} other{pemeriksaaan}} berhasil", + "@extensionHealthChecksConfigured": { + "description": "Extension service health check count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionOauthConnectHint": "Ketuk Hubungkan ke Spotify untuk isi kolom.", + "@extensionOauthConnectHint": { + "description": "Hint for an OAuth login link field before connecting Spotify" + }, + "extensionLastChecked": "Terakhir diperiksa {time}", + "@extensionLastChecked": { + "description": "Timestamp for the latest extension service health check", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "extensionRefreshStatus": "Refresh status", + "@extensionRefreshStatus": { + "description": "Tooltip for refreshing extension service health status" + }, + "extensionCustomUrlHandling": "Penanganan URL Kustom", + "@extensionCustomUrlHandling": { + "description": "Extension detail section title for custom URL handling" + }, + "extensionCustomUrlHandlingSubtitle": "Ekstensi ini dapat menangani link dari situs ini", + "@extensionCustomUrlHandlingSubtitle": { + "description": "Extension detail subtitle for custom URL handling" + }, + "extensionCustomUrlHandlingShareHint": "Bagikan link dari situs ini ke SpotiFLAC Mobile dan ekstensi ini akan menanganinya.", + "@extensionCustomUrlHandlingShareHint": { + "description": "Extension detail hint explaining share-to-app URL handling" + }, + "extensionSettingsCount": "{count} {count, plural, =1{setelan} other{setelan}}", + "@extensionSettingsCount": { + "description": "Count of settings exposed by an extension quality option", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionHealthOnline": "Online", + "@extensionHealthOnline": { + "description": "Extension service health status - online" + }, + "extensionHealthDegraded": "Sedang Down", + "@extensionHealthDegraded": { + "description": "Extension service health status - degraded" + }, + "extensionHealthOffline": "Ofline", + "@extensionHealthOffline": { + "description": "Extension service health status - offline" + }, + "extensionHealthNotConfigured": "Belum diatur", + "@extensionHealthNotConfigured": { + "description": "Extension service health status - not configured" + }, + "extensionHealthUnknown": "Tidak Tahu", + "@extensionHealthUnknown": { + "description": "Extension service health status - unknown" + }, + "extensionHealthRequired": "dibutuhkan", + "@extensionHealthRequired": { + "description": "Label for a required extension service health check" + }, + "extensionSettingNotSet": "Tidak diatur", + "@extensionSettingNotSet": { + "description": "Value shown when an extension setting has no value" + }, + "extensionActionFailed": "Tindakan gagal", + "@extensionActionFailed": { + "description": "Fallback error when an extension action fails without details" + }, + "extensionEnterValue": "Masukkan isi", + "@extensionEnterValue": { + "description": "Hint for editing an extension setting value" + }, + "extensionHealthServiceOnline": "Layanan online", + "@extensionHealthServiceOnline": { + "description": "Tooltip for online extension service" + }, + "extensionHealthServiceDegraded": "Layanan sedang down", + "@extensionHealthServiceDegraded": { + "description": "Tooltip for degraded extension service" + }, + "extensionHealthServiceOffline": "Layanan offline", + "@extensionHealthServiceOffline": { + "description": "Tooltip for offline extension service" + }, + "extensionHealthServiceUnknown": "Status layanan tidak diketahui", + "@extensionHealthServiceUnknown": { + "description": "Tooltip for unknown extension service health" + }, + "audioAnalysisStereo": "Stereo", + "@audioAnalysisStereo": { + "description": "Audio channel layout label - stereo" + }, + "audioAnalysisMono": "Mono", + "@audioAnalysisMono": { + "description": "Audio channel layout label - mono" + }, + "trackOpenInService": "Buka {serviceName}", + "@trackOpenInService": { + "description": "Button label to open a track in a named music service", + "placeholders": { + "serviceName": { + "type": "String" + } + } + }, + "trackLyricsEmbeddedSource": "Tersemat", + "@trackLyricsEmbeddedSource": { + "description": "Lyrics source label for embedded lyrics" + }, + "unknownAlbum": "Album Tak Dikenal", + "@unknownAlbum": { + "description": "Fallback album name when metadata is missing" + }, + "unknownArtist": "Artis Tak Dikenal", + "@unknownArtist": { + "description": "Fallback artist name when metadata is missing" + }, + "permissionAudio": "Audio", + "@permissionAudio": { + "description": "Audio permission type label" + }, + "permissionStorage": "Penyimpanan", + "@permissionStorage": { + "description": "Storage permission type label" + }, + "permissionNotification": "Notifikasi", + "@permissionNotification": { + "description": "Notification permission type label" + }, + "errorInvalidFolderSelected": "Folder tidak valid", + "@errorInvalidFolderSelected": { + "description": "Error when the selected folder is invalid" + }, + "storeAnyVersion": "Mana saja", + "@storeAnyVersion": { + "description": "Store detail value when any app version is accepted" + }, + "storeCategoryMetadata": "Metadata", + "@storeCategoryMetadata": { + "description": "Store extension category - metadata" + }, + "storeCategoryDownload": "Download", + "@storeCategoryDownload": { + "description": "Store extension category - download" + }, + "storeCategoryUtility": "Utilitas", + "@storeCategoryUtility": { + "description": "Store extension category - utility" + }, + "storeCategoryLyrics": "Lirik", + "@storeCategoryLyrics": { + "description": "Store extension category - lyrics" + }, + "storeCategoryIntegration": "Integrasi", + "@storeCategoryIntegration": { + "description": "Store extension category - integration" + }, + "artistReleases": "Rilis", + "@artistReleases": { + "description": "Section header for all artist releases" + }, + "editMetadataSelectNone": "Kosong", + "@editMetadataSelectNone": { + "description": "Button to clear selected fields for auto-fill" + }, + "queueRetryAllFailed": "Percobaan {count} gagal", + "@queueRetryAllFailed": { + "description": "Button to retry every failed download in the queue", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "settingsSaveDownloadHistory": "Simpan histori download", + "@settingsSaveDownloadHistory": { + "description": "Settings switch title for storing completed downloads in history" + }, + "settingsSaveDownloadHistorySubtitle": "Simpan download selesai di tampilan histori dan koleksi", + "@settingsSaveDownloadHistorySubtitle": { + "description": "Settings switch subtitle for storing completed downloads in history" + }, + "dialogDisableHistoryTitle": "Matikan histori download?", + "@dialogDisableHistoryTitle": { + "description": "Confirmation dialog title shown before disabling download history" + }, + "dialogDisableHistoryMessage": "Histori yang sudah ada akan dihapus. File terdownload akan tetap ada.", + "@dialogDisableHistoryMessage": { + "description": "Confirmation dialog message shown before disabling download history" + }, + "dialogDisableAndClear": "Matikan dan hapus", + "@dialogDisableAndClear": { + "description": "Confirmation action to disable download history and clear existing entries" + }, + "openInOtherServices": "Buka di Layanan Lain", + "@openInOtherServices": { + "description": "Title and tooltip for finding the current collection in other services" + }, + "shareSheetNoExtensions": "Tidak ada layanan yang kompatibel", + "@shareSheetNoExtensions": { + "description": "Empty state when no extensions can be searched for cross-service links" + }, + "shareSheetNotFound": "Tidak ditemukan", + "@shareSheetNotFound": { + "description": "Cross-service share sheet row subtitle when a service has no match" + }, + "shareSheetCopyLink": "Salin Link", + "@shareSheetCopyLink": { + "description": "Tooltip for copying a cross-service link" + }, + "shareSheetLinkCopied": "{service} link tersalin", + "@shareSheetLinkCopied": { + "description": "Snackbar after copying a cross-service link", + "placeholders": { + "service": {} + } + }, + "libraryPlayback": "Pemutaran", + "@libraryPlayback": { + "description": "Section header for playback settings in library settings" + }, + "libraryExternalPlayer": "Pemutar eksternal", + "@libraryExternalPlayer": { + "description": "Setting option to use an external music player" + }, + "libraryExternalPlayerSubtitle": "Bagus untuk mendengarkan harian, kualitas terbaik, pemutaran lancar, EQ, dan dukungan format luas", + "@libraryExternalPlayerSubtitle": { + "description": "Subtitle for external player option" + }, + "libraryBuiltInPreviewPlayer": "Pemutar bawaan beta", + "@libraryBuiltInPreviewPlayer": { + "description": "Setting option to use the built-in preview player" + }, + "libraryBuiltInPreviewPlayerSubtitle": "Pratinjau lagu lokal di SpotiFLAC Mobile", + "@libraryBuiltInPreviewPlayerSubtitle": { + "description": "Subtitle for built-in preview player option" + }, + "libraryBuiltInPlayerInfo": "Pemutar built-in masih tahap beta untuk memeriksa lagu dengan cepat. Gunakan pemutar musik eksternal untuk mendengarkan.", + "@libraryBuiltInPlayerInfo": { + "description": "Info note explaining the built-in player is for previews only" + }, + "nowPlayingTitle": "Sedang Memutar", + "@nowPlayingTitle": { + "description": "Title for the now playing screen" + }, + "nowPlayingNothingPlaying": "Tidak memutar apapun", + "@nowPlayingNothingPlaying": { + "description": "Empty state when no track is currently playing" + }, + "nowPlayingMinimize": "Perkecil", + "@nowPlayingMinimize": { + "description": "Tooltip for minimizing the now playing screen" + }, + "nowPlayingUpNext": "Selanjutnya", + "@nowPlayingUpNext": { + "description": "Title for the playback queue sheet" + }, + "nowPlayingPreviousTrack": "Lagu Sebelumnya", + "@nowPlayingPreviousTrack": { + "description": "Tooltip for the previous-track playback control" + }, + "nowPlayingNextTrack": "Lagu Selanjutnya", + "@nowPlayingNextTrack": { + "description": "Tooltip for the next-track playback control" + }, + "nowPlayingDetails": "Detail", + "@nowPlayingDetails": { + "description": "Menu item and section title for track metadata details" + }, + "nowPlayingSleepTimer": "Timer Tidur", + "@nowPlayingSleepTimer": { + "description": "Menu item and sheet title for the playback sleep timer" + }, + "nowPlayingSleepTimerActive": "Berhenti pada {time}", + "@nowPlayingSleepTimerActive": { + "description": "Active sleep timer deadline shown in the player menu", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "nowPlayingSleepTimerMinutes": "{minutes, plural, =1{1 menit} other{{minutes} menit}}", + "@nowPlayingSleepTimerMinutes": { + "description": "Duration choice for the playback sleep timer", + "placeholders": { + "minutes": { + "type": "int" + } + } + }, + "nowPlayingSleepTimerOff": "Matikan timer tidur", + "@nowPlayingSleepTimerOff": { + "description": "Action to cancel the active playback sleep timer" + }, + "nowPlayingSleepTimerSet": "Timer tidur diatur selama", + "@nowPlayingSleepTimerSet": { + "description": "Confirmation after setting the playback sleep timer", + "placeholders": { + "duration": { + "type": "String" + } + } + }, + "nowPlayingSleepTimerCancelled": "Timer tidur dimatikan", + "@nowPlayingSleepTimerCancelled": { + "description": "Confirmation after cancelling the playback sleep timer" + }, + "nowPlayingOpenInExternalPlayer": "Buka di pemutar eksternal", + "@nowPlayingOpenInExternalPlayer": { + "description": "Menu item to open the current track in an external player" + }, + "nowPlayingTabPlayer": "Pemutar", + "@nowPlayingTabPlayer": { + "description": "Tab label for the player view" + }, + "nowPlayingTabLyrics": "Lirik", + "@nowPlayingTabLyrics": { + "description": "Tab label for the lyrics view" + }, + "nowPlayingNoLyrics": "Tidak ada lirik", + "@nowPlayingNoLyrics": { + "description": "Empty state when the playing file has no embedded lyrics" + }, + "nowPlayingLibraryEmpty": "Koleksi Anda kosong", + "@nowPlayingLibraryEmpty": { + "description": "Snackbar when shuffle library is requested but library has no tracks" + }, + "nowPlayingShuffleLibraryFailed": "Tidak dapat mengacak koleksi: {error}", + "@nowPlayingShuffleLibraryFailed": { + "description": "Snackbar when shuffling the library fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "nowPlayingShuffleOn": "Acak hidup", + "@nowPlayingShuffleOn": { + "description": "Tooltip when shuffle mode is enabled" + }, + "nowPlayingPlayInOrder": "Putar berurutan", + "@nowPlayingPlayInOrder": { + "description": "Tooltip when shuffle mode is disabled" + }, + "nowPlayingShuffleLibrary": "Acak koleksi", + "@nowPlayingShuffleLibrary": { + "description": "Button label to shuffle and play the entire local library" + }, + "nowPlayingQueueEmpty": "Antrean kosong", + "@nowPlayingQueueEmpty": { + "description": "Empty state when the playback queue has no items" + }, + "nowPlayingNoMetadata": "Metadata tidak tersedia", + "@nowPlayingNoMetadata": { + "description": "Empty state when track metadata cannot be loaded" + }, + "announcementUnableToOpenLink": "Tidak dapat membuka link. Coba lagi.", + "@announcementUnableToOpenLink": { + "description": "Snackbar shown when an announcement CTA link cannot be opened" + }, + "trackConvertLosslessOutputWithCap": "Output loseless dengan batas {quality}", + "@trackConvertLosslessOutputWithCap": { + "description": "Hint shown when lossless conversion will cap bit depth or sample rate", + "placeholders": { + "quality": { + "type": "String" + } + } + }, + "trackConvertConfirmMessageLosslessCapped": "Ubah format {sourceFormat} ke {targetFormat} ({quality})?\n\nOutput tetap menggunakan codec loseless, tapi bit depth/laju sampel akan dibatasi. File asli akan dihapus setelah diubah.", + "@trackConvertConfirmMessageLosslessCapped": { + "description": "Confirmation dialog message for capped lossless conversion of a single file", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "selectionBatchConvertConfirmMessageLosslessCapped": "Ubah format {count} {count, plural, =1{lagu} other{lagu}} ke {format} ({quality})?\n\nOutput tetap menggunakan codec loseless, tapi bit depth/laju sampel akan dibatasi. File asli akan dihapus setelah diubah.", + "@selectionBatchConvertConfirmMessageLosslessCapped": { + "description": "Confirmation dialog message for capped lossless batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "trackConvertActionLabelLossless": "{sourceFormat} → {targetFormat} ({quality})", + "@trackConvertActionLabelLossless": { + "description": "Convert button label for lossless conversion with quality cap", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "trackConvertActionLabelLossy": "{sourceFormat} → {targetFormat} @ {bitrate}", + "@trackConvertActionLabelLossy": { + "description": "Convert button label for lossy conversion", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "aboutPaxsenixSubtitle": "Proxy lirik untuk Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou, dan Genius", + "@aboutPaxsenixSubtitle": { + "description": "Subtitle for Paxsenix special thanks entry on the about page" + }, + "snackbarPlayingNext": "Memutar lagu berikutnya", + "@snackbarPlayingNext": { + "description": "Snackbar when a track is inserted as the next queue item" + }, + "snackbarAddedToQueueGeneric": "Ditambahkan ke antrean", + "@snackbarAddedToQueueGeneric": { + "description": "Snackbar when a track is added to the playback queue without naming it" + }, + "selectionDeletePlaylistsCount": "Hapus {count} {count, plural, =1{playlist} other{playlist}}", + "@selectionDeletePlaylistsCount": { + "description": "Button label for deleting multiple selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "actionShuffle": "Acak", + "@actionShuffle": { + "description": "Tooltip for shuffle playback action" + }, + "downloadPrimaryArtistOnlyOn": "Utama saja: Hidup", + "@downloadPrimaryArtistOnlyOn": { + "description": "Status label when primary-artist-only folder naming is enabled" + }, + "downloadPrimaryArtistOnlyOff": "Utama saja: Mati", + "@downloadPrimaryArtistOnlyOff": { + "description": "Status label when primary-artist-only folder naming is disabled" + }, + "downloadAlbumArtistMetadataPrimaryOnly": "Metadata Artis Album: Utama saja", + "@downloadAlbumArtistMetadataPrimaryOnly": { + "description": "Status label when album-artist folder filtering uses primary artist only" + }, + "downloadAlbumArtistMetadataFull": "Metadata Artis Album: Semua", + "@downloadAlbumArtistMetadataFull": { + "description": "Status label when album-artist folder filtering uses full metadata" + }, + "trackConvertOriginal": "Asli", + "@trackConvertOriginal": { + "description": "Label for keeping original bit depth or sample rate during conversion" + }, + "trackConvertOriginalQuality": "Kualitas asli", + "@trackConvertOriginalQuality": { + "description": "Label when no bit depth or sample rate cap is applied during lossless conversion" + }, + "trackConvertLosslessSuffix": "Loseless", + "@trackConvertLosslessSuffix": { + "description": "Suffix used in converted lossless quality labels" + }, + "trackConvertDithering": "Dithering", + "@trackConvertDithering": { + "description": "Section label for lossless conversion dithering options" + }, + "trackConvertResampler": "Resampler", + "@trackConvertResampler": { + "description": "Section label for lossless conversion resampler options" + }, + "trackConvertDitherNone": "Tidak Ada", + "@trackConvertDitherNone": { + "description": "Lossless conversion dither option with no dithering applied" + }, + "trackConvertDitherTriangular": "TPDF", + "@trackConvertDitherTriangular": { + "description": "Lossless conversion triangular probability density function dither option" + }, + "trackConvertDitherTriangularHp": "HP Triangular", + "@trackConvertDitherTriangularHp": { + "description": "Lossless conversion high-pass triangular dither option" + }, + "trackConvertResamplerSwr": "SWR", + "@trackConvertResamplerSwr": { + "description": "Lossless conversion default FFmpeg swresample resampler option" + }, + "trackConvertResamplerSoxr": "SoXR", + "@trackConvertResamplerSoxr": { + "description": "Lossless conversion SoX resampler option" + }, + "updateSeeReleaseNotes": "Lihat catatan yang baru untuk detail", + "@updateSeeReleaseNotes": { + "description": "Fallback changelog text when release notes cannot be parsed" + }, + "unknownTitle": "Judul tidak diketahui", + "@unknownTitle": { + "description": "Fallback track title when metadata is missing" + }, + "trackPlayNext": "Putar selanjutnya", + "@trackPlayNext": { + "description": "Menu action to play a track as the next queue item" + }, + "trackAddToQueue": "Tambah ke antrean", + "@trackAddToQueue": { + "description": "Menu action to add a track to the playback queue" + }, + "snackbarExtensionInstalledEnable": "{extensionName} terinstal. Hidupkan di Setelan > Ekstensi", + "@snackbarExtensionInstalledEnable": { + "description": "Snackbar after installing an extension from the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "snackbarExtensionUpdatedVersion": "{extensionName} diupdate ke v{version}", + "@snackbarExtensionUpdatedVersion": { + "description": "Snackbar after updating an extension from the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + }, + "version": { + "type": "String" + } + } + }, + "snackbarFailedToInstallNamed": "Gagal menginstal {extensionName}", + "@snackbarFailedToInstallNamed": { + "description": "Snackbar when extension install fails in the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "snackbarFailedToUpdateNamed": "Gagal mengupdate {extensionName}", + "@snackbarFailedToUpdateNamed": { + "description": "Snackbar when extension update fails in the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "releaseTypeEp": "EP", + "@releaseTypeEp": { + "description": "Badge label for EP releases" + }, + "releaseTypeSingle": "SIngle", + "@releaseTypeSingle": { + "description": "Badge label for single releases" + }, + "trackCoverOnline": "Cover internet", + "@trackCoverOnline": { + "description": "Label shown when metadata autofill downloaded cover art from the internet" + }, + "regionCountryUS": "Amerika Serikat", + "@regionCountryUS": { + "description": "Country name for SongLink region picker" + }, + "regionCountryGB": "Inggris Raya", + "@regionCountryGB": { + "description": "Country name for SongLink region picker" + }, + "regionCountryFR": "Prancis", + "@regionCountryFR": { + "description": "Country name for SongLink region picker" + }, + "regionCountryDE": "Jerman", + "@regionCountryDE": { + "description": "Country name for SongLink region picker" + }, + "regionCountryJP": "Jepang", + "@regionCountryJP": { + "description": "Country name for SongLink region picker" + }, + "regionCountryKR": "Korea Selatan", + "@regionCountryKR": { + "description": "Country name for SongLink region picker" + }, + "regionCountryIN": "India", + "@regionCountryIN": { + "description": "Country name for SongLink region picker" + }, + "regionCountryID": "Indonesia", + "@regionCountryID": { + "description": "Country name for SongLink region picker" + }, + "regionCountryBR": "Brazil", + "@regionCountryBR": { + "description": "Country name for SongLink region picker" + }, + "regionCountryMX": "Meksiko", + "@regionCountryMX": { + "description": "Country name for SongLink region picker" + }, + "regionCountryAU": "Australia", + "@regionCountryAU": { + "description": "Country name for SongLink region picker" + }, + "regionCountryCA": "Kanada", + "@regionCountryCA": { + "description": "Country name for SongLink region picker" + }, + "regionCountryXK": "Kosovo", + "@regionCountryXK": { + "description": "Country name for SongLink region picker" + }, + "extensionVerificationBrowserTitle": "Browser verifikasi", + "@extensionVerificationBrowserTitle": { + "description": "Settings option title for extension verification browser preference" + }, + "extensionVerificationBrowserSubtitleExternal": "Buka verifikasi di browser default dulu", + "@extensionVerificationBrowserSubtitleExternal": { + "description": "Subtitle when external browser is preferred for extension verification" + }, + "extensionVerificationBrowserSubtitleInApp": "Buka verifikasi di browser aplikasi dulu", + "@extensionVerificationBrowserSubtitleInApp": { + "description": "Subtitle when in-app browser is preferred for extension verification" + }, + "extensionVerificationBrowserExternal": "Eksternal", + "@extensionVerificationBrowserExternal": { + "description": "Chip label for external browser verification mode" + }, + "extensionVerificationBrowserInApp": "Aplikasi", + "@extensionVerificationBrowserInApp": { + "description": "Chip label for in-app browser verification mode" + }, + "extensionVerificationUnavailable": "Tidak ada halaman verifikasi untuk {extension}. Ulang download untuk meminta verifikasi baru.", + "@extensionVerificationUnavailable": { + "description": "Shown when the app cannot retrieve a pending verification challenge", + "placeholders": { + "extension": { + "type": "String" + } + } + }, + "extensionVerificationHelpTitleManual": "Buka verifikasi secara manual", + "@extensionVerificationHelpTitleManual": { + "description": "Dialog title when automatic browser launch for verification fails" + }, + "extensionVerificationHelpTitleWaiting": "Menunggu verifikasi", + "@extensionVerificationHelpTitleWaiting": { + "description": "Dialog title when verification is taking longer than expected" + }, + "extensionVerificationHelpMessageManual": "SpotiFLAC mobile tidak dapat membuka browser secara otomatis. Buka link ini di browser Anda, atau salin manual.", + "@extensionVerificationHelpMessageManual": { + "description": "Dialog message when automatic browser launch for verification fails" + }, + "extensionVerificationHelpMessageWaiting": "Jika browser tidak terbuka, atau verifikasi berhasil tapi tidak langsung kembali ke SpotiFLAC Mobile, buka link ini lagu atau salin manual.", + "@extensionVerificationHelpMessageWaiting": { + "description": "Dialog message when verification may need manual browser help" + }, + "extensionVerificationClose": "Tutup", + "@extensionVerificationClose": { + "description": "Button to dismiss the extension verification help dialog" + }, + "extensionVerificationCopyLink": "Salin link", + "@extensionVerificationCopyLink": { + "description": "Button to copy the extension verification URL" + }, + "extensionVerificationLinkCopied": "Link verifikasi disalin", + "@extensionVerificationLinkCopied": { + "description": "Snackbar after copying the extension verification URL" + }, + "extensionVerificationOpenBrowser": "Buka browser", + "@extensionVerificationOpenBrowser": { + "description": "Button to open the extension verification URL in a browser" + }, + "settingsSearchHint": "Telusuri setelan", + "@settingsSearchHint": { + "description": "Placeholder of the search field on the Settings tab" + }, + "settingsSearchNoResults": "Tidak ada setelan \"{query}\"", + "@settingsSearchNoResults": { + "description": "Shown when a Settings search returns nothing", + "placeholders": { + "query": { + "type": "String" + } + } + }, + "settingsGroupInterface": "Ekstensi & tampilan", + "@settingsGroupInterface": { + "description": "Settings group covering look and feel" + }, + "settingsGroupContent": "Konten & metadata", + "@settingsGroupContent": { + "description": "Settings group covering the library, metadata and lyrics" + }, + "settingsGroupDownloads": "Download & file", + "@settingsGroupDownloads": { + "description": "Settings group covering download behaviour and storage" + }, + "settingsGroupSystem": "Sistem", + "@settingsGroupSystem": { + "description": "Settings group covering app-level data, cache and logs" + }, + "settingsGroupHelp": "Tentang & dukungan", + "@settingsGroupHelp": { + "description": "Settings group covering the about page and donations" + }, + "libraryFilterMetadataMissingLyrics": "Lirik hilang", + "@libraryFilterMetadataMissingLyrics": { + "description": "Filter option for tracks without embedded or sidecar lyrics" + }, + "trackOptionCopyTrackName": "Salin nama lagu", + "@trackOptionCopyTrackName": { + "description": "Track menu action that copies the track title" + }, "trackOptionCopyArtist": "Salin artis", - "trackOptionCopyTrackAndArtist": "Salin judul dan artis", - "metadataCopyValue": "Salin nilai", - "metadataCopyField": "Salin field dan nilai", - "metadataCopyAll": "Salin semua metadata", - "optionsEmbeddedCoverSize": "Ukuran Cover Tertanam", - "optionsEmbeddedCoverSizeDescription": "Perkecil cover yang diunduh dari internet sebelum ditanamkan. Gambar yang sudah berada dalam batas tidak akan diubah.", - "optionsEmbeddedCoverSizeOriginal": "Resolusi asli", - "collectionExportM3u": "Ekspor sebagai M3U8", - "collectionExportM3uDone": "Mengekspor {exported} dari {total} lagu", - "collectionExportM3uNone": "Tidak ada file terdownload untuk diekspor", - "collectionExportM3uFailed": "Ekspor gagal", - "trackOpenOn": "Buka di...", - "trackOpenOnNoLinks": "Tidak menemukan link platform untuk lagu ini.", - "libraryReviewDuplicates": "Tinjau duplikat", - "libraryReviewDuplicatesSubtitle": "Telusuri lagu yang disimpan lebih dari sekali", - "duplicatesTitle": "Duplikat", - "duplicatesEmpty": "Tidak menemukan lagu duplikat.", - "duplicatesKeepBest": "Simpan lagu kualitas terbaik", - "duplicatesKeepBestAll": "Simpan yang terbaik untuk semua", - "duplicatesKeepBestAllMessage": "Simpan salinan terbaik dari {groupCount} lagu dan hapus {count} salinan berkualitas lebih rendah?\n\nFile yang dihapus juga akan dihapus dari penyimpanan.", - "duplicatesKeepBestMessage": "Hapus {count} salinan kualitas rendah lagu \"{trackName}\"?", - "duplicatesDeleteCopyMessage": "Hapus salinan lagu \"{trackName}\"?", - "appearanceForceBlur": "Selalu gunakan efek blur", - "appearanceForceBlurSubtitle": "Aktifkan efek buram bilah navigasi bahkan pada perangkat yang dinonaktifkan secara bawaan. Dapat memengaruhi performa.", - "queuePlaylistCount": "{count, plural, =1{1 playlist} other{{count} playlists}}", - "queueEmptyPlaylistsSubtitle": "Create a playlist to organize your tracks", - "libraryDefaultView": "Default view", - "libraryDefaultViewLastUsed": "Last used", - "queueCancelledTitle": "Download cancelled", - "queueCancelledMessage": "This download was cancelled. Retry it or remove it from the queue.", - "queueDownloadNext": "Download next", - "queueMoveUp": "Move up", - "queueMoveDown": "Move down", - "editMetadataMusicBrainzButton": "Fetch from MusicBrainz", - "editMetadataMusicBrainzFilled": "Updated from MusicBrainz", - "editMetadataMusicBrainzNothing": "Nothing found on MusicBrainz", - "editMetadataMusicBrainzNeedsIsrc": "Requires an ISRC tag", - "nowPlayingRepeatOff": "Repeat off", - "nowPlayingRepeatAll": "Repeat all", - "nowPlayingRepeatOne": "Repeat one", - "queueNetworkFailedOffline": "{count} downloads failed while offline", - "libraryFilterMetadataMissingIsrc": "Missing ISRC", + "@trackOptionCopyArtist": { + "description": "Track menu action that copies the artist name" + }, + "trackOptionCopyTrackAndArtist": "Salin lagu dan artis", + "@trackOptionCopyTrackAndArtist": { + "description": "Track menu action that copies the track title and artist" + }, + "metadataCopyValue": "Salin isi", + "@metadataCopyValue": { + "description": "Metadata menu action that copies only the selected value" + }, + "metadataCopyField": "Salin isi kolom", + "@metadataCopyField": { + "description": "Metadata menu action that copies the selected key and value" + }, "mornyeShowTabs": "Tampilkan tab", "mornyeSearch": "Cari", "mornyeContinuePlaying": "Putar Berikutnya", + "metadataCopyAll": "Salin semua metadata", + "@metadataCopyAll": { + "description": "Metadata menu action that copies every visible key and value" + }, + "optionsEmbeddedCoverSize": "Ukuran Cover Tersemat", + "@optionsEmbeddedCoverSize": { + "description": "Metadata setting that limits downloaded artwork resolution before it is embedded" + }, + "optionsEmbeddedCoverSizeDescription": "Downscale foto cover terdownload sebelum menyematkannya. Foto yang berada di batasnya tidak akan dimodifikasi.", + "@optionsEmbeddedCoverSizeDescription": { + "description": "Description shown in the embedded cover size picker" + }, "mornyeFavorite": "Favorit", "mornyeGoToArtist": "Buka Artis", + "@mornyeFavorite": { + "description": "Compact context menu action that adds a track to Loved" + }, "mornyeFavorited": "Difavoritkan", + "@mornyeFavorited": { + "description": "Selected state of the compact favorite action" + }, "autoMixDescription": "Sambungkan lagu dengan pencocokan beat dan penyesuaian tempo tanpa mengubah nada. Gunakan crossfade jika beat tidak cocok.", "autoMixOn": "AutoMix aktif", "autoMixOff": "AutoMix nonaktif", - "artistUpcomingConcerts": "Konser Mendatang", - "artistAllUpcomingConcerts": "Semua Konser Mendatang", - "artistNoUpcomingConcerts": "Belum ada konser mendatang.", "profileTitle": "Profil", "profileSetUp": "Atur profil kamu", "profileEdit": "Ubah nama dan foto", @@ -6326,10 +6822,38 @@ "profileRemovePhoto": "Hapus foto", "profilePhotoError": "Pilih gambar yang valid dengan ukuran kurang dari 20 MB.", "profileSaveError": "Profil belum berhasil disimpan. Silakan coba lagi.", - "hiResCheckTitle": "Keaslian Hi-Res", + "optionsEmbeddedCoverSizeOriginal": "Resolusi asli", + "@optionsEmbeddedCoverSizeOriginal": { + "description": "Option that preserves the provider artwork at its original resolution" + }, + "nowPlayingAudioOutput": "Output Audio", + "nowPlayingWrittenBy": "Ditulis oleh: {writers}", + "nowPlayingLyricsProvider": "Lirik: {provider}", + "concertGetTickets": "Beli Tiket", + "concertSetList": "Set List Konser", + "concertSetListButton": "Set List", + "concertAddToCalendar": "Tambahkan ke Kalender", + "concertOpenMaps": "Buka Peta", + "concertDetailsUnavailable": "Detail konser belum tersedia saat ini.", + "concertCalendarUnavailable": "Tidak dapat membuka kalender.", + "nowPlayingAudioOutputUnavailable": "Tidak dapat membuka pengaturan output audio.", + "nowPlayingInstrumental": "Jeda instrumental", + "nowPlayingLyricsLanguageOptions": "Opsi bahasa lirik", + "nowPlayingHidePronunciation": "Sembunyikan Pelafalan", + "nowPlayingShowPronunciation": "Tampilkan Pelafalan", + "nowPlayingHideTranslation": "Sembunyikan Terjemahan", + "nowPlayingShowTranslation": "Tampilkan Terjemahan", + "trackRemoveReplayGain": "Hapus ReplayGain", + "trackRemoveReplayGainSuccess": "Tag ReplayGain dihapus", + "trackRemoveReplayGainFailed": "Gagal menghapus tag ReplayGain", + "replayGainRemoving": "Menghapus ReplayGain...", + "replayGainRemoveConfirmMessage": "Hapus tag ReplayGain lagu dan album dari {count} lagu? Audio, sampul, dan metadata lainnya tetap tersimpan.", + "selectionRemoveReplayGainCount": "Hapus RG ({count})", + "replayGainRemoveBatchSuccess": "ReplayGain dihapus dari {success} dari {total} lagu", + "artistUpcomingConcerts": "Konser Mendatang", + "artistAllUpcomingConcerts": "Semua Konser Mendatang", + "artistNoUpcomingConcerts": "Belum ada konser mendatang.", "hiResCheckSummary": "Periksa spektrum dan kedalaman bit aktif untuk menemukan tanda upsampling atau padding.", - "hiResCheckRun": "Periksa", - "hiResCheckChecking": "Memeriksa audio Hi-Res...", "hiResCheckLimitedBandwidth": "Rentang frekuensi terbatas", "hiResCheckNoEvidence": "Tidak terdeteksi upsampling atau padding", "hiResCheckEstimatedCutoff": "Perkiraan cutoff", diff --git a/lib/l10n/arb/app_it.arb b/lib/l10n/arb/app_it.arb index af1253d5..1b64e455 100644 --- a/lib/l10n/arb/app_it.arb +++ b/lib/l10n/arb/app_it.arb @@ -1,4 +1,48 @@ { + "upgradeIntroWelcome": "Welcome to\nSpotiFLAC-Mobile 5.0", + "upgradeIntroThemeTitle": "Make it\nyour own.", + "upgradeIntroThemeBody": "Choose a look. Your choice applies immediately, and you can change it later in Appearance.", + "upgradeIntroThemeMaterialBody": "The familiar layout, with Material controls and your accent color.", + "upgradeIntroThemeMornyeBody": "Glass navigation, a redesigned Library and an immersive player.", + "upgradeIntroRustTitle": "A new engine.\nBuilt with Rust.", + "upgradeIntroRustBody": "In 5.0, the app’s backend has moved from Go to Rust. It is the engine working behind the screens you use every day.", + "upgradeIntroRustEngineTitle": "Working behind the scenes", + "upgradeIntroRustEngineBody": "Rust handles downloads, audio metadata, library scanning and the extension runtime on Android and iOS.", + "upgradeIntroRustMemoryTitle": "More careful with memory", + "upgradeIntroRustMemoryBody": "Reused buffers and fewer copies reduce temporary allocations when processing artwork and extension data.", + "upgradeIntroRustKeepTitle": "Keep your music", + "upgradeIntroRustKeepBody": "No need to download your collection again. Your saved music and settings stay in place, with no new setup required.", + "upgradeIntroWelcomeBody": "A quick look at what has changed, and where to find it.", + "upgradeIntroMornyeBody": "A new look for your player, lyrics and navigation.", + "upgradeIntroLibrarySummary": "Browse your music by playlist, artist or album.", + "upgradeIntroRepoSummary": "Choose your music sources and providers through extensions.", + "upgradeIntroLibraryTitle": "Get to know\nyour Library.", + "upgradeIntroLibraryBody": "In Mornye, browse by category or find your albums in Recently Added.", + "upgradeIntroDownloadsBody": "Pause and retry from Downloads at the top right. Finished music moves to Recently Added.", + "upgradeIntroSearchBody": "Search saved music here. The separate Search tab looks through your extensions.", + "upgradeIntroPlayerTitle": "Set up\nyour player.", + "upgradeIntroPlayerBody": "You can change your theme and playback options at any time. Here is where to find them.", + "upgradeIntroAppearanceBody": "Change themes in Settings → Appearance. In Mornye, scroll down for compact navigation; scroll up to expand it.", + "upgradeIntroAutoMixBody": "Match tempo and beats between tracks. Enable it in Settings → Local Library → Playback. Off by default.", + "upgradeIntroSettingsBody": "In Mornye, tap your profile on Home to open Settings and edit your name and photo.", + "upgradeIntroSkip": "Skip", + "upgradeIntroContinue": "Continue", + "upgradeIntroDone": "Start listening", + "upgradeIntroReplay": "What’s new in 5.0", + "cacheMotionArtwork": "Offline motion covers", + "cacheMotionArtworkDesc": "Album videos saved with downloads. Removing them keeps your music files and static covers.", + "nowPlayingVolume": "Volume", + "@nowPlayingVolume": { + "description": "System volume control label in the Mornye player" + }, + "appearanceStyle": "App Style", + "@appearanceStyle": { + "description": "Appearance section for choosing the app visual style" + }, + "discordRichPresence": "Discord Rich Presence", + "discordPresenceDescription": "Share the track playing in the built-in player on Discord. Requires Discord to be installed and signed in.", + "discordPresenceMissing": "Install Discord and sign in, then turn this setting off and on again.", + "discordPresenceUnavailable": "Discord Rich Presence is unavailable in this build or on this device.", "@@locale": "it", "@@last_modified": "2026-04-28", "appName": "SpotiFLAC Mobile", @@ -57,6 +101,11 @@ "@historyFilterSingles": { "description": "Filter chip - show singles only" }, + "libraryRecentlyAdded": "Recently Added", + "libraryDownloads": "Downloads", + "libraryNoActiveDownloads": "No active downloads", + "librarySearchHint": "Search your library", + "libraryEmptyCollection": "Your music will appear here", "historySearchHint": "Cronologia ricerche...", "@historySearchHint": { "description": "Search bar placeholder in history" @@ -237,6 +286,7 @@ "description": "Progress dialog title while batch scanning ReplayGain" }, "replayGainBatchSuccess": "ReplayGain added to {success} of {total} tracks", + "replayGainUnsupportedDecoder": "Some tracks could not be analyzed because their audio codec is not supported by the ReplayGain decoder. Their files were not changed.", "@replayGainBatchSuccess": { "description": "Snackbar after batch ReplayGain completes", "placeholders": { @@ -461,6 +511,18 @@ "@aboutSachinsenalDesc": { "description": "Credit description for sachinsenal0x64" }, + "aboutUnituneDesc": "Open-source music link resolver by Flaze, used for cross-platform fallback matching.", + "@aboutUnituneDesc": { + "description": "Credit for the UniTune resolver" + }, + "aboutMusicBrainzDesc": "Open music database maintained by MetaBrainz and its community, used for recording cross-references.", + "@aboutMusicBrainzDesc": { + "description": "Credit for the MusicBrainz database" + }, + "aboutSquiglyDesc": "Universal music link service by Liam Macmillan, used as a final cross-platform resolver fallback.", + "@aboutSquiglyDesc": { + "description": "Credit for the Squigly resolver" + }, "aboutAppDescription": "Cerca i metadati, gestisci le estensioni e organizza la tua libreria.", "@aboutAppDescription": { "description": "App description in header card" @@ -507,7 +569,7 @@ "@trackMetadataDelete": { "description": "Action button - delete track" }, - "setupGrantPermission": "Grant Permission", + "setupGrantPermission": "Concedi autorizzazione", "@setupGrantPermission": { "description": "Button to request permission" }, @@ -594,7 +656,7 @@ "@setupIcloudNotSupported": { "description": "Error when user selects iCloud Drive on iOS" }, - "setupDownloadInFlac": "Download music in lossless and Hi-Res quality", + "setupDownloadInFlac": "Scarica musica in qualità lossless e Hi-Res", "@setupDownloadInFlac": { "description": "App tagline in setup" }, @@ -842,6 +904,22 @@ "@duplicatesKeepBest": { "description": "Button that deletes all but the highest-quality copy in a duplicate group" }, + "duplicatesKeepBestAll": "Mantieni la versione migliore", + "@duplicatesKeepBestAll": { + "description": "Button that keeps the highest-quality copy in every duplicate group and deletes the rest" + }, + "duplicatesKeepBestAllMessage": "Keep the best copy of {groupCount} {groupCount, plural, =1{track} other{tracks}} and delete {count} lower-quality {count, plural, =1{copy} other{copies}}?\n\nThe deleted files will be removed from storage.", + "@duplicatesKeepBestAllMessage": { + "description": "Confirmation message for keeping the best copy across every duplicate group", + "placeholders": { + "count": { + "type": "int" + }, + "groupCount": { + "type": "int" + } + } + }, "duplicatesKeepBestMessage": "Eliminare {count} copie con qualità minore di \"{trackName}\"?", "@duplicatesKeepBestMessage": { "description": "Confirmation message for the keep-best action", @@ -1155,7 +1233,7 @@ "@folderOrganizationByPlaylist": { "description": "Folder option - playlist folders" }, - "folderOrganizationByPlaylistSubtitle": "Separate folder for each playlist", + "folderOrganizationByPlaylistSubtitle": "Cartella separata per ogni playlist", "@folderOrganizationByPlaylistSubtitle": { "description": "Subtitle for playlist folder option" }, @@ -1167,7 +1245,7 @@ "@folderOrganizationByAlbum": { "description": "Folder option - album folders" }, - "folderOrganizationByArtistAlbum": "Artist/Album", + "folderOrganizationByArtistAlbum": "Artista/Album", "@folderOrganizationByArtistAlbum": { "description": "Folder option - nested folders" }, @@ -1179,11 +1257,11 @@ "@folderOrganizationNoneSubtitle": { "description": "Subtitle for no organization option" }, - "folderOrganizationByArtistSubtitle": "Separate folder for each artist", + "folderOrganizationByArtistSubtitle": "Cartella separata per ogni artista", "@folderOrganizationByArtistSubtitle": { "description": "Subtitle for artist folder option" }, - "folderOrganizationByAlbumSubtitle": "Separate folder for each album", + "folderOrganizationByAlbumSubtitle": "Cartella separata per ogni album", "@folderOrganizationByAlbumSubtitle": { "description": "Subtitle for album folder option" }, @@ -1191,7 +1269,7 @@ "@folderOrganizationByArtistAlbumSubtitle": { "description": "Subtitle for nested folder option" }, - "updateAvailable": "Update Available", + "updateAvailable": "Aggiornamento disponibile", "@updateAvailable": { "description": "Update dialog title" }, @@ -1244,7 +1322,7 @@ "@updateWhatsNew": { "description": "Changelog section title" }, - "updateDownloadInstall": "Download & Install", + "updateDownloadInstall": "Scarica e installa", "@updateDownloadInstall": { "description": "Update button - download and install" }, @@ -1300,27 +1378,27 @@ "@logSearchHint": { "description": "Log search placeholder" }, - "logFilterLevel": "Level", + "logFilterLevel": "Livello", "@logFilterLevel": { "description": "Filter by log level" }, - "logFilterSection": "Filter", + "logFilterSection": "Filtro", "@logFilterSection": { "description": "Filter section title" }, - "logShareLogs": "Share logs", + "logShareLogs": "Condividi i log", "@logShareLogs": { "description": "Share button tooltip" }, - "logClearLogs": "Clear logs", + "logClearLogs": "Cancella i log", "@logClearLogs": { "description": "Clear button tooltip" }, - "logClearLogsTitle": "Clear Logs", + "logClearLogsTitle": "Cancella i log", "@logClearLogsTitle": { "description": "Clear logs dialog title" }, - "logClearLogsMessage": "Are you sure you want to clear all logs?", + "logClearLogsMessage": "Sei sicuro di voler cancellare tutti i log?", "@logClearLogsMessage": { "description": "Clear logs confirmation message" }, @@ -1560,10 +1638,26 @@ "@trackDuration": { "description": "Metadata label - track length" }, - "trackAudioQuality": "Audio quality", + "trackAudioQuality": "Qualità audio", "@trackAudioQuality": { "description": "Metadata label - audio quality" }, + "trackReplayGainTrackGain": "ReplayGain Track Gain", + "@trackReplayGainTrackGain": { + "description": "Metadata label - ReplayGain track gain" + }, + "trackReplayGainTrackPeak": "ReplayGain Track Peak", + "@trackReplayGainTrackPeak": { + "description": "Metadata label - ReplayGain track peak" + }, + "trackReplayGainAlbumGain": "ReplayGain Album Gain", + "@trackReplayGainAlbumGain": { + "description": "Metadata label - ReplayGain album gain" + }, + "trackReplayGainAlbumPeak": "ReplayGain Album Peak", + "@trackReplayGainAlbumPeak": { + "description": "Metadata label - ReplayGain album peak" + }, "libraryQualityLabelFileFormat": "File format", "@libraryQualityLabelFileFormat": { "description": "Library audio quality label mode that shows the detected file format" @@ -3176,6 +3270,10 @@ "@trackReEnrichOnlineSubtitle": { "description": "Subtitle for re-enrich metadata action for local items" }, + "trackReEnrichBatchSubtitle": "Choose an online or manual update, then review every change before writing", + "@trackReEnrichBatchSubtitle": { + "description": "Subtitle for batch metadata update choices" + }, "trackReEnrichFieldCover": "Cover Art", "@trackReEnrichFieldCover": { "description": "Checkbox label for cover art field in re-enrich" @@ -3228,6 +3326,22 @@ "@trackReEnrichModeReplaceSubtitle": { "description": "Explanation for the selected-tag batch metadata mode" }, + "trackReEnrichModeManual": "Set common values", + "@trackReEnrichModeManual": { + "description": "Batch metadata mode that applies shared values to every selected track" + }, + "trackReEnrichModeManualSubtitle": "Apply the same values to every selected track", + "@trackReEnrichModeManualSubtitle": { + "description": "Explanation for the manual shared-value batch metadata mode" + }, + "trackReEnrichManualFieldsTitle": "Values to apply", + "@trackReEnrichManualFieldsTitle": { + "description": "Heading above manual batch metadata inputs" + }, + "trackReEnrichManualHint": "Leave a field empty to keep its current value. Track titles, numbers, and ISRCs stay unchanged.", + "@trackReEnrichManualHint": { + "description": "Safety explanation for manual batch metadata inputs" + }, "trackReEnrichFieldsTitle": "Tags to update", "@trackReEnrichFieldsTitle": { "description": "Heading above batch re-enrich field checkboxes" @@ -3298,7 +3412,15 @@ "@trackReEnrichSearching": { "description": "Snackbar while searching metadata from internet for local items" }, + "trackReEnrichPreparing": "Preparing metadata changes...", + "@trackReEnrichPreparing": { + "description": "Progress message while preparing manual batch metadata changes" + }, "trackReEnrichSuccess": "Metadata re-enriched successfully", + "trackReEnrichMetadataSaved": "Metadata saved", + "trackReEnrichLyricsUpdated": "Lyrics updated", + "trackReEnrichLyricsPreserved": "No new lyrics found; existing lyrics kept", + "trackReEnrichLyricsDisabled": "Lyrics not updated: lyric downloading is disabled in Settings", "@trackReEnrichSuccess": { "description": "Snackbar after successful re-enrichment" }, @@ -3889,7 +4011,7 @@ "@lyricsProviderAppleMusicDesc": { "description": "Description for Apple Music provider" }, - "lyricsProviderQqMusicDesc": "QQ Music (good for Chinese songs, via proxy)", + "lyricsProviderQqMusicDesc": "QQ Music (good for Chinese songs, direct API)", "@lyricsProviderQqMusicDesc": { "description": "Description for QQ Music provider" }, @@ -4001,6 +4123,14 @@ "@backupContentsTitle": { "description": "Header above the list summarizing what the backup contains" }, + "backupSettingsOnly": "Settings only", + "backupSelectHistory": "Download history", + "backupSelectCollections": "Library collections", + "backupSelectCollectionsDescription": "Liked tracks, wishlist, favorite artists, playlists and playlist covers.", + "backupSelectExtensions": "Extensions and their settings", + "backupSelectedExportDescription": "Save the selected categories to a backup file. Audio files are not included.", + "backupSelectAtLeastOne": "Select at least one category to create a backup.", + "backupSelectedRestoreMessage": "Only the categories listed below will be restored. Categories not included in this backup will stay unchanged. Restoring can replace existing data and cannot be undone.", "backupContentsSettings": "App settings", "@backupContentsSettings": { "description": "Backup contents row label for settings" @@ -4164,6 +4294,10 @@ "@downloadLocationSubtitle": { "description": "Subtitle shown in the download location picker sheet" }, + "storageAutomaticFolder": "Automatic folder", + "storageAutomaticDownloadFolder": "Uses Download/SpotiFLAC when writable, otherwise app storage", + "storageSafRecommended": "Choose folder (Recommended)", + "storageDownloadFolderHint": "In the Android folder picker, open Download and select SpotiFLAC. If it does not exist, create it using New folder, then tap Use this folder to grant access.", "storageModeAppFolder": "App Folder (Recommended)", "@storageModeAppFolder": { "description": "Storage mode option - app-managed folder" @@ -6172,6 +6306,45 @@ "@nowPlayingDetails": { "description": "Menu item and section title for track metadata details" }, + "nowPlayingSleepTimer": "Sleep timer", + "@nowPlayingSleepTimer": { + "description": "Menu item and sheet title for the playback sleep timer" + }, + "nowPlayingSleepTimerActive": "Ends at {time}", + "@nowPlayingSleepTimerActive": { + "description": "Active sleep timer deadline shown in the player menu", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "nowPlayingSleepTimerMinutes": "{minutes, plural, =1{1 minute} other{{minutes} minutes}}", + "@nowPlayingSleepTimerMinutes": { + "description": "Duration choice for the playback sleep timer", + "placeholders": { + "minutes": { + "type": "int" + } + } + }, + "nowPlayingSleepTimerOff": "Turn off sleep timer", + "@nowPlayingSleepTimerOff": { + "description": "Action to cancel the active playback sleep timer" + }, + "nowPlayingSleepTimerSet": "Sleep timer set for {duration}", + "@nowPlayingSleepTimerSet": { + "description": "Confirmation after setting the playback sleep timer", + "placeholders": { + "duration": { + "type": "String" + } + } + }, + "nowPlayingSleepTimerCancelled": "Sleep timer turned off", + "@nowPlayingSleepTimerCancelled": { + "description": "Confirmation after cancelling the playback sleep timer" + }, "nowPlayingOpenInExternalPlayer": "Open in external player", "@nowPlayingOpenInExternalPlayer": { "description": "Menu item to open the current track in an external player" @@ -6514,6 +6687,15 @@ "@extensionVerificationBrowserInApp": { "description": "Chip label for in-app browser verification mode" }, + "extensionVerificationUnavailable": "No verification page is available for {extension}. Retry the download to request a new challenge.", + "@extensionVerificationUnavailable": { + "description": "Shown when the app cannot retrieve a pending verification challenge", + "placeholders": { + "extension": { + "type": "String" + } + } + }, "extensionVerificationHelpTitleManual": "Open verification manually", "@extensionVerificationHelpTitleManual": { "description": "Dialog title when automatic browser launch for verification fails" @@ -6603,6 +6785,9 @@ "@metadataCopyField": { "description": "Metadata menu action that copies the selected key and value" }, + "mornyeShowTabs": "Show tabs", + "mornyeSearch": "Search", + "mornyeContinuePlaying": "Continue Playing", "metadataCopyAll": "Copy all metadata", "@metadataCopyAll": { "description": "Metadata menu action that copies every visible key and value" @@ -6615,6 +6800,28 @@ "@optionsEmbeddedCoverSizeDescription": { "description": "Description shown in the embedded cover size picker" }, + "mornyeFavorite": "Favorite", + "mornyeGoToArtist": "Go to Artist", + "@mornyeFavorite": { + "description": "Compact context menu action that adds a track to Loved" + }, + "mornyeFavorited": "Favorited", + "@mornyeFavorited": { + "description": "Selected state of the compact favorite action" + }, + "autoMixDescription": "Blend songs with beat matching and pitch-preserving tempo adjustment. Uses crossfade when beats cannot be matched.", + "autoMixOn": "AutoMix on", + "autoMixOff": "AutoMix off", + "profileTitle": "Profile", + "profileSetUp": "Set up your profile", + "profileEdit": "Edit name and photo", + "backupIncludesProfile": "Includes your profile name and photo", + "profileName": "Name", + "profileNameHint": "Your name", + "profileChangePhoto": "Choose photo", + "profileRemovePhoto": "Remove photo", + "profilePhotoError": "Choose a valid image smaller than 20 MB.", + "profileSaveError": "Could not save your profile. Please try again.", "optionsEmbeddedCoverSizeOriginal": "Original resolution", "@optionsEmbeddedCoverSizeOriginal": { "description": "Option that preserves the provider artwork at its original resolution" diff --git a/lib/l10n/arb/app_ja.arb b/lib/l10n/arb/app_ja.arb index 1c99c141..6c9e1873 100644 --- a/lib/l10n/arb/app_ja.arb +++ b/lib/l10n/arb/app_ja.arb @@ -1,78 +1,278 @@ { + "upgradeIntroWelcome": "Welcome to\nSpotiFLAC-Mobile 5.0", + "upgradeIntroThemeTitle": "Make it\nyour own.", + "upgradeIntroThemeBody": "Choose a look. Your choice applies immediately, and you can change it later in Appearance.", + "upgradeIntroThemeMaterialBody": "The familiar layout, with Material controls and your accent color.", + "upgradeIntroThemeMornyeBody": "Glass navigation, a redesigned Library and an immersive player.", + "upgradeIntroRustTitle": "A new engine.\nBuilt with Rust.", + "upgradeIntroRustBody": "In 5.0, the app’s backend has moved from Go to Rust. It is the engine working behind the screens you use every day.", + "upgradeIntroRustEngineTitle": "Working behind the scenes", + "upgradeIntroRustEngineBody": "Rust handles downloads, audio metadata, library scanning and the extension runtime on Android and iOS.", + "upgradeIntroRustMemoryTitle": "More careful with memory", + "upgradeIntroRustMemoryBody": "Reused buffers and fewer copies reduce temporary allocations when processing artwork and extension data.", + "upgradeIntroRustKeepTitle": "Keep your music", + "upgradeIntroRustKeepBody": "No need to download your collection again. Your saved music and settings stay in place, with no new setup required.", + "upgradeIntroWelcomeBody": "A quick look at what has changed, and where to find it.", + "upgradeIntroMornyeBody": "A new look for your player, lyrics and navigation.", + "upgradeIntroLibrarySummary": "Browse your music by playlist, artist or album.", + "upgradeIntroRepoSummary": "Choose your music sources and providers through extensions.", + "upgradeIntroLibraryTitle": "Get to know\nyour Library.", + "upgradeIntroLibraryBody": "In Mornye, browse by category or find your albums in Recently Added.", + "upgradeIntroDownloadsBody": "Pause and retry from Downloads at the top right. Finished music moves to Recently Added.", + "upgradeIntroSearchBody": "Search saved music here. The separate Search tab looks through your extensions.", + "upgradeIntroPlayerTitle": "Set up\nyour player.", + "upgradeIntroPlayerBody": "You can change your theme and playback options at any time. Here is where to find them.", + "upgradeIntroAppearanceBody": "Change themes in Settings → Appearance. In Mornye, scroll down for compact navigation; scroll up to expand it.", + "upgradeIntroAutoMixBody": "Match tempo and beats between tracks. Enable it in Settings → Local Library → Playback. Off by default.", + "upgradeIntroSettingsBody": "In Mornye, tap your profile on Home to open Settings and edit your name and photo.", + "upgradeIntroSkip": "Skip", + "upgradeIntroContinue": "Continue", + "upgradeIntroDone": "Start listening", + "upgradeIntroReplay": "What’s new in 5.0", + "cacheMotionArtwork": "Offline motion covers", + "cacheMotionArtworkDesc": "Album videos saved with downloads. Removing them keeps your music files and static covers.", + "nowPlayingVolume": "Volume", + "@nowPlayingVolume": { + "description": "System volume control label in the Mornye player" + }, + "appearanceStyle": "App Style", + "@appearanceStyle": { + "description": "Appearance section for choosing the app visual style" + }, + "discordRichPresence": "Discord Rich Presence", + "discordPresenceDescription": "Share the track playing in the built-in player on Discord. Requires Discord to be installed and signed in.", + "discordPresenceMissing": "Install Discord and sign in, then turn this setting off and on again.", + "discordPresenceUnavailable": "Discord Rich Presence is unavailable in this build or on this device.", "@@locale": "ja", "@@last_modified": "2026-04-28", - "libraryEnableLocalLibrarySubtitle": "Scan and track your existing music", - "@libraryEnableLocalLibrarySubtitle": { - "description": "Subtitle for enable toggle" + "appName": "SpotiFLAC Mobile", + "@appName": { + "description": "App name - DO NOT TRANSLATE" }, - "@audioAnalysisCodec": { - "description": "Audio codec metric label" + "navHome": "ホーム", + "@navHome": { + "description": "Bottom navigation - Home tab" }, - "extensionUtilityFunctions": "Utility Functions", - "@extensionUtilityFunctions": { - "description": "Capability label for utility-only extensions" + "navLibrary": "ライブラリ", + "@navLibrary": { + "description": "Bottom navigation - Library tab" }, - "logClearLogsMessage": "すべてのログを消去してもよろしいですか?", - "@logClearLogsMessage": { - "description": "Clear logs confirmation message" + "navSettings": "設定", + "@navSettings": { + "description": "Bottom navigation - Settings tab" }, - "@storeClearFilters": { - "description": "Button to clear all filters" + "navStore": "Repo", + "@navStore": { + "description": "Bottom navigation - Extension repo tab" }, - "cacheCleanupUnused": "未使用のデータを削除", - "@cacheCleanupUnused": { - "description": "Action title for cleaning unused entries" + "homeTitle": "ホーム", + "@homeTitle": { + "description": "Home screen title" }, - "trackConvertDitherNone": "None", - "@trackConvertDitherNone": { - "description": "Lossless conversion dither option with no dithering applied" + "homeSubtitle": "Paste a supported URL or search by name", + "@homeSubtitle": { + "description": "Subtitle shown below search box" }, - "libraryTracksUnit": "{count, plural, =1{track} other{tracks}}", - "@libraryTracksUnit": { - "description": "Unit label for tracks count (without the number itself)", + "homeEmptyTitle": "No search providers yet", + "@homeEmptyTitle": { + "description": "Title shown on home when no providers are available yet" + }, + "homeEmptySubtitle": "Install an extension to continue.", + "@homeEmptySubtitle": { + "description": "Subtitle shown on home when no providers are available yet" + }, + "homeSupports": "サポート: トラック、アルバム、プレイリスト、アーティスト、URL", + "@homeSupports": { + "description": "Info text about supported URL types" + }, + "homeRecent": "最近", + "@homeRecent": { + "description": "Section header for recent searches" + }, + "historyFilterAll": "すべて", + "@historyFilterAll": { + "description": "Filter chip - show all items" + }, + "historyFilterAlbums": "アルバム", + "@historyFilterAlbums": { + "description": "Filter chip - show albums only" + }, + "historyFilterSingles": "シングル", + "@historyFilterSingles": { + "description": "Filter chip - show singles only" + }, + "libraryRecentlyAdded": "Recently Added", + "libraryDownloads": "Downloads", + "libraryNoActiveDownloads": "No active downloads", + "librarySearchHint": "Search your library", + "libraryEmptyCollection": "Your music will appear here", + "historySearchHint": "検索履歴...", + "@historySearchHint": { + "description": "Search bar placeholder in history" + }, + "settingsTitle": "設定", + "@settingsTitle": { + "description": "Settings screen title" + }, + "settingsDownload": "ダウンロード", + "@settingsDownload": { + "description": "Settings section - download options" + }, + "settingsAppearance": "外観", + "@settingsAppearance": { + "description": "Settings section - visual customization" + }, + "settingsExtensions": "拡張", + "@settingsExtensions": { + "description": "Settings section - extension management" + }, + "settingsAbout": "アプリについて", + "@settingsAbout": { + "description": "Settings section - app info" + }, + "downloadTitle": "ダウンロード", + "@downloadTitle": { + "description": "Download settings page title" + }, + "downloadAskQualitySubtitle": "Show quality picker for each download", + "@downloadAskQualitySubtitle": { + "description": "Subtitle for ask quality toggle" + }, + "downloadFilenameFormat": "ファイル名の形式", + "@downloadFilenameFormat": { + "description": "Setting for output filename pattern" + }, + "downloadSingleFilenameFormat": "Single Filename Format", + "@downloadSingleFilenameFormat": { + "description": "Setting for output filename pattern for singles/EPs" + }, + "downloadSingleFilenameFormatDescription": "Filename pattern for singles and EPs. Uses the same tags as the album format.", + "@downloadSingleFilenameFormatDescription": { + "description": "Subtitle description for single filename format setting" + }, + "downloadFolderOrganization": "フォルダ構成", + "@downloadFolderOrganization": { + "description": "Title of the folder organization picker bottom sheet" + }, + "appearanceTitle": "外観", + "@appearanceTitle": { + "description": "Appearance settings page title" + }, + "appearanceThemeSystem": "システム", + "@appearanceThemeSystem": { + "description": "Follow system theme" + }, + "appearanceThemeLight": "ライト", + "@appearanceThemeLight": { + "description": "Light theme" + }, + "appearanceThemeDark": "ダーク", + "@appearanceThemeDark": { + "description": "Dark theme" + }, + "appearanceDynamicColor": "ダイナミックカラー", + "@appearanceDynamicColor": { + "description": "Material You dynamic colors" + }, + "appearanceDynamicColorSubtitle": "壁紙の色を使用する", + "@appearanceDynamicColorSubtitle": { + "description": "Subtitle for dynamic color" + }, + "appearanceHistoryView": "履歴の表示", + "@appearanceHistoryView": { + "description": "Layout style for history" + }, + "appearanceHistoryViewList": "リスト", + "@appearanceHistoryViewList": { + "description": "List layout option" + }, + "appearanceHistoryViewGrid": "グリッド", + "@appearanceHistoryViewGrid": { + "description": "Grid layout option" + }, + "optionsPrimaryProvider": "プライマリーのプロバイダー", + "@optionsPrimaryProvider": { + "description": "Main search provider setting" + }, + "optionsPrimaryProviderSubtitle": "Service used for searching by track or album name", + "@optionsPrimaryProviderSubtitle": { + "description": "Subtitle for primary provider" + }, + "optionsUsingExtension": "拡張の使用: {extensionName}", + "@optionsUsingExtension": { + "description": "Shows active extension name", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "optionsDefaultSearchTab": "Default Search Tab", + "@optionsDefaultSearchTab": { + "description": "Title for the preferred default search tab setting" + }, + "optionsDefaultSearchTabSubtitle": "Choose which tab opens first for new search results.", + "@optionsDefaultSearchTabSubtitle": { + "description": "Subtitle for the preferred default search tab setting" + }, + "optionsAutoFallback": "Auto Fallback", + "@optionsAutoFallback": { + "description": "Auto-retry with other services" + }, + "optionsAutoFallbackSubtitle": "Try other services if download fails", + "@optionsAutoFallbackSubtitle": { + "description": "Subtitle for auto fallback" + }, + "optionsEmbedLyrics": "歌詞を埋め込む", + "@optionsEmbedLyrics": { + "description": "Embed lyrics in audio files" + }, + "optionsEmbedLyricsSubtitle": "Save synced lyrics alongside your downloaded tracks", + "@optionsEmbedLyricsSubtitle": { + "description": "Subtitle for embed lyrics" + }, + "optionsReplayGain": "ReplayGain", + "@optionsReplayGain": { + "description": "Title for ReplayGain setting toggle" + }, + "optionsReplayGainSubtitleOn": "Scan loudness and embed ReplayGain tags (EBU R128)", + "@optionsReplayGainSubtitleOn": { + "description": "Subtitle when ReplayGain is enabled" + }, + "optionsReplayGainSubtitleOff": "Disabled: no loudness normalization tags", + "@optionsReplayGainSubtitleOff": { + "description": "Subtitle when ReplayGain is disabled" + }, + "trackReplayGain": "Rescan ReplayGain", + "@trackReplayGain": { + "description": "Three-dot menu option to scan loudness and write ReplayGain tags" + }, + "trackReplayGainScanning": "Analyzing loudness...", + "@trackReplayGainScanning": { + "description": "Snackbar/progress message while scanning ReplayGain for a single track" + }, + "trackReplayGainSuccess": "ReplayGain tags added", + "@trackReplayGainSuccess": { + "description": "Snackbar message after ReplayGain tags written for a single track" + }, + "trackReplayGainFailed": "Failed to add ReplayGain tags", + "@trackReplayGainFailed": { + "description": "Snackbar message when ReplayGain scan/write fails" + }, + "selectionReplayGainCount": "ReplayGain ({count})", + "@selectionReplayGainCount": { + "description": "Batch selection action button label for ReplayGain", "placeholders": { "count": { "type": "int" } } }, - "folderOrganizationNone": "構成がありません", - "@folderOrganizationNone": { - "description": "Folder option - flat structure" - }, - "@storeRepoUrlHint": { - "description": "Hint/placeholder for the repository URL input field" - }, - "@trackConvertConfirmTitle": { - "description": "Confirmation dialog title" - }, - "@extensionPatternsCount": { - "description": "URL patterns count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "audioAnalysisContainer": "Container", - "@audioAnalysisContainer": { - "description": "Audio container metric label" - }, - "libraryAutoScanOff": "Off", - "@libraryAutoScanOff": { - "description": "Auto scan disabled" - }, - "shareSheetLinkCopied": "{service} link copied", - "@shareSheetLinkCopied": { - "description": "Snackbar after copying a cross-service link", - "placeholders": { - "service": {} - } - }, - "providerPriorityFallbackExtensionsDescription": "Choose which installed download extensions can be used during automatic fallback.", - "@providerPriorityFallbackExtensionsDescription": { - "description": "Section description for extension fallback selection" + "replayGainBatchConfirmTitle": "Add ReplayGain", + "@replayGainBatchConfirmTitle": { + "description": "Title of the batch ReplayGain confirmation dialog" }, + "replayGainBatchConfirmMessage": "Analyze loudness and write ReplayGain tags to {count} track(s)?", "@replayGainBatchConfirmMessage": { "description": "Message of the batch ReplayGain confirmation dialog", "placeholders": { @@ -81,75 +281,12 @@ } } }, - "@extensionsHomeFeedUse": { - "description": "Extensions page - subtitle for a specific extension home feed option", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "selectionShareCount": "{count} {count, plural, =1{個のトラック} other{個のトラック}}を共有", - "@selectionShareCount": { - "description": "Share button text with count in selection mode", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@storeExtensionsCount": { - "description": "Store extension result count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@logSearchHint": { - "description": "Log search placeholder" - }, - "@audioAnalysisSamples": { - "description": "Total samples metric label" - }, - "trackCoverReplace": "Replace Cover", - "@trackCoverReplace": { - "description": "Button label for replacing selected cover art" - }, - "@discographyAddedToQueue": { - "description": "Snackbar - tracks added from discography", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadAppleElrcWordSyncEnabled": "Raw word-by-word timestamps preserved", - "@downloadAppleElrcWordSyncEnabled": { - "description": "Subtitle when Apple Music eLRC word sync is enabled" - }, - "@nowPlayingDetails": { - "description": "Menu item and section title for track metadata details" - }, - "@trackGenre": { - "description": "Metadata label - music genre" - }, - "recentTypeSong": "曲", - "@recentTypeSong": { - "description": "Recent access item type - song/track" - }, - "logShareLogs": "ログを共有", - "@logShareLogs": { - "description": "Share button tooltip" - }, - "@storeFilterLyrics": { - "description": "Repo filter - lyrics providers" - }, - "extensionsInstallButton": "拡張をインストール", - "@extensionsInstallButton": { - "description": "Button to install extension from file" + "replayGainBatchAnalyzing": "Analyzing ReplayGain...", + "@replayGainBatchAnalyzing": { + "description": "Progress dialog title while batch scanning ReplayGain" }, "replayGainBatchSuccess": "ReplayGain added to {success} of {total} tracks", + "replayGainUnsupportedDecoder": "Some tracks could not be analyzed because their audio codec is not supported by the ReplayGain decoder. Their files were not changed.", "@replayGainBatchSuccess": { "description": "Snackbar after batch ReplayGain completes", "placeholders": { @@ -161,548 +298,536 @@ } } }, - "nowPlayingMinimize": "Minimize", - "@nowPlayingMinimize": { - "description": "Tooltip for minimizing the now playing screen" + "optionsArtistTagMode": "Artist Tag Mode", + "@optionsArtistTagMode": { + "description": "Setting title for how artist metadata is written into files" }, - "logIssueNetworkErrorSuggestion": "Check your internet connection", - "@logIssueNetworkErrorSuggestion": { - "description": "Diagnostic badge suggestion for generic network errors" + "optionsArtistTagModeDescription": "Choose how multiple artists are written into embedded tags.", + "@optionsArtistTagModeDescription": { + "description": "Bottom-sheet description for artist tag mode setting" }, - "extensionsNoExtensions": "拡張はインストールされていません", - "@extensionsNoExtensions": { - "description": "Empty state - no extensions" + "optionsArtistTagModeJoined": "Single joined value", + "@optionsArtistTagModeJoined": { + "description": "Artist tag mode option that joins multiple artists into one value" }, - "@cacheRefresh": { - "description": "Tooltip for refresh button on cache management page" + "optionsArtistTagModeJoinedSubtitle": "Write one ARTIST value like \"Artist A, Artist B\" for maximum player compatibility.", + "@optionsArtistTagModeJoinedSubtitle": { + "description": "Subtitle for joined artist tag mode" }, - "@snackbarHistoryCleared": { - "description": "Snackbar - history deleted" + "optionsArtistTagModeSplitVorbis": "Split tags for FLAC/Opus", + "@optionsArtistTagModeSplitVorbis": { + "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" }, - "cueSplitFailed": "CUE split failed", - "@cueSplitFailed": { - "description": "Snackbar when CUE split fails" - }, - "trackConvertLosslessSuffix": "Lossless", - "@trackConvertLosslessSuffix": { - "description": "Suffix used in converted lossless quality labels" - }, - "homeSubtitle": "Paste a supported URL or search by name", - "@homeSubtitle": { - "description": "Subtitle shown below search box" - }, - "selectionBatchConvertConfirmMessageLossless": "Convert {count} {count, plural, =1{track} other{tracks}} to {format}? (Lossless — no quality loss)\n\nOriginal files will be deleted after conversion.", - "@selectionBatchConvertConfirmMessageLossless": { - "description": "Confirmation dialog message for lossless batch conversion", - "placeholders": { - "count": { - "type": "int" - }, - "format": { - "type": "String" - } - } - }, - "@extensionVerificationHelpMessageManual": { - "description": "Dialog message when automatic browser launch for verification fails" - }, - "queueRateLimitMessage": "This track may still be available. Wait a few minutes, reduce parallel downloads, then retry.", - "@queueRateLimitMessage": { - "description": "Explanation shown on a failed queue item when the download service rate limits requests" - }, - "searchSortDateOldest": "Release Date (Oldest)", - "@searchSortDateOldest": { - "description": "Sort option - oldest release first" - }, - "nowPlayingShuffleOn": "Shuffle on", - "@nowPlayingShuffleOn": { - "description": "Tooltip when shuffle mode is enabled" - }, - "sectionColor": "カラー", - "@sectionColor": { - "description": "Settings section header" - }, - "@providerPriorityFallbackExtensionsHint": { - "description": "Hint below the extension fallback selection list" - }, - "cacheCoverImage": "カバー画像のキャッシュ", - "@cacheCoverImage": { - "description": "Cache item title for persistent cover images" - }, - "@navSettings": { - "description": "Bottom navigation - Settings tab" - }, - "@trackCoverReplaceNotice": { - "description": "Notice shown when a new cover has been selected but not saved yet" - }, - "cueSplitConfirmTitle": "Split CUE Album", - "@cueSplitConfirmTitle": { - "description": "CUE split confirmation dialog title" - }, - "@trackDeleteConfirmMessage": { - "description": "Delete confirmation message" - }, - "cacheClearSuccess": "消去済み: {target}", - "@cacheClearSuccess": { - "description": "Snackbar after clearing selected cache", - "placeholders": { - "target": { - "type": "String" - } - } - }, - "editMetadataFieldCover": "Cover Art", - "@editMetadataFieldCover": { - "description": "Chip label for cover art field in auto-fill selector" - }, - "snackbarSelectExtFile": ".spotiflac-ext ファイルを選択してください", - "@snackbarSelectExtFile": { - "description": "Snackbar - wrong file type selected" - }, - "libraryFilterFormat": "形式", - "@libraryFilterFormat": { - "description": "Filter section - file format" - }, - "@downloadLossyAac": { - "description": "Lossy format option - AAC in M4A container at 320kbps" - }, - "@setupNext": { - "description": "Next button text" - }, - "@releaseTypeSingle": { - "description": "Badge label for single releases" - }, - "@optionsDefaultSearchTab": { - "description": "Title for the preferred default search tab setting" - }, - "trackConvertLosslessOutputWithCap": "Lossless output with {quality} cap", - "@trackConvertLosslessOutputWithCap": { - "description": "Hint shown when lossless conversion will cap bit depth or sample rate", - "placeholders": { - "quality": { - "type": "String" - } - } - }, - "bulkDownloadSelectPlaylists": "Select playlists to download", - "@bulkDownloadSelectPlaylists": { - "description": "Button label when no playlists are selected for download" - }, - "artistOptionAddToFavorites": "Add to Favorite Artists", - "@artistOptionAddToFavorites": { - "description": "Action label - add artist to favorite artists" - }, - "@timeJustNow": { - "description": "Relative time - less than a minute ago" - }, - "downloadLossyOpus256": "Opus 256kbps", - "@downloadLossyOpus256": { - "description": "Lossy format option - Opus 256kbps" - }, - "discographySinglesOnlySubtitle": "{count} tracks from {albumCount} singles", - "@discographySinglesOnlySubtitle": { - "description": "Subtitle showing singles tracks count", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } + "optionsArtistTagModeSplitVorbisSubtitle": "Write one artist tag per artist for FLAC and Opus; MP3 and M4A stay joined.", + "@optionsArtistTagModeSplitVorbisSubtitle": { + "description": "Subtitle for split Vorbis artist tag mode" }, "optionsExtensionStore": "Extension Repo", "@optionsExtensionStore": { "description": "Show/hide repo tab" }, - "libraryDownloadsHistoryExcluded": "{count} from Downloads history (excluded from list)", - "@libraryDownloadsHistoryExcluded": { - "description": "Library count note for downloaded history items excluded from the local list", - "placeholders": { - "count": { - "type": "int" - } - } + "optionsExtensionStoreSubtitle": "Show Repo tab in navigation", + "@optionsExtensionStoreSubtitle": { + "description": "Subtitle for extension repo toggle" }, - "@errorUrlFetchFailed": { - "description": "Error message - generic URL fetch failure" + "optionsCheckUpdates": "更新を確認", + "@optionsCheckUpdates": { + "description": "Auto update check toggle" }, - "@trackOptionAddToWishlist": { - "description": "Bottom sheet action label - add track to wishlist" + "optionsCheckUpdatesSubtitle": "Notify when new version is available", + "@optionsCheckUpdatesSubtitle": { + "description": "Subtitle for update check" }, - "discographySinglesOnly": "シングルと EP のみ", - "@discographySinglesOnly": { - "description": "Option - download only singles" + "optionsUpdateChannel": "更新チャンネル", + "@optionsUpdateChannel": { + "description": "Stable vs preview releases" }, - "@downloadSongLinkRegionDesc": { - "description": "Description in SongLink region picker" + "optionsUpdateChannelStable": "安定版リリースのみ", + "@optionsUpdateChannelStable": { + "description": "Only stable updates" }, - "notifEmbeddingMetadata": "Embedding metadata...", - "@notifEmbeddingMetadata": { - "description": "Notification body while embedding metadata into a downloaded track" + "optionsUpdateChannelPreview": "プレビューリリースを入手", + "@optionsUpdateChannelPreview": { + "description": "Include beta/preview updates" }, - "@settingsLocalLibrarySubtitle": { - "description": "Subtitle for local library settings" + "optionsUpdateChannelWarning": "Preview may contain bugs or incomplete features", + "@optionsUpdateChannelWarning": { + "description": "Warning about preview channel" }, - "@downloadLocationSubtitle": { - "description": "Subtitle shown in the download location picker sheet" + "optionsClearHistory": "ダウンロード履歴を消去", + "@optionsClearHistory": { + "description": "Delete all download history" }, - "trackConvertOriginalQuality": "Original quality", - "@trackConvertOriginalQuality": { - "description": "Label when no bit depth or sample rate cap is applied during lossless conversion" + "optionsClearHistorySubtitle": "ダウンロード済みのすべてのトラックを履歴から削除", + "@optionsClearHistorySubtitle": { + "description": "Subtitle for clear history" }, - "nowPlayingTabLyrics": "Lyrics", - "@nowPlayingTabLyrics": { - "description": "Tab label for the lyrics view" + "optionsDetailedLogging": "詳細ログ", + "@optionsDetailedLogging": { + "description": "Enable verbose logs for debugging" }, - "selectionConvertCount": "Convert {count} {count, plural, =1{track} other{tracks}}", - "@selectionConvertCount": { - "description": "Convert button text with count in selection mode", - "placeholders": { - "count": { - "type": "int" - } - } + "optionsDetailedLoggingOn": "詳細なログを記録しています", + "@optionsDetailedLoggingOn": { + "description": "Status when logging enabled" }, - "@extensionsInstalledSection": { - "description": "Section header - installed extensions" + "optionsDetailedLoggingOff": "バグレポートを有効", + "@optionsDetailedLoggingOff": { + "description": "Status when logging disabled" }, - "@downloadNetworkCompatibilityModeDisabled": { - "description": "Subtitle when network compatibility mode is off" + "extensionsTitle": "拡張", + "@extensionsTitle": { + "description": "Extensions page title" }, - "nowPlayingShuffleLibrary": "Shuffle library", - "@nowPlayingShuffleLibrary": { - "description": "Button label to shuffle and play the entire local library" + "extensionsDisabled": "無効", + "@extensionsDisabled": { + "description": "Extension status - inactive" }, - "trackReEnrichFieldCover": "Cover Art", - "@trackReEnrichFieldCover": { - "description": "Checkbox label for cover art field in re-enrich" - }, - "tutorialExtensionsTip3": "Connect accounts when required and keep extensions up to date", - "@tutorialExtensionsTip3": { - "description": "Tutorial extensions tip 3" - }, - "@cacheCleanupUnusedDesc": { - "description": "Description of what cleanup unused data does" - }, - "a11yOpenAlbum": "Open album {albumName}", - "@a11yOpenAlbum": { - "description": "Accessibility label for opening an album", - "placeholders": { - "albumName": { - "type": "String" - } - } - }, - "@settingsLyrics": { - "description": "Settings menu item - lyrics settings" - }, - "nowPlayingQueueEmpty": "Queue is empty", - "@nowPlayingQueueEmpty": { - "description": "Empty state when the playback queue has no items" - }, - "@settingsDownload": { - "description": "Settings section - download options" - }, - "notifTracksDownloadedSuccess": "{count, plural, =1{1 track downloaded successfully} other{{count} tracks downloaded successfully}}", - "@notifTracksDownloadedSuccess": { - "description": "Notification body for queue complete - how many tracks were downloaded", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storeCategoryDownload": "Download", - "@storeCategoryDownload": { - "description": "Store extension category - download" - }, - "aboutTelegramChannel": "Telegram チャンネル", - "@aboutTelegramChannel": { - "description": "Link to Telegram channel" - }, - "@downloadedAlbumDiscHeader": { - "description": "Header for disc separator in multi-disc albums", - "placeholders": { - "discNumber": { - "type": "int", - "example": "1" - } - } - }, - "@recentEmpty": { - "description": "Empty state text for recent access list" - }, - "@backupRestoreConfirmMessage": { - "description": "Confirmation dialog message before restoring a backup" - }, - "@shareSheetCopyLink": { - "description": "Tooltip for copying a cross-service link" - }, - "regionCountryID": "Indonesia", - "@regionCountryID": { - "description": "Country name for SongLink region picker" - }, - "@libraryInLibrary": { - "description": "Badge shown on tracks that exist in local library" - }, - "extensionPostProcessingHooks": "ポストプロセスフック", - "@extensionPostProcessingHooks": { - "description": "Capability - post-processing" - }, - "@setupGrantPermission": { - "description": "Button to request permission" - }, - "storeFilterDownload": "ダウンロード", - "@storeFilterDownload": { - "description": "Repo filter - download providers" - }, - "@collectionAddToPlaylist": { - "description": "Action to add a track to user playlist" - }, - "@discographyFailedToFetch": { - "description": "Error - some albums failed to load" - }, - "@updateWhatsNew": { - "description": "Changelog section title" - }, - "@setupLanguageDescription": { - "description": "Description for the language selection step in setup" - }, - "dialogDeleteSelectedTitle": "選択済みを削除", - "@dialogDeleteSelectedTitle": { - "description": "Dialog title - delete selected items" - }, - "trackCoverPick": "Pick Cover", - "@trackCoverPick": { - "description": "Button label for selecting cover art" - }, - "@collectionCreatePlaylist": { - "description": "Action to create a new playlist" - }, - "selectionBatchConvertSuccess": "Converted {success} of {total} tracks to {format}", - "@selectionBatchConvertSuccess": { - "description": "Snackbar after batch conversion completes", - "placeholders": { - "success": { - "type": "int" - }, - "total": { - "type": "int" - }, - "format": { - "type": "String" - } - } - }, - "qualityHiResFlacMax": "ハイレゾ FLAC 最大", - "@qualityHiResFlacMax": { - "description": "Quality option - maximum resolution FLAC" - }, - "audioAnalysisStereo": "Stereo", - "@audioAnalysisStereo": { - "description": "Audio channel layout label - stereo" - }, - "backupExportButton": "Create backup file", - "@backupExportButton": { - "description": "Button to create and share a backup file" - }, - "settingsApp": "App", - "@settingsApp": { - "description": "Settings menu item - app settings" - }, - "clickableInformationUnavailable": "{type} information not available", - "@clickableInformationUnavailable": { - "description": "Snackbar shown when clickable metadata cannot open a destination", - "placeholders": { - "type": { - "type": "String" - } - } - }, - "@logFilterLevel": { - "description": "Filter by log level" - }, - "sectionTheme": "テーマ", - "@sectionTheme": { - "description": "Settings section header" - }, - "@extensionActionFailed": { - "description": "Fallback error when an extension action fails without details" - }, - "@downloadAppleElrcWordSync": { - "description": "Setting for preserving Apple Music word-by-word eLRC timestamps" - }, - "@extensionsNoCustomSearch": { - "description": "Empty state - no search providers" - }, - "@collectionPlaylistRemoveCover": { - "description": "Bottom sheet action to remove custom cover image from a playlist" - }, - "@tutorialWelcomeDesc": { - "description": "Tutorial welcome page description" - }, - "@tutorialSearchDesc": { - "description": "Tutorial search page description" - }, - "collectionAddedToWishlist": "\"{trackName}\" added to Wishlist", - "@collectionAddedToWishlist": { - "description": "Snackbar after adding track to wishlist", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "logAffectedDomains": "Affected: {domains}", - "@logAffectedDomains": { - "description": "Affected domains in log issue analysis", - "placeholders": { - "domains": { - "type": "String" - } - } - }, - "@folderOrganizationByArtistSubtitle": { - "description": "Subtitle for artist folder option" - }, - "errorNoTracksFound": "トラックがありません", - "@errorNoTracksFound": { - "description": "Error - search returned no results" - }, - "providerPriorityTitle": "プロバイダーの優先度", - "@providerPriorityTitle": { - "description": "Provider priority page title" - }, - "@notifUpdateReadyBody": { - "description": "Notification body when app update is ready to install", + "extensionsVersion": "バージョン {version}", + "@extensionsVersion": { + "description": "Extension version display", "placeholders": { "version": { "type": "String" } } }, - "@settingsExtensions": { - "description": "Settings section - extension management" + "extensionsUninstall": "アンインストール", + "@extensionsUninstall": { + "description": "Uninstall extension button" }, - "trackDeleteConfirmTitle": "デバイスから削除しますか?", - "@trackDeleteConfirmTitle": { - "description": "Delete confirmation title" + "storeTitle": "Extension Repo", + "@storeTitle": { + "description": "Repo screen title" }, - "@settingsDownloadNetwork": { - "description": "Setting for network type preference" + "storeSearch": "拡張を検索...", + "@storeSearch": { + "description": "Repo search placeholder" }, - "downloadProvidersNoneEnabled": "No providers enabled", - "@downloadProvidersNoneEnabled": { - "description": "Shown when no lyrics providers are active" + "storeInstall": "インストール", + "@storeInstall": { + "description": "Install extension button" }, - "@homeEmptySubtitle": { - "description": "Subtitle shown on home when no providers are available yet" + "storeInstalled": "インストール済み", + "@storeInstalled": { + "description": "Already installed badge" }, - "trackReEnrichFieldBasicTags": "Album, Album Artist", - "@trackReEnrichFieldBasicTags": { - "description": "Checkbox label for basic tags in re-enrich (title/artist are never overwritten)" + "storeUpdate": "更新", + "@storeUpdate": { + "description": "Update available button" }, - "@audioAnalysisSpectralCutoff": { - "description": "Estimated spectral cutoff metric label" + "aboutTitle": "アプリについて", + "@aboutTitle": { + "description": "About page title" }, - "@logClearLogsTitle": { - "description": "Clear logs dialog title" + "aboutContributors": "貢献者", + "@aboutContributors": { + "description": "Section for contributors" }, - "storageModeSafSubtitle": "Pick any folder, including SD card", - "@storageModeSafSubtitle": { - "description": "Subtitle for SAF storage mode" + "aboutMobileDeveloper": "モバイルバージョンの開発者", + "@aboutMobileDeveloper": { + "description": "Role description for mobile dev" }, - "@notifUpdateProgress": { - "description": "Notification body showing update download progress", + "aboutOriginalCreator": "オリジナルの SpotiFLAC の作者", + "@aboutOriginalCreator": { + "description": "Role description for original creator" + }, + "aboutLogoArtist": "美しいアプリロゴを作成した才能あるアーティストです!", + "@aboutLogoArtist": { + "description": "Role description for logo artist" + }, + "aboutTranslators": "翻訳者", + "@aboutTranslators": { + "description": "Section for translators" + }, + "aboutSpecialThanks": "スペシャルサンクス", + "@aboutSpecialThanks": { + "description": "Section for special thanks" + }, + "aboutLinks": "リンク", + "@aboutLinks": { + "description": "Section for external links" + }, + "aboutMobileSource": "モバイル版のソースコード", + "@aboutMobileSource": { + "description": "Link to mobile GitHub repo" + }, + "aboutPCSource": "PC 版のソースコード", + "@aboutPCSource": { + "description": "Link to PC GitHub repo" + }, + "aboutKeepAndroidOpen": "Keep Android Open", + "@aboutKeepAndroidOpen": { + "description": "Link to Keep Android Open campaign website" + }, + "aboutReportIssue": "問題を報告する", + "@aboutReportIssue": { + "description": "Link to report bugs" + }, + "aboutReportIssueSubtitle": "問題が発生した場合に報告してください", + "@aboutReportIssueSubtitle": { + "description": "Subtitle for report issue" + }, + "aboutFeatureRequest": "機能の要望", + "@aboutFeatureRequest": { + "description": "Link to suggest features" + }, + "aboutFeatureRequestSubtitle": "アプリの新機能を提案する", + "@aboutFeatureRequestSubtitle": { + "description": "Subtitle for feature request" + }, + "aboutTelegramChannel": "Telegram チャンネル", + "@aboutTelegramChannel": { + "description": "Link to Telegram channel" + }, + "aboutTelegramChannelSubtitle": "お知らせと更新", + "@aboutTelegramChannelSubtitle": { + "description": "Subtitle for Telegram channel" + }, + "aboutTelegramChat": "Telegram コミュニティ", + "@aboutTelegramChat": { + "description": "Link to Telegram chat group" + }, + "aboutTelegramChatSubtitle": "その他のユーザーとチャット", + "@aboutTelegramChatSubtitle": { + "description": "Subtitle for Telegram chat" + }, + "aboutSocial": "ソーシャル", + "@aboutSocial": { + "description": "Section for social links" + }, + "aboutApp": "アプリ", + "@aboutApp": { + "description": "Section for app info" + }, + "aboutVersion": "バージョン", + "@aboutVersion": { + "description": "Version info label" + }, + "aboutBinimumDesc": "The creator of QQDL & HiFi API. This project helped shape lossless download support.", + "@aboutBinimumDesc": { + "description": "Credit description for binimum" + }, + "aboutSachinsenalDesc": "The original HiFi project creator. A foundation for lossless-source integration.", + "@aboutSachinsenalDesc": { + "description": "Credit description for sachinsenal0x64" + }, + "aboutUnituneDesc": "Open-source music link resolver by Flaze, used for cross-platform fallback matching.", + "@aboutUnituneDesc": { + "description": "Credit for the UniTune resolver" + }, + "aboutMusicBrainzDesc": "Open music database maintained by MetaBrainz and its community, used for recording cross-references.", + "@aboutMusicBrainzDesc": { + "description": "Credit for the MusicBrainz database" + }, + "aboutSquiglyDesc": "Universal music link service by Liam Macmillan, used as a final cross-platform resolver fallback.", + "@aboutSquiglyDesc": { + "description": "Credit for the Squigly resolver" + }, + "aboutAppDescription": "Search music metadata, manage extensions, and organize your library.", + "@aboutAppDescription": { + "description": "App description in header card" + }, + "artistAlbums": "アルバム", + "@artistAlbums": { + "description": "Section header for artist albums" + }, + "artistSingles": "シングルと EP", + "@artistSingles": { + "description": "Section header for singles/EPs" + }, + "artistCompilations": "コンピレーション", + "@artistCompilations": { + "description": "Section header for compilations" + }, + "artistPopular": "人気", + "@artistPopular": { + "description": "Section header for popular/top tracks" + }, + "artistMonthlyListeners": "{count} 人の月間リスナー", + "@artistMonthlyListeners": { + "description": "Monthly listener count display", "placeholders": { - "received": { - "type": "String" - }, - "total": { - "type": "String" - }, - "percentage": { - "type": "int" + "count": { + "type": "String", + "description": "Formatted listener count" } } }, - "downloadUsePrimaryArtistOnlyEnabled": "Featured artists removed from folder name (e.g. Justin Bieber, Quavo → Justin Bieber)", - "@downloadUsePrimaryArtistOnlyEnabled": { - "description": "Subtitle when primary artist only is enabled" + "trackMetadataService": "サービス", + "@trackMetadataService": { + "description": "Metadata field - download service used" }, - "notifScanningLibrary": "Scanning local library", - "@notifScanningLibrary": { - "description": "Notification title while scanning local library" + "trackMetadataPlay": "再生", + "@trackMetadataPlay": { + "description": "Action button - play track" }, - "@metadataProvidersSubtitle": { - "description": "Subtitle for metadata provider priority item" + "trackMetadataShare": "共有", + "@trackMetadataShare": { + "description": "Action button - share track" + }, + "trackMetadataDelete": "削除", + "@trackMetadataDelete": { + "description": "Action button - delete track" + }, + "setupGrantPermission": "権限を許可", + "@setupGrantPermission": { + "description": "Button to request permission" + }, + "setupSkip": "今はスキップ", + "@setupSkip": { + "description": "Skip current step button" + }, + "setupStorageAccessRequired": "ストレージアクセスが必要です", + "@setupStorageAccessRequired": { + "description": "Title when storage access needed" + }, + "setupStorageAccessMessageAndroid11": "Android 11+ requires \"All files access\" permission to save files to your chosen download folder.", + "@setupStorageAccessMessageAndroid11": { + "description": "Android 11+ specific explanation" + }, + "setupOpenSettings": "設定を開く", + "@setupOpenSettings": { + "description": "Button to open system settings" + }, + "setupPermissionDeniedMessage": "Permission denied. Please grant all permissions to continue.", + "@setupPermissionDeniedMessage": { + "description": "Error when permission denied" + }, + "setupPermissionRequired": "{permissionType} の権限が必要です", + "@setupPermissionRequired": { + "description": "Generic permission required title", + "placeholders": { + "permissionType": { + "type": "String", + "description": "Type of permission (Storage/Notification)" + } + } + }, + "setupPermissionRequiredMessage": "最適な体験を得るには {permissionType} の権限が必要です。この権限は設定で後から変更できます。", + "@setupPermissionRequiredMessage": { + "description": "Generic permission required message", + "placeholders": { + "permissionType": { + "type": "String" + } + } + }, + "setupUseDefaultFolder": "デフォルトのフォルダを使用しますか?", + "@setupUseDefaultFolder": { + "description": "Dialog title for default folder" + }, + "setupNoFolderSelected": "No folder selected. Would you like to use the default Music folder?", + "@setupNoFolderSelected": { + "description": "Prompt when no folder selected" + }, + "setupUseDefault": "デフォルトを使用する", + "@setupUseDefault": { + "description": "Button to use default folder" + }, + "setupDownloadLocationTitle": "ダウンロード先", + "@setupDownloadLocationTitle": { + "description": "Download location dialog title" + }, + "setupDownloadLocationIosMessage": "On iOS, downloads are saved to the app's Documents folder. You can access them via the Files app.", + "@setupDownloadLocationIosMessage": { + "description": "iOS-specific folder info" + }, + "setupAppDocumentsFolder": "アプリのドキュメントフォルダ", + "@setupAppDocumentsFolder": { + "description": "iOS documents folder option" + }, + "setupAppDocumentsFolderSubtitle": "Recommended - accessible via Files app", + "@setupAppDocumentsFolderSubtitle": { + "description": "Subtitle for documents folder" + }, + "setupChooseFromFiles": "ファイルから選択", + "@setupChooseFromFiles": { + "description": "iOS file picker option" + }, + "setupChooseFromFilesSubtitle": "iCloud またはその他の場所を選択", + "@setupChooseFromFilesSubtitle": { + "description": "Subtitle for file picker" + }, + "setupIosEmptyFolderWarning": "iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.", + "@setupIosEmptyFolderWarning": { + "description": "iOS folder selection warning" + }, + "setupIcloudNotSupported": "iCloud Drive is not supported. Please use the app Documents folder.", + "@setupIcloudNotSupported": { + "description": "Error when user selects iCloud Drive on iOS" + }, + "setupDownloadInFlac": "Download music in lossless and Hi-Res quality", + "@setupDownloadInFlac": { + "description": "App tagline in setup" + }, + "setupStorageGranted": "ストレージの権限が許可されました!", + "@setupStorageGranted": { + "description": "Success message for storage permission" + }, + "setupStorageRequired": "ストレージの権限が必要です", + "@setupStorageRequired": { + "description": "Title when storage permission needed" + }, + "setupStorageDescription": "SpotiFLAC はダウンロードした音楽ファイルを保存するためにストレージの権限が必要です。", + "@setupStorageDescription": { + "description": "Explanation for storage permission" + }, + "setupNotificationGranted": "通知の権限が許可されました!", + "@setupNotificationGranted": { + "description": "Success message for notification permission" + }, + "setupNotificationEnable": "通知を有効化する", + "@setupNotificationEnable": { + "description": "Button to enable notifications" + }, + "setupFolderChoose": "ダウンロードフォルダを選択", + "@setupFolderChoose": { + "description": "Button to choose folder" + }, + "setupFolderDescription": "Select a folder where your downloaded music will be saved.", + "@setupFolderDescription": { + "description": "Explanation for folder selection" + }, + "setupSelectFolder": "フォルダを選択", + "@setupSelectFolder": { + "description": "Button to select folder" + }, + "setupEnableNotifications": "通知を有効化する", + "@setupEnableNotifications": { + "description": "Button to enable notifications" + }, + "setupNotificationBackgroundDescription": "Get notified about download progress and completion. This helps you track downloads when the app is in background.", + "@setupNotificationBackgroundDescription": { + "description": "Detailed notification explanation" + }, + "setupSkipForNow": "今はスキップ", + "@setupSkipForNow": { + "description": "Skip button text" + }, + "setupNext": "次へ", + "@setupNext": { + "description": "Next button text" }, "setupGetStarted": "Get Started", "@setupGetStarted": { "description": "Final setup button" }, - "libraryFilterQualityCD": "CD (16bit)", - "@libraryFilterQualityCD": { - "description": "Filter option - CD quality audio" + "setupAllowAccessToManageFiles": "Please enable \"Allow access to manage all files\" in the next screen.", + "@setupAllowAccessToManageFiles": { + "description": "Instruction for file access permission" }, - "sectionLayout": "レイアウト", - "@sectionLayout": { - "description": "Settings section header" + "setupLanguageTitle": "Choose Language", + "@setupLanguageTitle": { + "description": "Title for the language selection step in setup" }, - "@tooltipLoveAll": { - "description": "Tooltip for the Love All button on album/playlist screens" + "setupLanguageDescription": "Select your preferred language for the app. You can change this later in Settings.", + "@setupLanguageDescription": { + "description": "Description for the language selection step in setup" }, - "queueFinalizingDownload": "Finalizing download", - "@queueFinalizingDownload": { - "description": "Accessibility label for a queue item that is finalizing" + "setupLanguageSystemDefault": "System Default", + "@setupLanguageSystemDefault": { + "description": "Option to use the system language" }, - "trackConvertActionLabelLossy": "{sourceFormat} → {targetFormat} @ {bitrate}", - "@trackConvertActionLabelLossy": { - "description": "Convert button label for lossy conversion", + "dialogCancel": "キャンセル", + "@dialogCancel": { + "description": "Dialog button - cancel action" + }, + "dialogSave": "保存", + "@dialogSave": { + "description": "Dialog button - save changes" + }, + "dialogDelete": "削除", + "@dialogDelete": { + "description": "Dialog button - delete item" + }, + "dialogRetry": "再試行", + "@dialogRetry": { + "description": "Dialog button - retry action" + }, + "dialogClear": "消去", + "@dialogClear": { + "description": "Dialog button - clear items" + }, + "dialogDone": "完了", + "@dialogDone": { + "description": "Dialog button - action completed" + }, + "dialogImport": "インポート", + "@dialogImport": { + "description": "Dialog button - import data" + }, + "dialogDownload": "Download", + "@dialogDownload": { + "description": "Confirm button in Download All dialog" + }, + "previewPlay": "Play preview", + "@previewPlay": { + "description": "Tooltip for the button that plays a short track preview snippet" + }, + "previewStop": "Stop preview", + "@previewStop": { + "description": "Tooltip for the button that stops the playing track preview snippet" + }, + "previewUnavailable": "Preview unavailable", + "@previewUnavailable": { + "description": "Snackbar shown when a track preview snippet cannot be played" + }, + "dialogDiscard": "破棄", + "@dialogDiscard": { + "description": "Dialog button - discard changes" + }, + "dialogRemove": "削除", + "@dialogRemove": { + "description": "Dialog button - remove item" + }, + "dialogUninstall": "アンインストール", + "@dialogUninstall": { + "description": "Dialog button - uninstall extension" + }, + "dialogDiscardChanges": "変更を破棄しますか?", + "@dialogDiscardChanges": { + "description": "Dialog title - unsaved changes warning" + }, + "dialogUnsavedChanges": "You have unsaved changes. Do you want to discard them?", + "@dialogUnsavedChanges": { + "description": "Dialog message - unsaved changes" + }, + "dialogClearAll": "すべて消去", + "@dialogClearAll": { + "description": "Dialog title - clear all items" + }, + "dialogRemoveExtension": "拡張を削除", + "@dialogRemoveExtension": { + "description": "Dialog title - uninstall extension" + }, + "dialogRemoveExtensionMessage": "Are you sure you want to remove this extension? This cannot be undone.", + "@dialogRemoveExtensionMessage": { + "description": "Dialog message - uninstall confirmation" + }, + "dialogUninstallExtension": "拡張をアンインストールしますか?", + "@dialogUninstallExtension": { + "description": "Dialog title - uninstall extension" + }, + "dialogUninstallExtensionMessage": "Are you sure you want to remove {extensionName}?", + "@dialogUninstallExtensionMessage": { + "description": "Dialog message - uninstall specific extension", "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "bitrate": { + "extensionName": { "type": "String" } } }, - "extensionsMetadataPriority": "メタデータの優先度", - "@extensionsMetadataPriority": { - "description": "Setting - metadata provider order" + "dialogClearHistoryTitle": "履歴を消去", + "@dialogClearHistoryTitle": { + "description": "Dialog title - clear download history" }, - "updateCurrent": "現在", - "@updateCurrent": { - "description": "Label for current version" + "dialogClearHistoryMessage": "Are you sure you want to clear all download history? This cannot be undone.", + "@dialogClearHistoryMessage": { + "description": "Dialog message - clear history confirmation" }, - "@aboutFeatureRequest": { - "description": "Link to suggest features" - }, - "@safMigrationSuccess": { - "description": "Snackbar after successfully migrating to SAF" - }, - "backupRestoreConfirmMessage": "This will replace your current settings, download history, liked tracks, wishlist and playlists with the contents of the backup. This cannot be undone.", - "@cleanupOrphanedDownloadsNone": { - "description": "Snackbar when no orphans found" - }, - "lyricsProviderNeteaseDesc": "NetEase Cloud Music (good for Asian songs)", - "@lyricsProviderNeteaseDesc": { - "description": "Description for Netease provider" - }, - "libraryScanCancelledSubtitle": "You can retry the scan when ready.", - "@libraryScanCancelledSubtitle": { - "description": "Library scan status subtitle after cancellation" - }, - "@collectionFavoriteArtists": { - "description": "Custom folder for favorite artists" - }, - "@trackAlbum": { - "description": "Metadata label - album name" + "dialogDeleteSelectedTitle": "選択済みを削除", + "@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": { @@ -713,811 +838,29 @@ } } }, - "trackReEnrich": "Re-enrich", - "@trackReEnrich": { - "description": "Menu action - re-embed metadata into audio file" - }, - "@lyricsProvidersSaved": { - "description": "Snackbar after saving lyrics provider priority" - }, - "@storageModeSaf": { - "description": "Storage mode option - Storage Access Framework" - }, - "libraryStorageAccessRequired": "ストレージアクセスが必要です", - "@libraryStorageAccessRequired": { - "description": "Dialog title for storage permission" - }, - "@cacheClearAllConfirmTitle": { - "description": "Dialog title before clearing all caches" - }, - "@unknownArtist": { - "description": "Fallback artist name when metadata is missing" - }, - "downloadCreatePlaylistSourceFolderEnabled": "A subfolder is created for each playlist", - "@downloadCreatePlaylistSourceFolderEnabled": { - "description": "Subtitle when playlist folder is enabled" - }, - "dialogClearHistoryMessage": "Are you sure you want to clear all download history? This cannot be undone.", - "@dialogClearHistoryMessage": { - "description": "Dialog message - clear history confirmation" - }, - "@sectionData": { - "description": "Settings section header" - }, - "audioAnalysisRms": "RMS", - "@audioAnalysisRms": { - "description": "RMS level metric label" - }, - "downloadFilterContributingEnabled": "Contributing artists removed from Album Artist folder name", - "@downloadFilterContributingEnabled": { - "description": "Subtitle when contributing artist filter is on" - }, - "timeJustNow": "Just now", - "@extensionCustomUrlHandlingShareHint": { - "description": "Extension detail hint explaining share-to-app URL handling" - }, - "cleanupOrphanedDownloads": "Cleanup Orphaned Downloads", - "@cleanupOrphanedDownloads": { - "description": "Button to remove history entries for deleted files" - }, - "@audioAnalysisNoClipping": { - "description": "Displayed when no clipped samples were detected" - }, - "@tutorialWelcomeTitle": { - "description": "Tutorial welcome page title" - }, - "collectionFavoriteArtists": "Favorite Artists", - "audioAnalysisRescanning": "Re-analyzing audio...", - "@audioAnalysisRescanning": { - "description": "Loading text while audio is being re-analyzed after an explicit refresh" - }, - "logTitle": "ログ", - "@logTitle": { - "description": "Logs screen title" - }, - "@regionCountryGB": { - "description": "Country name for SongLink region picker" - }, - "@progressFetchingMetadata": { - "description": "Progress indicator - loading track info", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "aboutLogoArtist": "美しいアプリロゴを作成した才能あるアーティストです!", - "@aboutLogoArtist": { - "description": "Role description for logo artist" - }, - "channelPreview": "プレビュー", - "@channelPreview": { - "description": "Update channel - beta/preview releases" - }, - "collectionPlaylistsDeleted": "{count} {count, plural, =1{playlist} other{playlists}} deleted", - "@collectionPlaylistsDeleted": { - "description": "Snackbar after deleting selected playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@libraryFilterMetadataMissingGenre": { - "description": "Filter option - items missing genre" - }, - "homeTitle": "ホーム", - "@homeTitle": { - "description": "Home screen title" - }, - "extensionMinAppVersion": "最小のアプリバージョン", - "@extensionMinAppVersion": { - "description": "Extension detail - minimum app version" - }, - "backupContentsLiked": "{count} liked {count, plural, =1{track} other{tracks}}", - "@backupContentsLiked": { - "description": "Backup contents row for liked tracks count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "audioAnalysisTruePeak": "True Peak", - "@audioAnalysisTruePeak": { - "description": "True peak metric label" - }, - "notifDownloadsCanceledBody": "{count, plural, =1{1 download canceled by user} other{{count} downloads canceled by user}}", - "@notifDownloadsCanceledBody": { - "description": "Notification body when downloads are canceled by the user", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@dialogRetry": { - "description": "Dialog button - retry action" - }, - "@homeChangeSearchProviderTooltip": { - "description": "Tooltip for the Home search provider picker" - }, - "@sectionLyricsProviderOptions": { - "description": "Settings section header for per-provider lyrics options" - }, - "@trackReEnrichSuccessWithFailures": { - "description": "Snackbar summary after batch metadata re-enrichment finishes with failures", - "placeholders": { - "successCount": { - "type": "int" - }, - "total": { - "type": "int" - }, - "failedCount": { - "type": "int" - } - } - }, - "previewUnavailable": "Preview unavailable", - "@previewUnavailable": { - "description": "Snackbar shown when a track preview snippet cannot be played" - }, - "nowPlayingTabPlayer": "Player", - "@nowPlayingTabPlayer": { - "description": "Tab label for the player view" - }, - "backupContentsPlaylists": "{count, plural, =1{1 playlist} other{{count} playlists}}", - "@backupContentsPlaylists": { - "description": "Backup contents row for playlist count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "libraryLastScannedNever": "Never", - "@libraryLastScannedNever": { - "description": "Shown when library has never been scanned" - }, - "trackTrackNumber": "トラック番号", - "@trackTrackNumber": { - "description": "Metadata label - track number" - }, - "trackReplayGainScanning": "Analyzing loudness...", - "@trackReplayGainScanning": { - "description": "Snackbar/progress message while scanning ReplayGain for a single track" - }, - "downloadLossyMp3": "MP3 320kbps", - "@downloadLossyMp3": { - "description": "Lossy format option - MP3 320kbps" - }, - "@albumFolderArtistAlbumSingles": { - "description": "Album folder option with singles inside artist" - }, - "@extensionHealthNotConfigured": { - "description": "Extension service health status - not configured" - }, - "@downloadSeparateSinglesDisabled": { - "description": "Subtitle when separate singles folder is off" - }, - "downloadCreatePlaylistSourceFolder": "Playlist Source Folder", - "@downloadCreatePlaylistSourceFolder": { - "description": "Setting to create a subfolder per playlist source" - }, - "@trackReleaseDate": { - "description": "Metadata label - release date" - }, - "aboutContributors": "貢献者", - "@aboutContributors": { - "description": "Section for contributors" - }, - "@audioAnalysisMono": { - "description": "Audio channel layout label - mono" - }, - "@audioAnalysisNyquist": { - "description": "Nyquist frequency metric label" - }, - "permissionStorage": "Storage", - "@permissionStorage": { - "description": "Storage permission type label" - }, - "permissionAudio": "Audio", - "@permissionAudio": { - "description": "Audio permission type label" - }, - "@libraryScanSubtitle": { - "description": "Subtitle for scan button" - }, - "@snackbarUnsupportedAudioFormat": { - "description": "Snackbar when the audio format is not supported for the requested operation" - }, - "@notifLibraryScanStopped": { - "description": "Notification body when library scan is cancelled" - }, - "@downloadMusixmatchAuto": { - "description": "Button to clear Musixmatch language (use auto)" - }, - "@trackLyricsTimeout": { - "description": "Message when lyrics request times out" - }, - "@trackReEnrichFieldReleaseInfo": { - "description": "Checkbox label for release info in re-enrich" - }, - "@regionCountryXK": { - "description": "Country name for SongLink region picker" - }, - "aboutTelegramChatSubtitle": "その他のユーザーとチャット", - "@aboutTelegramChatSubtitle": { - "description": "Subtitle for Telegram chat" - }, - "selectionAllPlaylistsSelected": "All playlists selected", - "@selectionAllPlaylistsSelected": { - "description": "Shown when all playlists are selected in selection mode" - }, - "cacheTrackLookupDesc": "Spotify/Deezer track ID lookups. Clearing may slow next few searches.", - "@cacheTrackLookupDesc": { - "description": "Description of what track lookup cache contains" - }, - "@unknownAlbum": { - "description": "Fallback album name when metadata is missing" - }, - "@extensionsErrorLoading": { - "description": "Error message when extension fails to load" - }, - "@cacheTitle": { - "description": "Cache management page title" - }, - "@downloadFilenameFormat": { - "description": "Setting for output filename pattern" - }, - "errorUrlNotRecognized": "Link not recognized", - "@errorUrlNotRecognized": { - "description": "Error title - URL not handled by any extension or service" - }, - "downloadAppleElrcWordSync": "Apple Music eLRC Word Sync", - "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { - "description": "Subtitle when album artist is used for folder names" - }, - "@qualityFlacLossless": { - "description": "Quality option - CD quality FLAC" - }, - "downloadNeteaseIncludeTranslationEnabled": "Chinese translation lines included", - "@downloadNeteaseIncludeTranslationEnabled": { - "description": "Subtitle when Netease translation is on" - }, - "collectionLovedEmptySubtitle": "Tap love on tracks to keep your favorites", - "@collectionLovedEmptySubtitle": { - "description": "Loved empty state subtitle" - }, - "@libraryBuiltInPlayerInfo": { - "description": "Info note explaining the built-in player is for previews only" - }, - "@notifLibraryScanProgressNoTotal": { - "description": "Notification body for library scan progress when total is unknown", - "placeholders": { - "scanned": { - "type": "int" - }, - "percentage": { - "type": "int" - } - } - }, - "@tutorialSearchTitle": { - "description": "Tutorial search page title" - }, - "trackReEnrichSuccessWithFailures": "Metadata re-enriched successfully ({successCount}/{total}) - Failed: {failedCount}", - "@a11yTrackByArtist": { - "description": "Accessibility label for a queue or list track item", - "placeholders": { - "trackName": { - "type": "String" - }, - "artistName": { - "type": "String" - } - } - }, - "libraryFilterMetadataMissingLabel": "Missing label", - "@libraryFilterMetadataMissingLabel": { - "description": "Filter option - items missing record label" - }, - "@audioAnalysisLufs": { - "description": "Integrated loudness metric label" - }, - "trackMetadata": "メタデータ", - "@trackMetadata": { - "description": "Tab title - track metadata" - }, - "trackOptionRemoveFromLoved": "Remove from Loved", - "@trackOptionRemoveFromLoved": { - "description": "Bottom sheet action label - remove track from loved folder" - }, - "@aboutTelegramChat": { - "description": "Link to Telegram chat group" - }, - "@trackCopiedToClipboard": { - "description": "Snackbar - content copied" - }, - "aboutKeepAndroidOpen": "Keep Android Open", - "@aboutKeepAndroidOpen": { - "description": "Link to Keep Android Open campaign website" - }, - "@lyricsProvidersDisabledSection": { - "description": "Section header for disabled providers", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@downloadAllowLocalNetwork": { - "description": "Setting title for allowing requests to private/local network targets" - }, - "@openInOtherServices": { - "description": "Title and tooltip for finding the current collection in other services" - }, - "@extensionVerificationBrowserInApp": { - "description": "Chip label for in-app browser verification mode" - }, - "sectionSearchSource": "検索ソース", - "@sectionSearchSource": { - "description": "Settings section header" - }, - "allFilesAccess": "すべてのファイルへのアクセス", - "@allFilesAccess": { - "description": "Toggle for MANAGE_EXTERNAL_STORAGE permission" - }, - "extensionsInstalledCount": "{count} extensions installed successfully", - "@extensionsInstalledCount": { - "description": "Success message after installing multiple extensions", - "placeholders": { - "count": { - "type": "int", - "description": "Number of installed extensions" - } - } - }, - "snackbarFailedToEmbedLyrics": "Failed to embed lyrics", - "@snackbarFailedToEmbedLyrics": { - "description": "Snackbar when lyrics embedding fails" - }, - "@lyricsProviderMusixmatchDesc": { - "description": "Description for Musixmatch provider" - }, - "queueRateLimitTitle": "Service rate limited", - "@queueRateLimitTitle": { - "description": "Title shown on a failed queue item when the download service rate limits requests" - }, - "@notifDownloadComplete": { - "description": "Notification title when a single download is complete" - }, - "@homeSupports": { - "description": "Info text about supported URL types" - }, - "notifDownloadsCanceledTitle": "Downloads canceled", - "@notifDownloadsCanceledTitle": { - "description": "Notification title when downloads are canceled by the user" - }, - "@lyricsModeEmbedSubtitle": { - "description": "Subtitle for embed option" - }, - "optionsReplayGain": "ReplayGain", - "@optionsReplayGain": { - "description": "Title for ReplayGain setting toggle" - }, - "@storeLoadError": { - "description": "Error heading when the store cannot be loaded" - }, - "@trackArtist": { - "description": "Metadata label - artist name" - }, - "cacheCoverImageDesc": "Downloaded album and track cover art. Will re-download when viewed.", - "@cacheCoverImageDesc": { - "description": "Description of what cover image cache contains" - }, - "queueClearAll": "すべて消去", - "@queueClearAll": { - "description": "Button - clear all queue items" - }, - "downloadUsePrimaryArtistOnlyDisabled": "Full artist string used for folder name", - "@downloadUsePrimaryArtistOnlyDisabled": { - "description": "Subtitle when primary artist only is disabled" - }, - "backupImportSectionTitle": "Restore backup", - "@backupImportSectionTitle": { - "description": "Section title for the import/restore card" - }, - "@downloadMusixmatchLanguageHint": { - "description": "Placeholder for Musixmatch language input" - }, - "collectionRemoveFromFolder": "フォルダから削除", - "@collectionRemoveFromFolder": { - "description": "Tooltip for removing track from wishlist/loved folder" - }, - "storeFilterMetadata": "メタデータ", - "@storeFilterMetadata": { - "description": "Repo filter - metadata providers" - }, - "shareSheetCopyLink": "Copy Link", - "errorRateLimitedMessage": "Too many requests. Please wait a moment before searching again.", - "@errorRateLimitedMessage": { - "description": "Error message - rate limit explanation" - }, - "libraryFilterSortGenreDesc": "Genre (Z-A)", - "@libraryFilterSortGenreDesc": { - "description": "Sort option - genre descending" - }, - "trackFileNotFound": "ファイルがありません", - "@trackFileNotFound": { - "description": "Error - file doesn't exist" - }, - "@queueEmptySinglesSubtitle": { - "description": "Empty state subtitle for single track downloads" - }, - "@queueDownloadStarting": { - "description": "Queue status before download progress is available" - }, - "metadataProviderPriorityInfo": "Deezer has no rate limits and is recommended as primary. Spotify may rate limit after many requests.", - "@metadataProviderPriorityInfo": { - "description": "Info tip about rate limits" - }, - "aboutPCSource": "PC 版のソースコード", - "@aboutPCSource": { - "description": "Link to PC GitHub repo" - }, - "editMetadataAutoFill": "Auto-fill from online", - "@editMetadataAutoFill": { - "description": "Section title for selective online metadata auto-fill in the edit metadata sheet" - }, - "snackbarDeletedTracks": "{count} {count, plural, =1{個のトラック} other{個のトラック}}を削除", - "@snackbarDeletedTracks": { - "description": "Snackbar - tracks deleted", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@extensionHealthServiceDegraded": { - "description": "Tooltip for degraded extension service" - }, - "lyricsProviderLrclibDesc": "Open-source synced lyrics database", - "@lyricsProviderLrclibDesc": { - "description": "Description for LRCLIB provider" - }, - "downloadMusixmatchLanguageDesc": "Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.", - "@downloadMusixmatchLanguageDesc": { - "description": "Description in Musixmatch language picker" - }, - "@optionsEmbedMetadataSubtitleOn": { - "description": "Subtitle when metadata embedding is enabled" - }, - "@setupSkipForNow": { - "description": "Skip button text" - }, - "@a11ySelectTrack": { - "description": "Accessibility label for selecting a track" - }, - "@folderOrganizationByAlbumSubtitle": { - "description": "Subtitle for album folder option" - }, - "downloadLossyAac": "AAC/M4A 320kbps", - "@extensionVerificationBrowserTitle": { - "description": "Settings option title for extension verification browser preference" - }, - "@backupContentsExtensions": { - "description": "Backup contents row for installed extensions count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarUrlCopied": "{platform} の URL をクリップボードにコピーしました", - "@snackbarUrlCopied": { - "description": "Snackbar - URL copied", - "placeholders": { - "platform": { - "type": "String", - "description": "Platform name (Spotify/Deezer)" - } - } - }, - "aboutBinimumDesc": "The creator of QQDL & HiFi API. This project helped shape lossless download support.", - "@aboutBinimumDesc": { - "description": "Credit description for binimum" - }, - "discographyFetchingAlbum": "Fetching {current} of {total}...", - "@discographyFetchingAlbum": { - "description": "Progress - fetching specific album", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "logAutoScrollOn": "Auto-scroll ON", - "@logAutoScrollOn": { - "description": "Tooltip when auto-scroll is enabled on the log screen" - }, - "@settingsMetadataSubtitle": { - "description": "Subtitle for metadata settings" - }, - "@regionCountryBR": { - "description": "Country name for SongLink region picker" - }, - "@lyricsProvidersTitle": { - "description": "Settings item title for lyrics provider order" - }, - "trackMetadataService": "サービス", - "@trackMetadataService": { - "description": "Metadata field - download service used" - }, - "discographyAddedToQueue": "Added {count} tracks to queue", - "cueSplitTrackCount": "{count} tracks", - "@cueSplitTrackCount": { - "description": "Number of tracks in CUE sheet", - "placeholders": { - "count": { - "type": "int" - } - } - }, "dialogImportPlaylistTitle": "プレイリストをインポート", "@dialogImportPlaylistTitle": { "description": "Dialog title - import CSV playlist" }, - "@cleanupOrphanedDownloadsSubtitle": { - "description": "Subtitle for orphaned cleanup button" - }, - "settingsLocalLibrary": "ローカルライブラリ", - "@settingsLocalLibrary": { - "description": "Settings menu item - local library" - }, - "@metadataSaveFailedStorage": { - "description": "Snackbar error when writing metadata file back to storage fails" - }, - "logCopyLogs": "Copy logs", - "@logCopyLogs": { - "description": "Tooltip for copying logs" - }, - "downloadNetworkWifiOnlySubtitle": "Downloads pause when on mobile data", - "@downloadNetworkWifiOnlySubtitle": { - "description": "Subtitle for WiFi-only option in picker" - }, - "@lyricsModeBothSubtitle": { - "description": "Subtitle for both option" - }, - "@collectionAlreadyInPlaylist": { - "description": "Snackbar when track already exists in playlist", - "placeholders": { - "playlistName": { - "type": "String" - } - } - }, - "@collectionFoldersTitle": { - "description": "Library section title for custom folders" - }, - "searchSortDateNewest": "Release Date (Newest)", - "@searchSortDateNewest": { - "description": "Sort option - newest release first" - }, - "downloadDeduplicationDisabled": "All tracks will be downloaded regardless of history", - "@downloadDeduplicationDisabled": { - "description": "Subtitle when deduplication is off" - }, - "@recentTypeAlbum": { - "description": "Recent access item type - album" - }, - "nowPlayingPlayInOrder": "Play in order", - "@nowPlayingPlayInOrder": { - "description": "Tooltip when shuffle mode is disabled" - }, - "@cueSplitConfirmMessage": { - "description": "CUE split confirmation dialog message", - "placeholders": { - "album": { - "type": "String" - }, - "count": { - "type": "int" - } - } - }, - "@audioAnalysisFileSize": { - "description": "File size metric label" - }, - "artistSingles": "シングルと EP", - "@artistSingles": { - "description": "Section header for singles/EPs" - }, - "@snackbarProviderPrioritySaved": { - "description": "Snackbar - provider order saved" - }, - "@recentPlaylistInfo": { - "description": "Snackbar message when tapping playlist in recent access", - "placeholders": { - "name": { - "type": "String", - "description": "Playlist name" - } - } - }, - "@lyricsProviderLyricsPlusDesc": { - "description": "Description for LyricsPlus provider" - }, - "@libraryFilterDownloaded": { - "description": "Filter chip - show only downloaded items" - }, - "recentPlaylistInfo": "プレイリスト: {name}", - "@optionsReplayGainSubtitleOn": { - "description": "Subtitle when ReplayGain is enabled" - }, - "@actionCreate": { - "description": "Generic action button - create" - }, - "@downloadSelectQuality": { - "description": "Dialog title - choose audio quality" - }, - "cueSplitAlbum": "Album: {album}", - "@cueSplitAlbum": { - "description": "Album name in CUE split sheet", - "placeholders": { - "album": { - "type": "String" - } - } - }, - "@trackCoverNoSource": { - "description": "Snackbar when no cover art URL or embedded cover" - }, - "@storeRepoUrlLabel": { - "description": "Label for the repository URL input field" - }, - "@notifLibraryScanCompleteBody": { - "description": "Notification body for library scan complete - number of indexed tracks", + "dialogImportPlaylistMessage": "Found {count} tracks in the playlist file. Add them to download queue?", + "csvImportTracks": "{count} tracks from CSV", + "@csvImportTracks": { + "description": "Label shown in quality picker for CSV import", "placeholders": { "count": { "type": "int" } } }, - "optionsDetailedLogging": "詳細ログ", - "@optionsDetailedLogging": { - "description": "Enable verbose logs for debugging" + "collectionExportM3u": "Export as M3U8", + "@collectionExportM3u": { + "description": "Tooltip on the collection screen action that exports the track list as an M3U8 playlist file" }, - "@lyricsProvidersDiscardContent": { - "description": "Body text of the discard-changes dialog on lyrics provider page" - }, - "@dialogDisableHistoryTitle": { - "description": "Confirmation dialog title shown before disabling download history" - }, - "downloadLossyOpus128Subtitle": "Smallest size, ~4MB per track", - "@downloadLossyOpus128Subtitle": { - "description": "Subtitle for Opus 128kbps lossy option" - }, - "@appName": { - "description": "App name - DO NOT TRANSLATE" - }, - "libraryActions": "アクション", - "@libraryActions": { - "description": "Section header for library actions" - }, - "setupNoFolderSelected": "No folder selected. Would you like to use the default Music folder?", - "@setupNoFolderSelected": { - "description": "Prompt when no folder selected" - }, - "downloadMusixmatchLanguageHint": "e.g. en, de, ja", - "trackSaveFailed": "失敗: {error}", - "@trackSaveFailed": { - "description": "Snackbar when save operation fails", + "collectionExportM3uDone": "Exported {exported} of {total} tracks", + "@collectionExportM3uDone": { + "description": "Snackbar after M3U8 export; tracks without a local file are not exported", "placeholders": { - "error": { - "type": "String" - } - } - }, - "replayGainBatchConfirmTitle": "Add ReplayGain", - "@replayGainBatchConfirmTitle": { - "description": "Title of the batch ReplayGain confirmation dialog" - }, - "tutorialExtensionsTip1": "Browse the Repo tab to discover useful extensions", - "@tutorialExtensionsTip1": { - "description": "Tutorial extensions tip 1" - }, - "@trackAddToQueue": { - "description": "Menu action to add a track to the playback queue" - }, - "@cacheTrackLookup": { - "description": "Cache item title for track ID lookup cache" - }, - "@discographyNoAlbums": { - "description": "Error - no albums found for artist" - }, - "@updateLater": { - "description": "Update button - dismiss" - }, - "@snackbarFailedToInstall": { - "description": "Snackbar - extension install error" - }, - "@albumFolderArtistAlbumFlatSubtitle": { - "description": "Folder structure example for flat singles" - }, - "@errorMissingExtensionSource": { - "description": "Error - extension source not available", - "placeholders": { - "item": { - "type": "String" - } - } - }, - "libraryFilterSortAlbumAsc": "Album (A-Z)", - "@libraryFilterSortAlbumAsc": { - "description": "Sort option - album ascending" - }, - "@queueTrackCount": { - "description": "Track count label with plural support", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "audioAnalysisMono": "Mono", - "@trackLyricsSource": { - "description": "Label showing the lyrics source/provider", - "placeholders": { - "source": { - "type": "String" - } - } - }, - "@lyricsModeEmbed": { - "description": "Lyrics mode option - embed in audio file" - }, - "@storeRepoDialogCurrent": { - "description": "Label shown above the current repository URL in the dialog" - }, - "@cacheRefreshStats": { - "description": "Button label to refresh cache statistics" - }, - "lyricsProviderAppleMusicDesc": "Word-by-word synced lyrics (via proxy)", - "@lyricsProviderAppleMusicDesc": { - "description": "Description for Apple Music provider" - }, - "@downloadDeduplication": { - "description": "Setting - skip tracks already in download history" - }, - "updateFailedMessage": "更新のダウンロードに失敗しました", - "@updateFailedMessage": { - "description": "Update error message" - }, - "cacheEstimatedTotal": "Estimated cache usage: {size}", - "@cacheEstimatedTotal": { - "description": "Total cache size shown in summary", - "placeholders": { - "size": { - "type": "String" - } - } - }, - "@aboutVersion": { - "description": "Version info label" - }, - "dialogRetry": "再試行", - "@cueSplitSplitting": { - "description": "Snackbar while splitting CUE", - "placeholders": { - "current": { + "exported": { "type": "int" }, "total": { @@ -1525,769 +868,81 @@ } } }, - "@searchSortTitleZA": { - "description": "Sort option - title descending" + "collectionExportM3uNone": "No downloaded files to export", + "@collectionExportM3uNone": { + "description": "Snackbar when an M3U8 export finds no local files" }, - "tutorialLibraryTip2": "Tap a track to play it with the built-in player", - "@tutorialLibraryTip2": { - "description": "Tutorial library tip 2" + "collectionExportM3uFailed": "Export failed", + "@collectionExportM3uFailed": { + "description": "Snackbar when writing or sharing the M3U8 export fails" }, - "extensionHealthServiceOffline": "Service offline", - "@extensionHealthServiceOffline": { - "description": "Tooltip for offline extension service" + "trackOpenOn": "Open on...", + "@trackOpenOn": { + "description": "Track option and sheet title listing streaming platforms where the track can be opened" }, - "actionDeselect": "選択を解除", - "@actionDeselect": { - "description": "Action button - deselect all" + "trackOpenOnNoLinks": "No platform links found for this track.", + "@trackOpenOnNoLinks": { + "description": "Shown in the Open on sheet when song.link returns no links" }, - "@trackConvertOriginal": { - "description": "Label for keeping original bit depth or sample rate during conversion" + "libraryReviewDuplicates": "Review duplicates", + "@libraryReviewDuplicates": { + "description": "Library settings row opening the duplicate review sheet" }, - "@libraryClearConfirmTitle": { - "description": "Dialog title for clear confirmation" + "libraryReviewDuplicatesSubtitle": "Find tracks stored more than once", + "@libraryReviewDuplicatesSubtitle": { + "description": "Subtitle for the duplicate review settings row" }, - "@dialogDownloadAllMessage": { - "description": "Body of the Download All confirmation dialog", - "placeholders": { - "count": { - "type": "int" - } - } + "duplicatesTitle": "Duplicates", + "@duplicatesTitle": { + "description": "Title of the duplicate review sheet" }, - "homeSupports": "サポート: トラック、アルバム、プレイリスト、アーティスト、URL", - "@downloadedAlbumDeleteSelected": { - "description": "Button - delete selected tracks" + "duplicatesEmpty": "No duplicate tracks found.", + "@duplicatesEmpty": { + "description": "Shown when the duplicate review sheet finds nothing" }, - "@recentShowAllDownloads": { - "description": "Button label to unhide hidden downloads in recent access" + "duplicatesKeepBest": "Keep best", + "@duplicatesKeepBest": { + "description": "Button that deletes all but the highest-quality copy in a duplicate group" }, - "artistOptionRemoveFromFavorites": "Remove from Favorite Artists", - "@artistOptionRemoveFromFavorites": { - "description": "Action label - remove artist from favorite artists" + "duplicatesKeepBestAll": "Keep best for all", + "@duplicatesKeepBestAll": { + "description": "Button that keeps the highest-quality copy in every duplicate group and deletes the rest" }, - "collectionPlaylistEmptyTitle": "Playlist is empty", - "@collectionPlaylistEmptyTitle": { - "description": "Playlist empty state title" - }, - "libraryFilterSortLatest": "Latest", - "@libraryFilterSortLatest": { - "description": "Sort option - newest first" - }, - "@libraryFilterMetadataMissingYear": { - "description": "Filter option - items missing release year/date" - }, - "@selectionSelected": { - "description": "Selection count indicator", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@tracksCount": { - "description": "Track count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@optionsCheckUpdates": { - "description": "Auto update check toggle" - }, - "@qualityHiResFlacMaxSubtitle": { - "description": "Technical spec for hi-res max" - }, - "actionStop": "Stop", - "@actionStop": { - "description": "Generic action - stop" - }, - "@selectionSelectToDelete": { - "description": "Placeholder when nothing selected" - }, - "folderOrganizationNoneSubtitle": "ダウンロードフォルダ内のすべてのファイル", - "@folderOrganizationNoneSubtitle": { - "description": "Subtitle for no organization option" - }, - "@updateDownloading": { - "description": "Update status - downloading" - }, - "artistAlbums": "アルバム", - "@artistAlbums": { - "description": "Section header for artist albums" - }, - "trackConvertDitherTriangular": "TPDF", - "@trackConvertDitherTriangular": { - "description": "Lossless conversion triangular probability density function dither option" - }, - "nowPlayingShuffleLibraryFailed": "Could not shuffle library: {error}", - "@nowPlayingShuffleLibraryFailed": { - "description": "Snackbar when shuffling the library fails", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "@setupIcloudNotSupported": { - "description": "Error when user selects iCloud Drive on iOS" - }, - "@optionsArtistTagModeSplitVorbis": { - "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" - }, - "@extensionsProviderPrioritySection": { - "description": "Section header - provider priority" - }, - "@libraryShowDuplicateIndicatorSubtitle": { - "description": "Subtitle for duplicate indicator toggle" - }, - "sectionDuplicates": "Duplicates", - "@sectionDuplicates": { - "description": "Settings section header for deduplication" - }, - "@backupTitle": { - "description": "App bar title for the backup and restore page" - }, - "trackCoverReplaceNotice": "The selected cover will replace the current embedded cover when you tap Save.", - "cacheSectionMaintenance": "メンテナンス", - "@cacheSectionMaintenance": { - "description": "Section header for cleanup actions" - }, - "@editMetadataFieldGenre": { - "description": "Chip label for genre field in auto-fill selector" - }, - "@extensionsFallbackSubtitle": { - "description": "Subtitle for download fallback extensions menu" - }, - "selectionBatchConvertConfirmMessage": "Convert {count} {count, plural, =1{track} other{tracks}} to {format} at {bitrate}?\n\nOriginal files will be deleted after conversion.", - "@selectionBatchConvertConfirmMessage": { - "description": "Confirmation dialog message for batch conversion", + "duplicatesKeepBestAllMessage": "Keep the best copy of {groupCount} {groupCount, plural, =1{track} other{tracks}} and delete {count} lower-quality {count, plural, =1{copy} other{copies}}?\n\nThe deleted files will be removed from storage.", + "@duplicatesKeepBestAllMessage": { + "description": "Confirmation message for keeping the best copy across every duplicate group", "placeholders": { "count": { "type": "int" }, - "format": { - "type": "String" - }, - "bitrate": { - "type": "String" - } - } - }, - "@selectionTapPlaylistsToSelect": { - "description": "Hint shown in playlist selection mode" - }, - "qualityHiResFlacMaxSubtitle": "24-bit / 最大 192kHz", - "snackbarRemovedTracksFromLoved": "Removed {count} tracks from Loved", - "@snackbarRemovedTracksFromLoved": { - "description": "Snackbar after removing multiple tracks from Loved folder", - "placeholders": { - "count": { + "groupCount": { "type": "int" } } }, - "folderOrganizationByArtistAlbum": "アーティスト/アルバム", - "@folderOrganizationByArtistAlbum": { - "description": "Folder option - nested folders" - }, - "snackbarCannotOpenFile": "ファイルが開けません: {error}", - "@snackbarCannotOpenFile": { - "description": "Snackbar - file open error", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "@optionsDetailedLoggingOff": { - "description": "Status when logging disabled" - }, - "@setupStorageDescription": { - "description": "Explanation for storage permission" - }, - "audioAnalysisCodec": "Codec", - "@regionCountryFR": { - "description": "Country name for SongLink region picker" - }, - "@optionsArtistTagMode": { - "description": "Setting title for how artist metadata is written into files" - }, - "@libraryClearConfirmMessage": { - "description": "Dialog message for clear confirmation" - }, - "trackLyricsNotAvailable": "このトラックの歌詞は利用できません", - "@trackLyricsNotAvailable": { - "description": "Message when lyrics not found" - }, - "storeFilterUtility": "ユーティリティ", - "@storeFilterUtility": { - "description": "Repo filter - utility extensions" - }, - "collectionAddedToPlaylist": "Added to \"{playlistName}\"", - "@collectionAddedToPlaylist": { - "description": "Snackbar after adding track to playlist", - "placeholders": { - "playlistName": { - "type": "String" - } - } - }, - "cacheClearConfirmTitle": "キャッシュを消去しますか?", - "@cacheClearConfirmTitle": { - "description": "Dialog title before clearing one cache category" - }, - "@downloadAppleElrcWordSyncDisabled": { - "description": "Subtitle when Apple Music eLRC word sync is disabled" - }, - "@aboutMobileDeveloper": { - "description": "Role description for mobile dev" - }, - "albumFolderYearAlbum": "[年] アルバム", - "@albumFolderYearAlbum": { - "description": "Album folder option with year" - }, - "cacheTitle": "ストレージとキャッシュ", - "@extensionPostProcessing": { - "description": "Capability - post-download processing" - }, - "extensionsNoMetadataProvider": "メタデータプロバイダーの拡張はありません", - "@extensionsNoMetadataProvider": { - "description": "Empty state - no metadata providers" - }, - "searchSortTitleZA": "Title (Z-A)", - "@queueClearAllMessage": { - "description": "Clear queue confirmation" - }, - "audioAnalysisTitle": "Audio Quality Analysis", - "@audioAnalysisTitle": { - "description": "Title for audio analysis section" - }, - "@aboutReportIssueSubtitle": { - "description": "Subtitle for report issue" - }, - "@audioAnalysisSampleRate": { - "description": "Sample rate metric label" - }, - "@discographySelectedCount": { - "description": "Selection count badge", + "duplicatesKeepBestMessage": "Delete {count} lower-quality copies of \"{trackName}\"?", + "@duplicatesKeepBestMessage": { + "description": "Confirmation message for the keep-best action", "placeholders": { "count": { "type": "int" - } - } - }, - "qualityFlacLosslessSubtitle": "16-bit / 44.1kHz", - "@qualityFlacLosslessSubtitle": { - "description": "Technical spec for lossless" - }, - "libraryScanFinalizing": "Finalizing library...", - "@libraryScanFinalizing": { - "description": "Status shown after file scanning finishes but library persistence is still running" - }, - "@trackEditMetadata": { - "description": "Menu action - edit embedded metadata" - }, - "@downloadNeteaseIncludeRomanization": { - "description": "Setting to include romanized lyrics from Netease" - }, - "@optionsArtistTagModeJoinedSubtitle": { - "description": "Subtitle for joined artist tag mode" - }, - "regionCountryDE": "Germany", - "@regionCountryDE": { - "description": "Country name for SongLink region picker" - }, - "optionsAutoFallback": "Auto Fallback", - "@optionsAutoFallback": { - "description": "Auto-retry with other services" - }, - "@trackMetadataPlay": { - "description": "Action button - play track" - }, - "settingsFiles": "Files & Folders", - "@settingsFiles": { - "description": "Settings menu item - file and folder settings" - }, - "aboutMobileDeveloper": "モバイルバージョンの開発者", - "@trackDownloaded": { - "description": "Metadata label - download date" - }, - "homeSkipAlreadyDownloaded": "Skip already downloaded songs", - "@homeSkipAlreadyDownloaded": { - "description": "Checkbox label in import dialog to skip already-downloaded songs" - }, - "dialogUninstall": "アンインストール", - "@dialogUninstall": { - "description": "Dialog button - uninstall extension" - }, - "collectionDeletePlaylist": "Delete playlist", - "@collectionDeletePlaylist": { - "description": "Action to delete playlist" - }, - "trackCoverOnline": "Online cover", - "@trackCoverOnline": { - "description": "Label shown when metadata autofill downloaded cover art from the internet" - }, - "downloadTitle": "ダウンロード", - "@downloadTitle": { - "description": "Download settings page title" - }, - "searchArtists": "アーティスト", - "@searchArtists": { - "description": "Search result category - artists" - }, - "extensionUrlHandler": "URL ハンドラ", - "@extensionUrlHandler": { - "description": "Capability - handles URLs" - }, - "@timeHoursAgo": { - "description": "Relative time - hours ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "editMetadataAdvanced": "Advanced", - "@editMetadataAdvanced": { - "description": "Expandable section label for advanced metadata fields" - }, - "@actionSelectAll": { - "description": "Action button - select all items" - }, - "timeMinutesAgo": "{count, plural, =1{1 分前} other{{count} 分前}}", - "@timeMinutesAgo": { - "description": "Relative time - minutes ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "regionCountryXK": "Kosovo", - "@downloadAskQualitySubtitle": { - "description": "Subtitle for ask quality toggle" - }, - "setupLanguageSystemDefault": "System Default", - "@setupLanguageSystemDefault": { - "description": "Option to use the system language" - }, - "@updateAvailable": { - "description": "Update dialog title" - }, - "cacheEntries": "{count} 個のエントリ", - "@cacheEntries": { - "description": "Track cache entry count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@notifLibraryScanExcluded": { - "description": "Library scan complete suffix - excluded track count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionsMetadataPrioritySubtitle": "検索とメタデータソースの順序を設定", - "@extensionsMetadataPrioritySubtitle": { - "description": "Subtitle for metadata priority" - }, - "downloadedAlbumSelectToDelete": "トラックを選択で削除", - "@downloadedAlbumSelectToDelete": { - "description": "Placeholder when nothing selected" - }, - "@dialogClearHistoryTitle": { - "description": "Dialog title - clear download history" - }, - "tutorialSettingsTip1": "Change download location and folder organization", - "@tutorialSettingsTip1": { - "description": "Tutorial settings tip 1" - }, - "@extensionsInstalledSuccess": { - "description": "Success message after install" - }, - "allFilesAccessDisabledSubtitle": "Limited to media folders only", - "@allFilesAccessDisabledSubtitle": { - "description": "Subtitle when all files access is disabled" - }, - "@appearanceHistoryViewList": { - "description": "List layout option" - }, - "@notifAlreadyInLibraryCount": { - "description": "Notification title when track is already in library, with count", - "placeholders": { - "completed": { - "type": "int" }, - "total": { - "type": "int" - } - } - }, - "@libraryFilterAll": { - "description": "Filter chip - show all library items" - }, - "settingsDownload": "ダウンロード", - "settingsFilesSubtitle": "Download location, filename, folder structure", - "@settingsFilesSubtitle": { - "description": "Subtitle for files & folders settings" - }, - "@libraryFilterSort": { - "description": "Filter section - sort order" - }, - "metadataProvidersSubtitle": "Drag to set search and metadata source order", - "@extensionPermissions": { - "description": "Section header - required permissions" - }, - "selectionSelectToDelete": "トラックを選択で削除", - "@libraryExternalPlayerSubtitle": { - "description": "Subtitle for external player option" - }, - "extensionVerificationOpenBrowser": "Open browser", - "@extensionVerificationOpenBrowser": { - "description": "Button to open the extension verification URL in a browser" - }, - "@trackConvertConfirmMessageLossless": { - "description": "Confirmation dialog message for lossless-to-lossless conversion", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { + "trackName": { "type": "String" } } }, - "@snackbarAddedTracksToQueue": { - "description": "Snackbar - multiple tracks added to queue", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@backupContentsWishlist": { - "description": "Backup contents row for wishlist tracks count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@cacheCleanupUnusedSubtitle": { - "description": "Subtitle for cleanup unused data action" - }, - "trackLabel": "レーベル", - "@trackLabel": { - "description": "Metadata label - record label" - }, - "@collectionAddedToLoved": { - "description": "Snackbar after adding track to loved folder", + "duplicatesDeleteCopyMessage": "Delete this copy of \"{trackName}\"?", + "@duplicatesDeleteCopyMessage": { + "description": "Confirmation message for deleting one duplicate copy", "placeholders": { "trackName": { "type": "String" } } }, - "regionCountryGB": "United Kingdom", - "dialogCancel": "キャンセル", - "@dialogCancel": { - "description": "Dialog button - cancel action" - }, - "@folderOrganizationByArtistAlbumSubtitle": { - "description": "Subtitle for nested folder option" - }, - "@notifAllDownloadsComplete": { - "description": "Notification title when all downloads finish successfully" - }, - "setupEnableNotifications": "通知を有効化する", - "@setupEnableNotifications": { - "description": "Button to enable notifications" - }, - "@notifFinalizingTrack": { - "description": "Notification title while finalizing (embedding metadata) a track", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "@downloadLossy320FormatDesc": { - "description": "Description in the lossy format picker" - }, - "filenameFormat": "ファイル名の形式", - "@filenameFormat": { - "description": "Setting title - filename pattern" - }, - "historySearchHint": "検索履歴...", - "@historySearchHint": { - "description": "Search bar placeholder in history" - }, - "@tutorialReadyMessage": { - "description": "Tutorial completion message" - }, - "cacheTempDirectoryDesc": "Temporary files from downloads and audio conversion.", - "@cacheTempDirectoryDesc": { - "description": "Description of what temporary directory contains" - }, - "@trackSaveLyrics": { - "description": "Menu action - save lyrics as .lrc file" - }, - "@notifDownloadsFinished": { - "description": "Notification title when queue finishes with some failures", - "placeholders": { - "completed": { - "type": "int" - }, - "failed": { - "type": "int" - } - } - }, - "@historyFilterAlbums": { - "description": "Filter chip - show albums only" - }, - "trackEmbedLyrics": "歌詞を埋め込む", - "@trackEmbedLyrics": { - "description": "Action - embed lyrics into audio file" - }, - "@downloadPrimaryArtistOnlyOff": { - "description": "Status label when primary-artist-only folder naming is disabled" - }, - "@trackReEnrichFieldTrackInfo": { - "description": "Checkbox label for track info in re-enrich" - }, - "snackbarHistoryCleared": "履歴を消去しました", - "downloadNetworkCompatibilityModeDisabled": "Using standard network settings", - "@artistPopular": { - "description": "Section header for popular/top tracks" - }, - "@trackFetchOnlineLyrics": { - "description": "Action - fetch lyrics from online providers" - }, - "extensionLyricsProvider": "歌詞のプロバイダー", - "@extensionLyricsProvider": { - "description": "Capability - provides lyrics" - }, - "historyFilterAll": "すべて", - "@historyFilterAll": { - "description": "Filter chip - show all items" - }, - "tutorialSearchTitle": "Finding Music", - "@lyricsModeExternal": { - "description": "Lyrics mode option - separate LRC file" - }, - "@actionDismiss": { - "description": "Generic action - dismiss" - }, - "trackOpenInSpotify": "Spotify で開く", - "@trackOpenInSpotify": { - "description": "Action - open track in Spotify app" - }, - "@libraryClear": { - "description": "Button to clear all library entries" - }, - "discographyFailedToFetch": "一部のアルバムの取得に失敗しました", - "@filenameShowAdvancedTagsDescription": { - "description": "Description for advanced filename tag toggle" - }, - "@storeUpdate": { - "description": "Update available button" - }, - "collectionPlaylistTracks": "{count, plural, =1{1 track} other{{count} tracks}}", - "@collectionPlaylistTracks": { - "description": "Track count label for custom playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "optionsPrimaryProviderSubtitle": "Service used for searching by track or album name", - "@optionsPrimaryProviderSubtitle": { - "description": "Subtitle for primary provider" - }, - "@downloadEmbedLyricsDisabled": { - "description": "Subtitle when lyrics embedding is blocked by metadata toggle" - }, - "@librarySourceLocal": { - "description": "Badge for tracks from local library scan" - }, - "@searchSortDurationLong": { - "description": "Sort option - longest duration first" - }, - "@downloadFilterContributingDisabled": { - "description": "Subtitle when contributing artist filter is off" - }, - "queueDownloadingCount": "Downloading ({count})", - "@queueDownloadingCount": { - "description": "Header for active downloads section with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionVerificationBrowserInApp": "In-app", - "trackAudioQuality": "オーディオ品質", - "@trackAudioQuality": { - "description": "Metadata label - audio quality" - }, - "libraryRemovedMissingFiles": "Removed {count} missing files from library", - "@libraryRemovedMissingFiles": { - "description": "Snackbar after cleanup", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "collectionFavoriteArtistsEmptyTitle": "No favorite artists yet", - "@collectionFavoriteArtistsEmptyTitle": { - "description": "Favorite artists empty state title" - }, - "@errorInvalidFolderSelected": { - "description": "Error when the selected folder is invalid" - }, - "@searchSortArtistZA": { - "description": "Sort option - artist descending" - }, - "snackbarAddedTracksToLoved": "Added {count} tracks to Loved", - "@snackbarAddedTracksToLoved": { - "description": "Snackbar after adding multiple tracks to Loved folder", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cancelDownloadContent": "This will cancel the active download for \"{trackName}\".", - "@cancelDownloadContent": { - "description": "Dialog body when confirming cancellation of an active download", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "settingsCacheSubtitle": "View size and clear cached data", - "@settingsCacheSubtitle": { - "description": "Subtitle for cache management menu" - }, - "notifLibraryScanCompleteBody": "{count} tracks indexed", - "@cacheSizeWithFiles": { - "description": "Cache size and file count", - "placeholders": { - "size": { - "type": "String" - }, - "count": { - "type": "int" - } - } - }, - "@downloadAskBeforeDownload": { - "description": "Setting - show quality picker" - }, - "@extensionHealthDegraded": { - "description": "Extension service health status - degraded" - }, - "@sectionPerformance": { - "description": "Settings section header" - }, - "@trackCoverCurrent": { - "description": "Label for the currently embedded cover preview" - }, - "discographySelectAlbums": "アルバムを選択...", - "@discographySelectAlbums": { - "description": "Option - manually select albums to download" - }, - "aboutAppDescription": "Search music metadata, manage extensions, and organize your library.", - "@aboutAppDescription": { - "description": "App description in header card" - }, - "extensionCustomTrackMatching": "カスタムトラックマッチング", - "@extensionCustomTrackMatching": { - "description": "Capability - custom track matching algorithm" - }, - "@editMetadataSelectNone": { - "description": "Button to clear selected fields for auto-fill" - }, - "@trackPlayNext": { - "description": "Menu action to play a track as the next queue item" - }, - "extensionCapabilities": "機能", - "@extensionCapabilities": { - "description": "Section header - extension features" - }, - "@downloadSelectServiceToEnable": { - "description": "Subtitle when quality picker is disabled due to extension service" - }, - "logIssueRateLimitedDescription": "Too many requests to the service", - "@logIssueRateLimitedDescription": { - "description": "Diagnostic badge description for rate limiting" - }, - "@actionResume": { - "description": "Action button - resume download" - }, - "@updateDownloadInstall": { - "description": "Update button - download and install" - }, - "downloadLossy320Format": "Lossy 320kbps Format", - "@downloadLossy320Format": { - "description": "Title of the lossy format picker bottom sheet" - }, - "settingsMetadataSubtitle": "Cover art, tags, ReplayGain, providers", - "@trackCopyright": { - "description": "Metadata label - copyright information" - }, - "@snackbarExtensionInstalled": { - "description": "Snackbar - extension installed successfully", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "@regionCountryJP": { - "description": "Country name for SongLink region picker" - }, - "trackReEnrichOnlineSubtitle": "Search metadata online and embed into file", - "@trackReEnrichOnlineSubtitle": { - "description": "Subtitle for re-enrich metadata action for local items" - }, - "nowPlayingNothingPlaying": "Nothing is playing", - "@nowPlayingNothingPlaying": { - "description": "Empty state when no track is currently playing" - }, - "tutorialDownloadDesc": "Pick an available quality, start the download, and follow its progress in the queue.", - "@tutorialDownloadDesc": { - "description": "Tutorial download page description" - }, - "@appearanceTitle": { - "description": "Appearance settings page title" - }, - "@backupExportSectionDescription": { - "description": "Description of what a backup contains" - }, - "@downloadLossyOpus128": { - "description": "Lossy format option - Opus 128kbps" - }, - "@logFilterSection": { - "description": "Filter section title" - }, - "trackReEnrichSuccess": "Metadata re-enriched successfully", - "@trackReEnrichSuccess": { - "description": "Snackbar after successful re-enrichment" - }, - "backupContentsHistory": "{count} history {count, plural, =1{item} other{items}}", - "@backupContentsHistory": { - "description": "Backup contents row for history count", + "@dialogImportPlaylistMessage": { + "description": "Dialog message - import playlist confirmation", "placeholders": { "count": { "type": "int" @@ -2303,692 +958,93 @@ } } }, - "libraryAutoScanOnOpen": "Every app open", - "@libraryAutoScanOnOpen": { - "description": "Auto scan when app opens" + "snackbarAddedTracksToQueue": "{count} 個のトラックをキューに追加しました", + "@snackbarAddedTracksToQueue": { + "description": "Snackbar - multiple tracks added to queue", + "placeholders": { + "count": { + "type": "int" + } + } }, - "audioAnalysisChannels": "Channels", - "@audioAnalysisChannels": { - "description": "Channels metric label" - }, - "appearanceHistoryViewList": "リスト", - "updateDownloadInstall": "ダウンロードとインストール", - "@libraryShowDuplicateIndicator": { - "description": "Toggle for duplicate indicator in search" - }, - "extensionsHomeFeedOff": "Off", - "@extensionsHomeFeedOff": { - "description": "Extensions page - home feed provider option: off" - }, - "searchSortTitleAZ": "Title (A-Z)", - "@searchSortTitleAZ": { - "description": "Sort option - title ascending" - }, - "collectionRemovedFromLoved": "\"{trackName}\" removed from Loved", - "@collectionRemovedFromLoved": { - "description": "Snackbar after removing track from loved folder", + "snackbarAlreadyDownloaded": "「{trackName}」は既にダウンロードされています", + "@snackbarAlreadyDownloaded": { + "description": "Snackbar - track already exists", "placeholders": { "trackName": { "type": "String" } } }, - "sectionAudioQuality": "オーディオ品質", - "@sectionAudioQuality": { - "description": "Settings section header" - }, - "trackConvertSuccess": "Converted to {format} successfully", - "@trackConvertSuccess": { - "description": "Snackbar after successful conversion", - "placeholders": { - "format": { - "type": "String" - } - } - }, - "dialogUninstallExtensionMessage": "Are you sure you want to remove {extensionName}?", - "@dialogUninstallExtensionMessage": { - "description": "Dialog message - uninstall specific extension", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "downloadNativeWorkerSubtitle": "拡張機能のダウンロード用 Android バックグラウンドサービス", - "@downloadNativeWorkerSubtitle": { - "description": "Setting subtitle for Android native download worker" - }, - "storeUpdate": "更新", - "libraryFilterMetadataMissingAny": "Missing any metadata", - "@libraryFilterMetadataMissingAny": { - "description": "Filter option - items missing any tracked metadata field" - }, - "@selectionBatchConvertConfirmMessageLosslessCapped": { - "description": "Confirmation dialog message for capped lossless batch conversion", - "placeholders": { - "count": { - "type": "int" - }, - "format": { - "type": "String" - }, - "quality": { - "type": "String" - } - } - }, - "editMetadataAutoFillDesc": "Choose a metadata extension, select fields, then review its data before applying", - "@editMetadataAutoFillDesc": { - "description": "Description for the auto-fill section" - }, - "@lyricsProviderExtensionDesc": { - "description": "Generic description for extension-based lyrics providers" - }, - "downloadSongLinkRegion": "SongLink Region", - "@downloadSongLinkRegion": { - "description": "Setting for SongLink region used during fallback resolution" - }, - "shareSheetNoExtensions": "No other compatible services", - "@shareSheetNoExtensions": { - "description": "Empty state when no extensions can be searched for cross-service links" - }, - "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": { - "description": "Confirmation dialog body before queueing FLAC redownloads for local tracks", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "tooltipAddToPlaylist": "Add to Playlist", - "@tooltipAddToPlaylist": { - "description": "Tooltip for the Add to Playlist button" - }, - "@snackbarAddedToQueueGeneric": { - "description": "Snackbar when a track is added to the playback queue without naming it" - }, - "@tutorialSettingsTip2": { - "description": "Tutorial settings tip 2" - }, - "extensionPermissions": "権限", - "releaseTypeSingle": "Single", - "aboutTelegramChannelSubtitle": "お知らせと更新", - "@aboutTelegramChannelSubtitle": { - "description": "Subtitle for Telegram channel" - }, - "@dialogDisableAndClear": { - "description": "Confirmation action to disable download history and clear existing entries" - }, - "@homeSearchHintProvider": { - "description": "Placeholder for the main search field when a provider is selected", - "placeholders": { - "providerName": { - "type": "String" - } - } - }, - "metadataProvidersTitle": "Metadata Provider Priority", - "@metadataProvidersTitle": { - "description": "Settings item title for metadata provider order" - }, - "trackAddToQueue": "Add to queue", - "audioAnalysisDecodedFormat": "Decoded Format", - "@audioAnalysisDecodedFormat": { - "description": "Decoded sample format metric label" - }, - "@editMetadataSelectEmpty": { - "description": "Button to select only fields that are currently empty" - }, - "collectionAlreadyInPlaylist": "Already in \"{playlistName}\"", - "discographyAlbumsOnlySubtitle": "{count} tracks from {albumCount} albums", - "@discographyAlbumsOnlySubtitle": { - "description": "Subtitle showing album tracks count", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } - }, - "setupNotificationEnable": "通知を有効化する", - "@setupNotificationEnable": { - "description": "Button to enable notifications" - }, - "settingsAppearanceSubtitle": "テーマ、カラー、画面", - "@settingsAppearanceSubtitle": { - "description": "Appearance settings description" - }, - "@notifUpdateFailedBody": { - "description": "Notification body when app update download fails" - }, - "@aboutOriginalCreator": { - "description": "Role description for original creator" - }, - "libraryBuiltInPreviewPlayer": "Built-in preview player", - "@libraryBuiltInPreviewPlayer": { - "description": "Setting option to use the built-in preview player" - }, - "tooltipPlay": "再生", - "@tooltipPlay": { - "description": "Tooltip - play button" - }, - "@safMigrationMessage2": { - "description": "Second paragraph of SAF migration dialog" - }, - "@extensionsSearchProvider": { - "description": "Setting - search provider selection" - }, - "libraryAboutDescription": "Scans your existing music collection to detect duplicates when downloading. Supports FLAC, M4A, MP3, Opus, and OGG formats. Metadata is read from file tags when available.", - "@libraryAboutDescription": { - "description": "Description of local library feature" - }, - "downloadAskBeforeDownload": "ダウンロード前に確認する", - "nowPlayingNoMetadata": "No metadata available", - "@nowPlayingNoMetadata": { - "description": "Empty state when track metadata cannot be loaded" - }, - "trackInstrumental": "インストゥルメンタルのトラック", - "@trackInstrumental": { - "description": "Message when track is instrumental (no lyrics)" - }, - "@collectionWishlistEmptyTitle": { - "description": "Wishlist empty state title" - }, - "selectionBatchConvertConfirmMessageLosslessCapped": "Convert {count} {count, plural, =1{track} other{tracks}} to {format} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original files will be deleted after conversion.", - "downloadDeduplication": "Skip Duplicate Downloads", - "libraryFilterSortOldest": "Oldest", - "@libraryFilterSortOldest": { - "description": "Sort option - oldest first" - }, - "setupSkip": "今はスキップ", - "@setupSkip": { - "description": "Skip current step button" - }, - "@setupFolderDescription": { - "description": "Explanation for folder selection" - }, - "@settingsLogsSubtitle": { - "description": "Logs settings description" - }, - "storeNewRepoUrlLabel": "New Repository URL", - "@storeNewRepoUrlLabel": { - "description": "Label for the new repository URL field inside the dialog" - }, - "cacheClearConfirmMessage": "This will clear cached data for {target}. Downloaded music files will not be deleted.", - "@cacheClearConfirmMessage": { - "description": "Dialog message before clearing selected cache", - "placeholders": { - "target": { - "type": "String" - } - } - }, - "trackMetadataPlay": "再生", - "@libraryEnableLocalLibrary": { - "description": "Toggle to enable library scanning" - }, - "optionsUpdateChannel": "更新チャンネル", - "@optionsUpdateChannel": { - "description": "Stable vs preview releases" - }, - "@downloadCreatePlaylistSourceFolderDisabled": { - "description": "Subtitle when playlist folder is disabled" - }, - "@extensionRefreshStatus": { - "description": "Tooltip for refreshing extension service health status" - }, - "backupRestoreRestartHint": "Restart the app to make sure every change is applied.", - "@backupRestoreRestartHint": { - "description": "Hint shown after restoring that an app restart is recommended" - }, - "@snackbarExtensionInstalledEnable": { - "description": "Snackbar after installing an extension from the repo tab", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "settingsAutoExportFailedSubtitle": "Save failed downloads to TXT file automatically", - "@settingsAutoExportFailedSubtitle": { - "description": "Subtitle for auto-export setting" - }, - "searchSortArtistAZ": "Artist (A-Z)", - "@searchSortArtistAZ": { - "description": "Sort option - artist ascending" - }, - "editMetadataFieldAlbumArtist": "Album Artist", - "@editMetadataFieldAlbumArtist": { - "description": "Chip label for album artist field in auto-fill selector" - }, - "@queueEmptyHistory": { - "description": "Empty state title when download history is empty" - }, - "@dialogDisableHistoryMessage": { - "description": "Confirmation dialog message shown before disabling download history" - }, - "queueFlacNoReliableMatches": "No reliable online matches found for the selection", - "@queueFlacNoReliableMatches": { - "description": "Snackbar when no safe FLAC redownload matches were found" - }, - "trackOpenInDeezer": "Deezer で開く", - "@trackOpenInDeezer": { - "description": "Action - open track in Deezer app" - }, - "setupChooseFromFilesSubtitle": "iCloud またはその他の場所を選択", - "@setupChooseFromFilesSubtitle": { - "description": "Subtitle for file picker" - }, - "artistMonthlyListeners": "{count} 人の月間リスナー", - "@artistMonthlyListeners": { - "description": "Monthly listener count display", - "placeholders": { - "count": { - "type": "String", - "description": "Formatted listener count" - } - } - }, - "@downloadLossyAacSubtitle": { - "description": "Subtitle for AAC/M4A 320kbps lossy option" - }, - "cacheSectionStorage": "キャッシュ済みデータ", - "@cacheSectionStorage": { - "description": "Section header for cache entries" - }, - "@libraryAutoScanWeekly": { - "description": "Auto scan once per week" - }, - "tutorialDownloadCompletedSemantics": "Download completed", - "@tutorialDownloadCompletedSemantics": { - "description": "Accessibility label for completed download state in tutorial demo" - }, - "@logNoLogsYet": { - "description": "Empty state title" - }, - "@selectionDeletePlaylistsCount": { - "description": "Button label for deleting multiple selected playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadSeparateSinglesEnabled": "Singles and EPs saved in a separate folder", - "@downloadSeparateSinglesEnabled": { - "description": "Subtitle when separate singles folder is on" - }, - "setupAppDocumentsFolder": "アプリのドキュメントフォルダ", - "@setupAppDocumentsFolder": { - "description": "iOS documents folder option" - }, - "storeLoadError": "Failed to load repository", - "settingsDownloadNetwork": "ダウンロードネットワーク", - "metadataSaveFailedStorage": "Failed to write metadata back to storage", - "@logAutoScrollOff": { - "description": "Tooltip when auto-scroll is disabled on the log screen" - }, - "@trackConvertFormat": { - "description": "Menu item - convert audio format" - }, - "optionsArtistTagModeJoined": "Single joined value", - "@optionsArtistTagModeJoined": { - "description": "Artist tag mode option that joins multiple artists into one value" - }, - "@dateYesterday": { - "description": "Relative date - yesterday" - }, - "@settingsExtensionsSubtitle": { - "description": "Extensions settings description" - }, - "searchSortArtistZA": "Artist (Z-A)", - "@extensionSettings": { - "description": "Section header - extension settings" - }, - "@extensionOauthConnectHint": { - "description": "Hint for an OAuth login link field before connecting Spotify" - }, - "@notifUpdateReady": { - "description": "Notification title when app update download is complete" - }, - "@regionCountryMX": { - "description": "Country name for SongLink region picker" - }, - "@nowPlayingOpenInExternalPlayer": { - "description": "Menu item to open the current track in an external player" - }, - "trackConvertDithering": "Dithering", - "@trackConvertDithering": { - "description": "Section label for lossless conversion dithering options" - }, - "settingsDownloadSubtitle": "Service, quality, fallback", - "@settingsDownloadSubtitle": { - "description": "Download settings description" - }, - "libraryLastScanned": "最終スキャン: {time}", - "@libraryLastScanned": { - "description": "Last scan time display", - "placeholders": { - "time": { - "type": "String" - } - } - }, - "setupIosEmptyFolderWarning": "iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.", - "@setupIosEmptyFolderWarning": { - "description": "iOS folder selection warning" - }, - "@storeAddRepoDescription": { - "description": "Store setup screen - explanatory text" - }, - "@snackbarFailedToInstallNamed": { - "description": "Snackbar when extension install fails in the repo tab", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "@collectionAddedTracksToPlaylist": { - "description": "Snackbar after adding multiple tracks to a playlist", - "placeholders": { - "count": { - "type": "int" - }, - "playlistName": { - "type": "String" - } - } - }, - "updateNew": "新着", - "@updateNew": { - "description": "Label for new version" - }, - "settingsExtensionsSubtitle": "ダウンロードプロバイダーを管理", - "@albumFolderArtistAlbumSinglesSubtitle": { - "description": "Folder structure example" - }, - "trackReEnrichSelectAll": "Select All", - "@trackReEnrichSelectAll": { - "description": "Select all fields checkbox in re-enrich" - }, - "@extensionsUninstall": { - "description": "Uninstall extension button" - }, - "@downloadUseAlbumArtistForFoldersTrackSubtitle": { - "description": "Subtitle when track artist is used for folder names" - }, - "@logIssueNetworkErrorLabel": { - "description": "Diagnostic badge label for generic network errors" - }, - "albumFolderArtistYearAlbumSubtitle": "アルバム/アーティスト名/[2005] アルバム名/", - "@albumFolderArtistYearAlbumSubtitle": { - "description": "Folder structure example" - }, - "itemCount": "{count} {count, plural, =1{item} other{items}}", - "@itemCount": { - "description": "Generic item count label", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "discographyFetchingTracks": "トラックを取得中です...", - "@discographyFetchingTracks": { - "description": "Progress - fetching album tracks" - }, - "@libraryFolder": { - "description": "Folder selection setting" - }, - "queueEmptyAlbums": "No album downloads", - "@queueEmptyAlbums": { - "description": "Empty state title when no album downloads exist" - }, - "@metadataProviderPriorityDescription": { - "description": "Metadata priority page description" - }, - "@extensionVerificationHelpTitleManual": { - "description": "Dialog title when automatic browser launch for verification fails" - }, - "extensionError": "エラー", - "@extensionError": { - "description": "Extension detail - error message" - }, - "@trackLyricsLoadFailed": { - "description": "Message when lyrics loading fails" - }, - "@downloadedAlbumDeleteCount": { - "description": "Delete button text with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@extensionsNoHomeFeedExtensions": { - "description": "Extensions page - shown when no installed extension has home feed" - }, - "@collectionArtistCount": { - "description": "Artist count label for favorite artists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "backupContentsArtists": "{count, plural, =1{1 favorite artist} other{{count} favorite artists}}", - "@backupContentsArtists": { - "description": "Backup contents row for favorite artists count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@trackRemoveFromDevice": { - "description": "Action - delete downloaded file" - }, - "lyricsProvidersEnabledSection": "Enabled ({count})", - "@lyricsProvidersEnabledSection": { - "description": "Section header for enabled providers", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@cueSplitTitle": { - "description": "Title for CUE split bottom sheet" - }, - "@downloadedAlbumSelectedCount": { - "description": "Selection count indicator", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@trackOptionRemoveFromWishlist": { - "description": "Bottom sheet action label - remove track from wishlist" - }, - "notifDownloadingTrack": "Downloading {trackName}", - "@notifDownloadingTrack": { - "description": "Notification title while downloading a track", + "snackbarAlreadyInLibrary": "\"{trackName}\" already exists in your library", + "@snackbarAlreadyInLibrary": { + "description": "Snackbar - track already exists in local library", "placeholders": { "trackName": { "type": "String" } } }, - "@discographySkippedDownloaded": { - "description": "Snackbar - with skipped tracks count", + "snackbarHistoryCleared": "履歴を消去しました", + "@snackbarHistoryCleared": { + "description": "Snackbar - history deleted" + }, + "snackbarDeletedTracks": "{count} {count, plural, =1{個のトラック} other{個のトラック}}を削除", + "@snackbarDeletedTracks": { + "description": "Snackbar - tracks deleted", "placeholders": { - "added": { - "type": "int" - }, - "skipped": { + "count": { "type": "int" } } }, - "@tutorialSettingsTip3": { - "description": "Tutorial settings tip 3" - }, - "@announcementUnableToOpenLink": { - "description": "Snackbar shown when an announcement CTA link cannot be opened" - }, - "trackReleaseDate": "リリース日", - "discographySelectedCount": "{count} 個を選択済み", - "collectionArtistCount": "{count, plural, =1{1 artist} other{{count} artists}}", - "logIssueNetworkErrorLabel": "NETWORK ERROR", - "updateStartingDownload": "ダウンロードを開始中...", - "@updateStartingDownload": { - "description": "Update status - initializing" - }, - "trackDiscNumber": "ディスク番号", - "@trackDiscNumber": { - "description": "Metadata label - disc number" - }, - "optionsUsingExtension": "拡張の使用: {extensionName}", - "@optionsUsingExtension": { - "description": "Shows active extension name", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "dialogDisableHistoryTitle": "Turn off download history?", - "tutorialWelcomeTip3": "Embed metadata, cover art, lyrics, and release information automatically", - "@tutorialWelcomeTip3": { - "description": "Tutorial welcome tip 3" - }, - "@collectionPlaylistEmptySubtitle": { - "description": "Playlist empty state subtitle" - }, - "@tutorialSearchHint": { - "description": "Placeholder shown in the tutorial search demo" - }, - "cleanupOrphanedDownloadsNone": "No orphaned entries found", - "discographySkippedDownloaded": "{added} added, {skipped} already downloaded", - "@updateDontRemind": { - "description": "Update button - skip this version" - }, - "@snackbarLoadingCueSheet": { - "description": "Snackbar while loading a CUE sheet file" - }, - "@dialogUninstallExtension": { - "description": "Dialog title - uninstall extension" - }, - "lyricsProvidersTitle": "Lyrics Provider Priority", - "@dialogRemove": { - "description": "Dialog button - remove item" - }, - "snackbarError": "Error: {error}", - "@snackbarError": { - "description": "Generic error snackbar with error detail", + "snackbarCannotOpenFile": "ファイルが開けません: {error}", + "@snackbarCannotOpenFile": { + "description": "Snackbar - file open error", "placeholders": { "error": { "type": "String" } } }, - "@sectionApp": { - "description": "Settings section header" + "snackbarViewQueue": "キューを表示", + "@snackbarViewQueue": { + "description": "Snackbar action - view download queue" }, - "@libraryPlayback": { - "description": "Section header for playback settings in library settings" + "snackbarUrlCopied": "{platform} の URL をクリップボードにコピーしました", + "@snackbarUrlCopied": { + "description": "Snackbar - URL copied", + "placeholders": { + "platform": { + "type": "String", + "description": "Platform name (Spotify/Deezer)" + } + } }, - "@downloadPrimaryArtistOnlyOn": { - "description": "Status label when primary-artist-only folder naming is enabled" + "snackbarFileNotFound": "ファイルがありません", + "@snackbarFileNotFound": { + "description": "Snackbar - file doesn't exist" }, - "lyricsProvidersDiscardContent": "You have unsaved changes that will be lost.", - "previewStop": "Stop preview", - "@previewStop": { - "description": "Tooltip for the button that stops the playing track preview snippet" + "snackbarSelectExtFile": ".spotiflac-ext ファイルを選択してください", + "@snackbarSelectExtFile": { + "description": "Snackbar - wrong file type selected" }, - "trackConvertConfirmMessageLossless": "Convert from {sourceFormat} to {targetFormat}? (Lossless — no quality loss)\n\nThe original file will be deleted after conversion.", - "discographyAlbumsOnly": "アルバムのみ", - "@discographyAlbumsOnly": { - "description": "Option - download only albums" + "snackbarProviderPrioritySaved": "プロバイダーの優先度を保存しました", + "@snackbarProviderPrioritySaved": { + "description": "Snackbar - provider order saved" }, - "@editMetadataFieldCopyright": { - "description": "Chip label for copyright field in auto-fill selector" + "snackbarMetadataProviderSaved": "メタデータプロバイダーの優先度を保存しました", + "@snackbarMetadataProviderSaved": { + "description": "Snackbar - metadata provider order saved" }, - "extensionsFallbackSubtitle": "Choose which installed download extensions can be used as fallback", - "aboutSocial": "ソーシャル", - "@aboutSocial": { - "description": "Section for social links" - }, - "audioAnalysisNyquist": "Nyquist", - "trackCoverSelected": "Selected cover", - "@trackCoverSelected": { - "description": "Label for the newly selected cover preview" - }, - "downloadDeduplicationEnabled": "Already-downloaded tracks will be skipped", - "@downloadDeduplicationEnabled": { - "description": "Subtitle when deduplication is on" - }, - "homeEmptyTitle": "No search providers yet", - "@homeEmptyTitle": { - "description": "Title shown on home when no providers are available yet" - }, - "@extensionHealthUnknown": { - "description": "Extension service health status - unknown" - }, - "storeInstalled": "インストール済み", - "@storeInstalled": { - "description": "Already installed badge" - }, - "trackReplayGainSuccess": "ReplayGain tags added", - "@trackReplayGainSuccess": { - "description": "Snackbar message after ReplayGain tags written for a single track" - }, - "libraryShowDuplicateIndicatorSubtitle": "Show when searching for existing tracks", - "@collectionPlaylistRenamed": { - "description": "Snackbar after renaming playlist" - }, - "@trackConvertResamplerSoxr": { - "description": "Lossless conversion SoX resampler option" - }, - "@dialogUnsavedChanges": { - "description": "Dialog message - unsaved changes" - }, - "dialogDownload": "Download", - "@dialogDownload": { - "description": "Confirm button in Download All dialog" - }, - "trackLyricsLoadFailed": "歌詞の読み込みに失敗しました", - "@backupContentsTitle": { - "description": "Header above the list summarizing what the backup contains" - }, - "@safMigrationTitle": { - "description": "Title of SAF migration dialog" - }, - "@trackReEnrichFieldLyrics": { - "description": "Checkbox label for lyrics field in re-enrich" - }, - "setupPermissionDeniedMessage": "Permission denied. Please grant all permissions to continue.", - "@setupPermissionDeniedMessage": { - "description": "Error when permission denied" - }, - "settingsDownloadNetworkWifiOnly": "Wi-Fi のみ", - "@settingsDownloadNetworkWifiOnly": { - "description": "Network option - only use WiFi" - }, - "@backupIncludeSecrets": { - "description": "Toggle to include secret extension settings (tokens, API keys) in the backup" - }, - "@libraryFilterMetadataMissingAlbumArtist": { - "description": "Filter option - items missing album artist" - }, - "@extensionHealthServiceUnknown": { - "description": "Tooltip for unknown extension service health" + "snackbarExtensionInstalled": "{extensionName} をインストールしました。", + "@snackbarExtensionInstalled": { + "description": "Snackbar - extension installed successfully", + "placeholders": { + "extensionName": { + "type": "String" + } + } }, "snackbarExtensionUpdated": "{extensionName} を更新しました。", "@snackbarExtensionUpdated": { @@ -2999,114 +1055,365 @@ } } }, - "homeEmptySubtitle": "Install an extension to continue.", - "@settingsTitle": { - "description": "Settings screen title" + "snackbarFailedToInstall": "拡張のインストールに失敗しました", + "@snackbarFailedToInstall": { + "description": "Snackbar - extension install error" }, - "@libraryFilterMetadataIncorrectIsrcFormat": { - "description": "Filter option - items with an invalid ISRC format" + "snackbarFailedToUpdate": "拡張の更新に失敗しました", + "@snackbarFailedToUpdate": { + "description": "Snackbar - extension update error" }, - "@notifLibraryScanComplete": { - "description": "Notification title when library scan finishes" + "errorRateLimited": "レート制限", + "@errorRateLimited": { + "description": "Error title - too many requests" }, - "@logIssueIspBlockingLabel": { - "description": "Diagnostic badge label when ISP blocking is detected" + "errorRateLimitedMessage": "Too many requests. Please wait a moment before searching again.", + "@errorRateLimitedMessage": { + "description": "Error message - rate limit explanation" }, - "tutorialDownloadTitle": "音楽をダウンロード中", - "@tutorialDownloadTitle": { - "description": "Tutorial download page title" + "errorNoTracksFound": "トラックがありません", + "@errorNoTracksFound": { + "description": "Error - search returned no results" }, - "unknownTitle": "Unknown title", - "@unknownTitle": { - "description": "Fallback track title when metadata is missing" + "searchEmptyResultSubtitle": "Try another keyword", + "@searchEmptyResultSubtitle": { + "description": "Subtitle shown under the empty search result state on the home screen" }, - "navLibrary": "ライブラリ", - "@navLibrary": { - "description": "Bottom navigation - Library tab" + "errorUrlNotRecognized": "Link not recognized", + "@errorUrlNotRecognized": { + "description": "Error title - URL not handled by any extension or service" }, - "@snackbarAlreadyDownloaded": { - "description": "Snackbar - track already exists", + "errorUrlNotRecognizedMessage": "This link is not supported. Make sure the URL is correct and a compatible extension is installed.", + "@errorUrlNotRecognizedMessage": { + "description": "Error message - URL not recognized explanation" + }, + "errorUrlFetchFailed": "Failed to load content from this link. Please try again.", + "@errorUrlFetchFailed": { + "description": "Error message - generic URL fetch failure" + }, + "errorMissingExtensionSource": "{item} を読み込めません: 拡張ソースがありません", + "@errorMissingExtensionSource": { + "description": "Error - extension source not available", "placeholders": { - "trackName": { + "item": { "type": "String" } } }, - "editMetadataSelectAll": "All", - "@editMetadataSelectAll": { - "description": "Button to select all fields for auto-fill" + "actionPause": "一時停止", + "@actionPause": { + "description": "Action button - pause download" }, - "storeEmptyNoExtensions": "No extensions available", - "@storeEmptyNoExtensions": { - "description": "Message when store has no extensions" + "actionResume": "再開", + "@actionResume": { + "description": "Action button - resume download" }, - "optionsUpdateChannelWarning": "Preview may contain bugs or incomplete features", - "@optionsUpdateChannelWarning": { - "description": "Warning about preview channel" + "actionCancel": "キャンセル", + "@actionCancel": { + "description": "Action button - cancel operation" }, - "@collectionPlaylistNameHint": { - "description": "Hint text for playlist name input" + "actionSelectAll": "すべて選択", + "@actionSelectAll": { + "description": "Action button - select all items" }, - "notifLibraryScanComplete": "Library scan complete", - "editMetadataFieldIsrc": "ISRC", - "@editMetadataFieldIsrc": { - "description": "Chip label for ISRC field in auto-fill selector" + "actionDeselect": "選択を解除", + "@actionDeselect": { + "description": "Action button - deselect all" }, - "@libraryFolderHint": { - "description": "Placeholder when no folder selected" - }, - "homeSearchHintDefault": "Paste supported URL or search...", - "@homeSearchHintDefault": { - "description": "Default placeholder for the main search field on Home" - }, - "extensionsNoExtensionsSubtitle": "新しいプロバイダーを追加するには .spotiflac-ext ファイルをインストールします", - "@extensionsNoExtensionsSubtitle": { - "description": "Empty state subtitle" - }, - "@extensionEnterValue": { - "description": "Hint for editing an extension setting value" - }, - "backupRestoreConfirmTitle": "Restore this backup?", - "@backupRestoreConfirmTitle": { - "description": "Confirmation dialog title before restoring a backup" - }, - "@libraryScanSelectFolderFirst": { - "description": "Message when trying to scan without folder" - }, - "@qualityHiResFlac": { - "description": "Quality option - high resolution FLAC" - }, - "aboutSpecialThanks": "スペシャルサンクス", - "@aboutSpecialThanks": { - "description": "Section for special thanks" - }, - "storeInstall": "インストール", - "@storeInstall": { - "description": "Install extension button" - }, - "@collectionWishlistEmptySubtitle": { - "description": "Wishlist empty state subtitle" - }, - "historyFilterAlbums": "アルバム", - "extensionCustomUrlHandlingSubtitle": "This extension can handle links from these sites", - "@extensionCustomUrlHandlingSubtitle": { - "description": "Extension detail subtitle for custom URL handling" - }, - "filenameShowAdvancedTagsDescription": "Enable formatted tags for track padding and date patterns", - "@aboutReportIssue": { - "description": "Link to report bugs" - }, - "@folderOrganizationByPlaylist": { - "description": "Folder option - playlist folders" - }, - "@dateWeeksAgo": { - "description": "Relative date - weeks ago", + "selectionSelected": "{count} 個を選択済み", + "@selectionSelected": { + "description": "Selection count indicator", "placeholders": { "count": { "type": "int" } } }, + "selectionAllSelected": "すべてのトラックを選択済み", + "@selectionAllSelected": { + "description": "Status - all items selected" + }, + "selectionSelectToDelete": "トラックを選択で削除", + "@selectionSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "progressFetchingMetadata": "メタデータを取得中... {current}/{total}", + "@progressFetchingMetadata": { + "description": "Progress indicator - loading track info", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "progressReadingCsv": "CSV を読み取り中...", + "@progressReadingCsv": { + "description": "Progress indicator - parsing CSV file" + }, + "searchSongs": "曲", + "@searchSongs": { + "description": "Search result category - songs" + }, + "searchArtists": "アーティスト", + "@searchArtists": { + "description": "Search result category - artists" + }, + "searchAlbums": "アルバム", + "@searchAlbums": { + "description": "Search result category - albums" + }, + "searchPlaylists": "プレイリスト", + "@searchPlaylists": { + "description": "Search result category - playlists" + }, + "searchSortTitle": "Sort Results", + "@searchSortTitle": { + "description": "Bottom sheet title for search sort options" + }, + "searchSortDefault": "Default", + "@searchSortDefault": { + "description": "Sort option - default API order" + }, + "searchSortTitleAZ": "Title (A-Z)", + "@searchSortTitleAZ": { + "description": "Sort option - title ascending" + }, + "searchSortTitleZA": "Title (Z-A)", + "@searchSortTitleZA": { + "description": "Sort option - title descending" + }, + "searchSortArtistAZ": "Artist (A-Z)", + "@searchSortArtistAZ": { + "description": "Sort option - artist ascending" + }, + "searchSortArtistZA": "Artist (Z-A)", + "@searchSortArtistZA": { + "description": "Sort option - artist descending" + }, + "searchSortDurationShort": "Duration (Shortest)", + "@searchSortDurationShort": { + "description": "Sort option - shortest duration first" + }, + "searchSortDurationLong": "Duration (Longest)", + "@searchSortDurationLong": { + "description": "Sort option - longest duration first" + }, + "searchSortDateOldest": "Release Date (Oldest)", + "@searchSortDateOldest": { + "description": "Sort option - oldest release first" + }, + "searchSortDateNewest": "Release Date (Newest)", + "@searchSortDateNewest": { + "description": "Sort option - newest release first" + }, + "tooltipPlay": "再生", + "@tooltipPlay": { + "description": "Tooltip - play button" + }, + "filenameFormat": "ファイル名の形式", + "@filenameFormat": { + "description": "Setting title - filename pattern" + }, + "filenameShowAdvancedTags": "高度なタグを表示", + "@filenameShowAdvancedTags": { + "description": "Toggle label for showing advanced filename tags" + }, + "filenameShowAdvancedTagsDescription": "Enable formatted tags for track padding and date patterns", + "@filenameShowAdvancedTagsDescription": { + "description": "Description for advanced filename tag toggle" + }, + "folderOrganizationNone": "構成がありません", + "@folderOrganizationNone": { + "description": "Folder option - flat structure" + }, + "folderOrganizationByPlaylist": "By Playlist", + "@folderOrganizationByPlaylist": { + "description": "Folder option - playlist folders" + }, + "folderOrganizationByPlaylistSubtitle": "Separate folder for each playlist", + "@folderOrganizationByPlaylistSubtitle": { + "description": "Subtitle for playlist folder option" + }, + "folderOrganizationByArtist": "アーティスト別", + "@folderOrganizationByArtist": { + "description": "Folder option - artist folders" + }, + "folderOrganizationByAlbum": "アルバム別", + "@folderOrganizationByAlbum": { + "description": "Folder option - album folders" + }, + "folderOrganizationByArtistAlbum": "アーティスト/アルバム", + "@folderOrganizationByArtistAlbum": { + "description": "Folder option - nested folders" + }, + "folderOrganizationDescription": "ダウンロードしたファイルをフォルダに整理する", + "@folderOrganizationDescription": { + "description": "Folder organization sheet description" + }, + "folderOrganizationNoneSubtitle": "ダウンロードフォルダ内のすべてのファイル", + "@folderOrganizationNoneSubtitle": { + "description": "Subtitle for no organization option" + }, + "folderOrganizationByArtistSubtitle": "Separate folder for each artist", + "@folderOrganizationByArtistSubtitle": { + "description": "Subtitle for artist folder option" + }, + "folderOrganizationByAlbumSubtitle": "Separate folder for each album", + "@folderOrganizationByAlbumSubtitle": { + "description": "Subtitle for album folder option" + }, + "folderOrganizationByArtistAlbumSubtitle": "Nested folders for artist and album", + "@folderOrganizationByArtistAlbumSubtitle": { + "description": "Subtitle for nested folder option" + }, + "updateAvailable": "更新が利用可能です", + "@updateAvailable": { + "description": "Update dialog title" + }, + "updateLater": "後で", + "@updateLater": { + "description": "Update button - dismiss" + }, + "updateStartingDownload": "ダウンロードを開始中...", + "@updateStartingDownload": { + "description": "Update status - initializing" + }, + "updateDownloadFailed": "ダウンロードに失敗しました", + "@updateDownloadFailed": { + "description": "Update error title" + }, + "updateFailedMessage": "更新のダウンロードに失敗しました", + "@updateFailedMessage": { + "description": "Update error message" + }, + "updateNewVersionReady": "新しいバージョンの準備ができています", + "@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": "現在", + "@updateCurrent": { + "description": "Label for current version" + }, + "updateNew": "新着", + "@updateNew": { + "description": "Label for new version" + }, + "updateDownloading": "ダウンロード中...", + "@updateDownloading": { + "description": "Update status - downloading" + }, + "updateWhatsNew": "新着情報", + "@updateWhatsNew": { + "description": "Changelog section title" + }, + "updateDownloadInstall": "ダウンロードとインストール", + "@updateDownloadInstall": { + "description": "Update button - download and install" + }, + "updateDontRemind": "通知しない", + "@updateDontRemind": { + "description": "Update button - skip this version" + }, + "providerPriorityTitle": "プロバイダーの優先度", + "@providerPriorityTitle": { + "description": "Provider priority page title" + }, + "providerPriorityDescription": "Drag to reorder download providers. The app will try providers from top to bottom when downloading tracks.", + "@providerPriorityDescription": { + "description": "Provider priority page description" + }, + "providerPriorityInfo": "If a track is not available on the first provider, the app will automatically try the next one.", + "@providerPriorityInfo": { + "description": "Info tip about fallback behavior" + }, + "providerPriorityFallbackExtensionsDescription": "Choose which installed download extensions can be used during automatic fallback.", + "@providerPriorityFallbackExtensionsDescription": { + "description": "Section description for extension fallback selection" + }, + "providerPriorityFallbackExtensionsHint": "Only enabled extensions with download-provider capability are listed here.", + "@providerPriorityFallbackExtensionsHint": { + "description": "Hint below the extension fallback selection list" + }, + "providerExtension": "拡張", + "@providerExtension": { + "description": "Label for extension-provided providers" + }, + "metadataProviderPriorityTitle": "メタデータの優先度", + "@metadataProviderPriorityTitle": { + "description": "Metadata priority page title" + }, + "metadataProviderPriorityDescription": "Drag to reorder metadata providers. The app will try providers from top to bottom when searching for tracks and fetching metadata.", + "@metadataProviderPriorityDescription": { + "description": "Metadata priority page description" + }, + "metadataProviderPriorityInfo": "Deezer has no rate limits and is recommended as primary. Spotify may rate limit after many requests.", + "@metadataProviderPriorityInfo": { + "description": "Info tip about rate limits" + }, + "logTitle": "ログ", + "@logTitle": { + "description": "Logs screen title" + }, + "logCopied": "ログをクリップボードにコピーしました", + "@logCopied": { + "description": "Snackbar - logs copied" + }, + "logSearchHint": "ログを検索...", + "@logSearchHint": { + "description": "Log search placeholder" + }, + "logFilterLevel": "レベル", + "@logFilterLevel": { + "description": "Filter by log level" + }, + "logFilterSection": "フィルター", + "@logFilterSection": { + "description": "Filter section title" + }, + "logShareLogs": "ログを共有", + "@logShareLogs": { + "description": "Share button tooltip" + }, + "logClearLogs": "ログを消去", + "@logClearLogs": { + "description": "Clear button tooltip" + }, + "logClearLogsTitle": "ログを消去", + "@logClearLogsTitle": { + "description": "Clear logs dialog title" + }, + "logClearLogsMessage": "すべてのログを消去してもよろしいですか?", + "@logClearLogsMessage": { + "description": "Clear logs confirmation message" + }, + "logFilterBySeverity": "Filter logs by severity", + "@logFilterBySeverity": { + "description": "Filter dialog title" + }, + "logNoLogsYet": "まだログはありません", + "@logNoLogsYet": { + "description": "Empty state title" + }, + "logNoLogsYetSubtitle": "Logs will appear here as you use the app", + "@logNoLogsYetSubtitle": { + "description": "Empty state subtitle" + }, "logEntriesFiltered": "エントリー ({count} 個をフィルター済み)", "@logEntriesFiltered": { "description": "Log count with filter active", @@ -3116,173 +1423,6 @@ } } }, - "@lyricsModeDescription": { - "description": "Lyrics mode picker description" - }, - "@setupAppDocumentsFolderSubtitle": { - "description": "Subtitle for documents folder" - }, - "storeAddRepoButton": "Add Repository", - "@storeAddRepoButton": { - "description": "Button to submit a new repository URL" - }, - "@collectionLovedEmptyTitle": { - "description": "Loved empty state title" - }, - "aboutReportIssue": "問題を報告する", - "snackbarFailedToWriteStorage": "Failed to write back to storage", - "@snackbarFailedToWriteStorage": { - "description": "Snackbar when writing metadata back to file fails" - }, - "errorInvalidFolderSelected": "Invalid folder selected", - "allFilesAccessDisabledMessage": "All Files Access disabled. The app will use limited storage access.", - "@allFilesAccessDisabledMessage": { - "description": "Snackbar message when user disables all files access" - }, - "downloadMusixmatchLanguageCode": "Language code", - "@downloadMusixmatchLanguageCode": { - "description": "Label for Musixmatch language input field" - }, - "dialogUnsavedChanges": "You have unsaved changes. Do you want to discard them?", - "setupChooseFromFiles": "ファイルから選択", - "@setupChooseFromFiles": { - "description": "iOS file picker option" - }, - "@collectionFavoriteArtistsEmptySubtitle": { - "description": "Favorite artists empty state subtitle" - }, - "downloadLossy320FormatDesc": "Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.", - "@backupRestoreConfirmButton": { - "description": "Confirm button to proceed with restore" - }, - "@queueEmptyAlbumsSubtitle": { - "description": "Empty state subtitle for album downloads" - }, - "collectionRemovedFromWishlist": "\"{trackName}\" removed from Wishlist", - "@collectionRemovedFromWishlist": { - "description": "Snackbar after removing track from wishlist", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "extensionsInstalledSuccess": "拡張のインストールが成功しました", - "progressReadingCsv": "CSV を読み取り中...", - "@progressReadingCsv": { - "description": "Progress indicator - parsing CSV file" - }, - "artistReleases": "Releases", - "@artistReleases": { - "description": "Section header for all artist releases" - }, - "extensionVerificationBrowserTitle": "Verification browser", - "@optionsDefaultSearchTabSubtitle": { - "description": "Subtitle for the preferred default search tab setting" - }, - "optionsArtistTagModeJoinedSubtitle": "Write one ARTIST value like \"Artist A, Artist B\" for maximum player compatibility.", - "downloadLossy320": "Lossy 320kbps", - "@downloadLossy320": { - "description": "Quality option label for lossy 320kbps" - }, - "queueFlacAction": "Queue FLAC", - "@queueFlacAction": { - "description": "Action/button label for queueing FLAC redownloads for local tracks" - }, - "@setupDownloadLocationIosMessage": { - "description": "iOS-specific folder info" - }, - "trackConvertOriginal": "Original", - "sectionLyricsProviderOptions": "Provider Options", - "nowPlayingTitle": "Now Playing", - "@nowPlayingTitle": { - "description": "Title for the now playing screen" - }, - "@extensionHealthChecksConfigured": { - "description": "Extension service health check count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@cacheClearAll": { - "description": "Button label to clear all caches" - }, - "a11yDeselectTrack": "Deselect track", - "@a11yDeselectTrack": { - "description": "Accessibility label for deselecting a track" - }, - "@lyricsProvidersInfoText": { - "description": "Info tip on lyrics provider priority page" - }, - "queueEmptyHistory": "No download history", - "dialogClear": "消去", - "@dialogClear": { - "description": "Dialog button - clear items" - }, - "allFilesAccessDescription": "Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.", - "@allFilesAccessDescription": { - "description": "Description explaining when to enable all files access" - }, - "trackConvertConfirmTitle": "変換を確認", - "storeCategoryLyrics": "Lyrics", - "@storeCategoryLyrics": { - "description": "Store extension category - lyrics" - }, - "@lyricsProvidersDescription": { - "description": "Description on the lyrics provider priority page" - }, - "tooltipLoveAll": "Love All", - "downloadDirectory": "ダウンロードディレクトリ", - "@downloadDirectory": { - "description": "Setting - download folder" - }, - "@tutorialExtensionsTip2": { - "description": "Tutorial extensions tip 2" - }, - "libraryFolder": "ライブラリのフォルダ", - "@metadataProviderPriorityTitle": { - "description": "Metadata priority page title" - }, - "@cleanupOrphanedDownloadsResult": { - "description": "Snackbar after orphan cleanup", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cacheExploreFeedDesc": "Explore tab content (new releases, trending). Will refresh on next visit.", - "@cacheExploreFeedDesc": { - "description": "Description of what explore feed cache contains" - }, - "a11yOpenTrackByArtist": "Open track {trackName} by {artistName}", - "@a11yOpenTrackByArtist": { - "description": "Accessibility label for opening a track item", - "placeholders": { - "trackName": { - "type": "String" - }, - "artistName": { - "type": "String" - } - } - }, - "announcementUnableToOpenLink": "Unable to open link. Please try again.", - "libraryFilterSortAlbumDesc": "Album (Z-A)", - "@libraryFilterSortAlbumDesc": { - "description": "Sort option - album descending" - }, - "trackConvertBitrate": "ビットレート", - "@trackConvertBitrate": { - "description": "Label for bitrate selection" - }, - "audioAnalysisFileSize": "Size", - "extensionHealthServiceOnline": "Service online", - "@extensionHealthServiceOnline": { - "description": "Tooltip for online extension service" - }, "logEntries": "エントリー ({count})", "@logEntries": { "description": "Total log count", @@ -3292,846 +1432,552 @@ } } }, - "trackConvertConfirmMessage": "Convert from {sourceFormat} to {targetFormat} at {bitrate}?\n\nThe original file will be deleted after conversion.", - "@trackConvertConfirmMessage": { - "description": "Confirmation dialog message", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "bitrate": { - "type": "String" - } - } + "channelStable": "安定版", + "@channelStable": { + "description": "Update channel - stable releases" }, - "@optionsArtistTagModeSplitVorbisSubtitle": { - "description": "Subtitle for split Vorbis artist tag mode" + "channelPreview": "プレビュー", + "@channelPreview": { + "description": "Update channel - beta/preview releases" }, - "folderOrganizationByAlbum": "アルバム別", - "@folderOrganizationByAlbum": { - "description": "Folder option - album folders" + "sectionSearchSource": "検索ソース", + "@sectionSearchSource": { + "description": "Settings section header" }, - "libraryPlayback": "Playback", - "@storeFilterAll": { - "description": "Repo filter - all extensions" + "sectionDownload": "ダウンロード", + "@sectionDownload": { + "description": "Settings section header" }, - "aboutApp": "アプリ", - "@aboutApp": { - "description": "Section for app info" + "sectionPerformance": "パフォーマンス", + "@sectionPerformance": { + "description": "Settings section header" }, - "optionsReplayGainSubtitleOff": "Disabled: no loudness normalization tags", - "@optionsReplayGainSubtitleOff": { - "description": "Subtitle when ReplayGain is disabled" + "sectionApp": "アプリ", + "@sectionApp": { + "description": "Settings section header" }, - "@storeRepoDialogTitle": { - "description": "Title of the change/remove repository dialog" + "sectionData": "データ", + "@sectionData": { + "description": "Settings section header" }, - "settingsLyricsSubtitle": "Embed, mode, providers, language options", - "@settingsLyricsSubtitle": { - "description": "Subtitle for lyrics settings" + "sectionDebug": "デバッグ", + "@sectionDebug": { + "description": "Settings section header" }, - "logIssueIspBlockingLabel": "ISP BLOCKING DETECTED", - "storeFilterIntegration": "統合", - "@storeFilterIntegration": { - "description": "Repo filter - integrations" + "sectionService": "サービス", + "@sectionService": { + "description": "Settings section header" }, - "@lyricsProvidersAtLeastOne": { - "description": "Snackbar when user tries to disable the last enabled provider" - }, - "@appearanceHistoryViewGrid": { - "description": "Grid layout option" - }, - "trackDownloaded": "ダウンロード済み", - "extensionVerificationHelpMessageManual": "SpotiFLAC Mobile could not open the browser automatically. Open this link in your browser, or copy it manually.", - "setupDownloadLocationIosMessage": "On iOS, downloads are saved to the app's Documents folder. You can access them via the Files app.", - "optionsArtistTagModeDescription": "Choose how multiple artists are written into embedded tags.", - "@optionsArtistTagModeDescription": { - "description": "Bottom-sheet description for artist tag mode setting" - }, - "@queueRetryAllFailed": { - "description": "Button to retry every failed download in the queue", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@trackConvertDitherTriangularHp": { - "description": "Lossless conversion high-pass triangular dither option" - }, - "@extensionVerificationCopyLink": { - "description": "Button to copy the extension verification URL" - }, - "searchSongs": "曲", - "@searchSongs": { - "description": "Search result category - songs" - }, - "@appearanceHistoryView": { - "description": "Layout style for history" + "sectionAudioQuality": "オーディオ品質", + "@sectionAudioQuality": { + "description": "Settings section header" }, "sectionFileSettings": "ファイル設定", "@sectionFileSettings": { "description": "Settings section header" }, - "@cancelDownloadTitle": { - "description": "Dialog title when confirming cancellation of an active download" + "sectionLyrics": "歌詞", + "@sectionLyrics": { + "description": "Settings section header" }, - "@cacheLibraryCover": { - "description": "Cache item title for local library cover art images" + "lyricsMode": "歌詞モード", + "@lyricsMode": { + "description": "Setting - how to save lyrics" }, - "audioAnalysisSpectralCutoff": "Spectral Cutoff", - "dialogDelete": "削除", - "@dialogDelete": { - "description": "Dialog button - delete item" + "lyricsModeDescription": "Choose how lyrics are saved with your downloads", + "@lyricsModeDescription": { + "description": "Lyrics mode picker description" }, - "tutorialLibraryDesc": "Downloaded and locally scanned music is organized in your Library.", - "@tutorialLibraryDesc": { - "description": "Tutorial library page description" + "lyricsModeEmbed": "Embed in file", + "@lyricsModeEmbed": { + "description": "Lyrics mode option - embed in audio file" }, - "@queueDownloadSpeedStatus": { - "description": "Queue status while downloading with speed", - "placeholders": { - "speed": { - "type": "String" - } - } + "lyricsModeEmbedSubtitle": "FLAC メタデータに保存された歌詞", + "@lyricsModeEmbedSubtitle": { + "description": "Subtitle for embed option" }, - "@extensionsHomeFeedOffSubtitle": { - "description": "Extensions page - subtitle for off home feed option" - }, - "cacheCleanupResult": "Cleanup completed: {downloadCount} orphaned downloads, {libraryCount} missing library entries", - "@cacheCleanupResult": { - "description": "Snackbar after unused data cleanup", - "placeholders": { - "downloadCount": { - "type": "int" - }, - "libraryCount": { - "type": "int" - } - } - }, - "trackConvertLosslessHint": "Lossless conversion — no quality loss", - "@trackConvertLosslessHint": { - "description": "Hint shown when converting between lossless formats" - }, - "collectionRenamePlaylist": "Rename playlist", - "@collectionRenamePlaylist": { - "description": "Action to rename playlist" - }, - "@libraryFilterTitle": { - "description": "Filter bottom sheet title" - }, - "@storageModeAppFolder": { - "description": "Storage mode option - app-managed folder" - }, - "logTotalErrors": "Total errors: {count}", - "@logTotalErrors": { - "description": "Total error count in log issue analysis", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@setupStorageRequired": { - "description": "Title when storage permission needed" - }, - "@snackbarMetadataProviderSaved": { - "description": "Snackbar - metadata provider order saved" - }, - "@selectionBatchConvertConfirmTitle": { - "description": "Confirmation dialog title for batch conversion" - }, - "extensionsHomeFeedAutoSubtitle": "Automatically select the best available", - "@extensionsHomeFeedAutoSubtitle": { - "description": "Extensions page - subtitle for auto home feed option" - }, - "setupLanguageDescription": "Select your preferred language for the app. You can change this later in Settings.", - "settingsBackupSubtitle": "Move your library, history and settings to a new device", - "@settingsBackupSubtitle": { - "description": "Subtitle for backup and restore settings item" - }, - "recentTypeArtist": "アーティスト", - "@recentTypeArtist": { - "description": "Recent access item type - artist" - }, - "collectionPlaylistEmptySubtitle": "Long-press + on any track to add it here", - "artistCompilations": "コンピレーション", - "@artistCompilations": { - "description": "Section header for compilations" - }, - "snackbarFolderPickerFailed": "Failed to open folder picker: {error}", - "@snackbarFolderPickerFailed": { - "description": "Snackbar shown when folder picker fails to open", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "@optionsDetailedLoggingOn": { - "description": "Status when logging enabled" - }, - "settingsSaveDownloadHistory": "Save download history", - "@settingsSaveDownloadHistory": { - "description": "Settings switch title for storing completed downloads in history" - }, - "@storeCategoryIntegration": { - "description": "Store extension category - integration" - }, - "a11yOpenItemCount": "Open {title}, {count} {count, plural, =1{item} other{items}}", - "@a11yOpenItemCount": { - "description": "Accessibility label for opening a grouped item with count", - "placeholders": { - "title": { - "type": "String" - }, - "count": { - "type": "int" - } - } - }, - "trackFileInfo": "ファイル情報", - "@trackFileInfo": { - "description": "Tab title - file information" - }, - "libraryFilterMetadataMissingAlbumArtist": "Missing album artist", - "audioAnalysisNoClipping": "No clipping", - "tutorialSettingsDesc": "Fine-tune downloads, playback, Library behavior, appearance, and storage.", - "@tutorialSettingsDesc": { - "description": "Tutorial settings page description" + "lyricsModeExternal": "外部 .lrc ファイル", + "@lyricsModeExternal": { + "description": "Lyrics mode option - separate LRC file" }, "lyricsModeExternalSubtitle": "Separate .lrc file for players like Samsung Music", "@lyricsModeExternalSubtitle": { "description": "Subtitle for external option" }, - "trackLoadLyrics": "歌詞を読み込み", - "@trackLoadLyrics": { - "description": "Action - fetch lyrics" + "lyricsModeBoth": "両方", + "@lyricsModeBoth": { + "description": "Lyrics mode option - embed and external" }, - "extensionVerificationHelpTitleWaiting": "Verification still waiting", - "@extensionVerificationHelpTitleWaiting": { - "description": "Dialog title when verification is taking longer than expected" + "lyricsModeBothSubtitle": "Embed and save .lrc file", + "@lyricsModeBothSubtitle": { + "description": "Subtitle for both option" }, - "libraryFilterReset": "リセット", - "@libraryFilterReset": { - "description": "Reset all filters button" - }, - "@downloadAlbumArtistMetadataFull": { - "description": "Status label when album-artist folder filtering uses full metadata" - }, - "storeTitle": "Extension Repo", - "@storeTitle": { - "description": "Repo screen title" - }, - "libraryCleared": "Library cleared", - "@libraryCleared": { - "description": "Snackbar after clearing library" - }, - "queueDownloadCompleted": "Download completed", - "@queueDownloadCompleted": { - "description": "Accessibility label for completed download state in queue" - }, - "libraryTitle": "ローカルライブラリ", - "@libraryTitle": { - "description": "Library settings page title" - }, - "queueAlbumCount": "{count, plural, =1{1 album} other{{count} albums}}", - "@queueAlbumCount": { - "description": "Album count label with plural support", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "libraryClearConfirmTitle": "ライブラリを消去", - "@backupExportSectionTitle": { - "description": "Section title for the export/backup card" - }, - "dialogClearAll": "すべて消去", - "@dialogClearAll": { - "description": "Dialog title - clear all items" - }, - "tutorialExtensionsDesc": "Extensions add search, download, metadata, lyrics, and other integrations.", - "@tutorialExtensionsDesc": { - "description": "Tutorial extensions page description" - }, - "libraryExternalPlayer": "External player", - "@libraryExternalPlayer": { - "description": "Setting option to use an external music player" - }, - "editMetadataFieldGenre": "Genre", - "@tutorialLibraryTitle": { - "description": "Tutorial library page title" - }, - "folderOrganizationByPlaylist": "By Playlist", - "queueTrackCount": "{count, plural, =1{1 track} other{{count} tracks}}", - "@searchSortTitle": { - "description": "Bottom sheet title for search sort options" - }, - "editMetadataSelectNone": "None", - "@historyFilterSingles": { - "description": "Filter chip - show singles only" - }, - "@setupLanguageTitle": { - "description": "Title for the language selection step in setup" - }, - "trackSaveCoverArt": "カバー画像を保存", - "@trackSaveCoverArt": { - "description": "Menu action - save album cover art as file" - }, - "@downloadAlbumFolderStructure": { - "description": "Setting - album folder organization" - }, - "lyricsProvidersAtLeastOne": "At least one provider must remain enabled", - "@notifDownloadCompleteCount": { - "description": "Notification title when download is complete, with count", - "placeholders": { - "completed": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "setupUseDefault": "デフォルトを使用する", - "@setupUseDefault": { - "description": "Button to use default folder" - }, - "logNoLogsYetSubtitle": "Logs will appear here as you use the app", - "@logNoLogsYetSubtitle": { - "description": "Empty state subtitle" - }, - "@dateToday": { - "description": "Relative date - today" - }, - "trackSaveLyricsProgress": "Saving lyrics...", - "@trackSaveLyricsProgress": { - "description": "Snackbar while saving lyrics to file" - }, - "trackCoverSaved": "Cover art saved to {fileName}", - "@trackCoverSaved": { - "description": "Snackbar after cover art saved", - "placeholders": { - "fileName": { - "type": "String" - } - } - }, - "trackReEnrichFieldLyrics": "Lyrics", - "@audioAnalysisRescan": { - "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" - }, - "@downloadNeteaseIncludeRomanizationEnabled": { - "description": "Subtitle when Netease romanization is on" - }, - "dialogDisableAndClear": "Turn off and clear", - "extensionHealthChecksConfigured": "{count} {count, plural, =1{check} other{checks}} configured", - "cleanupOrphanedDownloadsSubtitle": "Remove history entries for files that no longer exist", - "@notifLibraryScanProgressWithTotal": { - "description": "Notification body for library scan progress when total is known", - "placeholders": { - "scanned": { - "type": "int" - }, - "total": { - "type": "int" - }, - "percentage": { - "type": "int" - } - } - }, - "@extensionDetailsTags": { - "description": "Section title for extension tags" - }, - "@albumFolderAlbumOnlySubtitle": { - "description": "Folder structure example" - }, - "@audioAnalysisAnalyzing": { - "description": "Loading text while analyzing audio" - }, - "@settingsDonate": { - "description": "Settings menu item - donate page" - }, - "@collectionPlaylistNameRequired": { - "description": "Validation error for empty playlist name" - }, - "@backupImportSectionDescription": { - "description": "Description for the restore action" - }, - "storeFilterLyrics": "歌詞", - "libraryAutoScan": "Auto Scan", - "@libraryAutoScan": { - "description": "Setting for automatic library scanning" - }, - "safMigrationMessage1": "SpotiFLAC now uses Android Storage Access Framework (SAF) for downloads. This fixes \"permission denied\" errors on Android 10+.", - "@safMigrationMessage1": { - "description": "First paragraph of SAF migration dialog" - }, - "setupStorageRequired": "ストレージの権限が必要です", - "@notifLibraryScanErrors": { - "description": "Library scan complete suffix - error count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "appearanceHistoryViewGrid": "グリッド", - "trackConvertConverting": "オーディオを変換中...", - "@trackConvertConverting": { - "description": "Snackbar while converting" - }, - "@setupUseDefaultFolder": { - "description": "Dialog title for default folder" - }, - "optionsArtistTagModeSplitVorbisSubtitle": "Write one artist tag per artist for FLAC and Opus; MP3 and M4A stay joined.", - "snackbarPlayingNext": "Playing next", - "@snackbarPlayingNext": { - "description": "Snackbar when a track is inserted as the next queue item" - }, - "optionsDefaultSearchTabSubtitle": "Choose which tab opens first for new search results.", - "@editMetadataAutoFillFetch": { - "description": "Button label to fetch online metadata and fill selected fields" - }, - "tutorialSearchDesc": "Search with your selected extension or paste a supported music link.", - "@sectionService": { + "sectionColor": "カラー", + "@sectionColor": { "description": "Settings section header" }, - "notifUpdateProgress": "{received} / {total} MB • {percentage}%", - "@discographyDownloadSelected": { - "description": "Button - download selected albums" + "sectionTheme": "テーマ", + "@sectionTheme": { + "description": "Settings section header" }, - "cacheClearAllConfirmMessage": "This will clear all cache categories on this page. Downloaded music files will not be deleted.", - "@cacheClearAllConfirmMessage": { - "description": "Dialog message before clearing all caches" + "sectionLayout": "レイアウト", + "@sectionLayout": { + "description": "Settings section header" }, - "extensionsHomeFeedProvider": "Home Feed Provider", - "@extensionsHomeFeedProvider": { - "description": "Extensions page - label for home feed provider selector" + "sectionLanguage": "言語", + "@sectionLanguage": { + "description": "Settings section header for language" }, - "@cacheExploreFeed": { - "description": "Cache item title for explore home feed cache" + "appearanceLanguage": "アプリの言語", + "@appearanceLanguage": { + "description": "Language setting title" }, - "@audioAnalysisDynamicRange": { - "description": "Dynamic range metric label" + "settingsAppearanceSubtitle": "テーマ、カラー、画面", + "@settingsAppearanceSubtitle": { + "description": "Appearance settings description" }, - "unknownAlbum": "Unknown Album", - "trackCoverCurrent": "Current cover", - "downloadSongLinkRegionDesc": "Region used when resolving track links via SongLink. Choose the country where your streaming services are available.", - "downloadPrimaryArtistOnlyOff": "Primary only: Off", - "dialogDone": "完了", - "@dialogDone": { - "description": "Dialog button - action completed" + "settingsDownloadSubtitle": "Service, quality, fallback", + "@settingsDownloadSubtitle": { + "description": "Download settings description" }, - "storeRepoUrlLabel": "Repository URL", - "downloadSelectServiceToEnable": "Select a provider with quality options to enable this option", - "@logIssueRateLimitedSuggestion": { - "description": "Diagnostic badge suggestion for rate limiting" + "settingsExtensionsSubtitle": "ダウンロードプロバイダーを管理", + "@settingsExtensionsSubtitle": { + "description": "Extensions settings description" }, - "libraryScanProgress": "{progress}% of {total} files", - "@libraryScanProgress": { - "description": "Scan progress display", + "settingsLogsSubtitle": "デバッグのためのアプリログを表示", + "@settingsLogsSubtitle": { + "description": "Logs settings description" + }, + "loadingSharedLink": "共有リンクを読み込み中...", + "@loadingSharedLink": { + "description": "Status when opening shared URL" + }, + "pressBackAgainToExit": "Press back again to exit", + "@pressBackAgainToExit": { + "description": "Exit confirmation message" + }, + "downloadAllCount": "すべてダウンロード ({count})", + "@downloadAllCount": { + "description": "Download all button with count", "placeholders": { - "progress": { - "type": "String" - }, - "total": { + "count": { "type": "int" } } }, - "collectionLovedEmptyTitle": "Loved folder is empty", - "tutorialExtensionsTitle": "拡張", - "@tutorialExtensionsTitle": { - "description": "Tutorial extensions page title" - }, - "searchSortDurationShort": "Duration (Shortest)", - "@searchSortDurationShort": { - "description": "Sort option - shortest duration first" + "tracksCount": "{count, plural, =1{1 個のトラック} other{{count} 個のトラック}}", + "@tracksCount": { + "description": "Track count display", + "placeholders": { + "count": { + "type": "int" + } + } }, "trackCopyFilePath": "ファイルパスをコピー", "@trackCopyFilePath": { "description": "Action - copy file path" }, - "albumFolderArtistAlbumFlatSubtitle": "Artist/Album/ and Artist/song.flac", - "@trackConvertResampler": { - "description": "Section label for lossless conversion resampler options" + "trackRemoveFromDevice": "デバイスから削除", + "@trackRemoveFromDevice": { + "description": "Action - delete downloaded file" }, - "editMetadataFieldTrackNum": "Track #", - "@editMetadataFieldTrackNum": { - "description": "Chip label for track number field in auto-fill selector" + "trackLoadLyrics": "歌詞を読み込み", + "@trackLoadLyrics": { + "description": "Action - fetch lyrics" }, - "snackbarFailedToUpdate": "拡張の更新に失敗しました", - "@snackbarFailedToUpdate": { - "description": "Snackbar - extension update error" + "trackMetadata": "メタデータ", + "@trackMetadata": { + "description": "Tab title - track metadata" }, - "notifAlreadyInLibrary": "Already in Library", - "@notifAlreadyInLibrary": { - "description": "Notification title when track is already in library" + "trackFileInfo": "ファイル情報", + "@trackFileInfo": { + "description": "Tab title - file information" }, - "collectionPlaylistNameHint": "Playlist name", - "extensionVerificationCopyLink": "Copy link", - "@replayGainBatchAnalyzing": { - "description": "Progress dialog title while batch scanning ReplayGain" + "trackLyrics": "歌詞", + "@trackLyrics": { + "description": "Tab title - lyrics" + }, + "trackFileNotFound": "ファイルがありません", + "@trackFileNotFound": { + "description": "Error - file doesn't exist" + }, + "trackOpenInDeezer": "Deezer で開く", + "@trackOpenInDeezer": { + "description": "Action - open track in Deezer app" + }, + "trackOpenInSpotify": "Spotify で開く", + "@trackOpenInSpotify": { + "description": "Action - open track in Spotify app" + }, + "trackTrackName": "トラック名", + "@trackTrackName": { + "description": "Metadata label - track title" + }, + "trackArtist": "アーティスト", + "@trackArtist": { + "description": "Metadata label - artist name" + }, + "trackAlbumArtist": "アルバムアーティスト", + "@trackAlbumArtist": { + "description": "Metadata label - album artist" + }, + "trackAlbum": "アルバム", + "@trackAlbum": { + "description": "Metadata label - album name" + }, + "trackTrackNumber": "トラック番号", + "@trackTrackNumber": { + "description": "Metadata label - track number" + }, + "trackDiscNumber": "ディスク番号", + "@trackDiscNumber": { + "description": "Metadata label - disc number" + }, + "trackDuration": "再生時間", + "@trackDuration": { + "description": "Metadata label - track length" + }, + "trackAudioQuality": "オーディオ品質", + "@trackAudioQuality": { + "description": "Metadata label - audio quality" + }, + "trackReplayGainTrackGain": "ReplayGain Track Gain", + "@trackReplayGainTrackGain": { + "description": "Metadata label - ReplayGain track gain" + }, + "trackReplayGainTrackPeak": "ReplayGain Track Peak", + "@trackReplayGainTrackPeak": { + "description": "Metadata label - ReplayGain track peak" + }, + "trackReplayGainAlbumGain": "ReplayGain Album Gain", + "@trackReplayGainAlbumGain": { + "description": "Metadata label - ReplayGain album gain" + }, + "trackReplayGainAlbumPeak": "ReplayGain Album Peak", + "@trackReplayGainAlbumPeak": { + "description": "Metadata label - ReplayGain album peak" + }, + "libraryQualityLabelFileFormat": "File format", + "@libraryQualityLabelFileFormat": { + "description": "Library audio quality label mode that shows the detected file format" + }, + "trackReleaseDate": "リリース日", + "@trackReleaseDate": { + "description": "Metadata label - release date" + }, + "trackGenre": "ジャンル", + "@trackGenre": { + "description": "Metadata label - music genre" + }, + "trackLabel": "レーベル", + "@trackLabel": { + "description": "Metadata label - record label" + }, + "trackCopyright": "著作権", + "@trackCopyright": { + "description": "Metadata label - copyright information" + }, + "trackDownloaded": "ダウンロード済み", + "@trackDownloaded": { + "description": "Metadata label - download date" + }, + "trackCopyLyrics": "歌詞をコピー", + "@trackCopyLyrics": { + "description": "Action - copy lyrics to clipboard" + }, + "trackLyricsSource": "Source: {source}", + "@trackLyricsSource": { + "description": "Label showing the lyrics source/provider", + "placeholders": { + "source": { + "type": "String" + } + } + }, + "trackLyricsNotAvailable": "このトラックの歌詞は利用できません", + "@trackLyricsNotAvailable": { + "description": "Message when lyrics not found" + }, + "trackLyricsNotInFile": "No lyrics found in this file", + "@trackLyricsNotInFile": { + "description": "Message when no embedded lyrics in audio file" + }, + "trackFetchOnlineLyrics": "Fetch from Online", + "@trackFetchOnlineLyrics": { + "description": "Action - fetch lyrics from online providers" + }, + "trackLyricsTimeout": "リクエストがタイムアウトしました。後ほどお試しください。", + "@trackLyricsTimeout": { + "description": "Message when lyrics request times out" + }, + "trackLyricsLoadFailed": "歌詞の読み込みに失敗しました", + "@trackLyricsLoadFailed": { + "description": "Message when lyrics loading fails" + }, + "trackEmbedLyrics": "歌詞を埋め込む", + "@trackEmbedLyrics": { + "description": "Action - embed lyrics into audio file" + }, + "trackLyricsEmbedded": "Lyrics embedded successfully", + "@trackLyricsEmbedded": { + "description": "Snackbar - lyrics saved to file" + }, + "trackInstrumental": "インストゥルメンタルのトラック", + "@trackInstrumental": { + "description": "Message when track is instrumental (no lyrics)" + }, + "trackCopiedToClipboard": "クリップボードにコピーしました", + "@trackCopiedToClipboard": { + "description": "Snackbar - content copied" + }, + "trackDeleteConfirmTitle": "デバイスから削除しますか?", + "@trackDeleteConfirmTitle": { + "description": "Delete confirmation title" + }, + "trackDeleteConfirmMessage": "This will permanently delete the downloaded file and remove it from your history.", + "@trackDeleteConfirmMessage": { + "description": "Delete confirmation message" + }, + "dateToday": "今日", + "@dateToday": { + "description": "Relative date - today" + }, + "dateYesterday": "昨日", + "@dateYesterday": { + "description": "Relative date - yesterday" + }, + "dateDaysAgo": "{count} 日前", + "@dateDaysAgo": { + "description": "Relative date - days ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dateWeeksAgo": "{count} 週間前", + "@dateWeeksAgo": { + "description": "Relative date - weeks ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dateMonthsAgo": "{count} ヶ月前", + "@dateMonthsAgo": { + "description": "Relative date - months ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "storeFilterAll": "すべて", + "@storeFilterAll": { + "description": "Repo filter - all extensions" + }, + "storeFilterMetadata": "メタデータ", + "@storeFilterMetadata": { + "description": "Repo filter - metadata providers" + }, + "storeFilterDownload": "ダウンロード", + "@storeFilterDownload": { + "description": "Repo filter - download providers" + }, + "storeFilterUtility": "ユーティリティ", + "@storeFilterUtility": { + "description": "Repo filter - utility extensions" + }, + "storeFilterLyrics": "歌詞", + "@storeFilterLyrics": { + "description": "Repo filter - lyrics providers" + }, + "storeFilterIntegration": "統合", + "@storeFilterIntegration": { + "description": "Repo filter - integrations" + }, + "storeClearFilters": "フィルターを消去", + "@storeClearFilters": { + "description": "Button to clear all filters" + }, + "storeAddRepoTitle": "Add Extension Repository", + "@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": { + "description": "Store setup screen - explanatory text" + }, + "storeRepoUrlLabel": "Repository URL", + "@storeRepoUrlLabel": { + "description": "Label for the repository URL input field" + }, + "storeRepoUrlHint": "https://github.com/user/repo", + "@storeRepoUrlHint": { + "description": "Hint/placeholder for the repository URL input field" + }, + "storeAddRepoButton": "Add Repository", + "@storeAddRepoButton": { + "description": "Button to submit a new repository URL" + }, + "storeChangeRepoTooltip": "Change repository", + "@storeChangeRepoTooltip": { + "description": "Tooltip for the change-repository icon button in the app bar" + }, + "storeRepoDialogTitle": "Extension Repository", + "@storeRepoDialogTitle": { + "description": "Title of the change/remove repository dialog" + }, + "storeRepoDialogCurrent": "Current repository:", + "@storeRepoDialogCurrent": { + "description": "Label shown above the current repository URL in the dialog" + }, + "storeNewRepoUrlLabel": "New Repository URL", + "@storeNewRepoUrlLabel": { + "description": "Label for the new repository URL field inside the dialog" + }, + "storeLoadError": "Failed to load repository", + "@storeLoadError": { + "description": "Error heading when the store cannot be loaded" + }, + "storeEmptyNoExtensions": "No extensions available", + "@storeEmptyNoExtensions": { + "description": "Message when store has no extensions" + }, + "storeEmptyNoResults": "No extensions found", + "@storeEmptyNoResults": { + "description": "Message when search/filter returns no results" }, - "setupLanguageTitle": "Choose Language", "extensionId": "ID", "@extensionId": { "description": "Extension detail - unique ID" }, - "regionCountryBR": "Brazil", - "@updateNewVersionReady": { - "description": "Update subtitle" + "extensionError": "エラー", + "@extensionError": { + "description": "Extension detail - error message" }, - "@queueDownloadedFileMissing": { - "description": "Accessibility label when a downloaded file is missing from disk" - }, - "@lyricsMode": { - "description": "Setting - how to save lyrics" - }, - "@settingsAppearance": { - "description": "Settings section - visual customization" - }, - "@setupStorageAccessMessageAndroid11": { - "description": "Android 11+ specific explanation" - }, - "@tutorialLibraryTip3": { - "description": "Tutorial library tip 3" - }, - "@downloadAppleQqMultiPersonDisabled": { - "description": "Subtitle when multi-person lyrics is off" - }, - "libraryStorageAccessMessage": "SpotiFLAC needs storage access to scan your music library. Please grant permission in settings.", - "@libraryStorageAccessMessage": { - "description": "Dialog message for storage permission" - }, - "@tutorialLibraryTip1": { - "description": "Tutorial library tip 1" - }, - "dialogRemoveExtensionMessage": "Are you sure you want to remove this extension? This cannot be undone.", - "@dialogRemoveExtensionMessage": { - "description": "Dialog message - uninstall confirmation" - }, - "setupDownloadLocationTitle": "ダウンロード先", - "@setupDownloadLocationTitle": { - "description": "Download location dialog title" - }, - "downloadNetworkCompatibilityModeEnabled": "Allowing legacy HTTP endpoints; TLS verification remains enabled", - "@downloadNetworkCompatibilityModeEnabled": { - "description": "Subtitle when network compatibility mode is on" - }, - "@audioAnalysisBitDepth": { - "description": "Bit depth metric label" - }, - "trackOptionAddToLoved": "Add to Loved", - "@trackOptionAddToLoved": { - "description": "Bottom sheet action label - add track to loved folder" - }, - "cacheAppDirectory": "アプリキャッシュのディレクトリ", - "@cacheAppDirectory": { - "description": "Cache item title for app cache directory" - }, - "lyricsProviderMusixmatchDesc": "Largest lyrics database (multi-language)", - "@navStore": { - "description": "Bottom navigation - Extension repo tab" - }, - "extensionPostProcessing": "ポストプロセス", - "@searchTracks": { - "description": "Search filter label - tracks" - }, - "logCopied": "ログをクリップボードにコピーしました", - "@logCopied": { - "description": "Snackbar - logs copied" - }, - "@extensionHealthRequired": { - "description": "Label for a required extension service health check" - }, - "@previewPlay": { - "description": "Tooltip for the button that plays a short track preview snippet" - }, - "clickableLookingUpArtist": "Looking up artist...", - "@clickableLookingUpArtist": { - "description": "Snackbar shown while clickable artist metadata is being resolved" - }, - "@extensionVerificationBrowserSubtitleInApp": { - "description": "Subtitle when in-app browser is preferred for extension verification" - }, - "setupUseDefaultFolder": "デフォルトのフォルダを使用しますか?", - "tutorialSearchHint": "Paste or search...", - "@logIssueTrackNotFoundLabel": { - "description": "Diagnostic badge label when a track is unavailable" - }, - "@storageModeAppFolderSubtitle": { - "description": "Subtitle for app folder storage mode" - }, - "downloadMusixmatchLanguage": "Musixmatch Language", - "@downloadMusixmatchLanguage": { - "description": "Setting for Musixmatch lyrics translation language" - }, - "lyricsModeExternal": "外部 .lrc ファイル", - "@setupSelectFolder": { - "description": "Button to select folder" - }, - "logSearchHint": "ログを検索...", - "@backupCreateFailed": { - "description": "Snackbar when backup creation fails" - }, - "@settingsSaveDownloadHistorySubtitle": { - "description": "Settings switch subtitle for storing completed downloads in history" - }, - "@albumFolderArtistAlbumFlat": { - "description": "Album folder option with singles directly in artist folder" - }, - "extensionHealthRequired": "required", - "actionCancel": "キャンセル", - "@actionCancel": { - "description": "Action button - cancel operation" - }, - "optionsEmbedMetadataSubtitleOff": "Disabled (advanced): skip all metadata embedding", - "@optionsEmbedMetadataSubtitleOff": { - "description": "Subtitle when metadata embedding is disabled" - }, - "downloadAllowLocalNetworkDisabled": "Local/private addresses are blocked for security", - "@downloadAllowLocalNetworkDisabled": { - "description": "Subtitle when allow local network access is off" - }, - "@extensionsDownloadPrioritySubtitle": { - "description": "Subtitle for download priority" - }, - "downloadSingleFilenameFormat": "Single Filename Format", - "@downloadSingleFilenameFormat": { - "description": "Setting for output filename pattern for singles/EPs" - }, - "cacheSummarySubtitle": "Clearing cache will not remove downloaded music files.", - "@cacheSummarySubtitle": { - "description": "Helper text for cache summary card" - }, - "libraryFilterMetadataIncorrectIsrcFormat": "Incorrect ISRC format", - "libraryFilterMetadataMissingTrackNumber": "Missing track number", - "@libraryFilterMetadataMissingTrackNumber": { - "description": "Filter option - items missing track number" - }, - "backupIncludeSecretsDescription": "Tokens and API keys from extensions will be saved into the backup file. Keep the file private. When off, you re-enter them after restoring.", - "@backupIncludeSecretsDescription": { - "description": "Explanation for the include-credentials toggle" - }, - "audioAnalysisChannelStats": "Per-channel Stats", - "@audioAnalysisChannelStats": { - "description": "Per-channel audio analysis section label" - }, - "@extensionServiceStatus": { - "description": "Extension detail section header for service status" - }, - "queueEmptySingles": "No single downloads", - "@queueEmptySingles": { - "description": "Empty state title when no single track downloads exist" - }, - "@snackbarSelectedPlaylistsEmpty": { - "description": "Snackbar when selected playlists contain no tracks" - }, - "@errorRateLimited": { - "description": "Error title - too many requests" - }, - "setupDownloadInFlac": "Download music in lossless and Hi-Res quality", - "@setupDownloadInFlac": { - "description": "App tagline in setup" - }, - "trackRemoveFromDevice": "デバイスから削除", - "@extensionsNoDownloadProvider": { - "description": "Empty state - no download providers" - }, - "@backupCreated": { - "description": "Snackbar after a backup file is created" - }, - "cacheSummaryTitle": "キャッシュの概要", - "@cacheSummaryTitle": { - "description": "Heading for cache summary card" - }, - "selectionReplayGainCount": "ReplayGain ({count})", - "@selectionReplayGainCount": { - "description": "Batch selection action button label for ReplayGain", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@setupNotificationBackgroundDescription": { - "description": "Detailed notification explanation" - }, - "safMigrationTitle": "Storage Update Required", - "snackbarMetadataSaved": "Metadata saved successfully", - "@snackbarMetadataSaved": { - "description": "Snackbar after successfully saving track metadata" - }, - "@backupContentsSettings": { - "description": "Backup contents row label for settings" - }, - "logClearLogsTitle": "ログを消去", - "extensionsCustomSearch": "カスタム検索", - "@extensionsCustomSearch": { - "description": "Label for custom search provider" - }, - "@downloadFrom": { - "description": "Label - download source" - }, - "cacheSizeWithFiles": "{size} in {count} files", - "selectionShareNoFiles": "No shareable files found", - "@selectionShareNoFiles": { - "description": "Snackbar when no selected files exist on disk" - }, - "snackbarAddedTracksToQueue": "{count} 個のトラックをキューに追加しました", - "downloadFilenameInsertTag": "Tap to insert tag:", - "@downloadFilenameInsertTag": { - "description": "Label above filename tag chips" - }, - "collectionRemovedFromFavoriteArtists": "\"{artistName}\" removed from Favorite Artists", - "@collectionRemovedFromFavoriteArtists": { - "description": "Snackbar after removing artist from favorite artists", - "placeholders": { - "artistName": { - "type": "String" - } - } - }, - "queueDownloadSpeedStatus": "Downloading - {speed} MB/s", - "backupRestoreConfirmButton": "Restore", - "@libraryCleanupMissingFiles": { - "description": "Button to remove entries for missing files" - }, - "backupCreateFailed": "Failed to create backup", - "notifLibraryScanFailed": "Library scan failed", - "@notifLibraryScanFailed": { - "description": "Notification title when library scan fails" - }, - "audioAnalysisRescan": "Re-analyze", - "@trackTrackName": { - "description": "Metadata label - track title" - }, - "@setupPermissionRequired": { - "description": "Generic permission required title", - "placeholders": { - "permissionType": { - "type": "String", - "description": "Type of permission (Storage/Notification)" - } - } - }, - "@nowPlayingNoLyrics": { - "description": "Empty state when the playing file has no embedded lyrics" - }, - "libraryFilesUnit": "{count, plural, =1{file} other{files}}", - "@libraryFilesUnit": { - "description": "Unit label for files count during library scanning", - "placeholders": { - "count": { - "type": "int" - } - } + "extensionCapabilities": "機能", + "@extensionCapabilities": { + "description": "Section header - extension features" }, + "extensionMetadataProvider": "メタデータのプロバイダー", "@extensionMetadataProvider": { "description": "Capability - provides metadata" }, - "@downloadFilterContributing": { - "description": "Setting to strip contributing artists from Album Artist folder name" + "extensionDownloadProvider": "ダウンロードのプロバイダー", + "@extensionDownloadProvider": { + "description": "Capability - provides downloads" }, - "libraryScanSelectFolderFirst": "Select a folder first", - "@sectionDownload": { - "description": "Settings section header" + "extensionLyricsProvider": "歌詞のプロバイダー", + "@extensionLyricsProvider": { + "description": "Capability - provides lyrics" }, - "extensionHealthNotConfigured": "Not configured", - "queueRetryAllFailed": "Retry {count} failed", - "folderOrganizationByPlaylistSubtitle": "Separate folder for each playlist", - "@folderOrganizationByPlaylistSubtitle": { - "description": "Subtitle for playlist folder option" + "extensionUrlHandler": "URL ハンドラ", + "@extensionUrlHandler": { + "description": "Capability - handles URLs" }, - "lyricsProviderExtensionDesc": "Extension provider", - "@libraryFilterQualityHiRes": { - "description": "Filter option - high resolution audio" + "extensionQualityOptions": "品質のオプション", + "@extensionQualityOptions": { + "description": "Capability - quality selection" }, - "trackConvertTitle": "オーディオを変換", - "@trackConvertTitle": { - "description": "Title of convert bottom sheet" + "extensionPostProcessingHooks": "ポストプロセスフック", + "@extensionPostProcessingHooks": { + "description": "Capability - post-processing" }, - "setupSkipForNow": "今はスキップ", - "sectionDownload": "ダウンロード", - "downloadLossyOpus256Subtitle": "Best quality Opus, ~8MB per track", - "@downloadLossyOpus256Subtitle": { - "description": "Subtitle for Opus 256kbps lossy option" + "extensionPermissions": "権限", + "@extensionPermissions": { + "description": "Section header - required permissions" }, - "@trackConvertActionLabelLossless": { - "description": "Convert button label for lossless conversion with quality cap", + "extensionSettings": "設定", + "@extensionSettings": { + "description": "Section header - extension settings" + }, + "extensionRemoveButton": "拡張を削除", + "@extensionRemoveButton": { + "description": "Button to uninstall extension" + }, + "extensionUpdated": "更新済み", + "@extensionUpdated": { + "description": "Extension detail - last update" + }, + "extensionMinAppVersion": "最小のアプリバージョン", + "@extensionMinAppVersion": { + "description": "Extension detail - minimum app version" + }, + "extensionCustomTrackMatching": "カスタムトラックマッチング", + "@extensionCustomTrackMatching": { + "description": "Capability - custom track matching algorithm" + }, + "extensionPostProcessing": "ポストプロセス", + "@extensionPostProcessing": { + "description": "Capability - post-download processing" + }, + "extensionHooksAvailable": "{count} 個のフックが利用可能です", + "@extensionHooksAvailable": { + "description": "Post-processing hooks count", "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "quality": { + "count": { + "type": "int" + } + } + }, + "extensionPatternsCount": "{count} 個のパターン", + "@extensionPatternsCount": { + "description": "URL patterns count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionStrategy": "ストラテジー: {strategy}", + "@extensionStrategy": { + "description": "Track matching strategy name", + "placeholders": { + "strategy": { "type": "String" } } }, - "storeRequiresVersion": "Requires v{version}+", - "@storeRequiresVersion": { - "description": "Store compatibility badge for minimum app version", - "placeholders": { - "version": { - "type": "String" - } - } + "extensionsProviderPrioritySection": "プロバイダーの優先度", + "@extensionsProviderPrioritySection": { + "description": "Section header - provider priority" }, - "metadataProviderPriorityDescription": "Drag to reorder metadata providers. The app will try providers from top to bottom when searching for tracks and fetching metadata.", - "@notifUpdateFailed": { - "description": "Notification title when app update download fails" + "extensionsInstalledSection": "インストール済みの拡張", + "@extensionsInstalledSection": { + "description": "Section header - installed extensions" + }, + "extensionsNoExtensions": "拡張はインストールされていません", + "@extensionsNoExtensions": { + "description": "Empty state - no extensions" + }, + "extensionsNoExtensionsSubtitle": "新しいプロバイダーを追加するには .spotiflac-ext ファイルをインストールします", + "@extensionsNoExtensionsSubtitle": { + "description": "Empty state subtitle" + }, + "extensionsInstallButton": "拡張をインストール", + "@extensionsInstallButton": { + "description": "Button to install extension from file" }, "extensionsInfoTip": "拡張は新しいメタデータとダウンロードプロバイダーを追加することがあります。信頼できるソースからの拡張のみをインストールしてください。", "@extensionsInfoTip": { "description": "Security warning about extensions" }, - "@downloadAppleQqMultiPersonEnabled": { - "description": "Subtitle when multi-person lyrics is on" + "extensionsInstalledSuccess": "拡張のインストールが成功しました", + "@extensionsInstalledSuccess": { + "description": "Success message after install" }, - "libraryFilterMetadataMissingYear": "Missing year", - "extensionsDownloadPriority": "ダウンロードの優先度", - "@extensionsDownloadPriority": { - "description": "Setting - download provider order" - }, - "@downloadAllowLocalNetworkEnabled": { - "description": "Subtitle when allow local network access is on" - }, - "libraryScan": "ライブラリをスキャン", - "@libraryScan": { - "description": "Button to start library scan" - }, - "editMetadataFieldLabel": "Label", - "@editMetadataFieldLabel": { - "description": "Chip label for label field in auto-fill selector" - }, - "updateDownloadFailed": "ダウンロードに失敗しました", - "@updateDownloadFailed": { - "description": "Update error title" - }, - "appearanceAmoledDarkSubtitle": "ピュアブラックの背景", - "@appearanceAmoledDarkSubtitle": { - "description": "Subtitle for AMOLED dark" - }, - "setupIcloudNotSupported": "iCloud Drive is not supported. Please use the app Documents folder.", - "trackLyricsEmbeddedSource": "Embedded", - "@trackLyricsEmbeddedSource": { - "description": "Lyrics source label for embedded lyrics" - }, - "@trackAlbumArtist": { - "description": "Metadata label - album artist" + "extensionsInstalledCount": "{count} extensions installed successfully", + "@extensionsInstalledCount": { + "description": "Success message after installing multiple extensions", + "placeholders": { + "count": { + "type": "int", + "description": "Number of installed extensions" + } + } }, "extensionsInstallPartialSuccess": "Installed {installed} of {attempted} extensions", "@extensionsInstallPartialSuccess": { @@ -4147,1741 +1993,217 @@ } } }, - "@extensionSettingsCount": { - "description": "Count of settings exposed by an extension quality option", - "placeholders": { - "count": { - "type": "int" - } - } + "extensionsDownloadPriority": "ダウンロードの優先度", + "@extensionsDownloadPriority": { + "description": "Setting - download provider order" }, - "notifLibraryScanCancelled": "Library scan cancelled", - "@notifLibraryScanCancelled": { - "description": "Notification title when library scan is cancelled by the user" + "extensionsDownloadPrioritySubtitle": "ダウンロードサービスの順序を設定", + "@extensionsDownloadPrioritySubtitle": { + "description": "Subtitle for download priority" }, - "collectionPlaylistNameRequired": "Playlist name is required", - "libraryCleanupMissingFiles": "Cleanup Missing Files", - "storeCategoryUtility": "Utility", - "@storeCategoryUtility": { - "description": "Store extension category - utility" + "extensionsFallbackTitle": "Fallback Extensions", + "@extensionsFallbackTitle": { + "description": "Setting and page title for choosing which download extensions can be used during fallback" }, - "searchSortTitle": "Sort Results", - "@extensionVerificationBrowserExternal": { - "description": "Chip label for external browser verification mode" + "extensionsFallbackSubtitle": "Choose which installed download extensions can be used as fallback", + "@extensionsFallbackSubtitle": { + "description": "Subtitle for download fallback extensions menu" }, - "audioAnalysisLufs": "LUFS", - "@setupAllowAccessToManageFiles": { - "description": "Instruction for file access permission" + "extensionsNoDownloadProvider": "ダウンロードプロバイダーの拡張はありません", + "@extensionsNoDownloadProvider": { + "description": "Empty state - no download providers" + }, + "extensionsMetadataPriority": "メタデータの優先度", + "@extensionsMetadataPriority": { + "description": "Setting - metadata provider order" + }, + "extensionsMetadataPrioritySubtitle": "検索とメタデータソースの順序を設定", + "@extensionsMetadataPrioritySubtitle": { + "description": "Subtitle for metadata priority" + }, + "extensionsNoMetadataProvider": "メタデータプロバイダーの拡張はありません", + "@extensionsNoMetadataProvider": { + "description": "Empty state - no metadata providers" + }, + "extensionsSearchProvider": "検索のプロバイダー", + "@extensionsSearchProvider": { + "description": "Setting - search provider selection" + }, + "extensionsNoCustomSearch": "カスタム検索の拡張はありません", + "@extensionsNoCustomSearch": { + "description": "Empty state - no search providers" + }, + "extensionsSearchProviderDescription": "トラックの検索に使用するサービスを選択してください", + "@extensionsSearchProviderDescription": { + "description": "Search provider setting description" + }, + "extensionsCustomSearch": "カスタム検索", + "@extensionsCustomSearch": { + "description": "Label for custom search provider" }, "extensionsErrorLoading": "拡張の読み込みエラー", - "@actionPaste": { - "description": "Generic action - paste from clipboard" + "@extensionsErrorLoading": { + "description": "Error message when extension fails to load" }, - "aboutFeatureRequestSubtitle": "アプリの新機能を提案する", - "@aboutFeatureRequestSubtitle": { - "description": "Subtitle for feature request" + "qualityFlacLossless": "FLAC ロスレス", + "@qualityFlacLossless": { + "description": "Quality option - CD quality FLAC" }, - "@aboutTitle": { - "description": "About page title" + "qualityFlacLosslessSubtitle": "16-bit / 44.1kHz", + "@qualityFlacLosslessSubtitle": { + "description": "Technical spec for lossless" }, - "@downloadNeteaseIncludeTranslation": { - "description": "Setting to include translated lyrics from Netease" + "qualityHiResFlac": "ハイレゾ FLAC", + "@qualityHiResFlac": { + "description": "Quality option - high resolution FLAC" }, - "@actionGo": { - "description": "Generic action button label" + "qualityHiResFlacSubtitle": "24-bit / 最大 96kHz", + "@qualityHiResFlacSubtitle": { + "description": "Technical spec for hi-res" }, - "regionCountryFR": "France", - "trackConvertResamplerSoxr": "SoXr", - "extensionUpdated": "更新済み", - "@extensionUpdated": { - "description": "Extension detail - last update" + "qualityHiResFlacMax": "ハイレゾ FLAC 最大", + "@qualityHiResFlacMax": { + "description": "Quality option - maximum resolution FLAC" + }, + "qualityHiResFlacMaxSubtitle": "24-bit / 最大 192kHz", + "@qualityHiResFlacMaxSubtitle": { + "description": "Technical spec for hi-res max" + }, + "downloadLossy320": "Lossy 320kbps", + "@downloadLossy320": { + "description": "Quality option label for lossy 320kbps" }, "downloadLossyFormat": "Lossy Format", "@downloadLossyFormat": { "description": "Setting title to pick output format for lossy downloads" }, - "snackbarAlreadyInLibrary": "\"{trackName}\" already exists in your library", - "@snackbarAlreadyInLibrary": { - "description": "Snackbar - track already exists in local library", - "placeholders": { - "trackName": { - "type": "String" - } - } + "downloadAutoConvert": "Auto-convert after download", + "@downloadAutoConvert": { + "description": "Toggle for automatic post-download audio conversion" }, - "libraryExternalPlayerSubtitle": "Recommended for listening, best quality, gapless playback, EQ, and wider format support", - "extensionCustomUrlHandlingShareHint": "Share links from these sites to SpotiFLAC Mobile and this extension will handle them.", - "libraryFilterQuality": "品質", - "@libraryFilterQuality": { - "description": "Filter section - audio quality" + "downloadAutoConvertSubtitle": "Convert completed downloads to a smaller lossy format. The original is replaced only after conversion succeeds.", + "@downloadAutoConvertSubtitle": { + "description": "Explanation of safe automatic post-download conversion" }, - "editMetadataAutoFillDone": "Filled {count} {count, plural, =1{field} other{fields}} from online metadata", - "@editMetadataAutoFillDone": { - "description": "Snackbar confirming how many fields were auto-filled", - "placeholders": { - "count": { - "type": "int" - } - } + "downloadAutoConvertFormat": "Output format", + "@downloadAutoConvertFormat": { + "description": "Automatic conversion output format setting" }, - "@discographyDownload": { - "description": "Button - download artist discography" + "downloadAutoConvertFormatSubtitle": "Choose the lossy format used for newly completed downloads.", + "@downloadAutoConvertFormatSubtitle": { + "description": "Automatic conversion format picker explanation" }, - "aboutFeatureRequest": "機能の要望", - "downloadSingleFilenameFormatDescription": "Filename pattern for singles and EPs. Uses the same tags as the album format.", - "@downloadSingleFilenameFormatDescription": { - "description": "Subtitle description for single filename format setting" + "downloadAutoConvertBitrate": "Output quality", + "@downloadAutoConvertBitrate": { + "description": "Automatic conversion bitrate setting" }, - "queueClearAllMessage": "すべてのダウンロードを消去してもよろしいですか?", - "dialogDisableHistoryMessage": "Existing history will be cleared. Downloaded files will not be deleted.", - "extensionLastChecked": "Last checked {time}", - "@extensionLastChecked": { - "description": "Timestamp for the latest extension service health check", - "placeholders": { - "time": { - "type": "String" - } - } + "downloadAutoConvertBitrateSubtitle": "Higher bitrates preserve more detail but create larger files.", + "@downloadAutoConvertBitrateSubtitle": { + "description": "Automatic conversion bitrate picker explanation" }, - "homeImportCsvTooltip": "Import playlist (CSV, M3U)", - "@homeImportCsvTooltip": { - "description": "Tooltip for importing a CSV file into Home search" + "downloadAutoConvertMp3Subtitle": "Best compatibility across players and devices", + "@downloadAutoConvertMp3Subtitle": { + "description": "MP3 automatic conversion option description" }, - "trackConvertResamplerSwr": "SWR", - "@trackConvertResamplerSwr": { - "description": "Lossless conversion default FFmpeg swresample resampler option" + "downloadAutoConvertM4aSubtitle": "Efficient AAC audio in an M4A container", + "@downloadAutoConvertM4aSubtitle": { + "description": "M4A AAC automatic conversion option description" }, - "@downloadFolderOrganization": { - "description": "Title of the folder organization picker bottom sheet" + "downloadAutoConvertOpusSubtitle": "Best efficiency for modern players", + "@downloadAutoConvertOpusSubtitle": { + "description": "Opus automatic conversion option description" }, - "dialogClearHistoryTitle": "履歴を消去", - "@logClearSearch": { - "description": "Tooltip for clearing the log search field" + "downloadLossy320Format": "Lossy 320kbps Format", + "@downloadLossy320Format": { + "description": "Title of the lossy format picker bottom sheet" }, - "dialogImport": "インポート", - "@dialogImport": { - "description": "Dialog button - import data" + "downloadLossy320FormatDesc": "Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.", + "@downloadLossy320FormatDesc": { + "description": "Description in the lossy format picker" }, - "@setupChangeFolderTooltip": { - "description": "Tooltip for editing the selected download folder" + "downloadLossyMp3": "MP3 320kbps", + "@downloadLossyMp3": { + "description": "Lossy format option - MP3 320kbps" }, - "notifLibraryScanErrors": "{count} errors", - "@downloadNetworkCompatibilityMode": { - "description": "Setting for legacy TLS/network handling" + "downloadLossyMp3Subtitle": "Best compatibility, ~10MB per track", + "@downloadLossyMp3Subtitle": { + "description": "Subtitle for MP3 320kbps lossy option" }, - "@metadataSaveFailedFfmpeg": { - "description": "Snackbar error when FFmpeg fails to write metadata" + "downloadLossyAac": "AAC/M4A 320kbps", + "@downloadLossyAac": { + "description": "Lossy format option - AAC in M4A container at 320kbps" }, - "dialogUninstallExtension": "拡張をアンインストールしますか?", - "recentTypePlaylist": "プレイリスト", - "@recentTypePlaylist": { - "description": "Recent access item type - playlist" + "downloadLossyAacSubtitle": "Best mobile compatibility, M4A container", + "@downloadLossyAacSubtitle": { + "description": "Subtitle for AAC/M4A 320kbps lossy option" }, - "trackDeleteConfirmMessage": "This will permanently delete the downloaded file and remove it from your history.", - "@logIssueNetworkErrorDescription": { - "description": "Diagnostic badge description for generic network errors" + "downloadLossyOpus256": "Opus 256kbps", + "@downloadLossyOpus256": { + "description": "Lossy format option - Opus 256kbps" }, - "appearanceThemeSystem": "システム", - "@appearanceThemeSystem": { - "description": "Follow system theme" + "downloadLossyOpus256Subtitle": "Best quality Opus, ~8MB per track", + "@downloadLossyOpus256Subtitle": { + "description": "Subtitle for Opus 256kbps lossy option" }, - "albumFolderArtistAlbumSingles": "アーティスト / アルバム + シングル", - "@aboutTranslators": { - "description": "Section for translators" - }, - "shareSheetNotFound": "Not found", - "@shareSheetNotFound": { - "description": "Cross-service share sheet row subtitle when a service has no match" - }, - "@tutorialDownloadInProgressSemantics": { - "description": "Accessibility label for active download state in tutorial demo" - }, - "editMetadataAutoFillNoneSelected": "Select at least one field to auto-fill", - "@editMetadataAutoFillNoneSelected": { - "description": "Snackbar when user taps Fetch without selecting any fields" - }, - "@snackbarViewQueue": { - "description": "Snackbar action - view download queue" - }, - "@optionsUpdateChannelPreview": { - "description": "Include beta/preview updates" - }, - "editMetadataFieldComposer": "Composer", - "@editMetadataFieldComposer": { - "description": "Label for composer field in the edit metadata sheet" - }, - "aboutSachinsenalDesc": "The original HiFi project creator. A foundation for lossless-source integration.", - "@aboutSachinsenalDesc": { - "description": "Credit description for sachinsenal0x64" - }, - "backupTitle": "Backup & Restore", - "@libraryFilterMetadata": { - "description": "Filter section - metadata completeness" - }, - "setupStorageAccessRequired": "ストレージアクセスが必要です", - "@setupStorageAccessRequired": { - "description": "Title when storage access needed" - }, - "trackMetadataDelete": "削除", - "@trackMetadataDelete": { - "description": "Action button - delete track" - }, - "libraryFilterMetadataMissingDiscNumber": "Missing disc number", - "@libraryFilterMetadataMissingDiscNumber": { - "description": "Filter option - items missing disc number" - }, - "snackbarMetadataProviderSaved": "メタデータプロバイダーの優先度を保存しました", - "setupPermissionRequired": "{permissionType} の権限が必要です", - "@selectionConvertNoConvertible": { - "description": "Snackbar when no selected tracks support conversion" - }, - "extensionHealthDegraded": "Degraded", - "regionCountryKR": "South Korea", - "@regionCountryKR": { - "description": "Country name for SongLink region picker" - }, - "trackLyricsNotInFile": "No lyrics found in this file", - "@trackLyricsNotInFile": { - "description": "Message when no embedded lyrics in audio file" - }, - "@downloadedAlbumTapToSelect": { - "description": "Selection hint" - }, - "downloadArtistNameFilters": "Artist Name Filters", - "@downloadArtistNameFilters": { - "description": "Setting title for artist folder filter options" - }, - "@libraryFilterMetadataMissingArtist": { - "description": "Filter option - items missing artist" - }, - "recentShowAllDownloads": "すべてのダウンロードを表示", - "@appearanceThemeLight": { - "description": "Light theme" - }, - "trackReEnrichFieldTrackInfo": "Track & Disc Number", - "@appearanceThemeDark": { - "description": "Dark theme" - }, - "extensionVerificationLinkCopied": "Verification link copied", - "@extensionVerificationLinkCopied": { - "description": "Snackbar after copying the extension verification URL" - }, - "@extensionsHomeFeedDescription": { - "description": "Extensions page - description for home feed provider picker" - }, - "downloadAlbumArtistMetadataPrimaryOnly": "Album Artist metadata: Primary only", - "@downloadAlbumArtistMetadataPrimaryOnly": { - "description": "Status label when album-artist folder filtering uses primary artist only" - }, - "extensionOauthConnectHint": "Tap Connect to Spotify to fill this field.", - "setupNext": "次へ", - "extensionVerificationBrowserSubtitleInApp": "Open challenges in the in-app browser first", - "libraryAutoScanDaily": "Daily", - "@libraryAutoScanDaily": { - "description": "Auto scan once per day" - }, - "@audioAnalysisDescription": { - "description": "Description for audio analysis tap-to-analyze prompt" - }, - "nowPlayingUpNext": "Up next", - "@nowPlayingUpNext": { - "description": "Title for the playback queue sheet" - }, - "nowPlayingPreviousTrack": "Previous track", - "nowPlayingNextTrack": "Next track", - "logAutoScrollOff": "Auto-scroll OFF", - "trackConvertFailed": "変換に失敗しました", - "@trackConvertFailed": { - "description": "Snackbar when conversion fails" - }, - "extensionsUninstall": "アンインストール", - "safMigrationSuccess": "Download folder updated to SAF mode", - "optionsClearHistorySubtitle": "ダウンロード済みのすべてのトラックを履歴から削除", - "@optionsClearHistorySubtitle": { - "description": "Subtitle for clear history" - }, - "trackPlayNext": "Play next", - "extensionsNoHomeFeedExtensions": "No extensions with home feed", - "optionsUpdateChannelStable": "安定版リリースのみ", - "@optionsUpdateChannelStable": { - "description": "Only stable updates" - }, - "@discographyDownloadAllSubtitle": { - "description": "Subtitle showing total tracks and albums", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } - }, - "searchPlaylists": "プレイリスト", - "@searchPlaylists": { - "description": "Search result category - playlists" - }, - "downloadNetworkCompatibilityMode": "Network Compatibility Mode", - "settingsAppearance": "外観", - "logIssueRateLimitedLabel": "RATE LIMITED", - "@logIssueRateLimitedLabel": { - "description": "Diagnostic badge label when the service rate limits requests" - }, - "logIssueSummary": "Issue Summary", - "@logIssueSummary": { - "description": "Header for log issue analysis summary" - }, - "appName": "SpotiFLAC Mobile", - "storeRepoDialogCurrent": "Current repository:", - "@optionsExtensionStoreSubtitle": { - "description": "Subtitle for extension repo toggle" - }, - "@trackLyrics": { - "description": "Tab title - lyrics" - }, - "@backupImportButton": { - "description": "Button to pick a backup file to restore" - }, - "@setupFolderChoose": { - "description": "Button to choose folder" - }, - "storageModeAppFolderSubtitle": "Saves to Music/SpotiFLAC by default", - "@extensionsDisabled": { - "description": "Extension status - inactive" - }, - "@regionCountryAU": { - "description": "Country name for SongLink region picker" - }, - "@storeCategoryMetadata": { - "description": "Store extension category - metadata" - }, - "libraryFilterApply": "適用", - "@libraryFilterApply": { - "description": "Apply filters button" - }, - "@libraryFilterSortGenreAsc": { - "description": "Sort option - genre ascending" - }, - "setupAllowAccessToManageFiles": "Please enable \"Allow access to manage all files\" in the next screen.", - "@dialogSave": { - "description": "Dialog button - save changes" - }, - "trackLyrics": "歌詞", - "extensionSettingNotSet": "Not set", - "@extensionSettingNotSet": { - "description": "Value shown when an extension setting has no value" - }, - "@audioAnalysisClipping": { - "description": "Clipping metric label" - }, - "downloadNeteaseIncludeTranslation": "Netease: Include Translation", - "@albumFolderArtistAlbumSubtitle": { - "description": "Folder structure example" - }, - "@settingsDonateSubtitle": { - "description": "Subtitle for donate menu item" - }, - "cueSplitSuccess": "Split into {count} tracks successfully", - "@cueSplitSuccess": { - "description": "Snackbar after successful CUE split", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cueSplitArtist": "Artist: {artist}", - "@cueSplitArtist": { - "description": "Artist name in CUE split sheet", - "placeholders": { - "artist": { - "type": "String" - } - } - }, - "updateSeeReleaseNotes": "See release notes for details.", - "@updateSeeReleaseNotes": { - "description": "Fallback changelog text when release notes cannot be parsed" - }, - "@trackReEnrichFfmpegFailed": { - "description": "Snackbar when FFmpeg embed fails for MP3/Opus" - }, - "collectionWishlist": "Wishlist", - "@collectionWishlist": { - "description": "Custom folder for saved tracks to download later" - }, - "editMetadataAutoFillFetch": "Fetch & Fill", - "@extensionsHomeFeedAuto": { - "description": "Label for auto-selected search provider" - }, - "providerPriorityDescription": "Drag to reorder download providers. The app will try providers from top to bottom when downloading tracks.", - "@providerPriorityDescription": { - "description": "Provider priority page description" - }, - "queueEmptySinglesSubtitle": "Single track downloads will appear here", "downloadLossyOpus128": "Opus 128kbps", - "downloadUseAlbumArtistForFolders": "Use Album Artist for folders", - "@downloadUseAlbumArtistForFolders": { - "description": "Setting - choose whether artist folders use Album Artist or Track Artist" + "@downloadLossyOpus128": { + "description": "Lossy format option - Opus 128kbps" }, - "@aboutLinks": { - "description": "Section for external links" + "downloadLossyOpus128Subtitle": "Smallest size, ~4MB per track", + "@downloadLossyOpus128Subtitle": { + "description": "Subtitle for Opus 128kbps lossy option" }, - "downloadedAlbumDeleteCount": "{count} {count, plural, =1{個のトラック} other{個のトラック}}を削除", - "updateLater": "後で", - "@logIssueIspBlockingSuggestion": { - "description": "Diagnostic badge suggestion for ISP blocking" + "downloadAskBeforeDownload": "ダウンロード前に確認する", + "@downloadAskBeforeDownload": { + "description": "Setting - show quality picker" }, - "actionResume": "再開", - "optionsDetailedLoggingOff": "バグレポートを有効", - "@searchSortDefault": { - "description": "Sort option - default API order" + "downloadDirectory": "ダウンロードディレクトリ", + "@downloadDirectory": { + "description": "Setting - download folder" }, - "@regionCountryCA": { - "description": "Country name for SongLink region picker" + "downloadSeparateSinglesFolder": "シングルのフォルダを分割", + "@downloadSeparateSinglesFolder": { + "description": "Setting - separate folder for singles" }, - "@sectionStorageAccess": { - "description": "Section header for storage access settings" - }, - "downloadFilterContributing": "Filter Contributing Artists", - "downloadUseAlbumArtistForFoldersTrackSubtitle": "Folder named after Track Artist tag", - "storeSearch": "拡張を検索...", - "@storeSearch": { - "description": "Repo search placeholder" - }, - "aboutTelegramChat": "Telegram コミュニティ", - "lyricsModeBoth": "両方", - "@lyricsModeBoth": { - "description": "Lyrics mode option - embed and external" - }, - "@permissionNotification": { - "description": "Notification permission type label" - }, - "libraryAutoScanSubtitle": "Automatically scan your library for new files", - "@libraryAutoScanSubtitle": { - "description": "Subtitle for auto scan setting" - }, - "libraryEnableLocalLibrary": "ローカルライブラリを有効", - "trackConvertTargetFormat": "ターゲットの形式", - "@trackConvertTargetFormat": { - "description": "Label for format selection" - }, - "extensionSettings": "設定", - "@editMetadataAutoFillSearching": { - "description": "Snackbar shown while searching for online metadata" - }, - "trackLyricsTimeout": "リクエストがタイムアウトしました。後ほどお試しください。", - "settingsExtensions": "拡張", - "@settingsBackup": { - "description": "Settings menu item - backup and restore page" - }, - "librarySourceDownloaded": "ダウンロード済み", - "@librarySourceDownloaded": { - "description": "Badge for tracks downloaded via SpotiFLAC" - }, - "appearanceDynamicColor": "ダイナミックカラー", - "@appearanceDynamicColor": { - "description": "Material You dynamic colors" - }, - "backupImportButton": "Choose backup file", - "downloadAppleElrcWordSyncDisabled": "Safer line-by-line Apple Music lyrics", - "@optionsEmbedMetadata": { - "description": "Settings toggle title for writing metadata into downloaded files" - }, - "appearanceTitle": "外観", - "downloadNeteaseIncludeRomanizationDisabled": "No romanization", - "@downloadNeteaseIncludeRomanizationDisabled": { - "description": "Subtitle when Netease romanization is off" - }, - "@libraryScanCancelled": { - "description": "Library scan status when a scan was cancelled" - }, - "tracksCount": "{count, plural, =1{1 個のトラック} other{{count} 個のトラック}}", - "@snackbarFailedToUpdateNamed": { - "description": "Snackbar when extension update fails in the repo tab", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "@extensionQualityOptions": { - "description": "Capability - quality selection" - }, - "logClearSearch": "Clear search", - "trackSaveLyrics": "歌詞を保存 (.lrc)", - "@trackReEnrichSearching": { - "description": "Snackbar while searching metadata from internet for local items" - }, - "@editMetadataAutoFillNoResults": { - "description": "Snackbar when online metadata search returns no results" - }, - "notifDownloadComplete": "Download Complete", - "snackbarAlreadyDownloaded": "「{trackName}」は既にダウンロードされています", - "folderOrganizationByAlbumSubtitle": "Separate folder for each album", - "storeRepoUrlHint": "https://github.com/user/repo", - "trackConvertDitherTriangularHp": "Triangular HP", - "lyricsModeBothSubtitle": "Embed and save .lrc file", - "trackReEnrichFieldExtra": "Genre, Label, Copyright", - "@trackReEnrichFieldExtra": { - "description": "Checkbox label for extra metadata in re-enrich" - }, - "sectionLyrics": "歌詞", - "@sectionLyrics": { - "description": "Settings section header" - }, - "extensionStrategy": "ストラテジー: {strategy}", - "@extensionStrategy": { - "description": "Track matching strategy name", - "placeholders": { - "strategy": { - "type": "String" - } - } - }, - "@downloadNativeWorker": { - "description": "Setting title for Android native download worker" - }, - "optionsArtistTagModeSplitVorbis": "Split tags for FLAC/Opus", - "extensionsHomeFeedUse": "Use {extensionName} home feed", - "@cacheAppDirectoryDesc": { - "description": "Description of what app cache directory contains" - }, - "cancelDownloadTitle": "Cancel download?", - "updateWhatsNew": "新着情報", - "updateNewVersionReady": "新しいバージョンの準備ができています", - "@extensionVerificationClose": { - "description": "Button to dismiss the extension verification help dialog" - }, - "a11ySelectTrack": "Select track", - "libraryClearSubtitle": "Remove all scanned tracks", - "@libraryClearSubtitle": { - "description": "Subtitle for clear button" - }, - "@settingsDownloadNetworkSubtitle": { - "description": "Subtitle explaining network preference" - }, - "storeAnyVersion": "Any", - "@storeAnyVersion": { - "description": "Store detail value when any app version is accepted" - }, - "navStore": "Repo", - "backupExportSectionDescription": "Save your settings, download history, liked tracks, wishlist, favorite artists and playlists into a single file you can keep or move to another phone.", - "libraryScanSettings": "スキャン設定", - "@libraryScanSettings": { - "description": "Section header for scan settings" - }, - "trackDuration": "再生時間", - "@trackDuration": { - "description": "Metadata label - track length" - }, - "extensionHealthOffline": "Offline", - "@extensionHealthOffline": { - "description": "Extension service health status - offline" - }, - "editMetadataFieldArtist": "Artist", - "@editMetadataFieldArtist": { - "description": "Chip label for artist field in auto-fill selector" - }, - "libraryInLibrary": "ライブラリ内", - "pressBackAgainToExit": "Press back again to exit", - "@pressBackAgainToExit": { - "description": "Exit confirmation message" - }, - "setupNotificationGranted": "通知の権限が許可されました!", - "@setupNotificationGranted": { - "description": "Success message for notification permission" - }, - "settingsDonate": "Support Development", - "snackbarFailedToUpdateNamed": "Failed to update {extensionName}", - "backupContentsTitle": "Backup contents", - "updateDontRemind": "通知しない", - "@dialogDiscard": { - "description": "Dialog button - discard changes" - }, - "editMetadataAutoFillSearching": "Searching online...", - "discographyDownloadSelected": "選択済みをダウンロード", - "trackConvertResampler": "Resampler", - "queueFilteringIndicator": "Filtering...", - "@queueFilteringIndicator": { - "description": "Shown while filter results are being computed" - }, - "@dialogDownloadAllTitle": { - "description": "Dialog title for bulk download confirmation" - }, - "cueSplitConfirmMessage": "Split \"{album}\" into {count} individual FLAC files?\n\nFiles will be saved to the same directory.", - "@downloadCreatePlaylistSourceFolderRedundant": { - "description": "Subtitle when folder organization is already set to playlist" - }, - "regionCountryCA": "Canada", - "cacheTempDirectory": "一時ディレクトリ", - "@cacheTempDirectory": { - "description": "Cache item title for temporary files directory" - }, - "libraryShowDuplicateIndicator": "Show Duplicate Indicator", - "@logFilterBySeverity": { - "description": "Filter dialog title" - }, - "homeSearchHintProvider": "Search with {providerName}...", - "@downloadNeteaseIncludeTranslationDisabled": { - "description": "Subtitle when Netease translation is off" - }, - "optionsCheckUpdates": "更新を確認", - "replayGainBatchAnalyzing": "Analyzing ReplayGain...", - "recentTypeAlbum": "アルバム", - "providerExtension": "拡張", - "@providerExtension": { - "description": "Label for extension-provided providers" - }, - "trackCoverNoSource": "No cover art source available", - "libraryFilterMetadata": "Metadata", - "albumFolderArtistYearAlbum": "アーティスト / [年] アルバム", - "@albumFolderArtistYearAlbum": { - "description": "Album folder option with year" - }, - "audioAnalysisClipping": "Clipping", - "@a11yOpenAlbumByArtistTrackCount": { - "description": "Accessibility label for opening an album item with track count", - "placeholders": { - "albumName": { - "type": "String" - }, - "artistName": { - "type": "String" - }, - "trackCount": { - "type": "int" - } - } - }, - "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": { - "count": { - "type": "int" - } - } - }, - "channelStable": "安定版", - "@channelStable": { - "description": "Update channel - stable releases" - }, - "tutorialSettingsTip3": "Customize app theme and appearance", - "setupAppDocumentsFolderSubtitle": "Recommended - accessible via Files app", - "a11yPlayTrackByArtist": "Play {trackName} by {artistName}", - "@a11yPlayTrackByArtist": { - "description": "Accessibility label for playing a local library track", - "placeholders": { - "trackName": { - "type": "String" - }, - "artistName": { - "type": "String" - } - } - }, - "dialogRemove": "削除", - "extensionVerificationClose": "Close", - "bulkDownloadPlaylistsButton": "Download {count} {count, plural, =1{playlist} other{playlists}}", - "@bulkDownloadPlaylistsButton": { - "description": "Button label for bulk downloading selected playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "optionsAutoFallbackSubtitle": "Try other services if download fails", - "@optionsAutoFallbackSubtitle": { - "description": "Subtitle for auto fallback" - }, - "extensionPatternsCount": "{count} 個のパターン", - "@libraryFilterLocal": { - "description": "Filter chip - show only local library items" - }, - "errorUrlNotRecognizedMessage": "This link is not supported. Make sure the URL is correct and a compatible extension is installed.", - "@errorUrlNotRecognizedMessage": { - "description": "Error message - URL not recognized explanation" - }, - "@extensionVerificationBrowserSubtitleExternal": { - "description": "Subtitle when external browser is preferred for extension verification" - }, - "optionsArtistTagMode": "Artist Tag Mode", - "libraryFilterMetadataComplete": "Complete metadata", - "@libraryFilterMetadataComplete": { - "description": "Filter option - items with complete metadata" - }, - "@extensionsVersion": { - "description": "Extension version display", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "@downloadNetworkAnySubtitle": { - "description": "Subtitle for any-network option in picker" - }, - "optionsReplayGainSubtitleOn": "Scan loudness and embed ReplayGain tags (EBU R128)", - "libraryScanning": "スキャン中...", - "@libraryScanning": { - "description": "Status during scan" - }, - "cacheRefresh": "Refresh", - "@actionShuffle": { - "description": "Tooltip for shuffle playback action" - }, - "optionsEmbedLyricsSubtitle": "Save synced lyrics alongside your downloaded tracks", - "@optionsEmbedLyricsSubtitle": { - "description": "Subtitle for embed lyrics" - }, - "queueEmptyAlbumsSubtitle": "Download multiple tracks from an album to see them here", - "extensionEnterValue": "Enter value", - "@settingsDownloadNetworkAny": { - "description": "Network option - use any connection" - }, - "collectionLoved": "Loved", - "@collectionLoved": { - "description": "Custom folder for favorite tracks" - }, - "storeAddRepoTitle": "Add Extension Repository", - "@storeAddRepoTitle": { - "description": "Store setup screen - heading when no repo is configured" - }, - "collectionNoPlaylistsYet": "No playlists yet", - "@collectionNoPlaylistsYet": { - "description": "Empty state title when user has no playlists" - }, - "libraryCleanupMissingFilesSubtitle": "Remove entries for files that no longer exist", - "@libraryCleanupMissingFilesSubtitle": { - "description": "Subtitle for cleanup button" - }, - "folderOrganizationByArtist": "アーティスト別", - "@folderOrganizationByArtist": { - "description": "Folder option - artist folders" - }, - "aboutTranslators": "翻訳者", - "notifAlreadyInLibraryCount": "Already in Library ({completed}/{total})", - "editMetadataFieldTitle": "Title", - "@editMetadataFieldTitle": { - "description": "Chip label for title field in auto-fill selector" - }, - "downloadFilenameDescription": "Use {artist}, {title}, {album}, {track}, {year}, {date}, {disc} as placeholders.", - "@downloadFilenameDescription": { - "description": "Description shown in filename format editor" - }, - "@notifDownloadsFinishedBody": { - "description": "Notification body when queue finishes with failures", - "placeholders": { - "completed": { - "type": "int" - }, - "failed": { - "type": "int" - } - } - }, - "@libraryFolderNotExist": { - "description": "Error when folder doesn't exist" - }, - "@playlistsCount": { - "description": "Playlist count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@loadingSharedLink": { - "description": "Status when opening shared URL" - }, - "extensionServiceHealth": "Service health", - "@extensionServiceHealth": { - "description": "Extension capability label for service health checks" - }, - "@collectionDeletePlaylistsMessage": { - "description": "Confirmation message for deleting selected playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "setupStorageDescription": "SpotiFLAC はダウンロードした音楽ファイルを保存するためにストレージの権限が必要です。", - "tutorialReadyMessage": "You're ready. Select your extensions, then search or paste a supported link.", - "tutorialLibraryTip3": "Browse tracks, albums, and playlists in list or grid views", - "selectionDeletePlaylistsCount": "Delete {count} {count, plural, =1{playlist} other{playlists}}", - "appearanceThemeLight": "ライト", - "queueEmptyHistorySubtitle": "Downloaded tracks will appear here", - "@queueEmptyHistorySubtitle": { - "description": "Empty state subtitle for download history" - }, - "backupRestoreFailed": "Failed to restore backup", - "@backupRestoreFailed": { - "description": "Snackbar when restore fails" - }, - "queueFlacQueuedWithSkipped": "Added {addedCount} tracks to queue, skipped {skippedCount}", - "@queueFlacQueuedWithSkipped": { - "description": "Snackbar when some selected local tracks were queued for FLAC redownload and some were skipped", - "placeholders": { - "addedCount": { - "type": "int" - }, - "skippedCount": { - "type": "int" - } - } - }, - "@trackReplayGain": { - "description": "Three-dot menu option to scan loudness and write ReplayGain tags" - }, - "@downloadedAlbumDownloadedCount": { - "description": "Downloaded tracks count badge", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "setupFolderChoose": "ダウンロードフォルダを選択", - "dialogDownloadAllTitle": "Download All", - "providerPriorityInfo": "If a track is not available on the first provider, the app will automatically try the next one.", - "@providerPriorityInfo": { - "description": "Info tip about fallback behavior" - }, - "@dialogDiscardChanges": { - "description": "Dialog title - unsaved changes warning" - }, - "discographyNoAlbums": "利用可能なアルバムがありません", - "downloadAppleQqMultiPersonDisabled": "Standard lyrics without speaker labels", - "cacheNoData": "キャッシュデータはありません", - "@cacheNoData": { - "description": "Label when cache category has no data" - }, - "tutorialStartDownloadSemantics": "Start download", - "@tutorialStartDownloadSemantics": { - "description": "Accessibility label for idle download button in tutorial demo" - }, - "logIssueIspBlockingSuggestion": "Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8", - "aboutTitle": "アプリについて", - "@cueSplitButton": { - "description": "Button text to start CUE splitting" - }, - "appearanceHistoryView": "履歴の表示", - "audioAnalysisSampleRate": "Sample Rate", - "@settingsCache": { - "description": "Settings menu item - cache management" - }, - "lyricsProvidersInfoText": "Extension lyrics providers run before built-in lyrics providers. At least one provider must remain enabled.", - "cacheTrackLookup": "Track lookup cache", - "extensionsHomeFeedOffSubtitle": "Do not show the home feed on the main screen", - "@downloadUsePrimaryArtistOnly": { - "description": "Setting - strip featured artists from folder name" - }, - "@regionCountryIN": { - "description": "Country name for SongLink region picker" - }, - "@libraryFilterQualityLossy": { - "description": "Filter option - lossy compressed audio" - }, - "extensionRefreshStatus": "Refresh status", - "notifAllDownloadsComplete": "All Downloads Complete", - "downloadNeteaseIncludeRomanizationEnabled": "Romanization lines included", - "editMetadataFieldDateHint": "YYYY-MM-DD or YYYY", - "@editMetadataFieldDateHint": { - "description": "Hint text for the edit metadata date field" - }, - "trackMetadataShare": "共有", - "@trackMetadataShare": { - "description": "Action button - share track" - }, - "discographyDownloadAllSubtitle": "{albumCount} 個のリリースから {count} 個のトラック", - "settingsDonateSubtitle": "Buy the developer a coffee", - "libraryFilterDownloaded": "ダウンロード済み", - "downloadNetworkAnySubtitle": "Use WiFi or mobile data", - "@cueSplitNoAudioFile": { - "description": "Error when CUE audio file is missing" - }, - "notifLibraryScanStopped": "Scan stopped before completion.", - "@settingsMetadata": { - "description": "Settings menu item - metadata settings" - }, - "snackbarFailedToInstallNamed": "Failed to install {extensionName}", - "trackCopyLyrics": "歌詞をコピー", - "@trackCopyLyrics": { - "description": "Action - copy lyrics to clipboard" - }, - "regionCountryAU": "Australia", "downloadAlbumFolderStructure": "アルバムフォルダの構造", - "downloadMusixmatchAuto": "Auto", - "actionDismiss": "Dismiss", - "storeFilterAll": "すべて", - "extensionsDisabled": "無効", - "@logClearLogs": { - "description": "Clear button tooltip" - }, - "dialogDownloadAllMessage": "Download {count} tracks?", - "@optionsEmbedLyrics": { - "description": "Embed lyrics in audio files" - }, - "tutorialLibraryTitle": "あなたのライブラリ", - "optionsCheckUpdatesSubtitle": "Notify when new version is available", - "@optionsCheckUpdatesSubtitle": { - "description": "Subtitle for update check" - }, - "collectionPlaylist": "Playlist", - "@collectionPlaylist": { - "description": "Single playlist label" - }, - "dateMonthsAgo": "{count} ヶ月前", - "@dateMonthsAgo": { - "description": "Relative date - months ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@extensionRemoveButton": { - "description": "Button to uninstall extension" - }, - "collectionPlaylistRenamed": "Playlist renamed", - "collectionCreatePlaylist": "Create playlist", - "homeGoToAlbum": "Go to Album", - "@homeGoToAlbum": { - "description": "Context menu item to navigate to the album page" - }, - "folderOrganizationByArtistSubtitle": "Separate folder for each artist", - "@optionsClearHistory": { - "description": "Delete all download history" - }, - "@searchAlbums": { - "description": "Search result category - albums" - }, - "@sectionDebug": { - "description": "Settings section header" - }, - "extensionsVersion": "バージョン {version}", - "@navHome": { - "description": "Bottom navigation - Home tab" - }, - "@editMetadataFieldDate": { - "description": "Chip label for date field in auto-fill selector" - }, - "downloadUsePrimaryArtistOnly": "Primary artist only for folders", - "tutorialExtensionsTip2": "Choose providers for search, downloads, metadata, and fallbacks", - "@setupStorageGranted": { - "description": "Success message for storage permission" - }, - "tutorialWelcomeTitle": "Welcome to SpotiFLAC Mobile!", - "a11ySelectAlbum": "Select album {albumName}", - "@a11ySelectAlbum": { - "description": "Accessibility label for selecting an album", - "placeholders": { - "albumName": { - "type": "String" - } - } - }, - "aboutMobileSource": "モバイル版のソースコード", - "@aboutMobileSource": { - "description": "Link to mobile GitHub repo" - }, - "@extensionCustomUrlHandling": { - "description": "Extension detail section title for custom URL handling" - }, - "@downloadMusixmatchLanguageAuto": { - "description": "Subtitle when no language is set" - }, - "@cancelDownloadKeep": { - "description": "Dialog button - keep the active download (do not cancel)" - }, - "libraryFilterSource": "ソース", - "@libraryFilterSource": { - "description": "Filter section - source type" - }, - "sectionStorageAccess": "ストレージアクセス", - "logFilterBySeverity": "Filter logs by severity", - "libraryFolderNotExist": "Selected folder does not exist", - "optionsEmbedMetadataSubtitleOn": "Write metadata, cover art, and embedded lyrics to files", - "albumFolderArtistAlbum": "アーティスト / アルバム", - "@albumFolderArtistAlbum": { - "description": "Album folder option" - }, - "allFilesAccessDeniedMessage": "Permission was denied. Please enable 'All files access' manually in system settings.", - "@allFilesAccessDeniedMessage": { - "description": "Message when permission is permanently denied" - }, - "editMetadataSelectEmpty": "Empty only", - "settingsLocalLibrarySubtitle": "Scan music & detect duplicates", - "@settingsAutoExportFailed": { - "description": "Setting toggle for auto-export" - }, - "cacheCleanupUnusedSubtitle": "Remove orphaned download history and missing library entries", - "@tutorialSettingsTitle": { - "description": "Tutorial settings page title" - }, - "libraryFilterMetadataMissingGenre": "Missing genre", - "@appearanceSelectAccentColor": { - "description": "Accessibility label for picking an accent color", - "placeholders": { - "hex": { - "type": "String" - } - } - }, - "setupFolderDescription": "Select a folder where your downloaded music will be saved.", - "extensionDetailsTags": "Tags", - "unknownArtist": "Unknown Artist", - "trackFetchOnlineLyrics": "Fetch from Online", - "snackbarNoActionDefined": "No action defined for this button", - "@snackbarNoActionDefined": { - "description": "Snackbar when an extension button has no action configured" - }, - "downloadAllCount": "すべてダウンロード ({count})", - "@downloadAllCount": { - "description": "Download all button with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadedAlbumDiscHeader": "ディスク {discNumber}", - "@backupInvalidFile": { - "description": "Snackbar when the chosen file is not a valid backup" - }, - "@extensionHooksAvailable": { - "description": "Post-processing hooks count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@logIssueTrackNotFoundSuggestion": { - "description": "Diagnostic badge suggestion when a track is unavailable" - }, - "@snackbarFileNotFound": { - "description": "Snackbar - file doesn't exist" - }, - "extensionHealthOnline": "Online", - "@extensionHealthOnline": { - "description": "Extension service health status - online" - }, - "settingsSaveDownloadHistorySubtitle": "Keep completed downloads in history and library views", - "trackOptionRemoveFromWishlist": "ウィッシュから削除", - "extensionsFallbackTitle": "Fallback Extensions", - "@extensionsFallbackTitle": { - "description": "Setting and page title for choosing which download extensions can be used during fallback" - }, - "metadataSaveFailedFfmpeg": "Failed to save metadata via FFmpeg", - "@albumFolderAlbumOnly": { - "description": "Album folder option" - }, - "@albumFolderYearAlbumSubtitle": { - "description": "Folder structure example" - }, - "downloadedAlbumDeleteSelected": "選択済みを削除", - "selectionSelectPlaylistsToDelete": "Select playlists to delete", - "@selectionSelectPlaylistsToDelete": { - "description": "Hint shown when no playlists are selected for deletion" - }, - "storeAddRepoDescription": "Enter a GitHub repository URL that contains a registry.json file to browse and install extensions.", - "appearanceThemeDark": "ダーク", - "downloadedAlbumTapToSelect": "トラックをタップで選択", - "@collectionAddedToFavoriteArtists": { - "description": "Snackbar after adding artist to favorite artists", - "placeholders": { - "artistName": { - "type": "String" - } - } - }, - "@backupRestored": { - "description": "Snackbar after a successful restore" - }, - "nowPlayingLibraryEmpty": "Your library is empty", - "@nowPlayingLibraryEmpty": { - "description": "Snackbar when shuffle library is requested but library has no tracks" - }, - "editMetadataAutoFillNoResults": "No matching metadata found online", - "updateDownloading": "ダウンロード中...", - "trackLyricsSource": "Source: {source}", - "logFilterLevel": "レベル", - "logNoLogsYet": "まだログはありません", - "cacheSizeOnly": "{size}", - "@cacheSizeOnly": { - "description": "Cache size only", - "placeholders": { - "size": { - "type": "String" - } - } - }, - "trackOpenInService": "Open in {serviceName}", - "@trackOpenInService": { - "description": "Button label to open a track in a named music service", - "placeholders": { - "serviceName": { - "type": "String" - } - } - }, - "@cacheLibraryCoverDesc": { - "description": "Description of what library cover cache contains" - }, - "libraryClearConfirmMessage": "This will remove all scanned tracks from your library. Your actual music files will not be deleted.", - "@dialogImportPlaylistMessage": { - "description": "Dialog message - import playlist confirmation", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionsHomeFeedAuto": "Auto", - "searchEmptyResultSubtitle": "Try another keyword", - "@searchEmptyResultSubtitle": { - "description": "Subtitle shown under the empty search result state on the home screen" - }, - "dateToday": "今日", - "a11yOpenItem": "Open {itemType} {name}", - "@a11yOpenItem": { - "description": "Accessibility label for opening a generic item", - "placeholders": { - "itemType": { - "type": "String" - }, - "name": { - "type": "String" - } - } - }, - "audioAnalysisBitDepth": "Bit Depth", - "editMetadataFieldTrackTotal": "Track Total", - "@editMetadataFieldTrackTotal": { - "description": "Label for total tracks field in the edit metadata sheet" - }, - "@editMetadataFieldDiscTotal": { - "description": "Label for total discs field in the edit metadata sheet" - }, - "replayGainBatchConfirmMessage": "Analyze loudness and write ReplayGain tags to {count} track(s)?", - "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Folder named after Album Artist tag", - "@notifDownloadingUpdate": { - "description": "Notification title while downloading an app update", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "@csvImportTracks": { - "description": "Label shown in quality picker for CSV import", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "trackEditMetadata": "メタデータを編集", - "discographyDownloadAll": "すべてダウンロード", - "@discographyDownloadAll": { - "description": "Option - download entire discography" - }, - "@editMetadataFieldAlbum": { - "description": "Chip label for album field in auto-fill selector" - }, - "albumFolderArtistAlbumSubtitle": "アルバム/アーティスト名/アルバム名/", - "extensionHealthServiceUnknown": "Service status unknown", - "navHome": "ホーム", - "queueDownloadStarting": "Starting...", - "@dialogRemoveExtension": { - "description": "Dialog title - uninstall extension" - }, - "notifLibraryScanProgressNoTotal": "{scanned} files scanned • {percentage}%", - "@appearanceAmoledDark": { - "description": "Theme option - pure black" - }, - "qualityHiResFlac": "ハイレゾ FLAC", - "selectionSelected": "{count} 個を選択済み", - "extensionDetailsInformation": "Information", - "@extensionDetailsInformation": { - "description": "Section title for extension metadata information" - }, - "discographyDownload": "ディスコグラフィをダウンロード", - "editMetadataFieldCopyright": "Copyright", - "@setupOpenSettings": { - "description": "Button to open system settings" - }, - "libraryFilterSort": "Sort", - "cacheLibraryCoverDesc": "Cover art extracted from local music files. Will re-extract on next scan.", - "dialogRemoveExtension": "拡張を削除", - "backupExportSectionTitle": "Create backup", - "downloadEmbedLyricsDisabled": "Enable metadata embedding first", - "openInOtherServices": "Open in Other Services", - "actionSelectAll": "すべて選択", - "settingsDownloadNetworkSubtitle": "Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.", - "downloadFolderOrganization": "フォルダ構成", - "tutorialWelcomeTip2": "Choose from the audio qualities offered by your download provider", - "@tutorialWelcomeTip2": { - "description": "Tutorial welcome tip 2" - }, - "selectionAllSelected": "すべてのトラックを選択済み", - "@selectionAllSelected": { - "description": "Status - all items selected" - }, - "settingsLogsSubtitle": "デバッグのためのアプリログを表示", - "albumFolderYearAlbumSubtitle": "アルバム/[2005] アルバム名/", - "cancelDownloadKeep": "Keep", - "optionsDetailedLoggingOn": "詳細なログを記録しています", - "safMigrationMessage2": "Please select your download folder again to switch to the new storage system.", - "@storeChangeRepoTooltip": { - "description": "Tooltip for the change-repository icon button in the app bar" - }, - "regionCountryJP": "Japan", - "notifUpdateFailed": "Update Failed", - "downloadCreatePlaylistSourceFolderRedundant": "Handled by folder organization setting", - "@trackLyricsSaved": { - "description": "Snackbar after lyrics saved", - "placeholders": { - "fileName": { - "type": "String" - } - } - }, - "downloadLocationSubtitle": "Choose where to save your downloaded tracks", - "trackConvertActionLabelLossless": "{sourceFormat} → {targetFormat} ({quality})", - "lyricsProvidersDisabledSection": "Disabled ({count})", - "@dateDaysAgo": { - "description": "Relative date - days ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "librarySourceLocal": "ローカル", - "backupContentsExtensions": "{count, plural, =1{1 extension} other{{count} extensions}}", - "sectionService": "サービス", - "lyricsProviderQqMusicDesc": "QQ Music (good for Chinese songs, via proxy)", - "@lyricsProviderQqMusicDesc": { - "description": "Description for QQ Music provider" - }, - "cacheCleanupUnusedDesc": "Remove orphaned download history and library entries for missing files.", - "selectionTapPlaylistsToSelect": "Tap playlists to select", - "notifUpdateFailedBody": "Could not download update. Try again later.", - "downloadNeteaseIncludeTranslationDisabled": "Original lyrics only", - "artistPopular": "人気", - "extensionRemoveButton": "拡張を削除", - "allFilesAccessEnabledSubtitle": "Can write to any folder", - "@allFilesAccessEnabledSubtitle": { - "description": "Subtitle when all files access is enabled" - }, - "extensionsSearchProvider": "検索のプロバイダー", - "tutorialWelcomeDesc": "Learn how to find music with extensions, choose the quality you want, and manage downloads in SpotiFLAC Mobile.", - "selectionBatchConvertConfirmTitle": "一括変換", - "extensionMetadataProvider": "メタデータのプロバイダー", - "queueDownloadedFileMissing": "Downloaded file missing", - "logClearLogs": "ログを消去", - "@downloadAppleQqMultiPerson": { - "description": "Setting for word-by-word multi-person lyrics from Apple Music and QQ Music" - }, - "tutorialWelcomeTip1": "Search with an installed extension or paste a supported music link", - "@tutorialWelcomeTip1": { - "description": "Tutorial welcome tip 1" - }, - "logIssueRateLimitedSuggestion": "Wait a few minutes before trying again", - "downloadAllowLocalNetworkEnabled": "Requests to local/private addresses are allowed (for local proxy or custom DNS)", - "@regionCountryUS": { - "description": "Country name for SongLink region picker" - }, - "trackArtist": "アーティスト", - "extensionCustomUrlHandling": "Custom URL Handling", - "appearanceDynamicColorSubtitle": "壁紙の色を使用する", - "@appearanceDynamicColorSubtitle": { - "description": "Subtitle for dynamic color" - }, - "searchSortDefault": "Default", - "@downloadFallbackExtensions": { - "description": "Settings item for configuring fallback extension providers" + "@downloadAlbumFolderStructure": { + "description": "Setting - album folder organization" }, "albumFolderStructureDescription": "Choose how album folders are structured", "@albumFolderStructureDescription": { "description": "Album folder structure picker description" }, - "libraryBuiltInPreviewPlayerSubtitle": "Quick local previews inside SpotiFLAC Mobile", - "@libraryBuiltInPreviewPlayerSubtitle": { - "description": "Subtitle for built-in preview player option" + "downloadUseAlbumArtistForFolders": "Use Album Artist for folders", + "@downloadUseAlbumArtistForFolders": { + "description": "Setting - choose whether artist folders use Album Artist or Track Artist" }, - "storageModeAppFolder": "App Folder (Recommended)", - "@actionPause": { - "description": "Action button - pause download" + "downloadUsePrimaryArtistOnly": "Primary artist only for folders", + "@downloadUsePrimaryArtistOnly": { + "description": "Setting - strip featured artists from folder name" }, - "actionPaste": "Paste", - "extensionSettingsCount": "{count} {count, plural, =1{setting} other{settings}}", - "downloadNativeWorker": "Native download worker", - "releaseTypeEp": "EP", - "@releaseTypeEp": { - "description": "Badge label for EP releases" + "downloadUsePrimaryArtistOnlyEnabled": "Featured artists removed from folder name (e.g. Justin Bieber, Quavo → Justin Bieber)", + "@downloadUsePrimaryArtistOnlyEnabled": { + "description": "Subtitle when primary artist only is enabled" }, - "snackbarExtensionInstalledEnable": "{extensionName} installed. Enable it in Settings > Extensions", - "cacheRefreshStats": "状態を更新", - "collectionPlaylistChangeCover": "カバー画像を変更", - "@collectionPlaylistChangeCover": { - "description": "Bottom sheet action to pick a custom cover image for a playlist" + "downloadUsePrimaryArtistOnlyDisabled": "Full artist string used for folder name", + "@downloadUsePrimaryArtistOnlyDisabled": { + "description": "Subtitle when primary artist only is disabled" }, - "optionsClearHistory": "ダウンロード履歴を消去", - "trackGenre": "ジャンル", - "snackbarSelectedPlaylistsEmpty": "Selected playlists have no tracks", - "collectionAddedTracksToPlaylist": "Added {count} {count, plural, =1{track} other{tracks}} to {playlistName}", - "downloadNeteaseIncludeRomanization": "Netease: Include Romanization", - "libraryFilterMetadataMissingArtist": "Missing artist", - "extensionsNoCustomSearch": "カスタム検索の拡張はありません", - "@extensionsTitle": { - "description": "Extensions page title" + "downloadSelectQuality": "品質を選択", + "@downloadSelectQuality": { + "description": "Dialog title - choose audio quality" }, - "extensionDownloadProvider": "ダウンロードのプロバイダー", - "@extensionDownloadProvider": { - "description": "Capability - provides downloads" - }, - "lyricsMode": "歌詞モード", - "aboutReportIssueSubtitle": "問題が発生した場合に報告してください", - "@downloadSeparateSinglesFolder": { - "description": "Setting - separate folder for singles" + "downloadFrom": "ダウンロード元", + "@downloadFrom": { + "description": "Label - download source" }, "appearanceAmoledDark": "AMOLED ダーク", - "logIssueNetworkErrorDescription": "Connection issues detected", - "folderOrganizationByArtistAlbumSubtitle": "Nested folders for artist and album", - "@libraryForceFullScanSubtitle": { - "description": "Subtitle for force full scan button" + "@appearanceAmoledDark": { + "description": "Theme option - pure black" }, - "setupGrantPermission": "権限を許可", - "lyricsProvidersDescription": "Enable, disable and reorder lyrics sources. Providers are tried top-to-bottom until lyrics are found.", - "dateDaysAgo": "{count} 日前", - "extensionsHomeFeedDescription": "Choose which extension provides the home feed on the main screen", - "downloadLossyMp3Subtitle": "Best compatibility, ~10MB per track", - "@downloadLossyMp3Subtitle": { - "description": "Subtitle for MP3 320kbps lossy option" - }, - "nowPlayingDetails": "Details", - "collectionWishlistEmptyTitle": "Wishlist is empty", - "downloadAppleQqMultiPersonEnabled": "Speaker labels included for duets and group tracks", - "@snackbarExtensionUpdatedVersion": { - "description": "Snackbar after updating an extension from the repo tab", - "placeholders": { - "extensionName": { - "type": "String" - }, - "version": { - "type": "String" - } - } - }, - "extensionHealthServiceDegraded": "Service degraded", - "selectionConvertNoConvertible": "No convertible tracks selected", - "setupStorageGranted": "ストレージの権限が許可されました!", - "downloadAllowLocalNetwork": "Allow Local Network Access", - "nowPlayingNoLyrics": "No lyrics in this file", - "selectionDeleteTracksCount": "Delete {count} {count, plural, =1{track} other{tracks}}", - "@selectionDeleteTracksCount": { - "description": "Button label for deleting selected tracks", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@libraryForceFullScan": { - "description": "Button to force a complete rescan of library" - }, - "notifLibraryScanExcluded": "{count} excluded", - "@aboutPaxsenixSubtitle": { - "description": "Subtitle for Paxsenix special thanks entry on the about page" - }, - "setupChangeFolderTooltip": "Change folder", - "logIssueIspBlockingDescription": "Your ISP may be blocking access to download services", - "@logIssueIspBlockingDescription": { - "description": "Diagnostic badge description for ISP blocking" - }, - "libraryClear": "ライブラリを消去", - "collectionRemoveFromPlaylist": "Remove from playlist", - "@collectionRemoveFromPlaylist": { - "description": "Tooltip for removing track from playlist" - }, - "backupIncludeSecrets": "Include extension credentials", - "notifDownloadsFinishedBody": "{completed, plural, =1{1 track downloaded} other{{completed} tracks downloaded}}, {failed, plural, =1{1 failed} other{{failed} failed}}", - "storeCategoryMetadata": "Metadata", - "@trackLyricsEmbedded": { - "description": "Snackbar - lyrics saved to file" - }, - "editMetadataFieldDiscTotal": "Disc Total", - "tutorialLibraryTip1": "Manage active, pending, and completed downloads from the Library queue", - "playlistsCount": "{count, plural, =1{1 playlist} other{{count} playlists}}", - "downloadCreatePlaylistSourceFolderDisabled": "All tracks saved directly to download folder", - "@downloadFallbackExtensionsSubtitle": { - "description": "Subtitle for fallback extensions item" - }, - "libraryFilterLocal": "ローカル", - "tutorialDownloadInProgressSemantics": "Download in progress", - "searchSortDurationLong": "Duration (Longest)", - "@appearanceLanguage": { - "description": "Language setting title" - }, - "libraryAbout": "ローカルライブラリについて", - "@libraryAbout": { - "description": "Section header for about info" - }, - "cueSplitNoAudioFile": "Audio file not found for this CUE sheet", - "notifUpdateReadyBody": "SpotiFLAC Mobile v{version} downloaded. Tap to install.", - "appearanceSelectAccentColor": "Select accent color {hex}", - "@homeAlbumInfoUnavailable": { - "description": "Snackbar when album info cannot be loaded" - }, - "trackReplayGain": "Rescan ReplayGain", - "downloadSeparateSinglesFolder": "シングルのフォルダを分割", - "trackAlbumArtist": "アルバムアーティスト", - "qualityFlacLossless": "FLAC ロスレス", - "@extensionVerificationHelpMessageWaiting": { - "description": "Dialog message when verification may need manual browser help" - }, - "tutorialSettingsTitle": "Customize Your Experience", - "extensionActionFailed": "Action failed", - "@storeEmptyNoResults": { - "description": "Message when search/filter returns no results" - }, - "downloadAppleQqMultiPerson": "Apple / QQ: Multi-Person Lyrics", - "downloadFallbackExtensionsSubtitle": "Choose which extensions can be used as fallback", - "storeExtensionsCount": "{count} {count, plural, =1{extension} other{extensions}}", - "trackCoverNoEmbeddedArt": "No embedded album art found", - "@trackCoverNoEmbeddedArt": { - "description": "Message shown when a track file has no embedded cover art" - }, - "snackbarExtensionUpdatedVersion": "{extensionName} updated to v{version}", - "setupStorageAccessMessageAndroid11": "Android 11+ requires \"All files access\" permission to save files to your chosen download folder.", - "notifDownloadsFinished": "Downloads Finished ({completed} done, {failed} failed)", - "notifLibraryScanProgressWithTotal": "{scanned}/{total} files • {percentage}%", - "optionsPrimaryProvider": "プライマリーのプロバイダー", - "@optionsPrimaryProvider": { - "description": "Main search provider setting" - }, - "logIssueTrackNotFoundSuggestion": "The track may not be available in lossless quality", - "collectionAddedToLoved": "\"{trackName}\" added to Loved", - "albumFolderArtistAlbumFlat": "Artist / Album (Singles flat)", - "homeAlbumInfoUnavailable": "Album info not available", - "settingsLyrics": "Lyrics", - "extensionVerificationBrowserExternal": "External", - "regionCountryIN": "India", - "extensionHealthUnknown": "Unknown", - "backupContentsWishlist": "{count} wishlist {count, plural, =1{track} other{tracks}}", - "settingsAutoExportFailed": "ダウンロードの自動エクスポートに失敗しました", - "logFilterSection": "フィルター", - "dialogDiscardChanges": "変更を破棄しますか?", - "@qualityHiResFlacSubtitle": { - "description": "Technical spec for hi-res" - }, - "searchTracks": "Tracks", - "searchAlbums": "アルバム", - "trackConvertFormat": "変換の形式", - "metadataProviderPriorityTitle": "メタデータの優先度", - "libraryFolderHint": "タップでフォルダを選択", - "downloadedAlbumDeleteMessage": "Delete {count} {count, plural, =1{track} other{tracks}} from this album?\n\nThis will also delete the files from storage.", - "@downloadedAlbumDeleteMessage": { - "description": "Delete confirmation with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "trackAlbum": "アルバム", - "updateAvailable": "更新が利用可能です", - "optionsEmbedLyrics": "歌詞を埋め込む", - "trackReEnrichProgress": "Re-enriching metadata...", - "@trackReEnrichProgress": { - "description": "Snackbar while re-enriching metadata" - }, - "audioAnalysisPeak": "Peak", - "@audioAnalysisPeak": { - "description": "Peak amplitude metric label" - }, - "optionsExtensionStoreSubtitle": "Show Repo tab in navigation", - "settingsTitle": "設定", - "@settingsAbout": { - "description": "Settings section - app info" - }, - "cacheExploreFeed": "Explore feed cache", - "@dialogDownloadPlaylistsMessage": { - "description": "Dialog message for bulk playlist download confirmation", - "placeholders": { - "trackCount": { - "type": "int" - }, - "playlistCount": { - "type": "int" - } - } - }, - "downloadedAlbumSelectedCount": "{count} 個を選択済み", - "downloadAskQualitySubtitle": "Show quality picker for each download", - "filenameShowAdvancedTags": "高度なタグを表示", - "@filenameShowAdvancedTags": { - "description": "Toggle label for showing advanced filename tags" - }, - "@editMetadataFieldComment": { - "description": "Label for comment field in the edit metadata sheet" - }, - "downloadFallbackExtensions": "Fallback Extensions", - "downloadAlbumArtistMetadataFull": "Album Artist metadata: Full", - "cacheLibraryCover": "ライブラリのカバーキャッシュ", - "actionShuffle": "Shuffle", - "backupCreated": "Backup created", - "downloadLossyAacSubtitle": "Best mobile compatibility, M4A container", - "actionCreate": "Create", - "snackbarAddedToQueueGeneric": "Added to queue", - "downloadedAlbumDownloadedCount": "{count} 個をダウンロード済み", - "snackbarLoadingCueSheet": "Loading CUE sheet...", - "@trackCoverClearSelected": { - "description": "Tooltip for clearing the newly selected cover art" - }, - "aboutOriginalCreator": "オリジナルの SpotiFLAC の作者", - "a11yTrackByArtist": "{trackName} by {artistName}", - "audioAnalysisDynamicRange": "Dynamic Range", - "homeChangeSearchProviderTooltip": "Change search provider", - "loadingSharedLink": "共有リンクを読み込み中...", - "lyricsModeEmbedSubtitle": "FLAC メタデータに保存された歌詞", - "setupNotificationBackgroundDescription": "Get notified about download progress and completion. This helps you track downloads when the app is in background.", - "snackbarViewQueue": "キューを表示", - "@audioAnalysisDuration": { - "description": "Duration metric label" - }, - "downloadSeparateSinglesDisabled": "Singles and albums saved in the same folder", - "backupRestored": "Backup restored successfully", - "trackConvertConfirmMessageLosslessCapped": "Convert from {sourceFormat} to {targetFormat} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original file will be deleted after conversion.", - "@trackConvertConfirmMessageLosslessCapped": { - "description": "Confirmation dialog message for capped lossless conversion of a single file", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "quality": { - "type": "String" - } - } - }, - "discographySelectAlbumsSubtitle": "Choose specific albums or singles", - "@discographySelectAlbumsSubtitle": { - "description": "Subtitle for select albums option" - }, - "backupImportSectionDescription": "Pick a backup file to restore your data. This replaces the current settings, history and library on this device.", - "errorUrlFetchFailed": "Failed to load content from this link. Please try again.", - "lyricsProviderLyricsPlusDesc": "Word-by-word karaoke lyrics (Apple/Musixmatch/Spotify/QQ, via proxy)", - "dialogSave": "保存", - "trackReEnrichSearching": "Searching metadata online...", - "regionCountryUS": "United States", - "audioAnalysisDescription": "Verify lossless quality with spectrum analysis", - "downloadFilenameFormat": "ファイル名の形式", - "cueSplitTitle": "分割 CUE シート", - "settingsAppSubtitle": "Updates, data, extension repo, debug", - "@settingsAppSubtitle": { - "description": "Subtitle for app settings" - }, - "@setupPermissionRequiredMessage": { - "description": "Generic permission required message", - "placeholders": { - "permissionType": { - "type": "String" - } - } - }, - "errorMissingExtensionSource": "{item} を読み込めません: 拡張ソースがありません", - "albumFolderAlbumOnlySubtitle": "アルバム/アルバム名/", - "logIssueTrackNotFoundLabel": "TRACK NOT FOUND", - "extensionVerificationHelpTitleManual": "Open verification manually", - "dialogDiscard": "破棄", - "storageModeSaf": "Custom Folder (SAF)", - "errorRateLimited": "レート制限", - "downloadSelectQuality": "品質を選択", - "dialogDownloadPlaylistsMessage": "Download {trackCount} {trackCount, plural, =1{track} other{tracks}} from {playlistCount} {playlistCount, plural, =1{playlist} other{playlists}}?", - "collectionFoldersTitle": "My folders", - "progressFetchingMetadata": "メタデータを取得中... {current}/{total}", - "settingsDownloadNetworkAny": "Wi-Fi + モバイルデータ", - "audioAnalysisDuration": "Duration", - "audioAnalysisAnalyzing": "Analyzing audio...", - "extensionVerificationHelpMessageWaiting": "If the browser did not open, or verification finished but did not return to SpotiFLAC Mobile, open this link again or copy it manually.", - "editMetadataFieldDiscNum": "Disc #", - "@editMetadataFieldDiscNum": { - "description": "Chip label for disc number field in auto-fill selector" - }, - "@noTracksFoundForAlbum": { - "description": "Empty state message when an album has no tracks" - }, - "previewPlay": "Play preview", - "setupPermissionRequiredMessage": "最適な体験を得るには {permissionType} の権限が必要です。この権限は設定で後から変更できます。", - "aboutVersion": "バージョン", - "qualityHiResFlacSubtitle": "24-bit / 最大 96kHz", - "audioAnalysisSamples": "Samples", - "libraryFilterQualityHiRes": "ハイレゾ (24bit)", - "sectionMetadataProviders": "Providers", - "@sectionMetadataProviders": { - "description": "Settings section header for metadata providers" - }, - "trackCopyright": "著作権", - "libraryForceFullScanSubtitle": "Rescan all files, ignoring cache", - "trackCopiedToClipboard": "クリップボードにコピーしました", - "optionsEmbedMetadata": "Embed Metadata", - "collectionAddedTracksToPlaylistWithExisting": "Added {count} {count, plural, =1{track} other{tracks}} to {playlistName} ({alreadyCount} already in playlist)", - "@collectionAddedTracksToPlaylistWithExisting": { - "description": "Snackbar after adding multiple tracks to a playlist when some were already present", - "placeholders": { - "count": { - "type": "int" - }, - "playlistName": { - "type": "String" - }, - "alreadyCount": { - "type": "int" - } - } - }, - "storeCategoryIntegration": "Integration", - "storeClearFilters": "フィルターを消去", - "navSettings": "設定", - "@homeRecent": { - "description": "Section header for recent searches" - }, - "sectionApp": "アプリ", - "@sectionLanguage": { - "description": "Settings section header for language" - }, - "downloadFilterContributingDisabled": "Full Album Artist string used", - "albumFolderArtistAlbumSinglesSubtitle": "Artist/Album/ and Artist/Singles/", - "collectionDeletePlaylistsMessage": "Delete {count} {count, plural, =1{playlist} other{playlists}}?", - "lyricsProvidersSaved": "Lyrics provider priority saved", - "@trackReplayGainFailed": { - "description": "Snackbar message when ReplayGain scan/write fails" - }, - "trackTrackName": "トラック名", - "homeRecent": "最近", - "recentEmpty": "No recent items yet", - "cacheClearAll": "すべてのキャッシュを消去", - "trackReEnrichFieldReleaseInfo": "Date & ISRC", - "regionCountryMX": "Mexico", - "a11yOpenAlbumByArtistTrackCount": "Open album {albumName} by {artistName}, {trackCount} tracks", - "editMetadataFieldAlbum": "Album", - "settingsAbout": "アプリについて", - "libraryFilterTitle": "フィルター", - "cleanupOrphanedDownloadsResult": "Removed {count} orphaned entries from history", - "extensionHooksAvailable": "{count} 個のフックが利用可能です", - "backupContentsSettings": "App settings", - "trackLyricsEmbedded": "Lyrics embedded successfully", - "optionsUpdateChannelPreview": "プレビューリリースを入手", - "collectionAddedToFavoriteArtists": "\"{artistName}\" added to Favorite Artists", - "libraryForceFullScan": "強制フルスキャン", - "snackbarProviderPrioritySaved": "プロバイダーの優先度を保存しました", - "collectionFavoriteArtistsEmptySubtitle": "Tap the heart on an artist page to keep them here", - "libraryBuiltInPlayerInfo": "The built-in player is a preview tool for checking local tracks quickly. Use an external music player for actual listening.", - "extensionServiceStatus": "Service Status", - "dateWeeksAgo": "{count} 週間前", - "historyFilterSingles": "シングル", - "tutorialSettingsTip2": "Set quality, concurrency, filenames, and conversion preferences", - "trackLyricsSaved": "Lyrics saved to {fileName}", - "cacheClearAllConfirmTitle": "すべてのキャッシュを消去しますか?", - "noTracksFoundForAlbum": "No tracks found for this album", - "sectionLanguage": "言語", - "@logIssueTrackNotFoundDescription": { - "description": "Diagnostic badge description when a track is unavailable" - }, - "setupSelectFolder": "フォルダを選択", - "dateYesterday": "昨日", - "collectionAddToPlaylist": "Add to playlist", - "snackbarUnsupportedAudioFormat": "Unsupported audio format", - "libraryScanCancelled": "Scan cancelled", - "appearanceLanguage": "アプリの言語", - "extensionsTitle": "拡張", - "dialogImportPlaylistMessage": "Found {count} tracks in the playlist file. Add them to download queue?", - "permissionNotification": "Notification", - "notifUpdateReady": "Update Ready", - "lyricsModeDescription": "Choose how lyrics are saved with your downloads", - "downloadFrom": "ダウンロード元", - "collectionWishlistEmptySubtitle": "Tap + on tracks to save what you want to download later", - "cueSplitSplitting": "Splitting CUE sheet... ({current}/{total})", - "trackOptionAddToWishlist": "ウィッシュリストに追加", - "settingsBackup": "Backup & Restore", - "aboutPaxsenixSubtitle": "Lyrics proxy for Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou, and Genius", - "notifDownloadCompleteCount": "Download Complete ({completed}/{total})", - "extensionsNoDownloadProvider": "ダウンロードプロバイダーの拡張はありません", - "libraryFilterSortGenreAsc": "Genre (A-Z)", - "trackReplayGainFailed": "Failed to add ReplayGain tags", - "collectionPlaylistRemoveCover": "カバー画像を削除", - "storeEmptyNoResults": "No extensions found", - "logIssueTrackNotFoundDescription": "Some tracks could not be found on download services", - "editMetadataFieldComment": "Comment", - "settingsMetadata": "Metadata", - "settingsCache": "ストレージとキャッシュ", - "providerPriorityFallbackExtensionsHint": "Only enabled extensions with download-provider capability are listed here.", - "libraryFilterAll": "すべて", - "notifDownloadingUpdate": "Downloading SpotiFLAC Mobile v{version}", - "extensionsProviderPrioritySection": "プロバイダーの優先度", - "storeChangeRepoTooltip": "Change repository", - "snackbarFailedToInstall": "拡張のインストールに失敗しました", - "libraryScanSubtitle": "オーディオファイルをスキャン", - "snackbarExtensionInstalled": "{extensionName} をインストールしました。", - "setupOpenSettings": "設定を開く", - "extensionsInstalledSection": "インストール済みの拡張", - "aboutLinks": "リンク", - "trackCoverClearSelected": "Clear selected cover", - "libraryAutoScanWeekly": "Weekly", - "downloadMusixmatchLanguageAuto": "Auto (original language)", - "optionsDefaultSearchTab": "Default Search Tab", - "downloadPrimaryArtistOnlyOn": "Primary only: On", - "folderOrganizationDescription": "ダウンロードしたファイルをフォルダに整理する", - "@folderOrganizationDescription": { - "description": "Folder organization sheet description" - }, - "lyricsModeEmbed": "Embed in file", - "trackReEnrichFfmpegFailed": "FFmpeg metadata embed failed", - "@extensionsSearchProviderDescription": { - "description": "Search provider setting description" - }, - "libraryFilterQualityLossy": "Lossy", - "actionPause": "一時停止", - "csvImportTracks": "{count} tracks from CSV", - "actionGo": "Go", - "sectionDebug": "デバッグ", - "editMetadataFieldDate": "Date", - "timeHoursAgo": "{count, plural, =1{1 時間前} other{{count} 時間前}}", - "sectionPerformance": "パフォーマンス", - "extensionsDownloadPrioritySubtitle": "ダウンロードサービスの順序を設定", - "cacheAppDirectoryDesc": "HTTP responses, WebView data, and other temporary app data.", - "sectionData": "データ", - "notifFinalizingTrack": "Finalizing {trackName}", - "snackbarFileNotFound": "ファイルがありません", - "extensionQualityOptions": "品質のオプション", - "extensionVerificationBrowserSubtitleExternal": "Open challenges in the default browser first", - "backupInvalidFile": "This file is not a valid SpotiFLAC backup", - "storeRepoDialogTitle": "Extension Repository", - "extensionsSearchProviderDescription": "トラックの検索に使用するサービスを選択してください", - "albumFolderAlbumOnly": "アルバムのみ", - "nowPlayingOpenInExternalPlayer": "Open in external player", - "cueSplitButton": "Split into Tracks", - "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" - } - } + "appearanceAmoledDarkSubtitle": "ピュアブラックの背景", + "@appearanceAmoledDarkSubtitle": { + "description": "Subtitle for AMOLED dark" }, "appearanceHeroAnimations": "Hero animations", "@appearanceHeroAnimations": { @@ -5891,6 +2213,46 @@ "@appearanceHeroAnimationsSubtitle": { "description": "Subtitle for the Hero animations toggle" }, + "appearanceForceBlur": "Always use blur effects", + "@appearanceForceBlur": { + "description": "Toggle that forces backdrop blur on even when the device profile disabled it" + }, + "appearanceForceBlurSubtitle": "Enable the navigation bar blur even on devices where it is off by default. May cost performance.", + "@appearanceForceBlurSubtitle": { + "description": "Subtitle for the force-blur toggle" + }, + "queueClearAll": "すべて消去", + "@queueClearAll": { + "description": "Button - clear all queue items" + }, + "queueClearAllMessage": "すべてのダウンロードを消去してもよろしいですか?", + "@queueClearAllMessage": { + "description": "Clear queue confirmation" + }, + "settingsAutoExportFailed": "ダウンロードの自動エクスポートに失敗しました", + "@settingsAutoExportFailed": { + "description": "Setting toggle for auto-export" + }, + "settingsAutoExportFailedSubtitle": "Save failed downloads to TXT file automatically", + "@settingsAutoExportFailedSubtitle": { + "description": "Subtitle for auto-export setting" + }, + "settingsDownloadNetwork": "ダウンロードネットワーク", + "@settingsDownloadNetwork": { + "description": "Setting for network type preference" + }, + "settingsDownloadNetworkAny": "Wi-Fi + モバイルデータ", + "@settingsDownloadNetworkAny": { + "description": "Network option - use any connection" + }, + "settingsDownloadNetworkWifiOnly": "Wi-Fi のみ", + "@settingsDownloadNetworkWifiOnly": { + "description": "Network option - only use WiFi" + }, + "settingsDownloadNetworkSubtitle": "Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.", + "@settingsDownloadNetworkSubtitle": { + "description": "Subtitle explaining network preference" + }, "settingsConcurrentDownloads": "Concurrent downloads", "@settingsConcurrentDownloads": { "description": "Setting title - how many tracks download at the same time" @@ -5912,6 +2274,854 @@ } } }, + "albumFolderArtistAlbum": "アーティスト / アルバム", + "@albumFolderArtistAlbum": { + "description": "Album folder option" + }, + "albumFolderArtistAlbumSubtitle": "アルバム/アーティスト名/アルバム名/", + "@albumFolderArtistAlbumSubtitle": { + "description": "Folder structure example" + }, + "albumFolderArtistYearAlbum": "アーティスト / [年] アルバム", + "@albumFolderArtistYearAlbum": { + "description": "Album folder option with year" + }, + "albumFolderArtistYearAlbumSubtitle": "アルバム/アーティスト名/[2005] アルバム名/", + "@albumFolderArtistYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "albumFolderAlbumOnly": "アルバムのみ", + "@albumFolderAlbumOnly": { + "description": "Album folder option" + }, + "albumFolderAlbumOnlySubtitle": "アルバム/アルバム名/", + "@albumFolderAlbumOnlySubtitle": { + "description": "Folder structure example" + }, + "albumFolderYearAlbum": "[年] アルバム", + "@albumFolderYearAlbum": { + "description": "Album folder option with year" + }, + "albumFolderYearAlbumSubtitle": "アルバム/[2005] アルバム名/", + "@albumFolderYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "albumFolderArtistAlbumSingles": "アーティスト / アルバム + シングル", + "@albumFolderArtistAlbumSingles": { + "description": "Album folder option with singles inside artist" + }, + "albumFolderArtistAlbumSinglesSubtitle": "Artist/Album/ and Artist/Singles/", + "@albumFolderArtistAlbumSinglesSubtitle": { + "description": "Folder structure example" + }, + "albumFolderArtistAlbumFlat": "Artist / Album (Singles flat)", + "@albumFolderArtistAlbumFlat": { + "description": "Album folder option with singles directly in artist folder" + }, + "albumFolderArtistAlbumFlatSubtitle": "Artist/Album/ and Artist/song.flac", + "@albumFolderArtistAlbumFlatSubtitle": { + "description": "Folder structure example for flat singles" + }, + "downloadedAlbumDeleteSelected": "選択済みを削除", + "@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": { + "description": "Delete confirmation with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumSelectedCount": "{count} 個を選択済み", + "@downloadedAlbumSelectedCount": { + "description": "Selection count indicator", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumTapToSelect": "トラックをタップで選択", + "@downloadedAlbumTapToSelect": { + "description": "Selection hint" + }, + "downloadedAlbumDeleteCount": "{count} {count, plural, =1{個のトラック} other{個のトラック}}を削除", + "@downloadedAlbumDeleteCount": { + "description": "Delete button text with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumSelectToDelete": "トラックを選択で削除", + "@downloadedAlbumSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "downloadedAlbumDiscHeader": "ディスク {discNumber}", + "@downloadedAlbumDiscHeader": { + "description": "Header for disc separator in multi-disc albums", + "placeholders": { + "discNumber": { + "type": "int", + "example": "1" + } + } + }, + "recentTypeArtist": "アーティスト", + "@recentTypeArtist": { + "description": "Recent access item type - artist" + }, + "recentTypeAlbum": "アルバム", + "@recentTypeAlbum": { + "description": "Recent access item type - album" + }, + "recentTypeSong": "曲", + "@recentTypeSong": { + "description": "Recent access item type - song/track" + }, + "recentTypePlaylist": "プレイリスト", + "@recentTypePlaylist": { + "description": "Recent access item type - playlist" + }, + "recentEmpty": "No recent items yet", + "@recentEmpty": { + "description": "Empty state text for recent access list" + }, + "recentClearAllMessage": "Clear all recent activity? Download history and music files will not be deleted.", + "@recentClearAllMessage": { + "description": "Confirmation message before clearing all recent activity" + }, + "recentShowAllDownloads": "すべてのダウンロードを表示", + "@recentShowAllDownloads": { + "description": "Button label to unhide hidden downloads in recent access" + }, + "recentPlaylistInfo": "プレイリスト: {name}", + "@recentPlaylistInfo": { + "description": "Snackbar message when tapping playlist in recent access", + "placeholders": { + "name": { + "type": "String", + "description": "Playlist name" + } + } + }, + "discographyDownload": "ディスコグラフィをダウンロード", + "@discographyDownload": { + "description": "Button - download artist discography" + }, + "discographyDownloadAll": "すべてダウンロード", + "@discographyDownloadAll": { + "description": "Option - download entire discography" + }, + "discographyDownloadAllSubtitle": "{albumCount} 個のリリースから {count} 個のトラック", + "@discographyDownloadAllSubtitle": { + "description": "Subtitle showing total tracks and albums", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "discographyAlbumsOnly": "アルバムのみ", + "@discographyAlbumsOnly": { + "description": "Option - download only albums" + }, + "discographyAlbumsOnlySubtitle": "{count} tracks from {albumCount} albums", + "@discographyAlbumsOnlySubtitle": { + "description": "Subtitle showing album tracks count", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "discographySinglesOnly": "シングルと EP のみ", + "@discographySinglesOnly": { + "description": "Option - download only singles" + }, + "discographySinglesOnlySubtitle": "{count} tracks from {albumCount} singles", + "@discographySinglesOnlySubtitle": { + "description": "Subtitle showing singles tracks count", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "discographySelectAlbums": "アルバムを選択...", + "@discographySelectAlbums": { + "description": "Option - manually select albums to download" + }, + "discographySelectAlbumsSubtitle": "Choose specific albums or singles", + "@discographySelectAlbumsSubtitle": { + "description": "Subtitle for select albums option" + }, + "discographyFetchingTracks": "トラックを取得中です...", + "@discographyFetchingTracks": { + "description": "Progress - fetching album tracks" + }, + "discographyFetchingAlbum": "Fetching {current} of {total}...", + "@discographyFetchingAlbum": { + "description": "Progress - fetching specific album", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "discographySelectedCount": "{count} 個を選択済み", + "@discographySelectedCount": { + "description": "Selection count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "discographyDownloadSelected": "選択済みをダウンロード", + "@discographyDownloadSelected": { + "description": "Button - download selected albums" + }, + "discographyAddedToQueue": "Added {count} tracks to queue", + "@discographyAddedToQueue": { + "description": "Snackbar - tracks added from discography", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "discographySkippedDownloaded": "{added} added, {skipped} already downloaded", + "@discographySkippedDownloaded": { + "description": "Snackbar - with skipped tracks count", + "placeholders": { + "added": { + "type": "int" + }, + "skipped": { + "type": "int" + } + } + }, + "discographyNoAlbums": "利用可能なアルバムがありません", + "@discographyNoAlbums": { + "description": "Error - no albums found for artist" + }, + "discographyFailedToFetch": "一部のアルバムの取得に失敗しました", + "@discographyFailedToFetch": { + "description": "Error - some albums failed to load" + }, + "sectionStorageAccess": "ストレージアクセス", + "@sectionStorageAccess": { + "description": "Section header for storage access settings" + }, + "allFilesAccess": "すべてのファイルへのアクセス", + "@allFilesAccess": { + "description": "Toggle for MANAGE_EXTERNAL_STORAGE permission" + }, + "allFilesAccessEnabledSubtitle": "Can write to any folder", + "@allFilesAccessEnabledSubtitle": { + "description": "Subtitle when all files access is enabled" + }, + "allFilesAccessDisabledSubtitle": "Limited to media folders only", + "@allFilesAccessDisabledSubtitle": { + "description": "Subtitle when all files access is disabled" + }, + "allFilesAccessDescription": "Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.", + "@allFilesAccessDescription": { + "description": "Description explaining when to enable all files access" + }, + "allFilesAccessDeniedMessage": "Permission was denied. Please enable 'All files access' manually in system settings.", + "@allFilesAccessDeniedMessage": { + "description": "Message when permission is permanently denied" + }, + "allFilesAccessDisabledMessage": "All Files Access disabled. The app will use limited storage access.", + "@allFilesAccessDisabledMessage": { + "description": "Snackbar message when user disables all files access" + }, + "settingsLocalLibrary": "ローカルライブラリ", + "@settingsLocalLibrary": { + "description": "Settings menu item - local library" + }, + "settingsLocalLibrarySubtitle": "Scan music & detect duplicates", + "@settingsLocalLibrarySubtitle": { + "description": "Subtitle for local library settings" + }, + "settingsCache": "ストレージとキャッシュ", + "@settingsCache": { + "description": "Settings menu item - cache management" + }, + "settingsCacheSubtitle": "View size and clear cached data", + "@settingsCacheSubtitle": { + "description": "Subtitle for cache management menu" + }, + "libraryTitle": "ローカルライブラリ", + "@libraryTitle": { + "description": "Library settings page title" + }, + "libraryScanSettings": "スキャン設定", + "@libraryScanSettings": { + "description": "Section header for scan settings" + }, + "libraryEnableLocalLibrary": "ローカルライブラリを有効", + "@libraryEnableLocalLibrary": { + "description": "Toggle to enable library scanning" + }, + "libraryEnableLocalLibrarySubtitle": "Scan and track your existing music", + "@libraryEnableLocalLibrarySubtitle": { + "description": "Subtitle for enable toggle" + }, + "libraryFolder": "ライブラリのフォルダ", + "@libraryFolder": { + "description": "Folder selection setting" + }, + "libraryFolderHint": "タップでフォルダを選択", + "@libraryFolderHint": { + "description": "Placeholder when no folder selected" + }, + "libraryAddFolder": "Add library folder", + "@libraryAddFolder": { + "description": "Action to add another local library source" + }, + "libraryAddFolderSubtitle": "Internal storage, SD card, SSD, or another external drive", + "@libraryAddFolderSubtitle": { + "description": "Supported storage locations for local library sources" + }, + "librarySourceOnline": "Online", + "@librarySourceOnline": { + "description": "Library source is connected and accessible" + }, + "librarySourceOffline": "Offline. Reconnect the storage to restore these tracks", + "@librarySourceOffline": { + "description": "Library source is temporarily disconnected" + }, + "librarySourceDisabled": "Disabled", + "@librarySourceDisabled": { + "description": "Library source has been disabled by the user" + }, + "librarySourceScanCount": "{scanned} of {total} files scanned ({progress}%)", + "@librarySourceScanCount": { + "description": "Live progress for one library folder scan", + "placeholders": { + "scanned": { + "type": "int" + }, + "total": { + "type": "int" + }, + "progress": { + "type": "String" + } + } + }, + "libraryExternalStorage": "External storage", + "@libraryExternalStorage": { + "description": "Label for a removable or external library source" + }, + "libraryRemoveFolder": "Remove library folder", + "@libraryRemoveFolder": { + "description": "Action to remove one indexed library source" + }, + "libraryRemoveFolderMessage": "Remove this folder and its indexed tracks from SpotiFLAC Mobile? Audio files on the storage will not be deleted.", + "@libraryRemoveFolderMessage": { + "description": "Confirmation shown before removing a library source" + }, + "libraryShowDuplicateIndicator": "Show Duplicate Indicator", + "@libraryShowDuplicateIndicator": { + "description": "Toggle for duplicate indicator in search" + }, + "libraryShowDuplicateIndicatorSubtitle": "Show when searching for existing tracks", + "@libraryShowDuplicateIndicatorSubtitle": { + "description": "Subtitle for duplicate indicator toggle" + }, + "libraryAutoScan": "Auto Scan", + "@libraryAutoScan": { + "description": "Setting for automatic library scanning" + }, + "libraryAutoScanSubtitle": "Automatically scan your library for new files", + "@libraryAutoScanSubtitle": { + "description": "Subtitle for auto scan setting" + }, + "libraryAutoScanOff": "Off", + "@libraryAutoScanOff": { + "description": "Auto scan disabled" + }, + "libraryAutoScanOnOpen": "Every app open", + "@libraryAutoScanOnOpen": { + "description": "Auto scan when app opens" + }, + "libraryAutoScanDaily": "Daily", + "@libraryAutoScanDaily": { + "description": "Auto scan once per day" + }, + "libraryAutoScanWeekly": "Weekly", + "@libraryAutoScanWeekly": { + "description": "Auto scan once per week" + }, + "libraryActions": "アクション", + "@libraryActions": { + "description": "Section header for library actions" + }, + "libraryScan": "ライブラリをスキャン", + "@libraryScan": { + "description": "Button to start library scan" + }, + "libraryScanSubtitle": "オーディオファイルをスキャン", + "@libraryScanSubtitle": { + "description": "Subtitle for scan button" + }, + "libraryScanSelectFolderFirst": "Select a folder first", + "@libraryScanSelectFolderFirst": { + "description": "Message when trying to scan without folder" + }, + "libraryCleanupMissingFiles": "Cleanup Missing Files", + "@libraryCleanupMissingFiles": { + "description": "Button to remove entries for missing files" + }, + "libraryCleanupMissingFilesSubtitle": "Remove entries for files that no longer exist", + "@libraryCleanupMissingFilesSubtitle": { + "description": "Subtitle for cleanup button" + }, + "libraryClear": "ライブラリを消去", + "@libraryClear": { + "description": "Button to clear all library entries" + }, + "libraryClearSubtitle": "Remove all scanned tracks", + "@libraryClearSubtitle": { + "description": "Subtitle for clear button" + }, + "libraryClearConfirmTitle": "ライブラリを消去", + "@libraryClearConfirmTitle": { + "description": "Dialog title for clear confirmation" + }, + "libraryClearConfirmMessage": "This will remove all scanned tracks from your library. Your actual music files will not be deleted.", + "@libraryClearConfirmMessage": { + "description": "Dialog message for clear confirmation" + }, + "libraryAbout": "ローカルライブラリについて", + "@libraryAbout": { + "description": "Section header for about info" + }, + "libraryAboutDescription": "Scans your existing music collection to detect duplicates when downloading. Supports FLAC, M4A, MP3, Opus, and OGG formats. Metadata is read from file tags when available.", + "@libraryAboutDescription": { + "description": "Description of local library feature" + }, + "libraryTracksUnit": "{count, plural, =1{track} other{tracks}}", + "@libraryTracksUnit": { + "description": "Unit label for tracks count (without the number itself)", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryFilesUnit": "{count, plural, =1{file} other{files}}", + "@libraryFilesUnit": { + "description": "Unit label for files count during library scanning", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryLastScanned": "最終スキャン: {time}", + "@libraryLastScanned": { + "description": "Last scan time display", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "libraryLastScannedNever": "Never", + "@libraryLastScannedNever": { + "description": "Shown when library has never been scanned" + }, + "libraryScanning": "スキャン中...", + "@libraryScanning": { + "description": "Status during scan" + }, + "libraryScanFinalizing": "Finalizing library...", + "@libraryScanFinalizing": { + "description": "Status shown after file scanning finishes but library persistence is still running" + }, + "libraryScanProgress": "{progress}% of {total} files", + "@libraryScanProgress": { + "description": "Scan progress display", + "placeholders": { + "progress": { + "type": "String" + }, + "total": { + "type": "int" + } + } + }, + "libraryInLibrary": "ライブラリ内", + "@libraryInLibrary": { + "description": "Badge shown on tracks that exist in local library" + }, + "libraryRemovedMissingFiles": "Removed {count} missing files from library", + "@libraryRemovedMissingFiles": { + "description": "Snackbar after cleanup", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryCleared": "Library cleared", + "@libraryCleared": { + "description": "Snackbar after clearing library" + }, + "libraryStorageAccessRequired": "ストレージアクセスが必要です", + "@libraryStorageAccessRequired": { + "description": "Dialog title for storage permission" + }, + "libraryStorageAccessMessage": "SpotiFLAC needs storage access to scan your music library. Please grant permission in settings.", + "@libraryStorageAccessMessage": { + "description": "Dialog message for storage permission" + }, + "libraryFolderNotExist": "Selected folder does not exist", + "@libraryFolderNotExist": { + "description": "Error when folder doesn't exist" + }, + "librarySourceDownloaded": "ダウンロード済み", + "@librarySourceDownloaded": { + "description": "Badge for tracks downloaded via SpotiFLAC" + }, + "librarySourceLocal": "ローカル", + "@librarySourceLocal": { + "description": "Badge for tracks from local library scan" + }, + "libraryFilterAll": "すべて", + "@libraryFilterAll": { + "description": "Filter chip - show all library items" + }, + "libraryFilterDownloaded": "ダウンロード済み", + "@libraryFilterDownloaded": { + "description": "Filter chip - show only downloaded items" + }, + "libraryFilterLocal": "ローカル", + "@libraryFilterLocal": { + "description": "Filter chip - show only local library items" + }, + "libraryFilterTitle": "フィルター", + "@libraryFilterTitle": { + "description": "Filter bottom sheet title" + }, + "libraryFilterReset": "リセット", + "@libraryFilterReset": { + "description": "Reset all filters button" + }, + "libraryFilterApply": "適用", + "@libraryFilterApply": { + "description": "Apply filters button" + }, + "libraryFilterSource": "ソース", + "@libraryFilterSource": { + "description": "Filter section - source type" + }, + "libraryFilterQuality": "品質", + "@libraryFilterQuality": { + "description": "Filter section - audio quality" + }, + "libraryFilterQualityHiRes": "ハイレゾ (24bit)", + "@libraryFilterQualityHiRes": { + "description": "Filter option - high resolution audio" + }, + "libraryFilterQualityCD": "CD (16bit)", + "@libraryFilterQualityCD": { + "description": "Filter option - CD quality audio" + }, + "libraryFilterQualityLossy": "Lossy", + "@libraryFilterQualityLossy": { + "description": "Filter option - lossy compressed audio" + }, + "libraryFilterFormat": "形式", + "@libraryFilterFormat": { + "description": "Filter section - file format" + }, + "libraryFilterMetadata": "Metadata", + "@libraryFilterMetadata": { + "description": "Filter section - metadata completeness" + }, + "libraryFilterMetadataComplete": "Complete metadata", + "@libraryFilterMetadataComplete": { + "description": "Filter option - items with complete metadata" + }, + "libraryFilterMetadataMissingAny": "Missing any metadata", + "@libraryFilterMetadataMissingAny": { + "description": "Filter option - items missing any tracked metadata field" + }, + "libraryFilterMetadataMissingYear": "Missing year", + "@libraryFilterMetadataMissingYear": { + "description": "Filter option - items missing release year/date" + }, + "libraryFilterMetadataMissingGenre": "Missing genre", + "@libraryFilterMetadataMissingGenre": { + "description": "Filter option - items missing genre" + }, + "libraryFilterMetadataMissingAlbumArtist": "Missing album artist", + "@libraryFilterMetadataMissingAlbumArtist": { + "description": "Filter option - items missing album artist" + }, + "libraryFilterSort": "Sort", + "@libraryFilterSort": { + "description": "Filter section - sort order" + }, + "libraryFilterSortLatest": "Latest", + "@libraryFilterSortLatest": { + "description": "Sort option - newest first" + }, + "libraryFilterSortOldest": "Oldest", + "@libraryFilterSortOldest": { + "description": "Sort option - oldest first" + }, + "libraryFilterSortAlbumAsc": "Album (A-Z)", + "@libraryFilterSortAlbumAsc": { + "description": "Sort option - album ascending" + }, + "libraryFilterSortAlbumDesc": "Album (Z-A)", + "@libraryFilterSortAlbumDesc": { + "description": "Sort option - album descending" + }, + "libraryFilterSortGenreAsc": "Genre (A-Z)", + "@libraryFilterSortGenreAsc": { + "description": "Sort option - genre ascending" + }, + "libraryFilterSortGenreDesc": "Genre (Z-A)", + "@libraryFilterSortGenreDesc": { + "description": "Sort option - genre descending" + }, + "timeJustNow": "Just now", + "@timeJustNow": { + "description": "Relative time - less than a minute ago" + }, + "timeMinutesAgo": "{count, plural, =1{1 分前} other{{count} 分前}}", + "@timeMinutesAgo": { + "description": "Relative time - minutes ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "timeHoursAgo": "{count, plural, =1{1 時間前} other{{count} 時間前}}", + "@timeHoursAgo": { + "description": "Relative time - hours ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "tutorialWelcomeTitle": "Welcome to SpotiFLAC Mobile!", + "@tutorialWelcomeTitle": { + "description": "Tutorial welcome page title" + }, + "tutorialWelcomeDesc": "Learn how to find music with extensions, choose the quality you want, and manage downloads in SpotiFLAC Mobile.", + "@tutorialWelcomeDesc": { + "description": "Tutorial welcome page description" + }, + "tutorialWelcomeTip1": "Search with an installed extension or paste a supported music link", + "@tutorialWelcomeTip1": { + "description": "Tutorial welcome tip 1" + }, + "tutorialWelcomeTip2": "Choose from the audio qualities offered by your download provider", + "@tutorialWelcomeTip2": { + "description": "Tutorial welcome tip 2" + }, + "tutorialWelcomeTip3": "Embed metadata, cover art, lyrics, and release information automatically", + "@tutorialWelcomeTip3": { + "description": "Tutorial welcome tip 3" + }, + "tutorialSearchTitle": "Finding Music", + "@tutorialSearchTitle": { + "description": "Tutorial search page title" + }, + "tutorialSearchDesc": "Search with your selected extension or paste a supported music link.", + "@tutorialSearchDesc": { + "description": "Tutorial search page description" + }, + "tutorialDownloadTitle": "音楽をダウンロード中", + "@tutorialDownloadTitle": { + "description": "Tutorial download page title" + }, + "tutorialDownloadDesc": "Pick an available quality, start the download, and follow its progress in the queue.", + "@tutorialDownloadDesc": { + "description": "Tutorial download page description" + }, + "tutorialLibraryTitle": "あなたのライブラリ", + "@tutorialLibraryTitle": { + "description": "Tutorial library page title" + }, + "tutorialLibraryDesc": "Downloaded and locally scanned music is organized in your Library.", + "@tutorialLibraryDesc": { + "description": "Tutorial library page description" + }, + "tutorialLibraryTip1": "Manage active, pending, and completed downloads from the Library queue", + "@tutorialLibraryTip1": { + "description": "Tutorial library tip 1" + }, + "tutorialLibraryTip2": "Tap a track to play it with the built-in player", + "@tutorialLibraryTip2": { + "description": "Tutorial library tip 2" + }, + "tutorialLibraryTip3": "Browse tracks, albums, and playlists in list or grid views", + "@tutorialLibraryTip3": { + "description": "Tutorial library tip 3" + }, + "tutorialExtensionsTitle": "拡張", + "@tutorialExtensionsTitle": { + "description": "Tutorial extensions page title" + }, + "tutorialExtensionsDesc": "Extensions add search, download, metadata, lyrics, and other integrations.", + "@tutorialExtensionsDesc": { + "description": "Tutorial extensions page description" + }, + "tutorialExtensionsTip1": "Browse the Repo tab to discover useful extensions", + "@tutorialExtensionsTip1": { + "description": "Tutorial extensions tip 1" + }, + "tutorialExtensionsTip2": "Choose providers for search, downloads, metadata, and fallbacks", + "@tutorialExtensionsTip2": { + "description": "Tutorial extensions tip 2" + }, + "tutorialExtensionsTip3": "Connect accounts when required and keep extensions up to date", + "@tutorialExtensionsTip3": { + "description": "Tutorial extensions tip 3" + }, + "tutorialSettingsTitle": "Customize Your Experience", + "@tutorialSettingsTitle": { + "description": "Tutorial settings page title" + }, + "tutorialSettingsDesc": "Fine-tune downloads, playback, Library behavior, appearance, and storage.", + "@tutorialSettingsDesc": { + "description": "Tutorial settings page description" + }, + "tutorialSettingsTip1": "Change download location and folder organization", + "@tutorialSettingsTip1": { + "description": "Tutorial settings tip 1" + }, + "tutorialSettingsTip2": "Set quality, concurrency, filenames, and conversion preferences", + "@tutorialSettingsTip2": { + "description": "Tutorial settings tip 2" + }, + "tutorialSettingsTip3": "Customize app theme and appearance", + "@tutorialSettingsTip3": { + "description": "Tutorial settings tip 3" + }, + "tutorialReadyMessage": "You're ready. Select your extensions, then search or paste a supported link.", + "@tutorialReadyMessage": { + "description": "Tutorial completion message" + }, + "libraryForceFullScan": "強制フルスキャン", + "@libraryForceFullScan": { + "description": "Button to force a complete rescan of library" + }, + "libraryForceFullScanSubtitle": "Rescan all files, ignoring cache", + "@libraryForceFullScanSubtitle": { + "description": "Subtitle for force full scan button" + }, + "cleanupOrphanedDownloads": "Cleanup Orphaned Downloads", + "@cleanupOrphanedDownloads": { + "description": "Button to remove history entries for deleted files" + }, + "cleanupOrphanedDownloadsSubtitle": "Remove history entries for files that no longer exist", + "@cleanupOrphanedDownloadsSubtitle": { + "description": "Subtitle for orphaned cleanup button" + }, + "cleanupOrphanedDownloadsResult": "Removed {count} orphaned entries from history", + "@cleanupOrphanedDownloadsResult": { + "description": "Snackbar after orphan cleanup", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cleanupOrphanedDownloadsNone": "No orphaned entries found", + "@cleanupOrphanedDownloadsNone": { + "description": "Snackbar when no orphans found" + }, + "cacheTitle": "ストレージとキャッシュ", + "@cacheTitle": { + "description": "Cache management page title" + }, + "cacheSummaryTitle": "キャッシュの概要", + "@cacheSummaryTitle": { + "description": "Heading for cache summary card" + }, + "cacheSummarySubtitle": "Clearing cache will not remove downloaded music files.", + "@cacheSummarySubtitle": { + "description": "Helper text for cache summary card" + }, + "cacheEstimatedTotal": "Estimated cache usage: {size}", + "@cacheEstimatedTotal": { + "description": "Total cache size shown in summary", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "cacheSectionStorage": "キャッシュ済みデータ", + "@cacheSectionStorage": { + "description": "Section header for cache entries" + }, + "cacheSectionMaintenance": "メンテナンス", + "@cacheSectionMaintenance": { + "description": "Section header for cleanup actions" + }, + "cacheAppDirectory": "アプリキャッシュのディレクトリ", + "@cacheAppDirectory": { + "description": "Cache item title for app cache directory" + }, + "cacheAppDirectoryDesc": "HTTP responses, WebView data, and other temporary app data.", + "@cacheAppDirectoryDesc": { + "description": "Description of what app cache directory contains" + }, + "cacheTempDirectory": "一時ディレクトリ", + "@cacheTempDirectory": { + "description": "Cache item title for temporary files directory" + }, + "cacheTempDirectoryDesc": "Temporary files from downloads and audio conversion.", + "@cacheTempDirectoryDesc": { + "description": "Description of what temporary directory contains" + }, + "cacheCoverImage": "カバー画像のキャッシュ", + "@cacheCoverImage": { + "description": "Cache item title for persistent cover images" + }, + "cacheCoverImageDesc": "Downloaded album and track cover art. Will re-download when viewed.", + "@cacheCoverImageDesc": { + "description": "Description of what cover image cache contains" + }, + "cacheLibraryCover": "ライブラリのカバーキャッシュ", + "@cacheLibraryCover": { + "description": "Cache item title for local library cover art images" + }, + "cacheLibraryCoverDesc": "Cover art extracted from local music files. Will re-extract on next scan.", + "@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" @@ -5928,6 +3138,350 @@ "@cacheAudioAnalysisDesc": { "description": "Description of what audio analysis cache contains" }, + "cacheExploreFeed": "Explore feed cache", + "@cacheExploreFeed": { + "description": "Cache item title for explore home feed cache" + }, + "cacheExploreFeedDesc": "Explore tab content (new releases, trending). Will refresh on next visit.", + "@cacheExploreFeedDesc": { + "description": "Description of what explore feed cache contains" + }, + "cacheTrackLookup": "Track lookup cache", + "@cacheTrackLookup": { + "description": "Cache item title for track ID lookup cache" + }, + "cacheTrackLookupDesc": "Spotify/Deezer track ID lookups. Clearing may slow next few searches.", + "@cacheTrackLookupDesc": { + "description": "Description of what track lookup cache contains" + }, + "cacheCleanupUnusedDesc": "Remove orphaned download history and library entries for missing files.", + "@cacheCleanupUnusedDesc": { + "description": "Description of what cleanup unused data does" + }, + "cacheNoData": "キャッシュデータはありません", + "@cacheNoData": { + "description": "Label when cache category has no data" + }, + "cacheSizeWithFiles": "{size} in {count} files", + "@cacheSizeWithFiles": { + "description": "Cache size and file count", + "placeholders": { + "size": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "cacheSizeOnly": "{size}", + "@cacheSizeOnly": { + "description": "Cache size only", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "cacheEntries": "{count} 個のエントリ", + "@cacheEntries": { + "description": "Track cache entry count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cacheClearSuccess": "消去済み: {target}", + "@cacheClearSuccess": { + "description": "Snackbar after clearing selected cache", + "placeholders": { + "target": { + "type": "String" + } + } + }, + "cacheClearConfirmTitle": "キャッシュを消去しますか?", + "@cacheClearConfirmTitle": { + "description": "Dialog title before clearing one cache category" + }, + "cacheClearConfirmMessage": "This will clear cached data for {target}. Downloaded music files will not be deleted.", + "@cacheClearConfirmMessage": { + "description": "Dialog message before clearing selected cache", + "placeholders": { + "target": { + "type": "String" + } + } + }, + "cacheClearAllConfirmTitle": "すべてのキャッシュを消去しますか?", + "@cacheClearAllConfirmTitle": { + "description": "Dialog title before clearing all caches" + }, + "cacheClearAllConfirmMessage": "This will clear all cache categories on this page. Downloaded music files will not be deleted.", + "@cacheClearAllConfirmMessage": { + "description": "Dialog message before clearing all caches" + }, + "cacheClearAll": "すべてのキャッシュを消去", + "@cacheClearAll": { + "description": "Button label to clear all caches" + }, + "cacheCleanupUnused": "未使用のデータを削除", + "@cacheCleanupUnused": { + "description": "Action title for cleaning unused entries" + }, + "cacheCleanupUnusedSubtitle": "Remove orphaned download history and missing library entries", + "@cacheCleanupUnusedSubtitle": { + "description": "Subtitle for cleanup unused data action" + }, + "cacheCleanupResult": "Cleanup completed: {downloadCount} orphaned downloads, {libraryCount} missing library entries", + "@cacheCleanupResult": { + "description": "Snackbar after unused data cleanup", + "placeholders": { + "downloadCount": { + "type": "int" + }, + "libraryCount": { + "type": "int" + } + } + }, + "cacheRefreshStats": "状態を更新", + "@cacheRefreshStats": { + "description": "Button label to refresh cache statistics" + }, + "trackSaveCoverArt": "カバー画像を保存", + "@trackSaveCoverArt": { + "description": "Menu action - save album cover art as file" + }, + "trackSaveLyrics": "歌詞を保存 (.lrc)", + "@trackSaveLyrics": { + "description": "Menu action - save lyrics as .lrc file" + }, + "trackSaveLyricsProgress": "Saving lyrics...", + "@trackSaveLyricsProgress": { + "description": "Snackbar while saving lyrics to file" + }, + "trackReEnrich": "Re-enrich", + "@trackReEnrich": { + "description": "Menu action - re-embed metadata into audio file" + }, + "trackReEnrichOnlineSubtitle": "Search metadata online and embed into file", + "@trackReEnrichOnlineSubtitle": { + "description": "Subtitle for re-enrich metadata action for local items" + }, + "trackReEnrichBatchSubtitle": "Choose an online or manual update, then review every change before writing", + "@trackReEnrichBatchSubtitle": { + "description": "Subtitle for batch metadata update choices" + }, + "trackReEnrichFieldCover": "Cover Art", + "@trackReEnrichFieldCover": { + "description": "Checkbox label for cover art field in re-enrich" + }, + "trackReEnrichFieldLyrics": "Lyrics", + "@trackReEnrichFieldLyrics": { + "description": "Checkbox label for lyrics field in re-enrich" + }, + "trackReEnrichFieldBasicTags": "Album, Album Artist", + "@trackReEnrichFieldBasicTags": { + "description": "Checkbox label for basic tags in re-enrich (title/artist are never overwritten)" + }, + "trackReEnrichFieldTrackInfo": "Track & Disc Number", + "@trackReEnrichFieldTrackInfo": { + "description": "Checkbox label for track info in re-enrich" + }, + "trackReEnrichFieldReleaseInfo": "Date & ISRC", + "@trackReEnrichFieldReleaseInfo": { + "description": "Checkbox label for release info in re-enrich" + }, + "trackReEnrichFieldExtra": "Genre, Label, Copyright", + "@trackReEnrichFieldExtra": { + "description": "Checkbox label for extra metadata in re-enrich" + }, + "trackReEnrichSelectAll": "Select All", + "@trackReEnrichSelectAll": { + "description": "Select all fields checkbox in re-enrich" + }, + "trackReEnrichModeIsrc": "ISRC only", + "@trackReEnrichModeIsrc": { + "description": "Batch metadata mode that only writes ISRC" + }, + "trackReEnrichModeIsrcSubtitle": "Find and add the recording identifier without changing other tags", + "@trackReEnrichModeIsrcSubtitle": { + "description": "Explanation for the ISRC-only batch metadata mode" + }, + "trackReEnrichModeMissing": "Fill missing tags", + "@trackReEnrichModeMissing": { + "description": "Batch metadata mode that fills only empty tags" + }, + "trackReEnrichModeMissingSubtitle": "Keep existing values and fill only fields that are empty", + "@trackReEnrichModeMissingSubtitle": { + "description": "Explanation for the fill-missing batch metadata mode" + }, + "trackReEnrichModeReplace": "Update selected tags", + "@trackReEnrichModeReplace": { + "description": "Batch metadata mode that replaces selected tag groups" + }, + "trackReEnrichModeReplaceSubtitle": "Choose which existing values may be replaced by online metadata", + "@trackReEnrichModeReplaceSubtitle": { + "description": "Explanation for the selected-tag batch metadata mode" + }, + "trackReEnrichModeManual": "Set common values", + "@trackReEnrichModeManual": { + "description": "Batch metadata mode that applies shared values to every selected track" + }, + "trackReEnrichModeManualSubtitle": "Apply the same values to every selected track", + "@trackReEnrichModeManualSubtitle": { + "description": "Explanation for the manual shared-value batch metadata mode" + }, + "trackReEnrichManualFieldsTitle": "Values to apply", + "@trackReEnrichManualFieldsTitle": { + "description": "Heading above manual batch metadata inputs" + }, + "trackReEnrichManualHint": "Leave a field empty to keep its current value. Track titles, numbers, and ISRCs stay unchanged.", + "@trackReEnrichManualHint": { + "description": "Safety explanation for manual batch metadata inputs" + }, + "trackReEnrichFieldsTitle": "Tags to update", + "@trackReEnrichFieldsTitle": { + "description": "Heading above batch re-enrich field checkboxes" + }, + "trackReEnrichReview": "Review changes", + "@trackReEnrichReview": { + "description": "Button that searches metadata and opens the batch change review" + }, + "trackReEnrichReviewTitle": "Review metadata changes", + "@trackReEnrichReviewTitle": { + "description": "Title of the batch metadata review sheet" + }, + "trackReEnrichReviewSubtitle": "{changeCount} proposed changes across {trackCount} tracks", + "@trackReEnrichReviewSubtitle": { + "description": "Summary shown above proposed batch metadata changes", + "placeholders": { + "changeCount": { + "type": "int" + }, + "trackCount": { + "type": "int" + } + } + }, + "trackReEnrichNoChanges": "No metadata changes were found for the selected tracks.", + "@trackReEnrichNoChanges": { + "description": "Message when batch metadata preview has no proposed changes" + }, + "trackReEnrichApplyChanges": "Apply changes", + "@trackReEnrichApplyChanges": { + "description": "Confirmation button in the batch metadata review sheet" + }, + "trackReEnrichRefreshOnline": "Refresh from online", + "@trackReEnrichRefreshOnline": { + "description": "Proposed value when lyrics will be refreshed during re-enrich" + }, + "trackEditMetadata": "メタデータを編集", + "@trackEditMetadata": { + "description": "Menu action - edit embedded metadata" + }, + "trackCoverSaved": "Cover art saved to {fileName}", + "@trackCoverSaved": { + "description": "Snackbar after cover art saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "trackCoverNoSource": "No cover art source available", + "@trackCoverNoSource": { + "description": "Snackbar when no cover art URL or embedded cover" + }, + "trackLyricsSaved": "Lyrics saved to {fileName}", + "@trackLyricsSaved": { + "description": "Snackbar after lyrics saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "trackReEnrichProgress": "Re-enriching metadata...", + "@trackReEnrichProgress": { + "description": "Snackbar while re-enriching metadata" + }, + "trackReEnrichSearching": "Searching metadata online...", + "@trackReEnrichSearching": { + "description": "Snackbar while searching metadata from internet for local items" + }, + "trackReEnrichPreparing": "Preparing metadata changes...", + "@trackReEnrichPreparing": { + "description": "Progress message while preparing manual batch metadata changes" + }, + "trackReEnrichSuccess": "Metadata re-enriched successfully", + "trackReEnrichMetadataSaved": "Metadata saved", + "trackReEnrichLyricsUpdated": "Lyrics updated", + "trackReEnrichLyricsPreserved": "No new lyrics found; existing lyrics kept", + "trackReEnrichLyricsDisabled": "Lyrics not updated: lyric downloading is disabled in Settings", + "@trackReEnrichSuccess": { + "description": "Snackbar after successful re-enrichment" + }, + "trackReEnrichFfmpegFailed": "FFmpeg metadata embed failed", + "@trackReEnrichFfmpegFailed": { + "description": "Snackbar when FFmpeg embed fails for MP3/Opus" + }, + "queueFlacAction": "Queue 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": { + "description": "Confirmation dialog body before queueing FLAC redownloads for local tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueFlacNoReliableMatches": "No reliable online matches found for the selection", + "@queueFlacNoReliableMatches": { + "description": "Snackbar when no safe FLAC redownload matches were found" + }, + "queueFlacQueuedWithSkipped": "Added {addedCount} tracks to queue, skipped {skippedCount}", + "@queueFlacQueuedWithSkipped": { + "description": "Snackbar when some selected local tracks were queued for FLAC redownload and some were skipped", + "placeholders": { + "addedCount": { + "type": "int" + }, + "skippedCount": { + "type": "int" + } + } + }, + "trackSaveFailed": "失敗: {error}", + "@trackSaveFailed": { + "description": "Snackbar when save operation fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "trackConvertFormat": "変換の形式", + "@trackConvertFormat": { + "description": "Menu item - convert audio format" + }, + "trackConvertTitle": "オーディオを変換", + "@trackConvertTitle": { + "description": "Title of convert bottom sheet" + }, + "trackConvertTargetFormat": "ターゲットの形式", + "@trackConvertTargetFormat": { + "description": "Label for format selection" + }, + "trackConvertBitrate": "ビットレート", + "@trackConvertBitrate": { + "description": "Label for bitrate selection" + }, "trackConvertKeepOriginal": "Keep original file", "@trackConvertKeepOriginal": { "description": "Toggle to preserve the source file during conversion" @@ -5936,6 +3490,37 @@ "@trackConvertKeepOriginalDescription": { "description": "Description for preserving the source file during conversion" }, + "trackConvertConfirmTitle": "変換を確認", + "@trackConvertConfirmTitle": { + "description": "Confirmation dialog title" + }, + "trackConvertConfirmMessage": "Convert from {sourceFormat} to {targetFormat} at {bitrate}?\n\nThe original file will be deleted after conversion.", + "@trackConvertConfirmMessage": { + "description": "Confirmation dialog message", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "trackConvertConfirmMessageLossless": "Convert from {sourceFormat} to {targetFormat}? (Lossless — no quality loss)\n\nThe original file will be deleted after conversion.", + "@trackConvertConfirmMessageLossless": { + "description": "Confirmation dialog message for lossless-to-lossless conversion", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + } + } + }, "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", @@ -5948,6 +3533,382 @@ } } }, + "trackConvertLosslessHint": "Lossless conversion — no quality loss", + "@trackConvertLosslessHint": { + "description": "Hint shown when converting between lossless formats" + }, + "trackConvertConverting": "オーディオを変換中...", + "@trackConvertConverting": { + "description": "Snackbar while converting" + }, + "trackConvertSuccess": "Converted to {format} successfully", + "@trackConvertSuccess": { + "description": "Snackbar after successful conversion", + "placeholders": { + "format": { + "type": "String" + } + } + }, + "trackConvertFailed": "変換に失敗しました", + "@trackConvertFailed": { + "description": "Snackbar when conversion fails" + }, + "cueSplitTitle": "分割 CUE シート", + "@cueSplitTitle": { + "description": "Title for CUE split bottom sheet" + }, + "cueSplitAlbum": "Album: {album}", + "@cueSplitAlbum": { + "description": "Album name in CUE split sheet", + "placeholders": { + "album": { + "type": "String" + } + } + }, + "cueSplitArtist": "Artist: {artist}", + "@cueSplitArtist": { + "description": "Artist name in CUE split sheet", + "placeholders": { + "artist": { + "type": "String" + } + } + }, + "cueSplitTrackCount": "{count} tracks", + "@cueSplitTrackCount": { + "description": "Number of tracks in CUE sheet", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cueSplitConfirmTitle": "Split CUE Album", + "@cueSplitConfirmTitle": { + "description": "CUE split confirmation dialog title" + }, + "cueSplitConfirmMessage": "Split \"{album}\" into {count} individual FLAC files?\n\nFiles will be saved to the same directory.", + "@cueSplitConfirmMessage": { + "description": "CUE split confirmation dialog message", + "placeholders": { + "album": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "cueSplitSplitting": "Splitting CUE sheet... ({current}/{total})", + "@cueSplitSplitting": { + "description": "Snackbar while splitting CUE", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "cueSplitSuccess": "Split into {count} tracks successfully", + "@cueSplitSuccess": { + "description": "Snackbar after successful CUE split", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cueSplitFailed": "CUE split failed", + "@cueSplitFailed": { + "description": "Snackbar when CUE split fails" + }, + "cueSplitNoAudioFile": "Audio file not found for this CUE sheet", + "@cueSplitNoAudioFile": { + "description": "Error when CUE audio file is missing" + }, + "cueSplitButton": "Split into Tracks", + "@cueSplitButton": { + "description": "Button text to start CUE splitting" + }, + "actionCreate": "Create", + "@actionCreate": { + "description": "Generic action button - create" + }, + "collectionFoldersTitle": "My folders", + "@collectionFoldersTitle": { + "description": "Library section title for custom folders" + }, + "collectionWishlist": "Wishlist", + "@collectionWishlist": { + "description": "Custom folder for saved tracks to download later" + }, + "collectionLoved": "Loved", + "@collectionLoved": { + "description": "Custom folder for favorite tracks" + }, + "collectionFavoriteArtists": "Favorite Artists", + "@collectionFavoriteArtists": { + "description": "Custom folder for favorite artists" + }, + "collectionPlaylist": "Playlist", + "@collectionPlaylist": { + "description": "Single playlist label" + }, + "collectionAddToPlaylist": "Add to playlist", + "@collectionAddToPlaylist": { + "description": "Action to add a track to user playlist" + }, + "collectionCreatePlaylist": "Create playlist", + "@collectionCreatePlaylist": { + "description": "Action to create a new playlist" + }, + "collectionNoPlaylistsYet": "No playlists yet", + "@collectionNoPlaylistsYet": { + "description": "Empty state title when user has no playlists" + }, + "collectionPlaylistTracks": "{count, plural, =1{1 track} other{{count} tracks}}", + "@collectionPlaylistTracks": { + "description": "Track count label for custom playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionArtistCount": "{count, plural, =1{1 artist} other{{count} artists}}", + "@collectionArtistCount": { + "description": "Artist count label for favorite artists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionAddedToPlaylist": "Added to \"{playlistName}\"", + "@collectionAddedToPlaylist": { + "description": "Snackbar after adding track to playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "collectionAlreadyInPlaylist": "Already in \"{playlistName}\"", + "@collectionAlreadyInPlaylist": { + "description": "Snackbar when track already exists in playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "collectionPlaylistNameHint": "Playlist name", + "@collectionPlaylistNameHint": { + "description": "Hint text for playlist name input" + }, + "collectionPlaylistNameRequired": "Playlist name is required", + "@collectionPlaylistNameRequired": { + "description": "Validation error for empty playlist name" + }, + "collectionRenamePlaylist": "Rename playlist", + "@collectionRenamePlaylist": { + "description": "Action to rename playlist" + }, + "collectionDeletePlaylist": "Delete playlist", + "@collectionDeletePlaylist": { + "description": "Action to delete playlist" + }, + "collectionPlaylistRenamed": "Playlist renamed", + "@collectionPlaylistRenamed": { + "description": "Snackbar after renaming playlist" + }, + "collectionWishlistEmptyTitle": "Wishlist is empty", + "@collectionWishlistEmptyTitle": { + "description": "Wishlist empty state title" + }, + "collectionWishlistEmptySubtitle": "Tap + on tracks to save what you want to download later", + "@collectionWishlistEmptySubtitle": { + "description": "Wishlist empty state subtitle" + }, + "collectionLovedEmptyTitle": "Loved folder is empty", + "@collectionLovedEmptyTitle": { + "description": "Loved empty state title" + }, + "collectionLovedEmptySubtitle": "Tap love on tracks to keep your favorites", + "@collectionLovedEmptySubtitle": { + "description": "Loved empty state subtitle" + }, + "collectionFavoriteArtistsEmptyTitle": "No favorite artists yet", + "@collectionFavoriteArtistsEmptyTitle": { + "description": "Favorite artists empty state title" + }, + "collectionFavoriteArtistsEmptySubtitle": "Tap the heart on an artist page to keep them here", + "@collectionFavoriteArtistsEmptySubtitle": { + "description": "Favorite artists empty state subtitle" + }, + "collectionPlaylistEmptyTitle": "Playlist is empty", + "@collectionPlaylistEmptyTitle": { + "description": "Playlist empty state title" + }, + "collectionPlaylistEmptySubtitle": "Long-press + on any track to add it here", + "@collectionPlaylistEmptySubtitle": { + "description": "Playlist empty state subtitle" + }, + "collectionRemoveFromPlaylist": "Remove from playlist", + "@collectionRemoveFromPlaylist": { + "description": "Tooltip for removing track from playlist" + }, + "collectionRemoveFromFolder": "フォルダから削除", + "@collectionRemoveFromFolder": { + "description": "Tooltip for removing track from wishlist/loved folder" + }, + "collectionAddedToLoved": "\"{trackName}\" added to Loved", + "@collectionAddedToLoved": { + "description": "Snackbar after adding track to loved folder", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "collectionRemovedFromLoved": "\"{trackName}\" removed from Loved", + "@collectionRemovedFromLoved": { + "description": "Snackbar after removing track from loved folder", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "collectionAddedToWishlist": "\"{trackName}\" added to Wishlist", + "@collectionAddedToWishlist": { + "description": "Snackbar after adding track to wishlist", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "collectionRemovedFromWishlist": "\"{trackName}\" removed from Wishlist", + "@collectionRemovedFromWishlist": { + "description": "Snackbar after removing track from wishlist", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "collectionAddedToFavoriteArtists": "\"{artistName}\" added to Favorite Artists", + "@collectionAddedToFavoriteArtists": { + "description": "Snackbar after adding artist to favorite artists", + "placeholders": { + "artistName": { + "type": "String" + } + } + }, + "collectionRemovedFromFavoriteArtists": "\"{artistName}\" removed from Favorite Artists", + "@collectionRemovedFromFavoriteArtists": { + "description": "Snackbar after removing artist from favorite artists", + "placeholders": { + "artistName": { + "type": "String" + } + } + }, + "trackOptionAddToLoved": "Add to Loved", + "@trackOptionAddToLoved": { + "description": "Bottom sheet action label - add track to loved folder" + }, + "trackOptionRemoveFromLoved": "Remove from Loved", + "@trackOptionRemoveFromLoved": { + "description": "Bottom sheet action label - remove track from loved folder" + }, + "trackOptionAddToWishlist": "ウィッシュリストに追加", + "@trackOptionAddToWishlist": { + "description": "Bottom sheet action label - add track to wishlist" + }, + "trackOptionRemoveFromWishlist": "ウィッシュから削除", + "@trackOptionRemoveFromWishlist": { + "description": "Bottom sheet action label - remove track from wishlist" + }, + "artistOptionAddToFavorites": "Add to Favorite Artists", + "@artistOptionAddToFavorites": { + "description": "Action label - add artist to favorite artists" + }, + "artistOptionRemoveFromFavorites": "Remove from Favorite Artists", + "@artistOptionRemoveFromFavorites": { + "description": "Action label - remove artist from favorite artists" + }, + "collectionPlaylistChangeCover": "カバー画像を変更", + "@collectionPlaylistChangeCover": { + "description": "Bottom sheet action to pick a custom cover image for a playlist" + }, + "collectionPlaylistRemoveCover": "カバー画像を削除", + "@collectionPlaylistRemoveCover": { + "description": "Bottom sheet action to remove custom cover image from a playlist" + }, + "selectionShareCount": "{count} {count, plural, =1{個のトラック} other{個のトラック}}を共有", + "@selectionShareCount": { + "description": "Share button text with count in selection mode", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "selectionShareNoFiles": "No shareable files found", + "@selectionShareNoFiles": { + "description": "Snackbar when no selected files exist on disk" + }, + "selectionConvertCount": "Convert {count} {count, plural, =1{track} other{tracks}}", + "@selectionConvertCount": { + "description": "Convert button text with count in selection mode", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "selectionConvertNoConvertible": "No convertible tracks selected", + "@selectionConvertNoConvertible": { + "description": "Snackbar when no selected tracks support conversion" + }, + "selectionBatchConvertConfirmTitle": "一括変換", + "@selectionBatchConvertConfirmTitle": { + "description": "Confirmation dialog title for batch conversion" + }, + "selectionBatchConvertConfirmMessage": "Convert {count} {count, plural, =1{track} other{tracks}} to {format} at {bitrate}?\n\nOriginal files will be deleted after conversion.", + "@selectionBatchConvertConfirmMessage": { + "description": "Confirmation dialog message for batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "selectionBatchConvertConfirmMessageLossless": "Convert {count} {count, plural, =1{track} other{tracks}} to {format}? (Lossless — no quality loss)\n\nOriginal files will be deleted after conversion.", + "@selectionBatchConvertConfirmMessageLossless": { + "description": "Confirmation dialog message for lossless batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + } + } + }, "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", @@ -5960,6 +3921,399 @@ } } }, + "selectionBatchConvertSuccess": "Converted {success} of {total} tracks to {format}", + "@selectionBatchConvertSuccess": { + "description": "Snackbar after batch conversion completes", + "placeholders": { + "success": { + "type": "int" + }, + "total": { + "type": "int" + }, + "format": { + "type": "String" + } + } + }, + "downloadedAlbumDownloadedCount": "{count} 個をダウンロード済み", + "@downloadedAlbumDownloadedCount": { + "description": "Downloaded tracks count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Folder named after Album Artist tag", + "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { + "description": "Subtitle when album artist is used for folder names" + }, + "downloadUseAlbumArtistForFoldersTrackSubtitle": "Folder named after Track Artist tag", + "@downloadUseAlbumArtistForFoldersTrackSubtitle": { + "description": "Subtitle when track artist is used for folder names" + }, + "lyricsProvidersTitle": "Lyrics Provider Priority", + "@lyricsProvidersTitle": { + "description": "Settings item title for lyrics provider order" + }, + "lyricsProvidersDescription": "Enable, disable and reorder lyrics sources. Providers are tried top-to-bottom until lyrics are found.", + "@lyricsProvidersDescription": { + "description": "Description on the lyrics provider priority page" + }, + "lyricsProvidersInfoText": "Extension lyrics providers run before built-in lyrics providers. At least one provider must remain enabled.", + "@lyricsProvidersInfoText": { + "description": "Info tip on lyrics provider priority page" + }, + "lyricsProvidersEnabledSection": "Enabled ({count})", + "@lyricsProvidersEnabledSection": { + "description": "Section header for enabled providers", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "lyricsProvidersDisabledSection": "Disabled ({count})", + "@lyricsProvidersDisabledSection": { + "description": "Section header for disabled providers", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "lyricsProvidersAtLeastOne": "At least one provider must remain enabled", + "@lyricsProvidersAtLeastOne": { + "description": "Snackbar when user tries to disable the last enabled provider" + }, + "lyricsProvidersSaved": "Lyrics provider priority saved", + "@lyricsProvidersSaved": { + "description": "Snackbar after saving lyrics provider priority" + }, + "lyricsProvidersDiscardContent": "You have unsaved changes that will be lost.", + "@lyricsProvidersDiscardContent": { + "description": "Body text of the discard-changes dialog on lyrics provider page" + }, + "lyricsProviderLrclibDesc": "Open-source synced lyrics database", + "@lyricsProviderLrclibDesc": { + "description": "Description for LRCLIB provider" + }, + "lyricsProviderNeteaseDesc": "NetEase Cloud Music (good for Asian songs)", + "@lyricsProviderNeteaseDesc": { + "description": "Description for Netease provider" + }, + "lyricsProviderMusixmatchDesc": "Largest lyrics database (multi-language)", + "@lyricsProviderMusixmatchDesc": { + "description": "Description for Musixmatch provider" + }, + "lyricsProviderAppleMusicDesc": "Word-by-word synced lyrics (via proxy)", + "@lyricsProviderAppleMusicDesc": { + "description": "Description for Apple Music provider" + }, + "lyricsProviderQqMusicDesc": "QQ Music (good for Chinese songs, direct API)", + "@lyricsProviderQqMusicDesc": { + "description": "Description for QQ Music provider" + }, + "lyricsProviderLyricsPlusDesc": "Word-by-word karaoke lyrics (Apple/Musixmatch/Spotify/QQ, via proxy)", + "@lyricsProviderLyricsPlusDesc": { + "description": "Description for LyricsPlus provider" + }, + "lyricsProviderExtensionDesc": "Extension provider", + "@lyricsProviderExtensionDesc": { + "description": "Generic description for extension-based lyrics providers" + }, + "safMigrationTitle": "Storage Update Required", + "@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": { + "description": "First paragraph of SAF migration dialog" + }, + "safMigrationMessage2": "Please select your download folder again to switch to the new storage system.", + "@safMigrationMessage2": { + "description": "Second paragraph of SAF migration dialog" + }, + "safMigrationSuccess": "Download folder updated to SAF mode", + "@safMigrationSuccess": { + "description": "Snackbar after successfully migrating to SAF" + }, + "settingsDonate": "Support Development", + "@settingsDonate": { + "description": "Settings menu item - donate page" + }, + "settingsDonateSubtitle": "Buy the developer a coffee", + "@settingsDonateSubtitle": { + "description": "Subtitle for donate menu item" + }, + "settingsBackup": "Backup & Restore", + "@settingsBackup": { + "description": "Settings menu item - backup and restore page" + }, + "settingsBackupSubtitle": "Move your library, history and settings to a new device", + "@settingsBackupSubtitle": { + "description": "Subtitle for backup and restore settings item" + }, + "backupTitle": "Backup & Restore", + "@backupTitle": { + "description": "App bar title for the backup and restore page" + }, + "backupExportSectionTitle": "Create backup", + "@backupExportSectionTitle": { + "description": "Section title for the export/backup card" + }, + "backupExportSectionDescription": "Save your settings, download history, liked tracks, wishlist, favorite artists and playlists into a single file you can keep or move to another phone.", + "@backupExportSectionDescription": { + "description": "Description of what a backup contains" + }, + "backupExportButton": "Create backup file", + "@backupExportButton": { + "description": "Button to create and share a backup file" + }, + "backupImportSectionTitle": "Restore backup", + "@backupImportSectionTitle": { + "description": "Section title for the import/restore card" + }, + "backupImportSectionDescription": "Pick a backup file to restore your data. This replaces the current settings, history and library on this device.", + "@backupImportSectionDescription": { + "description": "Description for the restore action" + }, + "backupImportButton": "Choose backup file", + "@backupImportButton": { + "description": "Button to pick a backup file to restore" + }, + "backupCreated": "Backup created", + "@backupCreated": { + "description": "Snackbar after a backup file is created" + }, + "backupCreateFailed": "Failed to create backup", + "@backupCreateFailed": { + "description": "Snackbar when backup creation fails" + }, + "backupRestoreConfirmTitle": "Restore this backup?", + "@backupRestoreConfirmTitle": { + "description": "Confirmation dialog title before restoring a backup" + }, + "backupRestoreConfirmMessage": "This will replace your current settings, download history, liked tracks, wishlist and playlists with the contents of the backup. This cannot be undone.", + "@backupRestoreConfirmMessage": { + "description": "Confirmation dialog message before restoring a backup" + }, + "backupRestoreConfirmButton": "Restore", + "@backupRestoreConfirmButton": { + "description": "Confirm button to proceed with restore" + }, + "backupRestored": "Backup restored successfully", + "@backupRestored": { + "description": "Snackbar after a successful restore" + }, + "backupRestoreFailed": "Failed to restore backup", + "@backupRestoreFailed": { + "description": "Snackbar when restore fails" + }, + "backupInvalidFile": "This file is not a valid SpotiFLAC backup", + "@backupInvalidFile": { + "description": "Snackbar when the chosen file is not a valid backup" + }, + "backupRestoreRestartHint": "Restart the app to make sure every change is applied.", + "@backupRestoreRestartHint": { + "description": "Hint shown after restoring that an app restart is recommended" + }, + "backupContentsTitle": "Backup contents", + "@backupContentsTitle": { + "description": "Header above the list summarizing what the backup contains" + }, + "backupSettingsOnly": "Settings only", + "backupSelectHistory": "Download history", + "backupSelectCollections": "Library collections", + "backupSelectCollectionsDescription": "Liked tracks, wishlist, favorite artists, playlists and playlist covers.", + "backupSelectExtensions": "Extensions and their settings", + "backupSelectedExportDescription": "Save the selected categories to a backup file. Audio files are not included.", + "backupSelectAtLeastOne": "Select at least one category to create a backup.", + "backupSelectedRestoreMessage": "Only the categories listed below will be restored. Categories not included in this backup will stay unchanged. Restoring can replace existing data and cannot be undone.", + "backupContentsSettings": "App settings", + "@backupContentsSettings": { + "description": "Backup contents row label for settings" + }, + "backupContentsHistory": "{count} history {count, plural, =1{item} other{items}}", + "@backupContentsHistory": { + "description": "Backup contents row for history count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsLiked": "{count} liked {count, plural, =1{track} other{tracks}}", + "@backupContentsLiked": { + "description": "Backup contents row for liked tracks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsWishlist": "{count} wishlist {count, plural, =1{track} other{tracks}}", + "@backupContentsWishlist": { + "description": "Backup contents row for wishlist tracks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsPlaylists": "{count, plural, =1{1 playlist} other{{count} playlists}}", + "@backupContentsPlaylists": { + "description": "Backup contents row for playlist count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsArtists": "{count, plural, =1{1 favorite artist} other{{count} favorite artists}}", + "@backupContentsArtists": { + "description": "Backup contents row for favorite artists count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsExtensions": "{count, plural, =1{1 extension} other{{count} extensions}}", + "@backupContentsExtensions": { + "description": "Backup contents row for installed extensions count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupIncludeSecrets": "Include extension credentials", + "@backupIncludeSecrets": { + "description": "Toggle to include secret extension settings (tokens, API keys) in the backup" + }, + "backupIncludeSecretsDescription": "Tokens and API keys from extensions will be saved into the backup file. Keep the file private. When off, you re-enter them after restoring.", + "@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 repo.", + "@backupExtensionsRestoreFailed": { + "description": "Snackbar/hint when some extensions failed to reinstall during restore", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "tooltipLoveAll": "Love All", + "@tooltipLoveAll": { + "description": "Tooltip for the Love All button on album/playlist screens" + }, + "tooltipAddToPlaylist": "Add to Playlist", + "@tooltipAddToPlaylist": { + "description": "Tooltip for the Add to Playlist button" + }, + "snackbarRemovedTracksFromLoved": "Removed {count} tracks from Loved", + "@snackbarRemovedTracksFromLoved": { + "description": "Snackbar after removing multiple tracks from Loved folder", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarAddedTracksToLoved": "Added {count} tracks to Loved", + "@snackbarAddedTracksToLoved": { + "description": "Snackbar after adding multiple tracks to Loved folder", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dialogDownloadAllTitle": "Download All", + "@dialogDownloadAllTitle": { + "description": "Dialog title for bulk download confirmation" + }, + "dialogDownloadAllMessage": "Download {count} tracks?", + "@dialogDownloadAllMessage": { + "description": "Body of the Download All confirmation dialog", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "homeSkipAlreadyDownloaded": "Skip already downloaded songs", + "@homeSkipAlreadyDownloaded": { + "description": "Checkbox label in import dialog to skip already-downloaded songs" + }, + "homeGoToAlbum": "Go to Album", + "@homeGoToAlbum": { + "description": "Context menu item to navigate to the album page" + }, + "homeAlbumInfoUnavailable": "Album info not available", + "@homeAlbumInfoUnavailable": { + "description": "Snackbar when album info cannot be loaded" + }, + "snackbarLoadingCueSheet": "Loading CUE sheet...", + "@snackbarLoadingCueSheet": { + "description": "Snackbar while loading a CUE sheet file" + }, + "snackbarMetadataSaved": "Metadata saved successfully", + "@snackbarMetadataSaved": { + "description": "Snackbar after successfully saving track metadata" + }, + "snackbarFailedToEmbedLyrics": "Failed to embed lyrics", + "@snackbarFailedToEmbedLyrics": { + "description": "Snackbar when lyrics embedding fails" + }, + "snackbarFailedToWriteStorage": "Failed to write back to storage", + "@snackbarFailedToWriteStorage": { + "description": "Snackbar when writing metadata back to file fails" + }, + "snackbarError": "Error: {error}", + "@snackbarError": { + "description": "Generic error snackbar with error detail", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "snackbarNoActionDefined": "No action defined for this button", + "@snackbarNoActionDefined": { + "description": "Snackbar when an extension button has no action configured" + }, + "noTracksFoundForAlbum": "No tracks found for this album", + "@noTracksFoundForAlbum": { + "description": "Empty state message when an album has no tracks" + }, + "downloadLocationSubtitle": "Choose where to save your downloaded tracks", + "@downloadLocationSubtitle": { + "description": "Subtitle shown in the download location picker sheet" + }, + "storageAutomaticFolder": "Automatic folder", + "storageAutomaticDownloadFolder": "Uses Download/SpotiFLAC when writable, otherwise app storage", + "storageSafRecommended": "Choose folder (Recommended)", + "storageDownloadFolderHint": "In the Android folder picker, open Download and select SpotiFLAC. If it does not exist, create it using New folder, then tap Use this folder to grant access.", + "storageModeAppFolder": "App Folder (Recommended)", + "@storageModeAppFolder": { + "description": "Storage mode option - app-managed folder" + }, + "storageModeAppFolderSubtitle": "Saves to Music/SpotiFLAC by default", + "@storageModeAppFolderSubtitle": { + "description": "Subtitle for app folder storage mode" + }, + "storageModeSaf": "Custom Folder (SAF)", + "@storageModeSaf": { + "description": "Storage mode option - Storage Access Framework" + }, + "storageModeSafSubtitle": "Pick any folder, including SD card", + "@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" @@ -5980,6 +4334,812 @@ "@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" + }, + "downloadFilenameInsertTag": "Tap to insert tag:", + "@downloadFilenameInsertTag": { + "description": "Label above filename tag chips" + }, + "downloadSeparateSinglesEnabled": "Singles and EPs saved in a separate folder", + "@downloadSeparateSinglesEnabled": { + "description": "Subtitle when separate singles folder is on" + }, + "downloadSeparateSinglesDisabled": "Singles and albums saved in the same folder", + "@downloadSeparateSinglesDisabled": { + "description": "Subtitle when separate singles folder is off" + }, + "downloadArtistNameFilters": "Artist Name Filters", + "@downloadArtistNameFilters": { + "description": "Setting title for artist folder filter options" + }, + "downloadCreatePlaylistSourceFolder": "Playlist Source Folder", + "@downloadCreatePlaylistSourceFolder": { + "description": "Setting to create a subfolder per playlist source" + }, + "downloadCreatePlaylistSourceFolderEnabled": "A subfolder is created for each playlist", + "@downloadCreatePlaylistSourceFolderEnabled": { + "description": "Subtitle when playlist folder is enabled" + }, + "downloadCreatePlaylistSourceFolderDisabled": "All tracks saved directly to download folder", + "@downloadCreatePlaylistSourceFolderDisabled": { + "description": "Subtitle when playlist folder is disabled" + }, + "downloadCreatePlaylistSourceFolderRedundant": "Handled by folder organization setting", + "@downloadCreatePlaylistSourceFolderRedundant": { + "description": "Subtitle when folder organization is already set to playlist" + }, + "downloadSongLinkRegion": "SongLink Region", + "@downloadSongLinkRegion": { + "description": "Setting for SongLink region used during fallback resolution" + }, + "downloadNetworkCompatibilityMode": "Network Compatibility Mode", + "@downloadNetworkCompatibilityMode": { + "description": "Setting for legacy TLS/network handling" + }, + "downloadNetworkCompatibilityModeEnabled": "Allowing legacy HTTP endpoints; TLS verification remains enabled", + "@downloadNetworkCompatibilityModeEnabled": { + "description": "Subtitle when network compatibility mode is on" + }, + "downloadNetworkCompatibilityModeDisabled": "Using standard network settings", + "@downloadNetworkCompatibilityModeDisabled": { + "description": "Subtitle when network compatibility mode is off" + }, + "downloadAllowLocalNetwork": "Allow Local Network Access", + "@downloadAllowLocalNetwork": { + "description": "Setting title for allowing requests to private/local network targets" + }, + "downloadAllowLocalNetworkEnabled": "Requests to local/private addresses are allowed (for local proxy or custom DNS)", + "@downloadAllowLocalNetworkEnabled": { + "description": "Subtitle when allow local network access is on" + }, + "downloadAllowLocalNetworkDisabled": "Local/private addresses are blocked for security", + "@downloadAllowLocalNetworkDisabled": { + "description": "Subtitle when allow local network access is off" + }, + "downloadSelectServiceToEnable": "Select a provider with quality options to enable this option", + "@downloadSelectServiceToEnable": { + "description": "Subtitle when quality picker is disabled due to extension service" + }, + "downloadEmbedLyricsDisabled": "Enable metadata embedding first", + "@downloadEmbedLyricsDisabled": { + "description": "Subtitle when lyrics embedding is blocked by metadata toggle" + }, + "downloadNeteaseIncludeTranslation": "Netease: Include Translation", + "@downloadNeteaseIncludeTranslation": { + "description": "Setting to include translated lyrics from Netease" + }, + "downloadNeteaseIncludeTranslationEnabled": "Chinese translation lines included", + "@downloadNeteaseIncludeTranslationEnabled": { + "description": "Subtitle when Netease translation is on" + }, + "downloadNeteaseIncludeTranslationDisabled": "Original lyrics only", + "@downloadNeteaseIncludeTranslationDisabled": { + "description": "Subtitle when Netease translation is off" + }, + "downloadNeteaseIncludeRomanization": "Netease: Include Romanization", + "@downloadNeteaseIncludeRomanization": { + "description": "Setting to include romanized lyrics from Netease" + }, + "downloadNeteaseIncludeRomanizationEnabled": "Romanization lines included", + "@downloadNeteaseIncludeRomanizationEnabled": { + "description": "Subtitle when Netease romanization is on" + }, + "downloadNeteaseIncludeRomanizationDisabled": "No romanization", + "@downloadNeteaseIncludeRomanizationDisabled": { + "description": "Subtitle when Netease romanization is off" + }, + "downloadAppleQqMultiPerson": "Apple / QQ: Multi-Person Lyrics", + "@downloadAppleQqMultiPerson": { + "description": "Setting for word-by-word multi-person lyrics from Apple Music and QQ Music" + }, + "downloadAppleQqMultiPersonEnabled": "Speaker labels included for duets and group tracks", + "@downloadAppleQqMultiPersonEnabled": { + "description": "Subtitle when multi-person lyrics is on" + }, + "downloadAppleQqMultiPersonDisabled": "Standard lyrics without speaker labels", + "@downloadAppleQqMultiPersonDisabled": { + "description": "Subtitle when multi-person lyrics is off" + }, + "downloadAppleElrcWordSync": "Apple Music eLRC Word Sync", + "@downloadAppleElrcWordSync": { + "description": "Setting for preserving Apple Music word-by-word eLRC timestamps" + }, + "downloadAppleElrcWordSyncEnabled": "Raw word-by-word timestamps preserved", + "@downloadAppleElrcWordSyncEnabled": { + "description": "Subtitle when Apple Music eLRC word sync is enabled" + }, + "downloadAppleElrcWordSyncDisabled": "Safer line-by-line Apple Music lyrics", + "@downloadAppleElrcWordSyncDisabled": { + "description": "Subtitle when Apple Music eLRC word sync is disabled" + }, + "downloadMusixmatchLanguage": "Musixmatch Language", + "@downloadMusixmatchLanguage": { + "description": "Setting for Musixmatch lyrics translation language" + }, + "downloadMusixmatchLanguageAuto": "Auto (original language)", + "@downloadMusixmatchLanguageAuto": { + "description": "Subtitle when no language is set" + }, + "downloadFilterContributing": "Filter Contributing Artists", + "@downloadFilterContributing": { + "description": "Setting to strip contributing artists from Album Artist folder name" + }, + "downloadFilterContributingEnabled": "Contributing artists removed from Album Artist folder name", + "@downloadFilterContributingEnabled": { + "description": "Subtitle when contributing artist filter is on" + }, + "downloadFilterContributingDisabled": "Full Album Artist string used", + "@downloadFilterContributingDisabled": { + "description": "Subtitle when contributing artist filter is off" + }, + "downloadProvidersNoneEnabled": "No providers enabled", + "@downloadProvidersNoneEnabled": { + "description": "Shown when no lyrics providers are active" + }, + "downloadMusixmatchLanguageCode": "Language code", + "@downloadMusixmatchLanguageCode": { + "description": "Label for Musixmatch language input field" + }, + "downloadMusixmatchLanguageHint": "e.g. en, de, ja", + "@downloadMusixmatchLanguageHint": { + "description": "Placeholder for Musixmatch language input" + }, + "downloadMusixmatchLanguageDesc": "Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.", + "@downloadMusixmatchLanguageDesc": { + "description": "Description in Musixmatch language picker" + }, + "downloadMusixmatchAuto": "Auto", + "@downloadMusixmatchAuto": { + "description": "Button to clear Musixmatch language (use auto)" + }, + "downloadNetworkAnySubtitle": "Use WiFi or mobile data", + "@downloadNetworkAnySubtitle": { + "description": "Subtitle for any-network option in picker" + }, + "downloadNetworkWifiOnlySubtitle": "Downloads pause when on mobile data", + "@downloadNetworkWifiOnlySubtitle": { + "description": "Subtitle for WiFi-only option in picker" + }, + "downloadSongLinkRegionDesc": "Region used when resolving track links via SongLink. Choose the country where your streaming services are available.", + "@downloadSongLinkRegionDesc": { + "description": "Description in SongLink region picker" + }, + "snackbarUnsupportedAudioFormat": "Unsupported audio format", + "@snackbarUnsupportedAudioFormat": { + "description": "Snackbar when the audio format is not supported for the requested operation" + }, + "cacheRefresh": "Refresh", + "@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": { + "description": "Dialog message for bulk playlist download confirmation", + "placeholders": { + "trackCount": { + "type": "int" + }, + "playlistCount": { + "type": "int" + } + } + }, + "bulkDownloadPlaylistsButton": "Download {count} {count, plural, =1{playlist} other{playlists}}", + "@bulkDownloadPlaylistsButton": { + "description": "Button label for bulk downloading selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "bulkDownloadSelectPlaylists": "Select playlists to download", + "@bulkDownloadSelectPlaylists": { + "description": "Button label when no playlists are selected for download" + }, + "snackbarSelectedPlaylistsEmpty": "Selected playlists have no tracks", + "@snackbarSelectedPlaylistsEmpty": { + "description": "Snackbar when selected playlists contain no tracks" + }, + "playlistsCount": "{count, plural, =1{1 playlist} other{{count} playlists}}", + "@playlistsCount": { + "description": "Playlist count display", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "editMetadataAutoFill": "Auto-fill from online", + "@editMetadataAutoFill": { + "description": "Section title for selective online metadata auto-fill in the edit metadata sheet" + }, + "editMetadataAutoFillDesc": "Choose a metadata extension, select fields, then review its data before applying", + "@editMetadataAutoFillDesc": { + "description": "Description for the auto-fill section" + }, + "editMetadataAutoFillSource": "Metadata source", + "@editMetadataAutoFillSource": { + "description": "Label for the metadata extension selector in online auto-fill" + }, + "editMetadataAutoFillSourceAutomatic": "Automatic (provider priority)", + "@editMetadataAutoFillSourceAutomatic": { + "description": "Automatic source option that follows configured metadata provider priority" + }, + "editMetadataAutoFillFind": "Find metadata", + "@editMetadataAutoFillFind": { + "description": "Button label for finding an online metadata candidate" + }, + "editMetadataAutoFillPreview": "Data from {source}", + "@editMetadataAutoFillPreview": { + "description": "Title for the online metadata preview", + "placeholders": { + "source": { + "type": "String" + } + } + }, + "editMetadataAutoFillCoverAvailable": "Cover artwork available", + "@editMetadataAutoFillCoverAvailable": { + "description": "Preview value when the selected metadata source provides cover artwork" + }, + "editMetadataAutoFillApply": "Apply selected data", + "@editMetadataAutoFillApply": { + "description": "Button label for applying the previewed metadata" + }, + "editMetadataAutoFillDoneFromSource": "Filled {count} {count, plural, =1{field} other{fields}} from {source}", + "@editMetadataAutoFillDoneFromSource": { + "description": "Snackbar confirming fields applied from a selected metadata source", + "placeholders": { + "count": { + "type": "int" + }, + "source": { + "type": "String" + } + } + }, + "editMetadataAutoFillFetch": "Fetch & Fill", + "@editMetadataAutoFillFetch": { + "description": "Button label to fetch online metadata and fill selected fields" + }, + "editMetadataAutoFillSearching": "Searching online...", + "@editMetadataAutoFillSearching": { + "description": "Snackbar shown while searching for online metadata" + }, + "editMetadataAutoFillNoResults": "No matching metadata found online", + "@editMetadataAutoFillNoResults": { + "description": "Snackbar when online metadata search returns no results" + }, + "editMetadataAutoFillDone": "Filled {count} {count, plural, =1{field} other{fields}} from online metadata", + "@editMetadataAutoFillDone": { + "description": "Snackbar confirming how many fields were auto-filled", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "editMetadataAutoFillNoneSelected": "Select at least one field to auto-fill", + "@editMetadataAutoFillNoneSelected": { + "description": "Snackbar when user taps Fetch without selecting any fields" + }, + "editMetadataFieldTitle": "Title", + "@editMetadataFieldTitle": { + "description": "Chip label for title field in auto-fill selector" + }, + "editMetadataFieldArtist": "Artist", + "@editMetadataFieldArtist": { + "description": "Chip label for artist field in auto-fill selector" + }, + "editMetadataFieldAlbum": "Album", + "@editMetadataFieldAlbum": { + "description": "Chip label for album field in auto-fill selector" + }, + "editMetadataFieldAlbumArtist": "Album Artist", + "@editMetadataFieldAlbumArtist": { + "description": "Chip label for album artist field in auto-fill selector" + }, + "editMetadataFieldDate": "Date", + "@editMetadataFieldDate": { + "description": "Chip label for date field in auto-fill selector" + }, + "editMetadataFieldTrackNum": "Track #", + "@editMetadataFieldTrackNum": { + "description": "Chip label for track number field in auto-fill selector" + }, + "editMetadataFieldDiscNum": "Disc #", + "@editMetadataFieldDiscNum": { + "description": "Chip label for disc number field in auto-fill selector" + }, + "editMetadataFieldGenre": "Genre", + "@editMetadataFieldGenre": { + "description": "Chip label for genre field in auto-fill selector" + }, + "editMetadataFieldIsrc": "ISRC", + "@editMetadataFieldIsrc": { + "description": "Chip label for ISRC field in auto-fill selector" + }, + "editMetadataFieldLabel": "Label", + "@editMetadataFieldLabel": { + "description": "Chip label for label field in auto-fill selector" + }, + "editMetadataFieldCopyright": "Copyright", + "@editMetadataFieldCopyright": { + "description": "Chip label for copyright field in auto-fill selector" + }, + "editMetadataFieldCover": "Cover Art", + "@editMetadataFieldCover": { + "description": "Chip label for cover art field in auto-fill selector" + }, + "editMetadataSelectAll": "All", + "@editMetadataSelectAll": { + "description": "Button to select all fields for auto-fill" + }, + "editMetadataSelectEmpty": "Empty only", + "@editMetadataSelectEmpty": { + "description": "Button to select only fields that are currently empty" + }, + "queueDownloadingCount": "Downloading ({count})", + "@queueDownloadingCount": { + "description": "Header for active downloads section with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueFilteringIndicator": "Filtering...", + "@queueFilteringIndicator": { + "description": "Shown while filter results are being computed" + }, + "queueTrackCount": "{count, plural, =1{1 track} other{{count} tracks}}", + "@queueTrackCount": { + "description": "Track count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueAlbumCount": "{count, plural, =1{1 album} other{{count} albums}}", + "@queueAlbumCount": { + "description": "Album count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueEmptyAlbums": "No album downloads", + "@queueEmptyAlbums": { + "description": "Empty state title when no album downloads exist" + }, + "queueEmptyAlbumsSubtitle": "Download multiple tracks from an album to see them here", + "@queueEmptyAlbumsSubtitle": { + "description": "Empty state subtitle for album downloads" + }, + "queueEmptySingles": "No single downloads", + "@queueEmptySingles": { + "description": "Empty state title when no single track downloads exist" + }, + "queueEmptySinglesSubtitle": "Single track downloads will appear here", + "@queueEmptySinglesSubtitle": { + "description": "Empty state subtitle for single track downloads" + }, + "queuePlaylistCount": "{count, plural, =1{1 playlist} other{{count} playlists}}", + "@queuePlaylistCount": { + "description": "Playlist count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueEmptyPlaylistsSubtitle": "Create a playlist to organize your tracks", + "@queueEmptyPlaylistsSubtitle": { + "description": "Empty state subtitle for the playlists library view" + }, + "libraryDefaultView": "Default view", + "@libraryDefaultView": { + "description": "Setting title - which library view opens when switching to the Library tab" + }, + "libraryDefaultViewLastUsed": "Last used", + "@libraryDefaultViewLastUsed": { + "description": "Default view option - keep the last used library view" + }, + "queueEmptyHistory": "No download history", + "@queueEmptyHistory": { + "description": "Empty state title when download history is empty" + }, + "queueEmptyHistorySubtitle": "Downloaded tracks will appear here", + "@queueEmptyHistorySubtitle": { + "description": "Empty state subtitle for download history" + }, + "selectionAllPlaylistsSelected": "All playlists selected", + "@selectionAllPlaylistsSelected": { + "description": "Shown when all playlists are selected in selection mode" + }, + "selectionTapPlaylistsToSelect": "Tap playlists to select", + "@selectionTapPlaylistsToSelect": { + "description": "Hint shown in playlist selection mode" + }, + "selectionSelectPlaylistsToDelete": "Select playlists to delete", + "@selectionSelectPlaylistsToDelete": { + "description": "Hint shown when no playlists are selected for deletion" + }, + "audioAnalysisTitle": "Audio Quality Analysis", + "@audioAnalysisTitle": { + "description": "Title for audio analysis section" + }, + "audioAnalysisDescription": "Verify lossless quality with spectrum analysis", + "@audioAnalysisDescription": { + "description": "Description for audio analysis tap-to-analyze prompt" + }, + "audioAnalysisAnalyzing": "Analyzing audio...", + "@audioAnalysisAnalyzing": { + "description": "Loading text while analyzing audio" + }, + "audioAnalysisSampleRate": "Sample Rate", + "@audioAnalysisSampleRate": { + "description": "Sample rate metric label" + }, + "audioAnalysisCodec": "Codec", + "@audioAnalysisCodec": { + "description": "Audio codec metric label" + }, + "audioAnalysisContainer": "Container", + "@audioAnalysisContainer": { + "description": "Audio container metric label" + }, + "audioAnalysisDecodedFormat": "Decoded Format", + "@audioAnalysisDecodedFormat": { + "description": "Decoded sample format metric label" + }, + "audioAnalysisBitDepth": "Bit Depth", + "@audioAnalysisBitDepth": { + "description": "Bit depth metric label" + }, + "audioAnalysisChannels": "Channels", + "@audioAnalysisChannels": { + "description": "Channels metric label" + }, + "audioAnalysisDuration": "Duration", + "@audioAnalysisDuration": { + "description": "Duration metric label" + }, + "audioAnalysisNyquist": "Nyquist", + "@audioAnalysisNyquist": { + "description": "Nyquist frequency metric label" + }, + "audioAnalysisFileSize": "Size", + "@audioAnalysisFileSize": { + "description": "File size metric label" + }, + "audioAnalysisDynamicRange": "Dynamic Range", + "@audioAnalysisDynamicRange": { + "description": "Dynamic range metric label" + }, + "audioAnalysisPeak": "Peak", + "@audioAnalysisPeak": { + "description": "Peak amplitude metric label" + }, + "audioAnalysisRms": "RMS", + "@audioAnalysisRms": { + "description": "RMS level metric label" + }, + "audioAnalysisLufs": "LUFS", + "@audioAnalysisLufs": { + "description": "Integrated loudness metric label" + }, + "audioAnalysisTruePeak": "True Peak", + "@audioAnalysisTruePeak": { + "description": "True peak metric label" + }, + "audioAnalysisClipping": "Clipping", + "@audioAnalysisClipping": { + "description": "Clipping metric label" + }, + "audioAnalysisNoClipping": "No clipping", + "@audioAnalysisNoClipping": { + "description": "Displayed when no clipped samples were detected" + }, + "audioAnalysisSpectralCutoff": "Spectral Cutoff", + "@audioAnalysisSpectralCutoff": { + "description": "Estimated spectral cutoff metric label" + }, + "audioAnalysisCutoffNotDetected": "Not detected", + "@audioAnalysisCutoffNotDetected": { + "description": "Displayed when no reliable broadband spectral cutoff can be detected" + }, + "audioAnalysisChannelStats": "Per-channel Stats", + "@audioAnalysisChannelStats": { + "description": "Per-channel audio analysis section label" + }, + "audioAnalysisSamples": "Samples", + "@audioAnalysisSamples": { + "description": "Total samples metric label" + }, + "audioAnalysisRescan": "Re-analyze", + "@audioAnalysisRescan": { + "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" + }, + "downloadRedownloadFakeHiRes": "Re-download fake Hi-Res", + "@downloadRedownloadFakeHiRes": { + "description": "Setting title: automatically replace downloads that measure as fake Hi-Res" + }, + "downloadRedownloadFakeHiResSubtitle": "Off by default. Check Hi-Res downloads and replace only when every audio sample is preserved. Keep the original if verification or processing fails", + "@downloadRedownloadFakeHiResSubtitle": { + "description": "Setting subtitle for the fake Hi-Res re-download toggle" + }, + "hiResCheckVerdictFakeCertain": "Fake Hi-Res", + "@hiResCheckVerdictFakeCertain": { + "description": "Verdict: an exact fingerprint (padded bits or upsampling pattern) proves the file is not real Hi-Res" + }, + "hiResCheckVerdictFakeSuspect": "Possibly a filtered master", + "@hiResCheckVerdictFakeSuspect": { + "description": "Verdict: fails the cutoff test but may be a genuine master low-pass filtered in mastering" + }, + "hiResCheckReasonSampleHold": "Every sample is repeated: upsampled by duplication", + "@hiResCheckReasonSampleHold": { + "description": "Reason: sample-and-hold upsampling detected" + }, + "hiResCheckReasonInterpolation": "In-between samples are linearly interpolated", + "@hiResCheckReasonInterpolation": { + "description": "Reason: linear-interpolation upsampling detected" + }, + "hiResCheckReasonImaging": "Content above 22 kHz mirrors the audible band", + "@hiResCheckReasonImaging": { + "description": "Reason: spectral imaging from upsampling detected" + }, + "hiResCheckMusicContent": "Musical content", + "@hiResCheckMusicContent": { + "description": "Label for the highest frequency that still moves with the music" + }, + "hiResCheckUltrasonicNoise": "Above {cutoff} only steady noise (typical of DSD or analog tape transfers): a {rate} file would hold all the music", + "@hiResCheckUltrasonicNoise": { + "description": "Shown when the ultrasonic content of a Hi-Res file is noise rather than music", + "placeholders": { + "cutoff": { + "type": "String" + }, + "rate": { + "type": "String" + } + } + }, + "hiResCheckTitle": "Hi-Res Authenticity", + "@hiResCheckTitle": { + "description": "Title of the fake Hi-Res check card" + }, + "hiResCheckDescription": "Detect upsampled or bit-padded fake Hi-Res files", + "@hiResCheckDescription": { + "description": "Explains what the Hi-Res authenticity check does" + }, + "hiResCheckRun": "Check", + "@hiResCheckRun": { + "description": "Button that starts the Hi-Res authenticity check" + }, + "hiResCheckChecking": "Checking Hi-Res authenticity...", + "@hiResCheckChecking": { + "description": "Loading text while the Hi-Res check runs" + }, + "hiResCheckVerdictFake": "Likely fake Hi-Res", + "@hiResCheckVerdictFake": { + "description": "Verdict: the file claims Hi-Res but does not measure as it" + }, + "hiResCheckVerdictGenuine": "Measures as genuine Hi-Res", + "@hiResCheckVerdictGenuine": { + "description": "Verdict: no upsampling or padded bit depth found" + }, + "hiResCheckVerdictStandard": "Standard definition, nothing to flag", + "@hiResCheckVerdictStandard": { + "description": "Verdict: neither sample rate nor bit depth claims Hi-Res" + }, + "hiResCheckVerdictInconclusive": "Inconclusive: the analyzed segment is too quiet or short", + "@hiResCheckVerdictInconclusive": { + "description": "Verdict: analysis could not reach a reliable conclusion" + }, + "hiResCheckUnsupported": "Only FLAC and WAV files can be checked", + "@hiResCheckUnsupported": { + "description": "Shown when the file format cannot be decoded by the Hi-Res check" + }, + "hiResCheckCutoff": "Content cutoff", + "@hiResCheckCutoff": { + "description": "Label for the highest frequency with real content" + }, + "hiResCheckBitsInUse": "Bits in use", + "@hiResCheckBitsInUse": { + "description": "Label for effective vs declared bit depth" + }, + "hiResCheckDisclaimer": "The spectrum stops early, but nothing proves it was upsampled: it may be a genuine master low-pass filtered in mastering. It is not replaced automatically.", + "@hiResCheckDisclaimer": { + "description": "Caveat shown under a fake Hi-Res verdict" + }, + "hiResCheckFailed": "Hi-Res check failed: {error}", + "@hiResCheckFailed": { + "description": "Error shown when the Hi-Res check fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "hiResCheckReasonRate": "Declares {sampleRate} but content stops at ~{cutoff}", + "@hiResCheckReasonRate": { + "description": "Reason for a fake verdict caused by upsampling", + "placeholders": { + "sampleRate": { + "type": "String" + }, + "cutoff": { + "type": "String" + } + } + }, + "hiResCheckReasonDepth": "Declares {declared}-bit but only {effective} bits carry data", + "@hiResCheckReasonDepth": { + "description": "Reason for a fake verdict caused by padded bit depth", + "placeholders": { + "declared": { + "type": "int" + }, + "effective": { + "type": "int" + } + } + }, + "audioAnalysisRescanning": "Re-analyzing audio...", + "@audioAnalysisRescanning": { + "description": "Loading text while audio is being re-analyzed after an explicit refresh" + }, + "extensionsHomeFeedProvider": "Home Feed Provider", + "@extensionsHomeFeedProvider": { + "description": "Extensions page - label for home feed provider selector" + }, + "extensionsHomeFeedDescription": "Choose which extension provides the home feed on the main screen", + "@extensionsHomeFeedDescription": { + "description": "Extensions page - description for home feed provider picker" + }, + "extensionsHomeFeedAuto": "Auto", + "@extensionsHomeFeedAuto": { + "description": "Label for auto-selected search provider" + }, + "extensionsHomeFeedAutoSubtitle": "Automatically select the best available", + "@extensionsHomeFeedAutoSubtitle": { + "description": "Extensions page - subtitle for auto home feed option" + }, + "extensionsHomeFeedOff": "Off", + "@extensionsHomeFeedOff": { + "description": "Extensions page - home feed provider option: off" + }, + "extensionsHomeFeedOffSubtitle": "Do not show the home feed on the main screen", + "@extensionsHomeFeedOffSubtitle": { + "description": "Extensions page - subtitle for off home feed option" + }, + "extensionsHomeFeedUse": "Use {extensionName} home feed", + "@extensionsHomeFeedUse": { + "description": "Extensions page - subtitle for a specific extension home feed option", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "extensionsNoHomeFeedExtensions": "No extensions with home feed", + "@extensionsNoHomeFeedExtensions": { + "description": "Extensions page - shown when no installed extension has home feed" + }, + "cancelDownloadTitle": "Cancel download?", + "@cancelDownloadTitle": { + "description": "Dialog title when confirming cancellation of an active download" + }, + "cancelDownloadContent": "This will cancel the active download for \"{trackName}\".", + "@cancelDownloadContent": { + "description": "Dialog body when confirming cancellation of an active download", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "cancelDownloadKeep": "Keep", + "@cancelDownloadKeep": { + "description": "Dialog button - keep the active download (do not cancel)" + }, + "queueCancelledTitle": "Download cancelled", + "@queueCancelledTitle": { + "description": "Dialog title when opening a cancelled queue item" + }, + "queueCancelledMessage": "This download was cancelled. Retry it or remove it from the queue.", + "@queueCancelledMessage": { + "description": "Dialog body when opening a cancelled queue item" + }, + "metadataSaveFailedFfmpeg": "Failed to save metadata via FFmpeg", + "@metadataSaveFailedFfmpeg": { + "description": "Snackbar error when FFmpeg fails to write metadata" + }, + "metadataSaveFailedStorage": "Failed to write metadata back to storage", + "@metadataSaveFailedStorage": { + "description": "Snackbar error when writing metadata file back to storage fails" + }, + "snackbarFolderPickerFailed": "Failed to open folder picker: {error}", + "@snackbarFolderPickerFailed": { + "description": "Snackbar shown when folder picker fails to open", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "notifDownloadingTrack": "Downloading {trackName}", + "@notifDownloadingTrack": { + "description": "Notification title while downloading a track", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "notifFinalizingTrack": "Finalizing {trackName}", + "@notifFinalizingTrack": { + "description": "Notification title while finalizing (embedding metadata) a track", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "notifEmbeddingMetadata": "Embedding metadata...", + "@notifEmbeddingMetadata": { + "description": "Notification body while embedding metadata into a downloaded track" + }, + "notifAlreadyInLibraryCount": "Already in Library ({completed}/{total})", + "@notifAlreadyInLibraryCount": { + "description": "Notification title when track is already in library, with count", + "placeholders": { + "completed": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "notifAlreadyInLibrary": "Already in Library", + "@notifAlreadyInLibrary": { + "description": "Notification title when track is already in library" + }, + "notifDownloadCompleteCount": "Download Complete ({completed}/{total})", + "@notifDownloadCompleteCount": { + "description": "Notification title when download is complete, with count", + "placeholders": { + "completed": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "notifDownloadComplete": "Download Complete", + "@notifDownloadComplete": { + "description": "Notification title when a single download is complete" + }, + "notifDownloadsFinished": "Downloads Finished ({completed} done, {failed} failed)", + "@notifDownloadsFinished": { + "description": "Notification title when queue finishes with some failures", + "placeholders": { + "completed": { + "type": "int" + }, + "failed": { + "type": "int" + } + } + }, "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" @@ -5988,10 +5148,592 @@ "@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" + }, + "notifTracksDownloadedSuccess": "{count, plural, =1{1 track downloaded successfully} other{{count} tracks downloaded successfully}}", + "@notifTracksDownloadedSuccess": { + "description": "Notification body for queue complete - how many tracks were downloaded", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifDownloadsFinishedBody": "{completed, plural, =1{1 track downloaded} other{{completed} tracks downloaded}}, {failed, plural, =1{1 failed} other{{failed} failed}}", + "@notifDownloadsFinishedBody": { + "description": "Notification body when queue finishes with failures", + "placeholders": { + "completed": { + "type": "int" + }, + "failed": { + "type": "int" + } + } + }, + "notifDownloadsCanceledTitle": "Downloads canceled", + "@notifDownloadsCanceledTitle": { + "description": "Notification title when downloads are canceled by the user" + }, + "notifDownloadsCanceledBody": "{count, plural, =1{1 download canceled by user} other{{count} downloads canceled by user}}", + "@notifDownloadsCanceledBody": { + "description": "Notification body when downloads are canceled by the user", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifScanningLibrary": "Scanning local library", + "@notifScanningLibrary": { + "description": "Notification title while scanning local library" + }, + "notifLibraryScanProgressWithTotal": "{scanned}/{total} files • {percentage}%", + "@notifLibraryScanProgressWithTotal": { + "description": "Notification body for library scan progress when total is known", + "placeholders": { + "scanned": { + "type": "int" + }, + "total": { + "type": "int" + }, + "percentage": { + "type": "int" + } + } + }, + "notifLibraryScanProgressNoTotal": "{scanned} files scanned • {percentage}%", + "@notifLibraryScanProgressNoTotal": { + "description": "Notification body for library scan progress when total is unknown", + "placeholders": { + "scanned": { + "type": "int" + }, + "percentage": { + "type": "int" + } + } + }, + "notifLibraryScanComplete": "Library scan complete", + "@notifLibraryScanComplete": { + "description": "Notification title when library scan finishes" + }, + "notifLibraryScanCompleteBody": "{count} tracks indexed", + "@notifLibraryScanCompleteBody": { + "description": "Notification body for library scan complete - number of indexed tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifLibraryScanExcluded": "{count} excluded", + "@notifLibraryScanExcluded": { + "description": "Library scan complete suffix - excluded track count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifLibraryScanErrors": "{count} errors", + "@notifLibraryScanErrors": { + "description": "Library scan complete suffix - error count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifLibraryScanFailed": "Library scan failed", + "@notifLibraryScanFailed": { + "description": "Notification title when library scan fails" + }, + "notifLibraryScanCancelled": "Library scan cancelled", + "@notifLibraryScanCancelled": { + "description": "Notification title when library scan is cancelled by the user" + }, + "notifLibraryScanStopped": "Scan stopped before completion.", + "@notifLibraryScanStopped": { + "description": "Notification body when library scan is cancelled" + }, + "notifDownloadingUpdate": "Downloading SpotiFLAC Mobile v{version}", + "@notifDownloadingUpdate": { + "description": "Notification title while downloading an app update", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "notifUpdateProgress": "{received} / {total} MB • {percentage}%", + "@notifUpdateProgress": { + "description": "Notification body showing update download progress", + "placeholders": { + "received": { + "type": "String" + }, + "total": { + "type": "String" + }, + "percentage": { + "type": "int" + } + } + }, + "notifUpdateReady": "Update Ready", + "@notifUpdateReady": { + "description": "Notification title when app update download is complete" + }, + "notifUpdateReadyBody": "SpotiFLAC Mobile v{version} downloaded. Tap to install.", + "@notifUpdateReadyBody": { + "description": "Notification body when app update is ready to install", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "notifUpdateFailed": "Update Failed", + "@notifUpdateFailed": { + "description": "Notification title when app update download fails" + }, + "notifUpdateFailedBody": "Could not download update. Try again later.", + "@notifUpdateFailedBody": { + "description": "Notification body when app update download fails" + }, + "searchTracks": "Tracks", + "@searchTracks": { + "description": "Search filter label - tracks" + }, + "homeSearchHintDefault": "Paste supported URL or search...", + "@homeSearchHintDefault": { + "description": "Default placeholder for the main search field on Home" + }, + "homeSearchHintProvider": "Search with {providerName}...", + "@homeSearchHintProvider": { + "description": "Placeholder for the main search field when a provider is selected", + "placeholders": { + "providerName": { + "type": "String" + } + } + }, + "homeImportCsvTooltip": "Import playlist (CSV, M3U)", + "@homeImportCsvTooltip": { + "description": "Tooltip for importing a CSV or M3U playlist file into Home search" + }, + "homeChangeSearchProviderTooltip": "Change search provider", + "@homeChangeSearchProviderTooltip": { + "description": "Tooltip for the Home search provider picker" + }, + "actionPaste": "Paste", + "@actionPaste": { + "description": "Generic action - paste from clipboard" + }, + "tutorialSearchHint": "Paste or search...", + "@tutorialSearchHint": { + "description": "Placeholder shown in the tutorial search demo" + }, + "tutorialDownloadCompletedSemantics": "Download completed", + "@tutorialDownloadCompletedSemantics": { + "description": "Accessibility label for completed download state in tutorial demo" + }, + "tutorialDownloadInProgressSemantics": "Download in progress", + "@tutorialDownloadInProgressSemantics": { + "description": "Accessibility label for active download state in tutorial demo" + }, + "tutorialStartDownloadSemantics": "Start download", + "@tutorialStartDownloadSemantics": { + "description": "Accessibility label for idle download button in tutorial demo" + }, + "optionsEmbedMetadata": "Embed Metadata", + "@optionsEmbedMetadata": { + "description": "Settings toggle title for writing metadata into downloaded files" + }, + "optionsEmbedMetadataSubtitleOn": "Write metadata, cover art, and embedded lyrics to files", + "@optionsEmbedMetadataSubtitleOn": { + "description": "Subtitle when metadata embedding is enabled" + }, + "optionsEmbedMetadataSubtitleOff": "Disabled (advanced): skip all metadata embedding", + "@optionsEmbedMetadataSubtitleOff": { + "description": "Subtitle when metadata embedding is disabled" + }, + "trackCoverNoEmbeddedArt": "No embedded album art found", + "@trackCoverNoEmbeddedArt": { + "description": "Message shown when a track file has no embedded cover art" + }, + "trackCoverReplace": "Replace Cover", + "@trackCoverReplace": { + "description": "Button label for replacing selected cover art" + }, + "trackCoverPick": "Pick Cover", + "@trackCoverPick": { + "description": "Button label for selecting cover art" + }, + "trackCoverClearSelected": "Clear selected cover", + "@trackCoverClearSelected": { + "description": "Tooltip for clearing the newly selected cover art" + }, + "trackCoverCurrent": "Current cover", + "@trackCoverCurrent": { + "description": "Label for the currently embedded cover preview" + }, + "trackCoverSelected": "Selected cover", + "@trackCoverSelected": { + "description": "Label for the newly selected cover preview" + }, + "trackCoverReplaceNotice": "The selected cover will replace the current embedded cover when you tap Save.", + "@trackCoverReplaceNotice": { + "description": "Notice shown when a new cover has been selected but not saved yet" + }, + "trackCoverResolution": "Cover resolution", + "@trackCoverResolution": { + "description": "Label for selecting the embedded cover art resolution" + }, + "trackCoverResolutionHint": "Sets the longest edge when saved. Enlarging does not add image detail.", + "@trackCoverResolutionHint": { + "description": "Explanation below the embedded cover art resolution selector" + }, + "trackCoverResizeFailed": "The cover image could not be resized. Please try another size or image.", + "@trackCoverResizeFailed": { + "description": "Error shown when resizing cover art before saving metadata fails" + }, + "actionStop": "Stop", + "@actionStop": { + "description": "Generic action - stop" + }, + "queueFinalizingDownload": "Finalizing download", + "@queueFinalizingDownload": { + "description": "Accessibility label for a queue item that is finalizing" + }, + "queueDownloadNext": "Download next", + "@queueDownloadNext": { + "description": "Tooltip on a queued download row; moves the item to the front of the queue so the next free slot downloads it" + }, + "queueMoveUp": "Move up", + "@queueMoveUp": { + "description": "Queue item menu action - move the queued item one position earlier" + }, + "queueMoveDown": "Move down", + "@queueMoveDown": { + "description": "Queue item menu action - move the queued item one position later" + }, + "editMetadataMusicBrainzButton": "Fetch from MusicBrainz", + "@editMetadataMusicBrainzButton": { + "description": "Tag editor button that fills genre and album artist from MusicBrainz by ISRC" + }, + "editMetadataMusicBrainzFilled": "Updated from MusicBrainz", + "@editMetadataMusicBrainzFilled": { + "description": "Snackbar after MusicBrainz suggestions were applied to the tag editor fields" + }, + "editMetadataMusicBrainzNothing": "Nothing found on MusicBrainz", + "@editMetadataMusicBrainzNothing": { + "description": "Snackbar when the MusicBrainz lookup returns no data" + }, + "editMetadataMusicBrainzNeedsIsrc": "Requires an ISRC tag", + "@editMetadataMusicBrainzNeedsIsrc": { + "description": "Snackbar when the MusicBrainz lookup is tapped without an ISRC" + }, + "nowPlayingRepeatOff": "Repeat off", + "@nowPlayingRepeatOff": { + "description": "Repeat toggle tooltip when repeat is disabled" + }, + "nowPlayingRepeatAll": "Repeat all", + "@nowPlayingRepeatAll": { + "description": "Repeat toggle tooltip when the whole queue repeats" + }, + "nowPlayingRepeatOne": "Repeat one", + "@nowPlayingRepeatOne": { + "description": "Repeat toggle tooltip when the current track repeats" + }, + "queueNetworkFailedOffline": "{count} downloads failed while offline", + "@queueNetworkFailedOffline": { + "description": "Snackbar shown when connectivity returns and network-failed downloads can be retried", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueDownloadedFileMissing": "Downloaded file missing", + "@queueDownloadedFileMissing": { + "description": "Accessibility label when a downloaded file is missing from disk" + }, + "queueCheckingDownloadedFile": "Checking downloaded file...", + "@queueCheckingDownloadedFile": { + "description": "Accessibility label while the app checks whether a just-completed download has appeared at its final path yet. Not about authentication or a download session." + }, + "queueDownloadCompleted": "Download completed", + "@queueDownloadCompleted": { + "description": "Accessibility label for completed download state in queue" + }, + "queueRateLimitTitle": "Service rate limited", + "@queueRateLimitTitle": { + "description": "Title shown on a failed queue item when the download service rate limits requests" + }, + "queueRateLimitMessage": "This track may still be available. Wait a few minutes, reduce parallel downloads, then retry.", + "@queueRateLimitMessage": { + "description": "Explanation shown on a failed queue item when the download service rate limits requests" + }, + "appearanceSelectAccentColor": "Select accent color {hex}", + "@appearanceSelectAccentColor": { + "description": "Accessibility label for picking an accent color", + "placeholders": { + "hex": { + "type": "String" + } + } + }, + "logAutoScrollOn": "Auto-scroll ON", + "@logAutoScrollOn": { + "description": "Tooltip when auto-scroll is enabled on the log screen" + }, + "logAutoScrollOff": "Auto-scroll OFF", + "@logAutoScrollOff": { + "description": "Tooltip when auto-scroll is disabled on the log screen" + }, + "logCopyLogs": "Copy logs", + "@logCopyLogs": { + "description": "Tooltip for copying logs" + }, + "logClearSearch": "Clear search", + "@logClearSearch": { + "description": "Tooltip for clearing the log search field" + }, + "logIssueIspBlockingLabel": "ISP BLOCKING DETECTED", + "@logIssueIspBlockingLabel": { + "description": "Diagnostic badge label when ISP blocking is detected" + }, + "logIssueIspBlockingDescription": "Your ISP may be blocking access to download services", + "@logIssueIspBlockingDescription": { + "description": "Diagnostic badge description for ISP blocking" + }, + "logIssueIspBlockingSuggestion": "Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8", + "@logIssueIspBlockingSuggestion": { + "description": "Diagnostic badge suggestion for ISP blocking" + }, + "logIssueRateLimitedLabel": "RATE LIMITED", + "@logIssueRateLimitedLabel": { + "description": "Diagnostic badge label when the service rate limits requests" + }, + "logIssueRateLimitedDescription": "Too many requests to the service", + "@logIssueRateLimitedDescription": { + "description": "Diagnostic badge description for rate limiting" + }, + "logIssueRateLimitedSuggestion": "Wait a few minutes before trying again", + "@logIssueRateLimitedSuggestion": { + "description": "Diagnostic badge suggestion for rate limiting" + }, + "logIssueNetworkErrorLabel": "NETWORK ERROR", + "@logIssueNetworkErrorLabel": { + "description": "Diagnostic badge label for generic network errors" + }, + "logIssueNetworkErrorDescription": "Connection issues detected", + "@logIssueNetworkErrorDescription": { + "description": "Diagnostic badge description for generic network errors" + }, + "logIssueNetworkErrorSuggestion": "Check your internet connection", + "@logIssueNetworkErrorSuggestion": { + "description": "Diagnostic badge suggestion for generic network errors" + }, + "logIssueTrackNotFoundLabel": "TRACK NOT FOUND", + "@logIssueTrackNotFoundLabel": { + "description": "Diagnostic badge label when a track is unavailable" + }, + "logIssueTrackNotFoundDescription": "Some tracks could not be found on download services", + "@logIssueTrackNotFoundDescription": { + "description": "Diagnostic badge description when a track is unavailable" + }, + "logIssueTrackNotFoundSuggestion": "The track may not be available in lossless quality", + "@logIssueTrackNotFoundSuggestion": { + "description": "Diagnostic badge suggestion when a track is unavailable" + }, + "clickableLookingUpArtist": "Looking up artist...", + "@clickableLookingUpArtist": { + "description": "Snackbar shown while clickable artist metadata is being resolved" + }, + "clickableInformationUnavailable": "{type} information not available", + "@clickableInformationUnavailable": { + "description": "Snackbar shown when clickable metadata cannot open a destination", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "extensionDetailsTags": "Tags", + "@extensionDetailsTags": { + "description": "Section title for extension tags" + }, + "extensionDetailsInformation": "Information", + "@extensionDetailsInformation": { + "description": "Section title for extension metadata information" + }, + "extensionUtilityFunctions": "Utility Functions", + "@extensionUtilityFunctions": { + "description": "Capability label for utility-only extensions" + }, + "actionDismiss": "Dismiss", + "@actionDismiss": { + "description": "Generic action - dismiss" + }, + "setupChangeFolderTooltip": "Change folder", + "@setupChangeFolderTooltip": { + "description": "Tooltip for editing the selected download folder" + }, + "a11yOpenTrackByArtist": "Open track {trackName} by {artistName}", + "@a11yOpenTrackByArtist": { + "description": "Accessibility label for opening a track item", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "a11yOpenItem": "Open {itemType} {name}", + "@a11yOpenItem": { + "description": "Accessibility label for opening a generic item", + "placeholders": { + "itemType": { + "type": "String" + }, + "name": { + "type": "String" + } + } + }, + "a11yOpenItemCount": "Open {title}, {count} {count, plural, =1{item} other{items}}", + "@a11yOpenItemCount": { + "description": "Accessibility label for opening a grouped item with count", + "placeholders": { + "title": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "a11yOpenAlbumByArtistTrackCount": "Open album {albumName} by {artistName}, {trackCount} tracks", + "@a11yOpenAlbumByArtistTrackCount": { + "description": "Accessibility label for opening an album item with track count", + "placeholders": { + "albumName": { + "type": "String" + }, + "artistName": { + "type": "String" + }, + "trackCount": { + "type": "int" + } + } + }, + "a11yTrackByArtist": "{trackName} by {artistName}", + "@a11yTrackByArtist": { + "description": "Accessibility label for a queue or list track item", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "a11ySelectAlbum": "Select album {albumName}", + "@a11ySelectAlbum": { + "description": "Accessibility label for selecting an album", + "placeholders": { + "albumName": { + "type": "String" + } + } + }, + "a11yOpenAlbum": "Open album {albumName}", + "@a11yOpenAlbum": { + "description": "Accessibility label for opening an album", + "placeholders": { + "albumName": { + "type": "String" + } + } + }, + "settingsFiles": "Files & Folders", + "@settingsFiles": { + "description": "Settings menu item - file and folder settings" + }, + "settingsFilesSubtitle": "Download location, filename, folder structure", + "@settingsFilesSubtitle": { + "description": "Subtitle for files & folders settings" + }, + "settingsMetadata": "Metadata", + "@settingsMetadata": { + "description": "Settings menu item - metadata settings" + }, + "settingsMetadataSubtitle": "Cover art, tags, ReplayGain, providers", + "@settingsMetadataSubtitle": { + "description": "Subtitle for metadata settings" + }, + "settingsLyrics": "Lyrics", + "@settingsLyrics": { + "description": "Settings menu item - lyrics settings" + }, + "settingsLyricsSubtitle": "Embed, mode, providers, language options", + "@settingsLyricsSubtitle": { + "description": "Subtitle for lyrics settings" + }, + "settingsApp": "App", + "@settingsApp": { + "description": "Settings menu item - app settings" + }, + "settingsAppSubtitle": "Updates, data, extension repo, debug", + "@settingsAppSubtitle": { + "description": "Subtitle for app settings" + }, + "sectionMetadataProviders": "Providers", + "@sectionMetadataProviders": { + "description": "Settings section header for metadata providers" + }, + "sectionDuplicates": "Duplicates", + "@sectionDuplicates": { + "description": "Settings section header for deduplication" + }, + "sectionLyricsProviderOptions": "Provider Options", + "@sectionLyricsProviderOptions": { + "description": "Settings section header for per-provider lyrics options" + }, + "metadataProvidersTitle": "Metadata Provider Priority", + "@metadataProvidersTitle": { + "description": "Settings item title for metadata provider order" + }, + "metadataProvidersSubtitle": "Drag to set search and metadata source order", + "@metadataProvidersSubtitle": { + "description": "Subtitle for metadata provider priority item" + }, + "downloadDeduplication": "Skip Duplicate Downloads", + "@downloadDeduplication": { + "description": "Setting - skip tracks already in download history" + }, + "downloadDeduplicationEnabled": "Already-downloaded tracks will be skipped", + "@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" @@ -6004,99 +5746,1084 @@ "@trackOptionDownloadQualityVariant": { "description": "Track menu action to download another quality version" }, + "downloadFallbackExtensions": "Fallback Extensions", + "@downloadFallbackExtensions": { + "description": "Settings item for configuring fallback extension providers" + }, + "downloadFallbackExtensionsSubtitle": "Choose which extensions can be used as fallback", + "@downloadFallbackExtensionsSubtitle": { + "description": "Subtitle for fallback extensions item" + }, + "editMetadataFieldDateHint": "YYYY-MM-DD or YYYY", + "@editMetadataFieldDateHint": { + "description": "Hint text for the edit metadata date field" + }, + "editMetadataFieldTrackTotal": "Track Total", + "@editMetadataFieldTrackTotal": { + "description": "Label for total tracks field in the edit metadata sheet" + }, + "editMetadataFieldDiscTotal": "Disc Total", + "@editMetadataFieldDiscTotal": { + "description": "Label for total discs field in the edit metadata sheet" + }, + "editMetadataFieldComposer": "Composer", + "@editMetadataFieldComposer": { + "description": "Label for composer field in the edit metadata sheet" + }, + "editMetadataFieldComment": "Comment", + "@editMetadataFieldComment": { + "description": "Label for comment field in the edit metadata sheet" + }, + "trackAlbumType": "Release Type", + "@trackAlbumType": { + "description": "Label for an album or release type metadata value" + }, + "editMetadataFieldAlbumTypeHint": "Album, single, EP, compilation...", + "@editMetadataFieldAlbumTypeHint": { + "description": "Hint for the release type metadata field" + }, + "editMetadataFieldExplicit": "Explicit", + "@editMetadataFieldExplicit": { + "description": "Label for the explicit content metadata field" + }, + "editMetadataFieldExplicitHint": "Mark this track as containing explicit content", + "@editMetadataFieldExplicitHint": { + "description": "Description for the explicit content metadata switch" + }, + "metadataExplicitValue": "Explicit", + "@metadataExplicitValue": { + "description": "Displayed value when a track is marked explicit" + }, + "editMetadataFieldUpc": "UPC / Barcode", + "@editMetadataFieldUpc": { + "description": "Label for the release barcode metadata field" + }, + "editMetadataFieldUpcHint": "Numeric UPC, EAN, or GTIN", + "@editMetadataFieldUpcHint": { + "description": "Hint for the release barcode metadata field" + }, + "editMetadataAdvanced": "Advanced", + "@editMetadataAdvanced": { + "description": "Expandable section label for advanced metadata fields" + }, + "libraryFilterMetadataMissingTrackNumber": "Missing track number", + "@libraryFilterMetadataMissingTrackNumber": { + "description": "Filter option - items missing track number" + }, + "libraryFilterMetadataMissingDiscNumber": "Missing disc number", + "@libraryFilterMetadataMissingDiscNumber": { + "description": "Filter option - items missing disc number" + }, + "libraryFilterMetadataMissingArtist": "Missing artist", + "@libraryFilterMetadataMissingArtist": { + "description": "Filter option - items missing artist" + }, + "libraryFilterMetadataIncorrectIsrcFormat": "Incorrect ISRC format", + "@libraryFilterMetadataIncorrectIsrcFormat": { + "description": "Filter option - items with an invalid ISRC format" + }, + "libraryFilterMetadataMissingIsrc": "Missing ISRC", + "@libraryFilterMetadataMissingIsrc": { + "description": "Filter option - items without any ISRC tag" + }, + "libraryFilterMetadataMissingLabel": "Missing label", + "@libraryFilterMetadataMissingLabel": { + "description": "Filter option - items missing record label" + }, + "collectionDeletePlaylistsMessage": "Delete {count} {count, plural, =1{playlist} other{playlists}}?", + "@collectionDeletePlaylistsMessage": { + "description": "Confirmation message for deleting selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionPlaylistsDeleted": "{count} {count, plural, =1{playlist} other{playlists}} deleted", + "@collectionPlaylistsDeleted": { + "description": "Snackbar after deleting selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionAddedTracksToPlaylist": "Added {count} {count, plural, =1{track} other{tracks}} to {playlistName}", + "@collectionAddedTracksToPlaylist": { + "description": "Snackbar after adding multiple tracks to a playlist", + "placeholders": { + "count": { + "type": "int" + }, + "playlistName": { + "type": "String" + } + } + }, + "collectionAddedTracksToPlaylistWithExisting": "Added {count} {count, plural, =1{track} other{tracks}} to {playlistName} ({alreadyCount} already in playlist)", + "@collectionAddedTracksToPlaylistWithExisting": { + "description": "Snackbar after adding multiple tracks to a playlist when some were already present", + "placeholders": { + "count": { + "type": "int" + }, + "playlistName": { + "type": "String" + }, + "alreadyCount": { + "type": "int" + } + } + }, + "itemCount": "{count} {count, plural, =1{item} other{items}}", + "@itemCount": { + "description": "Generic item count label", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackReEnrichSuccessWithFailures": "Metadata re-enriched successfully ({successCount}/{total}) - Failed: {failedCount}", + "@trackReEnrichSuccessWithFailures": { + "description": "Snackbar summary after batch metadata re-enrichment finishes with failures", + "placeholders": { + "successCount": { + "type": "int" + }, + "total": { + "type": "int" + }, + "failedCount": { + "type": "int" + } + } + }, + "selectionDeleteTracksCount": "Delete {count} {count, plural, =1{track} other{tracks}}", + "@selectionDeleteTracksCount": { + "description": "Button label for deleting selected tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueDownloadSpeedStatus": "Downloading - {speed} MB/s", + "@queueDownloadSpeedStatus": { + "description": "Queue status while downloading with speed", + "placeholders": { + "speed": { + "type": "String" + } + } + }, + "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" + }, + "@queueCheckingDownloadSession": { + "description": "Queue status while the download provider's session is being checked during preparation (preparationStage 'checking_session'). This is about the provider session, not about locating a finished file." + }, + "a11ySelectTrack": "Select track", + "@a11ySelectTrack": { + "description": "Accessibility label for selecting a track" + }, + "a11yDeselectTrack": "Deselect track", + "@a11yDeselectTrack": { + "description": "Accessibility label for deselecting a track" + }, + "a11yPlayTrackByArtist": "Play {trackName} by {artistName}", + "@a11yPlayTrackByArtist": { + "description": "Accessibility label for playing a local library track", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "storeExtensionsCount": "{count} {count, plural, =1{extension} other{extensions}}", + "@storeExtensionsCount": { + "description": "Store extension result count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "storeRequiresVersion": "Requires v{version}+", + "@storeRequiresVersion": { + "description": "Store compatibility badge for minimum app version", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "actionGo": "Go", + "@actionGo": { + "description": "Generic action button label" + }, + "logIssueSummary": "Issue Summary", + "@logIssueSummary": { + "description": "Header for log issue analysis summary" + }, + "logTotalErrors": "Total errors: {count}", + "@logTotalErrors": { + "description": "Total error count in log issue analysis", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "logAffectedDomains": "Affected: {domains}", + "@logAffectedDomains": { + "description": "Affected domains in log issue analysis", + "placeholders": { + "domains": { + "type": "String" + } + } + }, + "libraryScanCancelled": "Scan cancelled", + "@libraryScanCancelled": { + "description": "Library scan status when a scan was cancelled" + }, + "libraryScanCancelledSubtitle": "You can retry the scan when ready.", + "@libraryScanCancelledSubtitle": { + "description": "Library scan status subtitle after cancellation" + }, + "libraryDownloadsHistoryExcluded": "{count} from Downloads history (excluded from list)", + "@libraryDownloadsHistoryExcluded": { + "description": "Library count note for downloaded history items excluded from the local list", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadNativeWorker": "Native download worker", + "@downloadNativeWorker": { + "description": "Setting title for Android native download worker" + }, + "downloadNativeWorkerSubtitle": "Android background service for extension downloads", + "@downloadNativeWorkerSubtitle": { + "description": "Setting subtitle for Android native download worker" + }, + "extensionServiceStatus": "Service Status", + "@extensionServiceStatus": { + "description": "Extension detail section header for service status" + }, + "extensionServiceHealth": "Service health", + "@extensionServiceHealth": { + "description": "Extension capability label for service health checks" + }, + "extensionHealthChecksConfigured": "{count} {count, plural, =1{check} other{checks}} configured", + "@extensionHealthChecksConfigured": { + "description": "Extension service health check count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionOauthConnectHint": "Tap Connect to Spotify to fill this field.", + "@extensionOauthConnectHint": { + "description": "Hint for an OAuth login link field before connecting Spotify" + }, + "extensionLastChecked": "Last checked {time}", + "@extensionLastChecked": { + "description": "Timestamp for the latest extension service health check", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "extensionRefreshStatus": "Refresh status", + "@extensionRefreshStatus": { + "description": "Tooltip for refreshing extension service health status" + }, + "extensionCustomUrlHandling": "Custom URL Handling", + "@extensionCustomUrlHandling": { + "description": "Extension detail section title for custom URL handling" + }, + "extensionCustomUrlHandlingSubtitle": "This extension can handle links from these sites", + "@extensionCustomUrlHandlingSubtitle": { + "description": "Extension detail subtitle for custom URL handling" + }, + "extensionCustomUrlHandlingShareHint": "Share links from these sites to SpotiFLAC Mobile and this extension will handle them.", + "@extensionCustomUrlHandlingShareHint": { + "description": "Extension detail hint explaining share-to-app URL handling" + }, + "extensionSettingsCount": "{count} {count, plural, =1{setting} other{settings}}", + "@extensionSettingsCount": { + "description": "Count of settings exposed by an extension quality option", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionHealthOnline": "Online", + "@extensionHealthOnline": { + "description": "Extension service health status - online" + }, + "extensionHealthDegraded": "Degraded", + "@extensionHealthDegraded": { + "description": "Extension service health status - degraded" + }, + "extensionHealthOffline": "Offline", + "@extensionHealthOffline": { + "description": "Extension service health status - offline" + }, + "extensionHealthNotConfigured": "Not configured", + "@extensionHealthNotConfigured": { + "description": "Extension service health status - not configured" + }, + "extensionHealthUnknown": "Unknown", + "@extensionHealthUnknown": { + "description": "Extension service health status - unknown" + }, + "extensionHealthRequired": "required", + "@extensionHealthRequired": { + "description": "Label for a required extension service health check" + }, + "extensionSettingNotSet": "Not set", + "@extensionSettingNotSet": { + "description": "Value shown when an extension setting has no value" + }, + "extensionActionFailed": "Action failed", + "@extensionActionFailed": { + "description": "Fallback error when an extension action fails without details" + }, + "extensionEnterValue": "Enter value", + "@extensionEnterValue": { + "description": "Hint for editing an extension setting value" + }, + "extensionHealthServiceOnline": "Service online", + "@extensionHealthServiceOnline": { + "description": "Tooltip for online extension service" + }, + "extensionHealthServiceDegraded": "Service degraded", + "@extensionHealthServiceDegraded": { + "description": "Tooltip for degraded extension service" + }, + "extensionHealthServiceOffline": "Service offline", + "@extensionHealthServiceOffline": { + "description": "Tooltip for offline extension service" + }, + "extensionHealthServiceUnknown": "Service status unknown", + "@extensionHealthServiceUnknown": { + "description": "Tooltip for unknown extension service health" + }, + "audioAnalysisStereo": "Stereo", + "@audioAnalysisStereo": { + "description": "Audio channel layout label - stereo" + }, + "audioAnalysisMono": "Mono", + "@audioAnalysisMono": { + "description": "Audio channel layout label - mono" + }, + "trackOpenInService": "Open in {serviceName}", + "@trackOpenInService": { + "description": "Button label to open a track in a named music service", + "placeholders": { + "serviceName": { + "type": "String" + } + } + }, + "trackLyricsEmbeddedSource": "Embedded", + "@trackLyricsEmbeddedSource": { + "description": "Lyrics source label for embedded lyrics" + }, + "unknownAlbum": "Unknown Album", + "@unknownAlbum": { + "description": "Fallback album name when metadata is missing" + }, + "unknownArtist": "Unknown Artist", + "@unknownArtist": { + "description": "Fallback artist name when metadata is missing" + }, + "permissionAudio": "Audio", + "@permissionAudio": { + "description": "Audio permission type label" + }, + "permissionStorage": "Storage", + "@permissionStorage": { + "description": "Storage permission type label" + }, + "permissionNotification": "Notification", + "@permissionNotification": { + "description": "Notification permission type label" + }, + "errorInvalidFolderSelected": "Invalid folder selected", + "@errorInvalidFolderSelected": { + "description": "Error when the selected folder is invalid" + }, + "storeAnyVersion": "Any", + "@storeAnyVersion": { + "description": "Store detail value when any app version is accepted" + }, + "storeCategoryMetadata": "Metadata", + "@storeCategoryMetadata": { + "description": "Store extension category - metadata" + }, + "storeCategoryDownload": "Download", + "@storeCategoryDownload": { + "description": "Store extension category - download" + }, + "storeCategoryUtility": "Utility", + "@storeCategoryUtility": { + "description": "Store extension category - utility" + }, + "storeCategoryLyrics": "Lyrics", + "@storeCategoryLyrics": { + "description": "Store extension category - lyrics" + }, + "storeCategoryIntegration": "Integration", + "@storeCategoryIntegration": { + "description": "Store extension category - integration" + }, + "artistReleases": "Releases", + "@artistReleases": { + "description": "Section header for all artist releases" + }, + "editMetadataSelectNone": "None", + "@editMetadataSelectNone": { + "description": "Button to clear selected fields for auto-fill" + }, + "queueRetryAllFailed": "Retry {count} failed", + "@queueRetryAllFailed": { + "description": "Button to retry every failed download in the queue", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "settingsSaveDownloadHistory": "Save download history", + "@settingsSaveDownloadHistory": { + "description": "Settings switch title for storing completed downloads in history" + }, + "settingsSaveDownloadHistorySubtitle": "Keep completed downloads in history and library views", + "@settingsSaveDownloadHistorySubtitle": { + "description": "Settings switch subtitle for storing completed downloads in history" + }, + "dialogDisableHistoryTitle": "Turn off download history?", + "@dialogDisableHistoryTitle": { + "description": "Confirmation dialog title shown before disabling download history" + }, + "dialogDisableHistoryMessage": "Existing history will be cleared. Downloaded files will not be deleted.", + "@dialogDisableHistoryMessage": { + "description": "Confirmation dialog message shown before disabling download history" + }, + "dialogDisableAndClear": "Turn off and clear", + "@dialogDisableAndClear": { + "description": "Confirmation action to disable download history and clear existing entries" + }, + "openInOtherServices": "Open in Other Services", + "@openInOtherServices": { + "description": "Title and tooltip for finding the current collection in other services" + }, + "shareSheetNoExtensions": "No other compatible services", + "@shareSheetNoExtensions": { + "description": "Empty state when no extensions can be searched for cross-service links" + }, + "shareSheetNotFound": "Not found", + "@shareSheetNotFound": { + "description": "Cross-service share sheet row subtitle when a service has no match" + }, + "shareSheetCopyLink": "Copy Link", + "@shareSheetCopyLink": { + "description": "Tooltip for copying a cross-service link" + }, + "shareSheetLinkCopied": "{service} link copied", + "@shareSheetLinkCopied": { + "description": "Snackbar after copying a cross-service link", + "placeholders": { + "service": {} + } + }, + "libraryPlayback": "Playback", + "@libraryPlayback": { + "description": "Section header for playback settings in library settings" + }, + "libraryExternalPlayer": "External player", + "@libraryExternalPlayer": { + "description": "Setting option to use an external music player" + }, + "libraryExternalPlayerSubtitle": "Recommended for listening, best quality, gapless playback, EQ, and wider format support", + "@libraryExternalPlayerSubtitle": { + "description": "Subtitle for external player option" + }, + "libraryBuiltInPreviewPlayer": "Built-in preview player", + "@libraryBuiltInPreviewPlayer": { + "description": "Setting option to use the built-in preview player" + }, + "libraryBuiltInPreviewPlayerSubtitle": "Quick local previews inside SpotiFLAC Mobile", + "@libraryBuiltInPreviewPlayerSubtitle": { + "description": "Subtitle for built-in preview player option" + }, + "libraryBuiltInPlayerInfo": "The built-in player is a preview tool for checking local tracks quickly. Use an external music player for actual listening.", + "@libraryBuiltInPlayerInfo": { + "description": "Info note explaining the built-in player is for previews only" + }, + "nowPlayingTitle": "Now Playing", + "@nowPlayingTitle": { + "description": "Title for the now playing screen" + }, + "nowPlayingNothingPlaying": "Nothing is playing", + "@nowPlayingNothingPlaying": { + "description": "Empty state when no track is currently playing" + }, + "nowPlayingMinimize": "Minimize", + "@nowPlayingMinimize": { + "description": "Tooltip for minimizing the now playing screen" + }, + "nowPlayingUpNext": "Up next", + "@nowPlayingUpNext": { + "description": "Title for the playback queue sheet" + }, + "nowPlayingPreviousTrack": "Previous track", + "@nowPlayingPreviousTrack": { + "description": "Tooltip for the previous-track playback control" + }, + "nowPlayingNextTrack": "Next track", + "@nowPlayingNextTrack": { + "description": "Tooltip for the next-track playback control" + }, + "nowPlayingDetails": "Details", + "@nowPlayingDetails": { + "description": "Menu item and section title for track metadata details" + }, + "nowPlayingSleepTimer": "Sleep timer", + "@nowPlayingSleepTimer": { + "description": "Menu item and sheet title for the playback sleep timer" + }, + "nowPlayingSleepTimerActive": "Ends at {time}", + "@nowPlayingSleepTimerActive": { + "description": "Active sleep timer deadline shown in the player menu", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "nowPlayingSleepTimerMinutes": "{minutes, plural, =1{1 minute} other{{minutes} minutes}}", + "@nowPlayingSleepTimerMinutes": { + "description": "Duration choice for the playback sleep timer", + "placeholders": { + "minutes": { + "type": "int" + } + } + }, + "nowPlayingSleepTimerOff": "Turn off sleep timer", + "@nowPlayingSleepTimerOff": { + "description": "Action to cancel the active playback sleep timer" + }, + "nowPlayingSleepTimerSet": "Sleep timer set for {duration}", + "@nowPlayingSleepTimerSet": { + "description": "Confirmation after setting the playback sleep timer", + "placeholders": { + "duration": { + "type": "String" + } + } + }, + "nowPlayingSleepTimerCancelled": "Sleep timer turned off", + "@nowPlayingSleepTimerCancelled": { + "description": "Confirmation after cancelling the playback sleep timer" + }, + "nowPlayingOpenInExternalPlayer": "Open in external player", + "@nowPlayingOpenInExternalPlayer": { + "description": "Menu item to open the current track in an external player" + }, + "nowPlayingTabPlayer": "Player", + "@nowPlayingTabPlayer": { + "description": "Tab label for the player view" + }, + "nowPlayingTabLyrics": "Lyrics", + "@nowPlayingTabLyrics": { + "description": "Tab label for the lyrics view" + }, + "nowPlayingNoLyrics": "No lyrics in this file", + "@nowPlayingNoLyrics": { + "description": "Empty state when the playing file has no embedded lyrics" + }, + "nowPlayingLibraryEmpty": "Your library is empty", + "@nowPlayingLibraryEmpty": { + "description": "Snackbar when shuffle library is requested but library has no tracks" + }, + "nowPlayingShuffleLibraryFailed": "Could not shuffle library: {error}", + "@nowPlayingShuffleLibraryFailed": { + "description": "Snackbar when shuffling the library fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "nowPlayingShuffleOn": "Shuffle on", + "@nowPlayingShuffleOn": { + "description": "Tooltip when shuffle mode is enabled" + }, + "nowPlayingPlayInOrder": "Play in order", + "@nowPlayingPlayInOrder": { + "description": "Tooltip when shuffle mode is disabled" + }, + "nowPlayingShuffleLibrary": "Shuffle library", + "@nowPlayingShuffleLibrary": { + "description": "Button label to shuffle and play the entire local library" + }, + "nowPlayingQueueEmpty": "Queue is empty", + "@nowPlayingQueueEmpty": { + "description": "Empty state when the playback queue has no items" + }, + "nowPlayingNoMetadata": "No metadata available", + "@nowPlayingNoMetadata": { + "description": "Empty state when track metadata cannot be loaded" + }, + "announcementUnableToOpenLink": "Unable to open link. Please try again.", + "@announcementUnableToOpenLink": { + "description": "Snackbar shown when an announcement CTA link cannot be opened" + }, + "trackConvertLosslessOutputWithCap": "Lossless output with {quality} cap", + "@trackConvertLosslessOutputWithCap": { + "description": "Hint shown when lossless conversion will cap bit depth or sample rate", + "placeholders": { + "quality": { + "type": "String" + } + } + }, + "trackConvertConfirmMessageLosslessCapped": "Convert from {sourceFormat} to {targetFormat} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original file will be deleted after conversion.", + "@trackConvertConfirmMessageLosslessCapped": { + "description": "Confirmation dialog message for capped lossless conversion of a single file", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "selectionBatchConvertConfirmMessageLosslessCapped": "Convert {count} {count, plural, =1{track} other{tracks}} to {format} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original files will be deleted after conversion.", + "@selectionBatchConvertConfirmMessageLosslessCapped": { + "description": "Confirmation dialog message for capped lossless batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "trackConvertActionLabelLossless": "{sourceFormat} → {targetFormat} ({quality})", + "@trackConvertActionLabelLossless": { + "description": "Convert button label for lossless conversion with quality cap", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "trackConvertActionLabelLossy": "{sourceFormat} → {targetFormat} @ {bitrate}", + "@trackConvertActionLabelLossy": { + "description": "Convert button label for lossy conversion", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "aboutPaxsenixSubtitle": "Lyrics proxy for Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou, and Genius", + "@aboutPaxsenixSubtitle": { + "description": "Subtitle for Paxsenix special thanks entry on the about page" + }, + "snackbarPlayingNext": "Playing next", + "@snackbarPlayingNext": { + "description": "Snackbar when a track is inserted as the next queue item" + }, + "snackbarAddedToQueueGeneric": "Added to queue", + "@snackbarAddedToQueueGeneric": { + "description": "Snackbar when a track is added to the playback queue without naming it" + }, + "selectionDeletePlaylistsCount": "Delete {count} {count, plural, =1{playlist} other{playlists}}", + "@selectionDeletePlaylistsCount": { + "description": "Button label for deleting multiple selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "actionShuffle": "Shuffle", + "@actionShuffle": { + "description": "Tooltip for shuffle playback action" + }, + "downloadPrimaryArtistOnlyOn": "Primary only: On", + "@downloadPrimaryArtistOnlyOn": { + "description": "Status label when primary-artist-only folder naming is enabled" + }, + "downloadPrimaryArtistOnlyOff": "Primary only: Off", + "@downloadPrimaryArtistOnlyOff": { + "description": "Status label when primary-artist-only folder naming is disabled" + }, + "downloadAlbumArtistMetadataPrimaryOnly": "Album Artist metadata: Primary only", + "@downloadAlbumArtistMetadataPrimaryOnly": { + "description": "Status label when album-artist folder filtering uses primary artist only" + }, + "downloadAlbumArtistMetadataFull": "Album Artist metadata: Full", + "@downloadAlbumArtistMetadataFull": { + "description": "Status label when album-artist folder filtering uses full metadata" + }, + "trackConvertOriginal": "Original", + "@trackConvertOriginal": { + "description": "Label for keeping original bit depth or sample rate during conversion" + }, + "trackConvertOriginalQuality": "Original quality", + "@trackConvertOriginalQuality": { + "description": "Label when no bit depth or sample rate cap is applied during lossless conversion" + }, + "trackConvertLosslessSuffix": "Lossless", + "@trackConvertLosslessSuffix": { + "description": "Suffix used in converted lossless quality labels" + }, + "trackConvertDithering": "Dithering", + "@trackConvertDithering": { + "description": "Section label for lossless conversion dithering options" + }, + "trackConvertResampler": "Resampler", + "@trackConvertResampler": { + "description": "Section label for lossless conversion resampler options" + }, + "trackConvertDitherNone": "None", + "@trackConvertDitherNone": { + "description": "Lossless conversion dither option with no dithering applied" + }, + "trackConvertDitherTriangular": "TPDF", + "@trackConvertDitherTriangular": { + "description": "Lossless conversion triangular probability density function dither option" + }, + "trackConvertDitherTriangularHp": "Triangular HP", + "@trackConvertDitherTriangularHp": { + "description": "Lossless conversion high-pass triangular dither option" + }, + "trackConvertResamplerSwr": "SWR", + "@trackConvertResamplerSwr": { + "description": "Lossless conversion default FFmpeg swresample resampler option" + }, + "trackConvertResamplerSoxr": "SoXr", + "@trackConvertResamplerSoxr": { + "description": "Lossless conversion SoX resampler option" + }, + "updateSeeReleaseNotes": "See release notes for details.", + "@updateSeeReleaseNotes": { + "description": "Fallback changelog text when release notes cannot be parsed" + }, + "unknownTitle": "Unknown title", + "@unknownTitle": { + "description": "Fallback track title when metadata is missing" + }, + "trackPlayNext": "Play next", + "@trackPlayNext": { + "description": "Menu action to play a track as the next queue item" + }, + "trackAddToQueue": "Add to queue", + "@trackAddToQueue": { + "description": "Menu action to add a track to the playback queue" + }, + "snackbarExtensionInstalledEnable": "{extensionName} installed. Enable it in Settings > Extensions", + "@snackbarExtensionInstalledEnable": { + "description": "Snackbar after installing an extension from the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "snackbarExtensionUpdatedVersion": "{extensionName} updated to v{version}", + "@snackbarExtensionUpdatedVersion": { + "description": "Snackbar after updating an extension from the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + }, + "version": { + "type": "String" + } + } + }, + "snackbarFailedToInstallNamed": "Failed to install {extensionName}", + "@snackbarFailedToInstallNamed": { + "description": "Snackbar when extension install fails in the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "snackbarFailedToUpdateNamed": "Failed to update {extensionName}", + "@snackbarFailedToUpdateNamed": { + "description": "Snackbar when extension update fails in the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "releaseTypeEp": "EP", + "@releaseTypeEp": { + "description": "Badge label for EP releases" + }, + "releaseTypeSingle": "Single", + "@releaseTypeSingle": { + "description": "Badge label for single releases" + }, + "trackCoverOnline": "Online cover", + "@trackCoverOnline": { + "description": "Label shown when metadata autofill downloaded cover art from the internet" + }, + "regionCountryUS": "United States", + "@regionCountryUS": { + "description": "Country name for SongLink region picker" + }, + "regionCountryGB": "United Kingdom", + "@regionCountryGB": { + "description": "Country name for SongLink region picker" + }, + "regionCountryFR": "France", + "@regionCountryFR": { + "description": "Country name for SongLink region picker" + }, + "regionCountryDE": "Germany", + "@regionCountryDE": { + "description": "Country name for SongLink region picker" + }, + "regionCountryJP": "Japan", + "@regionCountryJP": { + "description": "Country name for SongLink region picker" + }, + "regionCountryKR": "South Korea", + "@regionCountryKR": { + "description": "Country name for SongLink region picker" + }, + "regionCountryIN": "India", + "@regionCountryIN": { + "description": "Country name for SongLink region picker" + }, + "regionCountryID": "Indonesia", + "@regionCountryID": { + "description": "Country name for SongLink region picker" + }, + "regionCountryBR": "Brazil", + "@regionCountryBR": { + "description": "Country name for SongLink region picker" + }, + "regionCountryMX": "Mexico", + "@regionCountryMX": { + "description": "Country name for SongLink region picker" + }, + "regionCountryAU": "Australia", + "@regionCountryAU": { + "description": "Country name for SongLink region picker" + }, + "regionCountryCA": "Canada", + "@regionCountryCA": { + "description": "Country name for SongLink region picker" + }, + "regionCountryXK": "Kosovo", + "@regionCountryXK": { + "description": "Country name for SongLink region picker" + }, + "extensionVerificationBrowserTitle": "Verification browser", + "@extensionVerificationBrowserTitle": { + "description": "Settings option title for extension verification browser preference" + }, + "extensionVerificationBrowserSubtitleExternal": "Open challenges in the default browser first", + "@extensionVerificationBrowserSubtitleExternal": { + "description": "Subtitle when external browser is preferred for extension verification" + }, + "extensionVerificationBrowserSubtitleInApp": "Open challenges in the in-app browser first", + "@extensionVerificationBrowserSubtitleInApp": { + "description": "Subtitle when in-app browser is preferred for extension verification" + }, + "extensionVerificationBrowserExternal": "External", + "@extensionVerificationBrowserExternal": { + "description": "Chip label for external browser verification mode" + }, + "extensionVerificationBrowserInApp": "In-app", + "@extensionVerificationBrowserInApp": { + "description": "Chip label for in-app browser verification mode" + }, + "extensionVerificationUnavailable": "No verification page is available for {extension}. Retry the download to request a new challenge.", + "@extensionVerificationUnavailable": { + "description": "Shown when the app cannot retrieve a pending verification challenge", + "placeholders": { + "extension": { + "type": "String" + } + } + }, + "extensionVerificationHelpTitleManual": "Open verification manually", + "@extensionVerificationHelpTitleManual": { + "description": "Dialog title when automatic browser launch for verification fails" + }, + "extensionVerificationHelpTitleWaiting": "Verification still waiting", + "@extensionVerificationHelpTitleWaiting": { + "description": "Dialog title when verification is taking longer than expected" + }, + "extensionVerificationHelpMessageManual": "SpotiFLAC Mobile could not open the browser automatically. Open this link in your browser, or copy it manually.", + "@extensionVerificationHelpMessageManual": { + "description": "Dialog message when automatic browser launch for verification fails" + }, + "extensionVerificationHelpMessageWaiting": "If the browser did not open, or verification finished but did not return to SpotiFLAC Mobile, open this link again or copy it manually.", + "@extensionVerificationHelpMessageWaiting": { + "description": "Dialog message when verification may need manual browser help" + }, + "extensionVerificationClose": "Close", + "@extensionVerificationClose": { + "description": "Button to dismiss the extension verification help dialog" + }, + "extensionVerificationCopyLink": "Copy link", + "@extensionVerificationCopyLink": { + "description": "Button to copy the extension verification URL" + }, + "extensionVerificationLinkCopied": "Verification link copied", + "@extensionVerificationLinkCopied": { + "description": "Snackbar after copying the extension verification URL" + }, + "extensionVerificationOpenBrowser": "Open browser", + "@extensionVerificationOpenBrowser": { + "description": "Button to open the extension verification URL in a browser" + }, "settingsSearchHint": "Search settings", + "@settingsSearchHint": { + "description": "Placeholder of the search field on the Settings tab" + }, "settingsSearchNoResults": "No settings match \"{query}\"", + "@settingsSearchNoResults": { + "description": "Shown when a Settings search returns nothing", + "placeholders": { + "query": { + "type": "String" + } + } + }, "settingsGroupInterface": "Extensions & appearance", + "@settingsGroupInterface": { + "description": "Settings group covering look and feel" + }, "settingsGroupContent": "Content & metadata", + "@settingsGroupContent": { + "description": "Settings group covering the library, metadata and lyrics" + }, "settingsGroupDownloads": "Downloads & files", + "@settingsGroupDownloads": { + "description": "Settings group covering download behaviour and storage" + }, "settingsGroupSystem": "System", + "@settingsGroupSystem": { + "description": "Settings group covering app-level data, cache and logs" + }, "settingsGroupHelp": "About & support", - "collectionExportM3u": "Export as M3U8", - "collectionExportM3uDone": "Exported {exported} of {total} tracks", - "collectionExportM3uNone": "No downloaded files to export", - "collectionExportM3uFailed": "Export failed", - "trackOpenOn": "Open on...", - "trackOpenOnNoLinks": "No platform links found for this track.", - "libraryReviewDuplicates": "Review duplicates", - "libraryReviewDuplicatesSubtitle": "Find tracks stored more than once", - "duplicatesTitle": "Duplicates", - "duplicatesEmpty": "No duplicate tracks found.", - "duplicatesKeepBest": "Keep best", - "duplicatesKeepBestMessage": "Delete {count} lower-quality copies of \"{trackName}\"?", - "duplicatesDeleteCopyMessage": "Delete this copy of \"{trackName}\"?", - "downloadAutoConvert": "Auto-convert after download", - "downloadAutoConvertSubtitle": "Convert completed downloads to a smaller lossy format. The original is replaced only after conversion succeeds.", - "downloadAutoConvertFormat": "Output format", - "downloadAutoConvertFormatSubtitle": "Choose the lossy format used for newly completed downloads.", - "downloadAutoConvertBitrate": "Output quality", - "downloadAutoConvertBitrateSubtitle": "Higher bitrates preserve more detail but create larger files.", - "downloadAutoConvertMp3Subtitle": "Best compatibility across players and devices", - "downloadAutoConvertM4aSubtitle": "Efficient AAC audio in an M4A container", - "downloadAutoConvertOpusSubtitle": "Best efficiency for modern players", - "appearanceForceBlur": "Always use blur effects", - "appearanceForceBlurSubtitle": "Enable the navigation bar blur even on devices where it is off by default. May cost performance.", - "recentClearAllMessage": "Clear all recent activity? Download history and music files will not be deleted.", - "libraryAddFolder": "Add library folder", - "libraryAddFolderSubtitle": "Internal storage, SD card, SSD, or another external drive", - "librarySourceOnline": "Online", - "librarySourceOffline": "Offline. Reconnect the storage to restore these tracks", - "librarySourceDisabled": "Disabled", - "librarySourceScanCount": "{scanned} of {total} files scanned ({progress}%)", - "libraryExternalStorage": "External storage", - "libraryRemoveFolder": "Remove library folder", - "libraryRemoveFolderMessage": "Remove this folder and its indexed tracks from SpotiFLAC Mobile? Audio files on the storage will not be deleted.", - "trackReEnrichModeIsrc": "ISRC only", - "trackReEnrichModeIsrcSubtitle": "Find and add the recording identifier without changing other tags", - "trackReEnrichModeMissing": "Fill missing tags", - "trackReEnrichModeMissingSubtitle": "Keep existing values and fill only fields that are empty", - "trackReEnrichModeReplace": "Update selected tags", - "trackReEnrichModeReplaceSubtitle": "Choose which existing values may be replaced by online metadata", - "trackReEnrichFieldsTitle": "Tags to update", - "trackReEnrichReview": "Review changes", - "trackReEnrichReviewTitle": "Review metadata changes", - "trackReEnrichReviewSubtitle": "{changeCount} proposed changes across {trackCount} tracks", - "trackReEnrichNoChanges": "No metadata changes were found for the selected tracks.", - "trackReEnrichApplyChanges": "Apply changes", - "trackReEnrichRefreshOnline": "Refresh from online", - "editMetadataAutoFillSource": "Metadata source", - "editMetadataAutoFillSourceAutomatic": "Automatic (provider priority)", - "editMetadataAutoFillFind": "Find metadata", - "editMetadataAutoFillPreview": "Data from {source}", - "editMetadataAutoFillCoverAvailable": "Cover artwork available", - "editMetadataAutoFillApply": "Apply selected data", - "editMetadataAutoFillDoneFromSource": "Filled {count} {count, plural, =1{field} other{fields}} from {source}", - "queuePlaylistCount": "{count, plural, =1{1 playlist} other{{count} playlists}}", - "queueEmptyPlaylistsSubtitle": "Create a playlist to organize your tracks", - "libraryDefaultView": "Default view", - "libraryDefaultViewLastUsed": "Last used", - "audioAnalysisCutoffNotDetected": "Not detected", - "queueCancelledTitle": "Download cancelled", - "queueCancelledMessage": "This download was cancelled. Retry it or remove it from the queue.", - "trackCoverResolution": "Cover resolution", - "trackCoverResolutionHint": "Sets the longest edge when saved. Enlarging does not add image detail.", - "trackCoverResizeFailed": "The cover image could not be resized. Please try another size or image.", - "queueDownloadNext": "Download next", - "queueMoveUp": "Move up", - "queueMoveDown": "Move down", - "editMetadataMusicBrainzButton": "Fetch from MusicBrainz", - "editMetadataMusicBrainzFilled": "Updated from MusicBrainz", - "editMetadataMusicBrainzNothing": "Nothing found on MusicBrainz", - "editMetadataMusicBrainzNeedsIsrc": "Requires an ISRC tag", - "nowPlayingRepeatOff": "Repeat off", - "nowPlayingRepeatAll": "Repeat all", - "nowPlayingRepeatOne": "Repeat one", - "queueNetworkFailedOffline": "{count} downloads failed while offline", - "trackAlbumType": "Release Type", - "editMetadataFieldAlbumTypeHint": "Album, single, EP, compilation...", - "editMetadataFieldExplicit": "Explicit", - "editMetadataFieldExplicitHint": "Mark this track as containing explicit content", - "metadataExplicitValue": "Explicit", - "editMetadataFieldUpc": "UPC / Barcode", - "editMetadataFieldUpcHint": "Numeric UPC, EAN, or GTIN", - "libraryFilterMetadataMissingIsrc": "Missing ISRC" + "@settingsGroupHelp": { + "description": "Settings group covering the about page and donations" + }, + "libraryFilterMetadataMissingLyrics": "Missing lyrics", + "@libraryFilterMetadataMissingLyrics": { + "description": "Filter option for tracks without embedded or sidecar lyrics" + }, + "trackOptionCopyTrackName": "Copy track name", + "@trackOptionCopyTrackName": { + "description": "Track menu action that copies the track title" + }, + "trackOptionCopyArtist": "Copy artist", + "@trackOptionCopyArtist": { + "description": "Track menu action that copies the artist name" + }, + "trackOptionCopyTrackAndArtist": "Copy track and artist", + "@trackOptionCopyTrackAndArtist": { + "description": "Track menu action that copies the track title and artist" + }, + "metadataCopyValue": "Copy value", + "@metadataCopyValue": { + "description": "Metadata menu action that copies only the selected value" + }, + "metadataCopyField": "Copy field and value", + "@metadataCopyField": { + "description": "Metadata menu action that copies the selected key and value" + }, + "mornyeShowTabs": "Show tabs", + "mornyeSearch": "Search", + "mornyeContinuePlaying": "Continue Playing", + "metadataCopyAll": "Copy all metadata", + "@metadataCopyAll": { + "description": "Metadata menu action that copies every visible key and value" + }, + "optionsEmbeddedCoverSize": "Embedded Cover Size", + "@optionsEmbeddedCoverSize": { + "description": "Metadata setting that limits downloaded artwork resolution before it is embedded" + }, + "optionsEmbeddedCoverSizeDescription": "Downscale remotely downloaded cover art before embedding it. Images already within the limit are kept unchanged.", + "@optionsEmbeddedCoverSizeDescription": { + "description": "Description shown in the embedded cover size picker" + }, + "mornyeFavorite": "Favorite", + "mornyeGoToArtist": "Go to Artist", + "@mornyeFavorite": { + "description": "Compact context menu action that adds a track to Loved" + }, + "mornyeFavorited": "Favorited", + "@mornyeFavorited": { + "description": "Selected state of the compact favorite action" + }, + "autoMixDescription": "Blend songs with beat matching and pitch-preserving tempo adjustment. Uses crossfade when beats cannot be matched.", + "autoMixOn": "AutoMix on", + "autoMixOff": "AutoMix off", + "profileTitle": "Profile", + "profileSetUp": "Set up your profile", + "profileEdit": "Edit name and photo", + "backupIncludesProfile": "Includes your profile name and photo", + "profileName": "Name", + "profileNameHint": "Your name", + "profileChangePhoto": "Choose photo", + "profileRemovePhoto": "Remove photo", + "profilePhotoError": "Choose a valid image smaller than 20 MB.", + "profileSaveError": "Could not save your profile. Please try again.", + "optionsEmbeddedCoverSizeOriginal": "Original resolution", + "@optionsEmbeddedCoverSizeOriginal": { + "description": "Option that preserves the provider artwork at its original resolution" + } } diff --git a/lib/l10n/arb/app_ko.arb b/lib/l10n/arb/app_ko.arb index 1ae0153b..8349dd13 100644 --- a/lib/l10n/arb/app_ko.arb +++ b/lib/l10n/arb/app_ko.arb @@ -1,4 +1,48 @@ { + "upgradeIntroWelcome": "SpotiFLAC Mobile 5.0\n에 오신 것을 환영 합니다", + "upgradeIntroThemeTitle": "나만의 스타일로\n꾸며보세요", + "upgradeIntroThemeBody": "스타일을 선택하세요. 선택한 스타일은 즉시 적용되며, 나중에 디자인 설정에서 변경할 수 있습니다", + "upgradeIntroThemeMaterialBody": "Material 디자인 컨트롤과 선택한 강조 색상이 적용된 익숙한 레이아웃", + "upgradeIntroThemeMornyeBody": "글래스 스타일의 하단바, 새롭게 디자인된 라이브러리, 그리고 몰입감 있는 플레이어", + "upgradeIntroRustTitle": "Rust로 제작된\n새로운 엔진", + "upgradeIntroRustBody": "5.0 버전에서는 앱의 백엔드가 Go에서 Rust로 변경되었습니다. 이는 여러분이 매일 사용하는 화면 뒤에서 작동하는 핵심 엔진입니다", + "upgradeIntroRustEngineTitle": "화면 뒤에서 작동", + "upgradeIntroRustEngineBody": "Rust는 Android와 iOS에서 다운로드, 오디오 메타데이터, 라이브러리 검색, 확장 기능 런타임을 처리합니다", + "upgradeIntroRustMemoryTitle": "메모리를 더욱 신중하게 사용", + "upgradeIntroRustMemoryBody": "버퍼를 재사용하고 데이터 복사 횟수를 줄여, 아트워크와 확장 기능 데이터를 처리할 때 발생하는 임시 메모리 할당을 줄였습니다", + "upgradeIntroRustKeepTitle": "음악을 그대로 유지", + "upgradeIntroRustKeepBody": "컬렉션을 다시 다운로드할 필요가 없습니다. 저장된 음악과 설정이 그대로 유지되며, 새로 설정할 필요도 없습니다", + "upgradeIntroWelcomeBody": "변경된 내용과 해당 기능을 찾을 수 있는 위치를 간단히 확인해 보세요", + "upgradeIntroMornyeBody": "플레이어, 가사 및 하단바 화면이 새로운 모습으로 바뀌었습니다", + "upgradeIntroLibrarySummary": "재생목록, 아티스트 또는 앨범별로 음악을 탐색할 수 있습니다", + "upgradeIntroRepoSummary": "확장 기능을 통해 음악 소스와 제공자를 선택할 수 있습니다", + "upgradeIntroLibraryTitle": "라이브러리를\n알아보세요", + "upgradeIntroLibraryBody": "Mornye에서는 카테고리별로 음악을 탐색하거나, 최근 추가됨에서 앨범을 찾을 수 있습니다", + "upgradeIntroDownloadsBody": "오른쪽 상단의 다운로드에서 일시정지하거나 다시 시도할 수 있습니다. 다운로드가 완료된 음악은 최근 추가됨으로 이동합니다", + "upgradeIntroSearchBody": "여기에서 저장된 음악을 검색할 수 있습니다. 별도의 검색 탭에서는 확장 기능을 통해 제공되는 음악까지 검색합니다", + "upgradeIntroPlayerTitle": "플레이어를\n설정하세요", + "upgradeIntroPlayerBody": "테마와 재생 옵션은 언제든지 변경할 수 있습니다. 여기에서 해당 설정을 찾을 수 있습니다", + "upgradeIntroAppearanceBody": "'설정 → 디자인'에서 테마를 변경할 수 있습니다. Mornye에서는 아래로 스크롤하면 탐색 메뉴가 축소되고, 위로 스크롤하면 다시 확장됩니다", + "upgradeIntroAutoMixBody": "트랙 간 템포와 비트를 맞춥니다. '설정 → 로컬 라이브러리 → 재생'에서 활성화하세요. 기본적으로 비활성화되어 있습니다", + "upgradeIntroSettingsBody": "Mornye에서 홈 화면의 프로필을 탭하면 설정을 열어 이름과 사진을 수정할 수 있습니다", + "upgradeIntroSkip": "건너뛰기", + "upgradeIntroContinue": "계속", + "upgradeIntroDone": "듣기 시작", + "upgradeIntroReplay": "5.0의 새로운 기능", + "cacheMotionArtwork": "오프라인 모션 커버", + "cacheMotionArtworkDesc": "앨범 동영상은 다운로드할 때 함께 저장됩니다. 동영상을 삭제해도 음악 파일과 정적 앨범 커버는 그대로 유지됩니다", + "nowPlayingVolume": "볼륨", + "@nowPlayingVolume": { + "description": "System volume control label in the Mornye player" + }, + "appearanceStyle": "앱 스타일", + "@appearanceStyle": { + "description": "Appearance section for choosing the app visual style" + }, + "discordRichPresence": "디스코드 리치 프레즌스", + "discordPresenceDescription": "내부 플레이어에서 재생 중인 트랙을 디스코드에 공유합니다. 디스코드가 설치되어 있고 로그인되어 있어야 합니다", + "discordPresenceMissing": "디스코드를 설치하고 로그인한 다음 이 설정을 비활성화했다가 다시 활성화하세요", + "discordPresenceUnavailable": "이 빌드 또는 이 기기에서는 디스코드 리치 프레즌스를 사용할 수 없습니다", "@@locale": "ko", "@@last_modified": "2026-04-28", "appName": "SpotiFLAC Mobile", @@ -25,7 +69,7 @@ "@homeTitle": { "description": "Home screen title" }, - "homeSubtitle": "지원되는 URL을 붙여넣거나, 이름으로 검색하세요", + "homeSubtitle": "지원 URL 붙여넣기 또는 이름으로 검색", "@homeSubtitle": { "description": "Subtitle shown below search box" }, @@ -57,6 +101,11 @@ "@historyFilterSingles": { "description": "Filter chip - show singles only" }, + "libraryRecentlyAdded": "최근 추가됨", + "libraryDownloads": "다운로드", + "libraryNoActiveDownloads": "활성화된 다운로드가 없음", + "librarySearchHint": "라이브러리 검색", + "libraryEmptyCollection": "음악이 여기에 표시됩니다", "historySearchHint": "기록 검색...", "@historySearchHint": { "description": "Search bar placeholder in history" @@ -202,7 +251,7 @@ "@trackReplayGainScanning": { "description": "Snackbar/progress message while scanning ReplayGain for a single track" }, - "trackReplayGainSuccess": "리플레이게인 태그가 추가됨", + "trackReplayGainSuccess": "리플레이게인 태그 추가됨", "@trackReplayGainSuccess": { "description": "Snackbar message after ReplayGain tags written for a single track" }, @@ -237,6 +286,7 @@ "description": "Progress dialog title while batch scanning ReplayGain" }, "replayGainBatchSuccess": "{total} 개의 트랙 중 {success} 개에 리플레이게인이 추가됨", + "replayGainUnsupportedDecoder": "일부 트랙은 리플레이게인 디코더에서 지원하지 않는 오디오 코덱을 사용하기 때문에 분석할 수 없습니다. 해당 파일은 변경되지 않았습니다", "@replayGainBatchSuccess": { "description": "Snackbar after batch ReplayGain completes", "placeholders": { @@ -433,7 +483,7 @@ "@aboutTelegramChannelSubtitle": { "description": "Subtitle for Telegram channel" }, - "aboutTelegramChat": "텔레그램 커뮤니티", + "aboutTelegramChat": "텔레그램 그룹", "@aboutTelegramChat": { "description": "Link to Telegram chat group" }, @@ -461,6 +511,18 @@ "@aboutSachinsenalDesc": { "description": "Credit description for sachinsenal0x64" }, + "aboutUnituneDesc": "Flaze가 개발한 오픈소스 음악 링크 확인 도구로, 플랫폼 간 대체 매칭에 사용됩니다", + "@aboutUnituneDesc": { + "description": "Credit for the UniTune resolver" + }, + "aboutMusicBrainzDesc": "MetaBrainz와 커뮤니티가 관리하는 오픈 음악 데이터베이스로, 음원 간 상호 참조 정보를 기록하는데 사용됩니다", + "@aboutMusicBrainzDesc": { + "description": "Credit for the MusicBrainz database" + }, + "aboutSquiglyDesc": "Liam Macmillan이 개발한 범용 음악 링크 서비스로, 플랫폼 간 링크 확인을 위한 최종 대체 수단으로 사용됩니다", + "@aboutSquiglyDesc": { + "description": "Credit for the Squigly resolver" + }, "aboutAppDescription": "음악 메타데이터를 검색하고, 확장 기능을 관리하고, 라이브러리를 정리하세요", "@aboutAppDescription": { "description": "App description in header card" @@ -507,7 +569,7 @@ "@trackMetadataDelete": { "description": "Action button - delete track" }, - "setupGrantPermission": "권한을 부여해 주세요", + "setupGrantPermission": "권한 부여", "@setupGrantPermission": { "description": "Button to request permission" }, @@ -790,6 +852,95 @@ } } }, + "collectionExportM3u": "M3U8로 내보내기", + "@collectionExportM3u": { + "description": "Tooltip on the collection screen action that exports the track list as an M3U8 playlist file" + }, + "collectionExportM3uDone": "{total} 개의 트랙 중 {exported} 개 내보내기 완료", + "@collectionExportM3uDone": { + "description": "Snackbar after M3U8 export; tracks without a local file are not exported", + "placeholders": { + "exported": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "collectionExportM3uNone": "내보낼 다운로드된 파일이 없음", + "@collectionExportM3uNone": { + "description": "Snackbar when an M3U8 export finds no local files" + }, + "collectionExportM3uFailed": "내보내기 실패", + "@collectionExportM3uFailed": { + "description": "Snackbar when writing or sharing the M3U8 export fails" + }, + "trackOpenOn": "음원 플랫폼에서 열기", + "@trackOpenOn": { + "description": "Track option and sheet title listing streaming platforms where the track can be opened" + }, + "trackOpenOnNoLinks": "이 트랙에 대한 플랫폼 링크를 찾을 수 없습니다", + "@trackOpenOnNoLinks": { + "description": "Shown in the Open on sheet when song.link returns no links" + }, + "libraryReviewDuplicates": "중복된 트랙 보기", + "@libraryReviewDuplicates": { + "description": "Library settings row opening the duplicate review sheet" + }, + "libraryReviewDuplicatesSubtitle": "중복 저장된 트랙 찾기", + "@libraryReviewDuplicatesSubtitle": { + "description": "Subtitle for the duplicate review settings row" + }, + "duplicatesTitle": "중복", + "@duplicatesTitle": { + "description": "Title of the duplicate review sheet" + }, + "duplicatesEmpty": "중복된 트랙이 없습니다", + "@duplicatesEmpty": { + "description": "Shown when the duplicate review sheet finds nothing" + }, + "duplicatesKeepBest": "최고 음질 선택", + "@duplicatesKeepBest": { + "description": "Button that deletes all but the highest-quality copy in a duplicate group" + }, + "duplicatesKeepBestAll": "모두에 대해 최상의 파일 유지", + "@duplicatesKeepBestAll": { + "description": "Button that keeps the highest-quality copy in every duplicate group and deletes the rest" + }, + "duplicatesKeepBestAllMessage": "{groupCount} 개의 {groupCount, plural, =1{트랙} other{트랙}} 중 가장 음질이 좋은 복사본을 유지하고, {count} 개의 음질이 낮은 {count, plural, =1{복사본} other{복사본}}을 삭제하시겠습니까?\n\n삭제된 파일은 저장소에서 제거됩니다", + "@duplicatesKeepBestAllMessage": { + "description": "Confirmation message for keeping the best copy across every duplicate group", + "placeholders": { + "count": { + "type": "int" + }, + "groupCount": { + "type": "int" + } + } + }, + "duplicatesKeepBestMessage": "\"{trackName}\"의 {count} 개의 저음질 복사본을 삭제하시겠습니까?", + "@duplicatesKeepBestMessage": { + "description": "Confirmation message for the keep-best action", + "placeholders": { + "count": { + "type": "int" + }, + "trackName": { + "type": "String" + } + } + }, + "duplicatesDeleteCopyMessage": "\"{trackName}\"의 복사본을 삭제하시겠습니까?", + "@duplicatesDeleteCopyMessage": { + "description": "Confirmation message for deleting one duplicate copy", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, "@dialogImportPlaylistMessage": { "description": "Dialog message - import playlist confirmation", "placeholders": { @@ -1459,7 +1610,7 @@ "@trackOpenInSpotify": { "description": "Action - open track in Spotify app" }, - "trackTrackName": "트랙 이름", + "trackTrackName": "트랙 제목", "@trackTrackName": { "description": "Metadata label - track title" }, @@ -1491,6 +1642,26 @@ "@trackAudioQuality": { "description": "Metadata label - audio quality" }, + "trackReplayGainTrackGain": "리플레이게인 트랙 게인", + "@trackReplayGainTrackGain": { + "description": "Metadata label - ReplayGain track gain" + }, + "trackReplayGainTrackPeak": "리플레이게인 트랙 피크", + "@trackReplayGainTrackPeak": { + "description": "Metadata label - ReplayGain track peak" + }, + "trackReplayGainAlbumGain": "리플레이게인 앨범 게인", + "@trackReplayGainAlbumGain": { + "description": "Metadata label - ReplayGain album gain" + }, + "trackReplayGainAlbumPeak": "리플레이게인 앨범 피크", + "@trackReplayGainAlbumPeak": { + "description": "Metadata label - ReplayGain album peak" + }, + "libraryQualityLabelFileFormat": "파일 형식", + "@libraryQualityLabelFileFormat": { + "description": "Library audio quality label mode that shows the detected file format" + }, "trackReleaseDate": "발매일자", "@trackReleaseDate": { "description": "Metadata label - release date" @@ -1524,11 +1695,11 @@ } } }, - "trackLyricsNotAvailable": "이 트랙의 가사를 사용할 수 없습니다", + "trackLyricsNotAvailable": "이 트랙의 가사를 사용할 수 없음", "@trackLyricsNotAvailable": { "description": "Message when lyrics not found" }, - "trackLyricsNotInFile": "이 파일에서 가사를 찾을 수 없습니다", + "trackLyricsNotInFile": "이 파일에서 가사를 찾을 수 없음", "@trackLyricsNotInFile": { "description": "Message when no embedded lyrics in audio file" }, @@ -1790,7 +1961,7 @@ "@extensionsInstallButton": { "description": "Button to install extension from file" }, - "extensionsInfoTip": "확장 기능은 새 메타데이터와 다운로드 제공자를 추가할 수 있습니다. 신뢰할 수 있는 출처의 확장 기능만 설치하세요", + "extensionsInfoTip": "확장 기능은 새 메타데이터와 다운로드 제공자를 추가할 수 있습니다. 신뢰할 수 있는 확장 기능만 설치하세요", "@extensionsInfoTip": { "description": "Security warning about extensions" }, @@ -1906,6 +2077,42 @@ "@downloadLossyFormat": { "description": "Setting title to pick output format for lossy downloads" }, + "downloadAutoConvert": "다운로드 후 자동 변환", + "@downloadAutoConvert": { + "description": "Toggle for automatic post-download audio conversion" + }, + "downloadAutoConvertSubtitle": "다운로드가 완료되면 더 작은 손실 압축 형식으로 변환합니다. 원본은 변환이 성공한 후에만 교체됩니다", + "@downloadAutoConvertSubtitle": { + "description": "Explanation of safe automatic post-download conversion" + }, + "downloadAutoConvertFormat": "출력 형식", + "@downloadAutoConvertFormat": { + "description": "Automatic conversion output format setting" + }, + "downloadAutoConvertFormatSubtitle": "새로 완료된 다운로드에 사용되는 손실 압축 형식을 선택하세요", + "@downloadAutoConvertFormatSubtitle": { + "description": "Automatic conversion format picker explanation" + }, + "downloadAutoConvertBitrate": "출력 음질", + "@downloadAutoConvertBitrate": { + "description": "Automatic conversion bitrate setting" + }, + "downloadAutoConvertBitrateSubtitle": "비트 전송률이 높을수록 더 많은 디테일을 보존하지만 파일 크기가 커집니다", + "@downloadAutoConvertBitrateSubtitle": { + "description": "Automatic conversion bitrate picker explanation" + }, + "downloadAutoConvertMp3Subtitle": "플레이어 및 기기 전반에 걸쳐 최상의 호환성", + "@downloadAutoConvertMp3Subtitle": { + "description": "MP3 automatic conversion option description" + }, + "downloadAutoConvertM4aSubtitle": "M4A 컨테이너의 효율적인 AAC 오디오", + "@downloadAutoConvertM4aSubtitle": { + "description": "M4A AAC automatic conversion option description" + }, + "downloadAutoConvertOpusSubtitle": "최신 플레이어에 최적화된 효율성", + "@downloadAutoConvertOpusSubtitle": { + "description": "Opus automatic conversion option description" + }, "downloadLossy320Format": "손실 압축 320kbps 형식", "@downloadLossy320Format": { "description": "Title of the lossy format picker bottom sheet" @@ -2006,6 +2213,14 @@ "@appearanceHeroAnimationsSubtitle": { "description": "Subtitle for the Hero animations toggle" }, + "appearanceForceBlur": "항상 블러 효과 사용", + "@appearanceForceBlur": { + "description": "Toggle that forces backdrop blur on even when the device profile disabled it" + }, + "appearanceForceBlurSubtitle": "기본적으로 비활성화된 기기에서도 하단바 블러 효과를 활성화합니다. 성능이 저하될 수 있습니다", + "@appearanceForceBlurSubtitle": { + "description": "Subtitle for the force-blur toggle" + }, "queueClearAll": "모두 지우기", "@queueClearAll": { "description": "Button - clear all queue items" @@ -2176,6 +2391,10 @@ "@recentEmpty": { "description": "Empty state text for recent access list" }, + "recentClearAllMessage": "최근 활동을 모두 지우시겠습니까? 다운로드 기록 및 음악 파일은 삭제되지 않습니다", + "@recentClearAllMessage": { + "description": "Confirmation message before clearing all recent activity" + }, "recentShowAllDownloads": "모든 다운로드 표시", "@recentShowAllDownloads": { "description": "Button label to unhide hidden downloads in recent access" @@ -2376,6 +2595,53 @@ "@libraryFolderHint": { "description": "Placeholder when no folder selected" }, + "libraryAddFolder": "라이브러리 폴더 추가", + "@libraryAddFolder": { + "description": "Action to add another local library source" + }, + "libraryAddFolderSubtitle": "내부 저장소, SD 카드, SSD 또는 다른 외부 드라이브", + "@libraryAddFolderSubtitle": { + "description": "Supported storage locations for local library sources" + }, + "librarySourceOnline": "온라인", + "@librarySourceOnline": { + "description": "Library source is connected and accessible" + }, + "librarySourceOffline": "오프라인. 이 트랙을 복원하려면 저장소를 다시 연결하세요", + "@librarySourceOffline": { + "description": "Library source is temporarily disconnected" + }, + "librarySourceDisabled": "비활성화됨", + "@librarySourceDisabled": { + "description": "Library source has been disabled by the user" + }, + "librarySourceScanCount": "{total} 개의 파일 중 {scanned} 개 스캔 완료 ({progress}%)", + "@librarySourceScanCount": { + "description": "Live progress for one library folder scan", + "placeholders": { + "scanned": { + "type": "int" + }, + "total": { + "type": "int" + }, + "progress": { + "type": "String" + } + } + }, + "libraryExternalStorage": "외부 저장소", + "@libraryExternalStorage": { + "description": "Label for a removable or external library source" + }, + "libraryRemoveFolder": "라이브러리 폴더 제거", + "@libraryRemoveFolder": { + "description": "Action to remove one indexed library source" + }, + "libraryRemoveFolderMessage": "SpotiFLAC Mobile에서 이 폴더와 색인된 트랙을 제거하시겠습니까? 저장소의 오디오 파일은 삭제되지 않습니다", + "@libraryRemoveFolderMessage": { + "description": "Confirmation shown before removing a library source" + }, "libraryShowDuplicateIndicator": "중복 표시기 표시", "@libraryShowDuplicateIndicator": { "description": "Toggle for duplicate indicator in search" @@ -2666,7 +2932,7 @@ } } }, - "tutorialWelcomeTitle": "SpotiFLAC Mobile에 어서오세요!", + "tutorialWelcomeTitle": "SpotiFLAC Mobile에 오신 것을 환영합니다!", "@tutorialWelcomeTitle": { "description": "Tutorial welcome page title" }, @@ -2791,7 +3057,7 @@ } } }, - "cleanupOrphanedDownloadsNone": "불필요한 항목이 없습니다", + "cleanupOrphanedDownloadsNone": "불필요한 항목이 없음", "@cleanupOrphanedDownloadsNone": { "description": "Snackbar when no orphans found" }, @@ -3004,6 +3270,10 @@ "@trackReEnrichOnlineSubtitle": { "description": "Subtitle for re-enrich metadata action for local items" }, + "trackReEnrichBatchSubtitle": "온라인 업데이트 또는 수동 업데이트를 선택한 다음, 변경 사항을 모두 검토한 후 적용하세요", + "@trackReEnrichBatchSubtitle": { + "description": "Subtitle for batch metadata update choices" + }, "trackReEnrichFieldCover": "앨범 커버", "@trackReEnrichFieldCover": { "description": "Checkbox label for cover art field in re-enrich" @@ -3032,6 +3302,82 @@ "@trackReEnrichSelectAll": { "description": "Select all fields checkbox in re-enrich" }, + "trackReEnrichModeIsrc": "ISRC만", + "@trackReEnrichModeIsrc": { + "description": "Batch metadata mode that only writes ISRC" + }, + "trackReEnrichModeIsrcSubtitle": "다른 태그를 변경하지 않고 녹화 식별자를 찾아 추가합니다", + "@trackReEnrichModeIsrcSubtitle": { + "description": "Explanation for the ISRC-only batch metadata mode" + }, + "trackReEnrichModeMissing": "누락된 태그 채우기", + "@trackReEnrichModeMissing": { + "description": "Batch metadata mode that fills only empty tags" + }, + "trackReEnrichModeMissingSubtitle": "기존 값을 유지하고 비어 있는 필드만 채웁니다", + "@trackReEnrichModeMissingSubtitle": { + "description": "Explanation for the fill-missing batch metadata mode" + }, + "trackReEnrichModeReplace": "선택된 태그 업데이트", + "@trackReEnrichModeReplace": { + "description": "Batch metadata mode that replaces selected tag groups" + }, + "trackReEnrichModeReplaceSubtitle": "온라인 메타데이터로 대체할 기존 값을 선택하세요", + "@trackReEnrichModeReplaceSubtitle": { + "description": "Explanation for the selected-tag batch metadata mode" + }, + "trackReEnrichModeManual": "공통 값 설정", + "@trackReEnrichModeManual": { + "description": "Batch metadata mode that applies shared values to every selected track" + }, + "trackReEnrichModeManualSubtitle": "선택한 모든 트랙에 동일한 값 적용", + "@trackReEnrichModeManualSubtitle": { + "description": "Explanation for the manual shared-value batch metadata mode" + }, + "trackReEnrichManualFieldsTitle": "적용할 값", + "@trackReEnrichManualFieldsTitle": { + "description": "Heading above manual batch metadata inputs" + }, + "trackReEnrichManualHint": "현재 값을 유지하려면 필드를 비워 두세요. 트랙 제목, 번호 및 ISRC는 변경되지 않습니다", + "@trackReEnrichManualHint": { + "description": "Safety explanation for manual batch metadata inputs" + }, + "trackReEnrichFieldsTitle": "업데이트할 태그", + "@trackReEnrichFieldsTitle": { + "description": "Heading above batch re-enrich field checkboxes" + }, + "trackReEnrichReview": "변경 사항 검토", + "@trackReEnrichReview": { + "description": "Button that searches metadata and opens the batch change review" + }, + "trackReEnrichReviewTitle": "메타데이터 변경 사항 검토", + "@trackReEnrichReviewTitle": { + "description": "Title of the batch metadata review sheet" + }, + "trackReEnrichReviewSubtitle": "{trackCount} 개의 트랙에 걸쳐 제안된 {changeCount} 개의 변경 사항", + "@trackReEnrichReviewSubtitle": { + "description": "Summary shown above proposed batch metadata changes", + "placeholders": { + "changeCount": { + "type": "int" + }, + "trackCount": { + "type": "int" + } + } + }, + "trackReEnrichNoChanges": "선택한 트랙에 대한 메타데이터 변경 사항이 없습니다", + "@trackReEnrichNoChanges": { + "description": "Message when batch metadata preview has no proposed changes" + }, + "trackReEnrichApplyChanges": "변경 사항 적용", + "@trackReEnrichApplyChanges": { + "description": "Confirmation button in the batch metadata review sheet" + }, + "trackReEnrichRefreshOnline": "온라인에서 새로고침", + "@trackReEnrichRefreshOnline": { + "description": "Proposed value when lyrics will be refreshed during re-enrich" + }, "trackEditMetadata": "메타데이터 편집", "@trackEditMetadata": { "description": "Menu action - edit embedded metadata" @@ -3066,7 +3412,15 @@ "@trackReEnrichSearching": { "description": "Snackbar while searching metadata from internet for local items" }, + "trackReEnrichPreparing": "메타데이터 변경 준비 중...", + "@trackReEnrichPreparing": { + "description": "Progress message while preparing manual batch metadata changes" + }, "trackReEnrichSuccess": "메타데이터 재구성 성공", + "trackReEnrichMetadataSaved": "메타데이터 저장됨", + "trackReEnrichLyricsUpdated": "가사 업데이트됨", + "trackReEnrichLyricsPreserved": "새 가사가 없습니다; 기존 가사가 유지됩니다", + "trackReEnrichLyricsDisabled": "가사가 업데이트되지 않았습니다. 설정에서 가사 다운로드가 비활성화되어 있습니다", "@trackReEnrichSuccess": { "description": "Snackbar after successful re-enrichment" }, @@ -3272,7 +3626,7 @@ "@cueSplitFailed": { "description": "Snackbar when CUE split fails" }, - "cueSplitNoAudioFile": "이 CUE 시트에 대한 오디오 파일을 찾을 수 없습니다", + "cueSplitNoAudioFile": "이 CUE 시트에 대한 오디오 파일을 찾을 수 없음", "@cueSplitNoAudioFile": { "description": "Error when CUE audio file is missing" }, @@ -3582,7 +3936,7 @@ } } }, - "downloadedAlbumDownloadedCount": "{count} 개 다운로드됨", + "downloadedAlbumDownloadedCount": "{count} 개의 트랙 다운로드됨", "@downloadedAlbumDownloadedCount": { "description": "Downloaded tracks count badge", "placeholders": { @@ -3657,7 +4011,7 @@ "@lyricsProviderAppleMusicDesc": { "description": "Description for Apple Music provider" }, - "lyricsProviderQqMusicDesc": "QQ Music (중국 노래에 적합, 프록시 경유)", + "lyricsProviderQqMusicDesc": "QQ Music (중국 노래에 적합, 직접 API)", "@lyricsProviderQqMusicDesc": { "description": "Description for QQ Music provider" }, @@ -3769,6 +4123,14 @@ "@backupContentsTitle": { "description": "Header above the list summarizing what the backup contains" }, + "backupSettingsOnly": "설정 만", + "backupSelectHistory": "다운로드 기록", + "backupSelectCollections": "라이브러리 컬렉션", + "backupSelectCollectionsDescription": "좋아요 표시한 음악, 위시리스트, 즐겨찾는 아티스트, 재생목록 및 재생목록 커버", + "backupSelectExtensions": "확장 기능 및 설정", + "backupSelectedExportDescription": "선택한 카테고리를 백업 파일에 저장합니다. 오디오 파일은 포함되지 않습니다", + "backupSelectAtLeastOne": "백업을 생성하려면 최소 하나 이상의 카테고리를 선택하세요", + "backupSelectedRestoreMessage": "아래 나열된 카테고리만 복원됩니다. 이 백업에 포함되지 않은 카테고리는 변경되지 않습니다. 복원하면 기존 데이터가 덮어쓰여질 수 있으며 되돌릴 수 없습니다", "backupContentsSettings": "앱 설정", "@backupContentsSettings": { "description": "Backup contents row label for settings" @@ -3932,6 +4294,10 @@ "@downloadLocationSubtitle": { "description": "Subtitle shown in the download location picker sheet" }, + "storageAutomaticFolder": "자동 폴더", + "storageAutomaticDownloadFolder": "쓰기 가능하면 Download/SpotiFLAC을 사용하고, 그렇지 않으면 앱 저장소를 사용합니다", + "storageSafRecommended": "폴더 선택 (추천)", + "storageDownloadFolderHint": "안드로이드 폴더 선택기에서 Download 폴더를 열고 SpotiFLAC을 선택하세요.\n해당 폴더가 없다면 '새 폴더'를 사용해 만든 다음, '이 폴더 사용'을 탭하여 접근 권한을 허용하세요", "storageModeAppFolder": "앱 폴더 (추천)", "@storageModeAppFolder": { "description": "Storage mode option - app-managed folder" @@ -3952,7 +4318,7 @@ "@downloadFolderAccessLostTitle": { "description": "Title of the warning banner shown in Files settings when the saved SAF folder grant is no longer valid" }, - "downloadFolderAccessLostSubtitle": "폴더를 다시 선택할 때까지 다운로드할 수 없습니다", + "downloadFolderAccessLostSubtitle": "폴더를 다시 선택할 때까지 다운로드할 수 없음", "@downloadFolderAccessLostSubtitle": { "description": "Subtitle of the warning banner shown when the saved SAF folder grant is no longer valid" }, @@ -4012,7 +4378,7 @@ "@downloadNetworkCompatibilityMode": { "description": "Setting for legacy TLS/network handling" }, - "downloadNetworkCompatibilityModeEnabled": "레거시 HTTP 엔드포인트 허용; TLS 검증은 계속 활성화됨", + "downloadNetworkCompatibilityModeEnabled": "레거시 HTTP 엔드포인트 허용; TLS 인증서 검증은 계속 활성화됨", "@downloadNetworkCompatibilityModeEnabled": { "description": "Subtitle when network compatibility mode is on" }, @@ -4173,7 +4539,7 @@ "@bulkDownloadSelectPlaylists": { "description": "Button label when no playlists are selected for download" }, - "snackbarSelectedPlaylistsEmpty": "선택한 재생목록에 트랙이 없습니다", + "snackbarSelectedPlaylistsEmpty": "선택한 재생목록에 트랙이 없음", "@snackbarSelectedPlaylistsEmpty": { "description": "Snackbar when selected playlists contain no tracks" }, @@ -4194,6 +4560,47 @@ "@editMetadataAutoFillDesc": { "description": "Description for the auto-fill section" }, + "editMetadataAutoFillSource": "메타데이터 출처", + "@editMetadataAutoFillSource": { + "description": "Label for the metadata extension selector in online auto-fill" + }, + "editMetadataAutoFillSourceAutomatic": "자동 (제공자 우선순위)", + "@editMetadataAutoFillSourceAutomatic": { + "description": "Automatic source option that follows configured metadata provider priority" + }, + "editMetadataAutoFillFind": "메타데이터 찾기", + "@editMetadataAutoFillFind": { + "description": "Button label for finding an online metadata candidate" + }, + "editMetadataAutoFillPreview": "{source}의 데이터", + "@editMetadataAutoFillPreview": { + "description": "Title for the online metadata preview", + "placeholders": { + "source": { + "type": "String" + } + } + }, + "editMetadataAutoFillCoverAvailable": "커버 아트워크 사용 가능", + "@editMetadataAutoFillCoverAvailable": { + "description": "Preview value when the selected metadata source provides cover artwork" + }, + "editMetadataAutoFillApply": "선택된 데이터 적용", + "@editMetadataAutoFillApply": { + "description": "Button label for applying the previewed metadata" + }, + "editMetadataAutoFillDoneFromSource": "{source}에서 {count} 개의 {count, plural, =1{필드} other{필드}}가 채워짐", + "@editMetadataAutoFillDoneFromSource": { + "description": "Snackbar confirming fields applied from a selected metadata source", + "placeholders": { + "count": { + "type": "int" + }, + "source": { + "type": "String" + } + } + }, "editMetadataAutoFillFetch": "가져오기 & 채우기", "@editMetadataAutoFillFetch": { "description": "Button label to fetch online metadata and fill selected fields" @@ -4322,6 +4729,27 @@ "@queueEmptySinglesSubtitle": { "description": "Empty state subtitle for single track downloads" }, + "queuePlaylistCount": "{count, plural, =1{1 개의 재생목록} other{{count} 개의 재생목록}}", + "@queuePlaylistCount": { + "description": "Playlist count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueEmptyPlaylistsSubtitle": "트랙을 정리하려면 재생목록을 만드세요", + "@queueEmptyPlaylistsSubtitle": { + "description": "Empty state subtitle for the playlists library view" + }, + "libraryDefaultView": "기본 보기", + "@libraryDefaultView": { + "description": "Setting title - which library view opens when switching to the Library tab" + }, + "libraryDefaultViewLastUsed": "최근 사용", + "@libraryDefaultViewLastUsed": { + "description": "Default view option - keep the last used library view" + }, "queueEmptyHistory": "다운로드 기록이 없음", "@queueEmptyHistory": { "description": "Empty state title when download history is empty" @@ -4422,6 +4850,10 @@ "@audioAnalysisSpectralCutoff": { "description": "Estimated spectral cutoff metric label" }, + "audioAnalysisCutoffNotDetected": "감지되지 않음", + "@audioAnalysisCutoffNotDetected": { + "description": "Displayed when no reliable broadband spectral cutoff can be detected" + }, "audioAnalysisChannelStats": "채널별 통계", "@audioAnalysisChannelStats": { "description": "Per-channel audio analysis section label" @@ -4434,6 +4866,131 @@ "@audioAnalysisRescan": { "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" }, + "downloadRedownloadFakeHiRes": "가짜 Hi-Res 다시 다운로드", + "@downloadRedownloadFakeHiRes": { + "description": "Setting title: automatically replace downloads that measure as fake Hi-Res" + }, + "downloadRedownloadFakeHiResSubtitle": "기본적으로 비활성화되어 있습니다. Hi-Res 다운로드를 확인하고, 모든 오디오 샘플이 그대로 보존된 것이 확인될 때만 교체합니다. 검증이나 처리에 실패하면 원본을 그대로 유지합니다", + "@downloadRedownloadFakeHiResSubtitle": { + "description": "Setting subtitle for the fake Hi-Res re-download toggle" + }, + "hiResCheckVerdictFakeCertain": "가짜 Hi-Res", + "@hiResCheckVerdictFakeCertain": { + "description": "Verdict: an exact fingerprint (padded bits or upsampling pattern) proves the file is not real Hi-Res" + }, + "hiResCheckVerdictFakeSuspect": "필터링된 마스터일 가능성이 있음", + "@hiResCheckVerdictFakeSuspect": { + "description": "Verdict: fails the cutoff test but may be a genuine master low-pass filtered in mastering" + }, + "hiResCheckReasonSampleHold": "모든 샘플이 반복됨: 복제 방식으로 업샘플링됨", + "@hiResCheckReasonSampleHold": { + "description": "Reason: sample-and-hold upsampling detected" + }, + "hiResCheckReasonInterpolation": "샘플 사이의 값이 선형 보간됨", + "@hiResCheckReasonInterpolation": { + "description": "Reason: linear-interpolation upsampling detected" + }, + "hiResCheckReasonImaging": "22 kHz 이상의 콘텐츠가 가청 대역을 그대로 반영함", + "@hiResCheckReasonImaging": { + "description": "Reason: spectral imaging from upsampling detected" + }, + "hiResCheckMusicContent": "음악 콘텐츠", + "@hiResCheckMusicContent": { + "description": "Label for the highest frequency that still moves with the music" + }, + "hiResCheckUltrasonicNoise": "{cutoff} 이상에서는 일정한 노이즈만 존재함 (일반적으로 DSD 또는 아날로그 테이프 전송에서 나타나는 특성): {rate} 파일이면 모든 음악 정보를 담을 수 있음", + "@hiResCheckUltrasonicNoise": { + "description": "Shown when the ultrasonic content of a Hi-Res file is noise rather than music", + "placeholders": { + "cutoff": { + "type": "String" + }, + "rate": { + "type": "String" + } + } + }, + "hiResCheckTitle": "Hi-Res 진위 여부", + "@hiResCheckTitle": { + "description": "Title of the fake Hi-Res check card" + }, + "hiResCheckDescription": "업샘플링되었거나 비트 패딩된 가짜 Hi-Res 파일을 감지합니다", + "@hiResCheckDescription": { + "description": "Explains what the Hi-Res authenticity check does" + }, + "hiResCheckRun": "검사", + "@hiResCheckRun": { + "description": "Button that starts the Hi-Res authenticity check" + }, + "hiResCheckChecking": "Hi-Res 진위 여부 검사 중...", + "@hiResCheckChecking": { + "description": "Loading text while the Hi-Res check runs" + }, + "hiResCheckVerdictFake": "가짜 Hi-Res일 가능성이 높음", + "@hiResCheckVerdictFake": { + "description": "Verdict: the file claims Hi-Res but does not measure as it" + }, + "hiResCheckVerdictGenuine": "실제 Hi-Res로 측정됨", + "@hiResCheckVerdictGenuine": { + "description": "Verdict: no upsampling or padded bit depth found" + }, + "hiResCheckVerdictStandard": "일반 음질이며, 특별히 의심되는 사항이 없음", + "@hiResCheckVerdictStandard": { + "description": "Verdict: neither sample rate nor bit depth claims Hi-Res" + }, + "hiResCheckVerdictInconclusive": "판단할 수 없음: 분석한 구간의 음량이 너무 작거나 길이가 너무 짧음", + "@hiResCheckVerdictInconclusive": { + "description": "Verdict: analysis could not reach a reliable conclusion" + }, + "hiResCheckUnsupported": "FLAC 및 WAV 파일만 확인할 수 있음", + "@hiResCheckUnsupported": { + "description": "Shown when the file format cannot be decoded by the Hi-Res check" + }, + "hiResCheckCutoff": "콘텐츠 주파수 한계", + "@hiResCheckCutoff": { + "description": "Label for the highest frequency with real content" + }, + "hiResCheckBitsInUse": "사용 중인 비트", + "@hiResCheckBitsInUse": { + "description": "Label for effective vs declared bit depth" + }, + "hiResCheckDisclaimer": "스펙트럼이 일찍 끊기지만, 그것만으로 업샘플링되었다는 증거는 없습니다. 마스터링 과정에서 의도적으로 낮은 주파수 대역을 제한한 정상적인 원본 마스터일 수도 있습니다. 따라서 자동으로 교체하지 않습니다", + "@hiResCheckDisclaimer": { + "description": "Caveat shown under a fake Hi-Res verdict" + }, + "hiResCheckFailed": "Hi-Res 검사 실패: {error}", + "@hiResCheckFailed": { + "description": "Error shown when the Hi-Res check fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "hiResCheckReasonRate": "{sampleRate}를 선언했지만 콘텐츠가 약 {cutoff}에서 멈춥니다", + "@hiResCheckReasonRate": { + "description": "Reason for a fake verdict caused by upsampling", + "placeholders": { + "sampleRate": { + "type": "String" + }, + "cutoff": { + "type": "String" + } + } + }, + "hiResCheckReasonDepth": "{declared}-비트를 선언했지만 실제 데이터는 {effective} 비트만 전달합니다", + "@hiResCheckReasonDepth": { + "description": "Reason for a fake verdict caused by padded bit depth", + "placeholders": { + "declared": { + "type": "int" + }, + "effective": { + "type": "int" + } + } + }, "audioAnalysisRescanning": "오디오를 다시 분석하는 중...", "@audioAnalysisRescanning": { "description": "Loading text while audio is being re-analyzed after an explicit refresh" @@ -4492,6 +5049,14 @@ "@cancelDownloadKeep": { "description": "Dialog button - keep the active download (do not cancel)" }, + "queueCancelledTitle": "다운로드 취소됨", + "@queueCancelledTitle": { + "description": "Dialog title when opening a cancelled queue item" + }, + "queueCancelledMessage": "이 다운로드가 취소되었습니다. 다시 시도하거나, 다운로드 목록에서 제거하세요", + "@queueCancelledMessage": { + "description": "Dialog body when opening a cancelled queue item" + }, "metadataSaveFailedFfmpeg": "FFmpeg를 통해 메타데이터 저장 실패", "@metadataSaveFailedFfmpeg": { "description": "Snackbar error when FFmpeg fails to write metadata" @@ -4759,7 +5324,7 @@ }, "homeImportCsvTooltip": "재생목록 가져오기 (CSV, M3U)", "@homeImportCsvTooltip": { - "description": "Tooltip for importing a CSV file into Home search" + "description": "Tooltip for importing a CSV or M3U playlist file into Home search" }, "homeChangeSearchProviderTooltip": "검색 제공자 변경", "@homeChangeSearchProviderTooltip": { @@ -4825,6 +5390,18 @@ "@trackCoverReplaceNotice": { "description": "Notice shown when a new cover has been selected but not saved yet" }, + "trackCoverResolution": "커버 해상도", + "@trackCoverResolution": { + "description": "Label for selecting the embedded cover art resolution" + }, + "trackCoverResolutionHint": "저장할 때 이미지의 긴 변 길이를 설정합니다. 확대해도 이미지의 세부 정보는 늘어나지 않습니다", + "@trackCoverResolutionHint": { + "description": "Explanation below the embedded cover art resolution selector" + }, + "trackCoverResizeFailed": "앨범 커버를 원하는 크기로 조정할 수 없습니다. 다른 크기나 이미지를 사용해 보세요", + "@trackCoverResizeFailed": { + "description": "Error shown when resizing cover art before saving metadata fails" + }, "actionStop": "중지", "@actionStop": { "description": "Generic action - stop" @@ -4833,10 +5410,63 @@ "@queueFinalizingDownload": { "description": "Accessibility label for a queue item that is finalizing" }, + "queueDownloadNext": "다음 다운로드", + "@queueDownloadNext": { + "description": "Tooltip on a queued download row; moves the item to the front of the queue so the next free slot downloads it" + }, + "queueMoveUp": "위로 이동", + "@queueMoveUp": { + "description": "Queue item menu action - move the queued item one position earlier" + }, + "queueMoveDown": "아래로 이동", + "@queueMoveDown": { + "description": "Queue item menu action - move the queued item one position later" + }, + "editMetadataMusicBrainzButton": "MusicBrainz에서 가져오기", + "@editMetadataMusicBrainzButton": { + "description": "Tag editor button that fills genre and album artist from MusicBrainz by ISRC" + }, + "editMetadataMusicBrainzFilled": "MusicBrainz에서 업데이트됨", + "@editMetadataMusicBrainzFilled": { + "description": "Snackbar after MusicBrainz suggestions were applied to the tag editor fields" + }, + "editMetadataMusicBrainzNothing": "MusicBrainZ에서 발견되지 않음", + "@editMetadataMusicBrainzNothing": { + "description": "Snackbar when the MusicBrainz lookup returns no data" + }, + "editMetadataMusicBrainzNeedsIsrc": "ISRC 태그 필요", + "@editMetadataMusicBrainzNeedsIsrc": { + "description": "Snackbar when the MusicBrainz lookup is tapped without an ISRC" + }, + "nowPlayingRepeatOff": "반복 끄기", + "@nowPlayingRepeatOff": { + "description": "Repeat toggle tooltip when repeat is disabled" + }, + "nowPlayingRepeatAll": "모두 반복", + "@nowPlayingRepeatAll": { + "description": "Repeat toggle tooltip when the whole queue repeats" + }, + "nowPlayingRepeatOne": "한 곡 반복", + "@nowPlayingRepeatOne": { + "description": "Repeat toggle tooltip when the current track repeats" + }, + "queueNetworkFailedOffline": "오프라인 중에 {count} 개의 다운로드 실패", + "@queueNetworkFailedOffline": { + "description": "Snackbar shown when connectivity returns and network-failed downloads can be retried", + "placeholders": { + "count": { + "type": "int" + } + } + }, "queueDownloadedFileMissing": "다운로드된 파일이 없음", "@queueDownloadedFileMissing": { "description": "Accessibility label when a downloaded file is missing from disk" }, + "queueCheckingDownloadedFile": "다운로드된 파일을 확인하는 중...", + "@queueCheckingDownloadedFile": { + "description": "Accessibility label while the app checks whether a just-completed download has appeared at its final path yet. Not about authentication or a download session." + }, "queueDownloadCompleted": "다운로드 완료", "@queueDownloadCompleted": { "description": "Accessibility label for completed download state in queue" @@ -4914,7 +5544,7 @@ "@logIssueTrackNotFoundLabel": { "description": "Diagnostic badge label when a track is unavailable" }, - "logIssueTrackNotFoundDescription": "일부 트랙은 다운로드 서비스에서 찾을 수 없습니다", + "logIssueTrackNotFoundDescription": "일부 트랙은 다운로드 서비스에서 찾을 수 없음", "@logIssueTrackNotFoundDescription": { "description": "Diagnostic badge description when a track is unavailable" }, @@ -5144,6 +5774,34 @@ "@editMetadataFieldComment": { "description": "Label for comment field in the edit metadata sheet" }, + "trackAlbumType": "발매 유형", + "@trackAlbumType": { + "description": "Label for an album or release type metadata value" + }, + "editMetadataFieldAlbumTypeHint": "앨범, 싱글, EP, 컴필레이션...", + "@editMetadataFieldAlbumTypeHint": { + "description": "Hint for the release type metadata field" + }, + "editMetadataFieldExplicit": "성인용", + "@editMetadataFieldExplicit": { + "description": "Label for the explicit content metadata field" + }, + "editMetadataFieldExplicitHint": "이 트랙에 성인용 콘텐츠가 포함되어 있음을 표시합니다", + "@editMetadataFieldExplicitHint": { + "description": "Description for the explicit content metadata switch" + }, + "metadataExplicitValue": "성인용", + "@metadataExplicitValue": { + "description": "Displayed value when a track is marked explicit" + }, + "editMetadataFieldUpc": "UPC / 바코드", + "@editMetadataFieldUpc": { + "description": "Label for the release barcode metadata field" + }, + "editMetadataFieldUpcHint": "숫자 UPC, EAN, 또는 GTIN", + "@editMetadataFieldUpcHint": { + "description": "Hint for the release barcode metadata field" + }, "editMetadataAdvanced": "고급", "@editMetadataAdvanced": { "description": "Expandable section label for advanced metadata fields" @@ -5164,6 +5822,10 @@ "@libraryFilterMetadataIncorrectIsrcFormat": { "description": "Filter option - items with an invalid ISRC format" }, + "libraryFilterMetadataMissingIsrc": "ISRC 누락", + "@libraryFilterMetadataMissingIsrc": { + "description": "Filter option - items without any ISRC tag" + }, "libraryFilterMetadataMissingLabel": "레이블 누락", "@libraryFilterMetadataMissingLabel": { "description": "Filter option - items missing record label" @@ -5264,6 +5926,9 @@ "@queueDownloadStarting": { "description": "Queue status before download progress is available" }, + "@queueCheckingDownloadSession": { + "description": "Queue status while the download provider's session is being checked during preparation (preparationStage 'checking_session'). This is about the provider session, not about locating a finished file." + }, "a11ySelectTrack": "트랙 선택", "@a11ySelectTrack": { "description": "Accessibility label for selecting a track" @@ -5605,7 +6270,7 @@ "@libraryBuiltInPreviewPlayer": { "description": "Setting option to use the built-in preview player" }, - "libraryBuiltInPreviewPlayerSubtitle": "SpotiFLAC Mobile에서 빠른 로컬 미리듣기 전용이며, 일반적인 음악 감상에는 권장되지 않습니다", + "libraryBuiltInPreviewPlayerSubtitle": "SpotiFLAC Mobile 내에서 빠른 로컬 미리 보기", "@libraryBuiltInPreviewPlayerSubtitle": { "description": "Subtitle for built-in preview player option" }, @@ -5630,11 +6295,56 @@ "description": "Title for the playback queue sheet" }, "nowPlayingPreviousTrack": "이전 트랙", + "@nowPlayingPreviousTrack": { + "description": "Tooltip for the previous-track playback control" + }, "nowPlayingNextTrack": "다음 트랙", + "@nowPlayingNextTrack": { + "description": "Tooltip for the next-track playback control" + }, "nowPlayingDetails": "트랙 세부 정보", "@nowPlayingDetails": { "description": "Menu item and section title for track metadata details" }, + "nowPlayingSleepTimer": "취침 타이머", + "@nowPlayingSleepTimer": { + "description": "Menu item and sheet title for the playback sleep timer" + }, + "nowPlayingSleepTimerActive": "{time}에 종료", + "@nowPlayingSleepTimerActive": { + "description": "Active sleep timer deadline shown in the player menu", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "nowPlayingSleepTimerMinutes": "{minutes, plural, =1{1 분} other{{minutes} 분}}", + "@nowPlayingSleepTimerMinutes": { + "description": "Duration choice for the playback sleep timer", + "placeholders": { + "minutes": { + "type": "int" + } + } + }, + "nowPlayingSleepTimerOff": "취침 타이머 끄기", + "@nowPlayingSleepTimerOff": { + "description": "Action to cancel the active playback sleep timer" + }, + "nowPlayingSleepTimerSet": "{duration} 동안 취침 타이머가 설정됨", + "@nowPlayingSleepTimerSet": { + "description": "Confirmation after setting the playback sleep timer", + "placeholders": { + "duration": { + "type": "String" + } + } + }, + "nowPlayingSleepTimerCancelled": "취침 타이머 꺼짐", + "@nowPlayingSleepTimerCancelled": { + "description": "Confirmation after cancelling the playback sleep timer" + }, "nowPlayingOpenInExternalPlayer": "외부 플레이어에서 열기", "@nowPlayingOpenInExternalPlayer": { "description": "Menu item to open the current track in an external player" @@ -5977,6 +6687,15 @@ "@extensionVerificationBrowserInApp": { "description": "Chip label for in-app browser verification mode" }, + "extensionVerificationUnavailable": "'{extension}'에 대한 인증 페이지를 사용할 수 없습니다. 새 인증을 요청하려면 다운로드를 다시 시도하세요", + "@extensionVerificationUnavailable": { + "description": "Shown when the app cannot retrieve a pending verification challenge", + "placeholders": { + "extension": { + "type": "String" + } + } + }, "extensionVerificationHelpTitleManual": "수동으로 인증 열기", "@extensionVerificationHelpTitleManual": { "description": "Dialog title when automatic browser launch for verification fails" @@ -6010,93 +6729,101 @@ "description": "Button to open the extension verification URL in a browser" }, "settingsSearchHint": "설정 검색", + "@settingsSearchHint": { + "description": "Placeholder of the search field on the Settings tab" + }, "settingsSearchNoResults": "\"{query}\"과 일치하는 설정이 없음", + "@settingsSearchNoResults": { + "description": "Shown when a Settings search returns nothing", + "placeholders": { + "query": { + "type": "String" + } + } + }, "settingsGroupInterface": "확장 기능 & 디자인", + "@settingsGroupInterface": { + "description": "Settings group covering look and feel" + }, "settingsGroupContent": "콘텐츠 & 메타데이터", + "@settingsGroupContent": { + "description": "Settings group covering the library, metadata and lyrics" + }, "settingsGroupDownloads": "다운로드 & 파일", + "@settingsGroupDownloads": { + "description": "Settings group covering download behaviour and storage" + }, "settingsGroupSystem": "시스템", + "@settingsGroupSystem": { + "description": "Settings group covering app-level data, cache and logs" + }, "settingsGroupHelp": "정보 & 후원", - "collectionExportM3u": "M3U8로 내보내기", - "collectionExportM3uDone": "{total} 개의 트랙 중 {exported} 개 내보내기 완료", - "collectionExportM3uNone": "내보낼 다운로드된 파일이 없음", - "collectionExportM3uFailed": "내보내기 실패", - "trackOpenOn": "음원 플랫폼에서 열기", - "trackOpenOnNoLinks": "이 트랙에 대한 플랫폼 링크를 찾을 수 없습니다", - "libraryReviewDuplicates": "중복된 트랙 보기", - "libraryReviewDuplicatesSubtitle": "중복 저장된 트랙 찾기", - "duplicatesTitle": "중복", - "duplicatesEmpty": "중복된 트랙이 없습니다", - "duplicatesKeepBest": "최고 음질 선택", - "duplicatesKeepBestMessage": "\"{trackName}\"의 {count} 개의 저음질 복사본을 삭제하시겠습니까?", - "duplicatesDeleteCopyMessage": "\"{trackName}\"의 복사본을 삭제하시겠습니까?", - "downloadAutoConvert": "다운로드 후 자동 변환", - "downloadAutoConvertSubtitle": "다운로드가 완료되면 더 작은 손실 압축 형식으로 변환합니다. 원본은 변환이 성공한 후에만 교체됩니다", - "downloadAutoConvertFormat": "출력 형식", - "downloadAutoConvertFormatSubtitle": "새로 완료된 다운로드에 사용되는 손실 압축 형식을 선택하세요", - "downloadAutoConvertBitrate": "출력 음질", - "downloadAutoConvertBitrateSubtitle": "비트 전송률이 높을수록 더 많은 디테일을 보존하지만 파일 크기가 커집니다", - "downloadAutoConvertMp3Subtitle": "플레이어 및 기기 전반에 걸쳐 최상의 호환성", - "downloadAutoConvertM4aSubtitle": "M4A 컨테이너의 효율적인 AAC 오디오", - "downloadAutoConvertOpusSubtitle": "최신 플레이어에 최적화된 효율성", - "appearanceForceBlur": "항상 블러 효과 사용", - "appearanceForceBlurSubtitle": "기본적으로 비활성화된 기기에서도 하단바 블러 효과를 활성화합니다. 성능이 저하될 수 있습니다", - "recentClearAllMessage": "최근 활동을 모두 지우시겠습니까? 다운로드 기록 및 음악 파일은 삭제되지 않습니다", - "libraryAddFolder": "라이브러리 폴더 추가", - "libraryAddFolderSubtitle": "내부 저장소, SD 카드, SSD 또는 다른 외부 드라이브", - "librarySourceOnline": "온라인", - "librarySourceOffline": "오프라인. 이 트랙을 복원하려면 저장소를 다시 연결하세요", - "librarySourceDisabled": "비활성화됨", - "librarySourceScanCount": "{total} 개의 파일 중 {scanned} 개 스캔 완료 ({progress}%)", - "libraryExternalStorage": "외부 저장소", - "libraryRemoveFolder": "라이브러리 폴더 제거", - "libraryRemoveFolderMessage": "SpotiFLAC Mobile에서 이 폴더와 색인된 트랙을 제거하시겠습니까? 저장소의 오디오 파일은 삭제되지 않습니다", - "trackReEnrichModeIsrc": "ISRC만", - "trackReEnrichModeIsrcSubtitle": "다른 태그를 변경하지 않고 녹화 식별자를 찾아 추가합니다", - "trackReEnrichModeMissing": "누락된 태그 채우기", - "trackReEnrichModeMissingSubtitle": "기존 값을 유지하고 비어 있는 필드만 채웁니다", - "trackReEnrichModeReplace": "선택된 태그 업데이트", - "trackReEnrichModeReplaceSubtitle": "온라인 메타데이터로 대체할 기존 값을 선택하세요", - "trackReEnrichFieldsTitle": "업데이트할 태그", - "trackReEnrichReview": "변경 사항 검토", - "trackReEnrichReviewTitle": "메타데이터 변경 사항 검토", - "trackReEnrichReviewSubtitle": "{trackCount} 개의 트랙에 걸쳐 제안된 {changeCount} 개의 변경 사항", - "trackReEnrichNoChanges": "선택한 트랙에 대한 메타데이터 변경 사항이 없습니다", - "trackReEnrichApplyChanges": "변경 사항 적용", - "trackReEnrichRefreshOnline": "온라인에서 새로고침", - "editMetadataAutoFillSource": "메타데이터 출처", - "editMetadataAutoFillSourceAutomatic": "자동 (제공자 우선순위)", - "editMetadataAutoFillFind": "메타데이터 찾기", - "editMetadataAutoFillPreview": "{source}의 데이터", - "editMetadataAutoFillCoverAvailable": "커버 아트워크 사용 가능", - "editMetadataAutoFillApply": "선택된 데이터 적용", - "editMetadataAutoFillDoneFromSource": "{source}에서 {count} 개의 {count, plural, =1{필드} other{필드}}가 채워짐", - "queuePlaylistCount": "{count, plural, =1{1 개의 재생목록} other{{count} 개의 재생목록}}", - "queueEmptyPlaylistsSubtitle": "트랙을 정리하려면 재생목록을 만드세요", - "libraryDefaultView": "기본 보기", - "libraryDefaultViewLastUsed": "최근 사용", - "audioAnalysisCutoffNotDetected": "감지되지 않음", - "queueCancelledTitle": "다운로드 취소됨", - "queueCancelledMessage": "이 다운로드가 취소되었습니다. 다시 시도하거나, 다운로드 목록에서 제거하세요", - "trackCoverResolution": "커버 해상도", - "trackCoverResolutionHint": "저장할 때 이미지의 긴 변 길이를 설정합니다. 확대해도 이미지의 세부 정보는 늘어나지 않습니다", - "trackCoverResizeFailed": "앨범 커버를 원하는 크기로 조정할 수 없습니다. 다른 크기나 이미지를 사용해 보세요", - "queueDownloadNext": "다음 다운로드", - "queueMoveUp": "위로 이동", - "queueMoveDown": "아래로 이동", - "editMetadataMusicBrainzButton": "MusicBrainz에서 가져오기", - "editMetadataMusicBrainzFilled": "MusicBrainz에서 업데이트됨", - "editMetadataMusicBrainzNothing": "MusicBrainZ에서 발견되지 않음", - "editMetadataMusicBrainzNeedsIsrc": "ISRC 태그 필요", - "nowPlayingRepeatOff": "반복 끄기", - "nowPlayingRepeatAll": "모두 반복", - "nowPlayingRepeatOne": "한 곡 반복", - "queueNetworkFailedOffline": "오프라인 중에 {count} 개의 다운로드 실패", - "trackAlbumType": "발매 유형", - "editMetadataFieldAlbumTypeHint": "앨범, 싱글, EP, 컴필레이션...", - "editMetadataFieldExplicit": "성인용", - "editMetadataFieldExplicitHint": "이 트랙에 성인용 콘텐츠가 포함되어 있음을 표시합니다", - "metadataExplicitValue": "성인용", - "editMetadataFieldUpc": "UPC / 바코드", - "editMetadataFieldUpcHint": "숫자 UPC, EAN, 또는 GTIN", - "libraryFilterMetadataMissingIsrc": "ISRC 누락" + "@settingsGroupHelp": { + "description": "Settings group covering the about page and donations" + }, + "libraryFilterMetadataMissingLyrics": "가사 누락", + "@libraryFilterMetadataMissingLyrics": { + "description": "Filter option for tracks without embedded or sidecar lyrics" + }, + "trackOptionCopyTrackName": "트랙 제목 복사", + "@trackOptionCopyTrackName": { + "description": "Track menu action that copies the track title" + }, + "trackOptionCopyArtist": "아티스트 복사", + "@trackOptionCopyArtist": { + "description": "Track menu action that copies the artist name" + }, + "trackOptionCopyTrackAndArtist": "트랙 및 아티스트 복사", + "@trackOptionCopyTrackAndArtist": { + "description": "Track menu action that copies the track title and artist" + }, + "metadataCopyValue": "값 복사", + "@metadataCopyValue": { + "description": "Metadata menu action that copies only the selected value" + }, + "metadataCopyField": "필드 및 값 복사", + "@metadataCopyField": { + "description": "Metadata menu action that copies the selected key and value" + }, + "mornyeShowTabs": "탭 표시", + "mornyeSearch": "검색", + "mornyeContinuePlaying": "계속 재생", + "metadataCopyAll": "모든 메타데이터 복사", + "@metadataCopyAll": { + "description": "Metadata menu action that copies every visible key and value" + }, + "optionsEmbeddedCoverSize": "내장된 앨범 커버 크기", + "@optionsEmbeddedCoverSize": { + "description": "Metadata setting that limits downloaded artwork resolution before it is embedded" + }, + "optionsEmbeddedCoverSizeDescription": "원격으로 다운로드된 앨범 커버를 내장하기 전에 크기를 줄입니다. 이미 제한 내에 있는 이미지는 변경되지 않습니다", + "@optionsEmbeddedCoverSizeDescription": { + "description": "Description shown in the embedded cover size picker" + }, + "mornyeFavorite": "즐겨찾기", + "mornyeGoToArtist": "아티스트로 이동", + "@mornyeFavorite": { + "description": "Compact context menu action that adds a track to Loved" + }, + "mornyeFavorited": "즐겨추가에 추가됨", + "@mornyeFavorited": { + "description": "Selected state of the compact favorite action" + }, + "autoMixDescription": "곡을 비트에 맞춰 믹싱하고, 음정은 유지한 채 템포를 조절합니다. 비트를 맞출 수 없는 경우에는 크로스페이드를 사용합니다", + "autoMixOn": "자동믹스 켜짐", + "autoMixOff": "자동믹스 꺼짐", + "profileTitle": "프로필", + "profileSetUp": "프로필 설정", + "profileEdit": "이름 및 사진 편집", + "backupIncludesProfile": "프로필 이름과 사진 포함", + "profileName": "이름", + "profileNameHint": "당신의 이름을 입력하세요", + "profileChangePhoto": "사진 선택", + "profileRemovePhoto": "사진 삭제", + "profilePhotoError": "20MB보다 작은 유효한 이미지를 선택하세요", + "profileSaveError": "프로필을 저장할 수 없습니다. 다시 시도하세요", + "optionsEmbeddedCoverSizeOriginal": "원본 해상도", + "@optionsEmbeddedCoverSizeOriginal": { + "description": "Option that preserves the provider artwork at its original resolution" + } } diff --git a/lib/l10n/arb/app_nl.arb b/lib/l10n/arb/app_nl.arb index f157a369..b4c1c5dc 100644 --- a/lib/l10n/arb/app_nl.arb +++ b/lib/l10n/arb/app_nl.arb @@ -1,4 +1,48 @@ { + "upgradeIntroWelcome": "Welcome to\nSpotiFLAC-Mobile 5.0", + "upgradeIntroThemeTitle": "Make it\nyour own.", + "upgradeIntroThemeBody": "Choose a look. Your choice applies immediately, and you can change it later in Appearance.", + "upgradeIntroThemeMaterialBody": "The familiar layout, with Material controls and your accent color.", + "upgradeIntroThemeMornyeBody": "Glass navigation, a redesigned Library and an immersive player.", + "upgradeIntroRustTitle": "A new engine.\nBuilt with Rust.", + "upgradeIntroRustBody": "In 5.0, the app’s backend has moved from Go to Rust. It is the engine working behind the screens you use every day.", + "upgradeIntroRustEngineTitle": "Working behind the scenes", + "upgradeIntroRustEngineBody": "Rust handles downloads, audio metadata, library scanning and the extension runtime on Android and iOS.", + "upgradeIntroRustMemoryTitle": "More careful with memory", + "upgradeIntroRustMemoryBody": "Reused buffers and fewer copies reduce temporary allocations when processing artwork and extension data.", + "upgradeIntroRustKeepTitle": "Keep your music", + "upgradeIntroRustKeepBody": "No need to download your collection again. Your saved music and settings stay in place, with no new setup required.", + "upgradeIntroWelcomeBody": "A quick look at what has changed, and where to find it.", + "upgradeIntroMornyeBody": "A new look for your player, lyrics and navigation.", + "upgradeIntroLibrarySummary": "Browse your music by playlist, artist or album.", + "upgradeIntroRepoSummary": "Choose your music sources and providers through extensions.", + "upgradeIntroLibraryTitle": "Get to know\nyour Library.", + "upgradeIntroLibraryBody": "In Mornye, browse by category or find your albums in Recently Added.", + "upgradeIntroDownloadsBody": "Pause and retry from Downloads at the top right. Finished music moves to Recently Added.", + "upgradeIntroSearchBody": "Search saved music here. The separate Search tab looks through your extensions.", + "upgradeIntroPlayerTitle": "Set up\nyour player.", + "upgradeIntroPlayerBody": "You can change your theme and playback options at any time. Here is where to find them.", + "upgradeIntroAppearanceBody": "Change themes in Settings → Appearance. In Mornye, scroll down for compact navigation; scroll up to expand it.", + "upgradeIntroAutoMixBody": "Match tempo and beats between tracks. Enable it in Settings → Local Library → Playback. Off by default.", + "upgradeIntroSettingsBody": "In Mornye, tap your profile on Home to open Settings and edit your name and photo.", + "upgradeIntroSkip": "Skip", + "upgradeIntroContinue": "Continue", + "upgradeIntroDone": "Start listening", + "upgradeIntroReplay": "What’s new in 5.0", + "cacheMotionArtwork": "Offline motion covers", + "cacheMotionArtworkDesc": "Album videos saved with downloads. Removing them keeps your music files and static covers.", + "nowPlayingVolume": "Volume", + "@nowPlayingVolume": { + "description": "System volume control label in the Mornye player" + }, + "appearanceStyle": "App Style", + "@appearanceStyle": { + "description": "Appearance section for choosing the app visual style" + }, + "discordRichPresence": "Discord Rich Presence", + "discordPresenceDescription": "Share the track playing in the built-in player on Discord. Requires Discord to be installed and signed in.", + "discordPresenceMissing": "Install Discord and sign in, then turn this setting off and on again.", + "discordPresenceUnavailable": "Discord Rich Presence is unavailable in this build or on this device.", "@@locale": "nl", "@@last_modified": "2026-04-28", "appName": "SpotiFLAC Mobile", @@ -57,6 +101,11 @@ "@historyFilterSingles": { "description": "Filter chip - show singles only" }, + "libraryRecentlyAdded": "Recently Added", + "libraryDownloads": "Downloads", + "libraryNoActiveDownloads": "No active downloads", + "librarySearchHint": "Search your library", + "libraryEmptyCollection": "Your music will appear here", "historySearchHint": "Search history...", "@historySearchHint": { "description": "Search bar placeholder in history" @@ -237,6 +286,7 @@ "description": "Progress dialog title while batch scanning ReplayGain" }, "replayGainBatchSuccess": "ReplayGain added to {success} of {total} tracks", + "replayGainUnsupportedDecoder": "Some tracks could not be analyzed because their audio codec is not supported by the ReplayGain decoder. Their files were not changed.", "@replayGainBatchSuccess": { "description": "Snackbar after batch ReplayGain completes", "placeholders": { @@ -461,6 +511,18 @@ "@aboutSachinsenalDesc": { "description": "Credit description for sachinsenal0x64" }, + "aboutUnituneDesc": "Open-source music link resolver by Flaze, used for cross-platform fallback matching.", + "@aboutUnituneDesc": { + "description": "Credit for the UniTune resolver" + }, + "aboutMusicBrainzDesc": "Open music database maintained by MetaBrainz and its community, used for recording cross-references.", + "@aboutMusicBrainzDesc": { + "description": "Credit for the MusicBrainz database" + }, + "aboutSquiglyDesc": "Universal music link service by Liam Macmillan, used as a final cross-platform resolver fallback.", + "@aboutSquiglyDesc": { + "description": "Credit for the Squigly resolver" + }, "aboutAppDescription": "Search music metadata, manage extensions, and organize your library.", "@aboutAppDescription": { "description": "App description in header card" @@ -842,6 +904,22 @@ "@duplicatesKeepBest": { "description": "Button that deletes all but the highest-quality copy in a duplicate group" }, + "duplicatesKeepBestAll": "Keep best for all", + "@duplicatesKeepBestAll": { + "description": "Button that keeps the highest-quality copy in every duplicate group and deletes the rest" + }, + "duplicatesKeepBestAllMessage": "Keep the best copy of {groupCount} {groupCount, plural, =1{track} other{tracks}} and delete {count} lower-quality {count, plural, =1{copy} other{copies}}?\n\nThe deleted files will be removed from storage.", + "@duplicatesKeepBestAllMessage": { + "description": "Confirmation message for keeping the best copy across every duplicate group", + "placeholders": { + "count": { + "type": "int" + }, + "groupCount": { + "type": "int" + } + } + }, "duplicatesKeepBestMessage": "Delete {count} lower-quality copies of \"{trackName}\"?", "@duplicatesKeepBestMessage": { "description": "Confirmation message for the keep-best action", @@ -1564,6 +1642,22 @@ "@trackAudioQuality": { "description": "Metadata label - audio quality" }, + "trackReplayGainTrackGain": "ReplayGain Track Gain", + "@trackReplayGainTrackGain": { + "description": "Metadata label - ReplayGain track gain" + }, + "trackReplayGainTrackPeak": "ReplayGain Track Peak", + "@trackReplayGainTrackPeak": { + "description": "Metadata label - ReplayGain track peak" + }, + "trackReplayGainAlbumGain": "ReplayGain Album Gain", + "@trackReplayGainAlbumGain": { + "description": "Metadata label - ReplayGain album gain" + }, + "trackReplayGainAlbumPeak": "ReplayGain Album Peak", + "@trackReplayGainAlbumPeak": { + "description": "Metadata label - ReplayGain album peak" + }, "libraryQualityLabelFileFormat": "File format", "@libraryQualityLabelFileFormat": { "description": "Library audio quality label mode that shows the detected file format" @@ -3176,6 +3270,10 @@ "@trackReEnrichOnlineSubtitle": { "description": "Subtitle for re-enrich metadata action for local items" }, + "trackReEnrichBatchSubtitle": "Choose an online or manual update, then review every change before writing", + "@trackReEnrichBatchSubtitle": { + "description": "Subtitle for batch metadata update choices" + }, "trackReEnrichFieldCover": "Cover Art", "@trackReEnrichFieldCover": { "description": "Checkbox label for cover art field in re-enrich" @@ -3228,6 +3326,22 @@ "@trackReEnrichModeReplaceSubtitle": { "description": "Explanation for the selected-tag batch metadata mode" }, + "trackReEnrichModeManual": "Set common values", + "@trackReEnrichModeManual": { + "description": "Batch metadata mode that applies shared values to every selected track" + }, + "trackReEnrichModeManualSubtitle": "Apply the same values to every selected track", + "@trackReEnrichModeManualSubtitle": { + "description": "Explanation for the manual shared-value batch metadata mode" + }, + "trackReEnrichManualFieldsTitle": "Values to apply", + "@trackReEnrichManualFieldsTitle": { + "description": "Heading above manual batch metadata inputs" + }, + "trackReEnrichManualHint": "Leave a field empty to keep its current value. Track titles, numbers, and ISRCs stay unchanged.", + "@trackReEnrichManualHint": { + "description": "Safety explanation for manual batch metadata inputs" + }, "trackReEnrichFieldsTitle": "Tags to update", "@trackReEnrichFieldsTitle": { "description": "Heading above batch re-enrich field checkboxes" @@ -3298,7 +3412,15 @@ "@trackReEnrichSearching": { "description": "Snackbar while searching metadata from internet for local items" }, + "trackReEnrichPreparing": "Preparing metadata changes...", + "@trackReEnrichPreparing": { + "description": "Progress message while preparing manual batch metadata changes" + }, "trackReEnrichSuccess": "Metadata re-enriched successfully", + "trackReEnrichMetadataSaved": "Metadata saved", + "trackReEnrichLyricsUpdated": "Lyrics updated", + "trackReEnrichLyricsPreserved": "No new lyrics found; existing lyrics kept", + "trackReEnrichLyricsDisabled": "Lyrics not updated: lyric downloading is disabled in Settings", "@trackReEnrichSuccess": { "description": "Snackbar after successful re-enrichment" }, @@ -3889,7 +4011,7 @@ "@lyricsProviderAppleMusicDesc": { "description": "Description for Apple Music provider" }, - "lyricsProviderQqMusicDesc": "QQ Music (good for Chinese songs, via proxy)", + "lyricsProviderQqMusicDesc": "QQ Music (good for Chinese songs, direct API)", "@lyricsProviderQqMusicDesc": { "description": "Description for QQ Music provider" }, @@ -4001,6 +4123,14 @@ "@backupContentsTitle": { "description": "Header above the list summarizing what the backup contains" }, + "backupSettingsOnly": "Settings only", + "backupSelectHistory": "Download history", + "backupSelectCollections": "Library collections", + "backupSelectCollectionsDescription": "Liked tracks, wishlist, favorite artists, playlists and playlist covers.", + "backupSelectExtensions": "Extensions and their settings", + "backupSelectedExportDescription": "Save the selected categories to a backup file. Audio files are not included.", + "backupSelectAtLeastOne": "Select at least one category to create a backup.", + "backupSelectedRestoreMessage": "Only the categories listed below will be restored. Categories not included in this backup will stay unchanged. Restoring can replace existing data and cannot be undone.", "backupContentsSettings": "App settings", "@backupContentsSettings": { "description": "Backup contents row label for settings" @@ -4164,6 +4294,10 @@ "@downloadLocationSubtitle": { "description": "Subtitle shown in the download location picker sheet" }, + "storageAutomaticFolder": "Automatic folder", + "storageAutomaticDownloadFolder": "Uses Download/SpotiFLAC when writable, otherwise app storage", + "storageSafRecommended": "Choose folder (Recommended)", + "storageDownloadFolderHint": "In the Android folder picker, open Download and select SpotiFLAC. If it does not exist, create it using New folder, then tap Use this folder to grant access.", "storageModeAppFolder": "App Folder (Recommended)", "@storageModeAppFolder": { "description": "Storage mode option - app-managed folder" @@ -4732,6 +4866,131 @@ "@audioAnalysisRescan": { "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" }, + "downloadRedownloadFakeHiRes": "Re-download fake Hi-Res", + "@downloadRedownloadFakeHiRes": { + "description": "Setting title: automatically replace downloads that measure as fake Hi-Res" + }, + "downloadRedownloadFakeHiResSubtitle": "Off by default. Check Hi-Res downloads and replace only when every audio sample is preserved. Keep the original if verification or processing fails", + "@downloadRedownloadFakeHiResSubtitle": { + "description": "Setting subtitle for the fake Hi-Res re-download toggle" + }, + "hiResCheckVerdictFakeCertain": "Fake Hi-Res", + "@hiResCheckVerdictFakeCertain": { + "description": "Verdict: an exact fingerprint (padded bits or upsampling pattern) proves the file is not real Hi-Res" + }, + "hiResCheckVerdictFakeSuspect": "Possibly a filtered master", + "@hiResCheckVerdictFakeSuspect": { + "description": "Verdict: fails the cutoff test but may be a genuine master low-pass filtered in mastering" + }, + "hiResCheckReasonSampleHold": "Every sample is repeated: upsampled by duplication", + "@hiResCheckReasonSampleHold": { + "description": "Reason: sample-and-hold upsampling detected" + }, + "hiResCheckReasonInterpolation": "In-between samples are linearly interpolated", + "@hiResCheckReasonInterpolation": { + "description": "Reason: linear-interpolation upsampling detected" + }, + "hiResCheckReasonImaging": "Content above 22 kHz mirrors the audible band", + "@hiResCheckReasonImaging": { + "description": "Reason: spectral imaging from upsampling detected" + }, + "hiResCheckMusicContent": "Musical content", + "@hiResCheckMusicContent": { + "description": "Label for the highest frequency that still moves with the music" + }, + "hiResCheckUltrasonicNoise": "Above {cutoff} only steady noise (typical of DSD or analog tape transfers): a {rate} file would hold all the music", + "@hiResCheckUltrasonicNoise": { + "description": "Shown when the ultrasonic content of a Hi-Res file is noise rather than music", + "placeholders": { + "cutoff": { + "type": "String" + }, + "rate": { + "type": "String" + } + } + }, + "hiResCheckTitle": "Hi-Res Authenticity", + "@hiResCheckTitle": { + "description": "Title of the fake Hi-Res check card" + }, + "hiResCheckDescription": "Detect upsampled or bit-padded fake Hi-Res files", + "@hiResCheckDescription": { + "description": "Explains what the Hi-Res authenticity check does" + }, + "hiResCheckRun": "Check", + "@hiResCheckRun": { + "description": "Button that starts the Hi-Res authenticity check" + }, + "hiResCheckChecking": "Checking Hi-Res authenticity...", + "@hiResCheckChecking": { + "description": "Loading text while the Hi-Res check runs" + }, + "hiResCheckVerdictFake": "Likely fake Hi-Res", + "@hiResCheckVerdictFake": { + "description": "Verdict: the file claims Hi-Res but does not measure as it" + }, + "hiResCheckVerdictGenuine": "Measures as genuine Hi-Res", + "@hiResCheckVerdictGenuine": { + "description": "Verdict: no upsampling or padded bit depth found" + }, + "hiResCheckVerdictStandard": "Standard definition, nothing to flag", + "@hiResCheckVerdictStandard": { + "description": "Verdict: neither sample rate nor bit depth claims Hi-Res" + }, + "hiResCheckVerdictInconclusive": "Inconclusive: the analyzed segment is too quiet or short", + "@hiResCheckVerdictInconclusive": { + "description": "Verdict: analysis could not reach a reliable conclusion" + }, + "hiResCheckUnsupported": "Only FLAC and WAV files can be checked", + "@hiResCheckUnsupported": { + "description": "Shown when the file format cannot be decoded by the Hi-Res check" + }, + "hiResCheckCutoff": "Content cutoff", + "@hiResCheckCutoff": { + "description": "Label for the highest frequency with real content" + }, + "hiResCheckBitsInUse": "Bits in use", + "@hiResCheckBitsInUse": { + "description": "Label for effective vs declared bit depth" + }, + "hiResCheckDisclaimer": "The spectrum stops early, but nothing proves it was upsampled: it may be a genuine master low-pass filtered in mastering. It is not replaced automatically.", + "@hiResCheckDisclaimer": { + "description": "Caveat shown under a fake Hi-Res verdict" + }, + "hiResCheckFailed": "Hi-Res check failed: {error}", + "@hiResCheckFailed": { + "description": "Error shown when the Hi-Res check fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "hiResCheckReasonRate": "Declares {sampleRate} but content stops at ~{cutoff}", + "@hiResCheckReasonRate": { + "description": "Reason for a fake verdict caused by upsampling", + "placeholders": { + "sampleRate": { + "type": "String" + }, + "cutoff": { + "type": "String" + } + } + }, + "hiResCheckReasonDepth": "Declares {declared}-bit but only {effective} bits carry data", + "@hiResCheckReasonDepth": { + "description": "Reason for a fake verdict caused by padded bit depth", + "placeholders": { + "declared": { + "type": "int" + }, + "effective": { + "type": "int" + } + } + }, "audioAnalysisRescanning": "Re-analyzing audio...", "@audioAnalysisRescanning": { "description": "Loading text while audio is being re-analyzed after an explicit refresh" @@ -6047,6 +6306,45 @@ "@nowPlayingDetails": { "description": "Menu item and section title for track metadata details" }, + "nowPlayingSleepTimer": "Sleep timer", + "@nowPlayingSleepTimer": { + "description": "Menu item and sheet title for the playback sleep timer" + }, + "nowPlayingSleepTimerActive": "Ends at {time}", + "@nowPlayingSleepTimerActive": { + "description": "Active sleep timer deadline shown in the player menu", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "nowPlayingSleepTimerMinutes": "{minutes, plural, =1{1 minute} other{{minutes} minutes}}", + "@nowPlayingSleepTimerMinutes": { + "description": "Duration choice for the playback sleep timer", + "placeholders": { + "minutes": { + "type": "int" + } + } + }, + "nowPlayingSleepTimerOff": "Turn off sleep timer", + "@nowPlayingSleepTimerOff": { + "description": "Action to cancel the active playback sleep timer" + }, + "nowPlayingSleepTimerSet": "Sleep timer set for {duration}", + "@nowPlayingSleepTimerSet": { + "description": "Confirmation after setting the playback sleep timer", + "placeholders": { + "duration": { + "type": "String" + } + } + }, + "nowPlayingSleepTimerCancelled": "Sleep timer turned off", + "@nowPlayingSleepTimerCancelled": { + "description": "Confirmation after cancelling the playback sleep timer" + }, "nowPlayingOpenInExternalPlayer": "Open in external player", "@nowPlayingOpenInExternalPlayer": { "description": "Menu item to open the current track in an external player" @@ -6389,6 +6687,15 @@ "@extensionVerificationBrowserInApp": { "description": "Chip label for in-app browser verification mode" }, + "extensionVerificationUnavailable": "No verification page is available for {extension}. Retry the download to request a new challenge.", + "@extensionVerificationUnavailable": { + "description": "Shown when the app cannot retrieve a pending verification challenge", + "placeholders": { + "extension": { + "type": "String" + } + } + }, "extensionVerificationHelpTitleManual": "Open verification manually", "@extensionVerificationHelpTitleManual": { "description": "Dialog title when automatic browser launch for verification fails" @@ -6478,6 +6785,9 @@ "@metadataCopyField": { "description": "Metadata menu action that copies the selected key and value" }, + "mornyeShowTabs": "Show tabs", + "mornyeSearch": "Search", + "mornyeContinuePlaying": "Continue Playing", "metadataCopyAll": "Copy all metadata", "@metadataCopyAll": { "description": "Metadata menu action that copies every visible key and value" @@ -6490,6 +6800,28 @@ "@optionsEmbeddedCoverSizeDescription": { "description": "Description shown in the embedded cover size picker" }, + "mornyeFavorite": "Favorite", + "mornyeGoToArtist": "Go to Artist", + "@mornyeFavorite": { + "description": "Compact context menu action that adds a track to Loved" + }, + "mornyeFavorited": "Favorited", + "@mornyeFavorited": { + "description": "Selected state of the compact favorite action" + }, + "autoMixDescription": "Blend songs with beat matching and pitch-preserving tempo adjustment. Uses crossfade when beats cannot be matched.", + "autoMixOn": "AutoMix on", + "autoMixOff": "AutoMix off", + "profileTitle": "Profile", + "profileSetUp": "Set up your profile", + "profileEdit": "Edit name and photo", + "backupIncludesProfile": "Includes your profile name and photo", + "profileName": "Name", + "profileNameHint": "Your name", + "profileChangePhoto": "Choose photo", + "profileRemovePhoto": "Remove photo", + "profilePhotoError": "Choose a valid image smaller than 20 MB.", + "profileSaveError": "Could not save your profile. Please try again.", "optionsEmbeddedCoverSizeOriginal": "Original resolution", "@optionsEmbeddedCoverSizeOriginal": { "description": "Option that preserves the provider artwork at its original resolution" diff --git a/lib/l10n/arb/app_pt_PT.arb b/lib/l10n/arb/app_pt_PT.arb index 7f436490..e2c5809f 100644 --- a/lib/l10n/arb/app_pt_PT.arb +++ b/lib/l10n/arb/app_pt_PT.arb @@ -1,78 +1,278 @@ { + "upgradeIntroWelcome": "Welcome to\nSpotiFLAC-Mobile 5.0", + "upgradeIntroThemeTitle": "Make it\nyour own.", + "upgradeIntroThemeBody": "Choose a look. Your choice applies immediately, and you can change it later in Appearance.", + "upgradeIntroThemeMaterialBody": "The familiar layout, with Material controls and your accent color.", + "upgradeIntroThemeMornyeBody": "Glass navigation, a redesigned Library and an immersive player.", + "upgradeIntroRustTitle": "A new engine.\nBuilt with Rust.", + "upgradeIntroRustBody": "In 5.0, the app’s backend has moved from Go to Rust. It is the engine working behind the screens you use every day.", + "upgradeIntroRustEngineTitle": "Working behind the scenes", + "upgradeIntroRustEngineBody": "Rust handles downloads, audio metadata, library scanning and the extension runtime on Android and iOS.", + "upgradeIntroRustMemoryTitle": "More careful with memory", + "upgradeIntroRustMemoryBody": "Reused buffers and fewer copies reduce temporary allocations when processing artwork and extension data.", + "upgradeIntroRustKeepTitle": "Keep your music", + "upgradeIntroRustKeepBody": "No need to download your collection again. Your saved music and settings stay in place, with no new setup required.", + "upgradeIntroWelcomeBody": "A quick look at what has changed, and where to find it.", + "upgradeIntroMornyeBody": "A new look for your player, lyrics and navigation.", + "upgradeIntroLibrarySummary": "Browse your music by playlist, artist or album.", + "upgradeIntroRepoSummary": "Choose your music sources and providers through extensions.", + "upgradeIntroLibraryTitle": "Get to know\nyour Library.", + "upgradeIntroLibraryBody": "In Mornye, browse by category or find your albums in Recently Added.", + "upgradeIntroDownloadsBody": "Pause and retry from Downloads at the top right. Finished music moves to Recently Added.", + "upgradeIntroSearchBody": "Search saved music here. The separate Search tab looks through your extensions.", + "upgradeIntroPlayerTitle": "Set up\nyour player.", + "upgradeIntroPlayerBody": "You can change your theme and playback options at any time. Here is where to find them.", + "upgradeIntroAppearanceBody": "Change themes in Settings → Appearance. In Mornye, scroll down for compact navigation; scroll up to expand it.", + "upgradeIntroAutoMixBody": "Match tempo and beats between tracks. Enable it in Settings → Local Library → Playback. Off by default.", + "upgradeIntroSettingsBody": "In Mornye, tap your profile on Home to open Settings and edit your name and photo.", + "upgradeIntroSkip": "Skip", + "upgradeIntroContinue": "Continue", + "upgradeIntroDone": "Start listening", + "upgradeIntroReplay": "What’s new in 5.0", + "cacheMotionArtwork": "Offline motion covers", + "cacheMotionArtworkDesc": "Album videos saved with downloads. Removing them keeps your music files and static covers.", + "nowPlayingVolume": "Volume", + "@nowPlayingVolume": { + "description": "System volume control label in the Mornye player" + }, + "appearanceStyle": "App Style", + "@appearanceStyle": { + "description": "Appearance section for choosing the app visual style" + }, + "discordRichPresence": "Discord Rich Presence", + "discordPresenceDescription": "Share the track playing in the built-in player on Discord. Requires Discord to be installed and signed in.", + "discordPresenceMissing": "Install Discord and sign in, then turn this setting off and on again.", + "discordPresenceUnavailable": "Discord Rich Presence is unavailable in this build or on this device.", "@@locale": "pt_PT", "@@last_modified": "2026-04-28", - "libraryEnableLocalLibrarySubtitle": "Scan and track your existing music", - "@libraryEnableLocalLibrarySubtitle": { - "description": "Subtitle for enable toggle" + "appName": "SpotiFLAC Mobile", + "@appName": { + "description": "App name - DO NOT TRANSLATE" }, - "@audioAnalysisCodec": { - "description": "Audio codec metric label" + "navHome": "Início", + "@navHome": { + "description": "Bottom navigation - Home tab" }, - "extensionUtilityFunctions": "Utility Functions", - "@extensionUtilityFunctions": { - "description": "Capability label for utility-only extensions" + "navLibrary": "Biblioteca", + "@navLibrary": { + "description": "Bottom navigation - Library tab" }, - "logClearLogsMessage": "Tem certeza de que deseja limpar todos os registros?", - "@logClearLogsMessage": { - "description": "Clear logs confirmation message" + "navSettings": "Configurações", + "@navSettings": { + "description": "Bottom navigation - Settings tab" }, - "@storeClearFilters": { - "description": "Button to clear all filters" + "navStore": "Repo", + "@navStore": { + "description": "Bottom navigation - Extension repo tab" }, - "cacheCleanupUnused": "Cleanup unused data", - "@cacheCleanupUnused": { - "description": "Action title for cleaning unused entries" + "homeTitle": "Início", + "@homeTitle": { + "description": "Home screen title" }, - "trackConvertDitherNone": "None", - "@trackConvertDitherNone": { - "description": "Lossless conversion dither option with no dithering applied" + "homeSubtitle": "Cole um URL compatível ou pesquise por nome", + "@homeSubtitle": { + "description": "Subtitle shown below search box" }, - "libraryTracksUnit": "{count, plural, =1{track} other{tracks}}", - "@libraryTracksUnit": { - "description": "Unit label for tracks count (without the number itself)", + "homeEmptyTitle": "Ainda não há provedores de pesquisa", + "@homeEmptyTitle": { + "description": "Title shown on home when no providers are available yet" + }, + "homeEmptySubtitle": "Instale uma extensão para continuar.", + "@homeEmptySubtitle": { + "description": "Subtitle shown on home when no providers are available yet" + }, + "homeSupports": "Suporte: Faixas, Álbuns, Playlists, URLs de Artista", + "@homeSupports": { + "description": "Info text about supported URL types" + }, + "homeRecent": "Recentes", + "@homeRecent": { + "description": "Section header for recent searches" + }, + "historyFilterAll": "Tudo", + "@historyFilterAll": { + "description": "Filter chip - show all items" + }, + "historyFilterAlbums": "Álbuns", + "@historyFilterAlbums": { + "description": "Filter chip - show albums only" + }, + "historyFilterSingles": "Singles", + "@historyFilterSingles": { + "description": "Filter chip - show singles only" + }, + "libraryRecentlyAdded": "Recently Added", + "libraryDownloads": "Downloads", + "libraryNoActiveDownloads": "No active downloads", + "librarySearchHint": "Search your library", + "libraryEmptyCollection": "Your music will appear here", + "historySearchHint": "Pesquisar histórico...", + "@historySearchHint": { + "description": "Search bar placeholder in history" + }, + "settingsTitle": "Configurações", + "@settingsTitle": { + "description": "Settings screen title" + }, + "settingsDownload": "", + "@settingsDownload": { + "description": "Settings section - download options" + }, + "settingsAppearance": "Aparência", + "@settingsAppearance": { + "description": "Settings section - visual customization" + }, + "settingsExtensions": "Extensões", + "@settingsExtensions": { + "description": "Settings section - extension management" + }, + "settingsAbout": "Sobre", + "@settingsAbout": { + "description": "Settings section - app info" + }, + "downloadTitle": "", + "@downloadTitle": { + "description": "Download settings page title" + }, + "downloadAskQualitySubtitle": "Mostrar seletor de qualidade para cada download", + "@downloadAskQualitySubtitle": { + "description": "Subtitle for ask quality toggle" + }, + "downloadFilenameFormat": "Formato do Nome do Arquivo", + "@downloadFilenameFormat": { + "description": "Setting for output filename pattern" + }, + "downloadSingleFilenameFormat": "Formato do nome do arquivo para Singles", + "@downloadSingleFilenameFormat": { + "description": "Setting for output filename pattern for singles/EPs" + }, + "downloadSingleFilenameFormatDescription": "Padrão de nome de arquivo para Singles e EPs. Utiliza as mesmas tags do formato de álbum.", + "@downloadSingleFilenameFormatDescription": { + "description": "Subtitle description for single filename format setting" + }, + "downloadFolderOrganization": "Organização de Pastas", + "@downloadFolderOrganization": { + "description": "Title of the folder organization picker bottom sheet" + }, + "appearanceTitle": "Aparência", + "@appearanceTitle": { + "description": "Appearance settings page title" + }, + "appearanceThemeSystem": "Sistema", + "@appearanceThemeSystem": { + "description": "Follow system theme" + }, + "appearanceThemeLight": "Claro", + "@appearanceThemeLight": { + "description": "Light theme" + }, + "appearanceThemeDark": "Escuro", + "@appearanceThemeDark": { + "description": "Dark theme" + }, + "appearanceDynamicColor": "Cores Dinâmicas", + "@appearanceDynamicColor": { + "description": "Material You dynamic colors" + }, + "appearanceDynamicColorSubtitle": "Usar cores do seu papel de parede", + "@appearanceDynamicColorSubtitle": { + "description": "Subtitle for dynamic color" + }, + "appearanceHistoryView": "Visualização do Histórico", + "@appearanceHistoryView": { + "description": "Layout style for history" + }, + "appearanceHistoryViewList": "Lista", + "@appearanceHistoryViewList": { + "description": "List layout option" + }, + "appearanceHistoryViewGrid": "Grade", + "@appearanceHistoryViewGrid": { + "description": "Grid layout option" + }, + "optionsPrimaryProvider": "Provedor Primário", + "@optionsPrimaryProvider": { + "description": "Main search provider setting" + }, + "optionsPrimaryProviderSubtitle": "Serviço usado para pesquisar por faixa ou nome do álbum", + "@optionsPrimaryProviderSubtitle": { + "description": "Subtitle for primary provider" + }, + "optionsUsingExtension": "Usando a extensão: {extensionName}", + "@optionsUsingExtension": { + "description": "Shows active extension name", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "optionsDefaultSearchTab": "Aba de pesquisa padrão", + "@optionsDefaultSearchTab": { + "description": "Title for the preferred default search tab setting" + }, + "optionsDefaultSearchTabSubtitle": "Escolha qual aba será aberta primeiro para novos resultados de pesquisa.", + "@optionsDefaultSearchTabSubtitle": { + "description": "Subtitle for the preferred default search tab setting" + }, + "optionsAutoFallback": "Fallback Automático", + "@optionsAutoFallback": { + "description": "Auto-retry with other services" + }, + "optionsAutoFallbackSubtitle": "Tentar outros serviços se o download falhar", + "@optionsAutoFallbackSubtitle": { + "description": "Subtitle for auto fallback" + }, + "optionsEmbedLyrics": "Incorporar Letras", + "@optionsEmbedLyrics": { + "description": "Embed lyrics in audio files" + }, + "optionsEmbedLyricsSubtitle": "Salve letras sincronizadas ao lado das suas faixas baixadas", + "@optionsEmbedLyricsSubtitle": { + "description": "Subtitle for embed lyrics" + }, + "optionsReplayGain": "ReplayGain", + "@optionsReplayGain": { + "description": "Title for ReplayGain setting toggle" + }, + "optionsReplayGainSubtitleOn": "Analisar o volume e incorporar tags ReplayGain (EBU R128)", + "@optionsReplayGainSubtitleOn": { + "description": "Subtitle when ReplayGain is enabled" + }, + "optionsReplayGainSubtitleOff": "Desativado: sem etiquetas de normalização de intensidade", + "@optionsReplayGainSubtitleOff": { + "description": "Subtitle when ReplayGain is disabled" + }, + "trackReplayGain": "Reanalisar ReplayGain", + "@trackReplayGain": { + "description": "Three-dot menu option to scan loudness and write ReplayGain tags" + }, + "trackReplayGainScanning": "Analisando o volume...", + "@trackReplayGainScanning": { + "description": "Snackbar/progress message while scanning ReplayGain for a single track" + }, + "trackReplayGainSuccess": "Etiquetas ReplayGain adicionadas", + "@trackReplayGainSuccess": { + "description": "Snackbar message after ReplayGain tags written for a single track" + }, + "trackReplayGainFailed": "Falha ao adicionar etiquetas ReplayGain", + "@trackReplayGainFailed": { + "description": "Snackbar message when ReplayGain scan/write fails" + }, + "selectionReplayGainCount": "ReplayGain ({count})", + "@selectionReplayGainCount": { + "description": "Batch selection action button label for ReplayGain", "placeholders": { "count": { "type": "int" } } }, - "folderOrganizationNone": "Nenhuma organização", - "@folderOrganizationNone": { - "description": "Folder option - flat structure" - }, - "@storeRepoUrlHint": { - "description": "Hint/placeholder for the repository URL input field" - }, - "@trackConvertConfirmTitle": { - "description": "Confirmation dialog title" - }, - "@extensionPatternsCount": { - "description": "URL patterns count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "audioAnalysisContainer": "Container", - "@audioAnalysisContainer": { - "description": "Audio container metric label" - }, - "libraryAutoScanOff": "Desligar", - "@libraryAutoScanOff": { - "description": "Auto scan disabled" - }, - "shareSheetLinkCopied": "{service} link copied", - "@shareSheetLinkCopied": { - "description": "Snackbar after copying a cross-service link", - "placeholders": { - "service": {} - } - }, - "providerPriorityFallbackExtensionsDescription": "Escolha quais extensões de download instaladas podem ser usadas durante a alternativa automática.", - "@providerPriorityFallbackExtensionsDescription": { - "description": "Section description for extension fallback selection" + "replayGainBatchConfirmTitle": "Adicionar ReplayGain", + "@replayGainBatchConfirmTitle": { + "description": "Title of the batch ReplayGain confirmation dialog" }, + "replayGainBatchConfirmMessage": "Analisar o volume e gravar etiquetas ReplayGain em {count} faixa(s)?", "@replayGainBatchConfirmMessage": { "description": "Message of the batch ReplayGain confirmation dialog", "placeholders": { @@ -81,75 +281,12 @@ } } }, - "@extensionsHomeFeedUse": { - "description": "Extensions page - subtitle for a specific extension home feed option", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "selectionShareCount": "Share {count} {count, plural, =1{track} other{tracks}}", - "@selectionShareCount": { - "description": "Share button text with count in selection mode", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@storeExtensionsCount": { - "description": "Store extension result count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@logSearchHint": { - "description": "Log search placeholder" - }, - "@audioAnalysisSamples": { - "description": "Total samples metric label" - }, - "trackCoverReplace": "Replace Cover", - "@trackCoverReplace": { - "description": "Button label for replacing selected cover art" - }, - "@discographyAddedToQueue": { - "description": "Snackbar - tracks added from discography", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadAppleElrcWordSyncEnabled": "Raw word-by-word timestamps preserved", - "@downloadAppleElrcWordSyncEnabled": { - "description": "Subtitle when Apple Music eLRC word sync is enabled" - }, - "@nowPlayingDetails": { - "description": "Menu item and section title for track metadata details" - }, - "@trackGenre": { - "description": "Metadata label - music genre" - }, - "recentTypeSong": "Música", - "@recentTypeSong": { - "description": "Recent access item type - song/track" - }, - "logShareLogs": "Compartilhar registros", - "@logShareLogs": { - "description": "Share button tooltip" - }, - "@storeFilterLyrics": { - "description": "Repo filter - lyrics providers" - }, - "extensionsInstallButton": "Instalar Extensão", - "@extensionsInstallButton": { - "description": "Button to install extension from file" + "replayGainBatchAnalyzing": "Analisando ReplayGain...", + "@replayGainBatchAnalyzing": { + "description": "Progress dialog title while batch scanning ReplayGain" }, "replayGainBatchSuccess": "ReplayGain adicionado a {success} de {total} faixas", + "replayGainUnsupportedDecoder": "Some tracks could not be analyzed because their audio codec is not supported by the ReplayGain decoder. Their files were not changed.", "@replayGainBatchSuccess": { "description": "Snackbar after batch ReplayGain completes", "placeholders": { @@ -161,548 +298,536 @@ } } }, - "nowPlayingMinimize": "Minimize", - "@nowPlayingMinimize": { - "description": "Tooltip for minimizing the now playing screen" + "optionsArtistTagMode": "Modo de etiqueta de artista", + "@optionsArtistTagMode": { + "description": "Setting title for how artist metadata is written into files" }, - "logIssueNetworkErrorSuggestion": "Check your internet connection", - "@logIssueNetworkErrorSuggestion": { - "description": "Diagnostic badge suggestion for generic network errors" + "optionsArtistTagModeDescription": "Escolha como múltiplos artistas são escritos em etiquetas incorporadas.", + "@optionsArtistTagModeDescription": { + "description": "Bottom-sheet description for artist tag mode setting" }, - "extensionsNoExtensions": "Nenhuma extensão instalada", - "@extensionsNoExtensions": { - "description": "Empty state - no extensions" + "optionsArtistTagModeJoined": "Valor único combinado", + "@optionsArtistTagModeJoined": { + "description": "Artist tag mode option that joins multiple artists into one value" }, - "@cacheRefresh": { - "description": "Tooltip for refresh button on cache management page" + "optionsArtistTagModeJoinedSubtitle": "Escreva um valor ARTIST único como \"Artista A, Artista B\" para máxima compatibilidade com o ‘player’", + "@optionsArtistTagModeJoinedSubtitle": { + "description": "Subtitle for joined artist tag mode" }, - "@snackbarHistoryCleared": { - "description": "Snackbar - history deleted" + "optionsArtistTagModeSplitVorbis": "Dividir etiquetas para FLAC/Opus", + "@optionsArtistTagModeSplitVorbis": { + "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" }, - "cueSplitFailed": "CUE split failed", - "@cueSplitFailed": { - "description": "Snackbar when CUE split fails" - }, - "trackConvertLosslessSuffix": "Lossless", - "@trackConvertLosslessSuffix": { - "description": "Suffix used in converted lossless quality labels" - }, - "homeSubtitle": "Cole um URL compatível ou pesquise por nome", - "@homeSubtitle": { - "description": "Subtitle shown below search box" - }, - "selectionBatchConvertConfirmMessageLossless": "Convert {count} {count, plural, =1{track} other{tracks}} to {format}? (Lossless — no quality loss)\n\nOriginal files will be deleted after conversion.", - "@selectionBatchConvertConfirmMessageLossless": { - "description": "Confirmation dialog message for lossless batch conversion", - "placeholders": { - "count": { - "type": "int" - }, - "format": { - "type": "String" - } - } - }, - "@extensionVerificationHelpMessageManual": { - "description": "Dialog message when automatic browser launch for verification fails" - }, - "queueRateLimitMessage": "This track may still be available. Wait a few minutes, reduce parallel downloads, then retry.", - "@queueRateLimitMessage": { - "description": "Explanation shown on a failed queue item when the download service rate limits requests" - }, - "searchSortDateOldest": "Data de lançamento (mais antiga)", - "@searchSortDateOldest": { - "description": "Sort option - oldest release first" - }, - "nowPlayingShuffleOn": "Shuffle on", - "@nowPlayingShuffleOn": { - "description": "Tooltip when shuffle mode is enabled" - }, - "sectionColor": "Cor", - "@sectionColor": { - "description": "Settings section header" - }, - "@providerPriorityFallbackExtensionsHint": { - "description": "Hint below the extension fallback selection list" - }, - "cacheCoverImage": "Cache da imagem de capa", - "@cacheCoverImage": { - "description": "Cache item title for persistent cover images" - }, - "@navSettings": { - "description": "Bottom navigation - Settings tab" - }, - "@trackCoverReplaceNotice": { - "description": "Notice shown when a new cover has been selected but not saved yet" - }, - "cueSplitConfirmTitle": "Split CUE Album", - "@cueSplitConfirmTitle": { - "description": "CUE split confirmation dialog title" - }, - "@trackDeleteConfirmMessage": { - "description": "Delete confirmation message" - }, - "cacheClearSuccess": "Cleared: {target}", - "@cacheClearSuccess": { - "description": "Snackbar after clearing selected cache", - "placeholders": { - "target": { - "type": "String" - } - } - }, - "editMetadataFieldCover": "Cover Art", - "@editMetadataFieldCover": { - "description": "Chip label for cover art field in auto-fill selector" - }, - "snackbarSelectExtFile": "Por favor, selecione um arquivo .spotiflac-ext", - "@snackbarSelectExtFile": { - "description": "Snackbar - wrong file type selected" - }, - "libraryFilterFormat": "Format", - "@libraryFilterFormat": { - "description": "Filter section - file format" - }, - "@downloadLossyAac": { - "description": "Lossy format option - AAC in M4A container at 320kbps" - }, - "@setupNext": { - "description": "Next button text" - }, - "@releaseTypeSingle": { - "description": "Badge label for single releases" - }, - "@optionsDefaultSearchTab": { - "description": "Title for the preferred default search tab setting" - }, - "trackConvertLosslessOutputWithCap": "Lossless output with {quality} cap", - "@trackConvertLosslessOutputWithCap": { - "description": "Hint shown when lossless conversion will cap bit depth or sample rate", - "placeholders": { - "quality": { - "type": "String" - } - } - }, - "bulkDownloadSelectPlaylists": "Select playlists to download", - "@bulkDownloadSelectPlaylists": { - "description": "Button label when no playlists are selected for download" - }, - "artistOptionAddToFavorites": "Add to Favorite Artists", - "@artistOptionAddToFavorites": { - "description": "Action label - add artist to favorite artists" - }, - "@timeJustNow": { - "description": "Relative time - less than a minute ago" - }, - "downloadLossyOpus256": "Opus 256kbps", - "@downloadLossyOpus256": { - "description": "Lossy format option - Opus 256kbps" - }, - "discographySinglesOnlySubtitle": "{count} faixas de {albumCount} singles", - "@discographySinglesOnlySubtitle": { - "description": "Subtitle showing singles tracks count", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } + "optionsArtistTagModeSplitVorbisSubtitle": "Escrever uma etiqueta de artista por artista para FLAC e Opus; MP3 e M4A permanecem combinados.", + "@optionsArtistTagModeSplitVorbisSubtitle": { + "description": "Subtitle for split Vorbis artist tag mode" }, "optionsExtensionStore": "Repositório de extensões", "@optionsExtensionStore": { "description": "Show/hide repo tab" }, - "libraryDownloadsHistoryExcluded": "{count} from Downloads history (excluded from list)", - "@libraryDownloadsHistoryExcluded": { - "description": "Library count note for downloaded history items excluded from the local list", - "placeholders": { - "count": { - "type": "int" - } - } + "optionsExtensionStoreSubtitle": "Mostrar aba de repositório na navegação", + "@optionsExtensionStoreSubtitle": { + "description": "Subtitle for extension repo toggle" }, - "@errorUrlFetchFailed": { - "description": "Error message - generic URL fetch failure" + "optionsCheckUpdates": "Procurar Atualizações", + "@optionsCheckUpdates": { + "description": "Auto update check toggle" }, - "@trackOptionAddToWishlist": { - "description": "Bottom sheet action label - add track to wishlist" + "optionsCheckUpdatesSubtitle": "Notificar quando uma nova versão estiver disponível", + "@optionsCheckUpdatesSubtitle": { + "description": "Subtitle for update check" }, - "discographySinglesOnly": "Somente Singles e EPs", - "@discographySinglesOnly": { - "description": "Option - download only singles" + "optionsUpdateChannel": "Canal de Atualização", + "@optionsUpdateChannel": { + "description": "Stable vs preview releases" }, - "@downloadSongLinkRegionDesc": { - "description": "Description in SongLink region picker" + "optionsUpdateChannelStable": "Somente versões estáveis", + "@optionsUpdateChannelStable": { + "description": "Only stable updates" }, - "notifEmbeddingMetadata": "Embedding metadata...", - "@notifEmbeddingMetadata": { - "description": "Notification body while embedding metadata into a downloaded track" + "optionsUpdateChannelPreview": "Obter versões de prévia", + "@optionsUpdateChannelPreview": { + "description": "Include beta/preview updates" }, - "@settingsLocalLibrarySubtitle": { - "description": "Subtitle for local library settings" + "optionsUpdateChannelWarning": "A prévia pode conter erros ou recursos incompletos", + "@optionsUpdateChannelWarning": { + "description": "Warning about preview channel" }, - "@downloadLocationSubtitle": { - "description": "Subtitle shown in the download location picker sheet" + "optionsClearHistory": "Limpar Histórico de Download", + "@optionsClearHistory": { + "description": "Delete all download history" }, - "trackConvertOriginalQuality": "Original quality", - "@trackConvertOriginalQuality": { - "description": "Label when no bit depth or sample rate cap is applied during lossless conversion" + "optionsClearHistorySubtitle": "Remover todas as faixas baixadas do histórico", + "@optionsClearHistorySubtitle": { + "description": "Subtitle for clear history" }, - "nowPlayingTabLyrics": "Lyrics", - "@nowPlayingTabLyrics": { - "description": "Tab label for the lyrics view" + "optionsDetailedLogging": "Registro detalhado", + "@optionsDetailedLogging": { + "description": "Enable verbose logs for debugging" }, - "selectionConvertCount": "Convert {count} {count, plural, =1{track} other{tracks}}", - "@selectionConvertCount": { - "description": "Convert button text with count in selection mode", - "placeholders": { - "count": { - "type": "int" - } - } + "optionsDetailedLoggingOn": "Registros detalhados estão sendo gravados", + "@optionsDetailedLoggingOn": { + "description": "Status when logging enabled" }, - "@extensionsInstalledSection": { - "description": "Section header - installed extensions" + "optionsDetailedLoggingOff": "Habilitar para relatórios de erros", + "@optionsDetailedLoggingOff": { + "description": "Status when logging disabled" }, - "@downloadNetworkCompatibilityModeDisabled": { - "description": "Subtitle when network compatibility mode is off" + "extensionsTitle": "Extensões", + "@extensionsTitle": { + "description": "Extensions page title" }, - "nowPlayingShuffleLibrary": "Shuffle library", - "@nowPlayingShuffleLibrary": { - "description": "Button label to shuffle and play the entire local library" + "extensionsDisabled": "Desabilitado", + "@extensionsDisabled": { + "description": "Extension status - inactive" }, - "trackReEnrichFieldCover": "Cover Art", - "@trackReEnrichFieldCover": { - "description": "Checkbox label for cover art field in re-enrich" - }, - "tutorialExtensionsTip3": "Connect accounts when required and keep extensions up to date", - "@tutorialExtensionsTip3": { - "description": "Tutorial extensions tip 3" - }, - "@cacheCleanupUnusedDesc": { - "description": "Description of what cleanup unused data does" - }, - "a11yOpenAlbum": "Open album {albumName}", - "@a11yOpenAlbum": { - "description": "Accessibility label for opening an album", - "placeholders": { - "albumName": { - "type": "String" - } - } - }, - "@settingsLyrics": { - "description": "Settings menu item - lyrics settings" - }, - "nowPlayingQueueEmpty": "Queue is empty", - "@nowPlayingQueueEmpty": { - "description": "Empty state when the playback queue has no items" - }, - "@settingsDownload": { - "description": "Settings section - download options" - }, - "notifTracksDownloadedSuccess": "{count, plural, =1{1 track downloaded successfully} other{{count} tracks downloaded successfully}}", - "@notifTracksDownloadedSuccess": { - "description": "Notification body for queue complete - how many tracks were downloaded", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storeCategoryDownload": "Download", - "@storeCategoryDownload": { - "description": "Store extension category - download" - }, - "aboutTelegramChannel": "Canal do Telegram", - "@aboutTelegramChannel": { - "description": "Link to Telegram channel" - }, - "@downloadedAlbumDiscHeader": { - "description": "Header for disc separator in multi-disc albums", - "placeholders": { - "discNumber": { - "type": "int", - "example": "1" - } - } - }, - "@recentEmpty": { - "description": "Empty state text for recent access list" - }, - "@backupRestoreConfirmMessage": { - "description": "Confirmation dialog message before restoring a backup" - }, - "@shareSheetCopyLink": { - "description": "Tooltip for copying a cross-service link" - }, - "regionCountryID": "Indonesia", - "@regionCountryID": { - "description": "Country name for SongLink region picker" - }, - "@libraryInLibrary": { - "description": "Badge shown on tracks that exist in local library" - }, - "extensionPostProcessingHooks": "Ganchos de Pós-Processamento", - "@extensionPostProcessingHooks": { - "description": "Capability - post-processing" - }, - "@setupGrantPermission": { - "description": "Button to request permission" - }, - "storeFilterDownload": "Baixar", - "@storeFilterDownload": { - "description": "Repo filter - download providers" - }, - "@collectionAddToPlaylist": { - "description": "Action to add a track to user playlist" - }, - "@discographyFailedToFetch": { - "description": "Error - some albums failed to load" - }, - "@updateWhatsNew": { - "description": "Changelog section title" - }, - "@setupLanguageDescription": { - "description": "Description for the language selection step in setup" - }, - "dialogDeleteSelectedTitle": "Apagar Selecionados", - "@dialogDeleteSelectedTitle": { - "description": "Dialog title - delete selected items" - }, - "trackCoverPick": "Pick Cover", - "@trackCoverPick": { - "description": "Button label for selecting cover art" - }, - "@collectionCreatePlaylist": { - "description": "Action to create a new playlist" - }, - "selectionBatchConvertSuccess": "Converted {success} of {total} tracks to {format}", - "@selectionBatchConvertSuccess": { - "description": "Snackbar after batch conversion completes", - "placeholders": { - "success": { - "type": "int" - }, - "total": { - "type": "int" - }, - "format": { - "type": "String" - } - } - }, - "qualityHiResFlacMax": "FLAC Max de alta resolução", - "@qualityHiResFlacMax": { - "description": "Quality option - maximum resolution FLAC" - }, - "audioAnalysisStereo": "Stereo", - "@audioAnalysisStereo": { - "description": "Audio channel layout label - stereo" - }, - "backupExportButton": "Create backup file", - "@backupExportButton": { - "description": "Button to create and share a backup file" - }, - "settingsApp": "App", - "@settingsApp": { - "description": "Settings menu item - app settings" - }, - "clickableInformationUnavailable": "{type} information not available", - "@clickableInformationUnavailable": { - "description": "Snackbar shown when clickable metadata cannot open a destination", - "placeholders": { - "type": { - "type": "String" - } - } - }, - "@logFilterLevel": { - "description": "Filter by log level" - }, - "sectionTheme": "Tema", - "@sectionTheme": { - "description": "Settings section header" - }, - "@extensionActionFailed": { - "description": "Fallback error when an extension action fails without details" - }, - "@downloadAppleElrcWordSync": { - "description": "Setting for preserving Apple Music word-by-word eLRC timestamps" - }, - "@extensionsNoCustomSearch": { - "description": "Empty state - no search providers" - }, - "@collectionPlaylistRemoveCover": { - "description": "Bottom sheet action to remove custom cover image from a playlist" - }, - "@tutorialWelcomeDesc": { - "description": "Tutorial welcome page description" - }, - "@tutorialSearchDesc": { - "description": "Tutorial search page description" - }, - "collectionAddedToWishlist": "\"{trackName}\" added to Wishlist", - "@collectionAddedToWishlist": { - "description": "Snackbar after adding track to wishlist", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "logAffectedDomains": "Affected: {domains}", - "@logAffectedDomains": { - "description": "Affected domains in log issue analysis", - "placeholders": { - "domains": { - "type": "String" - } - } - }, - "@folderOrganizationByArtistSubtitle": { - "description": "Subtitle for artist folder option" - }, - "errorNoTracksFound": "Nenhuma faixa encontrada", - "@errorNoTracksFound": { - "description": "Error - search returned no results" - }, - "providerPriorityTitle": "Prioridade de Provedor", - "@providerPriorityTitle": { - "description": "Provider priority page title" - }, - "@notifUpdateReadyBody": { - "description": "Notification body when app update is ready to install", + "extensionsVersion": "Versão {version}", + "@extensionsVersion": { + "description": "Extension version display", "placeholders": { "version": { "type": "String" } } }, - "@settingsExtensions": { - "description": "Settings section - extension management" + "extensionsUninstall": "Desinstalar", + "@extensionsUninstall": { + "description": "Uninstall extension button" }, - "trackDeleteConfirmTitle": "Remover do dispositivo?", - "@trackDeleteConfirmTitle": { - "description": "Delete confirmation title" + "storeTitle": "Repositório de extensões", + "@storeTitle": { + "description": "Repo screen title" }, - "@settingsDownloadNetwork": { - "description": "Setting for network type preference" + "storeSearch": "Pesquisar extensões...", + "@storeSearch": { + "description": "Repo search placeholder" }, - "downloadProvidersNoneEnabled": "No providers enabled", - "@downloadProvidersNoneEnabled": { - "description": "Shown when no lyrics providers are active" + "storeInstall": "Instalar", + "@storeInstall": { + "description": "Install extension button" }, - "@homeEmptySubtitle": { - "description": "Subtitle shown on home when no providers are available yet" + "storeInstalled": "Instalado", + "@storeInstalled": { + "description": "Already installed badge" }, - "trackReEnrichFieldBasicTags": "Album, Album Artist", - "@trackReEnrichFieldBasicTags": { - "description": "Checkbox label for basic tags in re-enrich (title/artist are never overwritten)" + "storeUpdate": "Atualizar", + "@storeUpdate": { + "description": "Update available button" }, - "@audioAnalysisSpectralCutoff": { - "description": "Estimated spectral cutoff metric label" + "aboutTitle": "Sobre", + "@aboutTitle": { + "description": "About page title" }, - "@logClearLogsTitle": { - "description": "Clear logs dialog title" + "aboutContributors": "Colaboradores", + "@aboutContributors": { + "description": "Section for contributors" }, - "storageModeSafSubtitle": "Escolha qualquer pasta, incluindo o cartão SD", - "@storageModeSafSubtitle": { - "description": "Subtitle for SAF storage mode" + "aboutMobileDeveloper": "Desenvolvedor da versão móvel", + "@aboutMobileDeveloper": { + "description": "Role description for mobile dev" }, - "@notifUpdateProgress": { - "description": "Notification body showing update download progress", + "aboutOriginalCreator": "Criador do SpotiFLAC original", + "@aboutOriginalCreator": { + "description": "Role description for original creator" + }, + "aboutLogoArtist": "O artista talentoso que criou o nosso lindo logotipo do aplicativo!", + "@aboutLogoArtist": { + "description": "Role description for logo artist" + }, + "aboutTranslators": "Tradutores", + "@aboutTranslators": { + "description": "Section for translators" + }, + "aboutSpecialThanks": "Agradecimentos Especiais", + "@aboutSpecialThanks": { + "description": "Section for special thanks" + }, + "aboutLinks": "Links", + "@aboutLinks": { + "description": "Section for external links" + }, + "aboutMobileSource": "Código-fonte do app móvel", + "@aboutMobileSource": { + "description": "Link to mobile GitHub repo" + }, + "aboutPCSource": "Código-fonte do app desktop", + "@aboutPCSource": { + "description": "Link to PC GitHub repo" + }, + "aboutKeepAndroidOpen": "Manter o Android aberto", + "@aboutKeepAndroidOpen": { + "description": "Link to Keep Android Open campaign website" + }, + "aboutReportIssue": "Reportar um problema", + "@aboutReportIssue": { + "description": "Link to report bugs" + }, + "aboutReportIssueSubtitle": "Reporte qualquer problema que encontrar", + "@aboutReportIssueSubtitle": { + "description": "Subtitle for report issue" + }, + "aboutFeatureRequest": "Solicitação de recurso", + "@aboutFeatureRequest": { + "description": "Link to suggest features" + }, + "aboutFeatureRequestSubtitle": "Sugira novos recursos para o aplicativo", + "@aboutFeatureRequestSubtitle": { + "description": "Subtitle for feature request" + }, + "aboutTelegramChannel": "Canal do Telegram", + "@aboutTelegramChannel": { + "description": "Link to Telegram channel" + }, + "aboutTelegramChannelSubtitle": "Anúncios e atualizações", + "@aboutTelegramChannelSubtitle": { + "description": "Subtitle for Telegram channel" + }, + "aboutTelegramChat": "Comunidade do Telegram", + "@aboutTelegramChat": { + "description": "Link to Telegram chat group" + }, + "aboutTelegramChatSubtitle": "Converse com outros usuários", + "@aboutTelegramChatSubtitle": { + "description": "Subtitle for Telegram chat" + }, + "aboutSocial": "Social", + "@aboutSocial": { + "description": "Section for social links" + }, + "aboutApp": "Aplicativo", + "@aboutApp": { + "description": "Section for app info" + }, + "aboutVersion": "Versão", + "@aboutVersion": { + "description": "Version info label" + }, + "aboutBinimumDesc": "O criador do QQDL e da HiFi API. Este projeto ajudou a moldar o suporte a transferências sem perdas.", + "@aboutBinimumDesc": { + "description": "Credit description for binimum" + }, + "aboutSachinsenalDesc": "O criador original do projeto HiFi. Uma base para integração de fontes sem perdas.", + "@aboutSachinsenalDesc": { + "description": "Credit description for sachinsenal0x64" + }, + "aboutUnituneDesc": "Localizador de links de música de código aberto da Flaze, usado para correspondência alternativa entre plataformas.", + "@aboutUnituneDesc": { + "description": "Credit for the UniTune resolver" + }, + "aboutMusicBrainzDesc": "Banco de dados de música aberto mantido pela MetaBrainz e a sua comunidade, usado para registrar referências cruzadas.", + "@aboutMusicBrainzDesc": { + "description": "Credit for the MusicBrainz database" + }, + "aboutSquiglyDesc": "Serviço universal de links de música criado por Liam Macmillan, usado como último recurso para localizar links equivalentes entre plataformas.", + "@aboutSquiglyDesc": { + "description": "Credit for the Squigly resolver" + }, + "aboutAppDescription": "Pesquisar metadados de músicas, gerenciar extensões e organizar sua biblioteca.", + "@aboutAppDescription": { + "description": "App description in header card" + }, + "artistAlbums": "Álbuns", + "@artistAlbums": { + "description": "Section header for artist albums" + }, + "artistSingles": "Singles e EPs", + "@artistSingles": { + "description": "Section header for singles/EPs" + }, + "artistCompilations": "Compilações", + "@artistCompilations": { + "description": "Section header for compilations" + }, + "artistPopular": "Populares", + "@artistPopular": { + "description": "Section header for popular/top tracks" + }, + "artistMonthlyListeners": "{count} ouvintes mensais", + "@artistMonthlyListeners": { + "description": "Monthly listener count display", "placeholders": { - "received": { - "type": "String" - }, - "total": { - "type": "String" - }, - "percentage": { - "type": "int" + "count": { + "type": "String", + "description": "Formatted listener count" } } }, - "downloadUsePrimaryArtistOnlyEnabled": "Featured artists removed from folder name (e.g. Justin Bieber, Quavo → Justin Bieber)", - "@downloadUsePrimaryArtistOnlyEnabled": { - "description": "Subtitle when primary artist only is enabled" + "trackMetadataService": "Serviço", + "@trackMetadataService": { + "description": "Metadata field - download service used" }, - "notifScanningLibrary": "Scanning local library", - "@notifScanningLibrary": { - "description": "Notification title while scanning local library" + "trackMetadataPlay": "Reproduzir", + "@trackMetadataPlay": { + "description": "Action button - play track" }, - "@metadataProvidersSubtitle": { - "description": "Subtitle for metadata provider priority item" + "trackMetadataShare": "Compartilhar", + "@trackMetadataShare": { + "description": "Action button - share track" + }, + "trackMetadataDelete": "Apagar", + "@trackMetadataDelete": { + "description": "Action button - delete track" + }, + "setupGrantPermission": "Conceder Permissão", + "@setupGrantPermission": { + "description": "Button to request permission" + }, + "setupSkip": "Ignorar por enquanto", + "@setupSkip": { + "description": "Skip current step button" + }, + "setupStorageAccessRequired": "Acesso ao Armazenamento Necessário", + "@setupStorageAccessRequired": { + "description": "Title when storage access needed" + }, + "setupStorageAccessMessageAndroid11": "O Android 11+ requer a permissão \"Acesso a Todos os Arquivos\" para salvar arquivos na pasta de download escolhida.", + "@setupStorageAccessMessageAndroid11": { + "description": "Android 11+ specific explanation" + }, + "setupOpenSettings": "Abrir Configurações", + "@setupOpenSettings": { + "description": "Button to open system settings" + }, + "setupPermissionDeniedMessage": "Permissão negada. Por favor, conceda todas as permissões para continuar.", + "@setupPermissionDeniedMessage": { + "description": "Error when permission denied" + }, + "setupPermissionRequired": "Permissão {permissionType} Necessária", + "@setupPermissionRequired": { + "description": "Generic permission required title", + "placeholders": { + "permissionType": { + "type": "String", + "description": "Type of permission (Storage/Notification)" + } + } + }, + "setupPermissionRequiredMessage": "A permissão {permissionType} é necessária para a melhor experiência. Você pode alterar isso mais tarde em Configurações.", + "@setupPermissionRequiredMessage": { + "description": "Generic permission required message", + "placeholders": { + "permissionType": { + "type": "String" + } + } + }, + "setupUseDefaultFolder": "Usar Pasta Padrão?", + "@setupUseDefaultFolder": { + "description": "Dialog title for default folder" + }, + "setupNoFolderSelected": "Nenhuma pasta selecionada. Você gostaria de usar a pasta padrão de música?", + "@setupNoFolderSelected": { + "description": "Prompt when no folder selected" + }, + "setupUseDefault": "Usar Padrão", + "@setupUseDefault": { + "description": "Button to use default folder" + }, + "setupDownloadLocationTitle": "Local do Download", + "@setupDownloadLocationTitle": { + "description": "Download location dialog title" + }, + "setupDownloadLocationIosMessage": "No iOS, downloads são salvos na pasta Documentos do aplicativo. Você pode acessá-los através do app Arquivos.", + "@setupDownloadLocationIosMessage": { + "description": "iOS-specific folder info" + }, + "setupAppDocumentsFolder": "Pasta Documentos do App", + "@setupAppDocumentsFolder": { + "description": "iOS documents folder option" + }, + "setupAppDocumentsFolderSubtitle": "Recomendado - acessível através do aplicativo Arquivos", + "@setupAppDocumentsFolderSubtitle": { + "description": "Subtitle for documents folder" + }, + "setupChooseFromFiles": "Escolher dos Arquivos", + "@setupChooseFromFiles": { + "description": "iOS file picker option" + }, + "setupChooseFromFilesSubtitle": "Selecione o iCloud ou outro local", + "@setupChooseFromFilesSubtitle": { + "description": "Subtitle for file picker" + }, + "setupIosEmptyFolderWarning": "Limitação do iOS: Pastas vazias não podem ser selecionadas. Escolha uma pasta com pelo menos um arquivo.", + "@setupIosEmptyFolderWarning": { + "description": "iOS folder selection warning" + }, + "setupIcloudNotSupported": "O iCloud Drive não é compatível. Use a pasta Documentos do aplicativo.", + "@setupIcloudNotSupported": { + "description": "Error when user selects iCloud Drive on iOS" + }, + "setupDownloadInFlac": "Baixar músicas em qualidade sem perdas e Hi-Res \"alta resolução\"", + "@setupDownloadInFlac": { + "description": "App tagline in setup" + }, + "setupStorageGranted": "Permissão de Armazenamento Concedida!", + "@setupStorageGranted": { + "description": "Success message for storage permission" + }, + "setupStorageRequired": "Permissão de Armazenamento Necessária", + "@setupStorageRequired": { + "description": "Title when storage permission needed" + }, + "setupStorageDescription": "O SpotiFLAC precisa de permissão de armazenamento para salvar os seus arquivos de música baixados.", + "@setupStorageDescription": { + "description": "Explanation for storage permission" + }, + "setupNotificationGranted": "Permissão de Notificações Concedida!", + "@setupNotificationGranted": { + "description": "Success message for notification permission" + }, + "setupNotificationEnable": "Habilitar Notificações", + "@setupNotificationEnable": { + "description": "Button to enable notifications" + }, + "setupFolderChoose": "Escolher Pasta de Download", + "@setupFolderChoose": { + "description": "Button to choose folder" + }, + "setupFolderDescription": "Selecione uma pasta onde as suas músicas baixadas serão salvas.", + "@setupFolderDescription": { + "description": "Explanation for folder selection" + }, + "setupSelectFolder": "Seleccionar Pasta", + "@setupSelectFolder": { + "description": "Button to select folder" + }, + "setupEnableNotifications": "Habilitar Notificações", + "@setupEnableNotifications": { + "description": "Button to enable notifications" + }, + "setupNotificationBackgroundDescription": "Seja notificado sobre o progresso e conclusão do download. Isso ajuda você a acompanhar os downloads quando o app estiver em segundo plano.", + "@setupNotificationBackgroundDescription": { + "description": "Detailed notification explanation" + }, + "setupSkipForNow": "Ignorar por enquanto", + "@setupSkipForNow": { + "description": "Skip button text" + }, + "setupNext": "Próximo", + "@setupNext": { + "description": "Next button text" }, "setupGetStarted": "Começar", "@setupGetStarted": { "description": "Final setup button" }, - "libraryFilterQualityCD": "CD (16bit)", - "@libraryFilterQualityCD": { - "description": "Filter option - CD quality audio" + "setupAllowAccessToManageFiles": "Por favor, habilite \"Permitir acesso para gerenciar todos os arquivos\" na próxima tela.", + "@setupAllowAccessToManageFiles": { + "description": "Instruction for file access permission" }, - "sectionLayout": "Aparência\n", - "@sectionLayout": { - "description": "Settings section header" + "setupLanguageTitle": "Escolher idioma", + "@setupLanguageTitle": { + "description": "Title for the language selection step in setup" }, - "@tooltipLoveAll": { - "description": "Tooltip for the Love All button on album/playlist screens" + "setupLanguageDescription": "Selecione o idioma de sua preferência para o aplicativo. Você pode alterar isso depois em Configurações.", + "@setupLanguageDescription": { + "description": "Description for the language selection step in setup" }, - "queueFinalizingDownload": "Finalizing download", - "@queueFinalizingDownload": { - "description": "Accessibility label for a queue item that is finalizing" + "setupLanguageSystemDefault": "Padrão do sistema", + "@setupLanguageSystemDefault": { + "description": "Option to use the system language" }, - "trackConvertActionLabelLossy": "{sourceFormat} → {targetFormat} @ {bitrate}", - "@trackConvertActionLabelLossy": { - "description": "Convert button label for lossy conversion", + "dialogCancel": "Cancelar", + "@dialogCancel": { + "description": "Dialog button - cancel action" + }, + "dialogSave": "Salvar", + "@dialogSave": { + "description": "Dialog button - save changes" + }, + "dialogDelete": "Apagar", + "@dialogDelete": { + "description": "Dialog button - delete item" + }, + "dialogRetry": "Tentar novamente", + "@dialogRetry": { + "description": "Dialog button - retry action" + }, + "dialogClear": "Limpar", + "@dialogClear": { + "description": "Dialog button - clear items" + }, + "dialogDone": "Concluído", + "@dialogDone": { + "description": "Dialog button - action completed" + }, + "dialogImport": "Importar", + "@dialogImport": { + "description": "Dialog button - import data" + }, + "dialogDownload": "Baixar", + "@dialogDownload": { + "description": "Confirm button in Download All dialog" + }, + "previewPlay": "Reproduzir prévia", + "@previewPlay": { + "description": "Tooltip for the button that plays a short track preview snippet" + }, + "previewStop": "Parar prévia", + "@previewStop": { + "description": "Tooltip for the button that stops the playing track preview snippet" + }, + "previewUnavailable": "Prévia indisponível", + "@previewUnavailable": { + "description": "Snackbar shown when a track preview snippet cannot be played" + }, + "dialogDiscard": "Descartar", + "@dialogDiscard": { + "description": "Dialog button - discard changes" + }, + "dialogRemove": "Remover", + "@dialogRemove": { + "description": "Dialog button - remove item" + }, + "dialogUninstall": "Desinstalar", + "@dialogUninstall": { + "description": "Dialog button - uninstall extension" + }, + "dialogDiscardChanges": "Descartar Alterações?", + "@dialogDiscardChanges": { + "description": "Dialog title - unsaved changes warning" + }, + "dialogUnsavedChanges": "Você tem alterações não salvas. Deseja descartá-las?", + "@dialogUnsavedChanges": { + "description": "Dialog message - unsaved changes" + }, + "dialogClearAll": "Limpar Tudo", + "@dialogClearAll": { + "description": "Dialog title - clear all items" + }, + "dialogRemoveExtension": "Remover Extensão", + "@dialogRemoveExtension": { + "description": "Dialog title - uninstall extension" + }, + "dialogRemoveExtensionMessage": "Tem certeza de que deseja remover esta extensão? Isso não pode ser desfeito.", + "@dialogRemoveExtensionMessage": { + "description": "Dialog message - uninstall confirmation" + }, + "dialogUninstallExtension": "Desinstalar Extensão?", + "@dialogUninstallExtension": { + "description": "Dialog title - uninstall extension" + }, + "dialogUninstallExtensionMessage": "Tem certeza que deseja remover {extensionName}?", + "@dialogUninstallExtensionMessage": { + "description": "Dialog message - uninstall specific extension", "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "bitrate": { + "extensionName": { "type": "String" } } }, - "extensionsMetadataPriority": "Prioridade de Metadados", - "@extensionsMetadataPriority": { - "description": "Setting - metadata provider order" + "dialogClearHistoryTitle": "Limpar Histórico", + "@dialogClearHistoryTitle": { + "description": "Dialog title - clear download history" }, - "updateCurrent": "Atual", - "@updateCurrent": { - "description": "Label for current version" + "dialogClearHistoryMessage": "Tem certeza que deseja limpar todo o histórico de downloads? Isso não pode ser desfeito.", + "@dialogClearHistoryMessage": { + "description": "Dialog message - clear history confirmation" }, - "@aboutFeatureRequest": { - "description": "Link to suggest features" - }, - "@safMigrationSuccess": { - "description": "Snackbar after successfully migrating to SAF" - }, - "backupRestoreConfirmMessage": "This will replace your current settings, download history, liked tracks, wishlist and playlists with the contents of the backup. This cannot be undone.", - "@cleanupOrphanedDownloadsNone": { - "description": "Snackbar when no orphans found" - }, - "lyricsProviderNeteaseDesc": "NetEase Cloud Music (good for Asian songs)", - "@lyricsProviderNeteaseDesc": { - "description": "Description for Netease provider" - }, - "libraryScanCancelledSubtitle": "You can retry the scan when ready.", - "@libraryScanCancelledSubtitle": { - "description": "Library scan status subtitle after cancellation" - }, - "@collectionFavoriteArtists": { - "description": "Custom folder for favorite artists" - }, - "@trackAlbum": { - "description": "Metadata label - album name" + "dialogDeleteSelectedTitle": "Apagar Selecionados", + "@dialogDeleteSelectedTitle": { + "description": "Dialog title - delete selected items" }, "dialogDeleteSelectedMessage": "Apagar {count} {count, plural, =1{faixa} other{faixas}} do histórico?\n\nIsso também apagará os arquivos do armazenamento.", "@dialogDeleteSelectedMessage": { @@ -713,811 +838,29 @@ } } }, - "trackReEnrich": "Re-enrich", - "@trackReEnrich": { - "description": "Menu action - re-embed metadata into audio file" - }, - "@lyricsProvidersSaved": { - "description": "Snackbar after saving lyrics provider priority" - }, - "@storageModeSaf": { - "description": "Storage mode option - Storage Access Framework" - }, - "libraryStorageAccessRequired": "Storage Access Required", - "@libraryStorageAccessRequired": { - "description": "Dialog title for storage permission" - }, - "@cacheClearAllConfirmTitle": { - "description": "Dialog title before clearing all caches" - }, - "@unknownArtist": { - "description": "Fallback artist name when metadata is missing" - }, - "downloadCreatePlaylistSourceFolderEnabled": "A subfolder is created for each playlist", - "@downloadCreatePlaylistSourceFolderEnabled": { - "description": "Subtitle when playlist folder is enabled" - }, - "dialogClearHistoryMessage": "Tem certeza que deseja limpar todo o histórico de downloads? Isso não pode ser desfeito.", - "@dialogClearHistoryMessage": { - "description": "Dialog message - clear history confirmation" - }, - "@sectionData": { - "description": "Settings section header" - }, - "audioAnalysisRms": "RMS", - "@audioAnalysisRms": { - "description": "RMS level metric label" - }, - "downloadFilterContributingEnabled": "Contributing artists removed from Album Artist folder name", - "@downloadFilterContributingEnabled": { - "description": "Subtitle when contributing artist filter is on" - }, - "timeJustNow": "Just now", - "@extensionCustomUrlHandlingShareHint": { - "description": "Extension detail hint explaining share-to-app URL handling" - }, - "cleanupOrphanedDownloads": "Cleanup Orphaned Downloads", - "@cleanupOrphanedDownloads": { - "description": "Button to remove history entries for deleted files" - }, - "@audioAnalysisNoClipping": { - "description": "Displayed when no clipped samples were detected" - }, - "@tutorialWelcomeTitle": { - "description": "Tutorial welcome page title" - }, - "collectionFavoriteArtists": "Favorite Artists", - "audioAnalysisRescanning": "Re-analyzing audio...", - "@audioAnalysisRescanning": { - "description": "Loading text while audio is being re-analyzed after an explicit refresh" - }, - "logTitle": "Registros", - "@logTitle": { - "description": "Logs screen title" - }, - "@regionCountryGB": { - "description": "Country name for SongLink region picker" - }, - "@progressFetchingMetadata": { - "description": "Progress indicator - loading track info", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "aboutLogoArtist": "O artista talentoso que criou o nosso lindo logotipo do aplicativo!", - "@aboutLogoArtist": { - "description": "Role description for logo artist" - }, - "channelPreview": "Prévia", - "@channelPreview": { - "description": "Update channel - beta/preview releases" - }, - "collectionPlaylistsDeleted": "{count} {count, plural, =1{playlist} other{playlists}} deleted", - "@collectionPlaylistsDeleted": { - "description": "Snackbar after deleting selected playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@libraryFilterMetadataMissingGenre": { - "description": "Filter option - items missing genre" - }, - "homeTitle": "Início", - "@homeTitle": { - "description": "Home screen title" - }, - "extensionMinAppVersion": "Versão Mínima do App", - "@extensionMinAppVersion": { - "description": "Extension detail - minimum app version" - }, - "backupContentsLiked": "{count} liked {count, plural, =1{track} other{tracks}}", - "@backupContentsLiked": { - "description": "Backup contents row for liked tracks count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "audioAnalysisTruePeak": "True Peak", - "@audioAnalysisTruePeak": { - "description": "True peak metric label" - }, - "notifDownloadsCanceledBody": "{count, plural, =1{1 download canceled by user} other{{count} downloads canceled by user}}", - "@notifDownloadsCanceledBody": { - "description": "Notification body when downloads are canceled by the user", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@dialogRetry": { - "description": "Dialog button - retry action" - }, - "@homeChangeSearchProviderTooltip": { - "description": "Tooltip for the Home search provider picker" - }, - "@sectionLyricsProviderOptions": { - "description": "Settings section header for per-provider lyrics options" - }, - "@trackReEnrichSuccessWithFailures": { - "description": "Snackbar summary after batch metadata re-enrichment finishes with failures", - "placeholders": { - "successCount": { - "type": "int" - }, - "total": { - "type": "int" - }, - "failedCount": { - "type": "int" - } - } - }, - "previewUnavailable": "Prévia indisponível", - "@previewUnavailable": { - "description": "Snackbar shown when a track preview snippet cannot be played" - }, - "nowPlayingTabPlayer": "Player", - "@nowPlayingTabPlayer": { - "description": "Tab label for the player view" - }, - "backupContentsPlaylists": "{count, plural, =1{1 playlist} other{{count} playlists}}", - "@backupContentsPlaylists": { - "description": "Backup contents row for playlist count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "libraryLastScannedNever": "Never", - "@libraryLastScannedNever": { - "description": "Shown when library has never been scanned" - }, - "trackTrackNumber": "Número da faixa", - "@trackTrackNumber": { - "description": "Metadata label - track number" - }, - "trackReplayGainScanning": "Analisando o volume...", - "@trackReplayGainScanning": { - "description": "Snackbar/progress message while scanning ReplayGain for a single track" - }, - "downloadLossyMp3": "MP3 320kbps", - "@downloadLossyMp3": { - "description": "Lossy format option - MP3 320kbps" - }, - "@albumFolderArtistAlbumSingles": { - "description": "Album folder option with singles inside artist" - }, - "@extensionHealthNotConfigured": { - "description": "Extension service health status - not configured" - }, - "@downloadSeparateSinglesDisabled": { - "description": "Subtitle when separate singles folder is off" - }, - "downloadCreatePlaylistSourceFolder": "Playlist Source Folder", - "@downloadCreatePlaylistSourceFolder": { - "description": "Setting to create a subfolder per playlist source" - }, - "@trackReleaseDate": { - "description": "Metadata label - release date" - }, - "aboutContributors": "Colaboradores", - "@aboutContributors": { - "description": "Section for contributors" - }, - "@audioAnalysisMono": { - "description": "Audio channel layout label - mono" - }, - "@audioAnalysisNyquist": { - "description": "Nyquist frequency metric label" - }, - "permissionStorage": "Storage", - "@permissionStorage": { - "description": "Storage permission type label" - }, - "permissionAudio": "Audio", - "@permissionAudio": { - "description": "Audio permission type label" - }, - "@libraryScanSubtitle": { - "description": "Subtitle for scan button" - }, - "@snackbarUnsupportedAudioFormat": { - "description": "Snackbar when the audio format is not supported for the requested operation" - }, - "@notifLibraryScanStopped": { - "description": "Notification body when library scan is cancelled" - }, - "@downloadMusixmatchAuto": { - "description": "Button to clear Musixmatch language (use auto)" - }, - "@trackLyricsTimeout": { - "description": "Message when lyrics request times out" - }, - "@trackReEnrichFieldReleaseInfo": { - "description": "Checkbox label for release info in re-enrich" - }, - "@regionCountryXK": { - "description": "Country name for SongLink region picker" - }, - "aboutTelegramChatSubtitle": "Converse com outros usuários", - "@aboutTelegramChatSubtitle": { - "description": "Subtitle for Telegram chat" - }, - "selectionAllPlaylistsSelected": "All playlists selected", - "@selectionAllPlaylistsSelected": { - "description": "Shown when all playlists are selected in selection mode" - }, - "cacheTrackLookupDesc": "Spotify/Deezer track ID lookups. Clearing may slow next few searches.", - "@cacheTrackLookupDesc": { - "description": "Description of what track lookup cache contains" - }, - "@unknownAlbum": { - "description": "Fallback album name when metadata is missing" - }, - "@extensionsErrorLoading": { - "description": "Error message when extension fails to load" - }, - "@cacheTitle": { - "description": "Cache management page title" - }, - "@downloadFilenameFormat": { - "description": "Setting for output filename pattern" - }, - "errorUrlNotRecognized": "Link não reconhecido", - "@errorUrlNotRecognized": { - "description": "Error title - URL not handled by any extension or service" - }, - "downloadAppleElrcWordSync": "Apple Music eLRC Word Sync", - "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { - "description": "Subtitle when album artist is used for folder names" - }, - "@qualityFlacLossless": { - "description": "Quality option - CD quality FLAC" - }, - "downloadNeteaseIncludeTranslationEnabled": "Chinese translation lines included", - "@downloadNeteaseIncludeTranslationEnabled": { - "description": "Subtitle when Netease translation is on" - }, - "collectionLovedEmptySubtitle": "Tap love on tracks to keep your favorites", - "@collectionLovedEmptySubtitle": { - "description": "Loved empty state subtitle" - }, - "@libraryBuiltInPlayerInfo": { - "description": "Info note explaining the built-in player is for previews only" - }, - "@notifLibraryScanProgressNoTotal": { - "description": "Notification body for library scan progress when total is unknown", - "placeholders": { - "scanned": { - "type": "int" - }, - "percentage": { - "type": "int" - } - } - }, - "@tutorialSearchTitle": { - "description": "Tutorial search page title" - }, - "trackReEnrichSuccessWithFailures": "Metadata re-enriched successfully ({successCount}/{total}) - Failed: {failedCount}", - "@a11yTrackByArtist": { - "description": "Accessibility label for a queue or list track item", - "placeholders": { - "trackName": { - "type": "String" - }, - "artistName": { - "type": "String" - } - } - }, - "libraryFilterMetadataMissingLabel": "Missing label", - "@libraryFilterMetadataMissingLabel": { - "description": "Filter option - items missing record label" - }, - "@audioAnalysisLufs": { - "description": "Integrated loudness metric label" - }, - "trackMetadata": "Metadados", - "@trackMetadata": { - "description": "Tab title - track metadata" - }, - "trackOptionRemoveFromLoved": "Remove from Loved", - "@trackOptionRemoveFromLoved": { - "description": "Bottom sheet action label - remove track from loved folder" - }, - "@aboutTelegramChat": { - "description": "Link to Telegram chat group" - }, - "@trackCopiedToClipboard": { - "description": "Snackbar - content copied" - }, - "aboutKeepAndroidOpen": "Manter o Android aberto", - "@aboutKeepAndroidOpen": { - "description": "Link to Keep Android Open campaign website" - }, - "@lyricsProvidersDisabledSection": { - "description": "Section header for disabled providers", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@downloadAllowLocalNetwork": { - "description": "Setting title for allowing requests to private/local network targets" - }, - "@openInOtherServices": { - "description": "Title and tooltip for finding the current collection in other services" - }, - "@extensionVerificationBrowserInApp": { - "description": "Chip label for in-app browser verification mode" - }, - "sectionSearchSource": "Origem da Pesquisa", - "@sectionSearchSource": { - "description": "Settings section header" - }, - "allFilesAccess": "All Files Access", - "@allFilesAccess": { - "description": "Toggle for MANAGE_EXTERNAL_STORAGE permission" - }, - "extensionsInstalledCount": "{count} extensões instaladas com sucesso", - "@extensionsInstalledCount": { - "description": "Success message after installing multiple extensions", - "placeholders": { - "count": { - "type": "int", - "description": "Number of installed extensions" - } - } - }, - "snackbarFailedToEmbedLyrics": "Failed to embed lyrics", - "@snackbarFailedToEmbedLyrics": { - "description": "Snackbar when lyrics embedding fails" - }, - "@lyricsProviderMusixmatchDesc": { - "description": "Description for Musixmatch provider" - }, - "queueRateLimitTitle": "Service rate limited", - "@queueRateLimitTitle": { - "description": "Title shown on a failed queue item when the download service rate limits requests" - }, - "@notifDownloadComplete": { - "description": "Notification title when a single download is complete" - }, - "@homeSupports": { - "description": "Info text about supported URL types" - }, - "notifDownloadsCanceledTitle": "Downloads canceled", - "@notifDownloadsCanceledTitle": { - "description": "Notification title when downloads are canceled by the user" - }, - "@lyricsModeEmbedSubtitle": { - "description": "Subtitle for embed option" - }, - "optionsReplayGain": "ReplayGain", - "@optionsReplayGain": { - "description": "Title for ReplayGain setting toggle" - }, - "@storeLoadError": { - "description": "Error heading when the store cannot be loaded" - }, - "@trackArtist": { - "description": "Metadata label - artist name" - }, - "cacheCoverImageDesc": "Downloaded album and track cover art. Will re-download when viewed.", - "@cacheCoverImageDesc": { - "description": "Description of what cover image cache contains" - }, - "queueClearAll": "Limpar Tudo", - "@queueClearAll": { - "description": "Button - clear all queue items" - }, - "downloadUsePrimaryArtistOnlyDisabled": "Full artist string used for folder name", - "@downloadUsePrimaryArtistOnlyDisabled": { - "description": "Subtitle when primary artist only is disabled" - }, - "backupImportSectionTitle": "Restore backup", - "@backupImportSectionTitle": { - "description": "Section title for the import/restore card" - }, - "@downloadMusixmatchLanguageHint": { - "description": "Placeholder for Musixmatch language input" - }, - "collectionRemoveFromFolder": "Remove from folder", - "@collectionRemoveFromFolder": { - "description": "Tooltip for removing track from wishlist/loved folder" - }, - "storeFilterMetadata": "Metadados", - "@storeFilterMetadata": { - "description": "Repo filter - metadata providers" - }, - "shareSheetCopyLink": "Copy Link", - "errorRateLimitedMessage": "Muitas solicitações. Por favor, aguarde um momento antes de pesquisar novamente.", - "@errorRateLimitedMessage": { - "description": "Error message - rate limit explanation" - }, - "libraryFilterSortGenreDesc": "Genre (Z-A)", - "@libraryFilterSortGenreDesc": { - "description": "Sort option - genre descending" - }, - "trackFileNotFound": "Arquivo não encontrado", - "@trackFileNotFound": { - "description": "Error - file doesn't exist" - }, - "@queueEmptySinglesSubtitle": { - "description": "Empty state subtitle for single track downloads" - }, - "@queueDownloadStarting": { - "description": "Queue status before download progress is available" - }, - "metadataProviderPriorityInfo": "O Deezer não tem limites de taxa e é recomendado como principal. O Spotify pode limitar a taxa após muitas solicitações.", - "@metadataProviderPriorityInfo": { - "description": "Info tip about rate limits" - }, - "aboutPCSource": "Código-fonte do app desktop", - "@aboutPCSource": { - "description": "Link to PC GitHub repo" - }, - "editMetadataAutoFill": "Auto-fill from online", - "@editMetadataAutoFill": { - "description": "Section title for selective online metadata auto-fill in the edit metadata sheet" - }, - "snackbarDeletedTracks": "{count} {count, plural, =1{faixa apagada} other{faixas apagadas}}", - "@snackbarDeletedTracks": { - "description": "Snackbar - tracks deleted", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@extensionHealthServiceDegraded": { - "description": "Tooltip for degraded extension service" - }, - "lyricsProviderLrclibDesc": "Open-source synced lyrics database", - "@lyricsProviderLrclibDesc": { - "description": "Description for LRCLIB provider" - }, - "downloadMusixmatchLanguageDesc": "Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.", - "@downloadMusixmatchLanguageDesc": { - "description": "Description in Musixmatch language picker" - }, - "@optionsEmbedMetadataSubtitleOn": { - "description": "Subtitle when metadata embedding is enabled" - }, - "@setupSkipForNow": { - "description": "Skip button text" - }, - "@a11ySelectTrack": { - "description": "Accessibility label for selecting a track" - }, - "@folderOrganizationByAlbumSubtitle": { - "description": "Subtitle for album folder option" - }, - "downloadLossyAac": "AAC/M4A 320kbps", - "@extensionVerificationBrowserTitle": { - "description": "Settings option title for extension verification browser preference" - }, - "@backupContentsExtensions": { - "description": "Backup contents row for installed extensions count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarUrlCopied": "URL do {platform} copiado para a área de transferência", - "@snackbarUrlCopied": { - "description": "Snackbar - URL copied", - "placeholders": { - "platform": { - "type": "String", - "description": "Platform name (Spotify/Deezer)" - } - } - }, - "aboutBinimumDesc": "O criador do QQDL e da HiFi API. Este projeto ajudou a moldar o suporte a transferências sem perdas.", - "@aboutBinimumDesc": { - "description": "Credit description for binimum" - }, - "discographyFetchingAlbum": "Buscando {current} de {total}...", - "@discographyFetchingAlbum": { - "description": "Progress - fetching specific album", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "logAutoScrollOn": "Auto-scroll ON", - "@logAutoScrollOn": { - "description": "Tooltip when auto-scroll is enabled on the log screen" - }, - "@settingsMetadataSubtitle": { - "description": "Subtitle for metadata settings" - }, - "@regionCountryBR": { - "description": "Country name for SongLink region picker" - }, - "@lyricsProvidersTitle": { - "description": "Settings item title for lyrics provider order" - }, - "trackMetadataService": "Serviço", - "@trackMetadataService": { - "description": "Metadata field - download service used" - }, - "discographyAddedToQueue": "{count} faixas adicionadas à fila", - "cueSplitTrackCount": "{count} tracks", - "@cueSplitTrackCount": { - "description": "Number of tracks in CUE sheet", - "placeholders": { - "count": { - "type": "int" - } - } - }, "dialogImportPlaylistTitle": "Importar Playlist", "@dialogImportPlaylistTitle": { "description": "Dialog title - import CSV playlist" }, - "@cleanupOrphanedDownloadsSubtitle": { - "description": "Subtitle for orphaned cleanup button" - }, - "settingsLocalLibrary": "Local Library", - "@settingsLocalLibrary": { - "description": "Settings menu item - local library" - }, - "@metadataSaveFailedStorage": { - "description": "Snackbar error when writing metadata file back to storage fails" - }, - "logCopyLogs": "Copy logs", - "@logCopyLogs": { - "description": "Tooltip for copying logs" - }, - "downloadNetworkWifiOnlySubtitle": "Downloads pause when on mobile data", - "@downloadNetworkWifiOnlySubtitle": { - "description": "Subtitle for WiFi-only option in picker" - }, - "@lyricsModeBothSubtitle": { - "description": "Subtitle for both option" - }, - "@collectionAlreadyInPlaylist": { - "description": "Snackbar when track already exists in playlist", - "placeholders": { - "playlistName": { - "type": "String" - } - } - }, - "@collectionFoldersTitle": { - "description": "Library section title for custom folders" - }, - "searchSortDateNewest": "Data de lançamento (mais recente)", - "@searchSortDateNewest": { - "description": "Sort option - newest release first" - }, - "downloadDeduplicationDisabled": "All tracks will be downloaded regardless of history", - "@downloadDeduplicationDisabled": { - "description": "Subtitle when deduplication is off" - }, - "@recentTypeAlbum": { - "description": "Recent access item type - album" - }, - "nowPlayingPlayInOrder": "Play in order", - "@nowPlayingPlayInOrder": { - "description": "Tooltip when shuffle mode is disabled" - }, - "@cueSplitConfirmMessage": { - "description": "CUE split confirmation dialog message", - "placeholders": { - "album": { - "type": "String" - }, - "count": { - "type": "int" - } - } - }, - "@audioAnalysisFileSize": { - "description": "File size metric label" - }, - "artistSingles": "Singles e EPs", - "@artistSingles": { - "description": "Section header for singles/EPs" - }, - "@snackbarProviderPrioritySaved": { - "description": "Snackbar - provider order saved" - }, - "@recentPlaylistInfo": { - "description": "Snackbar message when tapping playlist in recent access", - "placeholders": { - "name": { - "type": "String", - "description": "Playlist name" - } - } - }, - "@lyricsProviderLyricsPlusDesc": { - "description": "Description for LyricsPlus provider" - }, - "@libraryFilterDownloaded": { - "description": "Filter chip - show only downloaded items" - }, - "recentPlaylistInfo": "Playlist: {name}", - "@optionsReplayGainSubtitleOn": { - "description": "Subtitle when ReplayGain is enabled" - }, - "@actionCreate": { - "description": "Generic action button - create" - }, - "@downloadSelectQuality": { - "description": "Dialog title - choose audio quality" - }, - "cueSplitAlbum": "Album: {album}", - "@cueSplitAlbum": { - "description": "Album name in CUE split sheet", - "placeholders": { - "album": { - "type": "String" - } - } - }, - "@trackCoverNoSource": { - "description": "Snackbar when no cover art URL or embedded cover" - }, - "@storeRepoUrlLabel": { - "description": "Label for the repository URL input field" - }, - "@notifLibraryScanCompleteBody": { - "description": "Notification body for library scan complete - number of indexed tracks", + "dialogImportPlaylistMessage": "Foram encontradas {count} faixas no arquivo da playlist. Deseja adicioná-las à fila de downloads?", + "csvImportTracks": "{count} faixas do CSV", + "@csvImportTracks": { + "description": "Label shown in quality picker for CSV import", "placeholders": { "count": { "type": "int" } } }, - "optionsDetailedLogging": "Registro detalhado", - "@optionsDetailedLogging": { - "description": "Enable verbose logs for debugging" + "collectionExportM3u": "Exportar como M3U8", + "@collectionExportM3u": { + "description": "Tooltip on the collection screen action that exports the track list as an M3U8 playlist file" }, - "@lyricsProvidersDiscardContent": { - "description": "Body text of the discard-changes dialog on lyrics provider page" - }, - "@dialogDisableHistoryTitle": { - "description": "Confirmation dialog title shown before disabling download history" - }, - "downloadLossyOpus128Subtitle": "Smallest size, ~4MB per track", - "@downloadLossyOpus128Subtitle": { - "description": "Subtitle for Opus 128kbps lossy option" - }, - "@appName": { - "description": "App name - DO NOT TRANSLATE" - }, - "libraryActions": "Actions", - "@libraryActions": { - "description": "Section header for library actions" - }, - "setupNoFolderSelected": "Nenhuma pasta selecionada. Você gostaria de usar a pasta padrão de música?", - "@setupNoFolderSelected": { - "description": "Prompt when no folder selected" - }, - "downloadMusixmatchLanguageHint": "e.g. en, de, ja", - "trackSaveFailed": "Failed: {error}", - "@trackSaveFailed": { - "description": "Snackbar when save operation fails", + "collectionExportM3uDone": "{exported} de {total} faixas exportadas", + "@collectionExportM3uDone": { + "description": "Snackbar after M3U8 export; tracks without a local file are not exported", "placeholders": { - "error": { - "type": "String" - } - } - }, - "replayGainBatchConfirmTitle": "Adicionar ReplayGain", - "@replayGainBatchConfirmTitle": { - "description": "Title of the batch ReplayGain confirmation dialog" - }, - "tutorialExtensionsTip1": "Browse the Repo tab to discover useful extensions", - "@tutorialExtensionsTip1": { - "description": "Tutorial extensions tip 1" - }, - "@trackAddToQueue": { - "description": "Menu action to add a track to the playback queue" - }, - "@cacheTrackLookup": { - "description": "Cache item title for track ID lookup cache" - }, - "@discographyNoAlbums": { - "description": "Error - no albums found for artist" - }, - "@updateLater": { - "description": "Update button - dismiss" - }, - "@snackbarFailedToInstall": { - "description": "Snackbar - extension install error" - }, - "@albumFolderArtistAlbumFlatSubtitle": { - "description": "Folder structure example for flat singles" - }, - "@errorMissingExtensionSource": { - "description": "Error - extension source not available", - "placeholders": { - "item": { - "type": "String" - } - } - }, - "libraryFilterSortAlbumAsc": "Album (A-Z)", - "@libraryFilterSortAlbumAsc": { - "description": "Sort option - album ascending" - }, - "@queueTrackCount": { - "description": "Track count label with plural support", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "audioAnalysisMono": "Mono", - "@trackLyricsSource": { - "description": "Label showing the lyrics source/provider", - "placeholders": { - "source": { - "type": "String" - } - } - }, - "@lyricsModeEmbed": { - "description": "Lyrics mode option - embed in audio file" - }, - "@storeRepoDialogCurrent": { - "description": "Label shown above the current repository URL in the dialog" - }, - "@cacheRefreshStats": { - "description": "Button label to refresh cache statistics" - }, - "lyricsProviderAppleMusicDesc": "Word-by-word synced lyrics (via proxy)", - "@lyricsProviderAppleMusicDesc": { - "description": "Description for Apple Music provider" - }, - "@downloadDeduplication": { - "description": "Setting - skip tracks already in download history" - }, - "updateFailedMessage": "Falha ao baixar a atualização", - "@updateFailedMessage": { - "description": "Update error message" - }, - "cacheEstimatedTotal": "Estimated cache usage: {size}", - "@cacheEstimatedTotal": { - "description": "Total cache size shown in summary", - "placeholders": { - "size": { - "type": "String" - } - } - }, - "@aboutVersion": { - "description": "Version info label" - }, - "dialogRetry": "Tentar novamente", - "@cueSplitSplitting": { - "description": "Snackbar while splitting CUE", - "placeholders": { - "current": { + "exported": { "type": "int" }, "total": { @@ -1525,769 +868,81 @@ } } }, - "@searchSortTitleZA": { - "description": "Sort option - title descending" + "collectionExportM3uNone": "Não há arquivos baixados para exportar", + "@collectionExportM3uNone": { + "description": "Snackbar when an M3U8 export finds no local files" }, - "tutorialLibraryTip2": "Tap a track to play it with the built-in player", - "@tutorialLibraryTip2": { - "description": "Tutorial library tip 2" + "collectionExportM3uFailed": "A exportação falhou", + "@collectionExportM3uFailed": { + "description": "Snackbar when writing or sharing the M3U8 export fails" }, - "extensionHealthServiceOffline": "Service offline", - "@extensionHealthServiceOffline": { - "description": "Tooltip for offline extension service" + "trackOpenOn": "Abrir em...", + "@trackOpenOn": { + "description": "Track option and sheet title listing streaming platforms where the track can be opened" }, - "actionDeselect": "Desselecionar", - "@actionDeselect": { - "description": "Action button - deselect all" + "trackOpenOnNoLinks": "Nenhum link de plataforma encontrado para esta faixa.", + "@trackOpenOnNoLinks": { + "description": "Shown in the Open on sheet when song.link returns no links" }, - "@trackConvertOriginal": { - "description": "Label for keeping original bit depth or sample rate during conversion" + "libraryReviewDuplicates": "Verificar duplicados", + "@libraryReviewDuplicates": { + "description": "Library settings row opening the duplicate review sheet" }, - "@libraryClearConfirmTitle": { - "description": "Dialog title for clear confirmation" + "libraryReviewDuplicatesSubtitle": "Encontrar faixas armazenadas mais de uma vez", + "@libraryReviewDuplicatesSubtitle": { + "description": "Subtitle for the duplicate review settings row" }, - "@dialogDownloadAllMessage": { - "description": "Body of the Download All confirmation dialog", - "placeholders": { - "count": { - "type": "int" - } - } + "duplicatesTitle": "Duplicados", + "@duplicatesTitle": { + "description": "Title of the duplicate review sheet" }, - "homeSupports": "Suporte: Faixas, Álbuns, Playlists, URLs de Artista", - "@downloadedAlbumDeleteSelected": { - "description": "Button - delete selected tracks" + "duplicatesEmpty": "Nenhuma faixa duplicada encontrada.", + "@duplicatesEmpty": { + "description": "Shown when the duplicate review sheet finds nothing" }, - "@recentShowAllDownloads": { - "description": "Button label to unhide hidden downloads in recent access" + "duplicatesKeepBest": "Manter a melhor", + "@duplicatesKeepBest": { + "description": "Button that deletes all but the highest-quality copy in a duplicate group" }, - "artistOptionRemoveFromFavorites": "Remove from Favorite Artists", - "@artistOptionRemoveFromFavorites": { - "description": "Action label - remove artist from favorite artists" + "duplicatesKeepBestAll": "Keep best for all", + "@duplicatesKeepBestAll": { + "description": "Button that keeps the highest-quality copy in every duplicate group and deletes the rest" }, - "collectionPlaylistEmptyTitle": "A lista de reprodução está vazia", - "@collectionPlaylistEmptyTitle": { - "description": "Playlist empty state title" - }, - "libraryFilterSortLatest": "Latest", - "@libraryFilterSortLatest": { - "description": "Sort option - newest first" - }, - "@libraryFilterMetadataMissingYear": { - "description": "Filter option - items missing release year/date" - }, - "@selectionSelected": { - "description": "Selection count indicator", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@tracksCount": { - "description": "Track count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@optionsCheckUpdates": { - "description": "Auto update check toggle" - }, - "@qualityHiResFlacMaxSubtitle": { - "description": "Technical spec for hi-res max" - }, - "actionStop": "Stop", - "@actionStop": { - "description": "Generic action - stop" - }, - "@selectionSelectToDelete": { - "description": "Placeholder when nothing selected" - }, - "folderOrganizationNoneSubtitle": "Todos os arquivos na pasta de download", - "@folderOrganizationNoneSubtitle": { - "description": "Subtitle for no organization option" - }, - "@updateDownloading": { - "description": "Update status - downloading" - }, - "artistAlbums": "Álbuns", - "@artistAlbums": { - "description": "Section header for artist albums" - }, - "trackConvertDitherTriangular": "TPDF", - "@trackConvertDitherTriangular": { - "description": "Lossless conversion triangular probability density function dither option" - }, - "nowPlayingShuffleLibraryFailed": "Could not shuffle library: {error}", - "@nowPlayingShuffleLibraryFailed": { - "description": "Snackbar when shuffling the library fails", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "@setupIcloudNotSupported": { - "description": "Error when user selects iCloud Drive on iOS" - }, - "@optionsArtistTagModeSplitVorbis": { - "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" - }, - "@extensionsProviderPrioritySection": { - "description": "Section header - provider priority" - }, - "@libraryShowDuplicateIndicatorSubtitle": { - "description": "Subtitle for duplicate indicator toggle" - }, - "sectionDuplicates": "Duplicates", - "@sectionDuplicates": { - "description": "Settings section header for deduplication" - }, - "@backupTitle": { - "description": "App bar title for the backup and restore page" - }, - "trackCoverReplaceNotice": "The selected cover will replace the current embedded cover when you tap Save.", - "cacheSectionMaintenance": "Maintenance", - "@cacheSectionMaintenance": { - "description": "Section header for cleanup actions" - }, - "@editMetadataFieldGenre": { - "description": "Chip label for genre field in auto-fill selector" - }, - "@extensionsFallbackSubtitle": { - "description": "Subtitle for download fallback extensions menu" - }, - "selectionBatchConvertConfirmMessage": "Convert {count} {count, plural, =1{track} other{tracks}} to {format} at {bitrate}?\n\nOriginal files will be deleted after conversion.", - "@selectionBatchConvertConfirmMessage": { - "description": "Confirmation dialog message for batch conversion", + "duplicatesKeepBestAllMessage": "Keep the best copy of {groupCount} {groupCount, plural, =1{track} other{tracks}} and delete {count} lower-quality {count, plural, =1{copy} other{copies}}?\n\nThe deleted files will be removed from storage.", + "@duplicatesKeepBestAllMessage": { + "description": "Confirmation message for keeping the best copy across every duplicate group", "placeholders": { "count": { "type": "int" }, - "format": { - "type": "String" - }, - "bitrate": { - "type": "String" - } - } - }, - "@selectionTapPlaylistsToSelect": { - "description": "Hint shown in playlist selection mode" - }, - "qualityHiResFlacMaxSubtitle": "24-bit / até 192kHz", - "snackbarRemovedTracksFromLoved": "Removed {count} tracks from Loved", - "@snackbarRemovedTracksFromLoved": { - "description": "Snackbar after removing multiple tracks from Loved folder", - "placeholders": { - "count": { + "groupCount": { "type": "int" } } }, - "folderOrganizationByArtistAlbum": "Artista/Álbum", - "@folderOrganizationByArtistAlbum": { - "description": "Folder option - nested folders" - }, - "snackbarCannotOpenFile": "Não foi possível abrir o arquivo: {error}", - "@snackbarCannotOpenFile": { - "description": "Snackbar - file open error", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "@optionsDetailedLoggingOff": { - "description": "Status when logging disabled" - }, - "@setupStorageDescription": { - "description": "Explanation for storage permission" - }, - "audioAnalysisCodec": "Codec", - "@regionCountryFR": { - "description": "Country name for SongLink region picker" - }, - "@optionsArtistTagMode": { - "description": "Setting title for how artist metadata is written into files" - }, - "@libraryClearConfirmMessage": { - "description": "Dialog message for clear confirmation" - }, - "trackLyricsNotAvailable": "Letra não disponível para esta faixa", - "@trackLyricsNotAvailable": { - "description": "Message when lyrics not found" - }, - "storeFilterUtility": "Utilidade", - "@storeFilterUtility": { - "description": "Repo filter - utility extensions" - }, - "collectionAddedToPlaylist": "Added to \"{playlistName}\"", - "@collectionAddedToPlaylist": { - "description": "Snackbar after adding track to playlist", - "placeholders": { - "playlistName": { - "type": "String" - } - } - }, - "cacheClearConfirmTitle": "Clear cache?", - "@cacheClearConfirmTitle": { - "description": "Dialog title before clearing one cache category" - }, - "@downloadAppleElrcWordSyncDisabled": { - "description": "Subtitle when Apple Music eLRC word sync is disabled" - }, - "@aboutMobileDeveloper": { - "description": "Role description for mobile dev" - }, - "albumFolderYearAlbum": "[Ano] Álbum", - "@albumFolderYearAlbum": { - "description": "Album folder option with year" - }, - "cacheTitle": "Storage & Cache", - "@extensionPostProcessing": { - "description": "Capability - post-download processing" - }, - "extensionsNoMetadataProvider": "Nenhuma extensão com provedor de metadados", - "@extensionsNoMetadataProvider": { - "description": "Empty state - no metadata providers" - }, - "searchSortTitleZA": "Título (Z-A)", - "@queueClearAllMessage": { - "description": "Clear queue confirmation" - }, - "audioAnalysisTitle": "Audio Quality Analysis", - "@audioAnalysisTitle": { - "description": "Title for audio analysis section" - }, - "@aboutReportIssueSubtitle": { - "description": "Subtitle for report issue" - }, - "@audioAnalysisSampleRate": { - "description": "Sample rate metric label" - }, - "@discographySelectedCount": { - "description": "Selection count badge", + "duplicatesKeepBestMessage": "Excluir {count} cópias de qualidade inferior de \"{trackName}\"?", + "@duplicatesKeepBestMessage": { + "description": "Confirmation message for the keep-best action", "placeholders": { "count": { "type": "int" - } - } - }, - "qualityFlacLosslessSubtitle": "16 bits / 44,1 kHz", - "@qualityFlacLosslessSubtitle": { - "description": "Technical spec for lossless" - }, - "libraryScanFinalizing": "Finalizing library...", - "@libraryScanFinalizing": { - "description": "Status shown after file scanning finishes but library persistence is still running" - }, - "@trackEditMetadata": { - "description": "Menu action - edit embedded metadata" - }, - "@downloadNeteaseIncludeRomanization": { - "description": "Setting to include romanized lyrics from Netease" - }, - "@optionsArtistTagModeJoinedSubtitle": { - "description": "Subtitle for joined artist tag mode" - }, - "regionCountryDE": "Germany", - "@regionCountryDE": { - "description": "Country name for SongLink region picker" - }, - "optionsAutoFallback": "Fallback Automático", - "@optionsAutoFallback": { - "description": "Auto-retry with other services" - }, - "@trackMetadataPlay": { - "description": "Action button - play track" - }, - "settingsFiles": "Files & Folders", - "@settingsFiles": { - "description": "Settings menu item - file and folder settings" - }, - "aboutMobileDeveloper": "Desenvolvedor da versão móvel", - "@trackDownloaded": { - "description": "Metadata label - download date" - }, - "homeSkipAlreadyDownloaded": "Skip already downloaded songs", - "@homeSkipAlreadyDownloaded": { - "description": "Checkbox label in import dialog to skip already-downloaded songs" - }, - "dialogUninstall": "Desinstalar", - "@dialogUninstall": { - "description": "Dialog button - uninstall extension" - }, - "collectionDeletePlaylist": "Delete playlist", - "@collectionDeletePlaylist": { - "description": "Action to delete playlist" - }, - "trackCoverOnline": "Online cover", - "@trackCoverOnline": { - "description": "Label shown when metadata autofill downloaded cover art from the internet" - }, - "downloadTitle": "", - "@downloadTitle": { - "description": "Download settings page title" - }, - "searchArtists": "Artistas", - "@searchArtists": { - "description": "Search result category - artists" - }, - "extensionUrlHandler": "Gerenciador de URL", - "@extensionUrlHandler": { - "description": "Capability - handles URLs" - }, - "@timeHoursAgo": { - "description": "Relative time - hours ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "editMetadataAdvanced": "Advanced", - "@editMetadataAdvanced": { - "description": "Expandable section label for advanced metadata fields" - }, - "@actionSelectAll": { - "description": "Action button - select all items" - }, - "timeMinutesAgo": "{count, plural, =1{1 minute ago} other{{count} minutes ago}}", - "@timeMinutesAgo": { - "description": "Relative time - minutes ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "regionCountryXK": "Kosovo", - "@downloadAskQualitySubtitle": { - "description": "Subtitle for ask quality toggle" - }, - "setupLanguageSystemDefault": "Padrão do sistema", - "@setupLanguageSystemDefault": { - "description": "Option to use the system language" - }, - "@updateAvailable": { - "description": "Update dialog title" - }, - "cacheEntries": "{count} entries", - "@cacheEntries": { - "description": "Track cache entry count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@notifLibraryScanExcluded": { - "description": "Library scan complete suffix - excluded track count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionsMetadataPrioritySubtitle": "Definir ordem de origem de pesquisa e metadados", - "@extensionsMetadataPrioritySubtitle": { - "description": "Subtitle for metadata priority" - }, - "downloadedAlbumSelectToDelete": "Selecione as faixas para apagar", - "@downloadedAlbumSelectToDelete": { - "description": "Placeholder when nothing selected" - }, - "@dialogClearHistoryTitle": { - "description": "Dialog title - clear download history" - }, - "tutorialSettingsTip1": "Change download location and folder organization", - "@tutorialSettingsTip1": { - "description": "Tutorial settings tip 1" - }, - "@extensionsInstalledSuccess": { - "description": "Success message after install" - }, - "allFilesAccessDisabledSubtitle": "Limited to media folders only", - "@allFilesAccessDisabledSubtitle": { - "description": "Subtitle when all files access is disabled" - }, - "@appearanceHistoryViewList": { - "description": "List layout option" - }, - "@notifAlreadyInLibraryCount": { - "description": "Notification title when track is already in library, with count", - "placeholders": { - "completed": { - "type": "int" }, - "total": { - "type": "int" - } - } - }, - "@libraryFilterAll": { - "description": "Filter chip - show all library items" - }, - "settingsDownload": "", - "settingsFilesSubtitle": "Download location, filename, folder structure", - "@settingsFilesSubtitle": { - "description": "Subtitle for files & folders settings" - }, - "@libraryFilterSort": { - "description": "Filter section - sort order" - }, - "metadataProvidersSubtitle": "Drag to set search and metadata source order", - "@extensionPermissions": { - "description": "Section header - required permissions" - }, - "selectionSelectToDelete": "Selecione as faixas para apagar", - "@libraryExternalPlayerSubtitle": { - "description": "Subtitle for external player option" - }, - "extensionVerificationOpenBrowser": "Open browser", - "@extensionVerificationOpenBrowser": { - "description": "Button to open the extension verification URL in a browser" - }, - "@trackConvertConfirmMessageLossless": { - "description": "Confirmation dialog message for lossless-to-lossless conversion", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { + "trackName": { "type": "String" } } }, - "@snackbarAddedTracksToQueue": { - "description": "Snackbar - multiple tracks added to queue", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@backupContentsWishlist": { - "description": "Backup contents row for wishlist tracks count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@cacheCleanupUnusedSubtitle": { - "description": "Subtitle for cleanup unused data action" - }, - "trackLabel": "Gravadora", - "@trackLabel": { - "description": "Metadata label - record label" - }, - "@collectionAddedToLoved": { - "description": "Snackbar after adding track to loved folder", + "duplicatesDeleteCopyMessage": "Excluir esta cópia de \"{trackName}\"?", + "@duplicatesDeleteCopyMessage": { + "description": "Confirmation message for deleting one duplicate copy", "placeholders": { "trackName": { "type": "String" } } }, - "regionCountryGB": "United Kingdom", - "dialogCancel": "Cancelar", - "@dialogCancel": { - "description": "Dialog button - cancel action" - }, - "@folderOrganizationByArtistAlbumSubtitle": { - "description": "Subtitle for nested folder option" - }, - "@notifAllDownloadsComplete": { - "description": "Notification title when all downloads finish successfully" - }, - "setupEnableNotifications": "Habilitar Notificações", - "@setupEnableNotifications": { - "description": "Button to enable notifications" - }, - "@notifFinalizingTrack": { - "description": "Notification title while finalizing (embedding metadata) a track", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "@downloadLossy320FormatDesc": { - "description": "Description in the lossy format picker" - }, - "filenameFormat": "Formato do Nome do Arquivo", - "@filenameFormat": { - "description": "Setting title - filename pattern" - }, - "historySearchHint": "Pesquisar histórico...", - "@historySearchHint": { - "description": "Search bar placeholder in history" - }, - "@tutorialReadyMessage": { - "description": "Tutorial completion message" - }, - "cacheTempDirectoryDesc": "Temporary files from downloads and audio conversion.", - "@cacheTempDirectoryDesc": { - "description": "Description of what temporary directory contains" - }, - "@trackSaveLyrics": { - "description": "Menu action - save lyrics as .lrc file" - }, - "@notifDownloadsFinished": { - "description": "Notification title when queue finishes with some failures", - "placeholders": { - "completed": { - "type": "int" - }, - "failed": { - "type": "int" - } - } - }, - "@historyFilterAlbums": { - "description": "Filter chip - show albums only" - }, - "trackEmbedLyrics": "Incorporar Letras", - "@trackEmbedLyrics": { - "description": "Action - embed lyrics into audio file" - }, - "@downloadPrimaryArtistOnlyOff": { - "description": "Status label when primary-artist-only folder naming is disabled" - }, - "@trackReEnrichFieldTrackInfo": { - "description": "Checkbox label for track info in re-enrich" - }, - "snackbarHistoryCleared": "Histórico limpo", - "downloadNetworkCompatibilityModeDisabled": "Using standard network settings", - "@artistPopular": { - "description": "Section header for popular/top tracks" - }, - "@trackFetchOnlineLyrics": { - "description": "Action - fetch lyrics from online providers" - }, - "extensionLyricsProvider": "Provedor de Letras", - "@extensionLyricsProvider": { - "description": "Capability - provides lyrics" - }, - "historyFilterAll": "Tudo", - "@historyFilterAll": { - "description": "Filter chip - show all items" - }, - "tutorialSearchTitle": "Finding Music", - "@lyricsModeExternal": { - "description": "Lyrics mode option - separate LRC file" - }, - "@actionDismiss": { - "description": "Generic action - dismiss" - }, - "trackOpenInSpotify": "Abrir no Spotify", - "@trackOpenInSpotify": { - "description": "Action - open track in Spotify app" - }, - "@libraryClear": { - "description": "Button to clear all library entries" - }, - "discographyFailedToFetch": "Falha ao obter alguns álbuns", - "@filenameShowAdvancedTagsDescription": { - "description": "Description for advanced filename tag toggle" - }, - "@storeUpdate": { - "description": "Update available button" - }, - "collectionPlaylistTracks": "{count, plural, =1{1 track} other{{count} tracks}}", - "@collectionPlaylistTracks": { - "description": "Track count label for custom playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "optionsPrimaryProviderSubtitle": "Serviço usado para pesquisar por faixa ou nome do álbum", - "@optionsPrimaryProviderSubtitle": { - "description": "Subtitle for primary provider" - }, - "@downloadEmbedLyricsDisabled": { - "description": "Subtitle when lyrics embedding is blocked by metadata toggle" - }, - "@librarySourceLocal": { - "description": "Badge for tracks from local library scan" - }, - "@searchSortDurationLong": { - "description": "Sort option - longest duration first" - }, - "@downloadFilterContributingDisabled": { - "description": "Subtitle when contributing artist filter is off" - }, - "queueDownloadingCount": "Downloading ({count})", - "@queueDownloadingCount": { - "description": "Header for active downloads section with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionVerificationBrowserInApp": "In-app", - "trackAudioQuality": "Qualidade de Áudio", - "@trackAudioQuality": { - "description": "Metadata label - audio quality" - }, - "libraryRemovedMissingFiles": "Removed {count} missing files from library", - "@libraryRemovedMissingFiles": { - "description": "Snackbar after cleanup", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "collectionFavoriteArtistsEmptyTitle": "No favorite artists yet", - "@collectionFavoriteArtistsEmptyTitle": { - "description": "Favorite artists empty state title" - }, - "@errorInvalidFolderSelected": { - "description": "Error when the selected folder is invalid" - }, - "@searchSortArtistZA": { - "description": "Sort option - artist descending" - }, - "snackbarAddedTracksToLoved": "Added {count} tracks to Loved", - "@snackbarAddedTracksToLoved": { - "description": "Snackbar after adding multiple tracks to Loved folder", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cancelDownloadContent": "This will cancel the active download for \"{trackName}\".", - "@cancelDownloadContent": { - "description": "Dialog body when confirming cancellation of an active download", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "settingsCacheSubtitle": "View size and clear cached data", - "@settingsCacheSubtitle": { - "description": "Subtitle for cache management menu" - }, - "notifLibraryScanCompleteBody": "{count} tracks indexed", - "@cacheSizeWithFiles": { - "description": "Cache size and file count", - "placeholders": { - "size": { - "type": "String" - }, - "count": { - "type": "int" - } - } - }, - "@downloadAskBeforeDownload": { - "description": "Setting - show quality picker" - }, - "@extensionHealthDegraded": { - "description": "Extension service health status - degraded" - }, - "@sectionPerformance": { - "description": "Settings section header" - }, - "@trackCoverCurrent": { - "description": "Label for the currently embedded cover preview" - }, - "discographySelectAlbums": "Selecione Álbuns...", - "@discographySelectAlbums": { - "description": "Option - manually select albums to download" - }, - "aboutAppDescription": "Pesquisar metadados de músicas, gerenciar extensões e organizar sua biblioteca.", - "@aboutAppDescription": { - "description": "App description in header card" - }, - "extensionCustomTrackMatching": "Correspondência de Faixa Personalizada", - "@extensionCustomTrackMatching": { - "description": "Capability - custom track matching algorithm" - }, - "@editMetadataSelectNone": { - "description": "Button to clear selected fields for auto-fill" - }, - "@trackPlayNext": { - "description": "Menu action to play a track as the next queue item" - }, - "extensionCapabilities": "Funcionalidades", - "@extensionCapabilities": { - "description": "Section header - extension features" - }, - "@downloadSelectServiceToEnable": { - "description": "Subtitle when quality picker is disabled due to extension service" - }, - "logIssueRateLimitedDescription": "Too many requests to the service", - "@logIssueRateLimitedDescription": { - "description": "Diagnostic badge description for rate limiting" - }, - "@actionResume": { - "description": "Action button - resume download" - }, - "@updateDownloadInstall": { - "description": "Update button - download and install" - }, - "downloadLossy320Format": "Lossy 320kbps Format", - "@downloadLossy320Format": { - "description": "Title of the lossy format picker bottom sheet" - }, - "settingsMetadataSubtitle": "Cover art, tags, ReplayGain, providers", - "@trackCopyright": { - "description": "Metadata label - copyright information" - }, - "@snackbarExtensionInstalled": { - "description": "Snackbar - extension installed successfully", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "@regionCountryJP": { - "description": "Country name for SongLink region picker" - }, - "trackReEnrichOnlineSubtitle": "Search metadata online and embed into file", - "@trackReEnrichOnlineSubtitle": { - "description": "Subtitle for re-enrich metadata action for local items" - }, - "nowPlayingNothingPlaying": "Nothing is playing", - "@nowPlayingNothingPlaying": { - "description": "Empty state when no track is currently playing" - }, - "tutorialDownloadDesc": "Pick an available quality, start the download, and follow its progress in the queue.", - "@tutorialDownloadDesc": { - "description": "Tutorial download page description" - }, - "@appearanceTitle": { - "description": "Appearance settings page title" - }, - "@backupExportSectionDescription": { - "description": "Description of what a backup contains" - }, - "@downloadLossyOpus128": { - "description": "Lossy format option - Opus 128kbps" - }, - "@logFilterSection": { - "description": "Filter section title" - }, - "trackReEnrichSuccess": "Metadata re-enriched successfully", - "@trackReEnrichSuccess": { - "description": "Snackbar after successful re-enrichment" - }, - "backupContentsHistory": "{count} history {count, plural, =1{item} other{items}}", - "@backupContentsHistory": { - "description": "Backup contents row for history count", + "@dialogImportPlaylistMessage": { + "description": "Dialog message - import playlist confirmation", "placeholders": { "count": { "type": "int" @@ -2303,692 +958,93 @@ } } }, - "libraryAutoScanOnOpen": "Sempre que abrir o aplicativo", - "@libraryAutoScanOnOpen": { - "description": "Auto scan when app opens" + "snackbarAddedTracksToQueue": "{count} faixas adicionadas à fila", + "@snackbarAddedTracksToQueue": { + "description": "Snackbar - multiple tracks added to queue", + "placeholders": { + "count": { + "type": "int" + } + } }, - "audioAnalysisChannels": "Channels", - "@audioAnalysisChannels": { - "description": "Channels metric label" - }, - "appearanceHistoryViewList": "Lista", - "updateDownloadInstall": "Baixar e Instalar", - "@libraryShowDuplicateIndicator": { - "description": "Toggle for duplicate indicator in search" - }, - "extensionsHomeFeedOff": "Off", - "@extensionsHomeFeedOff": { - "description": "Extensions page - home feed provider option: off" - }, - "searchSortTitleAZ": "Título (A-Z)", - "@searchSortTitleAZ": { - "description": "Sort option - title ascending" - }, - "collectionRemovedFromLoved": "\"{trackName}\" removed from Loved", - "@collectionRemovedFromLoved": { - "description": "Snackbar after removing track from loved folder", + "snackbarAlreadyDownloaded": "\"{trackName}\" já foi baixada", + "@snackbarAlreadyDownloaded": { + "description": "Snackbar - track already exists", "placeholders": { "trackName": { "type": "String" } } }, - "sectionAudioQuality": "Qualidade de Áudio", - "@sectionAudioQuality": { - "description": "Settings section header" - }, - "trackConvertSuccess": "Converted to {format} successfully", - "@trackConvertSuccess": { - "description": "Snackbar after successful conversion", - "placeholders": { - "format": { - "type": "String" - } - } - }, - "dialogUninstallExtensionMessage": "Tem certeza que deseja remover {extensionName}?", - "@dialogUninstallExtensionMessage": { - "description": "Dialog message - uninstall specific extension", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "downloadNativeWorkerSubtitle": "Serviço Android em segundo plano para transferências de extensões", - "@downloadNativeWorkerSubtitle": { - "description": "Setting subtitle for Android native download worker" - }, - "storeUpdate": "Atualizar", - "libraryFilterMetadataMissingAny": "Missing any metadata", - "@libraryFilterMetadataMissingAny": { - "description": "Filter option - items missing any tracked metadata field" - }, - "@selectionBatchConvertConfirmMessageLosslessCapped": { - "description": "Confirmation dialog message for capped lossless batch conversion", - "placeholders": { - "count": { - "type": "int" - }, - "format": { - "type": "String" - }, - "quality": { - "type": "String" - } - } - }, - "editMetadataAutoFillDesc": "Choose a metadata extension, select fields, then review its data before applying", - "@editMetadataAutoFillDesc": { - "description": "Description for the auto-fill section" - }, - "@lyricsProviderExtensionDesc": { - "description": "Generic description for extension-based lyrics providers" - }, - "downloadSongLinkRegion": "SongLink Region", - "@downloadSongLinkRegion": { - "description": "Setting for SongLink region used during fallback resolution" - }, - "shareSheetNoExtensions": "No other compatible services", - "@shareSheetNoExtensions": { - "description": "Empty state when no extensions can be searched for cross-service links" - }, - "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": { - "description": "Confirmation dialog body before queueing FLAC redownloads for local tracks", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "tooltipAddToPlaylist": "Add to Playlist", - "@tooltipAddToPlaylist": { - "description": "Tooltip for the Add to Playlist button" - }, - "@snackbarAddedToQueueGeneric": { - "description": "Snackbar when a track is added to the playback queue without naming it" - }, - "@tutorialSettingsTip2": { - "description": "Tutorial settings tip 2" - }, - "extensionPermissions": "Permissões", - "releaseTypeSingle": "Single", - "aboutTelegramChannelSubtitle": "Anúncios e atualizações", - "@aboutTelegramChannelSubtitle": { - "description": "Subtitle for Telegram channel" - }, - "@dialogDisableAndClear": { - "description": "Confirmation action to disable download history and clear existing entries" - }, - "@homeSearchHintProvider": { - "description": "Placeholder for the main search field when a provider is selected", - "placeholders": { - "providerName": { - "type": "String" - } - } - }, - "metadataProvidersTitle": "Metadata Provider Priority", - "@metadataProvidersTitle": { - "description": "Settings item title for metadata provider order" - }, - "trackAddToQueue": "Add to queue", - "audioAnalysisDecodedFormat": "Decoded Format", - "@audioAnalysisDecodedFormat": { - "description": "Decoded sample format metric label" - }, - "@editMetadataSelectEmpty": { - "description": "Button to select only fields that are currently empty" - }, - "collectionAlreadyInPlaylist": "Already in \"{playlistName}\"", - "discographyAlbumsOnlySubtitle": "{count} faixas de {albumCount} álbuns", - "@discographyAlbumsOnlySubtitle": { - "description": "Subtitle showing album tracks count", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } - }, - "setupNotificationEnable": "Habilitar Notificações", - "@setupNotificationEnable": { - "description": "Button to enable notifications" - }, - "settingsAppearanceSubtitle": "Tema, cores, exibição", - "@settingsAppearanceSubtitle": { - "description": "Appearance settings description" - }, - "@notifUpdateFailedBody": { - "description": "Notification body when app update download fails" - }, - "@aboutOriginalCreator": { - "description": "Role description for original creator" - }, - "libraryBuiltInPreviewPlayer": "Built-in preview player", - "@libraryBuiltInPreviewPlayer": { - "description": "Setting option to use the built-in preview player" - }, - "tooltipPlay": "Reproduzir", - "@tooltipPlay": { - "description": "Tooltip - play button" - }, - "@safMigrationMessage2": { - "description": "Second paragraph of SAF migration dialog" - }, - "@extensionsSearchProvider": { - "description": "Setting - search provider selection" - }, - "libraryAboutDescription": "Scans your existing music collection to detect duplicates when downloading. Supports FLAC, M4A, MP3, Opus, and OGG formats. Metadata is read from file tags when available.", - "@libraryAboutDescription": { - "description": "Description of local library feature" - }, - "downloadAskBeforeDownload": "Perguntar qualidade antes de baixar", - "nowPlayingNoMetadata": "No metadata available", - "@nowPlayingNoMetadata": { - "description": "Empty state when track metadata cannot be loaded" - }, - "trackInstrumental": "Faixa de instrumentais", - "@trackInstrumental": { - "description": "Message when track is instrumental (no lyrics)" - }, - "@collectionWishlistEmptyTitle": { - "description": "Wishlist empty state title" - }, - "selectionBatchConvertConfirmMessageLosslessCapped": "Convert {count} {count, plural, =1{track} other{tracks}} to {format} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original files will be deleted after conversion.", - "downloadDeduplication": "Skip Duplicate Downloads", - "libraryFilterSortOldest": "Oldest", - "@libraryFilterSortOldest": { - "description": "Sort option - oldest first" - }, - "setupSkip": "Ignorar por enquanto", - "@setupSkip": { - "description": "Skip current step button" - }, - "@setupFolderDescription": { - "description": "Explanation for folder selection" - }, - "@settingsLogsSubtitle": { - "description": "Logs settings description" - }, - "storeNewRepoUrlLabel": "URL do novo repositório", - "@storeNewRepoUrlLabel": { - "description": "Label for the new repository URL field inside the dialog" - }, - "cacheClearConfirmMessage": "This will clear cached data for {target}. Downloaded music files will not be deleted.", - "@cacheClearConfirmMessage": { - "description": "Dialog message before clearing selected cache", - "placeholders": { - "target": { - "type": "String" - } - } - }, - "trackMetadataPlay": "Reproduzir", - "@libraryEnableLocalLibrary": { - "description": "Toggle to enable library scanning" - }, - "optionsUpdateChannel": "Canal de Atualização", - "@optionsUpdateChannel": { - "description": "Stable vs preview releases" - }, - "@downloadCreatePlaylistSourceFolderDisabled": { - "description": "Subtitle when playlist folder is disabled" - }, - "@extensionRefreshStatus": { - "description": "Tooltip for refreshing extension service health status" - }, - "backupRestoreRestartHint": "Restart the app to make sure every change is applied.", - "@backupRestoreRestartHint": { - "description": "Hint shown after restoring that an app restart is recommended" - }, - "@snackbarExtensionInstalledEnable": { - "description": "Snackbar after installing an extension from the repo tab", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "settingsAutoExportFailedSubtitle": "Save failed downloads to TXT file automatically", - "@settingsAutoExportFailedSubtitle": { - "description": "Subtitle for auto-export setting" - }, - "searchSortArtistAZ": "Artista (A-Z)", - "@searchSortArtistAZ": { - "description": "Sort option - artist ascending" - }, - "editMetadataFieldAlbumArtist": "Album Artist", - "@editMetadataFieldAlbumArtist": { - "description": "Chip label for album artist field in auto-fill selector" - }, - "@queueEmptyHistory": { - "description": "Empty state title when download history is empty" - }, - "@dialogDisableHistoryMessage": { - "description": "Confirmation dialog message shown before disabling download history" - }, - "queueFlacNoReliableMatches": "No reliable online matches found for the selection", - "@queueFlacNoReliableMatches": { - "description": "Snackbar when no safe FLAC redownload matches were found" - }, - "trackOpenInDeezer": "Abrir no Deezer", - "@trackOpenInDeezer": { - "description": "Action - open track in Deezer app" - }, - "setupChooseFromFilesSubtitle": "Selecione o iCloud ou outro local", - "@setupChooseFromFilesSubtitle": { - "description": "Subtitle for file picker" - }, - "artistMonthlyListeners": "{count} ouvintes mensais", - "@artistMonthlyListeners": { - "description": "Monthly listener count display", - "placeholders": { - "count": { - "type": "String", - "description": "Formatted listener count" - } - } - }, - "@downloadLossyAacSubtitle": { - "description": "Subtitle for AAC/M4A 320kbps lossy option" - }, - "cacheSectionStorage": "Cached Data", - "@cacheSectionStorage": { - "description": "Section header for cache entries" - }, - "@libraryAutoScanWeekly": { - "description": "Auto scan once per week" - }, - "tutorialDownloadCompletedSemantics": "Download completed", - "@tutorialDownloadCompletedSemantics": { - "description": "Accessibility label for completed download state in tutorial demo" - }, - "@logNoLogsYet": { - "description": "Empty state title" - }, - "@selectionDeletePlaylistsCount": { - "description": "Button label for deleting multiple selected playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadSeparateSinglesEnabled": "Singles and EPs saved in a separate folder", - "@downloadSeparateSinglesEnabled": { - "description": "Subtitle when separate singles folder is on" - }, - "setupAppDocumentsFolder": "Pasta Documentos do App", - "@setupAppDocumentsFolder": { - "description": "iOS documents folder option" - }, - "storeLoadError": "Falha ao carregar o repositório", - "settingsDownloadNetwork": "Download Network", - "metadataSaveFailedStorage": "Failed to write metadata back to storage", - "@logAutoScrollOff": { - "description": "Tooltip when auto-scroll is disabled on the log screen" - }, - "@trackConvertFormat": { - "description": "Menu item - convert audio format" - }, - "optionsArtistTagModeJoined": "Valor único combinado", - "@optionsArtistTagModeJoined": { - "description": "Artist tag mode option that joins multiple artists into one value" - }, - "@dateYesterday": { - "description": "Relative date - yesterday" - }, - "@settingsExtensionsSubtitle": { - "description": "Extensions settings description" - }, - "searchSortArtistZA": "Artista (Z-A)", - "@extensionSettings": { - "description": "Section header - extension settings" - }, - "@extensionOauthConnectHint": { - "description": "Hint for an OAuth login link field before connecting Spotify" - }, - "@notifUpdateReady": { - "description": "Notification title when app update download is complete" - }, - "@regionCountryMX": { - "description": "Country name for SongLink region picker" - }, - "@nowPlayingOpenInExternalPlayer": { - "description": "Menu item to open the current track in an external player" - }, - "trackConvertDithering": "Dithering", - "@trackConvertDithering": { - "description": "Section label for lossless conversion dithering options" - }, - "settingsDownloadSubtitle": "Serviço, qualidade, alternativa", - "@settingsDownloadSubtitle": { - "description": "Download settings description" - }, - "libraryLastScanned": "Last scanned: {time}", - "@libraryLastScanned": { - "description": "Last scan time display", - "placeholders": { - "time": { - "type": "String" - } - } - }, - "setupIosEmptyFolderWarning": "Limitação do iOS: Pastas vazias não podem ser selecionadas. Escolha uma pasta com pelo menos um arquivo.", - "@setupIosEmptyFolderWarning": { - "description": "iOS folder selection warning" - }, - "@storeAddRepoDescription": { - "description": "Store setup screen - explanatory text" - }, - "@snackbarFailedToInstallNamed": { - "description": "Snackbar when extension install fails in the repo tab", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "@collectionAddedTracksToPlaylist": { - "description": "Snackbar after adding multiple tracks to a playlist", - "placeholders": { - "count": { - "type": "int" - }, - "playlistName": { - "type": "String" - } - } - }, - "updateNew": "Novo", - "@updateNew": { - "description": "Label for new version" - }, - "settingsExtensionsSubtitle": "Gerenciar provedores de download", - "@albumFolderArtistAlbumSinglesSubtitle": { - "description": "Folder structure example" - }, - "trackReEnrichSelectAll": "Select All", - "@trackReEnrichSelectAll": { - "description": "Select all fields checkbox in re-enrich" - }, - "@extensionsUninstall": { - "description": "Uninstall extension button" - }, - "@downloadUseAlbumArtistForFoldersTrackSubtitle": { - "description": "Subtitle when track artist is used for folder names" - }, - "@logIssueNetworkErrorLabel": { - "description": "Diagnostic badge label for generic network errors" - }, - "albumFolderArtistYearAlbumSubtitle": "Álbuns/Nome do Artista/[2005] Nome do Álbum/", - "@albumFolderArtistYearAlbumSubtitle": { - "description": "Folder structure example" - }, - "itemCount": "{count} {count, plural, =1{item} other{items}}", - "@itemCount": { - "description": "Generic item count label", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "discographyFetchingTracks": "Buscando faixas...", - "@discographyFetchingTracks": { - "description": "Progress - fetching album tracks" - }, - "@libraryFolder": { - "description": "Folder selection setting" - }, - "queueEmptyAlbums": "No album downloads", - "@queueEmptyAlbums": { - "description": "Empty state title when no album downloads exist" - }, - "@metadataProviderPriorityDescription": { - "description": "Metadata priority page description" - }, - "@extensionVerificationHelpTitleManual": { - "description": "Dialog title when automatic browser launch for verification fails" - }, - "extensionError": "Erro", - "@extensionError": { - "description": "Extension detail - error message" - }, - "@trackLyricsLoadFailed": { - "description": "Message when lyrics loading fails" - }, - "@downloadedAlbumDeleteCount": { - "description": "Delete button text with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@extensionsNoHomeFeedExtensions": { - "description": "Extensions page - shown when no installed extension has home feed" - }, - "@collectionArtistCount": { - "description": "Artist count label for favorite artists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "backupContentsArtists": "{count, plural, =1{1 favorite artist} other{{count} favorite artists}}", - "@backupContentsArtists": { - "description": "Backup contents row for favorite artists count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@trackRemoveFromDevice": { - "description": "Action - delete downloaded file" - }, - "lyricsProvidersEnabledSection": "Enabled ({count})", - "@lyricsProvidersEnabledSection": { - "description": "Section header for enabled providers", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@cueSplitTitle": { - "description": "Title for CUE split bottom sheet" - }, - "@downloadedAlbumSelectedCount": { - "description": "Selection count indicator", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@trackOptionRemoveFromWishlist": { - "description": "Bottom sheet action label - remove track from wishlist" - }, - "notifDownloadingTrack": "Downloading {trackName}", - "@notifDownloadingTrack": { - "description": "Notification title while downloading a track", + "snackbarAlreadyInLibrary": "\"{trackName}\" já existe na sua biblioteca", + "@snackbarAlreadyInLibrary": { + "description": "Snackbar - track already exists in local library", "placeholders": { "trackName": { "type": "String" } } }, - "@discographySkippedDownloaded": { - "description": "Snackbar - with skipped tracks count", + "snackbarHistoryCleared": "Histórico limpo", + "@snackbarHistoryCleared": { + "description": "Snackbar - history deleted" + }, + "snackbarDeletedTracks": "{count} {count, plural, =1{faixa apagada} other{faixas apagadas}}", + "@snackbarDeletedTracks": { + "description": "Snackbar - tracks deleted", "placeholders": { - "added": { - "type": "int" - }, - "skipped": { + "count": { "type": "int" } } }, - "@tutorialSettingsTip3": { - "description": "Tutorial settings tip 3" - }, - "@announcementUnableToOpenLink": { - "description": "Snackbar shown when an announcement CTA link cannot be opened" - }, - "trackReleaseDate": "Data de lançamento", - "discographySelectedCount": "{count} selecionado(s)", - "collectionArtistCount": "{count, plural, =1{1 artist} other{{count} artists}}", - "logIssueNetworkErrorLabel": "NETWORK ERROR", - "updateStartingDownload": "Iniciando download...", - "@updateStartingDownload": { - "description": "Update status - initializing" - }, - "trackDiscNumber": "Número do disco", - "@trackDiscNumber": { - "description": "Metadata label - disc number" - }, - "optionsUsingExtension": "Usando a extensão: {extensionName}", - "@optionsUsingExtension": { - "description": "Shows active extension name", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "dialogDisableHistoryTitle": "Turn off download history?", - "tutorialWelcomeTip3": "Embed metadata, cover art, lyrics, and release information automatically", - "@tutorialWelcomeTip3": { - "description": "Tutorial welcome tip 3" - }, - "@collectionPlaylistEmptySubtitle": { - "description": "Playlist empty state subtitle" - }, - "@tutorialSearchHint": { - "description": "Placeholder shown in the tutorial search demo" - }, - "cleanupOrphanedDownloadsNone": "No orphaned entries found", - "discographySkippedDownloaded": "{added} adicionada(s), {skipped} já baixada(s)", - "@updateDontRemind": { - "description": "Update button - skip this version" - }, - "@snackbarLoadingCueSheet": { - "description": "Snackbar while loading a CUE sheet file" - }, - "@dialogUninstallExtension": { - "description": "Dialog title - uninstall extension" - }, - "lyricsProvidersTitle": "Lyrics Provider Priority", - "@dialogRemove": { - "description": "Dialog button - remove item" - }, - "snackbarError": "Error: {error}", - "@snackbarError": { - "description": "Generic error snackbar with error detail", + "snackbarCannotOpenFile": "Não foi possível abrir o arquivo: {error}", + "@snackbarCannotOpenFile": { + "description": "Snackbar - file open error", "placeholders": { "error": { "type": "String" } } }, - "@sectionApp": { - "description": "Settings section header" + "snackbarViewQueue": "Ver Fila", + "@snackbarViewQueue": { + "description": "Snackbar action - view download queue" }, - "@libraryPlayback": { - "description": "Section header for playback settings in library settings" + "snackbarUrlCopied": "URL do {platform} copiado para a área de transferência", + "@snackbarUrlCopied": { + "description": "Snackbar - URL copied", + "placeholders": { + "platform": { + "type": "String", + "description": "Platform name (Spotify/Deezer)" + } + } }, - "@downloadPrimaryArtistOnlyOn": { - "description": "Status label when primary-artist-only folder naming is enabled" + "snackbarFileNotFound": "Arquivo não encontrado", + "@snackbarFileNotFound": { + "description": "Snackbar - file doesn't exist" }, - "lyricsProvidersDiscardContent": "You have unsaved changes that will be lost.", - "previewStop": "Parar prévia", - "@previewStop": { - "description": "Tooltip for the button that stops the playing track preview snippet" + "snackbarSelectExtFile": "Por favor, selecione um arquivo .spotiflac-ext", + "@snackbarSelectExtFile": { + "description": "Snackbar - wrong file type selected" }, - "trackConvertConfirmMessageLossless": "Convert from {sourceFormat} to {targetFormat}? (Lossless — no quality loss)\n\nThe original file will be deleted after conversion.", - "discographyAlbumsOnly": "Somente Álbuns", - "@discographyAlbumsOnly": { - "description": "Option - download only albums" + "snackbarProviderPrioritySaved": "Prioridade de provedor salva", + "@snackbarProviderPrioritySaved": { + "description": "Snackbar - provider order saved" }, - "@editMetadataFieldCopyright": { - "description": "Chip label for copyright field in auto-fill selector" + "snackbarMetadataProviderSaved": "Prioridade do provedor de metadados salva", + "@snackbarMetadataProviderSaved": { + "description": "Snackbar - metadata provider order saved" }, - "extensionsFallbackSubtitle": "Escolha quais extensões de download instaladas podem ser usadas como alternativa", - "aboutSocial": "Social", - "@aboutSocial": { - "description": "Section for social links" - }, - "audioAnalysisNyquist": "Nyquist", - "trackCoverSelected": "Selected cover", - "@trackCoverSelected": { - "description": "Label for the newly selected cover preview" - }, - "downloadDeduplicationEnabled": "Already-downloaded tracks will be skipped", - "@downloadDeduplicationEnabled": { - "description": "Subtitle when deduplication is on" - }, - "homeEmptyTitle": "Ainda não há provedores de pesquisa", - "@homeEmptyTitle": { - "description": "Title shown on home when no providers are available yet" - }, - "@extensionHealthUnknown": { - "description": "Extension service health status - unknown" - }, - "storeInstalled": "Instalado", - "@storeInstalled": { - "description": "Already installed badge" - }, - "trackReplayGainSuccess": "Etiquetas ReplayGain adicionadas", - "@trackReplayGainSuccess": { - "description": "Snackbar message after ReplayGain tags written for a single track" - }, - "libraryShowDuplicateIndicatorSubtitle": "Show when searching for existing tracks", - "@collectionPlaylistRenamed": { - "description": "Snackbar after renaming playlist" - }, - "@trackConvertResamplerSoxr": { - "description": "Lossless conversion SoX resampler option" - }, - "@dialogUnsavedChanges": { - "description": "Dialog message - unsaved changes" - }, - "dialogDownload": "Baixar", - "@dialogDownload": { - "description": "Confirm button in Download All dialog" - }, - "trackLyricsLoadFailed": "Falha ao carregar a letra", - "@backupContentsTitle": { - "description": "Header above the list summarizing what the backup contains" - }, - "@safMigrationTitle": { - "description": "Title of SAF migration dialog" - }, - "@trackReEnrichFieldLyrics": { - "description": "Checkbox label for lyrics field in re-enrich" - }, - "setupPermissionDeniedMessage": "Permissão negada. Por favor, conceda todas as permissões para continuar.", - "@setupPermissionDeniedMessage": { - "description": "Error when permission denied" - }, - "settingsDownloadNetworkWifiOnly": "WiFi Only", - "@settingsDownloadNetworkWifiOnly": { - "description": "Network option - only use WiFi" - }, - "@backupIncludeSecrets": { - "description": "Toggle to include secret extension settings (tokens, API keys) in the backup" - }, - "@libraryFilterMetadataMissingAlbumArtist": { - "description": "Filter option - items missing album artist" - }, - "@extensionHealthServiceUnknown": { - "description": "Tooltip for unknown extension service health" + "snackbarExtensionInstalled": "{extensionName} instalada.", + "@snackbarExtensionInstalled": { + "description": "Snackbar - extension installed successfully", + "placeholders": { + "extensionName": { + "type": "String" + } + } }, "snackbarExtensionUpdated": "{extensionName} atualizada.", "@snackbarExtensionUpdated": { @@ -2999,114 +1055,365 @@ } } }, - "homeEmptySubtitle": "Instale uma extensão para continuar.", - "@settingsTitle": { - "description": "Settings screen title" + "snackbarFailedToInstall": "Falha ao instalar a extensão", + "@snackbarFailedToInstall": { + "description": "Snackbar - extension install error" }, - "@libraryFilterMetadataIncorrectIsrcFormat": { - "description": "Filter option - items with an invalid ISRC format" + "snackbarFailedToUpdate": "Falha ao atualizar a extensão", + "@snackbarFailedToUpdate": { + "description": "Snackbar - extension update error" }, - "@notifLibraryScanComplete": { - "description": "Notification title when library scan finishes" + "errorRateLimited": "Tráfico Limitado (Rate Limited)", + "@errorRateLimited": { + "description": "Error title - too many requests" }, - "@logIssueIspBlockingLabel": { - "description": "Diagnostic badge label when ISP blocking is detected" + "errorRateLimitedMessage": "Muitas solicitações. Por favor, aguarde um momento antes de pesquisar novamente.", + "@errorRateLimitedMessage": { + "description": "Error message - rate limit explanation" }, - "tutorialDownloadTitle": "Downloading Music", - "@tutorialDownloadTitle": { - "description": "Tutorial download page title" + "errorNoTracksFound": "Nenhuma faixa encontrada", + "@errorNoTracksFound": { + "description": "Error - search returned no results" }, - "unknownTitle": "Unknown title", - "@unknownTitle": { - "description": "Fallback track title when metadata is missing" + "searchEmptyResultSubtitle": "Tente outra palavra-chave", + "@searchEmptyResultSubtitle": { + "description": "Subtitle shown under the empty search result state on the home screen" }, - "navLibrary": "Biblioteca", - "@navLibrary": { - "description": "Bottom navigation - Library tab" + "errorUrlNotRecognized": "Link não reconhecido", + "@errorUrlNotRecognized": { + "description": "Error title - URL not handled by any extension or service" }, - "@snackbarAlreadyDownloaded": { - "description": "Snackbar - track already exists", + "errorUrlNotRecognizedMessage": "Este link não é suportado. Verifique se a URL está correta e se uma extensão compatível está instalada.", + "@errorUrlNotRecognizedMessage": { + "description": "Error message - URL not recognized explanation" + }, + "errorUrlFetchFailed": "Falha ao carregar o conteúdo deste link. Por favor, tente novamente.", + "@errorUrlFetchFailed": { + "description": "Error message - generic URL fetch failure" + }, + "errorMissingExtensionSource": "Não é possível carregar {item}: faltando a fonte da extensão", + "@errorMissingExtensionSource": { + "description": "Error - extension source not available", "placeholders": { - "trackName": { + "item": { "type": "String" } } }, - "editMetadataSelectAll": "All", - "@editMetadataSelectAll": { - "description": "Button to select all fields for auto-fill" + "actionPause": "Pausar", + "@actionPause": { + "description": "Action button - pause download" }, - "storeEmptyNoExtensions": "Nenhuma extensão disponível", - "@storeEmptyNoExtensions": { - "description": "Message when store has no extensions" + "actionResume": "Retomar", + "@actionResume": { + "description": "Action button - resume download" }, - "optionsUpdateChannelWarning": "A prévia pode conter erros ou recursos incompletos", - "@optionsUpdateChannelWarning": { - "description": "Warning about preview channel" + "actionCancel": "Cancelar", + "@actionCancel": { + "description": "Action button - cancel operation" }, - "@collectionPlaylistNameHint": { - "description": "Hint text for playlist name input" + "actionSelectAll": "Selecionar Tudo", + "@actionSelectAll": { + "description": "Action button - select all items" }, - "notifLibraryScanComplete": "Library scan complete", - "editMetadataFieldIsrc": "ISRC", - "@editMetadataFieldIsrc": { - "description": "Chip label for ISRC field in auto-fill selector" + "actionDeselect": "Desselecionar", + "@actionDeselect": { + "description": "Action button - deselect all" }, - "@libraryFolderHint": { - "description": "Placeholder when no folder selected" - }, - "homeSearchHintDefault": "Paste supported URL or search...", - "@homeSearchHintDefault": { - "description": "Default placeholder for the main search field on Home" - }, - "extensionsNoExtensionsSubtitle": "Instale arquivos .spotiflac-ext para adicionar novos provedores", - "@extensionsNoExtensionsSubtitle": { - "description": "Empty state subtitle" - }, - "@extensionEnterValue": { - "description": "Hint for editing an extension setting value" - }, - "backupRestoreConfirmTitle": "Restore this backup?", - "@backupRestoreConfirmTitle": { - "description": "Confirmation dialog title before restoring a backup" - }, - "@libraryScanSelectFolderFirst": { - "description": "Message when trying to scan without folder" - }, - "@qualityHiResFlac": { - "description": "Quality option - high resolution FLAC" - }, - "aboutSpecialThanks": "Agradecimentos Especiais", - "@aboutSpecialThanks": { - "description": "Section for special thanks" - }, - "storeInstall": "Instalar", - "@storeInstall": { - "description": "Install extension button" - }, - "@collectionWishlistEmptySubtitle": { - "description": "Wishlist empty state subtitle" - }, - "historyFilterAlbums": "Álbuns", - "extensionCustomUrlHandlingSubtitle": "This extension can handle links from these sites", - "@extensionCustomUrlHandlingSubtitle": { - "description": "Extension detail subtitle for custom URL handling" - }, - "filenameShowAdvancedTagsDescription": "Ativar etiquetas formatadas para preenchimento de faixas e padrões de data", - "@aboutReportIssue": { - "description": "Link to report bugs" - }, - "@folderOrganizationByPlaylist": { - "description": "Folder option - playlist folders" - }, - "@dateWeeksAgo": { - "description": "Relative date - weeks ago", + "selectionSelected": "{count} selecionado(s)", + "@selectionSelected": { + "description": "Selection count indicator", "placeholders": { "count": { "type": "int" } } }, + "selectionAllSelected": "Todas as faixas selecionadas", + "@selectionAllSelected": { + "description": "Status - all items selected" + }, + "selectionSelectToDelete": "Selecione as faixas para apagar", + "@selectionSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "progressFetchingMetadata": "Buscando metadados... {current}/{total}", + "@progressFetchingMetadata": { + "description": "Progress indicator - loading track info", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "progressReadingCsv": "Lendo CSV...", + "@progressReadingCsv": { + "description": "Progress indicator - parsing CSV file" + }, + "searchSongs": "Músicas", + "@searchSongs": { + "description": "Search result category - songs" + }, + "searchArtists": "Artistas", + "@searchArtists": { + "description": "Search result category - artists" + }, + "searchAlbums": "Álbuns", + "@searchAlbums": { + "description": "Search result category - albums" + }, + "searchPlaylists": "Listas de reprodução", + "@searchPlaylists": { + "description": "Search result category - playlists" + }, + "searchSortTitle": "Ordenar resultados", + "@searchSortTitle": { + "description": "Bottom sheet title for search sort options" + }, + "searchSortDefault": "Padrão", + "@searchSortDefault": { + "description": "Sort option - default API order" + }, + "searchSortTitleAZ": "Título (A-Z)", + "@searchSortTitleAZ": { + "description": "Sort option - title ascending" + }, + "searchSortTitleZA": "Título (Z-A)", + "@searchSortTitleZA": { + "description": "Sort option - title descending" + }, + "searchSortArtistAZ": "Artista (A-Z)", + "@searchSortArtistAZ": { + "description": "Sort option - artist ascending" + }, + "searchSortArtistZA": "Artista (Z-A)", + "@searchSortArtistZA": { + "description": "Sort option - artist descending" + }, + "searchSortDurationShort": "Duração (mais curta)", + "@searchSortDurationShort": { + "description": "Sort option - shortest duration first" + }, + "searchSortDurationLong": "Duração (mais longa)", + "@searchSortDurationLong": { + "description": "Sort option - longest duration first" + }, + "searchSortDateOldest": "Data de lançamento (mais antiga)", + "@searchSortDateOldest": { + "description": "Sort option - oldest release first" + }, + "searchSortDateNewest": "Data de lançamento (mais recente)", + "@searchSortDateNewest": { + "description": "Sort option - newest release first" + }, + "tooltipPlay": "Reproduzir", + "@tooltipPlay": { + "description": "Tooltip - play button" + }, + "filenameFormat": "Formato do Nome do Arquivo", + "@filenameFormat": { + "description": "Setting title - filename pattern" + }, + "filenameShowAdvancedTags": "Exibir etiquetas avançadas", + "@filenameShowAdvancedTags": { + "description": "Toggle label for showing advanced filename tags" + }, + "filenameShowAdvancedTagsDescription": "Ativar etiquetas formatadas para preenchimento de faixas e padrões de data", + "@filenameShowAdvancedTagsDescription": { + "description": "Description for advanced filename tag toggle" + }, + "folderOrganizationNone": "Nenhuma organização", + "@folderOrganizationNone": { + "description": "Folder option - flat structure" + }, + "folderOrganizationByPlaylist": "Por playlist", + "@folderOrganizationByPlaylist": { + "description": "Folder option - playlist folders" + }, + "folderOrganizationByPlaylistSubtitle": "Pasta separada para cada playlist", + "@folderOrganizationByPlaylistSubtitle": { + "description": "Subtitle for playlist folder option" + }, + "folderOrganizationByArtist": "Por Artista", + "@folderOrganizationByArtist": { + "description": "Folder option - artist folders" + }, + "folderOrganizationByAlbum": "Por Album", + "@folderOrganizationByAlbum": { + "description": "Folder option - album folders" + }, + "folderOrganizationByArtistAlbum": "Artista/Álbum", + "@folderOrganizationByArtistAlbum": { + "description": "Folder option - nested folders" + }, + "folderOrganizationDescription": "Organizar arquivos baixados em pastas", + "@folderOrganizationDescription": { + "description": "Folder organization sheet description" + }, + "folderOrganizationNoneSubtitle": "Todos os arquivos na pasta de download", + "@folderOrganizationNoneSubtitle": { + "description": "Subtitle for no organization option" + }, + "folderOrganizationByArtistSubtitle": "Pasta separada para cada artista", + "@folderOrganizationByArtistSubtitle": { + "description": "Subtitle for artist folder option" + }, + "folderOrganizationByAlbumSubtitle": "Pasta separada para cada álbum", + "@folderOrganizationByAlbumSubtitle": { + "description": "Subtitle for album folder option" + }, + "folderOrganizationByArtistAlbumSubtitle": "Pastas aninhadas para artista e álbum", + "@folderOrganizationByArtistAlbumSubtitle": { + "description": "Subtitle for nested folder option" + }, + "updateAvailable": "Atualização Disponível", + "@updateAvailable": { + "description": "Update dialog title" + }, + "updateLater": "Depois", + "@updateLater": { + "description": "Update button - dismiss" + }, + "updateStartingDownload": "Iniciando download...", + "@updateStartingDownload": { + "description": "Update status - initializing" + }, + "updateDownloadFailed": "Download falhou", + "@updateDownloadFailed": { + "description": "Update error title" + }, + "updateFailedMessage": "Falha ao baixar a atualização", + "@updateFailedMessage": { + "description": "Update error message" + }, + "updateNewVersionReady": "Uma nova versão está pronta", + "@updateNewVersionReady": { + "description": "Update subtitle" + }, + "updateRequiredTitle": "Atualização necessária", + "@updateRequiredTitle": { + "description": "Title of the mandatory update dialog shown when the installed version is too old" + }, + "updateRequiredNotice": "Esta versão está {count} versões atrasada e não é mais compatível. Atualize para continuar a usar o aplicativo.", + "@updateRequiredNotice": { + "description": "Subtitle of the mandatory update dialog; explains why the dialog cannot be dismissed", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "updateCurrent": "Atual", + "@updateCurrent": { + "description": "Label for current version" + }, + "updateNew": "Novo", + "@updateNew": { + "description": "Label for new version" + }, + "updateDownloading": "Baixando...", + "@updateDownloading": { + "description": "Update status - downloading" + }, + "updateWhatsNew": "Novidades", + "@updateWhatsNew": { + "description": "Changelog section title" + }, + "updateDownloadInstall": "Baixar e Instalar", + "@updateDownloadInstall": { + "description": "Update button - download and install" + }, + "updateDontRemind": "Não lembrar", + "@updateDontRemind": { + "description": "Update button - skip this version" + }, + "providerPriorityTitle": "Prioridade de Provedor", + "@providerPriorityTitle": { + "description": "Provider priority page title" + }, + "providerPriorityDescription": "Arraste para reordenar provedores de download. O aplicativo irá tentar provedores de cima para baixo ao baixar as faixas.", + "@providerPriorityDescription": { + "description": "Provider priority page description" + }, + "providerPriorityInfo": "Se uma faixa não estiver disponível no primeiro provedor, o aplicativo irá tentar automaticamente a próxima.", + "@providerPriorityInfo": { + "description": "Info tip about fallback behavior" + }, + "providerPriorityFallbackExtensionsDescription": "Escolha quais extensões de download instaladas podem ser usadas durante a alternativa automática.", + "@providerPriorityFallbackExtensionsDescription": { + "description": "Section description for extension fallback selection" + }, + "providerPriorityFallbackExtensionsHint": "Apenas extensões ativadas com capacidade de provedor de download são listadas aqui.", + "@providerPriorityFallbackExtensionsHint": { + "description": "Hint below the extension fallback selection list" + }, + "providerExtension": "Extensão", + "@providerExtension": { + "description": "Label for extension-provided providers" + }, + "metadataProviderPriorityTitle": "Prioridade de Metadados", + "@metadataProviderPriorityTitle": { + "description": "Metadata priority page title" + }, + "metadataProviderPriorityDescription": "Arraste para reordenar provedores de metadados. O aplicativo tentará provedores de cima para baixo ao procurar por faixas e buscar metadados.", + "@metadataProviderPriorityDescription": { + "description": "Metadata priority page description" + }, + "metadataProviderPriorityInfo": "O Deezer não tem limites de taxa e é recomendado como principal. O Spotify pode limitar a taxa após muitas solicitações.", + "@metadataProviderPriorityInfo": { + "description": "Info tip about rate limits" + }, + "logTitle": "Registros", + "@logTitle": { + "description": "Logs screen title" + }, + "logCopied": "Registros copiados para área de transferência", + "@logCopied": { + "description": "Snackbar - logs copied" + }, + "logSearchHint": "Pesquisar registros...", + "@logSearchHint": { + "description": "Log search placeholder" + }, + "logFilterLevel": "Nível", + "@logFilterLevel": { + "description": "Filter by log level" + }, + "logFilterSection": "Filtro", + "@logFilterSection": { + "description": "Filter section title" + }, + "logShareLogs": "Compartilhar registros", + "@logShareLogs": { + "description": "Share button tooltip" + }, + "logClearLogs": "Limpar registros", + "@logClearLogs": { + "description": "Clear button tooltip" + }, + "logClearLogsTitle": "Limpar Registros", + "@logClearLogsTitle": { + "description": "Clear logs dialog title" + }, + "logClearLogsMessage": "Tem certeza de que deseja limpar todos os registros?", + "@logClearLogsMessage": { + "description": "Clear logs confirmation message" + }, + "logFilterBySeverity": "Filtrar registros por gravidade", + "@logFilterBySeverity": { + "description": "Filter dialog title" + }, + "logNoLogsYet": "Ainda não há registros", + "@logNoLogsYet": { + "description": "Empty state title" + }, + "logNoLogsYetSubtitle": "Os registros aparecerão aqui enquanto você usa o aplicativo", + "@logNoLogsYetSubtitle": { + "description": "Empty state subtitle" + }, "logEntriesFiltered": "Entradas ({count} filtradas)", "@logEntriesFiltered": { "description": "Log count with filter active", @@ -3116,173 +1423,6 @@ } } }, - "@lyricsModeDescription": { - "description": "Lyrics mode picker description" - }, - "@setupAppDocumentsFolderSubtitle": { - "description": "Subtitle for documents folder" - }, - "storeAddRepoButton": "Adicionar repositório", - "@storeAddRepoButton": { - "description": "Button to submit a new repository URL" - }, - "@collectionLovedEmptyTitle": { - "description": "Loved empty state title" - }, - "aboutReportIssue": "Reportar um problema", - "snackbarFailedToWriteStorage": "Failed to write back to storage", - "@snackbarFailedToWriteStorage": { - "description": "Snackbar when writing metadata back to file fails" - }, - "errorInvalidFolderSelected": "Invalid folder selected", - "allFilesAccessDisabledMessage": "All Files Access disabled. The app will use limited storage access.", - "@allFilesAccessDisabledMessage": { - "description": "Snackbar message when user disables all files access" - }, - "downloadMusixmatchLanguageCode": "Language code", - "@downloadMusixmatchLanguageCode": { - "description": "Label for Musixmatch language input field" - }, - "dialogUnsavedChanges": "Você tem alterações não salvas. Deseja descartá-las?", - "setupChooseFromFiles": "Escolher dos Arquivos", - "@setupChooseFromFiles": { - "description": "iOS file picker option" - }, - "@collectionFavoriteArtistsEmptySubtitle": { - "description": "Favorite artists empty state subtitle" - }, - "downloadLossy320FormatDesc": "Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.", - "@backupRestoreConfirmButton": { - "description": "Confirm button to proceed with restore" - }, - "@queueEmptyAlbumsSubtitle": { - "description": "Empty state subtitle for album downloads" - }, - "collectionRemovedFromWishlist": "\"{trackName}\" removed from Wishlist", - "@collectionRemovedFromWishlist": { - "description": "Snackbar after removing track from wishlist", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "extensionsInstalledSuccess": "Extensão instalada com sucesso", - "progressReadingCsv": "Lendo CSV...", - "@progressReadingCsv": { - "description": "Progress indicator - parsing CSV file" - }, - "artistReleases": "Releases", - "@artistReleases": { - "description": "Section header for all artist releases" - }, - "extensionVerificationBrowserTitle": "Verification browser", - "@optionsDefaultSearchTabSubtitle": { - "description": "Subtitle for the preferred default search tab setting" - }, - "optionsArtistTagModeJoinedSubtitle": "Escreva um valor ARTIST único como \"Artista A, Artista B\" para máxima compatibilidade com o ‘player’", - "downloadLossy320": "Lossy 320kbps", - "@downloadLossy320": { - "description": "Quality option label for lossy 320kbps" - }, - "queueFlacAction": "Queue FLAC", - "@queueFlacAction": { - "description": "Action/button label for queueing FLAC redownloads for local tracks" - }, - "@setupDownloadLocationIosMessage": { - "description": "iOS-specific folder info" - }, - "trackConvertOriginal": "Original", - "sectionLyricsProviderOptions": "Provider Options", - "nowPlayingTitle": "Now Playing", - "@nowPlayingTitle": { - "description": "Title for the now playing screen" - }, - "@extensionHealthChecksConfigured": { - "description": "Extension service health check count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@cacheClearAll": { - "description": "Button label to clear all caches" - }, - "a11yDeselectTrack": "Deselect track", - "@a11yDeselectTrack": { - "description": "Accessibility label for deselecting a track" - }, - "@lyricsProvidersInfoText": { - "description": "Info tip on lyrics provider priority page" - }, - "queueEmptyHistory": "No download history", - "dialogClear": "Limpar", - "@dialogClear": { - "description": "Dialog button - clear items" - }, - "allFilesAccessDescription": "Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.", - "@allFilesAccessDescription": { - "description": "Description explaining when to enable all files access" - }, - "trackConvertConfirmTitle": "Confirm Conversion", - "storeCategoryLyrics": "Lyrics", - "@storeCategoryLyrics": { - "description": "Store extension category - lyrics" - }, - "@lyricsProvidersDescription": { - "description": "Description on the lyrics provider priority page" - }, - "tooltipLoveAll": "Love All", - "downloadDirectory": "Pasta de Download", - "@downloadDirectory": { - "description": "Setting - download folder" - }, - "@tutorialExtensionsTip2": { - "description": "Tutorial extensions tip 2" - }, - "libraryFolder": "Library Folder", - "@metadataProviderPriorityTitle": { - "description": "Metadata priority page title" - }, - "@cleanupOrphanedDownloadsResult": { - "description": "Snackbar after orphan cleanup", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cacheExploreFeedDesc": "Explore tab content (new releases, trending). Will refresh on next visit.", - "@cacheExploreFeedDesc": { - "description": "Description of what explore feed cache contains" - }, - "a11yOpenTrackByArtist": "Open track {trackName} by {artistName}", - "@a11yOpenTrackByArtist": { - "description": "Accessibility label for opening a track item", - "placeholders": { - "trackName": { - "type": "String" - }, - "artistName": { - "type": "String" - } - } - }, - "announcementUnableToOpenLink": "Unable to open link. Please try again.", - "libraryFilterSortAlbumDesc": "Album (Z-A)", - "@libraryFilterSortAlbumDesc": { - "description": "Sort option - album descending" - }, - "trackConvertBitrate": "Bitrate", - "@trackConvertBitrate": { - "description": "Label for bitrate selection" - }, - "audioAnalysisFileSize": "Size", - "extensionHealthServiceOnline": "Service online", - "@extensionHealthServiceOnline": { - "description": "Tooltip for online extension service" - }, "logEntries": "Entradas ({count})", "@logEntries": { "description": "Total log count", @@ -3292,846 +1432,552 @@ } } }, - "trackConvertConfirmMessage": "Convert from {sourceFormat} to {targetFormat} at {bitrate}?\n\nThe original file will be deleted after conversion.", - "@trackConvertConfirmMessage": { - "description": "Confirmation dialog message", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "bitrate": { - "type": "String" - } - } + "channelStable": "Estável", + "@channelStable": { + "description": "Update channel - stable releases" }, - "@optionsArtistTagModeSplitVorbisSubtitle": { - "description": "Subtitle for split Vorbis artist tag mode" + "channelPreview": "Prévia", + "@channelPreview": { + "description": "Update channel - beta/preview releases" }, - "folderOrganizationByAlbum": "Por Album", - "@folderOrganizationByAlbum": { - "description": "Folder option - album folders" + "sectionSearchSource": "Origem da Pesquisa", + "@sectionSearchSource": { + "description": "Settings section header" }, - "libraryPlayback": "Playback", - "@storeFilterAll": { - "description": "Repo filter - all extensions" + "sectionDownload": "Baixar", + "@sectionDownload": { + "description": "Settings section header" }, - "aboutApp": "Aplicativo", - "@aboutApp": { - "description": "Section for app info" + "sectionPerformance": "Desempenho", + "@sectionPerformance": { + "description": "Settings section header" }, - "optionsReplayGainSubtitleOff": "Desativado: sem etiquetas de normalização de intensidade", - "@optionsReplayGainSubtitleOff": { - "description": "Subtitle when ReplayGain is disabled" + "sectionApp": "Aplicativo", + "@sectionApp": { + "description": "Settings section header" }, - "@storeRepoDialogTitle": { - "description": "Title of the change/remove repository dialog" + "sectionData": "Dados", + "@sectionData": { + "description": "Settings section header" }, - "settingsLyricsSubtitle": "Embed, mode, providers, language options", - "@settingsLyricsSubtitle": { - "description": "Subtitle for lyrics settings" + "sectionDebug": "Depuração", + "@sectionDebug": { + "description": "Settings section header" }, - "logIssueIspBlockingLabel": "ISP BLOCKING DETECTED", - "storeFilterIntegration": "Integração", - "@storeFilterIntegration": { - "description": "Repo filter - integrations" + "sectionService": "Serviço", + "@sectionService": { + "description": "Settings section header" }, - "@lyricsProvidersAtLeastOne": { - "description": "Snackbar when user tries to disable the last enabled provider" - }, - "@appearanceHistoryViewGrid": { - "description": "Grid layout option" - }, - "trackDownloaded": "Baixado", - "extensionVerificationHelpMessageManual": "SpotiFLAC Mobile could not open the browser automatically. Open this link in your browser, or copy it manually.", - "setupDownloadLocationIosMessage": "No iOS, downloads são salvos na pasta Documentos do aplicativo. Você pode acessá-los através do app Arquivos.", - "optionsArtistTagModeDescription": "Escolha como múltiplos artistas são escritos em etiquetas incorporadas.", - "@optionsArtistTagModeDescription": { - "description": "Bottom-sheet description for artist tag mode setting" - }, - "@queueRetryAllFailed": { - "description": "Button to retry every failed download in the queue", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@trackConvertDitherTriangularHp": { - "description": "Lossless conversion high-pass triangular dither option" - }, - "@extensionVerificationCopyLink": { - "description": "Button to copy the extension verification URL" - }, - "searchSongs": "Músicas", - "@searchSongs": { - "description": "Search result category - songs" - }, - "@appearanceHistoryView": { - "description": "Layout style for history" + "sectionAudioQuality": "Qualidade de Áudio", + "@sectionAudioQuality": { + "description": "Settings section header" }, "sectionFileSettings": "Configurações de Arquivo", "@sectionFileSettings": { "description": "Settings section header" }, - "@cancelDownloadTitle": { - "description": "Dialog title when confirming cancellation of an active download" + "sectionLyrics": "Letras", + "@sectionLyrics": { + "description": "Settings section header" }, - "@cacheLibraryCover": { - "description": "Cache item title for local library cover art images" + "lyricsMode": "Modo de Letras", + "@lyricsMode": { + "description": "Setting - how to save lyrics" }, - "audioAnalysisSpectralCutoff": "Spectral Cutoff", - "dialogDelete": "Apagar", - "@dialogDelete": { - "description": "Dialog button - delete item" + "lyricsModeDescription": "Escolha como as letras são salvas com os seus downloads", + "@lyricsModeDescription": { + "description": "Lyrics mode picker description" }, - "tutorialLibraryDesc": "Downloaded and locally scanned music is organized in your Library.", - "@tutorialLibraryDesc": { - "description": "Tutorial library page description" + "lyricsModeEmbed": "Incorporar no arquivo", + "@lyricsModeEmbed": { + "description": "Lyrics mode option - embed in audio file" }, - "@queueDownloadSpeedStatus": { - "description": "Queue status while downloading with speed", - "placeholders": { - "speed": { - "type": "String" - } - } + "lyricsModeEmbedSubtitle": "Letra armazenada nos metadados da FLAC", + "@lyricsModeEmbedSubtitle": { + "description": "Subtitle for embed option" }, - "@extensionsHomeFeedOffSubtitle": { - "description": "Extensions page - subtitle for off home feed option" - }, - "cacheCleanupResult": "Cleanup completed: {downloadCount} orphaned downloads, {libraryCount} missing library entries", - "@cacheCleanupResult": { - "description": "Snackbar after unused data cleanup", - "placeholders": { - "downloadCount": { - "type": "int" - }, - "libraryCount": { - "type": "int" - } - } - }, - "trackConvertLosslessHint": "Lossless conversion — no quality loss", - "@trackConvertLosslessHint": { - "description": "Hint shown when converting between lossless formats" - }, - "collectionRenamePlaylist": "Rename playlist", - "@collectionRenamePlaylist": { - "description": "Action to rename playlist" - }, - "@libraryFilterTitle": { - "description": "Filter bottom sheet title" - }, - "@storageModeAppFolder": { - "description": "Storage mode option - app-managed folder" - }, - "logTotalErrors": "Total errors: {count}", - "@logTotalErrors": { - "description": "Total error count in log issue analysis", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@setupStorageRequired": { - "description": "Title when storage permission needed" - }, - "@snackbarMetadataProviderSaved": { - "description": "Snackbar - metadata provider order saved" - }, - "@selectionBatchConvertConfirmTitle": { - "description": "Confirmation dialog title for batch conversion" - }, - "extensionsHomeFeedAutoSubtitle": "Automatically select the best available", - "@extensionsHomeFeedAutoSubtitle": { - "description": "Extensions page - subtitle for auto home feed option" - }, - "setupLanguageDescription": "Selecione o idioma de sua preferência para o aplicativo. Você pode alterar isso depois em Configurações.", - "settingsBackupSubtitle": "Move your library, history and settings to a new device", - "@settingsBackupSubtitle": { - "description": "Subtitle for backup and restore settings item" - }, - "recentTypeArtist": "Artista", - "@recentTypeArtist": { - "description": "Recent access item type - artist" - }, - "collectionPlaylistEmptySubtitle": "", - "artistCompilations": "Compilações", - "@artistCompilations": { - "description": "Section header for compilations" - }, - "snackbarFolderPickerFailed": "Failed to open folder picker: {error}", - "@snackbarFolderPickerFailed": { - "description": "Snackbar shown when folder picker fails to open", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "@optionsDetailedLoggingOn": { - "description": "Status when logging enabled" - }, - "settingsSaveDownloadHistory": "Save download history", - "@settingsSaveDownloadHistory": { - "description": "Settings switch title for storing completed downloads in history" - }, - "@storeCategoryIntegration": { - "description": "Store extension category - integration" - }, - "a11yOpenItemCount": "Open {title}, {count} {count, plural, =1{item} other{items}}", - "@a11yOpenItemCount": { - "description": "Accessibility label for opening a grouped item with count", - "placeholders": { - "title": { - "type": "String" - }, - "count": { - "type": "int" - } - } - }, - "trackFileInfo": "Informações do Arquivo", - "@trackFileInfo": { - "description": "Tab title - file information" - }, - "libraryFilterMetadataMissingAlbumArtist": "Missing album artist", - "audioAnalysisNoClipping": "No clipping", - "tutorialSettingsDesc": "Fine-tune downloads, playback, Library behavior, appearance, and storage.", - "@tutorialSettingsDesc": { - "description": "Tutorial settings page description" + "lyricsModeExternal": "Arquivo .lrc externo", + "@lyricsModeExternal": { + "description": "Lyrics mode option - separate LRC file" }, "lyricsModeExternalSubtitle": "Arquivo .lrc separado para reprodutores como o Samsung Music", "@lyricsModeExternalSubtitle": { "description": "Subtitle for external option" }, - "trackLoadLyrics": "Carregar Letras", - "@trackLoadLyrics": { - "description": "Action - fetch lyrics" + "lyricsModeBoth": "Ambos", + "@lyricsModeBoth": { + "description": "Lyrics mode option - embed and external" }, - "extensionVerificationHelpTitleWaiting": "Verification still waiting", - "@extensionVerificationHelpTitleWaiting": { - "description": "Dialog title when verification is taking longer than expected" + "lyricsModeBothSubtitle": "Incorporar e salvar arquivo .lrc", + "@lyricsModeBothSubtitle": { + "description": "Subtitle for both option" }, - "libraryFilterReset": "Reset", - "@libraryFilterReset": { - "description": "Reset all filters button" - }, - "@downloadAlbumArtistMetadataFull": { - "description": "Status label when album-artist folder filtering uses full metadata" - }, - "storeTitle": "Repositório de extensões", - "@storeTitle": { - "description": "Repo screen title" - }, - "libraryCleared": "Library cleared", - "@libraryCleared": { - "description": "Snackbar after clearing library" - }, - "queueDownloadCompleted": "Download completed", - "@queueDownloadCompleted": { - "description": "Accessibility label for completed download state in queue" - }, - "libraryTitle": "Local Library", - "@libraryTitle": { - "description": "Library settings page title" - }, - "queueAlbumCount": "{count, plural, =1{1 album} other{{count} albums}}", - "@queueAlbumCount": { - "description": "Album count label with plural support", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "libraryClearConfirmTitle": "Clear Library", - "@backupExportSectionTitle": { - "description": "Section title for the export/backup card" - }, - "dialogClearAll": "Limpar Tudo", - "@dialogClearAll": { - "description": "Dialog title - clear all items" - }, - "tutorialExtensionsDesc": "Extensions add search, download, metadata, lyrics, and other integrations.", - "@tutorialExtensionsDesc": { - "description": "Tutorial extensions page description" - }, - "libraryExternalPlayer": "External player", - "@libraryExternalPlayer": { - "description": "Setting option to use an external music player" - }, - "editMetadataFieldGenre": "Genre", - "@tutorialLibraryTitle": { - "description": "Tutorial library page title" - }, - "folderOrganizationByPlaylist": "Por playlist", - "queueTrackCount": "{count, plural, =1{1 track} other{{count} tracks}}", - "@searchSortTitle": { - "description": "Bottom sheet title for search sort options" - }, - "editMetadataSelectNone": "None", - "@historyFilterSingles": { - "description": "Filter chip - show singles only" - }, - "@setupLanguageTitle": { - "description": "Title for the language selection step in setup" - }, - "trackSaveCoverArt": "Save Cover Art", - "@trackSaveCoverArt": { - "description": "Menu action - save album cover art as file" - }, - "@downloadAlbumFolderStructure": { - "description": "Setting - album folder organization" - }, - "lyricsProvidersAtLeastOne": "At least one provider must remain enabled", - "@notifDownloadCompleteCount": { - "description": "Notification title when download is complete, with count", - "placeholders": { - "completed": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "setupUseDefault": "Usar Padrão", - "@setupUseDefault": { - "description": "Button to use default folder" - }, - "logNoLogsYetSubtitle": "Os registros aparecerão aqui enquanto você usa o aplicativo", - "@logNoLogsYetSubtitle": { - "description": "Empty state subtitle" - }, - "@dateToday": { - "description": "Relative date - today" - }, - "trackSaveLyricsProgress": "Saving lyrics...", - "@trackSaveLyricsProgress": { - "description": "Snackbar while saving lyrics to file" - }, - "trackCoverSaved": "Cover art saved to {fileName}", - "@trackCoverSaved": { - "description": "Snackbar after cover art saved", - "placeholders": { - "fileName": { - "type": "String" - } - } - }, - "trackReEnrichFieldLyrics": "Lyrics", - "@audioAnalysisRescan": { - "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" - }, - "@downloadNeteaseIncludeRomanizationEnabled": { - "description": "Subtitle when Netease romanization is on" - }, - "dialogDisableAndClear": "Turn off and clear", - "extensionHealthChecksConfigured": "{count} {count, plural, =1{check} other{checks}} configured", - "cleanupOrphanedDownloadsSubtitle": "Remove history entries for files that no longer exist", - "@notifLibraryScanProgressWithTotal": { - "description": "Notification body for library scan progress when total is known", - "placeholders": { - "scanned": { - "type": "int" - }, - "total": { - "type": "int" - }, - "percentage": { - "type": "int" - } - } - }, - "@extensionDetailsTags": { - "description": "Section title for extension tags" - }, - "@albumFolderAlbumOnlySubtitle": { - "description": "Folder structure example" - }, - "@audioAnalysisAnalyzing": { - "description": "Loading text while analyzing audio" - }, - "@settingsDonate": { - "description": "Settings menu item - donate page" - }, - "@collectionPlaylistNameRequired": { - "description": "Validation error for empty playlist name" - }, - "@backupImportSectionDescription": { - "description": "Description for the restore action" - }, - "storeFilterLyrics": "Letras", - "libraryAutoScan": "Auto Scan", - "@libraryAutoScan": { - "description": "Setting for automatic library scanning" - }, - "safMigrationMessage1": "SpotiFLAC now uses Android Storage Access Framework (SAF) for downloads. This fixes \"permission denied\" errors on Android 10+.", - "@safMigrationMessage1": { - "description": "First paragraph of SAF migration dialog" - }, - "setupStorageRequired": "Permissão de Armazenamento Necessária", - "@notifLibraryScanErrors": { - "description": "Library scan complete suffix - error count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "appearanceHistoryViewGrid": "Grade", - "trackConvertConverting": "Converting audio...", - "@trackConvertConverting": { - "description": "Snackbar while converting" - }, - "@setupUseDefaultFolder": { - "description": "Dialog title for default folder" - }, - "optionsArtistTagModeSplitVorbisSubtitle": "Escrever uma etiqueta de artista por artista para FLAC e Opus; MP3 e M4A permanecem combinados.", - "snackbarPlayingNext": "Playing next", - "@snackbarPlayingNext": { - "description": "Snackbar when a track is inserted as the next queue item" - }, - "optionsDefaultSearchTabSubtitle": "Escolha qual aba será aberta primeiro para novos resultados de pesquisa.", - "@editMetadataAutoFillFetch": { - "description": "Button label to fetch online metadata and fill selected fields" - }, - "tutorialSearchDesc": "Search with your selected extension or paste a supported music link.", - "@sectionService": { + "sectionColor": "Cor", + "@sectionColor": { "description": "Settings section header" }, - "notifUpdateProgress": "{received} / {total} MB • {percentage}%", - "@discographyDownloadSelected": { - "description": "Button - download selected albums" + "sectionTheme": "Tema", + "@sectionTheme": { + "description": "Settings section header" }, - "cacheClearAllConfirmMessage": "This will clear all cache categories on this page. Downloaded music files will not be deleted.", - "@cacheClearAllConfirmMessage": { - "description": "Dialog message before clearing all caches" + "sectionLayout": "Aparência\n", + "@sectionLayout": { + "description": "Settings section header" }, - "extensionsHomeFeedProvider": "Home Feed Provider", - "@extensionsHomeFeedProvider": { - "description": "Extensions page - label for home feed provider selector" + "sectionLanguage": "Idioma", + "@sectionLanguage": { + "description": "Settings section header for language" }, - "@cacheExploreFeed": { - "description": "Cache item title for explore home feed cache" + "appearanceLanguage": "Idioma do aplicativo", + "@appearanceLanguage": { + "description": "Language setting title" }, - "@audioAnalysisDynamicRange": { - "description": "Dynamic range metric label" + "settingsAppearanceSubtitle": "Tema, cores, exibição", + "@settingsAppearanceSubtitle": { + "description": "Appearance settings description" }, - "unknownAlbum": "Unknown Album", - "trackCoverCurrent": "Current cover", - "downloadSongLinkRegionDesc": "Region used when resolving track links via SongLink. Choose the country where your streaming services are available.", - "downloadPrimaryArtistOnlyOff": "Primary only: Off", - "dialogDone": "Concluído", - "@dialogDone": { - "description": "Dialog button - action completed" + "settingsDownloadSubtitle": "Serviço, qualidade, alternativa", + "@settingsDownloadSubtitle": { + "description": "Download settings description" }, - "storeRepoUrlLabel": "URL do repositório", - "downloadSelectServiceToEnable": "Select a provider with quality options to enable this option", - "@logIssueRateLimitedSuggestion": { - "description": "Diagnostic badge suggestion for rate limiting" + "settingsExtensionsSubtitle": "Gerenciar provedores de download", + "@settingsExtensionsSubtitle": { + "description": "Extensions settings description" }, - "libraryScanProgress": "{progress}% of {total} files", - "@libraryScanProgress": { - "description": "Scan progress display", + "settingsLogsSubtitle": "Ver logs do app para depuração", + "@settingsLogsSubtitle": { + "description": "Logs settings description" + }, + "loadingSharedLink": "Carregando link compartilhado...", + "@loadingSharedLink": { + "description": "Status when opening shared URL" + }, + "pressBackAgainToExit": "Pressione voltar novamente para sair", + "@pressBackAgainToExit": { + "description": "Exit confirmation message" + }, + "downloadAllCount": "Baixar Todos ({count})", + "@downloadAllCount": { + "description": "Download all button with count", "placeholders": { - "progress": { - "type": "String" - }, - "total": { + "count": { "type": "int" } } }, - "collectionLovedEmptyTitle": "Loved folder is empty", - "tutorialExtensionsTitle": "Extensions", - "@tutorialExtensionsTitle": { - "description": "Tutorial extensions page title" - }, - "searchSortDurationShort": "Duração (mais curta)", - "@searchSortDurationShort": { - "description": "Sort option - shortest duration first" + "tracksCount": "{count, plural, =1{1 faixa} other{{count} faixas}}", + "@tracksCount": { + "description": "Track count display", + "placeholders": { + "count": { + "type": "int" + } + } }, "trackCopyFilePath": "Copiar caminho do arquivo", "@trackCopyFilePath": { "description": "Action - copy file path" }, - "albumFolderArtistAlbumFlatSubtitle": "Artist/Album/ and Artist/song.flac", - "@trackConvertResampler": { - "description": "Section label for lossless conversion resampler options" + "trackRemoveFromDevice": "Remover do dispositivo", + "@trackRemoveFromDevice": { + "description": "Action - delete downloaded file" }, - "editMetadataFieldTrackNum": "Track #", - "@editMetadataFieldTrackNum": { - "description": "Chip label for track number field in auto-fill selector" + "trackLoadLyrics": "Carregar Letras", + "@trackLoadLyrics": { + "description": "Action - fetch lyrics" }, - "snackbarFailedToUpdate": "Falha ao atualizar a extensão", - "@snackbarFailedToUpdate": { - "description": "Snackbar - extension update error" + "trackMetadata": "Metadados", + "@trackMetadata": { + "description": "Tab title - track metadata" }, - "notifAlreadyInLibrary": "Already in Library", - "@notifAlreadyInLibrary": { - "description": "Notification title when track is already in library" + "trackFileInfo": "Informações do Arquivo", + "@trackFileInfo": { + "description": "Tab title - file information" }, - "collectionPlaylistNameHint": "Playlist name", - "extensionVerificationCopyLink": "Copy link", - "@replayGainBatchAnalyzing": { - "description": "Progress dialog title while batch scanning ReplayGain" + "trackLyrics": "Letras", + "@trackLyrics": { + "description": "Tab title - lyrics" + }, + "trackFileNotFound": "Arquivo não encontrado", + "@trackFileNotFound": { + "description": "Error - file doesn't exist" + }, + "trackOpenInDeezer": "Abrir no Deezer", + "@trackOpenInDeezer": { + "description": "Action - open track in Deezer app" + }, + "trackOpenInSpotify": "Abrir no Spotify", + "@trackOpenInSpotify": { + "description": "Action - open track in Spotify app" + }, + "trackTrackName": "Nome da faixa", + "@trackTrackName": { + "description": "Metadata label - track title" + }, + "trackArtist": "Artista", + "@trackArtist": { + "description": "Metadata label - artist name" + }, + "trackAlbumArtist": "Artista do álbum", + "@trackAlbumArtist": { + "description": "Metadata label - album artist" + }, + "trackAlbum": "Álbum", + "@trackAlbum": { + "description": "Metadata label - album name" + }, + "trackTrackNumber": "Número da faixa", + "@trackTrackNumber": { + "description": "Metadata label - track number" + }, + "trackDiscNumber": "Número do disco", + "@trackDiscNumber": { + "description": "Metadata label - disc number" + }, + "trackDuration": "Duração", + "@trackDuration": { + "description": "Metadata label - track length" + }, + "trackAudioQuality": "Qualidade de Áudio", + "@trackAudioQuality": { + "description": "Metadata label - audio quality" + }, + "trackReplayGainTrackGain": "ReplayGain Track Gain", + "@trackReplayGainTrackGain": { + "description": "Metadata label - ReplayGain track gain" + }, + "trackReplayGainTrackPeak": "ReplayGain Track Peak", + "@trackReplayGainTrackPeak": { + "description": "Metadata label - ReplayGain track peak" + }, + "trackReplayGainAlbumGain": "ReplayGain Album Gain", + "@trackReplayGainAlbumGain": { + "description": "Metadata label - ReplayGain album gain" + }, + "trackReplayGainAlbumPeak": "ReplayGain Album Peak", + "@trackReplayGainAlbumPeak": { + "description": "Metadata label - ReplayGain album peak" + }, + "libraryQualityLabelFileFormat": "Formato do arquivo", + "@libraryQualityLabelFileFormat": { + "description": "Library audio quality label mode that shows the detected file format" + }, + "trackReleaseDate": "Data de lançamento", + "@trackReleaseDate": { + "description": "Metadata label - release date" + }, + "trackGenre": "Género", + "@trackGenre": { + "description": "Metadata label - music genre" + }, + "trackLabel": "Gravadora", + "@trackLabel": { + "description": "Metadata label - record label" + }, + "trackCopyright": "Direitos Autorais", + "@trackCopyright": { + "description": "Metadata label - copyright information" + }, + "trackDownloaded": "Baixado", + "@trackDownloaded": { + "description": "Metadata label - download date" + }, + "trackCopyLyrics": "Copiar letra", + "@trackCopyLyrics": { + "description": "Action - copy lyrics to clipboard" + }, + "trackLyricsSource": "Fonte: {source}", + "@trackLyricsSource": { + "description": "Label showing the lyrics source/provider", + "placeholders": { + "source": { + "type": "String" + } + } + }, + "trackLyricsNotAvailable": "Letra não disponível para esta faixa", + "@trackLyricsNotAvailable": { + "description": "Message when lyrics not found" + }, + "trackLyricsNotInFile": "Nenhuma letra encontrada neste arquivo", + "@trackLyricsNotInFile": { + "description": "Message when no embedded lyrics in audio file" + }, + "trackFetchOnlineLyrics": "Buscar online", + "@trackFetchOnlineLyrics": { + "description": "Action - fetch lyrics from online providers" + }, + "trackLyricsTimeout": "A solicitação expirou. Tente novamente mais tarde.", + "@trackLyricsTimeout": { + "description": "Message when lyrics request times out" + }, + "trackLyricsLoadFailed": "Falha ao carregar a letra", + "@trackLyricsLoadFailed": { + "description": "Message when lyrics loading fails" + }, + "trackEmbedLyrics": "Incorporar Letras", + "@trackEmbedLyrics": { + "description": "Action - embed lyrics into audio file" + }, + "trackLyricsEmbedded": "Letras incorporadas com sucesso", + "@trackLyricsEmbedded": { + "description": "Snackbar - lyrics saved to file" + }, + "trackInstrumental": "Faixa de instrumentais", + "@trackInstrumental": { + "description": "Message when track is instrumental (no lyrics)" + }, + "trackCopiedToClipboard": "Copiado para a área de transferência", + "@trackCopiedToClipboard": { + "description": "Snackbar - content copied" + }, + "trackDeleteConfirmTitle": "Remover do dispositivo?", + "@trackDeleteConfirmTitle": { + "description": "Delete confirmation title" + }, + "trackDeleteConfirmMessage": "Isto irá excluir o arquivo baixado permanentemente e removê-lo do seu histórico.", + "@trackDeleteConfirmMessage": { + "description": "Delete confirmation message" + }, + "dateToday": "Hoje", + "@dateToday": { + "description": "Relative date - today" + }, + "dateYesterday": "Ontem", + "@dateYesterday": { + "description": "Relative date - yesterday" + }, + "dateDaysAgo": "{count} dias atrás", + "@dateDaysAgo": { + "description": "Relative date - days ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dateWeeksAgo": "{count} semanas atrás", + "@dateWeeksAgo": { + "description": "Relative date - weeks ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dateMonthsAgo": "{count} meses atrás", + "@dateMonthsAgo": { + "description": "Relative date - months ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "storeFilterAll": "Tudo", + "@storeFilterAll": { + "description": "Repo filter - all extensions" + }, + "storeFilterMetadata": "Metadados", + "@storeFilterMetadata": { + "description": "Repo filter - metadata providers" + }, + "storeFilterDownload": "Baixar", + "@storeFilterDownload": { + "description": "Repo filter - download providers" + }, + "storeFilterUtility": "Utilidade", + "@storeFilterUtility": { + "description": "Repo filter - utility extensions" + }, + "storeFilterLyrics": "Letras", + "@storeFilterLyrics": { + "description": "Repo filter - lyrics providers" + }, + "storeFilterIntegration": "Integração", + "@storeFilterIntegration": { + "description": "Repo filter - integrations" + }, + "storeClearFilters": "Limpar filtros", + "@storeClearFilters": { + "description": "Button to clear all filters" + }, + "storeAddRepoTitle": "Adicionar repositório de extensões", + "@storeAddRepoTitle": { + "description": "Store setup screen - heading when no repo is configured" + }, + "storeAddRepoDescription": "Insira a URL de um repositório do GitHub que contenha um arquivo registry.json para navegar e instalar extensões.", + "@storeAddRepoDescription": { + "description": "Store setup screen - explanatory text" + }, + "storeRepoUrlLabel": "URL do repositório", + "@storeRepoUrlLabel": { + "description": "Label for the repository URL input field" + }, + "storeRepoUrlHint": "https://github.com/usuario/repositorio", + "@storeRepoUrlHint": { + "description": "Hint/placeholder for the repository URL input field" + }, + "storeAddRepoButton": "Adicionar repositório", + "@storeAddRepoButton": { + "description": "Button to submit a new repository URL" + }, + "storeChangeRepoTooltip": "Mudar repositório", + "@storeChangeRepoTooltip": { + "description": "Tooltip for the change-repository icon button in the app bar" + }, + "storeRepoDialogTitle": "Repositório de extensões", + "@storeRepoDialogTitle": { + "description": "Title of the change/remove repository dialog" + }, + "storeRepoDialogCurrent": "Repositório atual:", + "@storeRepoDialogCurrent": { + "description": "Label shown above the current repository URL in the dialog" + }, + "storeNewRepoUrlLabel": "URL do novo repositório", + "@storeNewRepoUrlLabel": { + "description": "Label for the new repository URL field inside the dialog" + }, + "storeLoadError": "Falha ao carregar o repositório", + "@storeLoadError": { + "description": "Error heading when the store cannot be loaded" + }, + "storeEmptyNoExtensions": "Nenhuma extensão disponível", + "@storeEmptyNoExtensions": { + "description": "Message when store has no extensions" + }, + "storeEmptyNoResults": "Nenhuma extensão encontrada", + "@storeEmptyNoResults": { + "description": "Message when search/filter returns no results" }, - "setupLanguageTitle": "Escolher idioma", "extensionId": "ID", "@extensionId": { "description": "Extension detail - unique ID" }, - "regionCountryBR": "Brazil", - "@updateNewVersionReady": { - "description": "Update subtitle" + "extensionError": "Erro", + "@extensionError": { + "description": "Extension detail - error message" }, - "@queueDownloadedFileMissing": { - "description": "Accessibility label when a downloaded file is missing from disk" - }, - "@lyricsMode": { - "description": "Setting - how to save lyrics" - }, - "@settingsAppearance": { - "description": "Settings section - visual customization" - }, - "@setupStorageAccessMessageAndroid11": { - "description": "Android 11+ specific explanation" - }, - "@tutorialLibraryTip3": { - "description": "Tutorial library tip 3" - }, - "@downloadAppleQqMultiPersonDisabled": { - "description": "Subtitle when multi-person lyrics is off" - }, - "libraryStorageAccessMessage": "SpotiFLAC needs storage access to scan your music library. Please grant permission in settings.", - "@libraryStorageAccessMessage": { - "description": "Dialog message for storage permission" - }, - "@tutorialLibraryTip1": { - "description": "Tutorial library tip 1" - }, - "dialogRemoveExtensionMessage": "Tem certeza de que deseja remover esta extensão? Isso não pode ser desfeito.", - "@dialogRemoveExtensionMessage": { - "description": "Dialog message - uninstall confirmation" - }, - "setupDownloadLocationTitle": "Local do Download", - "@setupDownloadLocationTitle": { - "description": "Download location dialog title" - }, - "downloadNetworkCompatibilityModeEnabled": "Allowing legacy HTTP endpoints; TLS verification remains enabled", - "@downloadNetworkCompatibilityModeEnabled": { - "description": "Subtitle when network compatibility mode is on" - }, - "@audioAnalysisBitDepth": { - "description": "Bit depth metric label" - }, - "trackOptionAddToLoved": "Add to Loved", - "@trackOptionAddToLoved": { - "description": "Bottom sheet action label - add track to loved folder" - }, - "cacheAppDirectory": "App cache directory", - "@cacheAppDirectory": { - "description": "Cache item title for app cache directory" - }, - "lyricsProviderMusixmatchDesc": "Largest lyrics database (multi-language)", - "@navStore": { - "description": "Bottom navigation - Extension repo tab" - }, - "extensionPostProcessing": "Pós-Processamento", - "@searchTracks": { - "description": "Search filter label - tracks" - }, - "logCopied": "Registros copiados para área de transferência", - "@logCopied": { - "description": "Snackbar - logs copied" - }, - "@extensionHealthRequired": { - "description": "Label for a required extension service health check" - }, - "@previewPlay": { - "description": "Tooltip for the button that plays a short track preview snippet" - }, - "clickableLookingUpArtist": "Looking up artist...", - "@clickableLookingUpArtist": { - "description": "Snackbar shown while clickable artist metadata is being resolved" - }, - "@extensionVerificationBrowserSubtitleInApp": { - "description": "Subtitle when in-app browser is preferred for extension verification" - }, - "setupUseDefaultFolder": "Usar Pasta Padrão?", - "tutorialSearchHint": "Paste or search...", - "@logIssueTrackNotFoundLabel": { - "description": "Diagnostic badge label when a track is unavailable" - }, - "@storageModeAppFolderSubtitle": { - "description": "Subtitle for app folder storage mode" - }, - "downloadMusixmatchLanguage": "Musixmatch Language", - "@downloadMusixmatchLanguage": { - "description": "Setting for Musixmatch lyrics translation language" - }, - "lyricsModeExternal": "Arquivo .lrc externo", - "@setupSelectFolder": { - "description": "Button to select folder" - }, - "logSearchHint": "Pesquisar registros...", - "@backupCreateFailed": { - "description": "Snackbar when backup creation fails" - }, - "@settingsSaveDownloadHistorySubtitle": { - "description": "Settings switch subtitle for storing completed downloads in history" - }, - "@albumFolderArtistAlbumFlat": { - "description": "Album folder option with singles directly in artist folder" - }, - "extensionHealthRequired": "required", - "actionCancel": "Cancelar", - "@actionCancel": { - "description": "Action button - cancel operation" - }, - "optionsEmbedMetadataSubtitleOff": "Disabled (advanced): skip all metadata embedding", - "@optionsEmbedMetadataSubtitleOff": { - "description": "Subtitle when metadata embedding is disabled" - }, - "downloadAllowLocalNetworkDisabled": "Local/private addresses are blocked for security", - "@downloadAllowLocalNetworkDisabled": { - "description": "Subtitle when allow local network access is off" - }, - "@extensionsDownloadPrioritySubtitle": { - "description": "Subtitle for download priority" - }, - "downloadSingleFilenameFormat": "Formato do nome do arquivo para Singles", - "@downloadSingleFilenameFormat": { - "description": "Setting for output filename pattern for singles/EPs" - }, - "cacheSummarySubtitle": "Clearing cache will not remove downloaded music files.", - "@cacheSummarySubtitle": { - "description": "Helper text for cache summary card" - }, - "libraryFilterMetadataIncorrectIsrcFormat": "Incorrect ISRC format", - "libraryFilterMetadataMissingTrackNumber": "Missing track number", - "@libraryFilterMetadataMissingTrackNumber": { - "description": "Filter option - items missing track number" - }, - "backupIncludeSecretsDescription": "Tokens and API keys from extensions will be saved into the backup file. Keep the file private. When off, you re-enter them after restoring.", - "@backupIncludeSecretsDescription": { - "description": "Explanation for the include-credentials toggle" - }, - "audioAnalysisChannelStats": "Per-channel Stats", - "@audioAnalysisChannelStats": { - "description": "Per-channel audio analysis section label" - }, - "@extensionServiceStatus": { - "description": "Extension detail section header for service status" - }, - "queueEmptySingles": "No single downloads", - "@queueEmptySingles": { - "description": "Empty state title when no single track downloads exist" - }, - "@snackbarSelectedPlaylistsEmpty": { - "description": "Snackbar when selected playlists contain no tracks" - }, - "@errorRateLimited": { - "description": "Error title - too many requests" - }, - "setupDownloadInFlac": "Download music in lossless and Hi-Res quality", - "@setupDownloadInFlac": { - "description": "App tagline in setup" - }, - "trackRemoveFromDevice": "Remover do dispositivo", - "@extensionsNoDownloadProvider": { - "description": "Empty state - no download providers" - }, - "@backupCreated": { - "description": "Snackbar after a backup file is created" - }, - "cacheSummaryTitle": "Cache overview", - "@cacheSummaryTitle": { - "description": "Heading for cache summary card" - }, - "selectionReplayGainCount": "ReplayGain ({count})", - "@selectionReplayGainCount": { - "description": "Batch selection action button label for ReplayGain", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@setupNotificationBackgroundDescription": { - "description": "Detailed notification explanation" - }, - "safMigrationTitle": "Storage Update Required", - "snackbarMetadataSaved": "Metadata saved successfully", - "@snackbarMetadataSaved": { - "description": "Snackbar after successfully saving track metadata" - }, - "@backupContentsSettings": { - "description": "Backup contents row label for settings" - }, - "logClearLogsTitle": "Limpar Registros", - "extensionsCustomSearch": "Busca personalizada", - "@extensionsCustomSearch": { - "description": "Label for custom search provider" - }, - "@downloadFrom": { - "description": "Label - download source" - }, - "cacheSizeWithFiles": "{size} in {count} files", - "selectionShareNoFiles": "No shareable files found", - "@selectionShareNoFiles": { - "description": "Snackbar when no selected files exist on disk" - }, - "snackbarAddedTracksToQueue": "{count} faixas adicionadas à fila", - "downloadFilenameInsertTag": "Tap to insert tag:", - "@downloadFilenameInsertTag": { - "description": "Label above filename tag chips" - }, - "collectionRemovedFromFavoriteArtists": "\"{artistName}\" removed from Favorite Artists", - "@collectionRemovedFromFavoriteArtists": { - "description": "Snackbar after removing artist from favorite artists", - "placeholders": { - "artistName": { - "type": "String" - } - } - }, - "queueDownloadSpeedStatus": "Downloading - {speed} MB/s", - "backupRestoreConfirmButton": "Restore", - "@libraryCleanupMissingFiles": { - "description": "Button to remove entries for missing files" - }, - "backupCreateFailed": "Failed to create backup", - "notifLibraryScanFailed": "Library scan failed", - "@notifLibraryScanFailed": { - "description": "Notification title when library scan fails" - }, - "audioAnalysisRescan": "Re-analyze", - "@trackTrackName": { - "description": "Metadata label - track title" - }, - "@setupPermissionRequired": { - "description": "Generic permission required title", - "placeholders": { - "permissionType": { - "type": "String", - "description": "Type of permission (Storage/Notification)" - } - } - }, - "@nowPlayingNoLyrics": { - "description": "Empty state when the playing file has no embedded lyrics" - }, - "libraryFilesUnit": "{count, plural, =1{file} other{files}}", - "@libraryFilesUnit": { - "description": "Unit label for files count during library scanning", - "placeholders": { - "count": { - "type": "int" - } - } + "extensionCapabilities": "Funcionalidades", + "@extensionCapabilities": { + "description": "Section header - extension features" }, + "extensionMetadataProvider": "Provedor de Metadados", "@extensionMetadataProvider": { "description": "Capability - provides metadata" }, - "@downloadFilterContributing": { - "description": "Setting to strip contributing artists from Album Artist folder name" + "extensionDownloadProvider": "Provedor de Download", + "@extensionDownloadProvider": { + "description": "Capability - provides downloads" }, - "libraryScanSelectFolderFirst": "Select a folder first", - "@sectionDownload": { - "description": "Settings section header" + "extensionLyricsProvider": "Provedor de Letras", + "@extensionLyricsProvider": { + "description": "Capability - provides lyrics" }, - "extensionHealthNotConfigured": "Not configured", - "queueRetryAllFailed": "Retry {count} failed", - "folderOrganizationByPlaylistSubtitle": "Pasta separada para cada playlist", - "@folderOrganizationByPlaylistSubtitle": { - "description": "Subtitle for playlist folder option" + "extensionUrlHandler": "Gerenciador de URL", + "@extensionUrlHandler": { + "description": "Capability - handles URLs" }, - "lyricsProviderExtensionDesc": "Extension provider", - "@libraryFilterQualityHiRes": { - "description": "Filter option - high resolution audio" + "extensionQualityOptions": "Opções de Qualidade", + "@extensionQualityOptions": { + "description": "Capability - quality selection" }, - "trackConvertTitle": "Convert Audio", - "@trackConvertTitle": { - "description": "Title of convert bottom sheet" + "extensionPostProcessingHooks": "Ganchos de Pós-Processamento", + "@extensionPostProcessingHooks": { + "description": "Capability - post-processing" }, - "setupSkipForNow": "Ignorar por enquanto", - "sectionDownload": "Baixar", - "downloadLossyOpus256Subtitle": "Best quality Opus, ~8MB per track", - "@downloadLossyOpus256Subtitle": { - "description": "Subtitle for Opus 256kbps lossy option" + "extensionPermissions": "Permissões", + "@extensionPermissions": { + "description": "Section header - required permissions" }, - "@trackConvertActionLabelLossless": { - "description": "Convert button label for lossless conversion with quality cap", + "extensionSettings": "Configurações", + "@extensionSettings": { + "description": "Section header - extension settings" + }, + "extensionRemoveButton": "Remover Extensão", + "@extensionRemoveButton": { + "description": "Button to uninstall extension" + }, + "extensionUpdated": "Atualizado", + "@extensionUpdated": { + "description": "Extension detail - last update" + }, + "extensionMinAppVersion": "Versão Mínima do App", + "@extensionMinAppVersion": { + "description": "Extension detail - minimum app version" + }, + "extensionCustomTrackMatching": "Correspondência de Faixa Personalizada", + "@extensionCustomTrackMatching": { + "description": "Capability - custom track matching algorithm" + }, + "extensionPostProcessing": "Pós-Processamento", + "@extensionPostProcessing": { + "description": "Capability - post-download processing" + }, + "extensionHooksAvailable": "{count} gancho(s) disponíveis", + "@extensionHooksAvailable": { + "description": "Post-processing hooks count", "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "quality": { + "count": { + "type": "int" + } + } + }, + "extensionPatternsCount": "{count} padrão(ões)", + "@extensionPatternsCount": { + "description": "URL patterns count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionStrategy": "Estratégia: {strategy}", + "@extensionStrategy": { + "description": "Track matching strategy name", + "placeholders": { + "strategy": { "type": "String" } } }, - "storeRequiresVersion": "Requires v{version}+", - "@storeRequiresVersion": { - "description": "Store compatibility badge for minimum app version", - "placeholders": { - "version": { - "type": "String" - } - } + "extensionsProviderPrioritySection": "Prioridade de Provedor", + "@extensionsProviderPrioritySection": { + "description": "Section header - provider priority" }, - "metadataProviderPriorityDescription": "Arraste para reordenar provedores de metadados. O aplicativo tentará provedores de cima para baixo ao procurar por faixas e buscar metadados.", - "@notifUpdateFailed": { - "description": "Notification title when app update download fails" + "extensionsInstalledSection": "Extensões Instaladas", + "@extensionsInstalledSection": { + "description": "Section header - installed extensions" + }, + "extensionsNoExtensions": "Nenhuma extensão instalada", + "@extensionsNoExtensions": { + "description": "Empty state - no extensions" + }, + "extensionsNoExtensionsSubtitle": "Instale arquivos .spotiflac-ext para adicionar novos provedores", + "@extensionsNoExtensionsSubtitle": { + "description": "Empty state subtitle" + }, + "extensionsInstallButton": "Instalar Extensão", + "@extensionsInstallButton": { + "description": "Button to install extension from file" }, "extensionsInfoTip": "Extensões podem adicionar novos metadados e baixar provedores. Somente instale extensões a partir de fontes confiáveis.", "@extensionsInfoTip": { "description": "Security warning about extensions" }, - "@downloadAppleQqMultiPersonEnabled": { - "description": "Subtitle when multi-person lyrics is on" + "extensionsInstalledSuccess": "Extensão instalada com sucesso", + "@extensionsInstalledSuccess": { + "description": "Success message after install" }, - "libraryFilterMetadataMissingYear": "Missing year", - "extensionsDownloadPriority": "Prioridade de Download", - "@extensionsDownloadPriority": { - "description": "Setting - download provider order" - }, - "@downloadAllowLocalNetworkEnabled": { - "description": "Subtitle when allow local network access is on" - }, - "libraryScan": "Scan Library", - "@libraryScan": { - "description": "Button to start library scan" - }, - "editMetadataFieldLabel": "Label", - "@editMetadataFieldLabel": { - "description": "Chip label for label field in auto-fill selector" - }, - "updateDownloadFailed": "Download falhou", - "@updateDownloadFailed": { - "description": "Update error title" - }, - "appearanceAmoledDarkSubtitle": "Fundo preto puro", - "@appearanceAmoledDarkSubtitle": { - "description": "Subtitle for AMOLED dark" - }, - "setupIcloudNotSupported": "O iCloud Drive não é compatível. Use a pasta Documentos do aplicativo.", - "trackLyricsEmbeddedSource": "Embedded", - "@trackLyricsEmbeddedSource": { - "description": "Lyrics source label for embedded lyrics" - }, - "@trackAlbumArtist": { - "description": "Metadata label - album artist" + "extensionsInstalledCount": "{count} extensões instaladas com sucesso", + "@extensionsInstalledCount": { + "description": "Success message after installing multiple extensions", + "placeholders": { + "count": { + "type": "int", + "description": "Number of installed extensions" + } + } }, "extensionsInstallPartialSuccess": "Instaladas {installed} de {attempted} extensões", "@extensionsInstallPartialSuccess": { @@ -4147,1741 +1993,217 @@ } } }, - "@extensionSettingsCount": { - "description": "Count of settings exposed by an extension quality option", - "placeholders": { - "count": { - "type": "int" - } - } + "extensionsDownloadPriority": "Prioridade de Download", + "@extensionsDownloadPriority": { + "description": "Setting - download provider order" }, - "notifLibraryScanCancelled": "Escaneamento de biblioteca cancelado", - "@notifLibraryScanCancelled": { - "description": "Notification title when library scan is cancelled by the user" + "extensionsDownloadPrioritySubtitle": "Definir ordem do serviço de download", + "@extensionsDownloadPrioritySubtitle": { + "description": "Subtitle for download priority" }, - "collectionPlaylistNameRequired": "Playlist name is required", - "libraryCleanupMissingFiles": "Cleanup Missing Files", - "storeCategoryUtility": "Utility", - "@storeCategoryUtility": { - "description": "Store extension category - utility" - }, - "searchSortTitle": "Ordenar resultados", - "@extensionVerificationBrowserExternal": { - "description": "Chip label for external browser verification mode" - }, - "audioAnalysisLufs": "LUFS", - "@setupAllowAccessToManageFiles": { - "description": "Instruction for file access permission" - }, - "extensionsErrorLoading": "Erro ao carregar extensão", - "@actionPaste": { - "description": "Generic action - paste from clipboard" - }, - "aboutFeatureRequestSubtitle": "Sugira novos recursos para o aplicativo", - "@aboutFeatureRequestSubtitle": { - "description": "Subtitle for feature request" - }, - "@aboutTitle": { - "description": "About page title" - }, - "@downloadNeteaseIncludeTranslation": { - "description": "Setting to include translated lyrics from Netease" - }, - "@actionGo": { - "description": "Generic action button label" - }, - "regionCountryFR": "France", - "trackConvertResamplerSoxr": "SoXr", - "extensionUpdated": "Atualizado", - "@extensionUpdated": { - "description": "Extension detail - last update" - }, - "downloadLossyFormat": "Lossy Format", - "@downloadLossyFormat": { - "description": "Setting title to pick output format for lossy downloads" - }, - "snackbarAlreadyInLibrary": "\"{trackName}\" já existe na sua biblioteca", - "@snackbarAlreadyInLibrary": { - "description": "Snackbar - track already exists in local library", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "libraryExternalPlayerSubtitle": "Recommended for listening, best quality, gapless playback, EQ, and wider format support", - "extensionCustomUrlHandlingShareHint": "Share links from these sites to SpotiFLAC Mobile and this extension will handle them.", - "libraryFilterQuality": "Quality", - "@libraryFilterQuality": { - "description": "Filter section - audio quality" - }, - "editMetadataAutoFillDone": "Filled {count} {count, plural, =1{field} other{fields}} from online metadata", - "@editMetadataAutoFillDone": { - "description": "Snackbar confirming how many fields were auto-filled", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@discographyDownload": { - "description": "Button - download artist discography" - }, - "aboutFeatureRequest": "Solicitação de recurso", - "downloadSingleFilenameFormatDescription": "Padrão de nome de arquivo para Singles e EPs. Utiliza as mesmas tags do formato de álbum.", - "@downloadSingleFilenameFormatDescription": { - "description": "Subtitle description for single filename format setting" - }, - "queueClearAllMessage": "Você tem certeza que deseja limpar todos os downloads?", - "dialogDisableHistoryMessage": "Existing history will be cleared. Downloaded files will not be deleted.", - "extensionLastChecked": "Last checked {time}", - "@extensionLastChecked": { - "description": "Timestamp for the latest extension service health check", - "placeholders": { - "time": { - "type": "String" - } - } - }, - "homeImportCsvTooltip": "Import playlist (CSV, M3U)", - "@homeImportCsvTooltip": { - "description": "Tooltip for importing a CSV file into Home search" - }, - "trackConvertResamplerSwr": "SWR", - "@trackConvertResamplerSwr": { - "description": "Lossless conversion default FFmpeg swresample resampler option" - }, - "@downloadFolderOrganization": { - "description": "Title of the folder organization picker bottom sheet" - }, - "dialogClearHistoryTitle": "Limpar Histórico", - "@logClearSearch": { - "description": "Tooltip for clearing the log search field" - }, - "dialogImport": "Importar", - "@dialogImport": { - "description": "Dialog button - import data" - }, - "@setupChangeFolderTooltip": { - "description": "Tooltip for editing the selected download folder" - }, - "notifLibraryScanErrors": "{count} errors", - "@downloadNetworkCompatibilityMode": { - "description": "Setting for legacy TLS/network handling" - }, - "@metadataSaveFailedFfmpeg": { - "description": "Snackbar error when FFmpeg fails to write metadata" - }, - "dialogUninstallExtension": "Desinstalar Extensão?", - "recentTypePlaylist": "Playlist", - "@recentTypePlaylist": { - "description": "Recent access item type - playlist" - }, - "trackDeleteConfirmMessage": "Isto irá excluir o arquivo baixado permanentemente e removê-lo do seu histórico.", - "@logIssueNetworkErrorDescription": { - "description": "Diagnostic badge description for generic network errors" - }, - "appearanceThemeSystem": "Sistema", - "@appearanceThemeSystem": { - "description": "Follow system theme" - }, - "albumFolderArtistAlbumSingles": "Artista / Álbum + Singles", - "@aboutTranslators": { - "description": "Section for translators" - }, - "shareSheetNotFound": "Not found", - "@shareSheetNotFound": { - "description": "Cross-service share sheet row subtitle when a service has no match" - }, - "@tutorialDownloadInProgressSemantics": { - "description": "Accessibility label for active download state in tutorial demo" - }, - "editMetadataAutoFillNoneSelected": "Select at least one field to auto-fill", - "@editMetadataAutoFillNoneSelected": { - "description": "Snackbar when user taps Fetch without selecting any fields" - }, - "@snackbarViewQueue": { - "description": "Snackbar action - view download queue" - }, - "@optionsUpdateChannelPreview": { - "description": "Include beta/preview updates" - }, - "editMetadataFieldComposer": "Composer", - "@editMetadataFieldComposer": { - "description": "Label for composer field in the edit metadata sheet" - }, - "aboutSachinsenalDesc": "O criador original do projeto HiFi. Uma base para integração de fontes sem perdas.", - "@aboutSachinsenalDesc": { - "description": "Credit description for sachinsenal0x64" - }, - "backupTitle": "Backup & Restore", - "@libraryFilterMetadata": { - "description": "Filter section - metadata completeness" - }, - "setupStorageAccessRequired": "Acesso ao Armazenamento Necessário", - "@setupStorageAccessRequired": { - "description": "Title when storage access needed" - }, - "trackMetadataDelete": "Apagar", - "@trackMetadataDelete": { - "description": "Action button - delete track" - }, - "libraryFilterMetadataMissingDiscNumber": "Missing disc number", - "@libraryFilterMetadataMissingDiscNumber": { - "description": "Filter option - items missing disc number" - }, - "snackbarMetadataProviderSaved": "Prioridade do provedor de metadados salva", - "setupPermissionRequired": "Permissão {permissionType} Necessária", - "@selectionConvertNoConvertible": { - "description": "Snackbar when no selected tracks support conversion" - }, - "extensionHealthDegraded": "Degraded", - "regionCountryKR": "South Korea", - "@regionCountryKR": { - "description": "Country name for SongLink region picker" - }, - "trackLyricsNotInFile": "Nenhuma letra encontrada neste arquivo", - "@trackLyricsNotInFile": { - "description": "Message when no embedded lyrics in audio file" - }, - "@downloadedAlbumTapToSelect": { - "description": "Selection hint" - }, - "downloadArtistNameFilters": "Artist Name Filters", - "@downloadArtistNameFilters": { - "description": "Setting title for artist folder filter options" - }, - "@libraryFilterMetadataMissingArtist": { - "description": "Filter option - items missing artist" - }, - "recentShowAllDownloads": "Show All Downloads", - "@appearanceThemeLight": { - "description": "Light theme" - }, - "trackReEnrichFieldTrackInfo": "Track & Disc Number", - "@appearanceThemeDark": { - "description": "Dark theme" - }, - "extensionVerificationLinkCopied": "Verification link copied", - "@extensionVerificationLinkCopied": { - "description": "Snackbar after copying the extension verification URL" - }, - "@extensionsHomeFeedDescription": { - "description": "Extensions page - description for home feed provider picker" - }, - "downloadAlbumArtistMetadataPrimaryOnly": "Album Artist metadata: Primary only", - "@downloadAlbumArtistMetadataPrimaryOnly": { - "description": "Status label when album-artist folder filtering uses primary artist only" - }, - "extensionOauthConnectHint": "Tap Connect to Spotify to fill this field.", - "setupNext": "Próximo", - "extensionVerificationBrowserSubtitleInApp": "Open challenges in the in-app browser first", - "libraryAutoScanDaily": "Daily", - "@libraryAutoScanDaily": { - "description": "Auto scan once per day" - }, - "@audioAnalysisDescription": { - "description": "Description for audio analysis tap-to-analyze prompt" - }, - "nowPlayingUpNext": "Up next", - "@nowPlayingUpNext": { - "description": "Title for the playback queue sheet" - }, - "nowPlayingPreviousTrack": "Previous track", - "nowPlayingNextTrack": "Next track", - "logAutoScrollOff": "Auto-scroll OFF", - "trackConvertFailed": "Conversion failed", - "@trackConvertFailed": { - "description": "Snackbar when conversion fails" - }, - "extensionsUninstall": "Desinstalar", - "safMigrationSuccess": "Download folder updated to SAF mode", - "optionsClearHistorySubtitle": "Remover todas as faixas baixadas do histórico", - "@optionsClearHistorySubtitle": { - "description": "Subtitle for clear history" - }, - "trackPlayNext": "Play next", - "extensionsNoHomeFeedExtensions": "No extensions with home feed", - "optionsUpdateChannelStable": "Somente versões estáveis", - "@optionsUpdateChannelStable": { - "description": "Only stable updates" - }, - "@discographyDownloadAllSubtitle": { - "description": "Subtitle showing total tracks and albums", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } - }, - "searchPlaylists": "Listas de reprodução", - "@searchPlaylists": { - "description": "Search result category - playlists" - }, - "downloadNetworkCompatibilityMode": "Network Compatibility Mode", - "settingsAppearance": "Aparência", - "logIssueRateLimitedLabel": "RATE LIMITED", - "@logIssueRateLimitedLabel": { - "description": "Diagnostic badge label when the service rate limits requests" - }, - "logIssueSummary": "Issue Summary", - "@logIssueSummary": { - "description": "Header for log issue analysis summary" - }, - "appName": "SpotiFLAC Mobile", - "storeRepoDialogCurrent": "Repositório atual:", - "@optionsExtensionStoreSubtitle": { - "description": "Subtitle for extension repo toggle" - }, - "@trackLyrics": { - "description": "Tab title - lyrics" - }, - "@backupImportButton": { - "description": "Button to pick a backup file to restore" - }, - "@setupFolderChoose": { - "description": "Button to choose folder" - }, - "storageModeAppFolderSubtitle": "Saves to Music/SpotiFLAC by default", - "@extensionsDisabled": { - "description": "Extension status - inactive" - }, - "@regionCountryAU": { - "description": "Country name for SongLink region picker" - }, - "@storeCategoryMetadata": { - "description": "Store extension category - metadata" - }, - "libraryFilterApply": "Apply", - "@libraryFilterApply": { - "description": "Apply filters button" - }, - "@libraryFilterSortGenreAsc": { - "description": "Sort option - genre ascending" - }, - "setupAllowAccessToManageFiles": "Por favor, habilite \"Permitir acesso para gerenciar todos os arquivos\" na próxima tela.", - "@dialogSave": { - "description": "Dialog button - save changes" - }, - "trackLyrics": "Letras", - "extensionSettingNotSet": "Not set", - "@extensionSettingNotSet": { - "description": "Value shown when an extension setting has no value" - }, - "@audioAnalysisClipping": { - "description": "Clipping metric label" - }, - "downloadNeteaseIncludeTranslation": "Netease: Include Translation", - "@albumFolderArtistAlbumSubtitle": { - "description": "Folder structure example" - }, - "@settingsDonateSubtitle": { - "description": "Subtitle for donate menu item" - }, - "cueSplitSuccess": "Split into {count} tracks successfully", - "@cueSplitSuccess": { - "description": "Snackbar after successful CUE split", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cueSplitArtist": "Artist: {artist}", - "@cueSplitArtist": { - "description": "Artist name in CUE split sheet", - "placeholders": { - "artist": { - "type": "String" - } - } - }, - "updateSeeReleaseNotes": "See release notes for details.", - "@updateSeeReleaseNotes": { - "description": "Fallback changelog text when release notes cannot be parsed" - }, - "@trackReEnrichFfmpegFailed": { - "description": "Snackbar when FFmpeg embed fails for MP3/Opus" - }, - "collectionWishlist": "Wishlist", - "@collectionWishlist": { - "description": "Custom folder for saved tracks to download later" - }, - "editMetadataAutoFillFetch": "Fetch & Fill", - "@extensionsHomeFeedAuto": { - "description": "Label for auto-selected search provider" - }, - "providerPriorityDescription": "Arraste para reordenar provedores de download. O aplicativo irá tentar provedores de cima para baixo ao baixar as faixas.", - "@providerPriorityDescription": { - "description": "Provider priority page description" - }, - "queueEmptySinglesSubtitle": "Single track downloads will appear here", - "downloadLossyOpus128": "Opus 128kbps", - "downloadUseAlbumArtistForFolders": "Use Album Artist for folders", - "@downloadUseAlbumArtistForFolders": { - "description": "Setting - choose whether artist folders use Album Artist or Track Artist" - }, - "@aboutLinks": { - "description": "Section for external links" - }, - "downloadedAlbumDeleteCount": "Apagar {count} {count, plural, =1{faixa} other{faixas}}", - "updateLater": "Depois", - "@logIssueIspBlockingSuggestion": { - "description": "Diagnostic badge suggestion for ISP blocking" - }, - "actionResume": "Retomar", - "optionsDetailedLoggingOff": "Habilitar para relatórios de erros", - "@searchSortDefault": { - "description": "Sort option - default API order" - }, - "@regionCountryCA": { - "description": "Country name for SongLink region picker" - }, - "@sectionStorageAccess": { - "description": "Section header for storage access settings" - }, - "downloadFilterContributing": "Filter Contributing Artists", - "downloadUseAlbumArtistForFoldersTrackSubtitle": "Folder named after Track Artist tag", - "storeSearch": "Pesquisar extensões...", - "@storeSearch": { - "description": "Repo search placeholder" - }, - "aboutTelegramChat": "Comunidade do Telegram", - "lyricsModeBoth": "Ambos", - "@lyricsModeBoth": { - "description": "Lyrics mode option - embed and external" - }, - "@permissionNotification": { - "description": "Notification permission type label" - }, - "libraryAutoScanSubtitle": "Escanear automaticamente sua biblioteca em busca de novos arquivos", - "@libraryAutoScanSubtitle": { - "description": "Subtitle for auto scan setting" - }, - "libraryEnableLocalLibrary": "Enable Local Library", - "trackConvertTargetFormat": "Target Format", - "@trackConvertTargetFormat": { - "description": "Label for format selection" - }, - "extensionSettings": "Configurações", - "@editMetadataAutoFillSearching": { - "description": "Snackbar shown while searching for online metadata" - }, - "trackLyricsTimeout": "A solicitação expirou. Tente novamente mais tarde.", - "settingsExtensions": "Extensões", - "@settingsBackup": { - "description": "Settings menu item - backup and restore page" - }, - "librarySourceDownloaded": "Downloaded", - "@librarySourceDownloaded": { - "description": "Badge for tracks downloaded via SpotiFLAC" - }, - "appearanceDynamicColor": "Cores Dinâmicas", - "@appearanceDynamicColor": { - "description": "Material You dynamic colors" - }, - "backupImportButton": "Choose backup file", - "downloadAppleElrcWordSyncDisabled": "Safer line-by-line Apple Music lyrics", - "@optionsEmbedMetadata": { - "description": "Settings toggle title for writing metadata into downloaded files" - }, - "appearanceTitle": "Aparência", - "downloadNeteaseIncludeRomanizationDisabled": "No romanization", - "@downloadNeteaseIncludeRomanizationDisabled": { - "description": "Subtitle when Netease romanization is off" - }, - "@libraryScanCancelled": { - "description": "Library scan status when a scan was cancelled" - }, - "tracksCount": "{count, plural, =1{1 faixa} other{{count} faixas}}", - "@snackbarFailedToUpdateNamed": { - "description": "Snackbar when extension update fails in the repo tab", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "@extensionQualityOptions": { - "description": "Capability - quality selection" - }, - "logClearSearch": "Clear search", - "trackSaveLyrics": "Save Lyrics (.lrc)", - "@trackReEnrichSearching": { - "description": "Snackbar while searching metadata from internet for local items" - }, - "@editMetadataAutoFillNoResults": { - "description": "Snackbar when online metadata search returns no results" - }, - "notifDownloadComplete": "Download Complete", - "snackbarAlreadyDownloaded": "\"{trackName}\" já foi baixada", - "folderOrganizationByAlbumSubtitle": "Pasta separada para cada álbum", - "storeRepoUrlHint": "https://github.com/usuario/repositorio", - "trackConvertDitherTriangularHp": "Triangular HP", - "lyricsModeBothSubtitle": "Incorporar e salvar arquivo .lrc", - "trackReEnrichFieldExtra": "Genre, Label, Copyright", - "@trackReEnrichFieldExtra": { - "description": "Checkbox label for extra metadata in re-enrich" - }, - "sectionLyrics": "Letras", - "@sectionLyrics": { - "description": "Settings section header" - }, - "extensionStrategy": "Estratégia: {strategy}", - "@extensionStrategy": { - "description": "Track matching strategy name", - "placeholders": { - "strategy": { - "type": "String" - } - } - }, - "@downloadNativeWorker": { - "description": "Setting title for Android native download worker" - }, - "optionsArtistTagModeSplitVorbis": "Dividir etiquetas para FLAC/Opus", - "extensionsHomeFeedUse": "Use {extensionName} home feed", - "@cacheAppDirectoryDesc": { - "description": "Description of what app cache directory contains" - }, - "cancelDownloadTitle": "Cancel download?", - "updateWhatsNew": "Novidades", - "updateNewVersionReady": "Uma nova versão está pronta", - "@extensionVerificationClose": { - "description": "Button to dismiss the extension verification help dialog" - }, - "a11ySelectTrack": "Select track", - "libraryClearSubtitle": "Remove all scanned tracks", - "@libraryClearSubtitle": { - "description": "Subtitle for clear button" - }, - "@settingsDownloadNetworkSubtitle": { - "description": "Subtitle explaining network preference" - }, - "storeAnyVersion": "Any", - "@storeAnyVersion": { - "description": "Store detail value when any app version is accepted" - }, - "navStore": "Repo", - "backupExportSectionDescription": "Save your settings, download history, liked tracks, wishlist, favorite artists and playlists into a single file you can keep or move to another phone.", - "libraryScanSettings": "Scan Settings", - "@libraryScanSettings": { - "description": "Section header for scan settings" - }, - "trackDuration": "Duração", - "@trackDuration": { - "description": "Metadata label - track length" - }, - "extensionHealthOffline": "Offline", - "@extensionHealthOffline": { - "description": "Extension service health status - offline" - }, - "editMetadataFieldArtist": "Artist", - "@editMetadataFieldArtist": { - "description": "Chip label for artist field in auto-fill selector" - }, - "libraryInLibrary": "In Library", - "pressBackAgainToExit": "Pressione voltar novamente para sair", - "@pressBackAgainToExit": { - "description": "Exit confirmation message" - }, - "setupNotificationGranted": "Permissão de Notificações Concedida!", - "@setupNotificationGranted": { - "description": "Success message for notification permission" - }, - "settingsDonate": "Support Development", - "snackbarFailedToUpdateNamed": "Failed to update {extensionName}", - "backupContentsTitle": "Backup contents", - "updateDontRemind": "Não lembrar", - "@dialogDiscard": { - "description": "Dialog button - discard changes" - }, - "editMetadataAutoFillSearching": "Searching online...", - "discographyDownloadSelected": "Baixar Selecionados", - "trackConvertResampler": "Resampler", - "queueFilteringIndicator": "Filtering...", - "@queueFilteringIndicator": { - "description": "Shown while filter results are being computed" - }, - "@dialogDownloadAllTitle": { - "description": "Dialog title for bulk download confirmation" - }, - "cueSplitConfirmMessage": "Split \"{album}\" into {count} individual FLAC files?\n\nFiles will be saved to the same directory.", - "@downloadCreatePlaylistSourceFolderRedundant": { - "description": "Subtitle when folder organization is already set to playlist" - }, - "regionCountryCA": "Canada", - "cacheTempDirectory": "Temporary directory", - "@cacheTempDirectory": { - "description": "Cache item title for temporary files directory" - }, - "libraryShowDuplicateIndicator": "Show Duplicate Indicator", - "@logFilterBySeverity": { - "description": "Filter dialog title" - }, - "homeSearchHintProvider": "Search with {providerName}...", - "@downloadNeteaseIncludeTranslationDisabled": { - "description": "Subtitle when Netease translation is off" - }, - "optionsCheckUpdates": "Procurar Atualizações", - "replayGainBatchAnalyzing": "Analisando ReplayGain...", - "recentTypeAlbum": "Álbum", - "providerExtension": "Extensão", - "@providerExtension": { - "description": "Label for extension-provided providers" - }, - "trackCoverNoSource": "No cover art source available", - "libraryFilterMetadata": "Metadata", - "albumFolderArtistYearAlbum": "Artista / [Ano] Álbum", - "@albumFolderArtistYearAlbum": { - "description": "Album folder option with year" - }, - "audioAnalysisClipping": "Clipping", - "@a11yOpenAlbumByArtistTrackCount": { - "description": "Accessibility label for opening an album item with track count", - "placeholders": { - "albumName": { - "type": "String" - }, - "artistName": { - "type": "String" - }, - "trackCount": { - "type": "int" - } - } - }, - "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": { - "count": { - "type": "int" - } - } - }, - "channelStable": "Estável", - "@channelStable": { - "description": "Update channel - stable releases" - }, - "tutorialSettingsTip3": "Customize app theme and appearance", - "setupAppDocumentsFolderSubtitle": "Recomendado - acessível através do aplicativo Arquivos", - "a11yPlayTrackByArtist": "Play {trackName} by {artistName}", - "@a11yPlayTrackByArtist": { - "description": "Accessibility label for playing a local library track", - "placeholders": { - "trackName": { - "type": "String" - }, - "artistName": { - "type": "String" - } - } - }, - "dialogRemove": "Remover", - "extensionVerificationClose": "Close", - "bulkDownloadPlaylistsButton": "Download {count} {count, plural, =1{playlist} other{playlists}}", - "@bulkDownloadPlaylistsButton": { - "description": "Button label for bulk downloading selected playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "optionsAutoFallbackSubtitle": "Tentar outros serviços se o download falhar", - "@optionsAutoFallbackSubtitle": { - "description": "Subtitle for auto fallback" - }, - "extensionPatternsCount": "{count} padrão(ões)", - "@libraryFilterLocal": { - "description": "Filter chip - show only local library items" - }, - "errorUrlNotRecognizedMessage": "Este link não é suportado. Verifique se a URL está correta e se uma extensão compatível está instalada.", - "@errorUrlNotRecognizedMessage": { - "description": "Error message - URL not recognized explanation" - }, - "@extensionVerificationBrowserSubtitleExternal": { - "description": "Subtitle when external browser is preferred for extension verification" - }, - "optionsArtistTagMode": "Modo de etiqueta de artista", - "libraryFilterMetadataComplete": "Complete metadata", - "@libraryFilterMetadataComplete": { - "description": "Filter option - items with complete metadata" - }, - "@extensionsVersion": { - "description": "Extension version display", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "@downloadNetworkAnySubtitle": { - "description": "Subtitle for any-network option in picker" - }, - "optionsReplayGainSubtitleOn": "Analisar o volume e incorporar tags ReplayGain (EBU R128)", - "libraryScanning": "Scanning...", - "@libraryScanning": { - "description": "Status during scan" - }, - "cacheRefresh": "Refresh", - "@actionShuffle": { - "description": "Tooltip for shuffle playback action" - }, - "optionsEmbedLyricsSubtitle": "Salve letras sincronizadas ao lado das suas faixas baixadas", - "@optionsEmbedLyricsSubtitle": { - "description": "Subtitle for embed lyrics" - }, - "queueEmptyAlbumsSubtitle": "Download multiple tracks from an album to see them here", - "extensionEnterValue": "Enter value", - "@settingsDownloadNetworkAny": { - "description": "Network option - use any connection" - }, - "collectionLoved": "Loved", - "@collectionLoved": { - "description": "Custom folder for favorite tracks" - }, - "storeAddRepoTitle": "Adicionar repositório de extensões", - "@storeAddRepoTitle": { - "description": "Store setup screen - heading when no repo is configured" - }, - "collectionNoPlaylistsYet": "No playlists yet", - "@collectionNoPlaylistsYet": { - "description": "Empty state title when user has no playlists" - }, - "libraryCleanupMissingFilesSubtitle": "Remove entries for files that no longer exist", - "@libraryCleanupMissingFilesSubtitle": { - "description": "Subtitle for cleanup button" - }, - "folderOrganizationByArtist": "Por Artista", - "@folderOrganizationByArtist": { - "description": "Folder option - artist folders" - }, - "aboutTranslators": "Tradutores", - "notifAlreadyInLibraryCount": "Already in Library ({completed}/{total})", - "editMetadataFieldTitle": "Title", - "@editMetadataFieldTitle": { - "description": "Chip label for title field in auto-fill selector" - }, - "downloadFilenameDescription": "Use {artist}, {title}, {album}, {track}, {year}, {date}, {disc} as placeholders.", - "@downloadFilenameDescription": { - "description": "Description shown in filename format editor" - }, - "@notifDownloadsFinishedBody": { - "description": "Notification body when queue finishes with failures", - "placeholders": { - "completed": { - "type": "int" - }, - "failed": { - "type": "int" - } - } - }, - "@libraryFolderNotExist": { - "description": "Error when folder doesn't exist" - }, - "@playlistsCount": { - "description": "Playlist count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@loadingSharedLink": { - "description": "Status when opening shared URL" - }, - "extensionServiceHealth": "Service health", - "@extensionServiceHealth": { - "description": "Extension capability label for service health checks" - }, - "@collectionDeletePlaylistsMessage": { - "description": "Confirmation message for deleting selected playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "setupStorageDescription": "O SpotiFLAC precisa de permissão de armazenamento para salvar os seus arquivos de música baixados.", - "tutorialReadyMessage": "You're ready. Select your extensions, then search or paste a supported link.", - "tutorialLibraryTip3": "Browse tracks, albums, and playlists in list or grid views", - "selectionDeletePlaylistsCount": "Delete {count} {count, plural, =1{playlist} other{playlists}}", - "appearanceThemeLight": "Claro", - "queueEmptyHistorySubtitle": "Downloaded tracks will appear here", - "@queueEmptyHistorySubtitle": { - "description": "Empty state subtitle for download history" - }, - "backupRestoreFailed": "Failed to restore backup", - "@backupRestoreFailed": { - "description": "Snackbar when restore fails" - }, - "queueFlacQueuedWithSkipped": "Added {addedCount} tracks to queue, skipped {skippedCount}", - "@queueFlacQueuedWithSkipped": { - "description": "Snackbar when some selected local tracks were queued for FLAC redownload and some were skipped", - "placeholders": { - "addedCount": { - "type": "int" - }, - "skippedCount": { - "type": "int" - } - } - }, - "@trackReplayGain": { - "description": "Three-dot menu option to scan loudness and write ReplayGain tags" - }, - "@downloadedAlbumDownloadedCount": { - "description": "Downloaded tracks count badge", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "setupFolderChoose": "Escolher Pasta de Download", - "dialogDownloadAllTitle": "Download All", - "providerPriorityInfo": "Se uma faixa não estiver disponível no primeiro provedor, o aplicativo irá tentar automaticamente a próxima.", - "@providerPriorityInfo": { - "description": "Info tip about fallback behavior" - }, - "@dialogDiscardChanges": { - "description": "Dialog title - unsaved changes warning" - }, - "discographyNoAlbums": "Nenhum álbum disponível", - "downloadAppleQqMultiPersonDisabled": "Standard lyrics without speaker labels", - "cacheNoData": "No cached data", - "@cacheNoData": { - "description": "Label when cache category has no data" - }, - "tutorialStartDownloadSemantics": "Start download", - "@tutorialStartDownloadSemantics": { - "description": "Accessibility label for idle download button in tutorial demo" - }, - "logIssueIspBlockingSuggestion": "Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8", - "aboutTitle": "Sobre", - "@cueSplitButton": { - "description": "Button text to start CUE splitting" - }, - "appearanceHistoryView": "Visualização do Histórico", - "audioAnalysisSampleRate": "Sample Rate", - "@settingsCache": { - "description": "Settings menu item - cache management" - }, - "lyricsProvidersInfoText": "Extension lyrics providers run before built-in lyrics providers. At least one provider must remain enabled.", - "cacheTrackLookup": "Track lookup cache", - "extensionsHomeFeedOffSubtitle": "Do not show the home feed on the main screen", - "@downloadUsePrimaryArtistOnly": { - "description": "Setting - strip featured artists from folder name" - }, - "@regionCountryIN": { - "description": "Country name for SongLink region picker" - }, - "@libraryFilterQualityLossy": { - "description": "Filter option - lossy compressed audio" - }, - "extensionRefreshStatus": "Refresh status", - "notifAllDownloadsComplete": "All Downloads Complete", - "downloadNeteaseIncludeRomanizationEnabled": "Romanization lines included", - "editMetadataFieldDateHint": "YYYY-MM-DD or YYYY", - "@editMetadataFieldDateHint": { - "description": "Hint text for the edit metadata date field" - }, - "trackMetadataShare": "Compartilhar", - "@trackMetadataShare": { - "description": "Action button - share track" - }, - "discographyDownloadAllSubtitle": "{count} faixas de {albumCount} lançamentos", - "settingsDonateSubtitle": "Buy the developer a coffee", - "libraryFilterDownloaded": "Downloaded", - "downloadNetworkAnySubtitle": "Use WiFi or mobile data", - "@cueSplitNoAudioFile": { - "description": "Error when CUE audio file is missing" - }, - "notifLibraryScanStopped": "", - "@settingsMetadata": { - "description": "Settings menu item - metadata settings" - }, - "snackbarFailedToInstallNamed": "Failed to install {extensionName}", - "trackCopyLyrics": "Copiar letra", - "@trackCopyLyrics": { - "description": "Action - copy lyrics to clipboard" - }, - "regionCountryAU": "Australia", - "downloadAlbumFolderStructure": "Estrutura da Pasta de Álbum", - "downloadMusixmatchAuto": "Auto", - "actionDismiss": "Dismiss", - "storeFilterAll": "Tudo", - "extensionsDisabled": "Desabilitado", - "@logClearLogs": { - "description": "Clear button tooltip" - }, - "dialogDownloadAllMessage": "Download {count} tracks?", - "@optionsEmbedLyrics": { - "description": "Embed lyrics in audio files" - }, - "tutorialLibraryTitle": "Your Library", - "optionsCheckUpdatesSubtitle": "Notificar quando uma nova versão estiver disponível", - "@optionsCheckUpdatesSubtitle": { - "description": "Subtitle for update check" - }, - "collectionPlaylist": "Playlist", - "@collectionPlaylist": { - "description": "Single playlist label" - }, - "dateMonthsAgo": "{count} meses atrás", - "@dateMonthsAgo": { - "description": "Relative date - months ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@extensionRemoveButton": { - "description": "Button to uninstall extension" - }, - "collectionPlaylistRenamed": "Playlist renamed", - "collectionCreatePlaylist": "Create playlist", - "homeGoToAlbum": "Go to Album", - "@homeGoToAlbum": { - "description": "Context menu item to navigate to the album page" - }, - "folderOrganizationByArtistSubtitle": "Pasta separada para cada artista", - "@optionsClearHistory": { - "description": "Delete all download history" - }, - "@searchAlbums": { - "description": "Search result category - albums" - }, - "@sectionDebug": { - "description": "Settings section header" - }, - "extensionsVersion": "Versão {version}", - "@navHome": { - "description": "Bottom navigation - Home tab" - }, - "@editMetadataFieldDate": { - "description": "Chip label for date field in auto-fill selector" - }, - "downloadUsePrimaryArtistOnly": "Primary artist only for folders", - "tutorialExtensionsTip2": "Choose providers for search, downloads, metadata, and fallbacks", - "@setupStorageGranted": { - "description": "Success message for storage permission" - }, - "tutorialWelcomeTitle": "Welcome to SpotiFLAC Mobile!", - "a11ySelectAlbum": "Select album {albumName}", - "@a11ySelectAlbum": { - "description": "Accessibility label for selecting an album", - "placeholders": { - "albumName": { - "type": "String" - } - } - }, - "aboutMobileSource": "Código-fonte do app móvel", - "@aboutMobileSource": { - "description": "Link to mobile GitHub repo" - }, - "@extensionCustomUrlHandling": { - "description": "Extension detail section title for custom URL handling" - }, - "@downloadMusixmatchLanguageAuto": { - "description": "Subtitle when no language is set" - }, - "@cancelDownloadKeep": { - "description": "Dialog button - keep the active download (do not cancel)" - }, - "libraryFilterSource": "Source", - "@libraryFilterSource": { - "description": "Filter section - source type" - }, - "sectionStorageAccess": "Storage Access", - "logFilterBySeverity": "Filtrar registros por gravidade", - "libraryFolderNotExist": "Selected folder does not exist", - "optionsEmbedMetadataSubtitleOn": "Write metadata, cover art, and embedded lyrics to files", - "albumFolderArtistAlbum": "Artista / Álbum", - "@albumFolderArtistAlbum": { - "description": "Album folder option" - }, - "allFilesAccessDeniedMessage": "Permission was denied. Please enable 'All files access' manually in system settings.", - "@allFilesAccessDeniedMessage": { - "description": "Message when permission is permanently denied" - }, - "editMetadataSelectEmpty": "Empty only", - "settingsLocalLibrarySubtitle": "Scan music & detect duplicates", - "@settingsAutoExportFailed": { - "description": "Setting toggle for auto-export" - }, - "cacheCleanupUnusedSubtitle": "Remove orphaned download history and missing library entries", - "@tutorialSettingsTitle": { - "description": "Tutorial settings page title" - }, - "libraryFilterMetadataMissingGenre": "Missing genre", - "@appearanceSelectAccentColor": { - "description": "Accessibility label for picking an accent color", - "placeholders": { - "hex": { - "type": "String" - } - } - }, - "setupFolderDescription": "Selecione uma pasta onde as suas músicas baixadas serão salvas.", - "extensionDetailsTags": "Tags", - "unknownArtist": "Unknown Artist", - "trackFetchOnlineLyrics": "Buscar online", - "snackbarNoActionDefined": "No action defined for this button", - "@snackbarNoActionDefined": { - "description": "Snackbar when an extension button has no action configured" - }, - "downloadAllCount": "Baixar Todos ({count})", - "@downloadAllCount": { - "description": "Download all button with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadedAlbumDiscHeader": "Disco {discNumber}", - "@backupInvalidFile": { - "description": "Snackbar when the chosen file is not a valid backup" - }, - "@extensionHooksAvailable": { - "description": "Post-processing hooks count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@logIssueTrackNotFoundSuggestion": { - "description": "Diagnostic badge suggestion when a track is unavailable" - }, - "@snackbarFileNotFound": { - "description": "Snackbar - file doesn't exist" - }, - "extensionHealthOnline": "Online", - "@extensionHealthOnline": { - "description": "Extension service health status - online" - }, - "settingsSaveDownloadHistorySubtitle": "Keep completed downloads in history and library views", - "trackOptionRemoveFromWishlist": "Remove from Wishlist", "extensionsFallbackTitle": "Extensões alternativas", "@extensionsFallbackTitle": { "description": "Setting and page title for choosing which download extensions can be used during fallback" }, - "metadataSaveFailedFfmpeg": "Failed to save metadata via FFmpeg", - "@albumFolderAlbumOnly": { - "description": "Album folder option" + "extensionsFallbackSubtitle": "Escolha quais extensões de download instaladas podem ser usadas como alternativa", + "@extensionsFallbackSubtitle": { + "description": "Subtitle for download fallback extensions menu" }, - "@albumFolderYearAlbumSubtitle": { - "description": "Folder structure example" + "extensionsNoDownloadProvider": "Nenhuma extensão com provedor de download", + "@extensionsNoDownloadProvider": { + "description": "Empty state - no download providers" }, - "downloadedAlbumDeleteSelected": "Apagar Selecionados", - "selectionSelectPlaylistsToDelete": "Select playlists to delete", - "@selectionSelectPlaylistsToDelete": { - "description": "Hint shown when no playlists are selected for deletion" + "extensionsMetadataPriority": "Prioridade de Metadados", + "@extensionsMetadataPriority": { + "description": "Setting - metadata provider order" }, - "storeAddRepoDescription": "Insira a URL de um repositório do GitHub que contenha um arquivo registry.json para navegar e instalar extensões.", - "appearanceThemeDark": "Escuro", - "downloadedAlbumTapToSelect": "Toque nas faixas para selecionar", - "@collectionAddedToFavoriteArtists": { - "description": "Snackbar after adding artist to favorite artists", - "placeholders": { - "artistName": { - "type": "String" - } - } + "extensionsMetadataPrioritySubtitle": "Definir ordem de origem de pesquisa e metadados", + "@extensionsMetadataPrioritySubtitle": { + "description": "Subtitle for metadata priority" }, - "@backupRestored": { - "description": "Snackbar after a successful restore" - }, - "nowPlayingLibraryEmpty": "Your library is empty", - "@nowPlayingLibraryEmpty": { - "description": "Snackbar when shuffle library is requested but library has no tracks" - }, - "editMetadataAutoFillNoResults": "No matching metadata found online", - "updateDownloading": "Baixando...", - "trackLyricsSource": "Fonte: {source}", - "logFilterLevel": "Nível", - "logNoLogsYet": "Ainda não há registros", - "cacheSizeOnly": "{size}", - "@cacheSizeOnly": { - "description": "Cache size only", - "placeholders": { - "size": { - "type": "String" - } - } - }, - "trackOpenInService": "Open in {serviceName}", - "@trackOpenInService": { - "description": "Button label to open a track in a named music service", - "placeholders": { - "serviceName": { - "type": "String" - } - } - }, - "@cacheLibraryCoverDesc": { - "description": "Description of what library cover cache contains" - }, - "libraryClearConfirmMessage": "This will remove all scanned tracks from your library. Your actual music files will not be deleted.", - "@dialogImportPlaylistMessage": { - "description": "Dialog message - import playlist confirmation", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionsHomeFeedAuto": "Auto", - "searchEmptyResultSubtitle": "Tente outra palavra-chave", - "@searchEmptyResultSubtitle": { - "description": "Subtitle shown under the empty search result state on the home screen" - }, - "dateToday": "Hoje", - "a11yOpenItem": "Open {itemType} {name}", - "@a11yOpenItem": { - "description": "Accessibility label for opening a generic item", - "placeholders": { - "itemType": { - "type": "String" - }, - "name": { - "type": "String" - } - } - }, - "audioAnalysisBitDepth": "Bit Depth", - "editMetadataFieldTrackTotal": "Track Total", - "@editMetadataFieldTrackTotal": { - "description": "Label for total tracks field in the edit metadata sheet" - }, - "@editMetadataFieldDiscTotal": { - "description": "Label for total discs field in the edit metadata sheet" - }, - "replayGainBatchConfirmMessage": "Analisar o volume e gravar etiquetas ReplayGain em {count} faixa(s)?", - "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Folder named after Album Artist tag", - "@notifDownloadingUpdate": { - "description": "Notification title while downloading an app update", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "@csvImportTracks": { - "description": "Label shown in quality picker for CSV import", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "trackEditMetadata": "Edit Metadata", - "discographyDownloadAll": "Baixar Tudo", - "@discographyDownloadAll": { - "description": "Option - download entire discography" - }, - "@editMetadataFieldAlbum": { - "description": "Chip label for album field in auto-fill selector" - }, - "albumFolderArtistAlbumSubtitle": "Álbuns/Nome do Artista/Nome do Álbum/", - "extensionHealthServiceUnknown": "Service status unknown", - "navHome": "Início", - "queueDownloadStarting": "Starting...", - "@dialogRemoveExtension": { - "description": "Dialog title - uninstall extension" - }, - "notifLibraryScanProgressNoTotal": "{scanned} files scanned • {percentage}%", - "@appearanceAmoledDark": { - "description": "Theme option - pure black" - }, - "qualityHiResFlac": "FLAC de alta resolução", - "selectionSelected": "{count} selecionado(s)", - "extensionDetailsInformation": "Information", - "@extensionDetailsInformation": { - "description": "Section title for extension metadata information" - }, - "discographyDownload": "Baixar Discografia", - "editMetadataFieldCopyright": "Copyright", - "@setupOpenSettings": { - "description": "Button to open system settings" - }, - "libraryFilterSort": "Sort", - "cacheLibraryCoverDesc": "Cover art extracted from local music files. Will re-extract on next scan.", - "dialogRemoveExtension": "Remover Extensão", - "backupExportSectionTitle": "Create backup", - "downloadEmbedLyricsDisabled": "Enable metadata embedding first", - "openInOtherServices": "Open in Other Services", - "actionSelectAll": "Selecionar Tudo", - "settingsDownloadNetworkSubtitle": "Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.", - "downloadFolderOrganization": "Organização de Pastas", - "tutorialWelcomeTip2": "Choose from the audio qualities offered by your download provider", - "@tutorialWelcomeTip2": { - "description": "Tutorial welcome tip 2" - }, - "selectionAllSelected": "Todas as faixas selecionadas", - "@selectionAllSelected": { - "description": "Status - all items selected" - }, - "settingsLogsSubtitle": "Ver logs do app para depuração", - "albumFolderYearAlbumSubtitle": "Álbuns/[2005] Nome do Álbum/", - "cancelDownloadKeep": "Keep", - "optionsDetailedLoggingOn": "Registros detalhados estão sendo gravados", - "safMigrationMessage2": "Please select your download folder again to switch to the new storage system.", - "@storeChangeRepoTooltip": { - "description": "Tooltip for the change-repository icon button in the app bar" - }, - "regionCountryJP": "Japan", - "notifUpdateFailed": "Update Failed", - "downloadCreatePlaylistSourceFolderRedundant": "Handled by folder organization setting", - "@trackLyricsSaved": { - "description": "Snackbar after lyrics saved", - "placeholders": { - "fileName": { - "type": "String" - } - } - }, - "downloadLocationSubtitle": "Choose where to save your downloaded tracks", - "trackConvertActionLabelLossless": "{sourceFormat} → {targetFormat} ({quality})", - "lyricsProvidersDisabledSection": "Disabled ({count})", - "@dateDaysAgo": { - "description": "Relative date - days ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "librarySourceLocal": "Local", - "backupContentsExtensions": "{count, plural, =1{1 extension} other{{count} extensions}}", - "sectionService": "Serviço", - "lyricsProviderQqMusicDesc": "QQ Music (good for Chinese songs, via proxy)", - "@lyricsProviderQqMusicDesc": { - "description": "Description for QQ Music provider" - }, - "cacheCleanupUnusedDesc": "Remove orphaned download history and library entries for missing files.", - "selectionTapPlaylistsToSelect": "Tap playlists to select", - "notifUpdateFailedBody": "Could not download update. Try again later.", - "downloadNeteaseIncludeTranslationDisabled": "Original lyrics only", - "artistPopular": "Populares", - "extensionRemoveButton": "Remover Extensão", - "allFilesAccessEnabledSubtitle": "Can write to any folder", - "@allFilesAccessEnabledSubtitle": { - "description": "Subtitle when all files access is enabled" + "extensionsNoMetadataProvider": "Nenhuma extensão com provedor de metadados", + "@extensionsNoMetadataProvider": { + "description": "Empty state - no metadata providers" }, "extensionsSearchProvider": "Provedor de Pesquisa", - "tutorialWelcomeDesc": "Learn how to find music with extensions, choose the quality you want, and manage downloads in SpotiFLAC Mobile.", - "selectionBatchConvertConfirmTitle": "Batch Convert", - "extensionMetadataProvider": "Provedor de Metadados", - "queueDownloadedFileMissing": "Downloaded file missing", - "logClearLogs": "Limpar registros", - "@downloadAppleQqMultiPerson": { - "description": "Setting for word-by-word multi-person lyrics from Apple Music and QQ Music" + "@extensionsSearchProvider": { + "description": "Setting - search provider selection" }, - "tutorialWelcomeTip1": "Search with an installed extension or paste a supported music link", - "@tutorialWelcomeTip1": { - "description": "Tutorial welcome tip 1" + "extensionsNoCustomSearch": "Nenhuma extensão com pesquisa personalizada", + "@extensionsNoCustomSearch": { + "description": "Empty state - no search providers" }, - "logIssueRateLimitedSuggestion": "Wait a few minutes before trying again", - "downloadAllowLocalNetworkEnabled": "Requests to local/private addresses are allowed (for local proxy or custom DNS)", - "@regionCountryUS": { - "description": "Country name for SongLink region picker" + "extensionsSearchProviderDescription": "Escolha qual serviço utilizar para pesquisar faixas", + "@extensionsSearchProviderDescription": { + "description": "Search provider setting description" }, - "trackArtist": "Artista", - "extensionCustomUrlHandling": "Custom URL Handling", - "appearanceDynamicColorSubtitle": "Usar cores do seu papel de parede", - "@appearanceDynamicColorSubtitle": { - "description": "Subtitle for dynamic color" + "extensionsCustomSearch": "Busca personalizada", + "@extensionsCustomSearch": { + "description": "Label for custom search provider" }, - "searchSortDefault": "Padrão", - "@downloadFallbackExtensions": { - "description": "Settings item for configuring fallback extension providers" + "extensionsErrorLoading": "Erro ao carregar extensão", + "@extensionsErrorLoading": { + "description": "Error message when extension fails to load" + }, + "qualityFlacLossless": "FLAC sem perdas", + "@qualityFlacLossless": { + "description": "Quality option - CD quality FLAC" + }, + "qualityFlacLosslessSubtitle": "16 bits / 44,1 kHz", + "@qualityFlacLosslessSubtitle": { + "description": "Technical spec for lossless" + }, + "qualityHiResFlac": "FLAC de alta resolução", + "@qualityHiResFlac": { + "description": "Quality option - high resolution FLAC" + }, + "qualityHiResFlacSubtitle": "24-bit / até 96kHz", + "@qualityHiResFlacSubtitle": { + "description": "Technical spec for hi-res" + }, + "qualityHiResFlacMax": "FLAC Max de alta resolução", + "@qualityHiResFlacMax": { + "description": "Quality option - maximum resolution FLAC" + }, + "qualityHiResFlacMaxSubtitle": "24-bit / até 192kHz", + "@qualityHiResFlacMaxSubtitle": { + "description": "Technical spec for hi-res max" + }, + "downloadLossy320": "Com perdas, 320kbps", + "@downloadLossy320": { + "description": "Quality option label for lossy 320kbps" + }, + "downloadLossyFormat": "Formato com perda de dados", + "@downloadLossyFormat": { + "description": "Setting title to pick output format for lossy downloads" + }, + "downloadAutoConvert": "Converter automaticamente após baixar", + "@downloadAutoConvert": { + "description": "Toggle for automatic post-download audio conversion" + }, + "downloadAutoConvertSubtitle": "Converta os downloads concluídos para um formato com perda de dados menor. O arquivo original só será substituído após a conversão ser concluída com sucesso.", + "@downloadAutoConvertSubtitle": { + "description": "Explanation of safe automatic post-download conversion" + }, + "downloadAutoConvertFormat": "Formato de saída", + "@downloadAutoConvertFormat": { + "description": "Automatic conversion output format setting" + }, + "downloadAutoConvertFormatSubtitle": "Escolha o formato de arquivo com perdas a ser usado para os downloads concluídos recentemente.", + "@downloadAutoConvertFormatSubtitle": { + "description": "Automatic conversion format picker explanation" + }, + "downloadAutoConvertBitrate": "Qualidade de saída", + "@downloadAutoConvertBitrate": { + "description": "Automatic conversion bitrate setting" + }, + "downloadAutoConvertBitrateSubtitle": "Higher bitrates preserve more detail but create larger files.", + "@downloadAutoConvertBitrateSubtitle": { + "description": "Automatic conversion bitrate picker explanation" + }, + "downloadAutoConvertMp3Subtitle": "Best compatibility across players and devices", + "@downloadAutoConvertMp3Subtitle": { + "description": "MP3 automatic conversion option description" + }, + "downloadAutoConvertM4aSubtitle": "Efficient AAC audio in an M4A container", + "@downloadAutoConvertM4aSubtitle": { + "description": "M4A AAC automatic conversion option description" + }, + "downloadAutoConvertOpusSubtitle": "Best efficiency for modern players", + "@downloadAutoConvertOpusSubtitle": { + "description": "Opus automatic conversion option description" + }, + "downloadLossy320Format": "Lossy 320kbps Format", + "@downloadLossy320Format": { + "description": "Title of the lossy format picker bottom sheet" + }, + "downloadLossy320FormatDesc": "Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.", + "@downloadLossy320FormatDesc": { + "description": "Description in the lossy format picker" + }, + "downloadLossyMp3": "MP3 320kbps", + "@downloadLossyMp3": { + "description": "Lossy format option - MP3 320kbps" + }, + "downloadLossyMp3Subtitle": "Best compatibility, ~10MB per track", + "@downloadLossyMp3Subtitle": { + "description": "Subtitle for MP3 320kbps lossy option" + }, + "downloadLossyAac": "AAC/M4A 320kbps", + "@downloadLossyAac": { + "description": "Lossy format option - AAC in M4A container at 320kbps" + }, + "downloadLossyAacSubtitle": "Best mobile compatibility, M4A container", + "@downloadLossyAacSubtitle": { + "description": "Subtitle for AAC/M4A 320kbps lossy option" + }, + "downloadLossyOpus256": "Opus 256kbps", + "@downloadLossyOpus256": { + "description": "Lossy format option - Opus 256kbps" + }, + "downloadLossyOpus256Subtitle": "Best quality Opus, ~8MB per track", + "@downloadLossyOpus256Subtitle": { + "description": "Subtitle for Opus 256kbps lossy option" + }, + "downloadLossyOpus128": "Opus 128kbps", + "@downloadLossyOpus128": { + "description": "Lossy format option - Opus 128kbps" + }, + "downloadLossyOpus128Subtitle": "Smallest size, ~4MB per track", + "@downloadLossyOpus128Subtitle": { + "description": "Subtitle for Opus 128kbps lossy option" + }, + "downloadAskBeforeDownload": "Perguntar qualidade antes de baixar", + "@downloadAskBeforeDownload": { + "description": "Setting - show quality picker" + }, + "downloadDirectory": "Pasta de Download", + "@downloadDirectory": { + "description": "Setting - download folder" + }, + "downloadSeparateSinglesFolder": "Pasta de Singles Separada", + "@downloadSeparateSinglesFolder": { + "description": "Setting - separate folder for singles" + }, + "downloadAlbumFolderStructure": "Estrutura da Pasta de Álbum", + "@downloadAlbumFolderStructure": { + "description": "Setting - album folder organization" }, "albumFolderStructureDescription": "Choose how album folders are structured", "@albumFolderStructureDescription": { "description": "Album folder structure picker description" }, - "libraryBuiltInPreviewPlayerSubtitle": "Quick local previews inside SpotiFLAC Mobile", - "@libraryBuiltInPreviewPlayerSubtitle": { - "description": "Subtitle for built-in preview player option" + "downloadUseAlbumArtistForFolders": "Use Album Artist for folders", + "@downloadUseAlbumArtistForFolders": { + "description": "Setting - choose whether artist folders use Album Artist or Track Artist" }, - "storageModeAppFolder": "App Folder (Recommended)", - "@actionPause": { - "description": "Action button - pause download" + "downloadUsePrimaryArtistOnly": "Primary artist only for folders", + "@downloadUsePrimaryArtistOnly": { + "description": "Setting - strip featured artists from folder name" }, - "actionPaste": "Paste", - "extensionSettingsCount": "{count} {count, plural, =1{setting} other{settings}}", - "downloadNativeWorker": "Native download worker", - "releaseTypeEp": "EP", - "@releaseTypeEp": { - "description": "Badge label for EP releases" + "downloadUsePrimaryArtistOnlyEnabled": "Featured artists removed from folder name (e.g. Justin Bieber, Quavo → Justin Bieber)", + "@downloadUsePrimaryArtistOnlyEnabled": { + "description": "Subtitle when primary artist only is enabled" }, - "snackbarExtensionInstalledEnable": "{extensionName} installed. Enable it in Settings > Extensions", - "cacheRefreshStats": "Refresh stats", - "collectionPlaylistChangeCover": "Change cover image", - "@collectionPlaylistChangeCover": { - "description": "Bottom sheet action to pick a custom cover image for a playlist" + "downloadUsePrimaryArtistOnlyDisabled": "Full artist string used for folder name", + "@downloadUsePrimaryArtistOnlyDisabled": { + "description": "Subtitle when primary artist only is disabled" }, - "optionsClearHistory": "Limpar Histórico de Download", - "trackGenre": "Género", - "snackbarSelectedPlaylistsEmpty": "Selected playlists have no tracks", - "collectionAddedTracksToPlaylist": "Added {count} {count, plural, =1{track} other{tracks}} to {playlistName}", - "downloadNeteaseIncludeRomanization": "Netease: Include Romanization", - "libraryFilterMetadataMissingArtist": "Missing artist", - "extensionsNoCustomSearch": "Nenhuma extensão com pesquisa personalizada", - "@extensionsTitle": { - "description": "Extensions page title" + "downloadSelectQuality": "Selecionar Qualidade", + "@downloadSelectQuality": { + "description": "Dialog title - choose audio quality" }, - "extensionDownloadProvider": "Provedor de Download", - "@extensionDownloadProvider": { - "description": "Capability - provides downloads" - }, - "lyricsMode": "Modo de Letras", - "aboutReportIssueSubtitle": "Reporte qualquer problema que encontrar", - "@downloadSeparateSinglesFolder": { - "description": "Setting - separate folder for singles" + "downloadFrom": "Baixar De", + "@downloadFrom": { + "description": "Label - download source" }, "appearanceAmoledDark": "Escuro AMOLED", - "logIssueNetworkErrorDescription": "Connection issues detected", - "folderOrganizationByArtistAlbumSubtitle": "Pastas aninhadas para artista e álbum", - "@libraryForceFullScanSubtitle": { - "description": "Subtitle for force full scan button" + "@appearanceAmoledDark": { + "description": "Theme option - pure black" }, - "setupGrantPermission": "Conceder Permissão", - "lyricsProvidersDescription": "Enable, disable and reorder lyrics sources. Providers are tried top-to-bottom until lyrics are found.", - "dateDaysAgo": "{count} dias atrás", - "extensionsHomeFeedDescription": "Choose which extension provides the home feed on the main screen", - "downloadLossyMp3Subtitle": "Best compatibility, ~10MB per track", - "@downloadLossyMp3Subtitle": { - "description": "Subtitle for MP3 320kbps lossy option" - }, - "nowPlayingDetails": "Details", - "collectionWishlistEmptyTitle": "Wishlist is empty", - "downloadAppleQqMultiPersonEnabled": "Speaker labels included for duets and group tracks", - "@snackbarExtensionUpdatedVersion": { - "description": "Snackbar after updating an extension from the repo tab", - "placeholders": { - "extensionName": { - "type": "String" - }, - "version": { - "type": "String" - } - } - }, - "extensionHealthServiceDegraded": "Service degraded", - "selectionConvertNoConvertible": "No convertible tracks selected", - "setupStorageGranted": "Permissão de Armazenamento Concedida!", - "downloadAllowLocalNetwork": "Allow Local Network Access", - "nowPlayingNoLyrics": "No lyrics in this file", - "selectionDeleteTracksCount": "Delete {count} {count, plural, =1{track} other{tracks}}", - "@selectionDeleteTracksCount": { - "description": "Button label for deleting selected tracks", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@libraryForceFullScan": { - "description": "Button to force a complete rescan of library" - }, - "notifLibraryScanExcluded": "{count} excluded", - "@aboutPaxsenixSubtitle": { - "description": "Subtitle for Paxsenix special thanks entry on the about page" - }, - "setupChangeFolderTooltip": "Change folder", - "logIssueIspBlockingDescription": "Your ISP may be blocking access to download services", - "@logIssueIspBlockingDescription": { - "description": "Diagnostic badge description for ISP blocking" - }, - "libraryClear": "Clear Library", - "collectionRemoveFromPlaylist": "Remove from playlist", - "@collectionRemoveFromPlaylist": { - "description": "Tooltip for removing track from playlist" - }, - "backupIncludeSecrets": "Include extension credentials", - "notifDownloadsFinishedBody": "{completed, plural, =1{1 track downloaded} other{{completed} tracks downloaded}}, {failed, plural, =1{1 failed} other{{failed} failed}}", - "storeCategoryMetadata": "Metadata", - "@trackLyricsEmbedded": { - "description": "Snackbar - lyrics saved to file" - }, - "editMetadataFieldDiscTotal": "Disc Total", - "tutorialLibraryTip1": "Manage active, pending, and completed downloads from the Library queue", - "playlistsCount": "{count, plural, =1{1 playlist} other{{count} playlists}}", - "downloadCreatePlaylistSourceFolderDisabled": "All tracks saved directly to download folder", - "@downloadFallbackExtensionsSubtitle": { - "description": "Subtitle for fallback extensions item" - }, - "libraryFilterLocal": "Local", - "tutorialDownloadInProgressSemantics": "Download in progress", - "searchSortDurationLong": "Duração (mais longa)", - "@appearanceLanguage": { - "description": "Language setting title" - }, - "libraryAbout": "About Local Library", - "@libraryAbout": { - "description": "Section header for about info" - }, - "cueSplitNoAudioFile": "Audio file not found for this CUE sheet", - "notifUpdateReadyBody": "SpotiFLAC Mobile v{version} downloaded. Tap to install.", - "appearanceSelectAccentColor": "Select accent color {hex}", - "@homeAlbumInfoUnavailable": { - "description": "Snackbar when album info cannot be loaded" - }, - "trackReplayGain": "Reanalisar ReplayGain", - "downloadSeparateSinglesFolder": "Pasta de Singles Separada", - "trackAlbumArtist": "Artista do álbum", - "qualityFlacLossless": "FLAC sem perdas", - "@extensionVerificationHelpMessageWaiting": { - "description": "Dialog message when verification may need manual browser help" - }, - "tutorialSettingsTitle": "Customize Your Experience", - "extensionActionFailed": "Action failed", - "@storeEmptyNoResults": { - "description": "Message when search/filter returns no results" - }, - "downloadAppleQqMultiPerson": "Apple / QQ: Multi-Person Lyrics", - "downloadFallbackExtensionsSubtitle": "Choose which extensions can be used as fallback", - "storeExtensionsCount": "{count} {count, plural, =1{extension} other{extensions}}", - "trackCoverNoEmbeddedArt": "No embedded album art found", - "@trackCoverNoEmbeddedArt": { - "description": "Message shown when a track file has no embedded cover art" - }, - "snackbarExtensionUpdatedVersion": "{extensionName} updated to v{version}", - "setupStorageAccessMessageAndroid11": "O Android 11+ requer a permissão \"Acesso a Todos os Arquivos\" para salvar arquivos na pasta de download escolhida.", - "notifDownloadsFinished": "Downloads Finished ({completed} done, {failed} failed)", - "notifLibraryScanProgressWithTotal": "{scanned}/{total} files • {percentage}%", - "optionsPrimaryProvider": "Provedor Primário", - "@optionsPrimaryProvider": { - "description": "Main search provider setting" - }, - "logIssueTrackNotFoundSuggestion": "The track may not be available in lossless quality", - "collectionAddedToLoved": "\"{trackName}\" added to Loved", - "albumFolderArtistAlbumFlat": "Artist / Album (Singles flat)", - "homeAlbumInfoUnavailable": "Album info not available", - "settingsLyrics": "Lyrics", - "extensionVerificationBrowserExternal": "External", - "regionCountryIN": "India", - "extensionHealthUnknown": "Unknown", - "backupContentsWishlist": "{count} wishlist {count, plural, =1{track} other{tracks}}", - "settingsAutoExportFailed": "Auto-export failed downloads", - "logFilterSection": "Filtro", - "dialogDiscardChanges": "Descartar Alterações?", - "@qualityHiResFlacSubtitle": { - "description": "Technical spec for hi-res" - }, - "searchTracks": "Tracks", - "searchAlbums": "Álbuns", - "trackConvertFormat": "Convert Format", - "metadataProviderPriorityTitle": "Prioridade de Metadados", - "libraryFolderHint": "Tap to select folder", - "downloadedAlbumDeleteMessage": "Excluir {count} {count, plural, =1{faixa} other{faixas}} deste álbum?\n\nIsso também excluirá os arquivos do armazenamento.", - "@downloadedAlbumDeleteMessage": { - "description": "Delete confirmation with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "trackAlbum": "Álbum", - "updateAvailable": "Atualização Disponível", - "optionsEmbedLyrics": "Incorporar Letras", - "trackReEnrichProgress": "Re-enriching metadata...", - "@trackReEnrichProgress": { - "description": "Snackbar while re-enriching metadata" - }, - "audioAnalysisPeak": "Peak", - "@audioAnalysisPeak": { - "description": "Peak amplitude metric label" - }, - "optionsExtensionStoreSubtitle": "Mostrar aba de repositório na navegação", - "settingsTitle": "Configurações", - "@settingsAbout": { - "description": "Settings section - app info" - }, - "cacheExploreFeed": "Explore feed cache", - "@dialogDownloadPlaylistsMessage": { - "description": "Dialog message for bulk playlist download confirmation", - "placeholders": { - "trackCount": { - "type": "int" - }, - "playlistCount": { - "type": "int" - } - } - }, - "downloadedAlbumSelectedCount": "{count} selecionado(s)", - "downloadAskQualitySubtitle": "Mostrar seletor de qualidade para cada download", - "filenameShowAdvancedTags": "Exibir etiquetas avançadas", - "@filenameShowAdvancedTags": { - "description": "Toggle label for showing advanced filename tags" - }, - "@editMetadataFieldComment": { - "description": "Label for comment field in the edit metadata sheet" - }, - "downloadFallbackExtensions": "Fallback Extensions", - "downloadAlbumArtistMetadataFull": "Album Artist metadata: Full", - "cacheLibraryCover": "Library cover cache", - "actionShuffle": "Shuffle", - "backupCreated": "Backup created", - "downloadLossyAacSubtitle": "Best mobile compatibility, M4A container", - "actionCreate": "Create", - "snackbarAddedToQueueGeneric": "Added to queue", - "downloadedAlbumDownloadedCount": "{count} baixado(s)", - "snackbarLoadingCueSheet": "Loading CUE sheet...", - "@trackCoverClearSelected": { - "description": "Tooltip for clearing the newly selected cover art" - }, - "aboutOriginalCreator": "Criador do SpotiFLAC original", - "a11yTrackByArtist": "{trackName} by {artistName}", - "audioAnalysisDynamicRange": "Dynamic Range", - "homeChangeSearchProviderTooltip": "Change search provider", - "loadingSharedLink": "Carregando link compartilhado...", - "lyricsModeEmbedSubtitle": "Letra armazenada nos metadados da FLAC", - "setupNotificationBackgroundDescription": "Seja notificado sobre o progresso e conclusão do download. Isso ajuda você a acompanhar os downloads quando o app estiver em segundo plano.", - "snackbarViewQueue": "Ver Fila", - "@audioAnalysisDuration": { - "description": "Duration metric label" - }, - "downloadSeparateSinglesDisabled": "Singles and albums saved in the same folder", - "backupRestored": "Backup restored successfully", - "trackConvertConfirmMessageLosslessCapped": "Convert from {sourceFormat} to {targetFormat} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original file will be deleted after conversion.", - "@trackConvertConfirmMessageLosslessCapped": { - "description": "Confirmation dialog message for capped lossless conversion of a single file", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "quality": { - "type": "String" - } - } - }, - "discographySelectAlbumsSubtitle": "Escolher álbuns ou singles específicos", - "@discographySelectAlbumsSubtitle": { - "description": "Subtitle for select albums option" - }, - "backupImportSectionDescription": "Pick a backup file to restore your data. This replaces the current settings, history and library on this device.", - "errorUrlFetchFailed": "Falha ao carregar o conteúdo deste link. Por favor, tente novamente.", - "lyricsProviderLyricsPlusDesc": "Word-by-word karaoke lyrics (Apple/Musixmatch/Spotify/QQ, via proxy)", - "dialogSave": "Salvar", - "trackReEnrichSearching": "Searching metadata online...", - "regionCountryUS": "United States", - "audioAnalysisDescription": "Verify lossless quality with spectrum analysis", - "downloadFilenameFormat": "Formato do Nome do Arquivo", - "cueSplitTitle": "Split CUE Sheet", - "settingsAppSubtitle": "Updates, data, extension repo, debug", - "@settingsAppSubtitle": { - "description": "Subtitle for app settings" - }, - "@setupPermissionRequiredMessage": { - "description": "Generic permission required message", - "placeholders": { - "permissionType": { - "type": "String" - } - } - }, - "errorMissingExtensionSource": "Não é possível carregar {item}: faltando a fonte da extensão", - "albumFolderAlbumOnlySubtitle": "Albums/Nome do Álbum/", - "logIssueTrackNotFoundLabel": "TRACK NOT FOUND", - "extensionVerificationHelpTitleManual": "Open verification manually", - "dialogDiscard": "Descartar", - "storageModeSaf": "", - "errorRateLimited": "Tráfico Limitado (Rate Limited)", - "downloadSelectQuality": "Selecionar Qualidade", - "dialogDownloadPlaylistsMessage": "Download {trackCount} {trackCount, plural, =1{track} other{tracks}} from {playlistCount} {playlistCount, plural, =1{playlist} other{playlists}}?", - "collectionFoldersTitle": "My folders", - "progressFetchingMetadata": "Buscando metadados... {current}/{total}", - "settingsDownloadNetworkAny": "WiFi + Mobile Data", - "audioAnalysisDuration": "Duration", - "audioAnalysisAnalyzing": "Analyzing audio...", - "extensionVerificationHelpMessageWaiting": "If the browser did not open, or verification finished but did not return to SpotiFLAC Mobile, open this link again or copy it manually.", - "editMetadataFieldDiscNum": "Disc #", - "@editMetadataFieldDiscNum": { - "description": "Chip label for disc number field in auto-fill selector" - }, - "@noTracksFoundForAlbum": { - "description": "Empty state message when an album has no tracks" - }, - "previewPlay": "Reproduzir prévia", - "setupPermissionRequiredMessage": "A permissão {permissionType} é necessária para a melhor experiência. Você pode alterar isso mais tarde em Configurações.", - "aboutVersion": "Versão", - "qualityHiResFlacSubtitle": "24-bit / até 96kHz", - "audioAnalysisSamples": "Samples", - "libraryFilterQualityHiRes": "Hi-Res (24bit)", - "sectionMetadataProviders": "Providers", - "@sectionMetadataProviders": { - "description": "Settings section header for metadata providers" - }, - "trackCopyright": "Direitos Autorais", - "libraryForceFullScanSubtitle": "Rescan all files, ignoring cache", - "trackCopiedToClipboard": "Copiado para a área de transferência", - "optionsEmbedMetadata": "Embed Metadata", - "collectionAddedTracksToPlaylistWithExisting": "Added {count} {count, plural, =1{track} other{tracks}} to {playlistName} ({alreadyCount} already in playlist)", - "@collectionAddedTracksToPlaylistWithExisting": { - "description": "Snackbar after adding multiple tracks to a playlist when some were already present", - "placeholders": { - "count": { - "type": "int" - }, - "playlistName": { - "type": "String" - }, - "alreadyCount": { - "type": "int" - } - } - }, - "storeCategoryIntegration": "Integration", - "storeClearFilters": "Limpar filtros", - "navSettings": "Configurações", - "@homeRecent": { - "description": "Section header for recent searches" - }, - "sectionApp": "Aplicativo", - "@sectionLanguage": { - "description": "Settings section header for language" - }, - "downloadFilterContributingDisabled": "Full Album Artist string used", - "albumFolderArtistAlbumSinglesSubtitle": "Artista/Álbum/ e Artista/Singles/", - "collectionDeletePlaylistsMessage": "Delete {count} {count, plural, =1{playlist} other{playlists}}?", - "lyricsProvidersSaved": "Lyrics provider priority saved", - "@trackReplayGainFailed": { - "description": "Snackbar message when ReplayGain scan/write fails" - }, - "trackTrackName": "Nome da faixa", - "homeRecent": "Recentes", - "recentEmpty": "No recent items yet", - "cacheClearAll": "Clear all cache", - "trackReEnrichFieldReleaseInfo": "Date & ISRC", - "regionCountryMX": "Mexico", - "a11yOpenAlbumByArtistTrackCount": "Open album {albumName} by {artistName}, {trackCount} tracks", - "editMetadataFieldAlbum": "Album", - "settingsAbout": "Sobre", - "libraryFilterTitle": "Filters", - "cleanupOrphanedDownloadsResult": "Removed {count} orphaned entries from history", - "extensionHooksAvailable": "{count} gancho(s) disponíveis", - "backupContentsSettings": "App settings", - "trackLyricsEmbedded": "Letras incorporadas com sucesso", - "optionsUpdateChannelPreview": "Obter versões de prévia", - "collectionAddedToFavoriteArtists": "\"{artistName}\" added to Favorite Artists", - "libraryForceFullScan": "Force Full Scan", - "snackbarProviderPrioritySaved": "Prioridade de provedor salva", - "collectionFavoriteArtistsEmptySubtitle": "Tap the heart on an artist page to keep them here", - "libraryBuiltInPlayerInfo": "The built-in player is a preview tool for checking local tracks quickly. Use an external music player for actual listening.", - "extensionServiceStatus": "Service Status", - "dateWeeksAgo": "{count} semanas atrás", - "historyFilterSingles": "Singles", - "tutorialSettingsTip2": "Set quality, concurrency, filenames, and conversion preferences", - "trackLyricsSaved": "Lyrics saved to {fileName}", - "cacheClearAllConfirmTitle": "Clear all cache?", - "noTracksFoundForAlbum": "No tracks found for this album", - "sectionLanguage": "Idioma", - "@logIssueTrackNotFoundDescription": { - "description": "Diagnostic badge description when a track is unavailable" - }, - "setupSelectFolder": "Seleccionar Pasta", - "dateYesterday": "Ontem", - "collectionAddToPlaylist": "Add to playlist", - "snackbarUnsupportedAudioFormat": "Unsupported audio format", - "libraryScanCancelled": "Scan cancelled", - "appearanceLanguage": "Idioma do aplicativo", - "extensionsTitle": "Extensões", - "dialogImportPlaylistMessage": "Found {count} tracks in the playlist file. Add them to download queue?", - "permissionNotification": "Notification", - "notifUpdateReady": "Update Ready", - "lyricsModeDescription": "Escolha como as letras são salvas com os seus downloads", - "downloadFrom": "Baixar De", - "collectionWishlistEmptySubtitle": "Tap + on tracks to save what you want to download later", - "cueSplitSplitting": "Splitting CUE sheet... ({current}/{total})", - "trackOptionAddToWishlist": "Add to Wishlist", - "settingsBackup": "Backup & Restore", - "aboutPaxsenixSubtitle": "Lyrics proxy for Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou, and Genius", - "notifDownloadCompleteCount": "Download Complete ({completed}/{total})", - "extensionsNoDownloadProvider": "Nenhuma extensão com provedor de download", - "libraryFilterSortGenreAsc": "Genre (A-Z)", - "trackReplayGainFailed": "Falha ao adicionar etiquetas ReplayGain", - "collectionPlaylistRemoveCover": "Remove cover image", - "storeEmptyNoResults": "Nenhuma extensão encontrada", - "logIssueTrackNotFoundDescription": "Some tracks could not be found on download services", - "editMetadataFieldComment": "Comment", - "settingsMetadata": "Metadata", - "settingsCache": "Storage & Cache", - "providerPriorityFallbackExtensionsHint": "Apenas extensões ativadas com capacidade de provedor de download são listadas aqui.", - "libraryFilterAll": "All", - "notifDownloadingUpdate": "Downloading SpotiFLAC Mobile v{version}", - "extensionsProviderPrioritySection": "Prioridade de Provedor", - "storeChangeRepoTooltip": "Mudar repositório", - "snackbarFailedToInstall": "Falha ao instalar a extensão", - "libraryScanSubtitle": "Scan for audio files", - "snackbarExtensionInstalled": "{extensionName} instalada.", - "setupOpenSettings": "Abrir Configurações", - "extensionsInstalledSection": "Extensões Instaladas", - "aboutLinks": "Links", - "trackCoverClearSelected": "Clear selected cover", - "libraryAutoScanWeekly": "Weekly", - "downloadMusixmatchLanguageAuto": "Auto (original language)", - "optionsDefaultSearchTab": "Aba de pesquisa padrão", - "downloadPrimaryArtistOnlyOn": "Primary only: On", - "folderOrganizationDescription": "Organizar arquivos baixados em pastas", - "@folderOrganizationDescription": { - "description": "Folder organization sheet description" - }, - "lyricsModeEmbed": "Incorporar no arquivo", - "trackReEnrichFfmpegFailed": "FFmpeg metadata embed failed", - "@extensionsSearchProviderDescription": { - "description": "Search provider setting description" - }, - "libraryFilterQualityLossy": "Lossy", - "actionPause": "Pausar", - "csvImportTracks": "{count} faixas do CSV", - "actionGo": "Go", - "sectionDebug": "Depuração", - "editMetadataFieldDate": "Date", - "timeHoursAgo": "{count, plural, =1{1 hour ago} other{{count} hours ago}}", - "sectionPerformance": "Desempenho", - "extensionsDownloadPrioritySubtitle": "Definir ordem do serviço de download", - "cacheAppDirectoryDesc": "HTTP responses, WebView data, and other temporary app data.", - "sectionData": "Dados", - "notifFinalizingTrack": "Finalizing {trackName}", - "snackbarFileNotFound": "Arquivo não encontrado", - "extensionQualityOptions": "Opções de Qualidade", - "extensionVerificationBrowserSubtitleExternal": "Open challenges in the default browser first", - "backupInvalidFile": "This file is not a valid SpotiFLAC backup", - "storeRepoDialogTitle": "Repositório de extensões", - "extensionsSearchProviderDescription": "Escolha qual serviço utilizar para pesquisar faixas", - "albumFolderAlbumOnly": "Somente Álbum", - "nowPlayingOpenInExternalPlayer": "Open in external player", - "cueSplitButton": "Split into Tracks", - "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" - } - } + "appearanceAmoledDarkSubtitle": "Fundo preto puro", + "@appearanceAmoledDarkSubtitle": { + "description": "Subtitle for AMOLED dark" }, "appearanceHeroAnimations": "Hero animations", "@appearanceHeroAnimations": { @@ -5891,6 +2213,46 @@ "@appearanceHeroAnimationsSubtitle": { "description": "Subtitle for the Hero animations toggle" }, + "appearanceForceBlur": "Always use blur effects", + "@appearanceForceBlur": { + "description": "Toggle that forces backdrop blur on even when the device profile disabled it" + }, + "appearanceForceBlurSubtitle": "Enable the navigation bar blur even on devices where it is off by default. May cost performance.", + "@appearanceForceBlurSubtitle": { + "description": "Subtitle for the force-blur toggle" + }, + "queueClearAll": "Limpar Tudo", + "@queueClearAll": { + "description": "Button - clear all queue items" + }, + "queueClearAllMessage": "Você tem certeza que deseja limpar todos os downloads?", + "@queueClearAllMessage": { + "description": "Clear queue confirmation" + }, + "settingsAutoExportFailed": "Auto-export failed downloads", + "@settingsAutoExportFailed": { + "description": "Setting toggle for auto-export" + }, + "settingsAutoExportFailedSubtitle": "Save failed downloads to TXT file automatically", + "@settingsAutoExportFailedSubtitle": { + "description": "Subtitle for auto-export setting" + }, + "settingsDownloadNetwork": "Download Network", + "@settingsDownloadNetwork": { + "description": "Setting for network type preference" + }, + "settingsDownloadNetworkAny": "WiFi + Mobile Data", + "@settingsDownloadNetworkAny": { + "description": "Network option - use any connection" + }, + "settingsDownloadNetworkWifiOnly": "WiFi Only", + "@settingsDownloadNetworkWifiOnly": { + "description": "Network option - only use WiFi" + }, + "settingsDownloadNetworkSubtitle": "Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.", + "@settingsDownloadNetworkSubtitle": { + "description": "Subtitle explaining network preference" + }, "settingsConcurrentDownloads": "Concurrent downloads", "@settingsConcurrentDownloads": { "description": "Setting title - how many tracks download at the same time" @@ -5912,6 +2274,854 @@ } } }, + "albumFolderArtistAlbum": "Artista / Álbum", + "@albumFolderArtistAlbum": { + "description": "Album folder option" + }, + "albumFolderArtistAlbumSubtitle": "Álbuns/Nome do Artista/Nome do Álbum/", + "@albumFolderArtistAlbumSubtitle": { + "description": "Folder structure example" + }, + "albumFolderArtistYearAlbum": "Artista / [Ano] Álbum", + "@albumFolderArtistYearAlbum": { + "description": "Album folder option with year" + }, + "albumFolderArtistYearAlbumSubtitle": "Álbuns/Nome do Artista/[2005] Nome do Álbum/", + "@albumFolderArtistYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "albumFolderAlbumOnly": "Somente Álbum", + "@albumFolderAlbumOnly": { + "description": "Album folder option" + }, + "albumFolderAlbumOnlySubtitle": "Albums/Nome do Álbum/", + "@albumFolderAlbumOnlySubtitle": { + "description": "Folder structure example" + }, + "albumFolderYearAlbum": "[Ano] Álbum", + "@albumFolderYearAlbum": { + "description": "Album folder option with year" + }, + "albumFolderYearAlbumSubtitle": "Álbuns/[2005] Nome do Álbum/", + "@albumFolderYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "albumFolderArtistAlbumSingles": "Artista / Álbum + Singles", + "@albumFolderArtistAlbumSingles": { + "description": "Album folder option with singles inside artist" + }, + "albumFolderArtistAlbumSinglesSubtitle": "Artista/Álbum/ e Artista/Singles/", + "@albumFolderArtistAlbumSinglesSubtitle": { + "description": "Folder structure example" + }, + "albumFolderArtistAlbumFlat": "Artist / Album (Singles flat)", + "@albumFolderArtistAlbumFlat": { + "description": "Album folder option with singles directly in artist folder" + }, + "albumFolderArtistAlbumFlatSubtitle": "Artist/Album/ and Artist/song.flac", + "@albumFolderArtistAlbumFlatSubtitle": { + "description": "Folder structure example for flat singles" + }, + "downloadedAlbumDeleteSelected": "Apagar Selecionados", + "@downloadedAlbumDeleteSelected": { + "description": "Button - delete selected tracks" + }, + "downloadedAlbumDeleteMessage": "Excluir {count} {count, plural, =1{faixa} other{faixas}} deste álbum?\n\nIsso também excluirá os arquivos do armazenamento.", + "@downloadedAlbumDeleteMessage": { + "description": "Delete confirmation with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumSelectedCount": "{count} selecionado(s)", + "@downloadedAlbumSelectedCount": { + "description": "Selection count indicator", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumTapToSelect": "Toque nas faixas para selecionar", + "@downloadedAlbumTapToSelect": { + "description": "Selection hint" + }, + "downloadedAlbumDeleteCount": "Apagar {count} {count, plural, =1{faixa} other{faixas}}", + "@downloadedAlbumDeleteCount": { + "description": "Delete button text with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumSelectToDelete": "Selecione as faixas para apagar", + "@downloadedAlbumSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "downloadedAlbumDiscHeader": "Disco {discNumber}", + "@downloadedAlbumDiscHeader": { + "description": "Header for disc separator in multi-disc albums", + "placeholders": { + "discNumber": { + "type": "int", + "example": "1" + } + } + }, + "recentTypeArtist": "Artista", + "@recentTypeArtist": { + "description": "Recent access item type - artist" + }, + "recentTypeAlbum": "Álbum", + "@recentTypeAlbum": { + "description": "Recent access item type - album" + }, + "recentTypeSong": "Música", + "@recentTypeSong": { + "description": "Recent access item type - song/track" + }, + "recentTypePlaylist": "Playlist", + "@recentTypePlaylist": { + "description": "Recent access item type - playlist" + }, + "recentEmpty": "No recent items yet", + "@recentEmpty": { + "description": "Empty state text for recent access list" + }, + "recentClearAllMessage": "Clear all recent activity? Download history and music files will not be deleted.", + "@recentClearAllMessage": { + "description": "Confirmation message before clearing all recent activity" + }, + "recentShowAllDownloads": "Show All Downloads", + "@recentShowAllDownloads": { + "description": "Button label to unhide hidden downloads in recent access" + }, + "recentPlaylistInfo": "Playlist: {name}", + "@recentPlaylistInfo": { + "description": "Snackbar message when tapping playlist in recent access", + "placeholders": { + "name": { + "type": "String", + "description": "Playlist name" + } + } + }, + "discographyDownload": "Baixar Discografia", + "@discographyDownload": { + "description": "Button - download artist discography" + }, + "discographyDownloadAll": "Baixar Tudo", + "@discographyDownloadAll": { + "description": "Option - download entire discography" + }, + "discographyDownloadAllSubtitle": "{count} faixas de {albumCount} lançamentos", + "@discographyDownloadAllSubtitle": { + "description": "Subtitle showing total tracks and albums", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "discographyAlbumsOnly": "Somente Álbuns", + "@discographyAlbumsOnly": { + "description": "Option - download only albums" + }, + "discographyAlbumsOnlySubtitle": "{count} faixas de {albumCount} álbuns", + "@discographyAlbumsOnlySubtitle": { + "description": "Subtitle showing album tracks count", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "discographySinglesOnly": "Somente Singles e EPs", + "@discographySinglesOnly": { + "description": "Option - download only singles" + }, + "discographySinglesOnlySubtitle": "{count} faixas de {albumCount} singles", + "@discographySinglesOnlySubtitle": { + "description": "Subtitle showing singles tracks count", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "discographySelectAlbums": "Selecione Álbuns...", + "@discographySelectAlbums": { + "description": "Option - manually select albums to download" + }, + "discographySelectAlbumsSubtitle": "Escolher álbuns ou singles específicos", + "@discographySelectAlbumsSubtitle": { + "description": "Subtitle for select albums option" + }, + "discographyFetchingTracks": "Buscando faixas...", + "@discographyFetchingTracks": { + "description": "Progress - fetching album tracks" + }, + "discographyFetchingAlbum": "Buscando {current} de {total}...", + "@discographyFetchingAlbum": { + "description": "Progress - fetching specific album", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "discographySelectedCount": "{count} selecionado(s)", + "@discographySelectedCount": { + "description": "Selection count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "discographyDownloadSelected": "Baixar Selecionados", + "@discographyDownloadSelected": { + "description": "Button - download selected albums" + }, + "discographyAddedToQueue": "{count} faixas adicionadas à fila", + "@discographyAddedToQueue": { + "description": "Snackbar - tracks added from discography", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "discographySkippedDownloaded": "{added} adicionada(s), {skipped} já baixada(s)", + "@discographySkippedDownloaded": { + "description": "Snackbar - with skipped tracks count", + "placeholders": { + "added": { + "type": "int" + }, + "skipped": { + "type": "int" + } + } + }, + "discographyNoAlbums": "Nenhum álbum disponível", + "@discographyNoAlbums": { + "description": "Error - no albums found for artist" + }, + "discographyFailedToFetch": "Falha ao obter alguns álbuns", + "@discographyFailedToFetch": { + "description": "Error - some albums failed to load" + }, + "sectionStorageAccess": "Storage Access", + "@sectionStorageAccess": { + "description": "Section header for storage access settings" + }, + "allFilesAccess": "All Files Access", + "@allFilesAccess": { + "description": "Toggle for MANAGE_EXTERNAL_STORAGE permission" + }, + "allFilesAccessEnabledSubtitle": "Can write to any folder", + "@allFilesAccessEnabledSubtitle": { + "description": "Subtitle when all files access is enabled" + }, + "allFilesAccessDisabledSubtitle": "Limited to media folders only", + "@allFilesAccessDisabledSubtitle": { + "description": "Subtitle when all files access is disabled" + }, + "allFilesAccessDescription": "Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.", + "@allFilesAccessDescription": { + "description": "Description explaining when to enable all files access" + }, + "allFilesAccessDeniedMessage": "Permission was denied. Please enable 'All files access' manually in system settings.", + "@allFilesAccessDeniedMessage": { + "description": "Message when permission is permanently denied" + }, + "allFilesAccessDisabledMessage": "All Files Access disabled. The app will use limited storage access.", + "@allFilesAccessDisabledMessage": { + "description": "Snackbar message when user disables all files access" + }, + "settingsLocalLibrary": "Local Library", + "@settingsLocalLibrary": { + "description": "Settings menu item - local library" + }, + "settingsLocalLibrarySubtitle": "Scan music & detect duplicates", + "@settingsLocalLibrarySubtitle": { + "description": "Subtitle for local library settings" + }, + "settingsCache": "Storage & Cache", + "@settingsCache": { + "description": "Settings menu item - cache management" + }, + "settingsCacheSubtitle": "View size and clear cached data", + "@settingsCacheSubtitle": { + "description": "Subtitle for cache management menu" + }, + "libraryTitle": "Local Library", + "@libraryTitle": { + "description": "Library settings page title" + }, + "libraryScanSettings": "Scan Settings", + "@libraryScanSettings": { + "description": "Section header for scan settings" + }, + "libraryEnableLocalLibrary": "Enable Local Library", + "@libraryEnableLocalLibrary": { + "description": "Toggle to enable library scanning" + }, + "libraryEnableLocalLibrarySubtitle": "Scan and track your existing music", + "@libraryEnableLocalLibrarySubtitle": { + "description": "Subtitle for enable toggle" + }, + "libraryFolder": "Library Folder", + "@libraryFolder": { + "description": "Folder selection setting" + }, + "libraryFolderHint": "Tap to select folder", + "@libraryFolderHint": { + "description": "Placeholder when no folder selected" + }, + "libraryAddFolder": "Add library folder", + "@libraryAddFolder": { + "description": "Action to add another local library source" + }, + "libraryAddFolderSubtitle": "Internal storage, SD card, SSD, or another external drive", + "@libraryAddFolderSubtitle": { + "description": "Supported storage locations for local library sources" + }, + "librarySourceOnline": "Online", + "@librarySourceOnline": { + "description": "Library source is connected and accessible" + }, + "librarySourceOffline": "Offline. Reconnect the storage to restore these tracks", + "@librarySourceOffline": { + "description": "Library source is temporarily disconnected" + }, + "librarySourceDisabled": "Disabled", + "@librarySourceDisabled": { + "description": "Library source has been disabled by the user" + }, + "librarySourceScanCount": "{scanned} of {total} files scanned ({progress}%)", + "@librarySourceScanCount": { + "description": "Live progress for one library folder scan", + "placeholders": { + "scanned": { + "type": "int" + }, + "total": { + "type": "int" + }, + "progress": { + "type": "String" + } + } + }, + "libraryExternalStorage": "External storage", + "@libraryExternalStorage": { + "description": "Label for a removable or external library source" + }, + "libraryRemoveFolder": "Remove library folder", + "@libraryRemoveFolder": { + "description": "Action to remove one indexed library source" + }, + "libraryRemoveFolderMessage": "Remove this folder and its indexed tracks from SpotiFLAC Mobile? Audio files on the storage will not be deleted.", + "@libraryRemoveFolderMessage": { + "description": "Confirmation shown before removing a library source" + }, + "libraryShowDuplicateIndicator": "Show Duplicate Indicator", + "@libraryShowDuplicateIndicator": { + "description": "Toggle for duplicate indicator in search" + }, + "libraryShowDuplicateIndicatorSubtitle": "Show when searching for existing tracks", + "@libraryShowDuplicateIndicatorSubtitle": { + "description": "Subtitle for duplicate indicator toggle" + }, + "libraryAutoScan": "Auto Scan", + "@libraryAutoScan": { + "description": "Setting for automatic library scanning" + }, + "libraryAutoScanSubtitle": "Escanear automaticamente sua biblioteca em busca de novos arquivos", + "@libraryAutoScanSubtitle": { + "description": "Subtitle for auto scan setting" + }, + "libraryAutoScanOff": "Desligar", + "@libraryAutoScanOff": { + "description": "Auto scan disabled" + }, + "libraryAutoScanOnOpen": "Sempre que abrir o aplicativo", + "@libraryAutoScanOnOpen": { + "description": "Auto scan when app opens" + }, + "libraryAutoScanDaily": "Daily", + "@libraryAutoScanDaily": { + "description": "Auto scan once per day" + }, + "libraryAutoScanWeekly": "Weekly", + "@libraryAutoScanWeekly": { + "description": "Auto scan once per week" + }, + "libraryActions": "Actions", + "@libraryActions": { + "description": "Section header for library actions" + }, + "libraryScan": "Scan Library", + "@libraryScan": { + "description": "Button to start library scan" + }, + "libraryScanSubtitle": "Scan for audio files", + "@libraryScanSubtitle": { + "description": "Subtitle for scan button" + }, + "libraryScanSelectFolderFirst": "Select a folder first", + "@libraryScanSelectFolderFirst": { + "description": "Message when trying to scan without folder" + }, + "libraryCleanupMissingFiles": "Cleanup Missing Files", + "@libraryCleanupMissingFiles": { + "description": "Button to remove entries for missing files" + }, + "libraryCleanupMissingFilesSubtitle": "Remove entries for files that no longer exist", + "@libraryCleanupMissingFilesSubtitle": { + "description": "Subtitle for cleanup button" + }, + "libraryClear": "Clear Library", + "@libraryClear": { + "description": "Button to clear all library entries" + }, + "libraryClearSubtitle": "Remove all scanned tracks", + "@libraryClearSubtitle": { + "description": "Subtitle for clear button" + }, + "libraryClearConfirmTitle": "Clear Library", + "@libraryClearConfirmTitle": { + "description": "Dialog title for clear confirmation" + }, + "libraryClearConfirmMessage": "This will remove all scanned tracks from your library. Your actual music files will not be deleted.", + "@libraryClearConfirmMessage": { + "description": "Dialog message for clear confirmation" + }, + "libraryAbout": "About Local Library", + "@libraryAbout": { + "description": "Section header for about info" + }, + "libraryAboutDescription": "Scans your existing music collection to detect duplicates when downloading. Supports FLAC, M4A, MP3, Opus, and OGG formats. Metadata is read from file tags when available.", + "@libraryAboutDescription": { + "description": "Description of local library feature" + }, + "libraryTracksUnit": "{count, plural, =1{track} other{tracks}}", + "@libraryTracksUnit": { + "description": "Unit label for tracks count (without the number itself)", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryFilesUnit": "{count, plural, =1{file} other{files}}", + "@libraryFilesUnit": { + "description": "Unit label for files count during library scanning", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryLastScanned": "Last scanned: {time}", + "@libraryLastScanned": { + "description": "Last scan time display", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "libraryLastScannedNever": "Never", + "@libraryLastScannedNever": { + "description": "Shown when library has never been scanned" + }, + "libraryScanning": "Scanning...", + "@libraryScanning": { + "description": "Status during scan" + }, + "libraryScanFinalizing": "Finalizing library...", + "@libraryScanFinalizing": { + "description": "Status shown after file scanning finishes but library persistence is still running" + }, + "libraryScanProgress": "{progress}% of {total} files", + "@libraryScanProgress": { + "description": "Scan progress display", + "placeholders": { + "progress": { + "type": "String" + }, + "total": { + "type": "int" + } + } + }, + "libraryInLibrary": "In Library", + "@libraryInLibrary": { + "description": "Badge shown on tracks that exist in local library" + }, + "libraryRemovedMissingFiles": "Removed {count} missing files from library", + "@libraryRemovedMissingFiles": { + "description": "Snackbar after cleanup", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryCleared": "Library cleared", + "@libraryCleared": { + "description": "Snackbar after clearing library" + }, + "libraryStorageAccessRequired": "Storage Access Required", + "@libraryStorageAccessRequired": { + "description": "Dialog title for storage permission" + }, + "libraryStorageAccessMessage": "SpotiFLAC needs storage access to scan your music library. Please grant permission in settings.", + "@libraryStorageAccessMessage": { + "description": "Dialog message for storage permission" + }, + "libraryFolderNotExist": "Selected folder does not exist", + "@libraryFolderNotExist": { + "description": "Error when folder doesn't exist" + }, + "librarySourceDownloaded": "Downloaded", + "@librarySourceDownloaded": { + "description": "Badge for tracks downloaded via SpotiFLAC" + }, + "librarySourceLocal": "Local", + "@librarySourceLocal": { + "description": "Badge for tracks from local library scan" + }, + "libraryFilterAll": "All", + "@libraryFilterAll": { + "description": "Filter chip - show all library items" + }, + "libraryFilterDownloaded": "Downloaded", + "@libraryFilterDownloaded": { + "description": "Filter chip - show only downloaded items" + }, + "libraryFilterLocal": "Local", + "@libraryFilterLocal": { + "description": "Filter chip - show only local library items" + }, + "libraryFilterTitle": "Filters", + "@libraryFilterTitle": { + "description": "Filter bottom sheet title" + }, + "libraryFilterReset": "Reset", + "@libraryFilterReset": { + "description": "Reset all filters button" + }, + "libraryFilterApply": "Apply", + "@libraryFilterApply": { + "description": "Apply filters button" + }, + "libraryFilterSource": "Source", + "@libraryFilterSource": { + "description": "Filter section - source type" + }, + "libraryFilterQuality": "Quality", + "@libraryFilterQuality": { + "description": "Filter section - audio quality" + }, + "libraryFilterQualityHiRes": "Hi-Res (24bit)", + "@libraryFilterQualityHiRes": { + "description": "Filter option - high resolution audio" + }, + "libraryFilterQualityCD": "CD (16bit)", + "@libraryFilterQualityCD": { + "description": "Filter option - CD quality audio" + }, + "libraryFilterQualityLossy": "Lossy", + "@libraryFilterQualityLossy": { + "description": "Filter option - lossy compressed audio" + }, + "libraryFilterFormat": "Format", + "@libraryFilterFormat": { + "description": "Filter section - file format" + }, + "libraryFilterMetadata": "Metadata", + "@libraryFilterMetadata": { + "description": "Filter section - metadata completeness" + }, + "libraryFilterMetadataComplete": "Complete metadata", + "@libraryFilterMetadataComplete": { + "description": "Filter option - items with complete metadata" + }, + "libraryFilterMetadataMissingAny": "Missing any metadata", + "@libraryFilterMetadataMissingAny": { + "description": "Filter option - items missing any tracked metadata field" + }, + "libraryFilterMetadataMissingYear": "Missing year", + "@libraryFilterMetadataMissingYear": { + "description": "Filter option - items missing release year/date" + }, + "libraryFilterMetadataMissingGenre": "Missing genre", + "@libraryFilterMetadataMissingGenre": { + "description": "Filter option - items missing genre" + }, + "libraryFilterMetadataMissingAlbumArtist": "Missing album artist", + "@libraryFilterMetadataMissingAlbumArtist": { + "description": "Filter option - items missing album artist" + }, + "libraryFilterSort": "Sort", + "@libraryFilterSort": { + "description": "Filter section - sort order" + }, + "libraryFilterSortLatest": "Latest", + "@libraryFilterSortLatest": { + "description": "Sort option - newest first" + }, + "libraryFilterSortOldest": "Oldest", + "@libraryFilterSortOldest": { + "description": "Sort option - oldest first" + }, + "libraryFilterSortAlbumAsc": "Album (A-Z)", + "@libraryFilterSortAlbumAsc": { + "description": "Sort option - album ascending" + }, + "libraryFilterSortAlbumDesc": "Album (Z-A)", + "@libraryFilterSortAlbumDesc": { + "description": "Sort option - album descending" + }, + "libraryFilterSortGenreAsc": "Genre (A-Z)", + "@libraryFilterSortGenreAsc": { + "description": "Sort option - genre ascending" + }, + "libraryFilterSortGenreDesc": "Genre (Z-A)", + "@libraryFilterSortGenreDesc": { + "description": "Sort option - genre descending" + }, + "timeJustNow": "Just now", + "@timeJustNow": { + "description": "Relative time - less than a minute ago" + }, + "timeMinutesAgo": "{count, plural, =1{1 minute ago} other{{count} minutes ago}}", + "@timeMinutesAgo": { + "description": "Relative time - minutes ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "timeHoursAgo": "{count, plural, =1{1 hour ago} other{{count} hours ago}}", + "@timeHoursAgo": { + "description": "Relative time - hours ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "tutorialWelcomeTitle": "Welcome to SpotiFLAC Mobile!", + "@tutorialWelcomeTitle": { + "description": "Tutorial welcome page title" + }, + "tutorialWelcomeDesc": "Learn how to find music with extensions, choose the quality you want, and manage downloads in SpotiFLAC Mobile.", + "@tutorialWelcomeDesc": { + "description": "Tutorial welcome page description" + }, + "tutorialWelcomeTip1": "Search with an installed extension or paste a supported music link", + "@tutorialWelcomeTip1": { + "description": "Tutorial welcome tip 1" + }, + "tutorialWelcomeTip2": "Choose from the audio qualities offered by your download provider", + "@tutorialWelcomeTip2": { + "description": "Tutorial welcome tip 2" + }, + "tutorialWelcomeTip3": "Embed metadata, cover art, lyrics, and release information automatically", + "@tutorialWelcomeTip3": { + "description": "Tutorial welcome tip 3" + }, + "tutorialSearchTitle": "Finding Music", + "@tutorialSearchTitle": { + "description": "Tutorial search page title" + }, + "tutorialSearchDesc": "Search with your selected extension or paste a supported music link.", + "@tutorialSearchDesc": { + "description": "Tutorial search page description" + }, + "tutorialDownloadTitle": "Downloading Music", + "@tutorialDownloadTitle": { + "description": "Tutorial download page title" + }, + "tutorialDownloadDesc": "Pick an available quality, start the download, and follow its progress in the queue.", + "@tutorialDownloadDesc": { + "description": "Tutorial download page description" + }, + "tutorialLibraryTitle": "Your Library", + "@tutorialLibraryTitle": { + "description": "Tutorial library page title" + }, + "tutorialLibraryDesc": "Downloaded and locally scanned music is organized in your Library.", + "@tutorialLibraryDesc": { + "description": "Tutorial library page description" + }, + "tutorialLibraryTip1": "Manage active, pending, and completed downloads from the Library queue", + "@tutorialLibraryTip1": { + "description": "Tutorial library tip 1" + }, + "tutorialLibraryTip2": "Tap a track to play it with the built-in player", + "@tutorialLibraryTip2": { + "description": "Tutorial library tip 2" + }, + "tutorialLibraryTip3": "Browse tracks, albums, and playlists in list or grid views", + "@tutorialLibraryTip3": { + "description": "Tutorial library tip 3" + }, + "tutorialExtensionsTitle": "Extensions", + "@tutorialExtensionsTitle": { + "description": "Tutorial extensions page title" + }, + "tutorialExtensionsDesc": "Extensions add search, download, metadata, lyrics, and other integrations.", + "@tutorialExtensionsDesc": { + "description": "Tutorial extensions page description" + }, + "tutorialExtensionsTip1": "Browse the Repo tab to discover useful extensions", + "@tutorialExtensionsTip1": { + "description": "Tutorial extensions tip 1" + }, + "tutorialExtensionsTip2": "Choose providers for search, downloads, metadata, and fallbacks", + "@tutorialExtensionsTip2": { + "description": "Tutorial extensions tip 2" + }, + "tutorialExtensionsTip3": "Connect accounts when required and keep extensions up to date", + "@tutorialExtensionsTip3": { + "description": "Tutorial extensions tip 3" + }, + "tutorialSettingsTitle": "Customize Your Experience", + "@tutorialSettingsTitle": { + "description": "Tutorial settings page title" + }, + "tutorialSettingsDesc": "Fine-tune downloads, playback, Library behavior, appearance, and storage.", + "@tutorialSettingsDesc": { + "description": "Tutorial settings page description" + }, + "tutorialSettingsTip1": "Change download location and folder organization", + "@tutorialSettingsTip1": { + "description": "Tutorial settings tip 1" + }, + "tutorialSettingsTip2": "Set quality, concurrency, filenames, and conversion preferences", + "@tutorialSettingsTip2": { + "description": "Tutorial settings tip 2" + }, + "tutorialSettingsTip3": "Customize app theme and appearance", + "@tutorialSettingsTip3": { + "description": "Tutorial settings tip 3" + }, + "tutorialReadyMessage": "You're ready. Select your extensions, then search or paste a supported link.", + "@tutorialReadyMessage": { + "description": "Tutorial completion message" + }, + "libraryForceFullScan": "Force Full Scan", + "@libraryForceFullScan": { + "description": "Button to force a complete rescan of library" + }, + "libraryForceFullScanSubtitle": "Rescan all files, ignoring cache", + "@libraryForceFullScanSubtitle": { + "description": "Subtitle for force full scan button" + }, + "cleanupOrphanedDownloads": "Cleanup Orphaned Downloads", + "@cleanupOrphanedDownloads": { + "description": "Button to remove history entries for deleted files" + }, + "cleanupOrphanedDownloadsSubtitle": "Remove history entries for files that no longer exist", + "@cleanupOrphanedDownloadsSubtitle": { + "description": "Subtitle for orphaned cleanup button" + }, + "cleanupOrphanedDownloadsResult": "Removed {count} orphaned entries from history", + "@cleanupOrphanedDownloadsResult": { + "description": "Snackbar after orphan cleanup", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cleanupOrphanedDownloadsNone": "No orphaned entries found", + "@cleanupOrphanedDownloadsNone": { + "description": "Snackbar when no orphans found" + }, + "cacheTitle": "Storage & Cache", + "@cacheTitle": { + "description": "Cache management page title" + }, + "cacheSummaryTitle": "Cache overview", + "@cacheSummaryTitle": { + "description": "Heading for cache summary card" + }, + "cacheSummarySubtitle": "Clearing cache will not remove downloaded music files.", + "@cacheSummarySubtitle": { + "description": "Helper text for cache summary card" + }, + "cacheEstimatedTotal": "Estimated cache usage: {size}", + "@cacheEstimatedTotal": { + "description": "Total cache size shown in summary", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "cacheSectionStorage": "Cached Data", + "@cacheSectionStorage": { + "description": "Section header for cache entries" + }, + "cacheSectionMaintenance": "Maintenance", + "@cacheSectionMaintenance": { + "description": "Section header for cleanup actions" + }, + "cacheAppDirectory": "App cache directory", + "@cacheAppDirectory": { + "description": "Cache item title for app cache directory" + }, + "cacheAppDirectoryDesc": "HTTP responses, WebView data, and other temporary app data.", + "@cacheAppDirectoryDesc": { + "description": "Description of what app cache directory contains" + }, + "cacheTempDirectory": "Temporary directory", + "@cacheTempDirectory": { + "description": "Cache item title for temporary files directory" + }, + "cacheTempDirectoryDesc": "Temporary files from downloads and audio conversion.", + "@cacheTempDirectoryDesc": { + "description": "Description of what temporary directory contains" + }, + "cacheCoverImage": "Cache da imagem de capa", + "@cacheCoverImage": { + "description": "Cache item title for persistent cover images" + }, + "cacheCoverImageDesc": "Downloaded album and track cover art. Will re-download when viewed.", + "@cacheCoverImageDesc": { + "description": "Description of what cover image cache contains" + }, + "cacheLibraryCover": "Library cover cache", + "@cacheLibraryCover": { + "description": "Cache item title for local library cover art images" + }, + "cacheLibraryCoverDesc": "Cover art extracted from local music files. Will re-extract on next scan.", + "@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" @@ -5928,6 +3138,350 @@ "@cacheAudioAnalysisDesc": { "description": "Description of what audio analysis cache contains" }, + "cacheExploreFeed": "Explore feed cache", + "@cacheExploreFeed": { + "description": "Cache item title for explore home feed cache" + }, + "cacheExploreFeedDesc": "Explore tab content (new releases, trending). Will refresh on next visit.", + "@cacheExploreFeedDesc": { + "description": "Description of what explore feed cache contains" + }, + "cacheTrackLookup": "Track lookup cache", + "@cacheTrackLookup": { + "description": "Cache item title for track ID lookup cache" + }, + "cacheTrackLookupDesc": "Spotify/Deezer track ID lookups. Clearing may slow next few searches.", + "@cacheTrackLookupDesc": { + "description": "Description of what track lookup cache contains" + }, + "cacheCleanupUnusedDesc": "Remove orphaned download history and library entries for missing files.", + "@cacheCleanupUnusedDesc": { + "description": "Description of what cleanup unused data does" + }, + "cacheNoData": "No cached data", + "@cacheNoData": { + "description": "Label when cache category has no data" + }, + "cacheSizeWithFiles": "{size} in {count} files", + "@cacheSizeWithFiles": { + "description": "Cache size and file count", + "placeholders": { + "size": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "cacheSizeOnly": "{size}", + "@cacheSizeOnly": { + "description": "Cache size only", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "cacheEntries": "{count} entries", + "@cacheEntries": { + "description": "Track cache entry count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cacheClearSuccess": "Cleared: {target}", + "@cacheClearSuccess": { + "description": "Snackbar after clearing selected cache", + "placeholders": { + "target": { + "type": "String" + } + } + }, + "cacheClearConfirmTitle": "Clear cache?", + "@cacheClearConfirmTitle": { + "description": "Dialog title before clearing one cache category" + }, + "cacheClearConfirmMessage": "This will clear cached data for {target}. Downloaded music files will not be deleted.", + "@cacheClearConfirmMessage": { + "description": "Dialog message before clearing selected cache", + "placeholders": { + "target": { + "type": "String" + } + } + }, + "cacheClearAllConfirmTitle": "Clear all cache?", + "@cacheClearAllConfirmTitle": { + "description": "Dialog title before clearing all caches" + }, + "cacheClearAllConfirmMessage": "This will clear all cache categories on this page. Downloaded music files will not be deleted.", + "@cacheClearAllConfirmMessage": { + "description": "Dialog message before clearing all caches" + }, + "cacheClearAll": "Clear all cache", + "@cacheClearAll": { + "description": "Button label to clear all caches" + }, + "cacheCleanupUnused": "Cleanup unused data", + "@cacheCleanupUnused": { + "description": "Action title for cleaning unused entries" + }, + "cacheCleanupUnusedSubtitle": "Remove orphaned download history and missing library entries", + "@cacheCleanupUnusedSubtitle": { + "description": "Subtitle for cleanup unused data action" + }, + "cacheCleanupResult": "Cleanup completed: {downloadCount} orphaned downloads, {libraryCount} missing library entries", + "@cacheCleanupResult": { + "description": "Snackbar after unused data cleanup", + "placeholders": { + "downloadCount": { + "type": "int" + }, + "libraryCount": { + "type": "int" + } + } + }, + "cacheRefreshStats": "Refresh stats", + "@cacheRefreshStats": { + "description": "Button label to refresh cache statistics" + }, + "trackSaveCoverArt": "Save Cover Art", + "@trackSaveCoverArt": { + "description": "Menu action - save album cover art as file" + }, + "trackSaveLyrics": "Save Lyrics (.lrc)", + "@trackSaveLyrics": { + "description": "Menu action - save lyrics as .lrc file" + }, + "trackSaveLyricsProgress": "Saving lyrics...", + "@trackSaveLyricsProgress": { + "description": "Snackbar while saving lyrics to file" + }, + "trackReEnrich": "Re-enrich", + "@trackReEnrich": { + "description": "Menu action - re-embed metadata into audio file" + }, + "trackReEnrichOnlineSubtitle": "Search metadata online and embed into file", + "@trackReEnrichOnlineSubtitle": { + "description": "Subtitle for re-enrich metadata action for local items" + }, + "trackReEnrichBatchSubtitle": "Choose an online or manual update, then review every change before writing", + "@trackReEnrichBatchSubtitle": { + "description": "Subtitle for batch metadata update choices" + }, + "trackReEnrichFieldCover": "Cover Art", + "@trackReEnrichFieldCover": { + "description": "Checkbox label for cover art field in re-enrich" + }, + "trackReEnrichFieldLyrics": "Lyrics", + "@trackReEnrichFieldLyrics": { + "description": "Checkbox label for lyrics field in re-enrich" + }, + "trackReEnrichFieldBasicTags": "Album, Album Artist", + "@trackReEnrichFieldBasicTags": { + "description": "Checkbox label for basic tags in re-enrich (title/artist are never overwritten)" + }, + "trackReEnrichFieldTrackInfo": "Track & Disc Number", + "@trackReEnrichFieldTrackInfo": { + "description": "Checkbox label for track info in re-enrich" + }, + "trackReEnrichFieldReleaseInfo": "Date & ISRC", + "@trackReEnrichFieldReleaseInfo": { + "description": "Checkbox label for release info in re-enrich" + }, + "trackReEnrichFieldExtra": "Genre, Label, Copyright", + "@trackReEnrichFieldExtra": { + "description": "Checkbox label for extra metadata in re-enrich" + }, + "trackReEnrichSelectAll": "Select All", + "@trackReEnrichSelectAll": { + "description": "Select all fields checkbox in re-enrich" + }, + "trackReEnrichModeIsrc": "ISRC only", + "@trackReEnrichModeIsrc": { + "description": "Batch metadata mode that only writes ISRC" + }, + "trackReEnrichModeIsrcSubtitle": "Find and add the recording identifier without changing other tags", + "@trackReEnrichModeIsrcSubtitle": { + "description": "Explanation for the ISRC-only batch metadata mode" + }, + "trackReEnrichModeMissing": "Fill missing tags", + "@trackReEnrichModeMissing": { + "description": "Batch metadata mode that fills only empty tags" + }, + "trackReEnrichModeMissingSubtitle": "Keep existing values and fill only fields that are empty", + "@trackReEnrichModeMissingSubtitle": { + "description": "Explanation for the fill-missing batch metadata mode" + }, + "trackReEnrichModeReplace": "Update selected tags", + "@trackReEnrichModeReplace": { + "description": "Batch metadata mode that replaces selected tag groups" + }, + "trackReEnrichModeReplaceSubtitle": "Choose which existing values may be replaced by online metadata", + "@trackReEnrichModeReplaceSubtitle": { + "description": "Explanation for the selected-tag batch metadata mode" + }, + "trackReEnrichModeManual": "Set common values", + "@trackReEnrichModeManual": { + "description": "Batch metadata mode that applies shared values to every selected track" + }, + "trackReEnrichModeManualSubtitle": "Apply the same values to every selected track", + "@trackReEnrichModeManualSubtitle": { + "description": "Explanation for the manual shared-value batch metadata mode" + }, + "trackReEnrichManualFieldsTitle": "Values to apply", + "@trackReEnrichManualFieldsTitle": { + "description": "Heading above manual batch metadata inputs" + }, + "trackReEnrichManualHint": "Leave a field empty to keep its current value. Track titles, numbers, and ISRCs stay unchanged.", + "@trackReEnrichManualHint": { + "description": "Safety explanation for manual batch metadata inputs" + }, + "trackReEnrichFieldsTitle": "Tags to update", + "@trackReEnrichFieldsTitle": { + "description": "Heading above batch re-enrich field checkboxes" + }, + "trackReEnrichReview": "Review changes", + "@trackReEnrichReview": { + "description": "Button that searches metadata and opens the batch change review" + }, + "trackReEnrichReviewTitle": "Review metadata changes", + "@trackReEnrichReviewTitle": { + "description": "Title of the batch metadata review sheet" + }, + "trackReEnrichReviewSubtitle": "{changeCount} proposed changes across {trackCount} tracks", + "@trackReEnrichReviewSubtitle": { + "description": "Summary shown above proposed batch metadata changes", + "placeholders": { + "changeCount": { + "type": "int" + }, + "trackCount": { + "type": "int" + } + } + }, + "trackReEnrichNoChanges": "No metadata changes were found for the selected tracks.", + "@trackReEnrichNoChanges": { + "description": "Message when batch metadata preview has no proposed changes" + }, + "trackReEnrichApplyChanges": "Apply changes", + "@trackReEnrichApplyChanges": { + "description": "Confirmation button in the batch metadata review sheet" + }, + "trackReEnrichRefreshOnline": "Refresh from online", + "@trackReEnrichRefreshOnline": { + "description": "Proposed value when lyrics will be refreshed during re-enrich" + }, + "trackEditMetadata": "Edit Metadata", + "@trackEditMetadata": { + "description": "Menu action - edit embedded metadata" + }, + "trackCoverSaved": "Cover art saved to {fileName}", + "@trackCoverSaved": { + "description": "Snackbar after cover art saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "trackCoverNoSource": "No cover art source available", + "@trackCoverNoSource": { + "description": "Snackbar when no cover art URL or embedded cover" + }, + "trackLyricsSaved": "Lyrics saved to {fileName}", + "@trackLyricsSaved": { + "description": "Snackbar after lyrics saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "trackReEnrichProgress": "Re-enriching metadata...", + "@trackReEnrichProgress": { + "description": "Snackbar while re-enriching metadata" + }, + "trackReEnrichSearching": "Searching metadata online...", + "@trackReEnrichSearching": { + "description": "Snackbar while searching metadata from internet for local items" + }, + "trackReEnrichPreparing": "Preparing metadata changes...", + "@trackReEnrichPreparing": { + "description": "Progress message while preparing manual batch metadata changes" + }, + "trackReEnrichSuccess": "Metadata re-enriched successfully", + "trackReEnrichMetadataSaved": "Metadata saved", + "trackReEnrichLyricsUpdated": "Lyrics updated", + "trackReEnrichLyricsPreserved": "No new lyrics found; existing lyrics kept", + "trackReEnrichLyricsDisabled": "Lyrics not updated: lyric downloading is disabled in Settings", + "@trackReEnrichSuccess": { + "description": "Snackbar after successful re-enrichment" + }, + "trackReEnrichFfmpegFailed": "FFmpeg metadata embed failed", + "@trackReEnrichFfmpegFailed": { + "description": "Snackbar when FFmpeg embed fails for MP3/Opus" + }, + "queueFlacAction": "Queue 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": { + "description": "Confirmation dialog body before queueing FLAC redownloads for local tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueFlacNoReliableMatches": "No reliable online matches found for the selection", + "@queueFlacNoReliableMatches": { + "description": "Snackbar when no safe FLAC redownload matches were found" + }, + "queueFlacQueuedWithSkipped": "Added {addedCount} tracks to queue, skipped {skippedCount}", + "@queueFlacQueuedWithSkipped": { + "description": "Snackbar when some selected local tracks were queued for FLAC redownload and some were skipped", + "placeholders": { + "addedCount": { + "type": "int" + }, + "skippedCount": { + "type": "int" + } + } + }, + "trackSaveFailed": "Failed: {error}", + "@trackSaveFailed": { + "description": "Snackbar when save operation fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "trackConvertFormat": "Convert Format", + "@trackConvertFormat": { + "description": "Menu item - convert audio format" + }, + "trackConvertTitle": "Convert Audio", + "@trackConvertTitle": { + "description": "Title of convert bottom sheet" + }, + "trackConvertTargetFormat": "Target Format", + "@trackConvertTargetFormat": { + "description": "Label for format selection" + }, + "trackConvertBitrate": "Bitrate", + "@trackConvertBitrate": { + "description": "Label for bitrate selection" + }, "trackConvertKeepOriginal": "Keep original file", "@trackConvertKeepOriginal": { "description": "Toggle to preserve the source file during conversion" @@ -5936,6 +3490,37 @@ "@trackConvertKeepOriginalDescription": { "description": "Description for preserving the source file during conversion" }, + "trackConvertConfirmTitle": "Confirm Conversion", + "@trackConvertConfirmTitle": { + "description": "Confirmation dialog title" + }, + "trackConvertConfirmMessage": "Convert from {sourceFormat} to {targetFormat} at {bitrate}?\n\nThe original file will be deleted after conversion.", + "@trackConvertConfirmMessage": { + "description": "Confirmation dialog message", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "trackConvertConfirmMessageLossless": "Convert from {sourceFormat} to {targetFormat}? (Lossless — no quality loss)\n\nThe original file will be deleted after conversion.", + "@trackConvertConfirmMessageLossless": { + "description": "Confirmation dialog message for lossless-to-lossless conversion", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + } + } + }, "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", @@ -5948,6 +3533,382 @@ } } }, + "trackConvertLosslessHint": "Lossless conversion — no quality loss", + "@trackConvertLosslessHint": { + "description": "Hint shown when converting between lossless formats" + }, + "trackConvertConverting": "Converting audio...", + "@trackConvertConverting": { + "description": "Snackbar while converting" + }, + "trackConvertSuccess": "Converted to {format} successfully", + "@trackConvertSuccess": { + "description": "Snackbar after successful conversion", + "placeholders": { + "format": { + "type": "String" + } + } + }, + "trackConvertFailed": "Conversion failed", + "@trackConvertFailed": { + "description": "Snackbar when conversion fails" + }, + "cueSplitTitle": "Split CUE Sheet", + "@cueSplitTitle": { + "description": "Title for CUE split bottom sheet" + }, + "cueSplitAlbum": "Album: {album}", + "@cueSplitAlbum": { + "description": "Album name in CUE split sheet", + "placeholders": { + "album": { + "type": "String" + } + } + }, + "cueSplitArtist": "Artist: {artist}", + "@cueSplitArtist": { + "description": "Artist name in CUE split sheet", + "placeholders": { + "artist": { + "type": "String" + } + } + }, + "cueSplitTrackCount": "{count} tracks", + "@cueSplitTrackCount": { + "description": "Number of tracks in CUE sheet", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cueSplitConfirmTitle": "Split CUE Album", + "@cueSplitConfirmTitle": { + "description": "CUE split confirmation dialog title" + }, + "cueSplitConfirmMessage": "Split \"{album}\" into {count} individual FLAC files?\n\nFiles will be saved to the same directory.", + "@cueSplitConfirmMessage": { + "description": "CUE split confirmation dialog message", + "placeholders": { + "album": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "cueSplitSplitting": "Splitting CUE sheet... ({current}/{total})", + "@cueSplitSplitting": { + "description": "Snackbar while splitting CUE", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "cueSplitSuccess": "Split into {count} tracks successfully", + "@cueSplitSuccess": { + "description": "Snackbar after successful CUE split", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cueSplitFailed": "CUE split failed", + "@cueSplitFailed": { + "description": "Snackbar when CUE split fails" + }, + "cueSplitNoAudioFile": "Audio file not found for this CUE sheet", + "@cueSplitNoAudioFile": { + "description": "Error when CUE audio file is missing" + }, + "cueSplitButton": "Split into Tracks", + "@cueSplitButton": { + "description": "Button text to start CUE splitting" + }, + "actionCreate": "Create", + "@actionCreate": { + "description": "Generic action button - create" + }, + "collectionFoldersTitle": "My folders", + "@collectionFoldersTitle": { + "description": "Library section title for custom folders" + }, + "collectionWishlist": "Wishlist", + "@collectionWishlist": { + "description": "Custom folder for saved tracks to download later" + }, + "collectionLoved": "Loved", + "@collectionLoved": { + "description": "Custom folder for favorite tracks" + }, + "collectionFavoriteArtists": "Favorite Artists", + "@collectionFavoriteArtists": { + "description": "Custom folder for favorite artists" + }, + "collectionPlaylist": "Playlist", + "@collectionPlaylist": { + "description": "Single playlist label" + }, + "collectionAddToPlaylist": "Add to playlist", + "@collectionAddToPlaylist": { + "description": "Action to add a track to user playlist" + }, + "collectionCreatePlaylist": "Create playlist", + "@collectionCreatePlaylist": { + "description": "Action to create a new playlist" + }, + "collectionNoPlaylistsYet": "No playlists yet", + "@collectionNoPlaylistsYet": { + "description": "Empty state title when user has no playlists" + }, + "collectionPlaylistTracks": "{count, plural, =1{1 track} other{{count} tracks}}", + "@collectionPlaylistTracks": { + "description": "Track count label for custom playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionArtistCount": "{count, plural, =1{1 artist} other{{count} artists}}", + "@collectionArtistCount": { + "description": "Artist count label for favorite artists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionAddedToPlaylist": "Added to \"{playlistName}\"", + "@collectionAddedToPlaylist": { + "description": "Snackbar after adding track to playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "collectionAlreadyInPlaylist": "Already in \"{playlistName}\"", + "@collectionAlreadyInPlaylist": { + "description": "Snackbar when track already exists in playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "collectionPlaylistNameHint": "Playlist name", + "@collectionPlaylistNameHint": { + "description": "Hint text for playlist name input" + }, + "collectionPlaylistNameRequired": "Playlist name is required", + "@collectionPlaylistNameRequired": { + "description": "Validation error for empty playlist name" + }, + "collectionRenamePlaylist": "Rename playlist", + "@collectionRenamePlaylist": { + "description": "Action to rename playlist" + }, + "collectionDeletePlaylist": "Delete playlist", + "@collectionDeletePlaylist": { + "description": "Action to delete playlist" + }, + "collectionPlaylistRenamed": "Playlist renamed", + "@collectionPlaylistRenamed": { + "description": "Snackbar after renaming playlist" + }, + "collectionWishlistEmptyTitle": "Wishlist is empty", + "@collectionWishlistEmptyTitle": { + "description": "Wishlist empty state title" + }, + "collectionWishlistEmptySubtitle": "Tap + on tracks to save what you want to download later", + "@collectionWishlistEmptySubtitle": { + "description": "Wishlist empty state subtitle" + }, + "collectionLovedEmptyTitle": "Loved folder is empty", + "@collectionLovedEmptyTitle": { + "description": "Loved empty state title" + }, + "collectionLovedEmptySubtitle": "Tap love on tracks to keep your favorites", + "@collectionLovedEmptySubtitle": { + "description": "Loved empty state subtitle" + }, + "collectionFavoriteArtistsEmptyTitle": "No favorite artists yet", + "@collectionFavoriteArtistsEmptyTitle": { + "description": "Favorite artists empty state title" + }, + "collectionFavoriteArtistsEmptySubtitle": "Tap the heart on an artist page to keep them here", + "@collectionFavoriteArtistsEmptySubtitle": { + "description": "Favorite artists empty state subtitle" + }, + "collectionPlaylistEmptyTitle": "A lista de reprodução está vazia", + "@collectionPlaylistEmptyTitle": { + "description": "Playlist empty state title" + }, + "collectionPlaylistEmptySubtitle": "", + "@collectionPlaylistEmptySubtitle": { + "description": "Playlist empty state subtitle" + }, + "collectionRemoveFromPlaylist": "Remove from playlist", + "@collectionRemoveFromPlaylist": { + "description": "Tooltip for removing track from playlist" + }, + "collectionRemoveFromFolder": "Remove from folder", + "@collectionRemoveFromFolder": { + "description": "Tooltip for removing track from wishlist/loved folder" + }, + "collectionAddedToLoved": "\"{trackName}\" added to Loved", + "@collectionAddedToLoved": { + "description": "Snackbar after adding track to loved folder", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "collectionRemovedFromLoved": "\"{trackName}\" removed from Loved", + "@collectionRemovedFromLoved": { + "description": "Snackbar after removing track from loved folder", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "collectionAddedToWishlist": "\"{trackName}\" added to Wishlist", + "@collectionAddedToWishlist": { + "description": "Snackbar after adding track to wishlist", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "collectionRemovedFromWishlist": "\"{trackName}\" removed from Wishlist", + "@collectionRemovedFromWishlist": { + "description": "Snackbar after removing track from wishlist", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "collectionAddedToFavoriteArtists": "\"{artistName}\" added to Favorite Artists", + "@collectionAddedToFavoriteArtists": { + "description": "Snackbar after adding artist to favorite artists", + "placeholders": { + "artistName": { + "type": "String" + } + } + }, + "collectionRemovedFromFavoriteArtists": "\"{artistName}\" removed from Favorite Artists", + "@collectionRemovedFromFavoriteArtists": { + "description": "Snackbar after removing artist from favorite artists", + "placeholders": { + "artistName": { + "type": "String" + } + } + }, + "trackOptionAddToLoved": "Add to Loved", + "@trackOptionAddToLoved": { + "description": "Bottom sheet action label - add track to loved folder" + }, + "trackOptionRemoveFromLoved": "Remove from Loved", + "@trackOptionRemoveFromLoved": { + "description": "Bottom sheet action label - remove track from loved folder" + }, + "trackOptionAddToWishlist": "Add to Wishlist", + "@trackOptionAddToWishlist": { + "description": "Bottom sheet action label - add track to wishlist" + }, + "trackOptionRemoveFromWishlist": "Remove from Wishlist", + "@trackOptionRemoveFromWishlist": { + "description": "Bottom sheet action label - remove track from wishlist" + }, + "artistOptionAddToFavorites": "Add to Favorite Artists", + "@artistOptionAddToFavorites": { + "description": "Action label - add artist to favorite artists" + }, + "artistOptionRemoveFromFavorites": "Remove from Favorite Artists", + "@artistOptionRemoveFromFavorites": { + "description": "Action label - remove artist from favorite artists" + }, + "collectionPlaylistChangeCover": "Change cover image", + "@collectionPlaylistChangeCover": { + "description": "Bottom sheet action to pick a custom cover image for a playlist" + }, + "collectionPlaylistRemoveCover": "Remove cover image", + "@collectionPlaylistRemoveCover": { + "description": "Bottom sheet action to remove custom cover image from a playlist" + }, + "selectionShareCount": "Share {count} {count, plural, =1{track} other{tracks}}", + "@selectionShareCount": { + "description": "Share button text with count in selection mode", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "selectionShareNoFiles": "No shareable files found", + "@selectionShareNoFiles": { + "description": "Snackbar when no selected files exist on disk" + }, + "selectionConvertCount": "Convert {count} {count, plural, =1{track} other{tracks}}", + "@selectionConvertCount": { + "description": "Convert button text with count in selection mode", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "selectionConvertNoConvertible": "No convertible tracks selected", + "@selectionConvertNoConvertible": { + "description": "Snackbar when no selected tracks support conversion" + }, + "selectionBatchConvertConfirmTitle": "Batch Convert", + "@selectionBatchConvertConfirmTitle": { + "description": "Confirmation dialog title for batch conversion" + }, + "selectionBatchConvertConfirmMessage": "Convert {count} {count, plural, =1{track} other{tracks}} to {format} at {bitrate}?\n\nOriginal files will be deleted after conversion.", + "@selectionBatchConvertConfirmMessage": { + "description": "Confirmation dialog message for batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "selectionBatchConvertConfirmMessageLossless": "Convert {count} {count, plural, =1{track} other{tracks}} to {format}? (Lossless — no quality loss)\n\nOriginal files will be deleted after conversion.", + "@selectionBatchConvertConfirmMessageLossless": { + "description": "Confirmation dialog message for lossless batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + } + } + }, "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", @@ -5960,6 +3921,399 @@ } } }, + "selectionBatchConvertSuccess": "Converted {success} of {total} tracks to {format}", + "@selectionBatchConvertSuccess": { + "description": "Snackbar after batch conversion completes", + "placeholders": { + "success": { + "type": "int" + }, + "total": { + "type": "int" + }, + "format": { + "type": "String" + } + } + }, + "downloadedAlbumDownloadedCount": "{count} baixado(s)", + "@downloadedAlbumDownloadedCount": { + "description": "Downloaded tracks count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Folder named after Album Artist tag", + "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { + "description": "Subtitle when album artist is used for folder names" + }, + "downloadUseAlbumArtistForFoldersTrackSubtitle": "Folder named after Track Artist tag", + "@downloadUseAlbumArtistForFoldersTrackSubtitle": { + "description": "Subtitle when track artist is used for folder names" + }, + "lyricsProvidersTitle": "Lyrics Provider Priority", + "@lyricsProvidersTitle": { + "description": "Settings item title for lyrics provider order" + }, + "lyricsProvidersDescription": "Enable, disable and reorder lyrics sources. Providers are tried top-to-bottom until lyrics are found.", + "@lyricsProvidersDescription": { + "description": "Description on the lyrics provider priority page" + }, + "lyricsProvidersInfoText": "Extension lyrics providers run before built-in lyrics providers. At least one provider must remain enabled.", + "@lyricsProvidersInfoText": { + "description": "Info tip on lyrics provider priority page" + }, + "lyricsProvidersEnabledSection": "Enabled ({count})", + "@lyricsProvidersEnabledSection": { + "description": "Section header for enabled providers", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "lyricsProvidersDisabledSection": "Disabled ({count})", + "@lyricsProvidersDisabledSection": { + "description": "Section header for disabled providers", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "lyricsProvidersAtLeastOne": "At least one provider must remain enabled", + "@lyricsProvidersAtLeastOne": { + "description": "Snackbar when user tries to disable the last enabled provider" + }, + "lyricsProvidersSaved": "Lyrics provider priority saved", + "@lyricsProvidersSaved": { + "description": "Snackbar after saving lyrics provider priority" + }, + "lyricsProvidersDiscardContent": "You have unsaved changes that will be lost.", + "@lyricsProvidersDiscardContent": { + "description": "Body text of the discard-changes dialog on lyrics provider page" + }, + "lyricsProviderLrclibDesc": "Open-source synced lyrics database", + "@lyricsProviderLrclibDesc": { + "description": "Description for LRCLIB provider" + }, + "lyricsProviderNeteaseDesc": "NetEase Cloud Music (good for Asian songs)", + "@lyricsProviderNeteaseDesc": { + "description": "Description for Netease provider" + }, + "lyricsProviderMusixmatchDesc": "Largest lyrics database (multi-language)", + "@lyricsProviderMusixmatchDesc": { + "description": "Description for Musixmatch provider" + }, + "lyricsProviderAppleMusicDesc": "Word-by-word synced lyrics (via proxy)", + "@lyricsProviderAppleMusicDesc": { + "description": "Description for Apple Music provider" + }, + "lyricsProviderQqMusicDesc": "QQ Music (good for Chinese songs, direct API)", + "@lyricsProviderQqMusicDesc": { + "description": "Description for QQ Music provider" + }, + "lyricsProviderLyricsPlusDesc": "Word-by-word karaoke lyrics (Apple/Musixmatch/Spotify/QQ, via proxy)", + "@lyricsProviderLyricsPlusDesc": { + "description": "Description for LyricsPlus provider" + }, + "lyricsProviderExtensionDesc": "Extension provider", + "@lyricsProviderExtensionDesc": { + "description": "Generic description for extension-based lyrics providers" + }, + "safMigrationTitle": "Storage Update Required", + "@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": { + "description": "First paragraph of SAF migration dialog" + }, + "safMigrationMessage2": "Please select your download folder again to switch to the new storage system.", + "@safMigrationMessage2": { + "description": "Second paragraph of SAF migration dialog" + }, + "safMigrationSuccess": "Download folder updated to SAF mode", + "@safMigrationSuccess": { + "description": "Snackbar after successfully migrating to SAF" + }, + "settingsDonate": "Support Development", + "@settingsDonate": { + "description": "Settings menu item - donate page" + }, + "settingsDonateSubtitle": "Buy the developer a coffee", + "@settingsDonateSubtitle": { + "description": "Subtitle for donate menu item" + }, + "settingsBackup": "Backup & Restore", + "@settingsBackup": { + "description": "Settings menu item - backup and restore page" + }, + "settingsBackupSubtitle": "Move your library, history and settings to a new device", + "@settingsBackupSubtitle": { + "description": "Subtitle for backup and restore settings item" + }, + "backupTitle": "Backup & Restore", + "@backupTitle": { + "description": "App bar title for the backup and restore page" + }, + "backupExportSectionTitle": "Create backup", + "@backupExportSectionTitle": { + "description": "Section title for the export/backup card" + }, + "backupExportSectionDescription": "Save your settings, download history, liked tracks, wishlist, favorite artists and playlists into a single file you can keep or move to another phone.", + "@backupExportSectionDescription": { + "description": "Description of what a backup contains" + }, + "backupExportButton": "Create backup file", + "@backupExportButton": { + "description": "Button to create and share a backup file" + }, + "backupImportSectionTitle": "Restore backup", + "@backupImportSectionTitle": { + "description": "Section title for the import/restore card" + }, + "backupImportSectionDescription": "Pick a backup file to restore your data. This replaces the current settings, history and library on this device.", + "@backupImportSectionDescription": { + "description": "Description for the restore action" + }, + "backupImportButton": "Choose backup file", + "@backupImportButton": { + "description": "Button to pick a backup file to restore" + }, + "backupCreated": "Backup created", + "@backupCreated": { + "description": "Snackbar after a backup file is created" + }, + "backupCreateFailed": "Failed to create backup", + "@backupCreateFailed": { + "description": "Snackbar when backup creation fails" + }, + "backupRestoreConfirmTitle": "Restore this backup?", + "@backupRestoreConfirmTitle": { + "description": "Confirmation dialog title before restoring a backup" + }, + "backupRestoreConfirmMessage": "This will replace your current settings, download history, liked tracks, wishlist and playlists with the contents of the backup. This cannot be undone.", + "@backupRestoreConfirmMessage": { + "description": "Confirmation dialog message before restoring a backup" + }, + "backupRestoreConfirmButton": "Restore", + "@backupRestoreConfirmButton": { + "description": "Confirm button to proceed with restore" + }, + "backupRestored": "Backup restored successfully", + "@backupRestored": { + "description": "Snackbar after a successful restore" + }, + "backupRestoreFailed": "Failed to restore backup", + "@backupRestoreFailed": { + "description": "Snackbar when restore fails" + }, + "backupInvalidFile": "This file is not a valid SpotiFLAC backup", + "@backupInvalidFile": { + "description": "Snackbar when the chosen file is not a valid backup" + }, + "backupRestoreRestartHint": "Restart the app to make sure every change is applied.", + "@backupRestoreRestartHint": { + "description": "Hint shown after restoring that an app restart is recommended" + }, + "backupContentsTitle": "Backup contents", + "@backupContentsTitle": { + "description": "Header above the list summarizing what the backup contains" + }, + "backupSettingsOnly": "Settings only", + "backupSelectHistory": "Download history", + "backupSelectCollections": "Library collections", + "backupSelectCollectionsDescription": "Liked tracks, wishlist, favorite artists, playlists and playlist covers.", + "backupSelectExtensions": "Extensions and their settings", + "backupSelectedExportDescription": "Save the selected categories to a backup file. Audio files are not included.", + "backupSelectAtLeastOne": "Select at least one category to create a backup.", + "backupSelectedRestoreMessage": "Only the categories listed below will be restored. Categories not included in this backup will stay unchanged. Restoring can replace existing data and cannot be undone.", + "backupContentsSettings": "App settings", + "@backupContentsSettings": { + "description": "Backup contents row label for settings" + }, + "backupContentsHistory": "{count} history {count, plural, =1{item} other{items}}", + "@backupContentsHistory": { + "description": "Backup contents row for history count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsLiked": "{count} liked {count, plural, =1{track} other{tracks}}", + "@backupContentsLiked": { + "description": "Backup contents row for liked tracks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsWishlist": "{count} wishlist {count, plural, =1{track} other{tracks}}", + "@backupContentsWishlist": { + "description": "Backup contents row for wishlist tracks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsPlaylists": "{count, plural, =1{1 playlist} other{{count} playlists}}", + "@backupContentsPlaylists": { + "description": "Backup contents row for playlist count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsArtists": "{count, plural, =1{1 favorite artist} other{{count} favorite artists}}", + "@backupContentsArtists": { + "description": "Backup contents row for favorite artists count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsExtensions": "{count, plural, =1{1 extension} other{{count} extensions}}", + "@backupContentsExtensions": { + "description": "Backup contents row for installed extensions count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupIncludeSecrets": "Include extension credentials", + "@backupIncludeSecrets": { + "description": "Toggle to include secret extension settings (tokens, API keys) in the backup" + }, + "backupIncludeSecretsDescription": "Tokens and API keys from extensions will be saved into the backup file. Keep the file private. When off, you re-enter them after restoring.", + "@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 repo.", + "@backupExtensionsRestoreFailed": { + "description": "Snackbar/hint when some extensions failed to reinstall during restore", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "tooltipLoveAll": "Love All", + "@tooltipLoveAll": { + "description": "Tooltip for the Love All button on album/playlist screens" + }, + "tooltipAddToPlaylist": "Add to Playlist", + "@tooltipAddToPlaylist": { + "description": "Tooltip for the Add to Playlist button" + }, + "snackbarRemovedTracksFromLoved": "Removed {count} tracks from Loved", + "@snackbarRemovedTracksFromLoved": { + "description": "Snackbar after removing multiple tracks from Loved folder", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarAddedTracksToLoved": "Added {count} tracks to Loved", + "@snackbarAddedTracksToLoved": { + "description": "Snackbar after adding multiple tracks to Loved folder", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dialogDownloadAllTitle": "Download All", + "@dialogDownloadAllTitle": { + "description": "Dialog title for bulk download confirmation" + }, + "dialogDownloadAllMessage": "Download {count} tracks?", + "@dialogDownloadAllMessage": { + "description": "Body of the Download All confirmation dialog", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "homeSkipAlreadyDownloaded": "Skip already downloaded songs", + "@homeSkipAlreadyDownloaded": { + "description": "Checkbox label in import dialog to skip already-downloaded songs" + }, + "homeGoToAlbum": "Go to Album", + "@homeGoToAlbum": { + "description": "Context menu item to navigate to the album page" + }, + "homeAlbumInfoUnavailable": "Album info not available", + "@homeAlbumInfoUnavailable": { + "description": "Snackbar when album info cannot be loaded" + }, + "snackbarLoadingCueSheet": "Loading CUE sheet...", + "@snackbarLoadingCueSheet": { + "description": "Snackbar while loading a CUE sheet file" + }, + "snackbarMetadataSaved": "Metadata saved successfully", + "@snackbarMetadataSaved": { + "description": "Snackbar after successfully saving track metadata" + }, + "snackbarFailedToEmbedLyrics": "Failed to embed lyrics", + "@snackbarFailedToEmbedLyrics": { + "description": "Snackbar when lyrics embedding fails" + }, + "snackbarFailedToWriteStorage": "Failed to write back to storage", + "@snackbarFailedToWriteStorage": { + "description": "Snackbar when writing metadata back to file fails" + }, + "snackbarError": "Error: {error}", + "@snackbarError": { + "description": "Generic error snackbar with error detail", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "snackbarNoActionDefined": "No action defined for this button", + "@snackbarNoActionDefined": { + "description": "Snackbar when an extension button has no action configured" + }, + "noTracksFoundForAlbum": "No tracks found for this album", + "@noTracksFoundForAlbum": { + "description": "Empty state message when an album has no tracks" + }, + "downloadLocationSubtitle": "Choose where to save your downloaded tracks", + "@downloadLocationSubtitle": { + "description": "Subtitle shown in the download location picker sheet" + }, + "storageAutomaticFolder": "Automatic folder", + "storageAutomaticDownloadFolder": "Uses Download/SpotiFLAC when writable, otherwise app storage", + "storageSafRecommended": "Choose folder (Recommended)", + "storageDownloadFolderHint": "In the Android folder picker, open Download and select SpotiFLAC. If it does not exist, create it using New folder, then tap Use this folder to grant access.", + "storageModeAppFolder": "App Folder (Recommended)", + "@storageModeAppFolder": { + "description": "Storage mode option - app-managed folder" + }, + "storageModeAppFolderSubtitle": "Saves to Music/SpotiFLAC by default", + "@storageModeAppFolderSubtitle": { + "description": "Subtitle for app folder storage mode" + }, + "storageModeSaf": "", + "@storageModeSaf": { + "description": "Storage mode option - Storage Access Framework" + }, + "storageModeSafSubtitle": "Escolha qualquer pasta, incluindo o cartão SD", + "@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" @@ -5980,6 +4334,812 @@ "@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" + }, + "downloadFilenameInsertTag": "Tap to insert tag:", + "@downloadFilenameInsertTag": { + "description": "Label above filename tag chips" + }, + "downloadSeparateSinglesEnabled": "Singles and EPs saved in a separate folder", + "@downloadSeparateSinglesEnabled": { + "description": "Subtitle when separate singles folder is on" + }, + "downloadSeparateSinglesDisabled": "Singles and albums saved in the same folder", + "@downloadSeparateSinglesDisabled": { + "description": "Subtitle when separate singles folder is off" + }, + "downloadArtistNameFilters": "Artist Name Filters", + "@downloadArtistNameFilters": { + "description": "Setting title for artist folder filter options" + }, + "downloadCreatePlaylistSourceFolder": "Playlist Source Folder", + "@downloadCreatePlaylistSourceFolder": { + "description": "Setting to create a subfolder per playlist source" + }, + "downloadCreatePlaylistSourceFolderEnabled": "A subfolder is created for each playlist", + "@downloadCreatePlaylistSourceFolderEnabled": { + "description": "Subtitle when playlist folder is enabled" + }, + "downloadCreatePlaylistSourceFolderDisabled": "All tracks saved directly to download folder", + "@downloadCreatePlaylistSourceFolderDisabled": { + "description": "Subtitle when playlist folder is disabled" + }, + "downloadCreatePlaylistSourceFolderRedundant": "Handled by folder organization setting", + "@downloadCreatePlaylistSourceFolderRedundant": { + "description": "Subtitle when folder organization is already set to playlist" + }, + "downloadSongLinkRegion": "SongLink Region", + "@downloadSongLinkRegion": { + "description": "Setting for SongLink region used during fallback resolution" + }, + "downloadNetworkCompatibilityMode": "Network Compatibility Mode", + "@downloadNetworkCompatibilityMode": { + "description": "Setting for legacy TLS/network handling" + }, + "downloadNetworkCompatibilityModeEnabled": "Allowing legacy HTTP endpoints; TLS verification remains enabled", + "@downloadNetworkCompatibilityModeEnabled": { + "description": "Subtitle when network compatibility mode is on" + }, + "downloadNetworkCompatibilityModeDisabled": "Using standard network settings", + "@downloadNetworkCompatibilityModeDisabled": { + "description": "Subtitle when network compatibility mode is off" + }, + "downloadAllowLocalNetwork": "Allow Local Network Access", + "@downloadAllowLocalNetwork": { + "description": "Setting title for allowing requests to private/local network targets" + }, + "downloadAllowLocalNetworkEnabled": "Requests to local/private addresses are allowed (for local proxy or custom DNS)", + "@downloadAllowLocalNetworkEnabled": { + "description": "Subtitle when allow local network access is on" + }, + "downloadAllowLocalNetworkDisabled": "Local/private addresses are blocked for security", + "@downloadAllowLocalNetworkDisabled": { + "description": "Subtitle when allow local network access is off" + }, + "downloadSelectServiceToEnable": "Select a provider with quality options to enable this option", + "@downloadSelectServiceToEnable": { + "description": "Subtitle when quality picker is disabled due to extension service" + }, + "downloadEmbedLyricsDisabled": "Enable metadata embedding first", + "@downloadEmbedLyricsDisabled": { + "description": "Subtitle when lyrics embedding is blocked by metadata toggle" + }, + "downloadNeteaseIncludeTranslation": "Netease: Include Translation", + "@downloadNeteaseIncludeTranslation": { + "description": "Setting to include translated lyrics from Netease" + }, + "downloadNeteaseIncludeTranslationEnabled": "Chinese translation lines included", + "@downloadNeteaseIncludeTranslationEnabled": { + "description": "Subtitle when Netease translation is on" + }, + "downloadNeteaseIncludeTranslationDisabled": "Original lyrics only", + "@downloadNeteaseIncludeTranslationDisabled": { + "description": "Subtitle when Netease translation is off" + }, + "downloadNeteaseIncludeRomanization": "Netease: Include Romanization", + "@downloadNeteaseIncludeRomanization": { + "description": "Setting to include romanized lyrics from Netease" + }, + "downloadNeteaseIncludeRomanizationEnabled": "Romanization lines included", + "@downloadNeteaseIncludeRomanizationEnabled": { + "description": "Subtitle when Netease romanization is on" + }, + "downloadNeteaseIncludeRomanizationDisabled": "No romanization", + "@downloadNeteaseIncludeRomanizationDisabled": { + "description": "Subtitle when Netease romanization is off" + }, + "downloadAppleQqMultiPerson": "Apple / QQ: Multi-Person Lyrics", + "@downloadAppleQqMultiPerson": { + "description": "Setting for word-by-word multi-person lyrics from Apple Music and QQ Music" + }, + "downloadAppleQqMultiPersonEnabled": "Speaker labels included for duets and group tracks", + "@downloadAppleQqMultiPersonEnabled": { + "description": "Subtitle when multi-person lyrics is on" + }, + "downloadAppleQqMultiPersonDisabled": "Standard lyrics without speaker labels", + "@downloadAppleQqMultiPersonDisabled": { + "description": "Subtitle when multi-person lyrics is off" + }, + "downloadAppleElrcWordSync": "Apple Music eLRC Word Sync", + "@downloadAppleElrcWordSync": { + "description": "Setting for preserving Apple Music word-by-word eLRC timestamps" + }, + "downloadAppleElrcWordSyncEnabled": "Raw word-by-word timestamps preserved", + "@downloadAppleElrcWordSyncEnabled": { + "description": "Subtitle when Apple Music eLRC word sync is enabled" + }, + "downloadAppleElrcWordSyncDisabled": "Safer line-by-line Apple Music lyrics", + "@downloadAppleElrcWordSyncDisabled": { + "description": "Subtitle when Apple Music eLRC word sync is disabled" + }, + "downloadMusixmatchLanguage": "Musixmatch Language", + "@downloadMusixmatchLanguage": { + "description": "Setting for Musixmatch lyrics translation language" + }, + "downloadMusixmatchLanguageAuto": "Auto (original language)", + "@downloadMusixmatchLanguageAuto": { + "description": "Subtitle when no language is set" + }, + "downloadFilterContributing": "Filter Contributing Artists", + "@downloadFilterContributing": { + "description": "Setting to strip contributing artists from Album Artist folder name" + }, + "downloadFilterContributingEnabled": "Contributing artists removed from Album Artist folder name", + "@downloadFilterContributingEnabled": { + "description": "Subtitle when contributing artist filter is on" + }, + "downloadFilterContributingDisabled": "Full Album Artist string used", + "@downloadFilterContributingDisabled": { + "description": "Subtitle when contributing artist filter is off" + }, + "downloadProvidersNoneEnabled": "No providers enabled", + "@downloadProvidersNoneEnabled": { + "description": "Shown when no lyrics providers are active" + }, + "downloadMusixmatchLanguageCode": "Language code", + "@downloadMusixmatchLanguageCode": { + "description": "Label for Musixmatch language input field" + }, + "downloadMusixmatchLanguageHint": "e.g. en, de, ja", + "@downloadMusixmatchLanguageHint": { + "description": "Placeholder for Musixmatch language input" + }, + "downloadMusixmatchLanguageDesc": "Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.", + "@downloadMusixmatchLanguageDesc": { + "description": "Description in Musixmatch language picker" + }, + "downloadMusixmatchAuto": "Auto", + "@downloadMusixmatchAuto": { + "description": "Button to clear Musixmatch language (use auto)" + }, + "downloadNetworkAnySubtitle": "Use WiFi or mobile data", + "@downloadNetworkAnySubtitle": { + "description": "Subtitle for any-network option in picker" + }, + "downloadNetworkWifiOnlySubtitle": "Downloads pause when on mobile data", + "@downloadNetworkWifiOnlySubtitle": { + "description": "Subtitle for WiFi-only option in picker" + }, + "downloadSongLinkRegionDesc": "Region used when resolving track links via SongLink. Choose the country where your streaming services are available.", + "@downloadSongLinkRegionDesc": { + "description": "Description in SongLink region picker" + }, + "snackbarUnsupportedAudioFormat": "Unsupported audio format", + "@snackbarUnsupportedAudioFormat": { + "description": "Snackbar when the audio format is not supported for the requested operation" + }, + "cacheRefresh": "Refresh", + "@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": { + "description": "Dialog message for bulk playlist download confirmation", + "placeholders": { + "trackCount": { + "type": "int" + }, + "playlistCount": { + "type": "int" + } + } + }, + "bulkDownloadPlaylistsButton": "Download {count} {count, plural, =1{playlist} other{playlists}}", + "@bulkDownloadPlaylistsButton": { + "description": "Button label for bulk downloading selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "bulkDownloadSelectPlaylists": "Select playlists to download", + "@bulkDownloadSelectPlaylists": { + "description": "Button label when no playlists are selected for download" + }, + "snackbarSelectedPlaylistsEmpty": "Selected playlists have no tracks", + "@snackbarSelectedPlaylistsEmpty": { + "description": "Snackbar when selected playlists contain no tracks" + }, + "playlistsCount": "{count, plural, =1{1 playlist} other{{count} playlists}}", + "@playlistsCount": { + "description": "Playlist count display", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "editMetadataAutoFill": "Auto-fill from online", + "@editMetadataAutoFill": { + "description": "Section title for selective online metadata auto-fill in the edit metadata sheet" + }, + "editMetadataAutoFillDesc": "Choose a metadata extension, select fields, then review its data before applying", + "@editMetadataAutoFillDesc": { + "description": "Description for the auto-fill section" + }, + "editMetadataAutoFillSource": "Metadata source", + "@editMetadataAutoFillSource": { + "description": "Label for the metadata extension selector in online auto-fill" + }, + "editMetadataAutoFillSourceAutomatic": "Automatic (provider priority)", + "@editMetadataAutoFillSourceAutomatic": { + "description": "Automatic source option that follows configured metadata provider priority" + }, + "editMetadataAutoFillFind": "Find metadata", + "@editMetadataAutoFillFind": { + "description": "Button label for finding an online metadata candidate" + }, + "editMetadataAutoFillPreview": "Data from {source}", + "@editMetadataAutoFillPreview": { + "description": "Title for the online metadata preview", + "placeholders": { + "source": { + "type": "String" + } + } + }, + "editMetadataAutoFillCoverAvailable": "Cover artwork available", + "@editMetadataAutoFillCoverAvailable": { + "description": "Preview value when the selected metadata source provides cover artwork" + }, + "editMetadataAutoFillApply": "Apply selected data", + "@editMetadataAutoFillApply": { + "description": "Button label for applying the previewed metadata" + }, + "editMetadataAutoFillDoneFromSource": "Filled {count} {count, plural, =1{field} other{fields}} from {source}", + "@editMetadataAutoFillDoneFromSource": { + "description": "Snackbar confirming fields applied from a selected metadata source", + "placeholders": { + "count": { + "type": "int" + }, + "source": { + "type": "String" + } + } + }, + "editMetadataAutoFillFetch": "Fetch & Fill", + "@editMetadataAutoFillFetch": { + "description": "Button label to fetch online metadata and fill selected fields" + }, + "editMetadataAutoFillSearching": "Searching online...", + "@editMetadataAutoFillSearching": { + "description": "Snackbar shown while searching for online metadata" + }, + "editMetadataAutoFillNoResults": "No matching metadata found online", + "@editMetadataAutoFillNoResults": { + "description": "Snackbar when online metadata search returns no results" + }, + "editMetadataAutoFillDone": "Filled {count} {count, plural, =1{field} other{fields}} from online metadata", + "@editMetadataAutoFillDone": { + "description": "Snackbar confirming how many fields were auto-filled", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "editMetadataAutoFillNoneSelected": "Select at least one field to auto-fill", + "@editMetadataAutoFillNoneSelected": { + "description": "Snackbar when user taps Fetch without selecting any fields" + }, + "editMetadataFieldTitle": "Title", + "@editMetadataFieldTitle": { + "description": "Chip label for title field in auto-fill selector" + }, + "editMetadataFieldArtist": "Artist", + "@editMetadataFieldArtist": { + "description": "Chip label for artist field in auto-fill selector" + }, + "editMetadataFieldAlbum": "Album", + "@editMetadataFieldAlbum": { + "description": "Chip label for album field in auto-fill selector" + }, + "editMetadataFieldAlbumArtist": "Album Artist", + "@editMetadataFieldAlbumArtist": { + "description": "Chip label for album artist field in auto-fill selector" + }, + "editMetadataFieldDate": "Date", + "@editMetadataFieldDate": { + "description": "Chip label for date field in auto-fill selector" + }, + "editMetadataFieldTrackNum": "Track #", + "@editMetadataFieldTrackNum": { + "description": "Chip label for track number field in auto-fill selector" + }, + "editMetadataFieldDiscNum": "Disc #", + "@editMetadataFieldDiscNum": { + "description": "Chip label for disc number field in auto-fill selector" + }, + "editMetadataFieldGenre": "Genre", + "@editMetadataFieldGenre": { + "description": "Chip label for genre field in auto-fill selector" + }, + "editMetadataFieldIsrc": "ISRC", + "@editMetadataFieldIsrc": { + "description": "Chip label for ISRC field in auto-fill selector" + }, + "editMetadataFieldLabel": "Label", + "@editMetadataFieldLabel": { + "description": "Chip label for label field in auto-fill selector" + }, + "editMetadataFieldCopyright": "Copyright", + "@editMetadataFieldCopyright": { + "description": "Chip label for copyright field in auto-fill selector" + }, + "editMetadataFieldCover": "Cover Art", + "@editMetadataFieldCover": { + "description": "Chip label for cover art field in auto-fill selector" + }, + "editMetadataSelectAll": "All", + "@editMetadataSelectAll": { + "description": "Button to select all fields for auto-fill" + }, + "editMetadataSelectEmpty": "Empty only", + "@editMetadataSelectEmpty": { + "description": "Button to select only fields that are currently empty" + }, + "queueDownloadingCount": "Downloading ({count})", + "@queueDownloadingCount": { + "description": "Header for active downloads section with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueFilteringIndicator": "Filtering...", + "@queueFilteringIndicator": { + "description": "Shown while filter results are being computed" + }, + "queueTrackCount": "{count, plural, =1{1 track} other{{count} tracks}}", + "@queueTrackCount": { + "description": "Track count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueAlbumCount": "{count, plural, =1{1 album} other{{count} albums}}", + "@queueAlbumCount": { + "description": "Album count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueEmptyAlbums": "No album downloads", + "@queueEmptyAlbums": { + "description": "Empty state title when no album downloads exist" + }, + "queueEmptyAlbumsSubtitle": "Download multiple tracks from an album to see them here", + "@queueEmptyAlbumsSubtitle": { + "description": "Empty state subtitle for album downloads" + }, + "queueEmptySingles": "No single downloads", + "@queueEmptySingles": { + "description": "Empty state title when no single track downloads exist" + }, + "queueEmptySinglesSubtitle": "Single track downloads will appear here", + "@queueEmptySinglesSubtitle": { + "description": "Empty state subtitle for single track downloads" + }, + "queuePlaylistCount": "{count, plural, =1{1 playlist} other{{count} playlists}}", + "@queuePlaylistCount": { + "description": "Playlist count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueEmptyPlaylistsSubtitle": "Create a playlist to organize your tracks", + "@queueEmptyPlaylistsSubtitle": { + "description": "Empty state subtitle for the playlists library view" + }, + "libraryDefaultView": "Default view", + "@libraryDefaultView": { + "description": "Setting title - which library view opens when switching to the Library tab" + }, + "libraryDefaultViewLastUsed": "Last used", + "@libraryDefaultViewLastUsed": { + "description": "Default view option - keep the last used library view" + }, + "queueEmptyHistory": "No download history", + "@queueEmptyHistory": { + "description": "Empty state title when download history is empty" + }, + "queueEmptyHistorySubtitle": "Downloaded tracks will appear here", + "@queueEmptyHistorySubtitle": { + "description": "Empty state subtitle for download history" + }, + "selectionAllPlaylistsSelected": "All playlists selected", + "@selectionAllPlaylistsSelected": { + "description": "Shown when all playlists are selected in selection mode" + }, + "selectionTapPlaylistsToSelect": "Tap playlists to select", + "@selectionTapPlaylistsToSelect": { + "description": "Hint shown in playlist selection mode" + }, + "selectionSelectPlaylistsToDelete": "Select playlists to delete", + "@selectionSelectPlaylistsToDelete": { + "description": "Hint shown when no playlists are selected for deletion" + }, + "audioAnalysisTitle": "Audio Quality Analysis", + "@audioAnalysisTitle": { + "description": "Title for audio analysis section" + }, + "audioAnalysisDescription": "Verify lossless quality with spectrum analysis", + "@audioAnalysisDescription": { + "description": "Description for audio analysis tap-to-analyze prompt" + }, + "audioAnalysisAnalyzing": "Analyzing audio...", + "@audioAnalysisAnalyzing": { + "description": "Loading text while analyzing audio" + }, + "audioAnalysisSampleRate": "Sample Rate", + "@audioAnalysisSampleRate": { + "description": "Sample rate metric label" + }, + "audioAnalysisCodec": "Codec", + "@audioAnalysisCodec": { + "description": "Audio codec metric label" + }, + "audioAnalysisContainer": "Container", + "@audioAnalysisContainer": { + "description": "Audio container metric label" + }, + "audioAnalysisDecodedFormat": "Decoded Format", + "@audioAnalysisDecodedFormat": { + "description": "Decoded sample format metric label" + }, + "audioAnalysisBitDepth": "Bit Depth", + "@audioAnalysisBitDepth": { + "description": "Bit depth metric label" + }, + "audioAnalysisChannels": "Channels", + "@audioAnalysisChannels": { + "description": "Channels metric label" + }, + "audioAnalysisDuration": "Duration", + "@audioAnalysisDuration": { + "description": "Duration metric label" + }, + "audioAnalysisNyquist": "Nyquist", + "@audioAnalysisNyquist": { + "description": "Nyquist frequency metric label" + }, + "audioAnalysisFileSize": "Size", + "@audioAnalysisFileSize": { + "description": "File size metric label" + }, + "audioAnalysisDynamicRange": "Dynamic Range", + "@audioAnalysisDynamicRange": { + "description": "Dynamic range metric label" + }, + "audioAnalysisPeak": "Peak", + "@audioAnalysisPeak": { + "description": "Peak amplitude metric label" + }, + "audioAnalysisRms": "RMS", + "@audioAnalysisRms": { + "description": "RMS level metric label" + }, + "audioAnalysisLufs": "LUFS", + "@audioAnalysisLufs": { + "description": "Integrated loudness metric label" + }, + "audioAnalysisTruePeak": "True Peak", + "@audioAnalysisTruePeak": { + "description": "True peak metric label" + }, + "audioAnalysisClipping": "Clipping", + "@audioAnalysisClipping": { + "description": "Clipping metric label" + }, + "audioAnalysisNoClipping": "No clipping", + "@audioAnalysisNoClipping": { + "description": "Displayed when no clipped samples were detected" + }, + "audioAnalysisSpectralCutoff": "Spectral Cutoff", + "@audioAnalysisSpectralCutoff": { + "description": "Estimated spectral cutoff metric label" + }, + "audioAnalysisCutoffNotDetected": "Not detected", + "@audioAnalysisCutoffNotDetected": { + "description": "Displayed when no reliable broadband spectral cutoff can be detected" + }, + "audioAnalysisChannelStats": "Per-channel Stats", + "@audioAnalysisChannelStats": { + "description": "Per-channel audio analysis section label" + }, + "audioAnalysisSamples": "Samples", + "@audioAnalysisSamples": { + "description": "Total samples metric label" + }, + "audioAnalysisRescan": "Re-analyze", + "@audioAnalysisRescan": { + "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" + }, + "downloadRedownloadFakeHiRes": "Re-download fake Hi-Res", + "@downloadRedownloadFakeHiRes": { + "description": "Setting title: automatically replace downloads that measure as fake Hi-Res" + }, + "downloadRedownloadFakeHiResSubtitle": "Off by default. Check Hi-Res downloads and replace only when every audio sample is preserved. Keep the original if verification or processing fails", + "@downloadRedownloadFakeHiResSubtitle": { + "description": "Setting subtitle for the fake Hi-Res re-download toggle" + }, + "hiResCheckVerdictFakeCertain": "Fake Hi-Res", + "@hiResCheckVerdictFakeCertain": { + "description": "Verdict: an exact fingerprint (padded bits or upsampling pattern) proves the file is not real Hi-Res" + }, + "hiResCheckVerdictFakeSuspect": "Possibly a filtered master", + "@hiResCheckVerdictFakeSuspect": { + "description": "Verdict: fails the cutoff test but may be a genuine master low-pass filtered in mastering" + }, + "hiResCheckReasonSampleHold": "Every sample is repeated: upsampled by duplication", + "@hiResCheckReasonSampleHold": { + "description": "Reason: sample-and-hold upsampling detected" + }, + "hiResCheckReasonInterpolation": "In-between samples are linearly interpolated", + "@hiResCheckReasonInterpolation": { + "description": "Reason: linear-interpolation upsampling detected" + }, + "hiResCheckReasonImaging": "Content above 22 kHz mirrors the audible band", + "@hiResCheckReasonImaging": { + "description": "Reason: spectral imaging from upsampling detected" + }, + "hiResCheckMusicContent": "Musical content", + "@hiResCheckMusicContent": { + "description": "Label for the highest frequency that still moves with the music" + }, + "hiResCheckUltrasonicNoise": "Above {cutoff} only steady noise (typical of DSD or analog tape transfers): a {rate} file would hold all the music", + "@hiResCheckUltrasonicNoise": { + "description": "Shown when the ultrasonic content of a Hi-Res file is noise rather than music", + "placeholders": { + "cutoff": { + "type": "String" + }, + "rate": { + "type": "String" + } + } + }, + "hiResCheckTitle": "Hi-Res Authenticity", + "@hiResCheckTitle": { + "description": "Title of the fake Hi-Res check card" + }, + "hiResCheckDescription": "Detect upsampled or bit-padded fake Hi-Res files", + "@hiResCheckDescription": { + "description": "Explains what the Hi-Res authenticity check does" + }, + "hiResCheckRun": "Check", + "@hiResCheckRun": { + "description": "Button that starts the Hi-Res authenticity check" + }, + "hiResCheckChecking": "Checking Hi-Res authenticity...", + "@hiResCheckChecking": { + "description": "Loading text while the Hi-Res check runs" + }, + "hiResCheckVerdictFake": "Likely fake Hi-Res", + "@hiResCheckVerdictFake": { + "description": "Verdict: the file claims Hi-Res but does not measure as it" + }, + "hiResCheckVerdictGenuine": "Measures as genuine Hi-Res", + "@hiResCheckVerdictGenuine": { + "description": "Verdict: no upsampling or padded bit depth found" + }, + "hiResCheckVerdictStandard": "Standard definition, nothing to flag", + "@hiResCheckVerdictStandard": { + "description": "Verdict: neither sample rate nor bit depth claims Hi-Res" + }, + "hiResCheckVerdictInconclusive": "Inconclusive: the analyzed segment is too quiet or short", + "@hiResCheckVerdictInconclusive": { + "description": "Verdict: analysis could not reach a reliable conclusion" + }, + "hiResCheckUnsupported": "Only FLAC and WAV files can be checked", + "@hiResCheckUnsupported": { + "description": "Shown when the file format cannot be decoded by the Hi-Res check" + }, + "hiResCheckCutoff": "Content cutoff", + "@hiResCheckCutoff": { + "description": "Label for the highest frequency with real content" + }, + "hiResCheckBitsInUse": "Bits in use", + "@hiResCheckBitsInUse": { + "description": "Label for effective vs declared bit depth" + }, + "hiResCheckDisclaimer": "The spectrum stops early, but nothing proves it was upsampled: it may be a genuine master low-pass filtered in mastering. It is not replaced automatically.", + "@hiResCheckDisclaimer": { + "description": "Caveat shown under a fake Hi-Res verdict" + }, + "hiResCheckFailed": "Hi-Res check failed: {error}", + "@hiResCheckFailed": { + "description": "Error shown when the Hi-Res check fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "hiResCheckReasonRate": "Declares {sampleRate} but content stops at ~{cutoff}", + "@hiResCheckReasonRate": { + "description": "Reason for a fake verdict caused by upsampling", + "placeholders": { + "sampleRate": { + "type": "String" + }, + "cutoff": { + "type": "String" + } + } + }, + "hiResCheckReasonDepth": "Declares {declared}-bit but only {effective} bits carry data", + "@hiResCheckReasonDepth": { + "description": "Reason for a fake verdict caused by padded bit depth", + "placeholders": { + "declared": { + "type": "int" + }, + "effective": { + "type": "int" + } + } + }, + "audioAnalysisRescanning": "Re-analyzing audio...", + "@audioAnalysisRescanning": { + "description": "Loading text while audio is being re-analyzed after an explicit refresh" + }, + "extensionsHomeFeedProvider": "Home Feed Provider", + "@extensionsHomeFeedProvider": { + "description": "Extensions page - label for home feed provider selector" + }, + "extensionsHomeFeedDescription": "Choose which extension provides the home feed on the main screen", + "@extensionsHomeFeedDescription": { + "description": "Extensions page - description for home feed provider picker" + }, + "extensionsHomeFeedAuto": "Auto", + "@extensionsHomeFeedAuto": { + "description": "Label for auto-selected search provider" + }, + "extensionsHomeFeedAutoSubtitle": "Automatically select the best available", + "@extensionsHomeFeedAutoSubtitle": { + "description": "Extensions page - subtitle for auto home feed option" + }, + "extensionsHomeFeedOff": "Off", + "@extensionsHomeFeedOff": { + "description": "Extensions page - home feed provider option: off" + }, + "extensionsHomeFeedOffSubtitle": "Do not show the home feed on the main screen", + "@extensionsHomeFeedOffSubtitle": { + "description": "Extensions page - subtitle for off home feed option" + }, + "extensionsHomeFeedUse": "Use {extensionName} home feed", + "@extensionsHomeFeedUse": { + "description": "Extensions page - subtitle for a specific extension home feed option", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "extensionsNoHomeFeedExtensions": "No extensions with home feed", + "@extensionsNoHomeFeedExtensions": { + "description": "Extensions page - shown when no installed extension has home feed" + }, + "cancelDownloadTitle": "Cancel download?", + "@cancelDownloadTitle": { + "description": "Dialog title when confirming cancellation of an active download" + }, + "cancelDownloadContent": "This will cancel the active download for \"{trackName}\".", + "@cancelDownloadContent": { + "description": "Dialog body when confirming cancellation of an active download", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "cancelDownloadKeep": "Keep", + "@cancelDownloadKeep": { + "description": "Dialog button - keep the active download (do not cancel)" + }, + "queueCancelledTitle": "Download cancelled", + "@queueCancelledTitle": { + "description": "Dialog title when opening a cancelled queue item" + }, + "queueCancelledMessage": "This download was cancelled. Retry it or remove it from the queue.", + "@queueCancelledMessage": { + "description": "Dialog body when opening a cancelled queue item" + }, + "metadataSaveFailedFfmpeg": "Failed to save metadata via FFmpeg", + "@metadataSaveFailedFfmpeg": { + "description": "Snackbar error when FFmpeg fails to write metadata" + }, + "metadataSaveFailedStorage": "Failed to write metadata back to storage", + "@metadataSaveFailedStorage": { + "description": "Snackbar error when writing metadata file back to storage fails" + }, + "snackbarFolderPickerFailed": "Failed to open folder picker: {error}", + "@snackbarFolderPickerFailed": { + "description": "Snackbar shown when folder picker fails to open", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "notifDownloadingTrack": "Downloading {trackName}", + "@notifDownloadingTrack": { + "description": "Notification title while downloading a track", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "notifFinalizingTrack": "Finalizing {trackName}", + "@notifFinalizingTrack": { + "description": "Notification title while finalizing (embedding metadata) a track", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "notifEmbeddingMetadata": "Embedding metadata...", + "@notifEmbeddingMetadata": { + "description": "Notification body while embedding metadata into a downloaded track" + }, + "notifAlreadyInLibraryCount": "Already in Library ({completed}/{total})", + "@notifAlreadyInLibraryCount": { + "description": "Notification title when track is already in library, with count", + "placeholders": { + "completed": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "notifAlreadyInLibrary": "Already in Library", + "@notifAlreadyInLibrary": { + "description": "Notification title when track is already in library" + }, + "notifDownloadCompleteCount": "Download Complete ({completed}/{total})", + "@notifDownloadCompleteCount": { + "description": "Notification title when download is complete, with count", + "placeholders": { + "completed": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "notifDownloadComplete": "Download Complete", + "@notifDownloadComplete": { + "description": "Notification title when a single download is complete" + }, + "notifDownloadsFinished": "Downloads Finished ({completed} done, {failed} failed)", + "@notifDownloadsFinished": { + "description": "Notification title when queue finishes with some failures", + "placeholders": { + "completed": { + "type": "int" + }, + "failed": { + "type": "int" + } + } + }, "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" @@ -5988,10 +5148,592 @@ "@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" + }, + "notifTracksDownloadedSuccess": "{count, plural, =1{1 track downloaded successfully} other{{count} tracks downloaded successfully}}", + "@notifTracksDownloadedSuccess": { + "description": "Notification body for queue complete - how many tracks were downloaded", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifDownloadsFinishedBody": "{completed, plural, =1{1 track downloaded} other{{completed} tracks downloaded}}, {failed, plural, =1{1 failed} other{{failed} failed}}", + "@notifDownloadsFinishedBody": { + "description": "Notification body when queue finishes with failures", + "placeholders": { + "completed": { + "type": "int" + }, + "failed": { + "type": "int" + } + } + }, + "notifDownloadsCanceledTitle": "Downloads canceled", + "@notifDownloadsCanceledTitle": { + "description": "Notification title when downloads are canceled by the user" + }, + "notifDownloadsCanceledBody": "{count, plural, =1{1 download canceled by user} other{{count} downloads canceled by user}}", + "@notifDownloadsCanceledBody": { + "description": "Notification body when downloads are canceled by the user", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifScanningLibrary": "Scanning local library", + "@notifScanningLibrary": { + "description": "Notification title while scanning local library" + }, + "notifLibraryScanProgressWithTotal": "{scanned}/{total} files • {percentage}%", + "@notifLibraryScanProgressWithTotal": { + "description": "Notification body for library scan progress when total is known", + "placeholders": { + "scanned": { + "type": "int" + }, + "total": { + "type": "int" + }, + "percentage": { + "type": "int" + } + } + }, + "notifLibraryScanProgressNoTotal": "{scanned} files scanned • {percentage}%", + "@notifLibraryScanProgressNoTotal": { + "description": "Notification body for library scan progress when total is unknown", + "placeholders": { + "scanned": { + "type": "int" + }, + "percentage": { + "type": "int" + } + } + }, + "notifLibraryScanComplete": "Library scan complete", + "@notifLibraryScanComplete": { + "description": "Notification title when library scan finishes" + }, + "notifLibraryScanCompleteBody": "{count} tracks indexed", + "@notifLibraryScanCompleteBody": { + "description": "Notification body for library scan complete - number of indexed tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifLibraryScanExcluded": "{count} excluded", + "@notifLibraryScanExcluded": { + "description": "Library scan complete suffix - excluded track count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifLibraryScanErrors": "{count} errors", + "@notifLibraryScanErrors": { + "description": "Library scan complete suffix - error count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifLibraryScanFailed": "Library scan failed", + "@notifLibraryScanFailed": { + "description": "Notification title when library scan fails" + }, + "notifLibraryScanCancelled": "Escaneamento de biblioteca cancelado", + "@notifLibraryScanCancelled": { + "description": "Notification title when library scan is cancelled by the user" + }, + "notifLibraryScanStopped": "", + "@notifLibraryScanStopped": { + "description": "Notification body when library scan is cancelled" + }, + "notifDownloadingUpdate": "Downloading SpotiFLAC Mobile v{version}", + "@notifDownloadingUpdate": { + "description": "Notification title while downloading an app update", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "notifUpdateProgress": "{received} / {total} MB • {percentage}%", + "@notifUpdateProgress": { + "description": "Notification body showing update download progress", + "placeholders": { + "received": { + "type": "String" + }, + "total": { + "type": "String" + }, + "percentage": { + "type": "int" + } + } + }, + "notifUpdateReady": "Update Ready", + "@notifUpdateReady": { + "description": "Notification title when app update download is complete" + }, + "notifUpdateReadyBody": "SpotiFLAC Mobile v{version} downloaded. Tap to install.", + "@notifUpdateReadyBody": { + "description": "Notification body when app update is ready to install", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "notifUpdateFailed": "Update Failed", + "@notifUpdateFailed": { + "description": "Notification title when app update download fails" + }, + "notifUpdateFailedBody": "Could not download update. Try again later.", + "@notifUpdateFailedBody": { + "description": "Notification body when app update download fails" + }, + "searchTracks": "Tracks", + "@searchTracks": { + "description": "Search filter label - tracks" + }, + "homeSearchHintDefault": "Paste supported URL or search...", + "@homeSearchHintDefault": { + "description": "Default placeholder for the main search field on Home" + }, + "homeSearchHintProvider": "Search with {providerName}...", + "@homeSearchHintProvider": { + "description": "Placeholder for the main search field when a provider is selected", + "placeholders": { + "providerName": { + "type": "String" + } + } + }, + "homeImportCsvTooltip": "Import playlist (CSV, M3U)", + "@homeImportCsvTooltip": { + "description": "Tooltip for importing a CSV or M3U playlist file into Home search" + }, + "homeChangeSearchProviderTooltip": "Change search provider", + "@homeChangeSearchProviderTooltip": { + "description": "Tooltip for the Home search provider picker" + }, + "actionPaste": "Paste", + "@actionPaste": { + "description": "Generic action - paste from clipboard" + }, + "tutorialSearchHint": "Paste or search...", + "@tutorialSearchHint": { + "description": "Placeholder shown in the tutorial search demo" + }, + "tutorialDownloadCompletedSemantics": "Download completed", + "@tutorialDownloadCompletedSemantics": { + "description": "Accessibility label for completed download state in tutorial demo" + }, + "tutorialDownloadInProgressSemantics": "Download in progress", + "@tutorialDownloadInProgressSemantics": { + "description": "Accessibility label for active download state in tutorial demo" + }, + "tutorialStartDownloadSemantics": "Start download", + "@tutorialStartDownloadSemantics": { + "description": "Accessibility label for idle download button in tutorial demo" + }, + "optionsEmbedMetadata": "Embed Metadata", + "@optionsEmbedMetadata": { + "description": "Settings toggle title for writing metadata into downloaded files" + }, + "optionsEmbedMetadataSubtitleOn": "Write metadata, cover art, and embedded lyrics to files", + "@optionsEmbedMetadataSubtitleOn": { + "description": "Subtitle when metadata embedding is enabled" + }, + "optionsEmbedMetadataSubtitleOff": "Disabled (advanced): skip all metadata embedding", + "@optionsEmbedMetadataSubtitleOff": { + "description": "Subtitle when metadata embedding is disabled" + }, + "trackCoverNoEmbeddedArt": "No embedded album art found", + "@trackCoverNoEmbeddedArt": { + "description": "Message shown when a track file has no embedded cover art" + }, + "trackCoverReplace": "Replace Cover", + "@trackCoverReplace": { + "description": "Button label for replacing selected cover art" + }, + "trackCoverPick": "Pick Cover", + "@trackCoverPick": { + "description": "Button label for selecting cover art" + }, + "trackCoverClearSelected": "Clear selected cover", + "@trackCoverClearSelected": { + "description": "Tooltip for clearing the newly selected cover art" + }, + "trackCoverCurrent": "Current cover", + "@trackCoverCurrent": { + "description": "Label for the currently embedded cover preview" + }, + "trackCoverSelected": "Selected cover", + "@trackCoverSelected": { + "description": "Label for the newly selected cover preview" + }, + "trackCoverReplaceNotice": "The selected cover will replace the current embedded cover when you tap Save.", + "@trackCoverReplaceNotice": { + "description": "Notice shown when a new cover has been selected but not saved yet" + }, + "trackCoverResolution": "Cover resolution", + "@trackCoverResolution": { + "description": "Label for selecting the embedded cover art resolution" + }, + "trackCoverResolutionHint": "Sets the longest edge when saved. Enlarging does not add image detail.", + "@trackCoverResolutionHint": { + "description": "Explanation below the embedded cover art resolution selector" + }, + "trackCoverResizeFailed": "The cover image could not be resized. Please try another size or image.", + "@trackCoverResizeFailed": { + "description": "Error shown when resizing cover art before saving metadata fails" + }, + "actionStop": "Stop", + "@actionStop": { + "description": "Generic action - stop" + }, + "queueFinalizingDownload": "Finalizing download", + "@queueFinalizingDownload": { + "description": "Accessibility label for a queue item that is finalizing" + }, + "queueDownloadNext": "Download next", + "@queueDownloadNext": { + "description": "Tooltip on a queued download row; moves the item to the front of the queue so the next free slot downloads it" + }, + "queueMoveUp": "Move up", + "@queueMoveUp": { + "description": "Queue item menu action - move the queued item one position earlier" + }, + "queueMoveDown": "Move down", + "@queueMoveDown": { + "description": "Queue item menu action - move the queued item one position later" + }, + "editMetadataMusicBrainzButton": "Fetch from MusicBrainz", + "@editMetadataMusicBrainzButton": { + "description": "Tag editor button that fills genre and album artist from MusicBrainz by ISRC" + }, + "editMetadataMusicBrainzFilled": "Updated from MusicBrainz", + "@editMetadataMusicBrainzFilled": { + "description": "Snackbar after MusicBrainz suggestions were applied to the tag editor fields" + }, + "editMetadataMusicBrainzNothing": "Nothing found on MusicBrainz", + "@editMetadataMusicBrainzNothing": { + "description": "Snackbar when the MusicBrainz lookup returns no data" + }, + "editMetadataMusicBrainzNeedsIsrc": "Requires an ISRC tag", + "@editMetadataMusicBrainzNeedsIsrc": { + "description": "Snackbar when the MusicBrainz lookup is tapped without an ISRC" + }, + "nowPlayingRepeatOff": "Repeat off", + "@nowPlayingRepeatOff": { + "description": "Repeat toggle tooltip when repeat is disabled" + }, + "nowPlayingRepeatAll": "Repeat all", + "@nowPlayingRepeatAll": { + "description": "Repeat toggle tooltip when the whole queue repeats" + }, + "nowPlayingRepeatOne": "Repeat one", + "@nowPlayingRepeatOne": { + "description": "Repeat toggle tooltip when the current track repeats" + }, + "queueNetworkFailedOffline": "{count} downloads failed while offline", + "@queueNetworkFailedOffline": { + "description": "Snackbar shown when connectivity returns and network-failed downloads can be retried", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueDownloadedFileMissing": "Downloaded file missing", + "@queueDownloadedFileMissing": { + "description": "Accessibility label when a downloaded file is missing from disk" + }, + "queueCheckingDownloadedFile": "Checking downloaded file...", + "@queueCheckingDownloadedFile": { + "description": "Accessibility label while the app checks whether a just-completed download has appeared at its final path yet. Not about authentication or a download session." + }, + "queueDownloadCompleted": "Download completed", + "@queueDownloadCompleted": { + "description": "Accessibility label for completed download state in queue" + }, + "queueRateLimitTitle": "Service rate limited", + "@queueRateLimitTitle": { + "description": "Title shown on a failed queue item when the download service rate limits requests" + }, + "queueRateLimitMessage": "This track may still be available. Wait a few minutes, reduce parallel downloads, then retry.", + "@queueRateLimitMessage": { + "description": "Explanation shown on a failed queue item when the download service rate limits requests" + }, + "appearanceSelectAccentColor": "Select accent color {hex}", + "@appearanceSelectAccentColor": { + "description": "Accessibility label for picking an accent color", + "placeholders": { + "hex": { + "type": "String" + } + } + }, + "logAutoScrollOn": "Auto-scroll ON", + "@logAutoScrollOn": { + "description": "Tooltip when auto-scroll is enabled on the log screen" + }, + "logAutoScrollOff": "Auto-scroll OFF", + "@logAutoScrollOff": { + "description": "Tooltip when auto-scroll is disabled on the log screen" + }, + "logCopyLogs": "Copy logs", + "@logCopyLogs": { + "description": "Tooltip for copying logs" + }, + "logClearSearch": "Clear search", + "@logClearSearch": { + "description": "Tooltip for clearing the log search field" + }, + "logIssueIspBlockingLabel": "ISP BLOCKING DETECTED", + "@logIssueIspBlockingLabel": { + "description": "Diagnostic badge label when ISP blocking is detected" + }, + "logIssueIspBlockingDescription": "Your ISP may be blocking access to download services", + "@logIssueIspBlockingDescription": { + "description": "Diagnostic badge description for ISP blocking" + }, + "logIssueIspBlockingSuggestion": "Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8", + "@logIssueIspBlockingSuggestion": { + "description": "Diagnostic badge suggestion for ISP blocking" + }, + "logIssueRateLimitedLabel": "RATE LIMITED", + "@logIssueRateLimitedLabel": { + "description": "Diagnostic badge label when the service rate limits requests" + }, + "logIssueRateLimitedDescription": "Too many requests to the service", + "@logIssueRateLimitedDescription": { + "description": "Diagnostic badge description for rate limiting" + }, + "logIssueRateLimitedSuggestion": "Wait a few minutes before trying again", + "@logIssueRateLimitedSuggestion": { + "description": "Diagnostic badge suggestion for rate limiting" + }, + "logIssueNetworkErrorLabel": "NETWORK ERROR", + "@logIssueNetworkErrorLabel": { + "description": "Diagnostic badge label for generic network errors" + }, + "logIssueNetworkErrorDescription": "Connection issues detected", + "@logIssueNetworkErrorDescription": { + "description": "Diagnostic badge description for generic network errors" + }, + "logIssueNetworkErrorSuggestion": "Check your internet connection", + "@logIssueNetworkErrorSuggestion": { + "description": "Diagnostic badge suggestion for generic network errors" + }, + "logIssueTrackNotFoundLabel": "TRACK NOT FOUND", + "@logIssueTrackNotFoundLabel": { + "description": "Diagnostic badge label when a track is unavailable" + }, + "logIssueTrackNotFoundDescription": "Some tracks could not be found on download services", + "@logIssueTrackNotFoundDescription": { + "description": "Diagnostic badge description when a track is unavailable" + }, + "logIssueTrackNotFoundSuggestion": "The track may not be available in lossless quality", + "@logIssueTrackNotFoundSuggestion": { + "description": "Diagnostic badge suggestion when a track is unavailable" + }, + "clickableLookingUpArtist": "Looking up artist...", + "@clickableLookingUpArtist": { + "description": "Snackbar shown while clickable artist metadata is being resolved" + }, + "clickableInformationUnavailable": "{type} information not available", + "@clickableInformationUnavailable": { + "description": "Snackbar shown when clickable metadata cannot open a destination", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "extensionDetailsTags": "Tags", + "@extensionDetailsTags": { + "description": "Section title for extension tags" + }, + "extensionDetailsInformation": "Information", + "@extensionDetailsInformation": { + "description": "Section title for extension metadata information" + }, + "extensionUtilityFunctions": "Utility Functions", + "@extensionUtilityFunctions": { + "description": "Capability label for utility-only extensions" + }, + "actionDismiss": "Dismiss", + "@actionDismiss": { + "description": "Generic action - dismiss" + }, + "setupChangeFolderTooltip": "Change folder", + "@setupChangeFolderTooltip": { + "description": "Tooltip for editing the selected download folder" + }, + "a11yOpenTrackByArtist": "Open track {trackName} by {artistName}", + "@a11yOpenTrackByArtist": { + "description": "Accessibility label for opening a track item", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "a11yOpenItem": "Open {itemType} {name}", + "@a11yOpenItem": { + "description": "Accessibility label for opening a generic item", + "placeholders": { + "itemType": { + "type": "String" + }, + "name": { + "type": "String" + } + } + }, + "a11yOpenItemCount": "Open {title}, {count} {count, plural, =1{item} other{items}}", + "@a11yOpenItemCount": { + "description": "Accessibility label for opening a grouped item with count", + "placeholders": { + "title": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "a11yOpenAlbumByArtistTrackCount": "Open album {albumName} by {artistName}, {trackCount} tracks", + "@a11yOpenAlbumByArtistTrackCount": { + "description": "Accessibility label for opening an album item with track count", + "placeholders": { + "albumName": { + "type": "String" + }, + "artistName": { + "type": "String" + }, + "trackCount": { + "type": "int" + } + } + }, + "a11yTrackByArtist": "{trackName} by {artistName}", + "@a11yTrackByArtist": { + "description": "Accessibility label for a queue or list track item", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "a11ySelectAlbum": "Select album {albumName}", + "@a11ySelectAlbum": { + "description": "Accessibility label for selecting an album", + "placeholders": { + "albumName": { + "type": "String" + } + } + }, + "a11yOpenAlbum": "Open album {albumName}", + "@a11yOpenAlbum": { + "description": "Accessibility label for opening an album", + "placeholders": { + "albumName": { + "type": "String" + } + } + }, + "settingsFiles": "Files & Folders", + "@settingsFiles": { + "description": "Settings menu item - file and folder settings" + }, + "settingsFilesSubtitle": "Download location, filename, folder structure", + "@settingsFilesSubtitle": { + "description": "Subtitle for files & folders settings" + }, + "settingsMetadata": "Metadata", + "@settingsMetadata": { + "description": "Settings menu item - metadata settings" + }, + "settingsMetadataSubtitle": "Cover art, tags, ReplayGain, providers", + "@settingsMetadataSubtitle": { + "description": "Subtitle for metadata settings" + }, + "settingsLyrics": "Lyrics", + "@settingsLyrics": { + "description": "Settings menu item - lyrics settings" + }, + "settingsLyricsSubtitle": "Embed, mode, providers, language options", + "@settingsLyricsSubtitle": { + "description": "Subtitle for lyrics settings" + }, + "settingsApp": "App", + "@settingsApp": { + "description": "Settings menu item - app settings" + }, + "settingsAppSubtitle": "Updates, data, extension repo, debug", + "@settingsAppSubtitle": { + "description": "Subtitle for app settings" + }, + "sectionMetadataProviders": "Providers", + "@sectionMetadataProviders": { + "description": "Settings section header for metadata providers" + }, + "sectionDuplicates": "Duplicates", + "@sectionDuplicates": { + "description": "Settings section header for deduplication" + }, + "sectionLyricsProviderOptions": "Provider Options", + "@sectionLyricsProviderOptions": { + "description": "Settings section header for per-provider lyrics options" + }, + "metadataProvidersTitle": "Metadata Provider Priority", + "@metadataProvidersTitle": { + "description": "Settings item title for metadata provider order" + }, + "metadataProvidersSubtitle": "Drag to set search and metadata source order", + "@metadataProvidersSubtitle": { + "description": "Subtitle for metadata provider priority item" + }, + "downloadDeduplication": "Skip Duplicate Downloads", + "@downloadDeduplication": { + "description": "Setting - skip tracks already in download history" + }, + "downloadDeduplicationEnabled": "Already-downloaded tracks will be skipped", + "@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" @@ -6004,99 +5746,1084 @@ "@trackOptionDownloadQualityVariant": { "description": "Track menu action to download another quality version" }, + "downloadFallbackExtensions": "Fallback Extensions", + "@downloadFallbackExtensions": { + "description": "Settings item for configuring fallback extension providers" + }, + "downloadFallbackExtensionsSubtitle": "Choose which extensions can be used as fallback", + "@downloadFallbackExtensionsSubtitle": { + "description": "Subtitle for fallback extensions item" + }, + "editMetadataFieldDateHint": "YYYY-MM-DD or YYYY", + "@editMetadataFieldDateHint": { + "description": "Hint text for the edit metadata date field" + }, + "editMetadataFieldTrackTotal": "Track Total", + "@editMetadataFieldTrackTotal": { + "description": "Label for total tracks field in the edit metadata sheet" + }, + "editMetadataFieldDiscTotal": "Disc Total", + "@editMetadataFieldDiscTotal": { + "description": "Label for total discs field in the edit metadata sheet" + }, + "editMetadataFieldComposer": "Composer", + "@editMetadataFieldComposer": { + "description": "Label for composer field in the edit metadata sheet" + }, + "editMetadataFieldComment": "Comment", + "@editMetadataFieldComment": { + "description": "Label for comment field in the edit metadata sheet" + }, + "trackAlbumType": "Release Type", + "@trackAlbumType": { + "description": "Label for an album or release type metadata value" + }, + "editMetadataFieldAlbumTypeHint": "Album, single, EP, compilation...", + "@editMetadataFieldAlbumTypeHint": { + "description": "Hint for the release type metadata field" + }, + "editMetadataFieldExplicit": "Explicit", + "@editMetadataFieldExplicit": { + "description": "Label for the explicit content metadata field" + }, + "editMetadataFieldExplicitHint": "Mark this track as containing explicit content", + "@editMetadataFieldExplicitHint": { + "description": "Description for the explicit content metadata switch" + }, + "metadataExplicitValue": "Explicit", + "@metadataExplicitValue": { + "description": "Displayed value when a track is marked explicit" + }, + "editMetadataFieldUpc": "UPC / Barcode", + "@editMetadataFieldUpc": { + "description": "Label for the release barcode metadata field" + }, + "editMetadataFieldUpcHint": "Numeric UPC, EAN, or GTIN", + "@editMetadataFieldUpcHint": { + "description": "Hint for the release barcode metadata field" + }, + "editMetadataAdvanced": "Advanced", + "@editMetadataAdvanced": { + "description": "Expandable section label for advanced metadata fields" + }, + "libraryFilterMetadataMissingTrackNumber": "Missing track number", + "@libraryFilterMetadataMissingTrackNumber": { + "description": "Filter option - items missing track number" + }, + "libraryFilterMetadataMissingDiscNumber": "Missing disc number", + "@libraryFilterMetadataMissingDiscNumber": { + "description": "Filter option - items missing disc number" + }, + "libraryFilterMetadataMissingArtist": "Missing artist", + "@libraryFilterMetadataMissingArtist": { + "description": "Filter option - items missing artist" + }, + "libraryFilterMetadataIncorrectIsrcFormat": "Incorrect ISRC format", + "@libraryFilterMetadataIncorrectIsrcFormat": { + "description": "Filter option - items with an invalid ISRC format" + }, + "libraryFilterMetadataMissingIsrc": "Missing ISRC", + "@libraryFilterMetadataMissingIsrc": { + "description": "Filter option - items without any ISRC tag" + }, + "libraryFilterMetadataMissingLabel": "Missing label", + "@libraryFilterMetadataMissingLabel": { + "description": "Filter option - items missing record label" + }, + "collectionDeletePlaylistsMessage": "Delete {count} {count, plural, =1{playlist} other{playlists}}?", + "@collectionDeletePlaylistsMessage": { + "description": "Confirmation message for deleting selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionPlaylistsDeleted": "{count} {count, plural, =1{playlist} other{playlists}} deleted", + "@collectionPlaylistsDeleted": { + "description": "Snackbar after deleting selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionAddedTracksToPlaylist": "Added {count} {count, plural, =1{track} other{tracks}} to {playlistName}", + "@collectionAddedTracksToPlaylist": { + "description": "Snackbar after adding multiple tracks to a playlist", + "placeholders": { + "count": { + "type": "int" + }, + "playlistName": { + "type": "String" + } + } + }, + "collectionAddedTracksToPlaylistWithExisting": "Added {count} {count, plural, =1{track} other{tracks}} to {playlistName} ({alreadyCount} already in playlist)", + "@collectionAddedTracksToPlaylistWithExisting": { + "description": "Snackbar after adding multiple tracks to a playlist when some were already present", + "placeholders": { + "count": { + "type": "int" + }, + "playlistName": { + "type": "String" + }, + "alreadyCount": { + "type": "int" + } + } + }, + "itemCount": "{count} {count, plural, =1{item} other{items}}", + "@itemCount": { + "description": "Generic item count label", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackReEnrichSuccessWithFailures": "Metadata re-enriched successfully ({successCount}/{total}) - Failed: {failedCount}", + "@trackReEnrichSuccessWithFailures": { + "description": "Snackbar summary after batch metadata re-enrichment finishes with failures", + "placeholders": { + "successCount": { + "type": "int" + }, + "total": { + "type": "int" + }, + "failedCount": { + "type": "int" + } + } + }, + "selectionDeleteTracksCount": "Delete {count} {count, plural, =1{track} other{tracks}}", + "@selectionDeleteTracksCount": { + "description": "Button label for deleting selected tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueDownloadSpeedStatus": "Downloading - {speed} MB/s", + "@queueDownloadSpeedStatus": { + "description": "Queue status while downloading with speed", + "placeholders": { + "speed": { + "type": "String" + } + } + }, + "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" + }, + "@queueCheckingDownloadSession": { + "description": "Queue status while the download provider's session is being checked during preparation (preparationStage 'checking_session'). This is about the provider session, not about locating a finished file." + }, + "a11ySelectTrack": "Select track", + "@a11ySelectTrack": { + "description": "Accessibility label for selecting a track" + }, + "a11yDeselectTrack": "Deselect track", + "@a11yDeselectTrack": { + "description": "Accessibility label for deselecting a track" + }, + "a11yPlayTrackByArtist": "Play {trackName} by {artistName}", + "@a11yPlayTrackByArtist": { + "description": "Accessibility label for playing a local library track", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "storeExtensionsCount": "{count} {count, plural, =1{extension} other{extensions}}", + "@storeExtensionsCount": { + "description": "Store extension result count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "storeRequiresVersion": "Requires v{version}+", + "@storeRequiresVersion": { + "description": "Store compatibility badge for minimum app version", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "actionGo": "Go", + "@actionGo": { + "description": "Generic action button label" + }, + "logIssueSummary": "Issue Summary", + "@logIssueSummary": { + "description": "Header for log issue analysis summary" + }, + "logTotalErrors": "Total errors: {count}", + "@logTotalErrors": { + "description": "Total error count in log issue analysis", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "logAffectedDomains": "Affected: {domains}", + "@logAffectedDomains": { + "description": "Affected domains in log issue analysis", + "placeholders": { + "domains": { + "type": "String" + } + } + }, + "libraryScanCancelled": "Scan cancelled", + "@libraryScanCancelled": { + "description": "Library scan status when a scan was cancelled" + }, + "libraryScanCancelledSubtitle": "You can retry the scan when ready.", + "@libraryScanCancelledSubtitle": { + "description": "Library scan status subtitle after cancellation" + }, + "libraryDownloadsHistoryExcluded": "{count} from Downloads history (excluded from list)", + "@libraryDownloadsHistoryExcluded": { + "description": "Library count note for downloaded history items excluded from the local list", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadNativeWorker": "Native download worker", + "@downloadNativeWorker": { + "description": "Setting title for Android native download worker" + }, + "downloadNativeWorkerSubtitle": "Android background service for extension downloads", + "@downloadNativeWorkerSubtitle": { + "description": "Setting subtitle for Android native download worker" + }, + "extensionServiceStatus": "Service Status", + "@extensionServiceStatus": { + "description": "Extension detail section header for service status" + }, + "extensionServiceHealth": "Service health", + "@extensionServiceHealth": { + "description": "Extension capability label for service health checks" + }, + "extensionHealthChecksConfigured": "{count} {count, plural, =1{check} other{checks}} configured", + "@extensionHealthChecksConfigured": { + "description": "Extension service health check count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionOauthConnectHint": "Tap Connect to Spotify to fill this field.", + "@extensionOauthConnectHint": { + "description": "Hint for an OAuth login link field before connecting Spotify" + }, + "extensionLastChecked": "Last checked {time}", + "@extensionLastChecked": { + "description": "Timestamp for the latest extension service health check", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "extensionRefreshStatus": "Refresh status", + "@extensionRefreshStatus": { + "description": "Tooltip for refreshing extension service health status" + }, + "extensionCustomUrlHandling": "Custom URL Handling", + "@extensionCustomUrlHandling": { + "description": "Extension detail section title for custom URL handling" + }, + "extensionCustomUrlHandlingSubtitle": "This extension can handle links from these sites", + "@extensionCustomUrlHandlingSubtitle": { + "description": "Extension detail subtitle for custom URL handling" + }, + "extensionCustomUrlHandlingShareHint": "Share links from these sites to SpotiFLAC Mobile and this extension will handle them.", + "@extensionCustomUrlHandlingShareHint": { + "description": "Extension detail hint explaining share-to-app URL handling" + }, + "extensionSettingsCount": "{count} {count, plural, =1{setting} other{settings}}", + "@extensionSettingsCount": { + "description": "Count of settings exposed by an extension quality option", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionHealthOnline": "Online", + "@extensionHealthOnline": { + "description": "Extension service health status - online" + }, + "extensionHealthDegraded": "Degraded", + "@extensionHealthDegraded": { + "description": "Extension service health status - degraded" + }, + "extensionHealthOffline": "Offline", + "@extensionHealthOffline": { + "description": "Extension service health status - offline" + }, + "extensionHealthNotConfigured": "Not configured", + "@extensionHealthNotConfigured": { + "description": "Extension service health status - not configured" + }, + "extensionHealthUnknown": "Unknown", + "@extensionHealthUnknown": { + "description": "Extension service health status - unknown" + }, + "extensionHealthRequired": "required", + "@extensionHealthRequired": { + "description": "Label for a required extension service health check" + }, + "extensionSettingNotSet": "Not set", + "@extensionSettingNotSet": { + "description": "Value shown when an extension setting has no value" + }, + "extensionActionFailed": "Action failed", + "@extensionActionFailed": { + "description": "Fallback error when an extension action fails without details" + }, + "extensionEnterValue": "Enter value", + "@extensionEnterValue": { + "description": "Hint for editing an extension setting value" + }, + "extensionHealthServiceOnline": "Service online", + "@extensionHealthServiceOnline": { + "description": "Tooltip for online extension service" + }, + "extensionHealthServiceDegraded": "Service degraded", + "@extensionHealthServiceDegraded": { + "description": "Tooltip for degraded extension service" + }, + "extensionHealthServiceOffline": "Service offline", + "@extensionHealthServiceOffline": { + "description": "Tooltip for offline extension service" + }, + "extensionHealthServiceUnknown": "Service status unknown", + "@extensionHealthServiceUnknown": { + "description": "Tooltip for unknown extension service health" + }, + "audioAnalysisStereo": "Stereo", + "@audioAnalysisStereo": { + "description": "Audio channel layout label - stereo" + }, + "audioAnalysisMono": "Mono", + "@audioAnalysisMono": { + "description": "Audio channel layout label - mono" + }, + "trackOpenInService": "Open in {serviceName}", + "@trackOpenInService": { + "description": "Button label to open a track in a named music service", + "placeholders": { + "serviceName": { + "type": "String" + } + } + }, + "trackLyricsEmbeddedSource": "Embedded", + "@trackLyricsEmbeddedSource": { + "description": "Lyrics source label for embedded lyrics" + }, + "unknownAlbum": "Unknown Album", + "@unknownAlbum": { + "description": "Fallback album name when metadata is missing" + }, + "unknownArtist": "Unknown Artist", + "@unknownArtist": { + "description": "Fallback artist name when metadata is missing" + }, + "permissionAudio": "Audio", + "@permissionAudio": { + "description": "Audio permission type label" + }, + "permissionStorage": "Storage", + "@permissionStorage": { + "description": "Storage permission type label" + }, + "permissionNotification": "Notification", + "@permissionNotification": { + "description": "Notification permission type label" + }, + "errorInvalidFolderSelected": "Invalid folder selected", + "@errorInvalidFolderSelected": { + "description": "Error when the selected folder is invalid" + }, + "storeAnyVersion": "Any", + "@storeAnyVersion": { + "description": "Store detail value when any app version is accepted" + }, + "storeCategoryMetadata": "Metadata", + "@storeCategoryMetadata": { + "description": "Store extension category - metadata" + }, + "storeCategoryDownload": "Download", + "@storeCategoryDownload": { + "description": "Store extension category - download" + }, + "storeCategoryUtility": "Utility", + "@storeCategoryUtility": { + "description": "Store extension category - utility" + }, + "storeCategoryLyrics": "Lyrics", + "@storeCategoryLyrics": { + "description": "Store extension category - lyrics" + }, + "storeCategoryIntegration": "Integration", + "@storeCategoryIntegration": { + "description": "Store extension category - integration" + }, + "artistReleases": "Releases", + "@artistReleases": { + "description": "Section header for all artist releases" + }, + "editMetadataSelectNone": "None", + "@editMetadataSelectNone": { + "description": "Button to clear selected fields for auto-fill" + }, + "queueRetryAllFailed": "Retry {count} failed", + "@queueRetryAllFailed": { + "description": "Button to retry every failed download in the queue", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "settingsSaveDownloadHistory": "Save download history", + "@settingsSaveDownloadHistory": { + "description": "Settings switch title for storing completed downloads in history" + }, + "settingsSaveDownloadHistorySubtitle": "Keep completed downloads in history and library views", + "@settingsSaveDownloadHistorySubtitle": { + "description": "Settings switch subtitle for storing completed downloads in history" + }, + "dialogDisableHistoryTitle": "Turn off download history?", + "@dialogDisableHistoryTitle": { + "description": "Confirmation dialog title shown before disabling download history" + }, + "dialogDisableHistoryMessage": "Existing history will be cleared. Downloaded files will not be deleted.", + "@dialogDisableHistoryMessage": { + "description": "Confirmation dialog message shown before disabling download history" + }, + "dialogDisableAndClear": "Turn off and clear", + "@dialogDisableAndClear": { + "description": "Confirmation action to disable download history and clear existing entries" + }, + "openInOtherServices": "Open in Other Services", + "@openInOtherServices": { + "description": "Title and tooltip for finding the current collection in other services" + }, + "shareSheetNoExtensions": "No other compatible services", + "@shareSheetNoExtensions": { + "description": "Empty state when no extensions can be searched for cross-service links" + }, + "shareSheetNotFound": "Not found", + "@shareSheetNotFound": { + "description": "Cross-service share sheet row subtitle when a service has no match" + }, + "shareSheetCopyLink": "Copy Link", + "@shareSheetCopyLink": { + "description": "Tooltip for copying a cross-service link" + }, + "shareSheetLinkCopied": "{service} link copied", + "@shareSheetLinkCopied": { + "description": "Snackbar after copying a cross-service link", + "placeholders": { + "service": {} + } + }, + "libraryPlayback": "Playback", + "@libraryPlayback": { + "description": "Section header for playback settings in library settings" + }, + "libraryExternalPlayer": "External player", + "@libraryExternalPlayer": { + "description": "Setting option to use an external music player" + }, + "libraryExternalPlayerSubtitle": "Recommended for listening, best quality, gapless playback, EQ, and wider format support", + "@libraryExternalPlayerSubtitle": { + "description": "Subtitle for external player option" + }, + "libraryBuiltInPreviewPlayer": "Built-in preview player", + "@libraryBuiltInPreviewPlayer": { + "description": "Setting option to use the built-in preview player" + }, + "libraryBuiltInPreviewPlayerSubtitle": "Quick local previews inside SpotiFLAC Mobile", + "@libraryBuiltInPreviewPlayerSubtitle": { + "description": "Subtitle for built-in preview player option" + }, + "libraryBuiltInPlayerInfo": "The built-in player is a preview tool for checking local tracks quickly. Use an external music player for actual listening.", + "@libraryBuiltInPlayerInfo": { + "description": "Info note explaining the built-in player is for previews only" + }, + "nowPlayingTitle": "Now Playing", + "@nowPlayingTitle": { + "description": "Title for the now playing screen" + }, + "nowPlayingNothingPlaying": "Nothing is playing", + "@nowPlayingNothingPlaying": { + "description": "Empty state when no track is currently playing" + }, + "nowPlayingMinimize": "Minimize", + "@nowPlayingMinimize": { + "description": "Tooltip for minimizing the now playing screen" + }, + "nowPlayingUpNext": "Up next", + "@nowPlayingUpNext": { + "description": "Title for the playback queue sheet" + }, + "nowPlayingPreviousTrack": "Previous track", + "@nowPlayingPreviousTrack": { + "description": "Tooltip for the previous-track playback control" + }, + "nowPlayingNextTrack": "Next track", + "@nowPlayingNextTrack": { + "description": "Tooltip for the next-track playback control" + }, + "nowPlayingDetails": "Details", + "@nowPlayingDetails": { + "description": "Menu item and section title for track metadata details" + }, + "nowPlayingSleepTimer": "Sleep timer", + "@nowPlayingSleepTimer": { + "description": "Menu item and sheet title for the playback sleep timer" + }, + "nowPlayingSleepTimerActive": "Ends at {time}", + "@nowPlayingSleepTimerActive": { + "description": "Active sleep timer deadline shown in the player menu", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "nowPlayingSleepTimerMinutes": "{minutes, plural, =1{1 minute} other{{minutes} minutes}}", + "@nowPlayingSleepTimerMinutes": { + "description": "Duration choice for the playback sleep timer", + "placeholders": { + "minutes": { + "type": "int" + } + } + }, + "nowPlayingSleepTimerOff": "Turn off sleep timer", + "@nowPlayingSleepTimerOff": { + "description": "Action to cancel the active playback sleep timer" + }, + "nowPlayingSleepTimerSet": "Sleep timer set for {duration}", + "@nowPlayingSleepTimerSet": { + "description": "Confirmation after setting the playback sleep timer", + "placeholders": { + "duration": { + "type": "String" + } + } + }, + "nowPlayingSleepTimerCancelled": "Sleep timer turned off", + "@nowPlayingSleepTimerCancelled": { + "description": "Confirmation after cancelling the playback sleep timer" + }, + "nowPlayingOpenInExternalPlayer": "Open in external player", + "@nowPlayingOpenInExternalPlayer": { + "description": "Menu item to open the current track in an external player" + }, + "nowPlayingTabPlayer": "Player", + "@nowPlayingTabPlayer": { + "description": "Tab label for the player view" + }, + "nowPlayingTabLyrics": "Lyrics", + "@nowPlayingTabLyrics": { + "description": "Tab label for the lyrics view" + }, + "nowPlayingNoLyrics": "No lyrics in this file", + "@nowPlayingNoLyrics": { + "description": "Empty state when the playing file has no embedded lyrics" + }, + "nowPlayingLibraryEmpty": "Your library is empty", + "@nowPlayingLibraryEmpty": { + "description": "Snackbar when shuffle library is requested but library has no tracks" + }, + "nowPlayingShuffleLibraryFailed": "Could not shuffle library: {error}", + "@nowPlayingShuffleLibraryFailed": { + "description": "Snackbar when shuffling the library fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "nowPlayingShuffleOn": "Shuffle on", + "@nowPlayingShuffleOn": { + "description": "Tooltip when shuffle mode is enabled" + }, + "nowPlayingPlayInOrder": "Play in order", + "@nowPlayingPlayInOrder": { + "description": "Tooltip when shuffle mode is disabled" + }, + "nowPlayingShuffleLibrary": "Shuffle library", + "@nowPlayingShuffleLibrary": { + "description": "Button label to shuffle and play the entire local library" + }, + "nowPlayingQueueEmpty": "Queue is empty", + "@nowPlayingQueueEmpty": { + "description": "Empty state when the playback queue has no items" + }, + "nowPlayingNoMetadata": "No metadata available", + "@nowPlayingNoMetadata": { + "description": "Empty state when track metadata cannot be loaded" + }, + "announcementUnableToOpenLink": "Unable to open link. Please try again.", + "@announcementUnableToOpenLink": { + "description": "Snackbar shown when an announcement CTA link cannot be opened" + }, + "trackConvertLosslessOutputWithCap": "Lossless output with {quality} cap", + "@trackConvertLosslessOutputWithCap": { + "description": "Hint shown when lossless conversion will cap bit depth or sample rate", + "placeholders": { + "quality": { + "type": "String" + } + } + }, + "trackConvertConfirmMessageLosslessCapped": "Convert from {sourceFormat} to {targetFormat} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original file will be deleted after conversion.", + "@trackConvertConfirmMessageLosslessCapped": { + "description": "Confirmation dialog message for capped lossless conversion of a single file", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "selectionBatchConvertConfirmMessageLosslessCapped": "Convert {count} {count, plural, =1{track} other{tracks}} to {format} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original files will be deleted after conversion.", + "@selectionBatchConvertConfirmMessageLosslessCapped": { + "description": "Confirmation dialog message for capped lossless batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "trackConvertActionLabelLossless": "{sourceFormat} → {targetFormat} ({quality})", + "@trackConvertActionLabelLossless": { + "description": "Convert button label for lossless conversion with quality cap", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "trackConvertActionLabelLossy": "{sourceFormat} → {targetFormat} @ {bitrate}", + "@trackConvertActionLabelLossy": { + "description": "Convert button label for lossy conversion", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "aboutPaxsenixSubtitle": "Lyrics proxy for Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou, and Genius", + "@aboutPaxsenixSubtitle": { + "description": "Subtitle for Paxsenix special thanks entry on the about page" + }, + "snackbarPlayingNext": "Playing next", + "@snackbarPlayingNext": { + "description": "Snackbar when a track is inserted as the next queue item" + }, + "snackbarAddedToQueueGeneric": "Added to queue", + "@snackbarAddedToQueueGeneric": { + "description": "Snackbar when a track is added to the playback queue without naming it" + }, + "selectionDeletePlaylistsCount": "Delete {count} {count, plural, =1{playlist} other{playlists}}", + "@selectionDeletePlaylistsCount": { + "description": "Button label for deleting multiple selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "actionShuffle": "Shuffle", + "@actionShuffle": { + "description": "Tooltip for shuffle playback action" + }, + "downloadPrimaryArtistOnlyOn": "Primary only: On", + "@downloadPrimaryArtistOnlyOn": { + "description": "Status label when primary-artist-only folder naming is enabled" + }, + "downloadPrimaryArtistOnlyOff": "Primary only: Off", + "@downloadPrimaryArtistOnlyOff": { + "description": "Status label when primary-artist-only folder naming is disabled" + }, + "downloadAlbumArtistMetadataPrimaryOnly": "Album Artist metadata: Primary only", + "@downloadAlbumArtistMetadataPrimaryOnly": { + "description": "Status label when album-artist folder filtering uses primary artist only" + }, + "downloadAlbumArtistMetadataFull": "Album Artist metadata: Full", + "@downloadAlbumArtistMetadataFull": { + "description": "Status label when album-artist folder filtering uses full metadata" + }, + "trackConvertOriginal": "Original", + "@trackConvertOriginal": { + "description": "Label for keeping original bit depth or sample rate during conversion" + }, + "trackConvertOriginalQuality": "Original quality", + "@trackConvertOriginalQuality": { + "description": "Label when no bit depth or sample rate cap is applied during lossless conversion" + }, + "trackConvertLosslessSuffix": "Lossless", + "@trackConvertLosslessSuffix": { + "description": "Suffix used in converted lossless quality labels" + }, + "trackConvertDithering": "Dithering", + "@trackConvertDithering": { + "description": "Section label for lossless conversion dithering options" + }, + "trackConvertResampler": "Resampler", + "@trackConvertResampler": { + "description": "Section label for lossless conversion resampler options" + }, + "trackConvertDitherNone": "None", + "@trackConvertDitherNone": { + "description": "Lossless conversion dither option with no dithering applied" + }, + "trackConvertDitherTriangular": "TPDF", + "@trackConvertDitherTriangular": { + "description": "Lossless conversion triangular probability density function dither option" + }, + "trackConvertDitherTriangularHp": "Triangular HP", + "@trackConvertDitherTriangularHp": { + "description": "Lossless conversion high-pass triangular dither option" + }, + "trackConvertResamplerSwr": "SWR", + "@trackConvertResamplerSwr": { + "description": "Lossless conversion default FFmpeg swresample resampler option" + }, + "trackConvertResamplerSoxr": "SoXr", + "@trackConvertResamplerSoxr": { + "description": "Lossless conversion SoX resampler option" + }, + "updateSeeReleaseNotes": "See release notes for details.", + "@updateSeeReleaseNotes": { + "description": "Fallback changelog text when release notes cannot be parsed" + }, + "unknownTitle": "Unknown title", + "@unknownTitle": { + "description": "Fallback track title when metadata is missing" + }, + "trackPlayNext": "Play next", + "@trackPlayNext": { + "description": "Menu action to play a track as the next queue item" + }, + "trackAddToQueue": "Add to queue", + "@trackAddToQueue": { + "description": "Menu action to add a track to the playback queue" + }, + "snackbarExtensionInstalledEnable": "{extensionName} installed. Enable it in Settings > Extensions", + "@snackbarExtensionInstalledEnable": { + "description": "Snackbar after installing an extension from the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "snackbarExtensionUpdatedVersion": "{extensionName} updated to v{version}", + "@snackbarExtensionUpdatedVersion": { + "description": "Snackbar after updating an extension from the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + }, + "version": { + "type": "String" + } + } + }, + "snackbarFailedToInstallNamed": "Failed to install {extensionName}", + "@snackbarFailedToInstallNamed": { + "description": "Snackbar when extension install fails in the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "snackbarFailedToUpdateNamed": "Failed to update {extensionName}", + "@snackbarFailedToUpdateNamed": { + "description": "Snackbar when extension update fails in the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "releaseTypeEp": "EP", + "@releaseTypeEp": { + "description": "Badge label for EP releases" + }, + "releaseTypeSingle": "Single", + "@releaseTypeSingle": { + "description": "Badge label for single releases" + }, + "trackCoverOnline": "Online cover", + "@trackCoverOnline": { + "description": "Label shown when metadata autofill downloaded cover art from the internet" + }, + "regionCountryUS": "United States", + "@regionCountryUS": { + "description": "Country name for SongLink region picker" + }, + "regionCountryGB": "United Kingdom", + "@regionCountryGB": { + "description": "Country name for SongLink region picker" + }, + "regionCountryFR": "France", + "@regionCountryFR": { + "description": "Country name for SongLink region picker" + }, + "regionCountryDE": "Germany", + "@regionCountryDE": { + "description": "Country name for SongLink region picker" + }, + "regionCountryJP": "Japan", + "@regionCountryJP": { + "description": "Country name for SongLink region picker" + }, + "regionCountryKR": "South Korea", + "@regionCountryKR": { + "description": "Country name for SongLink region picker" + }, + "regionCountryIN": "India", + "@regionCountryIN": { + "description": "Country name for SongLink region picker" + }, + "regionCountryID": "Indonesia", + "@regionCountryID": { + "description": "Country name for SongLink region picker" + }, + "regionCountryBR": "Brazil", + "@regionCountryBR": { + "description": "Country name for SongLink region picker" + }, + "regionCountryMX": "Mexico", + "@regionCountryMX": { + "description": "Country name for SongLink region picker" + }, + "regionCountryAU": "Australia", + "@regionCountryAU": { + "description": "Country name for SongLink region picker" + }, + "regionCountryCA": "Canada", + "@regionCountryCA": { + "description": "Country name for SongLink region picker" + }, + "regionCountryXK": "Kosovo", + "@regionCountryXK": { + "description": "Country name for SongLink region picker" + }, + "extensionVerificationBrowserTitle": "Verification browser", + "@extensionVerificationBrowserTitle": { + "description": "Settings option title for extension verification browser preference" + }, + "extensionVerificationBrowserSubtitleExternal": "Open challenges in the default browser first", + "@extensionVerificationBrowserSubtitleExternal": { + "description": "Subtitle when external browser is preferred for extension verification" + }, + "extensionVerificationBrowserSubtitleInApp": "Open challenges in the in-app browser first", + "@extensionVerificationBrowserSubtitleInApp": { + "description": "Subtitle when in-app browser is preferred for extension verification" + }, + "extensionVerificationBrowserExternal": "External", + "@extensionVerificationBrowserExternal": { + "description": "Chip label for external browser verification mode" + }, + "extensionVerificationBrowserInApp": "In-app", + "@extensionVerificationBrowserInApp": { + "description": "Chip label for in-app browser verification mode" + }, + "extensionVerificationUnavailable": "No verification page is available for {extension}. Retry the download to request a new challenge.", + "@extensionVerificationUnavailable": { + "description": "Shown when the app cannot retrieve a pending verification challenge", + "placeholders": { + "extension": { + "type": "String" + } + } + }, + "extensionVerificationHelpTitleManual": "Open verification manually", + "@extensionVerificationHelpTitleManual": { + "description": "Dialog title when automatic browser launch for verification fails" + }, + "extensionVerificationHelpTitleWaiting": "Verification still waiting", + "@extensionVerificationHelpTitleWaiting": { + "description": "Dialog title when verification is taking longer than expected" + }, + "extensionVerificationHelpMessageManual": "SpotiFLAC Mobile could not open the browser automatically. Open this link in your browser, or copy it manually.", + "@extensionVerificationHelpMessageManual": { + "description": "Dialog message when automatic browser launch for verification fails" + }, + "extensionVerificationHelpMessageWaiting": "If the browser did not open, or verification finished but did not return to SpotiFLAC Mobile, open this link again or copy it manually.", + "@extensionVerificationHelpMessageWaiting": { + "description": "Dialog message when verification may need manual browser help" + }, + "extensionVerificationClose": "Close", + "@extensionVerificationClose": { + "description": "Button to dismiss the extension verification help dialog" + }, + "extensionVerificationCopyLink": "Copy link", + "@extensionVerificationCopyLink": { + "description": "Button to copy the extension verification URL" + }, + "extensionVerificationLinkCopied": "Verification link copied", + "@extensionVerificationLinkCopied": { + "description": "Snackbar after copying the extension verification URL" + }, + "extensionVerificationOpenBrowser": "Open browser", + "@extensionVerificationOpenBrowser": { + "description": "Button to open the extension verification URL in a browser" + }, "settingsSearchHint": "Search settings", + "@settingsSearchHint": { + "description": "Placeholder of the search field on the Settings tab" + }, "settingsSearchNoResults": "No settings match \"{query}\"", + "@settingsSearchNoResults": { + "description": "Shown when a Settings search returns nothing", + "placeholders": { + "query": { + "type": "String" + } + } + }, "settingsGroupInterface": "Extensions & appearance", + "@settingsGroupInterface": { + "description": "Settings group covering look and feel" + }, "settingsGroupContent": "Content & metadata", + "@settingsGroupContent": { + "description": "Settings group covering the library, metadata and lyrics" + }, "settingsGroupDownloads": "Downloads & files", + "@settingsGroupDownloads": { + "description": "Settings group covering download behaviour and storage" + }, "settingsGroupSystem": "System", + "@settingsGroupSystem": { + "description": "Settings group covering app-level data, cache and logs" + }, "settingsGroupHelp": "About & support", - "collectionExportM3u": "Export as M3U8", - "collectionExportM3uDone": "Exported {exported} of {total} tracks", - "collectionExportM3uNone": "No downloaded files to export", - "collectionExportM3uFailed": "Export failed", - "trackOpenOn": "Open on...", - "trackOpenOnNoLinks": "No platform links found for this track.", - "libraryReviewDuplicates": "Review duplicates", - "libraryReviewDuplicatesSubtitle": "Find tracks stored more than once", - "duplicatesTitle": "Duplicates", - "duplicatesEmpty": "No duplicate tracks found.", - "duplicatesKeepBest": "Keep best", - "duplicatesKeepBestMessage": "Delete {count} lower-quality copies of \"{trackName}\"?", - "duplicatesDeleteCopyMessage": "Delete this copy of \"{trackName}\"?", - "downloadAutoConvert": "Auto-convert after download", - "downloadAutoConvertSubtitle": "Convert completed downloads to a smaller lossy format. The original is replaced only after conversion succeeds.", - "downloadAutoConvertFormat": "Output format", - "downloadAutoConvertFormatSubtitle": "Choose the lossy format used for newly completed downloads.", - "downloadAutoConvertBitrate": "Output quality", - "downloadAutoConvertBitrateSubtitle": "Higher bitrates preserve more detail but create larger files.", - "downloadAutoConvertMp3Subtitle": "Best compatibility across players and devices", - "downloadAutoConvertM4aSubtitle": "Efficient AAC audio in an M4A container", - "downloadAutoConvertOpusSubtitle": "Best efficiency for modern players", - "appearanceForceBlur": "Always use blur effects", - "appearanceForceBlurSubtitle": "Enable the navigation bar blur even on devices where it is off by default. May cost performance.", - "recentClearAllMessage": "Clear all recent activity? Download history and music files will not be deleted.", - "libraryAddFolder": "Add library folder", - "libraryAddFolderSubtitle": "Internal storage, SD card, SSD, or another external drive", - "librarySourceOnline": "Online", - "librarySourceOffline": "Offline. Reconnect the storage to restore these tracks", - "librarySourceDisabled": "Disabled", - "librarySourceScanCount": "{scanned} of {total} files scanned ({progress}%)", - "libraryExternalStorage": "External storage", - "libraryRemoveFolder": "Remove library folder", - "libraryRemoveFolderMessage": "Remove this folder and its indexed tracks from SpotiFLAC Mobile? Audio files on the storage will not be deleted.", - "trackReEnrichModeIsrc": "ISRC only", - "trackReEnrichModeIsrcSubtitle": "Find and add the recording identifier without changing other tags", - "trackReEnrichModeMissing": "Fill missing tags", - "trackReEnrichModeMissingSubtitle": "Keep existing values and fill only fields that are empty", - "trackReEnrichModeReplace": "Update selected tags", - "trackReEnrichModeReplaceSubtitle": "Choose which existing values may be replaced by online metadata", - "trackReEnrichFieldsTitle": "Tags to update", - "trackReEnrichReview": "Review changes", - "trackReEnrichReviewTitle": "Review metadata changes", - "trackReEnrichReviewSubtitle": "{changeCount} proposed changes across {trackCount} tracks", - "trackReEnrichNoChanges": "No metadata changes were found for the selected tracks.", - "trackReEnrichApplyChanges": "Apply changes", - "trackReEnrichRefreshOnline": "Refresh from online", - "editMetadataAutoFillSource": "Metadata source", - "editMetadataAutoFillSourceAutomatic": "Automatic (provider priority)", - "editMetadataAutoFillFind": "Find metadata", - "editMetadataAutoFillPreview": "Data from {source}", - "editMetadataAutoFillCoverAvailable": "Cover artwork available", - "editMetadataAutoFillApply": "Apply selected data", - "editMetadataAutoFillDoneFromSource": "Filled {count} {count, plural, =1{field} other{fields}} from {source}", - "queuePlaylistCount": "{count, plural, =1{1 playlist} other{{count} playlists}}", - "queueEmptyPlaylistsSubtitle": "Create a playlist to organize your tracks", - "libraryDefaultView": "Default view", - "libraryDefaultViewLastUsed": "Last used", - "audioAnalysisCutoffNotDetected": "Not detected", - "queueCancelledTitle": "Download cancelled", - "queueCancelledMessage": "This download was cancelled. Retry it or remove it from the queue.", - "trackCoverResolution": "Cover resolution", - "trackCoverResolutionHint": "Sets the longest edge when saved. Enlarging does not add image detail.", - "trackCoverResizeFailed": "The cover image could not be resized. Please try another size or image.", - "queueDownloadNext": "Download next", - "queueMoveUp": "Move up", - "queueMoveDown": "Move down", - "editMetadataMusicBrainzButton": "Fetch from MusicBrainz", - "editMetadataMusicBrainzFilled": "Updated from MusicBrainz", - "editMetadataMusicBrainzNothing": "Nothing found on MusicBrainz", - "editMetadataMusicBrainzNeedsIsrc": "Requires an ISRC tag", - "nowPlayingRepeatOff": "Repeat off", - "nowPlayingRepeatAll": "Repeat all", - "nowPlayingRepeatOne": "Repeat one", - "queueNetworkFailedOffline": "{count} downloads failed while offline", - "trackAlbumType": "Release Type", - "editMetadataFieldAlbumTypeHint": "Album, single, EP, compilation...", - "editMetadataFieldExplicit": "Explicit", - "editMetadataFieldExplicitHint": "Mark this track as containing explicit content", - "metadataExplicitValue": "Explicit", - "editMetadataFieldUpc": "UPC / Barcode", - "editMetadataFieldUpcHint": "Numeric UPC, EAN, or GTIN", - "libraryFilterMetadataMissingIsrc": "Missing ISRC" + "@settingsGroupHelp": { + "description": "Settings group covering the about page and donations" + }, + "libraryFilterMetadataMissingLyrics": "Missing lyrics", + "@libraryFilterMetadataMissingLyrics": { + "description": "Filter option for tracks without embedded or sidecar lyrics" + }, + "trackOptionCopyTrackName": "Copy track name", + "@trackOptionCopyTrackName": { + "description": "Track menu action that copies the track title" + }, + "trackOptionCopyArtist": "Copy artist", + "@trackOptionCopyArtist": { + "description": "Track menu action that copies the artist name" + }, + "trackOptionCopyTrackAndArtist": "Copy track and artist", + "@trackOptionCopyTrackAndArtist": { + "description": "Track menu action that copies the track title and artist" + }, + "metadataCopyValue": "Copy value", + "@metadataCopyValue": { + "description": "Metadata menu action that copies only the selected value" + }, + "metadataCopyField": "Copy field and value", + "@metadataCopyField": { + "description": "Metadata menu action that copies the selected key and value" + }, + "mornyeShowTabs": "Show tabs", + "mornyeSearch": "Search", + "mornyeContinuePlaying": "Continue Playing", + "metadataCopyAll": "Copy all metadata", + "@metadataCopyAll": { + "description": "Metadata menu action that copies every visible key and value" + }, + "optionsEmbeddedCoverSize": "Embedded Cover Size", + "@optionsEmbeddedCoverSize": { + "description": "Metadata setting that limits downloaded artwork resolution before it is embedded" + }, + "optionsEmbeddedCoverSizeDescription": "Downscale remotely downloaded cover art before embedding it. Images already within the limit are kept unchanged.", + "@optionsEmbeddedCoverSizeDescription": { + "description": "Description shown in the embedded cover size picker" + }, + "mornyeFavorite": "Favorite", + "mornyeGoToArtist": "Go to Artist", + "@mornyeFavorite": { + "description": "Compact context menu action that adds a track to Loved" + }, + "mornyeFavorited": "Favorited", + "@mornyeFavorited": { + "description": "Selected state of the compact favorite action" + }, + "autoMixDescription": "Blend songs with beat matching and pitch-preserving tempo adjustment. Uses crossfade when beats cannot be matched.", + "autoMixOn": "AutoMix on", + "autoMixOff": "AutoMix off", + "profileTitle": "Profile", + "profileSetUp": "Set up your profile", + "profileEdit": "Edit name and photo", + "backupIncludesProfile": "Includes your profile name and photo", + "profileName": "Name", + "profileNameHint": "Your name", + "profileChangePhoto": "Choose photo", + "profileRemovePhoto": "Remove photo", + "profilePhotoError": "Choose a valid image smaller than 20 MB.", + "profileSaveError": "Could not save your profile. Please try again.", + "optionsEmbeddedCoverSizeOriginal": "Original resolution", + "@optionsEmbeddedCoverSizeOriginal": { + "description": "Option that preserves the provider artwork at its original resolution" + } } diff --git a/lib/l10n/arb/app_ru.arb b/lib/l10n/arb/app_ru.arb index 34456e0a..1f778bd8 100644 --- a/lib/l10n/arb/app_ru.arb +++ b/lib/l10n/arb/app_ru.arb @@ -1,78 +1,278 @@ { + "upgradeIntroWelcome": "Добро пожаловать в SpotiFLAC-Mobile 5.0", + "upgradeIntroThemeTitle": "Создайте свой\nсобственный стиль.", + "upgradeIntroThemeBody": "Выберите внешний вид. Изменения применятся сразу, и вы можете потом изменить его позже в настройках.", + "upgradeIntroThemeMaterialBody": "Привычный интерфейс с элементами Material и вашим акцентным цветом.", + "upgradeIntroThemeMornyeBody": "Эффект стекла в навигации, обновленная медиатека и плеер с эффектом погружения.", + "upgradeIntroRustTitle": "Новый движок построенный на Rust.", + "upgradeIntroRustBody": "В 5.0 бэкенд приложения переехал из Go to Rust. Это движок, работающий за экранами, которые вы используете каждый день.", + "upgradeIntroRustEngineTitle": "Работа за сценой", + "upgradeIntroRustEngineBody": "Rust обеспечивает обработку загрузок, аудиометаданных, сканирование библиотек и выполнение расширений на Android и iOS.", + "upgradeIntroRustMemoryTitle": "Больше осторожности с памятью", + "upgradeIntroRustMemoryBody": "Повторное использование буферов и сокращение количества копий позволяют уменьшить количество временных выделений памяти при обработке графических объектов и данных расширений.", + "upgradeIntroRustKeepTitle": "Keep your music", + "upgradeIntroRustKeepBody": "Скачивать медиатеку заново не придётся. Ваша музыка и настройки на месте, повторная настройка не нужна.", + "upgradeIntroWelcomeBody": "Быстро расскажем, что изменилось и где это искать.", + "upgradeIntroMornyeBody": "Новый облик плеера, экрана текстов песен и навигации.", + "upgradeIntroLibrarySummary": "Просматривайте свою музыку по плейлистам, исполнителям или альбомам.", + "upgradeIntroRepoSummary": "Выбирайте источники музыки и провайдеров с помощью расширений.", + "upgradeIntroLibraryTitle": "Познакомьтесь со\nсвоей медиатекой.", + "upgradeIntroLibraryBody": "In Mornye, browse by category or find your albums in Recently Added.", + "upgradeIntroDownloadsBody": "Управляйте загрузками в правом верхнем углу. Готовая музыка переносится в «Недавно добавленные».", + "upgradeIntroSearchBody": "Здесь можно искать сохраненную музыку. На отдельной вкладке «Поиск» осуществляется поиск по вашим расширениям.", + "upgradeIntroPlayerTitle": "Настройте\nсвой плеер.", + "upgradeIntroPlayerBody": "Вы можете в любой момент изменить тему и настройки воспроизведения. Вот где их найти.", + "upgradeIntroAppearanceBody": "Change themes in Settings → Appearance. In Mornye, scroll down for compact navigation; scroll up to expand it.", + "upgradeIntroAutoMixBody": "Синхронизировать темп и ритм между треками. Включить эту функцию можно в разделе «Настройки» → «Локальная медиатека» → «Воспроизведение». По умолчанию эта функция отключена.", + "upgradeIntroSettingsBody": "In Mornye, tap your profile on Home to open Settings and edit your name and photo.", + "upgradeIntroSkip": "Пропустить", + "upgradeIntroContinue": "Далее", + "upgradeIntroDone": "Начать слушать", + "upgradeIntroReplay": "Что нового в 5.0", + "cacheMotionArtwork": "Офлайн обложки с анимацией", + "cacheMotionArtworkDesc": "Видео из альбомов сохраняются вместе с загруженными файлами. При их удалении музыкальные файлы и статичные обложки остаются.", + "nowPlayingVolume": "Громкость", + "@nowPlayingVolume": { + "description": "System volume control label in the Mornye player" + }, + "appearanceStyle": "Стиль приложения", + "@appearanceStyle": { + "description": "Appearance section for choosing the app visual style" + }, + "discordRichPresence": "Discord Rich Presence", + "discordPresenceDescription": "Share the track playing in the built-in player on Discord. Requires Discord to be installed and signed in.", + "discordPresenceMissing": "Установите Discord и войдите в систему, а затем отключите и снова включите этот параметр.", + "discordPresenceUnavailable": "Discord Rich Presence не доступен в этой сборке или на этом устройстве.", "@@locale": "ru", "@@last_modified": "2026-04-28", - "libraryEnableLocalLibrarySubtitle": "Сканировать и отслеживать вашу существующую музыку", - "@libraryEnableLocalLibrarySubtitle": { - "description": "Subtitle for enable toggle" + "appName": "Spotify", + "@appName": { + "description": "App name - DO NOT TRANSLATE" }, - "@audioAnalysisCodec": { - "description": "Audio codec metric label" + "navHome": "Главная", + "@navHome": { + "description": "Bottom navigation - Home tab" }, - "extensionUtilityFunctions": "Utility Functions", - "@extensionUtilityFunctions": { - "description": "Capability label for utility-only extensions" + "navLibrary": "Медиатека", + "@navLibrary": { + "description": "Bottom navigation - Library tab" }, - "logClearLogsMessage": "Вы уверены, что хотите очистить все логи?", - "@logClearLogsMessage": { - "description": "Clear logs confirmation message" + "navSettings": "Настройки", + "@navSettings": { + "description": "Bottom navigation - Settings tab" }, - "@storeClearFilters": { - "description": "Button to clear all filters" + "navStore": "Репозиторий", + "@navStore": { + "description": "Bottom navigation - Extension repo tab" }, - "cacheCleanupUnused": "Очистка неиспользуемых данных", - "@cacheCleanupUnused": { - "description": "Action title for cleaning unused entries" + "homeTitle": "Главная", + "@homeTitle": { + "description": "Home screen title" }, - "trackConvertDitherNone": "None", - "@trackConvertDitherNone": { - "description": "Lossless conversion dither option with no dithering applied" + "homeSubtitle": "Вставьте URL или ищите по названию", + "@homeSubtitle": { + "description": "Subtitle shown below search box" }, - "libraryTracksUnit": "{count, plural, =1{track} other{tracks}}", - "@libraryTracksUnit": { - "description": "Unit label for tracks count (without the number itself)", + "homeEmptyTitle": "Нет поставщиков поиска", + "@homeEmptyTitle": { + "description": "Title shown on home when no providers are available yet" + }, + "homeEmptySubtitle": "Установите расширение, чтобы продолжить.", + "@homeEmptySubtitle": { + "description": "Subtitle shown on home when no providers are available yet" + }, + "homeSupports": "Поддерживается: Трек, Альбом, Плейлист, URL исполнителя", + "@homeSupports": { + "description": "Info text about supported URL types" + }, + "homeRecent": "Недавние", + "@homeRecent": { + "description": "Section header for recent searches" + }, + "historyFilterAll": "Все", + "@historyFilterAll": { + "description": "Filter chip - show all items" + }, + "historyFilterAlbums": "Альбомы", + "@historyFilterAlbums": { + "description": "Filter chip - show albums only" + }, + "historyFilterSingles": "Синглы", + "@historyFilterSingles": { + "description": "Filter chip - show singles only" + }, + "libraryRecentlyAdded": "Недавно добавленные", + "libraryDownloads": "Загрузки", + "libraryNoActiveDownloads": "Нет активных загрузок", + "librarySearchHint": "Поиск в вашей медиатеке", + "libraryEmptyCollection": "Ваша музыка появится здесь", + "historySearchHint": "Поиск в истории...", + "@historySearchHint": { + "description": "Search bar placeholder in history" + }, + "settingsTitle": "Настройки", + "@settingsTitle": { + "description": "Settings screen title" + }, + "settingsDownload": "Скачивание", + "@settingsDownload": { + "description": "Settings section - download options" + }, + "settingsAppearance": "Внешний вид", + "@settingsAppearance": { + "description": "Settings section - visual customization" + }, + "settingsExtensions": "Расширения", + "@settingsExtensions": { + "description": "Settings section - extension management" + }, + "settingsAbout": "О программе", + "@settingsAbout": { + "description": "Settings section - app info" + }, + "downloadTitle": "Скачать", + "@downloadTitle": { + "description": "Download settings page title" + }, + "downloadAskQualitySubtitle": "Показывать выбор качества для каждого скачивания", + "@downloadAskQualitySubtitle": { + "description": "Subtitle for ask quality toggle" + }, + "downloadFilenameFormat": "Формат имени файла", + "@downloadFilenameFormat": { + "description": "Setting for output filename pattern" + }, + "downloadSingleFilenameFormat": "Формат имени файла", + "@downloadSingleFilenameFormat": { + "description": "Setting for output filename pattern for singles/EPs" + }, + "downloadSingleFilenameFormatDescription": "Формат имени файла для синглов и EP. Используются те же теги, что и для альбомов.", + "@downloadSingleFilenameFormatDescription": { + "description": "Subtitle description for single filename format setting" + }, + "downloadFolderOrganization": "Организация папок", + "@downloadFolderOrganization": { + "description": "Title of the folder organization picker bottom sheet" + }, + "appearanceTitle": "Внешний вид", + "@appearanceTitle": { + "description": "Appearance settings page title" + }, + "appearanceThemeSystem": "Системная", + "@appearanceThemeSystem": { + "description": "Follow system theme" + }, + "appearanceThemeLight": "Светлая", + "@appearanceThemeLight": { + "description": "Light theme" + }, + "appearanceThemeDark": "Тёмная", + "@appearanceThemeDark": { + "description": "Dark theme" + }, + "appearanceDynamicColor": "Динамический цвет", + "@appearanceDynamicColor": { + "description": "Material You dynamic colors" + }, + "appearanceDynamicColorSubtitle": "Использовать цвета из ваших обоев", + "@appearanceDynamicColorSubtitle": { + "description": "Subtitle for dynamic color" + }, + "appearanceHistoryView": "Отображение истории", + "@appearanceHistoryView": { + "description": "Layout style for history" + }, + "appearanceHistoryViewList": "Список", + "@appearanceHistoryViewList": { + "description": "List layout option" + }, + "appearanceHistoryViewGrid": "Сетка", + "@appearanceHistoryViewGrid": { + "description": "Grid layout option" + }, + "optionsPrimaryProvider": "Основной провайдер", + "@optionsPrimaryProvider": { + "description": "Main search provider setting" + }, + "optionsPrimaryProviderSubtitle": "Сервис для поиска по названию трека или альбома", + "@optionsPrimaryProviderSubtitle": { + "description": "Subtitle for primary provider" + }, + "optionsUsingExtension": "Используется расширение: {extensionName}", + "@optionsUsingExtension": { + "description": "Shows active extension name", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "optionsDefaultSearchTab": "Вкладка поиска по умолчанию", + "@optionsDefaultSearchTab": { + "description": "Title for the preferred default search tab setting" + }, + "optionsDefaultSearchTabSubtitle": "Выберите, какая вкладка открывает новые результаты поиска.", + "@optionsDefaultSearchTabSubtitle": { + "description": "Subtitle for the preferred default search tab setting" + }, + "optionsAutoFallback": "Автоматический переход", + "@optionsAutoFallback": { + "description": "Auto-retry with other services" + }, + "optionsAutoFallbackSubtitle": "Попробовать другие сервисы при сбое загрузки", + "@optionsAutoFallbackSubtitle": { + "description": "Subtitle for auto fallback" + }, + "optionsEmbedLyrics": "Вписать текст песни", + "@optionsEmbedLyrics": { + "description": "Embed lyrics in audio files" + }, + "optionsEmbedLyricsSubtitle": "Сохранять синхронизированный текст песни рядом с загруженным треком", + "@optionsEmbedLyricsSubtitle": { + "description": "Subtitle for embed lyrics" + }, + "optionsReplayGain": "ReplayGain", + "@optionsReplayGain": { + "description": "Title for ReplayGain setting toggle" + }, + "optionsReplayGainSubtitleOn": "Сканировать громкость и вставить теги ReplayGain (EBU R128)", + "@optionsReplayGainSubtitleOn": { + "description": "Subtitle when ReplayGain is enabled" + }, + "optionsReplayGainSubtitleOff": "Выключено: нет тегов нормализации громкости", + "@optionsReplayGainSubtitleOff": { + "description": "Subtitle when ReplayGain is disabled" + }, + "trackReplayGain": "Пересканировать ReplayGain", + "@trackReplayGain": { + "description": "Three-dot menu option to scan loudness and write ReplayGain tags" + }, + "trackReplayGainScanning": "Анализ громкости...", + "@trackReplayGainScanning": { + "description": "Snackbar/progress message while scanning ReplayGain for a single track" + }, + "trackReplayGainSuccess": "Добавлены теги ReplayGain", + "@trackReplayGainSuccess": { + "description": "Snackbar message after ReplayGain tags written for a single track" + }, + "trackReplayGainFailed": "Не удалось добавить теги ReplayGain", + "@trackReplayGainFailed": { + "description": "Snackbar message when ReplayGain scan/write fails" + }, + "selectionReplayGainCount": "ReplayGain ({count})", + "@selectionReplayGainCount": { + "description": "Batch selection action button label for ReplayGain", "placeholders": { "count": { "type": "int" } } }, - "folderOrganizationNone": "Без организации", - "@folderOrganizationNone": { - "description": "Folder option - flat structure" - }, - "@storeRepoUrlHint": { - "description": "Hint/placeholder for the repository URL input field" - }, - "@trackConvertConfirmTitle": { - "description": "Confirmation dialog title" - }, - "@extensionPatternsCount": { - "description": "URL patterns count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "audioAnalysisContainer": "Container", - "@audioAnalysisContainer": { - "description": "Audio container metric label" - }, - "libraryAutoScanOff": "Off", - "@libraryAutoScanOff": { - "description": "Auto scan disabled" - }, - "shareSheetLinkCopied": "{service} link copied", - "@shareSheetLinkCopied": { - "description": "Snackbar after copying a cross-service link", - "placeholders": { - "service": {} - } - }, - "providerPriorityFallbackExtensionsDescription": "Choose which installed download extensions can be used during automatic fallback.", - "@providerPriorityFallbackExtensionsDescription": { - "description": "Section description for extension fallback selection" + "replayGainBatchConfirmTitle": "Добавить ReplayGain", + "@replayGainBatchConfirmTitle": { + "description": "Title of the batch ReplayGain confirmation dialog" }, + "replayGainBatchConfirmMessage": "Проанализировать громкость и записать ReplayGain теги на {count} трек(-а)?", "@replayGainBatchConfirmMessage": { "description": "Message of the batch ReplayGain confirmation dialog", "placeholders": { @@ -81,75 +281,12 @@ } } }, - "@extensionsHomeFeedUse": { - "description": "Extensions page - subtitle for a specific extension home feed option", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "selectionShareCount": "Отправить {count} {count, plural, one {трек} few {трека} many {треков} =1{трек} other{треков}}", - "@selectionShareCount": { - "description": "Share button text with count in selection mode", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@storeExtensionsCount": { - "description": "Store extension result count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@logSearchHint": { - "description": "Log search placeholder" - }, - "@audioAnalysisSamples": { - "description": "Total samples metric label" - }, - "trackCoverReplace": "Replace Cover", - "@trackCoverReplace": { - "description": "Button label for replacing selected cover art" - }, - "@discographyAddedToQueue": { - "description": "Snackbar - tracks added from discography", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadAppleElrcWordSyncEnabled": "Raw word-by-word timestamps preserved", - "@downloadAppleElrcWordSyncEnabled": { - "description": "Subtitle when Apple Music eLRC word sync is enabled" - }, - "@nowPlayingDetails": { - "description": "Menu item and section title for track metadata details" - }, - "@trackGenre": { - "description": "Metadata label - music genre" - }, - "recentTypeSong": "Песня", - "@recentTypeSong": { - "description": "Recent access item type - song/track" - }, - "logShareLogs": "Поделиться логами", - "@logShareLogs": { - "description": "Share button tooltip" - }, - "@storeFilterLyrics": { - "description": "Repo filter - lyrics providers" - }, - "extensionsInstallButton": "Установить расширение", - "@extensionsInstallButton": { - "description": "Button to install extension from file" + "replayGainBatchAnalyzing": "Анализ ReplayGain...", + "@replayGainBatchAnalyzing": { + "description": "Progress dialog title while batch scanning ReplayGain" }, "replayGainBatchSuccess": "ReplayGain добавлен к {success} треков {total}", + "replayGainUnsupportedDecoder": "Некоторые треки не могут быть проанализированы, так как их аудио кодек не поддерживается декодером ReplayGain, их файлы не были изменены.", "@replayGainBatchSuccess": { "description": "Snackbar after batch ReplayGain completes", "placeholders": { @@ -161,548 +298,536 @@ } } }, - "nowPlayingMinimize": "Minimize", - "@nowPlayingMinimize": { - "description": "Tooltip for minimizing the now playing screen" + "optionsArtistTagMode": "Режим тега исполнителя", + "@optionsArtistTagMode": { + "description": "Setting title for how artist metadata is written into files" }, - "logIssueNetworkErrorSuggestion": "Check your internet connection", - "@logIssueNetworkErrorSuggestion": { - "description": "Diagnostic badge suggestion for generic network errors" + "optionsArtistTagModeDescription": "Выберите, как несколько исполнителей записываются встроенные теги.", + "@optionsArtistTagModeDescription": { + "description": "Bottom-sheet description for artist tag mode setting" }, - "extensionsNoExtensions": "Нет установленных расширений", - "@extensionsNoExtensions": { - "description": "Empty state - no extensions" + "optionsArtistTagModeJoined": "Single joined value", + "@optionsArtistTagModeJoined": { + "description": "Artist tag mode option that joins multiple artists into one value" }, - "@cacheRefresh": { - "description": "Tooltip for refresh button on cache management page" + "optionsArtistTagModeJoinedSubtitle": "Write one ARTIST value like \"Artist A, Artist B\" for maximum player compatibility.", + "@optionsArtistTagModeJoinedSubtitle": { + "description": "Subtitle for joined artist tag mode" }, - "@snackbarHistoryCleared": { - "description": "Snackbar - history deleted" + "optionsArtistTagModeSplitVorbis": "Разделить теги для FLAC/Opus", + "@optionsArtistTagModeSplitVorbis": { + "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" }, - "cueSplitFailed": "Разделение CUE не удалось", - "@cueSplitFailed": { - "description": "Snackbar when CUE split fails" - }, - "trackConvertLosslessSuffix": "Lossless", - "@trackConvertLosslessSuffix": { - "description": "Suffix used in converted lossless quality labels" - }, - "homeSubtitle": "Вставьте URL или ищите по названию", - "@homeSubtitle": { - "description": "Subtitle shown below search box" - }, - "selectionBatchConvertConfirmMessageLossless": "Конвертировать {count} {count, plural, =1{track} other{tracks}} в {format}? (Без потери качества)\n\nОригинальные файлы будут удалены после конвертации.", - "@selectionBatchConvertConfirmMessageLossless": { - "description": "Confirmation dialog message for lossless batch conversion", - "placeholders": { - "count": { - "type": "int" - }, - "format": { - "type": "String" - } - } - }, - "@extensionVerificationHelpMessageManual": { - "description": "Dialog message when automatic browser launch for verification fails" - }, - "queueRateLimitMessage": "This track may still be available. Wait a few minutes, reduce parallel downloads, then retry.", - "@queueRateLimitMessage": { - "description": "Explanation shown on a failed queue item when the download service rate limits requests" - }, - "searchSortDateOldest": "Дата релиза (старейшая)", - "@searchSortDateOldest": { - "description": "Sort option - oldest release first" - }, - "nowPlayingShuffleOn": "Shuffle on", - "@nowPlayingShuffleOn": { - "description": "Tooltip when shuffle mode is enabled" - }, - "sectionColor": "Цвет", - "@sectionColor": { - "description": "Settings section header" - }, - "@providerPriorityFallbackExtensionsHint": { - "description": "Hint below the extension fallback selection list" - }, - "cacheCoverImage": "Кэш обложек", - "@cacheCoverImage": { - "description": "Cache item title for persistent cover images" - }, - "@navSettings": { - "description": "Bottom navigation - Settings tab" - }, - "@trackCoverReplaceNotice": { - "description": "Notice shown when a new cover has been selected but not saved yet" - }, - "cueSplitConfirmTitle": "Разделенный CUE-альбом", - "@cueSplitConfirmTitle": { - "description": "CUE split confirmation dialog title" - }, - "@trackDeleteConfirmMessage": { - "description": "Delete confirmation message" - }, - "cacheClearSuccess": "Очищено: {target}", - "@cacheClearSuccess": { - "description": "Snackbar after clearing selected cache", - "placeholders": { - "target": { - "type": "String" - } - } - }, - "editMetadataFieldCover": "Обложка", - "@editMetadataFieldCover": { - "description": "Chip label for cover art field in auto-fill selector" - }, - "snackbarSelectExtFile": "Пожалуйста, выберите .spotiflac-ext-файл", - "@snackbarSelectExtFile": { - "description": "Snackbar - wrong file type selected" - }, - "libraryFilterFormat": "Формат", - "@libraryFilterFormat": { - "description": "Filter section - file format" - }, - "@downloadLossyAac": { - "description": "Lossy format option - AAC in M4A container at 320kbps" - }, - "@setupNext": { - "description": "Next button text" - }, - "@releaseTypeSingle": { - "description": "Badge label for single releases" - }, - "@optionsDefaultSearchTab": { - "description": "Title for the preferred default search tab setting" - }, - "trackConvertLosslessOutputWithCap": "Lossless output with {quality} cap", - "@trackConvertLosslessOutputWithCap": { - "description": "Hint shown when lossless conversion will cap bit depth or sample rate", - "placeholders": { - "quality": { - "type": "String" - } - } - }, - "bulkDownloadSelectPlaylists": "Select playlists to download", - "@bulkDownloadSelectPlaylists": { - "description": "Button label when no playlists are selected for download" - }, - "artistOptionAddToFavorites": "Добавить в избранные исполнители", - "@artistOptionAddToFavorites": { - "description": "Action label - add artist to favorite artists" - }, - "@timeJustNow": { - "description": "Relative time - less than a minute ago" - }, - "downloadLossyOpus256": "Opus 256 кбит/с", - "@downloadLossyOpus256": { - "description": "Lossy format option - Opus 256kbps" - }, - "discographySinglesOnlySubtitle": "{count} треков из {albumCount} синглов", - "@discographySinglesOnlySubtitle": { - "description": "Subtitle showing singles tracks count", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } + "optionsArtistTagModeSplitVorbisSubtitle": "Write one artist tag per artist for FLAC and Opus; MP3 and M4A stay joined.", + "@optionsArtistTagModeSplitVorbisSubtitle": { + "description": "Subtitle for split Vorbis artist tag mode" }, "optionsExtensionStore": "Репозиторий расширения", "@optionsExtensionStore": { "description": "Show/hide repo tab" }, - "libraryDownloadsHistoryExcluded": "{count} from Downloads history (excluded from list)", - "@libraryDownloadsHistoryExcluded": { - "description": "Library count note for downloaded history items excluded from the local list", - "placeholders": { - "count": { - "type": "int" - } - } + "optionsExtensionStoreSubtitle": "Показывать вкладку репозитория в навигации", + "@optionsExtensionStoreSubtitle": { + "description": "Subtitle for extension repo toggle" }, - "@errorUrlFetchFailed": { - "description": "Error message - generic URL fetch failure" + "optionsCheckUpdates": "Проверить обновления", + "@optionsCheckUpdates": { + "description": "Auto update check toggle" }, - "@trackOptionAddToWishlist": { - "description": "Bottom sheet action label - add track to wishlist" + "optionsCheckUpdatesSubtitle": "Уведомлять о наличии новой версии", + "@optionsCheckUpdatesSubtitle": { + "description": "Subtitle for update check" }, - "discographySinglesOnly": "Только синглы и EP", - "@discographySinglesOnly": { - "description": "Option - download only singles" + "optionsUpdateChannel": "Канал обновлений", + "@optionsUpdateChannel": { + "description": "Stable vs preview releases" }, - "@downloadSongLinkRegionDesc": { - "description": "Description in SongLink region picker" + "optionsUpdateChannelStable": "Только стабильные релизы", + "@optionsUpdateChannelStable": { + "description": "Only stable updates" }, - "notifEmbeddingMetadata": "Встраивание метаданных...", - "@notifEmbeddingMetadata": { - "description": "Notification body while embedding metadata into a downloaded track" + "optionsUpdateChannelPreview": "Предварительные версии", + "@optionsUpdateChannelPreview": { + "description": "Include beta/preview updates" }, - "@settingsLocalLibrarySubtitle": { - "description": "Subtitle for local library settings" + "optionsUpdateChannelWarning": "Предварительная версия может содержать ошибки или неполные функции", + "@optionsUpdateChannelWarning": { + "description": "Warning about preview channel" }, - "@downloadLocationSubtitle": { - "description": "Subtitle shown in the download location picker sheet" + "optionsClearHistory": "Очистить историю загрузок", + "@optionsClearHistory": { + "description": "Delete all download history" }, - "trackConvertOriginalQuality": "Original quality", - "@trackConvertOriginalQuality": { - "description": "Label when no bit depth or sample rate cap is applied during lossless conversion" + "optionsClearHistorySubtitle": "Удалить все скачанные треки из истории", + "@optionsClearHistorySubtitle": { + "description": "Subtitle for clear history" }, - "nowPlayingTabLyrics": "Lyrics", - "@nowPlayingTabLyrics": { - "description": "Tab label for the lyrics view" + "optionsDetailedLogging": "Подробный лог", + "@optionsDetailedLogging": { + "description": "Enable verbose logs for debugging" }, - "selectionConvertCount": "Конвертировать {count} {count, plural, one {трек} few {трека} many {треков} =1{трек} other{треков}}", - "@selectionConvertCount": { - "description": "Convert button text with count in selection mode", - "placeholders": { - "count": { - "type": "int" - } - } + "optionsDetailedLoggingOn": "Ведутся подробные логи", + "@optionsDetailedLoggingOn": { + "description": "Status when logging enabled" }, - "@extensionsInstalledSection": { - "description": "Section header - installed extensions" + "optionsDetailedLoggingOff": "Включить для отчётов об ошибках", + "@optionsDetailedLoggingOff": { + "description": "Status when logging disabled" }, - "@downloadNetworkCompatibilityModeDisabled": { - "description": "Subtitle when network compatibility mode is off" + "extensionsTitle": "Расширения", + "@extensionsTitle": { + "description": "Extensions page title" }, - "nowPlayingShuffleLibrary": "Shuffle library", - "@nowPlayingShuffleLibrary": { - "description": "Button label to shuffle and play the entire local library" + "extensionsDisabled": "Выключено", + "@extensionsDisabled": { + "description": "Extension status - inactive" }, - "trackReEnrichFieldCover": "Обложка", - "@trackReEnrichFieldCover": { - "description": "Checkbox label for cover art field in re-enrich" - }, - "tutorialExtensionsTip3": "Connect accounts when required and keep extensions up to date", - "@tutorialExtensionsTip3": { - "description": "Tutorial extensions tip 3" - }, - "@cacheCleanupUnusedDesc": { - "description": "Description of what cleanup unused data does" - }, - "a11yOpenAlbum": "Open album {albumName}", - "@a11yOpenAlbum": { - "description": "Accessibility label for opening an album", - "placeholders": { - "albumName": { - "type": "String" - } - } - }, - "@settingsLyrics": { - "description": "Settings menu item - lyrics settings" - }, - "nowPlayingQueueEmpty": "Queue is empty", - "@nowPlayingQueueEmpty": { - "description": "Empty state when the playback queue has no items" - }, - "@settingsDownload": { - "description": "Settings section - download options" - }, - "notifTracksDownloadedSuccess": "{count, plural, =1{1 track downloaded successfully} other{{count} tracks downloaded successfully}}", - "@notifTracksDownloadedSuccess": { - "description": "Notification body for queue complete - how many tracks were downloaded", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storeCategoryDownload": "Download", - "@storeCategoryDownload": { - "description": "Store extension category - download" - }, - "aboutTelegramChannel": "Telegram канал", - "@aboutTelegramChannel": { - "description": "Link to Telegram channel" - }, - "@downloadedAlbumDiscHeader": { - "description": "Header for disc separator in multi-disc albums", - "placeholders": { - "discNumber": { - "type": "int", - "example": "1" - } - } - }, - "@recentEmpty": { - "description": "Empty state text for recent access list" - }, - "@backupRestoreConfirmMessage": { - "description": "Confirmation dialog message before restoring a backup" - }, - "@shareSheetCopyLink": { - "description": "Tooltip for copying a cross-service link" - }, - "regionCountryID": "Indonesia", - "@regionCountryID": { - "description": "Country name for SongLink region picker" - }, - "@libraryInLibrary": { - "description": "Badge shown on tracks that exist in local library" - }, - "extensionPostProcessingHooks": "Хуки постобработки", - "@extensionPostProcessingHooks": { - "description": "Capability - post-processing" - }, - "@setupGrantPermission": { - "description": "Button to request permission" - }, - "storeFilterDownload": "Скачивание", - "@storeFilterDownload": { - "description": "Repo filter - download providers" - }, - "@collectionAddToPlaylist": { - "description": "Action to add a track to user playlist" - }, - "@discographyFailedToFetch": { - "description": "Error - some albums failed to load" - }, - "@updateWhatsNew": { - "description": "Changelog section title" - }, - "@setupLanguageDescription": { - "description": "Description for the language selection step in setup" - }, - "dialogDeleteSelectedTitle": "Удалить выбранные", - "@dialogDeleteSelectedTitle": { - "description": "Dialog title - delete selected items" - }, - "trackCoverPick": "Pick Cover", - "@trackCoverPick": { - "description": "Button label for selecting cover art" - }, - "@collectionCreatePlaylist": { - "description": "Action to create a new playlist" - }, - "selectionBatchConvertSuccess": "Конвертировано {success} треков {total} в {format}", - "@selectionBatchConvertSuccess": { - "description": "Snackbar after batch conversion completes", - "placeholders": { - "success": { - "type": "int" - }, - "total": { - "type": "int" - }, - "format": { - "type": "String" - } - } - }, - "qualityHiResFlacMax": "Hi-Res FLAC Макс.", - "@qualityHiResFlacMax": { - "description": "Quality option - maximum resolution FLAC" - }, - "audioAnalysisStereo": "Stereo", - "@audioAnalysisStereo": { - "description": "Audio channel layout label - stereo" - }, - "backupExportButton": "Create backup file", - "@backupExportButton": { - "description": "Button to create and share a backup file" - }, - "settingsApp": "App", - "@settingsApp": { - "description": "Settings menu item - app settings" - }, - "clickableInformationUnavailable": "{type} information not available", - "@clickableInformationUnavailable": { - "description": "Snackbar shown when clickable metadata cannot open a destination", - "placeholders": { - "type": { - "type": "String" - } - } - }, - "@logFilterLevel": { - "description": "Filter by log level" - }, - "sectionTheme": "Тема", - "@sectionTheme": { - "description": "Settings section header" - }, - "@extensionActionFailed": { - "description": "Fallback error when an extension action fails without details" - }, - "@downloadAppleElrcWordSync": { - "description": "Setting for preserving Apple Music word-by-word eLRC timestamps" - }, - "@extensionsNoCustomSearch": { - "description": "Empty state - no search providers" - }, - "@collectionPlaylistRemoveCover": { - "description": "Bottom sheet action to remove custom cover image from a playlist" - }, - "@tutorialWelcomeDesc": { - "description": "Tutorial welcome page description" - }, - "@tutorialSearchDesc": { - "description": "Tutorial search page description" - }, - "collectionAddedToWishlist": "\"{trackName}\" добавлен в список желаний", - "@collectionAddedToWishlist": { - "description": "Snackbar after adding track to wishlist", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "logAffectedDomains": "Affected: {domains}", - "@logAffectedDomains": { - "description": "Affected domains in log issue analysis", - "placeholders": { - "domains": { - "type": "String" - } - } - }, - "@folderOrganizationByArtistSubtitle": { - "description": "Subtitle for artist folder option" - }, - "errorNoTracksFound": "Треки не найдены", - "@errorNoTracksFound": { - "description": "Error - search returned no results" - }, - "providerPriorityTitle": "Приоритет провайдера", - "@providerPriorityTitle": { - "description": "Provider priority page title" - }, - "@notifUpdateReadyBody": { - "description": "Notification body when app update is ready to install", + "extensionsVersion": "Версия {version}", + "@extensionsVersion": { + "description": "Extension version display", "placeholders": { "version": { "type": "String" } } }, - "@settingsExtensions": { - "description": "Settings section - extension management" + "extensionsUninstall": "Удалить", + "@extensionsUninstall": { + "description": "Uninstall extension button" }, - "trackDeleteConfirmTitle": "Удалить с устройства?", - "@trackDeleteConfirmTitle": { - "description": "Delete confirmation title" + "storeTitle": "Репозиторий расширения", + "@storeTitle": { + "description": "Repo screen title" }, - "@settingsDownloadNetwork": { - "description": "Setting for network type preference" + "storeSearch": "Поиск расширений...", + "@storeSearch": { + "description": "Repo search placeholder" }, - "downloadProvidersNoneEnabled": "No providers enabled", - "@downloadProvidersNoneEnabled": { - "description": "Shown when no lyrics providers are active" + "storeInstall": "Установить", + "@storeInstall": { + "description": "Install extension button" }, - "@homeEmptySubtitle": { - "description": "Subtitle shown on home when no providers are available yet" + "storeInstalled": "Установлено", + "@storeInstalled": { + "description": "Already installed badge" }, - "trackReEnrichFieldBasicTags": "Альбом, Исполнитель альбома", - "@trackReEnrichFieldBasicTags": { - "description": "Checkbox label for basic tags in re-enrich (title/artist are never overwritten)" + "storeUpdate": "Обновить", + "@storeUpdate": { + "description": "Update available button" }, - "@audioAnalysisSpectralCutoff": { - "description": "Estimated spectral cutoff metric label" + "aboutTitle": "О программе", + "@aboutTitle": { + "description": "About page title" }, - "@logClearLogsTitle": { - "description": "Clear logs dialog title" + "aboutContributors": "Участники", + "@aboutContributors": { + "description": "Section for contributors" }, - "storageModeSafSubtitle": "Pick any folder, including SD card", - "@storageModeSafSubtitle": { - "description": "Subtitle for SAF storage mode" + "aboutMobileDeveloper": "Разработчик мобильной версии", + "@aboutMobileDeveloper": { + "description": "Role description for mobile dev" }, - "@notifUpdateProgress": { - "description": "Notification body showing update download progress", + "aboutOriginalCreator": "Создатель оригинального SpotiFLAC", + "@aboutOriginalCreator": { + "description": "Role description for original creator" + }, + "aboutLogoArtist": "Талантливый художник, который создал наш красивый логотип приложения!", + "@aboutLogoArtist": { + "description": "Role description for logo artist" + }, + "aboutTranslators": "Переводчики", + "@aboutTranslators": { + "description": "Section for translators" + }, + "aboutSpecialThanks": "Особая благодарность", + "@aboutSpecialThanks": { + "description": "Section for special thanks" + }, + "aboutLinks": "Ссылки", + "@aboutLinks": { + "description": "Section for external links" + }, + "aboutMobileSource": "Исходный код мобильной версии", + "@aboutMobileSource": { + "description": "Link to mobile GitHub repo" + }, + "aboutPCSource": "Исходный код ПК версии", + "@aboutPCSource": { + "description": "Link to PC GitHub repo" + }, + "aboutKeepAndroidOpen": "Сохранить Android открытым", + "@aboutKeepAndroidOpen": { + "description": "Link to Keep Android Open campaign website" + }, + "aboutReportIssue": "Сообщить о проблеме", + "@aboutReportIssue": { + "description": "Link to report bugs" + }, + "aboutReportIssueSubtitle": "Сообщите о возникших проблемах", + "@aboutReportIssueSubtitle": { + "description": "Subtitle for report issue" + }, + "aboutFeatureRequest": "Предложить новую функцию", + "@aboutFeatureRequest": { + "description": "Link to suggest features" + }, + "aboutFeatureRequestSubtitle": "Предложить новые функции для приложения", + "@aboutFeatureRequestSubtitle": { + "description": "Subtitle for feature request" + }, + "aboutTelegramChannel": "Telegram канал", + "@aboutTelegramChannel": { + "description": "Link to Telegram channel" + }, + "aboutTelegramChannelSubtitle": "Объявления и обновления", + "@aboutTelegramChannelSubtitle": { + "description": "Subtitle for Telegram channel" + }, + "aboutTelegramChat": "Сообщество в Telegram", + "@aboutTelegramChat": { + "description": "Link to Telegram chat group" + }, + "aboutTelegramChatSubtitle": "Чат с другими пользователями", + "@aboutTelegramChatSubtitle": { + "description": "Subtitle for Telegram chat" + }, + "aboutSocial": "Соцсети", + "@aboutSocial": { + "description": "Section for social links" + }, + "aboutApp": "Приложение", + "@aboutApp": { + "description": "Section for app info" + }, + "aboutVersion": "Версия", + "@aboutVersion": { + "description": "Version info label" + }, + "aboutBinimumDesc": "Создатель QQDL и HiFi API. Этот проект помог реализовать поддержку скачивания музыки в lossless-качестве.", + "@aboutBinimumDesc": { + "description": "Credit description for binimum" + }, + "aboutSachinsenalDesc": "Создатель оригинального проекта HiFi. Заложил основу для интеграции lossless-источников.", + "@aboutSachinsenalDesc": { + "description": "Credit description for sachinsenal0x64" + }, + "aboutUnituneDesc": "Открытый распознаватель музыкальных ссылок от Flaze, используемый для резервного кроссплатформенного сопоставления.", + "@aboutUnituneDesc": { + "description": "Credit for the UniTune resolver" + }, + "aboutMusicBrainzDesc": "Открытая музыкальная база данных, поддерживаемая MetaBrainz и сообществом. Используется для сопоставления перекрестных ссылок.", + "@aboutMusicBrainzDesc": { + "description": "Credit for the MusicBrainz database" + }, + "aboutSquiglyDesc": "Универсальный сервис музыкальных ссылок от Лиама Макмиллана, используемый в качестве последнего резервного кроссплатформенного распознавателя.", + "@aboutSquiglyDesc": { + "description": "Credit for the Squigly resolver" + }, + "aboutAppDescription": "Ищите метаданных музыки, управляйте расширениями и организуйте свою библиотеку.", + "@aboutAppDescription": { + "description": "App description in header card" + }, + "artistAlbums": "Альбомы", + "@artistAlbums": { + "description": "Section header for artist albums" + }, + "artistSingles": "Синглы и EP", + "@artistSingles": { + "description": "Section header for singles/EPs" + }, + "artistCompilations": "Сборники", + "@artistCompilations": { + "description": "Section header for compilations" + }, + "artistPopular": "Популярное", + "@artistPopular": { + "description": "Section header for popular/top tracks" + }, + "artistMonthlyListeners": "{count} слушателей в месяц", + "@artistMonthlyListeners": { + "description": "Monthly listener count display", "placeholders": { - "received": { - "type": "String" - }, - "total": { - "type": "String" - }, - "percentage": { - "type": "int" + "count": { + "type": "String", + "description": "Formatted listener count" } } }, - "downloadUsePrimaryArtistOnlyEnabled": "Список исполнителей, чьи работы были удалены из названия папки (например, Джастин Бибер, Quavo → Джастин Бибер)", - "@downloadUsePrimaryArtistOnlyEnabled": { - "description": "Subtitle when primary artist only is enabled" + "trackMetadataService": "Сервис", + "@trackMetadataService": { + "description": "Metadata field - download service used" }, - "notifScanningLibrary": "Сканирование локальной библиотеки", - "@notifScanningLibrary": { - "description": "Notification title while scanning local library" + "trackMetadataPlay": "Воспроизвести", + "@trackMetadataPlay": { + "description": "Action button - play track" }, - "@metadataProvidersSubtitle": { - "description": "Subtitle for metadata provider priority item" + "trackMetadataShare": "Поделиться", + "@trackMetadataShare": { + "description": "Action button - share track" + }, + "trackMetadataDelete": "Удалить", + "@trackMetadataDelete": { + "description": "Action button - delete track" + }, + "setupGrantPermission": "Предоставить разрешение", + "@setupGrantPermission": { + "description": "Button to request permission" + }, + "setupSkip": "Пропустить", + "@setupSkip": { + "description": "Skip current step button" + }, + "setupStorageAccessRequired": "Требуется доступ к хранилищу", + "@setupStorageAccessRequired": { + "description": "Title when storage access needed" + }, + "setupStorageAccessMessageAndroid11": "Для Android 11+ требуется разрешение \"Доступ ко всем файлам\" для сохранения файлов в выбранную вами папку загрузки.", + "@setupStorageAccessMessageAndroid11": { + "description": "Android 11+ specific explanation" + }, + "setupOpenSettings": "Открыть настройки", + "@setupOpenSettings": { + "description": "Button to open system settings" + }, + "setupPermissionDeniedMessage": "В разрешении отказано. Пожалуйста, предоставьте все разрешения для продолжения.", + "@setupPermissionDeniedMessage": { + "description": "Error when permission denied" + }, + "setupPermissionRequired": "Требуется разрешение {permissionType}", + "@setupPermissionRequired": { + "description": "Generic permission required title", + "placeholders": { + "permissionType": { + "type": "String", + "description": "Type of permission (Storage/Notification)" + } + } + }, + "setupPermissionRequiredMessage": "Для оптимальной работы требуется разрешение {permissionType}. Вы можете изменить это позже в настройках.", + "@setupPermissionRequiredMessage": { + "description": "Generic permission required message", + "placeholders": { + "permissionType": { + "type": "String" + } + } + }, + "setupUseDefaultFolder": "Использовать папку по умолчанию?", + "@setupUseDefaultFolder": { + "description": "Dialog title for default folder" + }, + "setupNoFolderSelected": "Папка не выбрана. Хотите использовать папку Музыка по умолчанию?", + "@setupNoFolderSelected": { + "description": "Prompt when no folder selected" + }, + "setupUseDefault": "По умолчанию", + "@setupUseDefault": { + "description": "Button to use default folder" + }, + "setupDownloadLocationTitle": "Папка для скачивания", + "@setupDownloadLocationTitle": { + "description": "Download location dialog title" + }, + "setupDownloadLocationIosMessage": "В iOS загрузки сохраняются в папке Документы приложения. Вы можете получить к ним доступ через приложение Файлы.", + "@setupDownloadLocationIosMessage": { + "description": "iOS-specific folder info" + }, + "setupAppDocumentsFolder": "Папка Документы приложения", + "@setupAppDocumentsFolder": { + "description": "iOS documents folder option" + }, + "setupAppDocumentsFolderSubtitle": "Рекомендуется - доступ через Файлы", + "@setupAppDocumentsFolderSubtitle": { + "description": "Subtitle for documents folder" + }, + "setupChooseFromFiles": "Выбрать из файлов", + "@setupChooseFromFiles": { + "description": "iOS file picker option" + }, + "setupChooseFromFilesSubtitle": "Выберите iCloud или другое местоположение", + "@setupChooseFromFilesSubtitle": { + "description": "Subtitle for file picker" + }, + "setupIosEmptyFolderWarning": "Ограничение iOS: пустые папки не могут быть выбраны. Выберите папку, содержащую хотя бы один файл.", + "@setupIosEmptyFolderWarning": { + "description": "iOS folder selection warning" + }, + "setupIcloudNotSupported": "iCloud Drive не поддерживается. Пожалуйста, используйте папку Документы.", + "@setupIcloudNotSupported": { + "description": "Error when user selects iCloud Drive on iOS" + }, + "setupDownloadInFlac": "Скачивайте музыку в Lossless и Hi-Res качестве", + "@setupDownloadInFlac": { + "description": "App tagline in setup" + }, + "setupStorageGranted": "Доступ к хранилищу предоставлен!", + "@setupStorageGranted": { + "description": "Success message for storage permission" + }, + "setupStorageRequired": "Требуется доступ к хранилищу", + "@setupStorageRequired": { + "description": "Title when storage permission needed" + }, + "setupStorageDescription": "SpotiFLAC требуется разрешение на хранение для сохранения скачанных файлов.", + "@setupStorageDescription": { + "description": "Explanation for storage permission" + }, + "setupNotificationGranted": "Разрешение на уведомление предоставлено!", + "@setupNotificationGranted": { + "description": "Success message for notification permission" + }, + "setupNotificationEnable": "Включить уведомления", + "@setupNotificationEnable": { + "description": "Button to enable notifications" + }, + "setupFolderChoose": "Выбрать папку для скачивания", + "@setupFolderChoose": { + "description": "Button to choose folder" + }, + "setupFolderDescription": "Выберите папку, в которой будет сохраняться скачанная музыка.", + "@setupFolderDescription": { + "description": "Explanation for folder selection" + }, + "setupSelectFolder": "Выбрать папку", + "@setupSelectFolder": { + "description": "Button to select folder" + }, + "setupEnableNotifications": "Включить уведомления", + "@setupEnableNotifications": { + "description": "Button to enable notifications" + }, + "setupNotificationBackgroundDescription": "Получайте уведомления о ходе и завершении загрузки. Это поможет вам отслеживать загрузки, когда приложение находится в фоновом режиме.", + "@setupNotificationBackgroundDescription": { + "description": "Detailed notification explanation" + }, + "setupSkipForNow": "Пропустить", + "@setupSkipForNow": { + "description": "Skip button text" + }, + "setupNext": "Далее", + "@setupNext": { + "description": "Next button text" }, "setupGetStarted": "Приступить к работе", "@setupGetStarted": { "description": "Final setup button" }, - "libraryFilterQualityCD": "CD (16 бит)", - "@libraryFilterQualityCD": { - "description": "Filter option - CD quality audio" + "setupAllowAccessToManageFiles": "Пожалуйста, включите \"Разрешить доступ для управления всеми файлами\" на следующем экране.", + "@setupAllowAccessToManageFiles": { + "description": "Instruction for file access permission" }, - "sectionLayout": "Разметка", - "@sectionLayout": { - "description": "Settings section header" + "setupLanguageTitle": "Выберите язык", + "@setupLanguageTitle": { + "description": "Title for the language selection step in setup" }, - "@tooltipLoveAll": { - "description": "Tooltip for the Love All button on album/playlist screens" + "setupLanguageDescription": "Выберите язык для приложения. Вы можете изменить его позже в настройках.", + "@setupLanguageDescription": { + "description": "Description for the language selection step in setup" }, - "queueFinalizingDownload": "Finalizing download", - "@queueFinalizingDownload": { - "description": "Accessibility label for a queue item that is finalizing" + "setupLanguageSystemDefault": "Системные настройки", + "@setupLanguageSystemDefault": { + "description": "Option to use the system language" }, - "trackConvertActionLabelLossy": "{sourceFormat} → {targetFormat} @ {bitrate}", - "@trackConvertActionLabelLossy": { - "description": "Convert button label for lossy conversion", + "dialogCancel": "Отмена", + "@dialogCancel": { + "description": "Dialog button - cancel action" + }, + "dialogSave": "Сохранить", + "@dialogSave": { + "description": "Dialog button - save changes" + }, + "dialogDelete": "Удалить", + "@dialogDelete": { + "description": "Dialog button - delete item" + }, + "dialogRetry": "Повторить", + "@dialogRetry": { + "description": "Dialog button - retry action" + }, + "dialogClear": "Очистить", + "@dialogClear": { + "description": "Dialog button - clear items" + }, + "dialogDone": "Готово", + "@dialogDone": { + "description": "Dialog button - action completed" + }, + "dialogImport": "Импорт", + "@dialogImport": { + "description": "Dialog button - import data" + }, + "dialogDownload": "Скачать", + "@dialogDownload": { + "description": "Confirm button in Download All dialog" + }, + "previewPlay": "Предпросмотр проигрывания", + "@previewPlay": { + "description": "Tooltip for the button that plays a short track preview snippet" + }, + "previewStop": "Остановить предпросмотр", + "@previewStop": { + "description": "Tooltip for the button that stops the playing track preview snippet" + }, + "previewUnavailable": "Предпросмотр недоступен", + "@previewUnavailable": { + "description": "Snackbar shown when a track preview snippet cannot be played" + }, + "dialogDiscard": "Отменить", + "@dialogDiscard": { + "description": "Dialog button - discard changes" + }, + "dialogRemove": "Убрать", + "@dialogRemove": { + "description": "Dialog button - remove item" + }, + "dialogUninstall": "Удалить", + "@dialogUninstall": { + "description": "Dialog button - uninstall extension" + }, + "dialogDiscardChanges": "Отменить изменения?", + "@dialogDiscardChanges": { + "description": "Dialog title - unsaved changes warning" + }, + "dialogUnsavedChanges": "Есть несохраненные изменения. Отменить их?", + "@dialogUnsavedChanges": { + "description": "Dialog message - unsaved changes" + }, + "dialogClearAll": "Очистить всё", + "@dialogClearAll": { + "description": "Dialog title - clear all items" + }, + "dialogRemoveExtension": "Удалить расширение", + "@dialogRemoveExtension": { + "description": "Dialog title - uninstall extension" + }, + "dialogRemoveExtensionMessage": "Вы уверены, что хотите удалить это расширение? Это действие не может быть отменено.", + "@dialogRemoveExtensionMessage": { + "description": "Dialog message - uninstall confirmation" + }, + "dialogUninstallExtension": "Удалить расширение?", + "@dialogUninstallExtension": { + "description": "Dialog title - uninstall extension" + }, + "dialogUninstallExtensionMessage": "Вы уверены, что хотите удалить {extensionName}?", + "@dialogUninstallExtensionMessage": { + "description": "Dialog message - uninstall specific extension", "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "bitrate": { + "extensionName": { "type": "String" } } }, - "extensionsMetadataPriority": "Приоритет метаданных", - "@extensionsMetadataPriority": { - "description": "Setting - metadata provider order" + "dialogClearHistoryTitle": "Очистить историю", + "@dialogClearHistoryTitle": { + "description": "Dialog title - clear download history" }, - "updateCurrent": "Текущая", - "@updateCurrent": { - "description": "Label for current version" + "dialogClearHistoryMessage": "Вы уверены, что хотите удалить всю историю загрузок? Это действие необратимо.", + "@dialogClearHistoryMessage": { + "description": "Dialog message - clear history confirmation" }, - "@aboutFeatureRequest": { - "description": "Link to suggest features" - }, - "@safMigrationSuccess": { - "description": "Snackbar after successfully migrating to SAF" - }, - "backupRestoreConfirmMessage": "This will replace your current settings, download history, liked tracks, wishlist and playlists with the contents of the backup. This cannot be undone.", - "@cleanupOrphanedDownloadsNone": { - "description": "Snackbar when no orphans found" - }, - "lyricsProviderNeteaseDesc": "NetEase Cloud Music (хорош для азиатских песен)", - "@lyricsProviderNeteaseDesc": { - "description": "Description for Netease provider" - }, - "libraryScanCancelledSubtitle": "You can retry the scan when ready.", - "@libraryScanCancelledSubtitle": { - "description": "Library scan status subtitle after cancellation" - }, - "@collectionFavoriteArtists": { - "description": "Custom folder for favorite artists" - }, - "@trackAlbum": { - "description": "Metadata label - album name" + "dialogDeleteSelectedTitle": "Удалить выбранные", + "@dialogDeleteSelectedTitle": { + "description": "Dialog title - delete selected items" }, "dialogDeleteSelectedMessage": "Удалить {count} {count, plural, one {трек} few {трека} many {треков} =1{трек} other{треков}} из истории?\n\nЭто также удалит файлы из хранилища.", "@dialogDeleteSelectedMessage": { @@ -713,811 +838,29 @@ } } }, - "trackReEnrich": "Обновить", - "@trackReEnrich": { - "description": "Menu action - re-embed metadata into audio file" - }, - "@lyricsProvidersSaved": { - "description": "Snackbar after saving lyrics provider priority" - }, - "@storageModeSaf": { - "description": "Storage mode option - Storage Access Framework" - }, - "libraryStorageAccessRequired": "Требуется доступ к хранилищу", - "@libraryStorageAccessRequired": { - "description": "Dialog title for storage permission" - }, - "@cacheClearAllConfirmTitle": { - "description": "Dialog title before clearing all caches" - }, - "@unknownArtist": { - "description": "Fallback artist name when metadata is missing" - }, - "downloadCreatePlaylistSourceFolderEnabled": "A subfolder is created for each playlist", - "@downloadCreatePlaylistSourceFolderEnabled": { - "description": "Subtitle when playlist folder is enabled" - }, - "dialogClearHistoryMessage": "Вы уверены, что хотите удалить всю историю загрузок? Это действие необратимо.", - "@dialogClearHistoryMessage": { - "description": "Dialog message - clear history confirmation" - }, - "@sectionData": { - "description": "Settings section header" - }, - "audioAnalysisRms": "RMS", - "@audioAnalysisRms": { - "description": "RMS level metric label" - }, - "downloadFilterContributingEnabled": "Contributing artists removed from Album Artist folder name", - "@downloadFilterContributingEnabled": { - "description": "Subtitle when contributing artist filter is on" - }, - "timeJustNow": "Только что", - "@extensionCustomUrlHandlingShareHint": { - "description": "Extension detail hint explaining share-to-app URL handling" - }, - "cleanupOrphanedDownloads": "Очистка отложенных скачиваний", - "@cleanupOrphanedDownloads": { - "description": "Button to remove history entries for deleted files" - }, - "@audioAnalysisNoClipping": { - "description": "Displayed when no clipped samples were detected" - }, - "@tutorialWelcomeTitle": { - "description": "Tutorial welcome page title" - }, - "collectionFavoriteArtists": "Избранный исполнитель", - "audioAnalysisRescanning": "Re-analyzing audio...", - "@audioAnalysisRescanning": { - "description": "Loading text while audio is being re-analyzed after an explicit refresh" - }, - "logTitle": "Логи", - "@logTitle": { - "description": "Logs screen title" - }, - "@regionCountryGB": { - "description": "Country name for SongLink region picker" - }, - "@progressFetchingMetadata": { - "description": "Progress indicator - loading track info", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "aboutLogoArtist": "Талантливый художник, который создал наш красивый логотип приложения!", - "@aboutLogoArtist": { - "description": "Role description for logo artist" - }, - "channelPreview": "Предварительный", - "@channelPreview": { - "description": "Update channel - beta/preview releases" - }, - "collectionPlaylistsDeleted": "{count} {count, plural, =1{playlist} other{playlists}} deleted", - "@collectionPlaylistsDeleted": { - "description": "Snackbar after deleting selected playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@libraryFilterMetadataMissingGenre": { - "description": "Filter option - items missing genre" - }, - "homeTitle": "Главная", - "@homeTitle": { - "description": "Home screen title" - }, - "extensionMinAppVersion": "Мин. версия приложения", - "@extensionMinAppVersion": { - "description": "Extension detail - minimum app version" - }, - "backupContentsLiked": "{count} liked {count, plural, =1{track} other{tracks}}", - "@backupContentsLiked": { - "description": "Backup contents row for liked tracks count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "audioAnalysisTruePeak": "True Peak", - "@audioAnalysisTruePeak": { - "description": "True peak metric label" - }, - "notifDownloadsCanceledBody": "{count, plural, =1{1 download canceled by user} other{{count} downloads canceled by user}}", - "@notifDownloadsCanceledBody": { - "description": "Notification body when downloads are canceled by the user", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@dialogRetry": { - "description": "Dialog button - retry action" - }, - "@homeChangeSearchProviderTooltip": { - "description": "Tooltip for the Home search provider picker" - }, - "@sectionLyricsProviderOptions": { - "description": "Settings section header for per-provider lyrics options" - }, - "@trackReEnrichSuccessWithFailures": { - "description": "Snackbar summary after batch metadata re-enrichment finishes with failures", - "placeholders": { - "successCount": { - "type": "int" - }, - "total": { - "type": "int" - }, - "failedCount": { - "type": "int" - } - } - }, - "previewUnavailable": "Предпросмотр недоступен", - "@previewUnavailable": { - "description": "Snackbar shown when a track preview snippet cannot be played" - }, - "nowPlayingTabPlayer": "Player", - "@nowPlayingTabPlayer": { - "description": "Tab label for the player view" - }, - "backupContentsPlaylists": "{count, plural, =1{1 playlist} other{{count} playlists}}", - "@backupContentsPlaylists": { - "description": "Backup contents row for playlist count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "libraryLastScannedNever": "Никогда", - "@libraryLastScannedNever": { - "description": "Shown when library has never been scanned" - }, - "trackTrackNumber": "Номер трека", - "@trackTrackNumber": { - "description": "Metadata label - track number" - }, - "trackReplayGainScanning": "Анализ громкости...", - "@trackReplayGainScanning": { - "description": "Snackbar/progress message while scanning ReplayGain for a single track" - }, - "downloadLossyMp3": "MP3 320 кбит/с", - "@downloadLossyMp3": { - "description": "Lossy format option - MP3 320kbps" - }, - "@albumFolderArtistAlbumSingles": { - "description": "Album folder option with singles inside artist" - }, - "@extensionHealthNotConfigured": { - "description": "Extension service health status - not configured" - }, - "@downloadSeparateSinglesDisabled": { - "description": "Subtitle when separate singles folder is off" - }, - "downloadCreatePlaylistSourceFolder": "Playlist Source Folder", - "@downloadCreatePlaylistSourceFolder": { - "description": "Setting to create a subfolder per playlist source" - }, - "@trackReleaseDate": { - "description": "Metadata label - release date" - }, - "aboutContributors": "Участники", - "@aboutContributors": { - "description": "Section for contributors" - }, - "@audioAnalysisMono": { - "description": "Audio channel layout label - mono" - }, - "@audioAnalysisNyquist": { - "description": "Nyquist frequency metric label" - }, - "permissionStorage": "Storage", - "@permissionStorage": { - "description": "Storage permission type label" - }, - "permissionAudio": "Audio", - "@permissionAudio": { - "description": "Audio permission type label" - }, - "@libraryScanSubtitle": { - "description": "Subtitle for scan button" - }, - "@snackbarUnsupportedAudioFormat": { - "description": "Snackbar when the audio format is not supported for the requested operation" - }, - "@notifLibraryScanStopped": { - "description": "Notification body when library scan is cancelled" - }, - "@downloadMusixmatchAuto": { - "description": "Button to clear Musixmatch language (use auto)" - }, - "@trackLyricsTimeout": { - "description": "Message when lyrics request times out" - }, - "@trackReEnrichFieldReleaseInfo": { - "description": "Checkbox label for release info in re-enrich" - }, - "@regionCountryXK": { - "description": "Country name for SongLink region picker" - }, - "aboutTelegramChatSubtitle": "Чат с другими пользователями", - "@aboutTelegramChatSubtitle": { - "description": "Subtitle for Telegram chat" - }, - "selectionAllPlaylistsSelected": "Выбраны все плейлисты", - "@selectionAllPlaylistsSelected": { - "description": "Shown when all playlists are selected in selection mode" - }, - "cacheTrackLookupDesc": "Поиск ID трека в Spotify/Deezer. Очистка может замедлить следующие несколько поисков.", - "@cacheTrackLookupDesc": { - "description": "Description of what track lookup cache contains" - }, - "@unknownAlbum": { - "description": "Fallback album name when metadata is missing" - }, - "@extensionsErrorLoading": { - "description": "Error message when extension fails to load" - }, - "@cacheTitle": { - "description": "Cache management page title" - }, - "@downloadFilenameFormat": { - "description": "Setting for output filename pattern" - }, - "errorUrlNotRecognized": "Ссылка не распознана", - "@errorUrlNotRecognized": { - "description": "Error title - URL not handled by any extension or service" - }, - "downloadAppleElrcWordSync": "Apple Music eLRC Word Sync", - "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { - "description": "Subtitle when album artist is used for folder names" - }, - "@qualityFlacLossless": { - "description": "Quality option - CD quality FLAC" - }, - "downloadNeteaseIncludeTranslationEnabled": "Chinese translation lines included", - "@downloadNeteaseIncludeTranslationEnabled": { - "description": "Subtitle when Netease translation is on" - }, - "collectionLovedEmptySubtitle": "Нажмите \"любовь\" на треках, чтобы сохранить ваши избранные", - "@collectionLovedEmptySubtitle": { - "description": "Loved empty state subtitle" - }, - "@libraryBuiltInPlayerInfo": { - "description": "Info note explaining the built-in player is for previews only" - }, - "@notifLibraryScanProgressNoTotal": { - "description": "Notification body for library scan progress when total is unknown", - "placeholders": { - "scanned": { - "type": "int" - }, - "percentage": { - "type": "int" - } - } - }, - "@tutorialSearchTitle": { - "description": "Tutorial search page title" - }, - "trackReEnrichSuccessWithFailures": "Metadata re-enriched successfully ({successCount}/{total}) - Failed: {failedCount}", - "@a11yTrackByArtist": { - "description": "Accessibility label for a queue or list track item", - "placeholders": { - "trackName": { - "type": "String" - }, - "artistName": { - "type": "String" - } - } - }, - "libraryFilterMetadataMissingLabel": "Missing label", - "@libraryFilterMetadataMissingLabel": { - "description": "Filter option - items missing record label" - }, - "@audioAnalysisLufs": { - "description": "Integrated loudness metric label" - }, - "trackMetadata": "Метаданные", - "@trackMetadata": { - "description": "Tab title - track metadata" - }, - "trackOptionRemoveFromLoved": "Исключить из Любимых", - "@trackOptionRemoveFromLoved": { - "description": "Bottom sheet action label - remove track from loved folder" - }, - "@aboutTelegramChat": { - "description": "Link to Telegram chat group" - }, - "@trackCopiedToClipboard": { - "description": "Snackbar - content copied" - }, - "aboutKeepAndroidOpen": "Сохранить Android открытым", - "@aboutKeepAndroidOpen": { - "description": "Link to Keep Android Open campaign website" - }, - "@lyricsProvidersDisabledSection": { - "description": "Section header for disabled providers", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@downloadAllowLocalNetwork": { - "description": "Setting title for allowing requests to private/local network targets" - }, - "@openInOtherServices": { - "description": "Title and tooltip for finding the current collection in other services" - }, - "@extensionVerificationBrowserInApp": { - "description": "Chip label for in-app browser verification mode" - }, - "sectionSearchSource": "Поиск источника", - "@sectionSearchSource": { - "description": "Settings section header" - }, - "allFilesAccess": "Доступ ко всем файлам", - "@allFilesAccess": { - "description": "Toggle for MANAGE_EXTERNAL_STORAGE permission" - }, - "extensionsInstalledCount": "{count} extensions installed successfully", - "@extensionsInstalledCount": { - "description": "Success message after installing multiple extensions", - "placeholders": { - "count": { - "type": "int", - "description": "Number of installed extensions" - } - } - }, - "snackbarFailedToEmbedLyrics": "Failed to embed lyrics", - "@snackbarFailedToEmbedLyrics": { - "description": "Snackbar when lyrics embedding fails" - }, - "@lyricsProviderMusixmatchDesc": { - "description": "Description for Musixmatch provider" - }, - "queueRateLimitTitle": "Service rate limited", - "@queueRateLimitTitle": { - "description": "Title shown on a failed queue item when the download service rate limits requests" - }, - "@notifDownloadComplete": { - "description": "Notification title when a single download is complete" - }, - "@homeSupports": { - "description": "Info text about supported URL types" - }, - "notifDownloadsCanceledTitle": "Downloads canceled", - "@notifDownloadsCanceledTitle": { - "description": "Notification title when downloads are canceled by the user" - }, - "@lyricsModeEmbedSubtitle": { - "description": "Subtitle for embed option" - }, - "optionsReplayGain": "ReplayGain", - "@optionsReplayGain": { - "description": "Title for ReplayGain setting toggle" - }, - "@storeLoadError": { - "description": "Error heading when the store cannot be loaded" - }, - "@trackArtist": { - "description": "Metadata label - artist name" - }, - "cacheCoverImageDesc": "Скачанный альбом и трек обложки. Будет заново скачан после просмотра.", - "@cacheCoverImageDesc": { - "description": "Description of what cover image cache contains" - }, - "queueClearAll": "Очистить всё", - "@queueClearAll": { - "description": "Button - clear all queue items" - }, - "downloadUsePrimaryArtistOnlyDisabled": "Полная строка исполнителя, используемая для имени папки", - "@downloadUsePrimaryArtistOnlyDisabled": { - "description": "Subtitle when primary artist only is disabled" - }, - "backupImportSectionTitle": "Restore backup", - "@backupImportSectionTitle": { - "description": "Section title for the import/restore card" - }, - "@downloadMusixmatchLanguageHint": { - "description": "Placeholder for Musixmatch language input" - }, - "collectionRemoveFromFolder": "Убрать из папки", - "@collectionRemoveFromFolder": { - "description": "Tooltip for removing track from wishlist/loved folder" - }, - "storeFilterMetadata": "Метаданные", - "@storeFilterMetadata": { - "description": "Repo filter - metadata providers" - }, - "shareSheetCopyLink": "Copy Link", - "errorRateLimitedMessage": "Слишком много запросов. Пожалуйста, подождите минуту перед повторным поиском.", - "@errorRateLimitedMessage": { - "description": "Error message - rate limit explanation" - }, - "libraryFilterSortGenreDesc": "Жанр (Я-А)", - "@libraryFilterSortGenreDesc": { - "description": "Sort option - genre descending" - }, - "trackFileNotFound": "Файл не найден", - "@trackFileNotFound": { - "description": "Error - file doesn't exist" - }, - "@queueEmptySinglesSubtitle": { - "description": "Empty state subtitle for single track downloads" - }, - "@queueDownloadStarting": { - "description": "Queue status before download progress is available" - }, - "metadataProviderPriorityInfo": "Deezer не имеет ограничений по скорости и рекомендуется в качестве основного. Spotify может ограничивать скорость после большого количества запросов.", - "@metadataProviderPriorityInfo": { - "description": "Info tip about rate limits" - }, - "aboutPCSource": "Исходный код ПК версии", - "@aboutPCSource": { - "description": "Link to PC GitHub repo" - }, - "editMetadataAutoFill": "Auto-fill from online", - "@editMetadataAutoFill": { - "description": "Section title for selective online metadata auto-fill in the edit metadata sheet" - }, - "snackbarDeletedTracks": "Удалено {count} {count, plural, one {трек} few {трека} many {треков} =1{трек} other{треков}}", - "@snackbarDeletedTracks": { - "description": "Snackbar - tracks deleted", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@extensionHealthServiceDegraded": { - "description": "Tooltip for degraded extension service" - }, - "lyricsProviderLrclibDesc": "Open-source synced lyrics database", - "@lyricsProviderLrclibDesc": { - "description": "Description for LRCLIB provider" - }, - "downloadMusixmatchLanguageDesc": "Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.", - "@downloadMusixmatchLanguageDesc": { - "description": "Description in Musixmatch language picker" - }, - "@optionsEmbedMetadataSubtitleOn": { - "description": "Subtitle when metadata embedding is enabled" - }, - "@setupSkipForNow": { - "description": "Skip button text" - }, - "@a11ySelectTrack": { - "description": "Accessibility label for selecting a track" - }, - "@folderOrganizationByAlbumSubtitle": { - "description": "Subtitle for album folder option" - }, - "downloadLossyAac": "AAC/M4A 320kbps", - "@extensionVerificationBrowserTitle": { - "description": "Settings option title for extension verification browser preference" - }, - "@backupContentsExtensions": { - "description": "Backup contents row for installed extensions count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarUrlCopied": "{platform} ссылка скопирована в буфер обмена", - "@snackbarUrlCopied": { - "description": "Snackbar - URL copied", - "placeholders": { - "platform": { - "type": "String", - "description": "Platform name (Spotify/Deezer)" - } - } - }, - "aboutBinimumDesc": "The creator of QQDL & HiFi API. This project helped shape lossless download support.", - "@aboutBinimumDesc": { - "description": "Credit description for binimum" - }, - "discographyFetchingAlbum": "Получение {current} из {total}...", - "@discographyFetchingAlbum": { - "description": "Progress - fetching specific album", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "logAutoScrollOn": "Auto-scroll ON", - "@logAutoScrollOn": { - "description": "Tooltip when auto-scroll is enabled on the log screen" - }, - "@settingsMetadataSubtitle": { - "description": "Subtitle for metadata settings" - }, - "@regionCountryBR": { - "description": "Country name for SongLink region picker" - }, - "@lyricsProvidersTitle": { - "description": "Settings item title for lyrics provider order" - }, - "trackMetadataService": "Сервис", - "@trackMetadataService": { - "description": "Metadata field - download service used" - }, - "discographyAddedToQueue": "Добавлено {count} треков в очередь", - "cueSplitTrackCount": "{count} треков", - "@cueSplitTrackCount": { - "description": "Number of tracks in CUE sheet", - "placeholders": { - "count": { - "type": "int" - } - } - }, "dialogImportPlaylistTitle": "Импорт плейлиста", "@dialogImportPlaylistTitle": { "description": "Dialog title - import CSV playlist" }, - "@cleanupOrphanedDownloadsSubtitle": { - "description": "Subtitle for orphaned cleanup button" - }, - "settingsLocalLibrary": "Локальная библиотека", - "@settingsLocalLibrary": { - "description": "Settings menu item - local library" - }, - "@metadataSaveFailedStorage": { - "description": "Snackbar error when writing metadata file back to storage fails" - }, - "logCopyLogs": "Copy logs", - "@logCopyLogs": { - "description": "Tooltip for copying logs" - }, - "downloadNetworkWifiOnlySubtitle": "Downloads pause when on mobile data", - "@downloadNetworkWifiOnlySubtitle": { - "description": "Subtitle for WiFi-only option in picker" - }, - "@lyricsModeBothSubtitle": { - "description": "Subtitle for both option" - }, - "@collectionAlreadyInPlaylist": { - "description": "Snackbar when track already exists in playlist", - "placeholders": { - "playlistName": { - "type": "String" - } - } - }, - "@collectionFoldersTitle": { - "description": "Library section title for custom folders" - }, - "searchSortDateNewest": "Дата релиза (новейшая)", - "@searchSortDateNewest": { - "description": "Sort option - newest release first" - }, - "downloadDeduplicationDisabled": "All tracks will be downloaded regardless of history", - "@downloadDeduplicationDisabled": { - "description": "Subtitle when deduplication is off" - }, - "@recentTypeAlbum": { - "description": "Recent access item type - album" - }, - "nowPlayingPlayInOrder": "Play in order", - "@nowPlayingPlayInOrder": { - "description": "Tooltip when shuffle mode is disabled" - }, - "@cueSplitConfirmMessage": { - "description": "CUE split confirmation dialog message", - "placeholders": { - "album": { - "type": "String" - }, - "count": { - "type": "int" - } - } - }, - "@audioAnalysisFileSize": { - "description": "File size metric label" - }, - "artistSingles": "Синглы и EP", - "@artistSingles": { - "description": "Section header for singles/EPs" - }, - "@snackbarProviderPrioritySaved": { - "description": "Snackbar - provider order saved" - }, - "@recentPlaylistInfo": { - "description": "Snackbar message when tapping playlist in recent access", - "placeholders": { - "name": { - "type": "String", - "description": "Playlist name" - } - } - }, - "@lyricsProviderLyricsPlusDesc": { - "description": "Description for LyricsPlus provider" - }, - "@libraryFilterDownloaded": { - "description": "Filter chip - show only downloaded items" - }, - "recentPlaylistInfo": "Плейлист: {name}", - "@optionsReplayGainSubtitleOn": { - "description": "Subtitle when ReplayGain is enabled" - }, - "@actionCreate": { - "description": "Generic action button - create" - }, - "@downloadSelectQuality": { - "description": "Dialog title - choose audio quality" - }, - "cueSplitAlbum": "Альбом: {album}", - "@cueSplitAlbum": { - "description": "Album name in CUE split sheet", - "placeholders": { - "album": { - "type": "String" - } - } - }, - "@trackCoverNoSource": { - "description": "Snackbar when no cover art URL or embedded cover" - }, - "@storeRepoUrlLabel": { - "description": "Label for the repository URL input field" - }, - "@notifLibraryScanCompleteBody": { - "description": "Notification body for library scan complete - number of indexed tracks", + "dialogImportPlaylistMessage": "Found {count} tracks in the playlist file. Add them to download queue?", + "csvImportTracks": "{count} трек(-ов) из CSV", + "@csvImportTracks": { + "description": "Label shown in quality picker for CSV import", "placeholders": { "count": { "type": "int" } } }, - "optionsDetailedLogging": "Подробный лог", - "@optionsDetailedLogging": { - "description": "Enable verbose logs for debugging" + "collectionExportM3u": "Экспорт в M3U8", + "@collectionExportM3u": { + "description": "Tooltip on the collection screen action that exports the track list as an M3U8 playlist file" }, - "@lyricsProvidersDiscardContent": { - "description": "Body text of the discard-changes dialog on lyrics provider page" - }, - "@dialogDisableHistoryTitle": { - "description": "Confirmation dialog title shown before disabling download history" - }, - "downloadLossyOpus128Subtitle": "Минимальный размер, ~4 Мб на трек", - "@downloadLossyOpus128Subtitle": { - "description": "Subtitle for Opus 128kbps lossy option" - }, - "@appName": { - "description": "App name - DO NOT TRANSLATE" - }, - "libraryActions": "Действия", - "@libraryActions": { - "description": "Section header for library actions" - }, - "setupNoFolderSelected": "Папка не выбрана. Хотите использовать папку Музыка по умолчанию?", - "@setupNoFolderSelected": { - "description": "Prompt when no folder selected" - }, - "downloadMusixmatchLanguageHint": "e.g. en, de, ja", - "trackSaveFailed": "Ошибка: {error}", - "@trackSaveFailed": { - "description": "Snackbar when save operation fails", + "collectionExportM3uDone": "Exported {exported} of {total} tracks", + "@collectionExportM3uDone": { + "description": "Snackbar after M3U8 export; tracks without a local file are not exported", "placeholders": { - "error": { - "type": "String" - } - } - }, - "replayGainBatchConfirmTitle": "Добавить ReplayGain", - "@replayGainBatchConfirmTitle": { - "description": "Title of the batch ReplayGain confirmation dialog" - }, - "tutorialExtensionsTip1": "Browse the Repo tab to discover useful extensions", - "@tutorialExtensionsTip1": { - "description": "Tutorial extensions tip 1" - }, - "@trackAddToQueue": { - "description": "Menu action to add a track to the playback queue" - }, - "@cacheTrackLookup": { - "description": "Cache item title for track ID lookup cache" - }, - "@discographyNoAlbums": { - "description": "Error - no albums found for artist" - }, - "@updateLater": { - "description": "Update button - dismiss" - }, - "@snackbarFailedToInstall": { - "description": "Snackbar - extension install error" - }, - "@albumFolderArtistAlbumFlatSubtitle": { - "description": "Folder structure example for flat singles" - }, - "@errorMissingExtensionSource": { - "description": "Error - extension source not available", - "placeholders": { - "item": { - "type": "String" - } - } - }, - "libraryFilterSortAlbumAsc": "Альбом (А-Я)", - "@libraryFilterSortAlbumAsc": { - "description": "Sort option - album ascending" - }, - "@queueTrackCount": { - "description": "Track count label with plural support", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "audioAnalysisMono": "Mono", - "@trackLyricsSource": { - "description": "Label showing the lyrics source/provider", - "placeholders": { - "source": { - "type": "String" - } - } - }, - "@lyricsModeEmbed": { - "description": "Lyrics mode option - embed in audio file" - }, - "@storeRepoDialogCurrent": { - "description": "Label shown above the current repository URL in the dialog" - }, - "@cacheRefreshStats": { - "description": "Button label to refresh cache statistics" - }, - "lyricsProviderAppleMusicDesc": "Word-by-word synced lyrics (via proxy)", - "@lyricsProviderAppleMusicDesc": { - "description": "Description for Apple Music provider" - }, - "@downloadDeduplication": { - "description": "Setting - skip tracks already in download history" - }, - "updateFailedMessage": "Сбой загрузки обновления", - "@updateFailedMessage": { - "description": "Update error message" - }, - "cacheEstimatedTotal": "Приблизительное использование кэша: {size}", - "@cacheEstimatedTotal": { - "description": "Total cache size shown in summary", - "placeholders": { - "size": { - "type": "String" - } - } - }, - "@aboutVersion": { - "description": "Version info label" - }, - "dialogRetry": "Повторить", - "@cueSplitSplitting": { - "description": "Snackbar while splitting CUE", - "placeholders": { - "current": { + "exported": { "type": "int" }, "total": { @@ -1525,769 +868,81 @@ } } }, - "@searchSortTitleZA": { - "description": "Sort option - title descending" + "collectionExportM3uNone": "Нет загруженных файлов для экспорта", + "@collectionExportM3uNone": { + "description": "Snackbar when an M3U8 export finds no local files" }, - "tutorialLibraryTip2": "Tap a track to play it with the built-in player", - "@tutorialLibraryTip2": { - "description": "Tutorial library tip 2" + "collectionExportM3uFailed": "Ошибка экспорта", + "@collectionExportM3uFailed": { + "description": "Snackbar when writing or sharing the M3U8 export fails" }, - "extensionHealthServiceOffline": "Service offline", - "@extensionHealthServiceOffline": { - "description": "Tooltip for offline extension service" + "trackOpenOn": "Открыть на...", + "@trackOpenOn": { + "description": "Track option and sheet title listing streaming platforms where the track can be opened" }, - "actionDeselect": "Снять выделение", - "@actionDeselect": { - "description": "Action button - deselect all" + "trackOpenOnNoLinks": "Для этого трека ссылки не найдены.", + "@trackOpenOnNoLinks": { + "description": "Shown in the Open on sheet when song.link returns no links" }, - "@trackConvertOriginal": { - "description": "Label for keeping original bit depth or sample rate during conversion" + "libraryReviewDuplicates": "Проверка дубликатов", + "@libraryReviewDuplicates": { + "description": "Library settings row opening the duplicate review sheet" }, - "@libraryClearConfirmTitle": { - "description": "Dialog title for clear confirmation" + "libraryReviewDuplicatesSubtitle": "Поиск треков, сохраненных более одного раза", + "@libraryReviewDuplicatesSubtitle": { + "description": "Subtitle for the duplicate review settings row" }, - "@dialogDownloadAllMessage": { - "description": "Body of the Download All confirmation dialog", - "placeholders": { - "count": { - "type": "int" - } - } + "duplicatesTitle": "Дубликаты", + "@duplicatesTitle": { + "description": "Title of the duplicate review sheet" }, - "homeSupports": "Поддерживается: Трек, Альбом, Плейлист, URL исполнителя", - "@downloadedAlbumDeleteSelected": { - "description": "Button - delete selected tracks" + "duplicatesEmpty": "Дублированные треки не найдены.", + "@duplicatesEmpty": { + "description": "Shown when the duplicate review sheet finds nothing" }, - "@recentShowAllDownloads": { - "description": "Button label to unhide hidden downloads in recent access" + "duplicatesKeepBest": "Оставить лучшее", + "@duplicatesKeepBest": { + "description": "Button that deletes all but the highest-quality copy in a duplicate group" }, - "artistOptionRemoveFromFavorites": "Удалить из избранных исполнителей", - "@artistOptionRemoveFromFavorites": { - "description": "Action label - remove artist from favorite artists" + "duplicatesKeepBestAll": "Keep best for all", + "@duplicatesKeepBestAll": { + "description": "Button that keeps the highest-quality copy in every duplicate group and deletes the rest" }, - "collectionPlaylistEmptyTitle": "Плейлист пуст", - "@collectionPlaylistEmptyTitle": { - "description": "Playlist empty state title" - }, - "libraryFilterSortLatest": "Последние", - "@libraryFilterSortLatest": { - "description": "Sort option - newest first" - }, - "@libraryFilterMetadataMissingYear": { - "description": "Filter option - items missing release year/date" - }, - "@selectionSelected": { - "description": "Selection count indicator", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@tracksCount": { - "description": "Track count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@optionsCheckUpdates": { - "description": "Auto update check toggle" - }, - "@qualityHiResFlacMaxSubtitle": { - "description": "Technical spec for hi-res max" - }, - "actionStop": "Stop", - "@actionStop": { - "description": "Generic action - stop" - }, - "@selectionSelectToDelete": { - "description": "Placeholder when nothing selected" - }, - "folderOrganizationNoneSubtitle": "Все файлы в папке загрузок", - "@folderOrganizationNoneSubtitle": { - "description": "Subtitle for no organization option" - }, - "@updateDownloading": { - "description": "Update status - downloading" - }, - "artistAlbums": "Альбомы", - "@artistAlbums": { - "description": "Section header for artist albums" - }, - "trackConvertDitherTriangular": "TPDF", - "@trackConvertDitherTriangular": { - "description": "Lossless conversion triangular probability density function dither option" - }, - "nowPlayingShuffleLibraryFailed": "Could not shuffle library: {error}", - "@nowPlayingShuffleLibraryFailed": { - "description": "Snackbar when shuffling the library fails", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "@setupIcloudNotSupported": { - "description": "Error when user selects iCloud Drive on iOS" - }, - "@optionsArtistTagModeSplitVorbis": { - "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" - }, - "@extensionsProviderPrioritySection": { - "description": "Section header - provider priority" - }, - "@libraryShowDuplicateIndicatorSubtitle": { - "description": "Subtitle for duplicate indicator toggle" - }, - "sectionDuplicates": "Duplicates", - "@sectionDuplicates": { - "description": "Settings section header for deduplication" - }, - "@backupTitle": { - "description": "App bar title for the backup and restore page" - }, - "trackCoverReplaceNotice": "The selected cover will replace the current embedded cover when you tap Save.", - "cacheSectionMaintenance": "Обслуживание", - "@cacheSectionMaintenance": { - "description": "Section header for cleanup actions" - }, - "@editMetadataFieldGenre": { - "description": "Chip label for genre field in auto-fill selector" - }, - "@extensionsFallbackSubtitle": { - "description": "Subtitle for download fallback extensions menu" - }, - "selectionBatchConvertConfirmMessage": "Преобразовать {count} {count, plural, =1{track} other{tracks}} в {format} с {bitrate}?", - "@selectionBatchConvertConfirmMessage": { - "description": "Confirmation dialog message for batch conversion", + "duplicatesKeepBestAllMessage": "Сохранить лучшую копию из {groupCount} {groupCount, plural, =1{трека} few{треков} other{треков}} и удалить {count} {count, plural, =1{копию} few{копии} other{копий}} более низкого качества?\n\nУдалённые файлы будут стерты из хранилища.", + "@duplicatesKeepBestAllMessage": { + "description": "Confirmation message for keeping the best copy across every duplicate group", "placeholders": { "count": { "type": "int" }, - "format": { - "type": "String" - }, - "bitrate": { - "type": "String" - } - } - }, - "@selectionTapPlaylistsToSelect": { - "description": "Hint shown in playlist selection mode" - }, - "qualityHiResFlacMaxSubtitle": "24-бит / до 192кГц", - "snackbarRemovedTracksFromLoved": "Removed {count} tracks from Loved", - "@snackbarRemovedTracksFromLoved": { - "description": "Snackbar after removing multiple tracks from Loved folder", - "placeholders": { - "count": { + "groupCount": { "type": "int" } } }, - "folderOrganizationByArtistAlbum": "Исполнитель/Альбом", - "@folderOrganizationByArtistAlbum": { - "description": "Folder option - nested folders" - }, - "snackbarCannotOpenFile": "Невозможно открыть файл: {error}", - "@snackbarCannotOpenFile": { - "description": "Snackbar - file open error", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "@optionsDetailedLoggingOff": { - "description": "Status when logging disabled" - }, - "@setupStorageDescription": { - "description": "Explanation for storage permission" - }, - "audioAnalysisCodec": "Codec", - "@regionCountryFR": { - "description": "Country name for SongLink region picker" - }, - "@optionsArtistTagMode": { - "description": "Setting title for how artist metadata is written into files" - }, - "@libraryClearConfirmMessage": { - "description": "Dialog message for clear confirmation" - }, - "trackLyricsNotAvailable": "Текст песни недоступен для этого трека", - "@trackLyricsNotAvailable": { - "description": "Message when lyrics not found" - }, - "storeFilterUtility": "Утилиты", - "@storeFilterUtility": { - "description": "Repo filter - utility extensions" - }, - "collectionAddedToPlaylist": "Добавлено в \"{playlistName}\"", - "@collectionAddedToPlaylist": { - "description": "Snackbar after adding track to playlist", - "placeholders": { - "playlistName": { - "type": "String" - } - } - }, - "cacheClearConfirmTitle": "Очистить кэш?", - "@cacheClearConfirmTitle": { - "description": "Dialog title before clearing one cache category" - }, - "@downloadAppleElrcWordSyncDisabled": { - "description": "Subtitle when Apple Music eLRC word sync is disabled" - }, - "@aboutMobileDeveloper": { - "description": "Role description for mobile dev" - }, - "albumFolderYearAlbum": "[Год] Альбом", - "@albumFolderYearAlbum": { - "description": "Album folder option with year" - }, - "cacheTitle": "Хранилище и кэш", - "@extensionPostProcessing": { - "description": "Capability - post-download processing" - }, - "extensionsNoMetadataProvider": "Нет расширений с провайдером метаданных", - "@extensionsNoMetadataProvider": { - "description": "Empty state - no metadata providers" - }, - "searchSortTitleZA": "Название (Я-А)", - "@queueClearAllMessage": { - "description": "Clear queue confirmation" - }, - "audioAnalysisTitle": "Audio Quality Analysis", - "@audioAnalysisTitle": { - "description": "Title for audio analysis section" - }, - "@aboutReportIssueSubtitle": { - "description": "Subtitle for report issue" - }, - "@audioAnalysisSampleRate": { - "description": "Sample rate metric label" - }, - "@discographySelectedCount": { - "description": "Selection count badge", + "duplicatesKeepBestMessage": "Удалить {count} копий {trackName} низкого качества?", + "@duplicatesKeepBestMessage": { + "description": "Confirmation message for the keep-best action", "placeholders": { "count": { "type": "int" - } - } - }, - "qualityFlacLosslessSubtitle": "16-бит / 44.1 кГц", - "@qualityFlacLosslessSubtitle": { - "description": "Technical spec for lossless" - }, - "libraryScanFinalizing": "Завершение работы с библиотекой...", - "@libraryScanFinalizing": { - "description": "Status shown after file scanning finishes but library persistence is still running" - }, - "@trackEditMetadata": { - "description": "Menu action - edit embedded metadata" - }, - "@downloadNeteaseIncludeRomanization": { - "description": "Setting to include romanized lyrics from Netease" - }, - "@optionsArtistTagModeJoinedSubtitle": { - "description": "Subtitle for joined artist tag mode" - }, - "regionCountryDE": "Germany", - "@regionCountryDE": { - "description": "Country name for SongLink region picker" - }, - "optionsAutoFallback": "Автоматический переход", - "@optionsAutoFallback": { - "description": "Auto-retry with other services" - }, - "@trackMetadataPlay": { - "description": "Action button - play track" - }, - "settingsFiles": "Files & Folders", - "@settingsFiles": { - "description": "Settings menu item - file and folder settings" - }, - "aboutMobileDeveloper": "Разработчик мобильной версии", - "@trackDownloaded": { - "description": "Metadata label - download date" - }, - "homeSkipAlreadyDownloaded": "Skip already downloaded songs", - "@homeSkipAlreadyDownloaded": { - "description": "Checkbox label in import dialog to skip already-downloaded songs" - }, - "dialogUninstall": "Удалить", - "@dialogUninstall": { - "description": "Dialog button - uninstall extension" - }, - "collectionDeletePlaylist": "Удалить плейлист", - "@collectionDeletePlaylist": { - "description": "Action to delete playlist" - }, - "trackCoverOnline": "Online cover", - "@trackCoverOnline": { - "description": "Label shown when metadata autofill downloaded cover art from the internet" - }, - "downloadTitle": "Скачать", - "@downloadTitle": { - "description": "Download settings page title" - }, - "searchArtists": "Исполнители", - "@searchArtists": { - "description": "Search result category - artists" - }, - "extensionUrlHandler": "URL-обработчик", - "@extensionUrlHandler": { - "description": "Capability - handles URLs" - }, - "@timeHoursAgo": { - "description": "Relative time - hours ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "editMetadataAdvanced": "Advanced", - "@editMetadataAdvanced": { - "description": "Expandable section label for advanced metadata fields" - }, - "@actionSelectAll": { - "description": "Action button - select all items" - }, - "timeMinutesAgo": "{count, plural, =1{1 minute ago} other{{count} minutes ago}}", - "@timeMinutesAgo": { - "description": "Relative time - minutes ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "regionCountryXK": "Kosovo", - "@downloadAskQualitySubtitle": { - "description": "Subtitle for ask quality toggle" - }, - "setupLanguageSystemDefault": "Системные настройки", - "@setupLanguageSystemDefault": { - "description": "Option to use the system language" - }, - "@updateAvailable": { - "description": "Update dialog title" - }, - "cacheEntries": "{count} записей", - "@cacheEntries": { - "description": "Track cache entry count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@notifLibraryScanExcluded": { - "description": "Library scan complete suffix - excluded track count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionsMetadataPrioritySubtitle": "Установка порядка поиска и источника метаданных", - "@extensionsMetadataPrioritySubtitle": { - "description": "Subtitle for metadata priority" - }, - "downloadedAlbumSelectToDelete": "Выберите треки для удаления", - "@downloadedAlbumSelectToDelete": { - "description": "Placeholder when nothing selected" - }, - "@dialogClearHistoryTitle": { - "description": "Dialog title - clear download history" - }, - "tutorialSettingsTip1": "Изменить местоположение и организацию папок для скачивания", - "@tutorialSettingsTip1": { - "description": "Tutorial settings tip 1" - }, - "@extensionsInstalledSuccess": { - "description": "Success message after install" - }, - "allFilesAccessDisabledSubtitle": "Ограничено только папками медиа", - "@allFilesAccessDisabledSubtitle": { - "description": "Subtitle when all files access is disabled" - }, - "@appearanceHistoryViewList": { - "description": "List layout option" - }, - "@notifAlreadyInLibraryCount": { - "description": "Notification title when track is already in library, with count", - "placeholders": { - "completed": { - "type": "int" }, - "total": { - "type": "int" - } - } - }, - "@libraryFilterAll": { - "description": "Filter chip - show all library items" - }, - "settingsDownload": "Скачивание", - "settingsFilesSubtitle": "Download location, filename, folder structure", - "@settingsFilesSubtitle": { - "description": "Subtitle for files & folders settings" - }, - "@libraryFilterSort": { - "description": "Filter section - sort order" - }, - "metadataProvidersSubtitle": "Drag to set search and metadata source order", - "@extensionPermissions": { - "description": "Section header - required permissions" - }, - "selectionSelectToDelete": "Выберите треки для удаления", - "@libraryExternalPlayerSubtitle": { - "description": "Subtitle for external player option" - }, - "extensionVerificationOpenBrowser": "Open browser", - "@extensionVerificationOpenBrowser": { - "description": "Button to open the extension verification URL in a browser" - }, - "@trackConvertConfirmMessageLossless": { - "description": "Confirmation dialog message for lossless-to-lossless conversion", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { + "trackName": { "type": "String" } } }, - "@snackbarAddedTracksToQueue": { - "description": "Snackbar - multiple tracks added to queue", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@backupContentsWishlist": { - "description": "Backup contents row for wishlist tracks count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@cacheCleanupUnusedSubtitle": { - "description": "Subtitle for cleanup unused data action" - }, - "trackLabel": "Заголовок", - "@trackLabel": { - "description": "Metadata label - record label" - }, - "@collectionAddedToLoved": { - "description": "Snackbar after adding track to loved folder", + "duplicatesDeleteCopyMessage": "Удалить эту копию \"{trackName}\"?", + "@duplicatesDeleteCopyMessage": { + "description": "Confirmation message for deleting one duplicate copy", "placeholders": { "trackName": { "type": "String" } } }, - "regionCountryGB": "United Kingdom", - "dialogCancel": "Отмена", - "@dialogCancel": { - "description": "Dialog button - cancel action" - }, - "@folderOrganizationByArtistAlbumSubtitle": { - "description": "Subtitle for nested folder option" - }, - "@notifAllDownloadsComplete": { - "description": "Notification title when all downloads finish successfully" - }, - "setupEnableNotifications": "Включить уведомления", - "@setupEnableNotifications": { - "description": "Button to enable notifications" - }, - "@notifFinalizingTrack": { - "description": "Notification title while finalizing (embedding metadata) a track", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "@downloadLossy320FormatDesc": { - "description": "Description in the lossy format picker" - }, - "filenameFormat": "Формат имени файла", - "@filenameFormat": { - "description": "Setting title - filename pattern" - }, - "historySearchHint": "Поиск в истории...", - "@historySearchHint": { - "description": "Search bar placeholder in history" - }, - "@tutorialReadyMessage": { - "description": "Tutorial completion message" - }, - "cacheTempDirectoryDesc": "Временные файлы из загрузок и аудио конвертации.", - "@cacheTempDirectoryDesc": { - "description": "Description of what temporary directory contains" - }, - "@trackSaveLyrics": { - "description": "Menu action - save lyrics as .lrc file" - }, - "@notifDownloadsFinished": { - "description": "Notification title when queue finishes with some failures", - "placeholders": { - "completed": { - "type": "int" - }, - "failed": { - "type": "int" - } - } - }, - "@historyFilterAlbums": { - "description": "Filter chip - show albums only" - }, - "trackEmbedLyrics": "Вписать текст песни", - "@trackEmbedLyrics": { - "description": "Action - embed lyrics into audio file" - }, - "@downloadPrimaryArtistOnlyOff": { - "description": "Status label when primary-artist-only folder naming is disabled" - }, - "@trackReEnrichFieldTrackInfo": { - "description": "Checkbox label for track info in re-enrich" - }, - "snackbarHistoryCleared": "История очищена", - "downloadNetworkCompatibilityModeDisabled": "Using standard network settings", - "@artistPopular": { - "description": "Section header for popular/top tracks" - }, - "@trackFetchOnlineLyrics": { - "description": "Action - fetch lyrics from online providers" - }, - "extensionLyricsProvider": "Провайдер текстов", - "@extensionLyricsProvider": { - "description": "Capability - provides lyrics" - }, - "historyFilterAll": "Все", - "@historyFilterAll": { - "description": "Filter chip - show all items" - }, - "tutorialSearchTitle": "Поиск музыки", - "@lyricsModeExternal": { - "description": "Lyrics mode option - separate LRC file" - }, - "@actionDismiss": { - "description": "Generic action - dismiss" - }, - "trackOpenInSpotify": "Открыть в Spotify", - "@trackOpenInSpotify": { - "description": "Action - open track in Spotify app" - }, - "@libraryClear": { - "description": "Button to clear all library entries" - }, - "discographyFailedToFetch": "Не удалось получить некоторые альбомы", - "@filenameShowAdvancedTagsDescription": { - "description": "Description for advanced filename tag toggle" - }, - "@storeUpdate": { - "description": "Update available button" - }, - "collectionPlaylistTracks": "{count, plural, =1{1 track} other{{count} tracks}}", - "@collectionPlaylistTracks": { - "description": "Track count label for custom playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "optionsPrimaryProviderSubtitle": "Сервис для поиска по названию трека или альбома", - "@optionsPrimaryProviderSubtitle": { - "description": "Subtitle for primary provider" - }, - "@downloadEmbedLyricsDisabled": { - "description": "Subtitle when lyrics embedding is blocked by metadata toggle" - }, - "@librarySourceLocal": { - "description": "Badge for tracks from local library scan" - }, - "@searchSortDurationLong": { - "description": "Sort option - longest duration first" - }, - "@downloadFilterContributingDisabled": { - "description": "Subtitle when contributing artist filter is off" - }, - "queueDownloadingCount": "Скачивание ({count})", - "@queueDownloadingCount": { - "description": "Header for active downloads section with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionVerificationBrowserInApp": "In-app", - "trackAudioQuality": "Качество записи", - "@trackAudioQuality": { - "description": "Metadata label - audio quality" - }, - "libraryRemovedMissingFiles": "Удалено {count} {count, plural, one{отсутствующий файл} few{трека} many{отсутствующих файлов} other{отсутствующих файлов}} в библиотеке", - "@libraryRemovedMissingFiles": { - "description": "Snackbar after cleanup", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "collectionFavoriteArtistsEmptyTitle": "Нет избранных исполнителей", - "@collectionFavoriteArtistsEmptyTitle": { - "description": "Favorite artists empty state title" - }, - "@errorInvalidFolderSelected": { - "description": "Error when the selected folder is invalid" - }, - "@searchSortArtistZA": { - "description": "Sort option - artist descending" - }, - "snackbarAddedTracksToLoved": "Added {count} tracks to Loved", - "@snackbarAddedTracksToLoved": { - "description": "Snackbar after adding multiple tracks to Loved folder", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cancelDownloadContent": "This will cancel the active download for \"{trackName}\".", - "@cancelDownloadContent": { - "description": "Dialog body when confirming cancellation of an active download", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "settingsCacheSubtitle": "Просмотреть размер и очистить кэш", - "@settingsCacheSubtitle": { - "description": "Subtitle for cache management menu" - }, - "notifLibraryScanCompleteBody": "{count} треков индексировано", - "@cacheSizeWithFiles": { - "description": "Cache size and file count", - "placeholders": { - "size": { - "type": "String" - }, - "count": { - "type": "int" - } - } - }, - "@downloadAskBeforeDownload": { - "description": "Setting - show quality picker" - }, - "@extensionHealthDegraded": { - "description": "Extension service health status - degraded" - }, - "@sectionPerformance": { - "description": "Settings section header" - }, - "@trackCoverCurrent": { - "description": "Label for the currently embedded cover preview" - }, - "discographySelectAlbums": "Выбрать альбомы...", - "@discographySelectAlbums": { - "description": "Option - manually select albums to download" - }, - "aboutAppDescription": "Ищите метаданных музыки, управляйте расширениями и организуйте свою библиотеку.", - "@aboutAppDescription": { - "description": "App description in header card" - }, - "extensionCustomTrackMatching": "Соответствие пользовательских треков", - "@extensionCustomTrackMatching": { - "description": "Capability - custom track matching algorithm" - }, - "@editMetadataSelectNone": { - "description": "Button to clear selected fields for auto-fill" - }, - "@trackPlayNext": { - "description": "Menu action to play a track as the next queue item" - }, - "extensionCapabilities": "Возможности", - "@extensionCapabilities": { - "description": "Section header - extension features" - }, - "@downloadSelectServiceToEnable": { - "description": "Subtitle when quality picker is disabled due to extension service" - }, - "logIssueRateLimitedDescription": "Too many requests to the service", - "@logIssueRateLimitedDescription": { - "description": "Diagnostic badge description for rate limiting" - }, - "@actionResume": { - "description": "Action button - resume download" - }, - "@updateDownloadInstall": { - "description": "Update button - download and install" - }, - "downloadLossy320Format": "Формат с потерями 320 кбит/с", - "@downloadLossy320Format": { - "description": "Title of the lossy format picker bottom sheet" - }, - "settingsMetadataSubtitle": "Cover art, tags, ReplayGain, providers", - "@trackCopyright": { - "description": "Metadata label - copyright information" - }, - "@snackbarExtensionInstalled": { - "description": "Snackbar - extension installed successfully", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "@regionCountryJP": { - "description": "Country name for SongLink region picker" - }, - "trackReEnrichOnlineSubtitle": "Поиск в сети метаданных и встраивание в файл", - "@trackReEnrichOnlineSubtitle": { - "description": "Subtitle for re-enrich metadata action for local items" - }, - "nowPlayingNothingPlaying": "Nothing is playing", - "@nowPlayingNothingPlaying": { - "description": "Empty state when no track is currently playing" - }, - "tutorialDownloadDesc": "Pick an available quality, start the download, and follow its progress in the queue.", - "@tutorialDownloadDesc": { - "description": "Tutorial download page description" - }, - "@appearanceTitle": { - "description": "Appearance settings page title" - }, - "@backupExportSectionDescription": { - "description": "Description of what a backup contains" - }, - "@downloadLossyOpus128": { - "description": "Lossy format option - Opus 128kbps" - }, - "@logFilterSection": { - "description": "Filter section title" - }, - "trackReEnrichSuccess": "Метаданные успешно обновлены", - "@trackReEnrichSuccess": { - "description": "Snackbar after successful re-enrichment" - }, - "backupContentsHistory": "{count} history {count, plural, =1{item} other{items}}", - "@backupContentsHistory": { - "description": "Backup contents row for history count", + "@dialogImportPlaylistMessage": { + "description": "Dialog message - import playlist confirmation", "placeholders": { "count": { "type": "int" @@ -2303,145 +958,1481 @@ } } }, - "libraryAutoScanOnOpen": "Каждое открытие приложения", - "@libraryAutoScanOnOpen": { - "description": "Auto scan when app opens" + "snackbarAddedTracksToQueue": "Добавлено {count} треков в очередь", + "@snackbarAddedTracksToQueue": { + "description": "Snackbar - multiple tracks added to queue", + "placeholders": { + "count": { + "type": "int" + } + } }, - "audioAnalysisChannels": "Каналы", - "@audioAnalysisChannels": { - "description": "Channels metric label" - }, - "appearanceHistoryViewList": "Список", - "updateDownloadInstall": "Скачать и установить", - "@libraryShowDuplicateIndicator": { - "description": "Toggle for duplicate indicator in search" - }, - "extensionsHomeFeedOff": "Off", - "@extensionsHomeFeedOff": { - "description": "Extensions page - home feed provider option: off" - }, - "searchSortTitleAZ": "Название (А-Я)", - "@searchSortTitleAZ": { - "description": "Sort option - title ascending" - }, - "collectionRemovedFromLoved": "\"{trackName}\" удалено из Любимых", - "@collectionRemovedFromLoved": { - "description": "Snackbar after removing track from loved folder", + "snackbarAlreadyDownloaded": "\"{trackName}\" уже скачан", + "@snackbarAlreadyDownloaded": { + "description": "Snackbar - track already exists", "placeholders": { "trackName": { "type": "String" } } }, - "sectionAudioQuality": "Качество аудио", - "@sectionAudioQuality": { - "description": "Settings section header" - }, - "trackConvertSuccess": "Успешно конвертировано в {format}", - "@trackConvertSuccess": { - "description": "Snackbar after successful conversion", + "snackbarAlreadyInLibrary": "\"{trackName}\" уже есть в вашей библиотеке", + "@snackbarAlreadyInLibrary": { + "description": "Snackbar - track already exists in local library", "placeholders": { - "format": { + "trackName": { "type": "String" } } }, - "dialogUninstallExtensionMessage": "Вы уверены, что хотите удалить {extensionName}?", - "@dialogUninstallExtensionMessage": { - "description": "Dialog message - uninstall specific extension", + "snackbarHistoryCleared": "История очищена", + "@snackbarHistoryCleared": { + "description": "Snackbar - history deleted" + }, + "snackbarDeletedTracks": "Удалено {count} {count, plural, one {трек} few {трека} many {треков} =1{трек} other{треков}}", + "@snackbarDeletedTracks": { + "description": "Snackbar - tracks deleted", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarCannotOpenFile": "Невозможно открыть файл: {error}", + "@snackbarCannotOpenFile": { + "description": "Snackbar - file open error", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "snackbarViewQueue": "Просмотр очереди", + "@snackbarViewQueue": { + "description": "Snackbar action - view download queue" + }, + "snackbarUrlCopied": "{platform} ссылка скопирована в буфер обмена", + "@snackbarUrlCopied": { + "description": "Snackbar - URL copied", + "placeholders": { + "platform": { + "type": "String", + "description": "Platform name (Spotify/Deezer)" + } + } + }, + "snackbarFileNotFound": "Файл не найден", + "@snackbarFileNotFound": { + "description": "Snackbar - file doesn't exist" + }, + "snackbarSelectExtFile": "Пожалуйста, выберите .spotiflac-ext-файл", + "@snackbarSelectExtFile": { + "description": "Snackbar - wrong file type selected" + }, + "snackbarProviderPrioritySaved": "Приоритет провайдера сохранён", + "@snackbarProviderPrioritySaved": { + "description": "Snackbar - provider order saved" + }, + "snackbarMetadataProviderSaved": "Приоритет провайдера метаданных сохранён", + "@snackbarMetadataProviderSaved": { + "description": "Snackbar - metadata provider order saved" + }, + "snackbarExtensionInstalled": "{extensionName} установлено.", + "@snackbarExtensionInstalled": { + "description": "Snackbar - extension installed successfully", "placeholders": { "extensionName": { "type": "String" } } }, - "downloadNativeWorkerSubtitle": "Фоновая служба Android для загрузок через расширения", - "@downloadNativeWorkerSubtitle": { - "description": "Setting subtitle for Android native download worker" - }, - "storeUpdate": "Обновить", - "libraryFilterMetadataMissingAny": "Не хватает метаданных", - "@libraryFilterMetadataMissingAny": { - "description": "Filter option - items missing any tracked metadata field" - }, - "@selectionBatchConvertConfirmMessageLosslessCapped": { - "description": "Confirmation dialog message for capped lossless batch conversion", + "snackbarExtensionUpdated": "{extensionName} Обновлено.", + "@snackbarExtensionUpdated": { + "description": "Snackbar - extension updated successfully", "placeholders": { - "count": { - "type": "int" - }, - "format": { - "type": "String" - }, - "quality": { + "extensionName": { "type": "String" } } }, - "editMetadataAutoFillDesc": "Choose a metadata extension, select fields, then review its data before applying", - "@editMetadataAutoFillDesc": { - "description": "Description for the auto-fill section" + "snackbarFailedToInstall": "Не удалось установить расширение", + "@snackbarFailedToInstall": { + "description": "Snackbar - extension install error" }, - "@lyricsProviderExtensionDesc": { - "description": "Generic description for extension-based lyrics providers" + "snackbarFailedToUpdate": "Не удалось обновить расширение", + "@snackbarFailedToUpdate": { + "description": "Snackbar - extension update error" }, - "downloadSongLinkRegion": "Регион SongLink", - "@downloadSongLinkRegion": { - "description": "Setting for SongLink region used during fallback resolution" + "errorRateLimited": "Превышение запросов", + "@errorRateLimited": { + "description": "Error title - too many requests" }, - "shareSheetNoExtensions": "No other compatible services", - "@shareSheetNoExtensions": { - "description": "Empty state when no extensions can be searched for cross-service links" + "errorRateLimitedMessage": "Слишком много запросов. Пожалуйста, подождите минуту перед повторным поиском.", + "@errorRateLimitedMessage": { + "description": "Error message - rate limit explanation" }, - "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": { - "description": "Confirmation dialog body before queueing FLAC redownloads for local tracks", + "errorNoTracksFound": "Треки не найдены", + "@errorNoTracksFound": { + "description": "Error - search returned no results" + }, + "searchEmptyResultSubtitle": "Попробуйте другое ключевое слово", + "@searchEmptyResultSubtitle": { + "description": "Subtitle shown under the empty search result state on the home screen" + }, + "errorUrlNotRecognized": "Ссылка не распознана", + "@errorUrlNotRecognized": { + "description": "Error title - URL not handled by any extension or service" + }, + "errorUrlNotRecognizedMessage": "Эта ссылка не поддерживается. Убедитесь, что URL-адрес указан правильно и установлено совместимое расширение.", + "@errorUrlNotRecognizedMessage": { + "description": "Error message - URL not recognized explanation" + }, + "errorUrlFetchFailed": "Не удалось загрузить контент по этой ссылке. Пожалуйста, попробуйте еще раз.", + "@errorUrlFetchFailed": { + "description": "Error message - generic URL fetch failure" + }, + "errorMissingExtensionSource": "Невозможно загрузить {item}: отсутствует источник расширения", + "@errorMissingExtensionSource": { + "description": "Error - extension source not available", + "placeholders": { + "item": { + "type": "String" + } + } + }, + "actionPause": "Пауза", + "@actionPause": { + "description": "Action button - pause download" + }, + "actionResume": "Возобновить", + "@actionResume": { + "description": "Action button - resume download" + }, + "actionCancel": "Отмена", + "@actionCancel": { + "description": "Action button - cancel operation" + }, + "actionSelectAll": "Выбрать все", + "@actionSelectAll": { + "description": "Action button - select all items" + }, + "actionDeselect": "Снять выделение", + "@actionDeselect": { + "description": "Action button - deselect all" + }, + "selectionSelected": "{count} выбрано", + "@selectionSelected": { + "description": "Selection count indicator", "placeholders": { "count": { "type": "int" } } }, - "tooltipAddToPlaylist": "Добавить в плейлист", - "@tooltipAddToPlaylist": { - "description": "Tooltip for the Add to Playlist button" + "selectionAllSelected": "Все треки выбраны", + "@selectionAllSelected": { + "description": "Status - all items selected" }, - "@snackbarAddedToQueueGeneric": { - "description": "Snackbar when a track is added to the playback queue without naming it" + "selectionSelectToDelete": "Выберите треки для удаления", + "@selectionSelectToDelete": { + "description": "Placeholder when nothing selected" }, - "@tutorialSettingsTip2": { - "description": "Tutorial settings tip 2" + "progressFetchingMetadata": "Получение метаданных... {current}/{total}", + "@progressFetchingMetadata": { + "description": "Progress indicator - loading track info", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "progressReadingCsv": "Чтение CSV...", + "@progressReadingCsv": { + "description": "Progress indicator - parsing CSV file" + }, + "searchSongs": "Песни", + "@searchSongs": { + "description": "Search result category - songs" + }, + "searchArtists": "Исполнители", + "@searchArtists": { + "description": "Search result category - artists" + }, + "searchAlbums": "Альбомы", + "@searchAlbums": { + "description": "Search result category - albums" + }, + "searchPlaylists": "Плейлисты", + "@searchPlaylists": { + "description": "Search result category - playlists" + }, + "searchSortTitle": "Упорядочить результаты", + "@searchSortTitle": { + "description": "Bottom sheet title for search sort options" + }, + "searchSortDefault": "По умолчанию", + "@searchSortDefault": { + "description": "Sort option - default API order" + }, + "searchSortTitleAZ": "Название (А-Я)", + "@searchSortTitleAZ": { + "description": "Sort option - title ascending" + }, + "searchSortTitleZA": "Название (Я-А)", + "@searchSortTitleZA": { + "description": "Sort option - title descending" + }, + "searchSortArtistAZ": "Исполнитель (А-Я)", + "@searchSortArtistAZ": { + "description": "Sort option - artist ascending" + }, + "searchSortArtistZA": "Исполнитель (Я-А)", + "@searchSortArtistZA": { + "description": "Sort option - artist descending" + }, + "searchSortDurationShort": "Продолжительность (наименьшая)", + "@searchSortDurationShort": { + "description": "Sort option - shortest duration first" + }, + "searchSortDurationLong": "Продолжительность (наибольшая)", + "@searchSortDurationLong": { + "description": "Sort option - longest duration first" + }, + "searchSortDateOldest": "Дата релиза (старейшая)", + "@searchSortDateOldest": { + "description": "Sort option - oldest release first" + }, + "searchSortDateNewest": "Дата релиза (новейшая)", + "@searchSortDateNewest": { + "description": "Sort option - newest release first" + }, + "tooltipPlay": "Воспроизвести", + "@tooltipPlay": { + "description": "Tooltip - play button" + }, + "filenameFormat": "Формат имени файла", + "@filenameFormat": { + "description": "Setting title - filename pattern" + }, + "filenameShowAdvancedTags": "Показать расширенные теги", + "@filenameShowAdvancedTags": { + "description": "Toggle label for showing advanced filename tags" + }, + "filenameShowAdvancedTagsDescription": "Включить форматированные теги для отслеживания заполнения и шаблонов дат", + "@filenameShowAdvancedTagsDescription": { + "description": "Description for advanced filename tag toggle" + }, + "folderOrganizationNone": "Без организации", + "@folderOrganizationNone": { + "description": "Folder option - flat structure" + }, + "folderOrganizationByPlaylist": "По плейлисту", + "@folderOrganizationByPlaylist": { + "description": "Folder option - playlist folders" + }, + "folderOrganizationByPlaylistSubtitle": "Отдельная папка для каждого плейлиста", + "@folderOrganizationByPlaylistSubtitle": { + "description": "Subtitle for playlist folder option" + }, + "folderOrganizationByArtist": "По исполнителю", + "@folderOrganizationByArtist": { + "description": "Folder option - artist folders" + }, + "folderOrganizationByAlbum": "По альбому", + "@folderOrganizationByAlbum": { + "description": "Folder option - album folders" + }, + "folderOrganizationByArtistAlbum": "Исполнитель/Альбом", + "@folderOrganizationByArtistAlbum": { + "description": "Folder option - nested folders" + }, + "folderOrganizationDescription": "Сортировать скачанные файлы по папкам", + "@folderOrganizationDescription": { + "description": "Folder organization sheet description" + }, + "folderOrganizationNoneSubtitle": "Все файлы в папке загрузок", + "@folderOrganizationNoneSubtitle": { + "description": "Subtitle for no organization option" + }, + "folderOrganizationByArtistSubtitle": "Отдельная папка для каждого исполнителя", + "@folderOrganizationByArtistSubtitle": { + "description": "Subtitle for artist folder option" + }, + "folderOrganizationByAlbumSubtitle": "Отдельная папка для каждого альбома", + "@folderOrganizationByAlbumSubtitle": { + "description": "Subtitle for album folder option" + }, + "folderOrganizationByArtistAlbumSubtitle": "Вложенные папки для исполнителей и альбомов", + "@folderOrganizationByArtistAlbumSubtitle": { + "description": "Subtitle for nested folder option" + }, + "updateAvailable": "Доступно обновление", + "@updateAvailable": { + "description": "Update dialog title" + }, + "updateLater": "Позже", + "@updateLater": { + "description": "Update button - dismiss" + }, + "updateStartingDownload": "Загрузка началась...", + "@updateStartingDownload": { + "description": "Update status - initializing" + }, + "updateDownloadFailed": "Не удалось скачать", + "@updateDownloadFailed": { + "description": "Update error title" + }, + "updateFailedMessage": "Сбой загрузки обновления", + "@updateFailedMessage": { + "description": "Update error message" + }, + "updateNewVersionReady": "Доступна новая версия", + "@updateNewVersionReady": { + "description": "Update subtitle" + }, + "updateRequiredTitle": "Требуется обновление", + "@updateRequiredTitle": { + "description": "Title of the mandatory update dialog shown when the installed version is too old" + }, + "updateRequiredNotice": "Эта версия {count} больше не поддерживается. Обновите, чтобы продолжить использовать приложение.", + "@updateRequiredNotice": { + "description": "Subtitle of the mandatory update dialog; explains why the dialog cannot be dismissed", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "updateCurrent": "Текущая", + "@updateCurrent": { + "description": "Label for current version" + }, + "updateNew": "Новая", + "@updateNew": { + "description": "Label for new version" + }, + "updateDownloading": "Скачивание...", + "@updateDownloading": { + "description": "Update status - downloading" + }, + "updateWhatsNew": "Что нового", + "@updateWhatsNew": { + "description": "Changelog section title" + }, + "updateDownloadInstall": "Скачать и установить", + "@updateDownloadInstall": { + "description": "Update button - download and install" + }, + "updateDontRemind": "Не напоминать", + "@updateDontRemind": { + "description": "Update button - skip this version" + }, + "providerPriorityTitle": "Приоритет провайдера", + "@providerPriorityTitle": { + "description": "Provider priority page title" + }, + "providerPriorityDescription": "Перетаскивайте, чтобы изменить порядок провайдеров загрузки. Приложение будет пробовать провайдеров сверху вниз при загрузке треков.", + "@providerPriorityDescription": { + "description": "Provider priority page description" + }, + "providerPriorityInfo": "Если трек не доступен у первого провайдера, приложение автоматически попробует следующий.", + "@providerPriorityInfo": { + "description": "Info tip about fallback behavior" + }, + "providerPriorityFallbackExtensionsDescription": "Выберите, какие из установленных расширений использовать как резервные.", + "@providerPriorityFallbackExtensionsDescription": { + "description": "Section description for extension fallback selection" + }, + "providerPriorityFallbackExtensionsHint": "Здесь перечислены только включенные расширения с возможностями поставщика загрузок.", + "@providerPriorityFallbackExtensionsHint": { + "description": "Hint below the extension fallback selection list" + }, + "providerExtension": "Расширение", + "@providerExtension": { + "description": "Label for extension-provided providers" + }, + "metadataProviderPriorityTitle": "Приоритет метаданных", + "@metadataProviderPriorityTitle": { + "description": "Metadata priority page title" + }, + "metadataProviderPriorityDescription": "Перетаскивайте, чтобы изменить порядок провайдеров метаданных. Приложение будет пробовать провайдеров сверху вниз при поиске треков и извлечении метаданных.", + "@metadataProviderPriorityDescription": { + "description": "Metadata priority page description" + }, + "metadataProviderPriorityInfo": "Deezer не имеет ограничений по скорости и рекомендуется в качестве основного. Spotify может ограничивать скорость после большого количества запросов.", + "@metadataProviderPriorityInfo": { + "description": "Info tip about rate limits" + }, + "logTitle": "Логи", + "@logTitle": { + "description": "Logs screen title" + }, + "logCopied": "Логи скопированы в буфер обмена", + "@logCopied": { + "description": "Snackbar - logs copied" + }, + "logSearchHint": "Поиск логов...", + "@logSearchHint": { + "description": "Log search placeholder" + }, + "logFilterLevel": "Уровень", + "@logFilterLevel": { + "description": "Filter by log level" + }, + "logFilterSection": "Фильтр", + "@logFilterSection": { + "description": "Filter section title" + }, + "logShareLogs": "Поделиться логами", + "@logShareLogs": { + "description": "Share button tooltip" + }, + "logClearLogs": "Очистить логи", + "@logClearLogs": { + "description": "Clear button tooltip" + }, + "logClearLogsTitle": "Очистить логи", + "@logClearLogsTitle": { + "description": "Clear logs dialog title" + }, + "logClearLogsMessage": "Вы уверены, что хотите очистить все логи?", + "@logClearLogsMessage": { + "description": "Clear logs confirmation message" + }, + "logFilterBySeverity": "Фильтровать логи по серьезности", + "@logFilterBySeverity": { + "description": "Filter dialog title" + }, + "logNoLogsYet": "Логов нет", + "@logNoLogsYet": { + "description": "Empty state title" + }, + "logNoLogsYetSubtitle": "Логи появятся здесь по мере использования приложения", + "@logNoLogsYetSubtitle": { + "description": "Empty state subtitle" + }, + "logEntriesFiltered": "Записи ({count} фильтровано)", + "@logEntriesFiltered": { + "description": "Log count with filter active", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "logEntries": "Записи ({count})", + "@logEntries": { + "description": "Total log count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "channelStable": "Стабильный", + "@channelStable": { + "description": "Update channel - stable releases" + }, + "channelPreview": "Предварительный", + "@channelPreview": { + "description": "Update channel - beta/preview releases" + }, + "sectionSearchSource": "Поиск источника", + "@sectionSearchSource": { + "description": "Settings section header" + }, + "sectionDownload": "Скачивание", + "@sectionDownload": { + "description": "Settings section header" + }, + "sectionPerformance": "Производительность", + "@sectionPerformance": { + "description": "Settings section header" + }, + "sectionApp": "Приложение", + "@sectionApp": { + "description": "Settings section header" + }, + "sectionData": "Данные", + "@sectionData": { + "description": "Settings section header" + }, + "sectionDebug": "Отладка", + "@sectionDebug": { + "description": "Settings section header" + }, + "sectionService": "Сервис", + "@sectionService": { + "description": "Settings section header" + }, + "sectionAudioQuality": "Качество аудио", + "@sectionAudioQuality": { + "description": "Settings section header" + }, + "sectionFileSettings": "Настройки файла", + "@sectionFileSettings": { + "description": "Settings section header" + }, + "sectionLyrics": "Тексты песен", + "@sectionLyrics": { + "description": "Settings section header" + }, + "lyricsMode": "Режим текстов песен", + "@lyricsMode": { + "description": "Setting - how to save lyrics" + }, + "lyricsModeDescription": "Выберите как сохранить тексты песен при скачивании", + "@lyricsModeDescription": { + "description": "Lyrics mode picker description" + }, + "lyricsModeEmbed": "Вписать в файл", + "@lyricsModeEmbed": { + "description": "Lyrics mode option - embed in audio file" + }, + "lyricsModeEmbedSubtitle": "Встроить текст в метаданные FLAC", + "@lyricsModeEmbedSubtitle": { + "description": "Subtitle for embed option" + }, + "lyricsModeExternal": "Внешний файл .lrc", + "@lyricsModeExternal": { + "description": "Lyrics mode option - separate LRC file" + }, + "lyricsModeExternalSubtitle": "Отдельный файл .lrc для плееров, таких, как Samsung Music", + "@lyricsModeExternalSubtitle": { + "description": "Subtitle for external option" + }, + "lyricsModeBoth": "Оба варианта", + "@lyricsModeBoth": { + "description": "Lyrics mode option - embed and external" + }, + "lyricsModeBothSubtitle": "Вписать и сохранить .lrc файл", + "@lyricsModeBothSubtitle": { + "description": "Subtitle for both option" + }, + "sectionColor": "Цвет", + "@sectionColor": { + "description": "Settings section header" + }, + "sectionTheme": "Тема", + "@sectionTheme": { + "description": "Settings section header" + }, + "sectionLayout": "Разметка", + "@sectionLayout": { + "description": "Settings section header" + }, + "sectionLanguage": "Язык", + "@sectionLanguage": { + "description": "Settings section header for language" + }, + "appearanceLanguage": "Язык приложения", + "@appearanceLanguage": { + "description": "Language setting title" + }, + "settingsAppearanceSubtitle": "Тема, цвета, дисплей", + "@settingsAppearanceSubtitle": { + "description": "Appearance settings description" + }, + "settingsDownloadSubtitle": "Сервис, качество, откат", + "@settingsDownloadSubtitle": { + "description": "Download settings description" + }, + "settingsExtensionsSubtitle": "Управление провайдерами скачивания", + "@settingsExtensionsSubtitle": { + "description": "Extensions settings description" + }, + "settingsLogsSubtitle": "Просмотреть логи для отладки", + "@settingsLogsSubtitle": { + "description": "Logs settings description" + }, + "loadingSharedLink": "Загрузка общедоступной ссылки...", + "@loadingSharedLink": { + "description": "Status when opening shared URL" + }, + "pressBackAgainToExit": "Нажмите «Назад» ещё раз, чтобы выйти", + "@pressBackAgainToExit": { + "description": "Exit confirmation message" + }, + "downloadAllCount": "Скачать все ({count})", + "@downloadAllCount": { + "description": "Download all button with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "tracksCount": "{count, plural, one {{count} трек} few {{count} трека} many {{count} треков} =1 {1 трек} other {{count} треков}}", + "@tracksCount": { + "description": "Track count display", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackCopyFilePath": "Скопировать путь к файлу", + "@trackCopyFilePath": { + "description": "Action - copy file path" + }, + "trackRemoveFromDevice": "Удалить с устройства", + "@trackRemoveFromDevice": { + "description": "Action - delete downloaded file" + }, + "trackLoadLyrics": "Загрузить текст песни", + "@trackLoadLyrics": { + "description": "Action - fetch lyrics" + }, + "trackMetadata": "Метаданные", + "@trackMetadata": { + "description": "Tab title - track metadata" + }, + "trackFileInfo": "Информация о файле", + "@trackFileInfo": { + "description": "Tab title - file information" + }, + "trackLyrics": "Текст песни", + "@trackLyrics": { + "description": "Tab title - lyrics" + }, + "trackFileNotFound": "Файл не найден", + "@trackFileNotFound": { + "description": "Error - file doesn't exist" + }, + "trackOpenInDeezer": "Открыть в Deezer", + "@trackOpenInDeezer": { + "description": "Action - open track in Deezer app" + }, + "trackOpenInSpotify": "Открыть в Spotify", + "@trackOpenInSpotify": { + "description": "Action - open track in Spotify app" + }, + "trackTrackName": "Название", + "@trackTrackName": { + "description": "Metadata label - track title" + }, + "trackArtist": "Исполнитель", + "@trackArtist": { + "description": "Metadata label - artist name" + }, + "trackAlbumArtist": "Исполнитель альбома", + "@trackAlbumArtist": { + "description": "Metadata label - album artist" + }, + "trackAlbum": "Альбом", + "@trackAlbum": { + "description": "Metadata label - album name" + }, + "trackTrackNumber": "Номер трека", + "@trackTrackNumber": { + "description": "Metadata label - track number" + }, + "trackDiscNumber": "Номер диска", + "@trackDiscNumber": { + "description": "Metadata label - disc number" + }, + "trackDuration": "Продолжительность", + "@trackDuration": { + "description": "Metadata label - track length" + }, + "trackAudioQuality": "Качество записи", + "@trackAudioQuality": { + "description": "Metadata label - audio quality" + }, + "trackReplayGainTrackGain": "ReplayGain Усилие трека", + "@trackReplayGainTrackGain": { + "description": "Metadata label - ReplayGain track gain" + }, + "trackReplayGainTrackPeak": "ReplayGain Пик трека", + "@trackReplayGainTrackPeak": { + "description": "Metadata label - ReplayGain track peak" + }, + "trackReplayGainAlbumGain": "ReplayGain Усилие трека", + "@trackReplayGainAlbumGain": { + "description": "Metadata label - ReplayGain album gain" + }, + "trackReplayGainAlbumPeak": "ReplayGain Пик альбома", + "@trackReplayGainAlbumPeak": { + "description": "Metadata label - ReplayGain album peak" + }, + "libraryQualityLabelFileFormat": "Формат файла", + "@libraryQualityLabelFileFormat": { + "description": "Library audio quality label mode that shows the detected file format" + }, + "trackReleaseDate": "Дата выхода", + "@trackReleaseDate": { + "description": "Metadata label - release date" + }, + "trackGenre": "Жанр", + "@trackGenre": { + "description": "Metadata label - music genre" + }, + "trackLabel": "Заголовок", + "@trackLabel": { + "description": "Metadata label - record label" + }, + "trackCopyright": "Авторские права", + "@trackCopyright": { + "description": "Metadata label - copyright information" + }, + "trackDownloaded": "Скачано", + "@trackDownloaded": { + "description": "Metadata label - download date" + }, + "trackCopyLyrics": "Копировать текст", + "@trackCopyLyrics": { + "description": "Action - copy lyrics to clipboard" + }, + "trackLyricsSource": "Источник: {source}", + "@trackLyricsSource": { + "description": "Label showing the lyrics source/provider", + "placeholders": { + "source": { + "type": "String" + } + } + }, + "trackLyricsNotAvailable": "Текст песни недоступен для этого трека", + "@trackLyricsNotAvailable": { + "description": "Message when lyrics not found" + }, + "trackLyricsNotInFile": "В этом файле не найдено текстов песен", + "@trackLyricsNotInFile": { + "description": "Message when no embedded lyrics in audio file" + }, + "trackFetchOnlineLyrics": "Поиск в сети", + "@trackFetchOnlineLyrics": { + "description": "Action - fetch lyrics from online providers" + }, + "trackLyricsTimeout": "Время ожидания запроса истекло. Повторите попытку позже.", + "@trackLyricsTimeout": { + "description": "Message when lyrics request times out" + }, + "trackLyricsLoadFailed": "Не удалось загрузить текст песни", + "@trackLyricsLoadFailed": { + "description": "Message when lyrics loading fails" + }, + "trackEmbedLyrics": "Вписать текст песни", + "@trackEmbedLyrics": { + "description": "Action - embed lyrics into audio file" + }, + "trackLyricsEmbedded": "Текст успешно добавлен", + "@trackLyricsEmbedded": { + "description": "Snackbar - lyrics saved to file" + }, + "trackInstrumental": "Инструментальный трек", + "@trackInstrumental": { + "description": "Message when track is instrumental (no lyrics)" + }, + "trackCopiedToClipboard": "Скопировано в буфер обмена", + "@trackCopiedToClipboard": { + "description": "Snackbar - content copied" + }, + "trackDeleteConfirmTitle": "Удалить с устройства?", + "@trackDeleteConfirmTitle": { + "description": "Delete confirmation title" + }, + "trackDeleteConfirmMessage": "Это приведет к окончательному удалению загруженного файла и его удалению из истории.", + "@trackDeleteConfirmMessage": { + "description": "Delete confirmation message" + }, + "dateToday": "Сегодня", + "@dateToday": { + "description": "Relative date - today" + }, + "dateYesterday": "Вчера", + "@dateYesterday": { + "description": "Relative date - yesterday" + }, + "dateDaysAgo": "{count} дней назад", + "@dateDaysAgo": { + "description": "Relative date - days ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dateWeeksAgo": "{count} недель назад", + "@dateWeeksAgo": { + "description": "Relative date - weeks ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dateMonthsAgo": "{count} месяцев назад", + "@dateMonthsAgo": { + "description": "Relative date - months ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "storeFilterAll": "Все", + "@storeFilterAll": { + "description": "Repo filter - all extensions" + }, + "storeFilterMetadata": "Метаданные", + "@storeFilterMetadata": { + "description": "Repo filter - metadata providers" + }, + "storeFilterDownload": "Скачивание", + "@storeFilterDownload": { + "description": "Repo filter - download providers" + }, + "storeFilterUtility": "Утилиты", + "@storeFilterUtility": { + "description": "Repo filter - utility extensions" + }, + "storeFilterLyrics": "Тексты песен", + "@storeFilterLyrics": { + "description": "Repo filter - lyrics providers" + }, + "storeFilterIntegration": "Интеграция", + "@storeFilterIntegration": { + "description": "Repo filter - integrations" + }, + "storeClearFilters": "Очистить фильтры", + "@storeClearFilters": { + "description": "Button to clear all filters" + }, + "storeAddRepoTitle": "Добавить репозиторий расширения", + "@storeAddRepoTitle": { + "description": "Store setup screen - heading when no repo is configured" + }, + "storeAddRepoDescription": "Введите URL-адрес репозитория GitHub, который содержит файл registry.json для просмотра и установки расширений.", + "@storeAddRepoDescription": { + "description": "Store setup screen - explanatory text" + }, + "storeRepoUrlLabel": "Ссылка на репозиторий", + "@storeRepoUrlLabel": { + "description": "Label for the repository URL input field" + }, + "storeRepoUrlHint": "https://github.com/user/repo", + "@storeRepoUrlHint": { + "description": "Hint/placeholder for the repository URL input field" + }, + "storeAddRepoButton": "Добавить репозиторий", + "@storeAddRepoButton": { + "description": "Button to submit a new repository URL" + }, + "storeChangeRepoTooltip": "Изменить репозиторий", + "@storeChangeRepoTooltip": { + "description": "Tooltip for the change-repository icon button in the app bar" + }, + "storeRepoDialogTitle": "Репозиторий расширения", + "@storeRepoDialogTitle": { + "description": "Title of the change/remove repository dialog" + }, + "storeRepoDialogCurrent": "Текущий репозиторий:", + "@storeRepoDialogCurrent": { + "description": "Label shown above the current repository URL in the dialog" + }, + "storeNewRepoUrlLabel": "Новый URL репозитория", + "@storeNewRepoUrlLabel": { + "description": "Label for the new repository URL field inside the dialog" + }, + "storeLoadError": "Не удалось загрузить репозиторий", + "@storeLoadError": { + "description": "Error heading when the store cannot be loaded" + }, + "storeEmptyNoExtensions": "Нет доступных расширений", + "@storeEmptyNoExtensions": { + "description": "Message when store has no extensions" + }, + "storeEmptyNoResults": "Расширения не найдены", + "@storeEmptyNoResults": { + "description": "Message when search/filter returns no results" + }, + "extensionId": "ID", + "@extensionId": { + "description": "Extension detail - unique ID" + }, + "extensionError": "Ошибка", + "@extensionError": { + "description": "Extension detail - error message" + }, + "extensionCapabilities": "Возможности", + "@extensionCapabilities": { + "description": "Section header - extension features" + }, + "extensionMetadataProvider": "Провайдер метаданных", + "@extensionMetadataProvider": { + "description": "Capability - provides metadata" + }, + "extensionDownloadProvider": "Провайдер скачивания", + "@extensionDownloadProvider": { + "description": "Capability - provides downloads" + }, + "extensionLyricsProvider": "Провайдер текстов", + "@extensionLyricsProvider": { + "description": "Capability - provides lyrics" + }, + "extensionUrlHandler": "URL-обработчик", + "@extensionUrlHandler": { + "description": "Capability - handles URLs" + }, + "extensionQualityOptions": "Параметры качества", + "@extensionQualityOptions": { + "description": "Capability - quality selection" + }, + "extensionPostProcessingHooks": "Хуки постобработки", + "@extensionPostProcessingHooks": { + "description": "Capability - post-processing" }, "extensionPermissions": "Разрешения", - "releaseTypeSingle": "Single", - "aboutTelegramChannelSubtitle": "Объявления и обновления", - "@aboutTelegramChannelSubtitle": { - "description": "Subtitle for Telegram channel" + "@extensionPermissions": { + "description": "Section header - required permissions" }, - "@dialogDisableAndClear": { - "description": "Confirmation action to disable download history and clear existing entries" + "extensionSettings": "Настройки", + "@extensionSettings": { + "description": "Section header - extension settings" }, - "@homeSearchHintProvider": { - "description": "Placeholder for the main search field when a provider is selected", + "extensionRemoveButton": "Удалить расширение", + "@extensionRemoveButton": { + "description": "Button to uninstall extension" + }, + "extensionUpdated": "Обновлено", + "@extensionUpdated": { + "description": "Extension detail - last update" + }, + "extensionMinAppVersion": "Мин. версия приложения", + "@extensionMinAppVersion": { + "description": "Extension detail - minimum app version" + }, + "extensionCustomTrackMatching": "Соответствие пользовательских треков", + "@extensionCustomTrackMatching": { + "description": "Capability - custom track matching algorithm" + }, + "extensionPostProcessing": "Постобработка", + "@extensionPostProcessing": { + "description": "Capability - post-download processing" + }, + "extensionHooksAvailable": "Доступно {count} хуков(ов)", + "@extensionHooksAvailable": { + "description": "Post-processing hooks count", "placeholders": { - "providerName": { + "count": { + "type": "int" + } + } + }, + "extensionPatternsCount": "{count} шаблон(ов)", + "@extensionPatternsCount": { + "description": "URL patterns count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionStrategy": "Стратегия: {strategy}", + "@extensionStrategy": { + "description": "Track matching strategy name", + "placeholders": { + "strategy": { "type": "String" } } }, - "metadataProvidersTitle": "Metadata Provider Priority", - "@metadataProvidersTitle": { - "description": "Settings item title for metadata provider order" + "extensionsProviderPrioritySection": "Приоритет провайдера", + "@extensionsProviderPrioritySection": { + "description": "Section header - provider priority" }, - "trackAddToQueue": "Add to queue", - "audioAnalysisDecodedFormat": "Decoded Format", - "@audioAnalysisDecodedFormat": { - "description": "Decoded sample format metric label" + "extensionsInstalledSection": "Установленные расширения", + "@extensionsInstalledSection": { + "description": "Section header - installed extensions" }, - "@editMetadataSelectEmpty": { - "description": "Button to select only fields that are currently empty" + "extensionsNoExtensions": "Нет установленных расширений", + "@extensionsNoExtensions": { + "description": "Empty state - no extensions" + }, + "extensionsNoExtensionsSubtitle": "Установите .spotiflac-ext файлы для добавления новых провайдеров", + "@extensionsNoExtensionsSubtitle": { + "description": "Empty state subtitle" + }, + "extensionsInstallButton": "Установить расширение", + "@extensionsInstallButton": { + "description": "Button to install extension from file" + }, + "extensionsInfoTip": "Расширения могут добавлять новые метаданные и провайдеров загрузки. Устанавливайте только расширения из надежных источников.", + "@extensionsInfoTip": { + "description": "Security warning about extensions" + }, + "extensionsInstalledSuccess": "Расширение успешно установлено", + "@extensionsInstalledSuccess": { + "description": "Success message after install" + }, + "extensionsInstalledCount": "{count} расширений успешно установлено", + "@extensionsInstalledCount": { + "description": "Success message after installing multiple extensions", + "placeholders": { + "count": { + "type": "int", + "description": "Number of installed extensions" + } + } + }, + "extensionsInstallPartialSuccess": "Установлено {installed} из {attempted} расширений", + "@extensionsInstallPartialSuccess": { + "description": "Message when installing multiple extensions partially succeeds", + "placeholders": { + "installed": { + "type": "int", + "description": "Number of successfully installed extensions" + }, + "attempted": { + "type": "int", + "description": "Number of selected extensions" + } + } + }, + "extensionsDownloadPriority": "Приоритет скачивания", + "@extensionsDownloadPriority": { + "description": "Setting - download provider order" + }, + "extensionsDownloadPrioritySubtitle": "Установка порядок сервисов скачивания", + "@extensionsDownloadPrioritySubtitle": { + "description": "Subtitle for download priority" + }, + "extensionsFallbackTitle": "Резервные расширения", + "@extensionsFallbackTitle": { + "description": "Setting and page title for choosing which download extensions can be used during fallback" + }, + "extensionsFallbackSubtitle": "Выберите, какие из установленных расширений использовать как резервные", + "@extensionsFallbackSubtitle": { + "description": "Subtitle for download fallback extensions menu" + }, + "extensionsNoDownloadProvider": "Нет расширений с провайдером загрузки", + "@extensionsNoDownloadProvider": { + "description": "Empty state - no download providers" + }, + "extensionsMetadataPriority": "Приоритет метаданных", + "@extensionsMetadataPriority": { + "description": "Setting - metadata provider order" + }, + "extensionsMetadataPrioritySubtitle": "Установка порядка поиска и источника метаданных", + "@extensionsMetadataPrioritySubtitle": { + "description": "Subtitle for metadata priority" + }, + "extensionsNoMetadataProvider": "Нет расширений с провайдером метаданных", + "@extensionsNoMetadataProvider": { + "description": "Empty state - no metadata providers" + }, + "extensionsSearchProvider": "Провайдер поиска", + "@extensionsSearchProvider": { + "description": "Setting - search provider selection" + }, + "extensionsNoCustomSearch": "Нет расширений с пользовательским поиском", + "@extensionsNoCustomSearch": { + "description": "Empty state - no search providers" + }, + "extensionsSearchProviderDescription": "Выберите, какой сервис использовать для поиска треков", + "@extensionsSearchProviderDescription": { + "description": "Search provider setting description" + }, + "extensionsCustomSearch": "Пользовательский поиск", + "@extensionsCustomSearch": { + "description": "Label for custom search provider" + }, + "extensionsErrorLoading": "Ошибка загрузки расширения", + "@extensionsErrorLoading": { + "description": "Error message when extension fails to load" + }, + "qualityFlacLossless": "FLAC Lossless", + "@qualityFlacLossless": { + "description": "Quality option - CD quality FLAC" + }, + "qualityFlacLosslessSubtitle": "16-бит / 44.1 кГц", + "@qualityFlacLosslessSubtitle": { + "description": "Technical spec for lossless" + }, + "qualityHiResFlac": "Hi-Res FLAC", + "@qualityHiResFlac": { + "description": "Quality option - high resolution FLAC" + }, + "qualityHiResFlacSubtitle": "24-бит / до 96кГц", + "@qualityHiResFlacSubtitle": { + "description": "Technical spec for hi-res" + }, + "qualityHiResFlacMax": "Hi-Res FLAC Макс.", + "@qualityHiResFlacMax": { + "description": "Quality option - maximum resolution FLAC" + }, + "qualityHiResFlacMaxSubtitle": "24-бит / до 192кГц", + "@qualityHiResFlacMaxSubtitle": { + "description": "Technical spec for hi-res max" + }, + "downloadLossy320": "С потерями 320 кбит/с", + "@downloadLossy320": { + "description": "Quality option label for lossy 320kbps" + }, + "downloadLossyFormat": "Формат с потерями", + "@downloadLossyFormat": { + "description": "Setting title to pick output format for lossy downloads" + }, + "downloadAutoConvert": "Автоконвертация после загрузки", + "@downloadAutoConvert": { + "description": "Toggle for automatic post-download audio conversion" + }, + "downloadAutoConvertSubtitle": "Конвертировать завершенные загрузки в меньший формат с потерями. Оригинал будет заменён только после успешной конвертации.", + "@downloadAutoConvertSubtitle": { + "description": "Explanation of safe automatic post-download conversion" + }, + "downloadAutoConvertFormat": "Выходной формат", + "@downloadAutoConvertFormat": { + "description": "Automatic conversion output format setting" + }, + "downloadAutoConvertFormatSubtitle": "Выберите формат с потерями для новых завершённых загрузок.", + "@downloadAutoConvertFormatSubtitle": { + "description": "Automatic conversion format picker explanation" + }, + "downloadAutoConvertBitrate": "Качество выхода", + "@downloadAutoConvertBitrate": { + "description": "Automatic conversion bitrate setting" + }, + "downloadAutoConvertBitrateSubtitle": "Выше битрейт — больше деталей, но и размер файла будет выше.", + "@downloadAutoConvertBitrateSubtitle": { + "description": "Automatic conversion bitrate picker explanation" + }, + "downloadAutoConvertMp3Subtitle": "Наилучшая совместимость между плеерами и устройствами", + "@downloadAutoConvertMp3Subtitle": { + "description": "MP3 automatic conversion option description" + }, + "downloadAutoConvertM4aSubtitle": "Эффективность AAC аудио в M4A контейнере", + "@downloadAutoConvertM4aSubtitle": { + "description": "M4A AAC automatic conversion option description" + }, + "downloadAutoConvertOpusSubtitle": "Лучшая эффективность для современных плееров", + "@downloadAutoConvertOpusSubtitle": { + "description": "Opus automatic conversion option description" + }, + "downloadLossy320Format": "Формат с потерями 320 кбит/с", + "@downloadLossy320Format": { + "description": "Title of the lossy format picker bottom sheet" + }, + "downloadLossy320FormatDesc": "Выберите выходной формат для загрузок с потерями в 320 кбит/с. При необходимости исходный поток будет конвертирован в выбранный вами формат.", + "@downloadLossy320FormatDesc": { + "description": "Description in the lossy format picker" + }, + "downloadLossyMp3": "MP3 320 кбит/с", + "@downloadLossyMp3": { + "description": "Lossy format option - MP3 320kbps" + }, + "downloadLossyMp3Subtitle": "Наилучшая совместимость, ~10 Мб на трек", + "@downloadLossyMp3Subtitle": { + "description": "Subtitle for MP3 320kbps lossy option" + }, + "downloadLossyAac": "AAC/M4A 320kbps", + "@downloadLossyAac": { + "description": "Lossy format option - AAC in M4A container at 320kbps" + }, + "downloadLossyAacSubtitle": "Лучшая мобильная совместимость, контейнер M4A", + "@downloadLossyAacSubtitle": { + "description": "Subtitle for AAC/M4A 320kbps lossy option" + }, + "downloadLossyOpus256": "Opus 256 кбит/с", + "@downloadLossyOpus256": { + "description": "Lossy format option - Opus 256kbps" + }, + "downloadLossyOpus256Subtitle": "Лучшее качество Opus, ~8MB на трек", + "@downloadLossyOpus256Subtitle": { + "description": "Subtitle for Opus 256kbps lossy option" + }, + "downloadLossyOpus128": "Opus 128 кбит/с", + "@downloadLossyOpus128": { + "description": "Lossy format option - Opus 128kbps" + }, + "downloadLossyOpus128Subtitle": "Минимальный размер, ~4 Мб на трек", + "@downloadLossyOpus128Subtitle": { + "description": "Subtitle for Opus 128kbps lossy option" + }, + "downloadAskBeforeDownload": "Спрашивать перед скачиванием", + "@downloadAskBeforeDownload": { + "description": "Setting - show quality picker" + }, + "downloadDirectory": "Папка для скачивания", + "@downloadDirectory": { + "description": "Setting - download folder" + }, + "downloadSeparateSinglesFolder": "Отдельная папка для синглов", + "@downloadSeparateSinglesFolder": { + "description": "Setting - separate folder for singles" + }, + "downloadAlbumFolderStructure": "Структура папок альбома", + "@downloadAlbumFolderStructure": { + "description": "Setting - album folder organization" + }, + "albumFolderStructureDescription": "Выберите, как структурировать папки альбомов", + "@albumFolderStructureDescription": { + "description": "Album folder structure picker description" + }, + "downloadUseAlbumArtistForFolders": "Использовать исполнителя альбома для папок", + "@downloadUseAlbumArtistForFolders": { + "description": "Setting - choose whether artist folders use Album Artist or Track Artist" + }, + "downloadUsePrimaryArtistOnly": "Основной исполнитель только для папок", + "@downloadUsePrimaryArtistOnly": { + "description": "Setting - strip featured artists from folder name" + }, + "downloadUsePrimaryArtistOnlyEnabled": "Список исполнителей, чьи работы были удалены из названия папки (например, Джастин Бибер, Quavo → Джастин Бибер)", + "@downloadUsePrimaryArtistOnlyEnabled": { + "description": "Subtitle when primary artist only is enabled" + }, + "downloadUsePrimaryArtistOnlyDisabled": "Полная строка исполнителя, используемая для имени папки", + "@downloadUsePrimaryArtistOnlyDisabled": { + "description": "Subtitle when primary artist only is disabled" + }, + "downloadSelectQuality": "Выбор качества", + "@downloadSelectQuality": { + "description": "Dialog title - choose audio quality" + }, + "downloadFrom": "Скачивать из", + "@downloadFrom": { + "description": "Label - download source" + }, + "appearanceAmoledDark": "AMOLED", + "@appearanceAmoledDark": { + "description": "Theme option - pure black" + }, + "appearanceAmoledDarkSubtitle": "Глубокий чёрный фон", + "@appearanceAmoledDarkSubtitle": { + "description": "Subtitle for AMOLED dark" + }, + "appearanceHeroAnimations": "Hero animations", + "@appearanceHeroAnimations": { + "description": "Toggle for shared-element (Hero) transitions" + }, + "appearanceHeroAnimationsSubtitle": "Переходы между экранами, например, при открытии плеера", + "@appearanceHeroAnimationsSubtitle": { + "description": "Subtitle for the Hero animations toggle" + }, + "appearanceForceBlur": "Всегда использовать эффект размытия", + "@appearanceForceBlur": { + "description": "Toggle that forces backdrop blur on even when the device profile disabled it" + }, + "appearanceForceBlurSubtitle": "Включить размытие панели навигации даже на устройствах, где по умолчанию эта функция отключена. Может негативно повлиять на производительность.", + "@appearanceForceBlurSubtitle": { + "description": "Subtitle for the force-blur toggle" + }, + "queueClearAll": "Очистить всё", + "@queueClearAll": { + "description": "Button - clear all queue items" + }, + "queueClearAllMessage": "Вы уверены, что хотите очистить все загрузки?", + "@queueClearAllMessage": { + "description": "Clear queue confirmation" + }, + "settingsAutoExportFailed": "Автоэкспорт неудачных загрузок", + "@settingsAutoExportFailed": { + "description": "Setting toggle for auto-export" + }, + "settingsAutoExportFailedSubtitle": "Автоматическое сохранение неудачных загрузок в TXT файл", + "@settingsAutoExportFailedSubtitle": { + "description": "Subtitle for auto-export setting" + }, + "settingsDownloadNetwork": "Сеть для скачивания", + "@settingsDownloadNetwork": { + "description": "Setting for network type preference" + }, + "settingsDownloadNetworkAny": "WiFi и Мобильная сеть", + "@settingsDownloadNetworkAny": { + "description": "Network option - use any connection" + }, + "settingsDownloadNetworkWifiOnly": "Только WiFi", + "@settingsDownloadNetworkWifiOnly": { + "description": "Network option - only use WiFi" + }, + "settingsDownloadNetworkSubtitle": "Выберите, какую сеть использовать для скачивания. Когда установлено значение только WiFi — скачивания через мобильную сеть будут приостановлены.", + "@settingsDownloadNetworkSubtitle": { + "description": "Subtitle explaining network preference" + }, + "settingsConcurrentDownloads": "Одновременные загрузки", + "@settingsConcurrentDownloads": { + "description": "Setting title - how many tracks download at the same time" + }, + "settingsConcurrentDownloadsSubtitle": "Скачивание нескольких треков одновременно происходит быстрее, но некоторые провайдеры могут ограничивать скорость параллельных запросов.", + "@settingsConcurrentDownloadsSubtitle": { + "description": "Subtitle explaining the concurrent downloads picker" + }, + "concurrentDownloadsOne": "1 трек за раз", + "@concurrentDownloadsOne": { + "description": "Concurrent downloads option - sequential" + }, + "concurrentDownloadsCount": "До {count} {count, plural, one {трек} few {трека} many {треков} other{треков}} одновременно", + "@concurrentDownloadsCount": { + "description": "Concurrent downloads option - parallel", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "albumFolderArtistAlbum": "Исполнитель / Альбом", + "@albumFolderArtistAlbum": { + "description": "Album folder option" + }, + "albumFolderArtistAlbumSubtitle": "Альбомы/Исполнитель/Название Альбома/", + "@albumFolderArtistAlbumSubtitle": { + "description": "Folder structure example" + }, + "albumFolderArtistYearAlbum": "Исполнитель / [Год] Альбом", + "@albumFolderArtistYearAlbum": { + "description": "Album folder option with year" + }, + "albumFolderArtistYearAlbumSubtitle": "Альбомы/Исполнитель/[2005] Название Альбома/", + "@albumFolderArtistYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "albumFolderAlbumOnly": "Только альбом", + "@albumFolderAlbumOnly": { + "description": "Album folder option" + }, + "albumFolderAlbumOnlySubtitle": "Альбомы/Название Альбома/", + "@albumFolderAlbumOnlySubtitle": { + "description": "Folder structure example" + }, + "albumFolderYearAlbum": "[Год] Альбом", + "@albumFolderYearAlbum": { + "description": "Album folder option with year" + }, + "albumFolderYearAlbumSubtitle": "Альбомы/[2005] Название Альбома /", + "@albumFolderYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "albumFolderArtistAlbumSingles": "Исполнитель / Альбом + Синглы", + "@albumFolderArtistAlbumSingles": { + "description": "Album folder option with singles inside artist" + }, + "albumFolderArtistAlbumSinglesSubtitle": "Исполнитель/Альбом и Исполнитель/Сингл/", + "@albumFolderArtistAlbumSinglesSubtitle": { + "description": "Folder structure example" + }, + "albumFolderArtistAlbumFlat": "Исполнитель / Альбом (синглы)", + "@albumFolderArtistAlbumFlat": { + "description": "Album folder option with singles directly in artist folder" + }, + "albumFolderArtistAlbumFlatSubtitle": "Исполнитель/Альбом/ и Исполнитель/песня.flac", + "@albumFolderArtistAlbumFlatSubtitle": { + "description": "Folder structure example for flat singles" + }, + "downloadedAlbumDeleteSelected": "Удалить выбранные", + "@downloadedAlbumDeleteSelected": { + "description": "Button - delete selected tracks" + }, + "downloadedAlbumDeleteMessage": "Удалить {count} {count, plural, =1{трек} few{трека} other{треков}} из этого альбома?\n\nЭто также приведёт к удалению файлов из хранилища.", + "@downloadedAlbumDeleteMessage": { + "description": "Delete confirmation with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumSelectedCount": "{count} выбрано", + "@downloadedAlbumSelectedCount": { + "description": "Selection count indicator", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumTapToSelect": "Нажмите на треки для выбора", + "@downloadedAlbumTapToSelect": { + "description": "Selection hint" + }, + "downloadedAlbumDeleteCount": "Удалить {count} {count, plural, =1{трек} few{трека} other{треков}}", + "@downloadedAlbumDeleteCount": { + "description": "Delete button text with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumSelectToDelete": "Выберите треки для удаления", + "@downloadedAlbumSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "downloadedAlbumDiscHeader": "Диск {discNumber}", + "@downloadedAlbumDiscHeader": { + "description": "Header for disc separator in multi-disc albums", + "placeholders": { + "discNumber": { + "type": "int", + "example": "1" + } + } + }, + "recentTypeArtist": "Исполнитель", + "@recentTypeArtist": { + "description": "Recent access item type - artist" + }, + "recentTypeAlbum": "Альбом", + "@recentTypeAlbum": { + "description": "Recent access item type - album" + }, + "recentTypeSong": "Песня", + "@recentTypeSong": { + "description": "Recent access item type - song/track" + }, + "recentTypePlaylist": "Плейлист", + "@recentTypePlaylist": { + "description": "Recent access item type - playlist" + }, + "recentEmpty": "Нет недавних элементов", + "@recentEmpty": { + "description": "Empty state text for recent access list" + }, + "recentClearAllMessage": "Очистить все недавние действия? История загрузок и музыкальные файлы не будут удалены.", + "@recentClearAllMessage": { + "description": "Confirmation message before clearing all recent activity" + }, + "recentShowAllDownloads": "Показать все загрузки", + "@recentShowAllDownloads": { + "description": "Button label to unhide hidden downloads in recent access" + }, + "recentPlaylistInfo": "Плейлист: {name}", + "@recentPlaylistInfo": { + "description": "Snackbar message when tapping playlist in recent access", + "placeholders": { + "name": { + "type": "String", + "description": "Playlist name" + } + } + }, + "discographyDownload": "Скачать дискографию", + "@discographyDownload": { + "description": "Button - download artist discography" + }, + "discographyDownloadAll": "Скачать всё", + "@discographyDownloadAll": { + "description": "Option - download entire discography" + }, + "discographyDownloadAllSubtitle": "{count} треков из {albumCount} релизов", + "@discographyDownloadAllSubtitle": { + "description": "Subtitle showing total tracks and albums", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "discographyAlbumsOnly": "Только альбомы", + "@discographyAlbumsOnly": { + "description": "Option - download only albums" }, - "collectionAlreadyInPlaylist": "Уже в \"{playlistName}\"", "discographyAlbumsOnlySubtitle": "{count} треков из {albumCount} альбомов", "@discographyAlbumsOnlySubtitle": { "description": "Subtitle showing album tracks count", @@ -2454,377 +2445,69 @@ } } }, - "setupNotificationEnable": "Включить уведомления", - "@setupNotificationEnable": { - "description": "Button to enable notifications" + "discographySinglesOnly": "Только синглы и EP", + "@discographySinglesOnly": { + "description": "Option - download only singles" }, - "settingsAppearanceSubtitle": "Тема, цвета, дисплей", - "@settingsAppearanceSubtitle": { - "description": "Appearance settings description" - }, - "@notifUpdateFailedBody": { - "description": "Notification body when app update download fails" - }, - "@aboutOriginalCreator": { - "description": "Role description for original creator" - }, - "libraryBuiltInPreviewPlayer": "Built-in preview player", - "@libraryBuiltInPreviewPlayer": { - "description": "Setting option to use the built-in preview player" - }, - "tooltipPlay": "Воспроизвести", - "@tooltipPlay": { - "description": "Tooltip - play button" - }, - "@safMigrationMessage2": { - "description": "Second paragraph of SAF migration dialog" - }, - "@extensionsSearchProvider": { - "description": "Setting - search provider selection" - }, - "libraryAboutDescription": "Сканирует существующую коллекцию музыки для обнаружения дубликатов при загрузке. Поддерживает форматы FLAC, M4A, MP3, Opus и OGG. Метаданные читаются из тегов файлов, если доступны.", - "@libraryAboutDescription": { - "description": "Description of local library feature" - }, - "downloadAskBeforeDownload": "Спрашивать перед скачиванием", - "nowPlayingNoMetadata": "No metadata available", - "@nowPlayingNoMetadata": { - "description": "Empty state when track metadata cannot be loaded" - }, - "trackInstrumental": "Инструментальный трек", - "@trackInstrumental": { - "description": "Message when track is instrumental (no lyrics)" - }, - "@collectionWishlistEmptyTitle": { - "description": "Wishlist empty state title" - }, - "selectionBatchConvertConfirmMessageLosslessCapped": "Convert {count} {count, plural, =1{track} other{tracks}} to {format} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original files will be deleted after conversion.", - "downloadDeduplication": "Skip Duplicate Downloads", - "libraryFilterSortOldest": "Старые", - "@libraryFilterSortOldest": { - "description": "Sort option - oldest first" - }, - "setupSkip": "Пропустить", - "@setupSkip": { - "description": "Skip current step button" - }, - "@setupFolderDescription": { - "description": "Explanation for folder selection" - }, - "@settingsLogsSubtitle": { - "description": "Logs settings description" - }, - "storeNewRepoUrlLabel": "Новый URL репозитория", - "@storeNewRepoUrlLabel": { - "description": "Label for the new repository URL field inside the dialog" - }, - "cacheClearConfirmMessage": "Это очистит кэш для {target}. Загруженные музыкальные файлы не будут удалены.", - "@cacheClearConfirmMessage": { - "description": "Dialog message before clearing selected cache", - "placeholders": { - "target": { - "type": "String" - } - } - }, - "trackMetadataPlay": "Воспроизвести", - "@libraryEnableLocalLibrary": { - "description": "Toggle to enable library scanning" - }, - "optionsUpdateChannel": "Канал обновлений", - "@optionsUpdateChannel": { - "description": "Stable vs preview releases" - }, - "@downloadCreatePlaylistSourceFolderDisabled": { - "description": "Subtitle when playlist folder is disabled" - }, - "@extensionRefreshStatus": { - "description": "Tooltip for refreshing extension service health status" - }, - "backupRestoreRestartHint": "Restart the app to make sure every change is applied.", - "@backupRestoreRestartHint": { - "description": "Hint shown after restoring that an app restart is recommended" - }, - "@snackbarExtensionInstalledEnable": { - "description": "Snackbar after installing an extension from the repo tab", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "settingsAutoExportFailedSubtitle": "Автоматическое сохранение неудачных загрузок в TXT файл", - "@settingsAutoExportFailedSubtitle": { - "description": "Subtitle for auto-export setting" - }, - "searchSortArtistAZ": "Исполнитель (А-Я)", - "@searchSortArtistAZ": { - "description": "Sort option - artist ascending" - }, - "editMetadataFieldAlbumArtist": "Исполнитель альбома", - "@editMetadataFieldAlbumArtist": { - "description": "Chip label for album artist field in auto-fill selector" - }, - "@queueEmptyHistory": { - "description": "Empty state title when download history is empty" - }, - "@dialogDisableHistoryMessage": { - "description": "Confirmation dialog message shown before disabling download history" - }, - "queueFlacNoReliableMatches": "No reliable online matches found for the selection", - "@queueFlacNoReliableMatches": { - "description": "Snackbar when no safe FLAC redownload matches were found" - }, - "trackOpenInDeezer": "Открыть в Deezer", - "@trackOpenInDeezer": { - "description": "Action - open track in Deezer app" - }, - "setupChooseFromFilesSubtitle": "Выберите iCloud или другое местоположение", - "@setupChooseFromFilesSubtitle": { - "description": "Subtitle for file picker" - }, - "artistMonthlyListeners": "{count} слушателей в месяц", - "@artistMonthlyListeners": { - "description": "Monthly listener count display", - "placeholders": { - "count": { - "type": "String", - "description": "Formatted listener count" - } - } - }, - "@downloadLossyAacSubtitle": { - "description": "Subtitle for AAC/M4A 320kbps lossy option" - }, - "cacheSectionStorage": "Кэшированные данные", - "@cacheSectionStorage": { - "description": "Section header for cache entries" - }, - "@libraryAutoScanWeekly": { - "description": "Auto scan once per week" - }, - "tutorialDownloadCompletedSemantics": "Download completed", - "@tutorialDownloadCompletedSemantics": { - "description": "Accessibility label for completed download state in tutorial demo" - }, - "@logNoLogsYet": { - "description": "Empty state title" - }, - "@selectionDeletePlaylistsCount": { - "description": "Button label for deleting multiple selected playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadSeparateSinglesEnabled": "Singles and EPs saved in a separate folder", - "@downloadSeparateSinglesEnabled": { - "description": "Subtitle when separate singles folder is on" - }, - "setupAppDocumentsFolder": "Папка Документы приложения", - "@setupAppDocumentsFolder": { - "description": "iOS documents folder option" - }, - "storeLoadError": "Failed to load repository", - "settingsDownloadNetwork": "Сеть для скачивания", - "metadataSaveFailedStorage": "Не удалось записать метаданные обратно в хранилище", - "@logAutoScrollOff": { - "description": "Tooltip when auto-scroll is disabled on the log screen" - }, - "@trackConvertFormat": { - "description": "Menu item - convert audio format" - }, - "optionsArtistTagModeJoined": "Single joined value", - "@optionsArtistTagModeJoined": { - "description": "Artist tag mode option that joins multiple artists into one value" - }, - "@dateYesterday": { - "description": "Relative date - yesterday" - }, - "@settingsExtensionsSubtitle": { - "description": "Extensions settings description" - }, - "searchSortArtistZA": "Исполнитель (Я-А)", - "@extensionSettings": { - "description": "Section header - extension settings" - }, - "@extensionOauthConnectHint": { - "description": "Hint for an OAuth login link field before connecting Spotify" - }, - "@notifUpdateReady": { - "description": "Notification title when app update download is complete" - }, - "@regionCountryMX": { - "description": "Country name for SongLink region picker" - }, - "@nowPlayingOpenInExternalPlayer": { - "description": "Menu item to open the current track in an external player" - }, - "trackConvertDithering": "Dithering", - "@trackConvertDithering": { - "description": "Section label for lossless conversion dithering options" - }, - "settingsDownloadSubtitle": "Сервис, качество, откат", - "@settingsDownloadSubtitle": { - "description": "Download settings description" - }, - "libraryLastScanned": "Последнее сканирование: {time}", - "@libraryLastScanned": { - "description": "Last scan time display", - "placeholders": { - "time": { - "type": "String" - } - } - }, - "setupIosEmptyFolderWarning": "Ограничение iOS: пустые папки не могут быть выбраны. Выберите папку, содержащую хотя бы один файл.", - "@setupIosEmptyFolderWarning": { - "description": "iOS folder selection warning" - }, - "@storeAddRepoDescription": { - "description": "Store setup screen - explanatory text" - }, - "@snackbarFailedToInstallNamed": { - "description": "Snackbar when extension install fails in the repo tab", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "@collectionAddedTracksToPlaylist": { - "description": "Snackbar after adding multiple tracks to a playlist", + "discographySinglesOnlySubtitle": "{count} треков из {albumCount} синглов", + "@discographySinglesOnlySubtitle": { + "description": "Subtitle showing singles tracks count", "placeholders": { "count": { "type": "int" }, - "playlistName": { - "type": "String" - } - } - }, - "updateNew": "Новая", - "@updateNew": { - "description": "Label for new version" - }, - "settingsExtensionsSubtitle": "Управление провайдерами скачивания", - "@albumFolderArtistAlbumSinglesSubtitle": { - "description": "Folder structure example" - }, - "trackReEnrichSelectAll": "Выбрать всё", - "@trackReEnrichSelectAll": { - "description": "Select all fields checkbox in re-enrich" - }, - "@extensionsUninstall": { - "description": "Uninstall extension button" - }, - "@downloadUseAlbumArtistForFoldersTrackSubtitle": { - "description": "Subtitle when track artist is used for folder names" - }, - "@logIssueNetworkErrorLabel": { - "description": "Diagnostic badge label for generic network errors" - }, - "albumFolderArtistYearAlbumSubtitle": "Альбомы/Исполнитель/[2005] Название Альбома/", - "@albumFolderArtistYearAlbumSubtitle": { - "description": "Folder structure example" - }, - "itemCount": "{count} {count, plural, =1{item} other{items}}", - "@itemCount": { - "description": "Generic item count label", - "placeholders": { - "count": { + "albumCount": { "type": "int" } } }, + "discographySelectAlbums": "Выбрать альбомы...", + "@discographySelectAlbums": { + "description": "Option - manually select albums to download" + }, + "discographySelectAlbumsSubtitle": "Выберите конкретные альбомы или синглы", + "@discographySelectAlbumsSubtitle": { + "description": "Subtitle for select albums option" + }, "discographyFetchingTracks": "Получение треков...", "@discographyFetchingTracks": { "description": "Progress - fetching album tracks" }, - "@libraryFolder": { - "description": "Folder selection setting" + "discographyFetchingAlbum": "Получение {current} из {total}...", + "@discographyFetchingAlbum": { + "description": "Progress - fetching specific album", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } }, - "queueEmptyAlbums": "No album downloads", - "@queueEmptyAlbums": { - "description": "Empty state title when no album downloads exist" - }, - "@metadataProviderPriorityDescription": { - "description": "Metadata priority page description" - }, - "@extensionVerificationHelpTitleManual": { - "description": "Dialog title when automatic browser launch for verification fails" - }, - "extensionError": "Ошибка", - "@extensionError": { - "description": "Extension detail - error message" - }, - "@trackLyricsLoadFailed": { - "description": "Message when lyrics loading fails" - }, - "@downloadedAlbumDeleteCount": { - "description": "Delete button text with count", + "discographySelectedCount": "{count} выбрано", + "@discographySelectedCount": { + "description": "Selection count badge", "placeholders": { "count": { "type": "int" } } }, - "@extensionsNoHomeFeedExtensions": { - "description": "Extensions page - shown when no installed extension has home feed" + "discographyDownloadSelected": "Скачать выбранное", + "@discographyDownloadSelected": { + "description": "Button - download selected albums" }, - "@collectionArtistCount": { - "description": "Artist count label for favorite artists", + "discographyAddedToQueue": "Добавлено {count} треков в очередь", + "@discographyAddedToQueue": { + "description": "Snackbar - tracks added from discography", "placeholders": { "count": { "type": "int" } } }, - "backupContentsArtists": "{count, plural, =1{1 favorite artist} other{{count} favorite artists}}", - "@backupContentsArtists": { - "description": "Backup contents row for favorite artists count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@trackRemoveFromDevice": { - "description": "Action - delete downloaded file" - }, - "lyricsProvidersEnabledSection": "Включено ({count})", - "@lyricsProvidersEnabledSection": { - "description": "Section header for enabled providers", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@cueSplitTitle": { - "description": "Title for CUE split bottom sheet" - }, - "@downloadedAlbumSelectedCount": { - "description": "Selection count indicator", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@trackOptionRemoveFromWishlist": { - "description": "Bottom sheet action label - remove track from wishlist" - }, - "notifDownloadingTrack": "Downloading {trackName}", - "@notifDownloadingTrack": { - "description": "Notification title while downloading a track", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, + "discographySkippedDownloaded": "{added} добавлено, {skipped} уже скачано", "@discographySkippedDownloaded": { "description": "Snackbar - with skipped tracks count", "placeholders": { @@ -2836,415 +2519,536 @@ } } }, - "@tutorialSettingsTip3": { - "description": "Tutorial settings tip 3" + "discographyNoAlbums": "Нет доступных альбомов", + "@discographyNoAlbums": { + "description": "Error - no albums found for artist" }, - "@announcementUnableToOpenLink": { - "description": "Snackbar shown when an announcement CTA link cannot be opened" + "discographyFailedToFetch": "Не удалось получить некоторые альбомы", + "@discographyFailedToFetch": { + "description": "Error - some albums failed to load" }, - "trackReleaseDate": "Дата выхода", - "discographySelectedCount": "{count} выбрано", - "collectionArtistCount": "{count, plural, =1{1 artist} other{{count} artists}}", - "logIssueNetworkErrorLabel": "NETWORK ERROR", - "updateStartingDownload": "Загрузка началась...", - "@updateStartingDownload": { - "description": "Update status - initializing" + "sectionStorageAccess": "Доступ к хранилищу", + "@sectionStorageAccess": { + "description": "Section header for storage access settings" }, - "trackDiscNumber": "Номер диска", - "@trackDiscNumber": { - "description": "Metadata label - disc number" + "allFilesAccess": "Доступ ко всем файлам", + "@allFilesAccess": { + "description": "Toggle for MANAGE_EXTERNAL_STORAGE permission" }, - "optionsUsingExtension": "Используется расширение: {extensionName}", - "@optionsUsingExtension": { - "description": "Shows active extension name", - "placeholders": { - "extensionName": { - "type": "String" - } - } + "allFilesAccessEnabledSubtitle": "Можно записать в любую папку", + "@allFilesAccessEnabledSubtitle": { + "description": "Subtitle when all files access is enabled" }, - "dialogDisableHistoryTitle": "Turn off download history?", - "tutorialWelcomeTip3": "Embed metadata, cover art, lyrics, and release information automatically", - "@tutorialWelcomeTip3": { - "description": "Tutorial welcome tip 3" - }, - "@collectionPlaylistEmptySubtitle": { - "description": "Playlist empty state subtitle" - }, - "@tutorialSearchHint": { - "description": "Placeholder shown in the tutorial search demo" - }, - "cleanupOrphanedDownloadsNone": "Записей без описания не найдено", - "discographySkippedDownloaded": "{added} добавлено, {skipped} уже скачано", - "@updateDontRemind": { - "description": "Update button - skip this version" - }, - "@snackbarLoadingCueSheet": { - "description": "Snackbar while loading a CUE sheet file" - }, - "@dialogUninstallExtension": { - "description": "Dialog title - uninstall extension" - }, - "lyricsProvidersTitle": "Приоритет к поставщику текста песни", - "@dialogRemove": { - "description": "Dialog button - remove item" - }, - "snackbarError": "Ошибка: {error}", - "@snackbarError": { - "description": "Generic error snackbar with error detail", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "@sectionApp": { - "description": "Settings section header" - }, - "@libraryPlayback": { - "description": "Section header for playback settings in library settings" - }, - "@downloadPrimaryArtistOnlyOn": { - "description": "Status label when primary-artist-only folder naming is enabled" - }, - "lyricsProvidersDiscardContent": "У вас есть несохранённые изменения, которые будут потеряны.", - "previewStop": "Остановить предпросмотр", - "@previewStop": { - "description": "Tooltip for the button that stops the playing track preview snippet" - }, - "trackConvertConfirmMessageLossless": "Конвертировать {sourceFormat} в {targetFormat}? (Lossless — Без потери качества)\n\nОригинальные файлы будут удалены после конвертации.", - "discographyAlbumsOnly": "Только альбомы", - "@discographyAlbumsOnly": { - "description": "Option - download only albums" - }, - "@editMetadataFieldCopyright": { - "description": "Chip label for copyright field in auto-fill selector" - }, - "extensionsFallbackSubtitle": "Choose which installed download extensions can be used as fallback", - "aboutSocial": "Соцсети", - "@aboutSocial": { - "description": "Section for social links" - }, - "audioAnalysisNyquist": "Nyquist", - "trackCoverSelected": "Selected cover", - "@trackCoverSelected": { - "description": "Label for the newly selected cover preview" - }, - "downloadDeduplicationEnabled": "Already-downloaded tracks will be skipped", - "@downloadDeduplicationEnabled": { - "description": "Subtitle when deduplication is on" - }, - "homeEmptyTitle": "Нет поставщиков поиска", - "@homeEmptyTitle": { - "description": "Title shown on home when no providers are available yet" - }, - "@extensionHealthUnknown": { - "description": "Extension service health status - unknown" - }, - "storeInstalled": "Установлено", - "@storeInstalled": { - "description": "Already installed badge" - }, - "trackReplayGainSuccess": "Добавлены теги ReplayGain", - "@trackReplayGainSuccess": { - "description": "Snackbar message after ReplayGain tags written for a single track" - }, - "libraryShowDuplicateIndicatorSubtitle": "Показать при поиске существующих треков", - "@collectionPlaylistRenamed": { - "description": "Snackbar after renaming playlist" - }, - "@trackConvertResamplerSoxr": { - "description": "Lossless conversion SoX resampler option" - }, - "@dialogUnsavedChanges": { - "description": "Dialog message - unsaved changes" - }, - "dialogDownload": "Скачать", - "@dialogDownload": { - "description": "Confirm button in Download All dialog" - }, - "trackLyricsLoadFailed": "Не удалось загрузить текст песни", - "@backupContentsTitle": { - "description": "Header above the list summarizing what the backup contains" - }, - "@safMigrationTitle": { - "description": "Title of SAF migration dialog" - }, - "@trackReEnrichFieldLyrics": { - "description": "Checkbox label for lyrics field in re-enrich" - }, - "setupPermissionDeniedMessage": "В разрешении отказано. Пожалуйста, предоставьте все разрешения для продолжения.", - "@setupPermissionDeniedMessage": { - "description": "Error when permission denied" - }, - "settingsDownloadNetworkWifiOnly": "Только WiFi", - "@settingsDownloadNetworkWifiOnly": { - "description": "Network option - only use WiFi" - }, - "@backupIncludeSecrets": { - "description": "Toggle to include secret extension settings (tokens, API keys) in the backup" - }, - "@libraryFilterMetadataMissingAlbumArtist": { - "description": "Filter option - items missing album artist" - }, - "@extensionHealthServiceUnknown": { - "description": "Tooltip for unknown extension service health" - }, - "snackbarExtensionUpdated": "{extensionName} Обновлено.", - "@snackbarExtensionUpdated": { - "description": "Snackbar - extension updated successfully", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "homeEmptySubtitle": "Установите расширение, чтобы продолжить.", - "@settingsTitle": { - "description": "Settings screen title" - }, - "@libraryFilterMetadataIncorrectIsrcFormat": { - "description": "Filter option - items with an invalid ISRC format" - }, - "@notifLibraryScanComplete": { - "description": "Notification title when library scan finishes" - }, - "@logIssueIspBlockingLabel": { - "description": "Diagnostic badge label when ISP blocking is detected" - }, - "tutorialDownloadTitle": "Скачивание музыки", - "@tutorialDownloadTitle": { - "description": "Tutorial download page title" - }, - "unknownTitle": "Unknown title", - "@unknownTitle": { - "description": "Fallback track title when metadata is missing" - }, - "navLibrary": "Библиотека", - "@navLibrary": { - "description": "Bottom navigation - Library tab" - }, - "@snackbarAlreadyDownloaded": { - "description": "Snackbar - track already exists", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "editMetadataSelectAll": "Все", - "@editMetadataSelectAll": { - "description": "Button to select all fields for auto-fill" - }, - "storeEmptyNoExtensions": "No extensions available", - "@storeEmptyNoExtensions": { - "description": "Message when store has no extensions" - }, - "optionsUpdateChannelWarning": "Предварительная версия может содержать ошибки или неполные функции", - "@optionsUpdateChannelWarning": { - "description": "Warning about preview channel" - }, - "@collectionPlaylistNameHint": { - "description": "Hint text for playlist name input" - }, - "notifLibraryScanComplete": "Сканирование библиотеки завершено", - "editMetadataFieldIsrc": "ISRC", - "@editMetadataFieldIsrc": { - "description": "Chip label for ISRC field in auto-fill selector" - }, - "@libraryFolderHint": { - "description": "Placeholder when no folder selected" - }, - "homeSearchHintDefault": "Paste supported URL or search...", - "@homeSearchHintDefault": { - "description": "Default placeholder for the main search field on Home" - }, - "extensionsNoExtensionsSubtitle": "Установите .spotiflac-ext файлы для добавления новых провайдеров", - "@extensionsNoExtensionsSubtitle": { - "description": "Empty state subtitle" - }, - "@extensionEnterValue": { - "description": "Hint for editing an extension setting value" - }, - "backupRestoreConfirmTitle": "Restore this backup?", - "@backupRestoreConfirmTitle": { - "description": "Confirmation dialog title before restoring a backup" - }, - "@libraryScanSelectFolderFirst": { - "description": "Message when trying to scan without folder" - }, - "@qualityHiResFlac": { - "description": "Quality option - high resolution FLAC" - }, - "aboutSpecialThanks": "Особая благодарность", - "@aboutSpecialThanks": { - "description": "Section for special thanks" - }, - "storeInstall": "Установить", - "@storeInstall": { - "description": "Install extension button" - }, - "@collectionWishlistEmptySubtitle": { - "description": "Wishlist empty state subtitle" - }, - "historyFilterAlbums": "Альбомы", - "extensionCustomUrlHandlingSubtitle": "This extension can handle links from these sites", - "@extensionCustomUrlHandlingSubtitle": { - "description": "Extension detail subtitle for custom URL handling" - }, - "filenameShowAdvancedTagsDescription": "Включить форматированные теги для отслеживания заполнения и шаблонов дат", - "@aboutReportIssue": { - "description": "Link to report bugs" - }, - "@folderOrganizationByPlaylist": { - "description": "Folder option - playlist folders" - }, - "@dateWeeksAgo": { - "description": "Relative date - weeks ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "logEntriesFiltered": "Записи ({count} фильтровано)", - "@logEntriesFiltered": { - "description": "Log count with filter active", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@lyricsModeDescription": { - "description": "Lyrics mode picker description" - }, - "@setupAppDocumentsFolderSubtitle": { - "description": "Subtitle for documents folder" - }, - "storeAddRepoButton": "Добавить репозиторий", - "@storeAddRepoButton": { - "description": "Button to submit a new repository URL" - }, - "@collectionLovedEmptyTitle": { - "description": "Loved empty state title" - }, - "aboutReportIssue": "Сообщить о проблеме", - "snackbarFailedToWriteStorage": "Failed to write back to storage", - "@snackbarFailedToWriteStorage": { - "description": "Snackbar when writing metadata back to file fails" - }, - "errorInvalidFolderSelected": "Invalid folder selected", - "allFilesAccessDisabledMessage": "Доступ ко всем файлам отключен. Приложение будет использовать ограниченный доступ к хранилищу.", - "@allFilesAccessDisabledMessage": { - "description": "Snackbar message when user disables all files access" - }, - "downloadMusixmatchLanguageCode": "Код языка", - "@downloadMusixmatchLanguageCode": { - "description": "Label for Musixmatch language input field" - }, - "dialogUnsavedChanges": "Есть несохраненные изменения. Отменить их?", - "setupChooseFromFiles": "Выбрать из файлов", - "@setupChooseFromFiles": { - "description": "iOS file picker option" - }, - "@collectionFavoriteArtistsEmptySubtitle": { - "description": "Favorite artists empty state subtitle" - }, - "downloadLossy320FormatDesc": "Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.", - "@backupRestoreConfirmButton": { - "description": "Confirm button to proceed with restore" - }, - "@queueEmptyAlbumsSubtitle": { - "description": "Empty state subtitle for album downloads" - }, - "collectionRemovedFromWishlist": "\"{trackName}\" удалён из списка желаний", - "@collectionRemovedFromWishlist": { - "description": "Snackbar after removing track from wishlist", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "extensionsInstalledSuccess": "Расширение успешно установлено", - "progressReadingCsv": "Чтение CSV...", - "@progressReadingCsv": { - "description": "Progress indicator - parsing CSV file" - }, - "artistReleases": "Releases", - "@artistReleases": { - "description": "Section header for all artist releases" - }, - "extensionVerificationBrowserTitle": "Verification browser", - "@optionsDefaultSearchTabSubtitle": { - "description": "Subtitle for the preferred default search tab setting" - }, - "optionsArtistTagModeJoinedSubtitle": "Write one ARTIST value like \"Artist A, Artist B\" for maximum player compatibility.", - "downloadLossy320": "С потерями 320 кбит/с", - "@downloadLossy320": { - "description": "Quality option label for lossy 320kbps" - }, - "queueFlacAction": "Очередь FLAC", - "@queueFlacAction": { - "description": "Action/button label for queueing FLAC redownloads for local tracks" - }, - "@setupDownloadLocationIosMessage": { - "description": "iOS-specific folder info" - }, - "trackConvertOriginal": "Original", - "sectionLyricsProviderOptions": "Provider Options", - "nowPlayingTitle": "Now Playing", - "@nowPlayingTitle": { - "description": "Title for the now playing screen" - }, - "@extensionHealthChecksConfigured": { - "description": "Extension service health check count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@cacheClearAll": { - "description": "Button label to clear all caches" - }, - "a11yDeselectTrack": "Deselect track", - "@a11yDeselectTrack": { - "description": "Accessibility label for deselecting a track" - }, - "@lyricsProvidersInfoText": { - "description": "Info tip on lyrics provider priority page" - }, - "queueEmptyHistory": "Нет истории скачиваний", - "dialogClear": "Очистить", - "@dialogClear": { - "description": "Dialog button - clear items" + "allFilesAccessDisabledSubtitle": "Ограничено только папками медиа", + "@allFilesAccessDisabledSubtitle": { + "description": "Subtitle when all files access is disabled" }, "allFilesAccessDescription": "Включите, если вы сталкиваетесь с ошибками записи при сохранении в пользовательские папки. Android 13+ по умолчанию ограничивает доступ к определенным папкам.", "@allFilesAccessDescription": { "description": "Description explaining when to enable all files access" }, - "trackConvertConfirmTitle": "Подтвердить конвертацию", - "storeCategoryLyrics": "Lyrics", - "@storeCategoryLyrics": { - "description": "Store extension category - lyrics" + "allFilesAccessDeniedMessage": "В разрешении отказано. Пожалуйста, включите функцию «Доступ ко всем файлам» в настройках системы.", + "@allFilesAccessDeniedMessage": { + "description": "Message when permission is permanently denied" }, - "@lyricsProvidersDescription": { - "description": "Description on the lyrics provider priority page" + "allFilesAccessDisabledMessage": "Доступ ко всем файлам отключен. Приложение будет использовать ограниченный доступ к хранилищу.", + "@allFilesAccessDisabledMessage": { + "description": "Snackbar message when user disables all files access" }, - "tooltipLoveAll": "Love All", - "downloadDirectory": "Папка для скачивания", - "@downloadDirectory": { - "description": "Setting - download folder" + "settingsLocalLibrary": "Локальная медиатека", + "@settingsLocalLibrary": { + "description": "Settings menu item - local library" }, + "settingsLocalLibrarySubtitle": "Сканировать и обнаружить дубликаты", + "@settingsLocalLibrarySubtitle": { + "description": "Subtitle for local library settings" + }, + "settingsCache": "Хранилище и кэш", + "@settingsCache": { + "description": "Settings menu item - cache management" + }, + "settingsCacheSubtitle": "Просмотреть размер и очистить кэш", + "@settingsCacheSubtitle": { + "description": "Subtitle for cache management menu" + }, + "libraryTitle": "Локальная медиатека", + "@libraryTitle": { + "description": "Library settings page title" + }, + "libraryScanSettings": "Настройки сканирования", + "@libraryScanSettings": { + "description": "Section header for scan settings" + }, + "libraryEnableLocalLibrary": "Включить локальную библиотеку", + "@libraryEnableLocalLibrary": { + "description": "Toggle to enable library scanning" + }, + "libraryEnableLocalLibrarySubtitle": "Сканировать и отслеживать вашу существующую музыку", + "@libraryEnableLocalLibrarySubtitle": { + "description": "Subtitle for enable toggle" + }, + "libraryFolder": "Папка библиотеки", + "@libraryFolder": { + "description": "Folder selection setting" + }, + "libraryFolderHint": "Нажмите, чтобы выбрать папку", + "@libraryFolderHint": { + "description": "Placeholder when no folder selected" + }, + "libraryAddFolder": "Добавить папку библиотеки", + "@libraryAddFolder": { + "description": "Action to add another local library source" + }, + "libraryAddFolderSubtitle": "Внутреннее хранилище, SD-карта, SSD или другой внешний диск", + "@libraryAddFolderSubtitle": { + "description": "Supported storage locations for local library sources" + }, + "librarySourceOnline": "Онлайн", + "@librarySourceOnline": { + "description": "Library source is connected and accessible" + }, + "librarySourceOffline": "Офлайн. Подключите накопитель, чтобы восстановить доступ к этим трекам", + "@librarySourceOffline": { + "description": "Library source is temporarily disconnected" + }, + "librarySourceDisabled": "Отключено", + "@librarySourceDisabled": { + "description": "Library source has been disabled by the user" + }, + "librarySourceScanCount": "{scanned} из {total} сканированных файлов ({progress}%)", + "@librarySourceScanCount": { + "description": "Live progress for one library folder scan", + "placeholders": { + "scanned": { + "type": "int" + }, + "total": { + "type": "int" + }, + "progress": { + "type": "String" + } + } + }, + "libraryExternalStorage": "Внешнее хранилище", + "@libraryExternalStorage": { + "description": "Label for a removable or external library source" + }, + "libraryRemoveFolder": "Удалить папку библиотеки", + "@libraryRemoveFolder": { + "description": "Action to remove one indexed library source" + }, + "libraryRemoveFolderMessage": "Удалить эту папку и проиндексированные треки из SpotiFLAC Mobile? Аудио файлы на накопителе не будут удалены.", + "@libraryRemoveFolderMessage": { + "description": "Confirmation shown before removing a library source" + }, + "libraryShowDuplicateIndicator": "Показать индикатор дубликатов", + "@libraryShowDuplicateIndicator": { + "description": "Toggle for duplicate indicator in search" + }, + "libraryShowDuplicateIndicatorSubtitle": "Показать при поиске существующих треков", + "@libraryShowDuplicateIndicatorSubtitle": { + "description": "Subtitle for duplicate indicator toggle" + }, + "libraryAutoScan": "Автосканирование", + "@libraryAutoScan": { + "description": "Setting for automatic library scanning" + }, + "libraryAutoScanSubtitle": "Автоматически сканировать библиотеку на новые файлы", + "@libraryAutoScanSubtitle": { + "description": "Subtitle for auto scan setting" + }, + "libraryAutoScanOff": "Выкл", + "@libraryAutoScanOff": { + "description": "Auto scan disabled" + }, + "libraryAutoScanOnOpen": "Каждое открытие приложения", + "@libraryAutoScanOnOpen": { + "description": "Auto scan when app opens" + }, + "libraryAutoScanDaily": "Ежедневно", + "@libraryAutoScanDaily": { + "description": "Auto scan once per day" + }, + "libraryAutoScanWeekly": "Еженедельно", + "@libraryAutoScanWeekly": { + "description": "Auto scan once per week" + }, + "libraryActions": "Действия", + "@libraryActions": { + "description": "Section header for library actions" + }, + "libraryScan": "Сканировать библиотеку", + "@libraryScan": { + "description": "Button to start library scan" + }, + "libraryScanSubtitle": "Сканировать аудио файлы", + "@libraryScanSubtitle": { + "description": "Subtitle for scan button" + }, + "libraryScanSelectFolderFirst": "Сначала выберите папку", + "@libraryScanSelectFolderFirst": { + "description": "Message when trying to scan without folder" + }, + "libraryCleanupMissingFiles": "Очистка отсутствующих файлов", + "@libraryCleanupMissingFiles": { + "description": "Button to remove entries for missing files" + }, + "libraryCleanupMissingFilesSubtitle": "Удалить записи для файлов, которых больше не существует", + "@libraryCleanupMissingFilesSubtitle": { + "description": "Subtitle for cleanup button" + }, + "libraryClear": "Очистить библиотеку", + "@libraryClear": { + "description": "Button to clear all library entries" + }, + "libraryClearSubtitle": "Удалить все сканированные треки", + "@libraryClearSubtitle": { + "description": "Subtitle for clear button" + }, + "libraryClearConfirmTitle": "Очистить библиотеку", + "@libraryClearConfirmTitle": { + "description": "Dialog title for clear confirmation" + }, + "libraryClearConfirmMessage": "Это удалит все сканированные треки из вашей библиотеки. Ваши фактические файлы не будут удалены.", + "@libraryClearConfirmMessage": { + "description": "Dialog message for clear confirmation" + }, + "libraryAbout": "О локальной библиотеке", + "@libraryAbout": { + "description": "Section header for about info" + }, + "libraryAboutDescription": "Сканирует существующую коллекцию музыки для обнаружения дубликатов при загрузке. Поддерживает форматы FLAC, M4A, MP3, Opus и OGG. Метаданные читаются из тегов файлов, если доступны.", + "@libraryAboutDescription": { + "description": "Description of local library feature" + }, + "libraryTracksUnit": "{count, plural, =1{трек} few{трека} other{треков}}", + "@libraryTracksUnit": { + "description": "Unit label for tracks count (without the number itself)", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryFilesUnit": "{count, plural, =1{файл} few{файла} other{файлов}}", + "@libraryFilesUnit": { + "description": "Unit label for files count during library scanning", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryLastScanned": "Последнее сканирование: {time}", + "@libraryLastScanned": { + "description": "Last scan time display", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "libraryLastScannedNever": "Никогда", + "@libraryLastScannedNever": { + "description": "Shown when library has never been scanned" + }, + "libraryScanning": "Сканирование...", + "@libraryScanning": { + "description": "Status during scan" + }, + "libraryScanFinalizing": "Завершение работы с библиотекой...", + "@libraryScanFinalizing": { + "description": "Status shown after file scanning finishes but library persistence is still running" + }, + "libraryScanProgress": "{progress}% из {total} файлов", + "@libraryScanProgress": { + "description": "Scan progress display", + "placeholders": { + "progress": { + "type": "String" + }, + "total": { + "type": "int" + } + } + }, + "libraryInLibrary": "В библиотеке", + "@libraryInLibrary": { + "description": "Badge shown on tracks that exist in local library" + }, + "libraryRemovedMissingFiles": "Удалено {count} {count, plural, one{отсутствующий файл} few{трека} many{отсутствующих файлов} other{отсутствующих файлов}} в библиотеке", + "@libraryRemovedMissingFiles": { + "description": "Snackbar after cleanup", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryCleared": "Медиатека очищена", + "@libraryCleared": { + "description": "Snackbar after clearing library" + }, + "libraryStorageAccessRequired": "Требуется доступ к хранилищу", + "@libraryStorageAccessRequired": { + "description": "Dialog title for storage permission" + }, + "libraryStorageAccessMessage": "SpotiFLAC требуется доступ к хранилищу для сканирования вашей библиотеки музыки. Пожалуйста, предоставьте разрешение в настройках.", + "@libraryStorageAccessMessage": { + "description": "Dialog message for storage permission" + }, + "libraryFolderNotExist": "Выбранной папки не существует", + "@libraryFolderNotExist": { + "description": "Error when folder doesn't exist" + }, + "librarySourceDownloaded": "Скачанные", + "@librarySourceDownloaded": { + "description": "Badge for tracks downloaded via SpotiFLAC" + }, + "librarySourceLocal": "Локальные", + "@librarySourceLocal": { + "description": "Badge for tracks from local library scan" + }, + "libraryFilterAll": "Все", + "@libraryFilterAll": { + "description": "Filter chip - show all library items" + }, + "libraryFilterDownloaded": "Скачанные", + "@libraryFilterDownloaded": { + "description": "Filter chip - show only downloaded items" + }, + "libraryFilterLocal": "Локальные", + "@libraryFilterLocal": { + "description": "Filter chip - show only local library items" + }, + "libraryFilterTitle": "Фильтры", + "@libraryFilterTitle": { + "description": "Filter bottom sheet title" + }, + "libraryFilterReset": "Сброс", + "@libraryFilterReset": { + "description": "Reset all filters button" + }, + "libraryFilterApply": "Применить", + "@libraryFilterApply": { + "description": "Apply filters button" + }, + "libraryFilterSource": "Источник", + "@libraryFilterSource": { + "description": "Filter section - source type" + }, + "libraryFilterQuality": "Качество", + "@libraryFilterQuality": { + "description": "Filter section - audio quality" + }, + "libraryFilterQualityHiRes": "Hi-Res (24 бит)", + "@libraryFilterQualityHiRes": { + "description": "Filter option - high resolution audio" + }, + "libraryFilterQualityCD": "CD (16 бит)", + "@libraryFilterQualityCD": { + "description": "Filter option - CD quality audio" + }, + "libraryFilterQualityLossy": "С потерями", + "@libraryFilterQualityLossy": { + "description": "Filter option - lossy compressed audio" + }, + "libraryFilterFormat": "Формат", + "@libraryFilterFormat": { + "description": "Filter section - file format" + }, + "libraryFilterMetadata": "Метаданные", + "@libraryFilterMetadata": { + "description": "Filter section - metadata completeness" + }, + "libraryFilterMetadataComplete": "Полные метаданные", + "@libraryFilterMetadataComplete": { + "description": "Filter option - items with complete metadata" + }, + "libraryFilterMetadataMissingAny": "Не хватает метаданных", + "@libraryFilterMetadataMissingAny": { + "description": "Filter option - items missing any tracked metadata field" + }, + "libraryFilterMetadataMissingYear": "Отсутствует год", + "@libraryFilterMetadataMissingYear": { + "description": "Filter option - items missing release year/date" + }, + "libraryFilterMetadataMissingGenre": "Отсутствует жанр", + "@libraryFilterMetadataMissingGenre": { + "description": "Filter option - items missing genre" + }, + "libraryFilterMetadataMissingAlbumArtist": "Отсутствует исполнитель альбома", + "@libraryFilterMetadataMissingAlbumArtist": { + "description": "Filter option - items missing album artist" + }, + "libraryFilterSort": "Сортировка", + "@libraryFilterSort": { + "description": "Filter section - sort order" + }, + "libraryFilterSortLatest": "Последние", + "@libraryFilterSortLatest": { + "description": "Sort option - newest first" + }, + "libraryFilterSortOldest": "Старые", + "@libraryFilterSortOldest": { + "description": "Sort option - oldest first" + }, + "libraryFilterSortAlbumAsc": "Альбом (А-Я)", + "@libraryFilterSortAlbumAsc": { + "description": "Sort option - album ascending" + }, + "libraryFilterSortAlbumDesc": "Альбом (Я-А)", + "@libraryFilterSortAlbumDesc": { + "description": "Sort option - album descending" + }, + "libraryFilterSortGenreAsc": "Жанр (А-Я)", + "@libraryFilterSortGenreAsc": { + "description": "Sort option - genre ascending" + }, + "libraryFilterSortGenreDesc": "Жанр (Я-А)", + "@libraryFilterSortGenreDesc": { + "description": "Sort option - genre descending" + }, + "timeJustNow": "Только что", + "@timeJustNow": { + "description": "Relative time - less than a minute ago" + }, + "timeMinutesAgo": "{count, plural, one{{count} минуту назад} few{{count} минуты назад} other{{count} минут назад}}", + "@timeMinutesAgo": { + "description": "Relative time - minutes ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "timeHoursAgo": "{count, plural, one{{count} час назад} few{{count} часа назад} other{{count} часов назад}}", + "@timeHoursAgo": { + "description": "Relative time - hours ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "tutorialWelcomeTitle": "Добро пожаловать в SpotiFLAC Mobile!", + "@tutorialWelcomeTitle": { + "description": "Tutorial welcome page title" + }, + "tutorialWelcomeDesc": "Learn how to find music with extensions, choose the quality you want, and manage downloads in SpotiFLAC Mobile.", + "@tutorialWelcomeDesc": { + "description": "Tutorial welcome page description" + }, + "tutorialWelcomeTip1": "Search with an installed extension or paste a supported music link", + "@tutorialWelcomeTip1": { + "description": "Tutorial welcome tip 1" + }, + "tutorialWelcomeTip2": "Выберите одно из предложенных поставщиком загрузки значений качества звука", + "@tutorialWelcomeTip2": { + "description": "Tutorial welcome tip 2" + }, + "tutorialWelcomeTip3": "Автоматически вставлять метаданные, обложку, тексты песен и информацию о релизе", + "@tutorialWelcomeTip3": { + "description": "Tutorial welcome tip 3" + }, + "tutorialSearchTitle": "Поиск музыки", + "@tutorialSearchTitle": { + "description": "Tutorial search page title" + }, + "tutorialSearchDesc": "Выполните поиск с помощью выбранного расширения или вставьте ссылку на музыкальный файл, поддерживаемый сервисом.", + "@tutorialSearchDesc": { + "description": "Tutorial search page description" + }, + "tutorialDownloadTitle": "Скачивание музыки", + "@tutorialDownloadTitle": { + "description": "Tutorial download page title" + }, + "tutorialDownloadDesc": "Выберите доступное качество, запустите загрузку и следите за её ходом в очереди.", + "@tutorialDownloadDesc": { + "description": "Tutorial download page description" + }, + "tutorialLibraryTitle": "Ваша медиатека", + "@tutorialLibraryTitle": { + "description": "Tutorial library page title" + }, + "tutorialLibraryDesc": "Загруженная и отсканированная локально музыка систематизируется в вашей медиатеке.", + "@tutorialLibraryDesc": { + "description": "Tutorial library page description" + }, + "tutorialLibraryTip1": "Управление активными, ожидающими и завершёнными загрузками из очереди медиатеки", + "@tutorialLibraryTip1": { + "description": "Tutorial library tip 1" + }, + "tutorialLibraryTip2": "Нажмите на трек, чтобы воспроизвести его с помощью встроенного проигрывателя", + "@tutorialLibraryTip2": { + "description": "Tutorial library tip 2" + }, + "tutorialLibraryTip3": "Просматривайте треки, альбомы и плейлисты в виде списка или сетки", + "@tutorialLibraryTip3": { + "description": "Tutorial library tip 3" + }, + "tutorialExtensionsTitle": "Расширения", + "@tutorialExtensionsTitle": { + "description": "Tutorial extensions page title" + }, + "tutorialExtensionsDesc": "Расширения добавляют функции поиска, загрузки, метаданных, текстов песен и другие интеграции.", + "@tutorialExtensionsDesc": { + "description": "Tutorial extensions page description" + }, + "tutorialExtensionsTip1": "Перейдите на вкладку «Репозиторий», чтобы найти полезные расширения", + "@tutorialExtensionsTip1": { + "description": "Tutorial extensions tip 1" + }, + "tutorialExtensionsTip2": "Выберите провайдеров для поиска, загрузки, метаданных и опций", "@tutorialExtensionsTip2": { "description": "Tutorial extensions tip 2" }, - "libraryFolder": "Папка библиотеки", - "@metadataProviderPriorityTitle": { - "description": "Metadata priority page title" + "tutorialExtensionsTip3": "При необходимости связывайте учетные записи и обновляйте расширения", + "@tutorialExtensionsTip3": { + "description": "Tutorial extensions tip 3" }, + "tutorialSettingsTitle": "Настройте приложение под себя", + "@tutorialSettingsTitle": { + "description": "Tutorial settings page title" + }, + "tutorialSettingsDesc": "Настройте параметры загрузки, воспроизведения, работы медиатеки, внешнего вида и хранения.", + "@tutorialSettingsDesc": { + "description": "Tutorial settings page description" + }, + "tutorialSettingsTip1": "Изменить местоположение и организацию папок для скачивания", + "@tutorialSettingsTip1": { + "description": "Tutorial settings tip 1" + }, + "tutorialSettingsTip2": "Настройка качества, параллельных потоков, имён файлов и параметров конвертации", + "@tutorialSettingsTip2": { + "description": "Tutorial settings tip 2" + }, + "tutorialSettingsTip3": "Настроить тему и внешний вид приложения", + "@tutorialSettingsTip3": { + "description": "Tutorial settings tip 3" + }, + "tutorialReadyMessage": "Всё готово. Выберите расширения, а затем введите поисковый запрос или вставьте поддерживаемую ссылку.", + "@tutorialReadyMessage": { + "description": "Tutorial completion message" + }, + "libraryForceFullScan": "Полное сканирование", + "@libraryForceFullScan": { + "description": "Button to force a complete rescan of library" + }, + "libraryForceFullScanSubtitle": "Пересканировать все файлы, игнорировать кэш", + "@libraryForceFullScanSubtitle": { + "description": "Subtitle for force full scan button" + }, + "cleanupOrphanedDownloads": "Очистка отложенных скачиваний", + "@cleanupOrphanedDownloads": { + "description": "Button to remove history entries for deleted files" + }, + "cleanupOrphanedDownloadsSubtitle": "Удалить историю записи для файлов, которых больше не существует", + "@cleanupOrphanedDownloadsSubtitle": { + "description": "Subtitle for orphaned cleanup button" + }, + "cleanupOrphanedDownloadsResult": "Удалено {count} утерянных записей из истории", "@cleanupOrphanedDownloadsResult": { "description": "Snackbar after orphan cleanup", "placeholders": { @@ -3253,45 +3057,443 @@ } } }, - "cacheExploreFeedDesc": "Изучите содержимое вкладки (новые релизы, тренды). Они обновятся при следующем посещении.", - "@cacheExploreFeedDesc": { - "description": "Description of what explore feed cache contains" + "cleanupOrphanedDownloadsNone": "Записей без описания не найдено", + "@cleanupOrphanedDownloadsNone": { + "description": "Snackbar when no orphans found" }, - "a11yOpenTrackByArtist": "Open track {trackName} by {artistName}", - "@a11yOpenTrackByArtist": { - "description": "Accessibility label for opening a track item", + "cacheTitle": "Хранилище и кэш", + "@cacheTitle": { + "description": "Cache management page title" + }, + "cacheSummaryTitle": "Просмотр кэша", + "@cacheSummaryTitle": { + "description": "Heading for cache summary card" + }, + "cacheSummarySubtitle": "Очистка кэша не приведет к удалению загруженных музыкальных файлов.", + "@cacheSummarySubtitle": { + "description": "Helper text for cache summary card" + }, + "cacheEstimatedTotal": "Приблизительное использование кэша: {size}", + "@cacheEstimatedTotal": { + "description": "Total cache size shown in summary", "placeholders": { - "trackName": { - "type": "String" - }, - "artistName": { + "size": { "type": "String" } } }, - "announcementUnableToOpenLink": "Unable to open link. Please try again.", - "libraryFilterSortAlbumDesc": "Альбом (Я-А)", - "@libraryFilterSortAlbumDesc": { - "description": "Sort option - album descending" + "cacheSectionStorage": "Кэшированные данные", + "@cacheSectionStorage": { + "description": "Section header for cache entries" }, - "trackConvertBitrate": "Битрейт", - "@trackConvertBitrate": { - "description": "Label for bitrate selection" + "cacheSectionMaintenance": "Обслуживание", + "@cacheSectionMaintenance": { + "description": "Section header for cleanup actions" }, - "audioAnalysisFileSize": "Размер", - "extensionHealthServiceOnline": "Service online", - "@extensionHealthServiceOnline": { - "description": "Tooltip for online extension service" + "cacheAppDirectory": "Папка кэша приложения", + "@cacheAppDirectory": { + "description": "Cache item title for app cache directory" }, - "logEntries": "Записи ({count})", - "@logEntries": { - "description": "Total log count", + "cacheAppDirectoryDesc": "HTTP-ответы, данные WebView и другие временные данные приложения.", + "@cacheAppDirectoryDesc": { + "description": "Description of what app cache directory contains" + }, + "cacheTempDirectory": "Временная директория", + "@cacheTempDirectory": { + "description": "Cache item title for temporary files directory" + }, + "cacheTempDirectoryDesc": "Временные файлы из загрузок и аудио конвертации.", + "@cacheTempDirectoryDesc": { + "description": "Description of what temporary directory contains" + }, + "cacheCoverImage": "Кэш обложек", + "@cacheCoverImage": { + "description": "Cache item title for persistent cover images" + }, + "cacheCoverImageDesc": "Скачанный альбом и трек обложки. Будет заново скачан после просмотра.", + "@cacheCoverImageDesc": { + "description": "Description of what cover image cache contains" + }, + "cacheLibraryCover": "Кэш обложек библиотеки", + "@cacheLibraryCover": { + "description": "Cache item title for local library cover art images" + }, + "cacheLibraryCoverDesc": "Обложка извлечена из локальных музыкальных файлов. Будет повторно извлечено при следующем сканировании.", + "@cacheLibraryCoverDesc": { + "description": "Description of what library cover cache contains" + }, + "libraryPlaybackNormalization": "Нормализация громкости", + "@libraryPlaybackNormalization": { + "description": "Toggle title for ReplayGain playback normalization in the built-in player" + }, + "libraryPlaybackNormalizationSubtitle": "Выравнивайте уровень громкости между треками с помощью тегов ReplayGain или R128, если они имеются", + "@libraryPlaybackNormalizationSubtitle": { + "description": "Subtitle explaining playback volume normalization" + }, + "cacheAudioAnalysis": "Кэш аудиоанализа", + "@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": "Просмотреть кэш ленты", + "@cacheExploreFeed": { + "description": "Cache item title for explore home feed cache" + }, + "cacheExploreFeedDesc": "Изучите содержимое вкладки (новые релизы, тренды). Они обновятся при следующем посещении.", + "@cacheExploreFeedDesc": { + "description": "Description of what explore feed cache contains" + }, + "cacheTrackLookup": "Отслеживать кэш поиска", + "@cacheTrackLookup": { + "description": "Cache item title for track ID lookup cache" + }, + "cacheTrackLookupDesc": "Поиск ID трека в Spotify/Deezer. Очистка может замедлить следующие несколько поисков.", + "@cacheTrackLookupDesc": { + "description": "Description of what track lookup cache contains" + }, + "cacheCleanupUnusedDesc": "Удалить записи из истории загрузок и библиотеки, которые остались без файлов.", + "@cacheCleanupUnusedDesc": { + "description": "Description of what cleanup unused data does" + }, + "cacheNoData": "Нет кэшированных данных", + "@cacheNoData": { + "description": "Label when cache category has no data" + }, + "cacheSizeWithFiles": "{size} в {count} файлах", + "@cacheSizeWithFiles": { + "description": "Cache size and file count", + "placeholders": { + "size": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "cacheSizeOnly": "{size}", + "@cacheSizeOnly": { + "description": "Cache size only", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "cacheEntries": "{count} записей", + "@cacheEntries": { + "description": "Track cache entry count", "placeholders": { "count": { "type": "int" } } }, + "cacheClearSuccess": "Очищено: {target}", + "@cacheClearSuccess": { + "description": "Snackbar after clearing selected cache", + "placeholders": { + "target": { + "type": "String" + } + } + }, + "cacheClearConfirmTitle": "Очистить кэш?", + "@cacheClearConfirmTitle": { + "description": "Dialog title before clearing one cache category" + }, + "cacheClearConfirmMessage": "Это очистит кэш для {target}. Загруженные музыкальные файлы не будут удалены.", + "@cacheClearConfirmMessage": { + "description": "Dialog message before clearing selected cache", + "placeholders": { + "target": { + "type": "String" + } + } + }, + "cacheClearAllConfirmTitle": "Очистить весь кэш?", + "@cacheClearAllConfirmTitle": { + "description": "Dialog title before clearing all caches" + }, + "cacheClearAllConfirmMessage": "Это очистит все категории кэша на этой странице. Скачанные музыкальные файлы не будут удалены.", + "@cacheClearAllConfirmMessage": { + "description": "Dialog message before clearing all caches" + }, + "cacheClearAll": "Очистить весь кэш", + "@cacheClearAll": { + "description": "Button label to clear all caches" + }, + "cacheCleanupUnused": "Очистка неиспользуемых данных", + "@cacheCleanupUnused": { + "description": "Action title for cleaning unused entries" + }, + "cacheCleanupUnusedSubtitle": "Удалить историю загрузок, оставшихся без просмотра, и отсутствующие записи в библиотеке", + "@cacheCleanupUnusedSubtitle": { + "description": "Subtitle for cleanup unused data action" + }, + "cacheCleanupResult": "Очистка завершена: {downloadCount} потерянных загрузок, {libraryCount} отсутствующих записей в библиотеке", + "@cacheCleanupResult": { + "description": "Snackbar after unused data cleanup", + "placeholders": { + "downloadCount": { + "type": "int" + }, + "libraryCount": { + "type": "int" + } + } + }, + "cacheRefreshStats": "Обновить статистику", + "@cacheRefreshStats": { + "description": "Button label to refresh cache statistics" + }, + "trackSaveCoverArt": "Сохранить обложку", + "@trackSaveCoverArt": { + "description": "Menu action - save album cover art as file" + }, + "trackSaveLyrics": "Сохранить текст (.lrc)", + "@trackSaveLyrics": { + "description": "Menu action - save lyrics as .lrc file" + }, + "trackSaveLyricsProgress": "Сохранение текста...", + "@trackSaveLyricsProgress": { + "description": "Snackbar while saving lyrics to file" + }, + "trackReEnrich": "Обновить", + "@trackReEnrich": { + "description": "Menu action - re-embed metadata into audio file" + }, + "trackReEnrichOnlineSubtitle": "Поиск в сети метаданных и встраивание в файл", + "@trackReEnrichOnlineSubtitle": { + "description": "Subtitle for re-enrich metadata action for local items" + }, + "trackReEnrichBatchSubtitle": "Выберите обновление через Интернет или вручную, а затем проверьте все изменения перед записью", + "@trackReEnrichBatchSubtitle": { + "description": "Subtitle for batch metadata update choices" + }, + "trackReEnrichFieldCover": "Обложка", + "@trackReEnrichFieldCover": { + "description": "Checkbox label for cover art field in re-enrich" + }, + "trackReEnrichFieldLyrics": "Текст песни", + "@trackReEnrichFieldLyrics": { + "description": "Checkbox label for lyrics field in re-enrich" + }, + "trackReEnrichFieldBasicTags": "Альбом, Исполнитель альбома", + "@trackReEnrichFieldBasicTags": { + "description": "Checkbox label for basic tags in re-enrich (title/artist are never overwritten)" + }, + "trackReEnrichFieldTrackInfo": "Номер трека и диска", + "@trackReEnrichFieldTrackInfo": { + "description": "Checkbox label for track info in re-enrich" + }, + "trackReEnrichFieldReleaseInfo": "Дата и ISRC", + "@trackReEnrichFieldReleaseInfo": { + "description": "Checkbox label for release info in re-enrich" + }, + "trackReEnrichFieldExtra": "Жанр, Название, Авторские права", + "@trackReEnrichFieldExtra": { + "description": "Checkbox label for extra metadata in re-enrich" + }, + "trackReEnrichSelectAll": "Выбрать всё", + "@trackReEnrichSelectAll": { + "description": "Select all fields checkbox in re-enrich" + }, + "trackReEnrichModeIsrc": "Только ISRC", + "@trackReEnrichModeIsrc": { + "description": "Batch metadata mode that only writes ISRC" + }, + "trackReEnrichModeIsrcSubtitle": "Find and add the recording identifier without changing other tags", + "@trackReEnrichModeIsrcSubtitle": { + "description": "Explanation for the ISRC-only batch metadata mode" + }, + "trackReEnrichModeMissing": "Заполнить недостающие теги", + "@trackReEnrichModeMissing": { + "description": "Batch metadata mode that fills only empty tags" + }, + "trackReEnrichModeMissingSubtitle": "Keep existing values and fill only fields that are empty", + "@trackReEnrichModeMissingSubtitle": { + "description": "Explanation for the fill-missing batch metadata mode" + }, + "trackReEnrichModeReplace": "Обновить выбранные теги", + "@trackReEnrichModeReplace": { + "description": "Batch metadata mode that replaces selected tag groups" + }, + "trackReEnrichModeReplaceSubtitle": "Choose which existing values may be replaced by online metadata", + "@trackReEnrichModeReplaceSubtitle": { + "description": "Explanation for the selected-tag batch metadata mode" + }, + "trackReEnrichModeManual": "Set common values", + "@trackReEnrichModeManual": { + "description": "Batch metadata mode that applies shared values to every selected track" + }, + "trackReEnrichModeManualSubtitle": "Apply the same values to every selected track", + "@trackReEnrichModeManualSubtitle": { + "description": "Explanation for the manual shared-value batch metadata mode" + }, + "trackReEnrichManualFieldsTitle": "Значения для применения", + "@trackReEnrichManualFieldsTitle": { + "description": "Heading above manual batch metadata inputs" + }, + "trackReEnrichManualHint": "Leave a field empty to keep its current value. Track titles, numbers, and ISRCs stay unchanged.", + "@trackReEnrichManualHint": { + "description": "Safety explanation for manual batch metadata inputs" + }, + "trackReEnrichFieldsTitle": "Теги для обновления", + "@trackReEnrichFieldsTitle": { + "description": "Heading above batch re-enrich field checkboxes" + }, + "trackReEnrichReview": "Просмотр изменений", + "@trackReEnrichReview": { + "description": "Button that searches metadata and opens the batch change review" + }, + "trackReEnrichReviewTitle": "Проверка изменений метаданных", + "@trackReEnrichReviewTitle": { + "description": "Title of the batch metadata review sheet" + }, + "trackReEnrichReviewSubtitle": "{changeCount} proposed changes across {trackCount} tracks", + "@trackReEnrichReviewSubtitle": { + "description": "Summary shown above proposed batch metadata changes", + "placeholders": { + "changeCount": { + "type": "int" + }, + "trackCount": { + "type": "int" + } + } + }, + "trackReEnrichNoChanges": "No metadata changes were found for the selected tracks.", + "@trackReEnrichNoChanges": { + "description": "Message when batch metadata preview has no proposed changes" + }, + "trackReEnrichApplyChanges": "Применить изменения", + "@trackReEnrichApplyChanges": { + "description": "Confirmation button in the batch metadata review sheet" + }, + "trackReEnrichRefreshOnline": "Обновить из сети", + "@trackReEnrichRefreshOnline": { + "description": "Proposed value when lyrics will be refreshed during re-enrich" + }, + "trackEditMetadata": "Редактировать метаданные", + "@trackEditMetadata": { + "description": "Menu action - edit embedded metadata" + }, + "trackCoverSaved": "Обложка сохранена в {fileName}", + "@trackCoverSaved": { + "description": "Snackbar after cover art saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "trackCoverNoSource": "Нет доступных источников обложки", + "@trackCoverNoSource": { + "description": "Snackbar when no cover art URL or embedded cover" + }, + "trackLyricsSaved": "Текст песни сохранен в {fileName}", + "@trackLyricsSaved": { + "description": "Snackbar after lyrics saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "trackReEnrichProgress": "Обновление метаданных...", + "@trackReEnrichProgress": { + "description": "Snackbar while re-enriching metadata" + }, + "trackReEnrichSearching": "Поиск метаданных в сети...", + "@trackReEnrichSearching": { + "description": "Snackbar while searching metadata from internet for local items" + }, + "trackReEnrichPreparing": "Preparing metadata changes...", + "@trackReEnrichPreparing": { + "description": "Progress message while preparing manual batch metadata changes" + }, + "trackReEnrichSuccess": "Метаданные успешно обновлены", + "trackReEnrichMetadataSaved": "Метаданные сохранены", + "trackReEnrichLyricsUpdated": "Текст обновлён", + "trackReEnrichLyricsPreserved": "No new lyrics found; existing lyrics kept", + "trackReEnrichLyricsDisabled": "Lyrics not updated: lyric downloading is disabled in Settings", + "@trackReEnrichSuccess": { + "description": "Snackbar after successful re-enrichment" + }, + "trackReEnrichFfmpegFailed": "Ошибка встраивания метаданных FFmpeg", + "@trackReEnrichFfmpegFailed": { + "description": "Snackbar when FFmpeg embed fails for MP3/Opus" + }, + "queueFlacAction": "Очередь 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": { + "description": "Confirmation dialog body before queueing FLAC redownloads for local tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueFlacNoReliableMatches": "No reliable online matches found for the selection", + "@queueFlacNoReliableMatches": { + "description": "Snackbar when no safe FLAC redownload matches were found" + }, + "queueFlacQueuedWithSkipped": "Added {addedCount} tracks to queue, skipped {skippedCount}", + "@queueFlacQueuedWithSkipped": { + "description": "Snackbar when some selected local tracks were queued for FLAC redownload and some were skipped", + "placeholders": { + "addedCount": { + "type": "int" + }, + "skippedCount": { + "type": "int" + } + } + }, + "trackSaveFailed": "Ошибка: {error}", + "@trackSaveFailed": { + "description": "Snackbar when save operation fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "trackConvertFormat": "Переконвертировать формат", + "@trackConvertFormat": { + "description": "Menu item - convert audio format" + }, + "trackConvertTitle": "Конвертировать аудио", + "@trackConvertTitle": { + "description": "Title of convert bottom sheet" + }, + "trackConvertTargetFormat": "Целевой формат", + "@trackConvertTargetFormat": { + "description": "Label for format selection" + }, + "trackConvertBitrate": "Битрейт", + "@trackConvertBitrate": { + "description": "Label for bitrate selection" + }, + "trackConvertKeepOriginal": "Оставить исходный файл", + "@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": "Подтвердить конвертацию", + "@trackConvertConfirmTitle": { + "description": "Confirmation dialog title" + }, "trackConvertConfirmMessage": "Конвертировать из {sourceFormat} в {targetFormat} {bitrate}?\n\nОригинальный файл будет удален после конвертации.", "@trackConvertConfirmMessage": { "description": "Confirmation dialog message", @@ -3307,110 +3509,27 @@ } } }, - "@optionsArtistTagModeSplitVorbisSubtitle": { - "description": "Subtitle for split Vorbis artist tag mode" - }, - "folderOrganizationByAlbum": "По альбому", - "@folderOrganizationByAlbum": { - "description": "Folder option - album folders" - }, - "libraryPlayback": "Playback", - "@storeFilterAll": { - "description": "Repo filter - all extensions" - }, - "aboutApp": "Приложение", - "@aboutApp": { - "description": "Section for app info" - }, - "optionsReplayGainSubtitleOff": "Выключено: нет тегов нормализации громкости", - "@optionsReplayGainSubtitleOff": { - "description": "Subtitle when ReplayGain is disabled" - }, - "@storeRepoDialogTitle": { - "description": "Title of the change/remove repository dialog" - }, - "settingsLyricsSubtitle": "Embed, mode, providers, language options", - "@settingsLyricsSubtitle": { - "description": "Subtitle for lyrics settings" - }, - "logIssueIspBlockingLabel": "ISP BLOCKING DETECTED", - "storeFilterIntegration": "Интеграция", - "@storeFilterIntegration": { - "description": "Repo filter - integrations" - }, - "@lyricsProvidersAtLeastOne": { - "description": "Snackbar when user tries to disable the last enabled provider" - }, - "@appearanceHistoryViewGrid": { - "description": "Grid layout option" - }, - "trackDownloaded": "Скачано", - "extensionVerificationHelpMessageManual": "SpotiFLAC Mobile could not open the browser automatically. Open this link in your browser, or copy it manually.", - "setupDownloadLocationIosMessage": "В iOS загрузки сохраняются в папке Документы приложения. Вы можете получить к ним доступ через приложение Файлы.", - "optionsArtistTagModeDescription": "Выберите, как несколько исполнителей записываются встроенные теги.", - "@optionsArtistTagModeDescription": { - "description": "Bottom-sheet description for artist tag mode setting" - }, - "@queueRetryAllFailed": { - "description": "Button to retry every failed download in the queue", + "trackConvertConfirmMessageLossless": "Конвертировать {sourceFormat} в {targetFormat}? (Lossless — Без потери качества)\n\nОригинальные файлы будут удалены после конвертации.", + "@trackConvertConfirmMessageLossless": { + "description": "Confirmation dialog message for lossless-to-lossless conversion", "placeholders": { - "count": { - "type": "int" - } - } - }, - "@trackConvertDitherTriangularHp": { - "description": "Lossless conversion high-pass triangular dither option" - }, - "@extensionVerificationCopyLink": { - "description": "Button to copy the extension verification URL" - }, - "searchSongs": "Песни", - "@searchSongs": { - "description": "Search result category - songs" - }, - "@appearanceHistoryView": { - "description": "Layout style for history" - }, - "sectionFileSettings": "Настройки файла", - "@sectionFileSettings": { - "description": "Settings section header" - }, - "@cancelDownloadTitle": { - "description": "Dialog title when confirming cancellation of an active download" - }, - "@cacheLibraryCover": { - "description": "Cache item title for local library cover art images" - }, - "audioAnalysisSpectralCutoff": "Spectral Cutoff", - "dialogDelete": "Удалить", - "@dialogDelete": { - "description": "Dialog button - delete item" - }, - "tutorialLibraryDesc": "Downloaded and locally scanned music is organized in your Library.", - "@tutorialLibraryDesc": { - "description": "Tutorial library page description" - }, - "@queueDownloadSpeedStatus": { - "description": "Queue status while downloading with speed", - "placeholders": { - "speed": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { "type": "String" } } }, - "@extensionsHomeFeedOffSubtitle": { - "description": "Extensions page - subtitle for off home feed option" - }, - "cacheCleanupResult": "Очистка завершена: {downloadCount} потерянных загрузок, {libraryCount} отсутствующих записей в библиотеке", - "@cacheCleanupResult": { - "description": "Snackbar after unused data cleanup", + "trackConvertConfirmKeepOriginal": "Конвертировать из {sourceFormat} в {targetFormat}?\n\nОригинальный файл сохранится, а сконвертированный добавится в медиатеку как отдельный трек.", + "@trackConvertConfirmKeepOriginal": { + "description": "Confirmation message when the source file will be preserved", "placeholders": { - "downloadCount": { - "type": "int" + "sourceFormat": { + "type": "String" }, - "libraryCount": { - "type": "int" + "targetFormat": { + "type": "String" } } }, @@ -3418,1075 +3537,33 @@ "@trackConvertLosslessHint": { "description": "Hint shown when converting between lossless formats" }, - "collectionRenamePlaylist": "Переименовать плейлист", - "@collectionRenamePlaylist": { - "description": "Action to rename playlist" - }, - "@libraryFilterTitle": { - "description": "Filter bottom sheet title" - }, - "@storageModeAppFolder": { - "description": "Storage mode option - app-managed folder" - }, - "logTotalErrors": "Total errors: {count}", - "@logTotalErrors": { - "description": "Total error count in log issue analysis", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@setupStorageRequired": { - "description": "Title when storage permission needed" - }, - "@snackbarMetadataProviderSaved": { - "description": "Snackbar - metadata provider order saved" - }, - "@selectionBatchConvertConfirmTitle": { - "description": "Confirmation dialog title for batch conversion" - }, - "extensionsHomeFeedAutoSubtitle": "Automatically select the best available", - "@extensionsHomeFeedAutoSubtitle": { - "description": "Extensions page - subtitle for auto home feed option" - }, - "setupLanguageDescription": "Выберите язык для приложения. Вы можете изменить его позже в настройках.", - "settingsBackupSubtitle": "Move your library, history and settings to a new device", - "@settingsBackupSubtitle": { - "description": "Subtitle for backup and restore settings item" - }, - "recentTypeArtist": "Исполнитель", - "@recentTypeArtist": { - "description": "Recent access item type - artist" - }, - "collectionPlaylistEmptySubtitle": "Удерживайте + на любом треке, чтобы добавить его сюда", - "artistCompilations": "Сборники", - "@artistCompilations": { - "description": "Section header for compilations" - }, - "snackbarFolderPickerFailed": "Не удалось открыть выбор папок: {error}", - "@snackbarFolderPickerFailed": { - "description": "Snackbar shown when folder picker fails to open", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "@optionsDetailedLoggingOn": { - "description": "Status when logging enabled" - }, - "settingsSaveDownloadHistory": "Save download history", - "@settingsSaveDownloadHistory": { - "description": "Settings switch title for storing completed downloads in history" - }, - "@storeCategoryIntegration": { - "description": "Store extension category - integration" - }, - "a11yOpenItemCount": "Open {title}, {count} {count, plural, =1{item} other{items}}", - "@a11yOpenItemCount": { - "description": "Accessibility label for opening a grouped item with count", - "placeholders": { - "title": { - "type": "String" - }, - "count": { - "type": "int" - } - } - }, - "trackFileInfo": "Информация о файле", - "@trackFileInfo": { - "description": "Tab title - file information" - }, - "libraryFilterMetadataMissingAlbumArtist": "Missing album artist", - "audioAnalysisNoClipping": "No clipping", - "tutorialSettingsDesc": "Fine-tune downloads, playback, Library behavior, appearance, and storage.", - "@tutorialSettingsDesc": { - "description": "Tutorial settings page description" - }, - "lyricsModeExternalSubtitle": "Отдельный файл .lrc для плееров, таких, как Samsung Music", - "@lyricsModeExternalSubtitle": { - "description": "Subtitle for external option" - }, - "trackLoadLyrics": "Загрузить текст песни", - "@trackLoadLyrics": { - "description": "Action - fetch lyrics" - }, - "extensionVerificationHelpTitleWaiting": "Verification still waiting", - "@extensionVerificationHelpTitleWaiting": { - "description": "Dialog title when verification is taking longer than expected" - }, - "libraryFilterReset": "Сброс", - "@libraryFilterReset": { - "description": "Reset all filters button" - }, - "@downloadAlbumArtistMetadataFull": { - "description": "Status label when album-artist folder filtering uses full metadata" - }, - "storeTitle": "Репозиторий расширения", - "@storeTitle": { - "description": "Repo screen title" - }, - "libraryCleared": "Библиотека очищена", - "@libraryCleared": { - "description": "Snackbar after clearing library" - }, - "queueDownloadCompleted": "Download completed", - "@queueDownloadCompleted": { - "description": "Accessibility label for completed download state in queue" - }, - "libraryTitle": "Локальная библиотека", - "@libraryTitle": { - "description": "Library settings page title" - }, - "queueAlbumCount": "{count, plural, =1{1 album} other{{count} albums}}", - "@queueAlbumCount": { - "description": "Album count label with plural support", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "libraryClearConfirmTitle": "Очистить библиотеку", - "@backupExportSectionTitle": { - "description": "Section title for the export/backup card" - }, - "dialogClearAll": "Очистить всё", - "@dialogClearAll": { - "description": "Dialog title - clear all items" - }, - "tutorialExtensionsDesc": "Extensions add search, download, metadata, lyrics, and other integrations.", - "@tutorialExtensionsDesc": { - "description": "Tutorial extensions page description" - }, - "libraryExternalPlayer": "External player", - "@libraryExternalPlayer": { - "description": "Setting option to use an external music player" - }, - "editMetadataFieldGenre": "Жанр", - "@tutorialLibraryTitle": { - "description": "Tutorial library page title" - }, - "folderOrganizationByPlaylist": "По плейлисту", - "queueTrackCount": "{count, plural, =1{1 track} other{{count} tracks}}", - "@searchSortTitle": { - "description": "Bottom sheet title for search sort options" - }, - "editMetadataSelectNone": "None", - "@historyFilterSingles": { - "description": "Filter chip - show singles only" - }, - "@setupLanguageTitle": { - "description": "Title for the language selection step in setup" - }, - "trackSaveCoverArt": "Сохранить обложку", - "@trackSaveCoverArt": { - "description": "Menu action - save album cover art as file" - }, - "@downloadAlbumFolderStructure": { - "description": "Setting - album folder organization" - }, - "lyricsProvidersAtLeastOne": "По крайней мере один провайдер должен оставаться включенным", - "@notifDownloadCompleteCount": { - "description": "Notification title when download is complete, with count", - "placeholders": { - "completed": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "setupUseDefault": "По умолчанию", - "@setupUseDefault": { - "description": "Button to use default folder" - }, - "logNoLogsYetSubtitle": "Логи появятся здесь по мере использования приложения", - "@logNoLogsYetSubtitle": { - "description": "Empty state subtitle" - }, - "@dateToday": { - "description": "Relative date - today" - }, - "trackSaveLyricsProgress": "Сохранение текста...", - "@trackSaveLyricsProgress": { - "description": "Snackbar while saving lyrics to file" - }, - "trackCoverSaved": "Обложка сохранена в {fileName}", - "@trackCoverSaved": { - "description": "Snackbar after cover art saved", - "placeholders": { - "fileName": { - "type": "String" - } - } - }, - "trackReEnrichFieldLyrics": "Текст песни", - "@audioAnalysisRescan": { - "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" - }, - "@downloadNeteaseIncludeRomanizationEnabled": { - "description": "Subtitle when Netease romanization is on" - }, - "dialogDisableAndClear": "Turn off and clear", - "extensionHealthChecksConfigured": "{count} {count, plural, =1{check} other{checks}} configured", - "cleanupOrphanedDownloadsSubtitle": "Удалить историю записи для файлов, которых больше не существует", - "@notifLibraryScanProgressWithTotal": { - "description": "Notification body for library scan progress when total is known", - "placeholders": { - "scanned": { - "type": "int" - }, - "total": { - "type": "int" - }, - "percentage": { - "type": "int" - } - } - }, - "@extensionDetailsTags": { - "description": "Section title for extension tags" - }, - "@albumFolderAlbumOnlySubtitle": { - "description": "Folder structure example" - }, - "@audioAnalysisAnalyzing": { - "description": "Loading text while analyzing audio" - }, - "@settingsDonate": { - "description": "Settings menu item - donate page" - }, - "@collectionPlaylistNameRequired": { - "description": "Validation error for empty playlist name" - }, - "@backupImportSectionDescription": { - "description": "Description for the restore action" - }, - "storeFilterLyrics": "Тексты песен", - "libraryAutoScan": "Автосканирование", - "@libraryAutoScan": { - "description": "Setting for automatic library scanning" - }, - "safMigrationMessage1": "SpotiFLAC now uses Android Storage Access Framework (SAF) for downloads. This fixes \"permission denied\" errors on Android 10+.", - "@safMigrationMessage1": { - "description": "First paragraph of SAF migration dialog" - }, - "setupStorageRequired": "Требуется доступ к хранилищу", - "@notifLibraryScanErrors": { - "description": "Library scan complete suffix - error count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "appearanceHistoryViewGrid": "Сетка", "trackConvertConverting": "Конвертация аудио...", "@trackConvertConverting": { "description": "Snackbar while converting" }, - "@setupUseDefaultFolder": { - "description": "Dialog title for default folder" - }, - "optionsArtistTagModeSplitVorbisSubtitle": "Write one artist tag per artist for FLAC and Opus; MP3 and M4A stay joined.", - "snackbarPlayingNext": "Playing next", - "@snackbarPlayingNext": { - "description": "Snackbar when a track is inserted as the next queue item" - }, - "optionsDefaultSearchTabSubtitle": "Выберите, какая вкладка открывает новые результаты поиска.", - "@editMetadataAutoFillFetch": { - "description": "Button label to fetch online metadata and fill selected fields" - }, - "tutorialSearchDesc": "Search with your selected extension or paste a supported music link.", - "@sectionService": { - "description": "Settings section header" - }, - "notifUpdateProgress": "{received} / {total} МБ • {percentage}%", - "@discographyDownloadSelected": { - "description": "Button - download selected albums" - }, - "cacheClearAllConfirmMessage": "Это очистит все категории кэша на этой странице. Скачанные музыкальные файлы не будут удалены.", - "@cacheClearAllConfirmMessage": { - "description": "Dialog message before clearing all caches" - }, - "extensionsHomeFeedProvider": "Home Feed Provider", - "@extensionsHomeFeedProvider": { - "description": "Extensions page - label for home feed provider selector" - }, - "@cacheExploreFeed": { - "description": "Cache item title for explore home feed cache" - }, - "@audioAnalysisDynamicRange": { - "description": "Dynamic range metric label" - }, - "unknownAlbum": "Unknown Album", - "trackCoverCurrent": "Current cover", - "downloadSongLinkRegionDesc": "Region used when resolving track links via SongLink. Choose the country where your streaming services are available.", - "downloadPrimaryArtistOnlyOff": "Primary only: Off", - "dialogDone": "Готово", - "@dialogDone": { - "description": "Dialog button - action completed" - }, - "storeRepoUrlLabel": "Ссылка на репозиторий", - "downloadSelectServiceToEnable": "Select a provider with quality options to enable this option", - "@logIssueRateLimitedSuggestion": { - "description": "Diagnostic badge suggestion for rate limiting" - }, - "libraryScanProgress": "{progress}% из {total} файлов", - "@libraryScanProgress": { - "description": "Scan progress display", + "trackConvertSuccess": "Успешно конвертировано в {format}", + "@trackConvertSuccess": { + "description": "Snackbar after successful conversion", "placeholders": { - "progress": { - "type": "String" - }, - "total": { - "type": "int" - } - } - }, - "collectionLovedEmptyTitle": "Папка Любимые пуста", - "tutorialExtensionsTitle": "Расширения", - "@tutorialExtensionsTitle": { - "description": "Tutorial extensions page title" - }, - "searchSortDurationShort": "Продолжительность (наименьшая)", - "@searchSortDurationShort": { - "description": "Sort option - shortest duration first" - }, - "trackCopyFilePath": "Скопировать путь к файлу", - "@trackCopyFilePath": { - "description": "Action - copy file path" - }, - "albumFolderArtistAlbumFlatSubtitle": "Artist/Album/ and Artist/song.flac", - "@trackConvertResampler": { - "description": "Section label for lossless conversion resampler options" - }, - "editMetadataFieldTrackNum": "Трек #", - "@editMetadataFieldTrackNum": { - "description": "Chip label for track number field in auto-fill selector" - }, - "snackbarFailedToUpdate": "Не удалось обновить расширение", - "@snackbarFailedToUpdate": { - "description": "Snackbar - extension update error" - }, - "notifAlreadyInLibrary": "Уже в библиотеке", - "@notifAlreadyInLibrary": { - "description": "Notification title when track is already in library" - }, - "collectionPlaylistNameHint": "Название плейлиста", - "extensionVerificationCopyLink": "Copy link", - "@replayGainBatchAnalyzing": { - "description": "Progress dialog title while batch scanning ReplayGain" - }, - "setupLanguageTitle": "Выберите язык", - "extensionId": "ID", - "@extensionId": { - "description": "Extension detail - unique ID" - }, - "regionCountryBR": "Brazil", - "@updateNewVersionReady": { - "description": "Update subtitle" - }, - "@queueDownloadedFileMissing": { - "description": "Accessibility label when a downloaded file is missing from disk" - }, - "@lyricsMode": { - "description": "Setting - how to save lyrics" - }, - "@settingsAppearance": { - "description": "Settings section - visual customization" - }, - "@setupStorageAccessMessageAndroid11": { - "description": "Android 11+ specific explanation" - }, - "@tutorialLibraryTip3": { - "description": "Tutorial library tip 3" - }, - "@downloadAppleQqMultiPersonDisabled": { - "description": "Subtitle when multi-person lyrics is off" - }, - "libraryStorageAccessMessage": "SpotiFLAC требуется доступ к хранилищу для сканирования вашей библиотеки музыки. Пожалуйста, предоставьте разрешение в настройках.", - "@libraryStorageAccessMessage": { - "description": "Dialog message for storage permission" - }, - "@tutorialLibraryTip1": { - "description": "Tutorial library tip 1" - }, - "dialogRemoveExtensionMessage": "Вы уверены, что хотите удалить это расширение? Это действие не может быть отменено.", - "@dialogRemoveExtensionMessage": { - "description": "Dialog message - uninstall confirmation" - }, - "setupDownloadLocationTitle": "Папка для скачивания", - "@setupDownloadLocationTitle": { - "description": "Download location dialog title" - }, - "downloadNetworkCompatibilityModeEnabled": "Allowing legacy HTTP endpoints; TLS verification remains enabled", - "@downloadNetworkCompatibilityModeEnabled": { - "description": "Subtitle when network compatibility mode is on" - }, - "@audioAnalysisBitDepth": { - "description": "Bit depth metric label" - }, - "trackOptionAddToLoved": "Добавить в Любимое", - "@trackOptionAddToLoved": { - "description": "Bottom sheet action label - add track to loved folder" - }, - "cacheAppDirectory": "Папка кэша приложения", - "@cacheAppDirectory": { - "description": "Cache item title for app cache directory" - }, - "lyricsProviderMusixmatchDesc": "Крупнейшая база данных текстов песен (мультиязычная)", - "@navStore": { - "description": "Bottom navigation - Extension repo tab" - }, - "extensionPostProcessing": "Постобработка", - "@searchTracks": { - "description": "Search filter label - tracks" - }, - "logCopied": "Логи скопированы в буфер обмена", - "@logCopied": { - "description": "Snackbar - logs copied" - }, - "@extensionHealthRequired": { - "description": "Label for a required extension service health check" - }, - "@previewPlay": { - "description": "Tooltip for the button that plays a short track preview snippet" - }, - "clickableLookingUpArtist": "Looking up artist...", - "@clickableLookingUpArtist": { - "description": "Snackbar shown while clickable artist metadata is being resolved" - }, - "@extensionVerificationBrowserSubtitleInApp": { - "description": "Subtitle when in-app browser is preferred for extension verification" - }, - "setupUseDefaultFolder": "Использовать папку по умолчанию?", - "tutorialSearchHint": "Paste or search...", - "@logIssueTrackNotFoundLabel": { - "description": "Diagnostic badge label when a track is unavailable" - }, - "@storageModeAppFolderSubtitle": { - "description": "Subtitle for app folder storage mode" - }, - "downloadMusixmatchLanguage": "Язык Musixmatch", - "@downloadMusixmatchLanguage": { - "description": "Setting for Musixmatch lyrics translation language" - }, - "lyricsModeExternal": "Внешний файл .lrc", - "@setupSelectFolder": { - "description": "Button to select folder" - }, - "logSearchHint": "Поиск логов...", - "@backupCreateFailed": { - "description": "Snackbar when backup creation fails" - }, - "@settingsSaveDownloadHistorySubtitle": { - "description": "Settings switch subtitle for storing completed downloads in history" - }, - "@albumFolderArtistAlbumFlat": { - "description": "Album folder option with singles directly in artist folder" - }, - "extensionHealthRequired": "required", - "actionCancel": "Отмена", - "@actionCancel": { - "description": "Action button - cancel operation" - }, - "optionsEmbedMetadataSubtitleOff": "Disabled (advanced): skip all metadata embedding", - "@optionsEmbedMetadataSubtitleOff": { - "description": "Subtitle when metadata embedding is disabled" - }, - "downloadAllowLocalNetworkDisabled": "Local/private addresses are blocked for security", - "@downloadAllowLocalNetworkDisabled": { - "description": "Subtitle when allow local network access is off" - }, - "@extensionsDownloadPrioritySubtitle": { - "description": "Subtitle for download priority" - }, - "downloadSingleFilenameFormat": "Формат имени файла", - "@downloadSingleFilenameFormat": { - "description": "Setting for output filename pattern for singles/EPs" - }, - "cacheSummarySubtitle": "Очистка кэша не приведет к удалению загруженных музыкальных файлов.", - "@cacheSummarySubtitle": { - "description": "Helper text for cache summary card" - }, - "libraryFilterMetadataIncorrectIsrcFormat": "Incorrect ISRC format", - "libraryFilterMetadataMissingTrackNumber": "Missing track number", - "@libraryFilterMetadataMissingTrackNumber": { - "description": "Filter option - items missing track number" - }, - "backupIncludeSecretsDescription": "Tokens and API keys from extensions will be saved into the backup file. Keep the file private. When off, you re-enter them after restoring.", - "@backupIncludeSecretsDescription": { - "description": "Explanation for the include-credentials toggle" - }, - "audioAnalysisChannelStats": "Per-channel Stats", - "@audioAnalysisChannelStats": { - "description": "Per-channel audio analysis section label" - }, - "@extensionServiceStatus": { - "description": "Extension detail section header for service status" - }, - "queueEmptySingles": "No single downloads", - "@queueEmptySingles": { - "description": "Empty state title when no single track downloads exist" - }, - "@snackbarSelectedPlaylistsEmpty": { - "description": "Snackbar when selected playlists contain no tracks" - }, - "@errorRateLimited": { - "description": "Error title - too many requests" - }, - "setupDownloadInFlac": "Download music in lossless and Hi-Res quality", - "@setupDownloadInFlac": { - "description": "App tagline in setup" - }, - "trackRemoveFromDevice": "Удалить с устройства", - "@extensionsNoDownloadProvider": { - "description": "Empty state - no download providers" - }, - "@backupCreated": { - "description": "Snackbar after a backup file is created" - }, - "cacheSummaryTitle": "Просмотр кэша", - "@cacheSummaryTitle": { - "description": "Heading for cache summary card" - }, - "selectionReplayGainCount": "ReplayGain ({count})", - "@selectionReplayGainCount": { - "description": "Batch selection action button label for ReplayGain", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@setupNotificationBackgroundDescription": { - "description": "Detailed notification explanation" - }, - "safMigrationTitle": "Storage Update Required", - "snackbarMetadataSaved": "Метаданные успешно сохранены", - "@snackbarMetadataSaved": { - "description": "Snackbar after successfully saving track metadata" - }, - "@backupContentsSettings": { - "description": "Backup contents row label for settings" - }, - "logClearLogsTitle": "Очистить логи", - "extensionsCustomSearch": "Пользовательский поиск", - "@extensionsCustomSearch": { - "description": "Label for custom search provider" - }, - "@downloadFrom": { - "description": "Label - download source" - }, - "cacheSizeWithFiles": "{size} в {count} файлах", - "selectionShareNoFiles": "Файлы, доступные для совместного доступа, не найдены", - "@selectionShareNoFiles": { - "description": "Snackbar when no selected files exist on disk" - }, - "snackbarAddedTracksToQueue": "Добавлено {count} треков в очередь", - "downloadFilenameInsertTag": "Нажмите для вставки тега:", - "@downloadFilenameInsertTag": { - "description": "Label above filename tag chips" - }, - "collectionRemovedFromFavoriteArtists": "\"{artistName}\" удалено из избранных исполнителей", - "@collectionRemovedFromFavoriteArtists": { - "description": "Snackbar after removing artist from favorite artists", - "placeholders": { - "artistName": { + "format": { "type": "String" } } }, - "queueDownloadSpeedStatus": "Downloading - {speed} MB/s", - "backupRestoreConfirmButton": "Restore", - "@libraryCleanupMissingFiles": { - "description": "Button to remove entries for missing files" - }, - "backupCreateFailed": "Failed to create backup", - "notifLibraryScanFailed": "Ошибка сканирования библиотеки", - "@notifLibraryScanFailed": { - "description": "Notification title when library scan fails" - }, - "audioAnalysisRescan": "Re-analyze", - "@trackTrackName": { - "description": "Metadata label - track title" - }, - "@setupPermissionRequired": { - "description": "Generic permission required title", - "placeholders": { - "permissionType": { - "type": "String", - "description": "Type of permission (Storage/Notification)" - } - } - }, - "@nowPlayingNoLyrics": { - "description": "Empty state when the playing file has no embedded lyrics" - }, - "libraryFilesUnit": "{count, plural, =1{file} other{files}}", - "@libraryFilesUnit": { - "description": "Unit label for files count during library scanning", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@extensionMetadataProvider": { - "description": "Capability - provides metadata" - }, - "@downloadFilterContributing": { - "description": "Setting to strip contributing artists from Album Artist folder name" - }, - "libraryScanSelectFolderFirst": "Сначала выберите папку", - "@sectionDownload": { - "description": "Settings section header" - }, - "extensionHealthNotConfigured": "Not configured", - "queueRetryAllFailed": "Retry {count} failed", - "folderOrganizationByPlaylistSubtitle": "Отдельная папка для каждого плейлиста", - "@folderOrganizationByPlaylistSubtitle": { - "description": "Subtitle for playlist folder option" - }, - "lyricsProviderExtensionDesc": "Поставщик расширений", - "@libraryFilterQualityHiRes": { - "description": "Filter option - high resolution audio" - }, - "trackConvertTitle": "Конвертировать аудио", - "@trackConvertTitle": { - "description": "Title of convert bottom sheet" - }, - "setupSkipForNow": "Пропустить", - "sectionDownload": "Скачивание", - "downloadLossyOpus256Subtitle": "Best quality Opus, ~8MB per track", - "@downloadLossyOpus256Subtitle": { - "description": "Subtitle for Opus 256kbps lossy option" - }, - "@trackConvertActionLabelLossless": { - "description": "Convert button label for lossless conversion with quality cap", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "quality": { - "type": "String" - } - } - }, - "storeRequiresVersion": "Requires v{version}+", - "@storeRequiresVersion": { - "description": "Store compatibility badge for minimum app version", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "metadataProviderPriorityDescription": "Перетаскивайте, чтобы изменить порядок провайдеров метаданных. Приложение будет пробовать провайдеров сверху вниз при поиске треков и извлечении метаданных.", - "@notifUpdateFailed": { - "description": "Notification title when app update download fails" - }, - "extensionsInfoTip": "Расширения могут добавлять новые метаданные и провайдеров загрузки. Устанавливайте только расширения из надежных источников.", - "@extensionsInfoTip": { - "description": "Security warning about extensions" - }, - "@downloadAppleQqMultiPersonEnabled": { - "description": "Subtitle when multi-person lyrics is on" - }, - "libraryFilterMetadataMissingYear": "Отсутствует год", - "extensionsDownloadPriority": "Приоритет скачивания", - "@extensionsDownloadPriority": { - "description": "Setting - download provider order" - }, - "@downloadAllowLocalNetworkEnabled": { - "description": "Subtitle when allow local network access is on" - }, - "libraryScan": "Сканировать библиотеку", - "@libraryScan": { - "description": "Button to start library scan" - }, - "editMetadataFieldLabel": "Заголовок", - "@editMetadataFieldLabel": { - "description": "Chip label for label field in auto-fill selector" - }, - "updateDownloadFailed": "Не удалось скачать", - "@updateDownloadFailed": { - "description": "Update error title" - }, - "appearanceAmoledDarkSubtitle": "Глубокий чёрный фон", - "@appearanceAmoledDarkSubtitle": { - "description": "Subtitle for AMOLED dark" - }, - "setupIcloudNotSupported": "iCloud Drive не поддерживается. Пожалуйста, используйте папку Документы.", - "trackLyricsEmbeddedSource": "Embedded", - "@trackLyricsEmbeddedSource": { - "description": "Lyrics source label for embedded lyrics" - }, - "@trackAlbumArtist": { - "description": "Metadata label - album artist" - }, - "extensionsInstallPartialSuccess": "Installed {installed} of {attempted} extensions", - "@extensionsInstallPartialSuccess": { - "description": "Message when installing multiple extensions partially succeeds", - "placeholders": { - "installed": { - "type": "int", - "description": "Number of successfully installed extensions" - }, - "attempted": { - "type": "int", - "description": "Number of selected extensions" - } - } - }, - "@extensionSettingsCount": { - "description": "Count of settings exposed by an extension quality option", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "notifLibraryScanCancelled": "Сканирование библиотеки отменено", - "@notifLibraryScanCancelled": { - "description": "Notification title when library scan is cancelled by the user" - }, - "collectionPlaylistNameRequired": "Имя плейлиста обязательно", - "libraryCleanupMissingFiles": "Очистка отсутствующих файлов", - "storeCategoryUtility": "Utility", - "@storeCategoryUtility": { - "description": "Store extension category - utility" - }, - "searchSortTitle": "Упорядочить результаты", - "@extensionVerificationBrowserExternal": { - "description": "Chip label for external browser verification mode" - }, - "audioAnalysisLufs": "LUFS", - "@setupAllowAccessToManageFiles": { - "description": "Instruction for file access permission" - }, - "extensionsErrorLoading": "Ошибка загрузки расширения", - "@actionPaste": { - "description": "Generic action - paste from clipboard" - }, - "aboutFeatureRequestSubtitle": "Предложить новые функции для приложения", - "@aboutFeatureRequestSubtitle": { - "description": "Subtitle for feature request" - }, - "@aboutTitle": { - "description": "About page title" - }, - "@downloadNeteaseIncludeTranslation": { - "description": "Setting to include translated lyrics from Netease" - }, - "@actionGo": { - "description": "Generic action button label" - }, - "regionCountryFR": "France", - "trackConvertResamplerSoxr": "SoXr", - "extensionUpdated": "Обновлено", - "@extensionUpdated": { - "description": "Extension detail - last update" - }, - "downloadLossyFormat": "Формат с потерями", - "@downloadLossyFormat": { - "description": "Setting title to pick output format for lossy downloads" - }, - "snackbarAlreadyInLibrary": "\"{trackName}\" уже есть в вашей библиотеке", - "@snackbarAlreadyInLibrary": { - "description": "Snackbar - track already exists in local library", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "libraryExternalPlayerSubtitle": "Recommended for listening, best quality, gapless playback, EQ, and wider format support", - "extensionCustomUrlHandlingShareHint": "Share links from these sites to SpotiFLAC Mobile and this extension will handle them.", - "libraryFilterQuality": "Качество", - "@libraryFilterQuality": { - "description": "Filter section - audio quality" - }, - "editMetadataAutoFillDone": "Filled {count} {count, plural, =1{field} other{fields}} from online metadata", - "@editMetadataAutoFillDone": { - "description": "Snackbar confirming how many fields were auto-filled", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@discographyDownload": { - "description": "Button - download artist discography" - }, - "aboutFeatureRequest": "Предложить новую функцию", - "downloadSingleFilenameFormatDescription": "Формат имени файла для синглов и EP. Используются те же теги, что и для альбомов.", - "@downloadSingleFilenameFormatDescription": { - "description": "Subtitle description for single filename format setting" - }, - "queueClearAllMessage": "Вы уверены, что хотите очистить все загрузки?", - "dialogDisableHistoryMessage": "Existing history will be cleared. Downloaded files will not be deleted.", - "extensionLastChecked": "Last checked {time}", - "@extensionLastChecked": { - "description": "Timestamp for the latest extension service health check", - "placeholders": { - "time": { - "type": "String" - } - } - }, - "homeImportCsvTooltip": "Import playlist (CSV, M3U)", - "@homeImportCsvTooltip": { - "description": "Tooltip for importing a CSV file into Home search" - }, - "trackConvertResamplerSwr": "SWR", - "@trackConvertResamplerSwr": { - "description": "Lossless conversion default FFmpeg swresample resampler option" - }, - "@downloadFolderOrganization": { - "description": "Title of the folder organization picker bottom sheet" - }, - "dialogClearHistoryTitle": "Очистить историю", - "@logClearSearch": { - "description": "Tooltip for clearing the log search field" - }, - "dialogImport": "Импорт", - "@dialogImport": { - "description": "Dialog button - import data" - }, - "@setupChangeFolderTooltip": { - "description": "Tooltip for editing the selected download folder" - }, - "notifLibraryScanErrors": "{count} ошибок", - "@downloadNetworkCompatibilityMode": { - "description": "Setting for legacy TLS/network handling" - }, - "@metadataSaveFailedFfmpeg": { - "description": "Snackbar error when FFmpeg fails to write metadata" - }, - "dialogUninstallExtension": "Удалить расширение?", - "recentTypePlaylist": "Плейлист", - "@recentTypePlaylist": { - "description": "Recent access item type - playlist" - }, - "trackDeleteConfirmMessage": "Это приведет к окончательному удалению загруженного файла и его удалению из истории.", - "@logIssueNetworkErrorDescription": { - "description": "Diagnostic badge description for generic network errors" - }, - "appearanceThemeSystem": "Системная", - "@appearanceThemeSystem": { - "description": "Follow system theme" - }, - "albumFolderArtistAlbumSingles": "Исполнитель / Альбом + Синглы", - "@aboutTranslators": { - "description": "Section for translators" - }, - "shareSheetNotFound": "Not found", - "@shareSheetNotFound": { - "description": "Cross-service share sheet row subtitle when a service has no match" - }, - "@tutorialDownloadInProgressSemantics": { - "description": "Accessibility label for active download state in tutorial demo" - }, - "editMetadataAutoFillNoneSelected": "Select at least one field to auto-fill", - "@editMetadataAutoFillNoneSelected": { - "description": "Snackbar when user taps Fetch without selecting any fields" - }, - "@snackbarViewQueue": { - "description": "Snackbar action - view download queue" - }, - "@optionsUpdateChannelPreview": { - "description": "Include beta/preview updates" - }, - "editMetadataFieldComposer": "Composer", - "@editMetadataFieldComposer": { - "description": "Label for composer field in the edit metadata sheet" - }, - "aboutSachinsenalDesc": "The original HiFi project creator. A foundation for lossless-source integration.", - "@aboutSachinsenalDesc": { - "description": "Credit description for sachinsenal0x64" - }, - "backupTitle": "Backup & Restore", - "@libraryFilterMetadata": { - "description": "Filter section - metadata completeness" - }, - "setupStorageAccessRequired": "Требуется доступ к хранилищу", - "@setupStorageAccessRequired": { - "description": "Title when storage access needed" - }, - "trackMetadataDelete": "Удалить", - "@trackMetadataDelete": { - "description": "Action button - delete track" - }, - "libraryFilterMetadataMissingDiscNumber": "Missing disc number", - "@libraryFilterMetadataMissingDiscNumber": { - "description": "Filter option - items missing disc number" - }, - "snackbarMetadataProviderSaved": "Приоритет провайдера метаданных сохранён", - "setupPermissionRequired": "Требуется разрешение {permissionType}", - "@selectionConvertNoConvertible": { - "description": "Snackbar when no selected tracks support conversion" - }, - "extensionHealthDegraded": "Degraded", - "regionCountryKR": "South Korea", - "@regionCountryKR": { - "description": "Country name for SongLink region picker" - }, - "trackLyricsNotInFile": "В этом файле не найдено текстов песен", - "@trackLyricsNotInFile": { - "description": "Message when no embedded lyrics in audio file" - }, - "@downloadedAlbumTapToSelect": { - "description": "Selection hint" - }, - "downloadArtistNameFilters": "Artist Name Filters", - "@downloadArtistNameFilters": { - "description": "Setting title for artist folder filter options" - }, - "@libraryFilterMetadataMissingArtist": { - "description": "Filter option - items missing artist" - }, - "recentShowAllDownloads": "Показать все загрузки", - "@appearanceThemeLight": { - "description": "Light theme" - }, - "trackReEnrichFieldTrackInfo": "Номер трека и диска", - "@appearanceThemeDark": { - "description": "Dark theme" - }, - "extensionVerificationLinkCopied": "Verification link copied", - "@extensionVerificationLinkCopied": { - "description": "Snackbar after copying the extension verification URL" - }, - "@extensionsHomeFeedDescription": { - "description": "Extensions page - description for home feed provider picker" - }, - "downloadAlbumArtistMetadataPrimaryOnly": "Album Artist metadata: Primary only", - "@downloadAlbumArtistMetadataPrimaryOnly": { - "description": "Status label when album-artist folder filtering uses primary artist only" - }, - "extensionOauthConnectHint": "Tap Connect to Spotify to fill this field.", - "setupNext": "Далее", - "extensionVerificationBrowserSubtitleInApp": "Open challenges in the in-app browser first", - "libraryAutoScanDaily": "Ежедневно", - "@libraryAutoScanDaily": { - "description": "Auto scan once per day" - }, - "@audioAnalysisDescription": { - "description": "Description for audio analysis tap-to-analyze prompt" - }, - "nowPlayingUpNext": "Up next", - "@nowPlayingUpNext": { - "description": "Title for the playback queue sheet" - }, - "nowPlayingPreviousTrack": "Previous track", - "nowPlayingNextTrack": "Next track", - "logAutoScrollOff": "Auto-scroll OFF", "trackConvertFailed": "Ошибка конвертации", "@trackConvertFailed": { "description": "Snackbar when conversion fails" }, - "extensionsUninstall": "Удалить", - "safMigrationSuccess": "Download folder updated to SAF mode", - "optionsClearHistorySubtitle": "Удалить все скачанные треки из истории", - "@optionsClearHistorySubtitle": { - "description": "Subtitle for clear history" + "cueSplitTitle": "Разделить CUE Sheet", + "@cueSplitTitle": { + "description": "Title for CUE split bottom sheet" }, - "trackPlayNext": "Play next", - "extensionsNoHomeFeedExtensions": "No extensions with home feed", - "optionsUpdateChannelStable": "Только стабильные релизы", - "@optionsUpdateChannelStable": { - "description": "Only stable updates" - }, - "@discographyDownloadAllSubtitle": { - "description": "Subtitle showing total tracks and albums", + "cueSplitAlbum": "Альбом: {album}", + "@cueSplitAlbum": { + "description": "Album name in CUE split sheet", "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } - }, - "searchPlaylists": "Плейлисты", - "@searchPlaylists": { - "description": "Search result category - playlists" - }, - "downloadNetworkCompatibilityMode": "Network Compatibility Mode", - "settingsAppearance": "Внешний вид", - "logIssueRateLimitedLabel": "RATE LIMITED", - "@logIssueRateLimitedLabel": { - "description": "Diagnostic badge label when the service rate limits requests" - }, - "logIssueSummary": "Issue Summary", - "@logIssueSummary": { - "description": "Header for log issue analysis summary" - }, - "appName": "Spotify", - "storeRepoDialogCurrent": "Текущий репозиторий:", - "@optionsExtensionStoreSubtitle": { - "description": "Subtitle for extension repo toggle" - }, - "@trackLyrics": { - "description": "Tab title - lyrics" - }, - "@backupImportButton": { - "description": "Button to pick a backup file to restore" - }, - "@setupFolderChoose": { - "description": "Button to choose folder" - }, - "storageModeAppFolderSubtitle": "Saves to Music/SpotiFLAC by default", - "@extensionsDisabled": { - "description": "Extension status - inactive" - }, - "@regionCountryAU": { - "description": "Country name for SongLink region picker" - }, - "@storeCategoryMetadata": { - "description": "Store extension category - metadata" - }, - "libraryFilterApply": "Применить", - "@libraryFilterApply": { - "description": "Apply filters button" - }, - "@libraryFilterSortGenreAsc": { - "description": "Sort option - genre ascending" - }, - "setupAllowAccessToManageFiles": "Пожалуйста, включите \"Разрешить доступ для управления всеми файлами\" на следующем экране.", - "@dialogSave": { - "description": "Dialog button - save changes" - }, - "trackLyrics": "Текст песни", - "extensionSettingNotSet": "Not set", - "@extensionSettingNotSet": { - "description": "Value shown when an extension setting has no value" - }, - "@audioAnalysisClipping": { - "description": "Clipping metric label" - }, - "downloadNeteaseIncludeTranslation": "Netease: включение перевода", - "@albumFolderArtistAlbumSubtitle": { - "description": "Folder structure example" - }, - "@settingsDonateSubtitle": { - "description": "Subtitle for donate menu item" - }, - "cueSplitSuccess": "Успешно разделено на {count} треков", - "@cueSplitSuccess": { - "description": "Snackbar after successful CUE split", - "placeholders": { - "count": { - "type": "int" + "album": { + "type": "String" } } }, @@ -4499,698 +3576,233 @@ } } }, - "updateSeeReleaseNotes": "See release notes for details.", - "@updateSeeReleaseNotes": { - "description": "Fallback changelog text when release notes cannot be parsed" + "cueSplitTrackCount": "{count} треков", + "@cueSplitTrackCount": { + "description": "Number of tracks in CUE sheet", + "placeholders": { + "count": { + "type": "int" + } + } }, - "@trackReEnrichFfmpegFailed": { - "description": "Snackbar when FFmpeg embed fails for MP3/Opus" + "cueSplitConfirmTitle": "Разделенный CUE-альбом", + "@cueSplitConfirmTitle": { + "description": "CUE split confirmation dialog title" + }, + "cueSplitConfirmMessage": "Разбить \"{album}\" на {count} отдельных FLAC-файлов?", + "@cueSplitConfirmMessage": { + "description": "CUE split confirmation dialog message", + "placeholders": { + "album": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "cueSplitSplitting": "Разделение CUE sheet... ({current}/{total})", + "@cueSplitSplitting": { + "description": "Snackbar while splitting CUE", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "cueSplitSuccess": "Успешно разделено на {count} треков", + "@cueSplitSuccess": { + "description": "Snackbar after successful CUE split", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cueSplitFailed": "Разделение CUE не удалось", + "@cueSplitFailed": { + "description": "Snackbar when CUE split fails" + }, + "cueSplitNoAudioFile": "Аудиофайл для этого CUE sheet не найден", + "@cueSplitNoAudioFile": { + "description": "Error when CUE audio file is missing" + }, + "cueSplitButton": "Разделить на Треки", + "@cueSplitButton": { + "description": "Button text to start CUE splitting" + }, + "actionCreate": "Создать", + "@actionCreate": { + "description": "Generic action button - create" + }, + "collectionFoldersTitle": "Мои папки", + "@collectionFoldersTitle": { + "description": "Library section title for custom folders" }, "collectionWishlist": "Список желаемого", "@collectionWishlist": { "description": "Custom folder for saved tracks to download later" }, - "editMetadataAutoFillFetch": "Получить и заполнить", - "@extensionsHomeFeedAuto": { - "description": "Label for auto-selected search provider" - }, - "providerPriorityDescription": "Перетаскивайте, чтобы изменить порядок провайдеров загрузки. Приложение будет пробовать провайдеров сверху вниз при загрузке треков.", - "@providerPriorityDescription": { - "description": "Provider priority page description" - }, - "queueEmptySinglesSubtitle": "Single track downloads will appear here", - "downloadLossyOpus128": "Opus 128 кбит/с", - "downloadUseAlbumArtistForFolders": "Использовать исполнителя альбома для папок", - "@downloadUseAlbumArtistForFolders": { - "description": "Setting - choose whether artist folders use Album Artist or Track Artist" - }, - "@aboutLinks": { - "description": "Section for external links" - }, - "downloadedAlbumDeleteCount": "Delete {count} {count, plural, =1{track} other{tracks}}", - "updateLater": "Позже", - "@logIssueIspBlockingSuggestion": { - "description": "Diagnostic badge suggestion for ISP blocking" - }, - "actionResume": "Возобновить", - "optionsDetailedLoggingOff": "Включить для отчётов об ошибках", - "@searchSortDefault": { - "description": "Sort option - default API order" - }, - "@regionCountryCA": { - "description": "Country name for SongLink region picker" - }, - "@sectionStorageAccess": { - "description": "Section header for storage access settings" - }, - "downloadFilterContributing": "Filter Contributing Artists", - "downloadUseAlbumArtistForFoldersTrackSubtitle": "Папка названная в честь тега Трека Артиста", - "storeSearch": "Поиск расширений...", - "@storeSearch": { - "description": "Repo search placeholder" - }, - "aboutTelegramChat": "Сообщество в Telegram", - "lyricsModeBoth": "Оба варианта", - "@lyricsModeBoth": { - "description": "Lyrics mode option - embed and external" - }, - "@permissionNotification": { - "description": "Notification permission type label" - }, - "libraryAutoScanSubtitle": "Automatically scan your library for new files", - "@libraryAutoScanSubtitle": { - "description": "Subtitle for auto scan setting" - }, - "libraryEnableLocalLibrary": "Включить локальную библиотеку", - "trackConvertTargetFormat": "Целевой формат", - "@trackConvertTargetFormat": { - "description": "Label for format selection" - }, - "extensionSettings": "Настройки", - "@editMetadataAutoFillSearching": { - "description": "Snackbar shown while searching for online metadata" - }, - "trackLyricsTimeout": "Время ожидания запроса истекло. Повторите попытку позже.", - "settingsExtensions": "Расширения", - "@settingsBackup": { - "description": "Settings menu item - backup and restore page" - }, - "librarySourceDownloaded": "Скачанные", - "@librarySourceDownloaded": { - "description": "Badge for tracks downloaded via SpotiFLAC" - }, - "appearanceDynamicColor": "Динамический цвет", - "@appearanceDynamicColor": { - "description": "Material You dynamic colors" - }, - "backupImportButton": "Choose backup file", - "downloadAppleElrcWordSyncDisabled": "Safer line-by-line Apple Music lyrics", - "@optionsEmbedMetadata": { - "description": "Settings toggle title for writing metadata into downloaded files" - }, - "appearanceTitle": "Внешний вид", - "downloadNeteaseIncludeRomanizationDisabled": "No romanization", - "@downloadNeteaseIncludeRomanizationDisabled": { - "description": "Subtitle when Netease romanization is off" - }, - "@libraryScanCancelled": { - "description": "Library scan status when a scan was cancelled" - }, - "tracksCount": "{count, plural, one {{count} трек} few {{count} трека} many {{count} треков} =1 {1 трек} other {{count} треков}}", - "@snackbarFailedToUpdateNamed": { - "description": "Snackbar when extension update fails in the repo tab", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "@extensionQualityOptions": { - "description": "Capability - quality selection" - }, - "logClearSearch": "Clear search", - "trackSaveLyrics": "Сохранить текст (.lrc)", - "@trackReEnrichSearching": { - "description": "Snackbar while searching metadata from internet for local items" - }, - "@editMetadataAutoFillNoResults": { - "description": "Snackbar when online metadata search returns no results" - }, - "notifDownloadComplete": "Скачивание завершено", - "snackbarAlreadyDownloaded": "\"{trackName}\" уже скачан", - "folderOrganizationByAlbumSubtitle": "Отдельная папка для каждого альбома", - "storeRepoUrlHint": "https://github.com/user/repo", - "trackConvertDitherTriangularHp": "Triangular HP", - "lyricsModeBothSubtitle": "Вписать и сохранить .lrc файл", - "trackReEnrichFieldExtra": "Жанр, Название, Авторские права", - "@trackReEnrichFieldExtra": { - "description": "Checkbox label for extra metadata in re-enrich" - }, - "sectionLyrics": "Тексты песен", - "@sectionLyrics": { - "description": "Settings section header" - }, - "extensionStrategy": "Стратегия: {strategy}", - "@extensionStrategy": { - "description": "Track matching strategy name", - "placeholders": { - "strategy": { - "type": "String" - } - } - }, - "@downloadNativeWorker": { - "description": "Setting title for Android native download worker" - }, - "optionsArtistTagModeSplitVorbis": "Разделить теги для FLAC/Opus", - "extensionsHomeFeedUse": "Use {extensionName} home feed", - "@cacheAppDirectoryDesc": { - "description": "Description of what app cache directory contains" - }, - "cancelDownloadTitle": "Отменить скачивание?", - "updateWhatsNew": "Что нового", - "updateNewVersionReady": "Доступна новая версия", - "@extensionVerificationClose": { - "description": "Button to dismiss the extension verification help dialog" - }, - "a11ySelectTrack": "Select track", - "libraryClearSubtitle": "Удалить все сканированные треки", - "@libraryClearSubtitle": { - "description": "Subtitle for clear button" - }, - "@settingsDownloadNetworkSubtitle": { - "description": "Subtitle explaining network preference" - }, - "storeAnyVersion": "Any", - "@storeAnyVersion": { - "description": "Store detail value when any app version is accepted" - }, - "navStore": "Репозиторий", - "backupExportSectionDescription": "Save your settings, download history, liked tracks, wishlist, favorite artists and playlists into a single file you can keep or move to another phone.", - "libraryScanSettings": "Настройки сканирования", - "@libraryScanSettings": { - "description": "Section header for scan settings" - }, - "trackDuration": "Продолжительность", - "@trackDuration": { - "description": "Metadata label - track length" - }, - "extensionHealthOffline": "Offline", - "@extensionHealthOffline": { - "description": "Extension service health status - offline" - }, - "editMetadataFieldArtist": "Исполнитель", - "@editMetadataFieldArtist": { - "description": "Chip label for artist field in auto-fill selector" - }, - "libraryInLibrary": "В библиотеке", - "pressBackAgainToExit": "Нажмите «Назад» ещё раз, чтобы выйти", - "@pressBackAgainToExit": { - "description": "Exit confirmation message" - }, - "setupNotificationGranted": "Разрешение на уведомление предоставлено!", - "@setupNotificationGranted": { - "description": "Success message for notification permission" - }, - "settingsDonate": "Support Development", - "snackbarFailedToUpdateNamed": "Failed to update {extensionName}", - "backupContentsTitle": "Backup contents", - "updateDontRemind": "Не напоминать", - "@dialogDiscard": { - "description": "Dialog button - discard changes" - }, - "editMetadataAutoFillSearching": "Поиск в сети...", - "discographyDownloadSelected": "Скачать выбранное", - "trackConvertResampler": "Resampler", - "queueFilteringIndicator": "Фильтрация...", - "@queueFilteringIndicator": { - "description": "Shown while filter results are being computed" - }, - "@dialogDownloadAllTitle": { - "description": "Dialog title for bulk download confirmation" - }, - "cueSplitConfirmMessage": "Разбить \"{album}\" на {count} отдельных FLAC-файлов?", - "@downloadCreatePlaylistSourceFolderRedundant": { - "description": "Subtitle when folder organization is already set to playlist" - }, - "regionCountryCA": "Canada", - "cacheTempDirectory": "Временная директория", - "@cacheTempDirectory": { - "description": "Cache item title for temporary files directory" - }, - "libraryShowDuplicateIndicator": "Показать индикатор дубликатов", - "@logFilterBySeverity": { - "description": "Filter dialog title" - }, - "homeSearchHintProvider": "Search with {providerName}...", - "@downloadNeteaseIncludeTranslationDisabled": { - "description": "Subtitle when Netease translation is off" - }, - "optionsCheckUpdates": "Проверить обновления", - "replayGainBatchAnalyzing": "Анализ ReplayGain...", - "recentTypeAlbum": "Альбом", - "providerExtension": "Расширение", - "@providerExtension": { - "description": "Label for extension-provided providers" - }, - "trackCoverNoSource": "Нет доступных источников обложки", - "libraryFilterMetadata": "Метаданные", - "albumFolderArtistYearAlbum": "Исполнитель / [Год] Альбом", - "@albumFolderArtistYearAlbum": { - "description": "Album folder option with year" - }, - "audioAnalysisClipping": "Clipping", - "@a11yOpenAlbumByArtistTrackCount": { - "description": "Accessibility label for opening an album item with track count", - "placeholders": { - "albumName": { - "type": "String" - }, - "artistName": { - "type": "String" - }, - "trackCount": { - "type": "int" - } - } - }, - "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": { - "count": { - "type": "int" - } - } - }, - "channelStable": "Стабильный", - "@channelStable": { - "description": "Update channel - stable releases" - }, - "tutorialSettingsTip3": "Настроить тему и внешний вид приложения", - "setupAppDocumentsFolderSubtitle": "Рекомендуется - доступ через Файлы", - "a11yPlayTrackByArtist": "Play {trackName} by {artistName}", - "@a11yPlayTrackByArtist": { - "description": "Accessibility label for playing a local library track", - "placeholders": { - "trackName": { - "type": "String" - }, - "artistName": { - "type": "String" - } - } - }, - "dialogRemove": "Убрать", - "extensionVerificationClose": "Close", - "bulkDownloadPlaylistsButton": "Download {count} {count, plural, =1{playlist} other{playlists}}", - "@bulkDownloadPlaylistsButton": { - "description": "Button label for bulk downloading selected playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "optionsAutoFallbackSubtitle": "Попробовать другие сервисы при сбое загрузки", - "@optionsAutoFallbackSubtitle": { - "description": "Subtitle for auto fallback" - }, - "extensionPatternsCount": "{count} шаблон(ов)", - "@libraryFilterLocal": { - "description": "Filter chip - show only local library items" - }, - "errorUrlNotRecognizedMessage": "Эта ссылка не поддерживается. Убедитесь, что URL-адрес указан правильно и установлено совместимое расширение.", - "@errorUrlNotRecognizedMessage": { - "description": "Error message - URL not recognized explanation" - }, - "@extensionVerificationBrowserSubtitleExternal": { - "description": "Subtitle when external browser is preferred for extension verification" - }, - "optionsArtistTagMode": "Режим тега исполнителя", - "libraryFilterMetadataComplete": "Complete metadata", - "@libraryFilterMetadataComplete": { - "description": "Filter option - items with complete metadata" - }, - "@extensionsVersion": { - "description": "Extension version display", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "@downloadNetworkAnySubtitle": { - "description": "Subtitle for any-network option in picker" - }, - "optionsReplayGainSubtitleOn": "Сканировать громкость и вставить теги ReplayGain (EBU R128)", - "libraryScanning": "Сканирование...", - "@libraryScanning": { - "description": "Status during scan" - }, - "cacheRefresh": "Обновить", - "@actionShuffle": { - "description": "Tooltip for shuffle playback action" - }, - "optionsEmbedLyricsSubtitle": "Сохранять синхронизированный текст песни рядом с загруженным треком", - "@optionsEmbedLyricsSubtitle": { - "description": "Subtitle for embed lyrics" - }, - "queueEmptyAlbumsSubtitle": "Download multiple tracks from an album to see them here", - "extensionEnterValue": "Enter value", - "@settingsDownloadNetworkAny": { - "description": "Network option - use any connection" - }, "collectionLoved": "Любимые", "@collectionLoved": { "description": "Custom folder for favorite tracks" }, - "storeAddRepoTitle": "Добавить репозиторий расширения", - "@storeAddRepoTitle": { - "description": "Store setup screen - heading when no repo is configured" - }, - "collectionNoPlaylistsYet": "Плейлисты отсутствуют", - "@collectionNoPlaylistsYet": { - "description": "Empty state title when user has no playlists" - }, - "libraryCleanupMissingFilesSubtitle": "Удалить записи для файлов, которых больше не существует", - "@libraryCleanupMissingFilesSubtitle": { - "description": "Subtitle for cleanup button" - }, - "folderOrganizationByArtist": "По исполнителю", - "@folderOrganizationByArtist": { - "description": "Folder option - artist folders" - }, - "aboutTranslators": "Переводчики", - "notifAlreadyInLibraryCount": "Уже в библиотеке ({completed}/{total})", - "editMetadataFieldTitle": "Название", - "@editMetadataFieldTitle": { - "description": "Chip label for title field in auto-fill selector" - }, - "downloadFilenameDescription": "Use {artist}, {title}, {album}, {track}, {year}, {date}, {disc} as placeholders.", - "@downloadFilenameDescription": { - "description": "Description shown in filename format editor" - }, - "@notifDownloadsFinishedBody": { - "description": "Notification body when queue finishes with failures", - "placeholders": { - "completed": { - "type": "int" - }, - "failed": { - "type": "int" - } - } - }, - "@libraryFolderNotExist": { - "description": "Error when folder doesn't exist" - }, - "@playlistsCount": { - "description": "Playlist count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@loadingSharedLink": { - "description": "Status when opening shared URL" - }, - "extensionServiceHealth": "Service health", - "@extensionServiceHealth": { - "description": "Extension capability label for service health checks" - }, - "@collectionDeletePlaylistsMessage": { - "description": "Confirmation message for deleting selected playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "setupStorageDescription": "SpotiFLAC требуется разрешение на хранение для сохранения скачанных файлов.", - "tutorialReadyMessage": "You're ready. Select your extensions, then search or paste a supported link.", - "tutorialLibraryTip3": "Browse tracks, albums, and playlists in list or grid views", - "selectionDeletePlaylistsCount": "Delete {count} {count, plural, =1{playlist} other{playlists}}", - "appearanceThemeLight": "Светлая", - "queueEmptyHistorySubtitle": "Скачанные треки появятся здесь", - "@queueEmptyHistorySubtitle": { - "description": "Empty state subtitle for download history" - }, - "backupRestoreFailed": "Failed to restore backup", - "@backupRestoreFailed": { - "description": "Snackbar when restore fails" - }, - "queueFlacQueuedWithSkipped": "Added {addedCount} tracks to queue, skipped {skippedCount}", - "@queueFlacQueuedWithSkipped": { - "description": "Snackbar when some selected local tracks were queued for FLAC redownload and some were skipped", - "placeholders": { - "addedCount": { - "type": "int" - }, - "skippedCount": { - "type": "int" - } - } - }, - "@trackReplayGain": { - "description": "Three-dot menu option to scan loudness and write ReplayGain tags" - }, - "@downloadedAlbumDownloadedCount": { - "description": "Downloaded tracks count badge", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "setupFolderChoose": "Выбрать папку для скачивания", - "dialogDownloadAllTitle": "Скачать всё", - "providerPriorityInfo": "Если трек не доступен у первого провайдера, приложение автоматически попробует следующий.", - "@providerPriorityInfo": { - "description": "Info tip about fallback behavior" - }, - "@dialogDiscardChanges": { - "description": "Dialog title - unsaved changes warning" - }, - "discographyNoAlbums": "Нет доступных альбомов", - "downloadAppleQqMultiPersonDisabled": "Standard lyrics without speaker labels", - "cacheNoData": "Нет кэшированных данных", - "@cacheNoData": { - "description": "Label when cache category has no data" - }, - "tutorialStartDownloadSemantics": "Start download", - "@tutorialStartDownloadSemantics": { - "description": "Accessibility label for idle download button in tutorial demo" - }, - "logIssueIspBlockingSuggestion": "Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8", - "aboutTitle": "О программе", - "@cueSplitButton": { - "description": "Button text to start CUE splitting" - }, - "appearanceHistoryView": "Отображение истории", - "audioAnalysisSampleRate": "Частота дискретизации", - "@settingsCache": { - "description": "Settings menu item - cache management" - }, - "lyricsProvidersInfoText": "Extension lyrics providers run before built-in lyrics providers. At least one provider must remain enabled.", - "cacheTrackLookup": "Отслеживать кэш поиска", - "extensionsHomeFeedOffSubtitle": "Do not show the home feed on the main screen", - "@downloadUsePrimaryArtistOnly": { - "description": "Setting - strip featured artists from folder name" - }, - "@regionCountryIN": { - "description": "Country name for SongLink region picker" - }, - "@libraryFilterQualityLossy": { - "description": "Filter option - lossy compressed audio" - }, - "extensionRefreshStatus": "Refresh status", - "notifAllDownloadsComplete": "Все загрузки завершены", - "downloadNeteaseIncludeRomanizationEnabled": "Romanization lines included", - "editMetadataFieldDateHint": "YYYY-MM-DD or YYYY", - "@editMetadataFieldDateHint": { - "description": "Hint text for the edit metadata date field" - }, - "trackMetadataShare": "Поделиться", - "@trackMetadataShare": { - "description": "Action button - share track" - }, - "discographyDownloadAllSubtitle": "{count} треков из {albumCount} релизов", - "settingsDonateSubtitle": "Buy the developer a coffee", - "libraryFilterDownloaded": "Скачанные", - "downloadNetworkAnySubtitle": "Use WiFi or mobile data", - "@cueSplitNoAudioFile": { - "description": "Error when CUE audio file is missing" - }, - "notifLibraryScanStopped": "Сканирование остановлено перед завершением.", - "@settingsMetadata": { - "description": "Settings menu item - metadata settings" - }, - "snackbarFailedToInstallNamed": "Failed to install {extensionName}", - "trackCopyLyrics": "Копировать текст", - "@trackCopyLyrics": { - "description": "Action - copy lyrics to clipboard" - }, - "regionCountryAU": "Australia", - "downloadAlbumFolderStructure": "Структура папок альбома", - "downloadMusixmatchAuto": "Авто", - "actionDismiss": "Dismiss", - "storeFilterAll": "Все", - "extensionsDisabled": "Выключено", - "@logClearLogs": { - "description": "Clear button tooltip" - }, - "dialogDownloadAllMessage": "Download {count} tracks?", - "@optionsEmbedLyrics": { - "description": "Embed lyrics in audio files" - }, - "tutorialLibraryTitle": "Ваша библиотека", - "optionsCheckUpdatesSubtitle": "Уведомлять о наличии новой версии", - "@optionsCheckUpdatesSubtitle": { - "description": "Subtitle for update check" + "collectionFavoriteArtists": "Избранный исполнитель", + "@collectionFavoriteArtists": { + "description": "Custom folder for favorite artists" }, "collectionPlaylist": "Плейлист", "@collectionPlaylist": { "description": "Single playlist label" }, - "dateMonthsAgo": "{count} месяцев назад", - "@dateMonthsAgo": { - "description": "Relative date - months ago", + "collectionAddToPlaylist": "Добавить в плейлист", + "@collectionAddToPlaylist": { + "description": "Action to add a track to user playlist" + }, + "collectionCreatePlaylist": "Создать плейлист", + "@collectionCreatePlaylist": { + "description": "Action to create a new playlist" + }, + "collectionNoPlaylistsYet": "Плейлисты отсутствуют", + "@collectionNoPlaylistsYet": { + "description": "Empty state title when user has no playlists" + }, + "collectionPlaylistTracks": "{count, plural, one{{count} трек} few{{count} трека} other{{count} треков}}", + "@collectionPlaylistTracks": { + "description": "Track count label for custom playlists", "placeholders": { "count": { "type": "int" } } }, - "@extensionRemoveButton": { - "description": "Button to uninstall extension" + "collectionArtistCount": "{count, plural, one{{count} исполнитель} few{{count} исполнителя} other{{count} исполнителей}}", + "@collectionArtistCount": { + "description": "Artist count label for favorite artists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionAddedToPlaylist": "Добавлено в \"{playlistName}\"", + "@collectionAddedToPlaylist": { + "description": "Snackbar after adding track to playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "collectionAlreadyInPlaylist": "Уже в \"{playlistName}\"", + "@collectionAlreadyInPlaylist": { + "description": "Snackbar when track already exists in playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "collectionPlaylistNameHint": "Название плейлиста", + "@collectionPlaylistNameHint": { + "description": "Hint text for playlist name input" + }, + "collectionPlaylistNameRequired": "Имя плейлиста обязательно", + "@collectionPlaylistNameRequired": { + "description": "Validation error for empty playlist name" + }, + "collectionRenamePlaylist": "Переименовать плейлист", + "@collectionRenamePlaylist": { + "description": "Action to rename playlist" + }, + "collectionDeletePlaylist": "Удалить плейлист", + "@collectionDeletePlaylist": { + "description": "Action to delete playlist" }, "collectionPlaylistRenamed": "Плейлист переименован", - "collectionCreatePlaylist": "Создать плейлист", - "homeGoToAlbum": "Перейти к альбому", - "@homeGoToAlbum": { - "description": "Context menu item to navigate to the album page" + "@collectionPlaylistRenamed": { + "description": "Snackbar after renaming playlist" }, - "folderOrganizationByArtistSubtitle": "Отдельная папка для каждого исполнителя", - "@optionsClearHistory": { - "description": "Delete all download history" + "collectionWishlistEmptyTitle": "Список желаний пуст", + "@collectionWishlistEmptyTitle": { + "description": "Wishlist empty state title" }, - "@searchAlbums": { - "description": "Search result category - albums" + "collectionWishlistEmptySubtitle": "Нажмите + на треках, чтобы сохранить то, что вы хотите скачать позже", + "@collectionWishlistEmptySubtitle": { + "description": "Wishlist empty state subtitle" }, - "@sectionDebug": { - "description": "Settings section header" + "collectionLovedEmptyTitle": "Папка Любимые пуста", + "@collectionLovedEmptyTitle": { + "description": "Loved empty state title" }, - "extensionsVersion": "Версия {version}", - "@navHome": { - "description": "Bottom navigation - Home tab" + "collectionLovedEmptySubtitle": "Нажмите \"любовь\" на треках, чтобы сохранить ваши избранные", + "@collectionLovedEmptySubtitle": { + "description": "Loved empty state subtitle" }, - "@editMetadataFieldDate": { - "description": "Chip label for date field in auto-fill selector" + "collectionFavoriteArtistsEmptyTitle": "Нет избранных исполнителей", + "@collectionFavoriteArtistsEmptyTitle": { + "description": "Favorite artists empty state title" }, - "downloadUsePrimaryArtistOnly": "Основной исполнитель только для папок", - "tutorialExtensionsTip2": "Choose providers for search, downloads, metadata, and fallbacks", - "@setupStorageGranted": { - "description": "Success message for storage permission" + "collectionFavoriteArtistsEmptySubtitle": "Нажмите на сердце на странице исполнителя, чтобы сохранить его здесь", + "@collectionFavoriteArtistsEmptySubtitle": { + "description": "Favorite artists empty state subtitle" }, - "tutorialWelcomeTitle": "Welcome to SpotiFLAC Mobile!", - "a11ySelectAlbum": "Select album {albumName}", - "@a11ySelectAlbum": { - "description": "Accessibility label for selecting an album", + "collectionPlaylistEmptyTitle": "Плейлист пуст", + "@collectionPlaylistEmptyTitle": { + "description": "Playlist empty state title" + }, + "collectionPlaylistEmptySubtitle": "Удерживайте + на любом треке, чтобы добавить его сюда", + "@collectionPlaylistEmptySubtitle": { + "description": "Playlist empty state subtitle" + }, + "collectionRemoveFromPlaylist": "Удалить из плейлиста", + "@collectionRemoveFromPlaylist": { + "description": "Tooltip for removing track from playlist" + }, + "collectionRemoveFromFolder": "Убрать из папки", + "@collectionRemoveFromFolder": { + "description": "Tooltip for removing track from wishlist/loved folder" + }, + "collectionAddedToLoved": "\"{trackName}\" добавлен в Любимые", + "@collectionAddedToLoved": { + "description": "Snackbar after adding track to loved folder", "placeholders": { - "albumName": { + "trackName": { "type": "String" } } }, - "aboutMobileSource": "Исходный код мобильной версии", - "@aboutMobileSource": { - "description": "Link to mobile GitHub repo" - }, - "@extensionCustomUrlHandling": { - "description": "Extension detail section title for custom URL handling" - }, - "@downloadMusixmatchLanguageAuto": { - "description": "Subtitle when no language is set" - }, - "@cancelDownloadKeep": { - "description": "Dialog button - keep the active download (do not cancel)" - }, - "libraryFilterSource": "Источник", - "@libraryFilterSource": { - "description": "Filter section - source type" - }, - "sectionStorageAccess": "Доступ к хранилищу", - "logFilterBySeverity": "Фильтровать логи по серьезности", - "libraryFolderNotExist": "Выбранной папки не существует", - "optionsEmbedMetadataSubtitleOn": "Write metadata, cover art, and embedded lyrics to files", - "albumFolderArtistAlbum": "Исполнитель / Альбом", - "@albumFolderArtistAlbum": { - "description": "Album folder option" - }, - "allFilesAccessDeniedMessage": "В разрешении отказано. Пожалуйста, включите функцию «Доступ ко всем файлам» в настройках системы.", - "@allFilesAccessDeniedMessage": { - "description": "Message when permission is permanently denied" - }, - "editMetadataSelectEmpty": "Только пустые", - "settingsLocalLibrarySubtitle": "Сканировать и обнаружить дубликаты", - "@settingsAutoExportFailed": { - "description": "Setting toggle for auto-export" - }, - "cacheCleanupUnusedSubtitle": "Удалить историю загрузок, оставшихся без просмотра, и отсутствующие записи в библиотеке", - "@tutorialSettingsTitle": { - "description": "Tutorial settings page title" - }, - "libraryFilterMetadataMissingGenre": "Отсутствует жанр", - "@appearanceSelectAccentColor": { - "description": "Accessibility label for picking an accent color", + "collectionRemovedFromLoved": "\"{trackName}\" удалено из Любимых", + "@collectionRemovedFromLoved": { + "description": "Snackbar after removing track from loved folder", "placeholders": { - "hex": { + "trackName": { "type": "String" } } }, - "setupFolderDescription": "Выберите папку, в которой будет сохраняться скачанная музыка.", - "extensionDetailsTags": "Tags", - "unknownArtist": "Unknown Artist", - "trackFetchOnlineLyrics": "Поиск в сети", - "snackbarNoActionDefined": "No action defined for this button", - "@snackbarNoActionDefined": { - "description": "Snackbar when an extension button has no action configured" - }, - "downloadAllCount": "Скачать все ({count})", - "@downloadAllCount": { - "description": "Download all button with count", + "collectionAddedToWishlist": "\"{trackName}\" добавлен в список желаний", + "@collectionAddedToWishlist": { + "description": "Snackbar after adding track to wishlist", "placeholders": { - "count": { - "type": "int" + "trackName": { + "type": "String" } } }, - "downloadedAlbumDiscHeader": "Диск {discNumber}", - "@backupInvalidFile": { - "description": "Snackbar when the chosen file is not a valid backup" - }, - "@extensionHooksAvailable": { - "description": "Post-processing hooks count", + "collectionRemovedFromWishlist": "\"{trackName}\" удалён из списка желаний", + "@collectionRemovedFromWishlist": { + "description": "Snackbar after removing track from wishlist", "placeholders": { - "count": { - "type": "int" + "trackName": { + "type": "String" } } }, - "@logIssueTrackNotFoundSuggestion": { - "description": "Diagnostic badge suggestion when a track is unavailable" - }, - "@snackbarFileNotFound": { - "description": "Snackbar - file doesn't exist" - }, - "extensionHealthOnline": "Online", - "@extensionHealthOnline": { - "description": "Extension service health status - online" - }, - "settingsSaveDownloadHistorySubtitle": "Keep completed downloads in history and library views", - "trackOptionRemoveFromWishlist": "Удалить из списка желаний", - "extensionsFallbackTitle": "Fallback Extensions", - "@extensionsFallbackTitle": { - "description": "Setting and page title for choosing which download extensions can be used during fallback" - }, - "metadataSaveFailedFfmpeg": "Не удалось сохранить метаданные через FFmpeg", - "@albumFolderAlbumOnly": { - "description": "Album folder option" - }, - "@albumFolderYearAlbumSubtitle": { - "description": "Folder structure example" - }, - "downloadedAlbumDeleteSelected": "Удалить выбранные", - "selectionSelectPlaylistsToDelete": "Select playlists to delete", - "@selectionSelectPlaylistsToDelete": { - "description": "Hint shown when no playlists are selected for deletion" - }, - "storeAddRepoDescription": "Введите URL-адрес репозитория GitHub, который содержит файл registry.json для просмотра и установки расширений.", - "appearanceThemeDark": "Тёмная", - "downloadedAlbumTapToSelect": "Нажмите на треки для выбора", + "collectionAddedToFavoriteArtists": "\"{artistName}\" добавлен в избранные исполнители", "@collectionAddedToFavoriteArtists": { "description": "Snackbar after adding artist to favorite artists", "placeholders": { @@ -5199,751 +3811,100 @@ } } }, - "@backupRestored": { - "description": "Snackbar after a successful restore" - }, - "nowPlayingLibraryEmpty": "Your library is empty", - "@nowPlayingLibraryEmpty": { - "description": "Snackbar when shuffle library is requested but library has no tracks" - }, - "editMetadataAutoFillNoResults": "No matching metadata found online", - "updateDownloading": "Скачивание...", - "trackLyricsSource": "Источник: {source}", - "logFilterLevel": "Уровень", - "logNoLogsYet": "Логов нет", - "cacheSizeOnly": "{size}", - "@cacheSizeOnly": { - "description": "Cache size only", + "collectionRemovedFromFavoriteArtists": "\"{artistName}\" удалено из избранных исполнителей", + "@collectionRemovedFromFavoriteArtists": { + "description": "Snackbar after removing artist from favorite artists", "placeholders": { - "size": { + "artistName": { "type": "String" } } }, - "trackOpenInService": "Open in {serviceName}", - "@trackOpenInService": { - "description": "Button label to open a track in a named music service", - "placeholders": { - "serviceName": { - "type": "String" - } - } + "trackOptionAddToLoved": "Добавить в Любимое", + "@trackOptionAddToLoved": { + "description": "Bottom sheet action label - add track to loved folder" }, - "@cacheLibraryCoverDesc": { - "description": "Description of what library cover cache contains" + "trackOptionRemoveFromLoved": "Исключить из Любимых", + "@trackOptionRemoveFromLoved": { + "description": "Bottom sheet action label - remove track from loved folder" }, - "libraryClearConfirmMessage": "Это удалит все сканированные треки из вашей библиотеки. Ваши фактические файлы не будут удалены.", - "@dialogImportPlaylistMessage": { - "description": "Dialog message - import playlist confirmation", - "placeholders": { - "count": { - "type": "int" - } - } + "trackOptionAddToWishlist": "Добавить в список желаний", + "@trackOptionAddToWishlist": { + "description": "Bottom sheet action label - add track to wishlist" }, - "extensionsHomeFeedAuto": "Авто", - "searchEmptyResultSubtitle": "Попробуйте другое ключевое слово", - "@searchEmptyResultSubtitle": { - "description": "Subtitle shown under the empty search result state on the home screen" + "trackOptionRemoveFromWishlist": "Удалить из списка желаний", + "@trackOptionRemoveFromWishlist": { + "description": "Bottom sheet action label - remove track from wishlist" }, - "dateToday": "Сегодня", - "a11yOpenItem": "Open {itemType} {name}", - "@a11yOpenItem": { - "description": "Accessibility label for opening a generic item", - "placeholders": { - "itemType": { - "type": "String" - }, - "name": { - "type": "String" - } - } + "artistOptionAddToFavorites": "Добавить в избранные исполнители", + "@artistOptionAddToFavorites": { + "description": "Action label - add artist to favorite artists" }, - "audioAnalysisBitDepth": "Разрядность", - "editMetadataFieldTrackTotal": "Track Total", - "@editMetadataFieldTrackTotal": { - "description": "Label for total tracks field in the edit metadata sheet" + "artistOptionRemoveFromFavorites": "Удалить из избранных исполнителей", + "@artistOptionRemoveFromFavorites": { + "description": "Action label - remove artist from favorite artists" }, - "@editMetadataFieldDiscTotal": { - "description": "Label for total discs field in the edit metadata sheet" - }, - "replayGainBatchConfirmMessage": "Проанализировать громкость и записать ReplayGain теги на {count} трек(-а)?", - "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Папка названная в честь тега Альбома Артиста", - "@notifDownloadingUpdate": { - "description": "Notification title while downloading an app update", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "@csvImportTracks": { - "description": "Label shown in quality picker for CSV import", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "trackEditMetadata": "Редактировать метаданные", - "discographyDownloadAll": "Скачать всё", - "@discographyDownloadAll": { - "description": "Option - download entire discography" - }, - "@editMetadataFieldAlbum": { - "description": "Chip label for album field in auto-fill selector" - }, - "albumFolderArtistAlbumSubtitle": "Альбомы/Исполнитель/Название Альбома/", - "extensionHealthServiceUnknown": "Service status unknown", - "navHome": "Главная", - "queueDownloadStarting": "Starting...", - "@dialogRemoveExtension": { - "description": "Dialog title - uninstall extension" - }, - "notifLibraryScanProgressNoTotal": "{scanned} files scanned • {percentage}%", - "@appearanceAmoledDark": { - "description": "Theme option - pure black" - }, - "qualityHiResFlac": "Hi-Res FLAC", - "selectionSelected": "{count} выбрано", - "extensionDetailsInformation": "Information", - "@extensionDetailsInformation": { - "description": "Section title for extension metadata information" - }, - "discographyDownload": "Скачать дискографию", - "editMetadataFieldCopyright": "Авторские права", - "@setupOpenSettings": { - "description": "Button to open system settings" - }, - "libraryFilterSort": "Сортировка", - "cacheLibraryCoverDesc": "Обложка извлечена из локальных музыкальных файлов. Будет повторно извлечено при следующем сканировании.", - "dialogRemoveExtension": "Удалить расширение", - "backupExportSectionTitle": "Create backup", - "downloadEmbedLyricsDisabled": "Enable metadata embedding first", - "openInOtherServices": "Open in Other Services", - "actionSelectAll": "Выбрать все", - "settingsDownloadNetworkSubtitle": "Выберите, какую сеть использовать для скачивания. Когда установлено значение только WiFi — скачивания через мобильную сеть будут приостановлены.", - "downloadFolderOrganization": "Организация папок", - "tutorialWelcomeTip2": "Choose from the audio qualities offered by your download provider", - "@tutorialWelcomeTip2": { - "description": "Tutorial welcome tip 2" - }, - "selectionAllSelected": "Все треки выбраны", - "@selectionAllSelected": { - "description": "Status - all items selected" - }, - "settingsLogsSubtitle": "Просмотреть логи для отладки", - "albumFolderYearAlbumSubtitle": "Альбомы/[2005] Название Альбома /", - "cancelDownloadKeep": "Удерживать", - "optionsDetailedLoggingOn": "Ведутся подробные логи", - "safMigrationMessage2": "Please select your download folder again to switch to the new storage system.", - "@storeChangeRepoTooltip": { - "description": "Tooltip for the change-repository icon button in the app bar" - }, - "regionCountryJP": "Japan", - "notifUpdateFailed": "Ошибка обновления", - "downloadCreatePlaylistSourceFolderRedundant": "Handled by folder organization setting", - "@trackLyricsSaved": { - "description": "Snackbar after lyrics saved", - "placeholders": { - "fileName": { - "type": "String" - } - } - }, - "downloadLocationSubtitle": "Choose where to save your downloaded tracks", - "trackConvertActionLabelLossless": "{sourceFormat} → {targetFormat} ({quality})", - "lyricsProvidersDisabledSection": "Выключено ({count})", - "@dateDaysAgo": { - "description": "Relative date - days ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "librarySourceLocal": "Локальные", - "backupContentsExtensions": "{count, plural, =1{1 extension} other{{count} extensions}}", - "sectionService": "Сервис", - "lyricsProviderQqMusicDesc": "QQ Музыка (хорошо подходит для китайских песен, через прокси)", - "@lyricsProviderQqMusicDesc": { - "description": "Description for QQ Music provider" - }, - "cacheCleanupUnusedDesc": "Удалить записи из истории загрузок и библиотеки, которые остались без файлов.", - "selectionTapPlaylistsToSelect": "Tap playlists to select", - "notifUpdateFailedBody": "Не удалось скачать обновление. Попробуйте позже.", - "downloadNeteaseIncludeTranslationDisabled": "Original lyrics only", - "artistPopular": "Популярное", - "extensionRemoveButton": "Удалить расширение", - "allFilesAccessEnabledSubtitle": "Можно записать в любую папку", - "@allFilesAccessEnabledSubtitle": { - "description": "Subtitle when all files access is enabled" - }, - "extensionsSearchProvider": "Провайдер поиска", - "tutorialWelcomeDesc": "Learn how to find music with extensions, choose the quality you want, and manage downloads in SpotiFLAC Mobile.", - "selectionBatchConvertConfirmTitle": "Пакетная конвертация", - "extensionMetadataProvider": "Провайдер метаданных", - "queueDownloadedFileMissing": "Downloaded file missing", - "logClearLogs": "Очистить логи", - "@downloadAppleQqMultiPerson": { - "description": "Setting for word-by-word multi-person lyrics from Apple Music and QQ Music" - }, - "tutorialWelcomeTip1": "Search with an installed extension or paste a supported music link", - "@tutorialWelcomeTip1": { - "description": "Tutorial welcome tip 1" - }, - "logIssueRateLimitedSuggestion": "Wait a few minutes before trying again", - "downloadAllowLocalNetworkEnabled": "Requests to local/private addresses are allowed (for local proxy or custom DNS)", - "@regionCountryUS": { - "description": "Country name for SongLink region picker" - }, - "trackArtist": "Исполнитель", - "extensionCustomUrlHandling": "Custom URL Handling", - "appearanceDynamicColorSubtitle": "Использовать цвета из ваших обоев", - "@appearanceDynamicColorSubtitle": { - "description": "Subtitle for dynamic color" - }, - "searchSortDefault": "По умолчанию", - "@downloadFallbackExtensions": { - "description": "Settings item for configuring fallback extension providers" - }, - "albumFolderStructureDescription": "Choose how album folders are structured", - "@albumFolderStructureDescription": { - "description": "Album folder structure picker description" - }, - "libraryBuiltInPreviewPlayerSubtitle": "Quick local previews inside SpotiFLAC Mobile", - "@libraryBuiltInPreviewPlayerSubtitle": { - "description": "Subtitle for built-in preview player option" - }, - "storageModeAppFolder": "App Folder (Recommended)", - "@actionPause": { - "description": "Action button - pause download" - }, - "actionPaste": "Paste", - "extensionSettingsCount": "{count} {count, plural, =1{setting} other{settings}}", - "downloadNativeWorker": "Native download worker", - "releaseTypeEp": "EP", - "@releaseTypeEp": { - "description": "Badge label for EP releases" - }, - "snackbarExtensionInstalledEnable": "{extensionName} installed. Enable it in Settings > Extensions", - "cacheRefreshStats": "Обновить статистику", "collectionPlaylistChangeCover": "Изменить обложку", "@collectionPlaylistChangeCover": { "description": "Bottom sheet action to pick a custom cover image for a playlist" }, - "optionsClearHistory": "Очистить историю загрузок", - "trackGenre": "Жанр", - "snackbarSelectedPlaylistsEmpty": "Selected playlists have no tracks", - "collectionAddedTracksToPlaylist": "Added {count} {count, plural, =1{track} other{tracks}} to {playlistName}", - "downloadNeteaseIncludeRomanization": "Netease: Include Romanization", - "libraryFilterMetadataMissingArtist": "Missing artist", - "extensionsNoCustomSearch": "Нет расширений с пользовательским поиском", - "@extensionsTitle": { - "description": "Extensions page title" - }, - "extensionDownloadProvider": "Провайдер скачивания", - "@extensionDownloadProvider": { - "description": "Capability - provides downloads" - }, - "lyricsMode": "Режим текстов песен", - "aboutReportIssueSubtitle": "Сообщите о возникших проблемах", - "@downloadSeparateSinglesFolder": { - "description": "Setting - separate folder for singles" - }, - "appearanceAmoledDark": "AMOLED", - "logIssueNetworkErrorDescription": "Connection issues detected", - "folderOrganizationByArtistAlbumSubtitle": "Вложенные папки для исполнителей и альбомов", - "@libraryForceFullScanSubtitle": { - "description": "Subtitle for force full scan button" - }, - "setupGrantPermission": "Предоставить разрешение", - "lyricsProvidersDescription": "Включайте, выключайте, переупорядочивайте источники текстов. Поставщики связаны сверху вниз пока проводится поиск текста.", - "dateDaysAgo": "{count} дней назад", - "extensionsHomeFeedDescription": "Choose which extension provides the home feed on the main screen", - "downloadLossyMp3Subtitle": "Наилучшая совместимость, ~10 Мб на трек", - "@downloadLossyMp3Subtitle": { - "description": "Subtitle for MP3 320kbps lossy option" - }, - "nowPlayingDetails": "Details", - "collectionWishlistEmptyTitle": "Список желаний пуст", - "downloadAppleQqMultiPersonEnabled": "Speaker labels included for duets and group tracks", - "@snackbarExtensionUpdatedVersion": { - "description": "Snackbar after updating an extension from the repo tab", - "placeholders": { - "extensionName": { - "type": "String" - }, - "version": { - "type": "String" - } - } - }, - "extensionHealthServiceDegraded": "Service degraded", - "selectionConvertNoConvertible": "Не выбраны конвертируемые треки", - "setupStorageGranted": "Доступ к хранилищу предоставлен!", - "downloadAllowLocalNetwork": "Allow Local Network Access", - "nowPlayingNoLyrics": "No lyrics in this file", - "selectionDeleteTracksCount": "Delete {count} {count, plural, =1{track} other{tracks}}", - "@selectionDeleteTracksCount": { - "description": "Button label for deleting selected tracks", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@libraryForceFullScan": { - "description": "Button to force a complete rescan of library" - }, - "notifLibraryScanExcluded": "{count} исключено", - "@aboutPaxsenixSubtitle": { - "description": "Subtitle for Paxsenix special thanks entry on the about page" - }, - "setupChangeFolderTooltip": "Change folder", - "logIssueIspBlockingDescription": "Your ISP may be blocking access to download services", - "@logIssueIspBlockingDescription": { - "description": "Diagnostic badge description for ISP blocking" - }, - "libraryClear": "Очистить библиотеку", - "collectionRemoveFromPlaylist": "Удалить из плейлиста", - "@collectionRemoveFromPlaylist": { - "description": "Tooltip for removing track from playlist" - }, - "backupIncludeSecrets": "Include extension credentials", - "notifDownloadsFinishedBody": "{completed, plural, =1{1 track downloaded} other{{completed} tracks downloaded}}, {failed, plural, =1{1 failed} other{{failed} failed}}", - "storeCategoryMetadata": "Metadata", - "@trackLyricsEmbedded": { - "description": "Snackbar - lyrics saved to file" - }, - "editMetadataFieldDiscTotal": "Disc Total", - "tutorialLibraryTip1": "Manage active, pending, and completed downloads from the Library queue", - "playlistsCount": "{count, plural, =1{1 playlist} other{{count} playlists}}", - "downloadCreatePlaylistSourceFolderDisabled": "All tracks saved directly to download folder", - "@downloadFallbackExtensionsSubtitle": { - "description": "Subtitle for fallback extensions item" - }, - "libraryFilterLocal": "Локальные", - "tutorialDownloadInProgressSemantics": "Download in progress", - "searchSortDurationLong": "Продолжительность (наибольшая)", - "@appearanceLanguage": { - "description": "Language setting title" - }, - "libraryAbout": "О локальной библиотеке", - "@libraryAbout": { - "description": "Section header for about info" - }, - "cueSplitNoAudioFile": "Аудиофайл для этого CUE sheet не найден", - "notifUpdateReadyBody": "SpotiFLAC Mobile v{version} downloaded. Tap to install.", - "appearanceSelectAccentColor": "Select accent color {hex}", - "@homeAlbumInfoUnavailable": { - "description": "Snackbar when album info cannot be loaded" - }, - "trackReplayGain": "Пересканировать ReplayGain", - "downloadSeparateSinglesFolder": "Отдельная папка для синглов", - "trackAlbumArtist": "Исполнитель альбома", - "qualityFlacLossless": "FLAC Lossless", - "@extensionVerificationHelpMessageWaiting": { - "description": "Dialog message when verification may need manual browser help" - }, - "tutorialSettingsTitle": "Настройте приложение под себя", - "extensionActionFailed": "Action failed", - "@storeEmptyNoResults": { - "description": "Message when search/filter returns no results" - }, - "downloadAppleQqMultiPerson": "Apple / QQ: Multi-Person Lyrics", - "downloadFallbackExtensionsSubtitle": "Choose which extensions can be used as fallback", - "storeExtensionsCount": "{count} {count, plural, =1{extension} other{extensions}}", - "trackCoverNoEmbeddedArt": "No embedded album art found", - "@trackCoverNoEmbeddedArt": { - "description": "Message shown when a track file has no embedded cover art" - }, - "snackbarExtensionUpdatedVersion": "{extensionName} updated to v{version}", - "setupStorageAccessMessageAndroid11": "Для Android 11+ требуется разрешение \"Доступ ко всем файлам\" для сохранения файлов в выбранную вами папку загрузки.", - "notifDownloadsFinished": "Загрузка завершена ({completed} завершено, {failed} не удалось)", - "notifLibraryScanProgressWithTotal": "{scanned}/{total} files • {percentage}%", - "optionsPrimaryProvider": "Основной провайдер", - "@optionsPrimaryProvider": { - "description": "Main search provider setting" - }, - "logIssueTrackNotFoundSuggestion": "The track may not be available in lossless quality", - "collectionAddedToLoved": "\"{trackName}\" добавлен в Любимые", - "albumFolderArtistAlbumFlat": "Artist / Album (Singles flat)", - "homeAlbumInfoUnavailable": "Album info not available", - "settingsLyrics": "Lyrics", - "extensionVerificationBrowserExternal": "External", - "regionCountryIN": "India", - "extensionHealthUnknown": "Unknown", - "backupContentsWishlist": "{count} wishlist {count, plural, =1{track} other{tracks}}", - "settingsAutoExportFailed": "Автоэкспорт неудачных загрузок", - "logFilterSection": "Фильтр", - "dialogDiscardChanges": "Отменить изменения?", - "@qualityHiResFlacSubtitle": { - "description": "Technical spec for hi-res" - }, - "searchTracks": "Tracks", - "searchAlbums": "Альбомы", - "trackConvertFormat": "Переконвертировать формат", - "metadataProviderPriorityTitle": "Приоритет метаданных", - "libraryFolderHint": "Нажмите, чтобы выбрать папку", - "downloadedAlbumDeleteMessage": "Delete {count} {count, plural, =1{track} other{tracks}} from this album?\n\nThis will also delete the files from storage.", - "@downloadedAlbumDeleteMessage": { - "description": "Delete confirmation with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "trackAlbum": "Альбом", - "updateAvailable": "Доступно обновление", - "optionsEmbedLyrics": "Вписать текст песни", - "trackReEnrichProgress": "Обновление метаданных...", - "@trackReEnrichProgress": { - "description": "Snackbar while re-enriching metadata" - }, - "audioAnalysisPeak": "Peak", - "@audioAnalysisPeak": { - "description": "Peak amplitude metric label" - }, - "optionsExtensionStoreSubtitle": "Показывать вкладку репозитория в навигации", - "settingsTitle": "Настройки", - "@settingsAbout": { - "description": "Settings section - app info" - }, - "cacheExploreFeed": "Просмотреть кэш ленты", - "@dialogDownloadPlaylistsMessage": { - "description": "Dialog message for bulk playlist download confirmation", - "placeholders": { - "trackCount": { - "type": "int" - }, - "playlistCount": { - "type": "int" - } - } - }, - "downloadedAlbumSelectedCount": "{count} выбрано", - "downloadAskQualitySubtitle": "Показывать выбор качества для каждого скачивания", - "filenameShowAdvancedTags": "Показать расширенные теги", - "@filenameShowAdvancedTags": { - "description": "Toggle label for showing advanced filename tags" - }, - "@editMetadataFieldComment": { - "description": "Label for comment field in the edit metadata sheet" - }, - "downloadFallbackExtensions": "Fallback Extensions", - "downloadAlbumArtistMetadataFull": "Album Artist metadata: Full", - "cacheLibraryCover": "Кэш обложек библиотеки", - "actionShuffle": "Shuffle", - "backupCreated": "Backup created", - "downloadLossyAacSubtitle": "Best mobile compatibility, M4A container", - "actionCreate": "Создать", - "snackbarAddedToQueueGeneric": "Added to queue", - "downloadedAlbumDownloadedCount": "{count} скачано", - "snackbarLoadingCueSheet": "Загрузка CUE разметки...", - "@trackCoverClearSelected": { - "description": "Tooltip for clearing the newly selected cover art" - }, - "aboutOriginalCreator": "Создатель оригинального SpotiFLAC", - "a11yTrackByArtist": "{trackName} by {artistName}", - "audioAnalysisDynamicRange": "Динамический диапазон", - "homeChangeSearchProviderTooltip": "Change search provider", - "loadingSharedLink": "Загрузка общедоступной ссылки...", - "lyricsModeEmbedSubtitle": "Встроить текст в метаданные FLAC", - "setupNotificationBackgroundDescription": "Получайте уведомления о ходе и завершении загрузки. Это поможет вам отслеживать загрузки, когда приложение находится в фоновом режиме.", - "snackbarViewQueue": "Просмотр очереди", - "@audioAnalysisDuration": { - "description": "Duration metric label" - }, - "downloadSeparateSinglesDisabled": "Singles and albums saved in the same folder", - "backupRestored": "Backup restored successfully", - "trackConvertConfirmMessageLosslessCapped": "Convert from {sourceFormat} to {targetFormat} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original file will be deleted after conversion.", - "@trackConvertConfirmMessageLosslessCapped": { - "description": "Confirmation dialog message for capped lossless conversion of a single file", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "quality": { - "type": "String" - } - } - }, - "discographySelectAlbumsSubtitle": "Выберите конкретные альбомы или синглы", - "@discographySelectAlbumsSubtitle": { - "description": "Subtitle for select albums option" - }, - "backupImportSectionDescription": "Pick a backup file to restore your data. This replaces the current settings, history and library on this device.", - "errorUrlFetchFailed": "Не удалось загрузить контент по этой ссылке. Пожалуйста, попробуйте еще раз.", - "lyricsProviderLyricsPlusDesc": "Word-by-word karaoke lyrics (Apple/Musixmatch/Spotify/QQ, via proxy)", - "dialogSave": "Сохранить", - "trackReEnrichSearching": "Поиск метаданных в сети...", - "regionCountryUS": "United States", - "audioAnalysisDescription": "Verify lossless quality with spectrum analysis", - "downloadFilenameFormat": "Формат имени файла", - "cueSplitTitle": "Разделить CUE Sheet", - "settingsAppSubtitle": "Updates, data, extension repo, debug", - "@settingsAppSubtitle": { - "description": "Subtitle for app settings" - }, - "@setupPermissionRequiredMessage": { - "description": "Generic permission required message", - "placeholders": { - "permissionType": { - "type": "String" - } - } - }, - "errorMissingExtensionSource": "Невозможно загрузить {item}: отсутствует источник расширения", - "albumFolderAlbumOnlySubtitle": "Альбомы/Название Альбома/", - "logIssueTrackNotFoundLabel": "TRACK NOT FOUND", - "extensionVerificationHelpTitleManual": "Open verification manually", - "dialogDiscard": "Отменить", - "storageModeSaf": "Custom Folder (SAF)", - "errorRateLimited": "Слишком много запросов", - "downloadSelectQuality": "Выбор качества", - "dialogDownloadPlaylistsMessage": "Download {trackCount} {trackCount, plural, =1{track} other{tracks}} from {playlistCount} {playlistCount, plural, =1{playlist} other{playlists}}?", - "collectionFoldersTitle": "Мои папки", - "progressFetchingMetadata": "Получение метаданных... {current}/{total}", - "settingsDownloadNetworkAny": "WiFi и Мобильная сеть", - "audioAnalysisDuration": "Продолжительность", - "audioAnalysisAnalyzing": "Analyzing audio...", - "extensionVerificationHelpMessageWaiting": "If the browser did not open, or verification finished but did not return to SpotiFLAC Mobile, open this link again or copy it manually.", - "editMetadataFieldDiscNum": "Диск #", - "@editMetadataFieldDiscNum": { - "description": "Chip label for disc number field in auto-fill selector" - }, - "@noTracksFoundForAlbum": { - "description": "Empty state message when an album has no tracks" - }, - "previewPlay": "Предпросмотр проигрывания", - "setupPermissionRequiredMessage": "Для оптимальной работы требуется разрешение {permissionType}. Вы можете изменить это позже в настройках.", - "aboutVersion": "Версия", - "qualityHiResFlacSubtitle": "24-бит / до 96кГц", - "audioAnalysisSamples": "Сэмплы", - "libraryFilterQualityHiRes": "Hi-Res (24 бит)", - "sectionMetadataProviders": "Providers", - "@sectionMetadataProviders": { - "description": "Settings section header for metadata providers" - }, - "trackCopyright": "Авторские права", - "libraryForceFullScanSubtitle": "Пересканировать все файлы, игнорировать кэш", - "trackCopiedToClipboard": "Скопировано в буфер обмена", - "optionsEmbedMetadata": "Embed Metadata", - "collectionAddedTracksToPlaylistWithExisting": "Added {count} {count, plural, =1{track} other{tracks}} to {playlistName} ({alreadyCount} already in playlist)", - "@collectionAddedTracksToPlaylistWithExisting": { - "description": "Snackbar after adding multiple tracks to a playlist when some were already present", - "placeholders": { - "count": { - "type": "int" - }, - "playlistName": { - "type": "String" - }, - "alreadyCount": { - "type": "int" - } - } - }, - "storeCategoryIntegration": "Integration", - "storeClearFilters": "Очистить фильтры", - "navSettings": "Настройки", - "@homeRecent": { - "description": "Section header for recent searches" - }, - "sectionApp": "Приложение", - "@sectionLanguage": { - "description": "Settings section header for language" - }, - "downloadFilterContributingDisabled": "Full Album Artist string used", - "albumFolderArtistAlbumSinglesSubtitle": "Исполнитель/Альбом и Исполнитель/Сингл/", - "collectionDeletePlaylistsMessage": "Delete {count} {count, plural, =1{playlist} other{playlists}}?", - "lyricsProvidersSaved": "Приоритетный провайдер текстов песен сохранен", - "@trackReplayGainFailed": { - "description": "Snackbar message when ReplayGain scan/write fails" - }, - "trackTrackName": "Название", - "homeRecent": "Недавние", - "recentEmpty": "Нет недавних элементов", - "cacheClearAll": "Очистить весь кэш", - "trackReEnrichFieldReleaseInfo": "Дата и ISRC", - "regionCountryMX": "Mexico", - "a11yOpenAlbumByArtistTrackCount": "Open album {albumName} by {artistName}, {trackCount} tracks", - "editMetadataFieldAlbum": "Альбом", - "settingsAbout": "О программе", - "libraryFilterTitle": "Фильтры", - "cleanupOrphanedDownloadsResult": "Удалено {count} утерянных записей из истории", - "extensionHooksAvailable": "Доступно {count} хуков(ов)", - "backupContentsSettings": "App settings", - "trackLyricsEmbedded": "Текст успешно добавлен", - "optionsUpdateChannelPreview": "Предварительные версии", - "collectionAddedToFavoriteArtists": "\"{artistName}\" добавлен в избранные исполнители", - "libraryForceFullScan": "Полное сканирование", - "snackbarProviderPrioritySaved": "Приоритет провайдера сохранён", - "collectionFavoriteArtistsEmptySubtitle": "Нажмите на сердце на странице исполнителя, чтобы сохранить его здесь", - "libraryBuiltInPlayerInfo": "The built-in player is a preview tool for checking local tracks quickly. Use an external music player for actual listening.", - "extensionServiceStatus": "Service Status", - "dateWeeksAgo": "{count} недель назад", - "historyFilterSingles": "Синглы", - "tutorialSettingsTip2": "Set quality, concurrency, filenames, and conversion preferences", - "trackLyricsSaved": "Текст песни сохранен в {fileName}", - "cacheClearAllConfirmTitle": "Очистить весь кэш?", - "noTracksFoundForAlbum": "No tracks found for this album", - "sectionLanguage": "Язык", - "@logIssueTrackNotFoundDescription": { - "description": "Diagnostic badge description when a track is unavailable" - }, - "setupSelectFolder": "Выбрать папку", - "dateYesterday": "Вчера", - "collectionAddToPlaylist": "Добавить в плейлист", - "snackbarUnsupportedAudioFormat": "Неподдерживаемый аудио формат", - "libraryScanCancelled": "Scan cancelled", - "appearanceLanguage": "Язык приложения", - "extensionsTitle": "Расширения", - "dialogImportPlaylistMessage": "Found {count} tracks in the playlist file. Add them to download queue?", - "permissionNotification": "Notification", - "notifUpdateReady": "Обновление готово", - "lyricsModeDescription": "Выберите как сохранить тексты песен при скачивании", - "downloadFrom": "Скачивать из", - "collectionWishlistEmptySubtitle": "Нажмите + на треках, чтобы сохранить то, что вы хотите скачать позже", - "cueSplitSplitting": "Разделение CUE sheet... ({current}/{total})", - "trackOptionAddToWishlist": "Добавить в список желаний", - "settingsBackup": "Backup & Restore", - "aboutPaxsenixSubtitle": "Lyrics proxy for Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou, and Genius", - "notifDownloadCompleteCount": "Загрузка завершена ({completed}/{total})", - "extensionsNoDownloadProvider": "Нет расширений с провайдером загрузки", - "libraryFilterSortGenreAsc": "Жанр (А-Я)", - "trackReplayGainFailed": "Не удалось добавить теги ReplayGain", "collectionPlaylistRemoveCover": "Удалить обложку", - "storeEmptyNoResults": "Расширения не найдены", - "logIssueTrackNotFoundDescription": "Some tracks could not be found on download services", - "editMetadataFieldComment": "Comment", - "settingsMetadata": "Metadata", - "settingsCache": "Хранилище и кэш", - "providerPriorityFallbackExtensionsHint": "Здесь перечислены только включенные расширения с возможностями поставщика загрузок.", - "libraryFilterAll": "Все", - "notifDownloadingUpdate": "Downloading SpotiFLAC Mobile v{version}", - "extensionsProviderPrioritySection": "Приоритет провайдера", - "storeChangeRepoTooltip": "Изменить репозиторий", - "snackbarFailedToInstall": "Не удалось установить расширение", - "libraryScanSubtitle": "Сканировать аудио файлы", - "snackbarExtensionInstalled": "{extensionName} установлено.", - "setupOpenSettings": "Открыть настройки", - "extensionsInstalledSection": "Установленные расширения", - "aboutLinks": "Ссылки", - "trackCoverClearSelected": "Clear selected cover", - "libraryAutoScanWeekly": "Еженедельно", - "downloadMusixmatchLanguageAuto": "Auto (original language)", - "optionsDefaultSearchTab": "Вкладка поиска по умолчанию", - "downloadPrimaryArtistOnlyOn": "Primary only: On", - "folderOrganizationDescription": "Сортировать скачанные файлы по папкам", - "@folderOrganizationDescription": { - "description": "Folder organization sheet description" + "@collectionPlaylistRemoveCover": { + "description": "Bottom sheet action to remove custom cover image from a playlist" }, - "lyricsModeEmbed": "Вписать в файл", - "trackReEnrichFfmpegFailed": "Ошибка встраивания метаданных FFmpeg", - "@extensionsSearchProviderDescription": { - "description": "Search provider setting description" - }, - "libraryFilterQualityLossy": "С потерями", - "actionPause": "Пауза", - "csvImportTracks": "{count} трек(-ов) из CSV", - "actionGo": "Go", - "sectionDebug": "Отладка", - "editMetadataFieldDate": "Дата", - "timeHoursAgo": "{count, plural, =1{1 hour ago} other{{count} hours ago}}", - "sectionPerformance": "Производительность", - "extensionsDownloadPrioritySubtitle": "Установка порядок сервисов скачивания", - "cacheAppDirectoryDesc": "HTTP-ответы, данные WebView и другие временные данные приложения.", - "sectionData": "Данные", - "notifFinalizingTrack": "Finalizing {trackName}", - "snackbarFileNotFound": "Файл не найден", - "extensionQualityOptions": "Параметры качества", - "extensionVerificationBrowserSubtitleExternal": "Open challenges in the default browser first", - "backupInvalidFile": "This file is not a valid SpotiFLAC backup", - "storeRepoDialogTitle": "Репозиторий расширения", - "extensionsSearchProviderDescription": "Выберите, какой сервис использовать для поиска треков", - "albumFolderAlbumOnly": "Только альбом", - "nowPlayingOpenInExternalPlayer": "Open in external player", - "cueSplitButton": "Разделить на Треки", - "updateRequiredTitle": "Требуется обновление", - "@updateRequiredTitle": { - "description": "Title of the mandatory update dialog shown when the installed version is too old" - }, - "updateRequiredNotice": "Эта версия {count} больше не поддерживается. Обновите, чтобы продолжить использовать приложение.", - "@updateRequiredNotice": { - "description": "Subtitle of the mandatory update dialog; explains why the dialog cannot be dismissed", + "selectionShareCount": "Отправить {count} {count, plural, one {трек} few {трека} many {треков} =1{трек} other{треков}}", + "@selectionShareCount": { + "description": "Share button text with count in selection mode", "placeholders": { "count": { "type": "int" } } }, - "appearanceHeroAnimations": "Hero animations", - "@appearanceHeroAnimations": { - "description": "Toggle for shared-element (Hero) transitions" + "selectionShareNoFiles": "Файлы, доступные для совместного доступа, не найдены", + "@selectionShareNoFiles": { + "description": "Snackbar when no selected files exist on disk" }, - "appearanceHeroAnimationsSubtitle": "Fly covers between screens, e.g. when opening the player", - "@appearanceHeroAnimationsSubtitle": { - "description": "Subtitle for the Hero animations toggle" - }, - "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", + "selectionConvertCount": "Конвертировать {count} {count, plural, one {трек} few {трека} many {треков} =1{трек} other{треков}}", + "@selectionConvertCount": { + "description": "Convert button text with count in selection mode", "placeholders": { "count": { "type": "int" } } }, - "libraryPlaybackNormalization": "Volume normalization", - "@libraryPlaybackNormalization": { - "description": "Toggle title for ReplayGain playback normalization in the built-in player" + "selectionConvertNoConvertible": "Не выбраны конвертируемые треки", + "@selectionConvertNoConvertible": { + "description": "Snackbar when no selected tracks support conversion" }, - "libraryPlaybackNormalizationSubtitle": "Even out loudness between tracks using their ReplayGain or R128 tags, when present", - "@libraryPlaybackNormalizationSubtitle": { - "description": "Subtitle explaining playback volume normalization" + "selectionBatchConvertConfirmTitle": "Пакетная конвертация", + "@selectionBatchConvertConfirmTitle": { + "description": "Confirmation dialog title for batch conversion" }, - "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" - }, - "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" - }, - "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", + "selectionBatchConvertConfirmMessage": "Преобразовать {count} {count, plural, =1{track} other{tracks}} в {format} с {bitrate}?", + "@selectionBatchConvertConfirmMessage": { + "description": "Confirmation dialog message for batch conversion", "placeholders": { - "sourceFormat": { + "count": { + "type": "int" + }, + "format": { "type": "String" }, - "targetFormat": { + "bitrate": { + "type": "String" + } + } + }, + "selectionBatchConvertConfirmMessageLossless": "Конвертировать {count} {count, plural, =1{track} other{tracks}} в {format}? (Без потери качества)\n\nОригинальные файлы будут удалены после конвертации.", + "@selectionBatchConvertConfirmMessageLossless": { + "description": "Confirmation dialog message for lossless batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { "type": "String" } } @@ -5960,6 +3921,399 @@ } } }, + "selectionBatchConvertSuccess": "Конвертировано {success} треков {total} в {format}", + "@selectionBatchConvertSuccess": { + "description": "Snackbar after batch conversion completes", + "placeholders": { + "success": { + "type": "int" + }, + "total": { + "type": "int" + }, + "format": { + "type": "String" + } + } + }, + "downloadedAlbumDownloadedCount": "{count} скачано", + "@downloadedAlbumDownloadedCount": { + "description": "Downloaded tracks count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Папка названная в честь тега Альбома Артиста", + "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { + "description": "Subtitle when album artist is used for folder names" + }, + "downloadUseAlbumArtistForFoldersTrackSubtitle": "Папка названная в честь тега Трека Артиста", + "@downloadUseAlbumArtistForFoldersTrackSubtitle": { + "description": "Subtitle when track artist is used for folder names" + }, + "lyricsProvidersTitle": "Приоритет к поставщику текста песни", + "@lyricsProvidersTitle": { + "description": "Settings item title for lyrics provider order" + }, + "lyricsProvidersDescription": "Включайте, выключайте, переупорядочивайте источники текстов. Поставщики связаны сверху вниз пока проводится поиск текста.", + "@lyricsProvidersDescription": { + "description": "Description on the lyrics provider priority page" + }, + "lyricsProvidersInfoText": "Extension lyrics providers run before built-in lyrics providers. At least one provider must remain enabled.", + "@lyricsProvidersInfoText": { + "description": "Info tip on lyrics provider priority page" + }, + "lyricsProvidersEnabledSection": "Включено ({count})", + "@lyricsProvidersEnabledSection": { + "description": "Section header for enabled providers", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "lyricsProvidersDisabledSection": "Выключено ({count})", + "@lyricsProvidersDisabledSection": { + "description": "Section header for disabled providers", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "lyricsProvidersAtLeastOne": "По крайней мере один провайдер должен оставаться включенным", + "@lyricsProvidersAtLeastOne": { + "description": "Snackbar when user tries to disable the last enabled provider" + }, + "lyricsProvidersSaved": "Приоритетный провайдер текстов песен сохранен", + "@lyricsProvidersSaved": { + "description": "Snackbar after saving lyrics provider priority" + }, + "lyricsProvidersDiscardContent": "У вас есть несохранённые изменения, которые будут потеряны.", + "@lyricsProvidersDiscardContent": { + "description": "Body text of the discard-changes dialog on lyrics provider page" + }, + "lyricsProviderLrclibDesc": "Open-source synced lyrics database", + "@lyricsProviderLrclibDesc": { + "description": "Description for LRCLIB provider" + }, + "lyricsProviderNeteaseDesc": "NetEase Cloud Music (хорош для азиатских песен)", + "@lyricsProviderNeteaseDesc": { + "description": "Description for Netease provider" + }, + "lyricsProviderMusixmatchDesc": "Крупнейшая база данных текстов песен (мультиязычная)", + "@lyricsProviderMusixmatchDesc": { + "description": "Description for Musixmatch provider" + }, + "lyricsProviderAppleMusicDesc": "Word-by-word synced lyrics (via proxy)", + "@lyricsProviderAppleMusicDesc": { + "description": "Description for Apple Music provider" + }, + "lyricsProviderQqMusicDesc": "QQ Музыка (хорошо подходит для китайских песен, прямой API)", + "@lyricsProviderQqMusicDesc": { + "description": "Description for QQ Music provider" + }, + "lyricsProviderLyricsPlusDesc": "Word-by-word karaoke lyrics (Apple/Musixmatch/Spotify/QQ, via proxy)", + "@lyricsProviderLyricsPlusDesc": { + "description": "Description for LyricsPlus provider" + }, + "lyricsProviderExtensionDesc": "Поставщик расширений", + "@lyricsProviderExtensionDesc": { + "description": "Generic description for extension-based lyrics providers" + }, + "safMigrationTitle": "Требуется обновление хранилища", + "@safMigrationTitle": { + "description": "Title of SAF migration dialog" + }, + "safMigrationMessage1": "Теперь SpotiFLAC использует Android Storage Access Framework (SAF) для загрузки файлов. Это устраняет ошибки «доступ запрещен» на устройствах с Android 10 и выше.", + "@safMigrationMessage1": { + "description": "First paragraph of SAF migration dialog" + }, + "safMigrationMessage2": "Пожалуйста, выберите папку для загрузки заново, чтобы перейти на новую систему хранения.", + "@safMigrationMessage2": { + "description": "Second paragraph of SAF migration dialog" + }, + "safMigrationSuccess": "Папка загрузок обновлена в SAF режим", + "@safMigrationSuccess": { + "description": "Snackbar after successfully migrating to SAF" + }, + "settingsDonate": "Поддержка разработки", + "@settingsDonate": { + "description": "Settings menu item - donate page" + }, + "settingsDonateSubtitle": "Купить разработчику кофе", + "@settingsDonateSubtitle": { + "description": "Subtitle for donate menu item" + }, + "settingsBackup": "Резервирование и восстановление", + "@settingsBackup": { + "description": "Settings menu item - backup and restore page" + }, + "settingsBackupSubtitle": "Переместить свою библиотеку, историю и настройки на новое устройство", + "@settingsBackupSubtitle": { + "description": "Subtitle for backup and restore settings item" + }, + "backupTitle": "Резервирование и восстановление", + "@backupTitle": { + "description": "App bar title for the backup and restore page" + }, + "backupExportSectionTitle": "Создать резервную копию", + "@backupExportSectionTitle": { + "description": "Section title for the export/backup card" + }, + "backupExportSectionDescription": "Save your settings, download history, liked tracks, wishlist, favorite artists and playlists into a single file you can keep or move to another phone.", + "@backupExportSectionDescription": { + "description": "Description of what a backup contains" + }, + "backupExportButton": "Создать файл резервной копии", + "@backupExportButton": { + "description": "Button to create and share a backup file" + }, + "backupImportSectionTitle": "Восстановить резервную копию", + "@backupImportSectionTitle": { + "description": "Section title for the import/restore card" + }, + "backupImportSectionDescription": "Выберите файл резервной копии для восстановления данных. Это заменит текущие настройки, историю и библиотеку на этом устройстве.", + "@backupImportSectionDescription": { + "description": "Description for the restore action" + }, + "backupImportButton": "Выберите файл резервной копии", + "@backupImportButton": { + "description": "Button to pick a backup file to restore" + }, + "backupCreated": "Резервная копия создана", + "@backupCreated": { + "description": "Snackbar after a backup file is created" + }, + "backupCreateFailed": "Не удалось создать резервную копию", + "@backupCreateFailed": { + "description": "Snackbar when backup creation fails" + }, + "backupRestoreConfirmTitle": "Восстановить эту резервную копию?", + "@backupRestoreConfirmTitle": { + "description": "Confirmation dialog title before restoring a backup" + }, + "backupRestoreConfirmMessage": "This will replace your current settings, download history, liked tracks, wishlist and playlists with the contents of the backup. This cannot be undone.", + "@backupRestoreConfirmMessage": { + "description": "Confirmation dialog message before restoring a backup" + }, + "backupRestoreConfirmButton": "Восстановить", + "@backupRestoreConfirmButton": { + "description": "Confirm button to proceed with restore" + }, + "backupRestored": "Резервная копия успешно восстановлена", + "@backupRestored": { + "description": "Snackbar after a successful restore" + }, + "backupRestoreFailed": "Не удалось восстановить резервную копию", + "@backupRestoreFailed": { + "description": "Snackbar when restore fails" + }, + "backupInvalidFile": "Этот файл не является резервной копией SpotiFLAC", + "@backupInvalidFile": { + "description": "Snackbar when the chosen file is not a valid backup" + }, + "backupRestoreRestartHint": "Перезапустите приложение, чтобы убедиться, что все изменения применяются.", + "@backupRestoreRestartHint": { + "description": "Hint shown after restoring that an app restart is recommended" + }, + "backupContentsTitle": "Содержимое резервной копии", + "@backupContentsTitle": { + "description": "Header above the list summarizing what the backup contains" + }, + "backupSettingsOnly": "Только настройки", + "backupSelectHistory": "История загрузок", + "backupSelectCollections": "Коллекции библиотеки", + "backupSelectCollectionsDescription": "Любимые треки, список желаний, любимые исполнители, плейлисты и обложки плейлистов.", + "backupSelectExtensions": "Расширения и их настройки", + "backupSelectedExportDescription": "Сохранить выбранные категории в файл резервной копии. Аудио файлы не включены.", + "backupSelectAtLeastOne": "Выберите хотя бы одну категорию для создания резервной копии.", + "backupSelectedRestoreMessage": "Only the categories listed below will be restored. Categories not included in this backup will stay unchanged. Restoring can replace existing data and cannot be undone.", + "backupContentsSettings": "Настройки приложения", + "@backupContentsSettings": { + "description": "Backup contents row label for settings" + }, + "backupContentsHistory": "{count} {count, plural, =1{элемент истории} few{элемента истории} other{элементов истории}}", + "@backupContentsHistory": { + "description": "Backup contents row for history count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsLiked": "{count} {count, plural, =1{понравившийся трек} few{понравившихся трека} other{понравившихся треков}}", + "@backupContentsLiked": { + "description": "Backup contents row for liked tracks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsWishlist": "{count} {count, plural, =1{трек из списка желаний} few{трека из списка желаний} other{треков из списка желаний}}", + "@backupContentsWishlist": { + "description": "Backup contents row for wishlist tracks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsPlaylists": "{count, plural, one{{count} плейлист} few{{count} плейлиста} other{{count} плейлистов}}", + "@backupContentsPlaylists": { + "description": "Backup contents row for playlist count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsArtists": "{count, plural, one{{count} любимый исполнитель} few{{count} любимых исполнителя} other{{count} любимых исполнителей}}", + "@backupContentsArtists": { + "description": "Backup contents row for favorite artists count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsExtensions": "{count, plural, one{{count} расширение} few{{count} расширения} other{{count} расширений}}", + "@backupContentsExtensions": { + "description": "Backup contents row for installed extensions count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupIncludeSecrets": "Include extension credentials", + "@backupIncludeSecrets": { + "description": "Toggle to include secret extension settings (tokens, API keys) in the backup" + }, + "backupIncludeSecretsDescription": "Tokens and API keys from extensions will be saved into the backup file. Keep the file private. When off, you re-enter them after restoring.", + "@backupIncludeSecretsDescription": { + "description": "Explanation for the include-credentials toggle" + }, + "backupExtensionsRestoreFailed": "Не удалось переустановить {count} {count, plural, =1{расширение} few{расширения} other{расширений}}. Установите их вручную из репозитория.", + "@backupExtensionsRestoreFailed": { + "description": "Snackbar/hint when some extensions failed to reinstall during restore", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "tooltipLoveAll": "Love All", + "@tooltipLoveAll": { + "description": "Tooltip for the Love All button on album/playlist screens" + }, + "tooltipAddToPlaylist": "Добавить в плейлист", + "@tooltipAddToPlaylist": { + "description": "Tooltip for the Add to Playlist button" + }, + "snackbarRemovedTracksFromLoved": "Removed {count} tracks from Loved", + "@snackbarRemovedTracksFromLoved": { + "description": "Snackbar after removing multiple tracks from Loved folder", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarAddedTracksToLoved": "Added {count} tracks to Loved", + "@snackbarAddedTracksToLoved": { + "description": "Snackbar after adding multiple tracks to Loved folder", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dialogDownloadAllTitle": "Скачать всё", + "@dialogDownloadAllTitle": { + "description": "Dialog title for bulk download confirmation" + }, + "dialogDownloadAllMessage": "Download {count} tracks?", + "@dialogDownloadAllMessage": { + "description": "Body of the Download All confirmation dialog", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "homeSkipAlreadyDownloaded": "Пропустить уже загруженные треки", + "@homeSkipAlreadyDownloaded": { + "description": "Checkbox label in import dialog to skip already-downloaded songs" + }, + "homeGoToAlbum": "Перейти к альбому", + "@homeGoToAlbum": { + "description": "Context menu item to navigate to the album page" + }, + "homeAlbumInfoUnavailable": "Информация об альбоме недоступна", + "@homeAlbumInfoUnavailable": { + "description": "Snackbar when album info cannot be loaded" + }, + "snackbarLoadingCueSheet": "Загрузка CUE разметки...", + "@snackbarLoadingCueSheet": { + "description": "Snackbar while loading a CUE sheet file" + }, + "snackbarMetadataSaved": "Метаданные успешно сохранены", + "@snackbarMetadataSaved": { + "description": "Snackbar after successfully saving track metadata" + }, + "snackbarFailedToEmbedLyrics": "Не удалось встроить текст", + "@snackbarFailedToEmbedLyrics": { + "description": "Snackbar when lyrics embedding fails" + }, + "snackbarFailedToWriteStorage": "Не удалось записать в хранилище", + "@snackbarFailedToWriteStorage": { + "description": "Snackbar when writing metadata back to file fails" + }, + "snackbarError": "Ошибка: {error}", + "@snackbarError": { + "description": "Generic error snackbar with error detail", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "snackbarNoActionDefined": "No action defined for this button", + "@snackbarNoActionDefined": { + "description": "Snackbar when an extension button has no action configured" + }, + "noTracksFoundForAlbum": "No tracks found for this album", + "@noTracksFoundForAlbum": { + "description": "Empty state message when an album has no tracks" + }, + "downloadLocationSubtitle": "Choose where to save your downloaded tracks", + "@downloadLocationSubtitle": { + "description": "Subtitle shown in the download location picker sheet" + }, + "storageAutomaticFolder": "Автоматическая папка", + "storageAutomaticDownloadFolder": "Uses Download/SpotiFLAC when writable, otherwise app storage", + "storageSafRecommended": "Выбрать папку (Рекомендуется)", + "storageDownloadFolderHint": "In the Android folder picker, open Download and select SpotiFLAC. If it does not exist, create it using New folder, then tap Use this folder to grant access.", + "storageModeAppFolder": "Папка приложения (рекомендуется)", + "@storageModeAppFolder": { + "description": "Storage mode option - app-managed folder" + }, + "storageModeAppFolderSubtitle": "Saves to Music/SpotiFLAC by default", + "@storageModeAppFolderSubtitle": { + "description": "Subtitle for app folder storage mode" + }, + "storageModeSaf": "Пользовательская папка (SAF)", + "@storageModeSaf": { + "description": "Storage mode option - Storage Access Framework" + }, + "storageModeSafSubtitle": "Выберите любую папку, включая SD-карту", + "@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" @@ -5968,7 +4322,7 @@ "@downloadFolderAccessLostSubtitle": { "description": "Subtitle of the warning banner shown when the saved SAF folder grant is no longer valid" }, - "downloadFolderReselect": "Re-select folder", + "downloadFolderReselect": "Выбрать папку заново", "@downloadFolderReselect": { "description": "Button that reopens the folder picker to restore download folder access" }, @@ -5980,7 +4334,813 @@ "@downloadErrorFolderAccessLost": { "description": "Error shown on downloads that failed because the iOS download folder bookmark could not be opened" }, - "notifVerificationRequiredTitle": "Verification required", + "downloadFilenameDescription": "Использовать {artist}, {title}, {album}, {track}, {year}, {date}, {disc} в качестве заполнителей.", + "@downloadFilenameDescription": { + "description": "Description shown in filename format editor" + }, + "downloadFilenameInsertTag": "Нажмите для вставки тега:", + "@downloadFilenameInsertTag": { + "description": "Label above filename tag chips" + }, + "downloadSeparateSinglesEnabled": "Singles and EPs saved in a separate folder", + "@downloadSeparateSinglesEnabled": { + "description": "Subtitle when separate singles folder is on" + }, + "downloadSeparateSinglesDisabled": "Singles and albums saved in the same folder", + "@downloadSeparateSinglesDisabled": { + "description": "Subtitle when separate singles folder is off" + }, + "downloadArtistNameFilters": "Фильтры по имени исполнителя", + "@downloadArtistNameFilters": { + "description": "Setting title for artist folder filter options" + }, + "downloadCreatePlaylistSourceFolder": "Playlist Source Folder", + "@downloadCreatePlaylistSourceFolder": { + "description": "Setting to create a subfolder per playlist source" + }, + "downloadCreatePlaylistSourceFolderEnabled": "A subfolder is created for each playlist", + "@downloadCreatePlaylistSourceFolderEnabled": { + "description": "Subtitle when playlist folder is enabled" + }, + "downloadCreatePlaylistSourceFolderDisabled": "All tracks saved directly to download folder", + "@downloadCreatePlaylistSourceFolderDisabled": { + "description": "Subtitle when playlist folder is disabled" + }, + "downloadCreatePlaylistSourceFolderRedundant": "Handled by folder organization setting", + "@downloadCreatePlaylistSourceFolderRedundant": { + "description": "Subtitle when folder organization is already set to playlist" + }, + "downloadSongLinkRegion": "Регион SongLink", + "@downloadSongLinkRegion": { + "description": "Setting for SongLink region used during fallback resolution" + }, + "downloadNetworkCompatibilityMode": "Режим сетевой совместимости", + "@downloadNetworkCompatibilityMode": { + "description": "Setting for legacy TLS/network handling" + }, + "downloadNetworkCompatibilityModeEnabled": "Allowing legacy HTTP endpoints; TLS verification remains enabled", + "@downloadNetworkCompatibilityModeEnabled": { + "description": "Subtitle when network compatibility mode is on" + }, + "downloadNetworkCompatibilityModeDisabled": "Использование стандартных параметров сети", + "@downloadNetworkCompatibilityModeDisabled": { + "description": "Subtitle when network compatibility mode is off" + }, + "downloadAllowLocalNetwork": "Разрешить доступ к локальной сети", + "@downloadAllowLocalNetwork": { + "description": "Setting title for allowing requests to private/local network targets" + }, + "downloadAllowLocalNetworkEnabled": "Requests to local/private addresses are allowed (for local proxy or custom DNS)", + "@downloadAllowLocalNetworkEnabled": { + "description": "Subtitle when allow local network access is on" + }, + "downloadAllowLocalNetworkDisabled": "Local/private addresses are blocked for security", + "@downloadAllowLocalNetworkDisabled": { + "description": "Subtitle when allow local network access is off" + }, + "downloadSelectServiceToEnable": "Select a provider with quality options to enable this option", + "@downloadSelectServiceToEnable": { + "description": "Subtitle when quality picker is disabled due to extension service" + }, + "downloadEmbedLyricsDisabled": "Enable metadata embedding first", + "@downloadEmbedLyricsDisabled": { + "description": "Subtitle when lyrics embedding is blocked by metadata toggle" + }, + "downloadNeteaseIncludeTranslation": "Netease: включение перевода", + "@downloadNeteaseIncludeTranslation": { + "description": "Setting to include translated lyrics from Netease" + }, + "downloadNeteaseIncludeTranslationEnabled": "Chinese translation lines included", + "@downloadNeteaseIncludeTranslationEnabled": { + "description": "Subtitle when Netease translation is on" + }, + "downloadNeteaseIncludeTranslationDisabled": "Original lyrics only", + "@downloadNeteaseIncludeTranslationDisabled": { + "description": "Subtitle when Netease translation is off" + }, + "downloadNeteaseIncludeRomanization": "NetEase: транскрипция латиницей", + "@downloadNeteaseIncludeRomanization": { + "description": "Setting to include romanized lyrics from Netease" + }, + "downloadNeteaseIncludeRomanizationEnabled": "Строки транскрипции включены", + "@downloadNeteaseIncludeRomanizationEnabled": { + "description": "Subtitle when Netease romanization is on" + }, + "downloadNeteaseIncludeRomanizationDisabled": "Без транскрипции", + "@downloadNeteaseIncludeRomanizationDisabled": { + "description": "Subtitle when Netease romanization is off" + }, + "downloadAppleQqMultiPerson": "Apple / QQ: разделение текста по исполнителям", + "@downloadAppleQqMultiPerson": { + "description": "Setting for word-by-word multi-person lyrics from Apple Music and QQ Music" + }, + "downloadAppleQqMultiPersonEnabled": "Speaker labels included for duets and group tracks", + "@downloadAppleQqMultiPersonEnabled": { + "description": "Subtitle when multi-person lyrics is on" + }, + "downloadAppleQqMultiPersonDisabled": "Standard lyrics without speaker labels", + "@downloadAppleQqMultiPersonDisabled": { + "description": "Subtitle when multi-person lyrics is off" + }, + "downloadAppleElrcWordSync": "Apple Music eLRC Word Sync", + "@downloadAppleElrcWordSync": { + "description": "Setting for preserving Apple Music word-by-word eLRC timestamps" + }, + "downloadAppleElrcWordSyncEnabled": "Raw word-by-word timestamps preserved", + "@downloadAppleElrcWordSyncEnabled": { + "description": "Subtitle when Apple Music eLRC word sync is enabled" + }, + "downloadAppleElrcWordSyncDisabled": "Safer line-by-line Apple Music lyrics", + "@downloadAppleElrcWordSyncDisabled": { + "description": "Subtitle when Apple Music eLRC word sync is disabled" + }, + "downloadMusixmatchLanguage": "Язык Musixmatch", + "@downloadMusixmatchLanguage": { + "description": "Setting for Musixmatch lyrics translation language" + }, + "downloadMusixmatchLanguageAuto": "Авто (оригинальный язык)", + "@downloadMusixmatchLanguageAuto": { + "description": "Subtitle when no language is set" + }, + "downloadFilterContributing": "Filter Contributing Artists", + "@downloadFilterContributing": { + "description": "Setting to strip contributing artists from Album Artist folder name" + }, + "downloadFilterContributingEnabled": "Contributing artists removed from Album Artist folder name", + "@downloadFilterContributingEnabled": { + "description": "Subtitle when contributing artist filter is on" + }, + "downloadFilterContributingDisabled": "Full Album Artist string used", + "@downloadFilterContributingDisabled": { + "description": "Subtitle when contributing artist filter is off" + }, + "downloadProvidersNoneEnabled": "No providers enabled", + "@downloadProvidersNoneEnabled": { + "description": "Shown when no lyrics providers are active" + }, + "downloadMusixmatchLanguageCode": "Код языка", + "@downloadMusixmatchLanguageCode": { + "description": "Label for Musixmatch language input field" + }, + "downloadMusixmatchLanguageHint": "e.g. en, de, ja", + "@downloadMusixmatchLanguageHint": { + "description": "Placeholder for Musixmatch language input" + }, + "downloadMusixmatchLanguageDesc": "Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.", + "@downloadMusixmatchLanguageDesc": { + "description": "Description in Musixmatch language picker" + }, + "downloadMusixmatchAuto": "Авто", + "@downloadMusixmatchAuto": { + "description": "Button to clear Musixmatch language (use auto)" + }, + "downloadNetworkAnySubtitle": "Использовать Wi-Fi или мобильные данные", + "@downloadNetworkAnySubtitle": { + "description": "Subtitle for any-network option in picker" + }, + "downloadNetworkWifiOnlySubtitle": "Пауза загрузки на мобильных данных", + "@downloadNetworkWifiOnlySubtitle": { + "description": "Subtitle for WiFi-only option in picker" + }, + "downloadSongLinkRegionDesc": "Region used when resolving track links via SongLink. Choose the country where your streaming services are available.", + "@downloadSongLinkRegionDesc": { + "description": "Description in SongLink region picker" + }, + "snackbarUnsupportedAudioFormat": "Неподдерживаемый аудио формат", + "@snackbarUnsupportedAudioFormat": { + "description": "Snackbar when the audio format is not supported for the requested operation" + }, + "cacheRefresh": "Обновить", + "@cacheRefresh": { + "description": "Tooltip for refresh button on cache management page" + }, + "dialogDownloadPlaylistsMessage": "Скачать {trackCount} {trackCount, plural, =1{трек} few{трека} other{треков}} из {playlistCount} {playlistCount, plural, =1{плейлиста} few{плейлистов} other{плейлистов}}?", + "@dialogDownloadPlaylistsMessage": { + "description": "Dialog message for bulk playlist download confirmation", + "placeholders": { + "trackCount": { + "type": "int" + }, + "playlistCount": { + "type": "int" + } + } + }, + "bulkDownloadPlaylistsButton": "Скачать {count} {count, plural, =1{плейлист} few{плейлиста} other{плейлистов}}", + "@bulkDownloadPlaylistsButton": { + "description": "Button label for bulk downloading selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "bulkDownloadSelectPlaylists": "Select playlists to download", + "@bulkDownloadSelectPlaylists": { + "description": "Button label when no playlists are selected for download" + }, + "snackbarSelectedPlaylistsEmpty": "Selected playlists have no tracks", + "@snackbarSelectedPlaylistsEmpty": { + "description": "Snackbar when selected playlists contain no tracks" + }, + "playlistsCount": "{count, plural, one{{count} плейлист} few{{count} плейлиста} other{{count} плейлистов}}", + "@playlistsCount": { + "description": "Playlist count display", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "editMetadataAutoFill": "Автозаполнение из сети", + "@editMetadataAutoFill": { + "description": "Section title for selective online metadata auto-fill in the edit metadata sheet" + }, + "editMetadataAutoFillDesc": "Выберите расширение метаданных, выберите поля, а затем проверьте их перед применением", + "@editMetadataAutoFillDesc": { + "description": "Description for the auto-fill section" + }, + "editMetadataAutoFillSource": "Источник метаданных", + "@editMetadataAutoFillSource": { + "description": "Label for the metadata extension selector in online auto-fill" + }, + "editMetadataAutoFillSourceAutomatic": "Автоматически (приоритет провайдера)", + "@editMetadataAutoFillSourceAutomatic": { + "description": "Automatic source option that follows configured metadata provider priority" + }, + "editMetadataAutoFillFind": "Найти метаданные", + "@editMetadataAutoFillFind": { + "description": "Button label for finding an online metadata candidate" + }, + "editMetadataAutoFillPreview": "Data from {source}", + "@editMetadataAutoFillPreview": { + "description": "Title for the online metadata preview", + "placeholders": { + "source": { + "type": "String" + } + } + }, + "editMetadataAutoFillCoverAvailable": "Cover artwork available", + "@editMetadataAutoFillCoverAvailable": { + "description": "Preview value when the selected metadata source provides cover artwork" + }, + "editMetadataAutoFillApply": "Apply selected data", + "@editMetadataAutoFillApply": { + "description": "Button label for applying the previewed metadata" + }, + "editMetadataAutoFillDoneFromSource": "Заполнено {count} {count, plural, =1{поле} few{поля} other{полей}} из {source}", + "@editMetadataAutoFillDoneFromSource": { + "description": "Snackbar confirming fields applied from a selected metadata source", + "placeholders": { + "count": { + "type": "int" + }, + "source": { + "type": "String" + } + } + }, + "editMetadataAutoFillFetch": "Получить и заполнить", + "@editMetadataAutoFillFetch": { + "description": "Button label to fetch online metadata and fill selected fields" + }, + "editMetadataAutoFillSearching": "Поиск в сети...", + "@editMetadataAutoFillSearching": { + "description": "Snackbar shown while searching for online metadata" + }, + "editMetadataAutoFillNoResults": "No matching metadata found online", + "@editMetadataAutoFillNoResults": { + "description": "Snackbar when online metadata search returns no results" + }, + "editMetadataAutoFillDone": "Заполнено {count} {count, plural, =1{поле} few{поля} other{полей}} из онлайн-метаданных", + "@editMetadataAutoFillDone": { + "description": "Snackbar confirming how many fields were auto-filled", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "editMetadataAutoFillNoneSelected": "Select at least one field to auto-fill", + "@editMetadataAutoFillNoneSelected": { + "description": "Snackbar when user taps Fetch without selecting any fields" + }, + "editMetadataFieldTitle": "Название", + "@editMetadataFieldTitle": { + "description": "Chip label for title field in auto-fill selector" + }, + "editMetadataFieldArtist": "Исполнитель", + "@editMetadataFieldArtist": { + "description": "Chip label for artist field in auto-fill selector" + }, + "editMetadataFieldAlbum": "Альбом", + "@editMetadataFieldAlbum": { + "description": "Chip label for album field in auto-fill selector" + }, + "editMetadataFieldAlbumArtist": "Исполнитель альбома", + "@editMetadataFieldAlbumArtist": { + "description": "Chip label for album artist field in auto-fill selector" + }, + "editMetadataFieldDate": "Дата", + "@editMetadataFieldDate": { + "description": "Chip label for date field in auto-fill selector" + }, + "editMetadataFieldTrackNum": "Трек #", + "@editMetadataFieldTrackNum": { + "description": "Chip label for track number field in auto-fill selector" + }, + "editMetadataFieldDiscNum": "Диск #", + "@editMetadataFieldDiscNum": { + "description": "Chip label for disc number field in auto-fill selector" + }, + "editMetadataFieldGenre": "Жанр", + "@editMetadataFieldGenre": { + "description": "Chip label for genre field in auto-fill selector" + }, + "editMetadataFieldIsrc": "ISRC", + "@editMetadataFieldIsrc": { + "description": "Chip label for ISRC field in auto-fill selector" + }, + "editMetadataFieldLabel": "Заголовок", + "@editMetadataFieldLabel": { + "description": "Chip label for label field in auto-fill selector" + }, + "editMetadataFieldCopyright": "Авторские права", + "@editMetadataFieldCopyright": { + "description": "Chip label for copyright field in auto-fill selector" + }, + "editMetadataFieldCover": "Обложка", + "@editMetadataFieldCover": { + "description": "Chip label for cover art field in auto-fill selector" + }, + "editMetadataSelectAll": "Все", + "@editMetadataSelectAll": { + "description": "Button to select all fields for auto-fill" + }, + "editMetadataSelectEmpty": "Только пустые", + "@editMetadataSelectEmpty": { + "description": "Button to select only fields that are currently empty" + }, + "queueDownloadingCount": "Скачивание ({count})", + "@queueDownloadingCount": { + "description": "Header for active downloads section with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueFilteringIndicator": "Фильтрация...", + "@queueFilteringIndicator": { + "description": "Shown while filter results are being computed" + }, + "queueTrackCount": "{count, plural, one{{count} трек} few{{count} трека} other{{count} треков}}", + "@queueTrackCount": { + "description": "Track count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueAlbumCount": "{count, plural, one{{count} альбом} few{{count} альбома} other{{count} альбомов}}", + "@queueAlbumCount": { + "description": "Album count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueEmptyAlbums": "No album downloads", + "@queueEmptyAlbums": { + "description": "Empty state title when no album downloads exist" + }, + "queueEmptyAlbumsSubtitle": "Download multiple tracks from an album to see them here", + "@queueEmptyAlbumsSubtitle": { + "description": "Empty state subtitle for album downloads" + }, + "queueEmptySingles": "No single downloads", + "@queueEmptySingles": { + "description": "Empty state title when no single track downloads exist" + }, + "queueEmptySinglesSubtitle": "Single track downloads will appear here", + "@queueEmptySinglesSubtitle": { + "description": "Empty state subtitle for single track downloads" + }, + "queuePlaylistCount": "{count, plural, one{{count} плейлист} few{{count} плейлиста} other{{count} плейлистов}}", + "@queuePlaylistCount": { + "description": "Playlist count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueEmptyPlaylistsSubtitle": "Create a playlist to organize your tracks", + "@queueEmptyPlaylistsSubtitle": { + "description": "Empty state subtitle for the playlists library view" + }, + "libraryDefaultView": "Вид по умолчанию", + "@libraryDefaultView": { + "description": "Setting title - which library view opens when switching to the Library tab" + }, + "libraryDefaultViewLastUsed": "Последнее использованное", + "@libraryDefaultViewLastUsed": { + "description": "Default view option - keep the last used library view" + }, + "queueEmptyHistory": "Нет истории скачиваний", + "@queueEmptyHistory": { + "description": "Empty state title when download history is empty" + }, + "queueEmptyHistorySubtitle": "Скачанные треки появятся здесь", + "@queueEmptyHistorySubtitle": { + "description": "Empty state subtitle for download history" + }, + "selectionAllPlaylistsSelected": "Выбраны все плейлисты", + "@selectionAllPlaylistsSelected": { + "description": "Shown when all playlists are selected in selection mode" + }, + "selectionTapPlaylistsToSelect": "Нажмите на плейлисты для выбора", + "@selectionTapPlaylistsToSelect": { + "description": "Hint shown in playlist selection mode" + }, + "selectionSelectPlaylistsToDelete": "Select playlists to delete", + "@selectionSelectPlaylistsToDelete": { + "description": "Hint shown when no playlists are selected for deletion" + }, + "audioAnalysisTitle": "Анализ качества аудио", + "@audioAnalysisTitle": { + "description": "Title for audio analysis section" + }, + "audioAnalysisDescription": "Проверка на Lossless качество с помощью анализа спектра", + "@audioAnalysisDescription": { + "description": "Description for audio analysis tap-to-analyze prompt" + }, + "audioAnalysisAnalyzing": "Анализ аудио...", + "@audioAnalysisAnalyzing": { + "description": "Loading text while analyzing audio" + }, + "audioAnalysisSampleRate": "Частота дискретизации", + "@audioAnalysisSampleRate": { + "description": "Sample rate metric label" + }, + "audioAnalysisCodec": "Codec", + "@audioAnalysisCodec": { + "description": "Audio codec metric label" + }, + "audioAnalysisContainer": "Контейнер", + "@audioAnalysisContainer": { + "description": "Audio container metric label" + }, + "audioAnalysisDecodedFormat": "Декодированный формат", + "@audioAnalysisDecodedFormat": { + "description": "Decoded sample format metric label" + }, + "audioAnalysisBitDepth": "Разрядность", + "@audioAnalysisBitDepth": { + "description": "Bit depth metric label" + }, + "audioAnalysisChannels": "Каналы", + "@audioAnalysisChannels": { + "description": "Channels metric label" + }, + "audioAnalysisDuration": "Продолжительность", + "@audioAnalysisDuration": { + "description": "Duration metric label" + }, + "audioAnalysisNyquist": "Nyquist", + "@audioAnalysisNyquist": { + "description": "Nyquist frequency metric label" + }, + "audioAnalysisFileSize": "Размер", + "@audioAnalysisFileSize": { + "description": "File size metric label" + }, + "audioAnalysisDynamicRange": "Динамический диапазон", + "@audioAnalysisDynamicRange": { + "description": "Dynamic range metric label" + }, + "audioAnalysisPeak": "Пик", + "@audioAnalysisPeak": { + "description": "Peak amplitude metric label" + }, + "audioAnalysisRms": "RMS", + "@audioAnalysisRms": { + "description": "RMS level metric label" + }, + "audioAnalysisLufs": "LUFS", + "@audioAnalysisLufs": { + "description": "Integrated loudness metric label" + }, + "audioAnalysisTruePeak": "Реальный пик", + "@audioAnalysisTruePeak": { + "description": "True peak metric label" + }, + "audioAnalysisClipping": "Клиппинг", + "@audioAnalysisClipping": { + "description": "Clipping metric label" + }, + "audioAnalysisNoClipping": "Нет клиппинга", + "@audioAnalysisNoClipping": { + "description": "Displayed when no clipped samples were detected" + }, + "audioAnalysisSpectralCutoff": "Спектральный срез", + "@audioAnalysisSpectralCutoff": { + "description": "Estimated spectral cutoff metric label" + }, + "audioAnalysisCutoffNotDetected": "Не обнаружено", + "@audioAnalysisCutoffNotDetected": { + "description": "Displayed when no reliable broadband spectral cutoff can be detected" + }, + "audioAnalysisChannelStats": "Статистика по каналам", + "@audioAnalysisChannelStats": { + "description": "Per-channel audio analysis section label" + }, + "audioAnalysisSamples": "Сэмплы", + "@audioAnalysisSamples": { + "description": "Total samples metric label" + }, + "audioAnalysisRescan": "Переанализировать", + "@audioAnalysisRescan": { + "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" + }, + "downloadRedownloadFakeHiRes": "Re-download fake Hi-Res", + "@downloadRedownloadFakeHiRes": { + "description": "Setting title: automatically replace downloads that measure as fake Hi-Res" + }, + "downloadRedownloadFakeHiResSubtitle": "Off by default. Check Hi-Res downloads and replace only when every audio sample is preserved. Keep the original if verification or processing fails", + "@downloadRedownloadFakeHiResSubtitle": { + "description": "Setting subtitle for the fake Hi-Res re-download toggle" + }, + "hiResCheckVerdictFakeCertain": "Fake Hi-Res", + "@hiResCheckVerdictFakeCertain": { + "description": "Verdict: an exact fingerprint (padded bits or upsampling pattern) proves the file is not real Hi-Res" + }, + "hiResCheckVerdictFakeSuspect": "Possibly a filtered master", + "@hiResCheckVerdictFakeSuspect": { + "description": "Verdict: fails the cutoff test but may be a genuine master low-pass filtered in mastering" + }, + "hiResCheckReasonSampleHold": "Every sample is repeated: upsampled by duplication", + "@hiResCheckReasonSampleHold": { + "description": "Reason: sample-and-hold upsampling detected" + }, + "hiResCheckReasonInterpolation": "In-between samples are linearly interpolated", + "@hiResCheckReasonInterpolation": { + "description": "Reason: linear-interpolation upsampling detected" + }, + "hiResCheckReasonImaging": "Content above 22 kHz mirrors the audible band", + "@hiResCheckReasonImaging": { + "description": "Reason: spectral imaging from upsampling detected" + }, + "hiResCheckMusicContent": "Musical content", + "@hiResCheckMusicContent": { + "description": "Label for the highest frequency that still moves with the music" + }, + "hiResCheckUltrasonicNoise": "Above {cutoff} only steady noise (typical of DSD or analog tape transfers): a {rate} file would hold all the music", + "@hiResCheckUltrasonicNoise": { + "description": "Shown when the ultrasonic content of a Hi-Res file is noise rather than music", + "placeholders": { + "cutoff": { + "type": "String" + }, + "rate": { + "type": "String" + } + } + }, + "hiResCheckTitle": "Hi-Res Authenticity", + "@hiResCheckTitle": { + "description": "Title of the fake Hi-Res check card" + }, + "hiResCheckDescription": "Detect upsampled or bit-padded fake Hi-Res files", + "@hiResCheckDescription": { + "description": "Explains what the Hi-Res authenticity check does" + }, + "hiResCheckRun": "Check", + "@hiResCheckRun": { + "description": "Button that starts the Hi-Res authenticity check" + }, + "hiResCheckChecking": "Checking Hi-Res authenticity...", + "@hiResCheckChecking": { + "description": "Loading text while the Hi-Res check runs" + }, + "hiResCheckVerdictFake": "Likely fake Hi-Res", + "@hiResCheckVerdictFake": { + "description": "Verdict: the file claims Hi-Res but does not measure as it" + }, + "hiResCheckVerdictGenuine": "Measures as genuine Hi-Res", + "@hiResCheckVerdictGenuine": { + "description": "Verdict: no upsampling or padded bit depth found" + }, + "hiResCheckVerdictStandard": "Standard definition, nothing to flag", + "@hiResCheckVerdictStandard": { + "description": "Verdict: neither sample rate nor bit depth claims Hi-Res" + }, + "hiResCheckVerdictInconclusive": "Inconclusive: the analyzed segment is too quiet or short", + "@hiResCheckVerdictInconclusive": { + "description": "Verdict: analysis could not reach a reliable conclusion" + }, + "hiResCheckUnsupported": "Only FLAC and WAV files can be checked", + "@hiResCheckUnsupported": { + "description": "Shown when the file format cannot be decoded by the Hi-Res check" + }, + "hiResCheckCutoff": "Content cutoff", + "@hiResCheckCutoff": { + "description": "Label for the highest frequency with real content" + }, + "hiResCheckBitsInUse": "Bits in use", + "@hiResCheckBitsInUse": { + "description": "Label for effective vs declared bit depth" + }, + "hiResCheckDisclaimer": "The spectrum stops early, but nothing proves it was upsampled: it may be a genuine master low-pass filtered in mastering. It is not replaced automatically.", + "@hiResCheckDisclaimer": { + "description": "Caveat shown under a fake Hi-Res verdict" + }, + "hiResCheckFailed": "Hi-Res check failed: {error}", + "@hiResCheckFailed": { + "description": "Error shown when the Hi-Res check fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "hiResCheckReasonRate": "Declares {sampleRate} but content stops at ~{cutoff}", + "@hiResCheckReasonRate": { + "description": "Reason for a fake verdict caused by upsampling", + "placeholders": { + "sampleRate": { + "type": "String" + }, + "cutoff": { + "type": "String" + } + } + }, + "hiResCheckReasonDepth": "Declares {declared}-bit but only {effective} bits carry data", + "@hiResCheckReasonDepth": { + "description": "Reason for a fake verdict caused by padded bit depth", + "placeholders": { + "declared": { + "type": "int" + }, + "effective": { + "type": "int" + } + } + }, + "audioAnalysisRescanning": "Переанализ аудио...", + "@audioAnalysisRescanning": { + "description": "Loading text while audio is being re-analyzed after an explicit refresh" + }, + "extensionsHomeFeedProvider": "Провайдер домашней ленты", + "@extensionsHomeFeedProvider": { + "description": "Extensions page - label for home feed provider selector" + }, + "extensionsHomeFeedDescription": "Choose which extension provides the home feed on the main screen", + "@extensionsHomeFeedDescription": { + "description": "Extensions page - description for home feed provider picker" + }, + "extensionsHomeFeedAuto": "Авто", + "@extensionsHomeFeedAuto": { + "description": "Label for auto-selected search provider" + }, + "extensionsHomeFeedAutoSubtitle": "Automatically select the best available", + "@extensionsHomeFeedAutoSubtitle": { + "description": "Extensions page - subtitle for auto home feed option" + }, + "extensionsHomeFeedOff": "Выкл", + "@extensionsHomeFeedOff": { + "description": "Extensions page - home feed provider option: off" + }, + "extensionsHomeFeedOffSubtitle": "Do not show the home feed on the main screen", + "@extensionsHomeFeedOffSubtitle": { + "description": "Extensions page - subtitle for off home feed option" + }, + "extensionsHomeFeedUse": "Использовать домашнюю ленту {extensionName}", + "@extensionsHomeFeedUse": { + "description": "Extensions page - subtitle for a specific extension home feed option", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "extensionsNoHomeFeedExtensions": "No extensions with home feed", + "@extensionsNoHomeFeedExtensions": { + "description": "Extensions page - shown when no installed extension has home feed" + }, + "cancelDownloadTitle": "Отменить скачивание?", + "@cancelDownloadTitle": { + "description": "Dialog title when confirming cancellation of an active download" + }, + "cancelDownloadContent": "This will cancel the active download for \"{trackName}\".", + "@cancelDownloadContent": { + "description": "Dialog body when confirming cancellation of an active download", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "cancelDownloadKeep": "Удерживать", + "@cancelDownloadKeep": { + "description": "Dialog button - keep the active download (do not cancel)" + }, + "queueCancelledTitle": "Загрузка отменена", + "@queueCancelledTitle": { + "description": "Dialog title when opening a cancelled queue item" + }, + "queueCancelledMessage": "This download was cancelled. Retry it or remove it from the queue.", + "@queueCancelledMessage": { + "description": "Dialog body when opening a cancelled queue item" + }, + "metadataSaveFailedFfmpeg": "Не удалось сохранить метаданные через FFmpeg", + "@metadataSaveFailedFfmpeg": { + "description": "Snackbar error when FFmpeg fails to write metadata" + }, + "metadataSaveFailedStorage": "Не удалось записать метаданные обратно в хранилище", + "@metadataSaveFailedStorage": { + "description": "Snackbar error when writing metadata file back to storage fails" + }, + "snackbarFolderPickerFailed": "Не удалось открыть выбор папок: {error}", + "@snackbarFolderPickerFailed": { + "description": "Snackbar shown when folder picker fails to open", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "notifDownloadingTrack": "Загрузка {trackName}", + "@notifDownloadingTrack": { + "description": "Notification title while downloading a track", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "notifFinalizingTrack": "Завершение работы с {trackName}", + "@notifFinalizingTrack": { + "description": "Notification title while finalizing (embedding metadata) a track", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "notifEmbeddingMetadata": "Встраивание метаданных...", + "@notifEmbeddingMetadata": { + "description": "Notification body while embedding metadata into a downloaded track" + }, + "notifAlreadyInLibraryCount": "Уже в библиотеке ({completed}/{total})", + "@notifAlreadyInLibraryCount": { + "description": "Notification title when track is already in library, with count", + "placeholders": { + "completed": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "notifAlreadyInLibrary": "Уже в библиотеке", + "@notifAlreadyInLibrary": { + "description": "Notification title when track is already in library" + }, + "notifDownloadCompleteCount": "Загрузка завершена ({completed}/{total})", + "@notifDownloadCompleteCount": { + "description": "Notification title when download is complete, with count", + "placeholders": { + "completed": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "notifDownloadComplete": "Скачивание завершено", + "@notifDownloadComplete": { + "description": "Notification title when a single download is complete" + }, + "notifDownloadsFinished": "Загрузка завершена ({completed} завершено, {failed} не удалось)", + "@notifDownloadsFinished": { + "description": "Notification title when queue finishes with some failures", + "placeholders": { + "completed": { + "type": "int" + }, + "failed": { + "type": "int" + } + } + }, + "notifVerificationRequiredTitle": "Требуется верификация", "@notifVerificationRequiredTitle": { "description": "Notification title shown when a download needs the user to complete a verification challenge but the app is in the background" }, @@ -5988,10 +5148,592 @@ "@notifVerificationRequiredBody": { "description": "Notification body prompting the user to return to the app to solve a verification challenge" }, + "notifAllDownloadsComplete": "Все загрузки завершены", + "@notifAllDownloadsComplete": { + "description": "Notification title when all downloads finish successfully" + }, + "notifTracksDownloadedSuccess": "{count, plural, one{{count} трек успешно скачан} few{{count} трека успешно скачано} other{{count} треков успешно скачано}}", + "@notifTracksDownloadedSuccess": { + "description": "Notification body for queue complete - how many tracks were downloaded", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifDownloadsFinishedBody": "{completed, plural, one{{completed} трек скачан} few{{completed} трека скачано} other{{completed} треков скачано}}, {failed, plural, one{{failed} с ошибкой} few{{failed} с ошибками} other{{failed} с ошибками}}", + "@notifDownloadsFinishedBody": { + "description": "Notification body when queue finishes with failures", + "placeholders": { + "completed": { + "type": "int" + }, + "failed": { + "type": "int" + } + } + }, + "notifDownloadsCanceledTitle": "Загрузка отменена", + "@notifDownloadsCanceledTitle": { + "description": "Notification title when downloads are canceled by the user" + }, + "notifDownloadsCanceledBody": "{count, plural, one{{count} загрузка отменена пользователем} few{{count} загрузки отменены пользователем} other{{count} загрузок отменены пользователем}}", + "@notifDownloadsCanceledBody": { + "description": "Notification body when downloads are canceled by the user", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifScanningLibrary": "Сканирование локальной библиотеки", + "@notifScanningLibrary": { + "description": "Notification title while scanning local library" + }, + "notifLibraryScanProgressWithTotal": "{scanned}/{total} файлов • {percentage}%", + "@notifLibraryScanProgressWithTotal": { + "description": "Notification body for library scan progress when total is known", + "placeholders": { + "scanned": { + "type": "int" + }, + "total": { + "type": "int" + }, + "percentage": { + "type": "int" + } + } + }, + "notifLibraryScanProgressNoTotal": "{scanned} файлов отсканировано • {percentage}%", + "@notifLibraryScanProgressNoTotal": { + "description": "Notification body for library scan progress when total is unknown", + "placeholders": { + "scanned": { + "type": "int" + }, + "percentage": { + "type": "int" + } + } + }, + "notifLibraryScanComplete": "Сканирование библиотеки завершено", + "@notifLibraryScanComplete": { + "description": "Notification title when library scan finishes" + }, + "notifLibraryScanCompleteBody": "{count} треков индексировано", + "@notifLibraryScanCompleteBody": { + "description": "Notification body for library scan complete - number of indexed tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifLibraryScanExcluded": "{count} исключено", + "@notifLibraryScanExcluded": { + "description": "Library scan complete suffix - excluded track count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifLibraryScanErrors": "{count} ошибок", + "@notifLibraryScanErrors": { + "description": "Library scan complete suffix - error count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifLibraryScanFailed": "Ошибка сканирования библиотеки", + "@notifLibraryScanFailed": { + "description": "Notification title when library scan fails" + }, + "notifLibraryScanCancelled": "Сканирование библиотеки отменено", + "@notifLibraryScanCancelled": { + "description": "Notification title when library scan is cancelled by the user" + }, + "notifLibraryScanStopped": "Сканирование остановлено перед завершением.", + "@notifLibraryScanStopped": { + "description": "Notification body when library scan is cancelled" + }, + "notifDownloadingUpdate": "Скачивание SpotiFLAC Mobile v{version}", + "@notifDownloadingUpdate": { + "description": "Notification title while downloading an app update", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "notifUpdateProgress": "{received} / {total} МБ • {percentage}%", + "@notifUpdateProgress": { + "description": "Notification body showing update download progress", + "placeholders": { + "received": { + "type": "String" + }, + "total": { + "type": "String" + }, + "percentage": { + "type": "int" + } + } + }, + "notifUpdateReady": "Обновление готово", + "@notifUpdateReady": { + "description": "Notification title when app update download is complete" + }, + "notifUpdateReadyBody": "SpotiFLAC Mobile v{version} скачана. Нажмите, чтобы установить.", + "@notifUpdateReadyBody": { + "description": "Notification body when app update is ready to install", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "notifUpdateFailed": "Ошибка обновления", + "@notifUpdateFailed": { + "description": "Notification title when app update download fails" + }, + "notifUpdateFailedBody": "Не удалось скачать обновление. Попробуйте позже.", + "@notifUpdateFailedBody": { + "description": "Notification body when app update download fails" + }, + "searchTracks": "Треки", + "@searchTracks": { + "description": "Search filter label - tracks" + }, + "homeSearchHintDefault": "Вставьте URL или найдите...", + "@homeSearchHintDefault": { + "description": "Default placeholder for the main search field on Home" + }, + "homeSearchHintProvider": "Поиск с{providerName}...", + "@homeSearchHintProvider": { + "description": "Placeholder for the main search field when a provider is selected", + "placeholders": { + "providerName": { + "type": "String" + } + } + }, + "homeImportCsvTooltip": "Импорт плейлистов (CSV, M3U)", + "@homeImportCsvTooltip": { + "description": "Tooltip for importing a CSV or M3U playlist file into Home search" + }, + "homeChangeSearchProviderTooltip": "Изменить поставщика поиска", + "@homeChangeSearchProviderTooltip": { + "description": "Tooltip for the Home search provider picker" + }, + "actionPaste": "Вставить", + "@actionPaste": { + "description": "Generic action - paste from clipboard" + }, + "tutorialSearchHint": "Вставьте или найдите...", + "@tutorialSearchHint": { + "description": "Placeholder shown in the tutorial search demo" + }, + "tutorialDownloadCompletedSemantics": "Загрузка завершена", + "@tutorialDownloadCompletedSemantics": { + "description": "Accessibility label for completed download state in tutorial demo" + }, + "tutorialDownloadInProgressSemantics": "Идёт загрузка", + "@tutorialDownloadInProgressSemantics": { + "description": "Accessibility label for active download state in tutorial demo" + }, + "tutorialStartDownloadSemantics": "Начать загрузку", + "@tutorialStartDownloadSemantics": { + "description": "Accessibility label for idle download button in tutorial demo" + }, + "optionsEmbedMetadata": "Встроить метаданные", + "@optionsEmbedMetadata": { + "description": "Settings toggle title for writing metadata into downloaded files" + }, + "optionsEmbedMetadataSubtitleOn": "Write metadata, cover art, and embedded lyrics to files", + "@optionsEmbedMetadataSubtitleOn": { + "description": "Subtitle when metadata embedding is enabled" + }, + "optionsEmbedMetadataSubtitleOff": "Disabled (advanced): skip all metadata embedding", + "@optionsEmbedMetadataSubtitleOff": { + "description": "Subtitle when metadata embedding is disabled" + }, + "trackCoverNoEmbeddedArt": "Не найдено встроенных обложек альбома", + "@trackCoverNoEmbeddedArt": { + "description": "Message shown when a track file has no embedded cover art" + }, + "trackCoverReplace": "Заменить обложку", + "@trackCoverReplace": { + "description": "Button label for replacing selected cover art" + }, + "trackCoverPick": "Выбрать обложку", + "@trackCoverPick": { + "description": "Button label for selecting cover art" + }, + "trackCoverClearSelected": "Очистить выбранную обложку", + "@trackCoverClearSelected": { + "description": "Tooltip for clearing the newly selected cover art" + }, + "trackCoverCurrent": "Текущая обложка", + "@trackCoverCurrent": { + "description": "Label for the currently embedded cover preview" + }, + "trackCoverSelected": "Выбранная обложка", + "@trackCoverSelected": { + "description": "Label for the newly selected cover preview" + }, + "trackCoverReplaceNotice": "The selected cover will replace the current embedded cover when you tap Save.", + "@trackCoverReplaceNotice": { + "description": "Notice shown when a new cover has been selected but not saved yet" + }, + "trackCoverResolution": "Разрешение обложки", + "@trackCoverResolution": { + "description": "Label for selecting the embedded cover art resolution" + }, + "trackCoverResolutionHint": "Sets the longest edge when saved. Enlarging does not add image detail.", + "@trackCoverResolutionHint": { + "description": "Explanation below the embedded cover art resolution selector" + }, + "trackCoverResizeFailed": "The cover image could not be resized. Please try another size or image.", + "@trackCoverResizeFailed": { + "description": "Error shown when resizing cover art before saving metadata fails" + }, + "actionStop": "Стоп", + "@actionStop": { + "description": "Generic action - stop" + }, + "queueFinalizingDownload": "Завершение загрузки", + "@queueFinalizingDownload": { + "description": "Accessibility label for a queue item that is finalizing" + }, + "queueDownloadNext": "Download next", + "@queueDownloadNext": { + "description": "Tooltip on a queued download row; moves the item to the front of the queue so the next free slot downloads it" + }, + "queueMoveUp": "Move up", + "@queueMoveUp": { + "description": "Queue item menu action - move the queued item one position earlier" + }, + "queueMoveDown": "Move down", + "@queueMoveDown": { + "description": "Queue item menu action - move the queued item one position later" + }, + "editMetadataMusicBrainzButton": "Извлечь из MusicBrainz", + "@editMetadataMusicBrainzButton": { + "description": "Tag editor button that fills genre and album artist from MusicBrainz by ISRC" + }, + "editMetadataMusicBrainzFilled": "Обновлено из MusicBrainz", + "@editMetadataMusicBrainzFilled": { + "description": "Snackbar after MusicBrainz suggestions were applied to the tag editor fields" + }, + "editMetadataMusicBrainzNothing": "Nothing found on MusicBrainz", + "@editMetadataMusicBrainzNothing": { + "description": "Snackbar when the MusicBrainz lookup returns no data" + }, + "editMetadataMusicBrainzNeedsIsrc": "Требуется ISRC тег", + "@editMetadataMusicBrainzNeedsIsrc": { + "description": "Snackbar when the MusicBrainz lookup is tapped without an ISRC" + }, + "nowPlayingRepeatOff": "Повтор выключен", + "@nowPlayingRepeatOff": { + "description": "Repeat toggle tooltip when repeat is disabled" + }, + "nowPlayingRepeatAll": "Повторять всё", + "@nowPlayingRepeatAll": { + "description": "Repeat toggle tooltip when the whole queue repeats" + }, + "nowPlayingRepeatOne": "Повтор трека", + "@nowPlayingRepeatOne": { + "description": "Repeat toggle tooltip when the current track repeats" + }, + "queueNetworkFailedOffline": "{count} downloads failed while offline", + "@queueNetworkFailedOffline": { + "description": "Snackbar shown when connectivity returns and network-failed downloads can be retried", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueDownloadedFileMissing": "Загруженный файл отсутствует", + "@queueDownloadedFileMissing": { + "description": "Accessibility label when a downloaded file is missing from disk" + }, + "queueCheckingDownloadedFile": "Проверка загруженного файла...", + "@queueCheckingDownloadedFile": { + "description": "Accessibility label while the app checks whether a just-completed download has appeared at its final path yet. Not about authentication or a download session." + }, + "queueDownloadCompleted": "Загрузка завершена", + "@queueDownloadCompleted": { + "description": "Accessibility label for completed download state in queue" + }, + "queueRateLimitTitle": "Уровень обслуживания ограничен", + "@queueRateLimitTitle": { + "description": "Title shown on a failed queue item when the download service rate limits requests" + }, + "queueRateLimitMessage": "This track may still be available. Wait a few minutes, reduce parallel downloads, then retry.", + "@queueRateLimitMessage": { + "description": "Explanation shown on a failed queue item when the download service rate limits requests" + }, + "appearanceSelectAccentColor": "Select accent color {hex}", + "@appearanceSelectAccentColor": { + "description": "Accessibility label for picking an accent color", + "placeholders": { + "hex": { + "type": "String" + } + } + }, + "logAutoScrollOn": "Автопрокрутка ВКЛ", + "@logAutoScrollOn": { + "description": "Tooltip when auto-scroll is enabled on the log screen" + }, + "logAutoScrollOff": "Автопрокрутка ВЫКЛ", + "@logAutoScrollOff": { + "description": "Tooltip when auto-scroll is disabled on the log screen" + }, + "logCopyLogs": "Copy logs", + "@logCopyLogs": { + "description": "Tooltip for copying logs" + }, + "logClearSearch": "Очистить поиск", + "@logClearSearch": { + "description": "Tooltip for clearing the log search field" + }, + "logIssueIspBlockingLabel": "ОБНАРУЖЕНА БЛОКИРОВКА ИНТЕРНЕТ ПРОВАЙДЕРОМ", + "@logIssueIspBlockingLabel": { + "description": "Diagnostic badge label when ISP blocking is detected" + }, + "logIssueIspBlockingDescription": "Ваш провайдер может блокировать доступ к сервисам скачивания", + "@logIssueIspBlockingDescription": { + "description": "Diagnostic badge description for ISP blocking" + }, + "logIssueIspBlockingSuggestion": "Попробуйте с VPN либо смените DNS на 1.1.1.1 или 8.8.8.8", + "@logIssueIspBlockingSuggestion": { + "description": "Diagnostic badge suggestion for ISP blocking" + }, + "logIssueRateLimitedLabel": "ЛИМИТ ЗАПРОСОВ", + "@logIssueRateLimitedLabel": { + "description": "Diagnostic badge label when the service rate limits requests" + }, + "logIssueRateLimitedDescription": "Слишком много запросов к сервису", + "@logIssueRateLimitedDescription": { + "description": "Diagnostic badge description for rate limiting" + }, + "logIssueRateLimitedSuggestion": "Подождите несколько минут, прежде чем повторить попытку", + "@logIssueRateLimitedSuggestion": { + "description": "Diagnostic badge suggestion for rate limiting" + }, + "logIssueNetworkErrorLabel": "ОШИБКА СЕТИ", + "@logIssueNetworkErrorLabel": { + "description": "Diagnostic badge label for generic network errors" + }, + "logIssueNetworkErrorDescription": "Обнаружены проблемы с подключением", + "@logIssueNetworkErrorDescription": { + "description": "Diagnostic badge description for generic network errors" + }, + "logIssueNetworkErrorSuggestion": "Проверьте подключение к Интернету", + "@logIssueNetworkErrorSuggestion": { + "description": "Diagnostic badge suggestion for generic network errors" + }, + "logIssueTrackNotFoundLabel": "ТРЕК НЕ НАЙДЕН", + "@logIssueTrackNotFoundLabel": { + "description": "Diagnostic badge label when a track is unavailable" + }, + "logIssueTrackNotFoundDescription": "Некоторые треки не найдены в сервисах загрузки", + "@logIssueTrackNotFoundDescription": { + "description": "Diagnostic badge description when a track is unavailable" + }, + "logIssueTrackNotFoundSuggestion": "Трек может быть недоступен в lossless формате", + "@logIssueTrackNotFoundSuggestion": { + "description": "Diagnostic badge suggestion when a track is unavailable" + }, + "clickableLookingUpArtist": "Looking up artist...", + "@clickableLookingUpArtist": { + "description": "Snackbar shown while clickable artist metadata is being resolved" + }, + "clickableInformationUnavailable": "{type} information not available", + "@clickableInformationUnavailable": { + "description": "Snackbar shown when clickable metadata cannot open a destination", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "extensionDetailsTags": "Теги", + "@extensionDetailsTags": { + "description": "Section title for extension tags" + }, + "extensionDetailsInformation": "Инофрмация", + "@extensionDetailsInformation": { + "description": "Section title for extension metadata information" + }, + "extensionUtilityFunctions": "Utility Functions", + "@extensionUtilityFunctions": { + "description": "Capability label for utility-only extensions" + }, + "actionDismiss": "Отклонить", + "@actionDismiss": { + "description": "Generic action - dismiss" + }, + "setupChangeFolderTooltip": "Сменить папку", + "@setupChangeFolderTooltip": { + "description": "Tooltip for editing the selected download folder" + }, + "a11yOpenTrackByArtist": "Open track {trackName} by {artistName}", + "@a11yOpenTrackByArtist": { + "description": "Accessibility label for opening a track item", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "a11yOpenItem": "Open {itemType} {name}", + "@a11yOpenItem": { + "description": "Accessibility label for opening a generic item", + "placeholders": { + "itemType": { + "type": "String" + }, + "name": { + "type": "String" + } + } + }, + "a11yOpenItemCount": "Открыть {title}, {count} {count, plural, =1{элемент} few{элемента} other{элементов}}", + "@a11yOpenItemCount": { + "description": "Accessibility label for opening a grouped item with count", + "placeholders": { + "title": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "a11yOpenAlbumByArtistTrackCount": "Открыть альбом {albumName} от {artistName}, {trackCount} {trackCount, plural, one{трек} few{трека} other{треков}}", + "@a11yOpenAlbumByArtistTrackCount": { + "description": "Accessibility label for opening an album item with track count", + "placeholders": { + "albumName": { + "type": "String" + }, + "artistName": { + "type": "String" + }, + "trackCount": { + "type": "int" + } + } + }, + "a11yTrackByArtist": "{trackName} от {artistName}", + "@a11yTrackByArtist": { + "description": "Accessibility label for a queue or list track item", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "a11ySelectAlbum": "Выбрать альбом {albumName}", + "@a11ySelectAlbum": { + "description": "Accessibility label for selecting an album", + "placeholders": { + "albumName": { + "type": "String" + } + } + }, + "a11yOpenAlbum": "Открыть альбом {albumName}", + "@a11yOpenAlbum": { + "description": "Accessibility label for opening an album", + "placeholders": { + "albumName": { + "type": "String" + } + } + }, + "settingsFiles": "Файлы и папки", + "@settingsFiles": { + "description": "Settings menu item - file and folder settings" + }, + "settingsFilesSubtitle": "Download location, filename, folder structure", + "@settingsFilesSubtitle": { + "description": "Subtitle for files & folders settings" + }, + "settingsMetadata": "Metadata", + "@settingsMetadata": { + "description": "Settings menu item - metadata settings" + }, + "settingsMetadataSubtitle": "Cover art, tags, ReplayGain, providers", + "@settingsMetadataSubtitle": { + "description": "Subtitle for metadata settings" + }, + "settingsLyrics": "Тексты песен", + "@settingsLyrics": { + "description": "Settings menu item - lyrics settings" + }, + "settingsLyricsSubtitle": "Embed, mode, providers, language options", + "@settingsLyricsSubtitle": { + "description": "Subtitle for lyrics settings" + }, + "settingsApp": "App", + "@settingsApp": { + "description": "Settings menu item - app settings" + }, + "settingsAppSubtitle": "Updates, data, extension repo, debug", + "@settingsAppSubtitle": { + "description": "Subtitle for app settings" + }, + "sectionMetadataProviders": "Провайдеры", + "@sectionMetadataProviders": { + "description": "Settings section header for metadata providers" + }, + "sectionDuplicates": "Дубликаты", + "@sectionDuplicates": { + "description": "Settings section header for deduplication" + }, + "sectionLyricsProviderOptions": "Параметры провайдера", + "@sectionLyricsProviderOptions": { + "description": "Settings section header for per-provider lyrics options" + }, + "metadataProvidersTitle": "Приоритет провайдера метаданных", + "@metadataProvidersTitle": { + "description": "Settings item title for metadata provider order" + }, + "metadataProvidersSubtitle": "Drag to set search and metadata source order", + "@metadataProvidersSubtitle": { + "description": "Subtitle for metadata provider priority item" + }, + "downloadDeduplication": "Skip Duplicate Downloads", + "@downloadDeduplication": { + "description": "Setting - skip tracks already in download history" + }, + "downloadDeduplicationEnabled": "Already-downloaded tracks will be skipped", + "@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" @@ -6000,103 +5742,1088 @@ "@downloadQualityVariantsDescription": { "description": "Description for retaining multiple quality versions" }, - "trackOptionDownloadQualityVariant": "Download another quality", + "trackOptionDownloadQualityVariant": "Скачать в другом качестве", "@trackOptionDownloadQualityVariant": { "description": "Track menu action to download another quality version" }, + "downloadFallbackExtensions": "Fallback Extensions", + "@downloadFallbackExtensions": { + "description": "Settings item for configuring fallback extension providers" + }, + "downloadFallbackExtensionsSubtitle": "Choose which extensions can be used as fallback", + "@downloadFallbackExtensionsSubtitle": { + "description": "Subtitle for fallback extensions item" + }, + "editMetadataFieldDateHint": "ГГГГ-ММ-ДД либо ГГГГ", + "@editMetadataFieldDateHint": { + "description": "Hint text for the edit metadata date field" + }, + "editMetadataFieldTrackTotal": "Всего треков", + "@editMetadataFieldTrackTotal": { + "description": "Label for total tracks field in the edit metadata sheet" + }, + "editMetadataFieldDiscTotal": "Disc Total", + "@editMetadataFieldDiscTotal": { + "description": "Label for total discs field in the edit metadata sheet" + }, + "editMetadataFieldComposer": "Композитор", + "@editMetadataFieldComposer": { + "description": "Label for composer field in the edit metadata sheet" + }, + "editMetadataFieldComment": "Комментарий", + "@editMetadataFieldComment": { + "description": "Label for comment field in the edit metadata sheet" + }, + "trackAlbumType": "Тип Релиза", + "@trackAlbumType": { + "description": "Label for an album or release type metadata value" + }, + "editMetadataFieldAlbumTypeHint": "Album, single, EP, compilation...", + "@editMetadataFieldAlbumTypeHint": { + "description": "Hint for the release type metadata field" + }, + "editMetadataFieldExplicit": "Explicit", + "@editMetadataFieldExplicit": { + "description": "Label for the explicit content metadata field" + }, + "editMetadataFieldExplicitHint": "Mark this track as containing explicit content", + "@editMetadataFieldExplicitHint": { + "description": "Description for the explicit content metadata switch" + }, + "metadataExplicitValue": "Explicit", + "@metadataExplicitValue": { + "description": "Displayed value when a track is marked explicit" + }, + "editMetadataFieldUpc": "UPC / Штрихкод", + "@editMetadataFieldUpc": { + "description": "Label for the release barcode metadata field" + }, + "editMetadataFieldUpcHint": "Numeric UPC, EAN, or GTIN", + "@editMetadataFieldUpcHint": { + "description": "Hint for the release barcode metadata field" + }, + "editMetadataAdvanced": "Расширенные", + "@editMetadataAdvanced": { + "description": "Expandable section label for advanced metadata fields" + }, + "libraryFilterMetadataMissingTrackNumber": "Missing track number", + "@libraryFilterMetadataMissingTrackNumber": { + "description": "Filter option - items missing track number" + }, + "libraryFilterMetadataMissingDiscNumber": "Missing disc number", + "@libraryFilterMetadataMissingDiscNumber": { + "description": "Filter option - items missing disc number" + }, + "libraryFilterMetadataMissingArtist": "Missing artist", + "@libraryFilterMetadataMissingArtist": { + "description": "Filter option - items missing artist" + }, + "libraryFilterMetadataIncorrectIsrcFormat": "Некорректный формат ISRC", + "@libraryFilterMetadataIncorrectIsrcFormat": { + "description": "Filter option - items with an invalid ISRC format" + }, + "libraryFilterMetadataMissingIsrc": "Отсутствует ISRC", + "@libraryFilterMetadataMissingIsrc": { + "description": "Filter option - items without any ISRC tag" + }, + "libraryFilterMetadataMissingLabel": "Missing label", + "@libraryFilterMetadataMissingLabel": { + "description": "Filter option - items missing record label" + }, + "collectionDeletePlaylistsMessage": "Удалить {count} {count, plural, =1{плейлист} few{плейлиста} other{плейлистов}}?", + "@collectionDeletePlaylistsMessage": { + "description": "Confirmation message for deleting selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionPlaylistsDeleted": "{count} {count, plural, =1{плейлист} few{плейлиста} other{плейлистов}}", + "@collectionPlaylistsDeleted": { + "description": "Snackbar after deleting selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionAddedTracksToPlaylist": "Добавлено {count} {count, plural, =1{трек} few{трека} other{треков}} в {playlistName}", + "@collectionAddedTracksToPlaylist": { + "description": "Snackbar after adding multiple tracks to a playlist", + "placeholders": { + "count": { + "type": "int" + }, + "playlistName": { + "type": "String" + } + } + }, + "collectionAddedTracksToPlaylistWithExisting": "Добавлено: {count} {count, plural, =1{трек} few{трека} other{треков}} в {playlistName} ({alreadyCount} уже в плейлисте)", + "@collectionAddedTracksToPlaylistWithExisting": { + "description": "Snackbar after adding multiple tracks to a playlist when some were already present", + "placeholders": { + "count": { + "type": "int" + }, + "playlistName": { + "type": "String" + }, + "alreadyCount": { + "type": "int" + } + } + }, + "itemCount": "{count} {count, plural, =1{элемент} few{элемента} other{элементов}}", + "@itemCount": { + "description": "Generic item count label", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackReEnrichSuccessWithFailures": "Метаданные успешно дополнены ({successCount}/{total}). Ошибок: {failedCount}", + "@trackReEnrichSuccessWithFailures": { + "description": "Snackbar summary after batch metadata re-enrichment finishes with failures", + "placeholders": { + "successCount": { + "type": "int" + }, + "total": { + "type": "int" + }, + "failedCount": { + "type": "int" + } + } + }, + "selectionDeleteTracksCount": "Удалить {count} {count, plural, =1{трек} few{трека} other{треков}}", + "@selectionDeleteTracksCount": { + "description": "Button label for deleting selected tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueDownloadSpeedStatus": "Downloading - {speed} MB/s", + "@queueDownloadSpeedStatus": { + "description": "Queue status while downloading with speed", + "placeholders": { + "speed": { + "type": "String" + } + } + }, + "queueDownloadStarting": "Запуск...", "queueCheckingDownloadSession": "Checking download session...", "queueResolvingDownloadMetadata": "Resolving track metadata...", "queueResolvingDownloadStream": "Preparing audio stream...", - "queueWaitingForVerification": "Waiting for verification...", - "queueResumingAfterVerification": "Resuming after verification...", - "settingsSearchHint": "Search settings", - "settingsSearchNoResults": "No settings match \"{query}\"", + "queueWaitingForVerification": "Ожидание верификации...", + "queueResumingAfterVerification": "Продолжение после верификации...", + "@queueDownloadStarting": { + "description": "Queue status before download progress is available" + }, + "@queueCheckingDownloadSession": { + "description": "Queue status while the download provider's session is being checked during preparation (preparationStage 'checking_session'). This is about the provider session, not about locating a finished file." + }, + "a11ySelectTrack": "Select track", + "@a11ySelectTrack": { + "description": "Accessibility label for selecting a track" + }, + "a11yDeselectTrack": "Deselect track", + "@a11yDeselectTrack": { + "description": "Accessibility label for deselecting a track" + }, + "a11yPlayTrackByArtist": "Play {trackName} by {artistName}", + "@a11yPlayTrackByArtist": { + "description": "Accessibility label for playing a local library track", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "storeExtensionsCount": "{count} {count, plural, =1{расширение} few{расширения} other{расширений}}", + "@storeExtensionsCount": { + "description": "Store extension result count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "storeRequiresVersion": "Requires v{version}+", + "@storeRequiresVersion": { + "description": "Store compatibility badge for minimum app version", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "actionGo": "Go", + "@actionGo": { + "description": "Generic action button label" + }, + "logIssueSummary": "Issue Summary", + "@logIssueSummary": { + "description": "Header for log issue analysis summary" + }, + "logTotalErrors": "Total errors: {count}", + "@logTotalErrors": { + "description": "Total error count in log issue analysis", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "logAffectedDomains": "Affected: {domains}", + "@logAffectedDomains": { + "description": "Affected domains in log issue analysis", + "placeholders": { + "domains": { + "type": "String" + } + } + }, + "libraryScanCancelled": "Scan cancelled", + "@libraryScanCancelled": { + "description": "Library scan status when a scan was cancelled" + }, + "libraryScanCancelledSubtitle": "You can retry the scan when ready.", + "@libraryScanCancelledSubtitle": { + "description": "Library scan status subtitle after cancellation" + }, + "libraryDownloadsHistoryExcluded": "{count} from Downloads history (excluded from list)", + "@libraryDownloadsHistoryExcluded": { + "description": "Library count note for downloaded history items excluded from the local list", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadNativeWorker": "Native download worker", + "@downloadNativeWorker": { + "description": "Setting title for Android native download worker" + }, + "downloadNativeWorkerSubtitle": "Android background service for extension downloads", + "@downloadNativeWorkerSubtitle": { + "description": "Setting subtitle for Android native download worker" + }, + "extensionServiceStatus": "Состояние сервисов", + "@extensionServiceStatus": { + "description": "Extension detail section header for service status" + }, + "extensionServiceHealth": "Состояние сервиса", + "@extensionServiceHealth": { + "description": "Extension capability label for service health checks" + }, + "extensionHealthChecksConfigured": "Настроено {count} {count, plural, =1{проверка} few{проверки} other{проверок}}", + "@extensionHealthChecksConfigured": { + "description": "Extension service health check count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionOauthConnectHint": "Tap Connect to Spotify to fill this field.", + "@extensionOauthConnectHint": { + "description": "Hint for an OAuth login link field before connecting Spotify" + }, + "extensionLastChecked": "Последняя проверка {time}", + "@extensionLastChecked": { + "description": "Timestamp for the latest extension service health check", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "extensionRefreshStatus": "Refresh status", + "@extensionRefreshStatus": { + "description": "Tooltip for refreshing extension service health status" + }, + "extensionCustomUrlHandling": "Обработка пользовательских URL", + "@extensionCustomUrlHandling": { + "description": "Extension detail section title for custom URL handling" + }, + "extensionCustomUrlHandlingSubtitle": "Это расширение поддерживает ссылки с этих сайтов", + "@extensionCustomUrlHandlingSubtitle": { + "description": "Extension detail subtitle for custom URL handling" + }, + "extensionCustomUrlHandlingShareHint": "Отправляйте ссылки с этих сайтов в SpotiFLAC Mobile, и это расширение обработает их.", + "@extensionCustomUrlHandlingShareHint": { + "description": "Extension detail hint explaining share-to-app URL handling" + }, + "extensionSettingsCount": "{count} {count, plural, =1{настройка} few{настройки} other{настроек}}", + "@extensionSettingsCount": { + "description": "Count of settings exposed by an extension quality option", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionHealthOnline": "Онлайн", + "@extensionHealthOnline": { + "description": "Extension service health status - online" + }, + "extensionHealthDegraded": "Degraded", + "@extensionHealthDegraded": { + "description": "Extension service health status - degraded" + }, + "extensionHealthOffline": "Оффлайн", + "@extensionHealthOffline": { + "description": "Extension service health status - offline" + }, + "extensionHealthNotConfigured": "Не настроено", + "@extensionHealthNotConfigured": { + "description": "Extension service health status - not configured" + }, + "extensionHealthUnknown": "Неизвестно", + "@extensionHealthUnknown": { + "description": "Extension service health status - unknown" + }, + "extensionHealthRequired": "обязательно", + "@extensionHealthRequired": { + "description": "Label for a required extension service health check" + }, + "extensionSettingNotSet": "Не задано", + "@extensionSettingNotSet": { + "description": "Value shown when an extension setting has no value" + }, + "extensionActionFailed": "Не удалось выполнить действие", + "@extensionActionFailed": { + "description": "Fallback error when an extension action fails without details" + }, + "extensionEnterValue": "Введите значение", + "@extensionEnterValue": { + "description": "Hint for editing an extension setting value" + }, + "extensionHealthServiceOnline": "Сервис онлайн", + "@extensionHealthServiceOnline": { + "description": "Tooltip for online extension service" + }, + "extensionHealthServiceDegraded": "Service degraded", + "@extensionHealthServiceDegraded": { + "description": "Tooltip for degraded extension service" + }, + "extensionHealthServiceOffline": "Служба оффлайн", + "@extensionHealthServiceOffline": { + "description": "Tooltip for offline extension service" + }, + "extensionHealthServiceUnknown": "Service status unknown", + "@extensionHealthServiceUnknown": { + "description": "Tooltip for unknown extension service health" + }, + "audioAnalysisStereo": "Стерео", + "@audioAnalysisStereo": { + "description": "Audio channel layout label - stereo" + }, + "audioAnalysisMono": "Моно", + "@audioAnalysisMono": { + "description": "Audio channel layout label - mono" + }, + "trackOpenInService": "Открыть в {serviceName}", + "@trackOpenInService": { + "description": "Button label to open a track in a named music service", + "placeholders": { + "serviceName": { + "type": "String" + } + } + }, + "trackLyricsEmbeddedSource": "Встроенный", + "@trackLyricsEmbeddedSource": { + "description": "Lyrics source label for embedded lyrics" + }, + "unknownAlbum": "Неизвестный альбом", + "@unknownAlbum": { + "description": "Fallback album name when metadata is missing" + }, + "unknownArtist": "Неизвестный исполнитель", + "@unknownArtist": { + "description": "Fallback artist name when metadata is missing" + }, + "permissionAudio": "Аудио", + "@permissionAudio": { + "description": "Audio permission type label" + }, + "permissionStorage": "Хранилище", + "@permissionStorage": { + "description": "Storage permission type label" + }, + "permissionNotification": "Уведомление", + "@permissionNotification": { + "description": "Notification permission type label" + }, + "errorInvalidFolderSelected": "Invalid folder selected", + "@errorInvalidFolderSelected": { + "description": "Error when the selected folder is invalid" + }, + "storeAnyVersion": "Any", + "@storeAnyVersion": { + "description": "Store detail value when any app version is accepted" + }, + "storeCategoryMetadata": "Метаданные", + "@storeCategoryMetadata": { + "description": "Store extension category - metadata" + }, + "storeCategoryDownload": "Download", + "@storeCategoryDownload": { + "description": "Store extension category - download" + }, + "storeCategoryUtility": "Утилиты", + "@storeCategoryUtility": { + "description": "Store extension category - utility" + }, + "storeCategoryLyrics": "Тексты песен", + "@storeCategoryLyrics": { + "description": "Store extension category - lyrics" + }, + "storeCategoryIntegration": "Интеграция", + "@storeCategoryIntegration": { + "description": "Store extension category - integration" + }, + "artistReleases": "Релизы", + "@artistReleases": { + "description": "Section header for all artist releases" + }, + "editMetadataSelectNone": "Ничего", + "@editMetadataSelectNone": { + "description": "Button to clear selected fields for auto-fill" + }, + "queueRetryAllFailed": "Попытка {count} неудачна", + "@queueRetryAllFailed": { + "description": "Button to retry every failed download in the queue", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "settingsSaveDownloadHistory": "Сохранить историю загрузок", + "@settingsSaveDownloadHistory": { + "description": "Settings switch title for storing completed downloads in history" + }, + "settingsSaveDownloadHistorySubtitle": "Keep completed downloads in history and library views", + "@settingsSaveDownloadHistorySubtitle": { + "description": "Settings switch subtitle for storing completed downloads in history" + }, + "dialogDisableHistoryTitle": "Turn off download history?", + "@dialogDisableHistoryTitle": { + "description": "Confirmation dialog title shown before disabling download history" + }, + "dialogDisableHistoryMessage": "Existing history will be cleared. Downloaded files will not be deleted.", + "@dialogDisableHistoryMessage": { + "description": "Confirmation dialog message shown before disabling download history" + }, + "dialogDisableAndClear": "Выключить и очистить", + "@dialogDisableAndClear": { + "description": "Confirmation action to disable download history and clear existing entries" + }, + "openInOtherServices": "Open in Other Services", + "@openInOtherServices": { + "description": "Title and tooltip for finding the current collection in other services" + }, + "shareSheetNoExtensions": "No other compatible services", + "@shareSheetNoExtensions": { + "description": "Empty state when no extensions can be searched for cross-service links" + }, + "shareSheetNotFound": "Не найдено", + "@shareSheetNotFound": { + "description": "Cross-service share sheet row subtitle when a service has no match" + }, + "shareSheetCopyLink": "Копировать ссылку", + "@shareSheetCopyLink": { + "description": "Tooltip for copying a cross-service link" + }, + "shareSheetLinkCopied": "{service} ссылка скопирована", + "@shareSheetLinkCopied": { + "description": "Snackbar after copying a cross-service link", + "placeholders": { + "service": {} + } + }, + "libraryPlayback": "Playback", + "@libraryPlayback": { + "description": "Section header for playback settings in library settings" + }, + "libraryExternalPlayer": "Внешний плеер", + "@libraryExternalPlayer": { + "description": "Setting option to use an external music player" + }, + "libraryExternalPlayerSubtitle": "Recommended for listening, best quality, gapless playback, EQ, and wider format support", + "@libraryExternalPlayerSubtitle": { + "description": "Subtitle for external player option" + }, + "libraryBuiltInPreviewPlayer": "Built-in preview player", + "@libraryBuiltInPreviewPlayer": { + "description": "Setting option to use the built-in preview player" + }, + "libraryBuiltInPreviewPlayerSubtitle": "Quick local previews inside SpotiFLAC Mobile", + "@libraryBuiltInPreviewPlayerSubtitle": { + "description": "Subtitle for built-in preview player option" + }, + "libraryBuiltInPlayerInfo": "The built-in player is a preview tool for checking local tracks quickly. Use an external music player for actual listening.", + "@libraryBuiltInPlayerInfo": { + "description": "Info note explaining the built-in player is for previews only" + }, + "nowPlayingTitle": "Сейчас играет", + "@nowPlayingTitle": { + "description": "Title for the now playing screen" + }, + "nowPlayingNothingPlaying": "Ничего не играет", + "@nowPlayingNothingPlaying": { + "description": "Empty state when no track is currently playing" + }, + "nowPlayingMinimize": "Свернуть", + "@nowPlayingMinimize": { + "description": "Tooltip for minimizing the now playing screen" + }, + "nowPlayingUpNext": "Up next", + "@nowPlayingUpNext": { + "description": "Title for the playback queue sheet" + }, + "nowPlayingPreviousTrack": "Предыдущий трек", + "@nowPlayingPreviousTrack": { + "description": "Tooltip for the previous-track playback control" + }, + "nowPlayingNextTrack": "Следующий трек", + "@nowPlayingNextTrack": { + "description": "Tooltip for the next-track playback control" + }, + "nowPlayingDetails": "Details", + "@nowPlayingDetails": { + "description": "Menu item and section title for track metadata details" + }, + "nowPlayingSleepTimer": "Sleep timer", + "@nowPlayingSleepTimer": { + "description": "Menu item and sheet title for the playback sleep timer" + }, + "nowPlayingSleepTimerActive": "Ends at {time}", + "@nowPlayingSleepTimerActive": { + "description": "Active sleep timer deadline shown in the player menu", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "nowPlayingSleepTimerMinutes": "{minutes, plural, one{{minutes} минута} few{{minutes} минуты} other{{minutes} минут}}", + "@nowPlayingSleepTimerMinutes": { + "description": "Duration choice for the playback sleep timer", + "placeholders": { + "minutes": { + "type": "int" + } + } + }, + "nowPlayingSleepTimerOff": "Turn off sleep timer", + "@nowPlayingSleepTimerOff": { + "description": "Action to cancel the active playback sleep timer" + }, + "nowPlayingSleepTimerSet": "Sleep timer set for {duration}", + "@nowPlayingSleepTimerSet": { + "description": "Confirmation after setting the playback sleep timer", + "placeholders": { + "duration": { + "type": "String" + } + } + }, + "nowPlayingSleepTimerCancelled": "Sleep timer turned off", + "@nowPlayingSleepTimerCancelled": { + "description": "Confirmation after cancelling the playback sleep timer" + }, + "nowPlayingOpenInExternalPlayer": "Open in external player", + "@nowPlayingOpenInExternalPlayer": { + "description": "Menu item to open the current track in an external player" + }, + "nowPlayingTabPlayer": "Player", + "@nowPlayingTabPlayer": { + "description": "Tab label for the player view" + }, + "nowPlayingTabLyrics": "Lyrics", + "@nowPlayingTabLyrics": { + "description": "Tab label for the lyrics view" + }, + "nowPlayingNoLyrics": "В файле нет текста", + "@nowPlayingNoLyrics": { + "description": "Empty state when the playing file has no embedded lyrics" + }, + "nowPlayingLibraryEmpty": "Your library is empty", + "@nowPlayingLibraryEmpty": { + "description": "Snackbar when shuffle library is requested but library has no tracks" + }, + "nowPlayingShuffleLibraryFailed": "Could not shuffle library: {error}", + "@nowPlayingShuffleLibraryFailed": { + "description": "Snackbar when shuffling the library fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "nowPlayingShuffleOn": "Shuffle on", + "@nowPlayingShuffleOn": { + "description": "Tooltip when shuffle mode is enabled" + }, + "nowPlayingPlayInOrder": "Play in order", + "@nowPlayingPlayInOrder": { + "description": "Tooltip when shuffle mode is disabled" + }, + "nowPlayingShuffleLibrary": "Shuffle library", + "@nowPlayingShuffleLibrary": { + "description": "Button label to shuffle and play the entire local library" + }, + "nowPlayingQueueEmpty": "Очередь пуста", + "@nowPlayingQueueEmpty": { + "description": "Empty state when the playback queue has no items" + }, + "nowPlayingNoMetadata": "Метаданные не доступны", + "@nowPlayingNoMetadata": { + "description": "Empty state when track metadata cannot be loaded" + }, + "announcementUnableToOpenLink": "Unable to open link. Please try again.", + "@announcementUnableToOpenLink": { + "description": "Snackbar shown when an announcement CTA link cannot be opened" + }, + "trackConvertLosslessOutputWithCap": "Lossless-вывод с ограничением {quality}", + "@trackConvertLosslessOutputWithCap": { + "description": "Hint shown when lossless conversion will cap bit depth or sample rate", + "placeholders": { + "quality": { + "type": "String" + } + } + }, + "trackConvertConfirmMessageLosslessCapped": "Convert from {sourceFormat} to {targetFormat} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original file will be deleted after conversion.", + "@trackConvertConfirmMessageLosslessCapped": { + "description": "Confirmation dialog message for capped lossless conversion of a single file", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "selectionBatchConvertConfirmMessageLosslessCapped": "Конвертировать {count} {count, plural, =1{трек} few{трека} other{треков}} в {format} ({quality})?\n\nРезультат останется в кодеке lossless, но разрядность и частота дискретизации будут ограничены. Исходные файлы будут удалены после конвертации.", + "@selectionBatchConvertConfirmMessageLosslessCapped": { + "description": "Confirmation dialog message for capped lossless batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "trackConvertActionLabelLossless": "{sourceFormat} → {targetFormat} ({quality})", + "@trackConvertActionLabelLossless": { + "description": "Convert button label for lossless conversion with quality cap", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "trackConvertActionLabelLossy": "{sourceFormat} → {targetFormat} @ {bitrate}", + "@trackConvertActionLabelLossy": { + "description": "Convert button label for lossy conversion", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "aboutPaxsenixSubtitle": "Lyrics proxy for Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou, and Genius", + "@aboutPaxsenixSubtitle": { + "description": "Subtitle for Paxsenix special thanks entry on the about page" + }, + "snackbarPlayingNext": "Playing next", + "@snackbarPlayingNext": { + "description": "Snackbar when a track is inserted as the next queue item" + }, + "snackbarAddedToQueueGeneric": "Добавлено в очередь", + "@snackbarAddedToQueueGeneric": { + "description": "Snackbar when a track is added to the playback queue without naming it" + }, + "selectionDeletePlaylistsCount": "Удалить {count} {count, plural, =1{плейлист} few{плейлиста} other{плейлистов}}", + "@selectionDeletePlaylistsCount": { + "description": "Button label for deleting multiple selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "actionShuffle": "Shuffle", + "@actionShuffle": { + "description": "Tooltip for shuffle playback action" + }, + "downloadPrimaryArtistOnlyOn": "Primary only: On", + "@downloadPrimaryArtistOnlyOn": { + "description": "Status label when primary-artist-only folder naming is enabled" + }, + "downloadPrimaryArtistOnlyOff": "Primary only: Off", + "@downloadPrimaryArtistOnlyOff": { + "description": "Status label when primary-artist-only folder naming is disabled" + }, + "downloadAlbumArtistMetadataPrimaryOnly": "Album Artist metadata: Primary only", + "@downloadAlbumArtistMetadataPrimaryOnly": { + "description": "Status label when album-artist folder filtering uses primary artist only" + }, + "downloadAlbumArtistMetadataFull": "Album Artist metadata: Full", + "@downloadAlbumArtistMetadataFull": { + "description": "Status label when album-artist folder filtering uses full metadata" + }, + "trackConvertOriginal": "Оригинал", + "@trackConvertOriginal": { + "description": "Label for keeping original bit depth or sample rate during conversion" + }, + "trackConvertOriginalQuality": "Исходное качество", + "@trackConvertOriginalQuality": { + "description": "Label when no bit depth or sample rate cap is applied during lossless conversion" + }, + "trackConvertLosslessSuffix": "Lossless", + "@trackConvertLosslessSuffix": { + "description": "Suffix used in converted lossless quality labels" + }, + "trackConvertDithering": "Дизеринг", + "@trackConvertDithering": { + "description": "Section label for lossless conversion dithering options" + }, + "trackConvertResampler": "Ресемплер", + "@trackConvertResampler": { + "description": "Section label for lossless conversion resampler options" + }, + "trackConvertDitherNone": "None", + "@trackConvertDitherNone": { + "description": "Lossless conversion dither option with no dithering applied" + }, + "trackConvertDitherTriangular": "TPDF", + "@trackConvertDitherTriangular": { + "description": "Lossless conversion triangular probability density function dither option" + }, + "trackConvertDitherTriangularHp": "Triangular HP", + "@trackConvertDitherTriangularHp": { + "description": "Lossless conversion high-pass triangular dither option" + }, + "trackConvertResamplerSwr": "SWR", + "@trackConvertResamplerSwr": { + "description": "Lossless conversion default FFmpeg swresample resampler option" + }, + "trackConvertResamplerSoxr": "SoXr", + "@trackConvertResamplerSoxr": { + "description": "Lossless conversion SoX resampler option" + }, + "updateSeeReleaseNotes": "See release notes for details.", + "@updateSeeReleaseNotes": { + "description": "Fallback changelog text when release notes cannot be parsed" + }, + "unknownTitle": "Неизвестное название", + "@unknownTitle": { + "description": "Fallback track title when metadata is missing" + }, + "trackPlayNext": "Играть далее", + "@trackPlayNext": { + "description": "Menu action to play a track as the next queue item" + }, + "trackAddToQueue": "Добавить в очередь", + "@trackAddToQueue": { + "description": "Menu action to add a track to the playback queue" + }, + "snackbarExtensionInstalledEnable": "{extensionName} installed. Enable it in Settings > Extensions", + "@snackbarExtensionInstalledEnable": { + "description": "Snackbar after installing an extension from the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "snackbarExtensionUpdatedVersion": "{extensionName} обновлено до v{version}", + "@snackbarExtensionUpdatedVersion": { + "description": "Snackbar after updating an extension from the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + }, + "version": { + "type": "String" + } + } + }, + "snackbarFailedToInstallNamed": "Не удалось установить {extensionName}", + "@snackbarFailedToInstallNamed": { + "description": "Snackbar when extension install fails in the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "snackbarFailedToUpdateNamed": "Failed to update {extensionName}", + "@snackbarFailedToUpdateNamed": { + "description": "Snackbar when extension update fails in the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "releaseTypeEp": "EP", + "@releaseTypeEp": { + "description": "Badge label for EP releases" + }, + "releaseTypeSingle": "Сингл", + "@releaseTypeSingle": { + "description": "Badge label for single releases" + }, + "trackCoverOnline": "Обложка из сети", + "@trackCoverOnline": { + "description": "Label shown when metadata autofill downloaded cover art from the internet" + }, + "regionCountryUS": "США", + "@regionCountryUS": { + "description": "Country name for SongLink region picker" + }, + "regionCountryGB": "Великобритания", + "@regionCountryGB": { + "description": "Country name for SongLink region picker" + }, + "regionCountryFR": "Франция", + "@regionCountryFR": { + "description": "Country name for SongLink region picker" + }, + "regionCountryDE": "Германия", + "@regionCountryDE": { + "description": "Country name for SongLink region picker" + }, + "regionCountryJP": "Япония", + "@regionCountryJP": { + "description": "Country name for SongLink region picker" + }, + "regionCountryKR": "Южная Корея", + "@regionCountryKR": { + "description": "Country name for SongLink region picker" + }, + "regionCountryIN": "Индия", + "@regionCountryIN": { + "description": "Country name for SongLink region picker" + }, + "regionCountryID": "Индонезия", + "@regionCountryID": { + "description": "Country name for SongLink region picker" + }, + "regionCountryBR": "Бразилия", + "@regionCountryBR": { + "description": "Country name for SongLink region picker" + }, + "regionCountryMX": "Мексика", + "@regionCountryMX": { + "description": "Country name for SongLink region picker" + }, + "regionCountryAU": "Австралия", + "@regionCountryAU": { + "description": "Country name for SongLink region picker" + }, + "regionCountryCA": "Канада", + "@regionCountryCA": { + "description": "Country name for SongLink region picker" + }, + "regionCountryXK": "Косово", + "@regionCountryXK": { + "description": "Country name for SongLink region picker" + }, + "extensionVerificationBrowserTitle": "Браузер для верификаций", + "@extensionVerificationBrowserTitle": { + "description": "Settings option title for extension verification browser preference" + }, + "extensionVerificationBrowserSubtitleExternal": "Open challenges in the default browser first", + "@extensionVerificationBrowserSubtitleExternal": { + "description": "Subtitle when external browser is preferred for extension verification" + }, + "extensionVerificationBrowserSubtitleInApp": "Open challenges in the in-app browser first", + "@extensionVerificationBrowserSubtitleInApp": { + "description": "Subtitle when in-app browser is preferred for extension verification" + }, + "extensionVerificationBrowserExternal": "External", + "@extensionVerificationBrowserExternal": { + "description": "Chip label for external browser verification mode" + }, + "extensionVerificationBrowserInApp": "В приложении", + "@extensionVerificationBrowserInApp": { + "description": "Chip label for in-app browser verification mode" + }, + "extensionVerificationUnavailable": "No verification page is available for {extension}. Retry the download to request a new challenge.", + "@extensionVerificationUnavailable": { + "description": "Shown when the app cannot retrieve a pending verification challenge", + "placeholders": { + "extension": { + "type": "String" + } + } + }, + "extensionVerificationHelpTitleManual": "Открыть верификацию вручную", + "@extensionVerificationHelpTitleManual": { + "description": "Dialog title when automatic browser launch for verification fails" + }, + "extensionVerificationHelpTitleWaiting": "Ожидание верификации", + "@extensionVerificationHelpTitleWaiting": { + "description": "Dialog title when verification is taking longer than expected" + }, + "extensionVerificationHelpMessageManual": "SpotiFLAC Mobile не смог автоматически открыть браузер. Откройте эту ссылку в браузере или скопируйте её вручную.", + "@extensionVerificationHelpMessageManual": { + "description": "Dialog message when automatic browser launch for verification fails" + }, + "extensionVerificationHelpMessageWaiting": "If the browser did not open, or verification finished but did not return to SpotiFLAC Mobile, open this link again or copy it manually.", + "@extensionVerificationHelpMessageWaiting": { + "description": "Dialog message when verification may need manual browser help" + }, + "extensionVerificationClose": "Закрыть", + "@extensionVerificationClose": { + "description": "Button to dismiss the extension verification help dialog" + }, + "extensionVerificationCopyLink": "Копировать", + "@extensionVerificationCopyLink": { + "description": "Button to copy the extension verification URL" + }, + "extensionVerificationLinkCopied": "Ссылка на верификацию скопирована", + "@extensionVerificationLinkCopied": { + "description": "Snackbar after copying the extension verification URL" + }, + "extensionVerificationOpenBrowser": "Открыть браузер", + "@extensionVerificationOpenBrowser": { + "description": "Button to open the extension verification URL in a browser" + }, + "settingsSearchHint": "Настройки поиска", + "@settingsSearchHint": { + "description": "Placeholder of the search field on the Settings tab" + }, + "settingsSearchNoResults": "Нет настроек, соответствующих \"{query}\"", + "@settingsSearchNoResults": { + "description": "Shown when a Settings search returns nothing", + "placeholders": { + "query": { + "type": "String" + } + } + }, "settingsGroupInterface": "Extensions & appearance", + "@settingsGroupInterface": { + "description": "Settings group covering look and feel" + }, "settingsGroupContent": "Content & metadata", - "settingsGroupDownloads": "Downloads & files", - "settingsGroupSystem": "System", - "settingsGroupHelp": "About & support", - "collectionExportM3u": "Export as M3U8", - "collectionExportM3uDone": "Exported {exported} of {total} tracks", - "collectionExportM3uNone": "No downloaded files to export", - "collectionExportM3uFailed": "Export failed", - "trackOpenOn": "Open on...", - "trackOpenOnNoLinks": "No platform links found for this track.", - "libraryReviewDuplicates": "Review duplicates", - "libraryReviewDuplicatesSubtitle": "Find tracks stored more than once", - "duplicatesTitle": "Duplicates", - "duplicatesEmpty": "No duplicate tracks found.", - "duplicatesKeepBest": "Keep best", - "duplicatesKeepBestMessage": "Delete {count} lower-quality copies of \"{trackName}\"?", - "duplicatesDeleteCopyMessage": "Delete this copy of \"{trackName}\"?", - "downloadAutoConvert": "Auto-convert after download", - "downloadAutoConvertSubtitle": "Convert completed downloads to a smaller lossy format. The original is replaced only after conversion succeeds.", - "downloadAutoConvertFormat": "Output format", - "downloadAutoConvertFormatSubtitle": "Choose the lossy format used for newly completed downloads.", - "downloadAutoConvertBitrate": "Output quality", - "downloadAutoConvertBitrateSubtitle": "Higher bitrates preserve more detail but create larger files.", - "downloadAutoConvertMp3Subtitle": "Best compatibility across players and devices", - "downloadAutoConvertM4aSubtitle": "Efficient AAC audio in an M4A container", - "downloadAutoConvertOpusSubtitle": "Best efficiency for modern players", - "appearanceForceBlur": "Always use blur effects", - "appearanceForceBlurSubtitle": "Enable the navigation bar blur even on devices where it is off by default. May cost performance.", - "recentClearAllMessage": "Clear all recent activity? Download history and music files will not be deleted.", - "libraryAddFolder": "Add library folder", - "libraryAddFolderSubtitle": "Internal storage, SD card, SSD, or another external drive", - "librarySourceOnline": "Online", - "librarySourceOffline": "Offline. Reconnect the storage to restore these tracks", - "librarySourceDisabled": "Disabled", - "librarySourceScanCount": "{scanned} of {total} files scanned ({progress}%)", - "libraryExternalStorage": "External storage", - "libraryRemoveFolder": "Remove library folder", - "libraryRemoveFolderMessage": "Remove this folder and its indexed tracks from SpotiFLAC Mobile? Audio files on the storage will not be deleted.", - "trackReEnrichModeIsrc": "ISRC only", - "trackReEnrichModeIsrcSubtitle": "Find and add the recording identifier without changing other tags", - "trackReEnrichModeMissing": "Fill missing tags", - "trackReEnrichModeMissingSubtitle": "Keep existing values and fill only fields that are empty", - "trackReEnrichModeReplace": "Update selected tags", - "trackReEnrichModeReplaceSubtitle": "Choose which existing values may be replaced by online metadata", - "trackReEnrichFieldsTitle": "Tags to update", - "trackReEnrichReview": "Review changes", - "trackReEnrichReviewTitle": "Review metadata changes", - "trackReEnrichReviewSubtitle": "{changeCount} proposed changes across {trackCount} tracks", - "trackReEnrichNoChanges": "No metadata changes were found for the selected tracks.", - "trackReEnrichApplyChanges": "Apply changes", - "trackReEnrichRefreshOnline": "Refresh from online", - "editMetadataAutoFillSource": "Metadata source", - "editMetadataAutoFillSourceAutomatic": "Automatic (provider priority)", - "editMetadataAutoFillFind": "Find metadata", - "editMetadataAutoFillPreview": "Data from {source}", - "editMetadataAutoFillCoverAvailable": "Cover artwork available", - "editMetadataAutoFillApply": "Apply selected data", - "editMetadataAutoFillDoneFromSource": "Filled {count} {count, plural, =1{field} other{fields}} from {source}", - "queuePlaylistCount": "{count, plural, =1{1 playlist} other{{count} playlists}}", - "queueEmptyPlaylistsSubtitle": "Create a playlist to organize your tracks", - "libraryDefaultView": "Default view", - "libraryDefaultViewLastUsed": "Last used", - "audioAnalysisCutoffNotDetected": "Not detected", - "queueCancelledTitle": "Download cancelled", - "queueCancelledMessage": "This download was cancelled. Retry it or remove it from the queue.", - "trackCoverResolution": "Cover resolution", - "trackCoverResolutionHint": "Sets the longest edge when saved. Enlarging does not add image detail.", - "trackCoverResizeFailed": "The cover image could not be resized. Please try another size or image.", - "queueDownloadNext": "Download next", - "queueMoveUp": "Move up", - "queueMoveDown": "Move down", - "editMetadataMusicBrainzButton": "Fetch from MusicBrainz", - "editMetadataMusicBrainzFilled": "Updated from MusicBrainz", - "editMetadataMusicBrainzNothing": "Nothing found on MusicBrainz", - "editMetadataMusicBrainzNeedsIsrc": "Requires an ISRC tag", - "nowPlayingRepeatOff": "Repeat off", - "nowPlayingRepeatAll": "Repeat all", - "nowPlayingRepeatOne": "Repeat one", - "queueNetworkFailedOffline": "{count} downloads failed while offline", - "trackAlbumType": "Release Type", - "editMetadataFieldAlbumTypeHint": "Album, single, EP, compilation...", - "editMetadataFieldExplicit": "Explicit", - "editMetadataFieldExplicitHint": "Mark this track as containing explicit content", - "metadataExplicitValue": "Explicit", - "editMetadataFieldUpc": "UPC / Barcode", - "editMetadataFieldUpcHint": "Numeric UPC, EAN, or GTIN", - "libraryFilterMetadataMissingIsrc": "Missing ISRC" + "@settingsGroupContent": { + "description": "Settings group covering the library, metadata and lyrics" + }, + "settingsGroupDownloads": "Загрузки и файлы", + "@settingsGroupDownloads": { + "description": "Settings group covering download behaviour and storage" + }, + "settingsGroupSystem": "Система", + "@settingsGroupSystem": { + "description": "Settings group covering app-level data, cache and logs" + }, + "settingsGroupHelp": "О сервисе и поддержка", + "@settingsGroupHelp": { + "description": "Settings group covering the about page and donations" + }, + "libraryFilterMetadataMissingLyrics": "Текст отсутствует", + "@libraryFilterMetadataMissingLyrics": { + "description": "Filter option for tracks without embedded or sidecar lyrics" + }, + "trackOptionCopyTrackName": "Copy track name", + "@trackOptionCopyTrackName": { + "description": "Track menu action that copies the track title" + }, + "trackOptionCopyArtist": "Copy artist", + "@trackOptionCopyArtist": { + "description": "Track menu action that copies the artist name" + }, + "trackOptionCopyTrackAndArtist": "Copy track and artist", + "@trackOptionCopyTrackAndArtist": { + "description": "Track menu action that copies the track title and artist" + }, + "metadataCopyValue": "Copy value", + "@metadataCopyValue": { + "description": "Metadata menu action that copies only the selected value" + }, + "metadataCopyField": "Copy field and value", + "@metadataCopyField": { + "description": "Metadata menu action that copies the selected key and value" + }, + "mornyeShowTabs": "Show tabs", + "mornyeSearch": "Поиск", + "mornyeContinuePlaying": "Continue Playing", + "metadataCopyAll": "Скопировать все метаданные", + "@metadataCopyAll": { + "description": "Metadata menu action that copies every visible key and value" + }, + "optionsEmbeddedCoverSize": "Embedded Cover Size", + "@optionsEmbeddedCoverSize": { + "description": "Metadata setting that limits downloaded artwork resolution before it is embedded" + }, + "optionsEmbeddedCoverSizeDescription": "Downscale remotely downloaded cover art before embedding it. Images already within the limit are kept unchanged.", + "@optionsEmbeddedCoverSizeDescription": { + "description": "Description shown in the embedded cover size picker" + }, + "mornyeFavorite": "Favorite", + "mornyeGoToArtist": "Перейти к исполнителю", + "@mornyeFavorite": { + "description": "Compact context menu action that adds a track to Loved" + }, + "mornyeFavorited": "Favorited", + "@mornyeFavorited": { + "description": "Selected state of the compact favorite action" + }, + "autoMixDescription": "Blend songs with beat matching and pitch-preserving tempo adjustment. Uses crossfade when beats cannot be matched.", + "autoMixOn": "AutoMix on", + "autoMixOff": "AutoMix off", + "profileTitle": "Профиль", + "profileSetUp": "Настройте свой профиль", + "profileEdit": "Изменить имя и фото", + "backupIncludesProfile": "Включает в себя имя профиля и фото", + "profileName": "Имя", + "profileNameHint": "Ваше имя", + "profileChangePhoto": "Выбрать фото", + "profileRemovePhoto": "Удалить фото", + "profilePhotoError": "Выберите изображение размером менее 20 МБ.", + "profileSaveError": "Не удалось сохранить ваш профиль. Пожалуйста, попробуйте еще раз.", + "optionsEmbeddedCoverSizeOriginal": "Оригинальное разрешение", + "@optionsEmbeddedCoverSizeOriginal": { + "description": "Option that preserves the provider artwork at its original resolution" + } } diff --git a/lib/l10n/arb/app_tr.arb b/lib/l10n/arb/app_tr.arb index c6473d60..59541367 100644 --- a/lib/l10n/arb/app_tr.arb +++ b/lib/l10n/arb/app_tr.arb @@ -1,78 +1,278 @@ { + "upgradeIntroWelcome": "Welcome to\nSpotiFLAC-Mobile 5.0", + "upgradeIntroThemeTitle": "Make it\nyour own.", + "upgradeIntroThemeBody": "Choose a look. Your choice applies immediately, and you can change it later in Appearance.", + "upgradeIntroThemeMaterialBody": "The familiar layout, with Material controls and your accent color.", + "upgradeIntroThemeMornyeBody": "Glass navigation, a redesigned Library and an immersive player.", + "upgradeIntroRustTitle": "A new engine.\nBuilt with Rust.", + "upgradeIntroRustBody": "In 5.0, the app’s backend has moved from Go to Rust. It is the engine working behind the screens you use every day.", + "upgradeIntroRustEngineTitle": "Working behind the scenes", + "upgradeIntroRustEngineBody": "Rust handles downloads, audio metadata, library scanning and the extension runtime on Android and iOS.", + "upgradeIntroRustMemoryTitle": "More careful with memory", + "upgradeIntroRustMemoryBody": "Reused buffers and fewer copies reduce temporary allocations when processing artwork and extension data.", + "upgradeIntroRustKeepTitle": "Keep your music", + "upgradeIntroRustKeepBody": "No need to download your collection again. Your saved music and settings stay in place, with no new setup required.", + "upgradeIntroWelcomeBody": "A quick look at what has changed, and where to find it.", + "upgradeIntroMornyeBody": "A new look for your player, lyrics and navigation.", + "upgradeIntroLibrarySummary": "Browse your music by playlist, artist or album.", + "upgradeIntroRepoSummary": "Choose your music sources and providers through extensions.", + "upgradeIntroLibraryTitle": "Get to know\nyour Library.", + "upgradeIntroLibraryBody": "In Mornye, browse by category or find your albums in Recently Added.", + "upgradeIntroDownloadsBody": "Pause and retry from Downloads at the top right. Finished music moves to Recently Added.", + "upgradeIntroSearchBody": "Search saved music here. The separate Search tab looks through your extensions.", + "upgradeIntroPlayerTitle": "Set up\nyour player.", + "upgradeIntroPlayerBody": "You can change your theme and playback options at any time. Here is where to find them.", + "upgradeIntroAppearanceBody": "Change themes in Settings → Appearance. In Mornye, scroll down for compact navigation; scroll up to expand it.", + "upgradeIntroAutoMixBody": "Match tempo and beats between tracks. Enable it in Settings → Local Library → Playback. Off by default.", + "upgradeIntroSettingsBody": "In Mornye, tap your profile on Home to open Settings and edit your name and photo.", + "upgradeIntroSkip": "Skip", + "upgradeIntroContinue": "Continue", + "upgradeIntroDone": "Start listening", + "upgradeIntroReplay": "What’s new in 5.0", + "cacheMotionArtwork": "Offline motion covers", + "cacheMotionArtworkDesc": "Album videos saved with downloads. Removing them keeps your music files and static covers.", + "nowPlayingVolume": "Volume", + "@nowPlayingVolume": { + "description": "System volume control label in the Mornye player" + }, + "appearanceStyle": "App Style", + "@appearanceStyle": { + "description": "Appearance section for choosing the app visual style" + }, + "discordRichPresence": "Discord Rich Presence", + "discordPresenceDescription": "Share the track playing in the built-in player on Discord. Requires Discord to be installed and signed in.", + "discordPresenceMissing": "Install Discord and sign in, then turn this setting off and on again.", + "discordPresenceUnavailable": "Discord Rich Presence is unavailable in this build or on this device.", "@@locale": "tr", "@@last_modified": "2026-04-28", - "libraryEnableLocalLibrarySubtitle": "Mevcut müziğinizi tarayın ve takip edin", - "@libraryEnableLocalLibrarySubtitle": { - "description": "Subtitle for enable toggle" + "appName": "SpotiFLAC Mobile", + "@appName": { + "description": "App name - DO NOT TRANSLATE" }, - "@audioAnalysisCodec": { - "description": "Audio codec metric label" + "navHome": "Ana sayfa", + "@navHome": { + "description": "Bottom navigation - Home tab" }, - "extensionUtilityFunctions": "Utility Functions", - "@extensionUtilityFunctions": { - "description": "Capability label for utility-only extensions" + "navLibrary": "Kitaplığın", + "@navLibrary": { + "description": "Bottom navigation - Library tab" }, - "logClearLogsMessage": "Tüm kayıtları temizlemek istediğinize emin misiniz?", - "@logClearLogsMessage": { - "description": "Clear logs confirmation message" + "navSettings": "Ayarlar", + "@navSettings": { + "description": "Bottom navigation - Settings tab" }, - "@storeClearFilters": { - "description": "Button to clear all filters" + "navStore": "Depo", + "@navStore": { + "description": "Bottom navigation - Extension repo tab" }, - "cacheCleanupUnused": "Cleanup unused data", - "@cacheCleanupUnused": { - "description": "Action title for cleaning unused entries" + "homeTitle": "Ana sayfa", + "@homeTitle": { + "description": "Home screen title" }, - "trackConvertDitherNone": "None", - "@trackConvertDitherNone": { - "description": "Lossless conversion dither option with no dithering applied" + "homeSubtitle": "Desteklenen bir URL yapıştırın veya isme göre arayın", + "@homeSubtitle": { + "description": "Subtitle shown below search box" }, - "libraryTracksUnit": "{count, plural, =1{parça} other{parçalar}}", - "@libraryTracksUnit": { - "description": "Unit label for tracks count (without the number itself)", + "homeEmptyTitle": "Henüz arama sağlayıcısı yok", + "@homeEmptyTitle": { + "description": "Title shown on home when no providers are available yet" + }, + "homeEmptySubtitle": "Devam etmek için bir eklenti yükleyin.", + "@homeEmptySubtitle": { + "description": "Subtitle shown on home when no providers are available yet" + }, + "homeSupports": "Desteklenen linkler: Şarkı, Albüm, Çalma Listesi, Sanatçı linkleri", + "@homeSupports": { + "description": "Info text about supported URL types" + }, + "homeRecent": "En son", + "@homeRecent": { + "description": "Section header for recent searches" + }, + "historyFilterAll": "Tümü", + "@historyFilterAll": { + "description": "Filter chip - show all items" + }, + "historyFilterAlbums": "Albümler", + "@historyFilterAlbums": { + "description": "Filter chip - show albums only" + }, + "historyFilterSingles": "Single'lar", + "@historyFilterSingles": { + "description": "Filter chip - show singles only" + }, + "libraryRecentlyAdded": "Recently Added", + "libraryDownloads": "Downloads", + "libraryNoActiveDownloads": "No active downloads", + "librarySearchHint": "Search your library", + "libraryEmptyCollection": "Your music will appear here", + "historySearchHint": "Arama geçmişi...", + "@historySearchHint": { + "description": "Search bar placeholder in history" + }, + "settingsTitle": "Ayarlar", + "@settingsTitle": { + "description": "Settings screen title" + }, + "settingsDownload": "İndirme", + "@settingsDownload": { + "description": "Settings section - download options" + }, + "settingsAppearance": "Görünüm", + "@settingsAppearance": { + "description": "Settings section - visual customization" + }, + "settingsExtensions": "Eklentiler", + "@settingsExtensions": { + "description": "Settings section - extension management" + }, + "settingsAbout": "Hakkında", + "@settingsAbout": { + "description": "Settings section - app info" + }, + "downloadTitle": "İndirme", + "@downloadTitle": { + "description": "Download settings page title" + }, + "downloadAskQualitySubtitle": "Her indirmeden önce kalite seçim ekranını göster", + "@downloadAskQualitySubtitle": { + "description": "Subtitle for ask quality toggle" + }, + "downloadFilenameFormat": "Dosya adı formatı", + "@downloadFilenameFormat": { + "description": "Setting for output filename pattern" + }, + "downloadSingleFilenameFormat": "Single Dosya Adı Formatı", + "@downloadSingleFilenameFormat": { + "description": "Setting for output filename pattern for singles/EPs" + }, + "downloadSingleFilenameFormatDescription": "Single ve EP'ler için dosya adı örneği. Albüm formatıyla aynı etiketleri kullanır.", + "@downloadSingleFilenameFormatDescription": { + "description": "Subtitle description for single filename format setting" + }, + "downloadFolderOrganization": "Dosya Organizasyonu", + "@downloadFolderOrganization": { + "description": "Title of the folder organization picker bottom sheet" + }, + "appearanceTitle": "Görünüm", + "@appearanceTitle": { + "description": "Appearance settings page title" + }, + "appearanceThemeSystem": "Sistem", + "@appearanceThemeSystem": { + "description": "Follow system theme" + }, + "appearanceThemeLight": "Açık", + "@appearanceThemeLight": { + "description": "Light theme" + }, + "appearanceThemeDark": "Koyu", + "@appearanceThemeDark": { + "description": "Dark theme" + }, + "appearanceDynamicColor": "Dinamik Renk", + "@appearanceDynamicColor": { + "description": "Material You dynamic colors" + }, + "appearanceDynamicColorSubtitle": "Duvar kağıdının renklerini kullan", + "@appearanceDynamicColorSubtitle": { + "description": "Subtitle for dynamic color" + }, + "appearanceHistoryView": "Geçmiş Düzeni", + "@appearanceHistoryView": { + "description": "Layout style for history" + }, + "appearanceHistoryViewList": "Liste", + "@appearanceHistoryViewList": { + "description": "List layout option" + }, + "appearanceHistoryViewGrid": "Izgara", + "@appearanceHistoryViewGrid": { + "description": "Grid layout option" + }, + "optionsPrimaryProvider": "Ana Kaynek", + "@optionsPrimaryProvider": { + "description": "Main search provider setting" + }, + "optionsPrimaryProviderSubtitle": "Parça veya albüm adına göre arama yapmak için kullanılan hizmet", + "@optionsPrimaryProviderSubtitle": { + "description": "Subtitle for primary provider" + }, + "optionsUsingExtension": "Kullanılan eklenti: {extensionName}", + "@optionsUsingExtension": { + "description": "Shows active extension name", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "optionsDefaultSearchTab": "Varsayılan Arama Sekmesi", + "@optionsDefaultSearchTab": { + "description": "Title for the preferred default search tab setting" + }, + "optionsDefaultSearchTabSubtitle": "Yeni arama sonuçları için hangi sekmenin önce açılacağını seçin.", + "@optionsDefaultSearchTabSubtitle": { + "description": "Subtitle for the preferred default search tab setting" + }, + "optionsAutoFallback": "Diğerlerini dene", + "@optionsAutoFallback": { + "description": "Auto-retry with other services" + }, + "optionsAutoFallbackSubtitle": "İndirme başarısız olursa diğer hizmetleri dene", + "@optionsAutoFallbackSubtitle": { + "description": "Subtitle for auto fallback" + }, + "optionsEmbedLyrics": "Şarkı Sözlerini Göm", + "@optionsEmbedLyrics": { + "description": "Embed lyrics in audio files" + }, + "optionsEmbedLyricsSubtitle": "İndirdiğiniz parçaların yanına senkronize edilmiş şarkı sözlerini kaydedin", + "@optionsEmbedLyricsSubtitle": { + "description": "Subtitle for embed lyrics" + }, + "optionsReplayGain": "ReplayGain", + "@optionsReplayGain": { + "description": "Title for ReplayGain setting toggle" + }, + "optionsReplayGainSubtitleOn": "Ses yüksekliğini tara ve ReplayGain etiketlerini göm (EBU R128)", + "@optionsReplayGainSubtitleOn": { + "description": "Subtitle when ReplayGain is enabled" + }, + "optionsReplayGainSubtitleOff": "Devre dışı: Ses normalleştirme etiketi yok", + "@optionsReplayGainSubtitleOff": { + "description": "Subtitle when ReplayGain is disabled" + }, + "trackReplayGain": "Rescan ReplayGain", + "@trackReplayGain": { + "description": "Three-dot menu option to scan loudness and write ReplayGain tags" + }, + "trackReplayGainScanning": "Analyzing loudness...", + "@trackReplayGainScanning": { + "description": "Snackbar/progress message while scanning ReplayGain for a single track" + }, + "trackReplayGainSuccess": "ReplayGain tags added", + "@trackReplayGainSuccess": { + "description": "Snackbar message after ReplayGain tags written for a single track" + }, + "trackReplayGainFailed": "Failed to add ReplayGain tags", + "@trackReplayGainFailed": { + "description": "Snackbar message when ReplayGain scan/write fails" + }, + "selectionReplayGainCount": "ReplayGain ({count})", + "@selectionReplayGainCount": { + "description": "Batch selection action button label for ReplayGain", "placeholders": { "count": { "type": "int" } } }, - "folderOrganizationNone": "Organizasyon yok", - "@folderOrganizationNone": { - "description": "Folder option - flat structure" - }, - "@storeRepoUrlHint": { - "description": "Hint/placeholder for the repository URL input field" - }, - "@trackConvertConfirmTitle": { - "description": "Confirmation dialog title" - }, - "@extensionPatternsCount": { - "description": "URL patterns count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "audioAnalysisContainer": "Container", - "@audioAnalysisContainer": { - "description": "Audio container metric label" - }, - "libraryAutoScanOff": "Kapalı", - "@libraryAutoScanOff": { - "description": "Auto scan disabled" - }, - "shareSheetLinkCopied": "{service} link copied", - "@shareSheetLinkCopied": { - "description": "Snackbar after copying a cross-service link", - "placeholders": { - "service": {} - } - }, - "providerPriorityFallbackExtensionsDescription": "Otomatik geri dönüş sırasında hangi yüklü indirme uzantılarının kullanılabileceğini seçin.", - "@providerPriorityFallbackExtensionsDescription": { - "description": "Section description for extension fallback selection" + "replayGainBatchConfirmTitle": "Add ReplayGain", + "@replayGainBatchConfirmTitle": { + "description": "Title of the batch ReplayGain confirmation dialog" }, + "replayGainBatchConfirmMessage": "Analyze loudness and write ReplayGain tags to {count} track(s)?", "@replayGainBatchConfirmMessage": { "description": "Message of the batch ReplayGain confirmation dialog", "placeholders": { @@ -81,75 +281,12 @@ } } }, - "@extensionsHomeFeedUse": { - "description": "Extensions page - subtitle for a specific extension home feed option", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "selectionShareCount": "Share {count} {count, plural, =1{track} other{tracks}}", - "@selectionShareCount": { - "description": "Share button text with count in selection mode", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@storeExtensionsCount": { - "description": "Store extension result count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@logSearchHint": { - "description": "Log search placeholder" - }, - "@audioAnalysisSamples": { - "description": "Total samples metric label" - }, - "trackCoverReplace": "Replace Cover", - "@trackCoverReplace": { - "description": "Button label for replacing selected cover art" - }, - "@discographyAddedToQueue": { - "description": "Snackbar - tracks added from discography", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadAppleElrcWordSyncEnabled": "Raw word-by-word timestamps preserved", - "@downloadAppleElrcWordSyncEnabled": { - "description": "Subtitle when Apple Music eLRC word sync is enabled" - }, - "@nowPlayingDetails": { - "description": "Menu item and section title for track metadata details" - }, - "@trackGenre": { - "description": "Metadata label - music genre" - }, - "recentTypeSong": "Şarkı", - "@recentTypeSong": { - "description": "Recent access item type - song/track" - }, - "logShareLogs": "Kayıtları paylaş", - "@logShareLogs": { - "description": "Share button tooltip" - }, - "@storeFilterLyrics": { - "description": "Repo filter - lyrics providers" - }, - "extensionsInstallButton": "Uzantı Yükle", - "@extensionsInstallButton": { - "description": "Button to install extension from file" + "replayGainBatchAnalyzing": "Analyzing ReplayGain...", + "@replayGainBatchAnalyzing": { + "description": "Progress dialog title while batch scanning ReplayGain" }, "replayGainBatchSuccess": "ReplayGain added to {success} of {total} tracks", + "replayGainUnsupportedDecoder": "Some tracks could not be analyzed because their audio codec is not supported by the ReplayGain decoder. Their files were not changed.", "@replayGainBatchSuccess": { "description": "Snackbar after batch ReplayGain completes", "placeholders": { @@ -161,548 +298,536 @@ } } }, - "nowPlayingMinimize": "Minimize", - "@nowPlayingMinimize": { - "description": "Tooltip for minimizing the now playing screen" + "optionsArtistTagMode": "Sanatçı Etiketi Modu", + "@optionsArtistTagMode": { + "description": "Setting title for how artist metadata is written into files" }, - "logIssueNetworkErrorSuggestion": "Check your internet connection", - "@logIssueNetworkErrorSuggestion": { - "description": "Diagnostic badge suggestion for generic network errors" + "optionsArtistTagModeDescription": "Birden fazla sanatçının gömülü etiketlere nasıl yazılacağını seçin.", + "@optionsArtistTagModeDescription": { + "description": "Bottom-sheet description for artist tag mode setting" }, - "extensionsNoExtensions": "Hiçbir eklenti kurulmamış", - "@extensionsNoExtensions": { - "description": "Empty state - no extensions" + "optionsArtistTagModeJoined": "Birleşik tek değer", + "@optionsArtistTagModeJoined": { + "description": "Artist tag mode option that joins multiple artists into one value" }, - "@cacheRefresh": { - "description": "Tooltip for refresh button on cache management page" + "optionsArtistTagModeJoinedSubtitle": "Maksimum oynatıcı uyumluluğu için 'Sanatçı A, Sanatçı B' şeklinde tek bir SANATÇI değeri yazın.", + "@optionsArtistTagModeJoinedSubtitle": { + "description": "Subtitle for joined artist tag mode" }, - "@snackbarHistoryCleared": { - "description": "Snackbar - history deleted" + "optionsArtistTagModeSplitVorbis": "FLAC/Opus için ayrılmış etiketler", + "@optionsArtistTagModeSplitVorbis": { + "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" }, - "cueSplitFailed": "CUE bölme işlemi başarısız oldu", - "@cueSplitFailed": { - "description": "Snackbar when CUE split fails" - }, - "trackConvertLosslessSuffix": "Lossless", - "@trackConvertLosslessSuffix": { - "description": "Suffix used in converted lossless quality labels" - }, - "homeSubtitle": "Desteklenen bir URL yapıştırın veya isme göre arayın", - "@homeSubtitle": { - "description": "Subtitle shown below search box" - }, - "selectionBatchConvertConfirmMessageLossless": "Convert {count} {count, plural, =1{track} other{tracks}} to {format}? (Lossless — no quality loss)\n\nOriginal files will be deleted after conversion.", - "@selectionBatchConvertConfirmMessageLossless": { - "description": "Confirmation dialog message for lossless batch conversion", - "placeholders": { - "count": { - "type": "int" - }, - "format": { - "type": "String" - } - } - }, - "@extensionVerificationHelpMessageManual": { - "description": "Dialog message when automatic browser launch for verification fails" - }, - "queueRateLimitMessage": "This track may still be available. Wait a few minutes, reduce parallel downloads, then retry.", - "@queueRateLimitMessage": { - "description": "Explanation shown on a failed queue item when the download service rate limits requests" - }, - "searchSortDateOldest": "Yayın Tarihi (En eski)", - "@searchSortDateOldest": { - "description": "Sort option - oldest release first" - }, - "nowPlayingShuffleOn": "Shuffle on", - "@nowPlayingShuffleOn": { - "description": "Tooltip when shuffle mode is enabled" - }, - "sectionColor": "Renk", - "@sectionColor": { - "description": "Settings section header" - }, - "@providerPriorityFallbackExtensionsHint": { - "description": "Hint below the extension fallback selection list" - }, - "cacheCoverImage": "Kapak resmi önbelleği", - "@cacheCoverImage": { - "description": "Cache item title for persistent cover images" - }, - "@navSettings": { - "description": "Bottom navigation - Settings tab" - }, - "@trackCoverReplaceNotice": { - "description": "Notice shown when a new cover has been selected but not saved yet" - }, - "cueSplitConfirmTitle": "Bölünmüş CUE Albümü", - "@cueSplitConfirmTitle": { - "description": "CUE split confirmation dialog title" - }, - "@trackDeleteConfirmMessage": { - "description": "Delete confirmation message" - }, - "cacheClearSuccess": "Cleared: {target}", - "@cacheClearSuccess": { - "description": "Snackbar after clearing selected cache", - "placeholders": { - "target": { - "type": "String" - } - } - }, - "editMetadataFieldCover": "Cover Art", - "@editMetadataFieldCover": { - "description": "Chip label for cover art field in auto-fill selector" - }, - "snackbarSelectExtFile": "Lütfen .spotiflac-ext dosyasını seçin", - "@snackbarSelectExtFile": { - "description": "Snackbar - wrong file type selected" - }, - "libraryFilterFormat": "Format", - "@libraryFilterFormat": { - "description": "Filter section - file format" - }, - "@downloadLossyAac": { - "description": "Lossy format option - AAC in M4A container at 320kbps" - }, - "@setupNext": { - "description": "Next button text" - }, - "@releaseTypeSingle": { - "description": "Badge label for single releases" - }, - "@optionsDefaultSearchTab": { - "description": "Title for the preferred default search tab setting" - }, - "trackConvertLosslessOutputWithCap": "Lossless output with {quality} cap", - "@trackConvertLosslessOutputWithCap": { - "description": "Hint shown when lossless conversion will cap bit depth or sample rate", - "placeholders": { - "quality": { - "type": "String" - } - } - }, - "bulkDownloadSelectPlaylists": "Select playlists to download", - "@bulkDownloadSelectPlaylists": { - "description": "Button label when no playlists are selected for download" - }, - "artistOptionAddToFavorites": "Add to Favorite Artists", - "@artistOptionAddToFavorites": { - "description": "Action label - add artist to favorite artists" - }, - "@timeJustNow": { - "description": "Relative time - less than a minute ago" - }, - "downloadLossyOpus256": "Opus 256kbps", - "@downloadLossyOpus256": { - "description": "Lossy format option - Opus 256kbps" - }, - "discographySinglesOnlySubtitle": "{albumCount} tekliden {count} parça", - "@discographySinglesOnlySubtitle": { - "description": "Subtitle showing singles tracks count", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } + "optionsArtistTagModeSplitVorbisSubtitle": "FLAC ve Opus için her sanatçıya ayrı bir etiket yazın; MP3 ve M4A birleşik kalır.", + "@optionsArtistTagModeSplitVorbisSubtitle": { + "description": "Subtitle for split Vorbis artist tag mode" }, "optionsExtensionStore": "Eklenti Deposu", "@optionsExtensionStore": { "description": "Show/hide repo tab" }, - "libraryDownloadsHistoryExcluded": "{count} from Downloads history (excluded from list)", - "@libraryDownloadsHistoryExcluded": { - "description": "Library count note for downloaded history items excluded from the local list", - "placeholders": { - "count": { - "type": "int" - } - } + "optionsExtensionStoreSubtitle": "Gezinme menüsünde Depo sekmesini göster", + "@optionsExtensionStoreSubtitle": { + "description": "Subtitle for extension repo toggle" }, - "@errorUrlFetchFailed": { - "description": "Error message - generic URL fetch failure" + "optionsCheckUpdates": "Güncelleştirmeleri Denetle", + "@optionsCheckUpdates": { + "description": "Auto update check toggle" }, - "@trackOptionAddToWishlist": { - "description": "Bottom sheet action label - add track to wishlist" + "optionsCheckUpdatesSubtitle": "Yeni sürüm çıktığında bildir", + "@optionsCheckUpdatesSubtitle": { + "description": "Subtitle for update check" }, - "discographySinglesOnly": "Yalnızca Single'lar ve EP'ler", - "@discographySinglesOnly": { - "description": "Option - download only singles" + "optionsUpdateChannel": "Güncelleme Kanalı", + "@optionsUpdateChannel": { + "description": "Stable vs preview releases" }, - "@downloadSongLinkRegionDesc": { - "description": "Description in SongLink region picker" + "optionsUpdateChannelStable": "Sadece stabil sürümler", + "@optionsUpdateChannelStable": { + "description": "Only stable updates" }, - "notifEmbeddingMetadata": "Embedding metadata...", - "@notifEmbeddingMetadata": { - "description": "Notification body while embedding metadata into a downloaded track" + "optionsUpdateChannelPreview": "Önizleme sürümlerini al", + "@optionsUpdateChannelPreview": { + "description": "Include beta/preview updates" }, - "@settingsLocalLibrarySubtitle": { - "description": "Subtitle for local library settings" + "optionsUpdateChannelWarning": "Önizleme sürümleri hatalar veya tamamlanmamış özellikler içerebilir", + "@optionsUpdateChannelWarning": { + "description": "Warning about preview channel" }, - "@downloadLocationSubtitle": { - "description": "Subtitle shown in the download location picker sheet" + "optionsClearHistory": "İndirme Geçmişini Temizle", + "@optionsClearHistory": { + "description": "Delete all download history" }, - "trackConvertOriginalQuality": "Original quality", - "@trackConvertOriginalQuality": { - "description": "Label when no bit depth or sample rate cap is applied during lossless conversion" + "optionsClearHistorySubtitle": "İndirilen bütün şarkıları geçmişten temizle", + "@optionsClearHistorySubtitle": { + "description": "Subtitle for clear history" }, - "nowPlayingTabLyrics": "Lyrics", - "@nowPlayingTabLyrics": { - "description": "Tab label for the lyrics view" + "optionsDetailedLogging": "Detaylı Günlükleme", + "@optionsDetailedLogging": { + "description": "Enable verbose logs for debugging" }, - "selectionConvertCount": "Convert {count} {count, plural, =1{track} other{tracks}}", - "@selectionConvertCount": { - "description": "Convert button text with count in selection mode", - "placeholders": { - "count": { - "type": "int" - } - } + "optionsDetailedLoggingOn": "Detaylı günlük kayıt ediliyor", + "@optionsDetailedLoggingOn": { + "description": "Status when logging enabled" }, - "@extensionsInstalledSection": { - "description": "Section header - installed extensions" + "optionsDetailedLoggingOff": "Hata bildirmek için aç", + "@optionsDetailedLoggingOff": { + "description": "Status when logging disabled" }, - "@downloadNetworkCompatibilityModeDisabled": { - "description": "Subtitle when network compatibility mode is off" + "extensionsTitle": "Eklentiler", + "@extensionsTitle": { + "description": "Extensions page title" }, - "nowPlayingShuffleLibrary": "Shuffle library", - "@nowPlayingShuffleLibrary": { - "description": "Button label to shuffle and play the entire local library" + "extensionsDisabled": "Devre Dışı", + "@extensionsDisabled": { + "description": "Extension status - inactive" }, - "trackReEnrichFieldCover": "Cover Art", - "@trackReEnrichFieldCover": { - "description": "Checkbox label for cover art field in re-enrich" - }, - "tutorialExtensionsTip3": "Connect accounts when required and keep extensions up to date", - "@tutorialExtensionsTip3": { - "description": "Tutorial extensions tip 3" - }, - "@cacheCleanupUnusedDesc": { - "description": "Description of what cleanup unused data does" - }, - "a11yOpenAlbum": "Open album {albumName}", - "@a11yOpenAlbum": { - "description": "Accessibility label for opening an album", - "placeholders": { - "albumName": { - "type": "String" - } - } - }, - "@settingsLyrics": { - "description": "Settings menu item - lyrics settings" - }, - "nowPlayingQueueEmpty": "Queue is empty", - "@nowPlayingQueueEmpty": { - "description": "Empty state when the playback queue has no items" - }, - "@settingsDownload": { - "description": "Settings section - download options" - }, - "notifTracksDownloadedSuccess": "{count, plural, =1{1 track downloaded successfully} other{{count} tracks downloaded successfully}}", - "@notifTracksDownloadedSuccess": { - "description": "Notification body for queue complete - how many tracks were downloaded", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storeCategoryDownload": "Download", - "@storeCategoryDownload": { - "description": "Store extension category - download" - }, - "aboutTelegramChannel": "Telegram Kanalı", - "@aboutTelegramChannel": { - "description": "Link to Telegram channel" - }, - "@downloadedAlbumDiscHeader": { - "description": "Header for disc separator in multi-disc albums", - "placeholders": { - "discNumber": { - "type": "int", - "example": "1" - } - } - }, - "@recentEmpty": { - "description": "Empty state text for recent access list" - }, - "@backupRestoreConfirmMessage": { - "description": "Confirmation dialog message before restoring a backup" - }, - "@shareSheetCopyLink": { - "description": "Tooltip for copying a cross-service link" - }, - "regionCountryID": "Indonesia", - "@regionCountryID": { - "description": "Country name for SongLink region picker" - }, - "@libraryInLibrary": { - "description": "Badge shown on tracks that exist in local library" - }, - "extensionPostProcessingHooks": "Son İşlem Kancaları", - "@extensionPostProcessingHooks": { - "description": "Capability - post-processing" - }, - "@setupGrantPermission": { - "description": "Button to request permission" - }, - "storeFilterDownload": "İndir", - "@storeFilterDownload": { - "description": "Repo filter - download providers" - }, - "@collectionAddToPlaylist": { - "description": "Action to add a track to user playlist" - }, - "@discographyFailedToFetch": { - "description": "Error - some albums failed to load" - }, - "@updateWhatsNew": { - "description": "Changelog section title" - }, - "@setupLanguageDescription": { - "description": "Description for the language selection step in setup" - }, - "dialogDeleteSelectedTitle": "Seçileni Sil", - "@dialogDeleteSelectedTitle": { - "description": "Dialog title - delete selected items" - }, - "trackCoverPick": "Kapak Seç", - "@trackCoverPick": { - "description": "Button label for selecting cover art" - }, - "@collectionCreatePlaylist": { - "description": "Action to create a new playlist" - }, - "selectionBatchConvertSuccess": "Converted {success} of {total} tracks to {format}", - "@selectionBatchConvertSuccess": { - "description": "Snackbar after batch conversion completes", - "placeholders": { - "success": { - "type": "int" - }, - "total": { - "type": "int" - }, - "format": { - "type": "String" - } - } - }, - "qualityHiResFlacMax": "Hi-Res FLAC Max", - "@qualityHiResFlacMax": { - "description": "Quality option - maximum resolution FLAC" - }, - "audioAnalysisStereo": "Stereo", - "@audioAnalysisStereo": { - "description": "Audio channel layout label - stereo" - }, - "backupExportButton": "Create backup file", - "@backupExportButton": { - "description": "Button to create and share a backup file" - }, - "settingsApp": "Uygulama", - "@settingsApp": { - "description": "Settings menu item - app settings" - }, - "clickableInformationUnavailable": "{type} information not available", - "@clickableInformationUnavailable": { - "description": "Snackbar shown when clickable metadata cannot open a destination", - "placeholders": { - "type": { - "type": "String" - } - } - }, - "@logFilterLevel": { - "description": "Filter by log level" - }, - "sectionTheme": "Tema", - "@sectionTheme": { - "description": "Settings section header" - }, - "@extensionActionFailed": { - "description": "Fallback error when an extension action fails without details" - }, - "@downloadAppleElrcWordSync": { - "description": "Setting for preserving Apple Music word-by-word eLRC timestamps" - }, - "@extensionsNoCustomSearch": { - "description": "Empty state - no search providers" - }, - "@collectionPlaylistRemoveCover": { - "description": "Bottom sheet action to remove custom cover image from a playlist" - }, - "@tutorialWelcomeDesc": { - "description": "Tutorial welcome page description" - }, - "@tutorialSearchDesc": { - "description": "Tutorial search page description" - }, - "collectionAddedToWishlist": "\"{trackName}\" added to Wishlist", - "@collectionAddedToWishlist": { - "description": "Snackbar after adding track to wishlist", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "logAffectedDomains": "Affected: {domains}", - "@logAffectedDomains": { - "description": "Affected domains in log issue analysis", - "placeholders": { - "domains": { - "type": "String" - } - } - }, - "@folderOrganizationByArtistSubtitle": { - "description": "Subtitle for artist folder option" - }, - "errorNoTracksFound": "Parça bulunamadı", - "@errorNoTracksFound": { - "description": "Error - search returned no results" - }, - "providerPriorityTitle": "İndirme hizmetleri öncelik sırası", - "@providerPriorityTitle": { - "description": "Provider priority page title" - }, - "@notifUpdateReadyBody": { - "description": "Notification body when app update is ready to install", + "extensionsVersion": "Versiyon {version}", + "@extensionsVersion": { + "description": "Extension version display", "placeholders": { "version": { "type": "String" } } }, - "@settingsExtensions": { - "description": "Settings section - extension management" + "extensionsUninstall": "Kaldır", + "@extensionsUninstall": { + "description": "Uninstall extension button" }, - "trackDeleteConfirmTitle": "Cihazdan kaldırılsın mı?", - "@trackDeleteConfirmTitle": { - "description": "Delete confirmation title" + "storeTitle": "Uzantı Deposu", + "@storeTitle": { + "description": "Repo screen title" }, - "@settingsDownloadNetwork": { - "description": "Setting for network type preference" + "storeSearch": "Eklenti ara...", + "@storeSearch": { + "description": "Repo search placeholder" }, - "downloadProvidersNoneEnabled": "No providers enabled", - "@downloadProvidersNoneEnabled": { - "description": "Shown when no lyrics providers are active" + "storeInstall": "Kur", + "@storeInstall": { + "description": "Install extension button" }, - "@homeEmptySubtitle": { - "description": "Subtitle shown on home when no providers are available yet" + "storeInstalled": "Kuruldu", + "@storeInstalled": { + "description": "Already installed badge" }, - "trackReEnrichFieldBasicTags": "Album, Album Artist", - "@trackReEnrichFieldBasicTags": { - "description": "Checkbox label for basic tags in re-enrich (title/artist are never overwritten)" + "storeUpdate": "Güncelle", + "@storeUpdate": { + "description": "Update available button" }, - "@audioAnalysisSpectralCutoff": { - "description": "Estimated spectral cutoff metric label" + "aboutTitle": "Hakkında", + "@aboutTitle": { + "description": "About page title" }, - "@logClearLogsTitle": { - "description": "Clear logs dialog title" + "aboutContributors": "Katkıda Bulunanlar", + "@aboutContributors": { + "description": "Section for contributors" }, - "storageModeSafSubtitle": "SD kart dahil herhangi bir klasörü seçin", - "@storageModeSafSubtitle": { - "description": "Subtitle for SAF storage mode" + "aboutMobileDeveloper": "Mobil versiyon geliştiricisi", + "@aboutMobileDeveloper": { + "description": "Role description for mobile dev" }, - "@notifUpdateProgress": { - "description": "Notification body showing update download progress", + "aboutOriginalCreator": "Orijinal SpotiFLAC'ın kurucusu", + "@aboutOriginalCreator": { + "description": "Role description for original creator" + }, + "aboutLogoArtist": "Uygulama logomuzu yaratmış yetenekli sanatçımız!", + "@aboutLogoArtist": { + "description": "Role description for logo artist" + }, + "aboutTranslators": "Çevirmenler", + "@aboutTranslators": { + "description": "Section for translators" + }, + "aboutSpecialThanks": "Özel teşekkür", + "@aboutSpecialThanks": { + "description": "Section for special thanks" + }, + "aboutLinks": "Linkler", + "@aboutLinks": { + "description": "Section for external links" + }, + "aboutMobileSource": "Mobil kaynak kodu", + "@aboutMobileSource": { + "description": "Link to mobile GitHub repo" + }, + "aboutPCSource": "PC kaynak kodu", + "@aboutPCSource": { + "description": "Link to PC GitHub repo" + }, + "aboutKeepAndroidOpen": "Android'i Açık Tutun", + "@aboutKeepAndroidOpen": { + "description": "Link to Keep Android Open campaign website" + }, + "aboutReportIssue": "Sorun bildir", + "@aboutReportIssue": { + "description": "Link to report bugs" + }, + "aboutReportIssueSubtitle": "Karşılaştığın herhangi bir problemi bildir", + "@aboutReportIssueSubtitle": { + "description": "Subtitle for report issue" + }, + "aboutFeatureRequest": "Özellik isteği", + "@aboutFeatureRequest": { + "description": "Link to suggest features" + }, + "aboutFeatureRequestSubtitle": "Uygulama için yeni özellikler isteyin", + "@aboutFeatureRequestSubtitle": { + "description": "Subtitle for feature request" + }, + "aboutTelegramChannel": "Telegram Kanalı", + "@aboutTelegramChannel": { + "description": "Link to Telegram channel" + }, + "aboutTelegramChannelSubtitle": "Duyurular ve güncellemeler", + "@aboutTelegramChannelSubtitle": { + "description": "Subtitle for Telegram channel" + }, + "aboutTelegramChat": "Telegram Grubu", + "@aboutTelegramChat": { + "description": "Link to Telegram chat group" + }, + "aboutTelegramChatSubtitle": "Diğer kullanıcılarla sohbet et", + "@aboutTelegramChatSubtitle": { + "description": "Subtitle for Telegram chat" + }, + "aboutSocial": "Sosyal ağlar", + "@aboutSocial": { + "description": "Section for social links" + }, + "aboutApp": "Uygulama", + "@aboutApp": { + "description": "Section for app info" + }, + "aboutVersion": "Versiyon", + "@aboutVersion": { + "description": "Version info label" + }, + "aboutBinimumDesc": "The creator of QQDL & HiFi API. This project helped shape lossless download support.", + "@aboutBinimumDesc": { + "description": "Credit description for binimum" + }, + "aboutSachinsenalDesc": "The original HiFi project creator. A foundation for lossless-source integration.", + "@aboutSachinsenalDesc": { + "description": "Credit description for sachinsenal0x64" + }, + "aboutUnituneDesc": "Open-source music link resolver by Flaze, used for cross-platform fallback matching.", + "@aboutUnituneDesc": { + "description": "Credit for the UniTune resolver" + }, + "aboutMusicBrainzDesc": "Open music database maintained by MetaBrainz and its community, used for recording cross-references.", + "@aboutMusicBrainzDesc": { + "description": "Credit for the MusicBrainz database" + }, + "aboutSquiglyDesc": "Universal music link service by Liam Macmillan, used as a final cross-platform resolver fallback.", + "@aboutSquiglyDesc": { + "description": "Credit for the Squigly resolver" + }, + "aboutAppDescription": "Müzik meta verilerini arayın, uzantıları yönetin ve kütüphanenizi düzenleyin.", + "@aboutAppDescription": { + "description": "App description in header card" + }, + "artistAlbums": "Albümler", + "@artistAlbums": { + "description": "Section header for artist albums" + }, + "artistSingles": "Single'lar ve EP'ler", + "@artistSingles": { + "description": "Section header for singles/EPs" + }, + "artistCompilations": "Derlemeler", + "@artistCompilations": { + "description": "Section header for compilations" + }, + "artistPopular": "Popüler", + "@artistPopular": { + "description": "Section header for popular/top tracks" + }, + "artistMonthlyListeners": "Aylık {count} dinleyici", + "@artistMonthlyListeners": { + "description": "Monthly listener count display", "placeholders": { - "received": { - "type": "String" - }, - "total": { - "type": "String" - }, - "percentage": { - "type": "int" + "count": { + "type": "String", + "description": "Formatted listener count" } } }, - "downloadUsePrimaryArtistOnlyEnabled": "Düet sanatçıları klasör adından kaldırılır (örn. Justin Bieber, Quavo → Justin Bieber)", - "@downloadUsePrimaryArtistOnlyEnabled": { - "description": "Subtitle when primary artist only is enabled" + "trackMetadataService": "Hizmet", + "@trackMetadataService": { + "description": "Metadata field - download service used" }, - "notifScanningLibrary": "Scanning local library", - "@notifScanningLibrary": { - "description": "Notification title while scanning local library" + "trackMetadataPlay": "Oynat", + "@trackMetadataPlay": { + "description": "Action button - play track" }, - "@metadataProvidersSubtitle": { - "description": "Subtitle for metadata provider priority item" + "trackMetadataShare": "Paylaş", + "@trackMetadataShare": { + "description": "Action button - share track" + }, + "trackMetadataDelete": "Sil", + "@trackMetadataDelete": { + "description": "Action button - delete track" + }, + "setupGrantPermission": "İzin Ver", + "@setupGrantPermission": { + "description": "Button to request permission" + }, + "setupSkip": "Şimdilik atla", + "@setupSkip": { + "description": "Skip current step button" + }, + "setupStorageAccessRequired": "Depolama Erişimi Gerekli", + "@setupStorageAccessRequired": { + "description": "Title when storage access needed" + }, + "setupStorageAccessMessageAndroid11": "Android 11 ve sonrasında şarkıların seçili klasörünüze kaydedilebilmesi için \"Bütün dosyalara eriş\" iznine ihtiyaç var.", + "@setupStorageAccessMessageAndroid11": { + "description": "Android 11+ specific explanation" + }, + "setupOpenSettings": "Ayarları Aç", + "@setupOpenSettings": { + "description": "Button to open system settings" + }, + "setupPermissionDeniedMessage": "İzin reddedildi. Devam etmek için lütfen bütün izinleri verin.", + "@setupPermissionDeniedMessage": { + "description": "Error when permission denied" + }, + "setupPermissionRequired": "{permissionType} İzni Zorunlu", + "@setupPermissionRequired": { + "description": "Generic permission required title", + "placeholders": { + "permissionType": { + "type": "String", + "description": "Type of permission (Storage/Notification)" + } + } + }, + "setupPermissionRequiredMessage": "En iyi deneyim için {permissionType} izni zorunludur. Bunu ayarlardan daha sonra değiştirebilirsiniz.", + "@setupPermissionRequiredMessage": { + "description": "Generic permission required message", + "placeholders": { + "permissionType": { + "type": "String" + } + } + }, + "setupUseDefaultFolder": "Varsayılan Klasörü Kullan?", + "@setupUseDefaultFolder": { + "description": "Dialog title for default folder" + }, + "setupNoFolderSelected": "Klasör seçilmedi. Varsayılan \"Music\" klasörünü kullanmak ister misiniz?", + "@setupNoFolderSelected": { + "description": "Prompt when no folder selected" + }, + "setupUseDefault": "Varsayılanı Kullan", + "@setupUseDefault": { + "description": "Button to use default folder" + }, + "setupDownloadLocationTitle": "İndirme Konumu", + "@setupDownloadLocationTitle": { + "description": "Download location dialog title" + }, + "setupDownloadLocationIosMessage": "iOS'ta indirilenler uygulamanın \"Documents\" dosyasına kaydedilir. Onlara Dosyalar uygulamasından erişebilirsiniz.", + "@setupDownloadLocationIosMessage": { + "description": "iOS-specific folder info" + }, + "setupAppDocumentsFolder": "Uygulama Belgeler Klasörü", + "@setupAppDocumentsFolder": { + "description": "iOS documents folder option" + }, + "setupAppDocumentsFolderSubtitle": "Tavsiye edilen - Dosyalar uygulamasından erişilebilir", + "@setupAppDocumentsFolderSubtitle": { + "description": "Subtitle for documents folder" + }, + "setupChooseFromFiles": "Dosyalar'dan Seç", + "@setupChooseFromFiles": { + "description": "iOS file picker option" + }, + "setupChooseFromFilesSubtitle": "iCloud veya başka konum seç", + "@setupChooseFromFilesSubtitle": { + "description": "Subtitle for file picker" + }, + "setupIosEmptyFolderWarning": "iOS'un sınırlaması: Boş klasörler seçilemiyor. İçinde en az bir dosya bulunan bir klasör seçin.", + "@setupIosEmptyFolderWarning": { + "description": "iOS folder selection warning" + }, + "setupIcloudNotSupported": "iCloud Drive desteklenmiyor. Lütfen uygulama Belgeler klasörünü kullanın.", + "@setupIcloudNotSupported": { + "description": "Error when user selects iCloud Drive on iOS" + }, + "setupDownloadInFlac": "Download music in lossless and Hi-Res quality", + "@setupDownloadInFlac": { + "description": "App tagline in setup" + }, + "setupStorageGranted": "Depolama İzni Verildi!", + "@setupStorageGranted": { + "description": "Success message for storage permission" + }, + "setupStorageRequired": "Depolama İzni Gerekli", + "@setupStorageRequired": { + "description": "Title when storage permission needed" + }, + "setupStorageDescription": "SpotiFLAC'ın şarkılarınızı kaydetmek için depolama iznine ihtiyacı var.", + "@setupStorageDescription": { + "description": "Explanation for storage permission" + }, + "setupNotificationGranted": "Bildirim İzni Verildi!", + "@setupNotificationGranted": { + "description": "Success message for notification permission" + }, + "setupNotificationEnable": "Bildirimleri Etkinleştir", + "@setupNotificationEnable": { + "description": "Button to enable notifications" + }, + "setupFolderChoose": "İndirilecek Klasörü Seç", + "@setupFolderChoose": { + "description": "Button to choose folder" + }, + "setupFolderDescription": "İndirdiğin şarkıların kaydedileceği klasörü seç.", + "@setupFolderDescription": { + "description": "Explanation for folder selection" + }, + "setupSelectFolder": "Klasör Seç", + "@setupSelectFolder": { + "description": "Button to select folder" + }, + "setupEnableNotifications": "Bildirimleri Etkinleştir", + "@setupEnableNotifications": { + "description": "Button to enable notifications" + }, + "setupNotificationBackgroundDescription": "İndirmelerin durumu hakkında bildirim al. Bunu açmak uygulama arka plandayken indirmelerinizi takip etmenizi sağlar.", + "@setupNotificationBackgroundDescription": { + "description": "Detailed notification explanation" + }, + "setupSkipForNow": "Şimdilik atla", + "@setupSkipForNow": { + "description": "Skip button text" + }, + "setupNext": "Sıradaki", + "@setupNext": { + "description": "Next button text" }, "setupGetStarted": "Başla", "@setupGetStarted": { "description": "Final setup button" }, - "libraryFilterQualityCD": "CD (16bit)", - "@libraryFilterQualityCD": { - "description": "Filter option - CD quality audio" + "setupAllowAccessToManageFiles": "Lütfen bir sonraki ekranda \"Bütün dosyalara eriş\" iznini sağlayın.", + "@setupAllowAccessToManageFiles": { + "description": "Instruction for file access permission" }, - "sectionLayout": "Düzen", - "@sectionLayout": { - "description": "Settings section header" + "setupLanguageTitle": "Dil Seçin", + "@setupLanguageTitle": { + "description": "Title for the language selection step in setup" }, - "@tooltipLoveAll": { - "description": "Tooltip for the Love All button on album/playlist screens" + "setupLanguageDescription": "Uygulama için tercih ettiğiniz dili seçin. Bunu daha sonra Ayarlar'dan değiştirebilirsiniz.", + "@setupLanguageDescription": { + "description": "Description for the language selection step in setup" }, - "queueFinalizingDownload": "Finalizing download", - "@queueFinalizingDownload": { - "description": "Accessibility label for a queue item that is finalizing" + "setupLanguageSystemDefault": "Sistem Varsayılanı", + "@setupLanguageSystemDefault": { + "description": "Option to use the system language" }, - "trackConvertActionLabelLossy": "{sourceFormat} → {targetFormat} @ {bitrate}", - "@trackConvertActionLabelLossy": { - "description": "Convert button label for lossy conversion", + "dialogCancel": "İptal", + "@dialogCancel": { + "description": "Dialog button - cancel action" + }, + "dialogSave": "Kaydet", + "@dialogSave": { + "description": "Dialog button - save changes" + }, + "dialogDelete": "Sil", + "@dialogDelete": { + "description": "Dialog button - delete item" + }, + "dialogRetry": "Yeniden dene", + "@dialogRetry": { + "description": "Dialog button - retry action" + }, + "dialogClear": "Temizle", + "@dialogClear": { + "description": "Dialog button - clear items" + }, + "dialogDone": "Tamamlandı", + "@dialogDone": { + "description": "Dialog button - action completed" + }, + "dialogImport": "İçe aktar", + "@dialogImport": { + "description": "Dialog button - import data" + }, + "dialogDownload": "İndir", + "@dialogDownload": { + "description": "Confirm button in Download All dialog" + }, + "previewPlay": "Play preview", + "@previewPlay": { + "description": "Tooltip for the button that plays a short track preview snippet" + }, + "previewStop": "Stop preview", + "@previewStop": { + "description": "Tooltip for the button that stops the playing track preview snippet" + }, + "previewUnavailable": "Preview unavailable", + "@previewUnavailable": { + "description": "Snackbar shown when a track preview snippet cannot be played" + }, + "dialogDiscard": "Vazgeç", + "@dialogDiscard": { + "description": "Dialog button - discard changes" + }, + "dialogRemove": "Kaldır", + "@dialogRemove": { + "description": "Dialog button - remove item" + }, + "dialogUninstall": "Kaldır", + "@dialogUninstall": { + "description": "Dialog button - uninstall extension" + }, + "dialogDiscardChanges": "Değişiklikleri İptal Et?", + "@dialogDiscardChanges": { + "description": "Dialog title - unsaved changes warning" + }, + "dialogUnsavedChanges": "Kaydedilmeyen değişiklikler mevcut. Bu değişiklikleri iptal etmek istiyor musunuz?", + "@dialogUnsavedChanges": { + "description": "Dialog message - unsaved changes" + }, + "dialogClearAll": "Tümünü Temizle", + "@dialogClearAll": { + "description": "Dialog title - clear all items" + }, + "dialogRemoveExtension": "Eklentiyi Kaldır", + "@dialogRemoveExtension": { + "description": "Dialog title - uninstall extension" + }, + "dialogRemoveExtensionMessage": "Bu eklentiyi kaldırmak istediğine emin misin? Bu işlem geri alınamaz.", + "@dialogRemoveExtensionMessage": { + "description": "Dialog message - uninstall confirmation" + }, + "dialogUninstallExtension": "Eklentiyi Kaldır?", + "@dialogUninstallExtension": { + "description": "Dialog title - uninstall extension" + }, + "dialogUninstallExtensionMessage": "{extensionName} eklentisini kaldırmak istediğine emin misin?", + "@dialogUninstallExtensionMessage": { + "description": "Dialog message - uninstall specific extension", "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "bitrate": { + "extensionName": { "type": "String" } } }, - "extensionsMetadataPriority": "Meta Veri Önceliği", - "@extensionsMetadataPriority": { - "description": "Setting - metadata provider order" + "dialogClearHistoryTitle": "Geçmişi Temizle", + "@dialogClearHistoryTitle": { + "description": "Dialog title - clear download history" }, - "updateCurrent": "Şimdiki", - "@updateCurrent": { - "description": "Label for current version" + "dialogClearHistoryMessage": "Tüm indirme geçmişini temizlemek istediğinizden emin misiniz? Bu işlem geri alınamaz.", + "@dialogClearHistoryMessage": { + "description": "Dialog message - clear history confirmation" }, - "@aboutFeatureRequest": { - "description": "Link to suggest features" - }, - "@safMigrationSuccess": { - "description": "Snackbar after successfully migrating to SAF" - }, - "backupRestoreConfirmMessage": "This will replace your current settings, download history, liked tracks, wishlist and playlists with the contents of the backup. This cannot be undone.", - "@cleanupOrphanedDownloadsNone": { - "description": "Snackbar when no orphans found" - }, - "lyricsProviderNeteaseDesc": "NetEase Cloud Music (good for Asian songs)", - "@lyricsProviderNeteaseDesc": { - "description": "Description for Netease provider" - }, - "libraryScanCancelledSubtitle": "You can retry the scan when ready.", - "@libraryScanCancelledSubtitle": { - "description": "Library scan status subtitle after cancellation" - }, - "@collectionFavoriteArtists": { - "description": "Custom folder for favorite artists" - }, - "@trackAlbum": { - "description": "Metadata label - album name" + "dialogDeleteSelectedTitle": "Seçileni Sil", + "@dialogDeleteSelectedTitle": { + "description": "Dialog title - delete selected items" }, "dialogDeleteSelectedMessage": "{count} {count, plural, =1{şarkıyı} other{şarkıyı}} geçmişten silmeye emin misiniz?\n\nBu işlem seçilenleri cihazınızdan da silecektir.", "@dialogDeleteSelectedMessage": { @@ -713,811 +838,29 @@ } } }, - "trackReEnrich": "Re-enrich", - "@trackReEnrich": { - "description": "Menu action - re-embed metadata into audio file" - }, - "@lyricsProvidersSaved": { - "description": "Snackbar after saving lyrics provider priority" - }, - "@storageModeSaf": { - "description": "Storage mode option - Storage Access Framework" - }, - "libraryStorageAccessRequired": "Depolama Alanına Erişim Gereklidir", - "@libraryStorageAccessRequired": { - "description": "Dialog title for storage permission" - }, - "@cacheClearAllConfirmTitle": { - "description": "Dialog title before clearing all caches" - }, - "@unknownArtist": { - "description": "Fallback artist name when metadata is missing" - }, - "downloadCreatePlaylistSourceFolderEnabled": "A subfolder is created for each playlist", - "@downloadCreatePlaylistSourceFolderEnabled": { - "description": "Subtitle when playlist folder is enabled" - }, - "dialogClearHistoryMessage": "Tüm indirme geçmişini temizlemek istediğinizden emin misiniz? Bu işlem geri alınamaz.", - "@dialogClearHistoryMessage": { - "description": "Dialog message - clear history confirmation" - }, - "@sectionData": { - "description": "Settings section header" - }, - "audioAnalysisRms": "RMS", - "@audioAnalysisRms": { - "description": "RMS level metric label" - }, - "downloadFilterContributingEnabled": "Contributing artists removed from Album Artist folder name", - "@downloadFilterContributingEnabled": { - "description": "Subtitle when contributing artist filter is on" - }, - "timeJustNow": "Şu anda", - "@extensionCustomUrlHandlingShareHint": { - "description": "Extension detail hint explaining share-to-app URL handling" - }, - "cleanupOrphanedDownloads": "Yetim kalmış indirmeleri temizle", - "@cleanupOrphanedDownloads": { - "description": "Button to remove history entries for deleted files" - }, - "@audioAnalysisNoClipping": { - "description": "Displayed when no clipped samples were detected" - }, - "@tutorialWelcomeTitle": { - "description": "Tutorial welcome page title" - }, - "collectionFavoriteArtists": "Favori Sanatçılar", - "audioAnalysisRescanning": "Re-analyzing audio...", - "@audioAnalysisRescanning": { - "description": "Loading text while audio is being re-analyzed after an explicit refresh" - }, - "logTitle": "Kayıtlar", - "@logTitle": { - "description": "Logs screen title" - }, - "@regionCountryGB": { - "description": "Country name for SongLink region picker" - }, - "@progressFetchingMetadata": { - "description": "Progress indicator - loading track info", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "aboutLogoArtist": "Uygulama logomuzu yaratmış yetenekli sanatçımız!", - "@aboutLogoArtist": { - "description": "Role description for logo artist" - }, - "channelPreview": "Önizleme", - "@channelPreview": { - "description": "Update channel - beta/preview releases" - }, - "collectionPlaylistsDeleted": "{count} {count, plural, =1{playlist} other{playlists}} deleted", - "@collectionPlaylistsDeleted": { - "description": "Snackbar after deleting selected playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@libraryFilterMetadataMissingGenre": { - "description": "Filter option - items missing genre" - }, - "homeTitle": "Ana sayfa", - "@homeTitle": { - "description": "Home screen title" - }, - "extensionMinAppVersion": "Minimum Uygulama Sürümü", - "@extensionMinAppVersion": { - "description": "Extension detail - minimum app version" - }, - "backupContentsLiked": "{count} liked {count, plural, =1{track} other{tracks}}", - "@backupContentsLiked": { - "description": "Backup contents row for liked tracks count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "audioAnalysisTruePeak": "True Peak", - "@audioAnalysisTruePeak": { - "description": "True peak metric label" - }, - "notifDownloadsCanceledBody": "{count, plural, =1{1 download canceled by user} other{{count} downloads canceled by user}}", - "@notifDownloadsCanceledBody": { - "description": "Notification body when downloads are canceled by the user", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@dialogRetry": { - "description": "Dialog button - retry action" - }, - "@homeChangeSearchProviderTooltip": { - "description": "Tooltip for the Home search provider picker" - }, - "@sectionLyricsProviderOptions": { - "description": "Settings section header for per-provider lyrics options" - }, - "@trackReEnrichSuccessWithFailures": { - "description": "Snackbar summary after batch metadata re-enrichment finishes with failures", - "placeholders": { - "successCount": { - "type": "int" - }, - "total": { - "type": "int" - }, - "failedCount": { - "type": "int" - } - } - }, - "previewUnavailable": "Preview unavailable", - "@previewUnavailable": { - "description": "Snackbar shown when a track preview snippet cannot be played" - }, - "nowPlayingTabPlayer": "Player", - "@nowPlayingTabPlayer": { - "description": "Tab label for the player view" - }, - "backupContentsPlaylists": "{count, plural, =1{1 playlist} other{{count} playlists}}", - "@backupContentsPlaylists": { - "description": "Backup contents row for playlist count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "libraryLastScannedNever": "Asla", - "@libraryLastScannedNever": { - "description": "Shown when library has never been scanned" - }, - "trackTrackNumber": "Parça numarası", - "@trackTrackNumber": { - "description": "Metadata label - track number" - }, - "trackReplayGainScanning": "Analyzing loudness...", - "@trackReplayGainScanning": { - "description": "Snackbar/progress message while scanning ReplayGain for a single track" - }, - "downloadLossyMp3": "MP3 320kbps", - "@downloadLossyMp3": { - "description": "Lossy format option - MP3 320kbps" - }, - "@albumFolderArtistAlbumSingles": { - "description": "Album folder option with singles inside artist" - }, - "@extensionHealthNotConfigured": { - "description": "Extension service health status - not configured" - }, - "@downloadSeparateSinglesDisabled": { - "description": "Subtitle when separate singles folder is off" - }, - "downloadCreatePlaylistSourceFolder": "Playlist Source Folder", - "@downloadCreatePlaylistSourceFolder": { - "description": "Setting to create a subfolder per playlist source" - }, - "@trackReleaseDate": { - "description": "Metadata label - release date" - }, - "aboutContributors": "Katkıda Bulunanlar", - "@aboutContributors": { - "description": "Section for contributors" - }, - "@audioAnalysisMono": { - "description": "Audio channel layout label - mono" - }, - "@audioAnalysisNyquist": { - "description": "Nyquist frequency metric label" - }, - "permissionStorage": "Depolama", - "@permissionStorage": { - "description": "Storage permission type label" - }, - "permissionAudio": "Ses", - "@permissionAudio": { - "description": "Audio permission type label" - }, - "@libraryScanSubtitle": { - "description": "Subtitle for scan button" - }, - "@snackbarUnsupportedAudioFormat": { - "description": "Snackbar when the audio format is not supported for the requested operation" - }, - "@notifLibraryScanStopped": { - "description": "Notification body when library scan is cancelled" - }, - "@downloadMusixmatchAuto": { - "description": "Button to clear Musixmatch language (use auto)" - }, - "@trackLyricsTimeout": { - "description": "Message when lyrics request times out" - }, - "@trackReEnrichFieldReleaseInfo": { - "description": "Checkbox label for release info in re-enrich" - }, - "@regionCountryXK": { - "description": "Country name for SongLink region picker" - }, - "aboutTelegramChatSubtitle": "Diğer kullanıcılarla sohbet et", - "@aboutTelegramChatSubtitle": { - "description": "Subtitle for Telegram chat" - }, - "selectionAllPlaylistsSelected": "All playlists selected", - "@selectionAllPlaylistsSelected": { - "description": "Shown when all playlists are selected in selection mode" - }, - "cacheTrackLookupDesc": "Spotify/Deezer track ID lookups. Clearing may slow next few searches.", - "@cacheTrackLookupDesc": { - "description": "Description of what track lookup cache contains" - }, - "@unknownAlbum": { - "description": "Fallback album name when metadata is missing" - }, - "@extensionsErrorLoading": { - "description": "Error message when extension fails to load" - }, - "@cacheTitle": { - "description": "Cache management page title" - }, - "@downloadFilenameFormat": { - "description": "Setting for output filename pattern" - }, - "errorUrlNotRecognized": "Bağlantı tanınamadı", - "@errorUrlNotRecognized": { - "description": "Error title - URL not handled by any extension or service" - }, - "downloadAppleElrcWordSync": "Apple Music eLRC Word Sync", - "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { - "description": "Subtitle when album artist is used for folder names" - }, - "@qualityFlacLossless": { - "description": "Quality option - CD quality FLAC" - }, - "downloadNeteaseIncludeTranslationEnabled": "Chinese translation lines included", - "@downloadNeteaseIncludeTranslationEnabled": { - "description": "Subtitle when Netease translation is on" - }, - "collectionLovedEmptySubtitle": "Favorilerinizi kaydetmek için parçalara beğeni bırakın", - "@collectionLovedEmptySubtitle": { - "description": "Loved empty state subtitle" - }, - "@libraryBuiltInPlayerInfo": { - "description": "Info note explaining the built-in player is for previews only" - }, - "@notifLibraryScanProgressNoTotal": { - "description": "Notification body for library scan progress when total is unknown", - "placeholders": { - "scanned": { - "type": "int" - }, - "percentage": { - "type": "int" - } - } - }, - "@tutorialSearchTitle": { - "description": "Tutorial search page title" - }, - "trackReEnrichSuccessWithFailures": "Metadata re-enriched successfully ({successCount}/{total}) - Failed: {failedCount}", - "@a11yTrackByArtist": { - "description": "Accessibility label for a queue or list track item", - "placeholders": { - "trackName": { - "type": "String" - }, - "artistName": { - "type": "String" - } - } - }, - "libraryFilterMetadataMissingLabel": "Missing label", - "@libraryFilterMetadataMissingLabel": { - "description": "Filter option - items missing record label" - }, - "@audioAnalysisLufs": { - "description": "Integrated loudness metric label" - }, - "trackMetadata": "Meta Veri", - "@trackMetadata": { - "description": "Tab title - track metadata" - }, - "trackOptionRemoveFromLoved": "Remove from Loved", - "@trackOptionRemoveFromLoved": { - "description": "Bottom sheet action label - remove track from loved folder" - }, - "@aboutTelegramChat": { - "description": "Link to Telegram chat group" - }, - "@trackCopiedToClipboard": { - "description": "Snackbar - content copied" - }, - "aboutKeepAndroidOpen": "Android'i Açık Tutun", - "@aboutKeepAndroidOpen": { - "description": "Link to Keep Android Open campaign website" - }, - "@lyricsProvidersDisabledSection": { - "description": "Section header for disabled providers", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@downloadAllowLocalNetwork": { - "description": "Setting title for allowing requests to private/local network targets" - }, - "@openInOtherServices": { - "description": "Title and tooltip for finding the current collection in other services" - }, - "@extensionVerificationBrowserInApp": { - "description": "Chip label for in-app browser verification mode" - }, - "sectionSearchSource": "Arama Kaynağı", - "@sectionSearchSource": { - "description": "Settings section header" - }, - "allFilesAccess": "Tüm Dosyalara Erişim", - "@allFilesAccess": { - "description": "Toggle for MANAGE_EXTERNAL_STORAGE permission" - }, - "extensionsInstalledCount": "{count} uzantı başarıyla yüklendi", - "@extensionsInstalledCount": { - "description": "Success message after installing multiple extensions", - "placeholders": { - "count": { - "type": "int", - "description": "Number of installed extensions" - } - } - }, - "snackbarFailedToEmbedLyrics": "Şarkı sözleri eklenemedi", - "@snackbarFailedToEmbedLyrics": { - "description": "Snackbar when lyrics embedding fails" - }, - "@lyricsProviderMusixmatchDesc": { - "description": "Description for Musixmatch provider" - }, - "queueRateLimitTitle": "Service rate limited", - "@queueRateLimitTitle": { - "description": "Title shown on a failed queue item when the download service rate limits requests" - }, - "@notifDownloadComplete": { - "description": "Notification title when a single download is complete" - }, - "@homeSupports": { - "description": "Info text about supported URL types" - }, - "notifDownloadsCanceledTitle": "Downloads canceled", - "@notifDownloadsCanceledTitle": { - "description": "Notification title when downloads are canceled by the user" - }, - "@lyricsModeEmbedSubtitle": { - "description": "Subtitle for embed option" - }, - "optionsReplayGain": "ReplayGain", - "@optionsReplayGain": { - "description": "Title for ReplayGain setting toggle" - }, - "@storeLoadError": { - "description": "Error heading when the store cannot be loaded" - }, - "@trackArtist": { - "description": "Metadata label - artist name" - }, - "cacheCoverImageDesc": "Albüm ve şarkı kapak resimleri indirildi. Görüntülendikten sonra tekrar indirilecektir.", - "@cacheCoverImageDesc": { - "description": "Description of what cover image cache contains" - }, - "queueClearAll": "Tümünü Temizle", - "@queueClearAll": { - "description": "Button - clear all queue items" - }, - "downloadUsePrimaryArtistOnlyDisabled": "Klasör adı için tam sanatçı dizesi kullanılır", - "@downloadUsePrimaryArtistOnlyDisabled": { - "description": "Subtitle when primary artist only is disabled" - }, - "backupImportSectionTitle": "Restore backup", - "@backupImportSectionTitle": { - "description": "Section title for the import/restore card" - }, - "@downloadMusixmatchLanguageHint": { - "description": "Placeholder for Musixmatch language input" - }, - "collectionRemoveFromFolder": "Remove from folder", - "@collectionRemoveFromFolder": { - "description": "Tooltip for removing track from wishlist/loved folder" - }, - "storeFilterMetadata": "Meta Veri", - "@storeFilterMetadata": { - "description": "Repo filter - metadata providers" - }, - "shareSheetCopyLink": "Copy Link", - "errorRateLimitedMessage": "Çok fazla istek. Lütfen arama yapmadan önce biraz bekleyin.", - "@errorRateLimitedMessage": { - "description": "Error message - rate limit explanation" - }, - "libraryFilterSortGenreDesc": "Tür (Z-A)", - "@libraryFilterSortGenreDesc": { - "description": "Sort option - genre descending" - }, - "trackFileNotFound": "Dosya bulunamadı", - "@trackFileNotFound": { - "description": "Error - file doesn't exist" - }, - "@queueEmptySinglesSubtitle": { - "description": "Empty state subtitle for single track downloads" - }, - "@queueDownloadStarting": { - "description": "Queue status before download progress is available" - }, - "metadataProviderPriorityInfo": "Deezer'da istek sınırı yoktur ve birincil olarak önerilir. Spotify, çok sayıda istekten sonra hız sınırlaması uygulayabilir.", - "@metadataProviderPriorityInfo": { - "description": "Info tip about rate limits" - }, - "aboutPCSource": "PC kaynak kodu", - "@aboutPCSource": { - "description": "Link to PC GitHub repo" - }, - "editMetadataAutoFill": "Auto-fill from online", - "@editMetadataAutoFill": { - "description": "Section title for selective online metadata auto-fill in the edit metadata sheet" - }, - "snackbarDeletedTracks": "{count} {count, plural, =1{şarkı} other{şarkı}} silindi", - "@snackbarDeletedTracks": { - "description": "Snackbar - tracks deleted", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@extensionHealthServiceDegraded": { - "description": "Tooltip for degraded extension service" - }, - "lyricsProviderLrclibDesc": "Open-source synced lyrics database", - "@lyricsProviderLrclibDesc": { - "description": "Description for LRCLIB provider" - }, - "downloadMusixmatchLanguageDesc": "Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.", - "@downloadMusixmatchLanguageDesc": { - "description": "Description in Musixmatch language picker" - }, - "@optionsEmbedMetadataSubtitleOn": { - "description": "Subtitle when metadata embedding is enabled" - }, - "@setupSkipForNow": { - "description": "Skip button text" - }, - "@a11ySelectTrack": { - "description": "Accessibility label for selecting a track" - }, - "@folderOrganizationByAlbumSubtitle": { - "description": "Subtitle for album folder option" - }, - "downloadLossyAac": "AAC/M4A 320kbps", - "@extensionVerificationBrowserTitle": { - "description": "Settings option title for extension verification browser preference" - }, - "@backupContentsExtensions": { - "description": "Backup contents row for installed extensions count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarUrlCopied": "{platform} Bağlantı panoya kopyalandı", - "@snackbarUrlCopied": { - "description": "Snackbar - URL copied", - "placeholders": { - "platform": { - "type": "String", - "description": "Platform name (Spotify/Deezer)" - } - } - }, - "aboutBinimumDesc": "The creator of QQDL & HiFi API. This project helped shape lossless download support.", - "@aboutBinimumDesc": { - "description": "Credit description for binimum" - }, - "discographyFetchingAlbum": "{total} üzerinden {current} getiriliyor...", - "@discographyFetchingAlbum": { - "description": "Progress - fetching specific album", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "logAutoScrollOn": "Auto-scroll ON", - "@logAutoScrollOn": { - "description": "Tooltip when auto-scroll is enabled on the log screen" - }, - "@settingsMetadataSubtitle": { - "description": "Subtitle for metadata settings" - }, - "@regionCountryBR": { - "description": "Country name for SongLink region picker" - }, - "@lyricsProvidersTitle": { - "description": "Settings item title for lyrics provider order" - }, - "trackMetadataService": "Hizmet", - "@trackMetadataService": { - "description": "Metadata field - download service used" - }, - "discographyAddedToQueue": "{count} parça kuyruğa eklendi", - "cueSplitTrackCount": "{count} parça", - "@cueSplitTrackCount": { - "description": "Number of tracks in CUE sheet", - "placeholders": { - "count": { - "type": "int" - } - } - }, "dialogImportPlaylistTitle": "Çalma listesini içe aktar", "@dialogImportPlaylistTitle": { "description": "Dialog title - import CSV playlist" }, - "@cleanupOrphanedDownloadsSubtitle": { - "description": "Subtitle for orphaned cleanup button" - }, - "settingsLocalLibrary": "Yerel Kitaplık", - "@settingsLocalLibrary": { - "description": "Settings menu item - local library" - }, - "@metadataSaveFailedStorage": { - "description": "Snackbar error when writing metadata file back to storage fails" - }, - "logCopyLogs": "Copy logs", - "@logCopyLogs": { - "description": "Tooltip for copying logs" - }, - "downloadNetworkWifiOnlySubtitle": "Downloads pause when on mobile data", - "@downloadNetworkWifiOnlySubtitle": { - "description": "Subtitle for WiFi-only option in picker" - }, - "@lyricsModeBothSubtitle": { - "description": "Subtitle for both option" - }, - "@collectionAlreadyInPlaylist": { - "description": "Snackbar when track already exists in playlist", - "placeholders": { - "playlistName": { - "type": "String" - } - } - }, - "@collectionFoldersTitle": { - "description": "Library section title for custom folders" - }, - "searchSortDateNewest": "Yayın Tarihi (En yeni)", - "@searchSortDateNewest": { - "description": "Sort option - newest release first" - }, - "downloadDeduplicationDisabled": "All tracks will be downloaded regardless of history", - "@downloadDeduplicationDisabled": { - "description": "Subtitle when deduplication is off" - }, - "@recentTypeAlbum": { - "description": "Recent access item type - album" - }, - "nowPlayingPlayInOrder": "Play in order", - "@nowPlayingPlayInOrder": { - "description": "Tooltip when shuffle mode is disabled" - }, - "@cueSplitConfirmMessage": { - "description": "CUE split confirmation dialog message", - "placeholders": { - "album": { - "type": "String" - }, - "count": { - "type": "int" - } - } - }, - "@audioAnalysisFileSize": { - "description": "File size metric label" - }, - "artistSingles": "Single'lar ve EP'ler", - "@artistSingles": { - "description": "Section header for singles/EPs" - }, - "@snackbarProviderPrioritySaved": { - "description": "Snackbar - provider order saved" - }, - "@recentPlaylistInfo": { - "description": "Snackbar message when tapping playlist in recent access", - "placeholders": { - "name": { - "type": "String", - "description": "Playlist name" - } - } - }, - "@lyricsProviderLyricsPlusDesc": { - "description": "Description for LyricsPlus provider" - }, - "@libraryFilterDownloaded": { - "description": "Filter chip - show only downloaded items" - }, - "recentPlaylistInfo": "Çalma Listesi: {name}", - "@optionsReplayGainSubtitleOn": { - "description": "Subtitle when ReplayGain is enabled" - }, - "@actionCreate": { - "description": "Generic action button - create" - }, - "@downloadSelectQuality": { - "description": "Dialog title - choose audio quality" - }, - "cueSplitAlbum": "Album: {album}", - "@cueSplitAlbum": { - "description": "Album name in CUE split sheet", - "placeholders": { - "album": { - "type": "String" - } - } - }, - "@trackCoverNoSource": { - "description": "Snackbar when no cover art URL or embedded cover" - }, - "@storeRepoUrlLabel": { - "description": "Label for the repository URL input field" - }, - "@notifLibraryScanCompleteBody": { - "description": "Notification body for library scan complete - number of indexed tracks", + "dialogImportPlaylistMessage": "Found {count} tracks in the playlist file. Add them to download queue?", + "csvImportTracks": "CSV'den {count} şarkı", + "@csvImportTracks": { + "description": "Label shown in quality picker for CSV import", "placeholders": { "count": { "type": "int" } } }, - "optionsDetailedLogging": "Detaylı Günlükleme", - "@optionsDetailedLogging": { - "description": "Enable verbose logs for debugging" + "collectionExportM3u": "Export as M3U8", + "@collectionExportM3u": { + "description": "Tooltip on the collection screen action that exports the track list as an M3U8 playlist file" }, - "@lyricsProvidersDiscardContent": { - "description": "Body text of the discard-changes dialog on lyrics provider page" - }, - "@dialogDisableHistoryTitle": { - "description": "Confirmation dialog title shown before disabling download history" - }, - "downloadLossyOpus128Subtitle": "En küçük boyut, parça başına ~4 Mb", - "@downloadLossyOpus128Subtitle": { - "description": "Subtitle for Opus 128kbps lossy option" - }, - "@appName": { - "description": "App name - DO NOT TRANSLATE" - }, - "libraryActions": "Eylemler", - "@libraryActions": { - "description": "Section header for library actions" - }, - "setupNoFolderSelected": "Klasör seçilmedi. Varsayılan \"Music\" klasörünü kullanmak ister misiniz?", - "@setupNoFolderSelected": { - "description": "Prompt when no folder selected" - }, - "downloadMusixmatchLanguageHint": "e.g. en, de, ja", - "trackSaveFailed": "Failed: {error}", - "@trackSaveFailed": { - "description": "Snackbar when save operation fails", + "collectionExportM3uDone": "Exported {exported} of {total} tracks", + "@collectionExportM3uDone": { + "description": "Snackbar after M3U8 export; tracks without a local file are not exported", "placeholders": { - "error": { - "type": "String" - } - } - }, - "replayGainBatchConfirmTitle": "Add ReplayGain", - "@replayGainBatchConfirmTitle": { - "description": "Title of the batch ReplayGain confirmation dialog" - }, - "tutorialExtensionsTip1": "Faydalı uzantıları keşfetmek için Depo sekmesine göz atın", - "@tutorialExtensionsTip1": { - "description": "Tutorial extensions tip 1" - }, - "@trackAddToQueue": { - "description": "Menu action to add a track to the playback queue" - }, - "@cacheTrackLookup": { - "description": "Cache item title for track ID lookup cache" - }, - "@discographyNoAlbums": { - "description": "Error - no albums found for artist" - }, - "@updateLater": { - "description": "Update button - dismiss" - }, - "@snackbarFailedToInstall": { - "description": "Snackbar - extension install error" - }, - "@albumFolderArtistAlbumFlatSubtitle": { - "description": "Folder structure example for flat singles" - }, - "@errorMissingExtensionSource": { - "description": "Error - extension source not available", - "placeholders": { - "item": { - "type": "String" - } - } - }, - "libraryFilterSortAlbumAsc": "Albüm (A-Z)", - "@libraryFilterSortAlbumAsc": { - "description": "Sort option - album ascending" - }, - "@queueTrackCount": { - "description": "Track count label with plural support", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "audioAnalysisMono": "Mono", - "@trackLyricsSource": { - "description": "Label showing the lyrics source/provider", - "placeholders": { - "source": { - "type": "String" - } - } - }, - "@lyricsModeEmbed": { - "description": "Lyrics mode option - embed in audio file" - }, - "@storeRepoDialogCurrent": { - "description": "Label shown above the current repository URL in the dialog" - }, - "@cacheRefreshStats": { - "description": "Button label to refresh cache statistics" - }, - "lyricsProviderAppleMusicDesc": "Word-by-word synced lyrics (via proxy)", - "@lyricsProviderAppleMusicDesc": { - "description": "Description for Apple Music provider" - }, - "@downloadDeduplication": { - "description": "Setting - skip tracks already in download history" - }, - "updateFailedMessage": "Güncelleme indirilemedi", - "@updateFailedMessage": { - "description": "Update error message" - }, - "cacheEstimatedTotal": "Estimated cache usage: {size}", - "@cacheEstimatedTotal": { - "description": "Total cache size shown in summary", - "placeholders": { - "size": { - "type": "String" - } - } - }, - "@aboutVersion": { - "description": "Version info label" - }, - "dialogRetry": "Yeniden dene", - "@cueSplitSplitting": { - "description": "Snackbar while splitting CUE", - "placeholders": { - "current": { + "exported": { "type": "int" }, "total": { @@ -1525,769 +868,81 @@ } } }, - "@searchSortTitleZA": { - "description": "Sort option - title descending" + "collectionExportM3uNone": "No downloaded files to export", + "@collectionExportM3uNone": { + "description": "Snackbar when an M3U8 export finds no local files" }, - "tutorialLibraryTip2": "Tap a track to play it with the built-in player", - "@tutorialLibraryTip2": { - "description": "Tutorial library tip 2" + "collectionExportM3uFailed": "Export failed", + "@collectionExportM3uFailed": { + "description": "Snackbar when writing or sharing the M3U8 export fails" }, - "extensionHealthServiceOffline": "Service offline", - "@extensionHealthServiceOffline": { - "description": "Tooltip for offline extension service" + "trackOpenOn": "Open on...", + "@trackOpenOn": { + "description": "Track option and sheet title listing streaming platforms where the track can be opened" }, - "actionDeselect": "Seçimi kaldır", - "@actionDeselect": { - "description": "Action button - deselect all" + "trackOpenOnNoLinks": "No platform links found for this track.", + "@trackOpenOnNoLinks": { + "description": "Shown in the Open on sheet when song.link returns no links" }, - "@trackConvertOriginal": { - "description": "Label for keeping original bit depth or sample rate during conversion" + "libraryReviewDuplicates": "Review duplicates", + "@libraryReviewDuplicates": { + "description": "Library settings row opening the duplicate review sheet" }, - "@libraryClearConfirmTitle": { - "description": "Dialog title for clear confirmation" + "libraryReviewDuplicatesSubtitle": "Find tracks stored more than once", + "@libraryReviewDuplicatesSubtitle": { + "description": "Subtitle for the duplicate review settings row" }, - "@dialogDownloadAllMessage": { - "description": "Body of the Download All confirmation dialog", - "placeholders": { - "count": { - "type": "int" - } - } + "duplicatesTitle": "Duplicates", + "@duplicatesTitle": { + "description": "Title of the duplicate review sheet" }, - "homeSupports": "Desteklenen linkler: Şarkı, Albüm, Çalma Listesi, Sanatçı linkleri", - "@downloadedAlbumDeleteSelected": { - "description": "Button - delete selected tracks" + "duplicatesEmpty": "No duplicate tracks found.", + "@duplicatesEmpty": { + "description": "Shown when the duplicate review sheet finds nothing" }, - "@recentShowAllDownloads": { - "description": "Button label to unhide hidden downloads in recent access" + "duplicatesKeepBest": "Keep best", + "@duplicatesKeepBest": { + "description": "Button that deletes all but the highest-quality copy in a duplicate group" }, - "artistOptionRemoveFromFavorites": "Remove from Favorite Artists", - "@artistOptionRemoveFromFavorites": { - "description": "Action label - remove artist from favorite artists" + "duplicatesKeepBestAll": "Keep best for all", + "@duplicatesKeepBestAll": { + "description": "Button that keeps the highest-quality copy in every duplicate group and deletes the rest" }, - "collectionPlaylistEmptyTitle": "Çalma listesi boş", - "@collectionPlaylistEmptyTitle": { - "description": "Playlist empty state title" - }, - "libraryFilterSortLatest": "En sonuncu", - "@libraryFilterSortLatest": { - "description": "Sort option - newest first" - }, - "@libraryFilterMetadataMissingYear": { - "description": "Filter option - items missing release year/date" - }, - "@selectionSelected": { - "description": "Selection count indicator", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@tracksCount": { - "description": "Track count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@optionsCheckUpdates": { - "description": "Auto update check toggle" - }, - "@qualityHiResFlacMaxSubtitle": { - "description": "Technical spec for hi-res max" - }, - "actionStop": "Stop", - "@actionStop": { - "description": "Generic action - stop" - }, - "@selectionSelectToDelete": { - "description": "Placeholder when nothing selected" - }, - "folderOrganizationNoneSubtitle": "Her şey indirilen dosyasına kaydedilecek", - "@folderOrganizationNoneSubtitle": { - "description": "Subtitle for no organization option" - }, - "@updateDownloading": { - "description": "Update status - downloading" - }, - "artistAlbums": "Albümler", - "@artistAlbums": { - "description": "Section header for artist albums" - }, - "trackConvertDitherTriangular": "TPDF", - "@trackConvertDitherTriangular": { - "description": "Lossless conversion triangular probability density function dither option" - }, - "nowPlayingShuffleLibraryFailed": "Could not shuffle library: {error}", - "@nowPlayingShuffleLibraryFailed": { - "description": "Snackbar when shuffling the library fails", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "@setupIcloudNotSupported": { - "description": "Error when user selects iCloud Drive on iOS" - }, - "@optionsArtistTagModeSplitVorbis": { - "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" - }, - "@extensionsProviderPrioritySection": { - "description": "Section header - provider priority" - }, - "@libraryShowDuplicateIndicatorSubtitle": { - "description": "Subtitle for duplicate indicator toggle" - }, - "sectionDuplicates": "Yinelenenler", - "@sectionDuplicates": { - "description": "Settings section header for deduplication" - }, - "@backupTitle": { - "description": "App bar title for the backup and restore page" - }, - "trackCoverReplaceNotice": "The selected cover will replace the current embedded cover when you tap Save.", - "cacheSectionMaintenance": "Bakım", - "@cacheSectionMaintenance": { - "description": "Section header for cleanup actions" - }, - "@editMetadataFieldGenre": { - "description": "Chip label for genre field in auto-fill selector" - }, - "@extensionsFallbackSubtitle": { - "description": "Subtitle for download fallback extensions menu" - }, - "selectionBatchConvertConfirmMessage": "Convert {count} {count, plural, =1{track} other{tracks}} to {format} at {bitrate}?\n\nOriginal files will be deleted after conversion.", - "@selectionBatchConvertConfirmMessage": { - "description": "Confirmation dialog message for batch conversion", + "duplicatesKeepBestAllMessage": "Keep the best copy of {groupCount} {groupCount, plural, =1{track} other{tracks}} and delete {count} lower-quality {count, plural, =1{copy} other{copies}}?\n\nThe deleted files will be removed from storage.", + "@duplicatesKeepBestAllMessage": { + "description": "Confirmation message for keeping the best copy across every duplicate group", "placeholders": { "count": { "type": "int" }, - "format": { - "type": "String" - }, - "bitrate": { - "type": "String" - } - } - }, - "@selectionTapPlaylistsToSelect": { - "description": "Hint shown in playlist selection mode" - }, - "qualityHiResFlacMaxSubtitle": "24-bit / 192kHz'e kadar", - "snackbarRemovedTracksFromLoved": "Sevilen albümünden {count} parça kaldırıldı", - "@snackbarRemovedTracksFromLoved": { - "description": "Snackbar after removing multiple tracks from Loved folder", - "placeholders": { - "count": { + "groupCount": { "type": "int" } } }, - "folderOrganizationByArtistAlbum": "Sanatçı/Albüm", - "@folderOrganizationByArtistAlbum": { - "description": "Folder option - nested folders" - }, - "snackbarCannotOpenFile": "Dosya açılamadı: {error}", - "@snackbarCannotOpenFile": { - "description": "Snackbar - file open error", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "@optionsDetailedLoggingOff": { - "description": "Status when logging disabled" - }, - "@setupStorageDescription": { - "description": "Explanation for storage permission" - }, - "audioAnalysisCodec": "Codec", - "@regionCountryFR": { - "description": "Country name for SongLink region picker" - }, - "@optionsArtistTagMode": { - "description": "Setting title for how artist metadata is written into files" - }, - "@libraryClearConfirmMessage": { - "description": "Dialog message for clear confirmation" - }, - "trackLyricsNotAvailable": "Bu parça için şarkı sözü mevcut değil", - "@trackLyricsNotAvailable": { - "description": "Message when lyrics not found" - }, - "storeFilterUtility": "Araç", - "@storeFilterUtility": { - "description": "Repo filter - utility extensions" - }, - "collectionAddedToPlaylist": "\"{playlistName}\"e eklendi", - "@collectionAddedToPlaylist": { - "description": "Snackbar after adding track to playlist", - "placeholders": { - "playlistName": { - "type": "String" - } - } - }, - "cacheClearConfirmTitle": "Clear cache?", - "@cacheClearConfirmTitle": { - "description": "Dialog title before clearing one cache category" - }, - "@downloadAppleElrcWordSyncDisabled": { - "description": "Subtitle when Apple Music eLRC word sync is disabled" - }, - "@aboutMobileDeveloper": { - "description": "Role description for mobile dev" - }, - "albumFolderYearAlbum": "[Yıl] Albüm", - "@albumFolderYearAlbum": { - "description": "Album folder option with year" - }, - "cacheTitle": "Depolama & Önbellek", - "@extensionPostProcessing": { - "description": "Capability - post-download processing" - }, - "extensionsNoMetadataProvider": "Meta veri sağlayıcısı içeren uzantı bulunamadı", - "@extensionsNoMetadataProvider": { - "description": "Empty state - no metadata providers" - }, - "searchSortTitleZA": "Başlık (Z-A)", - "@queueClearAllMessage": { - "description": "Clear queue confirmation" - }, - "audioAnalysisTitle": "Audio Quality Analysis", - "@audioAnalysisTitle": { - "description": "Title for audio analysis section" - }, - "@aboutReportIssueSubtitle": { - "description": "Subtitle for report issue" - }, - "@audioAnalysisSampleRate": { - "description": "Sample rate metric label" - }, - "@discographySelectedCount": { - "description": "Selection count badge", + "duplicatesKeepBestMessage": "Delete {count} lower-quality copies of \"{trackName}\"?", + "@duplicatesKeepBestMessage": { + "description": "Confirmation message for the keep-best action", "placeholders": { "count": { "type": "int" - } - } - }, - "qualityFlacLosslessSubtitle": "16-bit / 44.1kHz", - "@qualityFlacLosslessSubtitle": { - "description": "Technical spec for lossless" - }, - "libraryScanFinalizing": "Kütüphane sonlandırılıyor...", - "@libraryScanFinalizing": { - "description": "Status shown after file scanning finishes but library persistence is still running" - }, - "@trackEditMetadata": { - "description": "Menu action - edit embedded metadata" - }, - "@downloadNeteaseIncludeRomanization": { - "description": "Setting to include romanized lyrics from Netease" - }, - "@optionsArtistTagModeJoinedSubtitle": { - "description": "Subtitle for joined artist tag mode" - }, - "regionCountryDE": "Germany", - "@regionCountryDE": { - "description": "Country name for SongLink region picker" - }, - "optionsAutoFallback": "Diğerlerini dene", - "@optionsAutoFallback": { - "description": "Auto-retry with other services" - }, - "@trackMetadataPlay": { - "description": "Action button - play track" - }, - "settingsFiles": "Files & Folders", - "@settingsFiles": { - "description": "Settings menu item - file and folder settings" - }, - "aboutMobileDeveloper": "Mobil versiyon geliştiricisi", - "@trackDownloaded": { - "description": "Metadata label - download date" - }, - "homeSkipAlreadyDownloaded": "Daha önce indirilmiş şarkıları atla", - "@homeSkipAlreadyDownloaded": { - "description": "Checkbox label in import dialog to skip already-downloaded songs" - }, - "dialogUninstall": "Kaldır", - "@dialogUninstall": { - "description": "Dialog button - uninstall extension" - }, - "collectionDeletePlaylist": "Çalma listesini sil", - "@collectionDeletePlaylist": { - "description": "Action to delete playlist" - }, - "trackCoverOnline": "Online cover", - "@trackCoverOnline": { - "description": "Label shown when metadata autofill downloaded cover art from the internet" - }, - "downloadTitle": "İndirme", - "@downloadTitle": { - "description": "Download settings page title" - }, - "searchArtists": "Sanatçılar", - "@searchArtists": { - "description": "Search result category - artists" - }, - "extensionUrlHandler": "URL İşleyici", - "@extensionUrlHandler": { - "description": "Capability - handles URLs" - }, - "@timeHoursAgo": { - "description": "Relative time - hours ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "editMetadataAdvanced": "Gelişmiş", - "@editMetadataAdvanced": { - "description": "Expandable section label for advanced metadata fields" - }, - "@actionSelectAll": { - "description": "Action button - select all items" - }, - "timeMinutesAgo": "{count, plural, =1{1 minute ago} other{{count} minutes ago}}", - "@timeMinutesAgo": { - "description": "Relative time - minutes ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "regionCountryXK": "Kosovo", - "@downloadAskQualitySubtitle": { - "description": "Subtitle for ask quality toggle" - }, - "setupLanguageSystemDefault": "Sistem Varsayılanı", - "@setupLanguageSystemDefault": { - "description": "Option to use the system language" - }, - "@updateAvailable": { - "description": "Update dialog title" - }, - "cacheEntries": "{count} entries", - "@cacheEntries": { - "description": "Track cache entry count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@notifLibraryScanExcluded": { - "description": "Library scan complete suffix - excluded track count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionsMetadataPrioritySubtitle": "Arama ve meta veri kaynağı sırasını ayarla", - "@extensionsMetadataPrioritySubtitle": { - "description": "Subtitle for metadata priority" - }, - "downloadedAlbumSelectToDelete": "Silinecek parçaları seçin", - "@downloadedAlbumSelectToDelete": { - "description": "Placeholder when nothing selected" - }, - "@dialogClearHistoryTitle": { - "description": "Dialog title - clear download history" - }, - "tutorialSettingsTip1": "İndirme konumunu ve klasör düzenini değiştirin", - "@tutorialSettingsTip1": { - "description": "Tutorial settings tip 1" - }, - "@extensionsInstalledSuccess": { - "description": "Success message after install" - }, - "allFilesAccessDisabledSubtitle": "Yalnızca medya klasörleriyle sınırlı", - "@allFilesAccessDisabledSubtitle": { - "description": "Subtitle when all files access is disabled" - }, - "@appearanceHistoryViewList": { - "description": "List layout option" - }, - "@notifAlreadyInLibraryCount": { - "description": "Notification title when track is already in library, with count", - "placeholders": { - "completed": { - "type": "int" }, - "total": { - "type": "int" - } - } - }, - "@libraryFilterAll": { - "description": "Filter chip - show all library items" - }, - "settingsDownload": "İndirme", - "settingsFilesSubtitle": "Download location, filename, folder structure", - "@settingsFilesSubtitle": { - "description": "Subtitle for files & folders settings" - }, - "@libraryFilterSort": { - "description": "Filter section - sort order" - }, - "metadataProvidersSubtitle": "Drag to set search and metadata source order", - "@extensionPermissions": { - "description": "Section header - required permissions" - }, - "selectionSelectToDelete": "Silinecek parçaları seçin", - "@libraryExternalPlayerSubtitle": { - "description": "Subtitle for external player option" - }, - "extensionVerificationOpenBrowser": "Open browser", - "@extensionVerificationOpenBrowser": { - "description": "Button to open the extension verification URL in a browser" - }, - "@trackConvertConfirmMessageLossless": { - "description": "Confirmation dialog message for lossless-to-lossless conversion", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { + "trackName": { "type": "String" } } }, - "@snackbarAddedTracksToQueue": { - "description": "Snackbar - multiple tracks added to queue", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@backupContentsWishlist": { - "description": "Backup contents row for wishlist tracks count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@cacheCleanupUnusedSubtitle": { - "description": "Subtitle for cleanup unused data action" - }, - "trackLabel": "Etiket / Müzik Şirketi", - "@trackLabel": { - "description": "Metadata label - record label" - }, - "@collectionAddedToLoved": { - "description": "Snackbar after adding track to loved folder", + "duplicatesDeleteCopyMessage": "Delete this copy of \"{trackName}\"?", + "@duplicatesDeleteCopyMessage": { + "description": "Confirmation message for deleting one duplicate copy", "placeholders": { "trackName": { "type": "String" } } }, - "regionCountryGB": "United Kingdom", - "dialogCancel": "İptal", - "@dialogCancel": { - "description": "Dialog button - cancel action" - }, - "@folderOrganizationByArtistAlbumSubtitle": { - "description": "Subtitle for nested folder option" - }, - "@notifAllDownloadsComplete": { - "description": "Notification title when all downloads finish successfully" - }, - "setupEnableNotifications": "Bildirimleri Etkinleştir", - "@setupEnableNotifications": { - "description": "Button to enable notifications" - }, - "@notifFinalizingTrack": { - "description": "Notification title while finalizing (embedding metadata) a track", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "@downloadLossy320FormatDesc": { - "description": "Description in the lossy format picker" - }, - "filenameFormat": "Dosya adı formatı", - "@filenameFormat": { - "description": "Setting title - filename pattern" - }, - "historySearchHint": "Arama geçmişi...", - "@historySearchHint": { - "description": "Search bar placeholder in history" - }, - "@tutorialReadyMessage": { - "description": "Tutorial completion message" - }, - "cacheTempDirectoryDesc": "İndirmelerden ve ses dönüştürme işlemlerinden kaynaklanan geçici dosyalar.", - "@cacheTempDirectoryDesc": { - "description": "Description of what temporary directory contains" - }, - "@trackSaveLyrics": { - "description": "Menu action - save lyrics as .lrc file" - }, - "@notifDownloadsFinished": { - "description": "Notification title when queue finishes with some failures", - "placeholders": { - "completed": { - "type": "int" - }, - "failed": { - "type": "int" - } - } - }, - "@historyFilterAlbums": { - "description": "Filter chip - show albums only" - }, - "trackEmbedLyrics": "Şarkı Sözlerini Göm", - "@trackEmbedLyrics": { - "description": "Action - embed lyrics into audio file" - }, - "@downloadPrimaryArtistOnlyOff": { - "description": "Status label when primary-artist-only folder naming is disabled" - }, - "@trackReEnrichFieldTrackInfo": { - "description": "Checkbox label for track info in re-enrich" - }, - "snackbarHistoryCleared": "Geçmiş temizlendi", - "downloadNetworkCompatibilityModeDisabled": "Using standard network settings", - "@artistPopular": { - "description": "Section header for popular/top tracks" - }, - "@trackFetchOnlineLyrics": { - "description": "Action - fetch lyrics from online providers" - }, - "extensionLyricsProvider": "Şarkı Sözü Sağlayıcı", - "@extensionLyricsProvider": { - "description": "Capability - provides lyrics" - }, - "historyFilterAll": "Tümü", - "@historyFilterAll": { - "description": "Filter chip - show all items" - }, - "tutorialSearchTitle": "Müzik Bulma", - "@lyricsModeExternal": { - "description": "Lyrics mode option - separate LRC file" - }, - "@actionDismiss": { - "description": "Generic action - dismiss" - }, - "trackOpenInSpotify": "Spotify'da aç", - "@trackOpenInSpotify": { - "description": "Action - open track in Spotify app" - }, - "@libraryClear": { - "description": "Button to clear all library entries" - }, - "discographyFailedToFetch": "Bazı albümler getirilemedi", - "@filenameShowAdvancedTagsDescription": { - "description": "Description for advanced filename tag toggle" - }, - "@storeUpdate": { - "description": "Update available button" - }, - "collectionPlaylistTracks": "{count, plural, =1{1 parça} other{{count} parça}}", - "@collectionPlaylistTracks": { - "description": "Track count label for custom playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "optionsPrimaryProviderSubtitle": "Parça veya albüm adına göre arama yapmak için kullanılan hizmet", - "@optionsPrimaryProviderSubtitle": { - "description": "Subtitle for primary provider" - }, - "@downloadEmbedLyricsDisabled": { - "description": "Subtitle when lyrics embedding is blocked by metadata toggle" - }, - "@librarySourceLocal": { - "description": "Badge for tracks from local library scan" - }, - "@searchSortDurationLong": { - "description": "Sort option - longest duration first" - }, - "@downloadFilterContributingDisabled": { - "description": "Subtitle when contributing artist filter is off" - }, - "queueDownloadingCount": "Downloading ({count})", - "@queueDownloadingCount": { - "description": "Header for active downloads section with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionVerificationBrowserInApp": "In-app", - "trackAudioQuality": "Ses kalitesi", - "@trackAudioQuality": { - "description": "Metadata label - audio quality" - }, - "libraryRemovedMissingFiles": "Kütüphaneden {count} adet eksik dosya kaldırıldı", - "@libraryRemovedMissingFiles": { - "description": "Snackbar after cleanup", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "collectionFavoriteArtistsEmptyTitle": "Henüz favori sanatçım yok", - "@collectionFavoriteArtistsEmptyTitle": { - "description": "Favorite artists empty state title" - }, - "@errorInvalidFolderSelected": { - "description": "Error when the selected folder is invalid" - }, - "@searchSortArtistZA": { - "description": "Sort option - artist descending" - }, - "snackbarAddedTracksToLoved": "Sevilen'e {count} parça eklendi", - "@snackbarAddedTracksToLoved": { - "description": "Snackbar after adding multiple tracks to Loved folder", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cancelDownloadContent": "This will cancel the active download for \"{trackName}\".", - "@cancelDownloadContent": { - "description": "Dialog body when confirming cancellation of an active download", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "settingsCacheSubtitle": "Boyutu görüntüle ve önbelleğe alınmış verileri temizle", - "@settingsCacheSubtitle": { - "description": "Subtitle for cache management menu" - }, - "notifLibraryScanCompleteBody": "{count} tracks indexed", - "@cacheSizeWithFiles": { - "description": "Cache size and file count", - "placeholders": { - "size": { - "type": "String" - }, - "count": { - "type": "int" - } - } - }, - "@downloadAskBeforeDownload": { - "description": "Setting - show quality picker" - }, - "@extensionHealthDegraded": { - "description": "Extension service health status - degraded" - }, - "@sectionPerformance": { - "description": "Settings section header" - }, - "@trackCoverCurrent": { - "description": "Label for the currently embedded cover preview" - }, - "discographySelectAlbums": "Albümleri Seç...", - "@discographySelectAlbums": { - "description": "Option - manually select albums to download" - }, - "aboutAppDescription": "Müzik meta verilerini arayın, uzantıları yönetin ve kütüphanenizi düzenleyin.", - "@aboutAppDescription": { - "description": "App description in header card" - }, - "extensionCustomTrackMatching": "Özel Parça Eşleştirme", - "@extensionCustomTrackMatching": { - "description": "Capability - custom track matching algorithm" - }, - "@editMetadataSelectNone": { - "description": "Button to clear selected fields for auto-fill" - }, - "@trackPlayNext": { - "description": "Menu action to play a track as the next queue item" - }, - "extensionCapabilities": "Özellikler", - "@extensionCapabilities": { - "description": "Section header - extension features" - }, - "@downloadSelectServiceToEnable": { - "description": "Subtitle when quality picker is disabled due to extension service" - }, - "logIssueRateLimitedDescription": "Too many requests to the service", - "@logIssueRateLimitedDescription": { - "description": "Diagnostic badge description for rate limiting" - }, - "@actionResume": { - "description": "Action button - resume download" - }, - "@updateDownloadInstall": { - "description": "Update button - download and install" - }, - "downloadLossy320Format": "Kayıplı 320kbps Formatı", - "@downloadLossy320Format": { - "description": "Title of the lossy format picker bottom sheet" - }, - "settingsMetadataSubtitle": "Cover art, tags, ReplayGain, providers", - "@trackCopyright": { - "description": "Metadata label - copyright information" - }, - "@snackbarExtensionInstalled": { - "description": "Snackbar - extension installed successfully", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "@regionCountryJP": { - "description": "Country name for SongLink region picker" - }, - "trackReEnrichOnlineSubtitle": "Search metadata online and embed into file", - "@trackReEnrichOnlineSubtitle": { - "description": "Subtitle for re-enrich metadata action for local items" - }, - "nowPlayingNothingPlaying": "Nothing is playing", - "@nowPlayingNothingPlaying": { - "description": "Empty state when no track is currently playing" - }, - "tutorialDownloadDesc": "Pick an available quality, start the download, and follow its progress in the queue.", - "@tutorialDownloadDesc": { - "description": "Tutorial download page description" - }, - "@appearanceTitle": { - "description": "Appearance settings page title" - }, - "@backupExportSectionDescription": { - "description": "Description of what a backup contains" - }, - "@downloadLossyOpus128": { - "description": "Lossy format option - Opus 128kbps" - }, - "@logFilterSection": { - "description": "Filter section title" - }, - "trackReEnrichSuccess": "Metadata re-enriched successfully", - "@trackReEnrichSuccess": { - "description": "Snackbar after successful re-enrichment" - }, - "backupContentsHistory": "{count} history {count, plural, =1{item} other{items}}", - "@backupContentsHistory": { - "description": "Backup contents row for history count", + "@dialogImportPlaylistMessage": { + "description": "Dialog message - import playlist confirmation", "placeholders": { "count": { "type": "int" @@ -2303,692 +958,93 @@ } } }, - "libraryAutoScanOnOpen": "Her uygulama açılışında", - "@libraryAutoScanOnOpen": { - "description": "Auto scan when app opens" + "snackbarAddedTracksToQueue": "{count} şarkı kuyruğa eklendi", + "@snackbarAddedTracksToQueue": { + "description": "Snackbar - multiple tracks added to queue", + "placeholders": { + "count": { + "type": "int" + } + } }, - "audioAnalysisChannels": "Channels", - "@audioAnalysisChannels": { - "description": "Channels metric label" - }, - "appearanceHistoryViewList": "Liste", - "updateDownloadInstall": "İndir & Yükle", - "@libraryShowDuplicateIndicator": { - "description": "Toggle for duplicate indicator in search" - }, - "extensionsHomeFeedOff": "Off", - "@extensionsHomeFeedOff": { - "description": "Extensions page - home feed provider option: off" - }, - "searchSortTitleAZ": "Başlık (A-Z)", - "@searchSortTitleAZ": { - "description": "Sort option - title ascending" - }, - "collectionRemovedFromLoved": "\"{trackName}\" removed from Loved", - "@collectionRemovedFromLoved": { - "description": "Snackbar after removing track from loved folder", + "snackbarAlreadyDownloaded": "\"{trackName}\" zaten indirilmiş", + "@snackbarAlreadyDownloaded": { + "description": "Snackbar - track already exists", "placeholders": { "trackName": { "type": "String" } } }, - "sectionAudioQuality": "Ses Kalitesi", - "@sectionAudioQuality": { - "description": "Settings section header" - }, - "trackConvertSuccess": "{format} formatına başarıyla dönüştürüldü", - "@trackConvertSuccess": { - "description": "Snackbar after successful conversion", - "placeholders": { - "format": { - "type": "String" - } - } - }, - "dialogUninstallExtensionMessage": "{extensionName} eklentisini kaldırmak istediğine emin misin?", - "@dialogUninstallExtensionMessage": { - "description": "Dialog message - uninstall specific extension", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "downloadNativeWorkerSubtitle": "Uzantı indirmeleri için Android arka plan hizmeti", - "@downloadNativeWorkerSubtitle": { - "description": "Setting subtitle for Android native download worker" - }, - "storeUpdate": "Güncelle", - "libraryFilterMetadataMissingAny": "Herhangi bir meta veri eksik", - "@libraryFilterMetadataMissingAny": { - "description": "Filter option - items missing any tracked metadata field" - }, - "@selectionBatchConvertConfirmMessageLosslessCapped": { - "description": "Confirmation dialog message for capped lossless batch conversion", - "placeholders": { - "count": { - "type": "int" - }, - "format": { - "type": "String" - }, - "quality": { - "type": "String" - } - } - }, - "editMetadataAutoFillDesc": "Choose a metadata extension, select fields, then review its data before applying", - "@editMetadataAutoFillDesc": { - "description": "Description for the auto-fill section" - }, - "@lyricsProviderExtensionDesc": { - "description": "Generic description for extension-based lyrics providers" - }, - "downloadSongLinkRegion": "SongLink Region", - "@downloadSongLinkRegion": { - "description": "Setting for SongLink region used during fallback resolution" - }, - "shareSheetNoExtensions": "No other compatible services", - "@shareSheetNoExtensions": { - "description": "Empty state when no extensions can be searched for cross-service links" - }, - "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": { - "description": "Confirmation dialog body before queueing FLAC redownloads for local tracks", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "tooltipAddToPlaylist": "Çalma listesine ekle", - "@tooltipAddToPlaylist": { - "description": "Tooltip for the Add to Playlist button" - }, - "@snackbarAddedToQueueGeneric": { - "description": "Snackbar when a track is added to the playback queue without naming it" - }, - "@tutorialSettingsTip2": { - "description": "Tutorial settings tip 2" - }, - "extensionPermissions": "İzinler", - "releaseTypeSingle": "Single", - "aboutTelegramChannelSubtitle": "Duyurular ve güncellemeler", - "@aboutTelegramChannelSubtitle": { - "description": "Subtitle for Telegram channel" - }, - "@dialogDisableAndClear": { - "description": "Confirmation action to disable download history and clear existing entries" - }, - "@homeSearchHintProvider": { - "description": "Placeholder for the main search field when a provider is selected", - "placeholders": { - "providerName": { - "type": "String" - } - } - }, - "metadataProvidersTitle": "Metadata Provider Priority", - "@metadataProvidersTitle": { - "description": "Settings item title for metadata provider order" - }, - "trackAddToQueue": "Add to queue", - "audioAnalysisDecodedFormat": "Decoded Format", - "@audioAnalysisDecodedFormat": { - "description": "Decoded sample format metric label" - }, - "@editMetadataSelectEmpty": { - "description": "Button to select only fields that are currently empty" - }, - "collectionAlreadyInPlaylist": "Zaten \"{playlistName}\" içinde", - "discographyAlbumsOnlySubtitle": "{albumCount} albümden {count} parça", - "@discographyAlbumsOnlySubtitle": { - "description": "Subtitle showing album tracks count", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } - }, - "setupNotificationEnable": "Bildirimleri Etkinleştir", - "@setupNotificationEnable": { - "description": "Button to enable notifications" - }, - "settingsAppearanceSubtitle": "Tema, renkler, görünüm", - "@settingsAppearanceSubtitle": { - "description": "Appearance settings description" - }, - "@notifUpdateFailedBody": { - "description": "Notification body when app update download fails" - }, - "@aboutOriginalCreator": { - "description": "Role description for original creator" - }, - "libraryBuiltInPreviewPlayer": "Built-in preview player", - "@libraryBuiltInPreviewPlayer": { - "description": "Setting option to use the built-in preview player" - }, - "tooltipPlay": "Oynat", - "@tooltipPlay": { - "description": "Tooltip - play button" - }, - "@safMigrationMessage2": { - "description": "Second paragraph of SAF migration dialog" - }, - "@extensionsSearchProvider": { - "description": "Setting - search provider selection" - }, - "libraryAboutDescription": "İndirme işlemi sırasında mevcut müzik koleksiyonunuzu tarayarak yinelenen dosyaları tespit eder. FLAC, M4A, MP3, Opus ve OGG formatlarını destekler. Varsa, meta veriler dosya etiketlerinden okunur.", - "@libraryAboutDescription": { - "description": "Description of local library feature" - }, - "downloadAskBeforeDownload": "İndirmeden Önce Sor", - "nowPlayingNoMetadata": "No metadata available", - "@nowPlayingNoMetadata": { - "description": "Empty state when track metadata cannot be loaded" - }, - "trackInstrumental": "Enstrümantal parça", - "@trackInstrumental": { - "description": "Message when track is instrumental (no lyrics)" - }, - "@collectionWishlistEmptyTitle": { - "description": "Wishlist empty state title" - }, - "selectionBatchConvertConfirmMessageLosslessCapped": "Convert {count} {count, plural, =1{track} other{tracks}} to {format} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original files will be deleted after conversion.", - "downloadDeduplication": "Skip Duplicate Downloads", - "libraryFilterSortOldest": "En eski", - "@libraryFilterSortOldest": { - "description": "Sort option - oldest first" - }, - "setupSkip": "Şimdilik atla", - "@setupSkip": { - "description": "Skip current step button" - }, - "@setupFolderDescription": { - "description": "Explanation for folder selection" - }, - "@settingsLogsSubtitle": { - "description": "Logs settings description" - }, - "storeNewRepoUrlLabel": "Yeni Depo URL'si", - "@storeNewRepoUrlLabel": { - "description": "Label for the new repository URL field inside the dialog" - }, - "cacheClearConfirmMessage": "This will clear cached data for {target}. Downloaded music files will not be deleted.", - "@cacheClearConfirmMessage": { - "description": "Dialog message before clearing selected cache", - "placeholders": { - "target": { - "type": "String" - } - } - }, - "trackMetadataPlay": "Oynat", - "@libraryEnableLocalLibrary": { - "description": "Toggle to enable library scanning" - }, - "optionsUpdateChannel": "Güncelleme Kanalı", - "@optionsUpdateChannel": { - "description": "Stable vs preview releases" - }, - "@downloadCreatePlaylistSourceFolderDisabled": { - "description": "Subtitle when playlist folder is disabled" - }, - "@extensionRefreshStatus": { - "description": "Tooltip for refreshing extension service health status" - }, - "backupRestoreRestartHint": "Restart the app to make sure every change is applied.", - "@backupRestoreRestartHint": { - "description": "Hint shown after restoring that an app restart is recommended" - }, - "@snackbarExtensionInstalledEnable": { - "description": "Snackbar after installing an extension from the repo tab", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "settingsAutoExportFailedSubtitle": "Başarısız indirmeleri otomatik olarak TXT dosyasına kaydet", - "@settingsAutoExportFailedSubtitle": { - "description": "Subtitle for auto-export setting" - }, - "searchSortArtistAZ": "Sanatçı (A-Z)", - "@searchSortArtistAZ": { - "description": "Sort option - artist ascending" - }, - "editMetadataFieldAlbumArtist": "Album Artist", - "@editMetadataFieldAlbumArtist": { - "description": "Chip label for album artist field in auto-fill selector" - }, - "@queueEmptyHistory": { - "description": "Empty state title when download history is empty" - }, - "@dialogDisableHistoryMessage": { - "description": "Confirmation dialog message shown before disabling download history" - }, - "queueFlacNoReliableMatches": "No reliable online matches found for the selection", - "@queueFlacNoReliableMatches": { - "description": "Snackbar when no safe FLAC redownload matches were found" - }, - "trackOpenInDeezer": "Deezer'da aç", - "@trackOpenInDeezer": { - "description": "Action - open track in Deezer app" - }, - "setupChooseFromFilesSubtitle": "iCloud veya başka konum seç", - "@setupChooseFromFilesSubtitle": { - "description": "Subtitle for file picker" - }, - "artistMonthlyListeners": "Aylık {count} dinleyici", - "@artistMonthlyListeners": { - "description": "Monthly listener count display", - "placeholders": { - "count": { - "type": "String", - "description": "Formatted listener count" - } - } - }, - "@downloadLossyAacSubtitle": { - "description": "Subtitle for AAC/M4A 320kbps lossy option" - }, - "cacheSectionStorage": "Önbelleğe alınmış veriler", - "@cacheSectionStorage": { - "description": "Section header for cache entries" - }, - "@libraryAutoScanWeekly": { - "description": "Auto scan once per week" - }, - "tutorialDownloadCompletedSemantics": "İndirme tamamlandı", - "@tutorialDownloadCompletedSemantics": { - "description": "Accessibility label for completed download state in tutorial demo" - }, - "@logNoLogsYet": { - "description": "Empty state title" - }, - "@selectionDeletePlaylistsCount": { - "description": "Button label for deleting multiple selected playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadSeparateSinglesEnabled": "Single şarkılar ve EP'ler ayrı bir klasöre kaydedildi", - "@downloadSeparateSinglesEnabled": { - "description": "Subtitle when separate singles folder is on" - }, - "setupAppDocumentsFolder": "Uygulama Belgeler Klasörü", - "@setupAppDocumentsFolder": { - "description": "iOS documents folder option" - }, - "storeLoadError": "Depo yüklenemedi", - "settingsDownloadNetwork": "İndirme Ağı", - "metadataSaveFailedStorage": "Failed to write metadata back to storage", - "@logAutoScrollOff": { - "description": "Tooltip when auto-scroll is disabled on the log screen" - }, - "@trackConvertFormat": { - "description": "Menu item - convert audio format" - }, - "optionsArtistTagModeJoined": "Birleşik tek değer", - "@optionsArtistTagModeJoined": { - "description": "Artist tag mode option that joins multiple artists into one value" - }, - "@dateYesterday": { - "description": "Relative date - yesterday" - }, - "@settingsExtensionsSubtitle": { - "description": "Extensions settings description" - }, - "searchSortArtistZA": "Sanatçı (Z-A)", - "@extensionSettings": { - "description": "Section header - extension settings" - }, - "@extensionOauthConnectHint": { - "description": "Hint for an OAuth login link field before connecting Spotify" - }, - "@notifUpdateReady": { - "description": "Notification title when app update download is complete" - }, - "@regionCountryMX": { - "description": "Country name for SongLink region picker" - }, - "@nowPlayingOpenInExternalPlayer": { - "description": "Menu item to open the current track in an external player" - }, - "trackConvertDithering": "Dithering", - "@trackConvertDithering": { - "description": "Section label for lossless conversion dithering options" - }, - "settingsDownloadSubtitle": "Hizmet, kalite, yedekleme", - "@settingsDownloadSubtitle": { - "description": "Download settings description" - }, - "libraryLastScanned": "Son tarama tarihi: {time}", - "@libraryLastScanned": { - "description": "Last scan time display", - "placeholders": { - "time": { - "type": "String" - } - } - }, - "setupIosEmptyFolderWarning": "iOS'un sınırlaması: Boş klasörler seçilemiyor. İçinde en az bir dosya bulunan bir klasör seçin.", - "@setupIosEmptyFolderWarning": { - "description": "iOS folder selection warning" - }, - "@storeAddRepoDescription": { - "description": "Store setup screen - explanatory text" - }, - "@snackbarFailedToInstallNamed": { - "description": "Snackbar when extension install fails in the repo tab", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "@collectionAddedTracksToPlaylist": { - "description": "Snackbar after adding multiple tracks to a playlist", - "placeholders": { - "count": { - "type": "int" - }, - "playlistName": { - "type": "String" - } - } - }, - "updateNew": "Yeni", - "@updateNew": { - "description": "Label for new version" - }, - "settingsExtensionsSubtitle": "İndirme sağlayıcılarını yönet", - "@albumFolderArtistAlbumSinglesSubtitle": { - "description": "Folder structure example" - }, - "trackReEnrichSelectAll": "Tümünü Seç", - "@trackReEnrichSelectAll": { - "description": "Select all fields checkbox in re-enrich" - }, - "@extensionsUninstall": { - "description": "Uninstall extension button" - }, - "@downloadUseAlbumArtistForFoldersTrackSubtitle": { - "description": "Subtitle when track artist is used for folder names" - }, - "@logIssueNetworkErrorLabel": { - "description": "Diagnostic badge label for generic network errors" - }, - "albumFolderArtistYearAlbumSubtitle": "Albümler/Sanatçı Adı/[2005] Albüm Adı/", - "@albumFolderArtistYearAlbumSubtitle": { - "description": "Folder structure example" - }, - "itemCount": "{count} {count, plural, =1{item} other{items}}", - "@itemCount": { - "description": "Generic item count label", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "discographyFetchingTracks": "Parçalar getiriliyor...", - "@discographyFetchingTracks": { - "description": "Progress - fetching album tracks" - }, - "@libraryFolder": { - "description": "Folder selection setting" - }, - "queueEmptyAlbums": "No album downloads", - "@queueEmptyAlbums": { - "description": "Empty state title when no album downloads exist" - }, - "@metadataProviderPriorityDescription": { - "description": "Metadata priority page description" - }, - "@extensionVerificationHelpTitleManual": { - "description": "Dialog title when automatic browser launch for verification fails" - }, - "extensionError": "Hata", - "@extensionError": { - "description": "Extension detail - error message" - }, - "@trackLyricsLoadFailed": { - "description": "Message when lyrics loading fails" - }, - "@downloadedAlbumDeleteCount": { - "description": "Delete button text with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@extensionsNoHomeFeedExtensions": { - "description": "Extensions page - shown when no installed extension has home feed" - }, - "@collectionArtistCount": { - "description": "Artist count label for favorite artists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "backupContentsArtists": "{count, plural, =1{1 favorite artist} other{{count} favorite artists}}", - "@backupContentsArtists": { - "description": "Backup contents row for favorite artists count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@trackRemoveFromDevice": { - "description": "Action - delete downloaded file" - }, - "lyricsProvidersEnabledSection": "Enabled ({count})", - "@lyricsProvidersEnabledSection": { - "description": "Section header for enabled providers", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@cueSplitTitle": { - "description": "Title for CUE split bottom sheet" - }, - "@downloadedAlbumSelectedCount": { - "description": "Selection count indicator", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@trackOptionRemoveFromWishlist": { - "description": "Bottom sheet action label - remove track from wishlist" - }, - "notifDownloadingTrack": "Downloading {trackName}", - "@notifDownloadingTrack": { - "description": "Notification title while downloading a track", + "snackbarAlreadyInLibrary": "\"{trackName}\" kitaplığınızda zaten mevcut", + "@snackbarAlreadyInLibrary": { + "description": "Snackbar - track already exists in local library", "placeholders": { "trackName": { "type": "String" } } }, - "@discographySkippedDownloaded": { - "description": "Snackbar - with skipped tracks count", + "snackbarHistoryCleared": "Geçmiş temizlendi", + "@snackbarHistoryCleared": { + "description": "Snackbar - history deleted" + }, + "snackbarDeletedTracks": "{count} {count, plural, =1{şarkı} other{şarkı}} silindi", + "@snackbarDeletedTracks": { + "description": "Snackbar - tracks deleted", "placeholders": { - "added": { - "type": "int" - }, - "skipped": { + "count": { "type": "int" } } }, - "@tutorialSettingsTip3": { - "description": "Tutorial settings tip 3" - }, - "@announcementUnableToOpenLink": { - "description": "Snackbar shown when an announcement CTA link cannot be opened" - }, - "trackReleaseDate": "Yayın tarihi", - "discographySelectedCount": "{count} seçildi", - "collectionArtistCount": "{count, plural, =1{1 sanatçı} other{{count} sanatçı}}", - "logIssueNetworkErrorLabel": "NETWORK ERROR", - "updateStartingDownload": "İndirme başlıyor...", - "@updateStartingDownload": { - "description": "Update status - initializing" - }, - "trackDiscNumber": "Disk numarası", - "@trackDiscNumber": { - "description": "Metadata label - disc number" - }, - "optionsUsingExtension": "Kullanılan eklenti: {extensionName}", - "@optionsUsingExtension": { - "description": "Shows active extension name", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "dialogDisableHistoryTitle": "Turn off download history?", - "tutorialWelcomeTip3": "Embed metadata, cover art, lyrics, and release information automatically", - "@tutorialWelcomeTip3": { - "description": "Tutorial welcome tip 3" - }, - "@collectionPlaylistEmptySubtitle": { - "description": "Playlist empty state subtitle" - }, - "@tutorialSearchHint": { - "description": "Placeholder shown in the tutorial search demo" - }, - "cleanupOrphanedDownloadsNone": "Hiçbir yetim kayıt bulunamadı", - "discographySkippedDownloaded": "{added} eklendi, {skipped} zaten indirilmiş", - "@updateDontRemind": { - "description": "Update button - skip this version" - }, - "@snackbarLoadingCueSheet": { - "description": "Snackbar while loading a CUE sheet file" - }, - "@dialogUninstallExtension": { - "description": "Dialog title - uninstall extension" - }, - "lyricsProvidersTitle": "Lyrics Provider Priority", - "@dialogRemove": { - "description": "Dialog button - remove item" - }, - "snackbarError": "Hata: {error}", - "@snackbarError": { - "description": "Generic error snackbar with error detail", + "snackbarCannotOpenFile": "Dosya açılamadı: {error}", + "@snackbarCannotOpenFile": { + "description": "Snackbar - file open error", "placeholders": { "error": { "type": "String" } } }, - "@sectionApp": { - "description": "Settings section header" + "snackbarViewQueue": "Kuyruğu Görüntüle", + "@snackbarViewQueue": { + "description": "Snackbar action - view download queue" }, - "@libraryPlayback": { - "description": "Section header for playback settings in library settings" + "snackbarUrlCopied": "{platform} Bağlantı panoya kopyalandı", + "@snackbarUrlCopied": { + "description": "Snackbar - URL copied", + "placeholders": { + "platform": { + "type": "String", + "description": "Platform name (Spotify/Deezer)" + } + } }, - "@downloadPrimaryArtistOnlyOn": { - "description": "Status label when primary-artist-only folder naming is enabled" + "snackbarFileNotFound": "Dosya bulunamadı", + "@snackbarFileNotFound": { + "description": "Snackbar - file doesn't exist" }, - "lyricsProvidersDiscardContent": "You have unsaved changes that will be lost.", - "previewStop": "Stop preview", - "@previewStop": { - "description": "Tooltip for the button that stops the playing track preview snippet" + "snackbarSelectExtFile": "Lütfen .spotiflac-ext dosyasını seçin", + "@snackbarSelectExtFile": { + "description": "Snackbar - wrong file type selected" }, - "trackConvertConfirmMessageLossless": "{sourceFormat} formatından {targetFormat} formatına dönüştürmek ister misiniz? (Kayıpsız — kalite kaybı yok)\n\nDönüştürme işleminden sonra orijinal dosya silinecektir.", - "discographyAlbumsOnly": "Yalnızca Albümler", - "@discographyAlbumsOnly": { - "description": "Option - download only albums" + "snackbarProviderPrioritySaved": "Sağlayıcı önceliği kaydedildi", + "@snackbarProviderPrioritySaved": { + "description": "Snackbar - provider order saved" }, - "@editMetadataFieldCopyright": { - "description": "Chip label for copyright field in auto-fill selector" + "snackbarMetadataProviderSaved": "Meta veri sağlayıcı önceliği kaydedildi", + "@snackbarMetadataProviderSaved": { + "description": "Snackbar - metadata provider order saved" }, - "extensionsFallbackSubtitle": "Hangi yüklü indirme uzantılarının yedekleme olarak kullanılabileceğini seçin", - "aboutSocial": "Sosyal ağlar", - "@aboutSocial": { - "description": "Section for social links" - }, - "audioAnalysisNyquist": "Nyquist", - "trackCoverSelected": "Seçili kapak", - "@trackCoverSelected": { - "description": "Label for the newly selected cover preview" - }, - "downloadDeduplicationEnabled": "Already-downloaded tracks will be skipped", - "@downloadDeduplicationEnabled": { - "description": "Subtitle when deduplication is on" - }, - "homeEmptyTitle": "Henüz arama sağlayıcısı yok", - "@homeEmptyTitle": { - "description": "Title shown on home when no providers are available yet" - }, - "@extensionHealthUnknown": { - "description": "Extension service health status - unknown" - }, - "storeInstalled": "Kuruldu", - "@storeInstalled": { - "description": "Already installed badge" - }, - "trackReplayGainSuccess": "ReplayGain tags added", - "@trackReplayGainSuccess": { - "description": "Snackbar message after ReplayGain tags written for a single track" - }, - "libraryShowDuplicateIndicatorSubtitle": "Mevcut parçalar aranırken göster", - "@collectionPlaylistRenamed": { - "description": "Snackbar after renaming playlist" - }, - "@trackConvertResamplerSoxr": { - "description": "Lossless conversion SoX resampler option" - }, - "@dialogUnsavedChanges": { - "description": "Dialog message - unsaved changes" - }, - "dialogDownload": "İndir", - "@dialogDownload": { - "description": "Confirm button in Download All dialog" - }, - "trackLyricsLoadFailed": "Şarkı sözleri yüklenemedi", - "@backupContentsTitle": { - "description": "Header above the list summarizing what the backup contains" - }, - "@safMigrationTitle": { - "description": "Title of SAF migration dialog" - }, - "@trackReEnrichFieldLyrics": { - "description": "Checkbox label for lyrics field in re-enrich" - }, - "setupPermissionDeniedMessage": "İzin reddedildi. Devam etmek için lütfen bütün izinleri verin.", - "@setupPermissionDeniedMessage": { - "description": "Error when permission denied" - }, - "settingsDownloadNetworkWifiOnly": "Yalnızca WiFi", - "@settingsDownloadNetworkWifiOnly": { - "description": "Network option - only use WiFi" - }, - "@backupIncludeSecrets": { - "description": "Toggle to include secret extension settings (tokens, API keys) in the backup" - }, - "@libraryFilterMetadataMissingAlbumArtist": { - "description": "Filter option - items missing album artist" - }, - "@extensionHealthServiceUnknown": { - "description": "Tooltip for unknown extension service health" + "snackbarExtensionInstalled": "{extensionName} yüklendi.", + "@snackbarExtensionInstalled": { + "description": "Snackbar - extension installed successfully", + "placeholders": { + "extensionName": { + "type": "String" + } + } }, "snackbarExtensionUpdated": "{extensionName} güncellendi.", "@snackbarExtensionUpdated": { @@ -2999,114 +1055,365 @@ } } }, - "homeEmptySubtitle": "Devam etmek için bir eklenti yükleyin.", - "@settingsTitle": { - "description": "Settings screen title" + "snackbarFailedToInstall": "Eklenti yüklenirken hata oluştu", + "@snackbarFailedToInstall": { + "description": "Snackbar - extension install error" }, - "@libraryFilterMetadataIncorrectIsrcFormat": { - "description": "Filter option - items with an invalid ISRC format" + "snackbarFailedToUpdate": "Eklenti güncellenirken hata oluştu", + "@snackbarFailedToUpdate": { + "description": "Snackbar - extension update error" }, - "@notifLibraryScanComplete": { - "description": "Notification title when library scan finishes" + "errorRateLimited": "Aşırı istek gönderildi", + "@errorRateLimited": { + "description": "Error title - too many requests" }, - "@logIssueIspBlockingLabel": { - "description": "Diagnostic badge label when ISP blocking is detected" + "errorRateLimitedMessage": "Çok fazla istek. Lütfen arama yapmadan önce biraz bekleyin.", + "@errorRateLimitedMessage": { + "description": "Error message - rate limit explanation" }, - "tutorialDownloadTitle": "Müzik İndirme", - "@tutorialDownloadTitle": { - "description": "Tutorial download page title" + "errorNoTracksFound": "Parça bulunamadı", + "@errorNoTracksFound": { + "description": "Error - search returned no results" }, - "unknownTitle": "Unknown title", - "@unknownTitle": { - "description": "Fallback track title when metadata is missing" + "searchEmptyResultSubtitle": "Try another keyword", + "@searchEmptyResultSubtitle": { + "description": "Subtitle shown under the empty search result state on the home screen" }, - "navLibrary": "Kitaplığın", - "@navLibrary": { - "description": "Bottom navigation - Library tab" + "errorUrlNotRecognized": "Bağlantı tanınamadı", + "@errorUrlNotRecognized": { + "description": "Error title - URL not handled by any extension or service" }, - "@snackbarAlreadyDownloaded": { - "description": "Snackbar - track already exists", + "errorUrlNotRecognizedMessage": "Bu bağlantı desteklenmiyor. URL'nin doğru olduğundan ve uyumlu bir uzantının yüklü olduğundan emin olun.", + "@errorUrlNotRecognizedMessage": { + "description": "Error message - URL not recognized explanation" + }, + "errorUrlFetchFailed": "Bu bağlantıdan içerik yüklenemedi. Lütfen tekrar deneyin.", + "@errorUrlFetchFailed": { + "description": "Error message - generic URL fetch failure" + }, + "errorMissingExtensionSource": "{item} yüklenemedi: Eksik eklenti kaynağı", + "@errorMissingExtensionSource": { + "description": "Error - extension source not available", "placeholders": { - "trackName": { + "item": { "type": "String" } } }, - "editMetadataSelectAll": "All", - "@editMetadataSelectAll": { - "description": "Button to select all fields for auto-fill" + "actionPause": "Duraklat", + "@actionPause": { + "description": "Action button - pause download" }, - "storeEmptyNoExtensions": "Uygun uzantı yok", - "@storeEmptyNoExtensions": { - "description": "Message when store has no extensions" + "actionResume": "Devam et", + "@actionResume": { + "description": "Action button - resume download" }, - "optionsUpdateChannelWarning": "Önizleme sürümleri hatalar veya tamamlanmamış özellikler içerebilir", - "@optionsUpdateChannelWarning": { - "description": "Warning about preview channel" + "actionCancel": "Vazgeç", + "@actionCancel": { + "description": "Action button - cancel operation" }, - "@collectionPlaylistNameHint": { - "description": "Hint text for playlist name input" + "actionSelectAll": "Tümünü Seç", + "@actionSelectAll": { + "description": "Action button - select all items" }, - "notifLibraryScanComplete": "Library scan complete", - "editMetadataFieldIsrc": "ISRC", - "@editMetadataFieldIsrc": { - "description": "Chip label for ISRC field in auto-fill selector" + "actionDeselect": "Seçimi kaldır", + "@actionDeselect": { + "description": "Action button - deselect all" }, - "@libraryFolderHint": { - "description": "Placeholder when no folder selected" - }, - "homeSearchHintDefault": "Paste supported URL or search...", - "@homeSearchHintDefault": { - "description": "Default placeholder for the main search field on Home" - }, - "extensionsNoExtensionsSubtitle": "Yeni sağlayıcılar eklemek için .spotiflac-ext dosyalarını yükleyin", - "@extensionsNoExtensionsSubtitle": { - "description": "Empty state subtitle" - }, - "@extensionEnterValue": { - "description": "Hint for editing an extension setting value" - }, - "backupRestoreConfirmTitle": "Restore this backup?", - "@backupRestoreConfirmTitle": { - "description": "Confirmation dialog title before restoring a backup" - }, - "@libraryScanSelectFolderFirst": { - "description": "Message when trying to scan without folder" - }, - "@qualityHiResFlac": { - "description": "Quality option - high resolution FLAC" - }, - "aboutSpecialThanks": "Özel teşekkür", - "@aboutSpecialThanks": { - "description": "Section for special thanks" - }, - "storeInstall": "Kur", - "@storeInstall": { - "description": "Install extension button" - }, - "@collectionWishlistEmptySubtitle": { - "description": "Wishlist empty state subtitle" - }, - "historyFilterAlbums": "Albümler", - "extensionCustomUrlHandlingSubtitle": "This extension can handle links from these sites", - "@extensionCustomUrlHandlingSubtitle": { - "description": "Extension detail subtitle for custom URL handling" - }, - "filenameShowAdvancedTagsDescription": "Parça numarası tamamlama ve tarih desenleri için biçimlendirilmiş etiketleri etkinleştir", - "@aboutReportIssue": { - "description": "Link to report bugs" - }, - "@folderOrganizationByPlaylist": { - "description": "Folder option - playlist folders" - }, - "@dateWeeksAgo": { - "description": "Relative date - weeks ago", + "selectionSelected": "{count} seçildi", + "@selectionSelected": { + "description": "Selection count indicator", "placeholders": { "count": { "type": "int" } } }, + "selectionAllSelected": "Tüm parçalar seçildi", + "@selectionAllSelected": { + "description": "Status - all items selected" + }, + "selectionSelectToDelete": "Silinecek parçaları seçin", + "@selectionSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "progressFetchingMetadata": "Meta verileri alınıyor... {current}/{total}", + "@progressFetchingMetadata": { + "description": "Progress indicator - loading track info", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "progressReadingCsv": "CSV okunuyor...", + "@progressReadingCsv": { + "description": "Progress indicator - parsing CSV file" + }, + "searchSongs": "Şarkılar", + "@searchSongs": { + "description": "Search result category - songs" + }, + "searchArtists": "Sanatçılar", + "@searchArtists": { + "description": "Search result category - artists" + }, + "searchAlbums": "Albümler", + "@searchAlbums": { + "description": "Search result category - albums" + }, + "searchPlaylists": "Çalma Listeleri", + "@searchPlaylists": { + "description": "Search result category - playlists" + }, + "searchSortTitle": "Sonuçları Sırala", + "@searchSortTitle": { + "description": "Bottom sheet title for search sort options" + }, + "searchSortDefault": "Varsayılan", + "@searchSortDefault": { + "description": "Sort option - default API order" + }, + "searchSortTitleAZ": "Başlık (A-Z)", + "@searchSortTitleAZ": { + "description": "Sort option - title ascending" + }, + "searchSortTitleZA": "Başlık (Z-A)", + "@searchSortTitleZA": { + "description": "Sort option - title descending" + }, + "searchSortArtistAZ": "Sanatçı (A-Z)", + "@searchSortArtistAZ": { + "description": "Sort option - artist ascending" + }, + "searchSortArtistZA": "Sanatçı (Z-A)", + "@searchSortArtistZA": { + "description": "Sort option - artist descending" + }, + "searchSortDurationShort": "Süre (en kısa)", + "@searchSortDurationShort": { + "description": "Sort option - shortest duration first" + }, + "searchSortDurationLong": "Süre (en uzun)", + "@searchSortDurationLong": { + "description": "Sort option - longest duration first" + }, + "searchSortDateOldest": "Yayın Tarihi (En eski)", + "@searchSortDateOldest": { + "description": "Sort option - oldest release first" + }, + "searchSortDateNewest": "Yayın Tarihi (En yeni)", + "@searchSortDateNewest": { + "description": "Sort option - newest release first" + }, + "tooltipPlay": "Oynat", + "@tooltipPlay": { + "description": "Tooltip - play button" + }, + "filenameFormat": "Dosya adı formatı", + "@filenameFormat": { + "description": "Setting title - filename pattern" + }, + "filenameShowAdvancedTags": "Gelişmiş etiketleri göster", + "@filenameShowAdvancedTags": { + "description": "Toggle label for showing advanced filename tags" + }, + "filenameShowAdvancedTagsDescription": "Parça numarası tamamlama ve tarih desenleri için biçimlendirilmiş etiketleri etkinleştir", + "@filenameShowAdvancedTagsDescription": { + "description": "Description for advanced filename tag toggle" + }, + "folderOrganizationNone": "Organizasyon yok", + "@folderOrganizationNone": { + "description": "Folder option - flat structure" + }, + "folderOrganizationByPlaylist": "Çalma Listesine Göre", + "@folderOrganizationByPlaylist": { + "description": "Folder option - playlist folders" + }, + "folderOrganizationByPlaylistSubtitle": "Her çalma listesi için ayrı klasör", + "@folderOrganizationByPlaylistSubtitle": { + "description": "Subtitle for playlist folder option" + }, + "folderOrganizationByArtist": "Sanatçıya Göre", + "@folderOrganizationByArtist": { + "description": "Folder option - artist folders" + }, + "folderOrganizationByAlbum": "Albüme Göre", + "@folderOrganizationByAlbum": { + "description": "Folder option - album folders" + }, + "folderOrganizationByArtistAlbum": "Sanatçı/Albüm", + "@folderOrganizationByArtistAlbum": { + "description": "Folder option - nested folders" + }, + "folderOrganizationDescription": "İndirilenleri klasörlerle organize et", + "@folderOrganizationDescription": { + "description": "Folder organization sheet description" + }, + "folderOrganizationNoneSubtitle": "Her şey indirilen dosyasına kaydedilecek", + "@folderOrganizationNoneSubtitle": { + "description": "Subtitle for no organization option" + }, + "folderOrganizationByArtistSubtitle": "Her sanatçı için ayrı klasör", + "@folderOrganizationByArtistSubtitle": { + "description": "Subtitle for artist folder option" + }, + "folderOrganizationByAlbumSubtitle": "Her albüm için ayrı klasör", + "@folderOrganizationByAlbumSubtitle": { + "description": "Subtitle for album folder option" + }, + "folderOrganizationByArtistAlbumSubtitle": "Sanatçı klasörlerinin içinde Albüm klasörleri", + "@folderOrganizationByArtistAlbumSubtitle": { + "description": "Subtitle for nested folder option" + }, + "updateAvailable": "Güncelleme Mevcut", + "@updateAvailable": { + "description": "Update dialog title" + }, + "updateLater": "Daha Sonra", + "@updateLater": { + "description": "Update button - dismiss" + }, + "updateStartingDownload": "İndirme başlıyor...", + "@updateStartingDownload": { + "description": "Update status - initializing" + }, + "updateDownloadFailed": "İndirme başarısız", + "@updateDownloadFailed": { + "description": "Update error title" + }, + "updateFailedMessage": "Güncelleme indirilemedi", + "@updateFailedMessage": { + "description": "Update error message" + }, + "updateNewVersionReady": "Yeni bir sürüm hazır", + "@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": "Şimdiki", + "@updateCurrent": { + "description": "Label for current version" + }, + "updateNew": "Yeni", + "@updateNew": { + "description": "Label for new version" + }, + "updateDownloading": "İndiriliyor...", + "@updateDownloading": { + "description": "Update status - downloading" + }, + "updateWhatsNew": "Yenilikler", + "@updateWhatsNew": { + "description": "Changelog section title" + }, + "updateDownloadInstall": "İndir & Yükle", + "@updateDownloadInstall": { + "description": "Update button - download and install" + }, + "updateDontRemind": "Bir daha sorma", + "@updateDontRemind": { + "description": "Update button - skip this version" + }, + "providerPriorityTitle": "İndirme hizmetleri öncelik sırası", + "@providerPriorityTitle": { + "description": "Provider priority page title" + }, + "providerPriorityDescription": "İndirme hizmetlerini sıralamak için kaydır. Uygulama şarkı indirirken hizmetleri yukarıdan aşağıya doğru deneyecektir.", + "@providerPriorityDescription": { + "description": "Provider priority page description" + }, + "providerPriorityInfo": "Eğer bir şarkı ilk hizmette mevcut değilse uygulama otomatik olarak bir sonrakini deneyecektir.", + "@providerPriorityInfo": { + "description": "Info tip about fallback behavior" + }, + "providerPriorityFallbackExtensionsDescription": "Otomatik geri dönüş sırasında hangi yüklü indirme uzantılarının kullanılabileceğini seçin.", + "@providerPriorityFallbackExtensionsDescription": { + "description": "Section description for extension fallback selection" + }, + "providerPriorityFallbackExtensionsHint": "Burada yalnızca indirme sağlayıcısı yeteneğine sahip olan ve etkinleştirilmiş uzantılar listelenir.", + "@providerPriorityFallbackExtensionsHint": { + "description": "Hint below the extension fallback selection list" + }, + "providerExtension": "Eklenti", + "@providerExtension": { + "description": "Label for extension-provided providers" + }, + "metadataProviderPriorityTitle": "Meta Veri Önceliği", + "@metadataProviderPriorityTitle": { + "description": "Metadata priority page title" + }, + "metadataProviderPriorityDescription": "Meta veri sağlayıcılarını yeniden sıralamak için sürükleyin. Uygulama, parça ararken ve meta verileri alırken sağlayıcıları yukarıdan aşağıya doğru deneyecektir.", + "@metadataProviderPriorityDescription": { + "description": "Metadata priority page description" + }, + "metadataProviderPriorityInfo": "Deezer'da istek sınırı yoktur ve birincil olarak önerilir. Spotify, çok sayıda istekten sonra hız sınırlaması uygulayabilir.", + "@metadataProviderPriorityInfo": { + "description": "Info tip about rate limits" + }, + "logTitle": "Kayıtlar", + "@logTitle": { + "description": "Logs screen title" + }, + "logCopied": "Kayıtlar panoya kopyalandı", + "@logCopied": { + "description": "Snackbar - logs copied" + }, + "logSearchHint": "Kayıtları Ara...", + "@logSearchHint": { + "description": "Log search placeholder" + }, + "logFilterLevel": "Seviye", + "@logFilterLevel": { + "description": "Filter by log level" + }, + "logFilterSection": "Filtre", + "@logFilterSection": { + "description": "Filter section title" + }, + "logShareLogs": "Kayıtları paylaş", + "@logShareLogs": { + "description": "Share button tooltip" + }, + "logClearLogs": "Kayıtları temizle", + "@logClearLogs": { + "description": "Clear button tooltip" + }, + "logClearLogsTitle": "Kayıtları temizle", + "@logClearLogsTitle": { + "description": "Clear logs dialog title" + }, + "logClearLogsMessage": "Tüm kayıtları temizlemek istediğinize emin misiniz?", + "@logClearLogsMessage": { + "description": "Clear logs confirmation message" + }, + "logFilterBySeverity": "Günlükleri önem derecesine göre filtrele", + "@logFilterBySeverity": { + "description": "Filter dialog title" + }, + "logNoLogsYet": "Henüz kayıt yok", + "@logNoLogsYet": { + "description": "Empty state title" + }, + "logNoLogsYetSubtitle": "Uygulamayı kullandıkça günlükler burada görünecektir", + "@logNoLogsYetSubtitle": { + "description": "Empty state subtitle" + }, "logEntriesFiltered": "Kayıtlar ({count} filtrelendi)", "@logEntriesFiltered": { "description": "Log count with filter active", @@ -3116,173 +1423,6 @@ } } }, - "@lyricsModeDescription": { - "description": "Lyrics mode picker description" - }, - "@setupAppDocumentsFolderSubtitle": { - "description": "Subtitle for documents folder" - }, - "storeAddRepoButton": "Depo Ekle", - "@storeAddRepoButton": { - "description": "Button to submit a new repository URL" - }, - "@collectionLovedEmptyTitle": { - "description": "Loved empty state title" - }, - "aboutReportIssue": "Sorun bildir", - "snackbarFailedToWriteStorage": "Depolama alanına geri yazma işlemi başarısız oldu", - "@snackbarFailedToWriteStorage": { - "description": "Snackbar when writing metadata back to file fails" - }, - "errorInvalidFolderSelected": "Invalid folder selected", - "allFilesAccessDisabledMessage": "Tüm Dosyalara Erişim devre dışı bırakıldı. Uygulama kısıtlı depolama erişimi kullanacak.", - "@allFilesAccessDisabledMessage": { - "description": "Snackbar message when user disables all files access" - }, - "downloadMusixmatchLanguageCode": "Language code", - "@downloadMusixmatchLanguageCode": { - "description": "Label for Musixmatch language input field" - }, - "dialogUnsavedChanges": "Kaydedilmeyen değişiklikler mevcut. Bu değişiklikleri iptal etmek istiyor musunuz?", - "setupChooseFromFiles": "Dosyalar'dan Seç", - "@setupChooseFromFiles": { - "description": "iOS file picker option" - }, - "@collectionFavoriteArtistsEmptySubtitle": { - "description": "Favorite artists empty state subtitle" - }, - "downloadLossy320FormatDesc": "Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.", - "@backupRestoreConfirmButton": { - "description": "Confirm button to proceed with restore" - }, - "@queueEmptyAlbumsSubtitle": { - "description": "Empty state subtitle for album downloads" - }, - "collectionRemovedFromWishlist": "\"{trackName}\" removed from Wishlist", - "@collectionRemovedFromWishlist": { - "description": "Snackbar after removing track from wishlist", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "extensionsInstalledSuccess": "Uzantı başarıyla yüklendi", - "progressReadingCsv": "CSV okunuyor...", - "@progressReadingCsv": { - "description": "Progress indicator - parsing CSV file" - }, - "artistReleases": "Sürümler", - "@artistReleases": { - "description": "Section header for all artist releases" - }, - "extensionVerificationBrowserTitle": "Verification browser", - "@optionsDefaultSearchTabSubtitle": { - "description": "Subtitle for the preferred default search tab setting" - }, - "optionsArtistTagModeJoinedSubtitle": "Maksimum oynatıcı uyumluluğu için 'Sanatçı A, Sanatçı B' şeklinde tek bir SANATÇI değeri yazın.", - "downloadLossy320": "Kayıplı 320kbps", - "@downloadLossy320": { - "description": "Quality option label for lossy 320kbps" - }, - "queueFlacAction": "Queue FLAC", - "@queueFlacAction": { - "description": "Action/button label for queueing FLAC redownloads for local tracks" - }, - "@setupDownloadLocationIosMessage": { - "description": "iOS-specific folder info" - }, - "trackConvertOriginal": "Original", - "sectionLyricsProviderOptions": "Provider Options", - "nowPlayingTitle": "Now Playing", - "@nowPlayingTitle": { - "description": "Title for the now playing screen" - }, - "@extensionHealthChecksConfigured": { - "description": "Extension service health check count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@cacheClearAll": { - "description": "Button label to clear all caches" - }, - "a11yDeselectTrack": "Deselect track", - "@a11yDeselectTrack": { - "description": "Accessibility label for deselecting a track" - }, - "@lyricsProvidersInfoText": { - "description": "Info tip on lyrics provider priority page" - }, - "queueEmptyHistory": "No download history", - "dialogClear": "Temizle", - "@dialogClear": { - "description": "Dialog button - clear items" - }, - "allFilesAccessDescription": "Özel klasörlere kaydederken yazma hatalarıyla karşılaşırsanız bunu etkinleştirin. Android 13 ve üzeri, varsayılan olarak belirli dizinlere erişimi kısıtlar.", - "@allFilesAccessDescription": { - "description": "Description explaining when to enable all files access" - }, - "trackConvertConfirmTitle": "Dönüştürmeyi Onayla", - "storeCategoryLyrics": "Lyrics", - "@storeCategoryLyrics": { - "description": "Store extension category - lyrics" - }, - "@lyricsProvidersDescription": { - "description": "Description on the lyrics provider priority page" - }, - "tooltipLoveAll": "Love All", - "downloadDirectory": "İndirme Dizini", - "@downloadDirectory": { - "description": "Setting - download folder" - }, - "@tutorialExtensionsTip2": { - "description": "Tutorial extensions tip 2" - }, - "libraryFolder": "Kitaplık Klasörü", - "@metadataProviderPriorityTitle": { - "description": "Metadata priority page title" - }, - "@cleanupOrphanedDownloadsResult": { - "description": "Snackbar after orphan cleanup", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cacheExploreFeedDesc": "Sekme içeriğini keşfedin (yeni çıkanlar, trendler). Bir sonraki ziyaretinizde yenilenecektir.", - "@cacheExploreFeedDesc": { - "description": "Description of what explore feed cache contains" - }, - "a11yOpenTrackByArtist": "Open track {trackName} by {artistName}", - "@a11yOpenTrackByArtist": { - "description": "Accessibility label for opening a track item", - "placeholders": { - "trackName": { - "type": "String" - }, - "artistName": { - "type": "String" - } - } - }, - "announcementUnableToOpenLink": "Unable to open link. Please try again.", - "libraryFilterSortAlbumDesc": "Albüm (Z-A)", - "@libraryFilterSortAlbumDesc": { - "description": "Sort option - album descending" - }, - "trackConvertBitrate": "Bitrate", - "@trackConvertBitrate": { - "description": "Label for bitrate selection" - }, - "audioAnalysisFileSize": "Size", - "extensionHealthServiceOnline": "Service online", - "@extensionHealthServiceOnline": { - "description": "Tooltip for online extension service" - }, "logEntries": "Kayıtlar ({count})", "@logEntries": { "description": "Total log count", @@ -3292,846 +1432,552 @@ } } }, - "trackConvertConfirmMessage": "{sourceFormat} formatından {targetFormat} formatına {bitrate} hızında dönüştürülsün mü?\n\nDönüştürme işleminden sonra orijinal dosya silinecektir.", - "@trackConvertConfirmMessage": { - "description": "Confirmation dialog message", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "bitrate": { - "type": "String" - } - } + "channelStable": "Kararlı", + "@channelStable": { + "description": "Update channel - stable releases" }, - "@optionsArtistTagModeSplitVorbisSubtitle": { - "description": "Subtitle for split Vorbis artist tag mode" + "channelPreview": "Önizleme", + "@channelPreview": { + "description": "Update channel - beta/preview releases" }, - "folderOrganizationByAlbum": "Albüme Göre", - "@folderOrganizationByAlbum": { - "description": "Folder option - album folders" + "sectionSearchSource": "Arama Kaynağı", + "@sectionSearchSource": { + "description": "Settings section header" }, - "libraryPlayback": "Playback", - "@storeFilterAll": { - "description": "Repo filter - all extensions" + "sectionDownload": "İndir", + "@sectionDownload": { + "description": "Settings section header" }, - "aboutApp": "Uygulama", - "@aboutApp": { - "description": "Section for app info" + "sectionPerformance": "Performans", + "@sectionPerformance": { + "description": "Settings section header" }, - "optionsReplayGainSubtitleOff": "Devre dışı: Ses normalleştirme etiketi yok", - "@optionsReplayGainSubtitleOff": { - "description": "Subtitle when ReplayGain is disabled" + "sectionApp": "Uygulama", + "@sectionApp": { + "description": "Settings section header" }, - "@storeRepoDialogTitle": { - "description": "Title of the change/remove repository dialog" + "sectionData": "Veri", + "@sectionData": { + "description": "Settings section header" }, - "settingsLyricsSubtitle": "Embed, mode, providers, language options", - "@settingsLyricsSubtitle": { - "description": "Subtitle for lyrics settings" + "sectionDebug": "Hata ayıklama", + "@sectionDebug": { + "description": "Settings section header" }, - "logIssueIspBlockingLabel": "ISP BLOCKING DETECTED", - "storeFilterIntegration": "Entegrasyon", - "@storeFilterIntegration": { - "description": "Repo filter - integrations" + "sectionService": "Servis", + "@sectionService": { + "description": "Settings section header" }, - "@lyricsProvidersAtLeastOne": { - "description": "Snackbar when user tries to disable the last enabled provider" - }, - "@appearanceHistoryViewGrid": { - "description": "Grid layout option" - }, - "trackDownloaded": "İndirildi", - "extensionVerificationHelpMessageManual": "SpotiFLAC Mobile could not open the browser automatically. Open this link in your browser, or copy it manually.", - "setupDownloadLocationIosMessage": "iOS'ta indirilenler uygulamanın \"Documents\" dosyasına kaydedilir. Onlara Dosyalar uygulamasından erişebilirsiniz.", - "optionsArtistTagModeDescription": "Birden fazla sanatçının gömülü etiketlere nasıl yazılacağını seçin.", - "@optionsArtistTagModeDescription": { - "description": "Bottom-sheet description for artist tag mode setting" - }, - "@queueRetryAllFailed": { - "description": "Button to retry every failed download in the queue", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@trackConvertDitherTriangularHp": { - "description": "Lossless conversion high-pass triangular dither option" - }, - "@extensionVerificationCopyLink": { - "description": "Button to copy the extension verification URL" - }, - "searchSongs": "Şarkılar", - "@searchSongs": { - "description": "Search result category - songs" - }, - "@appearanceHistoryView": { - "description": "Layout style for history" + "sectionAudioQuality": "Ses Kalitesi", + "@sectionAudioQuality": { + "description": "Settings section header" }, "sectionFileSettings": "Dosya Ayarları", "@sectionFileSettings": { "description": "Settings section header" }, - "@cancelDownloadTitle": { - "description": "Dialog title when confirming cancellation of an active download" + "sectionLyrics": "Şarkı sözleri", + "@sectionLyrics": { + "description": "Settings section header" }, - "@cacheLibraryCover": { - "description": "Cache item title for local library cover art images" + "lyricsMode": "Şarkı Sözü Modu", + "@lyricsMode": { + "description": "Setting - how to save lyrics" }, - "audioAnalysisSpectralCutoff": "Spectral Cutoff", - "dialogDelete": "Sil", - "@dialogDelete": { - "description": "Dialog button - delete item" + "lyricsModeDescription": "Şarkı sözlerinin indirmelerinizle birlikte nasıl kaydedileceğini seçin", + "@lyricsModeDescription": { + "description": "Lyrics mode picker description" }, - "tutorialLibraryDesc": "Downloaded and locally scanned music is organized in your Library.", - "@tutorialLibraryDesc": { - "description": "Tutorial library page description" + "lyricsModeEmbed": "Dosyaya göm", + "@lyricsModeEmbed": { + "description": "Lyrics mode option - embed in audio file" }, - "@queueDownloadSpeedStatus": { - "description": "Queue status while downloading with speed", - "placeholders": { - "speed": { - "type": "String" - } - } + "lyricsModeEmbedSubtitle": "Şarkı sözleri FLAC meta verilerinin içinde saklanır", + "@lyricsModeEmbedSubtitle": { + "description": "Subtitle for embed option" }, - "@extensionsHomeFeedOffSubtitle": { - "description": "Extensions page - subtitle for off home feed option" - }, - "cacheCleanupResult": "Cleanup completed: {downloadCount} orphaned downloads, {libraryCount} missing library entries", - "@cacheCleanupResult": { - "description": "Snackbar after unused data cleanup", - "placeholders": { - "downloadCount": { - "type": "int" - }, - "libraryCount": { - "type": "int" - } - } - }, - "trackConvertLosslessHint": "Kayıpsız dönüştürme — kalite kaybı yok", - "@trackConvertLosslessHint": { - "description": "Hint shown when converting between lossless formats" - }, - "collectionRenamePlaylist": "Çalma listesini yeniden adlandır", - "@collectionRenamePlaylist": { - "description": "Action to rename playlist" - }, - "@libraryFilterTitle": { - "description": "Filter bottom sheet title" - }, - "@storageModeAppFolder": { - "description": "Storage mode option - app-managed folder" - }, - "logTotalErrors": "Total errors: {count}", - "@logTotalErrors": { - "description": "Total error count in log issue analysis", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@setupStorageRequired": { - "description": "Title when storage permission needed" - }, - "@snackbarMetadataProviderSaved": { - "description": "Snackbar - metadata provider order saved" - }, - "@selectionBatchConvertConfirmTitle": { - "description": "Confirmation dialog title for batch conversion" - }, - "extensionsHomeFeedAutoSubtitle": "Automatically select the best available", - "@extensionsHomeFeedAutoSubtitle": { - "description": "Extensions page - subtitle for auto home feed option" - }, - "setupLanguageDescription": "Uygulama için tercih ettiğiniz dili seçin. Bunu daha sonra Ayarlar'dan değiştirebilirsiniz.", - "settingsBackupSubtitle": "Move your library, history and settings to a new device", - "@settingsBackupSubtitle": { - "description": "Subtitle for backup and restore settings item" - }, - "recentTypeArtist": "Sanatçı", - "@recentTypeArtist": { - "description": "Recent access item type - artist" - }, - "collectionPlaylistEmptySubtitle": "Buraya eklemek istediğiniz herhangi bir parçaya uzun süre basılı tutun +", - "artistCompilations": "Derlemeler", - "@artistCompilations": { - "description": "Section header for compilations" - }, - "snackbarFolderPickerFailed": "Failed to open folder picker: {error}", - "@snackbarFolderPickerFailed": { - "description": "Snackbar shown when folder picker fails to open", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "@optionsDetailedLoggingOn": { - "description": "Status when logging enabled" - }, - "settingsSaveDownloadHistory": "Save download history", - "@settingsSaveDownloadHistory": { - "description": "Settings switch title for storing completed downloads in history" - }, - "@storeCategoryIntegration": { - "description": "Store extension category - integration" - }, - "a11yOpenItemCount": "Open {title}, {count} {count, plural, =1{item} other{items}}", - "@a11yOpenItemCount": { - "description": "Accessibility label for opening a grouped item with count", - "placeholders": { - "title": { - "type": "String" - }, - "count": { - "type": "int" - } - } - }, - "trackFileInfo": "Dosya Bilgisi", - "@trackFileInfo": { - "description": "Tab title - file information" - }, - "libraryFilterMetadataMissingAlbumArtist": "Kayıp albüm sanatçısı", - "audioAnalysisNoClipping": "No clipping", - "tutorialSettingsDesc": "Fine-tune downloads, playback, Library behavior, appearance, and storage.", - "@tutorialSettingsDesc": { - "description": "Tutorial settings page description" + "lyricsModeExternal": "Harici .lrc dosyası", + "@lyricsModeExternal": { + "description": "Lyrics mode option - separate LRC file" }, "lyricsModeExternalSubtitle": "Samsung Music gibi oynatıcılar için ayrı .lrc dosyası", "@lyricsModeExternalSubtitle": { "description": "Subtitle for external option" }, - "trackLoadLyrics": "Şarkı Sözlerini Yükle", - "@trackLoadLyrics": { - "description": "Action - fetch lyrics" + "lyricsModeBoth": "Her ikisi de", + "@lyricsModeBoth": { + "description": "Lyrics mode option - embed and external" }, - "extensionVerificationHelpTitleWaiting": "Verification still waiting", - "@extensionVerificationHelpTitleWaiting": { - "description": "Dialog title when verification is taking longer than expected" + "lyricsModeBothSubtitle": "Hem göm hem de .lrc dosyası olarak kaydet", + "@lyricsModeBothSubtitle": { + "description": "Subtitle for both option" }, - "libraryFilterReset": "Reset", - "@libraryFilterReset": { - "description": "Reset all filters button" - }, - "@downloadAlbumArtistMetadataFull": { - "description": "Status label when album-artist folder filtering uses full metadata" - }, - "storeTitle": "Uzantı Deposu", - "@storeTitle": { - "description": "Repo screen title" - }, - "libraryCleared": "Kütüphane temizlendi", - "@libraryCleared": { - "description": "Snackbar after clearing library" - }, - "queueDownloadCompleted": "Download completed", - "@queueDownloadCompleted": { - "description": "Accessibility label for completed download state in queue" - }, - "libraryTitle": "Yerel Kitaplık", - "@libraryTitle": { - "description": "Library settings page title" - }, - "queueAlbumCount": "{count, plural, =1{1 album} other{{count} albums}}", - "@queueAlbumCount": { - "description": "Album count label with plural support", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "libraryClearConfirmTitle": "Kütüphaneyi temizle", - "@backupExportSectionTitle": { - "description": "Section title for the export/backup card" - }, - "dialogClearAll": "Tümünü Temizle", - "@dialogClearAll": { - "description": "Dialog title - clear all items" - }, - "tutorialExtensionsDesc": "Extensions add search, download, metadata, lyrics, and other integrations.", - "@tutorialExtensionsDesc": { - "description": "Tutorial extensions page description" - }, - "libraryExternalPlayer": "External player", - "@libraryExternalPlayer": { - "description": "Setting option to use an external music player" - }, - "editMetadataFieldGenre": "Genre", - "@tutorialLibraryTitle": { - "description": "Tutorial library page title" - }, - "folderOrganizationByPlaylist": "Çalma Listesine Göre", - "queueTrackCount": "{count, plural, =1{1 track} other{{count} tracks}}", - "@searchSortTitle": { - "description": "Bottom sheet title for search sort options" - }, - "editMetadataSelectNone": "None", - "@historyFilterSingles": { - "description": "Filter chip - show singles only" - }, - "@setupLanguageTitle": { - "description": "Title for the language selection step in setup" - }, - "trackSaveCoverArt": "Save Cover Art", - "@trackSaveCoverArt": { - "description": "Menu action - save album cover art as file" - }, - "@downloadAlbumFolderStructure": { - "description": "Setting - album folder organization" - }, - "lyricsProvidersAtLeastOne": "At least one provider must remain enabled", - "@notifDownloadCompleteCount": { - "description": "Notification title when download is complete, with count", - "placeholders": { - "completed": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "setupUseDefault": "Varsayılanı Kullan", - "@setupUseDefault": { - "description": "Button to use default folder" - }, - "logNoLogsYetSubtitle": "Uygulamayı kullandıkça günlükler burada görünecektir", - "@logNoLogsYetSubtitle": { - "description": "Empty state subtitle" - }, - "@dateToday": { - "description": "Relative date - today" - }, - "trackSaveLyricsProgress": "Saving lyrics...", - "@trackSaveLyricsProgress": { - "description": "Snackbar while saving lyrics to file" - }, - "trackCoverSaved": "Cover art saved to {fileName}", - "@trackCoverSaved": { - "description": "Snackbar after cover art saved", - "placeholders": { - "fileName": { - "type": "String" - } - } - }, - "trackReEnrichFieldLyrics": "Lyrics", - "@audioAnalysisRescan": { - "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" - }, - "@downloadNeteaseIncludeRomanizationEnabled": { - "description": "Subtitle when Netease romanization is on" - }, - "dialogDisableAndClear": "Turn off and clear", - "extensionHealthChecksConfigured": "{count} {count, plural, =1{check} other{checks}} configured", - "cleanupOrphanedDownloadsSubtitle": "Artık mevcut olmayan dosyalar için geçmiş kayıtlarını kaldırın", - "@notifLibraryScanProgressWithTotal": { - "description": "Notification body for library scan progress when total is known", - "placeholders": { - "scanned": { - "type": "int" - }, - "total": { - "type": "int" - }, - "percentage": { - "type": "int" - } - } - }, - "@extensionDetailsTags": { - "description": "Section title for extension tags" - }, - "@albumFolderAlbumOnlySubtitle": { - "description": "Folder structure example" - }, - "@audioAnalysisAnalyzing": { - "description": "Loading text while analyzing audio" - }, - "@settingsDonate": { - "description": "Settings menu item - donate page" - }, - "@collectionPlaylistNameRequired": { - "description": "Validation error for empty playlist name" - }, - "@backupImportSectionDescription": { - "description": "Description for the restore action" - }, - "storeFilterLyrics": "Şarkı Sözleri", - "libraryAutoScan": "Otomatik Tarama", - "@libraryAutoScan": { - "description": "Setting for automatic library scanning" - }, - "safMigrationMessage1": "SpotiFLAC now uses Android Storage Access Framework (SAF) for downloads. This fixes \"permission denied\" errors on Android 10+.", - "@safMigrationMessage1": { - "description": "First paragraph of SAF migration dialog" - }, - "setupStorageRequired": "Depolama İzni Gerekli", - "@notifLibraryScanErrors": { - "description": "Library scan complete suffix - error count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "appearanceHistoryViewGrid": "Izgara", - "trackConvertConverting": "Converting audio...", - "@trackConvertConverting": { - "description": "Snackbar while converting" - }, - "@setupUseDefaultFolder": { - "description": "Dialog title for default folder" - }, - "optionsArtistTagModeSplitVorbisSubtitle": "FLAC ve Opus için her sanatçıya ayrı bir etiket yazın; MP3 ve M4A birleşik kalır.", - "snackbarPlayingNext": "Playing next", - "@snackbarPlayingNext": { - "description": "Snackbar when a track is inserted as the next queue item" - }, - "optionsDefaultSearchTabSubtitle": "Yeni arama sonuçları için hangi sekmenin önce açılacağını seçin.", - "@editMetadataAutoFillFetch": { - "description": "Button label to fetch online metadata and fill selected fields" - }, - "tutorialSearchDesc": "Search with your selected extension or paste a supported music link.", - "@sectionService": { + "sectionColor": "Renk", + "@sectionColor": { "description": "Settings section header" }, - "notifUpdateProgress": "{received} / {total} MB • {percentage}%", - "@discographyDownloadSelected": { - "description": "Button - download selected albums" + "sectionTheme": "Tema", + "@sectionTheme": { + "description": "Settings section header" }, - "cacheClearAllConfirmMessage": "This will clear all cache categories on this page. Downloaded music files will not be deleted.", - "@cacheClearAllConfirmMessage": { - "description": "Dialog message before clearing all caches" + "sectionLayout": "Düzen", + "@sectionLayout": { + "description": "Settings section header" }, - "extensionsHomeFeedProvider": "Home Feed Provider", - "@extensionsHomeFeedProvider": { - "description": "Extensions page - label for home feed provider selector" + "sectionLanguage": "Dil", + "@sectionLanguage": { + "description": "Settings section header for language" }, - "@cacheExploreFeed": { - "description": "Cache item title for explore home feed cache" + "appearanceLanguage": "Uygulama Dili", + "@appearanceLanguage": { + "description": "Language setting title" }, - "@audioAnalysisDynamicRange": { - "description": "Dynamic range metric label" + "settingsAppearanceSubtitle": "Tema, renkler, görünüm", + "@settingsAppearanceSubtitle": { + "description": "Appearance settings description" }, - "unknownAlbum": "Unknown Album", - "trackCoverCurrent": "Current cover", - "downloadSongLinkRegionDesc": "Region used when resolving track links via SongLink. Choose the country where your streaming services are available.", - "downloadPrimaryArtistOnlyOff": "Primary only: Off", - "dialogDone": "Tamamlandı", - "@dialogDone": { - "description": "Dialog button - action completed" + "settingsDownloadSubtitle": "Hizmet, kalite, yedekleme", + "@settingsDownloadSubtitle": { + "description": "Download settings description" }, - "storeRepoUrlLabel": "Depo URL'si", - "downloadSelectServiceToEnable": "Select a provider with quality options to enable this option", - "@logIssueRateLimitedSuggestion": { - "description": "Diagnostic badge suggestion for rate limiting" + "settingsExtensionsSubtitle": "İndirme sağlayıcılarını yönet", + "@settingsExtensionsSubtitle": { + "description": "Extensions settings description" }, - "libraryScanProgress": "{total} dosyanın {progress}%'si", - "@libraryScanProgress": { - "description": "Scan progress display", + "settingsLogsSubtitle": "Hata ayıklama için uygulama günlüklerini görüntüle", + "@settingsLogsSubtitle": { + "description": "Logs settings description" + }, + "loadingSharedLink": "Paylaşılan bağlantı yükleniyor...", + "@loadingSharedLink": { + "description": "Status when opening shared URL" + }, + "pressBackAgainToExit": "Çıkmak için tekrar geri basın", + "@pressBackAgainToExit": { + "description": "Exit confirmation message" + }, + "downloadAllCount": "Tümünü İndir ({count})", + "@downloadAllCount": { + "description": "Download all button with count", "placeholders": { - "progress": { - "type": "String" - }, - "total": { + "count": { "type": "int" } } }, - "collectionLovedEmptyTitle": "Sevilenler klasörü boş", - "tutorialExtensionsTitle": "Uzantılar", - "@tutorialExtensionsTitle": { - "description": "Tutorial extensions page title" - }, - "searchSortDurationShort": "Süre (en kısa)", - "@searchSortDurationShort": { - "description": "Sort option - shortest duration first" + "tracksCount": "{count, plural, =1{1 parça} other{{count} parça}}", + "@tracksCount": { + "description": "Track count display", + "placeholders": { + "count": { + "type": "int" + } + } }, "trackCopyFilePath": "Dosya yolunu kopyala", "@trackCopyFilePath": { "description": "Action - copy file path" }, - "albumFolderArtistAlbumFlatSubtitle": "Sanatçı/Albüm/ ve Sanatçı/şarkı.flac", - "@trackConvertResampler": { - "description": "Section label for lossless conversion resampler options" + "trackRemoveFromDevice": "Cihazdan kaldır", + "@trackRemoveFromDevice": { + "description": "Action - delete downloaded file" }, - "editMetadataFieldTrackNum": "Track #", - "@editMetadataFieldTrackNum": { - "description": "Chip label for track number field in auto-fill selector" + "trackLoadLyrics": "Şarkı Sözlerini Yükle", + "@trackLoadLyrics": { + "description": "Action - fetch lyrics" }, - "snackbarFailedToUpdate": "Eklenti güncellenirken hata oluştu", - "@snackbarFailedToUpdate": { - "description": "Snackbar - extension update error" + "trackMetadata": "Meta Veri", + "@trackMetadata": { + "description": "Tab title - track metadata" }, - "notifAlreadyInLibrary": "Already in Library", - "@notifAlreadyInLibrary": { - "description": "Notification title when track is already in library" + "trackFileInfo": "Dosya Bilgisi", + "@trackFileInfo": { + "description": "Tab title - file information" }, - "collectionPlaylistNameHint": "Playlist name", - "extensionVerificationCopyLink": "Copy link", - "@replayGainBatchAnalyzing": { - "description": "Progress dialog title while batch scanning ReplayGain" + "trackLyrics": "Şarkı Sözleri", + "@trackLyrics": { + "description": "Tab title - lyrics" + }, + "trackFileNotFound": "Dosya bulunamadı", + "@trackFileNotFound": { + "description": "Error - file doesn't exist" + }, + "trackOpenInDeezer": "Deezer'da aç", + "@trackOpenInDeezer": { + "description": "Action - open track in Deezer app" + }, + "trackOpenInSpotify": "Spotify'da aç", + "@trackOpenInSpotify": { + "description": "Action - open track in Spotify app" + }, + "trackTrackName": "Parça adı", + "@trackTrackName": { + "description": "Metadata label - track title" + }, + "trackArtist": "Sanatçı", + "@trackArtist": { + "description": "Metadata label - artist name" + }, + "trackAlbumArtist": "Albüm sanatçısı", + "@trackAlbumArtist": { + "description": "Metadata label - album artist" + }, + "trackAlbum": "Albüm", + "@trackAlbum": { + "description": "Metadata label - album name" + }, + "trackTrackNumber": "Parça numarası", + "@trackTrackNumber": { + "description": "Metadata label - track number" + }, + "trackDiscNumber": "Disk numarası", + "@trackDiscNumber": { + "description": "Metadata label - disc number" + }, + "trackDuration": "Süre", + "@trackDuration": { + "description": "Metadata label - track length" + }, + "trackAudioQuality": "Ses kalitesi", + "@trackAudioQuality": { + "description": "Metadata label - audio quality" + }, + "trackReplayGainTrackGain": "ReplayGain Track Gain", + "@trackReplayGainTrackGain": { + "description": "Metadata label - ReplayGain track gain" + }, + "trackReplayGainTrackPeak": "ReplayGain Track Peak", + "@trackReplayGainTrackPeak": { + "description": "Metadata label - ReplayGain track peak" + }, + "trackReplayGainAlbumGain": "ReplayGain Album Gain", + "@trackReplayGainAlbumGain": { + "description": "Metadata label - ReplayGain album gain" + }, + "trackReplayGainAlbumPeak": "ReplayGain Album Peak", + "@trackReplayGainAlbumPeak": { + "description": "Metadata label - ReplayGain album peak" + }, + "libraryQualityLabelFileFormat": "File format", + "@libraryQualityLabelFileFormat": { + "description": "Library audio quality label mode that shows the detected file format" + }, + "trackReleaseDate": "Yayın tarihi", + "@trackReleaseDate": { + "description": "Metadata label - release date" + }, + "trackGenre": "Tür", + "@trackGenre": { + "description": "Metadata label - music genre" + }, + "trackLabel": "Etiket / Müzik Şirketi", + "@trackLabel": { + "description": "Metadata label - record label" + }, + "trackCopyright": "Telif Hakkı", + "@trackCopyright": { + "description": "Metadata label - copyright information" + }, + "trackDownloaded": "İndirildi", + "@trackDownloaded": { + "description": "Metadata label - download date" + }, + "trackCopyLyrics": "Şarkı sözlerini kopyala", + "@trackCopyLyrics": { + "description": "Action - copy lyrics to clipboard" + }, + "trackLyricsSource": "Kaynak: {source}", + "@trackLyricsSource": { + "description": "Label showing the lyrics source/provider", + "placeholders": { + "source": { + "type": "String" + } + } + }, + "trackLyricsNotAvailable": "Bu parça için şarkı sözü mevcut değil", + "@trackLyricsNotAvailable": { + "description": "Message when lyrics not found" + }, + "trackLyricsNotInFile": "Bu dosyada şarkı sözü bulunamadı", + "@trackLyricsNotInFile": { + "description": "Message when no embedded lyrics in audio file" + }, + "trackFetchOnlineLyrics": "İnternetten Getir", + "@trackFetchOnlineLyrics": { + "description": "Action - fetch lyrics from online providers" + }, + "trackLyricsTimeout": "İstek zaman aşımına uğradı. Daha sonra tekrar deneyin.", + "@trackLyricsTimeout": { + "description": "Message when lyrics request times out" + }, + "trackLyricsLoadFailed": "Şarkı sözleri yüklenemedi", + "@trackLyricsLoadFailed": { + "description": "Message when lyrics loading fails" + }, + "trackEmbedLyrics": "Şarkı Sözlerini Göm", + "@trackEmbedLyrics": { + "description": "Action - embed lyrics into audio file" + }, + "trackLyricsEmbedded": "Şarkı sözleri başarıyla gömüldü", + "@trackLyricsEmbedded": { + "description": "Snackbar - lyrics saved to file" + }, + "trackInstrumental": "Enstrümantal parça", + "@trackInstrumental": { + "description": "Message when track is instrumental (no lyrics)" + }, + "trackCopiedToClipboard": "Panoya kopyalandı", + "@trackCopiedToClipboard": { + "description": "Snackbar - content copied" + }, + "trackDeleteConfirmTitle": "Cihazdan kaldırılsın mı?", + "@trackDeleteConfirmTitle": { + "description": "Delete confirmation title" + }, + "trackDeleteConfirmMessage": "Bu işlem, indirilen dosyayı kalıcı olarak silecek ve geçmişinizden kaldıracaktır.", + "@trackDeleteConfirmMessage": { + "description": "Delete confirmation message" + }, + "dateToday": "Bugün", + "@dateToday": { + "description": "Relative date - today" + }, + "dateYesterday": "Dün", + "@dateYesterday": { + "description": "Relative date - yesterday" + }, + "dateDaysAgo": "{count} gün önce", + "@dateDaysAgo": { + "description": "Relative date - days ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dateWeeksAgo": "{count} hafta önce", + "@dateWeeksAgo": { + "description": "Relative date - weeks ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dateMonthsAgo": "{count} ay önce", + "@dateMonthsAgo": { + "description": "Relative date - months ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "storeFilterAll": "Tümü", + "@storeFilterAll": { + "description": "Repo filter - all extensions" + }, + "storeFilterMetadata": "Meta Veri", + "@storeFilterMetadata": { + "description": "Repo filter - metadata providers" + }, + "storeFilterDownload": "İndir", + "@storeFilterDownload": { + "description": "Repo filter - download providers" + }, + "storeFilterUtility": "Araç", + "@storeFilterUtility": { + "description": "Repo filter - utility extensions" + }, + "storeFilterLyrics": "Şarkı Sözleri", + "@storeFilterLyrics": { + "description": "Repo filter - lyrics providers" + }, + "storeFilterIntegration": "Entegrasyon", + "@storeFilterIntegration": { + "description": "Repo filter - integrations" + }, + "storeClearFilters": "Filtreleri temizle", + "@storeClearFilters": { + "description": "Button to clear all filters" + }, + "storeAddRepoTitle": "Uzantı Deposu Ekle", + "@storeAddRepoTitle": { + "description": "Store setup screen - heading when no repo is configured" + }, + "storeAddRepoDescription": "Uzantılara göz atmak ve yüklemek için registry.json dosyası içeren bir GitHub depo URL'si girin.", + "@storeAddRepoDescription": { + "description": "Store setup screen - explanatory text" + }, + "storeRepoUrlLabel": "Depo URL'si", + "@storeRepoUrlLabel": { + "description": "Label for the repository URL input field" + }, + "storeRepoUrlHint": "https://github.com/user/repo", + "@storeRepoUrlHint": { + "description": "Hint/placeholder for the repository URL input field" + }, + "storeAddRepoButton": "Depo Ekle", + "@storeAddRepoButton": { + "description": "Button to submit a new repository URL" + }, + "storeChangeRepoTooltip": "Depoyu değiştir", + "@storeChangeRepoTooltip": { + "description": "Tooltip for the change-repository icon button in the app bar" + }, + "storeRepoDialogTitle": "Uzantı Deposu", + "@storeRepoDialogTitle": { + "description": "Title of the change/remove repository dialog" + }, + "storeRepoDialogCurrent": "Mevcut depo:", + "@storeRepoDialogCurrent": { + "description": "Label shown above the current repository URL in the dialog" + }, + "storeNewRepoUrlLabel": "Yeni Depo URL'si", + "@storeNewRepoUrlLabel": { + "description": "Label for the new repository URL field inside the dialog" + }, + "storeLoadError": "Depo yüklenemedi", + "@storeLoadError": { + "description": "Error heading when the store cannot be loaded" + }, + "storeEmptyNoExtensions": "Uygun uzantı yok", + "@storeEmptyNoExtensions": { + "description": "Message when store has no extensions" + }, + "storeEmptyNoResults": "Uzantı bulunamadı", + "@storeEmptyNoResults": { + "description": "Message when search/filter returns no results" }, - "setupLanguageTitle": "Dil Seçin", "extensionId": "Kimlik", "@extensionId": { "description": "Extension detail - unique ID" }, - "regionCountryBR": "Brazil", - "@updateNewVersionReady": { - "description": "Update subtitle" + "extensionError": "Hata", + "@extensionError": { + "description": "Extension detail - error message" }, - "@queueDownloadedFileMissing": { - "description": "Accessibility label when a downloaded file is missing from disk" - }, - "@lyricsMode": { - "description": "Setting - how to save lyrics" - }, - "@settingsAppearance": { - "description": "Settings section - visual customization" - }, - "@setupStorageAccessMessageAndroid11": { - "description": "Android 11+ specific explanation" - }, - "@tutorialLibraryTip3": { - "description": "Tutorial library tip 3" - }, - "@downloadAppleQqMultiPersonDisabled": { - "description": "Subtitle when multi-person lyrics is off" - }, - "libraryStorageAccessMessage": "SpotiFLAC, müzik kitaplığınızı tarayabilmek için depolama alanına erişime ihtiyaç duyar. Lütfen ayarlar bölümünden izin verin.", - "@libraryStorageAccessMessage": { - "description": "Dialog message for storage permission" - }, - "@tutorialLibraryTip1": { - "description": "Tutorial library tip 1" - }, - "dialogRemoveExtensionMessage": "Bu eklentiyi kaldırmak istediğine emin misin? Bu işlem geri alınamaz.", - "@dialogRemoveExtensionMessage": { - "description": "Dialog message - uninstall confirmation" - }, - "setupDownloadLocationTitle": "İndirme Konumu", - "@setupDownloadLocationTitle": { - "description": "Download location dialog title" - }, - "downloadNetworkCompatibilityModeEnabled": "Allowing legacy HTTP endpoints; TLS verification remains enabled", - "@downloadNetworkCompatibilityModeEnabled": { - "description": "Subtitle when network compatibility mode is on" - }, - "@audioAnalysisBitDepth": { - "description": "Bit depth metric label" - }, - "trackOptionAddToLoved": "Add to Loved", - "@trackOptionAddToLoved": { - "description": "Bottom sheet action label - add track to loved folder" - }, - "cacheAppDirectory": "Uygulama önbellek dizini", - "@cacheAppDirectory": { - "description": "Cache item title for app cache directory" - }, - "lyricsProviderMusixmatchDesc": "Largest lyrics database (multi-language)", - "@navStore": { - "description": "Bottom navigation - Extension repo tab" - }, - "extensionPostProcessing": "Son İşlem", - "@searchTracks": { - "description": "Search filter label - tracks" - }, - "logCopied": "Kayıtlar panoya kopyalandı", - "@logCopied": { - "description": "Snackbar - logs copied" - }, - "@extensionHealthRequired": { - "description": "Label for a required extension service health check" - }, - "@previewPlay": { - "description": "Tooltip for the button that plays a short track preview snippet" - }, - "clickableLookingUpArtist": "Looking up artist...", - "@clickableLookingUpArtist": { - "description": "Snackbar shown while clickable artist metadata is being resolved" - }, - "@extensionVerificationBrowserSubtitleInApp": { - "description": "Subtitle when in-app browser is preferred for extension verification" - }, - "setupUseDefaultFolder": "Varsayılan Klasörü Kullan?", - "tutorialSearchHint": "Paste or search...", - "@logIssueTrackNotFoundLabel": { - "description": "Diagnostic badge label when a track is unavailable" - }, - "@storageModeAppFolderSubtitle": { - "description": "Subtitle for app folder storage mode" - }, - "downloadMusixmatchLanguage": "Musixmatch Language", - "@downloadMusixmatchLanguage": { - "description": "Setting for Musixmatch lyrics translation language" - }, - "lyricsModeExternal": "Harici .lrc dosyası", - "@setupSelectFolder": { - "description": "Button to select folder" - }, - "logSearchHint": "Kayıtları Ara...", - "@backupCreateFailed": { - "description": "Snackbar when backup creation fails" - }, - "@settingsSaveDownloadHistorySubtitle": { - "description": "Settings switch subtitle for storing completed downloads in history" - }, - "@albumFolderArtistAlbumFlat": { - "description": "Album folder option with singles directly in artist folder" - }, - "extensionHealthRequired": "gerekli", - "actionCancel": "Vazgeç", - "@actionCancel": { - "description": "Action button - cancel operation" - }, - "optionsEmbedMetadataSubtitleOff": "Disabled (advanced): skip all metadata embedding", - "@optionsEmbedMetadataSubtitleOff": { - "description": "Subtitle when metadata embedding is disabled" - }, - "downloadAllowLocalNetworkDisabled": "Local/private addresses are blocked for security", - "@downloadAllowLocalNetworkDisabled": { - "description": "Subtitle when allow local network access is off" - }, - "@extensionsDownloadPrioritySubtitle": { - "description": "Subtitle for download priority" - }, - "downloadSingleFilenameFormat": "Single Dosya Adı Formatı", - "@downloadSingleFilenameFormat": { - "description": "Setting for output filename pattern for singles/EPs" - }, - "cacheSummarySubtitle": "Önbelleği temizlemek, indirilen müzik dosyalarını silmeyecektir.", - "@cacheSummarySubtitle": { - "description": "Helper text for cache summary card" - }, - "libraryFilterMetadataIncorrectIsrcFormat": "Incorrect ISRC format", - "libraryFilterMetadataMissingTrackNumber": "Missing track number", - "@libraryFilterMetadataMissingTrackNumber": { - "description": "Filter option - items missing track number" - }, - "backupIncludeSecretsDescription": "Tokens and API keys from extensions will be saved into the backup file. Keep the file private. When off, you re-enter them after restoring.", - "@backupIncludeSecretsDescription": { - "description": "Explanation for the include-credentials toggle" - }, - "audioAnalysisChannelStats": "Per-channel Stats", - "@audioAnalysisChannelStats": { - "description": "Per-channel audio analysis section label" - }, - "@extensionServiceStatus": { - "description": "Extension detail section header for service status" - }, - "queueEmptySingles": "No single downloads", - "@queueEmptySingles": { - "description": "Empty state title when no single track downloads exist" - }, - "@snackbarSelectedPlaylistsEmpty": { - "description": "Snackbar when selected playlists contain no tracks" - }, - "@errorRateLimited": { - "description": "Error title - too many requests" - }, - "setupDownloadInFlac": "Download music in lossless and Hi-Res quality", - "@setupDownloadInFlac": { - "description": "App tagline in setup" - }, - "trackRemoveFromDevice": "Cihazdan kaldır", - "@extensionsNoDownloadProvider": { - "description": "Empty state - no download providers" - }, - "@backupCreated": { - "description": "Snackbar after a backup file is created" - }, - "cacheSummaryTitle": "Önbellek genel bakışı", - "@cacheSummaryTitle": { - "description": "Heading for cache summary card" - }, - "selectionReplayGainCount": "ReplayGain ({count})", - "@selectionReplayGainCount": { - "description": "Batch selection action button label for ReplayGain", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@setupNotificationBackgroundDescription": { - "description": "Detailed notification explanation" - }, - "safMigrationTitle": "Storage Update Required", - "snackbarMetadataSaved": "Meta veriler başarıyla kaydedildi", - "@snackbarMetadataSaved": { - "description": "Snackbar after successfully saving track metadata" - }, - "@backupContentsSettings": { - "description": "Backup contents row label for settings" - }, - "logClearLogsTitle": "Kayıtları temizle", - "extensionsCustomSearch": "Özel arama", - "@extensionsCustomSearch": { - "description": "Label for custom search provider" - }, - "@downloadFrom": { - "description": "Label - download source" - }, - "cacheSizeWithFiles": "{size} in {count} files", - "selectionShareNoFiles": "No shareable files found", - "@selectionShareNoFiles": { - "description": "Snackbar when no selected files exist on disk" - }, - "snackbarAddedTracksToQueue": "{count} şarkı kuyruğa eklendi", - "downloadFilenameInsertTag": "Etiket eklemek için dokunun:", - "@downloadFilenameInsertTag": { - "description": "Label above filename tag chips" - }, - "collectionRemovedFromFavoriteArtists": "\"{artistName}\" removed from Favorite Artists", - "@collectionRemovedFromFavoriteArtists": { - "description": "Snackbar after removing artist from favorite artists", - "placeholders": { - "artistName": { - "type": "String" - } - } - }, - "queueDownloadSpeedStatus": "Downloading - {speed} MB/s", - "backupRestoreConfirmButton": "Restore", - "@libraryCleanupMissingFiles": { - "description": "Button to remove entries for missing files" - }, - "backupCreateFailed": "Failed to create backup", - "notifLibraryScanFailed": "Library scan failed", - "@notifLibraryScanFailed": { - "description": "Notification title when library scan fails" - }, - "audioAnalysisRescan": "Re-analyze", - "@trackTrackName": { - "description": "Metadata label - track title" - }, - "@setupPermissionRequired": { - "description": "Generic permission required title", - "placeholders": { - "permissionType": { - "type": "String", - "description": "Type of permission (Storage/Notification)" - } - } - }, - "@nowPlayingNoLyrics": { - "description": "Empty state when the playing file has no embedded lyrics" - }, - "libraryFilesUnit": "{count, plural, =1{dosya} other{dosyalar}}", - "@libraryFilesUnit": { - "description": "Unit label for files count during library scanning", - "placeholders": { - "count": { - "type": "int" - } - } + "extensionCapabilities": "Özellikler", + "@extensionCapabilities": { + "description": "Section header - extension features" }, + "extensionMetadataProvider": "Meta Veri Sağlayıcı", "@extensionMetadataProvider": { "description": "Capability - provides metadata" }, - "@downloadFilterContributing": { - "description": "Setting to strip contributing artists from Album Artist folder name" + "extensionDownloadProvider": "İndirme Sağlayıcı", + "@extensionDownloadProvider": { + "description": "Capability - provides downloads" }, - "libraryScanSelectFolderFirst": "Önce bir klasör seçin", - "@sectionDownload": { - "description": "Settings section header" + "extensionLyricsProvider": "Şarkı Sözü Sağlayıcı", + "@extensionLyricsProvider": { + "description": "Capability - provides lyrics" }, - "extensionHealthNotConfigured": "Not configured", - "queueRetryAllFailed": "Retry {count} failed", - "folderOrganizationByPlaylistSubtitle": "Her çalma listesi için ayrı klasör", - "@folderOrganizationByPlaylistSubtitle": { - "description": "Subtitle for playlist folder option" + "extensionUrlHandler": "URL İşleyici", + "@extensionUrlHandler": { + "description": "Capability - handles URLs" }, - "lyricsProviderExtensionDesc": "Extension provider", - "@libraryFilterQualityHiRes": { - "description": "Filter option - high resolution audio" + "extensionQualityOptions": "Kalite Seçenekleri", + "@extensionQualityOptions": { + "description": "Capability - quality selection" }, - "trackConvertTitle": "Convert Audio", - "@trackConvertTitle": { - "description": "Title of convert bottom sheet" + "extensionPostProcessingHooks": "Son İşlem Kancaları", + "@extensionPostProcessingHooks": { + "description": "Capability - post-processing" }, - "setupSkipForNow": "Şimdilik atla", - "sectionDownload": "İndir", - "downloadLossyOpus256Subtitle": "En iyi Opus kalitesi, parça başına ~8 Mb", - "@downloadLossyOpus256Subtitle": { - "description": "Subtitle for Opus 256kbps lossy option" + "extensionPermissions": "İzinler", + "@extensionPermissions": { + "description": "Section header - required permissions" }, - "@trackConvertActionLabelLossless": { - "description": "Convert button label for lossless conversion with quality cap", + "extensionSettings": "Ayarlar", + "@extensionSettings": { + "description": "Section header - extension settings" + }, + "extensionRemoveButton": "Uzantıyı Kaldır", + "@extensionRemoveButton": { + "description": "Button to uninstall extension" + }, + "extensionUpdated": "Güncellendi", + "@extensionUpdated": { + "description": "Extension detail - last update" + }, + "extensionMinAppVersion": "Minimum Uygulama Sürümü", + "@extensionMinAppVersion": { + "description": "Extension detail - minimum app version" + }, + "extensionCustomTrackMatching": "Özel Parça Eşleştirme", + "@extensionCustomTrackMatching": { + "description": "Capability - custom track matching algorithm" + }, + "extensionPostProcessing": "Son İşlem", + "@extensionPostProcessing": { + "description": "Capability - post-download processing" + }, + "extensionHooksAvailable": "{count} kanca kullanılabilir", + "@extensionHooksAvailable": { + "description": "Post-processing hooks count", "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "quality": { + "count": { + "type": "int" + } + } + }, + "extensionPatternsCount": "{count} desen", + "@extensionPatternsCount": { + "description": "URL patterns count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionStrategy": "Strateji: {strategy}", + "@extensionStrategy": { + "description": "Track matching strategy name", + "placeholders": { + "strategy": { "type": "String" } } }, - "storeRequiresVersion": "Requires v{version}+", - "@storeRequiresVersion": { - "description": "Store compatibility badge for minimum app version", - "placeholders": { - "version": { - "type": "String" - } - } + "extensionsProviderPrioritySection": "Sağlayıcı Önceliği", + "@extensionsProviderPrioritySection": { + "description": "Section header - provider priority" }, - "metadataProviderPriorityDescription": "Meta veri sağlayıcılarını yeniden sıralamak için sürükleyin. Uygulama, parça ararken ve meta verileri alırken sağlayıcıları yukarıdan aşağıya doğru deneyecektir.", - "@notifUpdateFailed": { - "description": "Notification title when app update download fails" + "extensionsInstalledSection": "Kurulu uzantılar", + "@extensionsInstalledSection": { + "description": "Section header - installed extensions" + }, + "extensionsNoExtensions": "Hiçbir eklenti kurulmamış", + "@extensionsNoExtensions": { + "description": "Empty state - no extensions" + }, + "extensionsNoExtensionsSubtitle": "Yeni sağlayıcılar eklemek için .spotiflac-ext dosyalarını yükleyin", + "@extensionsNoExtensionsSubtitle": { + "description": "Empty state subtitle" + }, + "extensionsInstallButton": "Uzantı Yükle", + "@extensionsInstallButton": { + "description": "Button to install extension from file" }, "extensionsInfoTip": "Uzantılar yeni meta veri ve indirme sağlayıcıları ekleyebilir. Yalnızca güvenilir kaynaklardan gelen uzantıları yükleyin.", "@extensionsInfoTip": { "description": "Security warning about extensions" }, - "@downloadAppleQqMultiPersonEnabled": { - "description": "Subtitle when multi-person lyrics is on" + "extensionsInstalledSuccess": "Uzantı başarıyla yüklendi", + "@extensionsInstalledSuccess": { + "description": "Success message after install" }, - "libraryFilterMetadataMissingYear": "Kayıp yıl", - "extensionsDownloadPriority": "İndirme Önceliği", - "@extensionsDownloadPriority": { - "description": "Setting - download provider order" - }, - "@downloadAllowLocalNetworkEnabled": { - "description": "Subtitle when allow local network access is on" - }, - "libraryScan": "Kitaplığı Tara", - "@libraryScan": { - "description": "Button to start library scan" - }, - "editMetadataFieldLabel": "Label", - "@editMetadataFieldLabel": { - "description": "Chip label for label field in auto-fill selector" - }, - "updateDownloadFailed": "İndirme başarısız", - "@updateDownloadFailed": { - "description": "Update error title" - }, - "appearanceAmoledDarkSubtitle": "Saf siyah arka plan", - "@appearanceAmoledDarkSubtitle": { - "description": "Subtitle for AMOLED dark" - }, - "setupIcloudNotSupported": "iCloud Drive desteklenmiyor. Lütfen uygulama Belgeler klasörünü kullanın.", - "trackLyricsEmbeddedSource": "Embedded", - "@trackLyricsEmbeddedSource": { - "description": "Lyrics source label for embedded lyrics" - }, - "@trackAlbumArtist": { - "description": "Metadata label - album artist" + "extensionsInstalledCount": "{count} uzantı başarıyla yüklendi", + "@extensionsInstalledCount": { + "description": "Success message after installing multiple extensions", + "placeholders": { + "count": { + "type": "int", + "description": "Number of installed extensions" + } + } }, "extensionsInstallPartialSuccess": "Yüklenen uzantı sayısı: {installed} / {attempted}", "@extensionsInstallPartialSuccess": { @@ -4147,1741 +1993,217 @@ } } }, - "@extensionSettingsCount": { - "description": "Count of settings exposed by an extension quality option", - "placeholders": { - "count": { - "type": "int" - } - } + "extensionsDownloadPriority": "İndirme Önceliği", + "@extensionsDownloadPriority": { + "description": "Setting - download provider order" }, - "notifLibraryScanCancelled": "Library scan cancelled", - "@notifLibraryScanCancelled": { - "description": "Notification title when library scan is cancelled by the user" + "extensionsDownloadPrioritySubtitle": "İndirme servisi sırasını ayarla", + "@extensionsDownloadPrioritySubtitle": { + "description": "Subtitle for download priority" }, - "collectionPlaylistNameRequired": "Çalma listesi adı zorunludur", - "libraryCleanupMissingFiles": "Eksik Dosyaları Temizle", - "storeCategoryUtility": "Utility", - "@storeCategoryUtility": { - "description": "Store extension category - utility" + "extensionsFallbackTitle": "Yedekleme Uzantıları", + "@extensionsFallbackTitle": { + "description": "Setting and page title for choosing which download extensions can be used during fallback" }, - "searchSortTitle": "Sonuçları Sırala", - "@extensionVerificationBrowserExternal": { - "description": "Chip label for external browser verification mode" + "extensionsFallbackSubtitle": "Hangi yüklü indirme uzantılarının yedekleme olarak kullanılabileceğini seçin", + "@extensionsFallbackSubtitle": { + "description": "Subtitle for download fallback extensions menu" }, - "audioAnalysisLufs": "LUFS", - "@setupAllowAccessToManageFiles": { - "description": "Instruction for file access permission" + "extensionsNoDownloadProvider": "İndirme sağlayıcısı olan uzantı yok", + "@extensionsNoDownloadProvider": { + "description": "Empty state - no download providers" + }, + "extensionsMetadataPriority": "Meta Veri Önceliği", + "@extensionsMetadataPriority": { + "description": "Setting - metadata provider order" + }, + "extensionsMetadataPrioritySubtitle": "Arama ve meta veri kaynağı sırasını ayarla", + "@extensionsMetadataPrioritySubtitle": { + "description": "Subtitle for metadata priority" + }, + "extensionsNoMetadataProvider": "Meta veri sağlayıcısı içeren uzantı bulunamadı", + "@extensionsNoMetadataProvider": { + "description": "Empty state - no metadata providers" + }, + "extensionsSearchProvider": "Arama Sağlayıcısı", + "@extensionsSearchProvider": { + "description": "Setting - search provider selection" + }, + "extensionsNoCustomSearch": "Özel arama içeren uzantı bulunamadı", + "@extensionsNoCustomSearch": { + "description": "Empty state - no search providers" + }, + "extensionsSearchProviderDescription": "Parça aramak için hangi servisin kullanılacağını seçin", + "@extensionsSearchProviderDescription": { + "description": "Search provider setting description" + }, + "extensionsCustomSearch": "Özel arama", + "@extensionsCustomSearch": { + "description": "Label for custom search provider" }, "extensionsErrorLoading": "Uzantı yüklenirken hata oluştu", - "@actionPaste": { - "description": "Generic action - paste from clipboard" + "@extensionsErrorLoading": { + "description": "Error message when extension fails to load" }, - "aboutFeatureRequestSubtitle": "Uygulama için yeni özellikler isteyin", - "@aboutFeatureRequestSubtitle": { - "description": "Subtitle for feature request" + "qualityFlacLossless": "FLAC Kayıpsız", + "@qualityFlacLossless": { + "description": "Quality option - CD quality FLAC" }, - "@aboutTitle": { - "description": "About page title" + "qualityFlacLosslessSubtitle": "16-bit / 44.1kHz", + "@qualityFlacLosslessSubtitle": { + "description": "Technical spec for lossless" }, - "@downloadNeteaseIncludeTranslation": { - "description": "Setting to include translated lyrics from Netease" + "qualityHiResFlac": "Hi-Res FLAC", + "@qualityHiResFlac": { + "description": "Quality option - high resolution FLAC" }, - "@actionGo": { - "description": "Generic action button label" + "qualityHiResFlacSubtitle": "24-bit / 96kHz'e kadar", + "@qualityHiResFlacSubtitle": { + "description": "Technical spec for hi-res" }, - "regionCountryFR": "France", - "trackConvertResamplerSoxr": "SoXr", - "extensionUpdated": "Güncellendi", - "@extensionUpdated": { - "description": "Extension detail - last update" + "qualityHiResFlacMax": "Hi-Res FLAC Max", + "@qualityHiResFlacMax": { + "description": "Quality option - maximum resolution FLAC" + }, + "qualityHiResFlacMaxSubtitle": "24-bit / 192kHz'e kadar", + "@qualityHiResFlacMaxSubtitle": { + "description": "Technical spec for hi-res max" + }, + "downloadLossy320": "Kayıplı 320kbps", + "@downloadLossy320": { + "description": "Quality option label for lossy 320kbps" }, "downloadLossyFormat": "Kayıplı Format", "@downloadLossyFormat": { "description": "Setting title to pick output format for lossy downloads" }, - "snackbarAlreadyInLibrary": "\"{trackName}\" kitaplığınızda zaten mevcut", - "@snackbarAlreadyInLibrary": { - "description": "Snackbar - track already exists in local library", - "placeholders": { - "trackName": { - "type": "String" - } - } + "downloadAutoConvert": "Auto-convert after download", + "@downloadAutoConvert": { + "description": "Toggle for automatic post-download audio conversion" }, - "libraryExternalPlayerSubtitle": "Recommended for listening, best quality, gapless playback, EQ, and wider format support", - "extensionCustomUrlHandlingShareHint": "Share links from these sites to SpotiFLAC Mobile and this extension will handle them.", - "libraryFilterQuality": "Kalite", - "@libraryFilterQuality": { - "description": "Filter section - audio quality" + "downloadAutoConvertSubtitle": "Convert completed downloads to a smaller lossy format. The original is replaced only after conversion succeeds.", + "@downloadAutoConvertSubtitle": { + "description": "Explanation of safe automatic post-download conversion" }, - "editMetadataAutoFillDone": "Filled {count} {count, plural, =1{field} other{fields}} from online metadata", - "@editMetadataAutoFillDone": { - "description": "Snackbar confirming how many fields were auto-filled", - "placeholders": { - "count": { - "type": "int" - } - } + "downloadAutoConvertFormat": "Output format", + "@downloadAutoConvertFormat": { + "description": "Automatic conversion output format setting" }, - "@discographyDownload": { - "description": "Button - download artist discography" + "downloadAutoConvertFormatSubtitle": "Choose the lossy format used for newly completed downloads.", + "@downloadAutoConvertFormatSubtitle": { + "description": "Automatic conversion format picker explanation" }, - "aboutFeatureRequest": "Özellik isteği", - "downloadSingleFilenameFormatDescription": "Single ve EP'ler için dosya adı örneği. Albüm formatıyla aynı etiketleri kullanır.", - "@downloadSingleFilenameFormatDescription": { - "description": "Subtitle description for single filename format setting" + "downloadAutoConvertBitrate": "Output quality", + "@downloadAutoConvertBitrate": { + "description": "Automatic conversion bitrate setting" }, - "queueClearAllMessage": "Tüm indirmeleri temizlemek istediğinizden emin misiniz?", - "dialogDisableHistoryMessage": "Existing history will be cleared. Downloaded files will not be deleted.", - "extensionLastChecked": "Last checked {time}", - "@extensionLastChecked": { - "description": "Timestamp for the latest extension service health check", - "placeholders": { - "time": { - "type": "String" - } - } + "downloadAutoConvertBitrateSubtitle": "Higher bitrates preserve more detail but create larger files.", + "@downloadAutoConvertBitrateSubtitle": { + "description": "Automatic conversion bitrate picker explanation" }, - "homeImportCsvTooltip": "Import playlist (CSV, M3U)", - "@homeImportCsvTooltip": { - "description": "Tooltip for importing a CSV file into Home search" + "downloadAutoConvertMp3Subtitle": "Best compatibility across players and devices", + "@downloadAutoConvertMp3Subtitle": { + "description": "MP3 automatic conversion option description" }, - "trackConvertResamplerSwr": "SWR", - "@trackConvertResamplerSwr": { - "description": "Lossless conversion default FFmpeg swresample resampler option" + "downloadAutoConvertM4aSubtitle": "Efficient AAC audio in an M4A container", + "@downloadAutoConvertM4aSubtitle": { + "description": "M4A AAC automatic conversion option description" }, - "@downloadFolderOrganization": { - "description": "Title of the folder organization picker bottom sheet" + "downloadAutoConvertOpusSubtitle": "Best efficiency for modern players", + "@downloadAutoConvertOpusSubtitle": { + "description": "Opus automatic conversion option description" }, - "dialogClearHistoryTitle": "Geçmişi Temizle", - "@logClearSearch": { - "description": "Tooltip for clearing the log search field" + "downloadLossy320Format": "Kayıplı 320kbps Formatı", + "@downloadLossy320Format": { + "description": "Title of the lossy format picker bottom sheet" }, - "dialogImport": "İçe aktar", - "@dialogImport": { - "description": "Dialog button - import data" + "downloadLossy320FormatDesc": "Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.", + "@downloadLossy320FormatDesc": { + "description": "Description in the lossy format picker" }, - "@setupChangeFolderTooltip": { - "description": "Tooltip for editing the selected download folder" + "downloadLossyMp3": "MP3 320kbps", + "@downloadLossyMp3": { + "description": "Lossy format option - MP3 320kbps" }, - "notifLibraryScanErrors": "{count} hata", - "@downloadNetworkCompatibilityMode": { - "description": "Setting for legacy TLS/network handling" + "downloadLossyMp3Subtitle": "En iyi uyumluluk, parça başına ~10 Mb", + "@downloadLossyMp3Subtitle": { + "description": "Subtitle for MP3 320kbps lossy option" }, - "@metadataSaveFailedFfmpeg": { - "description": "Snackbar error when FFmpeg fails to write metadata" + "downloadLossyAac": "AAC/M4A 320kbps", + "@downloadLossyAac": { + "description": "Lossy format option - AAC in M4A container at 320kbps" }, - "dialogUninstallExtension": "Eklentiyi Kaldır?", - "recentTypePlaylist": "Çalma Listesi", - "@recentTypePlaylist": { - "description": "Recent access item type - playlist" + "downloadLossyAacSubtitle": "En iyi mobil uyumluluk, M4A konteyner", + "@downloadLossyAacSubtitle": { + "description": "Subtitle for AAC/M4A 320kbps lossy option" }, - "trackDeleteConfirmMessage": "Bu işlem, indirilen dosyayı kalıcı olarak silecek ve geçmişinizden kaldıracaktır.", - "@logIssueNetworkErrorDescription": { - "description": "Diagnostic badge description for generic network errors" + "downloadLossyOpus256": "Opus 256kbps", + "@downloadLossyOpus256": { + "description": "Lossy format option - Opus 256kbps" }, - "appearanceThemeSystem": "Sistem", - "@appearanceThemeSystem": { - "description": "Follow system theme" + "downloadLossyOpus256Subtitle": "En iyi Opus kalitesi, parça başına ~8 Mb", + "@downloadLossyOpus256Subtitle": { + "description": "Subtitle for Opus 256kbps lossy option" }, - "albumFolderArtistAlbumSingles": "Sanatçı / Albüm + Singlelar", - "@aboutTranslators": { - "description": "Section for translators" - }, - "shareSheetNotFound": "Not found", - "@shareSheetNotFound": { - "description": "Cross-service share sheet row subtitle when a service has no match" - }, - "@tutorialDownloadInProgressSemantics": { - "description": "Accessibility label for active download state in tutorial demo" - }, - "editMetadataAutoFillNoneSelected": "Select at least one field to auto-fill", - "@editMetadataAutoFillNoneSelected": { - "description": "Snackbar when user taps Fetch without selecting any fields" - }, - "@snackbarViewQueue": { - "description": "Snackbar action - view download queue" - }, - "@optionsUpdateChannelPreview": { - "description": "Include beta/preview updates" - }, - "editMetadataFieldComposer": "Besteci", - "@editMetadataFieldComposer": { - "description": "Label for composer field in the edit metadata sheet" - }, - "aboutSachinsenalDesc": "The original HiFi project creator. A foundation for lossless-source integration.", - "@aboutSachinsenalDesc": { - "description": "Credit description for sachinsenal0x64" - }, - "backupTitle": "Backup & Restore", - "@libraryFilterMetadata": { - "description": "Filter section - metadata completeness" - }, - "setupStorageAccessRequired": "Depolama Erişimi Gerekli", - "@setupStorageAccessRequired": { - "description": "Title when storage access needed" - }, - "trackMetadataDelete": "Sil", - "@trackMetadataDelete": { - "description": "Action button - delete track" - }, - "libraryFilterMetadataMissingDiscNumber": "Missing disc number", - "@libraryFilterMetadataMissingDiscNumber": { - "description": "Filter option - items missing disc number" - }, - "snackbarMetadataProviderSaved": "Meta veri sağlayıcı önceliği kaydedildi", - "setupPermissionRequired": "{permissionType} İzni Zorunlu", - "@selectionConvertNoConvertible": { - "description": "Snackbar when no selected tracks support conversion" - }, - "extensionHealthDegraded": "Degraded", - "regionCountryKR": "South Korea", - "@regionCountryKR": { - "description": "Country name for SongLink region picker" - }, - "trackLyricsNotInFile": "Bu dosyada şarkı sözü bulunamadı", - "@trackLyricsNotInFile": { - "description": "Message when no embedded lyrics in audio file" - }, - "@downloadedAlbumTapToSelect": { - "description": "Selection hint" - }, - "downloadArtistNameFilters": "Artist Name Filters", - "@downloadArtistNameFilters": { - "description": "Setting title for artist folder filter options" - }, - "@libraryFilterMetadataMissingArtist": { - "description": "Filter option - items missing artist" - }, - "recentShowAllDownloads": "Tüm İndirmeleri Göster", - "@appearanceThemeLight": { - "description": "Light theme" - }, - "trackReEnrichFieldTrackInfo": "Track & Disc Number", - "@appearanceThemeDark": { - "description": "Dark theme" - }, - "extensionVerificationLinkCopied": "Verification link copied", - "@extensionVerificationLinkCopied": { - "description": "Snackbar after copying the extension verification URL" - }, - "@extensionsHomeFeedDescription": { - "description": "Extensions page - description for home feed provider picker" - }, - "downloadAlbumArtistMetadataPrimaryOnly": "Album Artist metadata: Primary only", - "@downloadAlbumArtistMetadataPrimaryOnly": { - "description": "Status label when album-artist folder filtering uses primary artist only" - }, - "extensionOauthConnectHint": "Tap Connect to Spotify to fill this field.", - "setupNext": "Sıradaki", - "extensionVerificationBrowserSubtitleInApp": "Open challenges in the in-app browser first", - "libraryAutoScanDaily": "Günlük", - "@libraryAutoScanDaily": { - "description": "Auto scan once per day" - }, - "@audioAnalysisDescription": { - "description": "Description for audio analysis tap-to-analyze prompt" - }, - "nowPlayingUpNext": "Up next", - "@nowPlayingUpNext": { - "description": "Title for the playback queue sheet" - }, - "nowPlayingPreviousTrack": "Previous track", - "nowPlayingNextTrack": "Next track", - "logAutoScrollOff": "Auto-scroll OFF", - "trackConvertFailed": "Dönüştürme başarısız oldu", - "@trackConvertFailed": { - "description": "Snackbar when conversion fails" - }, - "extensionsUninstall": "Kaldır", - "safMigrationSuccess": "Download folder updated to SAF mode", - "optionsClearHistorySubtitle": "İndirilen bütün şarkıları geçmişten temizle", - "@optionsClearHistorySubtitle": { - "description": "Subtitle for clear history" - }, - "trackPlayNext": "Play next", - "extensionsNoHomeFeedExtensions": "No extensions with home feed", - "optionsUpdateChannelStable": "Sadece stabil sürümler", - "@optionsUpdateChannelStable": { - "description": "Only stable updates" - }, - "@discographyDownloadAllSubtitle": { - "description": "Subtitle showing total tracks and albums", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } - }, - "searchPlaylists": "Çalma Listeleri", - "@searchPlaylists": { - "description": "Search result category - playlists" - }, - "downloadNetworkCompatibilityMode": "Network Compatibility Mode", - "settingsAppearance": "Görünüm", - "logIssueRateLimitedLabel": "RATE LIMITED", - "@logIssueRateLimitedLabel": { - "description": "Diagnostic badge label when the service rate limits requests" - }, - "logIssueSummary": "Issue Summary", - "@logIssueSummary": { - "description": "Header for log issue analysis summary" - }, - "appName": "SpotiFLAC Mobile", - "storeRepoDialogCurrent": "Mevcut depo:", - "@optionsExtensionStoreSubtitle": { - "description": "Subtitle for extension repo toggle" - }, - "@trackLyrics": { - "description": "Tab title - lyrics" - }, - "@backupImportButton": { - "description": "Button to pick a backup file to restore" - }, - "@setupFolderChoose": { - "description": "Button to choose folder" - }, - "storageModeAppFolderSubtitle": "Varsayılan olarak Müzik/SpotiFLAC klasörüne kaydeder", - "@extensionsDisabled": { - "description": "Extension status - inactive" - }, - "@regionCountryAU": { - "description": "Country name for SongLink region picker" - }, - "@storeCategoryMetadata": { - "description": "Store extension category - metadata" - }, - "libraryFilterApply": "Uygula", - "@libraryFilterApply": { - "description": "Apply filters button" - }, - "@libraryFilterSortGenreAsc": { - "description": "Sort option - genre ascending" - }, - "setupAllowAccessToManageFiles": "Lütfen bir sonraki ekranda \"Bütün dosyalara eriş\" iznini sağlayın.", - "@dialogSave": { - "description": "Dialog button - save changes" - }, - "trackLyrics": "Şarkı Sözleri", - "extensionSettingNotSet": "Not set", - "@extensionSettingNotSet": { - "description": "Value shown when an extension setting has no value" - }, - "@audioAnalysisClipping": { - "description": "Clipping metric label" - }, - "downloadNeteaseIncludeTranslation": "Netease: Include Translation", - "@albumFolderArtistAlbumSubtitle": { - "description": "Folder structure example" - }, - "@settingsDonateSubtitle": { - "description": "Subtitle for donate menu item" - }, - "cueSplitSuccess": "{count} parçaya başarıyla bölündü", - "@cueSplitSuccess": { - "description": "Snackbar after successful CUE split", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cueSplitArtist": "Artist: {artist}", - "@cueSplitArtist": { - "description": "Artist name in CUE split sheet", - "placeholders": { - "artist": { - "type": "String" - } - } - }, - "updateSeeReleaseNotes": "See release notes for details.", - "@updateSeeReleaseNotes": { - "description": "Fallback changelog text when release notes cannot be parsed" - }, - "@trackReEnrichFfmpegFailed": { - "description": "Snackbar when FFmpeg embed fails for MP3/Opus" - }, - "collectionWishlist": "İstek listesi", - "@collectionWishlist": { - "description": "Custom folder for saved tracks to download later" - }, - "editMetadataAutoFillFetch": "Fetch & Fill", - "@extensionsHomeFeedAuto": { - "description": "Label for auto-selected search provider" - }, - "providerPriorityDescription": "İndirme hizmetlerini sıralamak için kaydır. Uygulama şarkı indirirken hizmetleri yukarıdan aşağıya doğru deneyecektir.", - "@providerPriorityDescription": { - "description": "Provider priority page description" - }, - "queueEmptySinglesSubtitle": "Single track downloads will appear here", "downloadLossyOpus128": "Opus 128kbps", - "downloadUseAlbumArtistForFolders": "Klasörler için Albüm Sanatçısı'nı kullan", - "@downloadUseAlbumArtistForFolders": { - "description": "Setting - choose whether artist folders use Album Artist or Track Artist" + "@downloadLossyOpus128": { + "description": "Lossy format option - Opus 128kbps" }, - "@aboutLinks": { - "description": "Section for external links" + "downloadLossyOpus128Subtitle": "En küçük boyut, parça başına ~4 Mb", + "@downloadLossyOpus128Subtitle": { + "description": "Subtitle for Opus 128kbps lossy option" }, - "downloadedAlbumDeleteCount": "{count} {count, plural, =1{parçayı} other{parçayı}} sil", - "updateLater": "Daha Sonra", - "@logIssueIspBlockingSuggestion": { - "description": "Diagnostic badge suggestion for ISP blocking" + "downloadAskBeforeDownload": "İndirmeden Önce Sor", + "@downloadAskBeforeDownload": { + "description": "Setting - show quality picker" }, - "actionResume": "Devam et", - "optionsDetailedLoggingOff": "Hata bildirmek için aç", - "@searchSortDefault": { - "description": "Sort option - default API order" + "downloadDirectory": "İndirme Dizini", + "@downloadDirectory": { + "description": "Setting - download folder" }, - "@regionCountryCA": { - "description": "Country name for SongLink region picker" + "downloadSeparateSinglesFolder": "Ayrı Single Klasörü", + "@downloadSeparateSinglesFolder": { + "description": "Setting - separate folder for singles" }, - "@sectionStorageAccess": { - "description": "Section header for storage access settings" - }, - "downloadFilterContributing": "Filter Contributing Artists", - "downloadUseAlbumArtistForFoldersTrackSubtitle": "Folder named after Track Artist tag", - "storeSearch": "Eklenti ara...", - "@storeSearch": { - "description": "Repo search placeholder" - }, - "aboutTelegramChat": "Telegram Grubu", - "lyricsModeBoth": "Her ikisi de", - "@lyricsModeBoth": { - "description": "Lyrics mode option - embed and external" - }, - "@permissionNotification": { - "description": "Notification permission type label" - }, - "libraryAutoScanSubtitle": "Kitaplığınızı yeni dosyalar için otomatik olarak tarayın", - "@libraryAutoScanSubtitle": { - "description": "Subtitle for auto scan setting" - }, - "libraryEnableLocalLibrary": "Yerel Kitaplığı Etkinleştir", - "trackConvertTargetFormat": "Target Format", - "@trackConvertTargetFormat": { - "description": "Label for format selection" - }, - "extensionSettings": "Ayarlar", - "@editMetadataAutoFillSearching": { - "description": "Snackbar shown while searching for online metadata" - }, - "trackLyricsTimeout": "İstek zaman aşımına uğradı. Daha sonra tekrar deneyin.", - "settingsExtensions": "Eklentiler", - "@settingsBackup": { - "description": "Settings menu item - backup and restore page" - }, - "librarySourceDownloaded": "Downloaded", - "@librarySourceDownloaded": { - "description": "Badge for tracks downloaded via SpotiFLAC" - }, - "appearanceDynamicColor": "Dinamik Renk", - "@appearanceDynamicColor": { - "description": "Material You dynamic colors" - }, - "backupImportButton": "Choose backup file", - "downloadAppleElrcWordSyncDisabled": "Safer line-by-line Apple Music lyrics", - "@optionsEmbedMetadata": { - "description": "Settings toggle title for writing metadata into downloaded files" - }, - "appearanceTitle": "Görünüm", - "downloadNeteaseIncludeRomanizationDisabled": "No romanization", - "@downloadNeteaseIncludeRomanizationDisabled": { - "description": "Subtitle when Netease romanization is off" - }, - "@libraryScanCancelled": { - "description": "Library scan status when a scan was cancelled" - }, - "tracksCount": "{count, plural, =1{1 parça} other{{count} parça}}", - "@snackbarFailedToUpdateNamed": { - "description": "Snackbar when extension update fails in the repo tab", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "@extensionQualityOptions": { - "description": "Capability - quality selection" - }, - "logClearSearch": "Clear search", - "trackSaveLyrics": "Save Lyrics (.lrc)", - "@trackReEnrichSearching": { - "description": "Snackbar while searching metadata from internet for local items" - }, - "@editMetadataAutoFillNoResults": { - "description": "Snackbar when online metadata search returns no results" - }, - "notifDownloadComplete": "Download Complete", - "snackbarAlreadyDownloaded": "\"{trackName}\" zaten indirilmiş", - "folderOrganizationByAlbumSubtitle": "Her albüm için ayrı klasör", - "storeRepoUrlHint": "https://github.com/user/repo", - "trackConvertDitherTriangularHp": "Triangular HP", - "lyricsModeBothSubtitle": "Hem göm hem de .lrc dosyası olarak kaydet", - "trackReEnrichFieldExtra": "Genre, Label, Copyright", - "@trackReEnrichFieldExtra": { - "description": "Checkbox label for extra metadata in re-enrich" - }, - "sectionLyrics": "Şarkı sözleri", - "@sectionLyrics": { - "description": "Settings section header" - }, - "extensionStrategy": "Strateji: {strategy}", - "@extensionStrategy": { - "description": "Track matching strategy name", - "placeholders": { - "strategy": { - "type": "String" - } - } - }, - "@downloadNativeWorker": { - "description": "Setting title for Android native download worker" - }, - "optionsArtistTagModeSplitVorbis": "FLAC/Opus için ayrılmış etiketler", - "extensionsHomeFeedUse": "Use {extensionName} home feed", - "@cacheAppDirectoryDesc": { - "description": "Description of what app cache directory contains" - }, - "cancelDownloadTitle": "Cancel download?", - "updateWhatsNew": "Yenilikler", - "updateNewVersionReady": "Yeni bir sürüm hazır", - "@extensionVerificationClose": { - "description": "Button to dismiss the extension verification help dialog" - }, - "a11ySelectTrack": "Select track", - "libraryClearSubtitle": "Taranan tüm parçaları sil", - "@libraryClearSubtitle": { - "description": "Subtitle for clear button" - }, - "@settingsDownloadNetworkSubtitle": { - "description": "Subtitle explaining network preference" - }, - "storeAnyVersion": "Any", - "@storeAnyVersion": { - "description": "Store detail value when any app version is accepted" - }, - "navStore": "Depo", - "backupExportSectionDescription": "Save your settings, download history, liked tracks, wishlist, favorite artists and playlists into a single file you can keep or move to another phone.", - "libraryScanSettings": "Tarama Ayarları", - "@libraryScanSettings": { - "description": "Section header for scan settings" - }, - "trackDuration": "Süre", - "@trackDuration": { - "description": "Metadata label - track length" - }, - "extensionHealthOffline": "Çevrimdışı", - "@extensionHealthOffline": { - "description": "Extension service health status - offline" - }, - "editMetadataFieldArtist": "Artist", - "@editMetadataFieldArtist": { - "description": "Chip label for artist field in auto-fill selector" - }, - "libraryInLibrary": "Kütüphanede", - "pressBackAgainToExit": "Çıkmak için tekrar geri basın", - "@pressBackAgainToExit": { - "description": "Exit confirmation message" - }, - "setupNotificationGranted": "Bildirim İzni Verildi!", - "@setupNotificationGranted": { - "description": "Success message for notification permission" - }, - "settingsDonate": "Support Development", - "snackbarFailedToUpdateNamed": "Failed to update {extensionName}", - "backupContentsTitle": "Backup contents", - "updateDontRemind": "Bir daha sorma", - "@dialogDiscard": { - "description": "Dialog button - discard changes" - }, - "editMetadataAutoFillSearching": "Searching online...", - "discographyDownloadSelected": "Seçilenleri İndir", - "trackConvertResampler": "Resampler", - "queueFilteringIndicator": "Filtering...", - "@queueFilteringIndicator": { - "description": "Shown while filter results are being computed" - }, - "@dialogDownloadAllTitle": { - "description": "Dialog title for bulk download confirmation" - }, - "cueSplitConfirmMessage": "\"{album}\" albümünü {count} adet ayrı FLAC dosyasına bölmek ister misiniz?\n\nDosyalar aynı dizine kaydedilecektir.", - "@downloadCreatePlaylistSourceFolderRedundant": { - "description": "Subtitle when folder organization is already set to playlist" - }, - "regionCountryCA": "Canada", - "cacheTempDirectory": "Geçici dizin", - "@cacheTempDirectory": { - "description": "Cache item title for temporary files directory" - }, - "libraryShowDuplicateIndicator": "Kopya Belirtecini Göster", - "@logFilterBySeverity": { - "description": "Filter dialog title" - }, - "homeSearchHintProvider": "Search with {providerName}...", - "@downloadNeteaseIncludeTranslationDisabled": { - "description": "Subtitle when Netease translation is off" - }, - "optionsCheckUpdates": "Güncelleştirmeleri Denetle", - "replayGainBatchAnalyzing": "Analyzing ReplayGain...", - "recentTypeAlbum": "Albüm", - "providerExtension": "Eklenti", - "@providerExtension": { - "description": "Label for extension-provided providers" - }, - "trackCoverNoSource": "No cover art source available", - "libraryFilterMetadata": "Meta veriler", - "albumFolderArtistYearAlbum": "Sanatçı / [Yıl] Albüm", - "@albumFolderArtistYearAlbum": { - "description": "Album folder option with year" - }, - "audioAnalysisClipping": "Clipping", - "@a11yOpenAlbumByArtistTrackCount": { - "description": "Accessibility label for opening an album item with track count", - "placeholders": { - "albumName": { - "type": "String" - }, - "artistName": { - "type": "String" - }, - "trackCount": { - "type": "int" - } - } - }, - "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": { - "count": { - "type": "int" - } - } - }, - "channelStable": "Kararlı", - "@channelStable": { - "description": "Update channel - stable releases" - }, - "tutorialSettingsTip3": "Uygulama temasını ve görünümünü özelleştirin", - "setupAppDocumentsFolderSubtitle": "Tavsiye edilen - Dosyalar uygulamasından erişilebilir", - "a11yPlayTrackByArtist": "Play {trackName} by {artistName}", - "@a11yPlayTrackByArtist": { - "description": "Accessibility label for playing a local library track", - "placeholders": { - "trackName": { - "type": "String" - }, - "artistName": { - "type": "String" - } - } - }, - "dialogRemove": "Kaldır", - "extensionVerificationClose": "Close", - "bulkDownloadPlaylistsButton": "Download {count} {count, plural, =1{playlist} other{playlists}}", - "@bulkDownloadPlaylistsButton": { - "description": "Button label for bulk downloading selected playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "optionsAutoFallbackSubtitle": "İndirme başarısız olursa diğer hizmetleri dene", - "@optionsAutoFallbackSubtitle": { - "description": "Subtitle for auto fallback" - }, - "extensionPatternsCount": "{count} desen", - "@libraryFilterLocal": { - "description": "Filter chip - show only local library items" - }, - "errorUrlNotRecognizedMessage": "Bu bağlantı desteklenmiyor. URL'nin doğru olduğundan ve uyumlu bir uzantının yüklü olduğundan emin olun.", - "@errorUrlNotRecognizedMessage": { - "description": "Error message - URL not recognized explanation" - }, - "@extensionVerificationBrowserSubtitleExternal": { - "description": "Subtitle when external browser is preferred for extension verification" - }, - "optionsArtistTagMode": "Sanatçı Etiketi Modu", - "libraryFilterMetadataComplete": "Tam meta veriler", - "@libraryFilterMetadataComplete": { - "description": "Filter option - items with complete metadata" - }, - "@extensionsVersion": { - "description": "Extension version display", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "@downloadNetworkAnySubtitle": { - "description": "Subtitle for any-network option in picker" - }, - "optionsReplayGainSubtitleOn": "Ses yüksekliğini tara ve ReplayGain etiketlerini göm (EBU R128)", - "libraryScanning": "Scanning...", - "@libraryScanning": { - "description": "Status during scan" - }, - "cacheRefresh": "Yenile", - "@actionShuffle": { - "description": "Tooltip for shuffle playback action" - }, - "optionsEmbedLyricsSubtitle": "İndirdiğiniz parçaların yanına senkronize edilmiş şarkı sözlerini kaydedin", - "@optionsEmbedLyricsSubtitle": { - "description": "Subtitle for embed lyrics" - }, - "queueEmptyAlbumsSubtitle": "Download multiple tracks from an album to see them here", - "extensionEnterValue": "Enter value", - "@settingsDownloadNetworkAny": { - "description": "Network option - use any connection" - }, - "collectionLoved": "Sevilen", - "@collectionLoved": { - "description": "Custom folder for favorite tracks" - }, - "storeAddRepoTitle": "Uzantı Deposu Ekle", - "@storeAddRepoTitle": { - "description": "Store setup screen - heading when no repo is configured" - }, - "collectionNoPlaylistsYet": "Henüz çalma listesi yok", - "@collectionNoPlaylistsYet": { - "description": "Empty state title when user has no playlists" - }, - "libraryCleanupMissingFilesSubtitle": "Eski dosya kalıntılarını temizleyin", - "@libraryCleanupMissingFilesSubtitle": { - "description": "Subtitle for cleanup button" - }, - "folderOrganizationByArtist": "Sanatçıya Göre", - "@folderOrganizationByArtist": { - "description": "Folder option - artist folders" - }, - "aboutTranslators": "Çevirmenler", - "notifAlreadyInLibraryCount": "Already in Library ({completed}/{total})", - "editMetadataFieldTitle": "Başlık", - "@editMetadataFieldTitle": { - "description": "Chip label for title field in auto-fill selector" - }, - "downloadFilenameDescription": "Yer tutucu olarak {artist}, {title}, {album}, {track}, {year}, {date}, {disc} ifadelerini kullanın.", - "@downloadFilenameDescription": { - "description": "Description shown in filename format editor" - }, - "@notifDownloadsFinishedBody": { - "description": "Notification body when queue finishes with failures", - "placeholders": { - "completed": { - "type": "int" - }, - "failed": { - "type": "int" - } - } - }, - "@libraryFolderNotExist": { - "description": "Error when folder doesn't exist" - }, - "@playlistsCount": { - "description": "Playlist count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@loadingSharedLink": { - "description": "Status when opening shared URL" - }, - "extensionServiceHealth": "Service health", - "@extensionServiceHealth": { - "description": "Extension capability label for service health checks" - }, - "@collectionDeletePlaylistsMessage": { - "description": "Confirmation message for deleting selected playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "setupStorageDescription": "SpotiFLAC'ın şarkılarınızı kaydetmek için depolama iznine ihtiyacı var.", - "tutorialReadyMessage": "You're ready. Select your extensions, then search or paste a supported link.", - "tutorialLibraryTip3": "Browse tracks, albums, and playlists in list or grid views", - "selectionDeletePlaylistsCount": "Delete {count} {count, plural, =1{playlist} other{playlists}}", - "appearanceThemeLight": "Açık", - "queueEmptyHistorySubtitle": "Downloaded tracks will appear here", - "@queueEmptyHistorySubtitle": { - "description": "Empty state subtitle for download history" - }, - "backupRestoreFailed": "Failed to restore backup", - "@backupRestoreFailed": { - "description": "Snackbar when restore fails" - }, - "queueFlacQueuedWithSkipped": "Added {addedCount} tracks to queue, skipped {skippedCount}", - "@queueFlacQueuedWithSkipped": { - "description": "Snackbar when some selected local tracks were queued for FLAC redownload and some were skipped", - "placeholders": { - "addedCount": { - "type": "int" - }, - "skippedCount": { - "type": "int" - } - } - }, - "@trackReplayGain": { - "description": "Three-dot menu option to scan loudness and write ReplayGain tags" - }, - "@downloadedAlbumDownloadedCount": { - "description": "Downloaded tracks count badge", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "setupFolderChoose": "İndirilecek Klasörü Seç", - "dialogDownloadAllTitle": "Tümünü İndir", - "providerPriorityInfo": "Eğer bir şarkı ilk hizmette mevcut değilse uygulama otomatik olarak bir sonrakini deneyecektir.", - "@providerPriorityInfo": { - "description": "Info tip about fallback behavior" - }, - "@dialogDiscardChanges": { - "description": "Dialog title - unsaved changes warning" - }, - "discographyNoAlbums": "Kullanılabilir albüm yok", - "downloadAppleQqMultiPersonDisabled": "Standard lyrics without speaker labels", - "cacheNoData": "No cached data", - "@cacheNoData": { - "description": "Label when cache category has no data" - }, - "tutorialStartDownloadSemantics": "İndirmeyi başlat", - "@tutorialStartDownloadSemantics": { - "description": "Accessibility label for idle download button in tutorial demo" - }, - "logIssueIspBlockingSuggestion": "Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8", - "aboutTitle": "Hakkında", - "@cueSplitButton": { - "description": "Button text to start CUE splitting" - }, - "appearanceHistoryView": "Geçmiş Düzeni", - "audioAnalysisSampleRate": "Sample Rate", - "@settingsCache": { - "description": "Settings menu item - cache management" - }, - "lyricsProvidersInfoText": "Extension lyrics providers run before built-in lyrics providers. At least one provider must remain enabled.", - "cacheTrackLookup": "İzleme arama önbelleği", - "extensionsHomeFeedOffSubtitle": "Do not show the home feed on the main screen", - "@downloadUsePrimaryArtistOnly": { - "description": "Setting - strip featured artists from folder name" - }, - "@regionCountryIN": { - "description": "Country name for SongLink region picker" - }, - "@libraryFilterQualityLossy": { - "description": "Filter option - lossy compressed audio" - }, - "extensionRefreshStatus": "Refresh status", - "notifAllDownloadsComplete": "All Downloads Complete", - "downloadNeteaseIncludeRomanizationEnabled": "Romanization lines included", - "editMetadataFieldDateHint": "YYYY-MM-DD or YYYY", - "@editMetadataFieldDateHint": { - "description": "Hint text for the edit metadata date field" - }, - "trackMetadataShare": "Paylaş", - "@trackMetadataShare": { - "description": "Action button - share track" - }, - "discographyDownloadAllSubtitle": "{albumCount} yayından {count} parça", - "settingsDonateSubtitle": "Buy the developer a coffee", - "libraryFilterDownloaded": "İndirildi", - "downloadNetworkAnySubtitle": "Use WiFi or mobile data", - "@cueSplitNoAudioFile": { - "description": "Error when CUE audio file is missing" - }, - "notifLibraryScanStopped": "Scan stopped before completion.", - "@settingsMetadata": { - "description": "Settings menu item - metadata settings" - }, - "snackbarFailedToInstallNamed": "Failed to install {extensionName}", - "trackCopyLyrics": "Şarkı sözlerini kopyala", - "@trackCopyLyrics": { - "description": "Action - copy lyrics to clipboard" - }, - "regionCountryAU": "Australia", "downloadAlbumFolderStructure": "Albüm Klasör Yapısı", - "downloadMusixmatchAuto": "Auto", - "actionDismiss": "Dismiss", - "storeFilterAll": "Tümü", - "extensionsDisabled": "Devre Dışı", - "@logClearLogs": { - "description": "Clear button tooltip" - }, - "dialogDownloadAllMessage": "{count} parça indirilsin mi?", - "@optionsEmbedLyrics": { - "description": "Embed lyrics in audio files" - }, - "tutorialLibraryTitle": "Kitaplığınız", - "optionsCheckUpdatesSubtitle": "Yeni sürüm çıktığında bildir", - "@optionsCheckUpdatesSubtitle": { - "description": "Subtitle for update check" - }, - "collectionPlaylist": "Çalma listesi", - "@collectionPlaylist": { - "description": "Single playlist label" - }, - "dateMonthsAgo": "{count} ay önce", - "@dateMonthsAgo": { - "description": "Relative date - months ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@extensionRemoveButton": { - "description": "Button to uninstall extension" - }, - "collectionPlaylistRenamed": "Çalma listesinin adı değiştirildi", - "collectionCreatePlaylist": "Çalma listesi oluştur", - "homeGoToAlbum": "Albüme Git", - "@homeGoToAlbum": { - "description": "Context menu item to navigate to the album page" - }, - "folderOrganizationByArtistSubtitle": "Her sanatçı için ayrı klasör", - "@optionsClearHistory": { - "description": "Delete all download history" - }, - "@searchAlbums": { - "description": "Search result category - albums" - }, - "@sectionDebug": { - "description": "Settings section header" - }, - "extensionsVersion": "Versiyon {version}", - "@navHome": { - "description": "Bottom navigation - Home tab" - }, - "@editMetadataFieldDate": { - "description": "Chip label for date field in auto-fill selector" - }, - "downloadUsePrimaryArtistOnly": "Klasörler için yalnızca birincil sanatçıyı kullan", - "tutorialExtensionsTip2": "Choose providers for search, downloads, metadata, and fallbacks", - "@setupStorageGranted": { - "description": "Success message for storage permission" - }, - "tutorialWelcomeTitle": "Welcome to SpotiFLAC Mobile!", - "a11ySelectAlbum": "Select album {albumName}", - "@a11ySelectAlbum": { - "description": "Accessibility label for selecting an album", - "placeholders": { - "albumName": { - "type": "String" - } - } - }, - "aboutMobileSource": "Mobil kaynak kodu", - "@aboutMobileSource": { - "description": "Link to mobile GitHub repo" - }, - "@extensionCustomUrlHandling": { - "description": "Extension detail section title for custom URL handling" - }, - "@downloadMusixmatchLanguageAuto": { - "description": "Subtitle when no language is set" - }, - "@cancelDownloadKeep": { - "description": "Dialog button - keep the active download (do not cancel)" - }, - "libraryFilterSource": "Kaynak", - "@libraryFilterSource": { - "description": "Filter section - source type" - }, - "sectionStorageAccess": "Depolama Erişimi", - "logFilterBySeverity": "Günlükleri önem derecesine göre filtrele", - "libraryFolderNotExist": "Seçilen klasör mevcut değil", - "optionsEmbedMetadataSubtitleOn": "Write metadata, cover art, and embedded lyrics to files", - "albumFolderArtistAlbum": "Sanatçı / Albüm", - "@albumFolderArtistAlbum": { - "description": "Album folder option" - }, - "allFilesAccessDeniedMessage": "İzin reddedildi. Lütfen sistem ayarlarından 'Tüm dosyalara erişim' iznini manuel olarak etkinleştirin.", - "@allFilesAccessDeniedMessage": { - "description": "Message when permission is permanently denied" - }, - "editMetadataSelectEmpty": "Empty only", - "settingsLocalLibrarySubtitle": "Müziği tara ve kopyaları tespit et", - "@settingsAutoExportFailed": { - "description": "Setting toggle for auto-export" - }, - "cacheCleanupUnusedSubtitle": "Remove orphaned download history and missing library entries", - "@tutorialSettingsTitle": { - "description": "Tutorial settings page title" - }, - "libraryFilterMetadataMissingGenre": "Eksik tür", - "@appearanceSelectAccentColor": { - "description": "Accessibility label for picking an accent color", - "placeholders": { - "hex": { - "type": "String" - } - } - }, - "setupFolderDescription": "İndirdiğin şarkıların kaydedileceği klasörü seç.", - "extensionDetailsTags": "Etiketler", - "unknownArtist": "Unknown Artist", - "trackFetchOnlineLyrics": "İnternetten Getir", - "snackbarNoActionDefined": "Bu düğme için tanımlanmış bir işlem yok", - "@snackbarNoActionDefined": { - "description": "Snackbar when an extension button has no action configured" - }, - "downloadAllCount": "Tümünü İndir ({count})", - "@downloadAllCount": { - "description": "Download all button with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadedAlbumDiscHeader": "Disk {discNumber}", - "@backupInvalidFile": { - "description": "Snackbar when the chosen file is not a valid backup" - }, - "@extensionHooksAvailable": { - "description": "Post-processing hooks count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@logIssueTrackNotFoundSuggestion": { - "description": "Diagnostic badge suggestion when a track is unavailable" - }, - "@snackbarFileNotFound": { - "description": "Snackbar - file doesn't exist" - }, - "extensionHealthOnline": "Çevrimiçi", - "@extensionHealthOnline": { - "description": "Extension service health status - online" - }, - "settingsSaveDownloadHistorySubtitle": "Keep completed downloads in history and library views", - "trackOptionRemoveFromWishlist": "Remove from Wishlist", - "extensionsFallbackTitle": "Yedekleme Uzantıları", - "@extensionsFallbackTitle": { - "description": "Setting and page title for choosing which download extensions can be used during fallback" - }, - "metadataSaveFailedFfmpeg": "Failed to save metadata via FFmpeg", - "@albumFolderAlbumOnly": { - "description": "Album folder option" - }, - "@albumFolderYearAlbumSubtitle": { - "description": "Folder structure example" - }, - "downloadedAlbumDeleteSelected": "Seçilenleri Sil", - "selectionSelectPlaylistsToDelete": "Select playlists to delete", - "@selectionSelectPlaylistsToDelete": { - "description": "Hint shown when no playlists are selected for deletion" - }, - "storeAddRepoDescription": "Uzantılara göz atmak ve yüklemek için registry.json dosyası içeren bir GitHub depo URL'si girin.", - "appearanceThemeDark": "Koyu", - "downloadedAlbumTapToSelect": "Seçmek için parçalara dokunun", - "@collectionAddedToFavoriteArtists": { - "description": "Snackbar after adding artist to favorite artists", - "placeholders": { - "artistName": { - "type": "String" - } - } - }, - "@backupRestored": { - "description": "Snackbar after a successful restore" - }, - "nowPlayingLibraryEmpty": "Your library is empty", - "@nowPlayingLibraryEmpty": { - "description": "Snackbar when shuffle library is requested but library has no tracks" - }, - "editMetadataAutoFillNoResults": "No matching metadata found online", - "updateDownloading": "İndiriliyor...", - "trackLyricsSource": "Kaynak: {source}", - "logFilterLevel": "Seviye", - "logNoLogsYet": "Henüz kayıt yok", - "cacheSizeOnly": "{size}", - "@cacheSizeOnly": { - "description": "Cache size only", - "placeholders": { - "size": { - "type": "String" - } - } - }, - "trackOpenInService": "Open in {serviceName}", - "@trackOpenInService": { - "description": "Button label to open a track in a named music service", - "placeholders": { - "serviceName": { - "type": "String" - } - } - }, - "@cacheLibraryCoverDesc": { - "description": "Description of what library cover cache contains" - }, - "libraryClearConfirmMessage": "Bu işlem, kitaplığınızdaki tüm taranmış parçaları siler. Asıl müzik dosyalarınız silinmez.", - "@dialogImportPlaylistMessage": { - "description": "Dialog message - import playlist confirmation", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionsHomeFeedAuto": "Auto", - "searchEmptyResultSubtitle": "Try another keyword", - "@searchEmptyResultSubtitle": { - "description": "Subtitle shown under the empty search result state on the home screen" - }, - "dateToday": "Bugün", - "a11yOpenItem": "Open {itemType} {name}", - "@a11yOpenItem": { - "description": "Accessibility label for opening a generic item", - "placeholders": { - "itemType": { - "type": "String" - }, - "name": { - "type": "String" - } - } - }, - "audioAnalysisBitDepth": "Bit Depth", - "editMetadataFieldTrackTotal": "Track Total", - "@editMetadataFieldTrackTotal": { - "description": "Label for total tracks field in the edit metadata sheet" - }, - "@editMetadataFieldDiscTotal": { - "description": "Label for total discs field in the edit metadata sheet" - }, - "replayGainBatchConfirmMessage": "Analyze loudness and write ReplayGain tags to {count} track(s)?", - "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Folder named after Album Artist tag", - "@notifDownloadingUpdate": { - "description": "Notification title while downloading an app update", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "@csvImportTracks": { - "description": "Label shown in quality picker for CSV import", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "trackEditMetadata": "Edit Metadata", - "discographyDownloadAll": "Tümünü İndir", - "@discographyDownloadAll": { - "description": "Option - download entire discography" - }, - "@editMetadataFieldAlbum": { - "description": "Chip label for album field in auto-fill selector" - }, - "albumFolderArtistAlbumSubtitle": "Albümler/Sanatçı Adı/Albüm Adı/", - "extensionHealthServiceUnknown": "Service status unknown", - "navHome": "Ana sayfa", - "queueDownloadStarting": "Starting...", - "@dialogRemoveExtension": { - "description": "Dialog title - uninstall extension" - }, - "notifLibraryScanProgressNoTotal": "{scanned} files scanned • {percentage}%", - "@appearanceAmoledDark": { - "description": "Theme option - pure black" - }, - "qualityHiResFlac": "Hi-Res FLAC", - "selectionSelected": "{count} seçildi", - "extensionDetailsInformation": "Information", - "@extensionDetailsInformation": { - "description": "Section title for extension metadata information" - }, - "discographyDownload": "Diskografiyi İndir", - "editMetadataFieldCopyright": "Copyright", - "@setupOpenSettings": { - "description": "Button to open system settings" - }, - "libraryFilterSort": "Sırala", - "cacheLibraryCoverDesc": "Kapak resmi yerel müzik dosyalarından çıkarıldı. Bir sonraki taramada yeniden çıkarılacaktır.", - "dialogRemoveExtension": "Eklentiyi Kaldır", - "backupExportSectionTitle": "Create backup", - "downloadEmbedLyricsDisabled": "Enable metadata embedding first", - "openInOtherServices": "Open in Other Services", - "actionSelectAll": "Tümünü Seç", - "settingsDownloadNetworkSubtitle": "İndirmeler için hangi ağın kullanılacağını seçin. Yalnızca WiFi olarak ayarlandığında, mobil veriye geçildiğinde indirmeler duraklatılır.", - "downloadFolderOrganization": "Dosya Organizasyonu", - "tutorialWelcomeTip2": "Choose from the audio qualities offered by your download provider", - "@tutorialWelcomeTip2": { - "description": "Tutorial welcome tip 2" - }, - "selectionAllSelected": "Tüm parçalar seçildi", - "@selectionAllSelected": { - "description": "Status - all items selected" - }, - "settingsLogsSubtitle": "Hata ayıklama için uygulama günlüklerini görüntüle", - "albumFolderYearAlbumSubtitle": "Albümler/[2005] Albüm Adı/", - "cancelDownloadKeep": "Keep", - "optionsDetailedLoggingOn": "Detaylı günlük kayıt ediliyor", - "safMigrationMessage2": "Please select your download folder again to switch to the new storage system.", - "@storeChangeRepoTooltip": { - "description": "Tooltip for the change-repository icon button in the app bar" - }, - "regionCountryJP": "Japan", - "notifUpdateFailed": "Update Failed", - "downloadCreatePlaylistSourceFolderRedundant": "Handled by folder organization setting", - "@trackLyricsSaved": { - "description": "Snackbar after lyrics saved", - "placeholders": { - "fileName": { - "type": "String" - } - } - }, - "downloadLocationSubtitle": "İndirdiğiniz parçaları nereye kaydedeceğinizi seçin", - "trackConvertActionLabelLossless": "{sourceFormat} → {targetFormat} ({quality})", - "lyricsProvidersDisabledSection": "Disabled ({count})", - "@dateDaysAgo": { - "description": "Relative date - days ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "librarySourceLocal": "Yerel", - "backupContentsExtensions": "{count, plural, =1{1 extension} other{{count} extensions}}", - "sectionService": "Servis", - "lyricsProviderQqMusicDesc": "QQ Music (good for Chinese songs, via proxy)", - "@lyricsProviderQqMusicDesc": { - "description": "Description for QQ Music provider" - }, - "cacheCleanupUnusedDesc": "Remove orphaned download history and library entries for missing files.", - "selectionTapPlaylistsToSelect": "Tap playlists to select", - "notifUpdateFailedBody": "Could not download update. Try again later.", - "downloadNeteaseIncludeTranslationDisabled": "Original lyrics only", - "artistPopular": "Popüler", - "extensionRemoveButton": "Uzantıyı Kaldır", - "allFilesAccessEnabledSubtitle": "Herhangi bir klasöre yazabilir", - "@allFilesAccessEnabledSubtitle": { - "description": "Subtitle when all files access is enabled" - }, - "extensionsSearchProvider": "Arama Sağlayıcısı", - "tutorialWelcomeDesc": "Learn how to find music with extensions, choose the quality you want, and manage downloads in SpotiFLAC Mobile.", - "selectionBatchConvertConfirmTitle": "Batch Convert", - "extensionMetadataProvider": "Meta Veri Sağlayıcı", - "queueDownloadedFileMissing": "Downloaded file missing", - "logClearLogs": "Kayıtları temizle", - "@downloadAppleQqMultiPerson": { - "description": "Setting for word-by-word multi-person lyrics from Apple Music and QQ Music" - }, - "tutorialWelcomeTip1": "Search with an installed extension or paste a supported music link", - "@tutorialWelcomeTip1": { - "description": "Tutorial welcome tip 1" - }, - "logIssueRateLimitedSuggestion": "Wait a few minutes before trying again", - "downloadAllowLocalNetworkEnabled": "Requests to local/private addresses are allowed (for local proxy or custom DNS)", - "@regionCountryUS": { - "description": "Country name for SongLink region picker" - }, - "trackArtist": "Sanatçı", - "extensionCustomUrlHandling": "Custom URL Handling", - "appearanceDynamicColorSubtitle": "Duvar kağıdının renklerini kullan", - "@appearanceDynamicColorSubtitle": { - "description": "Subtitle for dynamic color" - }, - "searchSortDefault": "Varsayılan", - "@downloadFallbackExtensions": { - "description": "Settings item for configuring fallback extension providers" + "@downloadAlbumFolderStructure": { + "description": "Setting - album folder organization" }, "albumFolderStructureDescription": "Choose how album folders are structured", "@albumFolderStructureDescription": { "description": "Album folder structure picker description" }, - "libraryBuiltInPreviewPlayerSubtitle": "Quick local previews inside SpotiFLAC Mobile", - "@libraryBuiltInPreviewPlayerSubtitle": { - "description": "Subtitle for built-in preview player option" + "downloadUseAlbumArtistForFolders": "Klasörler için Albüm Sanatçısı'nı kullan", + "@downloadUseAlbumArtistForFolders": { + "description": "Setting - choose whether artist folders use Album Artist or Track Artist" }, - "storageModeAppFolder": "Uygulama Klasörü (Önerilir)", - "@actionPause": { - "description": "Action button - pause download" + "downloadUsePrimaryArtistOnly": "Klasörler için yalnızca birincil sanatçıyı kullan", + "@downloadUsePrimaryArtistOnly": { + "description": "Setting - strip featured artists from folder name" }, - "actionPaste": "Yapıştır", - "extensionSettingsCount": "{count} {count, plural, =1{setting} other{settings}}", - "downloadNativeWorker": "Native download worker", - "releaseTypeEp": "EP", - "@releaseTypeEp": { - "description": "Badge label for EP releases" + "downloadUsePrimaryArtistOnlyEnabled": "Düet sanatçıları klasör adından kaldırılır (örn. Justin Bieber, Quavo → Justin Bieber)", + "@downloadUsePrimaryArtistOnlyEnabled": { + "description": "Subtitle when primary artist only is enabled" }, - "snackbarExtensionInstalledEnable": "{extensionName} installed. Enable it in Settings > Extensions", - "cacheRefreshStats": "Refresh stats", - "collectionPlaylistChangeCover": "Change cover image", - "@collectionPlaylistChangeCover": { - "description": "Bottom sheet action to pick a custom cover image for a playlist" + "downloadUsePrimaryArtistOnlyDisabled": "Klasör adı için tam sanatçı dizesi kullanılır", + "@downloadUsePrimaryArtistOnlyDisabled": { + "description": "Subtitle when primary artist only is disabled" }, - "optionsClearHistory": "İndirme Geçmişini Temizle", - "trackGenre": "Tür", - "snackbarSelectedPlaylistsEmpty": "Selected playlists have no tracks", - "collectionAddedTracksToPlaylist": "Added {count} {count, plural, =1{track} other{tracks}} to {playlistName}", - "downloadNeteaseIncludeRomanization": "Netease: Include Romanization", - "libraryFilterMetadataMissingArtist": "Missing artist", - "extensionsNoCustomSearch": "Özel arama içeren uzantı bulunamadı", - "@extensionsTitle": { - "description": "Extensions page title" + "downloadSelectQuality": "Kalite seçin", + "@downloadSelectQuality": { + "description": "Dialog title - choose audio quality" }, - "extensionDownloadProvider": "İndirme Sağlayıcı", - "@extensionDownloadProvider": { - "description": "Capability - provides downloads" - }, - "lyricsMode": "Şarkı Sözü Modu", - "aboutReportIssueSubtitle": "Karşılaştığın herhangi bir problemi bildir", - "@downloadSeparateSinglesFolder": { - "description": "Setting - separate folder for singles" + "downloadFrom": "İndirme Kaynağı", + "@downloadFrom": { + "description": "Label - download source" }, "appearanceAmoledDark": "AMOLED Koyu", - "logIssueNetworkErrorDescription": "Connection issues detected", - "folderOrganizationByArtistAlbumSubtitle": "Sanatçı klasörlerinin içinde Albüm klasörleri", - "@libraryForceFullScanSubtitle": { - "description": "Subtitle for force full scan button" + "@appearanceAmoledDark": { + "description": "Theme option - pure black" }, - "setupGrantPermission": "İzin Ver", - "lyricsProvidersDescription": "Enable, disable and reorder lyrics sources. Providers are tried top-to-bottom until lyrics are found.", - "dateDaysAgo": "{count} gün önce", - "extensionsHomeFeedDescription": "Choose which extension provides the home feed on the main screen", - "downloadLossyMp3Subtitle": "En iyi uyumluluk, parça başına ~10 Mb", - "@downloadLossyMp3Subtitle": { - "description": "Subtitle for MP3 320kbps lossy option" - }, - "nowPlayingDetails": "Details", - "collectionWishlistEmptyTitle": "İstek listesi boş", - "downloadAppleQqMultiPersonEnabled": "Speaker labels included for duets and group tracks", - "@snackbarExtensionUpdatedVersion": { - "description": "Snackbar after updating an extension from the repo tab", - "placeholders": { - "extensionName": { - "type": "String" - }, - "version": { - "type": "String" - } - } - }, - "extensionHealthServiceDegraded": "Service degraded", - "selectionConvertNoConvertible": "No convertible tracks selected", - "setupStorageGranted": "Depolama İzni Verildi!", - "downloadAllowLocalNetwork": "Allow Local Network Access", - "nowPlayingNoLyrics": "No lyrics in this file", - "selectionDeleteTracksCount": "Delete {count} {count, plural, =1{track} other{tracks}}", - "@selectionDeleteTracksCount": { - "description": "Button label for deleting selected tracks", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@libraryForceFullScan": { - "description": "Button to force a complete rescan of library" - }, - "notifLibraryScanExcluded": "{count} excluded", - "@aboutPaxsenixSubtitle": { - "description": "Subtitle for Paxsenix special thanks entry on the about page" - }, - "setupChangeFolderTooltip": "Change folder", - "logIssueIspBlockingDescription": "Your ISP may be blocking access to download services", - "@logIssueIspBlockingDescription": { - "description": "Diagnostic badge description for ISP blocking" - }, - "libraryClear": "Kitaplığı temizle", - "collectionRemoveFromPlaylist": "Remove from playlist", - "@collectionRemoveFromPlaylist": { - "description": "Tooltip for removing track from playlist" - }, - "backupIncludeSecrets": "Include extension credentials", - "notifDownloadsFinishedBody": "{completed, plural, =1{1 track downloaded} other{{completed} tracks downloaded}}, {failed, plural, =1{1 failed} other{{failed} failed}}", - "storeCategoryMetadata": "Metadata", - "@trackLyricsEmbedded": { - "description": "Snackbar - lyrics saved to file" - }, - "editMetadataFieldDiscTotal": "Disc Total", - "tutorialLibraryTip1": "Manage active, pending, and completed downloads from the Library queue", - "playlistsCount": "{count, plural, =1{1 playlist} other{{count} playlists}}", - "downloadCreatePlaylistSourceFolderDisabled": "All tracks saved directly to download folder", - "@downloadFallbackExtensionsSubtitle": { - "description": "Subtitle for fallback extensions item" - }, - "libraryFilterLocal": "Yerel", - "tutorialDownloadInProgressSemantics": "Download in progress", - "searchSortDurationLong": "Süre (en uzun)", - "@appearanceLanguage": { - "description": "Language setting title" - }, - "libraryAbout": "Yerel Kütüphane Hakkında", - "@libraryAbout": { - "description": "Section header for about info" - }, - "cueSplitNoAudioFile": "Bu CUE sayfası için ses dosyası bulunamadı", - "notifUpdateReadyBody": "SpotiFLAC Mobile v{version} downloaded. Tap to install.", - "appearanceSelectAccentColor": "Select accent color {hex}", - "@homeAlbumInfoUnavailable": { - "description": "Snackbar when album info cannot be loaded" - }, - "trackReplayGain": "Rescan ReplayGain", - "downloadSeparateSinglesFolder": "Ayrı Single Klasörü", - "trackAlbumArtist": "Albüm sanatçısı", - "qualityFlacLossless": "FLAC Kayıpsız", - "@extensionVerificationHelpMessageWaiting": { - "description": "Dialog message when verification may need manual browser help" - }, - "tutorialSettingsTitle": "Deneyiminizi Özelleştirin", - "extensionActionFailed": "Action failed", - "@storeEmptyNoResults": { - "description": "Message when search/filter returns no results" - }, - "downloadAppleQqMultiPerson": "Apple / QQ: Multi-Person Lyrics", - "downloadFallbackExtensionsSubtitle": "Choose which extensions can be used as fallback", - "storeExtensionsCount": "{count} {count, plural, =1{extension} other{extensions}}", - "trackCoverNoEmbeddedArt": "No embedded album art found", - "@trackCoverNoEmbeddedArt": { - "description": "Message shown when a track file has no embedded cover art" - }, - "snackbarExtensionUpdatedVersion": "{extensionName} updated to v{version}", - "setupStorageAccessMessageAndroid11": "Android 11 ve sonrasında şarkıların seçili klasörünüze kaydedilebilmesi için \"Bütün dosyalara eriş\" iznine ihtiyaç var.", - "notifDownloadsFinished": "Downloads Finished ({completed} done, {failed} failed)", - "notifLibraryScanProgressWithTotal": "{scanned}/{total} files • {percentage}%", - "optionsPrimaryProvider": "Ana Kaynek", - "@optionsPrimaryProvider": { - "description": "Main search provider setting" - }, - "logIssueTrackNotFoundSuggestion": "The track may not be available in lossless quality", - "collectionAddedToLoved": "\"{trackName}\" added to Loved", - "albumFolderArtistAlbumFlat": "Sanatçı / Albüm (Singlelar alt klasörsüz)", - "homeAlbumInfoUnavailable": "Albüm bilgisi mevcut değil", - "settingsLyrics": "Lyrics", - "extensionVerificationBrowserExternal": "External", - "regionCountryIN": "India", - "extensionHealthUnknown": "Unknown", - "backupContentsWishlist": "{count} wishlist {count, plural, =1{track} other{tracks}}", - "settingsAutoExportFailed": "Başarısız indirmeleri otomatik dışa aktar", - "logFilterSection": "Filtre", - "dialogDiscardChanges": "Değişiklikleri İptal Et?", - "@qualityHiResFlacSubtitle": { - "description": "Technical spec for hi-res" - }, - "searchTracks": "Tracks", - "searchAlbums": "Albümler", - "trackConvertFormat": "Convert Format", - "metadataProviderPriorityTitle": "Meta Veri Önceliği", - "libraryFolderHint": "Klasör seçmek için dokunun", - "downloadedAlbumDeleteMessage": "Bu albümden {count} {count, plural, =1{parça} other{parça}} parça silinsin mi?\n\nBu işlem dosyaları depolama alanından da kalıcı olarak silecektir.", - "@downloadedAlbumDeleteMessage": { - "description": "Delete confirmation with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "trackAlbum": "Albüm", - "updateAvailable": "Güncelleme Mevcut", - "optionsEmbedLyrics": "Şarkı Sözlerini Göm", - "trackReEnrichProgress": "Re-enriching metadata...", - "@trackReEnrichProgress": { - "description": "Snackbar while re-enriching metadata" - }, - "audioAnalysisPeak": "Peak", - "@audioAnalysisPeak": { - "description": "Peak amplitude metric label" - }, - "optionsExtensionStoreSubtitle": "Gezinme menüsünde Depo sekmesini göster", - "settingsTitle": "Ayarlar", - "@settingsAbout": { - "description": "Settings section - app info" - }, - "cacheExploreFeed": "Besleme önbelleğini keşfedin", - "@dialogDownloadPlaylistsMessage": { - "description": "Dialog message for bulk playlist download confirmation", - "placeholders": { - "trackCount": { - "type": "int" - }, - "playlistCount": { - "type": "int" - } - } - }, - "downloadedAlbumSelectedCount": "{count} seçildi", - "downloadAskQualitySubtitle": "Her indirmeden önce kalite seçim ekranını göster", - "filenameShowAdvancedTags": "Gelişmiş etiketleri göster", - "@filenameShowAdvancedTags": { - "description": "Toggle label for showing advanced filename tags" - }, - "@editMetadataFieldComment": { - "description": "Label for comment field in the edit metadata sheet" - }, - "downloadFallbackExtensions": "Fallback Extensions", - "downloadAlbumArtistMetadataFull": "Album Artist metadata: Full", - "cacheLibraryCover": "Kütüphane kapağı önbelleği", - "actionShuffle": "Shuffle", - "backupCreated": "Backup created", - "downloadLossyAacSubtitle": "En iyi mobil uyumluluk, M4A konteyner", - "actionCreate": "Oluştur", - "snackbarAddedToQueueGeneric": "Added to queue", - "downloadedAlbumDownloadedCount": "{count} downloaded", - "snackbarLoadingCueSheet": "CUE sayfası yükleniyor...", - "@trackCoverClearSelected": { - "description": "Tooltip for clearing the newly selected cover art" - }, - "aboutOriginalCreator": "Orijinal SpotiFLAC'ın kurucusu", - "a11yTrackByArtist": "{trackName} by {artistName}", - "audioAnalysisDynamicRange": "Dynamic Range", - "homeChangeSearchProviderTooltip": "Change search provider", - "loadingSharedLink": "Paylaşılan bağlantı yükleniyor...", - "lyricsModeEmbedSubtitle": "Şarkı sözleri FLAC meta verilerinin içinde saklanır", - "setupNotificationBackgroundDescription": "İndirmelerin durumu hakkında bildirim al. Bunu açmak uygulama arka plandayken indirmelerinizi takip etmenizi sağlar.", - "snackbarViewQueue": "Kuyruğu Görüntüle", - "@audioAnalysisDuration": { - "description": "Duration metric label" - }, - "downloadSeparateSinglesDisabled": "Singles and albums saved in the same folder", - "backupRestored": "Backup restored successfully", - "trackConvertConfirmMessageLosslessCapped": "Convert from {sourceFormat} to {targetFormat} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original file will be deleted after conversion.", - "@trackConvertConfirmMessageLosslessCapped": { - "description": "Confirmation dialog message for capped lossless conversion of a single file", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "quality": { - "type": "String" - } - } - }, - "discographySelectAlbumsSubtitle": "Belirli albümleri veya single'ları seçin", - "@discographySelectAlbumsSubtitle": { - "description": "Subtitle for select albums option" - }, - "backupImportSectionDescription": "Pick a backup file to restore your data. This replaces the current settings, history and library on this device.", - "errorUrlFetchFailed": "Bu bağlantıdan içerik yüklenemedi. Lütfen tekrar deneyin.", - "lyricsProviderLyricsPlusDesc": "Word-by-word karaoke lyrics (Apple/Musixmatch/Spotify/QQ, via proxy)", - "dialogSave": "Kaydet", - "trackReEnrichSearching": "Searching metadata online...", - "regionCountryUS": "United States", - "audioAnalysisDescription": "Verify lossless quality with spectrum analysis", - "downloadFilenameFormat": "Dosya adı formatı", - "cueSplitTitle": "Bölünmüş CUE Sayfası", - "settingsAppSubtitle": "Updates, data, extension repo, debug", - "@settingsAppSubtitle": { - "description": "Subtitle for app settings" - }, - "@setupPermissionRequiredMessage": { - "description": "Generic permission required message", - "placeholders": { - "permissionType": { - "type": "String" - } - } - }, - "errorMissingExtensionSource": "{item} yüklenemedi: Eksik eklenti kaynağı", - "albumFolderAlbumOnlySubtitle": "Albümler/Albüm Adı/", - "logIssueTrackNotFoundLabel": "TRACK NOT FOUND", - "extensionVerificationHelpTitleManual": "Open verification manually", - "dialogDiscard": "Vazgeç", - "storageModeSaf": "Özel Klasör (SAF)", - "errorRateLimited": "Aşırı istek gönderildi", - "downloadSelectQuality": "Kalite seçin", - "dialogDownloadPlaylistsMessage": "Download {trackCount} {trackCount, plural, =1{track} other{tracks}} from {playlistCount} {playlistCount, plural, =1{playlist} other{playlists}}?", - "collectionFoldersTitle": "Klasörlerim", - "progressFetchingMetadata": "Meta verileri alınıyor... {current}/{total}", - "settingsDownloadNetworkAny": "WiFi + Mobil Veri", - "audioAnalysisDuration": "Duration", - "audioAnalysisAnalyzing": "Analyzing audio...", - "extensionVerificationHelpMessageWaiting": "If the browser did not open, or verification finished but did not return to SpotiFLAC Mobile, open this link again or copy it manually.", - "editMetadataFieldDiscNum": "Disc #", - "@editMetadataFieldDiscNum": { - "description": "Chip label for disc number field in auto-fill selector" - }, - "@noTracksFoundForAlbum": { - "description": "Empty state message when an album has no tracks" - }, - "previewPlay": "Play preview", - "setupPermissionRequiredMessage": "En iyi deneyim için {permissionType} izni zorunludur. Bunu ayarlardan daha sonra değiştirebilirsiniz.", - "aboutVersion": "Versiyon", - "qualityHiResFlacSubtitle": "24-bit / 96kHz'e kadar", - "audioAnalysisSamples": "Samples", - "libraryFilterQualityHiRes": "Hi-Res (24bit)", - "sectionMetadataProviders": "Providers", - "@sectionMetadataProviders": { - "description": "Settings section header for metadata providers" - }, - "trackCopyright": "Telif Hakkı", - "libraryForceFullScanSubtitle": "Önbelleği yok sayarak tüm dosyaları yeniden tarayın", - "trackCopiedToClipboard": "Panoya kopyalandı", - "optionsEmbedMetadata": "Embed Metadata", - "collectionAddedTracksToPlaylistWithExisting": "Added {count} {count, plural, =1{track} other{tracks}} to {playlistName} ({alreadyCount} already in playlist)", - "@collectionAddedTracksToPlaylistWithExisting": { - "description": "Snackbar after adding multiple tracks to a playlist when some were already present", - "placeholders": { - "count": { - "type": "int" - }, - "playlistName": { - "type": "String" - }, - "alreadyCount": { - "type": "int" - } - } - }, - "storeCategoryIntegration": "Integration", - "storeClearFilters": "Filtreleri temizle", - "navSettings": "Ayarlar", - "@homeRecent": { - "description": "Section header for recent searches" - }, - "sectionApp": "Uygulama", - "@sectionLanguage": { - "description": "Settings section header for language" - }, - "downloadFilterContributingDisabled": "Full Album Artist string used", - "albumFolderArtistAlbumSinglesSubtitle": "Sanatçı/Albüm/ ve Sanatçı/Singlelar/", - "collectionDeletePlaylistsMessage": "Delete {count} {count, plural, =1{playlist} other{playlists}}?", - "lyricsProvidersSaved": "Lyrics provider priority saved", - "@trackReplayGainFailed": { - "description": "Snackbar message when ReplayGain scan/write fails" - }, - "trackTrackName": "Parça adı", - "homeRecent": "En son", - "recentEmpty": "Henüz son kullanılan öğe yok", - "cacheClearAll": "Clear all cache", - "trackReEnrichFieldReleaseInfo": "Date & ISRC", - "regionCountryMX": "Mexico", - "a11yOpenAlbumByArtistTrackCount": "Open album {albumName} by {artistName}, {trackCount} tracks", - "editMetadataFieldAlbum": "Album", - "settingsAbout": "Hakkında", - "libraryFilterTitle": "Filtreler", - "cleanupOrphanedDownloadsResult": "Geçmişten {count} adet yetim kayıt kaldırıldı", - "extensionHooksAvailable": "{count} kanca kullanılabilir", - "backupContentsSettings": "App settings", - "trackLyricsEmbedded": "Şarkı sözleri başarıyla gömüldü", - "optionsUpdateChannelPreview": "Önizleme sürümlerini al", - "collectionAddedToFavoriteArtists": "\"{artistName}\" added to Favorite Artists", - "libraryForceFullScan": "Tam Taramayı Zorla", - "snackbarProviderPrioritySaved": "Sağlayıcı önceliği kaydedildi", - "collectionFavoriteArtistsEmptySubtitle": "Bir sanatçının sayfasındaki kalbe dokunarak onu burada tutmaya devam edin", - "libraryBuiltInPlayerInfo": "The built-in player is a preview tool for checking local tracks quickly. Use an external music player for actual listening.", - "extensionServiceStatus": "Service Status", - "dateWeeksAgo": "{count} hafta önce", - "historyFilterSingles": "Single'lar", - "tutorialSettingsTip2": "Set quality, concurrency, filenames, and conversion preferences", - "trackLyricsSaved": "Lyrics saved to {fileName}", - "cacheClearAllConfirmTitle": "Clear all cache?", - "noTracksFoundForAlbum": "Bu albüm için hiçbir parça bulunamadı", - "sectionLanguage": "Dil", - "@logIssueTrackNotFoundDescription": { - "description": "Diagnostic badge description when a track is unavailable" - }, - "setupSelectFolder": "Klasör Seç", - "dateYesterday": "Dün", - "collectionAddToPlaylist": "Add to playlist", - "snackbarUnsupportedAudioFormat": "Unsupported audio format", - "libraryScanCancelled": "Scan cancelled", - "appearanceLanguage": "Uygulama Dili", - "extensionsTitle": "Eklentiler", - "dialogImportPlaylistMessage": "Found {count} tracks in the playlist file. Add them to download queue?", - "permissionNotification": "Bildirim", - "notifUpdateReady": "Güncelleme Hazır", - "lyricsModeDescription": "Şarkı sözlerinin indirmelerinizle birlikte nasıl kaydedileceğini seçin", - "downloadFrom": "İndirme Kaynağı", - "collectionWishlistEmptySubtitle": "Daha sonra indirmek istediğiniz parçaları kaydetmek için parçaların üzerine + işaretiyle dokunun", - "cueSplitSplitting": "CUE sayfası bölünüyor... ({current}/{total})", - "trackOptionAddToWishlist": "Add to Wishlist", - "settingsBackup": "Backup & Restore", - "aboutPaxsenixSubtitle": "Lyrics proxy for Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou, and Genius", - "notifDownloadCompleteCount": "Download Complete ({completed}/{total})", - "extensionsNoDownloadProvider": "İndirme sağlayıcısı olan uzantı yok", - "libraryFilterSortGenreAsc": "Tür (A-Z)", - "trackReplayGainFailed": "Failed to add ReplayGain tags", - "collectionPlaylistRemoveCover": "Remove cover image", - "storeEmptyNoResults": "Uzantı bulunamadı", - "logIssueTrackNotFoundDescription": "Some tracks could not be found on download services", - "editMetadataFieldComment": "Yorum", - "settingsMetadata": "Metadata", - "settingsCache": "Depolama ve Önbellek", - "providerPriorityFallbackExtensionsHint": "Burada yalnızca indirme sağlayıcısı yeteneğine sahip olan ve etkinleştirilmiş uzantılar listelenir.", - "libraryFilterAll": "All", - "notifDownloadingUpdate": "Downloading SpotiFLAC Mobile v{version}", - "extensionsProviderPrioritySection": "Sağlayıcı Önceliği", - "storeChangeRepoTooltip": "Depoyu değiştir", - "snackbarFailedToInstall": "Eklenti yüklenirken hata oluştu", - "libraryScanSubtitle": "Ses dosyaları için tara", - "snackbarExtensionInstalled": "{extensionName} yüklendi.", - "setupOpenSettings": "Ayarları Aç", - "extensionsInstalledSection": "Kurulu uzantılar", - "aboutLinks": "Linkler", - "trackCoverClearSelected": "Clear selected cover", - "libraryAutoScanWeekly": "Haftalık", - "downloadMusixmatchLanguageAuto": "Auto (original language)", - "optionsDefaultSearchTab": "Varsayılan Arama Sekmesi", - "downloadPrimaryArtistOnlyOn": "Primary only: On", - "folderOrganizationDescription": "İndirilenleri klasörlerle organize et", - "@folderOrganizationDescription": { - "description": "Folder organization sheet description" - }, - "lyricsModeEmbed": "Dosyaya göm", - "trackReEnrichFfmpegFailed": "FFmpeg metadata embed failed", - "@extensionsSearchProviderDescription": { - "description": "Search provider setting description" - }, - "libraryFilterQualityLossy": "Kayıplı", - "actionPause": "Duraklat", - "csvImportTracks": "CSV'den {count} şarkı", - "actionGo": "Go", - "sectionDebug": "Hata ayıklama", - "editMetadataFieldDate": "Date", - "timeHoursAgo": "{count, plural, =1{1 hour ago} other{{count} hours ago}}", - "sectionPerformance": "Performans", - "extensionsDownloadPrioritySubtitle": "İndirme servisi sırasını ayarla", - "cacheAppDirectoryDesc": "HTTP yanıtları, WebView verileri ve diğer geçici uygulama verileri.", - "sectionData": "Veri", - "notifFinalizingTrack": "Finalizing {trackName}", - "snackbarFileNotFound": "Dosya bulunamadı", - "extensionQualityOptions": "Kalite Seçenekleri", - "extensionVerificationBrowserSubtitleExternal": "Open challenges in the default browser first", - "backupInvalidFile": "This file is not a valid SpotiFLAC backup", - "storeRepoDialogTitle": "Uzantı Deposu", - "extensionsSearchProviderDescription": "Parça aramak için hangi servisin kullanılacağını seçin", - "albumFolderAlbumOnly": "Yalnızca Albüm", - "nowPlayingOpenInExternalPlayer": "Open in external player", - "cueSplitButton": "Parçalara Ayrılmış", - "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" - } - } + "appearanceAmoledDarkSubtitle": "Saf siyah arka plan", + "@appearanceAmoledDarkSubtitle": { + "description": "Subtitle for AMOLED dark" }, "appearanceHeroAnimations": "Hero animations", "@appearanceHeroAnimations": { @@ -5891,6 +2213,46 @@ "@appearanceHeroAnimationsSubtitle": { "description": "Subtitle for the Hero animations toggle" }, + "appearanceForceBlur": "Always use blur effects", + "@appearanceForceBlur": { + "description": "Toggle that forces backdrop blur on even when the device profile disabled it" + }, + "appearanceForceBlurSubtitle": "Enable the navigation bar blur even on devices where it is off by default. May cost performance.", + "@appearanceForceBlurSubtitle": { + "description": "Subtitle for the force-blur toggle" + }, + "queueClearAll": "Tümünü Temizle", + "@queueClearAll": { + "description": "Button - clear all queue items" + }, + "queueClearAllMessage": "Tüm indirmeleri temizlemek istediğinizden emin misiniz?", + "@queueClearAllMessage": { + "description": "Clear queue confirmation" + }, + "settingsAutoExportFailed": "Başarısız indirmeleri otomatik dışa aktar", + "@settingsAutoExportFailed": { + "description": "Setting toggle for auto-export" + }, + "settingsAutoExportFailedSubtitle": "Başarısız indirmeleri otomatik olarak TXT dosyasına kaydet", + "@settingsAutoExportFailedSubtitle": { + "description": "Subtitle for auto-export setting" + }, + "settingsDownloadNetwork": "İndirme Ağı", + "@settingsDownloadNetwork": { + "description": "Setting for network type preference" + }, + "settingsDownloadNetworkAny": "WiFi + Mobil Veri", + "@settingsDownloadNetworkAny": { + "description": "Network option - use any connection" + }, + "settingsDownloadNetworkWifiOnly": "Yalnızca WiFi", + "@settingsDownloadNetworkWifiOnly": { + "description": "Network option - only use WiFi" + }, + "settingsDownloadNetworkSubtitle": "İndirmeler için hangi ağın kullanılacağını seçin. Yalnızca WiFi olarak ayarlandığında, mobil veriye geçildiğinde indirmeler duraklatılır.", + "@settingsDownloadNetworkSubtitle": { + "description": "Subtitle explaining network preference" + }, "settingsConcurrentDownloads": "Concurrent downloads", "@settingsConcurrentDownloads": { "description": "Setting title - how many tracks download at the same time" @@ -5912,6 +2274,854 @@ } } }, + "albumFolderArtistAlbum": "Sanatçı / Albüm", + "@albumFolderArtistAlbum": { + "description": "Album folder option" + }, + "albumFolderArtistAlbumSubtitle": "Albümler/Sanatçı Adı/Albüm Adı/", + "@albumFolderArtistAlbumSubtitle": { + "description": "Folder structure example" + }, + "albumFolderArtistYearAlbum": "Sanatçı / [Yıl] Albüm", + "@albumFolderArtistYearAlbum": { + "description": "Album folder option with year" + }, + "albumFolderArtistYearAlbumSubtitle": "Albümler/Sanatçı Adı/[2005] Albüm Adı/", + "@albumFolderArtistYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "albumFolderAlbumOnly": "Yalnızca Albüm", + "@albumFolderAlbumOnly": { + "description": "Album folder option" + }, + "albumFolderAlbumOnlySubtitle": "Albümler/Albüm Adı/", + "@albumFolderAlbumOnlySubtitle": { + "description": "Folder structure example" + }, + "albumFolderYearAlbum": "[Yıl] Albüm", + "@albumFolderYearAlbum": { + "description": "Album folder option with year" + }, + "albumFolderYearAlbumSubtitle": "Albümler/[2005] Albüm Adı/", + "@albumFolderYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "albumFolderArtistAlbumSingles": "Sanatçı / Albüm + Singlelar", + "@albumFolderArtistAlbumSingles": { + "description": "Album folder option with singles inside artist" + }, + "albumFolderArtistAlbumSinglesSubtitle": "Sanatçı/Albüm/ ve Sanatçı/Singlelar/", + "@albumFolderArtistAlbumSinglesSubtitle": { + "description": "Folder structure example" + }, + "albumFolderArtistAlbumFlat": "Sanatçı / Albüm (Singlelar alt klasörsüz)", + "@albumFolderArtistAlbumFlat": { + "description": "Album folder option with singles directly in artist folder" + }, + "albumFolderArtistAlbumFlatSubtitle": "Sanatçı/Albüm/ ve Sanatçı/şarkı.flac", + "@albumFolderArtistAlbumFlatSubtitle": { + "description": "Folder structure example for flat singles" + }, + "downloadedAlbumDeleteSelected": "Seçilenleri Sil", + "@downloadedAlbumDeleteSelected": { + "description": "Button - delete selected tracks" + }, + "downloadedAlbumDeleteMessage": "Bu albümden {count} {count, plural, =1{parça} other{parça}} parça silinsin mi?\n\nBu işlem dosyaları depolama alanından da kalıcı olarak silecektir.", + "@downloadedAlbumDeleteMessage": { + "description": "Delete confirmation with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumSelectedCount": "{count} seçildi", + "@downloadedAlbumSelectedCount": { + "description": "Selection count indicator", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumTapToSelect": "Seçmek için parçalara dokunun", + "@downloadedAlbumTapToSelect": { + "description": "Selection hint" + }, + "downloadedAlbumDeleteCount": "{count} {count, plural, =1{parçayı} other{parçayı}} sil", + "@downloadedAlbumDeleteCount": { + "description": "Delete button text with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumSelectToDelete": "Silinecek parçaları seçin", + "@downloadedAlbumSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "downloadedAlbumDiscHeader": "Disk {discNumber}", + "@downloadedAlbumDiscHeader": { + "description": "Header for disc separator in multi-disc albums", + "placeholders": { + "discNumber": { + "type": "int", + "example": "1" + } + } + }, + "recentTypeArtist": "Sanatçı", + "@recentTypeArtist": { + "description": "Recent access item type - artist" + }, + "recentTypeAlbum": "Albüm", + "@recentTypeAlbum": { + "description": "Recent access item type - album" + }, + "recentTypeSong": "Şarkı", + "@recentTypeSong": { + "description": "Recent access item type - song/track" + }, + "recentTypePlaylist": "Çalma Listesi", + "@recentTypePlaylist": { + "description": "Recent access item type - playlist" + }, + "recentEmpty": "Henüz son kullanılan öğe yok", + "@recentEmpty": { + "description": "Empty state text for recent access list" + }, + "recentClearAllMessage": "Clear all recent activity? Download history and music files will not be deleted.", + "@recentClearAllMessage": { + "description": "Confirmation message before clearing all recent activity" + }, + "recentShowAllDownloads": "Tüm İndirmeleri Göster", + "@recentShowAllDownloads": { + "description": "Button label to unhide hidden downloads in recent access" + }, + "recentPlaylistInfo": "Çalma Listesi: {name}", + "@recentPlaylistInfo": { + "description": "Snackbar message when tapping playlist in recent access", + "placeholders": { + "name": { + "type": "String", + "description": "Playlist name" + } + } + }, + "discographyDownload": "Diskografiyi İndir", + "@discographyDownload": { + "description": "Button - download artist discography" + }, + "discographyDownloadAll": "Tümünü İndir", + "@discographyDownloadAll": { + "description": "Option - download entire discography" + }, + "discographyDownloadAllSubtitle": "{albumCount} yayından {count} parça", + "@discographyDownloadAllSubtitle": { + "description": "Subtitle showing total tracks and albums", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "discographyAlbumsOnly": "Yalnızca Albümler", + "@discographyAlbumsOnly": { + "description": "Option - download only albums" + }, + "discographyAlbumsOnlySubtitle": "{albumCount} albümden {count} parça", + "@discographyAlbumsOnlySubtitle": { + "description": "Subtitle showing album tracks count", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "discographySinglesOnly": "Yalnızca Single'lar ve EP'ler", + "@discographySinglesOnly": { + "description": "Option - download only singles" + }, + "discographySinglesOnlySubtitle": "{albumCount} tekliden {count} parça", + "@discographySinglesOnlySubtitle": { + "description": "Subtitle showing singles tracks count", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "discographySelectAlbums": "Albümleri Seç...", + "@discographySelectAlbums": { + "description": "Option - manually select albums to download" + }, + "discographySelectAlbumsSubtitle": "Belirli albümleri veya single'ları seçin", + "@discographySelectAlbumsSubtitle": { + "description": "Subtitle for select albums option" + }, + "discographyFetchingTracks": "Parçalar getiriliyor...", + "@discographyFetchingTracks": { + "description": "Progress - fetching album tracks" + }, + "discographyFetchingAlbum": "{total} üzerinden {current} getiriliyor...", + "@discographyFetchingAlbum": { + "description": "Progress - fetching specific album", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "discographySelectedCount": "{count} seçildi", + "@discographySelectedCount": { + "description": "Selection count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "discographyDownloadSelected": "Seçilenleri İndir", + "@discographyDownloadSelected": { + "description": "Button - download selected albums" + }, + "discographyAddedToQueue": "{count} parça kuyruğa eklendi", + "@discographyAddedToQueue": { + "description": "Snackbar - tracks added from discography", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "discographySkippedDownloaded": "{added} eklendi, {skipped} zaten indirilmiş", + "@discographySkippedDownloaded": { + "description": "Snackbar - with skipped tracks count", + "placeholders": { + "added": { + "type": "int" + }, + "skipped": { + "type": "int" + } + } + }, + "discographyNoAlbums": "Kullanılabilir albüm yok", + "@discographyNoAlbums": { + "description": "Error - no albums found for artist" + }, + "discographyFailedToFetch": "Bazı albümler getirilemedi", + "@discographyFailedToFetch": { + "description": "Error - some albums failed to load" + }, + "sectionStorageAccess": "Depolama Erişimi", + "@sectionStorageAccess": { + "description": "Section header for storage access settings" + }, + "allFilesAccess": "Tüm Dosyalara Erişim", + "@allFilesAccess": { + "description": "Toggle for MANAGE_EXTERNAL_STORAGE permission" + }, + "allFilesAccessEnabledSubtitle": "Herhangi bir klasöre yazabilir", + "@allFilesAccessEnabledSubtitle": { + "description": "Subtitle when all files access is enabled" + }, + "allFilesAccessDisabledSubtitle": "Yalnızca medya klasörleriyle sınırlı", + "@allFilesAccessDisabledSubtitle": { + "description": "Subtitle when all files access is disabled" + }, + "allFilesAccessDescription": "Özel klasörlere kaydederken yazma hatalarıyla karşılaşırsanız bunu etkinleştirin. Android 13 ve üzeri, varsayılan olarak belirli dizinlere erişimi kısıtlar.", + "@allFilesAccessDescription": { + "description": "Description explaining when to enable all files access" + }, + "allFilesAccessDeniedMessage": "İzin reddedildi. Lütfen sistem ayarlarından 'Tüm dosyalara erişim' iznini manuel olarak etkinleştirin.", + "@allFilesAccessDeniedMessage": { + "description": "Message when permission is permanently denied" + }, + "allFilesAccessDisabledMessage": "Tüm Dosyalara Erişim devre dışı bırakıldı. Uygulama kısıtlı depolama erişimi kullanacak.", + "@allFilesAccessDisabledMessage": { + "description": "Snackbar message when user disables all files access" + }, + "settingsLocalLibrary": "Yerel Kitaplık", + "@settingsLocalLibrary": { + "description": "Settings menu item - local library" + }, + "settingsLocalLibrarySubtitle": "Müziği tara ve kopyaları tespit et", + "@settingsLocalLibrarySubtitle": { + "description": "Subtitle for local library settings" + }, + "settingsCache": "Depolama ve Önbellek", + "@settingsCache": { + "description": "Settings menu item - cache management" + }, + "settingsCacheSubtitle": "Boyutu görüntüle ve önbelleğe alınmış verileri temizle", + "@settingsCacheSubtitle": { + "description": "Subtitle for cache management menu" + }, + "libraryTitle": "Yerel Kitaplık", + "@libraryTitle": { + "description": "Library settings page title" + }, + "libraryScanSettings": "Tarama Ayarları", + "@libraryScanSettings": { + "description": "Section header for scan settings" + }, + "libraryEnableLocalLibrary": "Yerel Kitaplığı Etkinleştir", + "@libraryEnableLocalLibrary": { + "description": "Toggle to enable library scanning" + }, + "libraryEnableLocalLibrarySubtitle": "Mevcut müziğinizi tarayın ve takip edin", + "@libraryEnableLocalLibrarySubtitle": { + "description": "Subtitle for enable toggle" + }, + "libraryFolder": "Kitaplık Klasörü", + "@libraryFolder": { + "description": "Folder selection setting" + }, + "libraryFolderHint": "Klasör seçmek için dokunun", + "@libraryFolderHint": { + "description": "Placeholder when no folder selected" + }, + "libraryAddFolder": "Add library folder", + "@libraryAddFolder": { + "description": "Action to add another local library source" + }, + "libraryAddFolderSubtitle": "Internal storage, SD card, SSD, or another external drive", + "@libraryAddFolderSubtitle": { + "description": "Supported storage locations for local library sources" + }, + "librarySourceOnline": "Online", + "@librarySourceOnline": { + "description": "Library source is connected and accessible" + }, + "librarySourceOffline": "Offline. Reconnect the storage to restore these tracks", + "@librarySourceOffline": { + "description": "Library source is temporarily disconnected" + }, + "librarySourceDisabled": "Disabled", + "@librarySourceDisabled": { + "description": "Library source has been disabled by the user" + }, + "librarySourceScanCount": "{scanned} of {total} files scanned ({progress}%)", + "@librarySourceScanCount": { + "description": "Live progress for one library folder scan", + "placeholders": { + "scanned": { + "type": "int" + }, + "total": { + "type": "int" + }, + "progress": { + "type": "String" + } + } + }, + "libraryExternalStorage": "External storage", + "@libraryExternalStorage": { + "description": "Label for a removable or external library source" + }, + "libraryRemoveFolder": "Remove library folder", + "@libraryRemoveFolder": { + "description": "Action to remove one indexed library source" + }, + "libraryRemoveFolderMessage": "Remove this folder and its indexed tracks from SpotiFLAC Mobile? Audio files on the storage will not be deleted.", + "@libraryRemoveFolderMessage": { + "description": "Confirmation shown before removing a library source" + }, + "libraryShowDuplicateIndicator": "Kopya Belirtecini Göster", + "@libraryShowDuplicateIndicator": { + "description": "Toggle for duplicate indicator in search" + }, + "libraryShowDuplicateIndicatorSubtitle": "Mevcut parçalar aranırken göster", + "@libraryShowDuplicateIndicatorSubtitle": { + "description": "Subtitle for duplicate indicator toggle" + }, + "libraryAutoScan": "Otomatik Tarama", + "@libraryAutoScan": { + "description": "Setting for automatic library scanning" + }, + "libraryAutoScanSubtitle": "Kitaplığınızı yeni dosyalar için otomatik olarak tarayın", + "@libraryAutoScanSubtitle": { + "description": "Subtitle for auto scan setting" + }, + "libraryAutoScanOff": "Kapalı", + "@libraryAutoScanOff": { + "description": "Auto scan disabled" + }, + "libraryAutoScanOnOpen": "Her uygulama açılışında", + "@libraryAutoScanOnOpen": { + "description": "Auto scan when app opens" + }, + "libraryAutoScanDaily": "Günlük", + "@libraryAutoScanDaily": { + "description": "Auto scan once per day" + }, + "libraryAutoScanWeekly": "Haftalık", + "@libraryAutoScanWeekly": { + "description": "Auto scan once per week" + }, + "libraryActions": "Eylemler", + "@libraryActions": { + "description": "Section header for library actions" + }, + "libraryScan": "Kitaplığı Tara", + "@libraryScan": { + "description": "Button to start library scan" + }, + "libraryScanSubtitle": "Ses dosyaları için tara", + "@libraryScanSubtitle": { + "description": "Subtitle for scan button" + }, + "libraryScanSelectFolderFirst": "Önce bir klasör seçin", + "@libraryScanSelectFolderFirst": { + "description": "Message when trying to scan without folder" + }, + "libraryCleanupMissingFiles": "Eksik Dosyaları Temizle", + "@libraryCleanupMissingFiles": { + "description": "Button to remove entries for missing files" + }, + "libraryCleanupMissingFilesSubtitle": "Eski dosya kalıntılarını temizleyin", + "@libraryCleanupMissingFilesSubtitle": { + "description": "Subtitle for cleanup button" + }, + "libraryClear": "Kitaplığı temizle", + "@libraryClear": { + "description": "Button to clear all library entries" + }, + "libraryClearSubtitle": "Taranan tüm parçaları sil", + "@libraryClearSubtitle": { + "description": "Subtitle for clear button" + }, + "libraryClearConfirmTitle": "Kütüphaneyi temizle", + "@libraryClearConfirmTitle": { + "description": "Dialog title for clear confirmation" + }, + "libraryClearConfirmMessage": "Bu işlem, kitaplığınızdaki tüm taranmış parçaları siler. Asıl müzik dosyalarınız silinmez.", + "@libraryClearConfirmMessage": { + "description": "Dialog message for clear confirmation" + }, + "libraryAbout": "Yerel Kütüphane Hakkında", + "@libraryAbout": { + "description": "Section header for about info" + }, + "libraryAboutDescription": "İndirme işlemi sırasında mevcut müzik koleksiyonunuzu tarayarak yinelenen dosyaları tespit eder. FLAC, M4A, MP3, Opus ve OGG formatlarını destekler. Varsa, meta veriler dosya etiketlerinden okunur.", + "@libraryAboutDescription": { + "description": "Description of local library feature" + }, + "libraryTracksUnit": "{count, plural, =1{parça} other{parçalar}}", + "@libraryTracksUnit": { + "description": "Unit label for tracks count (without the number itself)", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryFilesUnit": "{count, plural, =1{dosya} other{dosyalar}}", + "@libraryFilesUnit": { + "description": "Unit label for files count during library scanning", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryLastScanned": "Son tarama tarihi: {time}", + "@libraryLastScanned": { + "description": "Last scan time display", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "libraryLastScannedNever": "Asla", + "@libraryLastScannedNever": { + "description": "Shown when library has never been scanned" + }, + "libraryScanning": "Scanning...", + "@libraryScanning": { + "description": "Status during scan" + }, + "libraryScanFinalizing": "Kütüphane sonlandırılıyor...", + "@libraryScanFinalizing": { + "description": "Status shown after file scanning finishes but library persistence is still running" + }, + "libraryScanProgress": "{total} dosyanın {progress}%'si", + "@libraryScanProgress": { + "description": "Scan progress display", + "placeholders": { + "progress": { + "type": "String" + }, + "total": { + "type": "int" + } + } + }, + "libraryInLibrary": "Kütüphanede", + "@libraryInLibrary": { + "description": "Badge shown on tracks that exist in local library" + }, + "libraryRemovedMissingFiles": "Kütüphaneden {count} adet eksik dosya kaldırıldı", + "@libraryRemovedMissingFiles": { + "description": "Snackbar after cleanup", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryCleared": "Kütüphane temizlendi", + "@libraryCleared": { + "description": "Snackbar after clearing library" + }, + "libraryStorageAccessRequired": "Depolama Alanına Erişim Gereklidir", + "@libraryStorageAccessRequired": { + "description": "Dialog title for storage permission" + }, + "libraryStorageAccessMessage": "SpotiFLAC, müzik kitaplığınızı tarayabilmek için depolama alanına erişime ihtiyaç duyar. Lütfen ayarlar bölümünden izin verin.", + "@libraryStorageAccessMessage": { + "description": "Dialog message for storage permission" + }, + "libraryFolderNotExist": "Seçilen klasör mevcut değil", + "@libraryFolderNotExist": { + "description": "Error when folder doesn't exist" + }, + "librarySourceDownloaded": "Downloaded", + "@librarySourceDownloaded": { + "description": "Badge for tracks downloaded via SpotiFLAC" + }, + "librarySourceLocal": "Yerel", + "@librarySourceLocal": { + "description": "Badge for tracks from local library scan" + }, + "libraryFilterAll": "All", + "@libraryFilterAll": { + "description": "Filter chip - show all library items" + }, + "libraryFilterDownloaded": "İndirildi", + "@libraryFilterDownloaded": { + "description": "Filter chip - show only downloaded items" + }, + "libraryFilterLocal": "Yerel", + "@libraryFilterLocal": { + "description": "Filter chip - show only local library items" + }, + "libraryFilterTitle": "Filtreler", + "@libraryFilterTitle": { + "description": "Filter bottom sheet title" + }, + "libraryFilterReset": "Reset", + "@libraryFilterReset": { + "description": "Reset all filters button" + }, + "libraryFilterApply": "Uygula", + "@libraryFilterApply": { + "description": "Apply filters button" + }, + "libraryFilterSource": "Kaynak", + "@libraryFilterSource": { + "description": "Filter section - source type" + }, + "libraryFilterQuality": "Kalite", + "@libraryFilterQuality": { + "description": "Filter section - audio quality" + }, + "libraryFilterQualityHiRes": "Hi-Res (24bit)", + "@libraryFilterQualityHiRes": { + "description": "Filter option - high resolution audio" + }, + "libraryFilterQualityCD": "CD (16bit)", + "@libraryFilterQualityCD": { + "description": "Filter option - CD quality audio" + }, + "libraryFilterQualityLossy": "Kayıplı", + "@libraryFilterQualityLossy": { + "description": "Filter option - lossy compressed audio" + }, + "libraryFilterFormat": "Format", + "@libraryFilterFormat": { + "description": "Filter section - file format" + }, + "libraryFilterMetadata": "Meta veriler", + "@libraryFilterMetadata": { + "description": "Filter section - metadata completeness" + }, + "libraryFilterMetadataComplete": "Tam meta veriler", + "@libraryFilterMetadataComplete": { + "description": "Filter option - items with complete metadata" + }, + "libraryFilterMetadataMissingAny": "Herhangi bir meta veri eksik", + "@libraryFilterMetadataMissingAny": { + "description": "Filter option - items missing any tracked metadata field" + }, + "libraryFilterMetadataMissingYear": "Kayıp yıl", + "@libraryFilterMetadataMissingYear": { + "description": "Filter option - items missing release year/date" + }, + "libraryFilterMetadataMissingGenre": "Eksik tür", + "@libraryFilterMetadataMissingGenre": { + "description": "Filter option - items missing genre" + }, + "libraryFilterMetadataMissingAlbumArtist": "Kayıp albüm sanatçısı", + "@libraryFilterMetadataMissingAlbumArtist": { + "description": "Filter option - items missing album artist" + }, + "libraryFilterSort": "Sırala", + "@libraryFilterSort": { + "description": "Filter section - sort order" + }, + "libraryFilterSortLatest": "En sonuncu", + "@libraryFilterSortLatest": { + "description": "Sort option - newest first" + }, + "libraryFilterSortOldest": "En eski", + "@libraryFilterSortOldest": { + "description": "Sort option - oldest first" + }, + "libraryFilterSortAlbumAsc": "Albüm (A-Z)", + "@libraryFilterSortAlbumAsc": { + "description": "Sort option - album ascending" + }, + "libraryFilterSortAlbumDesc": "Albüm (Z-A)", + "@libraryFilterSortAlbumDesc": { + "description": "Sort option - album descending" + }, + "libraryFilterSortGenreAsc": "Tür (A-Z)", + "@libraryFilterSortGenreAsc": { + "description": "Sort option - genre ascending" + }, + "libraryFilterSortGenreDesc": "Tür (Z-A)", + "@libraryFilterSortGenreDesc": { + "description": "Sort option - genre descending" + }, + "timeJustNow": "Şu anda", + "@timeJustNow": { + "description": "Relative time - less than a minute ago" + }, + "timeMinutesAgo": "{count, plural, =1{1 minute ago} other{{count} minutes ago}}", + "@timeMinutesAgo": { + "description": "Relative time - minutes ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "timeHoursAgo": "{count, plural, =1{1 hour ago} other{{count} hours ago}}", + "@timeHoursAgo": { + "description": "Relative time - hours ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "tutorialWelcomeTitle": "Welcome to SpotiFLAC Mobile!", + "@tutorialWelcomeTitle": { + "description": "Tutorial welcome page title" + }, + "tutorialWelcomeDesc": "Learn how to find music with extensions, choose the quality you want, and manage downloads in SpotiFLAC Mobile.", + "@tutorialWelcomeDesc": { + "description": "Tutorial welcome page description" + }, + "tutorialWelcomeTip1": "Search with an installed extension or paste a supported music link", + "@tutorialWelcomeTip1": { + "description": "Tutorial welcome tip 1" + }, + "tutorialWelcomeTip2": "Choose from the audio qualities offered by your download provider", + "@tutorialWelcomeTip2": { + "description": "Tutorial welcome tip 2" + }, + "tutorialWelcomeTip3": "Embed metadata, cover art, lyrics, and release information automatically", + "@tutorialWelcomeTip3": { + "description": "Tutorial welcome tip 3" + }, + "tutorialSearchTitle": "Müzik Bulma", + "@tutorialSearchTitle": { + "description": "Tutorial search page title" + }, + "tutorialSearchDesc": "Search with your selected extension or paste a supported music link.", + "@tutorialSearchDesc": { + "description": "Tutorial search page description" + }, + "tutorialDownloadTitle": "Müzik İndirme", + "@tutorialDownloadTitle": { + "description": "Tutorial download page title" + }, + "tutorialDownloadDesc": "Pick an available quality, start the download, and follow its progress in the queue.", + "@tutorialDownloadDesc": { + "description": "Tutorial download page description" + }, + "tutorialLibraryTitle": "Kitaplığınız", + "@tutorialLibraryTitle": { + "description": "Tutorial library page title" + }, + "tutorialLibraryDesc": "Downloaded and locally scanned music is organized in your Library.", + "@tutorialLibraryDesc": { + "description": "Tutorial library page description" + }, + "tutorialLibraryTip1": "Manage active, pending, and completed downloads from the Library queue", + "@tutorialLibraryTip1": { + "description": "Tutorial library tip 1" + }, + "tutorialLibraryTip2": "Tap a track to play it with the built-in player", + "@tutorialLibraryTip2": { + "description": "Tutorial library tip 2" + }, + "tutorialLibraryTip3": "Browse tracks, albums, and playlists in list or grid views", + "@tutorialLibraryTip3": { + "description": "Tutorial library tip 3" + }, + "tutorialExtensionsTitle": "Uzantılar", + "@tutorialExtensionsTitle": { + "description": "Tutorial extensions page title" + }, + "tutorialExtensionsDesc": "Extensions add search, download, metadata, lyrics, and other integrations.", + "@tutorialExtensionsDesc": { + "description": "Tutorial extensions page description" + }, + "tutorialExtensionsTip1": "Faydalı uzantıları keşfetmek için Depo sekmesine göz atın", + "@tutorialExtensionsTip1": { + "description": "Tutorial extensions tip 1" + }, + "tutorialExtensionsTip2": "Choose providers for search, downloads, metadata, and fallbacks", + "@tutorialExtensionsTip2": { + "description": "Tutorial extensions tip 2" + }, + "tutorialExtensionsTip3": "Connect accounts when required and keep extensions up to date", + "@tutorialExtensionsTip3": { + "description": "Tutorial extensions tip 3" + }, + "tutorialSettingsTitle": "Deneyiminizi Özelleştirin", + "@tutorialSettingsTitle": { + "description": "Tutorial settings page title" + }, + "tutorialSettingsDesc": "Fine-tune downloads, playback, Library behavior, appearance, and storage.", + "@tutorialSettingsDesc": { + "description": "Tutorial settings page description" + }, + "tutorialSettingsTip1": "İndirme konumunu ve klasör düzenini değiştirin", + "@tutorialSettingsTip1": { + "description": "Tutorial settings tip 1" + }, + "tutorialSettingsTip2": "Set quality, concurrency, filenames, and conversion preferences", + "@tutorialSettingsTip2": { + "description": "Tutorial settings tip 2" + }, + "tutorialSettingsTip3": "Uygulama temasını ve görünümünü özelleştirin", + "@tutorialSettingsTip3": { + "description": "Tutorial settings tip 3" + }, + "tutorialReadyMessage": "You're ready. Select your extensions, then search or paste a supported link.", + "@tutorialReadyMessage": { + "description": "Tutorial completion message" + }, + "libraryForceFullScan": "Tam Taramayı Zorla", + "@libraryForceFullScan": { + "description": "Button to force a complete rescan of library" + }, + "libraryForceFullScanSubtitle": "Önbelleği yok sayarak tüm dosyaları yeniden tarayın", + "@libraryForceFullScanSubtitle": { + "description": "Subtitle for force full scan button" + }, + "cleanupOrphanedDownloads": "Yetim kalmış indirmeleri temizle", + "@cleanupOrphanedDownloads": { + "description": "Button to remove history entries for deleted files" + }, + "cleanupOrphanedDownloadsSubtitle": "Artık mevcut olmayan dosyalar için geçmiş kayıtlarını kaldırın", + "@cleanupOrphanedDownloadsSubtitle": { + "description": "Subtitle for orphaned cleanup button" + }, + "cleanupOrphanedDownloadsResult": "Geçmişten {count} adet yetim kayıt kaldırıldı", + "@cleanupOrphanedDownloadsResult": { + "description": "Snackbar after orphan cleanup", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cleanupOrphanedDownloadsNone": "Hiçbir yetim kayıt bulunamadı", + "@cleanupOrphanedDownloadsNone": { + "description": "Snackbar when no orphans found" + }, + "cacheTitle": "Depolama & Önbellek", + "@cacheTitle": { + "description": "Cache management page title" + }, + "cacheSummaryTitle": "Önbellek genel bakışı", + "@cacheSummaryTitle": { + "description": "Heading for cache summary card" + }, + "cacheSummarySubtitle": "Önbelleği temizlemek, indirilen müzik dosyalarını silmeyecektir.", + "@cacheSummarySubtitle": { + "description": "Helper text for cache summary card" + }, + "cacheEstimatedTotal": "Estimated cache usage: {size}", + "@cacheEstimatedTotal": { + "description": "Total cache size shown in summary", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "cacheSectionStorage": "Önbelleğe alınmış veriler", + "@cacheSectionStorage": { + "description": "Section header for cache entries" + }, + "cacheSectionMaintenance": "Bakım", + "@cacheSectionMaintenance": { + "description": "Section header for cleanup actions" + }, + "cacheAppDirectory": "Uygulama önbellek dizini", + "@cacheAppDirectory": { + "description": "Cache item title for app cache directory" + }, + "cacheAppDirectoryDesc": "HTTP yanıtları, WebView verileri ve diğer geçici uygulama verileri.", + "@cacheAppDirectoryDesc": { + "description": "Description of what app cache directory contains" + }, + "cacheTempDirectory": "Geçici dizin", + "@cacheTempDirectory": { + "description": "Cache item title for temporary files directory" + }, + "cacheTempDirectoryDesc": "İndirmelerden ve ses dönüştürme işlemlerinden kaynaklanan geçici dosyalar.", + "@cacheTempDirectoryDesc": { + "description": "Description of what temporary directory contains" + }, + "cacheCoverImage": "Kapak resmi önbelleği", + "@cacheCoverImage": { + "description": "Cache item title for persistent cover images" + }, + "cacheCoverImageDesc": "Albüm ve şarkı kapak resimleri indirildi. Görüntülendikten sonra tekrar indirilecektir.", + "@cacheCoverImageDesc": { + "description": "Description of what cover image cache contains" + }, + "cacheLibraryCover": "Kütüphane kapağı önbelleği", + "@cacheLibraryCover": { + "description": "Cache item title for local library cover art images" + }, + "cacheLibraryCoverDesc": "Kapak resmi yerel müzik dosyalarından çıkarıldı. Bir sonraki taramada yeniden çıkarılacaktır.", + "@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" @@ -5928,6 +3138,350 @@ "@cacheAudioAnalysisDesc": { "description": "Description of what audio analysis cache contains" }, + "cacheExploreFeed": "Besleme önbelleğini keşfedin", + "@cacheExploreFeed": { + "description": "Cache item title for explore home feed cache" + }, + "cacheExploreFeedDesc": "Sekme içeriğini keşfedin (yeni çıkanlar, trendler). Bir sonraki ziyaretinizde yenilenecektir.", + "@cacheExploreFeedDesc": { + "description": "Description of what explore feed cache contains" + }, + "cacheTrackLookup": "İzleme arama önbelleği", + "@cacheTrackLookup": { + "description": "Cache item title for track ID lookup cache" + }, + "cacheTrackLookupDesc": "Spotify/Deezer track ID lookups. Clearing may slow next few searches.", + "@cacheTrackLookupDesc": { + "description": "Description of what track lookup cache contains" + }, + "cacheCleanupUnusedDesc": "Remove orphaned download history and library entries for missing files.", + "@cacheCleanupUnusedDesc": { + "description": "Description of what cleanup unused data does" + }, + "cacheNoData": "No cached data", + "@cacheNoData": { + "description": "Label when cache category has no data" + }, + "cacheSizeWithFiles": "{size} in {count} files", + "@cacheSizeWithFiles": { + "description": "Cache size and file count", + "placeholders": { + "size": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "cacheSizeOnly": "{size}", + "@cacheSizeOnly": { + "description": "Cache size only", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "cacheEntries": "{count} entries", + "@cacheEntries": { + "description": "Track cache entry count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cacheClearSuccess": "Cleared: {target}", + "@cacheClearSuccess": { + "description": "Snackbar after clearing selected cache", + "placeholders": { + "target": { + "type": "String" + } + } + }, + "cacheClearConfirmTitle": "Clear cache?", + "@cacheClearConfirmTitle": { + "description": "Dialog title before clearing one cache category" + }, + "cacheClearConfirmMessage": "This will clear cached data for {target}. Downloaded music files will not be deleted.", + "@cacheClearConfirmMessage": { + "description": "Dialog message before clearing selected cache", + "placeholders": { + "target": { + "type": "String" + } + } + }, + "cacheClearAllConfirmTitle": "Clear all cache?", + "@cacheClearAllConfirmTitle": { + "description": "Dialog title before clearing all caches" + }, + "cacheClearAllConfirmMessage": "This will clear all cache categories on this page. Downloaded music files will not be deleted.", + "@cacheClearAllConfirmMessage": { + "description": "Dialog message before clearing all caches" + }, + "cacheClearAll": "Clear all cache", + "@cacheClearAll": { + "description": "Button label to clear all caches" + }, + "cacheCleanupUnused": "Cleanup unused data", + "@cacheCleanupUnused": { + "description": "Action title for cleaning unused entries" + }, + "cacheCleanupUnusedSubtitle": "Remove orphaned download history and missing library entries", + "@cacheCleanupUnusedSubtitle": { + "description": "Subtitle for cleanup unused data action" + }, + "cacheCleanupResult": "Cleanup completed: {downloadCount} orphaned downloads, {libraryCount} missing library entries", + "@cacheCleanupResult": { + "description": "Snackbar after unused data cleanup", + "placeholders": { + "downloadCount": { + "type": "int" + }, + "libraryCount": { + "type": "int" + } + } + }, + "cacheRefreshStats": "Refresh stats", + "@cacheRefreshStats": { + "description": "Button label to refresh cache statistics" + }, + "trackSaveCoverArt": "Save Cover Art", + "@trackSaveCoverArt": { + "description": "Menu action - save album cover art as file" + }, + "trackSaveLyrics": "Save Lyrics (.lrc)", + "@trackSaveLyrics": { + "description": "Menu action - save lyrics as .lrc file" + }, + "trackSaveLyricsProgress": "Saving lyrics...", + "@trackSaveLyricsProgress": { + "description": "Snackbar while saving lyrics to file" + }, + "trackReEnrich": "Re-enrich", + "@trackReEnrich": { + "description": "Menu action - re-embed metadata into audio file" + }, + "trackReEnrichOnlineSubtitle": "Search metadata online and embed into file", + "@trackReEnrichOnlineSubtitle": { + "description": "Subtitle for re-enrich metadata action for local items" + }, + "trackReEnrichBatchSubtitle": "Choose an online or manual update, then review every change before writing", + "@trackReEnrichBatchSubtitle": { + "description": "Subtitle for batch metadata update choices" + }, + "trackReEnrichFieldCover": "Cover Art", + "@trackReEnrichFieldCover": { + "description": "Checkbox label for cover art field in re-enrich" + }, + "trackReEnrichFieldLyrics": "Lyrics", + "@trackReEnrichFieldLyrics": { + "description": "Checkbox label for lyrics field in re-enrich" + }, + "trackReEnrichFieldBasicTags": "Album, Album Artist", + "@trackReEnrichFieldBasicTags": { + "description": "Checkbox label for basic tags in re-enrich (title/artist are never overwritten)" + }, + "trackReEnrichFieldTrackInfo": "Track & Disc Number", + "@trackReEnrichFieldTrackInfo": { + "description": "Checkbox label for track info in re-enrich" + }, + "trackReEnrichFieldReleaseInfo": "Date & ISRC", + "@trackReEnrichFieldReleaseInfo": { + "description": "Checkbox label for release info in re-enrich" + }, + "trackReEnrichFieldExtra": "Genre, Label, Copyright", + "@trackReEnrichFieldExtra": { + "description": "Checkbox label for extra metadata in re-enrich" + }, + "trackReEnrichSelectAll": "Tümünü Seç", + "@trackReEnrichSelectAll": { + "description": "Select all fields checkbox in re-enrich" + }, + "trackReEnrichModeIsrc": "ISRC only", + "@trackReEnrichModeIsrc": { + "description": "Batch metadata mode that only writes ISRC" + }, + "trackReEnrichModeIsrcSubtitle": "Find and add the recording identifier without changing other tags", + "@trackReEnrichModeIsrcSubtitle": { + "description": "Explanation for the ISRC-only batch metadata mode" + }, + "trackReEnrichModeMissing": "Fill missing tags", + "@trackReEnrichModeMissing": { + "description": "Batch metadata mode that fills only empty tags" + }, + "trackReEnrichModeMissingSubtitle": "Keep existing values and fill only fields that are empty", + "@trackReEnrichModeMissingSubtitle": { + "description": "Explanation for the fill-missing batch metadata mode" + }, + "trackReEnrichModeReplace": "Update selected tags", + "@trackReEnrichModeReplace": { + "description": "Batch metadata mode that replaces selected tag groups" + }, + "trackReEnrichModeReplaceSubtitle": "Choose which existing values may be replaced by online metadata", + "@trackReEnrichModeReplaceSubtitle": { + "description": "Explanation for the selected-tag batch metadata mode" + }, + "trackReEnrichModeManual": "Set common values", + "@trackReEnrichModeManual": { + "description": "Batch metadata mode that applies shared values to every selected track" + }, + "trackReEnrichModeManualSubtitle": "Apply the same values to every selected track", + "@trackReEnrichModeManualSubtitle": { + "description": "Explanation for the manual shared-value batch metadata mode" + }, + "trackReEnrichManualFieldsTitle": "Values to apply", + "@trackReEnrichManualFieldsTitle": { + "description": "Heading above manual batch metadata inputs" + }, + "trackReEnrichManualHint": "Leave a field empty to keep its current value. Track titles, numbers, and ISRCs stay unchanged.", + "@trackReEnrichManualHint": { + "description": "Safety explanation for manual batch metadata inputs" + }, + "trackReEnrichFieldsTitle": "Tags to update", + "@trackReEnrichFieldsTitle": { + "description": "Heading above batch re-enrich field checkboxes" + }, + "trackReEnrichReview": "Review changes", + "@trackReEnrichReview": { + "description": "Button that searches metadata and opens the batch change review" + }, + "trackReEnrichReviewTitle": "Review metadata changes", + "@trackReEnrichReviewTitle": { + "description": "Title of the batch metadata review sheet" + }, + "trackReEnrichReviewSubtitle": "{changeCount} proposed changes across {trackCount} tracks", + "@trackReEnrichReviewSubtitle": { + "description": "Summary shown above proposed batch metadata changes", + "placeholders": { + "changeCount": { + "type": "int" + }, + "trackCount": { + "type": "int" + } + } + }, + "trackReEnrichNoChanges": "No metadata changes were found for the selected tracks.", + "@trackReEnrichNoChanges": { + "description": "Message when batch metadata preview has no proposed changes" + }, + "trackReEnrichApplyChanges": "Apply changes", + "@trackReEnrichApplyChanges": { + "description": "Confirmation button in the batch metadata review sheet" + }, + "trackReEnrichRefreshOnline": "Refresh from online", + "@trackReEnrichRefreshOnline": { + "description": "Proposed value when lyrics will be refreshed during re-enrich" + }, + "trackEditMetadata": "Edit Metadata", + "@trackEditMetadata": { + "description": "Menu action - edit embedded metadata" + }, + "trackCoverSaved": "Cover art saved to {fileName}", + "@trackCoverSaved": { + "description": "Snackbar after cover art saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "trackCoverNoSource": "No cover art source available", + "@trackCoverNoSource": { + "description": "Snackbar when no cover art URL or embedded cover" + }, + "trackLyricsSaved": "Lyrics saved to {fileName}", + "@trackLyricsSaved": { + "description": "Snackbar after lyrics saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "trackReEnrichProgress": "Re-enriching metadata...", + "@trackReEnrichProgress": { + "description": "Snackbar while re-enriching metadata" + }, + "trackReEnrichSearching": "Searching metadata online...", + "@trackReEnrichSearching": { + "description": "Snackbar while searching metadata from internet for local items" + }, + "trackReEnrichPreparing": "Preparing metadata changes...", + "@trackReEnrichPreparing": { + "description": "Progress message while preparing manual batch metadata changes" + }, + "trackReEnrichSuccess": "Metadata re-enriched successfully", + "trackReEnrichMetadataSaved": "Metadata saved", + "trackReEnrichLyricsUpdated": "Lyrics updated", + "trackReEnrichLyricsPreserved": "No new lyrics found; existing lyrics kept", + "trackReEnrichLyricsDisabled": "Lyrics not updated: lyric downloading is disabled in Settings", + "@trackReEnrichSuccess": { + "description": "Snackbar after successful re-enrichment" + }, + "trackReEnrichFfmpegFailed": "FFmpeg metadata embed failed", + "@trackReEnrichFfmpegFailed": { + "description": "Snackbar when FFmpeg embed fails for MP3/Opus" + }, + "queueFlacAction": "Queue 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": { + "description": "Confirmation dialog body before queueing FLAC redownloads for local tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueFlacNoReliableMatches": "No reliable online matches found for the selection", + "@queueFlacNoReliableMatches": { + "description": "Snackbar when no safe FLAC redownload matches were found" + }, + "queueFlacQueuedWithSkipped": "Added {addedCount} tracks to queue, skipped {skippedCount}", + "@queueFlacQueuedWithSkipped": { + "description": "Snackbar when some selected local tracks were queued for FLAC redownload and some were skipped", + "placeholders": { + "addedCount": { + "type": "int" + }, + "skippedCount": { + "type": "int" + } + } + }, + "trackSaveFailed": "Failed: {error}", + "@trackSaveFailed": { + "description": "Snackbar when save operation fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "trackConvertFormat": "Convert Format", + "@trackConvertFormat": { + "description": "Menu item - convert audio format" + }, + "trackConvertTitle": "Convert Audio", + "@trackConvertTitle": { + "description": "Title of convert bottom sheet" + }, + "trackConvertTargetFormat": "Target Format", + "@trackConvertTargetFormat": { + "description": "Label for format selection" + }, + "trackConvertBitrate": "Bitrate", + "@trackConvertBitrate": { + "description": "Label for bitrate selection" + }, "trackConvertKeepOriginal": "Keep original file", "@trackConvertKeepOriginal": { "description": "Toggle to preserve the source file during conversion" @@ -5936,6 +3490,37 @@ "@trackConvertKeepOriginalDescription": { "description": "Description for preserving the source file during conversion" }, + "trackConvertConfirmTitle": "Dönüştürmeyi Onayla", + "@trackConvertConfirmTitle": { + "description": "Confirmation dialog title" + }, + "trackConvertConfirmMessage": "{sourceFormat} formatından {targetFormat} formatına {bitrate} hızında dönüştürülsün mü?\n\nDönüştürme işleminden sonra orijinal dosya silinecektir.", + "@trackConvertConfirmMessage": { + "description": "Confirmation dialog message", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "trackConvertConfirmMessageLossless": "{sourceFormat} formatından {targetFormat} formatına dönüştürmek ister misiniz? (Kayıpsız — kalite kaybı yok)\n\nDönüştürme işleminden sonra orijinal dosya silinecektir.", + "@trackConvertConfirmMessageLossless": { + "description": "Confirmation dialog message for lossless-to-lossless conversion", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + } + } + }, "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", @@ -5948,6 +3533,382 @@ } } }, + "trackConvertLosslessHint": "Kayıpsız dönüştürme — kalite kaybı yok", + "@trackConvertLosslessHint": { + "description": "Hint shown when converting between lossless formats" + }, + "trackConvertConverting": "Converting audio...", + "@trackConvertConverting": { + "description": "Snackbar while converting" + }, + "trackConvertSuccess": "{format} formatına başarıyla dönüştürüldü", + "@trackConvertSuccess": { + "description": "Snackbar after successful conversion", + "placeholders": { + "format": { + "type": "String" + } + } + }, + "trackConvertFailed": "Dönüştürme başarısız oldu", + "@trackConvertFailed": { + "description": "Snackbar when conversion fails" + }, + "cueSplitTitle": "Bölünmüş CUE Sayfası", + "@cueSplitTitle": { + "description": "Title for CUE split bottom sheet" + }, + "cueSplitAlbum": "Album: {album}", + "@cueSplitAlbum": { + "description": "Album name in CUE split sheet", + "placeholders": { + "album": { + "type": "String" + } + } + }, + "cueSplitArtist": "Artist: {artist}", + "@cueSplitArtist": { + "description": "Artist name in CUE split sheet", + "placeholders": { + "artist": { + "type": "String" + } + } + }, + "cueSplitTrackCount": "{count} parça", + "@cueSplitTrackCount": { + "description": "Number of tracks in CUE sheet", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cueSplitConfirmTitle": "Bölünmüş CUE Albümü", + "@cueSplitConfirmTitle": { + "description": "CUE split confirmation dialog title" + }, + "cueSplitConfirmMessage": "\"{album}\" albümünü {count} adet ayrı FLAC dosyasına bölmek ister misiniz?\n\nDosyalar aynı dizine kaydedilecektir.", + "@cueSplitConfirmMessage": { + "description": "CUE split confirmation dialog message", + "placeholders": { + "album": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "cueSplitSplitting": "CUE sayfası bölünüyor... ({current}/{total})", + "@cueSplitSplitting": { + "description": "Snackbar while splitting CUE", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "cueSplitSuccess": "{count} parçaya başarıyla bölündü", + "@cueSplitSuccess": { + "description": "Snackbar after successful CUE split", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cueSplitFailed": "CUE bölme işlemi başarısız oldu", + "@cueSplitFailed": { + "description": "Snackbar when CUE split fails" + }, + "cueSplitNoAudioFile": "Bu CUE sayfası için ses dosyası bulunamadı", + "@cueSplitNoAudioFile": { + "description": "Error when CUE audio file is missing" + }, + "cueSplitButton": "Parçalara Ayrılmış", + "@cueSplitButton": { + "description": "Button text to start CUE splitting" + }, + "actionCreate": "Oluştur", + "@actionCreate": { + "description": "Generic action button - create" + }, + "collectionFoldersTitle": "Klasörlerim", + "@collectionFoldersTitle": { + "description": "Library section title for custom folders" + }, + "collectionWishlist": "İstek listesi", + "@collectionWishlist": { + "description": "Custom folder for saved tracks to download later" + }, + "collectionLoved": "Sevilen", + "@collectionLoved": { + "description": "Custom folder for favorite tracks" + }, + "collectionFavoriteArtists": "Favori Sanatçılar", + "@collectionFavoriteArtists": { + "description": "Custom folder for favorite artists" + }, + "collectionPlaylist": "Çalma listesi", + "@collectionPlaylist": { + "description": "Single playlist label" + }, + "collectionAddToPlaylist": "Add to playlist", + "@collectionAddToPlaylist": { + "description": "Action to add a track to user playlist" + }, + "collectionCreatePlaylist": "Çalma listesi oluştur", + "@collectionCreatePlaylist": { + "description": "Action to create a new playlist" + }, + "collectionNoPlaylistsYet": "Henüz çalma listesi yok", + "@collectionNoPlaylistsYet": { + "description": "Empty state title when user has no playlists" + }, + "collectionPlaylistTracks": "{count, plural, =1{1 parça} other{{count} parça}}", + "@collectionPlaylistTracks": { + "description": "Track count label for custom playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionArtistCount": "{count, plural, =1{1 sanatçı} other{{count} sanatçı}}", + "@collectionArtistCount": { + "description": "Artist count label for favorite artists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionAddedToPlaylist": "\"{playlistName}\"e eklendi", + "@collectionAddedToPlaylist": { + "description": "Snackbar after adding track to playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "collectionAlreadyInPlaylist": "Zaten \"{playlistName}\" içinde", + "@collectionAlreadyInPlaylist": { + "description": "Snackbar when track already exists in playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "collectionPlaylistNameHint": "Playlist name", + "@collectionPlaylistNameHint": { + "description": "Hint text for playlist name input" + }, + "collectionPlaylistNameRequired": "Çalma listesi adı zorunludur", + "@collectionPlaylistNameRequired": { + "description": "Validation error for empty playlist name" + }, + "collectionRenamePlaylist": "Çalma listesini yeniden adlandır", + "@collectionRenamePlaylist": { + "description": "Action to rename playlist" + }, + "collectionDeletePlaylist": "Çalma listesini sil", + "@collectionDeletePlaylist": { + "description": "Action to delete playlist" + }, + "collectionPlaylistRenamed": "Çalma listesinin adı değiştirildi", + "@collectionPlaylistRenamed": { + "description": "Snackbar after renaming playlist" + }, + "collectionWishlistEmptyTitle": "İstek listesi boş", + "@collectionWishlistEmptyTitle": { + "description": "Wishlist empty state title" + }, + "collectionWishlistEmptySubtitle": "Daha sonra indirmek istediğiniz parçaları kaydetmek için parçaların üzerine + işaretiyle dokunun", + "@collectionWishlistEmptySubtitle": { + "description": "Wishlist empty state subtitle" + }, + "collectionLovedEmptyTitle": "Sevilenler klasörü boş", + "@collectionLovedEmptyTitle": { + "description": "Loved empty state title" + }, + "collectionLovedEmptySubtitle": "Favorilerinizi kaydetmek için parçalara beğeni bırakın", + "@collectionLovedEmptySubtitle": { + "description": "Loved empty state subtitle" + }, + "collectionFavoriteArtistsEmptyTitle": "Henüz favori sanatçım yok", + "@collectionFavoriteArtistsEmptyTitle": { + "description": "Favorite artists empty state title" + }, + "collectionFavoriteArtistsEmptySubtitle": "Bir sanatçının sayfasındaki kalbe dokunarak onu burada tutmaya devam edin", + "@collectionFavoriteArtistsEmptySubtitle": { + "description": "Favorite artists empty state subtitle" + }, + "collectionPlaylistEmptyTitle": "Çalma listesi boş", + "@collectionPlaylistEmptyTitle": { + "description": "Playlist empty state title" + }, + "collectionPlaylistEmptySubtitle": "Buraya eklemek istediğiniz herhangi bir parçaya uzun süre basılı tutun +", + "@collectionPlaylistEmptySubtitle": { + "description": "Playlist empty state subtitle" + }, + "collectionRemoveFromPlaylist": "Remove from playlist", + "@collectionRemoveFromPlaylist": { + "description": "Tooltip for removing track from playlist" + }, + "collectionRemoveFromFolder": "Remove from folder", + "@collectionRemoveFromFolder": { + "description": "Tooltip for removing track from wishlist/loved folder" + }, + "collectionAddedToLoved": "\"{trackName}\" added to Loved", + "@collectionAddedToLoved": { + "description": "Snackbar after adding track to loved folder", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "collectionRemovedFromLoved": "\"{trackName}\" removed from Loved", + "@collectionRemovedFromLoved": { + "description": "Snackbar after removing track from loved folder", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "collectionAddedToWishlist": "\"{trackName}\" added to Wishlist", + "@collectionAddedToWishlist": { + "description": "Snackbar after adding track to wishlist", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "collectionRemovedFromWishlist": "\"{trackName}\" removed from Wishlist", + "@collectionRemovedFromWishlist": { + "description": "Snackbar after removing track from wishlist", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "collectionAddedToFavoriteArtists": "\"{artistName}\" added to Favorite Artists", + "@collectionAddedToFavoriteArtists": { + "description": "Snackbar after adding artist to favorite artists", + "placeholders": { + "artistName": { + "type": "String" + } + } + }, + "collectionRemovedFromFavoriteArtists": "\"{artistName}\" removed from Favorite Artists", + "@collectionRemovedFromFavoriteArtists": { + "description": "Snackbar after removing artist from favorite artists", + "placeholders": { + "artistName": { + "type": "String" + } + } + }, + "trackOptionAddToLoved": "Add to Loved", + "@trackOptionAddToLoved": { + "description": "Bottom sheet action label - add track to loved folder" + }, + "trackOptionRemoveFromLoved": "Remove from Loved", + "@trackOptionRemoveFromLoved": { + "description": "Bottom sheet action label - remove track from loved folder" + }, + "trackOptionAddToWishlist": "Add to Wishlist", + "@trackOptionAddToWishlist": { + "description": "Bottom sheet action label - add track to wishlist" + }, + "trackOptionRemoveFromWishlist": "Remove from Wishlist", + "@trackOptionRemoveFromWishlist": { + "description": "Bottom sheet action label - remove track from wishlist" + }, + "artistOptionAddToFavorites": "Add to Favorite Artists", + "@artistOptionAddToFavorites": { + "description": "Action label - add artist to favorite artists" + }, + "artistOptionRemoveFromFavorites": "Remove from Favorite Artists", + "@artistOptionRemoveFromFavorites": { + "description": "Action label - remove artist from favorite artists" + }, + "collectionPlaylistChangeCover": "Change cover image", + "@collectionPlaylistChangeCover": { + "description": "Bottom sheet action to pick a custom cover image for a playlist" + }, + "collectionPlaylistRemoveCover": "Remove cover image", + "@collectionPlaylistRemoveCover": { + "description": "Bottom sheet action to remove custom cover image from a playlist" + }, + "selectionShareCount": "Share {count} {count, plural, =1{track} other{tracks}}", + "@selectionShareCount": { + "description": "Share button text with count in selection mode", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "selectionShareNoFiles": "No shareable files found", + "@selectionShareNoFiles": { + "description": "Snackbar when no selected files exist on disk" + }, + "selectionConvertCount": "Convert {count} {count, plural, =1{track} other{tracks}}", + "@selectionConvertCount": { + "description": "Convert button text with count in selection mode", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "selectionConvertNoConvertible": "No convertible tracks selected", + "@selectionConvertNoConvertible": { + "description": "Snackbar when no selected tracks support conversion" + }, + "selectionBatchConvertConfirmTitle": "Batch Convert", + "@selectionBatchConvertConfirmTitle": { + "description": "Confirmation dialog title for batch conversion" + }, + "selectionBatchConvertConfirmMessage": "Convert {count} {count, plural, =1{track} other{tracks}} to {format} at {bitrate}?\n\nOriginal files will be deleted after conversion.", + "@selectionBatchConvertConfirmMessage": { + "description": "Confirmation dialog message for batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "selectionBatchConvertConfirmMessageLossless": "Convert {count} {count, plural, =1{track} other{tracks}} to {format}? (Lossless — no quality loss)\n\nOriginal files will be deleted after conversion.", + "@selectionBatchConvertConfirmMessageLossless": { + "description": "Confirmation dialog message for lossless batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + } + } + }, "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", @@ -5960,6 +3921,399 @@ } } }, + "selectionBatchConvertSuccess": "Converted {success} of {total} tracks to {format}", + "@selectionBatchConvertSuccess": { + "description": "Snackbar after batch conversion completes", + "placeholders": { + "success": { + "type": "int" + }, + "total": { + "type": "int" + }, + "format": { + "type": "String" + } + } + }, + "downloadedAlbumDownloadedCount": "{count} downloaded", + "@downloadedAlbumDownloadedCount": { + "description": "Downloaded tracks count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Folder named after Album Artist tag", + "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { + "description": "Subtitle when album artist is used for folder names" + }, + "downloadUseAlbumArtistForFoldersTrackSubtitle": "Folder named after Track Artist tag", + "@downloadUseAlbumArtistForFoldersTrackSubtitle": { + "description": "Subtitle when track artist is used for folder names" + }, + "lyricsProvidersTitle": "Lyrics Provider Priority", + "@lyricsProvidersTitle": { + "description": "Settings item title for lyrics provider order" + }, + "lyricsProvidersDescription": "Enable, disable and reorder lyrics sources. Providers are tried top-to-bottom until lyrics are found.", + "@lyricsProvidersDescription": { + "description": "Description on the lyrics provider priority page" + }, + "lyricsProvidersInfoText": "Extension lyrics providers run before built-in lyrics providers. At least one provider must remain enabled.", + "@lyricsProvidersInfoText": { + "description": "Info tip on lyrics provider priority page" + }, + "lyricsProvidersEnabledSection": "Enabled ({count})", + "@lyricsProvidersEnabledSection": { + "description": "Section header for enabled providers", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "lyricsProvidersDisabledSection": "Disabled ({count})", + "@lyricsProvidersDisabledSection": { + "description": "Section header for disabled providers", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "lyricsProvidersAtLeastOne": "At least one provider must remain enabled", + "@lyricsProvidersAtLeastOne": { + "description": "Snackbar when user tries to disable the last enabled provider" + }, + "lyricsProvidersSaved": "Lyrics provider priority saved", + "@lyricsProvidersSaved": { + "description": "Snackbar after saving lyrics provider priority" + }, + "lyricsProvidersDiscardContent": "You have unsaved changes that will be lost.", + "@lyricsProvidersDiscardContent": { + "description": "Body text of the discard-changes dialog on lyrics provider page" + }, + "lyricsProviderLrclibDesc": "Open-source synced lyrics database", + "@lyricsProviderLrclibDesc": { + "description": "Description for LRCLIB provider" + }, + "lyricsProviderNeteaseDesc": "NetEase Cloud Music (good for Asian songs)", + "@lyricsProviderNeteaseDesc": { + "description": "Description for Netease provider" + }, + "lyricsProviderMusixmatchDesc": "Largest lyrics database (multi-language)", + "@lyricsProviderMusixmatchDesc": { + "description": "Description for Musixmatch provider" + }, + "lyricsProviderAppleMusicDesc": "Word-by-word synced lyrics (via proxy)", + "@lyricsProviderAppleMusicDesc": { + "description": "Description for Apple Music provider" + }, + "lyricsProviderQqMusicDesc": "QQ Music (good for Chinese songs, direct API)", + "@lyricsProviderQqMusicDesc": { + "description": "Description for QQ Music provider" + }, + "lyricsProviderLyricsPlusDesc": "Word-by-word karaoke lyrics (Apple/Musixmatch/Spotify/QQ, via proxy)", + "@lyricsProviderLyricsPlusDesc": { + "description": "Description for LyricsPlus provider" + }, + "lyricsProviderExtensionDesc": "Extension provider", + "@lyricsProviderExtensionDesc": { + "description": "Generic description for extension-based lyrics providers" + }, + "safMigrationTitle": "Storage Update Required", + "@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": { + "description": "First paragraph of SAF migration dialog" + }, + "safMigrationMessage2": "Please select your download folder again to switch to the new storage system.", + "@safMigrationMessage2": { + "description": "Second paragraph of SAF migration dialog" + }, + "safMigrationSuccess": "Download folder updated to SAF mode", + "@safMigrationSuccess": { + "description": "Snackbar after successfully migrating to SAF" + }, + "settingsDonate": "Support Development", + "@settingsDonate": { + "description": "Settings menu item - donate page" + }, + "settingsDonateSubtitle": "Buy the developer a coffee", + "@settingsDonateSubtitle": { + "description": "Subtitle for donate menu item" + }, + "settingsBackup": "Backup & Restore", + "@settingsBackup": { + "description": "Settings menu item - backup and restore page" + }, + "settingsBackupSubtitle": "Move your library, history and settings to a new device", + "@settingsBackupSubtitle": { + "description": "Subtitle for backup and restore settings item" + }, + "backupTitle": "Backup & Restore", + "@backupTitle": { + "description": "App bar title for the backup and restore page" + }, + "backupExportSectionTitle": "Create backup", + "@backupExportSectionTitle": { + "description": "Section title for the export/backup card" + }, + "backupExportSectionDescription": "Save your settings, download history, liked tracks, wishlist, favorite artists and playlists into a single file you can keep or move to another phone.", + "@backupExportSectionDescription": { + "description": "Description of what a backup contains" + }, + "backupExportButton": "Create backup file", + "@backupExportButton": { + "description": "Button to create and share a backup file" + }, + "backupImportSectionTitle": "Restore backup", + "@backupImportSectionTitle": { + "description": "Section title for the import/restore card" + }, + "backupImportSectionDescription": "Pick a backup file to restore your data. This replaces the current settings, history and library on this device.", + "@backupImportSectionDescription": { + "description": "Description for the restore action" + }, + "backupImportButton": "Choose backup file", + "@backupImportButton": { + "description": "Button to pick a backup file to restore" + }, + "backupCreated": "Backup created", + "@backupCreated": { + "description": "Snackbar after a backup file is created" + }, + "backupCreateFailed": "Failed to create backup", + "@backupCreateFailed": { + "description": "Snackbar when backup creation fails" + }, + "backupRestoreConfirmTitle": "Restore this backup?", + "@backupRestoreConfirmTitle": { + "description": "Confirmation dialog title before restoring a backup" + }, + "backupRestoreConfirmMessage": "This will replace your current settings, download history, liked tracks, wishlist and playlists with the contents of the backup. This cannot be undone.", + "@backupRestoreConfirmMessage": { + "description": "Confirmation dialog message before restoring a backup" + }, + "backupRestoreConfirmButton": "Restore", + "@backupRestoreConfirmButton": { + "description": "Confirm button to proceed with restore" + }, + "backupRestored": "Backup restored successfully", + "@backupRestored": { + "description": "Snackbar after a successful restore" + }, + "backupRestoreFailed": "Failed to restore backup", + "@backupRestoreFailed": { + "description": "Snackbar when restore fails" + }, + "backupInvalidFile": "This file is not a valid SpotiFLAC backup", + "@backupInvalidFile": { + "description": "Snackbar when the chosen file is not a valid backup" + }, + "backupRestoreRestartHint": "Restart the app to make sure every change is applied.", + "@backupRestoreRestartHint": { + "description": "Hint shown after restoring that an app restart is recommended" + }, + "backupContentsTitle": "Backup contents", + "@backupContentsTitle": { + "description": "Header above the list summarizing what the backup contains" + }, + "backupSettingsOnly": "Settings only", + "backupSelectHistory": "Download history", + "backupSelectCollections": "Library collections", + "backupSelectCollectionsDescription": "Liked tracks, wishlist, favorite artists, playlists and playlist covers.", + "backupSelectExtensions": "Extensions and their settings", + "backupSelectedExportDescription": "Save the selected categories to a backup file. Audio files are not included.", + "backupSelectAtLeastOne": "Select at least one category to create a backup.", + "backupSelectedRestoreMessage": "Only the categories listed below will be restored. Categories not included in this backup will stay unchanged. Restoring can replace existing data and cannot be undone.", + "backupContentsSettings": "App settings", + "@backupContentsSettings": { + "description": "Backup contents row label for settings" + }, + "backupContentsHistory": "{count} history {count, plural, =1{item} other{items}}", + "@backupContentsHistory": { + "description": "Backup contents row for history count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsLiked": "{count} liked {count, plural, =1{track} other{tracks}}", + "@backupContentsLiked": { + "description": "Backup contents row for liked tracks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsWishlist": "{count} wishlist {count, plural, =1{track} other{tracks}}", + "@backupContentsWishlist": { + "description": "Backup contents row for wishlist tracks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsPlaylists": "{count, plural, =1{1 playlist} other{{count} playlists}}", + "@backupContentsPlaylists": { + "description": "Backup contents row for playlist count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsArtists": "{count, plural, =1{1 favorite artist} other{{count} favorite artists}}", + "@backupContentsArtists": { + "description": "Backup contents row for favorite artists count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsExtensions": "{count, plural, =1{1 extension} other{{count} extensions}}", + "@backupContentsExtensions": { + "description": "Backup contents row for installed extensions count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupIncludeSecrets": "Include extension credentials", + "@backupIncludeSecrets": { + "description": "Toggle to include secret extension settings (tokens, API keys) in the backup" + }, + "backupIncludeSecretsDescription": "Tokens and API keys from extensions will be saved into the backup file. Keep the file private. When off, you re-enter them after restoring.", + "@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 repo.", + "@backupExtensionsRestoreFailed": { + "description": "Snackbar/hint when some extensions failed to reinstall during restore", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "tooltipLoveAll": "Love All", + "@tooltipLoveAll": { + "description": "Tooltip for the Love All button on album/playlist screens" + }, + "tooltipAddToPlaylist": "Çalma listesine ekle", + "@tooltipAddToPlaylist": { + "description": "Tooltip for the Add to Playlist button" + }, + "snackbarRemovedTracksFromLoved": "Sevilen albümünden {count} parça kaldırıldı", + "@snackbarRemovedTracksFromLoved": { + "description": "Snackbar after removing multiple tracks from Loved folder", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarAddedTracksToLoved": "Sevilen'e {count} parça eklendi", + "@snackbarAddedTracksToLoved": { + "description": "Snackbar after adding multiple tracks to Loved folder", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dialogDownloadAllTitle": "Tümünü İndir", + "@dialogDownloadAllTitle": { + "description": "Dialog title for bulk download confirmation" + }, + "dialogDownloadAllMessage": "{count} parça indirilsin mi?", + "@dialogDownloadAllMessage": { + "description": "Body of the Download All confirmation dialog", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "homeSkipAlreadyDownloaded": "Daha önce indirilmiş şarkıları atla", + "@homeSkipAlreadyDownloaded": { + "description": "Checkbox label in import dialog to skip already-downloaded songs" + }, + "homeGoToAlbum": "Albüme Git", + "@homeGoToAlbum": { + "description": "Context menu item to navigate to the album page" + }, + "homeAlbumInfoUnavailable": "Albüm bilgisi mevcut değil", + "@homeAlbumInfoUnavailable": { + "description": "Snackbar when album info cannot be loaded" + }, + "snackbarLoadingCueSheet": "CUE sayfası yükleniyor...", + "@snackbarLoadingCueSheet": { + "description": "Snackbar while loading a CUE sheet file" + }, + "snackbarMetadataSaved": "Meta veriler başarıyla kaydedildi", + "@snackbarMetadataSaved": { + "description": "Snackbar after successfully saving track metadata" + }, + "snackbarFailedToEmbedLyrics": "Şarkı sözleri eklenemedi", + "@snackbarFailedToEmbedLyrics": { + "description": "Snackbar when lyrics embedding fails" + }, + "snackbarFailedToWriteStorage": "Depolama alanına geri yazma işlemi başarısız oldu", + "@snackbarFailedToWriteStorage": { + "description": "Snackbar when writing metadata back to file fails" + }, + "snackbarError": "Hata: {error}", + "@snackbarError": { + "description": "Generic error snackbar with error detail", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "snackbarNoActionDefined": "Bu düğme için tanımlanmış bir işlem yok", + "@snackbarNoActionDefined": { + "description": "Snackbar when an extension button has no action configured" + }, + "noTracksFoundForAlbum": "Bu albüm için hiçbir parça bulunamadı", + "@noTracksFoundForAlbum": { + "description": "Empty state message when an album has no tracks" + }, + "downloadLocationSubtitle": "İndirdiğiniz parçaları nereye kaydedeceğinizi seçin", + "@downloadLocationSubtitle": { + "description": "Subtitle shown in the download location picker sheet" + }, + "storageAutomaticFolder": "Automatic folder", + "storageAutomaticDownloadFolder": "Uses Download/SpotiFLAC when writable, otherwise app storage", + "storageSafRecommended": "Choose folder (Recommended)", + "storageDownloadFolderHint": "In the Android folder picker, open Download and select SpotiFLAC. If it does not exist, create it using New folder, then tap Use this folder to grant access.", + "storageModeAppFolder": "Uygulama Klasörü (Önerilir)", + "@storageModeAppFolder": { + "description": "Storage mode option - app-managed folder" + }, + "storageModeAppFolderSubtitle": "Varsayılan olarak Müzik/SpotiFLAC klasörüne kaydeder", + "@storageModeAppFolderSubtitle": { + "description": "Subtitle for app folder storage mode" + }, + "storageModeSaf": "Özel Klasör (SAF)", + "@storageModeSaf": { + "description": "Storage mode option - Storage Access Framework" + }, + "storageModeSafSubtitle": "SD kart dahil herhangi bir klasörü seçin", + "@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" @@ -5980,6 +4334,812 @@ "@downloadErrorFolderAccessLost": { "description": "Error shown on downloads that failed because the iOS download folder bookmark could not be opened" }, + "downloadFilenameDescription": "Yer tutucu olarak {artist}, {title}, {album}, {track}, {year}, {date}, {disc} ifadelerini kullanın.", + "@downloadFilenameDescription": { + "description": "Description shown in filename format editor" + }, + "downloadFilenameInsertTag": "Etiket eklemek için dokunun:", + "@downloadFilenameInsertTag": { + "description": "Label above filename tag chips" + }, + "downloadSeparateSinglesEnabled": "Single şarkılar ve EP'ler ayrı bir klasöre kaydedildi", + "@downloadSeparateSinglesEnabled": { + "description": "Subtitle when separate singles folder is on" + }, + "downloadSeparateSinglesDisabled": "Singles and albums saved in the same folder", + "@downloadSeparateSinglesDisabled": { + "description": "Subtitle when separate singles folder is off" + }, + "downloadArtistNameFilters": "Artist Name Filters", + "@downloadArtistNameFilters": { + "description": "Setting title for artist folder filter options" + }, + "downloadCreatePlaylistSourceFolder": "Playlist Source Folder", + "@downloadCreatePlaylistSourceFolder": { + "description": "Setting to create a subfolder per playlist source" + }, + "downloadCreatePlaylistSourceFolderEnabled": "A subfolder is created for each playlist", + "@downloadCreatePlaylistSourceFolderEnabled": { + "description": "Subtitle when playlist folder is enabled" + }, + "downloadCreatePlaylistSourceFolderDisabled": "All tracks saved directly to download folder", + "@downloadCreatePlaylistSourceFolderDisabled": { + "description": "Subtitle when playlist folder is disabled" + }, + "downloadCreatePlaylistSourceFolderRedundant": "Handled by folder organization setting", + "@downloadCreatePlaylistSourceFolderRedundant": { + "description": "Subtitle when folder organization is already set to playlist" + }, + "downloadSongLinkRegion": "SongLink Region", + "@downloadSongLinkRegion": { + "description": "Setting for SongLink region used during fallback resolution" + }, + "downloadNetworkCompatibilityMode": "Network Compatibility Mode", + "@downloadNetworkCompatibilityMode": { + "description": "Setting for legacy TLS/network handling" + }, + "downloadNetworkCompatibilityModeEnabled": "Allowing legacy HTTP endpoints; TLS verification remains enabled", + "@downloadNetworkCompatibilityModeEnabled": { + "description": "Subtitle when network compatibility mode is on" + }, + "downloadNetworkCompatibilityModeDisabled": "Using standard network settings", + "@downloadNetworkCompatibilityModeDisabled": { + "description": "Subtitle when network compatibility mode is off" + }, + "downloadAllowLocalNetwork": "Allow Local Network Access", + "@downloadAllowLocalNetwork": { + "description": "Setting title for allowing requests to private/local network targets" + }, + "downloadAllowLocalNetworkEnabled": "Requests to local/private addresses are allowed (for local proxy or custom DNS)", + "@downloadAllowLocalNetworkEnabled": { + "description": "Subtitle when allow local network access is on" + }, + "downloadAllowLocalNetworkDisabled": "Local/private addresses are blocked for security", + "@downloadAllowLocalNetworkDisabled": { + "description": "Subtitle when allow local network access is off" + }, + "downloadSelectServiceToEnable": "Select a provider with quality options to enable this option", + "@downloadSelectServiceToEnable": { + "description": "Subtitle when quality picker is disabled due to extension service" + }, + "downloadEmbedLyricsDisabled": "Enable metadata embedding first", + "@downloadEmbedLyricsDisabled": { + "description": "Subtitle when lyrics embedding is blocked by metadata toggle" + }, + "downloadNeteaseIncludeTranslation": "Netease: Include Translation", + "@downloadNeteaseIncludeTranslation": { + "description": "Setting to include translated lyrics from Netease" + }, + "downloadNeteaseIncludeTranslationEnabled": "Chinese translation lines included", + "@downloadNeteaseIncludeTranslationEnabled": { + "description": "Subtitle when Netease translation is on" + }, + "downloadNeteaseIncludeTranslationDisabled": "Original lyrics only", + "@downloadNeteaseIncludeTranslationDisabled": { + "description": "Subtitle when Netease translation is off" + }, + "downloadNeteaseIncludeRomanization": "Netease: Include Romanization", + "@downloadNeteaseIncludeRomanization": { + "description": "Setting to include romanized lyrics from Netease" + }, + "downloadNeteaseIncludeRomanizationEnabled": "Romanization lines included", + "@downloadNeteaseIncludeRomanizationEnabled": { + "description": "Subtitle when Netease romanization is on" + }, + "downloadNeteaseIncludeRomanizationDisabled": "No romanization", + "@downloadNeteaseIncludeRomanizationDisabled": { + "description": "Subtitle when Netease romanization is off" + }, + "downloadAppleQqMultiPerson": "Apple / QQ: Multi-Person Lyrics", + "@downloadAppleQqMultiPerson": { + "description": "Setting for word-by-word multi-person lyrics from Apple Music and QQ Music" + }, + "downloadAppleQqMultiPersonEnabled": "Speaker labels included for duets and group tracks", + "@downloadAppleQqMultiPersonEnabled": { + "description": "Subtitle when multi-person lyrics is on" + }, + "downloadAppleQqMultiPersonDisabled": "Standard lyrics without speaker labels", + "@downloadAppleQqMultiPersonDisabled": { + "description": "Subtitle when multi-person lyrics is off" + }, + "downloadAppleElrcWordSync": "Apple Music eLRC Word Sync", + "@downloadAppleElrcWordSync": { + "description": "Setting for preserving Apple Music word-by-word eLRC timestamps" + }, + "downloadAppleElrcWordSyncEnabled": "Raw word-by-word timestamps preserved", + "@downloadAppleElrcWordSyncEnabled": { + "description": "Subtitle when Apple Music eLRC word sync is enabled" + }, + "downloadAppleElrcWordSyncDisabled": "Safer line-by-line Apple Music lyrics", + "@downloadAppleElrcWordSyncDisabled": { + "description": "Subtitle when Apple Music eLRC word sync is disabled" + }, + "downloadMusixmatchLanguage": "Musixmatch Language", + "@downloadMusixmatchLanguage": { + "description": "Setting for Musixmatch lyrics translation language" + }, + "downloadMusixmatchLanguageAuto": "Auto (original language)", + "@downloadMusixmatchLanguageAuto": { + "description": "Subtitle when no language is set" + }, + "downloadFilterContributing": "Filter Contributing Artists", + "@downloadFilterContributing": { + "description": "Setting to strip contributing artists from Album Artist folder name" + }, + "downloadFilterContributingEnabled": "Contributing artists removed from Album Artist folder name", + "@downloadFilterContributingEnabled": { + "description": "Subtitle when contributing artist filter is on" + }, + "downloadFilterContributingDisabled": "Full Album Artist string used", + "@downloadFilterContributingDisabled": { + "description": "Subtitle when contributing artist filter is off" + }, + "downloadProvidersNoneEnabled": "No providers enabled", + "@downloadProvidersNoneEnabled": { + "description": "Shown when no lyrics providers are active" + }, + "downloadMusixmatchLanguageCode": "Language code", + "@downloadMusixmatchLanguageCode": { + "description": "Label for Musixmatch language input field" + }, + "downloadMusixmatchLanguageHint": "e.g. en, de, ja", + "@downloadMusixmatchLanguageHint": { + "description": "Placeholder for Musixmatch language input" + }, + "downloadMusixmatchLanguageDesc": "Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.", + "@downloadMusixmatchLanguageDesc": { + "description": "Description in Musixmatch language picker" + }, + "downloadMusixmatchAuto": "Auto", + "@downloadMusixmatchAuto": { + "description": "Button to clear Musixmatch language (use auto)" + }, + "downloadNetworkAnySubtitle": "Use WiFi or mobile data", + "@downloadNetworkAnySubtitle": { + "description": "Subtitle for any-network option in picker" + }, + "downloadNetworkWifiOnlySubtitle": "Downloads pause when on mobile data", + "@downloadNetworkWifiOnlySubtitle": { + "description": "Subtitle for WiFi-only option in picker" + }, + "downloadSongLinkRegionDesc": "Region used when resolving track links via SongLink. Choose the country where your streaming services are available.", + "@downloadSongLinkRegionDesc": { + "description": "Description in SongLink region picker" + }, + "snackbarUnsupportedAudioFormat": "Unsupported audio format", + "@snackbarUnsupportedAudioFormat": { + "description": "Snackbar when the audio format is not supported for the requested operation" + }, + "cacheRefresh": "Yenile", + "@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": { + "description": "Dialog message for bulk playlist download confirmation", + "placeholders": { + "trackCount": { + "type": "int" + }, + "playlistCount": { + "type": "int" + } + } + }, + "bulkDownloadPlaylistsButton": "Download {count} {count, plural, =1{playlist} other{playlists}}", + "@bulkDownloadPlaylistsButton": { + "description": "Button label for bulk downloading selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "bulkDownloadSelectPlaylists": "Select playlists to download", + "@bulkDownloadSelectPlaylists": { + "description": "Button label when no playlists are selected for download" + }, + "snackbarSelectedPlaylistsEmpty": "Selected playlists have no tracks", + "@snackbarSelectedPlaylistsEmpty": { + "description": "Snackbar when selected playlists contain no tracks" + }, + "playlistsCount": "{count, plural, =1{1 playlist} other{{count} playlists}}", + "@playlistsCount": { + "description": "Playlist count display", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "editMetadataAutoFill": "Auto-fill from online", + "@editMetadataAutoFill": { + "description": "Section title for selective online metadata auto-fill in the edit metadata sheet" + }, + "editMetadataAutoFillDesc": "Choose a metadata extension, select fields, then review its data before applying", + "@editMetadataAutoFillDesc": { + "description": "Description for the auto-fill section" + }, + "editMetadataAutoFillSource": "Metadata source", + "@editMetadataAutoFillSource": { + "description": "Label for the metadata extension selector in online auto-fill" + }, + "editMetadataAutoFillSourceAutomatic": "Automatic (provider priority)", + "@editMetadataAutoFillSourceAutomatic": { + "description": "Automatic source option that follows configured metadata provider priority" + }, + "editMetadataAutoFillFind": "Find metadata", + "@editMetadataAutoFillFind": { + "description": "Button label for finding an online metadata candidate" + }, + "editMetadataAutoFillPreview": "Data from {source}", + "@editMetadataAutoFillPreview": { + "description": "Title for the online metadata preview", + "placeholders": { + "source": { + "type": "String" + } + } + }, + "editMetadataAutoFillCoverAvailable": "Cover artwork available", + "@editMetadataAutoFillCoverAvailable": { + "description": "Preview value when the selected metadata source provides cover artwork" + }, + "editMetadataAutoFillApply": "Apply selected data", + "@editMetadataAutoFillApply": { + "description": "Button label for applying the previewed metadata" + }, + "editMetadataAutoFillDoneFromSource": "Filled {count} {count, plural, =1{field} other{fields}} from {source}", + "@editMetadataAutoFillDoneFromSource": { + "description": "Snackbar confirming fields applied from a selected metadata source", + "placeholders": { + "count": { + "type": "int" + }, + "source": { + "type": "String" + } + } + }, + "editMetadataAutoFillFetch": "Fetch & Fill", + "@editMetadataAutoFillFetch": { + "description": "Button label to fetch online metadata and fill selected fields" + }, + "editMetadataAutoFillSearching": "Searching online...", + "@editMetadataAutoFillSearching": { + "description": "Snackbar shown while searching for online metadata" + }, + "editMetadataAutoFillNoResults": "No matching metadata found online", + "@editMetadataAutoFillNoResults": { + "description": "Snackbar when online metadata search returns no results" + }, + "editMetadataAutoFillDone": "Filled {count} {count, plural, =1{field} other{fields}} from online metadata", + "@editMetadataAutoFillDone": { + "description": "Snackbar confirming how many fields were auto-filled", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "editMetadataAutoFillNoneSelected": "Select at least one field to auto-fill", + "@editMetadataAutoFillNoneSelected": { + "description": "Snackbar when user taps Fetch without selecting any fields" + }, + "editMetadataFieldTitle": "Başlık", + "@editMetadataFieldTitle": { + "description": "Chip label for title field in auto-fill selector" + }, + "editMetadataFieldArtist": "Artist", + "@editMetadataFieldArtist": { + "description": "Chip label for artist field in auto-fill selector" + }, + "editMetadataFieldAlbum": "Album", + "@editMetadataFieldAlbum": { + "description": "Chip label for album field in auto-fill selector" + }, + "editMetadataFieldAlbumArtist": "Album Artist", + "@editMetadataFieldAlbumArtist": { + "description": "Chip label for album artist field in auto-fill selector" + }, + "editMetadataFieldDate": "Date", + "@editMetadataFieldDate": { + "description": "Chip label for date field in auto-fill selector" + }, + "editMetadataFieldTrackNum": "Track #", + "@editMetadataFieldTrackNum": { + "description": "Chip label for track number field in auto-fill selector" + }, + "editMetadataFieldDiscNum": "Disc #", + "@editMetadataFieldDiscNum": { + "description": "Chip label for disc number field in auto-fill selector" + }, + "editMetadataFieldGenre": "Genre", + "@editMetadataFieldGenre": { + "description": "Chip label for genre field in auto-fill selector" + }, + "editMetadataFieldIsrc": "ISRC", + "@editMetadataFieldIsrc": { + "description": "Chip label for ISRC field in auto-fill selector" + }, + "editMetadataFieldLabel": "Label", + "@editMetadataFieldLabel": { + "description": "Chip label for label field in auto-fill selector" + }, + "editMetadataFieldCopyright": "Copyright", + "@editMetadataFieldCopyright": { + "description": "Chip label for copyright field in auto-fill selector" + }, + "editMetadataFieldCover": "Cover Art", + "@editMetadataFieldCover": { + "description": "Chip label for cover art field in auto-fill selector" + }, + "editMetadataSelectAll": "All", + "@editMetadataSelectAll": { + "description": "Button to select all fields for auto-fill" + }, + "editMetadataSelectEmpty": "Empty only", + "@editMetadataSelectEmpty": { + "description": "Button to select only fields that are currently empty" + }, + "queueDownloadingCount": "Downloading ({count})", + "@queueDownloadingCount": { + "description": "Header for active downloads section with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueFilteringIndicator": "Filtering...", + "@queueFilteringIndicator": { + "description": "Shown while filter results are being computed" + }, + "queueTrackCount": "{count, plural, =1{1 track} other{{count} tracks}}", + "@queueTrackCount": { + "description": "Track count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueAlbumCount": "{count, plural, =1{1 album} other{{count} albums}}", + "@queueAlbumCount": { + "description": "Album count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueEmptyAlbums": "No album downloads", + "@queueEmptyAlbums": { + "description": "Empty state title when no album downloads exist" + }, + "queueEmptyAlbumsSubtitle": "Download multiple tracks from an album to see them here", + "@queueEmptyAlbumsSubtitle": { + "description": "Empty state subtitle for album downloads" + }, + "queueEmptySingles": "No single downloads", + "@queueEmptySingles": { + "description": "Empty state title when no single track downloads exist" + }, + "queueEmptySinglesSubtitle": "Single track downloads will appear here", + "@queueEmptySinglesSubtitle": { + "description": "Empty state subtitle for single track downloads" + }, + "queuePlaylistCount": "{count, plural, =1{1 playlist} other{{count} playlists}}", + "@queuePlaylistCount": { + "description": "Playlist count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueEmptyPlaylistsSubtitle": "Create a playlist to organize your tracks", + "@queueEmptyPlaylistsSubtitle": { + "description": "Empty state subtitle for the playlists library view" + }, + "libraryDefaultView": "Default view", + "@libraryDefaultView": { + "description": "Setting title - which library view opens when switching to the Library tab" + }, + "libraryDefaultViewLastUsed": "Last used", + "@libraryDefaultViewLastUsed": { + "description": "Default view option - keep the last used library view" + }, + "queueEmptyHistory": "No download history", + "@queueEmptyHistory": { + "description": "Empty state title when download history is empty" + }, + "queueEmptyHistorySubtitle": "Downloaded tracks will appear here", + "@queueEmptyHistorySubtitle": { + "description": "Empty state subtitle for download history" + }, + "selectionAllPlaylistsSelected": "All playlists selected", + "@selectionAllPlaylistsSelected": { + "description": "Shown when all playlists are selected in selection mode" + }, + "selectionTapPlaylistsToSelect": "Tap playlists to select", + "@selectionTapPlaylistsToSelect": { + "description": "Hint shown in playlist selection mode" + }, + "selectionSelectPlaylistsToDelete": "Select playlists to delete", + "@selectionSelectPlaylistsToDelete": { + "description": "Hint shown when no playlists are selected for deletion" + }, + "audioAnalysisTitle": "Audio Quality Analysis", + "@audioAnalysisTitle": { + "description": "Title for audio analysis section" + }, + "audioAnalysisDescription": "Verify lossless quality with spectrum analysis", + "@audioAnalysisDescription": { + "description": "Description for audio analysis tap-to-analyze prompt" + }, + "audioAnalysisAnalyzing": "Analyzing audio...", + "@audioAnalysisAnalyzing": { + "description": "Loading text while analyzing audio" + }, + "audioAnalysisSampleRate": "Sample Rate", + "@audioAnalysisSampleRate": { + "description": "Sample rate metric label" + }, + "audioAnalysisCodec": "Codec", + "@audioAnalysisCodec": { + "description": "Audio codec metric label" + }, + "audioAnalysisContainer": "Container", + "@audioAnalysisContainer": { + "description": "Audio container metric label" + }, + "audioAnalysisDecodedFormat": "Decoded Format", + "@audioAnalysisDecodedFormat": { + "description": "Decoded sample format metric label" + }, + "audioAnalysisBitDepth": "Bit Depth", + "@audioAnalysisBitDepth": { + "description": "Bit depth metric label" + }, + "audioAnalysisChannels": "Channels", + "@audioAnalysisChannels": { + "description": "Channels metric label" + }, + "audioAnalysisDuration": "Duration", + "@audioAnalysisDuration": { + "description": "Duration metric label" + }, + "audioAnalysisNyquist": "Nyquist", + "@audioAnalysisNyquist": { + "description": "Nyquist frequency metric label" + }, + "audioAnalysisFileSize": "Size", + "@audioAnalysisFileSize": { + "description": "File size metric label" + }, + "audioAnalysisDynamicRange": "Dynamic Range", + "@audioAnalysisDynamicRange": { + "description": "Dynamic range metric label" + }, + "audioAnalysisPeak": "Peak", + "@audioAnalysisPeak": { + "description": "Peak amplitude metric label" + }, + "audioAnalysisRms": "RMS", + "@audioAnalysisRms": { + "description": "RMS level metric label" + }, + "audioAnalysisLufs": "LUFS", + "@audioAnalysisLufs": { + "description": "Integrated loudness metric label" + }, + "audioAnalysisTruePeak": "True Peak", + "@audioAnalysisTruePeak": { + "description": "True peak metric label" + }, + "audioAnalysisClipping": "Clipping", + "@audioAnalysisClipping": { + "description": "Clipping metric label" + }, + "audioAnalysisNoClipping": "No clipping", + "@audioAnalysisNoClipping": { + "description": "Displayed when no clipped samples were detected" + }, + "audioAnalysisSpectralCutoff": "Spectral Cutoff", + "@audioAnalysisSpectralCutoff": { + "description": "Estimated spectral cutoff metric label" + }, + "audioAnalysisCutoffNotDetected": "Not detected", + "@audioAnalysisCutoffNotDetected": { + "description": "Displayed when no reliable broadband spectral cutoff can be detected" + }, + "audioAnalysisChannelStats": "Per-channel Stats", + "@audioAnalysisChannelStats": { + "description": "Per-channel audio analysis section label" + }, + "audioAnalysisSamples": "Samples", + "@audioAnalysisSamples": { + "description": "Total samples metric label" + }, + "audioAnalysisRescan": "Re-analyze", + "@audioAnalysisRescan": { + "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" + }, + "downloadRedownloadFakeHiRes": "Re-download fake Hi-Res", + "@downloadRedownloadFakeHiRes": { + "description": "Setting title: automatically replace downloads that measure as fake Hi-Res" + }, + "downloadRedownloadFakeHiResSubtitle": "Off by default. Check Hi-Res downloads and replace only when every audio sample is preserved. Keep the original if verification or processing fails", + "@downloadRedownloadFakeHiResSubtitle": { + "description": "Setting subtitle for the fake Hi-Res re-download toggle" + }, + "hiResCheckVerdictFakeCertain": "Fake Hi-Res", + "@hiResCheckVerdictFakeCertain": { + "description": "Verdict: an exact fingerprint (padded bits or upsampling pattern) proves the file is not real Hi-Res" + }, + "hiResCheckVerdictFakeSuspect": "Possibly a filtered master", + "@hiResCheckVerdictFakeSuspect": { + "description": "Verdict: fails the cutoff test but may be a genuine master low-pass filtered in mastering" + }, + "hiResCheckReasonSampleHold": "Every sample is repeated: upsampled by duplication", + "@hiResCheckReasonSampleHold": { + "description": "Reason: sample-and-hold upsampling detected" + }, + "hiResCheckReasonInterpolation": "In-between samples are linearly interpolated", + "@hiResCheckReasonInterpolation": { + "description": "Reason: linear-interpolation upsampling detected" + }, + "hiResCheckReasonImaging": "Content above 22 kHz mirrors the audible band", + "@hiResCheckReasonImaging": { + "description": "Reason: spectral imaging from upsampling detected" + }, + "hiResCheckMusicContent": "Musical content", + "@hiResCheckMusicContent": { + "description": "Label for the highest frequency that still moves with the music" + }, + "hiResCheckUltrasonicNoise": "Above {cutoff} only steady noise (typical of DSD or analog tape transfers): a {rate} file would hold all the music", + "@hiResCheckUltrasonicNoise": { + "description": "Shown when the ultrasonic content of a Hi-Res file is noise rather than music", + "placeholders": { + "cutoff": { + "type": "String" + }, + "rate": { + "type": "String" + } + } + }, + "hiResCheckTitle": "Hi-Res Authenticity", + "@hiResCheckTitle": { + "description": "Title of the fake Hi-Res check card" + }, + "hiResCheckDescription": "Detect upsampled or bit-padded fake Hi-Res files", + "@hiResCheckDescription": { + "description": "Explains what the Hi-Res authenticity check does" + }, + "hiResCheckRun": "Check", + "@hiResCheckRun": { + "description": "Button that starts the Hi-Res authenticity check" + }, + "hiResCheckChecking": "Checking Hi-Res authenticity...", + "@hiResCheckChecking": { + "description": "Loading text while the Hi-Res check runs" + }, + "hiResCheckVerdictFake": "Likely fake Hi-Res", + "@hiResCheckVerdictFake": { + "description": "Verdict: the file claims Hi-Res but does not measure as it" + }, + "hiResCheckVerdictGenuine": "Measures as genuine Hi-Res", + "@hiResCheckVerdictGenuine": { + "description": "Verdict: no upsampling or padded bit depth found" + }, + "hiResCheckVerdictStandard": "Standard definition, nothing to flag", + "@hiResCheckVerdictStandard": { + "description": "Verdict: neither sample rate nor bit depth claims Hi-Res" + }, + "hiResCheckVerdictInconclusive": "Inconclusive: the analyzed segment is too quiet or short", + "@hiResCheckVerdictInconclusive": { + "description": "Verdict: analysis could not reach a reliable conclusion" + }, + "hiResCheckUnsupported": "Only FLAC and WAV files can be checked", + "@hiResCheckUnsupported": { + "description": "Shown when the file format cannot be decoded by the Hi-Res check" + }, + "hiResCheckCutoff": "Content cutoff", + "@hiResCheckCutoff": { + "description": "Label for the highest frequency with real content" + }, + "hiResCheckBitsInUse": "Bits in use", + "@hiResCheckBitsInUse": { + "description": "Label for effective vs declared bit depth" + }, + "hiResCheckDisclaimer": "The spectrum stops early, but nothing proves it was upsampled: it may be a genuine master low-pass filtered in mastering. It is not replaced automatically.", + "@hiResCheckDisclaimer": { + "description": "Caveat shown under a fake Hi-Res verdict" + }, + "hiResCheckFailed": "Hi-Res check failed: {error}", + "@hiResCheckFailed": { + "description": "Error shown when the Hi-Res check fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "hiResCheckReasonRate": "Declares {sampleRate} but content stops at ~{cutoff}", + "@hiResCheckReasonRate": { + "description": "Reason for a fake verdict caused by upsampling", + "placeholders": { + "sampleRate": { + "type": "String" + }, + "cutoff": { + "type": "String" + } + } + }, + "hiResCheckReasonDepth": "Declares {declared}-bit but only {effective} bits carry data", + "@hiResCheckReasonDepth": { + "description": "Reason for a fake verdict caused by padded bit depth", + "placeholders": { + "declared": { + "type": "int" + }, + "effective": { + "type": "int" + } + } + }, + "audioAnalysisRescanning": "Re-analyzing audio...", + "@audioAnalysisRescanning": { + "description": "Loading text while audio is being re-analyzed after an explicit refresh" + }, + "extensionsHomeFeedProvider": "Home Feed Provider", + "@extensionsHomeFeedProvider": { + "description": "Extensions page - label for home feed provider selector" + }, + "extensionsHomeFeedDescription": "Choose which extension provides the home feed on the main screen", + "@extensionsHomeFeedDescription": { + "description": "Extensions page - description for home feed provider picker" + }, + "extensionsHomeFeedAuto": "Auto", + "@extensionsHomeFeedAuto": { + "description": "Label for auto-selected search provider" + }, + "extensionsHomeFeedAutoSubtitle": "Automatically select the best available", + "@extensionsHomeFeedAutoSubtitle": { + "description": "Extensions page - subtitle for auto home feed option" + }, + "extensionsHomeFeedOff": "Off", + "@extensionsHomeFeedOff": { + "description": "Extensions page - home feed provider option: off" + }, + "extensionsHomeFeedOffSubtitle": "Do not show the home feed on the main screen", + "@extensionsHomeFeedOffSubtitle": { + "description": "Extensions page - subtitle for off home feed option" + }, + "extensionsHomeFeedUse": "Use {extensionName} home feed", + "@extensionsHomeFeedUse": { + "description": "Extensions page - subtitle for a specific extension home feed option", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "extensionsNoHomeFeedExtensions": "No extensions with home feed", + "@extensionsNoHomeFeedExtensions": { + "description": "Extensions page - shown when no installed extension has home feed" + }, + "cancelDownloadTitle": "Cancel download?", + "@cancelDownloadTitle": { + "description": "Dialog title when confirming cancellation of an active download" + }, + "cancelDownloadContent": "This will cancel the active download for \"{trackName}\".", + "@cancelDownloadContent": { + "description": "Dialog body when confirming cancellation of an active download", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "cancelDownloadKeep": "Keep", + "@cancelDownloadKeep": { + "description": "Dialog button - keep the active download (do not cancel)" + }, + "queueCancelledTitle": "Download cancelled", + "@queueCancelledTitle": { + "description": "Dialog title when opening a cancelled queue item" + }, + "queueCancelledMessage": "This download was cancelled. Retry it or remove it from the queue.", + "@queueCancelledMessage": { + "description": "Dialog body when opening a cancelled queue item" + }, + "metadataSaveFailedFfmpeg": "Failed to save metadata via FFmpeg", + "@metadataSaveFailedFfmpeg": { + "description": "Snackbar error when FFmpeg fails to write metadata" + }, + "metadataSaveFailedStorage": "Failed to write metadata back to storage", + "@metadataSaveFailedStorage": { + "description": "Snackbar error when writing metadata file back to storage fails" + }, + "snackbarFolderPickerFailed": "Failed to open folder picker: {error}", + "@snackbarFolderPickerFailed": { + "description": "Snackbar shown when folder picker fails to open", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "notifDownloadingTrack": "Downloading {trackName}", + "@notifDownloadingTrack": { + "description": "Notification title while downloading a track", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "notifFinalizingTrack": "Finalizing {trackName}", + "@notifFinalizingTrack": { + "description": "Notification title while finalizing (embedding metadata) a track", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "notifEmbeddingMetadata": "Embedding metadata...", + "@notifEmbeddingMetadata": { + "description": "Notification body while embedding metadata into a downloaded track" + }, + "notifAlreadyInLibraryCount": "Already in Library ({completed}/{total})", + "@notifAlreadyInLibraryCount": { + "description": "Notification title when track is already in library, with count", + "placeholders": { + "completed": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "notifAlreadyInLibrary": "Already in Library", + "@notifAlreadyInLibrary": { + "description": "Notification title when track is already in library" + }, + "notifDownloadCompleteCount": "Download Complete ({completed}/{total})", + "@notifDownloadCompleteCount": { + "description": "Notification title when download is complete, with count", + "placeholders": { + "completed": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "notifDownloadComplete": "Download Complete", + "@notifDownloadComplete": { + "description": "Notification title when a single download is complete" + }, + "notifDownloadsFinished": "Downloads Finished ({completed} done, {failed} failed)", + "@notifDownloadsFinished": { + "description": "Notification title when queue finishes with some failures", + "placeholders": { + "completed": { + "type": "int" + }, + "failed": { + "type": "int" + } + } + }, "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" @@ -5988,10 +5148,592 @@ "@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" + }, + "notifTracksDownloadedSuccess": "{count, plural, =1{1 track downloaded successfully} other{{count} tracks downloaded successfully}}", + "@notifTracksDownloadedSuccess": { + "description": "Notification body for queue complete - how many tracks were downloaded", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifDownloadsFinishedBody": "{completed, plural, =1{1 track downloaded} other{{completed} tracks downloaded}}, {failed, plural, =1{1 failed} other{{failed} failed}}", + "@notifDownloadsFinishedBody": { + "description": "Notification body when queue finishes with failures", + "placeholders": { + "completed": { + "type": "int" + }, + "failed": { + "type": "int" + } + } + }, + "notifDownloadsCanceledTitle": "Downloads canceled", + "@notifDownloadsCanceledTitle": { + "description": "Notification title when downloads are canceled by the user" + }, + "notifDownloadsCanceledBody": "{count, plural, =1{1 download canceled by user} other{{count} downloads canceled by user}}", + "@notifDownloadsCanceledBody": { + "description": "Notification body when downloads are canceled by the user", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifScanningLibrary": "Scanning local library", + "@notifScanningLibrary": { + "description": "Notification title while scanning local library" + }, + "notifLibraryScanProgressWithTotal": "{scanned}/{total} files • {percentage}%", + "@notifLibraryScanProgressWithTotal": { + "description": "Notification body for library scan progress when total is known", + "placeholders": { + "scanned": { + "type": "int" + }, + "total": { + "type": "int" + }, + "percentage": { + "type": "int" + } + } + }, + "notifLibraryScanProgressNoTotal": "{scanned} files scanned • {percentage}%", + "@notifLibraryScanProgressNoTotal": { + "description": "Notification body for library scan progress when total is unknown", + "placeholders": { + "scanned": { + "type": "int" + }, + "percentage": { + "type": "int" + } + } + }, + "notifLibraryScanComplete": "Library scan complete", + "@notifLibraryScanComplete": { + "description": "Notification title when library scan finishes" + }, + "notifLibraryScanCompleteBody": "{count} tracks indexed", + "@notifLibraryScanCompleteBody": { + "description": "Notification body for library scan complete - number of indexed tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifLibraryScanExcluded": "{count} excluded", + "@notifLibraryScanExcluded": { + "description": "Library scan complete suffix - excluded track count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifLibraryScanErrors": "{count} hata", + "@notifLibraryScanErrors": { + "description": "Library scan complete suffix - error count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifLibraryScanFailed": "Library scan failed", + "@notifLibraryScanFailed": { + "description": "Notification title when library scan fails" + }, + "notifLibraryScanCancelled": "Library scan cancelled", + "@notifLibraryScanCancelled": { + "description": "Notification title when library scan is cancelled by the user" + }, + "notifLibraryScanStopped": "Scan stopped before completion.", + "@notifLibraryScanStopped": { + "description": "Notification body when library scan is cancelled" + }, + "notifDownloadingUpdate": "Downloading SpotiFLAC Mobile v{version}", + "@notifDownloadingUpdate": { + "description": "Notification title while downloading an app update", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "notifUpdateProgress": "{received} / {total} MB • {percentage}%", + "@notifUpdateProgress": { + "description": "Notification body showing update download progress", + "placeholders": { + "received": { + "type": "String" + }, + "total": { + "type": "String" + }, + "percentage": { + "type": "int" + } + } + }, + "notifUpdateReady": "Güncelleme Hazır", + "@notifUpdateReady": { + "description": "Notification title when app update download is complete" + }, + "notifUpdateReadyBody": "SpotiFLAC Mobile v{version} downloaded. Tap to install.", + "@notifUpdateReadyBody": { + "description": "Notification body when app update is ready to install", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "notifUpdateFailed": "Update Failed", + "@notifUpdateFailed": { + "description": "Notification title when app update download fails" + }, + "notifUpdateFailedBody": "Could not download update. Try again later.", + "@notifUpdateFailedBody": { + "description": "Notification body when app update download fails" + }, + "searchTracks": "Tracks", + "@searchTracks": { + "description": "Search filter label - tracks" + }, + "homeSearchHintDefault": "Paste supported URL or search...", + "@homeSearchHintDefault": { + "description": "Default placeholder for the main search field on Home" + }, + "homeSearchHintProvider": "Search with {providerName}...", + "@homeSearchHintProvider": { + "description": "Placeholder for the main search field when a provider is selected", + "placeholders": { + "providerName": { + "type": "String" + } + } + }, + "homeImportCsvTooltip": "Import playlist (CSV, M3U)", + "@homeImportCsvTooltip": { + "description": "Tooltip for importing a CSV or M3U playlist file into Home search" + }, + "homeChangeSearchProviderTooltip": "Change search provider", + "@homeChangeSearchProviderTooltip": { + "description": "Tooltip for the Home search provider picker" + }, + "actionPaste": "Yapıştır", + "@actionPaste": { + "description": "Generic action - paste from clipboard" + }, + "tutorialSearchHint": "Paste or search...", + "@tutorialSearchHint": { + "description": "Placeholder shown in the tutorial search demo" + }, + "tutorialDownloadCompletedSemantics": "İndirme tamamlandı", + "@tutorialDownloadCompletedSemantics": { + "description": "Accessibility label for completed download state in tutorial demo" + }, + "tutorialDownloadInProgressSemantics": "Download in progress", + "@tutorialDownloadInProgressSemantics": { + "description": "Accessibility label for active download state in tutorial demo" + }, + "tutorialStartDownloadSemantics": "İndirmeyi başlat", + "@tutorialStartDownloadSemantics": { + "description": "Accessibility label for idle download button in tutorial demo" + }, + "optionsEmbedMetadata": "Embed Metadata", + "@optionsEmbedMetadata": { + "description": "Settings toggle title for writing metadata into downloaded files" + }, + "optionsEmbedMetadataSubtitleOn": "Write metadata, cover art, and embedded lyrics to files", + "@optionsEmbedMetadataSubtitleOn": { + "description": "Subtitle when metadata embedding is enabled" + }, + "optionsEmbedMetadataSubtitleOff": "Disabled (advanced): skip all metadata embedding", + "@optionsEmbedMetadataSubtitleOff": { + "description": "Subtitle when metadata embedding is disabled" + }, + "trackCoverNoEmbeddedArt": "No embedded album art found", + "@trackCoverNoEmbeddedArt": { + "description": "Message shown when a track file has no embedded cover art" + }, + "trackCoverReplace": "Replace Cover", + "@trackCoverReplace": { + "description": "Button label for replacing selected cover art" + }, + "trackCoverPick": "Kapak Seç", + "@trackCoverPick": { + "description": "Button label for selecting cover art" + }, + "trackCoverClearSelected": "Clear selected cover", + "@trackCoverClearSelected": { + "description": "Tooltip for clearing the newly selected cover art" + }, + "trackCoverCurrent": "Current cover", + "@trackCoverCurrent": { + "description": "Label for the currently embedded cover preview" + }, + "trackCoverSelected": "Seçili kapak", + "@trackCoverSelected": { + "description": "Label for the newly selected cover preview" + }, + "trackCoverReplaceNotice": "The selected cover will replace the current embedded cover when you tap Save.", + "@trackCoverReplaceNotice": { + "description": "Notice shown when a new cover has been selected but not saved yet" + }, + "trackCoverResolution": "Cover resolution", + "@trackCoverResolution": { + "description": "Label for selecting the embedded cover art resolution" + }, + "trackCoverResolutionHint": "Sets the longest edge when saved. Enlarging does not add image detail.", + "@trackCoverResolutionHint": { + "description": "Explanation below the embedded cover art resolution selector" + }, + "trackCoverResizeFailed": "The cover image could not be resized. Please try another size or image.", + "@trackCoverResizeFailed": { + "description": "Error shown when resizing cover art before saving metadata fails" + }, + "actionStop": "Stop", + "@actionStop": { + "description": "Generic action - stop" + }, + "queueFinalizingDownload": "Finalizing download", + "@queueFinalizingDownload": { + "description": "Accessibility label for a queue item that is finalizing" + }, + "queueDownloadNext": "Download next", + "@queueDownloadNext": { + "description": "Tooltip on a queued download row; moves the item to the front of the queue so the next free slot downloads it" + }, + "queueMoveUp": "Move up", + "@queueMoveUp": { + "description": "Queue item menu action - move the queued item one position earlier" + }, + "queueMoveDown": "Move down", + "@queueMoveDown": { + "description": "Queue item menu action - move the queued item one position later" + }, + "editMetadataMusicBrainzButton": "Fetch from MusicBrainz", + "@editMetadataMusicBrainzButton": { + "description": "Tag editor button that fills genre and album artist from MusicBrainz by ISRC" + }, + "editMetadataMusicBrainzFilled": "Updated from MusicBrainz", + "@editMetadataMusicBrainzFilled": { + "description": "Snackbar after MusicBrainz suggestions were applied to the tag editor fields" + }, + "editMetadataMusicBrainzNothing": "Nothing found on MusicBrainz", + "@editMetadataMusicBrainzNothing": { + "description": "Snackbar when the MusicBrainz lookup returns no data" + }, + "editMetadataMusicBrainzNeedsIsrc": "Requires an ISRC tag", + "@editMetadataMusicBrainzNeedsIsrc": { + "description": "Snackbar when the MusicBrainz lookup is tapped without an ISRC" + }, + "nowPlayingRepeatOff": "Repeat off", + "@nowPlayingRepeatOff": { + "description": "Repeat toggle tooltip when repeat is disabled" + }, + "nowPlayingRepeatAll": "Repeat all", + "@nowPlayingRepeatAll": { + "description": "Repeat toggle tooltip when the whole queue repeats" + }, + "nowPlayingRepeatOne": "Repeat one", + "@nowPlayingRepeatOne": { + "description": "Repeat toggle tooltip when the current track repeats" + }, + "queueNetworkFailedOffline": "{count} downloads failed while offline", + "@queueNetworkFailedOffline": { + "description": "Snackbar shown when connectivity returns and network-failed downloads can be retried", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueDownloadedFileMissing": "Downloaded file missing", + "@queueDownloadedFileMissing": { + "description": "Accessibility label when a downloaded file is missing from disk" + }, + "queueCheckingDownloadedFile": "Checking downloaded file...", + "@queueCheckingDownloadedFile": { + "description": "Accessibility label while the app checks whether a just-completed download has appeared at its final path yet. Not about authentication or a download session." + }, + "queueDownloadCompleted": "Download completed", + "@queueDownloadCompleted": { + "description": "Accessibility label for completed download state in queue" + }, + "queueRateLimitTitle": "Service rate limited", + "@queueRateLimitTitle": { + "description": "Title shown on a failed queue item when the download service rate limits requests" + }, + "queueRateLimitMessage": "This track may still be available. Wait a few minutes, reduce parallel downloads, then retry.", + "@queueRateLimitMessage": { + "description": "Explanation shown on a failed queue item when the download service rate limits requests" + }, + "appearanceSelectAccentColor": "Select accent color {hex}", + "@appearanceSelectAccentColor": { + "description": "Accessibility label for picking an accent color", + "placeholders": { + "hex": { + "type": "String" + } + } + }, + "logAutoScrollOn": "Auto-scroll ON", + "@logAutoScrollOn": { + "description": "Tooltip when auto-scroll is enabled on the log screen" + }, + "logAutoScrollOff": "Auto-scroll OFF", + "@logAutoScrollOff": { + "description": "Tooltip when auto-scroll is disabled on the log screen" + }, + "logCopyLogs": "Copy logs", + "@logCopyLogs": { + "description": "Tooltip for copying logs" + }, + "logClearSearch": "Clear search", + "@logClearSearch": { + "description": "Tooltip for clearing the log search field" + }, + "logIssueIspBlockingLabel": "ISP BLOCKING DETECTED", + "@logIssueIspBlockingLabel": { + "description": "Diagnostic badge label when ISP blocking is detected" + }, + "logIssueIspBlockingDescription": "Your ISP may be blocking access to download services", + "@logIssueIspBlockingDescription": { + "description": "Diagnostic badge description for ISP blocking" + }, + "logIssueIspBlockingSuggestion": "Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8", + "@logIssueIspBlockingSuggestion": { + "description": "Diagnostic badge suggestion for ISP blocking" + }, + "logIssueRateLimitedLabel": "RATE LIMITED", + "@logIssueRateLimitedLabel": { + "description": "Diagnostic badge label when the service rate limits requests" + }, + "logIssueRateLimitedDescription": "Too many requests to the service", + "@logIssueRateLimitedDescription": { + "description": "Diagnostic badge description for rate limiting" + }, + "logIssueRateLimitedSuggestion": "Wait a few minutes before trying again", + "@logIssueRateLimitedSuggestion": { + "description": "Diagnostic badge suggestion for rate limiting" + }, + "logIssueNetworkErrorLabel": "NETWORK ERROR", + "@logIssueNetworkErrorLabel": { + "description": "Diagnostic badge label for generic network errors" + }, + "logIssueNetworkErrorDescription": "Connection issues detected", + "@logIssueNetworkErrorDescription": { + "description": "Diagnostic badge description for generic network errors" + }, + "logIssueNetworkErrorSuggestion": "Check your internet connection", + "@logIssueNetworkErrorSuggestion": { + "description": "Diagnostic badge suggestion for generic network errors" + }, + "logIssueTrackNotFoundLabel": "TRACK NOT FOUND", + "@logIssueTrackNotFoundLabel": { + "description": "Diagnostic badge label when a track is unavailable" + }, + "logIssueTrackNotFoundDescription": "Some tracks could not be found on download services", + "@logIssueTrackNotFoundDescription": { + "description": "Diagnostic badge description when a track is unavailable" + }, + "logIssueTrackNotFoundSuggestion": "The track may not be available in lossless quality", + "@logIssueTrackNotFoundSuggestion": { + "description": "Diagnostic badge suggestion when a track is unavailable" + }, + "clickableLookingUpArtist": "Looking up artist...", + "@clickableLookingUpArtist": { + "description": "Snackbar shown while clickable artist metadata is being resolved" + }, + "clickableInformationUnavailable": "{type} information not available", + "@clickableInformationUnavailable": { + "description": "Snackbar shown when clickable metadata cannot open a destination", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "extensionDetailsTags": "Etiketler", + "@extensionDetailsTags": { + "description": "Section title for extension tags" + }, + "extensionDetailsInformation": "Information", + "@extensionDetailsInformation": { + "description": "Section title for extension metadata information" + }, + "extensionUtilityFunctions": "Utility Functions", + "@extensionUtilityFunctions": { + "description": "Capability label for utility-only extensions" + }, + "actionDismiss": "Dismiss", + "@actionDismiss": { + "description": "Generic action - dismiss" + }, + "setupChangeFolderTooltip": "Change folder", + "@setupChangeFolderTooltip": { + "description": "Tooltip for editing the selected download folder" + }, + "a11yOpenTrackByArtist": "Open track {trackName} by {artistName}", + "@a11yOpenTrackByArtist": { + "description": "Accessibility label for opening a track item", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "a11yOpenItem": "Open {itemType} {name}", + "@a11yOpenItem": { + "description": "Accessibility label for opening a generic item", + "placeholders": { + "itemType": { + "type": "String" + }, + "name": { + "type": "String" + } + } + }, + "a11yOpenItemCount": "Open {title}, {count} {count, plural, =1{item} other{items}}", + "@a11yOpenItemCount": { + "description": "Accessibility label for opening a grouped item with count", + "placeholders": { + "title": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "a11yOpenAlbumByArtistTrackCount": "Open album {albumName} by {artistName}, {trackCount} tracks", + "@a11yOpenAlbumByArtistTrackCount": { + "description": "Accessibility label for opening an album item with track count", + "placeholders": { + "albumName": { + "type": "String" + }, + "artistName": { + "type": "String" + }, + "trackCount": { + "type": "int" + } + } + }, + "a11yTrackByArtist": "{trackName} by {artistName}", + "@a11yTrackByArtist": { + "description": "Accessibility label for a queue or list track item", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "a11ySelectAlbum": "Select album {albumName}", + "@a11ySelectAlbum": { + "description": "Accessibility label for selecting an album", + "placeholders": { + "albumName": { + "type": "String" + } + } + }, + "a11yOpenAlbum": "Open album {albumName}", + "@a11yOpenAlbum": { + "description": "Accessibility label for opening an album", + "placeholders": { + "albumName": { + "type": "String" + } + } + }, + "settingsFiles": "Files & Folders", + "@settingsFiles": { + "description": "Settings menu item - file and folder settings" + }, + "settingsFilesSubtitle": "Download location, filename, folder structure", + "@settingsFilesSubtitle": { + "description": "Subtitle for files & folders settings" + }, + "settingsMetadata": "Metadata", + "@settingsMetadata": { + "description": "Settings menu item - metadata settings" + }, + "settingsMetadataSubtitle": "Cover art, tags, ReplayGain, providers", + "@settingsMetadataSubtitle": { + "description": "Subtitle for metadata settings" + }, + "settingsLyrics": "Lyrics", + "@settingsLyrics": { + "description": "Settings menu item - lyrics settings" + }, + "settingsLyricsSubtitle": "Embed, mode, providers, language options", + "@settingsLyricsSubtitle": { + "description": "Subtitle for lyrics settings" + }, + "settingsApp": "Uygulama", + "@settingsApp": { + "description": "Settings menu item - app settings" + }, + "settingsAppSubtitle": "Updates, data, extension repo, debug", + "@settingsAppSubtitle": { + "description": "Subtitle for app settings" + }, + "sectionMetadataProviders": "Providers", + "@sectionMetadataProviders": { + "description": "Settings section header for metadata providers" + }, + "sectionDuplicates": "Yinelenenler", + "@sectionDuplicates": { + "description": "Settings section header for deduplication" + }, + "sectionLyricsProviderOptions": "Provider Options", + "@sectionLyricsProviderOptions": { + "description": "Settings section header for per-provider lyrics options" + }, + "metadataProvidersTitle": "Metadata Provider Priority", + "@metadataProvidersTitle": { + "description": "Settings item title for metadata provider order" + }, + "metadataProvidersSubtitle": "Drag to set search and metadata source order", + "@metadataProvidersSubtitle": { + "description": "Subtitle for metadata provider priority item" + }, + "downloadDeduplication": "Skip Duplicate Downloads", + "@downloadDeduplication": { + "description": "Setting - skip tracks already in download history" + }, + "downloadDeduplicationEnabled": "Already-downloaded tracks will be skipped", + "@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" @@ -6004,99 +5746,1084 @@ "@trackOptionDownloadQualityVariant": { "description": "Track menu action to download another quality version" }, + "downloadFallbackExtensions": "Fallback Extensions", + "@downloadFallbackExtensions": { + "description": "Settings item for configuring fallback extension providers" + }, + "downloadFallbackExtensionsSubtitle": "Choose which extensions can be used as fallback", + "@downloadFallbackExtensionsSubtitle": { + "description": "Subtitle for fallback extensions item" + }, + "editMetadataFieldDateHint": "YYYY-MM-DD or YYYY", + "@editMetadataFieldDateHint": { + "description": "Hint text for the edit metadata date field" + }, + "editMetadataFieldTrackTotal": "Track Total", + "@editMetadataFieldTrackTotal": { + "description": "Label for total tracks field in the edit metadata sheet" + }, + "editMetadataFieldDiscTotal": "Disc Total", + "@editMetadataFieldDiscTotal": { + "description": "Label for total discs field in the edit metadata sheet" + }, + "editMetadataFieldComposer": "Besteci", + "@editMetadataFieldComposer": { + "description": "Label for composer field in the edit metadata sheet" + }, + "editMetadataFieldComment": "Yorum", + "@editMetadataFieldComment": { + "description": "Label for comment field in the edit metadata sheet" + }, + "trackAlbumType": "Release Type", + "@trackAlbumType": { + "description": "Label for an album or release type metadata value" + }, + "editMetadataFieldAlbumTypeHint": "Album, single, EP, compilation...", + "@editMetadataFieldAlbumTypeHint": { + "description": "Hint for the release type metadata field" + }, + "editMetadataFieldExplicit": "Explicit", + "@editMetadataFieldExplicit": { + "description": "Label for the explicit content metadata field" + }, + "editMetadataFieldExplicitHint": "Mark this track as containing explicit content", + "@editMetadataFieldExplicitHint": { + "description": "Description for the explicit content metadata switch" + }, + "metadataExplicitValue": "Explicit", + "@metadataExplicitValue": { + "description": "Displayed value when a track is marked explicit" + }, + "editMetadataFieldUpc": "UPC / Barcode", + "@editMetadataFieldUpc": { + "description": "Label for the release barcode metadata field" + }, + "editMetadataFieldUpcHint": "Numeric UPC, EAN, or GTIN", + "@editMetadataFieldUpcHint": { + "description": "Hint for the release barcode metadata field" + }, + "editMetadataAdvanced": "Gelişmiş", + "@editMetadataAdvanced": { + "description": "Expandable section label for advanced metadata fields" + }, + "libraryFilterMetadataMissingTrackNumber": "Missing track number", + "@libraryFilterMetadataMissingTrackNumber": { + "description": "Filter option - items missing track number" + }, + "libraryFilterMetadataMissingDiscNumber": "Missing disc number", + "@libraryFilterMetadataMissingDiscNumber": { + "description": "Filter option - items missing disc number" + }, + "libraryFilterMetadataMissingArtist": "Missing artist", + "@libraryFilterMetadataMissingArtist": { + "description": "Filter option - items missing artist" + }, + "libraryFilterMetadataIncorrectIsrcFormat": "Incorrect ISRC format", + "@libraryFilterMetadataIncorrectIsrcFormat": { + "description": "Filter option - items with an invalid ISRC format" + }, + "libraryFilterMetadataMissingIsrc": "Missing ISRC", + "@libraryFilterMetadataMissingIsrc": { + "description": "Filter option - items without any ISRC tag" + }, + "libraryFilterMetadataMissingLabel": "Missing label", + "@libraryFilterMetadataMissingLabel": { + "description": "Filter option - items missing record label" + }, + "collectionDeletePlaylistsMessage": "Delete {count} {count, plural, =1{playlist} other{playlists}}?", + "@collectionDeletePlaylistsMessage": { + "description": "Confirmation message for deleting selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionPlaylistsDeleted": "{count} {count, plural, =1{playlist} other{playlists}} deleted", + "@collectionPlaylistsDeleted": { + "description": "Snackbar after deleting selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionAddedTracksToPlaylist": "Added {count} {count, plural, =1{track} other{tracks}} to {playlistName}", + "@collectionAddedTracksToPlaylist": { + "description": "Snackbar after adding multiple tracks to a playlist", + "placeholders": { + "count": { + "type": "int" + }, + "playlistName": { + "type": "String" + } + } + }, + "collectionAddedTracksToPlaylistWithExisting": "Added {count} {count, plural, =1{track} other{tracks}} to {playlistName} ({alreadyCount} already in playlist)", + "@collectionAddedTracksToPlaylistWithExisting": { + "description": "Snackbar after adding multiple tracks to a playlist when some were already present", + "placeholders": { + "count": { + "type": "int" + }, + "playlistName": { + "type": "String" + }, + "alreadyCount": { + "type": "int" + } + } + }, + "itemCount": "{count} {count, plural, =1{item} other{items}}", + "@itemCount": { + "description": "Generic item count label", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackReEnrichSuccessWithFailures": "Metadata re-enriched successfully ({successCount}/{total}) - Failed: {failedCount}", + "@trackReEnrichSuccessWithFailures": { + "description": "Snackbar summary after batch metadata re-enrichment finishes with failures", + "placeholders": { + "successCount": { + "type": "int" + }, + "total": { + "type": "int" + }, + "failedCount": { + "type": "int" + } + } + }, + "selectionDeleteTracksCount": "Delete {count} {count, plural, =1{track} other{tracks}}", + "@selectionDeleteTracksCount": { + "description": "Button label for deleting selected tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueDownloadSpeedStatus": "Downloading - {speed} MB/s", + "@queueDownloadSpeedStatus": { + "description": "Queue status while downloading with speed", + "placeholders": { + "speed": { + "type": "String" + } + } + }, + "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" + }, + "@queueCheckingDownloadSession": { + "description": "Queue status while the download provider's session is being checked during preparation (preparationStage 'checking_session'). This is about the provider session, not about locating a finished file." + }, + "a11ySelectTrack": "Select track", + "@a11ySelectTrack": { + "description": "Accessibility label for selecting a track" + }, + "a11yDeselectTrack": "Deselect track", + "@a11yDeselectTrack": { + "description": "Accessibility label for deselecting a track" + }, + "a11yPlayTrackByArtist": "Play {trackName} by {artistName}", + "@a11yPlayTrackByArtist": { + "description": "Accessibility label for playing a local library track", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "storeExtensionsCount": "{count} {count, plural, =1{extension} other{extensions}}", + "@storeExtensionsCount": { + "description": "Store extension result count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "storeRequiresVersion": "Requires v{version}+", + "@storeRequiresVersion": { + "description": "Store compatibility badge for minimum app version", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "actionGo": "Go", + "@actionGo": { + "description": "Generic action button label" + }, + "logIssueSummary": "Issue Summary", + "@logIssueSummary": { + "description": "Header for log issue analysis summary" + }, + "logTotalErrors": "Total errors: {count}", + "@logTotalErrors": { + "description": "Total error count in log issue analysis", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "logAffectedDomains": "Affected: {domains}", + "@logAffectedDomains": { + "description": "Affected domains in log issue analysis", + "placeholders": { + "domains": { + "type": "String" + } + } + }, + "libraryScanCancelled": "Scan cancelled", + "@libraryScanCancelled": { + "description": "Library scan status when a scan was cancelled" + }, + "libraryScanCancelledSubtitle": "You can retry the scan when ready.", + "@libraryScanCancelledSubtitle": { + "description": "Library scan status subtitle after cancellation" + }, + "libraryDownloadsHistoryExcluded": "{count} from Downloads history (excluded from list)", + "@libraryDownloadsHistoryExcluded": { + "description": "Library count note for downloaded history items excluded from the local list", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadNativeWorker": "Native download worker", + "@downloadNativeWorker": { + "description": "Setting title for Android native download worker" + }, + "downloadNativeWorkerSubtitle": "Android background service for extension downloads", + "@downloadNativeWorkerSubtitle": { + "description": "Setting subtitle for Android native download worker" + }, + "extensionServiceStatus": "Service Status", + "@extensionServiceStatus": { + "description": "Extension detail section header for service status" + }, + "extensionServiceHealth": "Service health", + "@extensionServiceHealth": { + "description": "Extension capability label for service health checks" + }, + "extensionHealthChecksConfigured": "{count} {count, plural, =1{check} other{checks}} configured", + "@extensionHealthChecksConfigured": { + "description": "Extension service health check count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionOauthConnectHint": "Tap Connect to Spotify to fill this field.", + "@extensionOauthConnectHint": { + "description": "Hint for an OAuth login link field before connecting Spotify" + }, + "extensionLastChecked": "Last checked {time}", + "@extensionLastChecked": { + "description": "Timestamp for the latest extension service health check", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "extensionRefreshStatus": "Refresh status", + "@extensionRefreshStatus": { + "description": "Tooltip for refreshing extension service health status" + }, + "extensionCustomUrlHandling": "Custom URL Handling", + "@extensionCustomUrlHandling": { + "description": "Extension detail section title for custom URL handling" + }, + "extensionCustomUrlHandlingSubtitle": "This extension can handle links from these sites", + "@extensionCustomUrlHandlingSubtitle": { + "description": "Extension detail subtitle for custom URL handling" + }, + "extensionCustomUrlHandlingShareHint": "Share links from these sites to SpotiFLAC Mobile and this extension will handle them.", + "@extensionCustomUrlHandlingShareHint": { + "description": "Extension detail hint explaining share-to-app URL handling" + }, + "extensionSettingsCount": "{count} {count, plural, =1{setting} other{settings}}", + "@extensionSettingsCount": { + "description": "Count of settings exposed by an extension quality option", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionHealthOnline": "Çevrimiçi", + "@extensionHealthOnline": { + "description": "Extension service health status - online" + }, + "extensionHealthDegraded": "Degraded", + "@extensionHealthDegraded": { + "description": "Extension service health status - degraded" + }, + "extensionHealthOffline": "Çevrimdışı", + "@extensionHealthOffline": { + "description": "Extension service health status - offline" + }, + "extensionHealthNotConfigured": "Not configured", + "@extensionHealthNotConfigured": { + "description": "Extension service health status - not configured" + }, + "extensionHealthUnknown": "Unknown", + "@extensionHealthUnknown": { + "description": "Extension service health status - unknown" + }, + "extensionHealthRequired": "gerekli", + "@extensionHealthRequired": { + "description": "Label for a required extension service health check" + }, + "extensionSettingNotSet": "Not set", + "@extensionSettingNotSet": { + "description": "Value shown when an extension setting has no value" + }, + "extensionActionFailed": "Action failed", + "@extensionActionFailed": { + "description": "Fallback error when an extension action fails without details" + }, + "extensionEnterValue": "Enter value", + "@extensionEnterValue": { + "description": "Hint for editing an extension setting value" + }, + "extensionHealthServiceOnline": "Service online", + "@extensionHealthServiceOnline": { + "description": "Tooltip for online extension service" + }, + "extensionHealthServiceDegraded": "Service degraded", + "@extensionHealthServiceDegraded": { + "description": "Tooltip for degraded extension service" + }, + "extensionHealthServiceOffline": "Service offline", + "@extensionHealthServiceOffline": { + "description": "Tooltip for offline extension service" + }, + "extensionHealthServiceUnknown": "Service status unknown", + "@extensionHealthServiceUnknown": { + "description": "Tooltip for unknown extension service health" + }, + "audioAnalysisStereo": "Stereo", + "@audioAnalysisStereo": { + "description": "Audio channel layout label - stereo" + }, + "audioAnalysisMono": "Mono", + "@audioAnalysisMono": { + "description": "Audio channel layout label - mono" + }, + "trackOpenInService": "Open in {serviceName}", + "@trackOpenInService": { + "description": "Button label to open a track in a named music service", + "placeholders": { + "serviceName": { + "type": "String" + } + } + }, + "trackLyricsEmbeddedSource": "Embedded", + "@trackLyricsEmbeddedSource": { + "description": "Lyrics source label for embedded lyrics" + }, + "unknownAlbum": "Unknown Album", + "@unknownAlbum": { + "description": "Fallback album name when metadata is missing" + }, + "unknownArtist": "Unknown Artist", + "@unknownArtist": { + "description": "Fallback artist name when metadata is missing" + }, + "permissionAudio": "Ses", + "@permissionAudio": { + "description": "Audio permission type label" + }, + "permissionStorage": "Depolama", + "@permissionStorage": { + "description": "Storage permission type label" + }, + "permissionNotification": "Bildirim", + "@permissionNotification": { + "description": "Notification permission type label" + }, + "errorInvalidFolderSelected": "Invalid folder selected", + "@errorInvalidFolderSelected": { + "description": "Error when the selected folder is invalid" + }, + "storeAnyVersion": "Any", + "@storeAnyVersion": { + "description": "Store detail value when any app version is accepted" + }, + "storeCategoryMetadata": "Metadata", + "@storeCategoryMetadata": { + "description": "Store extension category - metadata" + }, + "storeCategoryDownload": "Download", + "@storeCategoryDownload": { + "description": "Store extension category - download" + }, + "storeCategoryUtility": "Utility", + "@storeCategoryUtility": { + "description": "Store extension category - utility" + }, + "storeCategoryLyrics": "Lyrics", + "@storeCategoryLyrics": { + "description": "Store extension category - lyrics" + }, + "storeCategoryIntegration": "Integration", + "@storeCategoryIntegration": { + "description": "Store extension category - integration" + }, + "artistReleases": "Sürümler", + "@artistReleases": { + "description": "Section header for all artist releases" + }, + "editMetadataSelectNone": "None", + "@editMetadataSelectNone": { + "description": "Button to clear selected fields for auto-fill" + }, + "queueRetryAllFailed": "Retry {count} failed", + "@queueRetryAllFailed": { + "description": "Button to retry every failed download in the queue", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "settingsSaveDownloadHistory": "Save download history", + "@settingsSaveDownloadHistory": { + "description": "Settings switch title for storing completed downloads in history" + }, + "settingsSaveDownloadHistorySubtitle": "Keep completed downloads in history and library views", + "@settingsSaveDownloadHistorySubtitle": { + "description": "Settings switch subtitle for storing completed downloads in history" + }, + "dialogDisableHistoryTitle": "Turn off download history?", + "@dialogDisableHistoryTitle": { + "description": "Confirmation dialog title shown before disabling download history" + }, + "dialogDisableHistoryMessage": "Existing history will be cleared. Downloaded files will not be deleted.", + "@dialogDisableHistoryMessage": { + "description": "Confirmation dialog message shown before disabling download history" + }, + "dialogDisableAndClear": "Turn off and clear", + "@dialogDisableAndClear": { + "description": "Confirmation action to disable download history and clear existing entries" + }, + "openInOtherServices": "Open in Other Services", + "@openInOtherServices": { + "description": "Title and tooltip for finding the current collection in other services" + }, + "shareSheetNoExtensions": "No other compatible services", + "@shareSheetNoExtensions": { + "description": "Empty state when no extensions can be searched for cross-service links" + }, + "shareSheetNotFound": "Not found", + "@shareSheetNotFound": { + "description": "Cross-service share sheet row subtitle when a service has no match" + }, + "shareSheetCopyLink": "Copy Link", + "@shareSheetCopyLink": { + "description": "Tooltip for copying a cross-service link" + }, + "shareSheetLinkCopied": "{service} link copied", + "@shareSheetLinkCopied": { + "description": "Snackbar after copying a cross-service link", + "placeholders": { + "service": {} + } + }, + "libraryPlayback": "Playback", + "@libraryPlayback": { + "description": "Section header for playback settings in library settings" + }, + "libraryExternalPlayer": "External player", + "@libraryExternalPlayer": { + "description": "Setting option to use an external music player" + }, + "libraryExternalPlayerSubtitle": "Recommended for listening, best quality, gapless playback, EQ, and wider format support", + "@libraryExternalPlayerSubtitle": { + "description": "Subtitle for external player option" + }, + "libraryBuiltInPreviewPlayer": "Built-in preview player", + "@libraryBuiltInPreviewPlayer": { + "description": "Setting option to use the built-in preview player" + }, + "libraryBuiltInPreviewPlayerSubtitle": "Quick local previews inside SpotiFLAC Mobile", + "@libraryBuiltInPreviewPlayerSubtitle": { + "description": "Subtitle for built-in preview player option" + }, + "libraryBuiltInPlayerInfo": "The built-in player is a preview tool for checking local tracks quickly. Use an external music player for actual listening.", + "@libraryBuiltInPlayerInfo": { + "description": "Info note explaining the built-in player is for previews only" + }, + "nowPlayingTitle": "Now Playing", + "@nowPlayingTitle": { + "description": "Title for the now playing screen" + }, + "nowPlayingNothingPlaying": "Nothing is playing", + "@nowPlayingNothingPlaying": { + "description": "Empty state when no track is currently playing" + }, + "nowPlayingMinimize": "Minimize", + "@nowPlayingMinimize": { + "description": "Tooltip for minimizing the now playing screen" + }, + "nowPlayingUpNext": "Up next", + "@nowPlayingUpNext": { + "description": "Title for the playback queue sheet" + }, + "nowPlayingPreviousTrack": "Previous track", + "@nowPlayingPreviousTrack": { + "description": "Tooltip for the previous-track playback control" + }, + "nowPlayingNextTrack": "Next track", + "@nowPlayingNextTrack": { + "description": "Tooltip for the next-track playback control" + }, + "nowPlayingDetails": "Details", + "@nowPlayingDetails": { + "description": "Menu item and section title for track metadata details" + }, + "nowPlayingSleepTimer": "Sleep timer", + "@nowPlayingSleepTimer": { + "description": "Menu item and sheet title for the playback sleep timer" + }, + "nowPlayingSleepTimerActive": "Ends at {time}", + "@nowPlayingSleepTimerActive": { + "description": "Active sleep timer deadline shown in the player menu", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "nowPlayingSleepTimerMinutes": "{minutes, plural, =1{1 minute} other{{minutes} minutes}}", + "@nowPlayingSleepTimerMinutes": { + "description": "Duration choice for the playback sleep timer", + "placeholders": { + "minutes": { + "type": "int" + } + } + }, + "nowPlayingSleepTimerOff": "Turn off sleep timer", + "@nowPlayingSleepTimerOff": { + "description": "Action to cancel the active playback sleep timer" + }, + "nowPlayingSleepTimerSet": "Sleep timer set for {duration}", + "@nowPlayingSleepTimerSet": { + "description": "Confirmation after setting the playback sleep timer", + "placeholders": { + "duration": { + "type": "String" + } + } + }, + "nowPlayingSleepTimerCancelled": "Sleep timer turned off", + "@nowPlayingSleepTimerCancelled": { + "description": "Confirmation after cancelling the playback sleep timer" + }, + "nowPlayingOpenInExternalPlayer": "Open in external player", + "@nowPlayingOpenInExternalPlayer": { + "description": "Menu item to open the current track in an external player" + }, + "nowPlayingTabPlayer": "Player", + "@nowPlayingTabPlayer": { + "description": "Tab label for the player view" + }, + "nowPlayingTabLyrics": "Lyrics", + "@nowPlayingTabLyrics": { + "description": "Tab label for the lyrics view" + }, + "nowPlayingNoLyrics": "No lyrics in this file", + "@nowPlayingNoLyrics": { + "description": "Empty state when the playing file has no embedded lyrics" + }, + "nowPlayingLibraryEmpty": "Your library is empty", + "@nowPlayingLibraryEmpty": { + "description": "Snackbar when shuffle library is requested but library has no tracks" + }, + "nowPlayingShuffleLibraryFailed": "Could not shuffle library: {error}", + "@nowPlayingShuffleLibraryFailed": { + "description": "Snackbar when shuffling the library fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "nowPlayingShuffleOn": "Shuffle on", + "@nowPlayingShuffleOn": { + "description": "Tooltip when shuffle mode is enabled" + }, + "nowPlayingPlayInOrder": "Play in order", + "@nowPlayingPlayInOrder": { + "description": "Tooltip when shuffle mode is disabled" + }, + "nowPlayingShuffleLibrary": "Shuffle library", + "@nowPlayingShuffleLibrary": { + "description": "Button label to shuffle and play the entire local library" + }, + "nowPlayingQueueEmpty": "Queue is empty", + "@nowPlayingQueueEmpty": { + "description": "Empty state when the playback queue has no items" + }, + "nowPlayingNoMetadata": "No metadata available", + "@nowPlayingNoMetadata": { + "description": "Empty state when track metadata cannot be loaded" + }, + "announcementUnableToOpenLink": "Unable to open link. Please try again.", + "@announcementUnableToOpenLink": { + "description": "Snackbar shown when an announcement CTA link cannot be opened" + }, + "trackConvertLosslessOutputWithCap": "Lossless output with {quality} cap", + "@trackConvertLosslessOutputWithCap": { + "description": "Hint shown when lossless conversion will cap bit depth or sample rate", + "placeholders": { + "quality": { + "type": "String" + } + } + }, + "trackConvertConfirmMessageLosslessCapped": "Convert from {sourceFormat} to {targetFormat} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original file will be deleted after conversion.", + "@trackConvertConfirmMessageLosslessCapped": { + "description": "Confirmation dialog message for capped lossless conversion of a single file", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "selectionBatchConvertConfirmMessageLosslessCapped": "Convert {count} {count, plural, =1{track} other{tracks}} to {format} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original files will be deleted after conversion.", + "@selectionBatchConvertConfirmMessageLosslessCapped": { + "description": "Confirmation dialog message for capped lossless batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "trackConvertActionLabelLossless": "{sourceFormat} → {targetFormat} ({quality})", + "@trackConvertActionLabelLossless": { + "description": "Convert button label for lossless conversion with quality cap", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "trackConvertActionLabelLossy": "{sourceFormat} → {targetFormat} @ {bitrate}", + "@trackConvertActionLabelLossy": { + "description": "Convert button label for lossy conversion", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "aboutPaxsenixSubtitle": "Lyrics proxy for Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou, and Genius", + "@aboutPaxsenixSubtitle": { + "description": "Subtitle for Paxsenix special thanks entry on the about page" + }, + "snackbarPlayingNext": "Playing next", + "@snackbarPlayingNext": { + "description": "Snackbar when a track is inserted as the next queue item" + }, + "snackbarAddedToQueueGeneric": "Added to queue", + "@snackbarAddedToQueueGeneric": { + "description": "Snackbar when a track is added to the playback queue without naming it" + }, + "selectionDeletePlaylistsCount": "Delete {count} {count, plural, =1{playlist} other{playlists}}", + "@selectionDeletePlaylistsCount": { + "description": "Button label for deleting multiple selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "actionShuffle": "Shuffle", + "@actionShuffle": { + "description": "Tooltip for shuffle playback action" + }, + "downloadPrimaryArtistOnlyOn": "Primary only: On", + "@downloadPrimaryArtistOnlyOn": { + "description": "Status label when primary-artist-only folder naming is enabled" + }, + "downloadPrimaryArtistOnlyOff": "Primary only: Off", + "@downloadPrimaryArtistOnlyOff": { + "description": "Status label when primary-artist-only folder naming is disabled" + }, + "downloadAlbumArtistMetadataPrimaryOnly": "Album Artist metadata: Primary only", + "@downloadAlbumArtistMetadataPrimaryOnly": { + "description": "Status label when album-artist folder filtering uses primary artist only" + }, + "downloadAlbumArtistMetadataFull": "Album Artist metadata: Full", + "@downloadAlbumArtistMetadataFull": { + "description": "Status label when album-artist folder filtering uses full metadata" + }, + "trackConvertOriginal": "Original", + "@trackConvertOriginal": { + "description": "Label for keeping original bit depth or sample rate during conversion" + }, + "trackConvertOriginalQuality": "Original quality", + "@trackConvertOriginalQuality": { + "description": "Label when no bit depth or sample rate cap is applied during lossless conversion" + }, + "trackConvertLosslessSuffix": "Lossless", + "@trackConvertLosslessSuffix": { + "description": "Suffix used in converted lossless quality labels" + }, + "trackConvertDithering": "Dithering", + "@trackConvertDithering": { + "description": "Section label for lossless conversion dithering options" + }, + "trackConvertResampler": "Resampler", + "@trackConvertResampler": { + "description": "Section label for lossless conversion resampler options" + }, + "trackConvertDitherNone": "None", + "@trackConvertDitherNone": { + "description": "Lossless conversion dither option with no dithering applied" + }, + "trackConvertDitherTriangular": "TPDF", + "@trackConvertDitherTriangular": { + "description": "Lossless conversion triangular probability density function dither option" + }, + "trackConvertDitherTriangularHp": "Triangular HP", + "@trackConvertDitherTriangularHp": { + "description": "Lossless conversion high-pass triangular dither option" + }, + "trackConvertResamplerSwr": "SWR", + "@trackConvertResamplerSwr": { + "description": "Lossless conversion default FFmpeg swresample resampler option" + }, + "trackConvertResamplerSoxr": "SoXr", + "@trackConvertResamplerSoxr": { + "description": "Lossless conversion SoX resampler option" + }, + "updateSeeReleaseNotes": "See release notes for details.", + "@updateSeeReleaseNotes": { + "description": "Fallback changelog text when release notes cannot be parsed" + }, + "unknownTitle": "Unknown title", + "@unknownTitle": { + "description": "Fallback track title when metadata is missing" + }, + "trackPlayNext": "Play next", + "@trackPlayNext": { + "description": "Menu action to play a track as the next queue item" + }, + "trackAddToQueue": "Add to queue", + "@trackAddToQueue": { + "description": "Menu action to add a track to the playback queue" + }, + "snackbarExtensionInstalledEnable": "{extensionName} installed. Enable it in Settings > Extensions", + "@snackbarExtensionInstalledEnable": { + "description": "Snackbar after installing an extension from the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "snackbarExtensionUpdatedVersion": "{extensionName} updated to v{version}", + "@snackbarExtensionUpdatedVersion": { + "description": "Snackbar after updating an extension from the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + }, + "version": { + "type": "String" + } + } + }, + "snackbarFailedToInstallNamed": "Failed to install {extensionName}", + "@snackbarFailedToInstallNamed": { + "description": "Snackbar when extension install fails in the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "snackbarFailedToUpdateNamed": "Failed to update {extensionName}", + "@snackbarFailedToUpdateNamed": { + "description": "Snackbar when extension update fails in the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "releaseTypeEp": "EP", + "@releaseTypeEp": { + "description": "Badge label for EP releases" + }, + "releaseTypeSingle": "Single", + "@releaseTypeSingle": { + "description": "Badge label for single releases" + }, + "trackCoverOnline": "Online cover", + "@trackCoverOnline": { + "description": "Label shown when metadata autofill downloaded cover art from the internet" + }, + "regionCountryUS": "United States", + "@regionCountryUS": { + "description": "Country name for SongLink region picker" + }, + "regionCountryGB": "United Kingdom", + "@regionCountryGB": { + "description": "Country name for SongLink region picker" + }, + "regionCountryFR": "France", + "@regionCountryFR": { + "description": "Country name for SongLink region picker" + }, + "regionCountryDE": "Germany", + "@regionCountryDE": { + "description": "Country name for SongLink region picker" + }, + "regionCountryJP": "Japan", + "@regionCountryJP": { + "description": "Country name for SongLink region picker" + }, + "regionCountryKR": "South Korea", + "@regionCountryKR": { + "description": "Country name for SongLink region picker" + }, + "regionCountryIN": "India", + "@regionCountryIN": { + "description": "Country name for SongLink region picker" + }, + "regionCountryID": "Indonesia", + "@regionCountryID": { + "description": "Country name for SongLink region picker" + }, + "regionCountryBR": "Brazil", + "@regionCountryBR": { + "description": "Country name for SongLink region picker" + }, + "regionCountryMX": "Mexico", + "@regionCountryMX": { + "description": "Country name for SongLink region picker" + }, + "regionCountryAU": "Australia", + "@regionCountryAU": { + "description": "Country name for SongLink region picker" + }, + "regionCountryCA": "Canada", + "@regionCountryCA": { + "description": "Country name for SongLink region picker" + }, + "regionCountryXK": "Kosovo", + "@regionCountryXK": { + "description": "Country name for SongLink region picker" + }, + "extensionVerificationBrowserTitle": "Verification browser", + "@extensionVerificationBrowserTitle": { + "description": "Settings option title for extension verification browser preference" + }, + "extensionVerificationBrowserSubtitleExternal": "Open challenges in the default browser first", + "@extensionVerificationBrowserSubtitleExternal": { + "description": "Subtitle when external browser is preferred for extension verification" + }, + "extensionVerificationBrowserSubtitleInApp": "Open challenges in the in-app browser first", + "@extensionVerificationBrowserSubtitleInApp": { + "description": "Subtitle when in-app browser is preferred for extension verification" + }, + "extensionVerificationBrowserExternal": "External", + "@extensionVerificationBrowserExternal": { + "description": "Chip label for external browser verification mode" + }, + "extensionVerificationBrowserInApp": "In-app", + "@extensionVerificationBrowserInApp": { + "description": "Chip label for in-app browser verification mode" + }, + "extensionVerificationUnavailable": "No verification page is available for {extension}. Retry the download to request a new challenge.", + "@extensionVerificationUnavailable": { + "description": "Shown when the app cannot retrieve a pending verification challenge", + "placeholders": { + "extension": { + "type": "String" + } + } + }, + "extensionVerificationHelpTitleManual": "Open verification manually", + "@extensionVerificationHelpTitleManual": { + "description": "Dialog title when automatic browser launch for verification fails" + }, + "extensionVerificationHelpTitleWaiting": "Verification still waiting", + "@extensionVerificationHelpTitleWaiting": { + "description": "Dialog title when verification is taking longer than expected" + }, + "extensionVerificationHelpMessageManual": "SpotiFLAC Mobile could not open the browser automatically. Open this link in your browser, or copy it manually.", + "@extensionVerificationHelpMessageManual": { + "description": "Dialog message when automatic browser launch for verification fails" + }, + "extensionVerificationHelpMessageWaiting": "If the browser did not open, or verification finished but did not return to SpotiFLAC Mobile, open this link again or copy it manually.", + "@extensionVerificationHelpMessageWaiting": { + "description": "Dialog message when verification may need manual browser help" + }, + "extensionVerificationClose": "Close", + "@extensionVerificationClose": { + "description": "Button to dismiss the extension verification help dialog" + }, + "extensionVerificationCopyLink": "Copy link", + "@extensionVerificationCopyLink": { + "description": "Button to copy the extension verification URL" + }, + "extensionVerificationLinkCopied": "Verification link copied", + "@extensionVerificationLinkCopied": { + "description": "Snackbar after copying the extension verification URL" + }, + "extensionVerificationOpenBrowser": "Open browser", + "@extensionVerificationOpenBrowser": { + "description": "Button to open the extension verification URL in a browser" + }, "settingsSearchHint": "Search settings", + "@settingsSearchHint": { + "description": "Placeholder of the search field on the Settings tab" + }, "settingsSearchNoResults": "No settings match \"{query}\"", + "@settingsSearchNoResults": { + "description": "Shown when a Settings search returns nothing", + "placeholders": { + "query": { + "type": "String" + } + } + }, "settingsGroupInterface": "Extensions & appearance", + "@settingsGroupInterface": { + "description": "Settings group covering look and feel" + }, "settingsGroupContent": "Content & metadata", + "@settingsGroupContent": { + "description": "Settings group covering the library, metadata and lyrics" + }, "settingsGroupDownloads": "Downloads & files", + "@settingsGroupDownloads": { + "description": "Settings group covering download behaviour and storage" + }, "settingsGroupSystem": "System", + "@settingsGroupSystem": { + "description": "Settings group covering app-level data, cache and logs" + }, "settingsGroupHelp": "About & support", - "collectionExportM3u": "Export as M3U8", - "collectionExportM3uDone": "Exported {exported} of {total} tracks", - "collectionExportM3uNone": "No downloaded files to export", - "collectionExportM3uFailed": "Export failed", - "trackOpenOn": "Open on...", - "trackOpenOnNoLinks": "No platform links found for this track.", - "libraryReviewDuplicates": "Review duplicates", - "libraryReviewDuplicatesSubtitle": "Find tracks stored more than once", - "duplicatesTitle": "Duplicates", - "duplicatesEmpty": "No duplicate tracks found.", - "duplicatesKeepBest": "Keep best", - "duplicatesKeepBestMessage": "Delete {count} lower-quality copies of \"{trackName}\"?", - "duplicatesDeleteCopyMessage": "Delete this copy of \"{trackName}\"?", - "downloadAutoConvert": "Auto-convert after download", - "downloadAutoConvertSubtitle": "Convert completed downloads to a smaller lossy format. The original is replaced only after conversion succeeds.", - "downloadAutoConvertFormat": "Output format", - "downloadAutoConvertFormatSubtitle": "Choose the lossy format used for newly completed downloads.", - "downloadAutoConvertBitrate": "Output quality", - "downloadAutoConvertBitrateSubtitle": "Higher bitrates preserve more detail but create larger files.", - "downloadAutoConvertMp3Subtitle": "Best compatibility across players and devices", - "downloadAutoConvertM4aSubtitle": "Efficient AAC audio in an M4A container", - "downloadAutoConvertOpusSubtitle": "Best efficiency for modern players", - "appearanceForceBlur": "Always use blur effects", - "appearanceForceBlurSubtitle": "Enable the navigation bar blur even on devices where it is off by default. May cost performance.", - "recentClearAllMessage": "Clear all recent activity? Download history and music files will not be deleted.", - "libraryAddFolder": "Add library folder", - "libraryAddFolderSubtitle": "Internal storage, SD card, SSD, or another external drive", - "librarySourceOnline": "Online", - "librarySourceOffline": "Offline. Reconnect the storage to restore these tracks", - "librarySourceDisabled": "Disabled", - "librarySourceScanCount": "{scanned} of {total} files scanned ({progress}%)", - "libraryExternalStorage": "External storage", - "libraryRemoveFolder": "Remove library folder", - "libraryRemoveFolderMessage": "Remove this folder and its indexed tracks from SpotiFLAC Mobile? Audio files on the storage will not be deleted.", - "trackReEnrichModeIsrc": "ISRC only", - "trackReEnrichModeIsrcSubtitle": "Find and add the recording identifier without changing other tags", - "trackReEnrichModeMissing": "Fill missing tags", - "trackReEnrichModeMissingSubtitle": "Keep existing values and fill only fields that are empty", - "trackReEnrichModeReplace": "Update selected tags", - "trackReEnrichModeReplaceSubtitle": "Choose which existing values may be replaced by online metadata", - "trackReEnrichFieldsTitle": "Tags to update", - "trackReEnrichReview": "Review changes", - "trackReEnrichReviewTitle": "Review metadata changes", - "trackReEnrichReviewSubtitle": "{changeCount} proposed changes across {trackCount} tracks", - "trackReEnrichNoChanges": "No metadata changes were found for the selected tracks.", - "trackReEnrichApplyChanges": "Apply changes", - "trackReEnrichRefreshOnline": "Refresh from online", - "editMetadataAutoFillSource": "Metadata source", - "editMetadataAutoFillSourceAutomatic": "Automatic (provider priority)", - "editMetadataAutoFillFind": "Find metadata", - "editMetadataAutoFillPreview": "Data from {source}", - "editMetadataAutoFillCoverAvailable": "Cover artwork available", - "editMetadataAutoFillApply": "Apply selected data", - "editMetadataAutoFillDoneFromSource": "Filled {count} {count, plural, =1{field} other{fields}} from {source}", - "queuePlaylistCount": "{count, plural, =1{1 playlist} other{{count} playlists}}", - "queueEmptyPlaylistsSubtitle": "Create a playlist to organize your tracks", - "libraryDefaultView": "Default view", - "libraryDefaultViewLastUsed": "Last used", - "audioAnalysisCutoffNotDetected": "Not detected", - "queueCancelledTitle": "Download cancelled", - "queueCancelledMessage": "This download was cancelled. Retry it or remove it from the queue.", - "trackCoverResolution": "Cover resolution", - "trackCoverResolutionHint": "Sets the longest edge when saved. Enlarging does not add image detail.", - "trackCoverResizeFailed": "The cover image could not be resized. Please try another size or image.", - "queueDownloadNext": "Download next", - "queueMoveUp": "Move up", - "queueMoveDown": "Move down", - "editMetadataMusicBrainzButton": "Fetch from MusicBrainz", - "editMetadataMusicBrainzFilled": "Updated from MusicBrainz", - "editMetadataMusicBrainzNothing": "Nothing found on MusicBrainz", - "editMetadataMusicBrainzNeedsIsrc": "Requires an ISRC tag", - "nowPlayingRepeatOff": "Repeat off", - "nowPlayingRepeatAll": "Repeat all", - "nowPlayingRepeatOne": "Repeat one", - "queueNetworkFailedOffline": "{count} downloads failed while offline", - "trackAlbumType": "Release Type", - "editMetadataFieldAlbumTypeHint": "Album, single, EP, compilation...", - "editMetadataFieldExplicit": "Explicit", - "editMetadataFieldExplicitHint": "Mark this track as containing explicit content", - "metadataExplicitValue": "Explicit", - "editMetadataFieldUpc": "UPC / Barcode", - "editMetadataFieldUpcHint": "Numeric UPC, EAN, or GTIN", - "libraryFilterMetadataMissingIsrc": "Missing ISRC" + "@settingsGroupHelp": { + "description": "Settings group covering the about page and donations" + }, + "libraryFilterMetadataMissingLyrics": "Missing lyrics", + "@libraryFilterMetadataMissingLyrics": { + "description": "Filter option for tracks without embedded or sidecar lyrics" + }, + "trackOptionCopyTrackName": "Copy track name", + "@trackOptionCopyTrackName": { + "description": "Track menu action that copies the track title" + }, + "trackOptionCopyArtist": "Copy artist", + "@trackOptionCopyArtist": { + "description": "Track menu action that copies the artist name" + }, + "trackOptionCopyTrackAndArtist": "Copy track and artist", + "@trackOptionCopyTrackAndArtist": { + "description": "Track menu action that copies the track title and artist" + }, + "metadataCopyValue": "Copy value", + "@metadataCopyValue": { + "description": "Metadata menu action that copies only the selected value" + }, + "metadataCopyField": "Copy field and value", + "@metadataCopyField": { + "description": "Metadata menu action that copies the selected key and value" + }, + "mornyeShowTabs": "Show tabs", + "mornyeSearch": "Search", + "mornyeContinuePlaying": "Continue Playing", + "metadataCopyAll": "Copy all metadata", + "@metadataCopyAll": { + "description": "Metadata menu action that copies every visible key and value" + }, + "optionsEmbeddedCoverSize": "Embedded Cover Size", + "@optionsEmbeddedCoverSize": { + "description": "Metadata setting that limits downloaded artwork resolution before it is embedded" + }, + "optionsEmbeddedCoverSizeDescription": "Downscale remotely downloaded cover art before embedding it. Images already within the limit are kept unchanged.", + "@optionsEmbeddedCoverSizeDescription": { + "description": "Description shown in the embedded cover size picker" + }, + "mornyeFavorite": "Favorite", + "mornyeGoToArtist": "Go to Artist", + "@mornyeFavorite": { + "description": "Compact context menu action that adds a track to Loved" + }, + "mornyeFavorited": "Favorited", + "@mornyeFavorited": { + "description": "Selected state of the compact favorite action" + }, + "autoMixDescription": "Blend songs with beat matching and pitch-preserving tempo adjustment. Uses crossfade when beats cannot be matched.", + "autoMixOn": "AutoMix on", + "autoMixOff": "AutoMix off", + "profileTitle": "Profile", + "profileSetUp": "Set up your profile", + "profileEdit": "Edit name and photo", + "backupIncludesProfile": "Includes your profile name and photo", + "profileName": "Name", + "profileNameHint": "Your name", + "profileChangePhoto": "Choose photo", + "profileRemovePhoto": "Remove photo", + "profilePhotoError": "Choose a valid image smaller than 20 MB.", + "profileSaveError": "Could not save your profile. Please try again.", + "optionsEmbeddedCoverSizeOriginal": "Original resolution", + "@optionsEmbeddedCoverSizeOriginal": { + "description": "Option that preserves the provider artwork at its original resolution" + } } diff --git a/lib/l10n/arb/app_uk.arb b/lib/l10n/arb/app_uk.arb index 565eb9cf..b03fcdd8 100644 --- a/lib/l10n/arb/app_uk.arb +++ b/lib/l10n/arb/app_uk.arb @@ -1,78 +1,278 @@ { + "upgradeIntroWelcome": "Welcome to\nSpotiFLAC-Mobile 5.0", + "upgradeIntroThemeTitle": "Make it\nyour own.", + "upgradeIntroThemeBody": "Choose a look. Your choice applies immediately, and you can change it later in Appearance.", + "upgradeIntroThemeMaterialBody": "The familiar layout, with Material controls and your accent color.", + "upgradeIntroThemeMornyeBody": "Glass navigation, a redesigned Library and an immersive player.", + "upgradeIntroRustTitle": "A new engine.\nBuilt with Rust.", + "upgradeIntroRustBody": "In 5.0, the app’s backend has moved from Go to Rust. It is the engine working behind the screens you use every day.", + "upgradeIntroRustEngineTitle": "Working behind the scenes", + "upgradeIntroRustEngineBody": "Rust handles downloads, audio metadata, library scanning and the extension runtime on Android and iOS.", + "upgradeIntroRustMemoryTitle": "More careful with memory", + "upgradeIntroRustMemoryBody": "Reused buffers and fewer copies reduce temporary allocations when processing artwork and extension data.", + "upgradeIntroRustKeepTitle": "Keep your music", + "upgradeIntroRustKeepBody": "No need to download your collection again. Your saved music and settings stay in place, with no new setup required.", + "upgradeIntroWelcomeBody": "A quick look at what has changed, and where to find it.", + "upgradeIntroMornyeBody": "A new look for your player, lyrics and navigation.", + "upgradeIntroLibrarySummary": "Browse your music by playlist, artist or album.", + "upgradeIntroRepoSummary": "Choose your music sources and providers through extensions.", + "upgradeIntroLibraryTitle": "Get to know\nyour Library.", + "upgradeIntroLibraryBody": "In Mornye, browse by category or find your albums in Recently Added.", + "upgradeIntroDownloadsBody": "Pause and retry from Downloads at the top right. Finished music moves to Recently Added.", + "upgradeIntroSearchBody": "Search saved music here. The separate Search tab looks through your extensions.", + "upgradeIntroPlayerTitle": "Set up\nyour player.", + "upgradeIntroPlayerBody": "You can change your theme and playback options at any time. Here is where to find them.", + "upgradeIntroAppearanceBody": "Change themes in Settings → Appearance. In Mornye, scroll down for compact navigation; scroll up to expand it.", + "upgradeIntroAutoMixBody": "Match tempo and beats between tracks. Enable it in Settings → Local Library → Playback. Off by default.", + "upgradeIntroSettingsBody": "In Mornye, tap your profile on Home to open Settings and edit your name and photo.", + "upgradeIntroSkip": "Skip", + "upgradeIntroContinue": "Continue", + "upgradeIntroDone": "Start listening", + "upgradeIntroReplay": "What’s new in 5.0", + "cacheMotionArtwork": "Offline motion covers", + "cacheMotionArtworkDesc": "Album videos saved with downloads. Removing them keeps your music files and static covers.", + "nowPlayingVolume": "Volume", + "@nowPlayingVolume": { + "description": "System volume control label in the Mornye player" + }, + "appearanceStyle": "App Style", + "@appearanceStyle": { + "description": "Appearance section for choosing the app visual style" + }, + "discordRichPresence": "Discord Rich Presence", + "discordPresenceDescription": "Share the track playing in the built-in player on Discord. Requires Discord to be installed and signed in.", + "discordPresenceMissing": "Install Discord and sign in, then turn this setting off and on again.", + "discordPresenceUnavailable": "Discord Rich Presence is unavailable in this build or on this device.", "@@locale": "uk", "@@last_modified": "2026-04-28", - "libraryEnableLocalLibrarySubtitle": "Скануати та відстежити свою існуючу музику", - "@libraryEnableLocalLibrarySubtitle": { - "description": "Subtitle for enable toggle" + "appName": "", + "@appName": { + "description": "App name - DO NOT TRANSLATE" }, - "@audioAnalysisCodec": { - "description": "Audio codec metric label" + "navHome": "Головна", + "@navHome": { + "description": "Bottom navigation - Home tab" }, - "extensionUtilityFunctions": "Utility Functions", - "@extensionUtilityFunctions": { - "description": "Capability label for utility-only extensions" + "navLibrary": "Бібліотека", + "@navLibrary": { + "description": "Bottom navigation - Library tab" }, - "logClearLogsMessage": "Ви впевнені, що хочете очистити всі журнали?", - "@logClearLogsMessage": { - "description": "Clear logs confirmation message" + "navSettings": "Налаштування", + "@navSettings": { + "description": "Bottom navigation - Settings tab" }, - "@storeClearFilters": { - "description": "Button to clear all filters" + "navStore": "Репозиторій", + "@navStore": { + "description": "Bottom navigation - Extension repo tab" }, - "cacheCleanupUnused": "Очищення невикористаних даних", - "@cacheCleanupUnused": { - "description": "Action title for cleaning unused entries" + "homeTitle": "Головна", + "@homeTitle": { + "description": "Home screen title" }, - "trackConvertDitherNone": "None", - "@trackConvertDitherNone": { - "description": "Lossless conversion dither option with no dithering applied" + "homeSubtitle": "Вставте URL-адресу яка підтримується, або виконайте пошук за назвою", + "@homeSubtitle": { + "description": "Subtitle shown below search box" }, - "libraryTracksUnit": "{count, plural, =1{трек} other{треків}}", - "@libraryTracksUnit": { - "description": "Unit label for tracks count (without the number itself)", + "homeEmptyTitle": "", + "@homeEmptyTitle": { + "description": "Title shown on home when no providers are available yet" + }, + "homeEmptySubtitle": "Install an extension to continue.", + "@homeEmptySubtitle": { + "description": "Subtitle shown on home when no providers are available yet" + }, + "homeSupports": "Підтримує: URL-адреси треків, альбомів, списків відтворення, виконавців", + "@homeSupports": { + "description": "Info text about supported URL types" + }, + "homeRecent": "Нещодавні", + "@homeRecent": { + "description": "Section header for recent searches" + }, + "historyFilterAll": "Усі", + "@historyFilterAll": { + "description": "Filter chip - show all items" + }, + "historyFilterAlbums": "Альбоми", + "@historyFilterAlbums": { + "description": "Filter chip - show albums only" + }, + "historyFilterSingles": "Сингли", + "@historyFilterSingles": { + "description": "Filter chip - show singles only" + }, + "libraryRecentlyAdded": "Recently Added", + "libraryDownloads": "Downloads", + "libraryNoActiveDownloads": "No active downloads", + "librarySearchHint": "Search your library", + "libraryEmptyCollection": "Your music will appear here", + "historySearchHint": "Історія пошуку...", + "@historySearchHint": { + "description": "Search bar placeholder in history" + }, + "settingsTitle": "Налаштування", + "@settingsTitle": { + "description": "Settings screen title" + }, + "settingsDownload": "Завантаження", + "@settingsDownload": { + "description": "Settings section - download options" + }, + "settingsAppearance": "Зовнішній вигляд", + "@settingsAppearance": { + "description": "Settings section - visual customization" + }, + "settingsExtensions": "Розширення", + "@settingsExtensions": { + "description": "Settings section - extension management" + }, + "settingsAbout": "Про додаток", + "@settingsAbout": { + "description": "Settings section - app info" + }, + "downloadTitle": "Завантажити", + "@downloadTitle": { + "description": "Download settings page title" + }, + "downloadAskQualitySubtitle": "Показувати вікно вибору якості для кожного завантаження", + "@downloadAskQualitySubtitle": { + "description": "Subtitle for ask quality toggle" + }, + "downloadFilenameFormat": "Формат імені файлу", + "@downloadFilenameFormat": { + "description": "Setting for output filename pattern" + }, + "downloadSingleFilenameFormat": "Формат імені одного файлу", + "@downloadSingleFilenameFormat": { + "description": "Setting for output filename pattern for singles/EPs" + }, + "downloadSingleFilenameFormatDescription": "Шаблон назви файлу для синглів та міні-альбомів. Використовує ті самі теги, що й формат альбому.", + "@downloadSingleFilenameFormatDescription": { + "description": "Subtitle description for single filename format setting" + }, + "downloadFolderOrganization": "Організація папок", + "@downloadFolderOrganization": { + "description": "Title of the folder organization picker bottom sheet" + }, + "appearanceTitle": "Зовнішній вигляд", + "@appearanceTitle": { + "description": "Appearance settings page title" + }, + "appearanceThemeSystem": "Системний", + "@appearanceThemeSystem": { + "description": "Follow system theme" + }, + "appearanceThemeLight": "Світлий", + "@appearanceThemeLight": { + "description": "Light theme" + }, + "appearanceThemeDark": "Темний", + "@appearanceThemeDark": { + "description": "Dark theme" + }, + "appearanceDynamicColor": "Динамічний колір", + "@appearanceDynamicColor": { + "description": "Material You dynamic colors" + }, + "appearanceDynamicColorSubtitle": "Використати кольори зі своїх шпалер", + "@appearanceDynamicColorSubtitle": { + "description": "Subtitle for dynamic color" + }, + "appearanceHistoryView": "Історія переглядів", + "@appearanceHistoryView": { + "description": "Layout style for history" + }, + "appearanceHistoryViewList": "Список", + "@appearanceHistoryViewList": { + "description": "List layout option" + }, + "appearanceHistoryViewGrid": "Сітка", + "@appearanceHistoryViewGrid": { + "description": "Grid layout option" + }, + "optionsPrimaryProvider": "Основний постачальник", + "@optionsPrimaryProvider": { + "description": "Main search provider setting" + }, + "optionsPrimaryProviderSubtitle": "Service used for searching by track or album name", + "@optionsPrimaryProviderSubtitle": { + "description": "Subtitle for primary provider" + }, + "optionsUsingExtension": "Використання розширення: {extensionName}", + "@optionsUsingExtension": { + "description": "Shows active extension name", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "optionsDefaultSearchTab": "Вкладка пошуку за замовчуванням", + "@optionsDefaultSearchTab": { + "description": "Title for the preferred default search tab setting" + }, + "optionsDefaultSearchTabSubtitle": "Виберіть, яка вкладка відкриється першою для нових результатів пошуку.", + "@optionsDefaultSearchTabSubtitle": { + "description": "Subtitle for the preferred default search tab setting" + }, + "optionsAutoFallback": "Автоматичний резервний варіант", + "@optionsAutoFallback": { + "description": "Auto-retry with other services" + }, + "optionsAutoFallbackSubtitle": "Спробувати інші сервіси, якщо завантаження не вдається", + "@optionsAutoFallbackSubtitle": { + "description": "Subtitle for auto fallback" + }, + "optionsEmbedLyrics": "Вбудований текст пісні", + "@optionsEmbedLyrics": { + "description": "Embed lyrics in audio files" + }, + "optionsEmbedLyricsSubtitle": "Save synced lyrics alongside your downloaded tracks", + "@optionsEmbedLyricsSubtitle": { + "description": "Subtitle for embed lyrics" + }, + "optionsReplayGain": "Нормалізація звуку", + "@optionsReplayGain": { + "description": "Title for ReplayGain setting toggle" + }, + "optionsReplayGainSubtitleOn": "Сканування гучності та вбудовування тегів нормалізації звуку (EBU R128)", + "@optionsReplayGainSubtitleOn": { + "description": "Subtitle when ReplayGain is enabled" + }, + "optionsReplayGainSubtitleOff": "Вимкнено: немає тегів нормалізації гучності", + "@optionsReplayGainSubtitleOff": { + "description": "Subtitle when ReplayGain is disabled" + }, + "trackReplayGain": "Rescan ReplayGain", + "@trackReplayGain": { + "description": "Three-dot menu option to scan loudness and write ReplayGain tags" + }, + "trackReplayGainScanning": "Analyzing loudness...", + "@trackReplayGainScanning": { + "description": "Snackbar/progress message while scanning ReplayGain for a single track" + }, + "trackReplayGainSuccess": "ReplayGain tags added", + "@trackReplayGainSuccess": { + "description": "Snackbar message after ReplayGain tags written for a single track" + }, + "trackReplayGainFailed": "Failed to add ReplayGain tags", + "@trackReplayGainFailed": { + "description": "Snackbar message when ReplayGain scan/write fails" + }, + "selectionReplayGainCount": "ReplayGain ({count})", + "@selectionReplayGainCount": { + "description": "Batch selection action button label for ReplayGain", "placeholders": { "count": { "type": "int" } } }, - "folderOrganizationNone": "Жодної організації", - "@folderOrganizationNone": { - "description": "Folder option - flat structure" - }, - "@storeRepoUrlHint": { - "description": "Hint/placeholder for the repository URL input field" - }, - "@trackConvertConfirmTitle": { - "description": "Confirmation dialog title" - }, - "@extensionPatternsCount": { - "description": "URL patterns count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "audioAnalysisContainer": "Container", - "@audioAnalysisContainer": { - "description": "Audio container metric label" - }, - "libraryAutoScanOff": "Вимкнено", - "@libraryAutoScanOff": { - "description": "Auto scan disabled" - }, - "shareSheetLinkCopied": "{service} link copied", - "@shareSheetLinkCopied": { - "description": "Snackbar after copying a cross-service link", - "placeholders": { - "service": {} - } - }, - "providerPriorityFallbackExtensionsDescription": "Choose which installed download extensions can be used during automatic fallback.", - "@providerPriorityFallbackExtensionsDescription": { - "description": "Section description for extension fallback selection" + "replayGainBatchConfirmTitle": "Add ReplayGain", + "@replayGainBatchConfirmTitle": { + "description": "Title of the batch ReplayGain confirmation dialog" }, + "replayGainBatchConfirmMessage": "Analyze loudness and write ReplayGain tags to {count} track(s)?", "@replayGainBatchConfirmMessage": { "description": "Message of the batch ReplayGain confirmation dialog", "placeholders": { @@ -81,75 +281,12 @@ } } }, - "@extensionsHomeFeedUse": { - "description": "Extensions page - subtitle for a specific extension home feed option", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "selectionShareCount": "Поділитися {count} {count, plural, =1{трек} other{треків}}", - "@selectionShareCount": { - "description": "Share button text with count in selection mode", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@storeExtensionsCount": { - "description": "Store extension result count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@logSearchHint": { - "description": "Log search placeholder" - }, - "@audioAnalysisSamples": { - "description": "Total samples metric label" - }, - "trackCoverReplace": "Replace Cover", - "@trackCoverReplace": { - "description": "Button label for replacing selected cover art" - }, - "@discographyAddedToQueue": { - "description": "Snackbar - tracks added from discography", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadAppleElrcWordSyncEnabled": "Raw word-by-word timestamps preserved", - "@downloadAppleElrcWordSyncEnabled": { - "description": "Subtitle when Apple Music eLRC word sync is enabled" - }, - "@nowPlayingDetails": { - "description": "Menu item and section title for track metadata details" - }, - "@trackGenre": { - "description": "Metadata label - music genre" - }, - "recentTypeSong": "Пісня", - "@recentTypeSong": { - "description": "Recent access item type - song/track" - }, - "logShareLogs": "Журнали обміну", - "@logShareLogs": { - "description": "Share button tooltip" - }, - "@storeFilterLyrics": { - "description": "Repo filter - lyrics providers" - }, - "extensionsInstallButton": "Встановити розширення", - "@extensionsInstallButton": { - "description": "Button to install extension from file" + "replayGainBatchAnalyzing": "Analyzing ReplayGain...", + "@replayGainBatchAnalyzing": { + "description": "Progress dialog title while batch scanning ReplayGain" }, "replayGainBatchSuccess": "ReplayGain added to {success} of {total} tracks", + "replayGainUnsupportedDecoder": "Some tracks could not be analyzed because their audio codec is not supported by the ReplayGain decoder. Their files were not changed.", "@replayGainBatchSuccess": { "description": "Snackbar after batch ReplayGain completes", "placeholders": { @@ -161,548 +298,536 @@ } } }, - "nowPlayingMinimize": "Minimize", - "@nowPlayingMinimize": { - "description": "Tooltip for minimizing the now playing screen" + "optionsArtistTagMode": "Режим тегу виконавця", + "@optionsArtistTagMode": { + "description": "Setting title for how artist metadata is written into files" }, - "logIssueNetworkErrorSuggestion": "Check your internet connection", - "@logIssueNetworkErrorSuggestion": { - "description": "Diagnostic badge suggestion for generic network errors" + "optionsArtistTagModeDescription": "Виберіть, як будуть записуватися кілька виконавців у вбудовані теги.", + "@optionsArtistTagModeDescription": { + "description": "Bottom-sheet description for artist tag mode setting" }, - "extensionsNoExtensions": "Розширень не встановлено", - "@extensionsNoExtensions": { - "description": "Empty state - no extensions" + "optionsArtistTagModeJoined": "Одне об'єднане значення", + "@optionsArtistTagModeJoined": { + "description": "Artist tag mode option that joins multiple artists into one value" }, - "@cacheRefresh": { - "description": "Tooltip for refresh button on cache management page" + "optionsArtistTagModeJoinedSubtitle": "Для максимальної сумісності програвача напишіть одне значення ARTIST, наприклад, «Виконавець A, Виконавець B».", + "@optionsArtistTagModeJoinedSubtitle": { + "description": "Subtitle for joined artist tag mode" }, - "@snackbarHistoryCleared": { - "description": "Snackbar - history deleted" + "optionsArtistTagModeSplitVorbis": "Розділені теги для FLAC/Opus", + "@optionsArtistTagModeSplitVorbis": { + "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" }, - "cueSplitFailed": "Розділення CUE не вдалося", - "@cueSplitFailed": { - "description": "Snackbar when CUE split fails" - }, - "trackConvertLosslessSuffix": "Lossless", - "@trackConvertLosslessSuffix": { - "description": "Suffix used in converted lossless quality labels" - }, - "homeSubtitle": "Вставте URL-адресу яка підтримується, або виконайте пошук за назвою", - "@homeSubtitle": { - "description": "Subtitle shown below search box" - }, - "selectionBatchConvertConfirmMessageLossless": "Конвертувати {count} {count, plural, =1{трек} other{треків}} у {format}? (Lossless — без втрати якості)\n\nОригінальні файли будуть видалені після конвертації.", - "@selectionBatchConvertConfirmMessageLossless": { - "description": "Confirmation dialog message for lossless batch conversion", - "placeholders": { - "count": { - "type": "int" - }, - "format": { - "type": "String" - } - } - }, - "@extensionVerificationHelpMessageManual": { - "description": "Dialog message when automatic browser launch for verification fails" - }, - "queueRateLimitMessage": "This track may still be available. Wait a few minutes, reduce parallel downloads, then retry.", - "@queueRateLimitMessage": { - "description": "Explanation shown on a failed queue item when the download service rate limits requests" - }, - "searchSortDateOldest": "Дата випуску (найстаріша)", - "@searchSortDateOldest": { - "description": "Sort option - oldest release first" - }, - "nowPlayingShuffleOn": "Shuffle on", - "@nowPlayingShuffleOn": { - "description": "Tooltip when shuffle mode is enabled" - }, - "sectionColor": "Колір", - "@sectionColor": { - "description": "Settings section header" - }, - "@providerPriorityFallbackExtensionsHint": { - "description": "Hint below the extension fallback selection list" - }, - "cacheCoverImage": "Кеш зображень обкладинок", - "@cacheCoverImage": { - "description": "Cache item title for persistent cover images" - }, - "@navSettings": { - "description": "Bottom navigation - Settings tab" - }, - "@trackCoverReplaceNotice": { - "description": "Notice shown when a new cover has been selected but not saved yet" - }, - "cueSplitConfirmTitle": "Розділений альбом CUE", - "@cueSplitConfirmTitle": { - "description": "CUE split confirmation dialog title" - }, - "@trackDeleteConfirmMessage": { - "description": "Delete confirmation message" - }, - "cacheClearSuccess": "Очищено: {target}", - "@cacheClearSuccess": { - "description": "Snackbar after clearing selected cache", - "placeholders": { - "target": { - "type": "String" - } - } - }, - "editMetadataFieldCover": "Обкладинка", - "@editMetadataFieldCover": { - "description": "Chip label for cover art field in auto-fill selector" - }, - "snackbarSelectExtFile": "Будь ласка, виберіть файл .spotiflac-ext", - "@snackbarSelectExtFile": { - "description": "Snackbar - wrong file type selected" - }, - "libraryFilterFormat": "Формат", - "@libraryFilterFormat": { - "description": "Filter section - file format" - }, - "@downloadLossyAac": { - "description": "Lossy format option - AAC in M4A container at 320kbps" - }, - "@setupNext": { - "description": "Next button text" - }, - "@releaseTypeSingle": { - "description": "Badge label for single releases" - }, - "@optionsDefaultSearchTab": { - "description": "Title for the preferred default search tab setting" - }, - "trackConvertLosslessOutputWithCap": "Lossless output with {quality} cap", - "@trackConvertLosslessOutputWithCap": { - "description": "Hint shown when lossless conversion will cap bit depth or sample rate", - "placeholders": { - "quality": { - "type": "String" - } - } - }, - "bulkDownloadSelectPlaylists": "Вибрати списки відтворення для завантаження", - "@bulkDownloadSelectPlaylists": { - "description": "Button label when no playlists are selected for download" - }, - "artistOptionAddToFavorites": "Add to Favorite Artists", - "@artistOptionAddToFavorites": { - "description": "Action label - add artist to favorite artists" - }, - "@timeJustNow": { - "description": "Relative time - less than a minute ago" - }, - "downloadLossyOpus256": "Opus 256 кбіт/с", - "@downloadLossyOpus256": { - "description": "Lossy format option - Opus 256kbps" - }, - "discographySinglesOnlySubtitle": "{count} треків з {albumCount} синглів", - "@discographySinglesOnlySubtitle": { - "description": "Subtitle showing singles tracks count", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } + "optionsArtistTagModeSplitVorbisSubtitle": "Для FLAC та Opus на кожного виконавця додати окремий тег виконавця; MP3 та M4A залишаються об’єднаними.", + "@optionsArtistTagModeSplitVorbisSubtitle": { + "description": "Subtitle for split Vorbis artist tag mode" }, "optionsExtensionStore": "Репозиторій розширень", "@optionsExtensionStore": { "description": "Show/hide repo tab" }, - "libraryDownloadsHistoryExcluded": "{count} from Downloads history (excluded from list)", - "@libraryDownloadsHistoryExcluded": { - "description": "Library count note for downloaded history items excluded from the local list", - "placeholders": { - "count": { - "type": "int" - } - } + "optionsExtensionStoreSubtitle": "Показати вкладку «Репозиторій» у навігації", + "@optionsExtensionStoreSubtitle": { + "description": "Subtitle for extension repo toggle" }, - "@errorUrlFetchFailed": { - "description": "Error message - generic URL fetch failure" + "optionsCheckUpdates": "Перевірити наявність оновлень", + "@optionsCheckUpdates": { + "description": "Auto update check toggle" }, - "@trackOptionAddToWishlist": { - "description": "Bottom sheet action label - add track to wishlist" + "optionsCheckUpdatesSubtitle": "Повідомити, коли буде доступна нова версія", + "@optionsCheckUpdatesSubtitle": { + "description": "Subtitle for update check" }, - "discographySinglesOnly": "Тільки сингли та міні-альбоми", - "@discographySinglesOnly": { - "description": "Option - download only singles" + "optionsUpdateChannel": "Канал оновлень", + "@optionsUpdateChannel": { + "description": "Stable vs preview releases" }, - "@downloadSongLinkRegionDesc": { - "description": "Description in SongLink region picker" + "optionsUpdateChannelStable": "Тільки стабільні релізи", + "@optionsUpdateChannelStable": { + "description": "Only stable updates" }, - "notifEmbeddingMetadata": "Вбудовування метаданих...", - "@notifEmbeddingMetadata": { - "description": "Notification body while embedding metadata into a downloaded track" + "optionsUpdateChannelPreview": "Отримати попередні релізи", + "@optionsUpdateChannelPreview": { + "description": "Include beta/preview updates" }, - "@settingsLocalLibrarySubtitle": { - "description": "Subtitle for local library settings" + "optionsUpdateChannelWarning": "Тестовий реліз може містити помилки або неповні функції", + "@optionsUpdateChannelWarning": { + "description": "Warning about preview channel" }, - "@downloadLocationSubtitle": { - "description": "Subtitle shown in the download location picker sheet" + "optionsClearHistory": "Очистити історію завантажень", + "@optionsClearHistory": { + "description": "Delete all download history" }, - "trackConvertOriginalQuality": "Original quality", - "@trackConvertOriginalQuality": { - "description": "Label when no bit depth or sample rate cap is applied during lossless conversion" + "optionsClearHistorySubtitle": "Видалити всі завантажені треки з історії", + "@optionsClearHistorySubtitle": { + "description": "Subtitle for clear history" }, - "nowPlayingTabLyrics": "Lyrics", - "@nowPlayingTabLyrics": { - "description": "Tab label for the lyrics view" + "optionsDetailedLogging": "Детальне журналювання", + "@optionsDetailedLogging": { + "description": "Enable verbose logs for debugging" }, - "selectionConvertCount": "Конвертувати {count} {count, plural, =1{трек} other{треків}}", - "@selectionConvertCount": { - "description": "Convert button text with count in selection mode", - "placeholders": { - "count": { - "type": "int" - } - } + "optionsDetailedLoggingOn": "Ведеться детальний журнал", + "@optionsDetailedLoggingOn": { + "description": "Status when logging enabled" }, - "@extensionsInstalledSection": { - "description": "Section header - installed extensions" + "optionsDetailedLoggingOff": "Увімкнути для звітів про помилки", + "@optionsDetailedLoggingOff": { + "description": "Status when logging disabled" }, - "@downloadNetworkCompatibilityModeDisabled": { - "description": "Subtitle when network compatibility mode is off" + "extensionsTitle": "Розширення", + "@extensionsTitle": { + "description": "Extensions page title" }, - "nowPlayingShuffleLibrary": "Shuffle library", - "@nowPlayingShuffleLibrary": { - "description": "Button label to shuffle and play the entire local library" + "extensionsDisabled": "Вимкнені", + "@extensionsDisabled": { + "description": "Extension status - inactive" }, - "trackReEnrichFieldCover": "Обкладинка", - "@trackReEnrichFieldCover": { - "description": "Checkbox label for cover art field in re-enrich" - }, - "tutorialExtensionsTip3": "Connect accounts when required and keep extensions up to date", - "@tutorialExtensionsTip3": { - "description": "Tutorial extensions tip 3" - }, - "@cacheCleanupUnusedDesc": { - "description": "Description of what cleanup unused data does" - }, - "a11yOpenAlbum": "Open album {albumName}", - "@a11yOpenAlbum": { - "description": "Accessibility label for opening an album", - "placeholders": { - "albumName": { - "type": "String" - } - } - }, - "@settingsLyrics": { - "description": "Settings menu item - lyrics settings" - }, - "nowPlayingQueueEmpty": "Queue is empty", - "@nowPlayingQueueEmpty": { - "description": "Empty state when the playback queue has no items" - }, - "@settingsDownload": { - "description": "Settings section - download options" - }, - "notifTracksDownloadedSuccess": "{count, plural, =1{1 track downloaded successfully} other{{count} tracks downloaded successfully}}", - "@notifTracksDownloadedSuccess": { - "description": "Notification body for queue complete - how many tracks were downloaded", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storeCategoryDownload": "Download", - "@storeCategoryDownload": { - "description": "Store extension category - download" - }, - "aboutTelegramChannel": "Телеграм-канал", - "@aboutTelegramChannel": { - "description": "Link to Telegram channel" - }, - "@downloadedAlbumDiscHeader": { - "description": "Header for disc separator in multi-disc albums", - "placeholders": { - "discNumber": { - "type": "int", - "example": "1" - } - } - }, - "@recentEmpty": { - "description": "Empty state text for recent access list" - }, - "@backupRestoreConfirmMessage": { - "description": "Confirmation dialog message before restoring a backup" - }, - "@shareSheetCopyLink": { - "description": "Tooltip for copying a cross-service link" - }, - "regionCountryID": "Indonesia", - "@regionCountryID": { - "description": "Country name for SongLink region picker" - }, - "@libraryInLibrary": { - "description": "Badge shown on tracks that exist in local library" - }, - "extensionPostProcessingHooks": "Хуки пост-обробки", - "@extensionPostProcessingHooks": { - "description": "Capability - post-processing" - }, - "@setupGrantPermission": { - "description": "Button to request permission" - }, - "storeFilterDownload": "Завантажити", - "@storeFilterDownload": { - "description": "Repo filter - download providers" - }, - "@collectionAddToPlaylist": { - "description": "Action to add a track to user playlist" - }, - "@discographyFailedToFetch": { - "description": "Error - some albums failed to load" - }, - "@updateWhatsNew": { - "description": "Changelog section title" - }, - "@setupLanguageDescription": { - "description": "Description for the language selection step in setup" - }, - "dialogDeleteSelectedTitle": "Видалити вибране", - "@dialogDeleteSelectedTitle": { - "description": "Dialog title - delete selected items" - }, - "trackCoverPick": "Pick Cover", - "@trackCoverPick": { - "description": "Button label for selecting cover art" - }, - "@collectionCreatePlaylist": { - "description": "Action to create a new playlist" - }, - "selectionBatchConvertSuccess": "Конвертовано {success} з {total} треків у {format}", - "@selectionBatchConvertSuccess": { - "description": "Snackbar after batch conversion completes", - "placeholders": { - "success": { - "type": "int" - }, - "total": { - "type": "int" - }, - "format": { - "type": "String" - } - } - }, - "qualityHiResFlacMax": "FLAC Max з високою роздільною здатністю", - "@qualityHiResFlacMax": { - "description": "Quality option - maximum resolution FLAC" - }, - "audioAnalysisStereo": "Stereo", - "@audioAnalysisStereo": { - "description": "Audio channel layout label - stereo" - }, - "backupExportButton": "Create backup file", - "@backupExportButton": { - "description": "Button to create and share a backup file" - }, - "settingsApp": "App", - "@settingsApp": { - "description": "Settings menu item - app settings" - }, - "clickableInformationUnavailable": "{type} information not available", - "@clickableInformationUnavailable": { - "description": "Snackbar shown when clickable metadata cannot open a destination", - "placeholders": { - "type": { - "type": "String" - } - } - }, - "@logFilterLevel": { - "description": "Filter by log level" - }, - "sectionTheme": "Тема", - "@sectionTheme": { - "description": "Settings section header" - }, - "@extensionActionFailed": { - "description": "Fallback error when an extension action fails without details" - }, - "@downloadAppleElrcWordSync": { - "description": "Setting for preserving Apple Music word-by-word eLRC timestamps" - }, - "@extensionsNoCustomSearch": { - "description": "Empty state - no search providers" - }, - "@collectionPlaylistRemoveCover": { - "description": "Bottom sheet action to remove custom cover image from a playlist" - }, - "@tutorialWelcomeDesc": { - "description": "Tutorial welcome page description" - }, - "@tutorialSearchDesc": { - "description": "Tutorial search page description" - }, - "collectionAddedToWishlist": "\"{trackName}\" додано до списку бажань", - "@collectionAddedToWishlist": { - "description": "Snackbar after adding track to wishlist", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "logAffectedDomains": "Affected: {domains}", - "@logAffectedDomains": { - "description": "Affected domains in log issue analysis", - "placeholders": { - "domains": { - "type": "String" - } - } - }, - "@folderOrganizationByArtistSubtitle": { - "description": "Subtitle for artist folder option" - }, - "errorNoTracksFound": "Треків не знайдено", - "@errorNoTracksFound": { - "description": "Error - search returned no results" - }, - "providerPriorityTitle": "Пріоритет постачальника", - "@providerPriorityTitle": { - "description": "Provider priority page title" - }, - "@notifUpdateReadyBody": { - "description": "Notification body when app update is ready to install", + "extensionsVersion": "Версія {version}", + "@extensionsVersion": { + "description": "Extension version display", "placeholders": { "version": { "type": "String" } } }, - "@settingsExtensions": { - "description": "Settings section - extension management" + "extensionsUninstall": "Видалити", + "@extensionsUninstall": { + "description": "Uninstall extension button" }, - "trackDeleteConfirmTitle": "Видалити з пристрою?", - "@trackDeleteConfirmTitle": { - "description": "Delete confirmation title" + "storeTitle": "Репозиторій розширень", + "@storeTitle": { + "description": "Repo screen title" }, - "@settingsDownloadNetwork": { - "description": "Setting for network type preference" + "storeSearch": "Розширення пошуку...", + "@storeSearch": { + "description": "Repo search placeholder" }, - "downloadProvidersNoneEnabled": "No providers enabled", - "@downloadProvidersNoneEnabled": { - "description": "Shown when no lyrics providers are active" + "storeInstall": "Встановити", + "@storeInstall": { + "description": "Install extension button" }, - "@homeEmptySubtitle": { - "description": "Subtitle shown on home when no providers are available yet" + "storeInstalled": "Встановлені", + "@storeInstalled": { + "description": "Already installed badge" }, - "trackReEnrichFieldBasicTags": "Альбом, Виконавець альбому", - "@trackReEnrichFieldBasicTags": { - "description": "Checkbox label for basic tags in re-enrich (title/artist are never overwritten)" + "storeUpdate": "Оновлені", + "@storeUpdate": { + "description": "Update available button" }, - "@audioAnalysisSpectralCutoff": { - "description": "Estimated spectral cutoff metric label" + "aboutTitle": "Про нас", + "@aboutTitle": { + "description": "About page title" }, - "@logClearLogsTitle": { - "description": "Clear logs dialog title" + "aboutContributors": "Автори", + "@aboutContributors": { + "description": "Section for contributors" }, - "storageModeSafSubtitle": "Pick any folder, including SD card", - "@storageModeSafSubtitle": { - "description": "Subtitle for SAF storage mode" + "aboutMobileDeveloper": "Розробник мобільної версії", + "@aboutMobileDeveloper": { + "description": "Role description for mobile dev" }, - "@notifUpdateProgress": { - "description": "Notification body showing update download progress", + "aboutOriginalCreator": "Творець оригінального SpotiFLAC", + "@aboutOriginalCreator": { + "description": "Role description for original creator" + }, + "aboutLogoArtist": "Талановитий художник, який створив чудовий логотип нашого додатку!", + "@aboutLogoArtist": { + "description": "Role description for logo artist" + }, + "aboutTranslators": "Перекладачі", + "@aboutTranslators": { + "description": "Section for translators" + }, + "aboutSpecialThanks": "Особлива подяка", + "@aboutSpecialThanks": { + "description": "Section for special thanks" + }, + "aboutLinks": "Посилання", + "@aboutLinks": { + "description": "Section for external links" + }, + "aboutMobileSource": "Мобільний вихідний код", + "@aboutMobileSource": { + "description": "Link to mobile GitHub repo" + }, + "aboutPCSource": "Вихідний код для ПК", + "@aboutPCSource": { + "description": "Link to PC GitHub repo" + }, + "aboutKeepAndroidOpen": "Keep Android Open", + "@aboutKeepAndroidOpen": { + "description": "Link to Keep Android Open campaign website" + }, + "aboutReportIssue": "Повідомити про проблему", + "@aboutReportIssue": { + "description": "Link to report bugs" + }, + "aboutReportIssueSubtitle": "Повідомити про будь-які проблеми, з якими ви зіткнулися", + "@aboutReportIssueSubtitle": { + "description": "Subtitle for report issue" + }, + "aboutFeatureRequest": "Запит на функцію", + "@aboutFeatureRequest": { + "description": "Link to suggest features" + }, + "aboutFeatureRequestSubtitle": "Запропонувати нові функції для програми", + "@aboutFeatureRequestSubtitle": { + "description": "Subtitle for feature request" + }, + "aboutTelegramChannel": "Телеграм-канал", + "@aboutTelegramChannel": { + "description": "Link to Telegram channel" + }, + "aboutTelegramChannelSubtitle": "Оголошення та оновлення", + "@aboutTelegramChannelSubtitle": { + "description": "Subtitle for Telegram channel" + }, + "aboutTelegramChat": "Telegram Спільнота", + "@aboutTelegramChat": { + "description": "Link to Telegram chat group" + }, + "aboutTelegramChatSubtitle": "Спілкуватися з іншими користувачами", + "@aboutTelegramChatSubtitle": { + "description": "Subtitle for Telegram chat" + }, + "aboutSocial": "Соціальні мережі", + "@aboutSocial": { + "description": "Section for social links" + }, + "aboutApp": "Додаток", + "@aboutApp": { + "description": "Section for app info" + }, + "aboutVersion": "Версія", + "@aboutVersion": { + "description": "Version info label" + }, + "aboutBinimumDesc": "The creator of QQDL & HiFi API. This project helped shape lossless download support.", + "@aboutBinimumDesc": { + "description": "Credit description for binimum" + }, + "aboutSachinsenalDesc": "The original HiFi project creator. A foundation for lossless-source integration.", + "@aboutSachinsenalDesc": { + "description": "Credit description for sachinsenal0x64" + }, + "aboutUnituneDesc": "Open-source music link resolver by Flaze, used for cross-platform fallback matching.", + "@aboutUnituneDesc": { + "description": "Credit for the UniTune resolver" + }, + "aboutMusicBrainzDesc": "Open music database maintained by MetaBrainz and its community, used for recording cross-references.", + "@aboutMusicBrainzDesc": { + "description": "Credit for the MusicBrainz database" + }, + "aboutSquiglyDesc": "Universal music link service by Liam Macmillan, used as a final cross-platform resolver fallback.", + "@aboutSquiglyDesc": { + "description": "Credit for the Squigly resolver" + }, + "aboutAppDescription": "Search music metadata, manage extensions, and organize your library.", + "@aboutAppDescription": { + "description": "App description in header card" + }, + "artistAlbums": "Альбоми", + "@artistAlbums": { + "description": "Section header for artist albums" + }, + "artistSingles": "Сингли та міні-альбоми", + "@artistSingles": { + "description": "Section header for singles/EPs" + }, + "artistCompilations": "Збірники", + "@artistCompilations": { + "description": "Section header for compilations" + }, + "artistPopular": "Популярні", + "@artistPopular": { + "description": "Section header for popular/top tracks" + }, + "artistMonthlyListeners": "{count} слухачів щомісяця", + "@artistMonthlyListeners": { + "description": "Monthly listener count display", "placeholders": { - "received": { - "type": "String" - }, - "total": { - "type": "String" - }, - "percentage": { - "type": "int" + "count": { + "type": "String", + "description": "Formatted listener count" } } }, - "downloadUsePrimaryArtistOnlyEnabled": "Вибраних виконавців видалити з назви папки (наприклад, Джастін Бібер, Quavo → Джастін Бібер)", - "@downloadUsePrimaryArtistOnlyEnabled": { - "description": "Subtitle when primary artist only is enabled" + "trackMetadataService": "Сервіс", + "@trackMetadataService": { + "description": "Metadata field - download service used" }, - "notifScanningLibrary": "Сканування локальної бібліотеки", - "@notifScanningLibrary": { - "description": "Notification title while scanning local library" + "trackMetadataPlay": "Прослухати", + "@trackMetadataPlay": { + "description": "Action button - play track" }, - "@metadataProvidersSubtitle": { - "description": "Subtitle for metadata provider priority item" + "trackMetadataShare": "Поділитися", + "@trackMetadataShare": { + "description": "Action button - share track" + }, + "trackMetadataDelete": "Видалити", + "@trackMetadataDelete": { + "description": "Action button - delete track" + }, + "setupGrantPermission": "Надати дозвіл", + "@setupGrantPermission": { + "description": "Button to request permission" + }, + "setupSkip": "Пропустити поки що", + "@setupSkip": { + "description": "Skip current step button" + }, + "setupStorageAccessRequired": "Потрібен доступ до сховища", + "@setupStorageAccessRequired": { + "description": "Title when storage access needed" + }, + "setupStorageAccessMessageAndroid11": "Для збереження файлів у вибрану папку завантажень для Android 11+ потрібен дозвіл «Доступ до всіх файлів».", + "@setupStorageAccessMessageAndroid11": { + "description": "Android 11+ specific explanation" + }, + "setupOpenSettings": "Відкрити налаштування", + "@setupOpenSettings": { + "description": "Button to open system settings" + }, + "setupPermissionDeniedMessage": "Дозвіл відхилено. Будь ласка, надайте всі дозволи, щоб продовжити.", + "@setupPermissionDeniedMessage": { + "description": "Error when permission denied" + }, + "setupPermissionRequired": "{permissionType} Потрібен дозвіл", + "@setupPermissionRequired": { + "description": "Generic permission required title", + "placeholders": { + "permissionType": { + "type": "String", + "description": "Type of permission (Storage/Notification)" + } + } + }, + "setupPermissionRequiredMessage": "{permissionType} Для найкращого досвіду потрібен дозвіл. Ви можете змінити це пізніше в налаштуваннях.", + "@setupPermissionRequiredMessage": { + "description": "Generic permission required message", + "placeholders": { + "permissionType": { + "type": "String" + } + } + }, + "setupUseDefaultFolder": "Використати папку за замовчуванням?", + "@setupUseDefaultFolder": { + "description": "Dialog title for default folder" + }, + "setupNoFolderSelected": "Папку не вибрано. Бажаєте використовувати папку «Музика» за замовчуванням?", + "@setupNoFolderSelected": { + "description": "Prompt when no folder selected" + }, + "setupUseDefault": "Використовувати за замовчуванням", + "@setupUseDefault": { + "description": "Button to use default folder" + }, + "setupDownloadLocationTitle": "Розташування завантаження", + "@setupDownloadLocationTitle": { + "description": "Download location dialog title" + }, + "setupDownloadLocationIosMessage": "На iOS завантаження зберігаються в папці «Документи» програми. Ви можете отримати до них доступ через програму «Файли».", + "@setupDownloadLocationIosMessage": { + "description": "iOS-specific folder info" + }, + "setupAppDocumentsFolder": "Папка з документами програми", + "@setupAppDocumentsFolder": { + "description": "iOS documents folder option" + }, + "setupAppDocumentsFolderSubtitle": "Рекомендація – доступно через додаток Файли", + "@setupAppDocumentsFolderSubtitle": { + "description": "Subtitle for documents folder" + }, + "setupChooseFromFiles": "Вибрати з файлів", + "@setupChooseFromFiles": { + "description": "iOS file picker option" + }, + "setupChooseFromFilesSubtitle": "Виберіть iCloud або інше місцезнаходження", + "@setupChooseFromFilesSubtitle": { + "description": "Subtitle for file picker" + }, + "setupIosEmptyFolderWarning": "Обмеження iOS: Не можна вибрати порожні папки. Виберіть папку, яка містить принаймні один файл.", + "@setupIosEmptyFolderWarning": { + "description": "iOS folder selection warning" + }, + "setupIcloudNotSupported": "iCloud Drive не підтримується. Будь ласка, скористайтеся папкою «Документи» програми.", + "@setupIcloudNotSupported": { + "description": "Error when user selects iCloud Drive on iOS" + }, + "setupDownloadInFlac": "Download music in lossless and Hi-Res quality", + "@setupDownloadInFlac": { + "description": "App tagline in setup" + }, + "setupStorageGranted": "Дозвіл на зберігання надано!", + "@setupStorageGranted": { + "description": "Success message for storage permission" + }, + "setupStorageRequired": "Потрібен дозвіл на збереження файлів", + "@setupStorageRequired": { + "description": "Title when storage permission needed" + }, + "setupStorageDescription": "SpotiFLAC потребує дозволу на збереження, щоб зберегти завантажені музичні файли.", + "@setupStorageDescription": { + "description": "Explanation for storage permission" + }, + "setupNotificationGranted": "Дозвіл на сповіщення надано!", + "@setupNotificationGranted": { + "description": "Success message for notification permission" + }, + "setupNotificationEnable": "Увімкнути сповіщення", + "@setupNotificationEnable": { + "description": "Button to enable notifications" + }, + "setupFolderChoose": "Виберати папку для завантаження", + "@setupFolderChoose": { + "description": "Button to choose folder" + }, + "setupFolderDescription": "Виберіть папку, де буде збережено завантажену музику.", + "@setupFolderDescription": { + "description": "Explanation for folder selection" + }, + "setupSelectFolder": "Вибрати папку", + "@setupSelectFolder": { + "description": "Button to select folder" + }, + "setupEnableNotifications": "Увімкнути сповіщення", + "@setupEnableNotifications": { + "description": "Button to enable notifications" + }, + "setupNotificationBackgroundDescription": "Отримуйте сповіщення про прогрес та завершення завантаження. Це допомагає відстежувати завантаження, коли програма працює у фоновому режимі.", + "@setupNotificationBackgroundDescription": { + "description": "Detailed notification explanation" + }, + "setupSkipForNow": "Пропустити поки що", + "@setupSkipForNow": { + "description": "Skip button text" + }, + "setupNext": "Далі", + "@setupNext": { + "description": "Next button text" }, "setupGetStarted": "Почати", "@setupGetStarted": { "description": "Final setup button" }, - "libraryFilterQualityCD": "CD (16-бітний)", - "@libraryFilterQualityCD": { - "description": "Filter option - CD quality audio" + "setupAllowAccessToManageFiles": "Будь ласка, увімкніть опцію «Дозволити доступ для керування всіма файлами» на наступному екрані.", + "@setupAllowAccessToManageFiles": { + "description": "Instruction for file access permission" }, - "sectionLayout": "Макет", - "@sectionLayout": { - "description": "Settings section header" + "setupLanguageTitle": "Choose Language", + "@setupLanguageTitle": { + "description": "Title for the language selection step in setup" }, - "@tooltipLoveAll": { - "description": "Tooltip for the Love All button on album/playlist screens" + "setupLanguageDescription": "Select your preferred language for the app. You can change this later in Settings.", + "@setupLanguageDescription": { + "description": "Description for the language selection step in setup" }, - "queueFinalizingDownload": "Finalizing download", - "@queueFinalizingDownload": { - "description": "Accessibility label for a queue item that is finalizing" + "setupLanguageSystemDefault": "System Default", + "@setupLanguageSystemDefault": { + "description": "Option to use the system language" }, - "trackConvertActionLabelLossy": "{sourceFormat} → {targetFormat} @ {bitrate}", - "@trackConvertActionLabelLossy": { - "description": "Convert button label for lossy conversion", + "dialogCancel": "Скасувати", + "@dialogCancel": { + "description": "Dialog button - cancel action" + }, + "dialogSave": "Зберегти", + "@dialogSave": { + "description": "Dialog button - save changes" + }, + "dialogDelete": "Видалити", + "@dialogDelete": { + "description": "Dialog button - delete item" + }, + "dialogRetry": "Повторити спробу", + "@dialogRetry": { + "description": "Dialog button - retry action" + }, + "dialogClear": "Очистити", + "@dialogClear": { + "description": "Dialog button - clear items" + }, + "dialogDone": "Готово", + "@dialogDone": { + "description": "Dialog button - action completed" + }, + "dialogImport": "Імпорт", + "@dialogImport": { + "description": "Dialog button - import data" + }, + "dialogDownload": "Завантажити", + "@dialogDownload": { + "description": "Confirm button in Download All dialog" + }, + "previewPlay": "Play preview", + "@previewPlay": { + "description": "Tooltip for the button that plays a short track preview snippet" + }, + "previewStop": "Stop preview", + "@previewStop": { + "description": "Tooltip for the button that stops the playing track preview snippet" + }, + "previewUnavailable": "Preview unavailable", + "@previewUnavailable": { + "description": "Snackbar shown when a track preview snippet cannot be played" + }, + "dialogDiscard": "Відхилити", + "@dialogDiscard": { + "description": "Dialog button - discard changes" + }, + "dialogRemove": "Видалити", + "@dialogRemove": { + "description": "Dialog button - remove item" + }, + "dialogUninstall": "Деінсталювати", + "@dialogUninstall": { + "description": "Dialog button - uninstall extension" + }, + "dialogDiscardChanges": "Відхилити зміни?", + "@dialogDiscardChanges": { + "description": "Dialog title - unsaved changes warning" + }, + "dialogUnsavedChanges": "У вас є незбережені зміни. Ви хочете їх скасувати?", + "@dialogUnsavedChanges": { + "description": "Dialog message - unsaved changes" + }, + "dialogClearAll": "Очистити все", + "@dialogClearAll": { + "description": "Dialog title - clear all items" + }, + "dialogRemoveExtension": "Видалити розширення", + "@dialogRemoveExtension": { + "description": "Dialog title - uninstall extension" + }, + "dialogRemoveExtensionMessage": "Ви впевнені, що хочете видалити це розширення? Цю дію неможливо скасувати.", + "@dialogRemoveExtensionMessage": { + "description": "Dialog message - uninstall confirmation" + }, + "dialogUninstallExtension": "Видалити розширення?", + "@dialogUninstallExtension": { + "description": "Dialog title - uninstall extension" + }, + "dialogUninstallExtensionMessage": "Ви впевнені, що хочете видалити {extensionName}?", + "@dialogUninstallExtensionMessage": { + "description": "Dialog message - uninstall specific extension", "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "bitrate": { + "extensionName": { "type": "String" } } }, - "extensionsMetadataPriority": "Пріоритет метаданих", - "@extensionsMetadataPriority": { - "description": "Setting - metadata provider order" + "dialogClearHistoryTitle": "Очистити історію", + "@dialogClearHistoryTitle": { + "description": "Dialog title - clear download history" }, - "updateCurrent": "Поточна", - "@updateCurrent": { - "description": "Label for current version" + "dialogClearHistoryMessage": "Ви впевнені, що хочете очистити всю історію завантажень? Цю дію неможливо скасувати.", + "@dialogClearHistoryMessage": { + "description": "Dialog message - clear history confirmation" }, - "@aboutFeatureRequest": { - "description": "Link to suggest features" - }, - "@safMigrationSuccess": { - "description": "Snackbar after successfully migrating to SAF" - }, - "backupRestoreConfirmMessage": "This will replace your current settings, download history, liked tracks, wishlist and playlists with the contents of the backup. This cannot be undone.", - "@cleanupOrphanedDownloadsNone": { - "description": "Snackbar when no orphans found" - }, - "lyricsProviderNeteaseDesc": "NetEase Cloud Music (добре підходить для азійських пісень)", - "@lyricsProviderNeteaseDesc": { - "description": "Description for Netease provider" - }, - "libraryScanCancelledSubtitle": "You can retry the scan when ready.", - "@libraryScanCancelledSubtitle": { - "description": "Library scan status subtitle after cancellation" - }, - "@collectionFavoriteArtists": { - "description": "Custom folder for favorite artists" - }, - "@trackAlbum": { - "description": "Metadata label - album name" + "dialogDeleteSelectedTitle": "Видалити вибране", + "@dialogDeleteSelectedTitle": { + "description": "Dialog title - delete selected items" }, "dialogDeleteSelectedMessage": "Видалити {count} {count, plural, =1{трек} other{треків}} з історії?\n\nЦе також видалить файли з пам'яті.", "@dialogDeleteSelectedMessage": { @@ -713,811 +838,29 @@ } } }, - "trackReEnrich": "Перезбагачувати", - "@trackReEnrich": { - "description": "Menu action - re-embed metadata into audio file" - }, - "@lyricsProvidersSaved": { - "description": "Snackbar after saving lyrics provider priority" - }, - "@storageModeSaf": { - "description": "Storage mode option - Storage Access Framework" - }, - "libraryStorageAccessRequired": "Потрібен доступ до сховища", - "@libraryStorageAccessRequired": { - "description": "Dialog title for storage permission" - }, - "@cacheClearAllConfirmTitle": { - "description": "Dialog title before clearing all caches" - }, - "@unknownArtist": { - "description": "Fallback artist name when metadata is missing" - }, - "downloadCreatePlaylistSourceFolderEnabled": "A subfolder is created for each playlist", - "@downloadCreatePlaylistSourceFolderEnabled": { - "description": "Subtitle when playlist folder is enabled" - }, - "dialogClearHistoryMessage": "Ви впевнені, що хочете очистити всю історію завантажень? Цю дію неможливо скасувати.", - "@dialogClearHistoryMessage": { - "description": "Dialog message - clear history confirmation" - }, - "@sectionData": { - "description": "Settings section header" - }, - "audioAnalysisRms": "RMS", - "@audioAnalysisRms": { - "description": "RMS level metric label" - }, - "downloadFilterContributingEnabled": "Contributing artists removed from Album Artist folder name", - "@downloadFilterContributingEnabled": { - "description": "Subtitle when contributing artist filter is on" - }, - "timeJustNow": "Щойно", - "@extensionCustomUrlHandlingShareHint": { - "description": "Extension detail hint explaining share-to-app URL handling" - }, - "cleanupOrphanedDownloads": "Очищення застарілих завантажень", - "@cleanupOrphanedDownloads": { - "description": "Button to remove history entries for deleted files" - }, - "@audioAnalysisNoClipping": { - "description": "Displayed when no clipped samples were detected" - }, - "@tutorialWelcomeTitle": { - "description": "Tutorial welcome page title" - }, - "collectionFavoriteArtists": "Favorite Artists", - "audioAnalysisRescanning": "Re-analyzing audio...", - "@audioAnalysisRescanning": { - "description": "Loading text while audio is being re-analyzed after an explicit refresh" - }, - "logTitle": "Журнали", - "@logTitle": { - "description": "Logs screen title" - }, - "@regionCountryGB": { - "description": "Country name for SongLink region picker" - }, - "@progressFetchingMetadata": { - "description": "Progress indicator - loading track info", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "aboutLogoArtist": "Талановитий художник, який створив чудовий логотип нашого додатку!", - "@aboutLogoArtist": { - "description": "Role description for logo artist" - }, - "channelPreview": "Бета", - "@channelPreview": { - "description": "Update channel - beta/preview releases" - }, - "collectionPlaylistsDeleted": "{count} {count, plural, =1{playlist} other{playlists}} deleted", - "@collectionPlaylistsDeleted": { - "description": "Snackbar after deleting selected playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@libraryFilterMetadataMissingGenre": { - "description": "Filter option - items missing genre" - }, - "homeTitle": "Головна", - "@homeTitle": { - "description": "Home screen title" - }, - "extensionMinAppVersion": "Мінімальна версія програми", - "@extensionMinAppVersion": { - "description": "Extension detail - minimum app version" - }, - "backupContentsLiked": "{count} liked {count, plural, =1{track} other{tracks}}", - "@backupContentsLiked": { - "description": "Backup contents row for liked tracks count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "audioAnalysisTruePeak": "True Peak", - "@audioAnalysisTruePeak": { - "description": "True peak metric label" - }, - "notifDownloadsCanceledBody": "{count, plural, =1{1 download canceled by user} other{{count} downloads canceled by user}}", - "@notifDownloadsCanceledBody": { - "description": "Notification body when downloads are canceled by the user", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@dialogRetry": { - "description": "Dialog button - retry action" - }, - "@homeChangeSearchProviderTooltip": { - "description": "Tooltip for the Home search provider picker" - }, - "@sectionLyricsProviderOptions": { - "description": "Settings section header for per-provider lyrics options" - }, - "@trackReEnrichSuccessWithFailures": { - "description": "Snackbar summary after batch metadata re-enrichment finishes with failures", - "placeholders": { - "successCount": { - "type": "int" - }, - "total": { - "type": "int" - }, - "failedCount": { - "type": "int" - } - } - }, - "previewUnavailable": "Preview unavailable", - "@previewUnavailable": { - "description": "Snackbar shown when a track preview snippet cannot be played" - }, - "nowPlayingTabPlayer": "Player", - "@nowPlayingTabPlayer": { - "description": "Tab label for the player view" - }, - "backupContentsPlaylists": "{count, plural, =1{1 playlist} other{{count} playlists}}", - "@backupContentsPlaylists": { - "description": "Backup contents row for playlist count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "libraryLastScannedNever": "Ніколи", - "@libraryLastScannedNever": { - "description": "Shown when library has never been scanned" - }, - "trackTrackNumber": "Номер треку", - "@trackTrackNumber": { - "description": "Metadata label - track number" - }, - "trackReplayGainScanning": "Analyzing loudness...", - "@trackReplayGainScanning": { - "description": "Snackbar/progress message while scanning ReplayGain for a single track" - }, - "downloadLossyMp3": "MP3 320 кбіт/с", - "@downloadLossyMp3": { - "description": "Lossy format option - MP3 320kbps" - }, - "@albumFolderArtistAlbumSingles": { - "description": "Album folder option with singles inside artist" - }, - "@extensionHealthNotConfigured": { - "description": "Extension service health status - not configured" - }, - "@downloadSeparateSinglesDisabled": { - "description": "Subtitle when separate singles folder is off" - }, - "downloadCreatePlaylistSourceFolder": "Playlist Source Folder", - "@downloadCreatePlaylistSourceFolder": { - "description": "Setting to create a subfolder per playlist source" - }, - "@trackReleaseDate": { - "description": "Metadata label - release date" - }, - "aboutContributors": "Автори", - "@aboutContributors": { - "description": "Section for contributors" - }, - "@audioAnalysisMono": { - "description": "Audio channel layout label - mono" - }, - "@audioAnalysisNyquist": { - "description": "Nyquist frequency metric label" - }, - "permissionStorage": "Storage", - "@permissionStorage": { - "description": "Storage permission type label" - }, - "permissionAudio": "Audio", - "@permissionAudio": { - "description": "Audio permission type label" - }, - "@libraryScanSubtitle": { - "description": "Subtitle for scan button" - }, - "@snackbarUnsupportedAudioFormat": { - "description": "Snackbar when the audio format is not supported for the requested operation" - }, - "@notifLibraryScanStopped": { - "description": "Notification body when library scan is cancelled" - }, - "@downloadMusixmatchAuto": { - "description": "Button to clear Musixmatch language (use auto)" - }, - "@trackLyricsTimeout": { - "description": "Message when lyrics request times out" - }, - "@trackReEnrichFieldReleaseInfo": { - "description": "Checkbox label for release info in re-enrich" - }, - "@regionCountryXK": { - "description": "Country name for SongLink region picker" - }, - "aboutTelegramChatSubtitle": "Спілкуватися з іншими користувачами", - "@aboutTelegramChatSubtitle": { - "description": "Subtitle for Telegram chat" - }, - "selectionAllPlaylistsSelected": "Вибрано всі списки відтворення", - "@selectionAllPlaylistsSelected": { - "description": "Shown when all playlists are selected in selection mode" - }, - "cacheTrackLookupDesc": "Пошук ідентифікаторів треків Spotify/Deezer. Очищення може уповільнити наступні кілька пошуків.", - "@cacheTrackLookupDesc": { - "description": "Description of what track lookup cache contains" - }, - "@unknownAlbum": { - "description": "Fallback album name when metadata is missing" - }, - "@extensionsErrorLoading": { - "description": "Error message when extension fails to load" - }, - "@cacheTitle": { - "description": "Cache management page title" - }, - "@downloadFilenameFormat": { - "description": "Setting for output filename pattern" - }, - "errorUrlNotRecognized": "Посилання не розпізнано", - "@errorUrlNotRecognized": { - "description": "Error title - URL not handled by any extension or service" - }, - "downloadAppleElrcWordSync": "Apple Music eLRC Word Sync", - "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { - "description": "Subtitle when album artist is used for folder names" - }, - "@qualityFlacLossless": { - "description": "Quality option - CD quality FLAC" - }, - "downloadNeteaseIncludeTranslationEnabled": "Chinese translation lines included", - "@downloadNeteaseIncludeTranslationEnabled": { - "description": "Subtitle when Netease translation is on" - }, - "collectionLovedEmptySubtitle": "Натисніть «Подобається» на треках, щоб зберегти у свої улюблені", - "@collectionLovedEmptySubtitle": { - "description": "Loved empty state subtitle" - }, - "@libraryBuiltInPlayerInfo": { - "description": "Info note explaining the built-in player is for previews only" - }, - "@notifLibraryScanProgressNoTotal": { - "description": "Notification body for library scan progress when total is unknown", - "placeholders": { - "scanned": { - "type": "int" - }, - "percentage": { - "type": "int" - } - } - }, - "@tutorialSearchTitle": { - "description": "Tutorial search page title" - }, - "trackReEnrichSuccessWithFailures": "Metadata re-enriched successfully ({successCount}/{total}) - Failed: {failedCount}", - "@a11yTrackByArtist": { - "description": "Accessibility label for a queue or list track item", - "placeholders": { - "trackName": { - "type": "String" - }, - "artistName": { - "type": "String" - } - } - }, - "libraryFilterMetadataMissingLabel": "Missing label", - "@libraryFilterMetadataMissingLabel": { - "description": "Filter option - items missing record label" - }, - "@audioAnalysisLufs": { - "description": "Integrated loudness metric label" - }, - "trackMetadata": "Метадані", - "@trackMetadata": { - "description": "Tab title - track metadata" - }, - "trackOptionRemoveFromLoved": "Видалити з улюблених", - "@trackOptionRemoveFromLoved": { - "description": "Bottom sheet action label - remove track from loved folder" - }, - "@aboutTelegramChat": { - "description": "Link to Telegram chat group" - }, - "@trackCopiedToClipboard": { - "description": "Snackbar - content copied" - }, - "aboutKeepAndroidOpen": "Keep Android Open", - "@aboutKeepAndroidOpen": { - "description": "Link to Keep Android Open campaign website" - }, - "@lyricsProvidersDisabledSection": { - "description": "Section header for disabled providers", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@downloadAllowLocalNetwork": { - "description": "Setting title for allowing requests to private/local network targets" - }, - "@openInOtherServices": { - "description": "Title and tooltip for finding the current collection in other services" - }, - "@extensionVerificationBrowserInApp": { - "description": "Chip label for in-app browser verification mode" - }, - "sectionSearchSource": "Джерело пошуку", - "@sectionSearchSource": { - "description": "Settings section header" - }, - "allFilesAccess": "Доступ до всіх файлів", - "@allFilesAccess": { - "description": "Toggle for MANAGE_EXTERNAL_STORAGE permission" - }, - "extensionsInstalledCount": "{count} extensions installed successfully", - "@extensionsInstalledCount": { - "description": "Success message after installing multiple extensions", - "placeholders": { - "count": { - "type": "int", - "description": "Number of installed extensions" - } - } - }, - "snackbarFailedToEmbedLyrics": "Не вдалося вставити текст пісні", - "@snackbarFailedToEmbedLyrics": { - "description": "Snackbar when lyrics embedding fails" - }, - "@lyricsProviderMusixmatchDesc": { - "description": "Description for Musixmatch provider" - }, - "queueRateLimitTitle": "Service rate limited", - "@queueRateLimitTitle": { - "description": "Title shown on a failed queue item when the download service rate limits requests" - }, - "@notifDownloadComplete": { - "description": "Notification title when a single download is complete" - }, - "@homeSupports": { - "description": "Info text about supported URL types" - }, - "notifDownloadsCanceledTitle": "Downloads canceled", - "@notifDownloadsCanceledTitle": { - "description": "Notification title when downloads are canceled by the user" - }, - "@lyricsModeEmbedSubtitle": { - "description": "Subtitle for embed option" - }, - "optionsReplayGain": "Нормалізація звуку", - "@optionsReplayGain": { - "description": "Title for ReplayGain setting toggle" - }, - "@storeLoadError": { - "description": "Error heading when the store cannot be loaded" - }, - "@trackArtist": { - "description": "Metadata label - artist name" - }, - "cacheCoverImageDesc": "Завантажено обкладинку альбому та треку. Завантаження відбудеться повторно після перегляду.", - "@cacheCoverImageDesc": { - "description": "Description of what cover image cache contains" - }, - "queueClearAll": "Усі", - "@queueClearAll": { - "description": "Button - clear all queue items" - }, - "downloadUsePrimaryArtistOnlyDisabled": "Повний рядок виконавця, що використовується для назви папки", - "@downloadUsePrimaryArtistOnlyDisabled": { - "description": "Subtitle when primary artist only is disabled" - }, - "backupImportSectionTitle": "Restore backup", - "@backupImportSectionTitle": { - "description": "Section title for the import/restore card" - }, - "@downloadMusixmatchLanguageHint": { - "description": "Placeholder for Musixmatch language input" - }, - "collectionRemoveFromFolder": "Видалити з папки", - "@collectionRemoveFromFolder": { - "description": "Tooltip for removing track from wishlist/loved folder" - }, - "storeFilterMetadata": "Метадані", - "@storeFilterMetadata": { - "description": "Repo filter - metadata providers" - }, - "shareSheetCopyLink": "Copy Link", - "errorRateLimitedMessage": "Забагато запитів. Будь ласка, зачекайте хвилинку, перш ніж шукати знову.", - "@errorRateLimitedMessage": { - "description": "Error message - rate limit explanation" - }, - "libraryFilterSortGenreDesc": "Жанр (Я-А)", - "@libraryFilterSortGenreDesc": { - "description": "Sort option - genre descending" - }, - "trackFileNotFound": "Файл не знайдено", - "@trackFileNotFound": { - "description": "Error - file doesn't exist" - }, - "@queueEmptySinglesSubtitle": { - "description": "Empty state subtitle for single track downloads" - }, - "@queueDownloadStarting": { - "description": "Queue status before download progress is available" - }, - "metadataProviderPriorityInfo": "Deezer не має обмежень за швидкістю та рекомендований як основний сервіс. Spotify може обмежувати швидкість після великої кількості запитів.", - "@metadataProviderPriorityInfo": { - "description": "Info tip about rate limits" - }, - "aboutPCSource": "Вихідний код для ПК", - "@aboutPCSource": { - "description": "Link to PC GitHub repo" - }, - "editMetadataAutoFill": "Автоматичне заповнення з онлайн-ресурсів", - "@editMetadataAutoFill": { - "description": "Section title for selective online metadata auto-fill in the edit metadata sheet" - }, - "snackbarDeletedTracks": "Видалено {count} {count, plural, =1{трек} other{треків}}", - "@snackbarDeletedTracks": { - "description": "Snackbar - tracks deleted", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@extensionHealthServiceDegraded": { - "description": "Tooltip for degraded extension service" - }, - "lyricsProviderLrclibDesc": "Синхронізована база даних текстів пісень з відкритим кодом", - "@lyricsProviderLrclibDesc": { - "description": "Description for LRCLIB provider" - }, - "downloadMusixmatchLanguageDesc": "Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.", - "@downloadMusixmatchLanguageDesc": { - "description": "Description in Musixmatch language picker" - }, - "@optionsEmbedMetadataSubtitleOn": { - "description": "Subtitle when metadata embedding is enabled" - }, - "@setupSkipForNow": { - "description": "Skip button text" - }, - "@a11ySelectTrack": { - "description": "Accessibility label for selecting a track" - }, - "@folderOrganizationByAlbumSubtitle": { - "description": "Subtitle for album folder option" - }, - "downloadLossyAac": "AAC/M4A 320kbps", - "@extensionVerificationBrowserTitle": { - "description": "Settings option title for extension verification browser preference" - }, - "@backupContentsExtensions": { - "description": "Backup contents row for installed extensions count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarUrlCopied": "{platform} URL-адреса скопійована в буфер обміну", - "@snackbarUrlCopied": { - "description": "Snackbar - URL copied", - "placeholders": { - "platform": { - "type": "String", - "description": "Platform name (Spotify/Deezer)" - } - } - }, - "aboutBinimumDesc": "The creator of QQDL & HiFi API. This project helped shape lossless download support.", - "@aboutBinimumDesc": { - "description": "Credit description for binimum" - }, - "discographyFetchingAlbum": "Отримання {current} з {total}...", - "@discographyFetchingAlbum": { - "description": "Progress - fetching specific album", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "logAutoScrollOn": "Auto-scroll ON", - "@logAutoScrollOn": { - "description": "Tooltip when auto-scroll is enabled on the log screen" - }, - "@settingsMetadataSubtitle": { - "description": "Subtitle for metadata settings" - }, - "@regionCountryBR": { - "description": "Country name for SongLink region picker" - }, - "@lyricsProvidersTitle": { - "description": "Settings item title for lyrics provider order" - }, - "trackMetadataService": "Сервіс", - "@trackMetadataService": { - "description": "Metadata field - download service used" - }, - "discographyAddedToQueue": "Додано {count} треків до черги", - "cueSplitTrackCount": "{count} треків", - "@cueSplitTrackCount": { - "description": "Number of tracks in CUE sheet", - "placeholders": { - "count": { - "type": "int" - } - } - }, "dialogImportPlaylistTitle": "Імпорт списку відтворення", "@dialogImportPlaylistTitle": { "description": "Dialog title - import CSV playlist" }, - "@cleanupOrphanedDownloadsSubtitle": { - "description": "Subtitle for orphaned cleanup button" - }, - "settingsLocalLibrary": "Локальна бібліотека", - "@settingsLocalLibrary": { - "description": "Settings menu item - local library" - }, - "@metadataSaveFailedStorage": { - "description": "Snackbar error when writing metadata file back to storage fails" - }, - "logCopyLogs": "Copy logs", - "@logCopyLogs": { - "description": "Tooltip for copying logs" - }, - "downloadNetworkWifiOnlySubtitle": "Downloads pause when on mobile data", - "@downloadNetworkWifiOnlySubtitle": { - "description": "Subtitle for WiFi-only option in picker" - }, - "@lyricsModeBothSubtitle": { - "description": "Subtitle for both option" - }, - "@collectionAlreadyInPlaylist": { - "description": "Snackbar when track already exists in playlist", - "placeholders": { - "playlistName": { - "type": "String" - } - } - }, - "@collectionFoldersTitle": { - "description": "Library section title for custom folders" - }, - "searchSortDateNewest": "Дата випуску (найновіша)", - "@searchSortDateNewest": { - "description": "Sort option - newest release first" - }, - "downloadDeduplicationDisabled": "All tracks will be downloaded regardless of history", - "@downloadDeduplicationDisabled": { - "description": "Subtitle when deduplication is off" - }, - "@recentTypeAlbum": { - "description": "Recent access item type - album" - }, - "nowPlayingPlayInOrder": "Play in order", - "@nowPlayingPlayInOrder": { - "description": "Tooltip when shuffle mode is disabled" - }, - "@cueSplitConfirmMessage": { - "description": "CUE split confirmation dialog message", - "placeholders": { - "album": { - "type": "String" - }, - "count": { - "type": "int" - } - } - }, - "@audioAnalysisFileSize": { - "description": "File size metric label" - }, - "artistSingles": "Сингли та міні-альбоми", - "@artistSingles": { - "description": "Section header for singles/EPs" - }, - "@snackbarProviderPrioritySaved": { - "description": "Snackbar - provider order saved" - }, - "@recentPlaylistInfo": { - "description": "Snackbar message when tapping playlist in recent access", - "placeholders": { - "name": { - "type": "String", - "description": "Playlist name" - } - } - }, - "@lyricsProviderLyricsPlusDesc": { - "description": "Description for LyricsPlus provider" - }, - "@libraryFilterDownloaded": { - "description": "Filter chip - show only downloaded items" - }, - "recentPlaylistInfo": "Список відтворення: {name}", - "@optionsReplayGainSubtitleOn": { - "description": "Subtitle when ReplayGain is enabled" - }, - "@actionCreate": { - "description": "Generic action button - create" - }, - "@downloadSelectQuality": { - "description": "Dialog title - choose audio quality" - }, - "cueSplitAlbum": "Альбом: {album}", - "@cueSplitAlbum": { - "description": "Album name in CUE split sheet", - "placeholders": { - "album": { - "type": "String" - } - } - }, - "@trackCoverNoSource": { - "description": "Snackbar when no cover art URL or embedded cover" - }, - "@storeRepoUrlLabel": { - "description": "Label for the repository URL input field" - }, - "@notifLibraryScanCompleteBody": { - "description": "Notification body for library scan complete - number of indexed tracks", + "dialogImportPlaylistMessage": "Found {count} tracks in the playlist file. Add them to download queue?", + "csvImportTracks": "{count} треків з CSV", + "@csvImportTracks": { + "description": "Label shown in quality picker for CSV import", "placeholders": { "count": { "type": "int" } } }, - "optionsDetailedLogging": "Детальне журналювання", - "@optionsDetailedLogging": { - "description": "Enable verbose logs for debugging" + "collectionExportM3u": "Export as M3U8", + "@collectionExportM3u": { + "description": "Tooltip on the collection screen action that exports the track list as an M3U8 playlist file" }, - "@lyricsProvidersDiscardContent": { - "description": "Body text of the discard-changes dialog on lyrics provider page" - }, - "@dialogDisableHistoryTitle": { - "description": "Confirmation dialog title shown before disabling download history" - }, - "downloadLossyOpus128Subtitle": "Найменший розмір, ~4 МБ на доріжку", - "@downloadLossyOpus128Subtitle": { - "description": "Subtitle for Opus 128kbps lossy option" - }, - "@appName": { - "description": "App name - DO NOT TRANSLATE" - }, - "libraryActions": "Дії", - "@libraryActions": { - "description": "Section header for library actions" - }, - "setupNoFolderSelected": "Папку не вибрано. Бажаєте використовувати папку «Музика» за замовчуванням?", - "@setupNoFolderSelected": { - "description": "Prompt when no folder selected" - }, - "downloadMusixmatchLanguageHint": "e.g. en, de, ja", - "trackSaveFailed": "Не вдалося: {error}", - "@trackSaveFailed": { - "description": "Snackbar when save operation fails", + "collectionExportM3uDone": "Exported {exported} of {total} tracks", + "@collectionExportM3uDone": { + "description": "Snackbar after M3U8 export; tracks without a local file are not exported", "placeholders": { - "error": { - "type": "String" - } - } - }, - "replayGainBatchConfirmTitle": "Add ReplayGain", - "@replayGainBatchConfirmTitle": { - "description": "Title of the batch ReplayGain confirmation dialog" - }, - "tutorialExtensionsTip1": "Перегляньте вкладку «Репозиторій», щоб знайти корисні розширення", - "@tutorialExtensionsTip1": { - "description": "Tutorial extensions tip 1" - }, - "@trackAddToQueue": { - "description": "Menu action to add a track to the playback queue" - }, - "@cacheTrackLookup": { - "description": "Cache item title for track ID lookup cache" - }, - "@discographyNoAlbums": { - "description": "Error - no albums found for artist" - }, - "@updateLater": { - "description": "Update button - dismiss" - }, - "@snackbarFailedToInstall": { - "description": "Snackbar - extension install error" - }, - "@albumFolderArtistAlbumFlatSubtitle": { - "description": "Folder structure example for flat singles" - }, - "@errorMissingExtensionSource": { - "description": "Error - extension source not available", - "placeholders": { - "item": { - "type": "String" - } - } - }, - "libraryFilterSortAlbumAsc": "Альбом (А-Я)", - "@libraryFilterSortAlbumAsc": { - "description": "Sort option - album ascending" - }, - "@queueTrackCount": { - "description": "Track count label with plural support", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "audioAnalysisMono": "Mono", - "@trackLyricsSource": { - "description": "Label showing the lyrics source/provider", - "placeholders": { - "source": { - "type": "String" - } - } - }, - "@lyricsModeEmbed": { - "description": "Lyrics mode option - embed in audio file" - }, - "@storeRepoDialogCurrent": { - "description": "Label shown above the current repository URL in the dialog" - }, - "@cacheRefreshStats": { - "description": "Button label to refresh cache statistics" - }, - "lyricsProviderAppleMusicDesc": "Синхронізовані тексти пісень слово за словом (через проксі)", - "@lyricsProviderAppleMusicDesc": { - "description": "Description for Apple Music provider" - }, - "@downloadDeduplication": { - "description": "Setting - skip tracks already in download history" - }, - "updateFailedMessage": "Не вдалося завантажити оновлення", - "@updateFailedMessage": { - "description": "Update error message" - }, - "cacheEstimatedTotal": "Орієнтовне використання кешу: {size}", - "@cacheEstimatedTotal": { - "description": "Total cache size shown in summary", - "placeholders": { - "size": { - "type": "String" - } - } - }, - "@aboutVersion": { - "description": "Version info label" - }, - "dialogRetry": "Повторити спробу", - "@cueSplitSplitting": { - "description": "Snackbar while splitting CUE", - "placeholders": { - "current": { + "exported": { "type": "int" }, "total": { @@ -1525,769 +868,81 @@ } } }, - "@searchSortTitleZA": { - "description": "Sort option - title descending" + "collectionExportM3uNone": "No downloaded files to export", + "@collectionExportM3uNone": { + "description": "Snackbar when an M3U8 export finds no local files" }, - "tutorialLibraryTip2": "Tap a track to play it with the built-in player", - "@tutorialLibraryTip2": { - "description": "Tutorial library tip 2" + "collectionExportM3uFailed": "Export failed", + "@collectionExportM3uFailed": { + "description": "Snackbar when writing or sharing the M3U8 export fails" }, - "extensionHealthServiceOffline": "Service offline", - "@extensionHealthServiceOffline": { - "description": "Tooltip for offline extension service" + "trackOpenOn": "Open on...", + "@trackOpenOn": { + "description": "Track option and sheet title listing streaming platforms where the track can be opened" }, - "actionDeselect": "Скасувати вибір", - "@actionDeselect": { - "description": "Action button - deselect all" + "trackOpenOnNoLinks": "No platform links found for this track.", + "@trackOpenOnNoLinks": { + "description": "Shown in the Open on sheet when song.link returns no links" }, - "@trackConvertOriginal": { - "description": "Label for keeping original bit depth or sample rate during conversion" + "libraryReviewDuplicates": "Review duplicates", + "@libraryReviewDuplicates": { + "description": "Library settings row opening the duplicate review sheet" }, - "@libraryClearConfirmTitle": { - "description": "Dialog title for clear confirmation" + "libraryReviewDuplicatesSubtitle": "Find tracks stored more than once", + "@libraryReviewDuplicatesSubtitle": { + "description": "Subtitle for the duplicate review settings row" }, - "@dialogDownloadAllMessage": { - "description": "Body of the Download All confirmation dialog", - "placeholders": { - "count": { - "type": "int" - } - } + "duplicatesTitle": "Duplicates", + "@duplicatesTitle": { + "description": "Title of the duplicate review sheet" }, - "homeSupports": "Підтримує: URL-адреси треків, альбомів, списків відтворення, виконавців", - "@downloadedAlbumDeleteSelected": { - "description": "Button - delete selected tracks" + "duplicatesEmpty": "No duplicate tracks found.", + "@duplicatesEmpty": { + "description": "Shown when the duplicate review sheet finds nothing" }, - "@recentShowAllDownloads": { - "description": "Button label to unhide hidden downloads in recent access" + "duplicatesKeepBest": "Keep best", + "@duplicatesKeepBest": { + "description": "Button that deletes all but the highest-quality copy in a duplicate group" }, - "artistOptionRemoveFromFavorites": "Remove from Favorite Artists", - "@artistOptionRemoveFromFavorites": { - "description": "Action label - remove artist from favorite artists" + "duplicatesKeepBestAll": "Keep best for all", + "@duplicatesKeepBestAll": { + "description": "Button that keeps the highest-quality copy in every duplicate group and deletes the rest" }, - "collectionPlaylistEmptyTitle": "Список відтворення порожній", - "@collectionPlaylistEmptyTitle": { - "description": "Playlist empty state title" - }, - "libraryFilterSortLatest": "Найновіші", - "@libraryFilterSortLatest": { - "description": "Sort option - newest first" - }, - "@libraryFilterMetadataMissingYear": { - "description": "Filter option - items missing release year/date" - }, - "@selectionSelected": { - "description": "Selection count indicator", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@tracksCount": { - "description": "Track count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@optionsCheckUpdates": { - "description": "Auto update check toggle" - }, - "@qualityHiResFlacMaxSubtitle": { - "description": "Technical spec for hi-res max" - }, - "actionStop": "Stop", - "@actionStop": { - "description": "Generic action - stop" - }, - "@selectionSelectToDelete": { - "description": "Placeholder when nothing selected" - }, - "folderOrganizationNoneSubtitle": "Усі файли в папці завантажень", - "@folderOrganizationNoneSubtitle": { - "description": "Subtitle for no organization option" - }, - "@updateDownloading": { - "description": "Update status - downloading" - }, - "artistAlbums": "Альбоми", - "@artistAlbums": { - "description": "Section header for artist albums" - }, - "trackConvertDitherTriangular": "TPDF", - "@trackConvertDitherTriangular": { - "description": "Lossless conversion triangular probability density function dither option" - }, - "nowPlayingShuffleLibraryFailed": "Could not shuffle library: {error}", - "@nowPlayingShuffleLibraryFailed": { - "description": "Snackbar when shuffling the library fails", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "@setupIcloudNotSupported": { - "description": "Error when user selects iCloud Drive on iOS" - }, - "@optionsArtistTagModeSplitVorbis": { - "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" - }, - "@extensionsProviderPrioritySection": { - "description": "Section header - provider priority" - }, - "@libraryShowDuplicateIndicatorSubtitle": { - "description": "Subtitle for duplicate indicator toggle" - }, - "sectionDuplicates": "Duplicates", - "@sectionDuplicates": { - "description": "Settings section header for deduplication" - }, - "@backupTitle": { - "description": "App bar title for the backup and restore page" - }, - "trackCoverReplaceNotice": "The selected cover will replace the current embedded cover when you tap Save.", - "cacheSectionMaintenance": "Технічне обслуговування", - "@cacheSectionMaintenance": { - "description": "Section header for cleanup actions" - }, - "@editMetadataFieldGenre": { - "description": "Chip label for genre field in auto-fill selector" - }, - "@extensionsFallbackSubtitle": { - "description": "Subtitle for download fallback extensions menu" - }, - "selectionBatchConvertConfirmMessage": "Конвертувати {count} {count, plural, =1{трек} other{треків}} у {format} з бітрейтом {bitrate}?\n\nОригінальні файли будуть видалені після конвертації.", - "@selectionBatchConvertConfirmMessage": { - "description": "Confirmation dialog message for batch conversion", + "duplicatesKeepBestAllMessage": "Keep the best copy of {groupCount} {groupCount, plural, =1{track} other{tracks}} and delete {count} lower-quality {count, plural, =1{copy} other{copies}}?\n\nThe deleted files will be removed from storage.", + "@duplicatesKeepBestAllMessage": { + "description": "Confirmation message for keeping the best copy across every duplicate group", "placeholders": { "count": { "type": "int" }, - "format": { - "type": "String" - }, - "bitrate": { - "type": "String" - } - } - }, - "@selectionTapPlaylistsToSelect": { - "description": "Hint shown in playlist selection mode" - }, - "qualityHiResFlacMaxSubtitle": "24-біт / до 192 кГц", - "snackbarRemovedTracksFromLoved": "Видалено {count} треків з уподобань", - "@snackbarRemovedTracksFromLoved": { - "description": "Snackbar after removing multiple tracks from Loved folder", - "placeholders": { - "count": { + "groupCount": { "type": "int" } } }, - "folderOrganizationByArtistAlbum": "Виконавець/Альбом", - "@folderOrganizationByArtistAlbum": { - "description": "Folder option - nested folders" - }, - "snackbarCannotOpenFile": "Не вдається відкрити файл: {error}", - "@snackbarCannotOpenFile": { - "description": "Snackbar - file open error", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "@optionsDetailedLoggingOff": { - "description": "Status when logging disabled" - }, - "@setupStorageDescription": { - "description": "Explanation for storage permission" - }, - "audioAnalysisCodec": "Codec", - "@regionCountryFR": { - "description": "Country name for SongLink region picker" - }, - "@optionsArtistTagMode": { - "description": "Setting title for how artist metadata is written into files" - }, - "@libraryClearConfirmMessage": { - "description": "Dialog message for clear confirmation" - }, - "trackLyricsNotAvailable": "Текст пісні для цього треку недоступний", - "@trackLyricsNotAvailable": { - "description": "Message when lyrics not found" - }, - "storeFilterUtility": "Утиліта", - "@storeFilterUtility": { - "description": "Repo filter - utility extensions" - }, - "collectionAddedToPlaylist": "Додано до \"{playlistName}\"", - "@collectionAddedToPlaylist": { - "description": "Snackbar after adding track to playlist", - "placeholders": { - "playlistName": { - "type": "String" - } - } - }, - "cacheClearConfirmTitle": "Очистити кеш?", - "@cacheClearConfirmTitle": { - "description": "Dialog title before clearing one cache category" - }, - "@downloadAppleElrcWordSyncDisabled": { - "description": "Subtitle when Apple Music eLRC word sync is disabled" - }, - "@aboutMobileDeveloper": { - "description": "Role description for mobile dev" - }, - "albumFolderYearAlbum": "[Рік] Альбом", - "@albumFolderYearAlbum": { - "description": "Album folder option with year" - }, - "cacheTitle": "Зберігання та кеш", - "@extensionPostProcessing": { - "description": "Capability - post-download processing" - }, - "extensionsNoMetadataProvider": "Без розширень із постачальником метаданих", - "@extensionsNoMetadataProvider": { - "description": "Empty state - no metadata providers" - }, - "searchSortTitleZA": "Назва (Я-А)", - "@queueClearAllMessage": { - "description": "Clear queue confirmation" - }, - "audioAnalysisTitle": "Аналіз якості звуку", - "@audioAnalysisTitle": { - "description": "Title for audio analysis section" - }, - "@aboutReportIssueSubtitle": { - "description": "Subtitle for report issue" - }, - "@audioAnalysisSampleRate": { - "description": "Sample rate metric label" - }, - "@discographySelectedCount": { - "description": "Selection count badge", + "duplicatesKeepBestMessage": "Delete {count} lower-quality copies of \"{trackName}\"?", + "@duplicatesKeepBestMessage": { + "description": "Confirmation message for the keep-best action", "placeholders": { "count": { "type": "int" - } - } - }, - "qualityFlacLosslessSubtitle": "16 біт / 44,1 кГц", - "@qualityFlacLosslessSubtitle": { - "description": "Technical spec for lossless" - }, - "libraryScanFinalizing": "Завершення роботи з бібліотекою...", - "@libraryScanFinalizing": { - "description": "Status shown after file scanning finishes but library persistence is still running" - }, - "@trackEditMetadata": { - "description": "Menu action - edit embedded metadata" - }, - "@downloadNeteaseIncludeRomanization": { - "description": "Setting to include romanized lyrics from Netease" - }, - "@optionsArtistTagModeJoinedSubtitle": { - "description": "Subtitle for joined artist tag mode" - }, - "regionCountryDE": "Germany", - "@regionCountryDE": { - "description": "Country name for SongLink region picker" - }, - "optionsAutoFallback": "Автоматичний резервний варіант", - "@optionsAutoFallback": { - "description": "Auto-retry with other services" - }, - "@trackMetadataPlay": { - "description": "Action button - play track" - }, - "settingsFiles": "Files & Folders", - "@settingsFiles": { - "description": "Settings menu item - file and folder settings" - }, - "aboutMobileDeveloper": "Розробник мобільної версії", - "@trackDownloaded": { - "description": "Metadata label - download date" - }, - "homeSkipAlreadyDownloaded": "Пропустити вже завантажені пісні", - "@homeSkipAlreadyDownloaded": { - "description": "Checkbox label in import dialog to skip already-downloaded songs" - }, - "dialogUninstall": "Деінсталювати", - "@dialogUninstall": { - "description": "Dialog button - uninstall extension" - }, - "collectionDeletePlaylist": "Видалити список відтворення", - "@collectionDeletePlaylist": { - "description": "Action to delete playlist" - }, - "trackCoverOnline": "Online cover", - "@trackCoverOnline": { - "description": "Label shown when metadata autofill downloaded cover art from the internet" - }, - "downloadTitle": "Завантажити", - "@downloadTitle": { - "description": "Download settings page title" - }, - "searchArtists": "Виконавці", - "@searchArtists": { - "description": "Search result category - artists" - }, - "extensionUrlHandler": "Обробник URL-адрес", - "@extensionUrlHandler": { - "description": "Capability - handles URLs" - }, - "@timeHoursAgo": { - "description": "Relative time - hours ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "editMetadataAdvanced": "Advanced", - "@editMetadataAdvanced": { - "description": "Expandable section label for advanced metadata fields" - }, - "@actionSelectAll": { - "description": "Action button - select all items" - }, - "timeMinutesAgo": "{count, plural, =1{1 minute ago} other{{count} хвилин тому}}", - "@timeMinutesAgo": { - "description": "Relative time - minutes ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "regionCountryXK": "Kosovo", - "@downloadAskQualitySubtitle": { - "description": "Subtitle for ask quality toggle" - }, - "setupLanguageSystemDefault": "System Default", - "@setupLanguageSystemDefault": { - "description": "Option to use the system language" - }, - "@updateAvailable": { - "description": "Update dialog title" - }, - "cacheEntries": "{count} записів", - "@cacheEntries": { - "description": "Track cache entry count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@notifLibraryScanExcluded": { - "description": "Library scan complete suffix - excluded track count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionsMetadataPrioritySubtitle": "Встановити порядок пошуку та джерел метаданих", - "@extensionsMetadataPrioritySubtitle": { - "description": "Subtitle for metadata priority" - }, - "downloadedAlbumSelectToDelete": "Виберіть треки для видалення", - "@downloadedAlbumSelectToDelete": { - "description": "Placeholder when nothing selected" - }, - "@dialogClearHistoryTitle": { - "description": "Dialog title - clear download history" - }, - "tutorialSettingsTip1": "Змініть місце завантаження та організації папок", - "@tutorialSettingsTip1": { - "description": "Tutorial settings tip 1" - }, - "@extensionsInstalledSuccess": { - "description": "Success message after install" - }, - "allFilesAccessDisabledSubtitle": "Обмежено лише медіа-папками", - "@allFilesAccessDisabledSubtitle": { - "description": "Subtitle when all files access is disabled" - }, - "@appearanceHistoryViewList": { - "description": "List layout option" - }, - "@notifAlreadyInLibraryCount": { - "description": "Notification title when track is already in library, with count", - "placeholders": { - "completed": { - "type": "int" }, - "total": { - "type": "int" - } - } - }, - "@libraryFilterAll": { - "description": "Filter chip - show all library items" - }, - "settingsDownload": "Завантаження", - "settingsFilesSubtitle": "Download location, filename, folder structure", - "@settingsFilesSubtitle": { - "description": "Subtitle for files & folders settings" - }, - "@libraryFilterSort": { - "description": "Filter section - sort order" - }, - "metadataProvidersSubtitle": "Drag to set search and metadata source order", - "@extensionPermissions": { - "description": "Section header - required permissions" - }, - "selectionSelectToDelete": "Виберіть треки для видалення", - "@libraryExternalPlayerSubtitle": { - "description": "Subtitle for external player option" - }, - "extensionVerificationOpenBrowser": "Open browser", - "@extensionVerificationOpenBrowser": { - "description": "Button to open the extension verification URL in a browser" - }, - "@trackConvertConfirmMessageLossless": { - "description": "Confirmation dialog message for lossless-to-lossless conversion", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { + "trackName": { "type": "String" } } }, - "@snackbarAddedTracksToQueue": { - "description": "Snackbar - multiple tracks added to queue", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@backupContentsWishlist": { - "description": "Backup contents row for wishlist tracks count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@cacheCleanupUnusedSubtitle": { - "description": "Subtitle for cleanup unused data action" - }, - "trackLabel": "Лейбл", - "@trackLabel": { - "description": "Metadata label - record label" - }, - "@collectionAddedToLoved": { - "description": "Snackbar after adding track to loved folder", + "duplicatesDeleteCopyMessage": "Delete this copy of \"{trackName}\"?", + "@duplicatesDeleteCopyMessage": { + "description": "Confirmation message for deleting one duplicate copy", "placeholders": { "trackName": { "type": "String" } } }, - "regionCountryGB": "United Kingdom", - "dialogCancel": "Скасувати", - "@dialogCancel": { - "description": "Dialog button - cancel action" - }, - "@folderOrganizationByArtistAlbumSubtitle": { - "description": "Subtitle for nested folder option" - }, - "@notifAllDownloadsComplete": { - "description": "Notification title when all downloads finish successfully" - }, - "setupEnableNotifications": "Увімкнути сповіщення", - "@setupEnableNotifications": { - "description": "Button to enable notifications" - }, - "@notifFinalizingTrack": { - "description": "Notification title while finalizing (embedding metadata) a track", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "@downloadLossy320FormatDesc": { - "description": "Description in the lossy format picker" - }, - "filenameFormat": "Формат імені файлу", - "@filenameFormat": { - "description": "Setting title - filename pattern" - }, - "historySearchHint": "Історія пошуку...", - "@historySearchHint": { - "description": "Search bar placeholder in history" - }, - "@tutorialReadyMessage": { - "description": "Tutorial completion message" - }, - "cacheTempDirectoryDesc": "Тимчасові файли із завантажень та конвертації аудіо.", - "@cacheTempDirectoryDesc": { - "description": "Description of what temporary directory contains" - }, - "@trackSaveLyrics": { - "description": "Menu action - save lyrics as .lrc file" - }, - "@notifDownloadsFinished": { - "description": "Notification title when queue finishes with some failures", - "placeholders": { - "completed": { - "type": "int" - }, - "failed": { - "type": "int" - } - } - }, - "@historyFilterAlbums": { - "description": "Filter chip - show albums only" - }, - "trackEmbedLyrics": "Вбудувати текст пісні", - "@trackEmbedLyrics": { - "description": "Action - embed lyrics into audio file" - }, - "@downloadPrimaryArtistOnlyOff": { - "description": "Status label when primary-artist-only folder naming is disabled" - }, - "@trackReEnrichFieldTrackInfo": { - "description": "Checkbox label for track info in re-enrich" - }, - "snackbarHistoryCleared": "Історія очищена", - "downloadNetworkCompatibilityModeDisabled": "Using standard network settings", - "@artistPopular": { - "description": "Section header for popular/top tracks" - }, - "@trackFetchOnlineLyrics": { - "description": "Action - fetch lyrics from online providers" - }, - "extensionLyricsProvider": "Постачальник текстів пісень", - "@extensionLyricsProvider": { - "description": "Capability - provides lyrics" - }, - "historyFilterAll": "Усі", - "@historyFilterAll": { - "description": "Filter chip - show all items" - }, - "tutorialSearchTitle": "Пошук музики", - "@lyricsModeExternal": { - "description": "Lyrics mode option - separate LRC file" - }, - "@actionDismiss": { - "description": "Generic action - dismiss" - }, - "trackOpenInSpotify": "Відкрити в Spotify", - "@trackOpenInSpotify": { - "description": "Action - open track in Spotify app" - }, - "@libraryClear": { - "description": "Button to clear all library entries" - }, - "discographyFailedToFetch": "Не вдалося отримати деякі альбоми", - "@filenameShowAdvancedTagsDescription": { - "description": "Description for advanced filename tag toggle" - }, - "@storeUpdate": { - "description": "Update available button" - }, - "collectionPlaylistTracks": "{count, plural, =1{1 трек} other{{count} треків}}", - "@collectionPlaylistTracks": { - "description": "Track count label for custom playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "optionsPrimaryProviderSubtitle": "Service used for searching by track or album name", - "@optionsPrimaryProviderSubtitle": { - "description": "Subtitle for primary provider" - }, - "@downloadEmbedLyricsDisabled": { - "description": "Subtitle when lyrics embedding is blocked by metadata toggle" - }, - "@librarySourceLocal": { - "description": "Badge for tracks from local library scan" - }, - "@searchSortDurationLong": { - "description": "Sort option - longest duration first" - }, - "@downloadFilterContributingDisabled": { - "description": "Subtitle when contributing artist filter is off" - }, - "queueDownloadingCount": "Завантаження ({count})", - "@queueDownloadingCount": { - "description": "Header for active downloads section with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionVerificationBrowserInApp": "In-app", - "trackAudioQuality": "Якість звуку", - "@trackAudioQuality": { - "description": "Metadata label - audio quality" - }, - "libraryRemovedMissingFiles": "Видалено {count} відсутніх файлів з бібліотеки", - "@libraryRemovedMissingFiles": { - "description": "Snackbar after cleanup", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "collectionFavoriteArtistsEmptyTitle": "No favorite artists yet", - "@collectionFavoriteArtistsEmptyTitle": { - "description": "Favorite artists empty state title" - }, - "@errorInvalidFolderSelected": { - "description": "Error when the selected folder is invalid" - }, - "@searchSortArtistZA": { - "description": "Sort option - artist descending" - }, - "snackbarAddedTracksToLoved": "Додано {count} треків до списку \"Улюблені\"", - "@snackbarAddedTracksToLoved": { - "description": "Snackbar after adding multiple tracks to Loved folder", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cancelDownloadContent": "Це скасує активне завантаження треку \"{trackName}\".", - "@cancelDownloadContent": { - "description": "Dialog body when confirming cancellation of an active download", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "settingsCacheSubtitle": "Переглянути розмір і очистити кешовані дані", - "@settingsCacheSubtitle": { - "description": "Subtitle for cache management menu" - }, - "notifLibraryScanCompleteBody": "{count} треків індексовано", - "@cacheSizeWithFiles": { - "description": "Cache size and file count", - "placeholders": { - "size": { - "type": "String" - }, - "count": { - "type": "int" - } - } - }, - "@downloadAskBeforeDownload": { - "description": "Setting - show quality picker" - }, - "@extensionHealthDegraded": { - "description": "Extension service health status - degraded" - }, - "@sectionPerformance": { - "description": "Settings section header" - }, - "@trackCoverCurrent": { - "description": "Label for the currently embedded cover preview" - }, - "discographySelectAlbums": "Вибрати альбоми...", - "@discographySelectAlbums": { - "description": "Option - manually select albums to download" - }, - "aboutAppDescription": "Search music metadata, manage extensions, and organize your library.", - "@aboutAppDescription": { - "description": "App description in header card" - }, - "extensionCustomTrackMatching": "Підбір користувацьких треків", - "@extensionCustomTrackMatching": { - "description": "Capability - custom track matching algorithm" - }, - "@editMetadataSelectNone": { - "description": "Button to clear selected fields for auto-fill" - }, - "@trackPlayNext": { - "description": "Menu action to play a track as the next queue item" - }, - "extensionCapabilities": "Можливості", - "@extensionCapabilities": { - "description": "Section header - extension features" - }, - "@downloadSelectServiceToEnable": { - "description": "Subtitle when quality picker is disabled due to extension service" - }, - "logIssueRateLimitedDescription": "Too many requests to the service", - "@logIssueRateLimitedDescription": { - "description": "Diagnostic badge description for rate limiting" - }, - "@actionResume": { - "description": "Action button - resume download" - }, - "@updateDownloadInstall": { - "description": "Update button - download and install" - }, - "downloadLossy320Format": "Формат із втратами 320 кбіт/с", - "@downloadLossy320Format": { - "description": "Title of the lossy format picker bottom sheet" - }, - "settingsMetadataSubtitle": "Cover art, tags, ReplayGain, providers", - "@trackCopyright": { - "description": "Metadata label - copyright information" - }, - "@snackbarExtensionInstalled": { - "description": "Snackbar - extension installed successfully", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "@regionCountryJP": { - "description": "Country name for SongLink region picker" - }, - "trackReEnrichOnlineSubtitle": "Пошук метаданих в Інтернеті та вбудовування у файл", - "@trackReEnrichOnlineSubtitle": { - "description": "Subtitle for re-enrich metadata action for local items" - }, - "nowPlayingNothingPlaying": "Nothing is playing", - "@nowPlayingNothingPlaying": { - "description": "Empty state when no track is currently playing" - }, - "tutorialDownloadDesc": "Pick an available quality, start the download, and follow its progress in the queue.", - "@tutorialDownloadDesc": { - "description": "Tutorial download page description" - }, - "@appearanceTitle": { - "description": "Appearance settings page title" - }, - "@backupExportSectionDescription": { - "description": "Description of what a backup contains" - }, - "@downloadLossyOpus128": { - "description": "Lossy format option - Opus 128kbps" - }, - "@logFilterSection": { - "description": "Filter section title" - }, - "trackReEnrichSuccess": "Метадані повторно збагачені успішно", - "@trackReEnrichSuccess": { - "description": "Snackbar after successful re-enrichment" - }, - "backupContentsHistory": "{count} history {count, plural, =1{item} other{items}}", - "@backupContentsHistory": { - "description": "Backup contents row for history count", + "@dialogImportPlaylistMessage": { + "description": "Dialog message - import playlist confirmation", "placeholders": { "count": { "type": "int" @@ -2303,692 +958,93 @@ } } }, - "libraryAutoScanOnOpen": "Кожного разу коли додаток відкривається", - "@libraryAutoScanOnOpen": { - "description": "Auto scan when app opens" + "snackbarAddedTracksToQueue": "Додано {count} треків до черги", + "@snackbarAddedTracksToQueue": { + "description": "Snackbar - multiple tracks added to queue", + "placeholders": { + "count": { + "type": "int" + } + } }, - "audioAnalysisChannels": "Канали", - "@audioAnalysisChannels": { - "description": "Channels metric label" - }, - "appearanceHistoryViewList": "Список", - "updateDownloadInstall": "Завантажити та встановити", - "@libraryShowDuplicateIndicator": { - "description": "Toggle for duplicate indicator in search" - }, - "extensionsHomeFeedOff": "Off", - "@extensionsHomeFeedOff": { - "description": "Extensions page - home feed provider option: off" - }, - "searchSortTitleAZ": "Назва (А-Я)", - "@searchSortTitleAZ": { - "description": "Sort option - title ascending" - }, - "collectionRemovedFromLoved": "\"{trackName}\" видалено з уподобань", - "@collectionRemovedFromLoved": { - "description": "Snackbar after removing track from loved folder", + "snackbarAlreadyDownloaded": "\"{trackName}\" вже завантажено", + "@snackbarAlreadyDownloaded": { + "description": "Snackbar - track already exists", "placeholders": { "trackName": { "type": "String" } } }, - "sectionAudioQuality": "Якість звуку", - "@sectionAudioQuality": { - "description": "Settings section header" - }, - "trackConvertSuccess": "Конвертовано в {format} успішно", - "@trackConvertSuccess": { - "description": "Snackbar after successful conversion", - "placeholders": { - "format": { - "type": "String" - } - } - }, - "dialogUninstallExtensionMessage": "Ви впевнені, що хочете видалити {extensionName}?", - "@dialogUninstallExtensionMessage": { - "description": "Dialog message - uninstall specific extension", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "downloadNativeWorkerSubtitle": "Фонова служба Android для завантажень через розширення", - "@downloadNativeWorkerSubtitle": { - "description": "Setting subtitle for Android native download worker" - }, - "storeUpdate": "Оновлені", - "libraryFilterMetadataMissingAny": "будь-які метадані", - "@libraryFilterMetadataMissingAny": { - "description": "Filter option - items missing any tracked metadata field" - }, - "@selectionBatchConvertConfirmMessageLosslessCapped": { - "description": "Confirmation dialog message for capped lossless batch conversion", - "placeholders": { - "count": { - "type": "int" - }, - "format": { - "type": "String" - }, - "quality": { - "type": "String" - } - } - }, - "editMetadataAutoFillDesc": "Choose a metadata extension, select fields, then review its data before applying", - "@editMetadataAutoFillDesc": { - "description": "Description for the auto-fill section" - }, - "@lyricsProviderExtensionDesc": { - "description": "Generic description for extension-based lyrics providers" - }, - "downloadSongLinkRegion": "Регіон SongLink", - "@downloadSongLinkRegion": { - "description": "Setting for SongLink region used during fallback resolution" - }, - "shareSheetNoExtensions": "No other compatible services", - "@shareSheetNoExtensions": { - "description": "Empty state when no extensions can be searched for cross-service links" - }, - "queueFlacConfirmMessage": "Пошук онлайн-збігів для вибраних треків та додавання завантажень FLAC до черги.\n\nІснуючі файли не будуть змінені або видалені.\n\nАвтоматично додаються до черги лише збіги з високою достовірністю.\n\n{count} вибрано", - "@queueFlacConfirmMessage": { - "description": "Confirmation dialog body before queueing FLAC redownloads for local tracks", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "tooltipAddToPlaylist": "Додати до списку відтворення", - "@tooltipAddToPlaylist": { - "description": "Tooltip for the Add to Playlist button" - }, - "@snackbarAddedToQueueGeneric": { - "description": "Snackbar when a track is added to the playback queue without naming it" - }, - "@tutorialSettingsTip2": { - "description": "Tutorial settings tip 2" - }, - "extensionPermissions": "Дозволи", - "releaseTypeSingle": "Single", - "aboutTelegramChannelSubtitle": "Оголошення та оновлення", - "@aboutTelegramChannelSubtitle": { - "description": "Subtitle for Telegram channel" - }, - "@dialogDisableAndClear": { - "description": "Confirmation action to disable download history and clear existing entries" - }, - "@homeSearchHintProvider": { - "description": "Placeholder for the main search field when a provider is selected", - "placeholders": { - "providerName": { - "type": "String" - } - } - }, - "metadataProvidersTitle": "Metadata Provider Priority", - "@metadataProvidersTitle": { - "description": "Settings item title for metadata provider order" - }, - "trackAddToQueue": "Add to queue", - "audioAnalysisDecodedFormat": "Decoded Format", - "@audioAnalysisDecodedFormat": { - "description": "Decoded sample format metric label" - }, - "@editMetadataSelectEmpty": { - "description": "Button to select only fields that are currently empty" - }, - "collectionAlreadyInPlaylist": "Вже у списку відтворення \"{playlistName}\"", - "discographyAlbumsOnlySubtitle": "{count} треків з {albumCount} альбомів", - "@discographyAlbumsOnlySubtitle": { - "description": "Subtitle showing album tracks count", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } - }, - "setupNotificationEnable": "Увімкнути сповіщення", - "@setupNotificationEnable": { - "description": "Button to enable notifications" - }, - "settingsAppearanceSubtitle": "Тема, кольори, дисплей", - "@settingsAppearanceSubtitle": { - "description": "Appearance settings description" - }, - "@notifUpdateFailedBody": { - "description": "Notification body when app update download fails" - }, - "@aboutOriginalCreator": { - "description": "Role description for original creator" - }, - "libraryBuiltInPreviewPlayer": "Built-in preview player", - "@libraryBuiltInPreviewPlayer": { - "description": "Setting option to use the built-in preview player" - }, - "tooltipPlay": "Відтворити", - "@tooltipPlay": { - "description": "Tooltip - play button" - }, - "@safMigrationMessage2": { - "description": "Second paragraph of SAF migration dialog" - }, - "@extensionsSearchProvider": { - "description": "Setting - search provider selection" - }, - "libraryAboutDescription": "Сканує вашу існуючу музичну колекцію для виявлення дублікатів під час завантаження. Підтримує формати FLAC, M4A, MP3, Opus та OGG. Метадані зчитуються з тегів файлів, коли вони доступні.", - "@libraryAboutDescription": { - "description": "Description of local library feature" - }, - "downloadAskBeforeDownload": "Запитувати перед завантаженням", - "nowPlayingNoMetadata": "No metadata available", - "@nowPlayingNoMetadata": { - "description": "Empty state when track metadata cannot be loaded" - }, - "trackInstrumental": "Інструментальний трек", - "@trackInstrumental": { - "description": "Message when track is instrumental (no lyrics)" - }, - "@collectionWishlistEmptyTitle": { - "description": "Wishlist empty state title" - }, - "selectionBatchConvertConfirmMessageLosslessCapped": "Convert {count} {count, plural, =1{track} other{tracks}} to {format} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original files will be deleted after conversion.", - "downloadDeduplication": "Skip Duplicate Downloads", - "libraryFilterSortOldest": "Найстаріші", - "@libraryFilterSortOldest": { - "description": "Sort option - oldest first" - }, - "setupSkip": "Пропустити поки що", - "@setupSkip": { - "description": "Skip current step button" - }, - "@setupFolderDescription": { - "description": "Explanation for folder selection" - }, - "@settingsLogsSubtitle": { - "description": "Logs settings description" - }, - "storeNewRepoUrlLabel": "Нова URL-адреса репозиторію", - "@storeNewRepoUrlLabel": { - "description": "Label for the new repository URL field inside the dialog" - }, - "cacheClearConfirmMessage": "Це очистить кешовані дані для {target}. Завантажені музичні файли не будуть видалені.", - "@cacheClearConfirmMessage": { - "description": "Dialog message before clearing selected cache", - "placeholders": { - "target": { - "type": "String" - } - } - }, - "trackMetadataPlay": "Прослухати", - "@libraryEnableLocalLibrary": { - "description": "Toggle to enable library scanning" - }, - "optionsUpdateChannel": "Канал оновлень", - "@optionsUpdateChannel": { - "description": "Stable vs preview releases" - }, - "@downloadCreatePlaylistSourceFolderDisabled": { - "description": "Subtitle when playlist folder is disabled" - }, - "@extensionRefreshStatus": { - "description": "Tooltip for refreshing extension service health status" - }, - "backupRestoreRestartHint": "Restart the app to make sure every change is applied.", - "@backupRestoreRestartHint": { - "description": "Hint shown after restoring that an app restart is recommended" - }, - "@snackbarExtensionInstalledEnable": { - "description": "Snackbar after installing an extension from the repo tab", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "settingsAutoExportFailedSubtitle": "Автоматично зберігати невдалі завантаження у файл TXT", - "@settingsAutoExportFailedSubtitle": { - "description": "Subtitle for auto-export setting" - }, - "searchSortArtistAZ": "Виконавець (А-Я)", - "@searchSortArtistAZ": { - "description": "Sort option - artist ascending" - }, - "editMetadataFieldAlbumArtist": "Виконавець альбому", - "@editMetadataFieldAlbumArtist": { - "description": "Chip label for album artist field in auto-fill selector" - }, - "@queueEmptyHistory": { - "description": "Empty state title when download history is empty" - }, - "@dialogDisableHistoryMessage": { - "description": "Confirmation dialog message shown before disabling download history" - }, - "queueFlacNoReliableMatches": "Не знайдено надійних онлайн-відповідей для вибраного запиту", - "@queueFlacNoReliableMatches": { - "description": "Snackbar when no safe FLAC redownload matches were found" - }, - "trackOpenInDeezer": "Відкрити в Deezer", - "@trackOpenInDeezer": { - "description": "Action - open track in Deezer app" - }, - "setupChooseFromFilesSubtitle": "Виберіть iCloud або інше місцезнаходження", - "@setupChooseFromFilesSubtitle": { - "description": "Subtitle for file picker" - }, - "artistMonthlyListeners": "{count} слухачів щомісяця", - "@artistMonthlyListeners": { - "description": "Monthly listener count display", - "placeholders": { - "count": { - "type": "String", - "description": "Formatted listener count" - } - } - }, - "@downloadLossyAacSubtitle": { - "description": "Subtitle for AAC/M4A 320kbps lossy option" - }, - "cacheSectionStorage": "Кешовані дані", - "@cacheSectionStorage": { - "description": "Section header for cache entries" - }, - "@libraryAutoScanWeekly": { - "description": "Auto scan once per week" - }, - "tutorialDownloadCompletedSemantics": "Download completed", - "@tutorialDownloadCompletedSemantics": { - "description": "Accessibility label for completed download state in tutorial demo" - }, - "@logNoLogsYet": { - "description": "Empty state title" - }, - "@selectionDeletePlaylistsCount": { - "description": "Button label for deleting multiple selected playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadSeparateSinglesEnabled": "Singles and EPs saved in a separate folder", - "@downloadSeparateSinglesEnabled": { - "description": "Subtitle when separate singles folder is on" - }, - "setupAppDocumentsFolder": "Папка з документами програми", - "@setupAppDocumentsFolder": { - "description": "iOS documents folder option" - }, - "storeLoadError": "Не вдалося завантажити репозиторій", - "settingsDownloadNetwork": "Мережа для завантаження", - "metadataSaveFailedStorage": "Не вдалося записати метадані назад у сховище", - "@logAutoScrollOff": { - "description": "Tooltip when auto-scroll is disabled on the log screen" - }, - "@trackConvertFormat": { - "description": "Menu item - convert audio format" - }, - "optionsArtistTagModeJoined": "Одне об'єднане значення", - "@optionsArtistTagModeJoined": { - "description": "Artist tag mode option that joins multiple artists into one value" - }, - "@dateYesterday": { - "description": "Relative date - yesterday" - }, - "@settingsExtensionsSubtitle": { - "description": "Extensions settings description" - }, - "searchSortArtistZA": "Виконавець (Я-А)", - "@extensionSettings": { - "description": "Section header - extension settings" - }, - "@extensionOauthConnectHint": { - "description": "Hint for an OAuth login link field before connecting Spotify" - }, - "@notifUpdateReady": { - "description": "Notification title when app update download is complete" - }, - "@regionCountryMX": { - "description": "Country name for SongLink region picker" - }, - "@nowPlayingOpenInExternalPlayer": { - "description": "Menu item to open the current track in an external player" - }, - "trackConvertDithering": "Dithering", - "@trackConvertDithering": { - "description": "Section label for lossless conversion dithering options" - }, - "settingsDownloadSubtitle": "Service, quality, fallback", - "@settingsDownloadSubtitle": { - "description": "Download settings description" - }, - "libraryLastScanned": "Останнє сканування: {time}", - "@libraryLastScanned": { - "description": "Last scan time display", - "placeholders": { - "time": { - "type": "String" - } - } - }, - "setupIosEmptyFolderWarning": "Обмеження iOS: Не можна вибрати порожні папки. Виберіть папку, яка містить принаймні один файл.", - "@setupIosEmptyFolderWarning": { - "description": "iOS folder selection warning" - }, - "@storeAddRepoDescription": { - "description": "Store setup screen - explanatory text" - }, - "@snackbarFailedToInstallNamed": { - "description": "Snackbar when extension install fails in the repo tab", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "@collectionAddedTracksToPlaylist": { - "description": "Snackbar after adding multiple tracks to a playlist", - "placeholders": { - "count": { - "type": "int" - }, - "playlistName": { - "type": "String" - } - } - }, - "updateNew": "Нова", - "@updateNew": { - "description": "Label for new version" - }, - "settingsExtensionsSubtitle": "Керування постачальниками послуг завантаження", - "@albumFolderArtistAlbumSinglesSubtitle": { - "description": "Folder structure example" - }, - "trackReEnrichSelectAll": "Вибрати все", - "@trackReEnrichSelectAll": { - "description": "Select all fields checkbox in re-enrich" - }, - "@extensionsUninstall": { - "description": "Uninstall extension button" - }, - "@downloadUseAlbumArtistForFoldersTrackSubtitle": { - "description": "Subtitle when track artist is used for folder names" - }, - "@logIssueNetworkErrorLabel": { - "description": "Diagnostic badge label for generic network errors" - }, - "albumFolderArtistYearAlbumSubtitle": "Альбоми/Ім'я Виконавця/[2005] Назва альбому/", - "@albumFolderArtistYearAlbumSubtitle": { - "description": "Folder structure example" - }, - "itemCount": "{count} {count, plural, =1{item} other{items}}", - "@itemCount": { - "description": "Generic item count label", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "discographyFetchingTracks": "Отримання треків...", - "@discographyFetchingTracks": { - "description": "Progress - fetching album tracks" - }, - "@libraryFolder": { - "description": "Folder selection setting" - }, - "queueEmptyAlbums": "Немає завантажень альбомів", - "@queueEmptyAlbums": { - "description": "Empty state title when no album downloads exist" - }, - "@metadataProviderPriorityDescription": { - "description": "Metadata priority page description" - }, - "@extensionVerificationHelpTitleManual": { - "description": "Dialog title when automatic browser launch for verification fails" - }, - "extensionError": "Помилка", - "@extensionError": { - "description": "Extension detail - error message" - }, - "@trackLyricsLoadFailed": { - "description": "Message when lyrics loading fails" - }, - "@downloadedAlbumDeleteCount": { - "description": "Delete button text with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@extensionsNoHomeFeedExtensions": { - "description": "Extensions page - shown when no installed extension has home feed" - }, - "@collectionArtistCount": { - "description": "Artist count label for favorite artists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "backupContentsArtists": "{count, plural, =1{1 favorite artist} other{{count} favorite artists}}", - "@backupContentsArtists": { - "description": "Backup contents row for favorite artists count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@trackRemoveFromDevice": { - "description": "Action - delete downloaded file" - }, - "lyricsProvidersEnabledSection": "Увімкнено ({count})", - "@lyricsProvidersEnabledSection": { - "description": "Section header for enabled providers", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@cueSplitTitle": { - "description": "Title for CUE split bottom sheet" - }, - "@downloadedAlbumSelectedCount": { - "description": "Selection count indicator", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@trackOptionRemoveFromWishlist": { - "description": "Bottom sheet action label - remove track from wishlist" - }, - "notifDownloadingTrack": "Завантаження {trackName}", - "@notifDownloadingTrack": { - "description": "Notification title while downloading a track", + "snackbarAlreadyInLibrary": "\"{trackName}\" вже є у вашій бібліотеці", + "@snackbarAlreadyInLibrary": { + "description": "Snackbar - track already exists in local library", "placeholders": { "trackName": { "type": "String" } } }, - "@discographySkippedDownloaded": { - "description": "Snackbar - with skipped tracks count", + "snackbarHistoryCleared": "Історія очищена", + "@snackbarHistoryCleared": { + "description": "Snackbar - history deleted" + }, + "snackbarDeletedTracks": "Видалено {count} {count, plural, =1{трек} other{треків}}", + "@snackbarDeletedTracks": { + "description": "Snackbar - tracks deleted", "placeholders": { - "added": { - "type": "int" - }, - "skipped": { + "count": { "type": "int" } } }, - "@tutorialSettingsTip3": { - "description": "Tutorial settings tip 3" - }, - "@announcementUnableToOpenLink": { - "description": "Snackbar shown when an announcement CTA link cannot be opened" - }, - "trackReleaseDate": "Дата випуску", - "discographySelectedCount": "{count} вибрано", - "collectionArtistCount": "{count, plural, =1{1 artist} other{{count} artists}}", - "logIssueNetworkErrorLabel": "NETWORK ERROR", - "updateStartingDownload": "Початок завантаження...", - "@updateStartingDownload": { - "description": "Update status - initializing" - }, - "trackDiscNumber": "Номер диска", - "@trackDiscNumber": { - "description": "Metadata label - disc number" - }, - "optionsUsingExtension": "Використання розширення: {extensionName}", - "@optionsUsingExtension": { - "description": "Shows active extension name", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "dialogDisableHistoryTitle": "Turn off download history?", - "tutorialWelcomeTip3": "Embed metadata, cover art, lyrics, and release information automatically", - "@tutorialWelcomeTip3": { - "description": "Tutorial welcome tip 3" - }, - "@collectionPlaylistEmptySubtitle": { - "description": "Playlist empty state subtitle" - }, - "@tutorialSearchHint": { - "description": "Placeholder shown in the tutorial search demo" - }, - "cleanupOrphanedDownloadsNone": "Не знайдено утрачених записів", - "discographySkippedDownloaded": "{added} додано, {skipped} вже завантажено", - "@updateDontRemind": { - "description": "Update button - skip this version" - }, - "@snackbarLoadingCueSheet": { - "description": "Snackbar while loading a CUE sheet file" - }, - "@dialogUninstallExtension": { - "description": "Dialog title - uninstall extension" - }, - "lyricsProvidersTitle": "Lyrics Provider Priority", - "@dialogRemove": { - "description": "Dialog button - remove item" - }, - "snackbarError": "Помилка: {error}", - "@snackbarError": { - "description": "Generic error snackbar with error detail", + "snackbarCannotOpenFile": "Не вдається відкрити файл: {error}", + "@snackbarCannotOpenFile": { + "description": "Snackbar - file open error", "placeholders": { "error": { "type": "String" } } }, - "@sectionApp": { - "description": "Settings section header" + "snackbarViewQueue": "Переглянути чергу", + "@snackbarViewQueue": { + "description": "Snackbar action - view download queue" }, - "@libraryPlayback": { - "description": "Section header for playback settings in library settings" + "snackbarUrlCopied": "{platform} URL-адреса скопійована в буфер обміну", + "@snackbarUrlCopied": { + "description": "Snackbar - URL copied", + "placeholders": { + "platform": { + "type": "String", + "description": "Platform name (Spotify/Deezer)" + } + } }, - "@downloadPrimaryArtistOnlyOn": { - "description": "Status label when primary-artist-only folder naming is enabled" + "snackbarFileNotFound": "Файл не знайдено", + "@snackbarFileNotFound": { + "description": "Snackbar - file doesn't exist" }, - "lyricsProvidersDiscardContent": "У вас є незбережені зміни, які буде втрачено.", - "previewStop": "Stop preview", - "@previewStop": { - "description": "Tooltip for the button that stops the playing track preview snippet" + "snackbarSelectExtFile": "Будь ласка, виберіть файл .spotiflac-ext", + "@snackbarSelectExtFile": { + "description": "Snackbar - wrong file type selected" }, - "trackConvertConfirmMessageLossless": "Конвертувати з {sourceFormat} у {targetFormat}? (Lossless — без втрати якості)\n\nОригінальний файл буде видалено після конвертації.", - "discographyAlbumsOnly": "Тільки альбоми", - "@discographyAlbumsOnly": { - "description": "Option - download only albums" + "snackbarProviderPrioritySaved": "Пріоритет постачальника збережено", + "@snackbarProviderPrioritySaved": { + "description": "Snackbar - provider order saved" }, - "@editMetadataFieldCopyright": { - "description": "Chip label for copyright field in auto-fill selector" + "snackbarMetadataProviderSaved": "Пріоритет постачальника метаданих збережено", + "@snackbarMetadataProviderSaved": { + "description": "Snackbar - metadata provider order saved" }, - "extensionsFallbackSubtitle": "Виберіть, які встановлені розширення для завантаження можна використовувати як резервні", - "aboutSocial": "Соціальні мережі", - "@aboutSocial": { - "description": "Section for social links" - }, - "audioAnalysisNyquist": "Частота Найквіста", - "trackCoverSelected": "Selected cover", - "@trackCoverSelected": { - "description": "Label for the newly selected cover preview" - }, - "downloadDeduplicationEnabled": "Already-downloaded tracks will be skipped", - "@downloadDeduplicationEnabled": { - "description": "Subtitle when deduplication is on" - }, - "homeEmptyTitle": "", - "@homeEmptyTitle": { - "description": "Title shown on home when no providers are available yet" - }, - "@extensionHealthUnknown": { - "description": "Extension service health status - unknown" - }, - "storeInstalled": "Встановлені", - "@storeInstalled": { - "description": "Already installed badge" - }, - "trackReplayGainSuccess": "ReplayGain tags added", - "@trackReplayGainSuccess": { - "description": "Snackbar message after ReplayGain tags written for a single track" - }, - "libraryShowDuplicateIndicatorSubtitle": "Показувати під час пошуку існуючих треків", - "@collectionPlaylistRenamed": { - "description": "Snackbar after renaming playlist" - }, - "@trackConvertResamplerSoxr": { - "description": "Lossless conversion SoX resampler option" - }, - "@dialogUnsavedChanges": { - "description": "Dialog message - unsaved changes" - }, - "dialogDownload": "Завантажити", - "@dialogDownload": { - "description": "Confirm button in Download All dialog" - }, - "trackLyricsLoadFailed": "Не вдалося завантажити текст пісні", - "@backupContentsTitle": { - "description": "Header above the list summarizing what the backup contains" - }, - "@safMigrationTitle": { - "description": "Title of SAF migration dialog" - }, - "@trackReEnrichFieldLyrics": { - "description": "Checkbox label for lyrics field in re-enrich" - }, - "setupPermissionDeniedMessage": "Дозвіл відхилено. Будь ласка, надайте всі дозволи, щоб продовжити.", - "@setupPermissionDeniedMessage": { - "description": "Error when permission denied" - }, - "settingsDownloadNetworkWifiOnly": "Тільки Wi-Fi", - "@settingsDownloadNetworkWifiOnly": { - "description": "Network option - only use WiFi" - }, - "@backupIncludeSecrets": { - "description": "Toggle to include secret extension settings (tokens, API keys) in the backup" - }, - "@libraryFilterMetadataMissingAlbumArtist": { - "description": "Filter option - items missing album artist" - }, - "@extensionHealthServiceUnknown": { - "description": "Tooltip for unknown extension service health" + "snackbarExtensionInstalled": "Розширення {extensionName} встановлено.", + "@snackbarExtensionInstalled": { + "description": "Snackbar - extension installed successfully", + "placeholders": { + "extensionName": { + "type": "String" + } + } }, "snackbarExtensionUpdated": "{extensionName} оновлено.", "@snackbarExtensionUpdated": { @@ -2999,114 +1055,365 @@ } } }, - "homeEmptySubtitle": "Install an extension to continue.", - "@settingsTitle": { - "description": "Settings screen title" + "snackbarFailedToInstall": "Не вдалося встановити розширення", + "@snackbarFailedToInstall": { + "description": "Snackbar - extension install error" }, - "@libraryFilterMetadataIncorrectIsrcFormat": { - "description": "Filter option - items with an invalid ISRC format" + "snackbarFailedToUpdate": "Не вдалося оновити розширення", + "@snackbarFailedToUpdate": { + "description": "Snackbar - extension update error" }, - "@notifLibraryScanComplete": { - "description": "Notification title when library scan finishes" + "errorRateLimited": "Обмежений тариф", + "@errorRateLimited": { + "description": "Error title - too many requests" }, - "@logIssueIspBlockingLabel": { - "description": "Diagnostic badge label when ISP blocking is detected" + "errorRateLimitedMessage": "Забагато запитів. Будь ласка, зачекайте хвилинку, перш ніж шукати знову.", + "@errorRateLimitedMessage": { + "description": "Error message - rate limit explanation" }, - "tutorialDownloadTitle": "Завантаження музики", - "@tutorialDownloadTitle": { - "description": "Tutorial download page title" + "errorNoTracksFound": "Треків не знайдено", + "@errorNoTracksFound": { + "description": "Error - search returned no results" }, - "unknownTitle": "Unknown title", - "@unknownTitle": { - "description": "Fallback track title when metadata is missing" + "searchEmptyResultSubtitle": "Try another keyword", + "@searchEmptyResultSubtitle": { + "description": "Subtitle shown under the empty search result state on the home screen" }, - "navLibrary": "Бібліотека", - "@navLibrary": { - "description": "Bottom navigation - Library tab" + "errorUrlNotRecognized": "Посилання не розпізнано", + "@errorUrlNotRecognized": { + "description": "Error title - URL not handled by any extension or service" }, - "@snackbarAlreadyDownloaded": { - "description": "Snackbar - track already exists", + "errorUrlNotRecognizedMessage": "Це посилання не підтримується. Переконайтеся, що URL-адреса правильна та встановлено сумісне розширення.", + "@errorUrlNotRecognizedMessage": { + "description": "Error message - URL not recognized explanation" + }, + "errorUrlFetchFailed": "Не вдалося завантажити вміст за цим посиланням. Спробуйте ще раз.", + "@errorUrlFetchFailed": { + "description": "Error message - generic URL fetch failure" + }, + "errorMissingExtensionSource": "Не вдається завантажити {item}: відсутній вихідний код розширення", + "@errorMissingExtensionSource": { + "description": "Error - extension source not available", "placeholders": { - "trackName": { + "item": { "type": "String" } } }, - "editMetadataSelectAll": "Усі", - "@editMetadataSelectAll": { - "description": "Button to select all fields for auto-fill" + "actionPause": "Пауза", + "@actionPause": { + "description": "Action button - pause download" }, - "storeEmptyNoExtensions": "Розширень немає", - "@storeEmptyNoExtensions": { - "description": "Message when store has no extensions" + "actionResume": "Відновити", + "@actionResume": { + "description": "Action button - resume download" }, - "optionsUpdateChannelWarning": "Тестовий реліз може містити помилки або неповні функції", - "@optionsUpdateChannelWarning": { - "description": "Warning about preview channel" + "actionCancel": "Скасувати", + "@actionCancel": { + "description": "Action button - cancel operation" }, - "@collectionPlaylistNameHint": { - "description": "Hint text for playlist name input" + "actionSelectAll": "Вибрати все", + "@actionSelectAll": { + "description": "Action button - select all items" }, - "notifLibraryScanComplete": "Сканування бібліотеки завершено", - "editMetadataFieldIsrc": "ISRC", - "@editMetadataFieldIsrc": { - "description": "Chip label for ISRC field in auto-fill selector" + "actionDeselect": "Скасувати вибір", + "@actionDeselect": { + "description": "Action button - deselect all" }, - "@libraryFolderHint": { - "description": "Placeholder when no folder selected" - }, - "homeSearchHintDefault": "Paste supported URL or search...", - "@homeSearchHintDefault": { - "description": "Default placeholder for the main search field on Home" - }, - "extensionsNoExtensionsSubtitle": "Встановіть файли .spotiflac-ext, щоб додати нових провайдерів", - "@extensionsNoExtensionsSubtitle": { - "description": "Empty state subtitle" - }, - "@extensionEnterValue": { - "description": "Hint for editing an extension setting value" - }, - "backupRestoreConfirmTitle": "Restore this backup?", - "@backupRestoreConfirmTitle": { - "description": "Confirmation dialog title before restoring a backup" - }, - "@libraryScanSelectFolderFirst": { - "description": "Message when trying to scan without folder" - }, - "@qualityHiResFlac": { - "description": "Quality option - high resolution FLAC" - }, - "aboutSpecialThanks": "Особлива подяка", - "@aboutSpecialThanks": { - "description": "Section for special thanks" - }, - "storeInstall": "Встановити", - "@storeInstall": { - "description": "Install extension button" - }, - "@collectionWishlistEmptySubtitle": { - "description": "Wishlist empty state subtitle" - }, - "historyFilterAlbums": "Альбоми", - "extensionCustomUrlHandlingSubtitle": "This extension can handle links from these sites", - "@extensionCustomUrlHandlingSubtitle": { - "description": "Extension detail subtitle for custom URL handling" - }, - "filenameShowAdvancedTagsDescription": "Увімкнути відформатовані теги для доповнення доріжок і шаблонів дати", - "@aboutReportIssue": { - "description": "Link to report bugs" - }, - "@folderOrganizationByPlaylist": { - "description": "Folder option - playlist folders" - }, - "@dateWeeksAgo": { - "description": "Relative date - weeks ago", + "selectionSelected": "Вибрано {count}", + "@selectionSelected": { + "description": "Selection count indicator", "placeholders": { "count": { "type": "int" } } }, + "selectionAllSelected": "Усі треки вибрано", + "@selectionAllSelected": { + "description": "Status - all items selected" + }, + "selectionSelectToDelete": "Виберіть треки для видалення", + "@selectionSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "progressFetchingMetadata": "Отримання метаданих... {current}/{total}", + "@progressFetchingMetadata": { + "description": "Progress indicator - loading track info", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "progressReadingCsv": "Читання CSV-файлу...", + "@progressReadingCsv": { + "description": "Progress indicator - parsing CSV file" + }, + "searchSongs": "Пісні", + "@searchSongs": { + "description": "Search result category - songs" + }, + "searchArtists": "Виконавці", + "@searchArtists": { + "description": "Search result category - artists" + }, + "searchAlbums": "Альбоми", + "@searchAlbums": { + "description": "Search result category - albums" + }, + "searchPlaylists": "Списки відтворення", + "@searchPlaylists": { + "description": "Search result category - playlists" + }, + "searchSortTitle": "Сортувати результати", + "@searchSortTitle": { + "description": "Bottom sheet title for search sort options" + }, + "searchSortDefault": "За замовчуванням", + "@searchSortDefault": { + "description": "Sort option - default API order" + }, + "searchSortTitleAZ": "Назва (А-Я)", + "@searchSortTitleAZ": { + "description": "Sort option - title ascending" + }, + "searchSortTitleZA": "Назва (Я-А)", + "@searchSortTitleZA": { + "description": "Sort option - title descending" + }, + "searchSortArtistAZ": "Виконавець (А-Я)", + "@searchSortArtistAZ": { + "description": "Sort option - artist ascending" + }, + "searchSortArtistZA": "Виконавець (Я-А)", + "@searchSortArtistZA": { + "description": "Sort option - artist descending" + }, + "searchSortDurationShort": "Тривалість (найкоротша)", + "@searchSortDurationShort": { + "description": "Sort option - shortest duration first" + }, + "searchSortDurationLong": "Тривалість (найдовша)", + "@searchSortDurationLong": { + "description": "Sort option - longest duration first" + }, + "searchSortDateOldest": "Дата випуску (найстаріша)", + "@searchSortDateOldest": { + "description": "Sort option - oldest release first" + }, + "searchSortDateNewest": "Дата випуску (найновіша)", + "@searchSortDateNewest": { + "description": "Sort option - newest release first" + }, + "tooltipPlay": "Відтворити", + "@tooltipPlay": { + "description": "Tooltip - play button" + }, + "filenameFormat": "Формат імені файлу", + "@filenameFormat": { + "description": "Setting title - filename pattern" + }, + "filenameShowAdvancedTags": "Показати розширені теги", + "@filenameShowAdvancedTags": { + "description": "Toggle label for showing advanced filename tags" + }, + "filenameShowAdvancedTagsDescription": "Увімкнути відформатовані теги для доповнення доріжок і шаблонів дати", + "@filenameShowAdvancedTagsDescription": { + "description": "Description for advanced filename tag toggle" + }, + "folderOrganizationNone": "Жодної організації", + "@folderOrganizationNone": { + "description": "Folder option - flat structure" + }, + "folderOrganizationByPlaylist": "За списком відтворення", + "@folderOrganizationByPlaylist": { + "description": "Folder option - playlist folders" + }, + "folderOrganizationByPlaylistSubtitle": "Окрема папка для кожного списку відтворення", + "@folderOrganizationByPlaylistSubtitle": { + "description": "Subtitle for playlist folder option" + }, + "folderOrganizationByArtist": "За виконавцем", + "@folderOrganizationByArtist": { + "description": "Folder option - artist folders" + }, + "folderOrganizationByAlbum": "За альбомом", + "@folderOrganizationByAlbum": { + "description": "Folder option - album folders" + }, + "folderOrganizationByArtistAlbum": "Виконавець/Альбом", + "@folderOrganizationByArtistAlbum": { + "description": "Folder option - nested folders" + }, + "folderOrganizationDescription": "Упорядкувати завантажені файли в папки", + "@folderOrganizationDescription": { + "description": "Folder organization sheet description" + }, + "folderOrganizationNoneSubtitle": "Усі файли в папці завантажень", + "@folderOrganizationNoneSubtitle": { + "description": "Subtitle for no organization option" + }, + "folderOrganizationByArtistSubtitle": "Окрема папка для кожного виконавця", + "@folderOrganizationByArtistSubtitle": { + "description": "Subtitle for artist folder option" + }, + "folderOrganizationByAlbumSubtitle": "Окрема папка для кожного альбому", + "@folderOrganizationByAlbumSubtitle": { + "description": "Subtitle for album folder option" + }, + "folderOrganizationByArtistAlbumSubtitle": "Вкладені папки для виконавця та альбому", + "@folderOrganizationByArtistAlbumSubtitle": { + "description": "Subtitle for nested folder option" + }, + "updateAvailable": "Доступне оновлення", + "@updateAvailable": { + "description": "Update dialog title" + }, + "updateLater": "Пізніше", + "@updateLater": { + "description": "Update button - dismiss" + }, + "updateStartingDownload": "Початок завантаження...", + "@updateStartingDownload": { + "description": "Update status - initializing" + }, + "updateDownloadFailed": "Не вдалося завантажити", + "@updateDownloadFailed": { + "description": "Update error title" + }, + "updateFailedMessage": "Не вдалося завантажити оновлення", + "@updateFailedMessage": { + "description": "Update error message" + }, + "updateNewVersionReady": "Доступна нова версія", + "@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": "Поточна", + "@updateCurrent": { + "description": "Label for current version" + }, + "updateNew": "Нова", + "@updateNew": { + "description": "Label for new version" + }, + "updateDownloading": "Завантаження...", + "@updateDownloading": { + "description": "Update status - downloading" + }, + "updateWhatsNew": "Що нового", + "@updateWhatsNew": { + "description": "Changelog section title" + }, + "updateDownloadInstall": "Завантажити та встановити", + "@updateDownloadInstall": { + "description": "Update button - download and install" + }, + "updateDontRemind": "Не нагадувати", + "@updateDontRemind": { + "description": "Update button - skip this version" + }, + "providerPriorityTitle": "Пріоритет постачальника", + "@providerPriorityTitle": { + "description": "Provider priority page title" + }, + "providerPriorityDescription": "Перетягніть, щоб змінити порядок постачальників завантажень. Під час завантаження треків програма використовуватиме постачальників зверху вниз.", + "@providerPriorityDescription": { + "description": "Provider priority page description" + }, + "providerPriorityInfo": "Якщо трек недоступний у першого провайдера, додаток автоматично спробує наступного.", + "@providerPriorityInfo": { + "description": "Info tip about fallback behavior" + }, + "providerPriorityFallbackExtensionsDescription": "Choose which installed download extensions can be used during automatic fallback.", + "@providerPriorityFallbackExtensionsDescription": { + "description": "Section description for extension fallback selection" + }, + "providerPriorityFallbackExtensionsHint": "Тут перелічені лише ввімкнені розширення з можливістю завантаження через постачальника послуг.", + "@providerPriorityFallbackExtensionsHint": { + "description": "Hint below the extension fallback selection list" + }, + "providerExtension": "Розширення", + "@providerExtension": { + "description": "Label for extension-provided providers" + }, + "metadataProviderPriorityTitle": "Пріоритет метаданих", + "@metadataProviderPriorityTitle": { + "description": "Metadata priority page title" + }, + "metadataProviderPriorityDescription": "Перетягніть, щоб змінити порядок постачальників метаданих. Додаток шукатиме постачальників зверху вниз під час пошуку треків та отримання метаданих.", + "@metadataProviderPriorityDescription": { + "description": "Metadata priority page description" + }, + "metadataProviderPriorityInfo": "Deezer не має обмежень за швидкістю та рекомендований як основний сервіс. Spotify може обмежувати швидкість після великої кількості запитів.", + "@metadataProviderPriorityInfo": { + "description": "Info tip about rate limits" + }, + "logTitle": "Журнали", + "@logTitle": { + "description": "Logs screen title" + }, + "logCopied": "Журнали скопійовано в буфер обміну", + "@logCopied": { + "description": "Snackbar - logs copied" + }, + "logSearchHint": "Пошук журналів...", + "@logSearchHint": { + "description": "Log search placeholder" + }, + "logFilterLevel": "Рівень", + "@logFilterLevel": { + "description": "Filter by log level" + }, + "logFilterSection": "Фільтр", + "@logFilterSection": { + "description": "Filter section title" + }, + "logShareLogs": "Журнали обміну", + "@logShareLogs": { + "description": "Share button tooltip" + }, + "logClearLogs": "Очистити журнали", + "@logClearLogs": { + "description": "Clear button tooltip" + }, + "logClearLogsTitle": "Очистити Журнали", + "@logClearLogsTitle": { + "description": "Clear logs dialog title" + }, + "logClearLogsMessage": "Ви впевнені, що хочете очистити всі журнали?", + "@logClearLogsMessage": { + "description": "Clear logs confirmation message" + }, + "logFilterBySeverity": "Фільтрувати журнали за рівнем серйозності", + "@logFilterBySeverity": { + "description": "Filter dialog title" + }, + "logNoLogsYet": "Журналів поки що немає", + "@logNoLogsYet": { + "description": "Empty state title" + }, + "logNoLogsYetSubtitle": "Журнали відображатимуться тут під час використання програми", + "@logNoLogsYetSubtitle": { + "description": "Empty state subtitle" + }, "logEntriesFiltered": "Записи ({count} filtered)", "@logEntriesFiltered": { "description": "Log count with filter active", @@ -3116,173 +1423,6 @@ } } }, - "@lyricsModeDescription": { - "description": "Lyrics mode picker description" - }, - "@setupAppDocumentsFolderSubtitle": { - "description": "Subtitle for documents folder" - }, - "storeAddRepoButton": "Додати репозиторій", - "@storeAddRepoButton": { - "description": "Button to submit a new repository URL" - }, - "@collectionLovedEmptyTitle": { - "description": "Loved empty state title" - }, - "aboutReportIssue": "Повідомити про проблему", - "snackbarFailedToWriteStorage": "Не вдалося перезаписати у сховище", - "@snackbarFailedToWriteStorage": { - "description": "Snackbar when writing metadata back to file fails" - }, - "errorInvalidFolderSelected": "Invalid folder selected", - "allFilesAccessDisabledMessage": "У дозволі відмовлено. Будь ласка, увімкніть «Доступ до всіх файлів» вручну в налаштуваннях системи.", - "@allFilesAccessDisabledMessage": { - "description": "Snackbar message when user disables all files access" - }, - "downloadMusixmatchLanguageCode": "Код мови", - "@downloadMusixmatchLanguageCode": { - "description": "Label for Musixmatch language input field" - }, - "dialogUnsavedChanges": "У вас є незбережені зміни. Ви хочете їх скасувати?", - "setupChooseFromFiles": "Вибрати з файлів", - "@setupChooseFromFiles": { - "description": "iOS file picker option" - }, - "@collectionFavoriteArtistsEmptySubtitle": { - "description": "Favorite artists empty state subtitle" - }, - "downloadLossy320FormatDesc": "Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.", - "@backupRestoreConfirmButton": { - "description": "Confirm button to proceed with restore" - }, - "@queueEmptyAlbumsSubtitle": { - "description": "Empty state subtitle for album downloads" - }, - "collectionRemovedFromWishlist": "\"{trackName}\" видалено зі списку бажань", - "@collectionRemovedFromWishlist": { - "description": "Snackbar after removing track from wishlist", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "extensionsInstalledSuccess": "Розширення успішно встановлено", - "progressReadingCsv": "Читання CSV-файлу...", - "@progressReadingCsv": { - "description": "Progress indicator - parsing CSV file" - }, - "artistReleases": "Releases", - "@artistReleases": { - "description": "Section header for all artist releases" - }, - "extensionVerificationBrowserTitle": "Verification browser", - "@optionsDefaultSearchTabSubtitle": { - "description": "Subtitle for the preferred default search tab setting" - }, - "optionsArtistTagModeJoinedSubtitle": "Для максимальної сумісності програвача напишіть одне значення ARTIST, наприклад, «Виконавець A, Виконавець B».", - "downloadLossy320": "Lossy (із втратами) 320 кбіт/с", - "@downloadLossy320": { - "description": "Quality option label for lossy 320kbps" - }, - "queueFlacAction": "Черга FLAC", - "@queueFlacAction": { - "description": "Action/button label for queueing FLAC redownloads for local tracks" - }, - "@setupDownloadLocationIosMessage": { - "description": "iOS-specific folder info" - }, - "trackConvertOriginal": "Original", - "sectionLyricsProviderOptions": "Provider Options", - "nowPlayingTitle": "Now Playing", - "@nowPlayingTitle": { - "description": "Title for the now playing screen" - }, - "@extensionHealthChecksConfigured": { - "description": "Extension service health check count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@cacheClearAll": { - "description": "Button label to clear all caches" - }, - "a11yDeselectTrack": "Deselect track", - "@a11yDeselectTrack": { - "description": "Accessibility label for deselecting a track" - }, - "@lyricsProvidersInfoText": { - "description": "Info tip on lyrics provider priority page" - }, - "queueEmptyHistory": "Немає історії завантажень", - "dialogClear": "Очистити", - "@dialogClear": { - "description": "Dialog button - clear items" - }, - "allFilesAccessDescription": "Увімкніть цю опцію, якщо під час збереження у власні папки виникають помилки запису. Android 13+ за замовчуванням обмежує доступ до певних каталогів.", - "@allFilesAccessDescription": { - "description": "Description explaining when to enable all files access" - }, - "trackConvertConfirmTitle": "Підтвердити конверсію", - "storeCategoryLyrics": "Lyrics", - "@storeCategoryLyrics": { - "description": "Store extension category - lyrics" - }, - "@lyricsProvidersDescription": { - "description": "Description on the lyrics provider priority page" - }, - "tooltipLoveAll": "Уподобати всіх", - "downloadDirectory": "Каталог завантажень", - "@downloadDirectory": { - "description": "Setting - download folder" - }, - "@tutorialExtensionsTip2": { - "description": "Tutorial extensions tip 2" - }, - "libraryFolder": "Папка бібліотеки", - "@metadataProviderPriorityTitle": { - "description": "Metadata priority page title" - }, - "@cleanupOrphanedDownloadsResult": { - "description": "Snackbar after orphan cleanup", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cacheExploreFeedDesc": "Переглянути вміст вкладки (нові випуски, тренди). Оновиться під час наступного відвідування.", - "@cacheExploreFeedDesc": { - "description": "Description of what explore feed cache contains" - }, - "a11yOpenTrackByArtist": "Open track {trackName} by {artistName}", - "@a11yOpenTrackByArtist": { - "description": "Accessibility label for opening a track item", - "placeholders": { - "trackName": { - "type": "String" - }, - "artistName": { - "type": "String" - } - } - }, - "announcementUnableToOpenLink": "Unable to open link. Please try again.", - "libraryFilterSortAlbumDesc": "Альбом (Я-А)", - "@libraryFilterSortAlbumDesc": { - "description": "Sort option - album descending" - }, - "trackConvertBitrate": "Бітрейт", - "@trackConvertBitrate": { - "description": "Label for bitrate selection" - }, - "audioAnalysisFileSize": "Розмір", - "extensionHealthServiceOnline": "Service online", - "@extensionHealthServiceOnline": { - "description": "Tooltip for online extension service" - }, "logEntries": "Записи ({count})", "@logEntries": { "description": "Total log count", @@ -3292,846 +1432,552 @@ } } }, - "trackConvertConfirmMessage": "Конвертувати з {sourceFormat} в {targetFormat} із бітрейтом {bitrate}?\n\nОригінальний файл буде видалено після конвертації.", - "@trackConvertConfirmMessage": { - "description": "Confirmation dialog message", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "bitrate": { - "type": "String" - } - } + "channelStable": "Стабільний", + "@channelStable": { + "description": "Update channel - stable releases" }, - "@optionsArtistTagModeSplitVorbisSubtitle": { - "description": "Subtitle for split Vorbis artist tag mode" + "channelPreview": "Бета", + "@channelPreview": { + "description": "Update channel - beta/preview releases" }, - "folderOrganizationByAlbum": "За альбомом", - "@folderOrganizationByAlbum": { - "description": "Folder option - album folders" + "sectionSearchSource": "Джерело пошуку", + "@sectionSearchSource": { + "description": "Settings section header" }, - "libraryPlayback": "Playback", - "@storeFilterAll": { - "description": "Repo filter - all extensions" + "sectionDownload": "Завантажити", + "@sectionDownload": { + "description": "Settings section header" }, - "aboutApp": "Додаток", - "@aboutApp": { - "description": "Section for app info" + "sectionPerformance": "Продуктивність", + "@sectionPerformance": { + "description": "Settings section header" }, - "optionsReplayGainSubtitleOff": "Вимкнено: немає тегів нормалізації гучності", - "@optionsReplayGainSubtitleOff": { - "description": "Subtitle when ReplayGain is disabled" + "sectionApp": "Додаток", + "@sectionApp": { + "description": "Settings section header" }, - "@storeRepoDialogTitle": { - "description": "Title of the change/remove repository dialog" + "sectionData": "Дані", + "@sectionData": { + "description": "Settings section header" }, - "settingsLyricsSubtitle": "Embed, mode, providers, language options", - "@settingsLyricsSubtitle": { - "description": "Subtitle for lyrics settings" + "sectionDebug": "Налагодження", + "@sectionDebug": { + "description": "Settings section header" }, - "logIssueIspBlockingLabel": "ISP BLOCKING DETECTED", - "storeFilterIntegration": "Інтеграція", - "@storeFilterIntegration": { - "description": "Repo filter - integrations" + "sectionService": "Сервіс", + "@sectionService": { + "description": "Settings section header" }, - "@lyricsProvidersAtLeastOne": { - "description": "Snackbar when user tries to disable the last enabled provider" - }, - "@appearanceHistoryViewGrid": { - "description": "Grid layout option" - }, - "trackDownloaded": "Завантажено", - "extensionVerificationHelpMessageManual": "SpotiFLAC Mobile could not open the browser automatically. Open this link in your browser, or copy it manually.", - "setupDownloadLocationIosMessage": "На iOS завантаження зберігаються в папці «Документи» програми. Ви можете отримати до них доступ через програму «Файли».", - "optionsArtistTagModeDescription": "Виберіть, як будуть записуватися кілька виконавців у вбудовані теги.", - "@optionsArtistTagModeDescription": { - "description": "Bottom-sheet description for artist tag mode setting" - }, - "@queueRetryAllFailed": { - "description": "Button to retry every failed download in the queue", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@trackConvertDitherTriangularHp": { - "description": "Lossless conversion high-pass triangular dither option" - }, - "@extensionVerificationCopyLink": { - "description": "Button to copy the extension verification URL" - }, - "searchSongs": "Пісні", - "@searchSongs": { - "description": "Search result category - songs" - }, - "@appearanceHistoryView": { - "description": "Layout style for history" + "sectionAudioQuality": "Якість звуку", + "@sectionAudioQuality": { + "description": "Settings section header" }, "sectionFileSettings": "Налаштування файлу", "@sectionFileSettings": { "description": "Settings section header" }, - "@cancelDownloadTitle": { - "description": "Dialog title when confirming cancellation of an active download" + "sectionLyrics": "Тексти пісень", + "@sectionLyrics": { + "description": "Settings section header" }, - "@cacheLibraryCover": { - "description": "Cache item title for local library cover art images" + "lyricsMode": "Режим тексту пісні", + "@lyricsMode": { + "description": "Setting - how to save lyrics" }, - "audioAnalysisSpectralCutoff": "Spectral Cutoff", - "dialogDelete": "Видалити", - "@dialogDelete": { - "description": "Dialog button - delete item" + "lyricsModeDescription": "Виберіть, як тексти пісень зберігатимуться разом із завантаженнями пісень.", + "@lyricsModeDescription": { + "description": "Lyrics mode picker description" }, - "tutorialLibraryDesc": "Downloaded and locally scanned music is organized in your Library.", - "@tutorialLibraryDesc": { - "description": "Tutorial library page description" + "lyricsModeEmbed": "Вбудувати у файл", + "@lyricsModeEmbed": { + "description": "Lyrics mode option - embed in audio file" }, - "@queueDownloadSpeedStatus": { - "description": "Queue status while downloading with speed", - "placeholders": { - "speed": { - "type": "String" - } - } + "lyricsModeEmbedSubtitle": "Тексти пісень зберігаються в метаданих FLAC", + "@lyricsModeEmbedSubtitle": { + "description": "Subtitle for embed option" }, - "@extensionsHomeFeedOffSubtitle": { - "description": "Extensions page - subtitle for off home feed option" - }, - "cacheCleanupResult": "Очищення завершено: {downloadCount} утрачених завантажень, {libraryCount} відсутніх записів бібліотеки", - "@cacheCleanupResult": { - "description": "Snackbar after unused data cleanup", - "placeholders": { - "downloadCount": { - "type": "int" - }, - "libraryCount": { - "type": "int" - } - } - }, - "trackConvertLosslessHint": "Lossless конвертація — без втрати якості", - "@trackConvertLosslessHint": { - "description": "Hint shown when converting between lossless formats" - }, - "collectionRenamePlaylist": "Перейменувати список відтворення", - "@collectionRenamePlaylist": { - "description": "Action to rename playlist" - }, - "@libraryFilterTitle": { - "description": "Filter bottom sheet title" - }, - "@storageModeAppFolder": { - "description": "Storage mode option - app-managed folder" - }, - "logTotalErrors": "Total errors: {count}", - "@logTotalErrors": { - "description": "Total error count in log issue analysis", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@setupStorageRequired": { - "description": "Title when storage permission needed" - }, - "@snackbarMetadataProviderSaved": { - "description": "Snackbar - metadata provider order saved" - }, - "@selectionBatchConvertConfirmTitle": { - "description": "Confirmation dialog title for batch conversion" - }, - "extensionsHomeFeedAutoSubtitle": "Автоматично вибирати найкращий доступний", - "@extensionsHomeFeedAutoSubtitle": { - "description": "Extensions page - subtitle for auto home feed option" - }, - "setupLanguageDescription": "Select your preferred language for the app. You can change this later in Settings.", - "settingsBackupSubtitle": "Move your library, history and settings to a new device", - "@settingsBackupSubtitle": { - "description": "Subtitle for backup and restore settings item" - }, - "recentTypeArtist": "Артист", - "@recentTypeArtist": { - "description": "Recent access item type - artist" - }, - "collectionPlaylistEmptySubtitle": "Тривале натискання + на будь-якій доріжці додасть її сюди", - "artistCompilations": "Збірники", - "@artistCompilations": { - "description": "Section header for compilations" - }, - "snackbarFolderPickerFailed": "Не вдалося відкрити засіб вибору папок: {error}", - "@snackbarFolderPickerFailed": { - "description": "Snackbar shown when folder picker fails to open", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "@optionsDetailedLoggingOn": { - "description": "Status when logging enabled" - }, - "settingsSaveDownloadHistory": "Save download history", - "@settingsSaveDownloadHistory": { - "description": "Settings switch title for storing completed downloads in history" - }, - "@storeCategoryIntegration": { - "description": "Store extension category - integration" - }, - "a11yOpenItemCount": "Open {title}, {count} {count, plural, =1{item} other{items}}", - "@a11yOpenItemCount": { - "description": "Accessibility label for opening a grouped item with count", - "placeholders": { - "title": { - "type": "String" - }, - "count": { - "type": "int" - } - } - }, - "trackFileInfo": "Інформація про файл", - "@trackFileInfo": { - "description": "Tab title - file information" - }, - "libraryFilterMetadataMissingAlbumArtist": "Відсутній виконавець альбому", - "audioAnalysisNoClipping": "No clipping", - "tutorialSettingsDesc": "Fine-tune downloads, playback, Library behavior, appearance, and storage.", - "@tutorialSettingsDesc": { - "description": "Tutorial settings page description" + "lyricsModeExternal": "Зовнішній файл .lrc", + "@lyricsModeExternal": { + "description": "Lyrics mode option - separate LRC file" }, "lyricsModeExternalSubtitle": "Окремий файл .lrc для плеєрів, таких як Samsung Music", "@lyricsModeExternalSubtitle": { "description": "Subtitle for external option" }, - "trackLoadLyrics": "Завантажити текст пісні", - "@trackLoadLyrics": { - "description": "Action - fetch lyrics" + "lyricsModeBoth": "Обидва", + "@lyricsModeBoth": { + "description": "Lyrics mode option - embed and external" }, - "extensionVerificationHelpTitleWaiting": "Verification still waiting", - "@extensionVerificationHelpTitleWaiting": { - "description": "Dialog title when verification is taking longer than expected" + "lyricsModeBothSubtitle": "Вбудувати та зберегти файл .lrc", + "@lyricsModeBothSubtitle": { + "description": "Subtitle for both option" }, - "libraryFilterReset": "Скинути", - "@libraryFilterReset": { - "description": "Reset all filters button" - }, - "@downloadAlbumArtistMetadataFull": { - "description": "Status label when album-artist folder filtering uses full metadata" - }, - "storeTitle": "Репозиторій розширень", - "@storeTitle": { - "description": "Repo screen title" - }, - "libraryCleared": "Бібліотека очищена", - "@libraryCleared": { - "description": "Snackbar after clearing library" - }, - "queueDownloadCompleted": "Download completed", - "@queueDownloadCompleted": { - "description": "Accessibility label for completed download state in queue" - }, - "libraryTitle": "Локальна бібліотека", - "@libraryTitle": { - "description": "Library settings page title" - }, - "queueAlbumCount": "{count, plural, =1{1 альбом} other{{count} альбомів}}", - "@queueAlbumCount": { - "description": "Album count label with plural support", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "libraryClearConfirmTitle": "Очистити бібліотеку", - "@backupExportSectionTitle": { - "description": "Section title for the export/backup card" - }, - "dialogClearAll": "Очистити все", - "@dialogClearAll": { - "description": "Dialog title - clear all items" - }, - "tutorialExtensionsDesc": "Extensions add search, download, metadata, lyrics, and other integrations.", - "@tutorialExtensionsDesc": { - "description": "Tutorial extensions page description" - }, - "libraryExternalPlayer": "External player", - "@libraryExternalPlayer": { - "description": "Setting option to use an external music player" - }, - "editMetadataFieldGenre": "Жанр", - "@tutorialLibraryTitle": { - "description": "Tutorial library page title" - }, - "folderOrganizationByPlaylist": "За списком відтворення", - "queueTrackCount": "{count, plural, =1{1 трек} other{{count} треків}}", - "@searchSortTitle": { - "description": "Bottom sheet title for search sort options" - }, - "editMetadataSelectNone": "None", - "@historyFilterSingles": { - "description": "Filter chip - show singles only" - }, - "@setupLanguageTitle": { - "description": "Title for the language selection step in setup" - }, - "trackSaveCoverArt": "Зберегти обкладинку", - "@trackSaveCoverArt": { - "description": "Menu action - save album cover art as file" - }, - "@downloadAlbumFolderStructure": { - "description": "Setting - album folder organization" - }, - "lyricsProvidersAtLeastOne": "Принаймні один постачальник має залишатися ввімкненим", - "@notifDownloadCompleteCount": { - "description": "Notification title when download is complete, with count", - "placeholders": { - "completed": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "setupUseDefault": "Використовувати за замовчуванням", - "@setupUseDefault": { - "description": "Button to use default folder" - }, - "logNoLogsYetSubtitle": "Журнали відображатимуться тут під час використання програми", - "@logNoLogsYetSubtitle": { - "description": "Empty state subtitle" - }, - "@dateToday": { - "description": "Relative date - today" - }, - "trackSaveLyricsProgress": "Збереження тексту пісні...", - "@trackSaveLyricsProgress": { - "description": "Snackbar while saving lyrics to file" - }, - "trackCoverSaved": "Обкладинку збережено до {fileName}", - "@trackCoverSaved": { - "description": "Snackbar after cover art saved", - "placeholders": { - "fileName": { - "type": "String" - } - } - }, - "trackReEnrichFieldLyrics": "Тексти пісень", - "@audioAnalysisRescan": { - "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" - }, - "@downloadNeteaseIncludeRomanizationEnabled": { - "description": "Subtitle when Netease romanization is on" - }, - "dialogDisableAndClear": "Turn off and clear", - "extensionHealthChecksConfigured": "{count} {count, plural, =1{check} other{checks}} configured", - "cleanupOrphanedDownloadsSubtitle": "Видалити записи історії для файлів, яких більше не існує", - "@notifLibraryScanProgressWithTotal": { - "description": "Notification body for library scan progress when total is known", - "placeholders": { - "scanned": { - "type": "int" - }, - "total": { - "type": "int" - }, - "percentage": { - "type": "int" - } - } - }, - "@extensionDetailsTags": { - "description": "Section title for extension tags" - }, - "@albumFolderAlbumOnlySubtitle": { - "description": "Folder structure example" - }, - "@audioAnalysisAnalyzing": { - "description": "Loading text while analyzing audio" - }, - "@settingsDonate": { - "description": "Settings menu item - donate page" - }, - "@collectionPlaylistNameRequired": { - "description": "Validation error for empty playlist name" - }, - "@backupImportSectionDescription": { - "description": "Description for the restore action" - }, - "storeFilterLyrics": "Тексти пісень", - "libraryAutoScan": "Автоматичне сканування", - "@libraryAutoScan": { - "description": "Setting for automatic library scanning" - }, - "safMigrationMessage1": "SpotiFLAC тепер використовує Android Storage Access Framework (SAF) для завантажень. Це виправляє помилки «відмовлено в доступі» на Android 10+.", - "@safMigrationMessage1": { - "description": "First paragraph of SAF migration dialog" - }, - "setupStorageRequired": "Потрібен дозвіл на збереження файлів", - "@notifLibraryScanErrors": { - "description": "Library scan complete suffix - error count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "appearanceHistoryViewGrid": "Сітка", - "trackConvertConverting": "Конвертування аудіо...", - "@trackConvertConverting": { - "description": "Snackbar while converting" - }, - "@setupUseDefaultFolder": { - "description": "Dialog title for default folder" - }, - "optionsArtistTagModeSplitVorbisSubtitle": "Для FLAC та Opus на кожного виконавця додати окремий тег виконавця; MP3 та M4A залишаються об’єднаними.", - "snackbarPlayingNext": "Playing next", - "@snackbarPlayingNext": { - "description": "Snackbar when a track is inserted as the next queue item" - }, - "optionsDefaultSearchTabSubtitle": "Виберіть, яка вкладка відкриється першою для нових результатів пошуку.", - "@editMetadataAutoFillFetch": { - "description": "Button label to fetch online metadata and fill selected fields" - }, - "tutorialSearchDesc": "Search with your selected extension or paste a supported music link.", - "@sectionService": { + "sectionColor": "Колір", + "@sectionColor": { "description": "Settings section header" }, - "notifUpdateProgress": "{received} / {total} МБ • {percentage}%", - "@discographyDownloadSelected": { - "description": "Button - download selected albums" + "sectionTheme": "Тема", + "@sectionTheme": { + "description": "Settings section header" }, - "cacheClearAllConfirmMessage": "Це очистить усі категорії кешу на цій сторінці. Завантажені музичні файли не будуть видалені.", - "@cacheClearAllConfirmMessage": { - "description": "Dialog message before clearing all caches" + "sectionLayout": "Макет", + "@sectionLayout": { + "description": "Settings section header" }, - "extensionsHomeFeedProvider": "Постачальник оновлень домашньої стрічки", - "@extensionsHomeFeedProvider": { - "description": "Extensions page - label for home feed provider selector" + "sectionLanguage": "Мова", + "@sectionLanguage": { + "description": "Settings section header for language" }, - "@cacheExploreFeed": { - "description": "Cache item title for explore home feed cache" + "appearanceLanguage": "Мова програми", + "@appearanceLanguage": { + "description": "Language setting title" }, - "@audioAnalysisDynamicRange": { - "description": "Dynamic range metric label" + "settingsAppearanceSubtitle": "Тема, кольори, дисплей", + "@settingsAppearanceSubtitle": { + "description": "Appearance settings description" }, - "unknownAlbum": "Unknown Album", - "trackCoverCurrent": "Current cover", - "downloadSongLinkRegionDesc": "Region used when resolving track links via SongLink. Choose the country where your streaming services are available.", - "downloadPrimaryArtistOnlyOff": "Primary only: Off", - "dialogDone": "Готово", - "@dialogDone": { - "description": "Dialog button - action completed" + "settingsDownloadSubtitle": "Service, quality, fallback", + "@settingsDownloadSubtitle": { + "description": "Download settings description" }, - "storeRepoUrlLabel": "URL-адреса репозиторію", - "downloadSelectServiceToEnable": "Select a provider with quality options to enable this option", - "@logIssueRateLimitedSuggestion": { - "description": "Diagnostic badge suggestion for rate limiting" + "settingsExtensionsSubtitle": "Керування постачальниками послуг завантаження", + "@settingsExtensionsSubtitle": { + "description": "Extensions settings description" }, - "libraryScanProgress": "{progress}% від {total} файлів", - "@libraryScanProgress": { - "description": "Scan progress display", + "settingsLogsSubtitle": "Перегляд журналів програми для налагодження", + "@settingsLogsSubtitle": { + "description": "Logs settings description" + }, + "loadingSharedLink": "Завантаження спільного посилання...", + "@loadingSharedLink": { + "description": "Status when opening shared URL" + }, + "pressBackAgainToExit": "Натисніть кнопку «Назад» ще раз, щоб вийти", + "@pressBackAgainToExit": { + "description": "Exit confirmation message" + }, + "downloadAllCount": "Завантажити все ({count})", + "@downloadAllCount": { + "description": "Download all button with count", "placeholders": { - "progress": { - "type": "String" - }, - "total": { + "count": { "type": "int" } } }, - "collectionLovedEmptyTitle": "Папка \"Улюблені\" порожня", - "tutorialExtensionsTitle": "Розширення", - "@tutorialExtensionsTitle": { - "description": "Tutorial extensions page title" - }, - "searchSortDurationShort": "Тривалість (найкоротша)", - "@searchSortDurationShort": { - "description": "Sort option - shortest duration first" + "tracksCount": "{count, plural, =1{1 трек} other{{count} треків}}", + "@tracksCount": { + "description": "Track count display", + "placeholders": { + "count": { + "type": "int" + } + } }, "trackCopyFilePath": "Копіювати шлях до файлу", "@trackCopyFilePath": { "description": "Action - copy file path" }, - "albumFolderArtistAlbumFlatSubtitle": "Виконавець/Альбом/ та Виконавець/пісня.flac", - "@trackConvertResampler": { - "description": "Section label for lossless conversion resampler options" + "trackRemoveFromDevice": "Видалити з пристрою", + "@trackRemoveFromDevice": { + "description": "Action - delete downloaded file" }, - "editMetadataFieldTrackNum": "Номер треку", - "@editMetadataFieldTrackNum": { - "description": "Chip label for track number field in auto-fill selector" + "trackLoadLyrics": "Завантажити текст пісні", + "@trackLoadLyrics": { + "description": "Action - fetch lyrics" }, - "snackbarFailedToUpdate": "Не вдалося оновити розширення", - "@snackbarFailedToUpdate": { - "description": "Snackbar - extension update error" + "trackMetadata": "Метадані", + "@trackMetadata": { + "description": "Tab title - track metadata" }, - "notifAlreadyInLibrary": "Вже в бібліотеці", - "@notifAlreadyInLibrary": { - "description": "Notification title when track is already in library" + "trackFileInfo": "Інформація про файл", + "@trackFileInfo": { + "description": "Tab title - file information" }, - "collectionPlaylistNameHint": "Назва списку відтворення", - "extensionVerificationCopyLink": "Copy link", - "@replayGainBatchAnalyzing": { - "description": "Progress dialog title while batch scanning ReplayGain" + "trackLyrics": "Тексти пісень", + "@trackLyrics": { + "description": "Tab title - lyrics" + }, + "trackFileNotFound": "Файл не знайдено", + "@trackFileNotFound": { + "description": "Error - file doesn't exist" + }, + "trackOpenInDeezer": "Відкрити в Deezer", + "@trackOpenInDeezer": { + "description": "Action - open track in Deezer app" + }, + "trackOpenInSpotify": "Відкрити в Spotify", + "@trackOpenInSpotify": { + "description": "Action - open track in Spotify app" + }, + "trackTrackName": "Назва треку", + "@trackTrackName": { + "description": "Metadata label - track title" + }, + "trackArtist": "Артист", + "@trackArtist": { + "description": "Metadata label - artist name" + }, + "trackAlbumArtist": "Виконавець альбому", + "@trackAlbumArtist": { + "description": "Metadata label - album artist" + }, + "trackAlbum": "Альбом", + "@trackAlbum": { + "description": "Metadata label - album name" + }, + "trackTrackNumber": "Номер треку", + "@trackTrackNumber": { + "description": "Metadata label - track number" + }, + "trackDiscNumber": "Номер диска", + "@trackDiscNumber": { + "description": "Metadata label - disc number" + }, + "trackDuration": "Тривалість", + "@trackDuration": { + "description": "Metadata label - track length" + }, + "trackAudioQuality": "Якість звуку", + "@trackAudioQuality": { + "description": "Metadata label - audio quality" + }, + "trackReplayGainTrackGain": "ReplayGain Track Gain", + "@trackReplayGainTrackGain": { + "description": "Metadata label - ReplayGain track gain" + }, + "trackReplayGainTrackPeak": "ReplayGain Track Peak", + "@trackReplayGainTrackPeak": { + "description": "Metadata label - ReplayGain track peak" + }, + "trackReplayGainAlbumGain": "ReplayGain Album Gain", + "@trackReplayGainAlbumGain": { + "description": "Metadata label - ReplayGain album gain" + }, + "trackReplayGainAlbumPeak": "ReplayGain Album Peak", + "@trackReplayGainAlbumPeak": { + "description": "Metadata label - ReplayGain album peak" + }, + "libraryQualityLabelFileFormat": "File format", + "@libraryQualityLabelFileFormat": { + "description": "Library audio quality label mode that shows the detected file format" + }, + "trackReleaseDate": "Дата випуску", + "@trackReleaseDate": { + "description": "Metadata label - release date" + }, + "trackGenre": "Жанр", + "@trackGenre": { + "description": "Metadata label - music genre" + }, + "trackLabel": "Лейбл", + "@trackLabel": { + "description": "Metadata label - record label" + }, + "trackCopyright": "Авторське право", + "@trackCopyright": { + "description": "Metadata label - copyright information" + }, + "trackDownloaded": "Завантажено", + "@trackDownloaded": { + "description": "Metadata label - download date" + }, + "trackCopyLyrics": "Скопіювати тексти пісень", + "@trackCopyLyrics": { + "description": "Action - copy lyrics to clipboard" + }, + "trackLyricsSource": "Source: {source}", + "@trackLyricsSource": { + "description": "Label showing the lyrics source/provider", + "placeholders": { + "source": { + "type": "String" + } + } + }, + "trackLyricsNotAvailable": "Текст пісні для цього треку недоступний", + "@trackLyricsNotAvailable": { + "description": "Message when lyrics not found" + }, + "trackLyricsNotInFile": "У цьому файлі не знайдено текстів пісень", + "@trackLyricsNotInFile": { + "description": "Message when no embedded lyrics in audio file" + }, + "trackFetchOnlineLyrics": "Отримати з Інтернету", + "@trackFetchOnlineLyrics": { + "description": "Action - fetch lyrics from online providers" + }, + "trackLyricsTimeout": "Час очікування запиту минув. Спробуйте ще раз пізніше.", + "@trackLyricsTimeout": { + "description": "Message when lyrics request times out" + }, + "trackLyricsLoadFailed": "Не вдалося завантажити текст пісні", + "@trackLyricsLoadFailed": { + "description": "Message when lyrics loading fails" + }, + "trackEmbedLyrics": "Вбудувати текст пісні", + "@trackEmbedLyrics": { + "description": "Action - embed lyrics into audio file" + }, + "trackLyricsEmbedded": "Текст пісні успішно вбудовано в пісню", + "@trackLyricsEmbedded": { + "description": "Snackbar - lyrics saved to file" + }, + "trackInstrumental": "Інструментальний трек", + "@trackInstrumental": { + "description": "Message when track is instrumental (no lyrics)" + }, + "trackCopiedToClipboard": "Скопійовано в буфер обміну", + "@trackCopiedToClipboard": { + "description": "Snackbar - content copied" + }, + "trackDeleteConfirmTitle": "Видалити з пристрою?", + "@trackDeleteConfirmTitle": { + "description": "Delete confirmation title" + }, + "trackDeleteConfirmMessage": "Це назавжди видалить завантажений файл і вилучить його з вашої історії.", + "@trackDeleteConfirmMessage": { + "description": "Delete confirmation message" + }, + "dateToday": "Сьогодні", + "@dateToday": { + "description": "Relative date - today" + }, + "dateYesterday": "Вчора", + "@dateYesterday": { + "description": "Relative date - yesterday" + }, + "dateDaysAgo": "{count} днів тому", + "@dateDaysAgo": { + "description": "Relative date - days ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dateWeeksAgo": "{count} тижнів тому", + "@dateWeeksAgo": { + "description": "Relative date - weeks ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dateMonthsAgo": "{count} місяців тому", + "@dateMonthsAgo": { + "description": "Relative date - months ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "storeFilterAll": "Усі", + "@storeFilterAll": { + "description": "Repo filter - all extensions" + }, + "storeFilterMetadata": "Метадані", + "@storeFilterMetadata": { + "description": "Repo filter - metadata providers" + }, + "storeFilterDownload": "Завантажити", + "@storeFilterDownload": { + "description": "Repo filter - download providers" + }, + "storeFilterUtility": "Утиліта", + "@storeFilterUtility": { + "description": "Repo filter - utility extensions" + }, + "storeFilterLyrics": "Тексти пісень", + "@storeFilterLyrics": { + "description": "Repo filter - lyrics providers" + }, + "storeFilterIntegration": "Інтеграція", + "@storeFilterIntegration": { + "description": "Repo filter - integrations" + }, + "storeClearFilters": "Очистити фільтри", + "@storeClearFilters": { + "description": "Button to clear all filters" + }, + "storeAddRepoTitle": "Додати репозиторій розширень", + "@storeAddRepoTitle": { + "description": "Store setup screen - heading when no repo is configured" + }, + "storeAddRepoDescription": "Введіть URL-адресу репозиторію GitHub, яка містить файл registry.json, для перегляду та встановлення розширень.", + "@storeAddRepoDescription": { + "description": "Store setup screen - explanatory text" + }, + "storeRepoUrlLabel": "URL-адреса репозиторію", + "@storeRepoUrlLabel": { + "description": "Label for the repository URL input field" + }, + "storeRepoUrlHint": "https://github.com/user/repo", + "@storeRepoUrlHint": { + "description": "Hint/placeholder for the repository URL input field" + }, + "storeAddRepoButton": "Додати репозиторій", + "@storeAddRepoButton": { + "description": "Button to submit a new repository URL" + }, + "storeChangeRepoTooltip": "Змінити репозиторій", + "@storeChangeRepoTooltip": { + "description": "Tooltip for the change-repository icon button in the app bar" + }, + "storeRepoDialogTitle": "Репозиторій розширень", + "@storeRepoDialogTitle": { + "description": "Title of the change/remove repository dialog" + }, + "storeRepoDialogCurrent": "Поточний репозиторій:", + "@storeRepoDialogCurrent": { + "description": "Label shown above the current repository URL in the dialog" + }, + "storeNewRepoUrlLabel": "Нова URL-адреса репозиторію", + "@storeNewRepoUrlLabel": { + "description": "Label for the new repository URL field inside the dialog" + }, + "storeLoadError": "Не вдалося завантажити репозиторій", + "@storeLoadError": { + "description": "Error heading when the store cannot be loaded" + }, + "storeEmptyNoExtensions": "Розширень немає", + "@storeEmptyNoExtensions": { + "description": "Message when store has no extensions" + }, + "storeEmptyNoResults": "Розширень не знайдено", + "@storeEmptyNoResults": { + "description": "Message when search/filter returns no results" }, - "setupLanguageTitle": "Choose Language", "extensionId": "Ідентифікатор", "@extensionId": { "description": "Extension detail - unique ID" }, - "regionCountryBR": "Brazil", - "@updateNewVersionReady": { - "description": "Update subtitle" + "extensionError": "Помилка", + "@extensionError": { + "description": "Extension detail - error message" }, - "@queueDownloadedFileMissing": { - "description": "Accessibility label when a downloaded file is missing from disk" - }, - "@lyricsMode": { - "description": "Setting - how to save lyrics" - }, - "@settingsAppearance": { - "description": "Settings section - visual customization" - }, - "@setupStorageAccessMessageAndroid11": { - "description": "Android 11+ specific explanation" - }, - "@tutorialLibraryTip3": { - "description": "Tutorial library tip 3" - }, - "@downloadAppleQqMultiPersonDisabled": { - "description": "Subtitle when multi-person lyrics is off" - }, - "libraryStorageAccessMessage": "SpotiFLAC потрібен доступ до сховища для сканування вашої музичної бібліотеки. Надайте дозвіл у налаштуваннях.", - "@libraryStorageAccessMessage": { - "description": "Dialog message for storage permission" - }, - "@tutorialLibraryTip1": { - "description": "Tutorial library tip 1" - }, - "dialogRemoveExtensionMessage": "Ви впевнені, що хочете видалити це розширення? Цю дію неможливо скасувати.", - "@dialogRemoveExtensionMessage": { - "description": "Dialog message - uninstall confirmation" - }, - "setupDownloadLocationTitle": "Розташування завантаження", - "@setupDownloadLocationTitle": { - "description": "Download location dialog title" - }, - "downloadNetworkCompatibilityModeEnabled": "Allowing legacy HTTP endpoints; TLS verification remains enabled", - "@downloadNetworkCompatibilityModeEnabled": { - "description": "Subtitle when network compatibility mode is on" - }, - "@audioAnalysisBitDepth": { - "description": "Bit depth metric label" - }, - "trackOptionAddToLoved": "Додати до улюблених", - "@trackOptionAddToLoved": { - "description": "Bottom sheet action label - add track to loved folder" - }, - "cacheAppDirectory": "Каталог кешу додатка", - "@cacheAppDirectory": { - "description": "Cache item title for app cache directory" - }, - "lyricsProviderMusixmatchDesc": "Найбільша база даних текстів пісень (багатомовна)", - "@navStore": { - "description": "Bottom navigation - Extension repo tab" - }, - "extensionPostProcessing": "Післяобробка", - "@searchTracks": { - "description": "Search filter label - tracks" - }, - "logCopied": "Журнали скопійовано в буфер обміну", - "@logCopied": { - "description": "Snackbar - logs copied" - }, - "@extensionHealthRequired": { - "description": "Label for a required extension service health check" - }, - "@previewPlay": { - "description": "Tooltip for the button that plays a short track preview snippet" - }, - "clickableLookingUpArtist": "Looking up artist...", - "@clickableLookingUpArtist": { - "description": "Snackbar shown while clickable artist metadata is being resolved" - }, - "@extensionVerificationBrowserSubtitleInApp": { - "description": "Subtitle when in-app browser is preferred for extension verification" - }, - "setupUseDefaultFolder": "Використати папку за замовчуванням?", - "tutorialSearchHint": "Paste or search...", - "@logIssueTrackNotFoundLabel": { - "description": "Diagnostic badge label when a track is unavailable" - }, - "@storageModeAppFolderSubtitle": { - "description": "Subtitle for app folder storage mode" - }, - "downloadMusixmatchLanguage": "Мова Musixmatch", - "@downloadMusixmatchLanguage": { - "description": "Setting for Musixmatch lyrics translation language" - }, - "lyricsModeExternal": "Зовнішній файл .lrc", - "@setupSelectFolder": { - "description": "Button to select folder" - }, - "logSearchHint": "Пошук журналів...", - "@backupCreateFailed": { - "description": "Snackbar when backup creation fails" - }, - "@settingsSaveDownloadHistorySubtitle": { - "description": "Settings switch subtitle for storing completed downloads in history" - }, - "@albumFolderArtistAlbumFlat": { - "description": "Album folder option with singles directly in artist folder" - }, - "extensionHealthRequired": "required", - "actionCancel": "Скасувати", - "@actionCancel": { - "description": "Action button - cancel operation" - }, - "optionsEmbedMetadataSubtitleOff": "Disabled (advanced): skip all metadata embedding", - "@optionsEmbedMetadataSubtitleOff": { - "description": "Subtitle when metadata embedding is disabled" - }, - "downloadAllowLocalNetworkDisabled": "Local/private addresses are blocked for security", - "@downloadAllowLocalNetworkDisabled": { - "description": "Subtitle when allow local network access is off" - }, - "@extensionsDownloadPrioritySubtitle": { - "description": "Subtitle for download priority" - }, - "downloadSingleFilenameFormat": "Формат імені одного файлу", - "@downloadSingleFilenameFormat": { - "description": "Setting for output filename pattern for singles/EPs" - }, - "cacheSummarySubtitle": "Очищення кешу не призведе до видалення завантажених музичних файлів.", - "@cacheSummarySubtitle": { - "description": "Helper text for cache summary card" - }, - "libraryFilterMetadataIncorrectIsrcFormat": "Incorrect ISRC format", - "libraryFilterMetadataMissingTrackNumber": "Missing track number", - "@libraryFilterMetadataMissingTrackNumber": { - "description": "Filter option - items missing track number" - }, - "backupIncludeSecretsDescription": "Tokens and API keys from extensions will be saved into the backup file. Keep the file private. When off, you re-enter them after restoring.", - "@backupIncludeSecretsDescription": { - "description": "Explanation for the include-credentials toggle" - }, - "audioAnalysisChannelStats": "Per-channel Stats", - "@audioAnalysisChannelStats": { - "description": "Per-channel audio analysis section label" - }, - "@extensionServiceStatus": { - "description": "Extension detail section header for service status" - }, - "queueEmptySingles": "Без окремих завантажень", - "@queueEmptySingles": { - "description": "Empty state title when no single track downloads exist" - }, - "@snackbarSelectedPlaylistsEmpty": { - "description": "Snackbar when selected playlists contain no tracks" - }, - "@errorRateLimited": { - "description": "Error title - too many requests" - }, - "setupDownloadInFlac": "Download music in lossless and Hi-Res quality", - "@setupDownloadInFlac": { - "description": "App tagline in setup" - }, - "trackRemoveFromDevice": "Видалити з пристрою", - "@extensionsNoDownloadProvider": { - "description": "Empty state - no download providers" - }, - "@backupCreated": { - "description": "Snackbar after a backup file is created" - }, - "cacheSummaryTitle": "Огляд кешу", - "@cacheSummaryTitle": { - "description": "Heading for cache summary card" - }, - "selectionReplayGainCount": "ReplayGain ({count})", - "@selectionReplayGainCount": { - "description": "Batch selection action button label for ReplayGain", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@setupNotificationBackgroundDescription": { - "description": "Detailed notification explanation" - }, - "safMigrationTitle": "Потрібне оновлення сховища", - "snackbarMetadataSaved": "Метадані успішно збережено", - "@snackbarMetadataSaved": { - "description": "Snackbar after successfully saving track metadata" - }, - "@backupContentsSettings": { - "description": "Backup contents row label for settings" - }, - "logClearLogsTitle": "Очистити Журнали", - "extensionsCustomSearch": "Користувацький пошук", - "@extensionsCustomSearch": { - "description": "Label for custom search provider" - }, - "@downloadFrom": { - "description": "Label - download source" - }, - "cacheSizeWithFiles": "{size} у {count} файлах", - "selectionShareNoFiles": "Файлів для спільного доступу не знайдено", - "@selectionShareNoFiles": { - "description": "Snackbar when no selected files exist on disk" - }, - "snackbarAddedTracksToQueue": "Додано {count} треків до черги", - "downloadFilenameInsertTag": "Натисніть, щоб вставити тег:", - "@downloadFilenameInsertTag": { - "description": "Label above filename tag chips" - }, - "collectionRemovedFromFavoriteArtists": "\"{artistName}\" removed from Favorite Artists", - "@collectionRemovedFromFavoriteArtists": { - "description": "Snackbar after removing artist from favorite artists", - "placeholders": { - "artistName": { - "type": "String" - } - } - }, - "queueDownloadSpeedStatus": "Downloading - {speed} MB/s", - "backupRestoreConfirmButton": "Restore", - "@libraryCleanupMissingFiles": { - "description": "Button to remove entries for missing files" - }, - "backupCreateFailed": "Failed to create backup", - "notifLibraryScanFailed": "Не вдалося сканувати бібліотеку", - "@notifLibraryScanFailed": { - "description": "Notification title when library scan fails" - }, - "audioAnalysisRescan": "Re-analyze", - "@trackTrackName": { - "description": "Metadata label - track title" - }, - "@setupPermissionRequired": { - "description": "Generic permission required title", - "placeholders": { - "permissionType": { - "type": "String", - "description": "Type of permission (Storage/Notification)" - } - } - }, - "@nowPlayingNoLyrics": { - "description": "Empty state when the playing file has no embedded lyrics" - }, - "libraryFilesUnit": "{count, plural, =1{file} other{файлів}}", - "@libraryFilesUnit": { - "description": "Unit label for files count during library scanning", - "placeholders": { - "count": { - "type": "int" - } - } + "extensionCapabilities": "Можливості", + "@extensionCapabilities": { + "description": "Section header - extension features" }, + "extensionMetadataProvider": "Постачальник метаданих", "@extensionMetadataProvider": { "description": "Capability - provides metadata" }, - "@downloadFilterContributing": { - "description": "Setting to strip contributing artists from Album Artist folder name" + "extensionDownloadProvider": "Постачальник завантажень", + "@extensionDownloadProvider": { + "description": "Capability - provides downloads" }, - "libraryScanSelectFolderFirst": "Спочатку виберіть папку", - "@sectionDownload": { - "description": "Settings section header" + "extensionLyricsProvider": "Постачальник текстів пісень", + "@extensionLyricsProvider": { + "description": "Capability - provides lyrics" }, - "extensionHealthNotConfigured": "Not configured", - "queueRetryAllFailed": "Retry {count} failed", - "folderOrganizationByPlaylistSubtitle": "Окрема папка для кожного списку відтворення", - "@folderOrganizationByPlaylistSubtitle": { - "description": "Subtitle for playlist folder option" + "extensionUrlHandler": "Обробник URL-адрес", + "@extensionUrlHandler": { + "description": "Capability - handles URLs" }, - "lyricsProviderExtensionDesc": "Постачальник розширень", - "@libraryFilterQualityHiRes": { - "description": "Filter option - high resolution audio" + "extensionQualityOptions": "Варіанти якості", + "@extensionQualityOptions": { + "description": "Capability - quality selection" }, - "trackConvertTitle": "Конвертувати аудіо", - "@trackConvertTitle": { - "description": "Title of convert bottom sheet" + "extensionPostProcessingHooks": "Хуки пост-обробки", + "@extensionPostProcessingHooks": { + "description": "Capability - post-processing" }, - "setupSkipForNow": "Пропустити поки що", - "sectionDownload": "Завантажити", - "downloadLossyOpus256Subtitle": "Opus найкращої якості, ~8 МБ на трек", - "@downloadLossyOpus256Subtitle": { - "description": "Subtitle for Opus 256kbps lossy option" + "extensionPermissions": "Дозволи", + "@extensionPermissions": { + "description": "Section header - required permissions" }, - "@trackConvertActionLabelLossless": { - "description": "Convert button label for lossless conversion with quality cap", + "extensionSettings": "Налаштування", + "@extensionSettings": { + "description": "Section header - extension settings" + }, + "extensionRemoveButton": "Видалити розширення", + "@extensionRemoveButton": { + "description": "Button to uninstall extension" + }, + "extensionUpdated": "Оновлено", + "@extensionUpdated": { + "description": "Extension detail - last update" + }, + "extensionMinAppVersion": "Мінімальна версія програми", + "@extensionMinAppVersion": { + "description": "Extension detail - minimum app version" + }, + "extensionCustomTrackMatching": "Підбір користувацьких треків", + "@extensionCustomTrackMatching": { + "description": "Capability - custom track matching algorithm" + }, + "extensionPostProcessing": "Післяобробка", + "@extensionPostProcessing": { + "description": "Capability - post-download processing" + }, + "extensionHooksAvailable": "{count} доступних хуків", + "@extensionHooksAvailable": { + "description": "Post-processing hooks count", "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "quality": { + "count": { + "type": "int" + } + } + }, + "extensionPatternsCount": "{count} шаблон(ів)", + "@extensionPatternsCount": { + "description": "URL patterns count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionStrategy": "Стратегія: {strategy}", + "@extensionStrategy": { + "description": "Track matching strategy name", + "placeholders": { + "strategy": { "type": "String" } } }, - "storeRequiresVersion": "Requires v{version}+", - "@storeRequiresVersion": { - "description": "Store compatibility badge for minimum app version", - "placeholders": { - "version": { - "type": "String" - } - } + "extensionsProviderPrioritySection": "Пріоритет постачальника", + "@extensionsProviderPrioritySection": { + "description": "Section header - provider priority" }, - "metadataProviderPriorityDescription": "Перетягніть, щоб змінити порядок постачальників метаданих. Додаток шукатиме постачальників зверху вниз під час пошуку треків та отримання метаданих.", - "@notifUpdateFailed": { - "description": "Notification title when app update download fails" + "extensionsInstalledSection": "Встановлені розширення", + "@extensionsInstalledSection": { + "description": "Section header - installed extensions" + }, + "extensionsNoExtensions": "Розширень не встановлено", + "@extensionsNoExtensions": { + "description": "Empty state - no extensions" + }, + "extensionsNoExtensionsSubtitle": "Встановіть файли .spotiflac-ext, щоб додати нових провайдерів", + "@extensionsNoExtensionsSubtitle": { + "description": "Empty state subtitle" + }, + "extensionsInstallButton": "Встановити розширення", + "@extensionsInstallButton": { + "description": "Button to install extension from file" }, "extensionsInfoTip": "Розширення можуть додавати нові метадані та завантажувати постачальників. Встановлюйте розширення лише з перевірених джерел.", "@extensionsInfoTip": { "description": "Security warning about extensions" }, - "@downloadAppleQqMultiPersonEnabled": { - "description": "Subtitle when multi-person lyrics is on" + "extensionsInstalledSuccess": "Розширення успішно встановлено", + "@extensionsInstalledSuccess": { + "description": "Success message after install" }, - "libraryFilterMetadataMissingYear": "Відсутній рік", - "extensionsDownloadPriority": "Пріоритет завантаження", - "@extensionsDownloadPriority": { - "description": "Setting - download provider order" - }, - "@downloadAllowLocalNetworkEnabled": { - "description": "Subtitle when allow local network access is on" - }, - "libraryScan": "Сканувати бібліотеку", - "@libraryScan": { - "description": "Button to start library scan" - }, - "editMetadataFieldLabel": "Лейбл", - "@editMetadataFieldLabel": { - "description": "Chip label for label field in auto-fill selector" - }, - "updateDownloadFailed": "Не вдалося завантажити", - "@updateDownloadFailed": { - "description": "Update error title" - }, - "appearanceAmoledDarkSubtitle": "Чисто чорний фон", - "@appearanceAmoledDarkSubtitle": { - "description": "Subtitle for AMOLED dark" - }, - "setupIcloudNotSupported": "iCloud Drive не підтримується. Будь ласка, скористайтеся папкою «Документи» програми.", - "trackLyricsEmbeddedSource": "Embedded", - "@trackLyricsEmbeddedSource": { - "description": "Lyrics source label for embedded lyrics" - }, - "@trackAlbumArtist": { - "description": "Metadata label - album artist" + "extensionsInstalledCount": "{count} extensions installed successfully", + "@extensionsInstalledCount": { + "description": "Success message after installing multiple extensions", + "placeholders": { + "count": { + "type": "int", + "description": "Number of installed extensions" + } + } }, "extensionsInstallPartialSuccess": "Installed {installed} of {attempted} extensions", "@extensionsInstallPartialSuccess": { @@ -4147,1741 +1993,217 @@ } } }, - "@extensionSettingsCount": { - "description": "Count of settings exposed by an extension quality option", - "placeholders": { - "count": { - "type": "int" - } - } + "extensionsDownloadPriority": "Пріоритет завантаження", + "@extensionsDownloadPriority": { + "description": "Setting - download provider order" }, - "notifLibraryScanCancelled": "Сканування бібліотеки скасовано", - "@notifLibraryScanCancelled": { - "description": "Notification title when library scan is cancelled by the user" + "extensionsDownloadPrioritySubtitle": "Встановити порядок завантаження", + "@extensionsDownloadPrioritySubtitle": { + "description": "Subtitle for download priority" }, - "collectionPlaylistNameRequired": "Потрібно вказати назву списку відтворення", - "libraryCleanupMissingFiles": "Очищення відсутніх файлів", - "storeCategoryUtility": "Utility", - "@storeCategoryUtility": { - "description": "Store extension category - utility" + "extensionsFallbackTitle": "Резервні розширення", + "@extensionsFallbackTitle": { + "description": "Setting and page title for choosing which download extensions can be used during fallback" }, - "searchSortTitle": "Сортувати результати", - "@extensionVerificationBrowserExternal": { - "description": "Chip label for external browser verification mode" + "extensionsFallbackSubtitle": "Виберіть, які встановлені розширення для завантаження можна використовувати як резервні", + "@extensionsFallbackSubtitle": { + "description": "Subtitle for download fallback extensions menu" }, - "audioAnalysisLufs": "LUFS", - "@setupAllowAccessToManageFiles": { - "description": "Instruction for file access permission" + "extensionsNoDownloadProvider": "Без розширень із постачальником завантажень", + "@extensionsNoDownloadProvider": { + "description": "Empty state - no download providers" + }, + "extensionsMetadataPriority": "Пріоритет метаданих", + "@extensionsMetadataPriority": { + "description": "Setting - metadata provider order" + }, + "extensionsMetadataPrioritySubtitle": "Встановити порядок пошуку та джерел метаданих", + "@extensionsMetadataPrioritySubtitle": { + "description": "Subtitle for metadata priority" + }, + "extensionsNoMetadataProvider": "Без розширень із постачальником метаданих", + "@extensionsNoMetadataProvider": { + "description": "Empty state - no metadata providers" + }, + "extensionsSearchProvider": "Постачальник пошуку", + "@extensionsSearchProvider": { + "description": "Setting - search provider selection" + }, + "extensionsNoCustomSearch": "Без розширень із користувацьким пошуком", + "@extensionsNoCustomSearch": { + "description": "Empty state - no search providers" + }, + "extensionsSearchProviderDescription": "Виберіть, який сервіс використовувати для пошуку треків", + "@extensionsSearchProviderDescription": { + "description": "Search provider setting description" + }, + "extensionsCustomSearch": "Користувацький пошук", + "@extensionsCustomSearch": { + "description": "Label for custom search provider" }, "extensionsErrorLoading": "Помилка завантаження розширення", - "@actionPaste": { - "description": "Generic action - paste from clipboard" + "@extensionsErrorLoading": { + "description": "Error message when extension fails to load" }, - "aboutFeatureRequestSubtitle": "Запропонувати нові функції для програми", - "@aboutFeatureRequestSubtitle": { - "description": "Subtitle for feature request" + "qualityFlacLossless": "FLAC без втрат", + "@qualityFlacLossless": { + "description": "Quality option - CD quality FLAC" }, - "@aboutTitle": { - "description": "About page title" + "qualityFlacLosslessSubtitle": "16 біт / 44,1 кГц", + "@qualityFlacLosslessSubtitle": { + "description": "Technical spec for lossless" }, - "@downloadNeteaseIncludeTranslation": { - "description": "Setting to include translated lyrics from Netease" + "qualityHiResFlac": "FLAC високої роздільної здатності", + "@qualityHiResFlac": { + "description": "Quality option - high resolution FLAC" }, - "@actionGo": { - "description": "Generic action button label" + "qualityHiResFlacSubtitle": "24-біт / до 96 кГц", + "@qualityHiResFlacSubtitle": { + "description": "Technical spec for hi-res" }, - "regionCountryFR": "France", - "trackConvertResamplerSoxr": "SoXr", - "extensionUpdated": "Оновлено", - "@extensionUpdated": { - "description": "Extension detail - last update" + "qualityHiResFlacMax": "FLAC Max з високою роздільною здатністю", + "@qualityHiResFlacMax": { + "description": "Quality option - maximum resolution FLAC" + }, + "qualityHiResFlacMaxSubtitle": "24-біт / до 192 кГц", + "@qualityHiResFlacMaxSubtitle": { + "description": "Technical spec for hi-res max" + }, + "downloadLossy320": "Lossy (із втратами) 320 кбіт/с", + "@downloadLossy320": { + "description": "Quality option label for lossy 320kbps" }, "downloadLossyFormat": "Формат із втратами", "@downloadLossyFormat": { "description": "Setting title to pick output format for lossy downloads" }, - "snackbarAlreadyInLibrary": "\"{trackName}\" вже є у вашій бібліотеці", - "@snackbarAlreadyInLibrary": { - "description": "Snackbar - track already exists in local library", - "placeholders": { - "trackName": { - "type": "String" - } - } + "downloadAutoConvert": "Auto-convert after download", + "@downloadAutoConvert": { + "description": "Toggle for automatic post-download audio conversion" }, - "libraryExternalPlayerSubtitle": "Recommended for listening, best quality, gapless playback, EQ, and wider format support", - "extensionCustomUrlHandlingShareHint": "Share links from these sites to SpotiFLAC Mobile and this extension will handle them.", - "libraryFilterQuality": "Якість", - "@libraryFilterQuality": { - "description": "Filter section - audio quality" + "downloadAutoConvertSubtitle": "Convert completed downloads to a smaller lossy format. The original is replaced only after conversion succeeds.", + "@downloadAutoConvertSubtitle": { + "description": "Explanation of safe automatic post-download conversion" }, - "editMetadataAutoFillDone": "Заповнено {count} {count, plural, =1{поле} other{полей}} з онлайн-метаданих", - "@editMetadataAutoFillDone": { - "description": "Snackbar confirming how many fields were auto-filled", - "placeholders": { - "count": { - "type": "int" - } - } + "downloadAutoConvertFormat": "Output format", + "@downloadAutoConvertFormat": { + "description": "Automatic conversion output format setting" }, - "@discographyDownload": { - "description": "Button - download artist discography" + "downloadAutoConvertFormatSubtitle": "Choose the lossy format used for newly completed downloads.", + "@downloadAutoConvertFormatSubtitle": { + "description": "Automatic conversion format picker explanation" }, - "aboutFeatureRequest": "Запит на функцію", - "downloadSingleFilenameFormatDescription": "Шаблон назви файлу для синглів та міні-альбомів. Використовує ті самі теги, що й формат альбому.", - "@downloadSingleFilenameFormatDescription": { - "description": "Subtitle description for single filename format setting" + "downloadAutoConvertBitrate": "Output quality", + "@downloadAutoConvertBitrate": { + "description": "Automatic conversion bitrate setting" }, - "queueClearAllMessage": "Ви впевнені, що хочете очистити всі завантаження?", - "dialogDisableHistoryMessage": "Existing history will be cleared. Downloaded files will not be deleted.", - "extensionLastChecked": "Last checked {time}", - "@extensionLastChecked": { - "description": "Timestamp for the latest extension service health check", - "placeholders": { - "time": { - "type": "String" - } - } + "downloadAutoConvertBitrateSubtitle": "Higher bitrates preserve more detail but create larger files.", + "@downloadAutoConvertBitrateSubtitle": { + "description": "Automatic conversion bitrate picker explanation" }, - "homeImportCsvTooltip": "Import playlist (CSV, M3U)", - "@homeImportCsvTooltip": { - "description": "Tooltip for importing a CSV file into Home search" + "downloadAutoConvertMp3Subtitle": "Best compatibility across players and devices", + "@downloadAutoConvertMp3Subtitle": { + "description": "MP3 automatic conversion option description" }, - "trackConvertResamplerSwr": "SWR", - "@trackConvertResamplerSwr": { - "description": "Lossless conversion default FFmpeg swresample resampler option" + "downloadAutoConvertM4aSubtitle": "Efficient AAC audio in an M4A container", + "@downloadAutoConvertM4aSubtitle": { + "description": "M4A AAC automatic conversion option description" }, - "@downloadFolderOrganization": { - "description": "Title of the folder organization picker bottom sheet" + "downloadAutoConvertOpusSubtitle": "Best efficiency for modern players", + "@downloadAutoConvertOpusSubtitle": { + "description": "Opus automatic conversion option description" }, - "dialogClearHistoryTitle": "Очистити історію", - "@logClearSearch": { - "description": "Tooltip for clearing the log search field" + "downloadLossy320Format": "Формат із втратами 320 кбіт/с", + "@downloadLossy320Format": { + "description": "Title of the lossy format picker bottom sheet" }, - "dialogImport": "Імпорт", - "@dialogImport": { - "description": "Dialog button - import data" + "downloadLossy320FormatDesc": "Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.", + "@downloadLossy320FormatDesc": { + "description": "Description in the lossy format picker" }, - "@setupChangeFolderTooltip": { - "description": "Tooltip for editing the selected download folder" + "downloadLossyMp3": "MP3 320 кбіт/с", + "@downloadLossyMp3": { + "description": "Lossy format option - MP3 320kbps" }, - "notifLibraryScanErrors": "{count} помилок", - "@downloadNetworkCompatibilityMode": { - "description": "Setting for legacy TLS/network handling" + "downloadLossyMp3Subtitle": "Найкраща сумісність, ~10 МБ на доріжку", + "@downloadLossyMp3Subtitle": { + "description": "Subtitle for MP3 320kbps lossy option" }, - "@metadataSaveFailedFfmpeg": { - "description": "Snackbar error when FFmpeg fails to write metadata" + "downloadLossyAac": "AAC/M4A 320kbps", + "@downloadLossyAac": { + "description": "Lossy format option - AAC in M4A container at 320kbps" }, - "dialogUninstallExtension": "Видалити розширення?", - "recentTypePlaylist": "Список відтворення", - "@recentTypePlaylist": { - "description": "Recent access item type - playlist" + "downloadLossyAacSubtitle": "Best mobile compatibility, M4A container", + "@downloadLossyAacSubtitle": { + "description": "Subtitle for AAC/M4A 320kbps lossy option" }, - "trackDeleteConfirmMessage": "Це назавжди видалить завантажений файл і вилучить його з вашої історії.", - "@logIssueNetworkErrorDescription": { - "description": "Diagnostic badge description for generic network errors" + "downloadLossyOpus256": "Opus 256 кбіт/с", + "@downloadLossyOpus256": { + "description": "Lossy format option - Opus 256kbps" }, - "appearanceThemeSystem": "Системний", - "@appearanceThemeSystem": { - "description": "Follow system theme" + "downloadLossyOpus256Subtitle": "Opus найкращої якості, ~8 МБ на трек", + "@downloadLossyOpus256Subtitle": { + "description": "Subtitle for Opus 256kbps lossy option" }, - "albumFolderArtistAlbumSingles": "Виконавець / Альбом + Сингли", - "@aboutTranslators": { - "description": "Section for translators" - }, - "shareSheetNotFound": "Not found", - "@shareSheetNotFound": { - "description": "Cross-service share sheet row subtitle when a service has no match" - }, - "@tutorialDownloadInProgressSemantics": { - "description": "Accessibility label for active download state in tutorial demo" - }, - "editMetadataAutoFillNoneSelected": "Виберіть принаймні одне поле для автоматичного заповнення", - "@editMetadataAutoFillNoneSelected": { - "description": "Snackbar when user taps Fetch without selecting any fields" - }, - "@snackbarViewQueue": { - "description": "Snackbar action - view download queue" - }, - "@optionsUpdateChannelPreview": { - "description": "Include beta/preview updates" - }, - "editMetadataFieldComposer": "Composer", - "@editMetadataFieldComposer": { - "description": "Label for composer field in the edit metadata sheet" - }, - "aboutSachinsenalDesc": "The original HiFi project creator. A foundation for lossless-source integration.", - "@aboutSachinsenalDesc": { - "description": "Credit description for sachinsenal0x64" - }, - "backupTitle": "Backup & Restore", - "@libraryFilterMetadata": { - "description": "Filter section - metadata completeness" - }, - "setupStorageAccessRequired": "Потрібен доступ до сховища", - "@setupStorageAccessRequired": { - "description": "Title when storage access needed" - }, - "trackMetadataDelete": "Видалити", - "@trackMetadataDelete": { - "description": "Action button - delete track" - }, - "libraryFilterMetadataMissingDiscNumber": "Missing disc number", - "@libraryFilterMetadataMissingDiscNumber": { - "description": "Filter option - items missing disc number" - }, - "snackbarMetadataProviderSaved": "Пріоритет постачальника метаданих збережено", - "setupPermissionRequired": "{permissionType} Потрібен дозвіл", - "@selectionConvertNoConvertible": { - "description": "Snackbar when no selected tracks support conversion" - }, - "extensionHealthDegraded": "Degraded", - "regionCountryKR": "South Korea", - "@regionCountryKR": { - "description": "Country name for SongLink region picker" - }, - "trackLyricsNotInFile": "У цьому файлі не знайдено текстів пісень", - "@trackLyricsNotInFile": { - "description": "Message when no embedded lyrics in audio file" - }, - "@downloadedAlbumTapToSelect": { - "description": "Selection hint" - }, - "downloadArtistNameFilters": "Фільтри імені виконавця", - "@downloadArtistNameFilters": { - "description": "Setting title for artist folder filter options" - }, - "@libraryFilterMetadataMissingArtist": { - "description": "Filter option - items missing artist" - }, - "recentShowAllDownloads": "Показати всі завантаження", - "@appearanceThemeLight": { - "description": "Light theme" - }, - "trackReEnrichFieldTrackInfo": "Номер треку та диска", - "@appearanceThemeDark": { - "description": "Dark theme" - }, - "extensionVerificationLinkCopied": "Verification link copied", - "@extensionVerificationLinkCopied": { - "description": "Snackbar after copying the extension verification URL" - }, - "@extensionsHomeFeedDescription": { - "description": "Extensions page - description for home feed provider picker" - }, - "downloadAlbumArtistMetadataPrimaryOnly": "Album Artist metadata: Primary only", - "@downloadAlbumArtistMetadataPrimaryOnly": { - "description": "Status label when album-artist folder filtering uses primary artist only" - }, - "extensionOauthConnectHint": "Tap Connect to Spotify to fill this field.", - "setupNext": "Далі", - "extensionVerificationBrowserSubtitleInApp": "Open challenges in the in-app browser first", - "libraryAutoScanDaily": "Щоденно", - "@libraryAutoScanDaily": { - "description": "Auto scan once per day" - }, - "@audioAnalysisDescription": { - "description": "Description for audio analysis tap-to-analyze prompt" - }, - "nowPlayingUpNext": "Up next", - "@nowPlayingUpNext": { - "description": "Title for the playback queue sheet" - }, - "nowPlayingPreviousTrack": "Previous track", - "nowPlayingNextTrack": "Next track", - "logAutoScrollOff": "Auto-scroll OFF", - "trackConvertFailed": "Конвертація не вдалася", - "@trackConvertFailed": { - "description": "Snackbar when conversion fails" - }, - "extensionsUninstall": "Видалити", - "safMigrationSuccess": "Папку завантажень оновлено до режиму SAF", - "optionsClearHistorySubtitle": "Видалити всі завантажені треки з історії", - "@optionsClearHistorySubtitle": { - "description": "Subtitle for clear history" - }, - "trackPlayNext": "Play next", - "extensionsNoHomeFeedExtensions": "Без розширень із домашньою стрічкою", - "optionsUpdateChannelStable": "Тільки стабільні релізи", - "@optionsUpdateChannelStable": { - "description": "Only stable updates" - }, - "@discographyDownloadAllSubtitle": { - "description": "Subtitle showing total tracks and albums", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } - }, - "searchPlaylists": "Списки відтворення", - "@searchPlaylists": { - "description": "Search result category - playlists" - }, - "downloadNetworkCompatibilityMode": "Network Compatibility Mode", - "settingsAppearance": "Зовнішній вигляд", - "logIssueRateLimitedLabel": "RATE LIMITED", - "@logIssueRateLimitedLabel": { - "description": "Diagnostic badge label when the service rate limits requests" - }, - "logIssueSummary": "Issue Summary", - "@logIssueSummary": { - "description": "Header for log issue analysis summary" - }, - "appName": "", - "storeRepoDialogCurrent": "Поточний репозиторій:", - "@optionsExtensionStoreSubtitle": { - "description": "Subtitle for extension repo toggle" - }, - "@trackLyrics": { - "description": "Tab title - lyrics" - }, - "@backupImportButton": { - "description": "Button to pick a backup file to restore" - }, - "@setupFolderChoose": { - "description": "Button to choose folder" - }, - "storageModeAppFolderSubtitle": "Saves to Music/SpotiFLAC by default", - "@extensionsDisabled": { - "description": "Extension status - inactive" - }, - "@regionCountryAU": { - "description": "Country name for SongLink region picker" - }, - "@storeCategoryMetadata": { - "description": "Store extension category - metadata" - }, - "libraryFilterApply": "Застосувати", - "@libraryFilterApply": { - "description": "Apply filters button" - }, - "@libraryFilterSortGenreAsc": { - "description": "Sort option - genre ascending" - }, - "setupAllowAccessToManageFiles": "Будь ласка, увімкніть опцію «Дозволити доступ для керування всіма файлами» на наступному екрані.", - "@dialogSave": { - "description": "Dialog button - save changes" - }, - "trackLyrics": "Тексти пісень", - "extensionSettingNotSet": "Not set", - "@extensionSettingNotSet": { - "description": "Value shown when an extension setting has no value" - }, - "@audioAnalysisClipping": { - "description": "Clipping metric label" - }, - "downloadNeteaseIncludeTranslation": "Netease: Включити переклад", - "@albumFolderArtistAlbumSubtitle": { - "description": "Folder structure example" - }, - "@settingsDonateSubtitle": { - "description": "Subtitle for donate menu item" - }, - "cueSplitSuccess": "Розділено на {count} треків успішно", - "@cueSplitSuccess": { - "description": "Snackbar after successful CUE split", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cueSplitArtist": "Артист: {artist}", - "@cueSplitArtist": { - "description": "Artist name in CUE split sheet", - "placeholders": { - "artist": { - "type": "String" - } - } - }, - "updateSeeReleaseNotes": "See release notes for details.", - "@updateSeeReleaseNotes": { - "description": "Fallback changelog text when release notes cannot be parsed" - }, - "@trackReEnrichFfmpegFailed": { - "description": "Snackbar when FFmpeg embed fails for MP3/Opus" - }, - "collectionWishlist": "Список бажань", - "@collectionWishlist": { - "description": "Custom folder for saved tracks to download later" - }, - "editMetadataAutoFillFetch": "Отримання та заповнення", - "@extensionsHomeFeedAuto": { - "description": "Label for auto-selected search provider" - }, - "providerPriorityDescription": "Перетягніть, щоб змінити порядок постачальників завантажень. Під час завантаження треків програма використовуватиме постачальників зверху вниз.", - "@providerPriorityDescription": { - "description": "Provider priority page description" - }, - "queueEmptySinglesSubtitle": "Завантаження окремих треків з’являться тут", "downloadLossyOpus128": "Opus 128 кбіт/с", - "downloadUseAlbumArtistForFolders": "Використовувати виконавця альбому для папок", - "@downloadUseAlbumArtistForFolders": { - "description": "Setting - choose whether artist folders use Album Artist or Track Artist" + "@downloadLossyOpus128": { + "description": "Lossy format option - Opus 128kbps" }, - "@aboutLinks": { - "description": "Section for external links" + "downloadLossyOpus128Subtitle": "Найменший розмір, ~4 МБ на доріжку", + "@downloadLossyOpus128Subtitle": { + "description": "Subtitle for Opus 128kbps lossy option" }, - "downloadedAlbumDeleteCount": "Видалити {count} {count, plural, =1{трек} other{треків}}", - "updateLater": "Пізніше", - "@logIssueIspBlockingSuggestion": { - "description": "Diagnostic badge suggestion for ISP blocking" + "downloadAskBeforeDownload": "Запитувати перед завантаженням", + "@downloadAskBeforeDownload": { + "description": "Setting - show quality picker" }, - "actionResume": "Відновити", - "optionsDetailedLoggingOff": "Увімкнути для звітів про помилки", - "@searchSortDefault": { - "description": "Sort option - default API order" + "downloadDirectory": "Каталог завантажень", + "@downloadDirectory": { + "description": "Setting - download folder" }, - "@regionCountryCA": { - "description": "Country name for SongLink region picker" + "downloadSeparateSinglesFolder": "Окрема папка для синглів", + "@downloadSeparateSinglesFolder": { + "description": "Setting - separate folder for singles" }, - "@sectionStorageAccess": { - "description": "Section header for storage access settings" - }, - "downloadFilterContributing": "Filter Contributing Artists", - "downloadUseAlbumArtistForFoldersTrackSubtitle": "Folder named after Track Artist tag", - "storeSearch": "Розширення пошуку...", - "@storeSearch": { - "description": "Repo search placeholder" - }, - "aboutTelegramChat": "Telegram Спільнота", - "lyricsModeBoth": "Обидва", - "@lyricsModeBoth": { - "description": "Lyrics mode option - embed and external" - }, - "@permissionNotification": { - "description": "Notification permission type label" - }, - "libraryAutoScanSubtitle": "Автоматичне сканування бібліотеки на наявність нових файлів", - "@libraryAutoScanSubtitle": { - "description": "Subtitle for auto scan setting" - }, - "libraryEnableLocalLibrary": "Увімкнути локальну бібліотеку", - "trackConvertTargetFormat": "Цільовий формат", - "@trackConvertTargetFormat": { - "description": "Label for format selection" - }, - "extensionSettings": "Налаштування", - "@editMetadataAutoFillSearching": { - "description": "Snackbar shown while searching for online metadata" - }, - "trackLyricsTimeout": "Час очікування запиту минув. Спробуйте ще раз пізніше.", - "settingsExtensions": "Розширення", - "@settingsBackup": { - "description": "Settings menu item - backup and restore page" - }, - "librarySourceDownloaded": "Завантажені", - "@librarySourceDownloaded": { - "description": "Badge for tracks downloaded via SpotiFLAC" - }, - "appearanceDynamicColor": "Динамічний колір", - "@appearanceDynamicColor": { - "description": "Material You dynamic colors" - }, - "backupImportButton": "Choose backup file", - "downloadAppleElrcWordSyncDisabled": "Safer line-by-line Apple Music lyrics", - "@optionsEmbedMetadata": { - "description": "Settings toggle title for writing metadata into downloaded files" - }, - "appearanceTitle": "Зовнішній вигляд", - "downloadNeteaseIncludeRomanizationDisabled": "No romanization", - "@downloadNeteaseIncludeRomanizationDisabled": { - "description": "Subtitle when Netease romanization is off" - }, - "@libraryScanCancelled": { - "description": "Library scan status when a scan was cancelled" - }, - "tracksCount": "{count, plural, =1{1 трек} other{{count} треків}}", - "@snackbarFailedToUpdateNamed": { - "description": "Snackbar when extension update fails in the repo tab", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "@extensionQualityOptions": { - "description": "Capability - quality selection" - }, - "logClearSearch": "Clear search", - "trackSaveLyrics": "Зберегти текст пісні (.lrc)", - "@trackReEnrichSearching": { - "description": "Snackbar while searching metadata from internet for local items" - }, - "@editMetadataAutoFillNoResults": { - "description": "Snackbar when online metadata search returns no results" - }, - "notifDownloadComplete": "Завантаження завершено", - "snackbarAlreadyDownloaded": "\"{trackName}\" вже завантажено", - "folderOrganizationByAlbumSubtitle": "Окрема папка для кожного альбому", - "storeRepoUrlHint": "https://github.com/user/repo", - "trackConvertDitherTriangularHp": "Triangular HP", - "lyricsModeBothSubtitle": "Вбудувати та зберегти файл .lrc", - "trackReEnrichFieldExtra": "Жанр, Лейбл, Авторське право", - "@trackReEnrichFieldExtra": { - "description": "Checkbox label for extra metadata in re-enrich" - }, - "sectionLyrics": "Тексти пісень", - "@sectionLyrics": { - "description": "Settings section header" - }, - "extensionStrategy": "Стратегія: {strategy}", - "@extensionStrategy": { - "description": "Track matching strategy name", - "placeholders": { - "strategy": { - "type": "String" - } - } - }, - "@downloadNativeWorker": { - "description": "Setting title for Android native download worker" - }, - "optionsArtistTagModeSplitVorbis": "Розділені теги для FLAC/Opus", - "extensionsHomeFeedUse": "Використовувати {extensionName} головну стрічку", - "@cacheAppDirectoryDesc": { - "description": "Description of what app cache directory contains" - }, - "cancelDownloadTitle": "Скасувати завантаження?", - "updateWhatsNew": "Що нового", - "updateNewVersionReady": "Доступна нова версія", - "@extensionVerificationClose": { - "description": "Button to dismiss the extension verification help dialog" - }, - "a11ySelectTrack": "Select track", - "libraryClearSubtitle": "Видалити всі скановані треки", - "@libraryClearSubtitle": { - "description": "Subtitle for clear button" - }, - "@settingsDownloadNetworkSubtitle": { - "description": "Subtitle explaining network preference" - }, - "storeAnyVersion": "Any", - "@storeAnyVersion": { - "description": "Store detail value when any app version is accepted" - }, - "navStore": "Репозиторій", - "backupExportSectionDescription": "Save your settings, download history, liked tracks, wishlist, favorite artists and playlists into a single file you can keep or move to another phone.", - "libraryScanSettings": "Налаштування сканування", - "@libraryScanSettings": { - "description": "Section header for scan settings" - }, - "trackDuration": "Тривалість", - "@trackDuration": { - "description": "Metadata label - track length" - }, - "extensionHealthOffline": "Offline", - "@extensionHealthOffline": { - "description": "Extension service health status - offline" - }, - "editMetadataFieldArtist": "Виконавець", - "@editMetadataFieldArtist": { - "description": "Chip label for artist field in auto-fill selector" - }, - "libraryInLibrary": "У бібліотеці", - "pressBackAgainToExit": "Натисніть кнопку «Назад» ще раз, щоб вийти", - "@pressBackAgainToExit": { - "description": "Exit confirmation message" - }, - "setupNotificationGranted": "Дозвіл на сповіщення надано!", - "@setupNotificationGranted": { - "description": "Success message for notification permission" - }, - "settingsDonate": "Support Development", - "snackbarFailedToUpdateNamed": "Failed to update {extensionName}", - "backupContentsTitle": "Backup contents", - "updateDontRemind": "Не нагадувати", - "@dialogDiscard": { - "description": "Dialog button - discard changes" - }, - "editMetadataAutoFillSearching": "Пошук в Інтернеті...", - "discographyDownloadSelected": "Завантажити вибране", - "trackConvertResampler": "Resampler", - "queueFilteringIndicator": "Фільтрування...", - "@queueFilteringIndicator": { - "description": "Shown while filter results are being computed" - }, - "@dialogDownloadAllTitle": { - "description": "Dialog title for bulk download confirmation" - }, - "cueSplitConfirmMessage": "Розділити \"{album}\" на {count} окремих FLAC-файлів?\n\nФайли будуть збережені в одному каталозі.", - "@downloadCreatePlaylistSourceFolderRedundant": { - "description": "Subtitle when folder organization is already set to playlist" - }, - "regionCountryCA": "Canada", - "cacheTempDirectory": "Тимчасовий каталог", - "@cacheTempDirectory": { - "description": "Cache item title for temporary files directory" - }, - "libraryShowDuplicateIndicator": "Показати індикатор дублікатів", - "@logFilterBySeverity": { - "description": "Filter dialog title" - }, - "homeSearchHintProvider": "Search with {providerName}...", - "@downloadNeteaseIncludeTranslationDisabled": { - "description": "Subtitle when Netease translation is off" - }, - "optionsCheckUpdates": "Перевірити наявність оновлень", - "replayGainBatchAnalyzing": "Analyzing ReplayGain...", - "recentTypeAlbum": "Альбом", - "providerExtension": "Розширення", - "@providerExtension": { - "description": "Label for extension-provided providers" - }, - "trackCoverNoSource": "Джерело обкладинки недоступне", - "libraryFilterMetadata": "Метадані", - "albumFolderArtistYearAlbum": "Артист / [Рік] Альбом", - "@albumFolderArtistYearAlbum": { - "description": "Album folder option with year" - }, - "audioAnalysisClipping": "Clipping", - "@a11yOpenAlbumByArtistTrackCount": { - "description": "Accessibility label for opening an album item with track count", - "placeholders": { - "albumName": { - "type": "String" - }, - "artistName": { - "type": "String" - }, - "trackCount": { - "type": "int" - } - } - }, - "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": { - "count": { - "type": "int" - } - } - }, - "channelStable": "Стабільний", - "@channelStable": { - "description": "Update channel - stable releases" - }, - "tutorialSettingsTip3": "Налаштуйте тему та зовнішній вигляд програми", - "setupAppDocumentsFolderSubtitle": "Рекомендація – доступно через додаток Файли", - "a11yPlayTrackByArtist": "Play {trackName} by {artistName}", - "@a11yPlayTrackByArtist": { - "description": "Accessibility label for playing a local library track", - "placeholders": { - "trackName": { - "type": "String" - }, - "artistName": { - "type": "String" - } - } - }, - "dialogRemove": "Видалити", - "extensionVerificationClose": "Close", - "bulkDownloadPlaylistsButton": "Завантажити {count} {count, plural, =1{плейлист} other{плейлистів}}", - "@bulkDownloadPlaylistsButton": { - "description": "Button label for bulk downloading selected playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "optionsAutoFallbackSubtitle": "Спробувати інші сервіси, якщо завантаження не вдається", - "@optionsAutoFallbackSubtitle": { - "description": "Subtitle for auto fallback" - }, - "extensionPatternsCount": "{count} шаблон(ів)", - "@libraryFilterLocal": { - "description": "Filter chip - show only local library items" - }, - "errorUrlNotRecognizedMessage": "Це посилання не підтримується. Переконайтеся, що URL-адреса правильна та встановлено сумісне розширення.", - "@errorUrlNotRecognizedMessage": { - "description": "Error message - URL not recognized explanation" - }, - "@extensionVerificationBrowserSubtitleExternal": { - "description": "Subtitle when external browser is preferred for extension verification" - }, - "optionsArtistTagMode": "Режим тегу виконавця", - "libraryFilterMetadataComplete": "Повні метадані", - "@libraryFilterMetadataComplete": { - "description": "Filter option - items with complete metadata" - }, - "@extensionsVersion": { - "description": "Extension version display", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "@downloadNetworkAnySubtitle": { - "description": "Subtitle for any-network option in picker" - }, - "optionsReplayGainSubtitleOn": "Сканування гучності та вбудовування тегів нормалізації звуку (EBU R128)", - "libraryScanning": "Сканування...", - "@libraryScanning": { - "description": "Status during scan" - }, - "cacheRefresh": "Оновити", - "@actionShuffle": { - "description": "Tooltip for shuffle playback action" - }, - "optionsEmbedLyricsSubtitle": "Save synced lyrics alongside your downloaded tracks", - "@optionsEmbedLyricsSubtitle": { - "description": "Subtitle for embed lyrics" - }, - "queueEmptyAlbumsSubtitle": "Завантажте кілька треків з альбому, щоб переглянути їх тут", - "extensionEnterValue": "Enter value", - "@settingsDownloadNetworkAny": { - "description": "Network option - use any connection" - }, - "collectionLoved": "Вподобані", - "@collectionLoved": { - "description": "Custom folder for favorite tracks" - }, - "storeAddRepoTitle": "Додати репозиторій розширень", - "@storeAddRepoTitle": { - "description": "Store setup screen - heading when no repo is configured" - }, - "collectionNoPlaylistsYet": "Поки що немає списків відтворення", - "@collectionNoPlaylistsYet": { - "description": "Empty state title when user has no playlists" - }, - "libraryCleanupMissingFilesSubtitle": "Видалити записи для файлів, яких більше не існує", - "@libraryCleanupMissingFilesSubtitle": { - "description": "Subtitle for cleanup button" - }, - "folderOrganizationByArtist": "За виконавцем", - "@folderOrganizationByArtist": { - "description": "Folder option - artist folders" - }, - "aboutTranslators": "Перекладачі", - "notifAlreadyInLibraryCount": "Вже в бібліотеці ({completed}/{total})", - "editMetadataFieldTitle": "Назва", - "@editMetadataFieldTitle": { - "description": "Chip label for title field in auto-fill selector" - }, - "downloadFilenameDescription": "Use {artist}, {title}, {album}, {track}, {year}, {date}, {disc} as placeholders.", - "@downloadFilenameDescription": { - "description": "Description shown in filename format editor" - }, - "@notifDownloadsFinishedBody": { - "description": "Notification body when queue finishes with failures", - "placeholders": { - "completed": { - "type": "int" - }, - "failed": { - "type": "int" - } - } - }, - "@libraryFolderNotExist": { - "description": "Error when folder doesn't exist" - }, - "@playlistsCount": { - "description": "Playlist count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@loadingSharedLink": { - "description": "Status when opening shared URL" - }, - "extensionServiceHealth": "Service health", - "@extensionServiceHealth": { - "description": "Extension capability label for service health checks" - }, - "@collectionDeletePlaylistsMessage": { - "description": "Confirmation message for deleting selected playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "setupStorageDescription": "SpotiFLAC потребує дозволу на збереження, щоб зберегти завантажені музичні файли.", - "tutorialReadyMessage": "You're ready. Select your extensions, then search or paste a supported link.", - "tutorialLibraryTip3": "Browse tracks, albums, and playlists in list or grid views", - "selectionDeletePlaylistsCount": "Delete {count} {count, plural, =1{playlist} other{playlists}}", - "appearanceThemeLight": "Світлий", - "queueEmptyHistorySubtitle": "Завантажені треки з’являться тут", - "@queueEmptyHistorySubtitle": { - "description": "Empty state subtitle for download history" - }, - "backupRestoreFailed": "Failed to restore backup", - "@backupRestoreFailed": { - "description": "Snackbar when restore fails" - }, - "queueFlacQueuedWithSkipped": "Додано {addedCount} треків до черги, пропущено {skippedCount}", - "@queueFlacQueuedWithSkipped": { - "description": "Snackbar when some selected local tracks were queued for FLAC redownload and some were skipped", - "placeholders": { - "addedCount": { - "type": "int" - }, - "skippedCount": { - "type": "int" - } - } - }, - "@trackReplayGain": { - "description": "Three-dot menu option to scan loudness and write ReplayGain tags" - }, - "@downloadedAlbumDownloadedCount": { - "description": "Downloaded tracks count badge", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "setupFolderChoose": "Виберати папку для завантаження", - "dialogDownloadAllTitle": "Завантажити все", - "providerPriorityInfo": "Якщо трек недоступний у першого провайдера, додаток автоматично спробує наступного.", - "@providerPriorityInfo": { - "description": "Info tip about fallback behavior" - }, - "@dialogDiscardChanges": { - "description": "Dialog title - unsaved changes warning" - }, - "discographyNoAlbums": "Немає доступних альбомів", - "downloadAppleQqMultiPersonDisabled": "Standard lyrics without speaker labels", - "cacheNoData": "Кешованих даних немає", - "@cacheNoData": { - "description": "Label when cache category has no data" - }, - "tutorialStartDownloadSemantics": "Start download", - "@tutorialStartDownloadSemantics": { - "description": "Accessibility label for idle download button in tutorial demo" - }, - "logIssueIspBlockingSuggestion": "Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8", - "aboutTitle": "Про нас", - "@cueSplitButton": { - "description": "Button text to start CUE splitting" - }, - "appearanceHistoryView": "Історія переглядів", - "audioAnalysisSampleRate": "Частота дискретизації", - "@settingsCache": { - "description": "Settings menu item - cache management" - }, - "lyricsProvidersInfoText": "Extension lyrics providers run before built-in lyrics providers. At least one provider must remain enabled.", - "cacheTrackLookup": "Відстеження кешу пошуку", - "extensionsHomeFeedOffSubtitle": "Do not show the home feed on the main screen", - "@downloadUsePrimaryArtistOnly": { - "description": "Setting - strip featured artists from folder name" - }, - "@regionCountryIN": { - "description": "Country name for SongLink region picker" - }, - "@libraryFilterQualityLossy": { - "description": "Filter option - lossy compressed audio" - }, - "extensionRefreshStatus": "Refresh status", - "notifAllDownloadsComplete": "Усі завантаження завершено", - "downloadNeteaseIncludeRomanizationEnabled": "Romanization lines included", - "editMetadataFieldDateHint": "YYYY-MM-DD or YYYY", - "@editMetadataFieldDateHint": { - "description": "Hint text for the edit metadata date field" - }, - "trackMetadataShare": "Поділитися", - "@trackMetadataShare": { - "description": "Action button - share track" - }, - "discographyDownloadAllSubtitle": "{count} треків з {albumCount} релізів", - "settingsDonateSubtitle": "Buy the developer a coffee", - "libraryFilterDownloaded": "Завантажені", - "downloadNetworkAnySubtitle": "Use WiFi or mobile data", - "@cueSplitNoAudioFile": { - "description": "Error when CUE audio file is missing" - }, - "notifLibraryScanStopped": "Сканування зупинено до завершення.", - "@settingsMetadata": { - "description": "Settings menu item - metadata settings" - }, - "snackbarFailedToInstallNamed": "Failed to install {extensionName}", - "trackCopyLyrics": "Скопіювати тексти пісень", - "@trackCopyLyrics": { - "description": "Action - copy lyrics to clipboard" - }, - "regionCountryAU": "Australia", "downloadAlbumFolderStructure": "Структура папок альбому", - "downloadMusixmatchAuto": "Авто", - "actionDismiss": "Dismiss", - "storeFilterAll": "Усі", - "extensionsDisabled": "Вимкнені", - "@logClearLogs": { - "description": "Clear button tooltip" - }, - "dialogDownloadAllMessage": "Завантажити {count} треків?", - "@optionsEmbedLyrics": { - "description": "Embed lyrics in audio files" - }, - "tutorialLibraryTitle": "Ваша бібліотека", - "optionsCheckUpdatesSubtitle": "Повідомити, коли буде доступна нова версія", - "@optionsCheckUpdatesSubtitle": { - "description": "Subtitle for update check" - }, - "collectionPlaylist": "Список відтворення", - "@collectionPlaylist": { - "description": "Single playlist label" - }, - "dateMonthsAgo": "{count} місяців тому", - "@dateMonthsAgo": { - "description": "Relative date - months ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@extensionRemoveButton": { - "description": "Button to uninstall extension" - }, - "collectionPlaylistRenamed": "Список відтворення перейменовано", - "collectionCreatePlaylist": "Створити плейлист", - "homeGoToAlbum": "Перейти до альбому", - "@homeGoToAlbum": { - "description": "Context menu item to navigate to the album page" - }, - "folderOrganizationByArtistSubtitle": "Окрема папка для кожного виконавця", - "@optionsClearHistory": { - "description": "Delete all download history" - }, - "@searchAlbums": { - "description": "Search result category - albums" - }, - "@sectionDebug": { - "description": "Settings section header" - }, - "extensionsVersion": "Версія {version}", - "@navHome": { - "description": "Bottom navigation - Home tab" - }, - "@editMetadataFieldDate": { - "description": "Chip label for date field in auto-fill selector" - }, - "downloadUsePrimaryArtistOnly": "Тільки основний виконавець для папок", - "tutorialExtensionsTip2": "Choose providers for search, downloads, metadata, and fallbacks", - "@setupStorageGranted": { - "description": "Success message for storage permission" - }, - "tutorialWelcomeTitle": "Welcome to SpotiFLAC Mobile!", - "a11ySelectAlbum": "Select album {albumName}", - "@a11ySelectAlbum": { - "description": "Accessibility label for selecting an album", - "placeholders": { - "albumName": { - "type": "String" - } - } - }, - "aboutMobileSource": "Мобільний вихідний код", - "@aboutMobileSource": { - "description": "Link to mobile GitHub repo" - }, - "@extensionCustomUrlHandling": { - "description": "Extension detail section title for custom URL handling" - }, - "@downloadMusixmatchLanguageAuto": { - "description": "Subtitle when no language is set" - }, - "@cancelDownloadKeep": { - "description": "Dialog button - keep the active download (do not cancel)" - }, - "libraryFilterSource": "Джерело", - "@libraryFilterSource": { - "description": "Filter section - source type" - }, - "sectionStorageAccess": "Доступ до сховища", - "logFilterBySeverity": "Фільтрувати журнали за рівнем серйозності", - "libraryFolderNotExist": "Вибрана папка не існує", - "optionsEmbedMetadataSubtitleOn": "Write metadata, cover art, and embedded lyrics to files", - "albumFolderArtistAlbum": "Артист / Альбом", - "@albumFolderArtistAlbum": { - "description": "Album folder option" - }, - "allFilesAccessDeniedMessage": "У дозволі відмовлено. Будь ласка, увімкніть «Доступ до всіх файлів» вручну в налаштуваннях системи.", - "@allFilesAccessDeniedMessage": { - "description": "Message when permission is permanently denied" - }, - "editMetadataSelectEmpty": "Порожні (без мета даних)", - "settingsLocalLibrarySubtitle": "Сканування музики та виявлення дублікатів", - "@settingsAutoExportFailed": { - "description": "Setting toggle for auto-export" - }, - "cacheCleanupUnusedSubtitle": "Видалити історію утрачених завантажень файлів та відсутні записи бібліотеки", - "@tutorialSettingsTitle": { - "description": "Tutorial settings page title" - }, - "libraryFilterMetadataMissingGenre": "Відсутній жанр", - "@appearanceSelectAccentColor": { - "description": "Accessibility label for picking an accent color", - "placeholders": { - "hex": { - "type": "String" - } - } - }, - "setupFolderDescription": "Виберіть папку, де буде збережено завантажену музику.", - "extensionDetailsTags": "Tags", - "unknownArtist": "Unknown Artist", - "trackFetchOnlineLyrics": "Отримати з Інтернету", - "snackbarNoActionDefined": "Для цієї кнопки не визначено жодної дії", - "@snackbarNoActionDefined": { - "description": "Snackbar when an extension button has no action configured" - }, - "downloadAllCount": "Завантажити все ({count})", - "@downloadAllCount": { - "description": "Download all button with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadedAlbumDiscHeader": "Диск {discNumber}", - "@backupInvalidFile": { - "description": "Snackbar when the chosen file is not a valid backup" - }, - "@extensionHooksAvailable": { - "description": "Post-processing hooks count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@logIssueTrackNotFoundSuggestion": { - "description": "Diagnostic badge suggestion when a track is unavailable" - }, - "@snackbarFileNotFound": { - "description": "Snackbar - file doesn't exist" - }, - "extensionHealthOnline": "Online", - "@extensionHealthOnline": { - "description": "Extension service health status - online" - }, - "settingsSaveDownloadHistorySubtitle": "Keep completed downloads in history and library views", - "trackOptionRemoveFromWishlist": "Видалити зі списку бажань", - "extensionsFallbackTitle": "Резервні розширення", - "@extensionsFallbackTitle": { - "description": "Setting and page title for choosing which download extensions can be used during fallback" - }, - "metadataSaveFailedFfmpeg": "Не вдалося зберегти метадані через FFmpeg", - "@albumFolderAlbumOnly": { - "description": "Album folder option" - }, - "@albumFolderYearAlbumSubtitle": { - "description": "Folder structure example" - }, - "downloadedAlbumDeleteSelected": "Видалити вибране", - "selectionSelectPlaylistsToDelete": "Вибрати списки відтворення для видалення", - "@selectionSelectPlaylistsToDelete": { - "description": "Hint shown when no playlists are selected for deletion" - }, - "storeAddRepoDescription": "Введіть URL-адресу репозиторію GitHub, яка містить файл registry.json, для перегляду та встановлення розширень.", - "appearanceThemeDark": "Темний", - "downloadedAlbumTapToSelect": "Натисніть на треки, щоб вибрати", - "@collectionAddedToFavoriteArtists": { - "description": "Snackbar after adding artist to favorite artists", - "placeholders": { - "artistName": { - "type": "String" - } - } - }, - "@backupRestored": { - "description": "Snackbar after a successful restore" - }, - "nowPlayingLibraryEmpty": "Your library is empty", - "@nowPlayingLibraryEmpty": { - "description": "Snackbar when shuffle library is requested but library has no tracks" - }, - "editMetadataAutoFillNoResults": "Відповідних метаданих в Інтернеті не знайдено", - "updateDownloading": "Завантаження...", - "trackLyricsSource": "Source: {source}", - "logFilterLevel": "Рівень", - "logNoLogsYet": "Журналів поки що немає", - "cacheSizeOnly": "{size}", - "@cacheSizeOnly": { - "description": "Cache size only", - "placeholders": { - "size": { - "type": "String" - } - } - }, - "trackOpenInService": "Open in {serviceName}", - "@trackOpenInService": { - "description": "Button label to open a track in a named music service", - "placeholders": { - "serviceName": { - "type": "String" - } - } - }, - "@cacheLibraryCoverDesc": { - "description": "Description of what library cover cache contains" - }, - "libraryClearConfirmMessage": "Це видалить усі скановані треки з вашої бібліотеки. Ваші фактичні музичні файли не будуть видалені.", - "@dialogImportPlaylistMessage": { - "description": "Dialog message - import playlist confirmation", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionsHomeFeedAuto": "Авто", - "searchEmptyResultSubtitle": "Try another keyword", - "@searchEmptyResultSubtitle": { - "description": "Subtitle shown under the empty search result state on the home screen" - }, - "dateToday": "Сьогодні", - "a11yOpenItem": "Open {itemType} {name}", - "@a11yOpenItem": { - "description": "Accessibility label for opening a generic item", - "placeholders": { - "itemType": { - "type": "String" - }, - "name": { - "type": "String" - } - } - }, - "audioAnalysisBitDepth": "Глибина бітів", - "editMetadataFieldTrackTotal": "Track Total", - "@editMetadataFieldTrackTotal": { - "description": "Label for total tracks field in the edit metadata sheet" - }, - "@editMetadataFieldDiscTotal": { - "description": "Label for total discs field in the edit metadata sheet" - }, - "replayGainBatchConfirmMessage": "Analyze loudness and write ReplayGain tags to {count} track(s)?", - "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Folder named after Album Artist tag", - "@notifDownloadingUpdate": { - "description": "Notification title while downloading an app update", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "@csvImportTracks": { - "description": "Label shown in quality picker for CSV import", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "trackEditMetadata": "Редагувати метадані", - "discographyDownloadAll": "Завантажити все", - "@discographyDownloadAll": { - "description": "Option - download entire discography" - }, - "@editMetadataFieldAlbum": { - "description": "Chip label for album field in auto-fill selector" - }, - "albumFolderArtistAlbumSubtitle": "Альбоми/Ім'я артиста/Назва альбому/", - "extensionHealthServiceUnknown": "Service status unknown", - "navHome": "Головна", - "queueDownloadStarting": "Starting...", - "@dialogRemoveExtension": { - "description": "Dialog title - uninstall extension" - }, - "notifLibraryScanProgressNoTotal": "{scanned} файлів скановано • {percentage}%", - "@appearanceAmoledDark": { - "description": "Theme option - pure black" - }, - "qualityHiResFlac": "FLAC високої роздільної здатності", - "selectionSelected": "Вибрано {count}", - "extensionDetailsInformation": "Information", - "@extensionDetailsInformation": { - "description": "Section title for extension metadata information" - }, - "discographyDownload": "Завантажити дискографію", - "editMetadataFieldCopyright": "Авторське право", - "@setupOpenSettings": { - "description": "Button to open system settings" - }, - "libraryFilterSort": "Сортувати", - "cacheLibraryCoverDesc": "Обкладинку витягнуто з локальних музичних файлів. Буде повторно витягнуто під час наступного сканування.", - "dialogRemoveExtension": "Видалити розширення", - "backupExportSectionTitle": "Create backup", - "downloadEmbedLyricsDisabled": "Enable metadata embedding first", - "openInOtherServices": "Open in Other Services", - "actionSelectAll": "Вибрати все", - "settingsDownloadNetworkSubtitle": "Вибрати мережу для завантажень. Якщо встановлено значення «Тільки Wi-Fi», завантаження призупиняться через мобільні дані.", - "downloadFolderOrganization": "Організація папок", - "tutorialWelcomeTip2": "Choose from the audio qualities offered by your download provider", - "@tutorialWelcomeTip2": { - "description": "Tutorial welcome tip 2" - }, - "selectionAllSelected": "Усі треки вибрано", - "@selectionAllSelected": { - "description": "Status - all items selected" - }, - "settingsLogsSubtitle": "Перегляд журналів програми для налагодження", - "albumFolderYearAlbumSubtitle": "Альбоми/[2005] Назва Альбому/", - "cancelDownloadKeep": "Зберегти", - "optionsDetailedLoggingOn": "Ведеться детальний журнал", - "safMigrationMessage2": "Будь ласка, виберіть папку завантажень ще раз, щоб перейти до нової системи зберігання.", - "@storeChangeRepoTooltip": { - "description": "Tooltip for the change-repository icon button in the app bar" - }, - "regionCountryJP": "Japan", - "notifUpdateFailed": "Не вдалося оновити", - "downloadCreatePlaylistSourceFolderRedundant": "Handled by folder organization setting", - "@trackLyricsSaved": { - "description": "Snackbar after lyrics saved", - "placeholders": { - "fileName": { - "type": "String" - } - } - }, - "downloadLocationSubtitle": "Choose where to save your downloaded tracks", - "trackConvertActionLabelLossless": "{sourceFormat} → {targetFormat} ({quality})", - "lyricsProvidersDisabledSection": "Вимкнено ({count})", - "@dateDaysAgo": { - "description": "Relative date - days ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "librarySourceLocal": "Локальні", - "backupContentsExtensions": "{count, plural, =1{1 extension} other{{count} extensions}}", - "sectionService": "Сервіс", - "lyricsProviderQqMusicDesc": "QQ Music (добре для китайських пісень, через проксі)", - "@lyricsProviderQqMusicDesc": { - "description": "Description for QQ Music provider" - }, - "cacheCleanupUnusedDesc": "Видалити історію втрачених завантажень та записи бібліотеки для відсутніх файлів.", - "selectionTapPlaylistsToSelect": "Торкніться списків відтворення, щоб вибрати", - "notifUpdateFailedBody": "Не вдалося завантажити оновлення. Спробуйте пізніше.", - "downloadNeteaseIncludeTranslationDisabled": "Original lyrics only", - "artistPopular": "Популярні", - "extensionRemoveButton": "Видалити розширення", - "allFilesAccessEnabledSubtitle": "Можна записувати в будь-яку папку", - "@allFilesAccessEnabledSubtitle": { - "description": "Subtitle when all files access is enabled" - }, - "extensionsSearchProvider": "Постачальник пошуку", - "tutorialWelcomeDesc": "Learn how to find music with extensions, choose the quality you want, and manage downloads in SpotiFLAC Mobile.", - "selectionBatchConvertConfirmTitle": "Пакетне конвертування", - "extensionMetadataProvider": "Постачальник метаданих", - "queueDownloadedFileMissing": "Downloaded file missing", - "logClearLogs": "Очистити журнали", - "@downloadAppleQqMultiPerson": { - "description": "Setting for word-by-word multi-person lyrics from Apple Music and QQ Music" - }, - "tutorialWelcomeTip1": "Search with an installed extension or paste a supported music link", - "@tutorialWelcomeTip1": { - "description": "Tutorial welcome tip 1" - }, - "logIssueRateLimitedSuggestion": "Wait a few minutes before trying again", - "downloadAllowLocalNetworkEnabled": "Requests to local/private addresses are allowed (for local proxy or custom DNS)", - "@regionCountryUS": { - "description": "Country name for SongLink region picker" - }, - "trackArtist": "Артист", - "extensionCustomUrlHandling": "Custom URL Handling", - "appearanceDynamicColorSubtitle": "Використати кольори зі своїх шпалер", - "@appearanceDynamicColorSubtitle": { - "description": "Subtitle for dynamic color" - }, - "searchSortDefault": "За замовчуванням", - "@downloadFallbackExtensions": { - "description": "Settings item for configuring fallback extension providers" + "@downloadAlbumFolderStructure": { + "description": "Setting - album folder organization" }, "albumFolderStructureDescription": "Choose how album folders are structured", "@albumFolderStructureDescription": { "description": "Album folder structure picker description" }, - "libraryBuiltInPreviewPlayerSubtitle": "Quick local previews inside SpotiFLAC Mobile", - "@libraryBuiltInPreviewPlayerSubtitle": { - "description": "Subtitle for built-in preview player option" + "downloadUseAlbumArtistForFolders": "Використовувати виконавця альбому для папок", + "@downloadUseAlbumArtistForFolders": { + "description": "Setting - choose whether artist folders use Album Artist or Track Artist" }, - "storageModeAppFolder": "App Folder (Recommended)", - "@actionPause": { - "description": "Action button - pause download" + "downloadUsePrimaryArtistOnly": "Тільки основний виконавець для папок", + "@downloadUsePrimaryArtistOnly": { + "description": "Setting - strip featured artists from folder name" }, - "actionPaste": "Paste", - "extensionSettingsCount": "{count} {count, plural, =1{setting} other{settings}}", - "downloadNativeWorker": "Native download worker", - "releaseTypeEp": "EP", - "@releaseTypeEp": { - "description": "Badge label for EP releases" + "downloadUsePrimaryArtistOnlyEnabled": "Вибраних виконавців видалити з назви папки (наприклад, Джастін Бібер, Quavo → Джастін Бібер)", + "@downloadUsePrimaryArtistOnlyEnabled": { + "description": "Subtitle when primary artist only is enabled" }, - "snackbarExtensionInstalledEnable": "{extensionName} installed. Enable it in Settings > Extensions", - "cacheRefreshStats": "Оновити статистику", - "collectionPlaylistChangeCover": "Змінити зображення обкладинки", - "@collectionPlaylistChangeCover": { - "description": "Bottom sheet action to pick a custom cover image for a playlist" + "downloadUsePrimaryArtistOnlyDisabled": "Повний рядок виконавця, що використовується для назви папки", + "@downloadUsePrimaryArtistOnlyDisabled": { + "description": "Subtitle when primary artist only is disabled" }, - "optionsClearHistory": "Очистити історію завантажень", - "trackGenre": "Жанр", - "snackbarSelectedPlaylistsEmpty": "Вибрані списки відтворення не містять треків", - "collectionAddedTracksToPlaylist": "Added {count} {count, plural, =1{track} other{tracks}} to {playlistName}", - "downloadNeteaseIncludeRomanization": "Netease: Включити романізацію", - "libraryFilterMetadataMissingArtist": "Missing artist", - "extensionsNoCustomSearch": "Без розширень із користувацьким пошуком", - "@extensionsTitle": { - "description": "Extensions page title" + "downloadSelectQuality": "Вибрати якість", + "@downloadSelectQuality": { + "description": "Dialog title - choose audio quality" }, - "extensionDownloadProvider": "Постачальник завантажень", - "@extensionDownloadProvider": { - "description": "Capability - provides downloads" - }, - "lyricsMode": "Режим тексту пісні", - "aboutReportIssueSubtitle": "Повідомити про будь-які проблеми, з якими ви зіткнулися", - "@downloadSeparateSinglesFolder": { - "description": "Setting - separate folder for singles" + "downloadFrom": "Завантажити з", + "@downloadFrom": { + "description": "Label - download source" }, "appearanceAmoledDark": "Темний AMOLED", - "logIssueNetworkErrorDescription": "Connection issues detected", - "folderOrganizationByArtistAlbumSubtitle": "Вкладені папки для виконавця та альбому", - "@libraryForceFullScanSubtitle": { - "description": "Subtitle for force full scan button" + "@appearanceAmoledDark": { + "description": "Theme option - pure black" }, - "setupGrantPermission": "Надати дозвіл", - "lyricsProvidersDescription": "Увімкнення, вимкнення та зміна порядку джерел текстів пісень. Постачальники перевірятимуть зверху вниз, доки не буде знайдено текст пісні.", - "dateDaysAgo": "{count} днів тому", - "extensionsHomeFeedDescription": "Виберіть, яке розширення відображатиме домашню стрічку на головному екрані", - "downloadLossyMp3Subtitle": "Найкраща сумісність, ~10 МБ на доріжку", - "@downloadLossyMp3Subtitle": { - "description": "Subtitle for MP3 320kbps lossy option" - }, - "nowPlayingDetails": "Details", - "collectionWishlistEmptyTitle": "Список бажань порожній", - "downloadAppleQqMultiPersonEnabled": "Speaker labels included for duets and group tracks", - "@snackbarExtensionUpdatedVersion": { - "description": "Snackbar after updating an extension from the repo tab", - "placeholders": { - "extensionName": { - "type": "String" - }, - "version": { - "type": "String" - } - } - }, - "extensionHealthServiceDegraded": "Service degraded", - "selectionConvertNoConvertible": "Трансформованих треків не вибрано", - "setupStorageGranted": "Дозвіл на зберігання надано!", - "downloadAllowLocalNetwork": "Allow Local Network Access", - "nowPlayingNoLyrics": "No lyrics in this file", - "selectionDeleteTracksCount": "Delete {count} {count, plural, =1{track} other{tracks}}", - "@selectionDeleteTracksCount": { - "description": "Button label for deleting selected tracks", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@libraryForceFullScan": { - "description": "Button to force a complete rescan of library" - }, - "notifLibraryScanExcluded": "{count} виключені", - "@aboutPaxsenixSubtitle": { - "description": "Subtitle for Paxsenix special thanks entry on the about page" - }, - "setupChangeFolderTooltip": "Change folder", - "logIssueIspBlockingDescription": "Your ISP may be blocking access to download services", - "@logIssueIspBlockingDescription": { - "description": "Diagnostic badge description for ISP blocking" - }, - "libraryClear": "Очистити бібліотеку", - "collectionRemoveFromPlaylist": "Видалити зі списку відтворення", - "@collectionRemoveFromPlaylist": { - "description": "Tooltip for removing track from playlist" - }, - "backupIncludeSecrets": "Include extension credentials", - "notifDownloadsFinishedBody": "{completed, plural, =1{1 track downloaded} other{{completed} tracks downloaded}}, {failed, plural, =1{1 failed} other{{failed} failed}}", - "storeCategoryMetadata": "Metadata", - "@trackLyricsEmbedded": { - "description": "Snackbar - lyrics saved to file" - }, - "editMetadataFieldDiscTotal": "Disc Total", - "tutorialLibraryTip1": "Manage active, pending, and completed downloads from the Library queue", - "playlistsCount": "{count, plural, =1{1 плейлист} other{{count} плейлистів}}", - "downloadCreatePlaylistSourceFolderDisabled": "All tracks saved directly to download folder", - "@downloadFallbackExtensionsSubtitle": { - "description": "Subtitle for fallback extensions item" - }, - "libraryFilterLocal": "Локальні", - "tutorialDownloadInProgressSemantics": "Download in progress", - "searchSortDurationLong": "Тривалість (найдовша)", - "@appearanceLanguage": { - "description": "Language setting title" - }, - "libraryAbout": "Про локальну бібліотеку", - "@libraryAbout": { - "description": "Section header for about info" - }, - "cueSplitNoAudioFile": "Аудіофайл для цього аркуша CUE не знайдено", - "notifUpdateReadyBody": "SpotiFLAC Mobile v{version} downloaded. Tap to install.", - "appearanceSelectAccentColor": "Select accent color {hex}", - "@homeAlbumInfoUnavailable": { - "description": "Snackbar when album info cannot be loaded" - }, - "trackReplayGain": "Rescan ReplayGain", - "downloadSeparateSinglesFolder": "Окрема папка для синглів", - "trackAlbumArtist": "Виконавець альбому", - "qualityFlacLossless": "FLAC без втрат", - "@extensionVerificationHelpMessageWaiting": { - "description": "Dialog message when verification may need manual browser help" - }, - "tutorialSettingsTitle": "Налаштуйте свій досвід", - "extensionActionFailed": "Action failed", - "@storeEmptyNoResults": { - "description": "Message when search/filter returns no results" - }, - "downloadAppleQqMultiPerson": "Apple / QQ: Multi-Person Lyrics", - "downloadFallbackExtensionsSubtitle": "Choose which extensions can be used as fallback", - "storeExtensionsCount": "{count} {count, plural, =1{extension} other{extensions}}", - "trackCoverNoEmbeddedArt": "No embedded album art found", - "@trackCoverNoEmbeddedArt": { - "description": "Message shown when a track file has no embedded cover art" - }, - "snackbarExtensionUpdatedVersion": "{extensionName} updated to v{version}", - "setupStorageAccessMessageAndroid11": "Для збереження файлів у вибрану папку завантажень для Android 11+ потрібен дозвіл «Доступ до всіх файлів».", - "notifDownloadsFinished": "Завантаження завершено ({completed} завершено, {failed} не вдалося)", - "notifLibraryScanProgressWithTotal": "{scanned}/{total} файлів • {percentage}%", - "optionsPrimaryProvider": "Основний постачальник", - "@optionsPrimaryProvider": { - "description": "Main search provider setting" - }, - "logIssueTrackNotFoundSuggestion": "The track may not be available in lossless quality", - "collectionAddedToLoved": "\"{trackName}\" додано до списку улюблених", - "albumFolderArtistAlbumFlat": "Виконавець / Альбом (сингли без альбомів)", - "homeAlbumInfoUnavailable": "Інформація про альбом недоступна", - "settingsLyrics": "Lyrics", - "extensionVerificationBrowserExternal": "External", - "regionCountryIN": "India", - "extensionHealthUnknown": "Unknown", - "backupContentsWishlist": "{count} wishlist {count, plural, =1{track} other{tracks}}", - "settingsAutoExportFailed": "Автоматичний експорт невдалих завантажень", - "logFilterSection": "Фільтр", - "dialogDiscardChanges": "Відхилити зміни?", - "@qualityHiResFlacSubtitle": { - "description": "Technical spec for hi-res" - }, - "searchTracks": "Tracks", - "searchAlbums": "Альбоми", - "trackConvertFormat": "Конвертувати формат", - "metadataProviderPriorityTitle": "Пріоритет метаданих", - "libraryFolderHint": "Натисніть, щоб вибрати папку", - "downloadedAlbumDeleteMessage": "Видалити {count} {count, plural, =1{трек} other{треків}} з цього альбому?\n\nЦе також призведе до видалення файлів зі сховища.", - "@downloadedAlbumDeleteMessage": { - "description": "Delete confirmation with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "trackAlbum": "Альбом", - "updateAvailable": "Доступне оновлення", - "optionsEmbedLyrics": "Вбудований текст пісні", - "trackReEnrichProgress": "Повторне збагачення метаданих...", - "@trackReEnrichProgress": { - "description": "Snackbar while re-enriching metadata" - }, - "audioAnalysisPeak": "Пік", - "@audioAnalysisPeak": { - "description": "Peak amplitude metric label" - }, - "optionsExtensionStoreSubtitle": "Показати вкладку «Репозиторій» у навігації", - "settingsTitle": "Налаштування", - "@settingsAbout": { - "description": "Settings section - app info" - }, - "cacheExploreFeed": "Огляд кешу стрічки", - "@dialogDownloadPlaylistsMessage": { - "description": "Dialog message for bulk playlist download confirmation", - "placeholders": { - "trackCount": { - "type": "int" - }, - "playlistCount": { - "type": "int" - } - } - }, - "downloadedAlbumSelectedCount": "Вибрано {count}", - "downloadAskQualitySubtitle": "Показувати вікно вибору якості для кожного завантаження", - "filenameShowAdvancedTags": "Показати розширені теги", - "@filenameShowAdvancedTags": { - "description": "Toggle label for showing advanced filename tags" - }, - "@editMetadataFieldComment": { - "description": "Label for comment field in the edit metadata sheet" - }, - "downloadFallbackExtensions": "Fallback Extensions", - "downloadAlbumArtistMetadataFull": "Album Artist metadata: Full", - "cacheLibraryCover": "Кеш бібліотеки обкладинок", - "actionShuffle": "Shuffle", - "backupCreated": "Backup created", - "downloadLossyAacSubtitle": "Best mobile compatibility, M4A container", - "actionCreate": "Створити", - "snackbarAddedToQueueGeneric": "Added to queue", - "downloadedAlbumDownloadedCount": "{count} завантажено", - "snackbarLoadingCueSheet": "Завантаження аркуша CUE...", - "@trackCoverClearSelected": { - "description": "Tooltip for clearing the newly selected cover art" - }, - "aboutOriginalCreator": "Творець оригінального SpotiFLAC", - "a11yTrackByArtist": "{trackName} by {artistName}", - "audioAnalysisDynamicRange": "Динамічний діапазон", - "homeChangeSearchProviderTooltip": "Change search provider", - "loadingSharedLink": "Завантаження спільного посилання...", - "lyricsModeEmbedSubtitle": "Тексти пісень зберігаються в метаданих FLAC", - "setupNotificationBackgroundDescription": "Отримуйте сповіщення про прогрес та завершення завантаження. Це допомагає відстежувати завантаження, коли програма працює у фоновому режимі.", - "snackbarViewQueue": "Переглянути чергу", - "@audioAnalysisDuration": { - "description": "Duration metric label" - }, - "downloadSeparateSinglesDisabled": "Singles and albums saved in the same folder", - "backupRestored": "Backup restored successfully", - "trackConvertConfirmMessageLosslessCapped": "Convert from {sourceFormat} to {targetFormat} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original file will be deleted after conversion.", - "@trackConvertConfirmMessageLosslessCapped": { - "description": "Confirmation dialog message for capped lossless conversion of a single file", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "quality": { - "type": "String" - } - } - }, - "discographySelectAlbumsSubtitle": "Виберіть конкретні альбоми або сингли", - "@discographySelectAlbumsSubtitle": { - "description": "Subtitle for select albums option" - }, - "backupImportSectionDescription": "Pick a backup file to restore your data. This replaces the current settings, history and library on this device.", - "errorUrlFetchFailed": "Не вдалося завантажити вміст за цим посиланням. Спробуйте ще раз.", - "lyricsProviderLyricsPlusDesc": "Word-by-word karaoke lyrics (Apple/Musixmatch/Spotify/QQ, via proxy)", - "dialogSave": "Зберегти", - "trackReEnrichSearching": "Пошук метаданих в Інтернеті...", - "regionCountryUS": "United States", - "audioAnalysisDescription": "Перевірити якість без втрат за допомогою спектрального аналізу", - "downloadFilenameFormat": "Формат імені файлу", - "cueSplitTitle": "Розділений аркуш CUE", - "settingsAppSubtitle": "Updates, data, extension repo, debug", - "@settingsAppSubtitle": { - "description": "Subtitle for app settings" - }, - "@setupPermissionRequiredMessage": { - "description": "Generic permission required message", - "placeholders": { - "permissionType": { - "type": "String" - } - } - }, - "errorMissingExtensionSource": "Не вдається завантажити {item}: відсутній вихідний код розширення", - "albumFolderAlbumOnlySubtitle": "Альбоми/Назва Альбому/", - "logIssueTrackNotFoundLabel": "TRACK NOT FOUND", - "extensionVerificationHelpTitleManual": "Open verification manually", - "dialogDiscard": "Відхилити", - "storageModeSaf": "Custom Folder (SAF)", - "errorRateLimited": "Обмежений тариф", - "downloadSelectQuality": "Вибрати якість", - "dialogDownloadPlaylistsMessage": "Завантажити {trackCount} {trackCount, plural, =1{трек} other{треків}} з {playlistCount} {playlistCount, plural, =1{плейлист} other{плейлистів}}?", - "collectionFoldersTitle": "Мої папки", - "progressFetchingMetadata": "Отримання метаданих... {current}/{total}", - "settingsDownloadNetworkAny": "Wi-Fi + мобільний інтернет", - "audioAnalysisDuration": "Тривалість", - "audioAnalysisAnalyzing": "Аналіз аудіо...", - "extensionVerificationHelpMessageWaiting": "If the browser did not open, or verification finished but did not return to SpotiFLAC Mobile, open this link again or copy it manually.", - "editMetadataFieldDiscNum": "Номер диска", - "@editMetadataFieldDiscNum": { - "description": "Chip label for disc number field in auto-fill selector" - }, - "@noTracksFoundForAlbum": { - "description": "Empty state message when an album has no tracks" - }, - "previewPlay": "Play preview", - "setupPermissionRequiredMessage": "{permissionType} Для найкращого досвіду потрібен дозвіл. Ви можете змінити це пізніше в налаштуваннях.", - "aboutVersion": "Версія", - "qualityHiResFlacSubtitle": "24-біт / до 96 кГц", - "audioAnalysisSamples": "Семпли", - "libraryFilterQualityHiRes": "Висока роздільна здатність (24 біти)", - "sectionMetadataProviders": "Providers", - "@sectionMetadataProviders": { - "description": "Settings section header for metadata providers" - }, - "trackCopyright": "Авторське право", - "libraryForceFullScanSubtitle": "Пересканувати всі файли, ігноруючи кеш", - "trackCopiedToClipboard": "Скопійовано в буфер обміну", - "optionsEmbedMetadata": "Embed Metadata", - "collectionAddedTracksToPlaylistWithExisting": "Added {count} {count, plural, =1{track} other{tracks}} to {playlistName} ({alreadyCount} already in playlist)", - "@collectionAddedTracksToPlaylistWithExisting": { - "description": "Snackbar after adding multiple tracks to a playlist when some were already present", - "placeholders": { - "count": { - "type": "int" - }, - "playlistName": { - "type": "String" - }, - "alreadyCount": { - "type": "int" - } - } - }, - "storeCategoryIntegration": "Integration", - "storeClearFilters": "Очистити фільтри", - "navSettings": "Налаштування", - "@homeRecent": { - "description": "Section header for recent searches" - }, - "sectionApp": "Додаток", - "@sectionLanguage": { - "description": "Settings section header for language" - }, - "downloadFilterContributingDisabled": "Full Album Artist string used", - "albumFolderArtistAlbumSinglesSubtitle": "Виконавець/Альбом/ та Виконавець/Сингли/", - "collectionDeletePlaylistsMessage": "Delete {count} {count, plural, =1{playlist} other{playlists}}?", - "lyricsProvidersSaved": "Пріоритет постачальника текстів пісень збережено", - "@trackReplayGainFailed": { - "description": "Snackbar message when ReplayGain scan/write fails" - }, - "trackTrackName": "Назва треку", - "homeRecent": "Нещодавні", - "recentEmpty": "Поки що немає нещодавніх записів", - "cacheClearAll": "Очистити весь кеш", - "trackReEnrichFieldReleaseInfo": "Дата та ISRC", - "regionCountryMX": "Mexico", - "a11yOpenAlbumByArtistTrackCount": "Open album {albumName} by {artistName}, {trackCount} tracks", - "editMetadataFieldAlbum": "Альбом", - "settingsAbout": "Про додаток", - "libraryFilterTitle": "Фільтри", - "cleanupOrphanedDownloadsResult": "Видалено {count} утрачених записів з історії", - "extensionHooksAvailable": "{count} доступних хуків", - "backupContentsSettings": "App settings", - "trackLyricsEmbedded": "Текст пісні успішно вбудовано в пісню", - "optionsUpdateChannelPreview": "Отримати попередні релізи", - "collectionAddedToFavoriteArtists": "\"{artistName}\" added to Favorite Artists", - "libraryForceFullScan": "Примусове повне сканування", - "snackbarProviderPrioritySaved": "Пріоритет постачальника збережено", - "collectionFavoriteArtistsEmptySubtitle": "Tap the heart on an artist page to keep them here", - "libraryBuiltInPlayerInfo": "The built-in player is a preview tool for checking local tracks quickly. Use an external music player for actual listening.", - "extensionServiceStatus": "Service Status", - "dateWeeksAgo": "{count} тижнів тому", - "historyFilterSingles": "Сингли", - "tutorialSettingsTip2": "Set quality, concurrency, filenames, and conversion preferences", - "trackLyricsSaved": "Текст пісні збережено в {fileName}", - "cacheClearAllConfirmTitle": "Очистити увесь кеш?", - "noTracksFoundForAlbum": "Для цього альбому не знайдено жодних треків", - "sectionLanguage": "Мова", - "@logIssueTrackNotFoundDescription": { - "description": "Diagnostic badge description when a track is unavailable" - }, - "setupSelectFolder": "Вибрати папку", - "dateYesterday": "Вчора", - "collectionAddToPlaylist": "Додати до списку відтворення", - "snackbarUnsupportedAudioFormat": "Непідтримуваний аудіоформат", - "libraryScanCancelled": "Scan cancelled", - "appearanceLanguage": "Мова програми", - "extensionsTitle": "Розширення", - "dialogImportPlaylistMessage": "Found {count} tracks in the playlist file. Add them to download queue?", - "permissionNotification": "Notification", - "notifUpdateReady": "Оновлення готове", - "lyricsModeDescription": "Виберіть, як тексти пісень зберігатимуться разом із завантаженнями пісень.", - "downloadFrom": "Завантажити з", - "collectionWishlistEmptySubtitle": "Натисніть + на треках, щоб зберегти те, що ви хочете завантажити пізніше", - "cueSplitSplitting": "Розділення аркуша CUE... ({current}/{total})", - "trackOptionAddToWishlist": "Додати до списку бажань", - "settingsBackup": "Backup & Restore", - "aboutPaxsenixSubtitle": "Lyrics proxy for Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou, and Genius", - "notifDownloadCompleteCount": "Завантаження завершено ({completed}/{total})", - "extensionsNoDownloadProvider": "Без розширень із постачальником завантажень", - "libraryFilterSortGenreAsc": "Жанр (А-Я)", - "trackReplayGainFailed": "Failed to add ReplayGain tags", - "collectionPlaylistRemoveCover": "Видалити зображення обкладинки", - "storeEmptyNoResults": "Розширень не знайдено", - "logIssueTrackNotFoundDescription": "Some tracks could not be found on download services", - "editMetadataFieldComment": "Comment", - "settingsMetadata": "Metadata", - "settingsCache": "Сховище та Кеш", - "providerPriorityFallbackExtensionsHint": "Тут перелічені лише ввімкнені розширення з можливістю завантаження через постачальника послуг.", - "libraryFilterAll": "Усі", - "notifDownloadingUpdate": "Downloading SpotiFLAC Mobile v{version}", - "extensionsProviderPrioritySection": "Пріоритет постачальника", - "storeChangeRepoTooltip": "Змінити репозиторій", - "snackbarFailedToInstall": "Не вдалося встановити розширення", - "libraryScanSubtitle": "Сканувати для аудіофайлів", - "snackbarExtensionInstalled": "Розширення {extensionName} встановлено.", - "setupOpenSettings": "Відкрити налаштування", - "extensionsInstalledSection": "Встановлені розширення", - "aboutLinks": "Посилання", - "trackCoverClearSelected": "Clear selected cover", - "libraryAutoScanWeekly": "Щотижнево", - "downloadMusixmatchLanguageAuto": "Auto (original language)", - "optionsDefaultSearchTab": "Вкладка пошуку за замовчуванням", - "downloadPrimaryArtistOnlyOn": "Primary only: On", - "folderOrganizationDescription": "Упорядкувати завантажені файли в папки", - "@folderOrganizationDescription": { - "description": "Folder organization sheet description" - }, - "lyricsModeEmbed": "Вбудувати у файл", - "trackReEnrichFfmpegFailed": "Не вдалося вбудувати метадані FFmpeg", - "@extensionsSearchProviderDescription": { - "description": "Search provider setting description" - }, - "libraryFilterQualityLossy": "Із втратами (lossy)", - "actionPause": "Пауза", - "csvImportTracks": "{count} треків з CSV", - "actionGo": "Go", - "sectionDebug": "Налагодження", - "editMetadataFieldDate": "Дата", - "timeHoursAgo": "{count, plural, =1{1 hour ago} other{{count} годин тому}}", - "sectionPerformance": "Продуктивність", - "extensionsDownloadPrioritySubtitle": "Встановити порядок завантаження", - "cacheAppDirectoryDesc": "HTTP-відповіді, дані WebView та інші тимчасові дані додатків.", - "sectionData": "Дані", - "notifFinalizingTrack": "Фіналізація {trackName}", - "snackbarFileNotFound": "Файл не знайдено", - "extensionQualityOptions": "Варіанти якості", - "extensionVerificationBrowserSubtitleExternal": "Open challenges in the default browser first", - "backupInvalidFile": "This file is not a valid SpotiFLAC backup", - "storeRepoDialogTitle": "Репозиторій розширень", - "extensionsSearchProviderDescription": "Виберіть, який сервіс використовувати для пошуку треків", - "albumFolderAlbumOnly": "Тільки альбом", - "nowPlayingOpenInExternalPlayer": "Open in external player", - "cueSplitButton": "Розділити на треки", - "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" - } - } + "appearanceAmoledDarkSubtitle": "Чисто чорний фон", + "@appearanceAmoledDarkSubtitle": { + "description": "Subtitle for AMOLED dark" }, "appearanceHeroAnimations": "Hero animations", "@appearanceHeroAnimations": { @@ -5891,6 +2213,46 @@ "@appearanceHeroAnimationsSubtitle": { "description": "Subtitle for the Hero animations toggle" }, + "appearanceForceBlur": "Always use blur effects", + "@appearanceForceBlur": { + "description": "Toggle that forces backdrop blur on even when the device profile disabled it" + }, + "appearanceForceBlurSubtitle": "Enable the navigation bar blur even on devices where it is off by default. May cost performance.", + "@appearanceForceBlurSubtitle": { + "description": "Subtitle for the force-blur toggle" + }, + "queueClearAll": "Усі", + "@queueClearAll": { + "description": "Button - clear all queue items" + }, + "queueClearAllMessage": "Ви впевнені, що хочете очистити всі завантаження?", + "@queueClearAllMessage": { + "description": "Clear queue confirmation" + }, + "settingsAutoExportFailed": "Автоматичний експорт невдалих завантажень", + "@settingsAutoExportFailed": { + "description": "Setting toggle for auto-export" + }, + "settingsAutoExportFailedSubtitle": "Автоматично зберігати невдалі завантаження у файл TXT", + "@settingsAutoExportFailedSubtitle": { + "description": "Subtitle for auto-export setting" + }, + "settingsDownloadNetwork": "Мережа для завантаження", + "@settingsDownloadNetwork": { + "description": "Setting for network type preference" + }, + "settingsDownloadNetworkAny": "Wi-Fi + мобільний інтернет", + "@settingsDownloadNetworkAny": { + "description": "Network option - use any connection" + }, + "settingsDownloadNetworkWifiOnly": "Тільки Wi-Fi", + "@settingsDownloadNetworkWifiOnly": { + "description": "Network option - only use WiFi" + }, + "settingsDownloadNetworkSubtitle": "Вибрати мережу для завантажень. Якщо встановлено значення «Тільки Wi-Fi», завантаження призупиняться через мобільні дані.", + "@settingsDownloadNetworkSubtitle": { + "description": "Subtitle explaining network preference" + }, "settingsConcurrentDownloads": "Concurrent downloads", "@settingsConcurrentDownloads": { "description": "Setting title - how many tracks download at the same time" @@ -5912,6 +2274,854 @@ } } }, + "albumFolderArtistAlbum": "Артист / Альбом", + "@albumFolderArtistAlbum": { + "description": "Album folder option" + }, + "albumFolderArtistAlbumSubtitle": "Альбоми/Ім'я артиста/Назва альбому/", + "@albumFolderArtistAlbumSubtitle": { + "description": "Folder structure example" + }, + "albumFolderArtistYearAlbum": "Артист / [Рік] Альбом", + "@albumFolderArtistYearAlbum": { + "description": "Album folder option with year" + }, + "albumFolderArtistYearAlbumSubtitle": "Альбоми/Ім'я Виконавця/[2005] Назва альбому/", + "@albumFolderArtistYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "albumFolderAlbumOnly": "Тільки альбом", + "@albumFolderAlbumOnly": { + "description": "Album folder option" + }, + "albumFolderAlbumOnlySubtitle": "Альбоми/Назва Альбому/", + "@albumFolderAlbumOnlySubtitle": { + "description": "Folder structure example" + }, + "albumFolderYearAlbum": "[Рік] Альбом", + "@albumFolderYearAlbum": { + "description": "Album folder option with year" + }, + "albumFolderYearAlbumSubtitle": "Альбоми/[2005] Назва Альбому/", + "@albumFolderYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "albumFolderArtistAlbumSingles": "Виконавець / Альбом + Сингли", + "@albumFolderArtistAlbumSingles": { + "description": "Album folder option with singles inside artist" + }, + "albumFolderArtistAlbumSinglesSubtitle": "Виконавець/Альбом/ та Виконавець/Сингли/", + "@albumFolderArtistAlbumSinglesSubtitle": { + "description": "Folder structure example" + }, + "albumFolderArtistAlbumFlat": "Виконавець / Альбом (сингли без альбомів)", + "@albumFolderArtistAlbumFlat": { + "description": "Album folder option with singles directly in artist folder" + }, + "albumFolderArtistAlbumFlatSubtitle": "Виконавець/Альбом/ та Виконавець/пісня.flac", + "@albumFolderArtistAlbumFlatSubtitle": { + "description": "Folder structure example for flat singles" + }, + "downloadedAlbumDeleteSelected": "Видалити вибране", + "@downloadedAlbumDeleteSelected": { + "description": "Button - delete selected tracks" + }, + "downloadedAlbumDeleteMessage": "Видалити {count} {count, plural, =1{трек} other{треків}} з цього альбому?\n\nЦе також призведе до видалення файлів зі сховища.", + "@downloadedAlbumDeleteMessage": { + "description": "Delete confirmation with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumSelectedCount": "Вибрано {count}", + "@downloadedAlbumSelectedCount": { + "description": "Selection count indicator", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumTapToSelect": "Натисніть на треки, щоб вибрати", + "@downloadedAlbumTapToSelect": { + "description": "Selection hint" + }, + "downloadedAlbumDeleteCount": "Видалити {count} {count, plural, =1{трек} other{треків}}", + "@downloadedAlbumDeleteCount": { + "description": "Delete button text with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumSelectToDelete": "Виберіть треки для видалення", + "@downloadedAlbumSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "downloadedAlbumDiscHeader": "Диск {discNumber}", + "@downloadedAlbumDiscHeader": { + "description": "Header for disc separator in multi-disc albums", + "placeholders": { + "discNumber": { + "type": "int", + "example": "1" + } + } + }, + "recentTypeArtist": "Артист", + "@recentTypeArtist": { + "description": "Recent access item type - artist" + }, + "recentTypeAlbum": "Альбом", + "@recentTypeAlbum": { + "description": "Recent access item type - album" + }, + "recentTypeSong": "Пісня", + "@recentTypeSong": { + "description": "Recent access item type - song/track" + }, + "recentTypePlaylist": "Список відтворення", + "@recentTypePlaylist": { + "description": "Recent access item type - playlist" + }, + "recentEmpty": "Поки що немає нещодавніх записів", + "@recentEmpty": { + "description": "Empty state text for recent access list" + }, + "recentClearAllMessage": "Clear all recent activity? Download history and music files will not be deleted.", + "@recentClearAllMessage": { + "description": "Confirmation message before clearing all recent activity" + }, + "recentShowAllDownloads": "Показати всі завантаження", + "@recentShowAllDownloads": { + "description": "Button label to unhide hidden downloads in recent access" + }, + "recentPlaylistInfo": "Список відтворення: {name}", + "@recentPlaylistInfo": { + "description": "Snackbar message when tapping playlist in recent access", + "placeholders": { + "name": { + "type": "String", + "description": "Playlist name" + } + } + }, + "discographyDownload": "Завантажити дискографію", + "@discographyDownload": { + "description": "Button - download artist discography" + }, + "discographyDownloadAll": "Завантажити все", + "@discographyDownloadAll": { + "description": "Option - download entire discography" + }, + "discographyDownloadAllSubtitle": "{count} треків з {albumCount} релізів", + "@discographyDownloadAllSubtitle": { + "description": "Subtitle showing total tracks and albums", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "discographyAlbumsOnly": "Тільки альбоми", + "@discographyAlbumsOnly": { + "description": "Option - download only albums" + }, + "discographyAlbumsOnlySubtitle": "{count} треків з {albumCount} альбомів", + "@discographyAlbumsOnlySubtitle": { + "description": "Subtitle showing album tracks count", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "discographySinglesOnly": "Тільки сингли та міні-альбоми", + "@discographySinglesOnly": { + "description": "Option - download only singles" + }, + "discographySinglesOnlySubtitle": "{count} треків з {albumCount} синглів", + "@discographySinglesOnlySubtitle": { + "description": "Subtitle showing singles tracks count", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "discographySelectAlbums": "Вибрати альбоми...", + "@discographySelectAlbums": { + "description": "Option - manually select albums to download" + }, + "discographySelectAlbumsSubtitle": "Виберіть конкретні альбоми або сингли", + "@discographySelectAlbumsSubtitle": { + "description": "Subtitle for select albums option" + }, + "discographyFetchingTracks": "Отримання треків...", + "@discographyFetchingTracks": { + "description": "Progress - fetching album tracks" + }, + "discographyFetchingAlbum": "Отримання {current} з {total}...", + "@discographyFetchingAlbum": { + "description": "Progress - fetching specific album", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "discographySelectedCount": "{count} вибрано", + "@discographySelectedCount": { + "description": "Selection count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "discographyDownloadSelected": "Завантажити вибране", + "@discographyDownloadSelected": { + "description": "Button - download selected albums" + }, + "discographyAddedToQueue": "Додано {count} треків до черги", + "@discographyAddedToQueue": { + "description": "Snackbar - tracks added from discography", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "discographySkippedDownloaded": "{added} додано, {skipped} вже завантажено", + "@discographySkippedDownloaded": { + "description": "Snackbar - with skipped tracks count", + "placeholders": { + "added": { + "type": "int" + }, + "skipped": { + "type": "int" + } + } + }, + "discographyNoAlbums": "Немає доступних альбомів", + "@discographyNoAlbums": { + "description": "Error - no albums found for artist" + }, + "discographyFailedToFetch": "Не вдалося отримати деякі альбоми", + "@discographyFailedToFetch": { + "description": "Error - some albums failed to load" + }, + "sectionStorageAccess": "Доступ до сховища", + "@sectionStorageAccess": { + "description": "Section header for storage access settings" + }, + "allFilesAccess": "Доступ до всіх файлів", + "@allFilesAccess": { + "description": "Toggle for MANAGE_EXTERNAL_STORAGE permission" + }, + "allFilesAccessEnabledSubtitle": "Можна записувати в будь-яку папку", + "@allFilesAccessEnabledSubtitle": { + "description": "Subtitle when all files access is enabled" + }, + "allFilesAccessDisabledSubtitle": "Обмежено лише медіа-папками", + "@allFilesAccessDisabledSubtitle": { + "description": "Subtitle when all files access is disabled" + }, + "allFilesAccessDescription": "Увімкніть цю опцію, якщо під час збереження у власні папки виникають помилки запису. Android 13+ за замовчуванням обмежує доступ до певних каталогів.", + "@allFilesAccessDescription": { + "description": "Description explaining when to enable all files access" + }, + "allFilesAccessDeniedMessage": "У дозволі відмовлено. Будь ласка, увімкніть «Доступ до всіх файлів» вручну в налаштуваннях системи.", + "@allFilesAccessDeniedMessage": { + "description": "Message when permission is permanently denied" + }, + "allFilesAccessDisabledMessage": "У дозволі відмовлено. Будь ласка, увімкніть «Доступ до всіх файлів» вручну в налаштуваннях системи.", + "@allFilesAccessDisabledMessage": { + "description": "Snackbar message when user disables all files access" + }, + "settingsLocalLibrary": "Локальна бібліотека", + "@settingsLocalLibrary": { + "description": "Settings menu item - local library" + }, + "settingsLocalLibrarySubtitle": "Сканування музики та виявлення дублікатів", + "@settingsLocalLibrarySubtitle": { + "description": "Subtitle for local library settings" + }, + "settingsCache": "Сховище та Кеш", + "@settingsCache": { + "description": "Settings menu item - cache management" + }, + "settingsCacheSubtitle": "Переглянути розмір і очистити кешовані дані", + "@settingsCacheSubtitle": { + "description": "Subtitle for cache management menu" + }, + "libraryTitle": "Локальна бібліотека", + "@libraryTitle": { + "description": "Library settings page title" + }, + "libraryScanSettings": "Налаштування сканування", + "@libraryScanSettings": { + "description": "Section header for scan settings" + }, + "libraryEnableLocalLibrary": "Увімкнути локальну бібліотеку", + "@libraryEnableLocalLibrary": { + "description": "Toggle to enable library scanning" + }, + "libraryEnableLocalLibrarySubtitle": "Скануати та відстежити свою існуючу музику", + "@libraryEnableLocalLibrarySubtitle": { + "description": "Subtitle for enable toggle" + }, + "libraryFolder": "Папка бібліотеки", + "@libraryFolder": { + "description": "Folder selection setting" + }, + "libraryFolderHint": "Натисніть, щоб вибрати папку", + "@libraryFolderHint": { + "description": "Placeholder when no folder selected" + }, + "libraryAddFolder": "Add library folder", + "@libraryAddFolder": { + "description": "Action to add another local library source" + }, + "libraryAddFolderSubtitle": "Internal storage, SD card, SSD, or another external drive", + "@libraryAddFolderSubtitle": { + "description": "Supported storage locations for local library sources" + }, + "librarySourceOnline": "Online", + "@librarySourceOnline": { + "description": "Library source is connected and accessible" + }, + "librarySourceOffline": "Offline. Reconnect the storage to restore these tracks", + "@librarySourceOffline": { + "description": "Library source is temporarily disconnected" + }, + "librarySourceDisabled": "Disabled", + "@librarySourceDisabled": { + "description": "Library source has been disabled by the user" + }, + "librarySourceScanCount": "{scanned} of {total} files scanned ({progress}%)", + "@librarySourceScanCount": { + "description": "Live progress for one library folder scan", + "placeholders": { + "scanned": { + "type": "int" + }, + "total": { + "type": "int" + }, + "progress": { + "type": "String" + } + } + }, + "libraryExternalStorage": "External storage", + "@libraryExternalStorage": { + "description": "Label for a removable or external library source" + }, + "libraryRemoveFolder": "Remove library folder", + "@libraryRemoveFolder": { + "description": "Action to remove one indexed library source" + }, + "libraryRemoveFolderMessage": "Remove this folder and its indexed tracks from SpotiFLAC Mobile? Audio files on the storage will not be deleted.", + "@libraryRemoveFolderMessage": { + "description": "Confirmation shown before removing a library source" + }, + "libraryShowDuplicateIndicator": "Показати індикатор дублікатів", + "@libraryShowDuplicateIndicator": { + "description": "Toggle for duplicate indicator in search" + }, + "libraryShowDuplicateIndicatorSubtitle": "Показувати під час пошуку існуючих треків", + "@libraryShowDuplicateIndicatorSubtitle": { + "description": "Subtitle for duplicate indicator toggle" + }, + "libraryAutoScan": "Автоматичне сканування", + "@libraryAutoScan": { + "description": "Setting for automatic library scanning" + }, + "libraryAutoScanSubtitle": "Автоматичне сканування бібліотеки на наявність нових файлів", + "@libraryAutoScanSubtitle": { + "description": "Subtitle for auto scan setting" + }, + "libraryAutoScanOff": "Вимкнено", + "@libraryAutoScanOff": { + "description": "Auto scan disabled" + }, + "libraryAutoScanOnOpen": "Кожного разу коли додаток відкривається", + "@libraryAutoScanOnOpen": { + "description": "Auto scan when app opens" + }, + "libraryAutoScanDaily": "Щоденно", + "@libraryAutoScanDaily": { + "description": "Auto scan once per day" + }, + "libraryAutoScanWeekly": "Щотижнево", + "@libraryAutoScanWeekly": { + "description": "Auto scan once per week" + }, + "libraryActions": "Дії", + "@libraryActions": { + "description": "Section header for library actions" + }, + "libraryScan": "Сканувати бібліотеку", + "@libraryScan": { + "description": "Button to start library scan" + }, + "libraryScanSubtitle": "Сканувати для аудіофайлів", + "@libraryScanSubtitle": { + "description": "Subtitle for scan button" + }, + "libraryScanSelectFolderFirst": "Спочатку виберіть папку", + "@libraryScanSelectFolderFirst": { + "description": "Message when trying to scan without folder" + }, + "libraryCleanupMissingFiles": "Очищення відсутніх файлів", + "@libraryCleanupMissingFiles": { + "description": "Button to remove entries for missing files" + }, + "libraryCleanupMissingFilesSubtitle": "Видалити записи для файлів, яких більше не існує", + "@libraryCleanupMissingFilesSubtitle": { + "description": "Subtitle for cleanup button" + }, + "libraryClear": "Очистити бібліотеку", + "@libraryClear": { + "description": "Button to clear all library entries" + }, + "libraryClearSubtitle": "Видалити всі скановані треки", + "@libraryClearSubtitle": { + "description": "Subtitle for clear button" + }, + "libraryClearConfirmTitle": "Очистити бібліотеку", + "@libraryClearConfirmTitle": { + "description": "Dialog title for clear confirmation" + }, + "libraryClearConfirmMessage": "Це видалить усі скановані треки з вашої бібліотеки. Ваші фактичні музичні файли не будуть видалені.", + "@libraryClearConfirmMessage": { + "description": "Dialog message for clear confirmation" + }, + "libraryAbout": "Про локальну бібліотеку", + "@libraryAbout": { + "description": "Section header for about info" + }, + "libraryAboutDescription": "Сканує вашу існуючу музичну колекцію для виявлення дублікатів під час завантаження. Підтримує формати FLAC, M4A, MP3, Opus та OGG. Метадані зчитуються з тегів файлів, коли вони доступні.", + "@libraryAboutDescription": { + "description": "Description of local library feature" + }, + "libraryTracksUnit": "{count, plural, =1{трек} other{треків}}", + "@libraryTracksUnit": { + "description": "Unit label for tracks count (without the number itself)", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryFilesUnit": "{count, plural, =1{file} other{файлів}}", + "@libraryFilesUnit": { + "description": "Unit label for files count during library scanning", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryLastScanned": "Останнє сканування: {time}", + "@libraryLastScanned": { + "description": "Last scan time display", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "libraryLastScannedNever": "Ніколи", + "@libraryLastScannedNever": { + "description": "Shown when library has never been scanned" + }, + "libraryScanning": "Сканування...", + "@libraryScanning": { + "description": "Status during scan" + }, + "libraryScanFinalizing": "Завершення роботи з бібліотекою...", + "@libraryScanFinalizing": { + "description": "Status shown after file scanning finishes but library persistence is still running" + }, + "libraryScanProgress": "{progress}% від {total} файлів", + "@libraryScanProgress": { + "description": "Scan progress display", + "placeholders": { + "progress": { + "type": "String" + }, + "total": { + "type": "int" + } + } + }, + "libraryInLibrary": "У бібліотеці", + "@libraryInLibrary": { + "description": "Badge shown on tracks that exist in local library" + }, + "libraryRemovedMissingFiles": "Видалено {count} відсутніх файлів з бібліотеки", + "@libraryRemovedMissingFiles": { + "description": "Snackbar after cleanup", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryCleared": "Бібліотека очищена", + "@libraryCleared": { + "description": "Snackbar after clearing library" + }, + "libraryStorageAccessRequired": "Потрібен доступ до сховища", + "@libraryStorageAccessRequired": { + "description": "Dialog title for storage permission" + }, + "libraryStorageAccessMessage": "SpotiFLAC потрібен доступ до сховища для сканування вашої музичної бібліотеки. Надайте дозвіл у налаштуваннях.", + "@libraryStorageAccessMessage": { + "description": "Dialog message for storage permission" + }, + "libraryFolderNotExist": "Вибрана папка не існує", + "@libraryFolderNotExist": { + "description": "Error when folder doesn't exist" + }, + "librarySourceDownloaded": "Завантажені", + "@librarySourceDownloaded": { + "description": "Badge for tracks downloaded via SpotiFLAC" + }, + "librarySourceLocal": "Локальні", + "@librarySourceLocal": { + "description": "Badge for tracks from local library scan" + }, + "libraryFilterAll": "Усі", + "@libraryFilterAll": { + "description": "Filter chip - show all library items" + }, + "libraryFilterDownloaded": "Завантажені", + "@libraryFilterDownloaded": { + "description": "Filter chip - show only downloaded items" + }, + "libraryFilterLocal": "Локальні", + "@libraryFilterLocal": { + "description": "Filter chip - show only local library items" + }, + "libraryFilterTitle": "Фільтри", + "@libraryFilterTitle": { + "description": "Filter bottom sheet title" + }, + "libraryFilterReset": "Скинути", + "@libraryFilterReset": { + "description": "Reset all filters button" + }, + "libraryFilterApply": "Застосувати", + "@libraryFilterApply": { + "description": "Apply filters button" + }, + "libraryFilterSource": "Джерело", + "@libraryFilterSource": { + "description": "Filter section - source type" + }, + "libraryFilterQuality": "Якість", + "@libraryFilterQuality": { + "description": "Filter section - audio quality" + }, + "libraryFilterQualityHiRes": "Висока роздільна здатність (24 біти)", + "@libraryFilterQualityHiRes": { + "description": "Filter option - high resolution audio" + }, + "libraryFilterQualityCD": "CD (16-бітний)", + "@libraryFilterQualityCD": { + "description": "Filter option - CD quality audio" + }, + "libraryFilterQualityLossy": "Із втратами (lossy)", + "@libraryFilterQualityLossy": { + "description": "Filter option - lossy compressed audio" + }, + "libraryFilterFormat": "Формат", + "@libraryFilterFormat": { + "description": "Filter section - file format" + }, + "libraryFilterMetadata": "Метадані", + "@libraryFilterMetadata": { + "description": "Filter section - metadata completeness" + }, + "libraryFilterMetadataComplete": "Повні метадані", + "@libraryFilterMetadataComplete": { + "description": "Filter option - items with complete metadata" + }, + "libraryFilterMetadataMissingAny": "будь-які метадані", + "@libraryFilterMetadataMissingAny": { + "description": "Filter option - items missing any tracked metadata field" + }, + "libraryFilterMetadataMissingYear": "Відсутній рік", + "@libraryFilterMetadataMissingYear": { + "description": "Filter option - items missing release year/date" + }, + "libraryFilterMetadataMissingGenre": "Відсутній жанр", + "@libraryFilterMetadataMissingGenre": { + "description": "Filter option - items missing genre" + }, + "libraryFilterMetadataMissingAlbumArtist": "Відсутній виконавець альбому", + "@libraryFilterMetadataMissingAlbumArtist": { + "description": "Filter option - items missing album artist" + }, + "libraryFilterSort": "Сортувати", + "@libraryFilterSort": { + "description": "Filter section - sort order" + }, + "libraryFilterSortLatest": "Найновіші", + "@libraryFilterSortLatest": { + "description": "Sort option - newest first" + }, + "libraryFilterSortOldest": "Найстаріші", + "@libraryFilterSortOldest": { + "description": "Sort option - oldest first" + }, + "libraryFilterSortAlbumAsc": "Альбом (А-Я)", + "@libraryFilterSortAlbumAsc": { + "description": "Sort option - album ascending" + }, + "libraryFilterSortAlbumDesc": "Альбом (Я-А)", + "@libraryFilterSortAlbumDesc": { + "description": "Sort option - album descending" + }, + "libraryFilterSortGenreAsc": "Жанр (А-Я)", + "@libraryFilterSortGenreAsc": { + "description": "Sort option - genre ascending" + }, + "libraryFilterSortGenreDesc": "Жанр (Я-А)", + "@libraryFilterSortGenreDesc": { + "description": "Sort option - genre descending" + }, + "timeJustNow": "Щойно", + "@timeJustNow": { + "description": "Relative time - less than a minute ago" + }, + "timeMinutesAgo": "{count, plural, =1{1 minute ago} other{{count} хвилин тому}}", + "@timeMinutesAgo": { + "description": "Relative time - minutes ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "timeHoursAgo": "{count, plural, =1{1 hour ago} other{{count} годин тому}}", + "@timeHoursAgo": { + "description": "Relative time - hours ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "tutorialWelcomeTitle": "Welcome to SpotiFLAC Mobile!", + "@tutorialWelcomeTitle": { + "description": "Tutorial welcome page title" + }, + "tutorialWelcomeDesc": "Learn how to find music with extensions, choose the quality you want, and manage downloads in SpotiFLAC Mobile.", + "@tutorialWelcomeDesc": { + "description": "Tutorial welcome page description" + }, + "tutorialWelcomeTip1": "Search with an installed extension or paste a supported music link", + "@tutorialWelcomeTip1": { + "description": "Tutorial welcome tip 1" + }, + "tutorialWelcomeTip2": "Choose from the audio qualities offered by your download provider", + "@tutorialWelcomeTip2": { + "description": "Tutorial welcome tip 2" + }, + "tutorialWelcomeTip3": "Embed metadata, cover art, lyrics, and release information automatically", + "@tutorialWelcomeTip3": { + "description": "Tutorial welcome tip 3" + }, + "tutorialSearchTitle": "Пошук музики", + "@tutorialSearchTitle": { + "description": "Tutorial search page title" + }, + "tutorialSearchDesc": "Search with your selected extension or paste a supported music link.", + "@tutorialSearchDesc": { + "description": "Tutorial search page description" + }, + "tutorialDownloadTitle": "Завантаження музики", + "@tutorialDownloadTitle": { + "description": "Tutorial download page title" + }, + "tutorialDownloadDesc": "Pick an available quality, start the download, and follow its progress in the queue.", + "@tutorialDownloadDesc": { + "description": "Tutorial download page description" + }, + "tutorialLibraryTitle": "Ваша бібліотека", + "@tutorialLibraryTitle": { + "description": "Tutorial library page title" + }, + "tutorialLibraryDesc": "Downloaded and locally scanned music is organized in your Library.", + "@tutorialLibraryDesc": { + "description": "Tutorial library page description" + }, + "tutorialLibraryTip1": "Manage active, pending, and completed downloads from the Library queue", + "@tutorialLibraryTip1": { + "description": "Tutorial library tip 1" + }, + "tutorialLibraryTip2": "Tap a track to play it with the built-in player", + "@tutorialLibraryTip2": { + "description": "Tutorial library tip 2" + }, + "tutorialLibraryTip3": "Browse tracks, albums, and playlists in list or grid views", + "@tutorialLibraryTip3": { + "description": "Tutorial library tip 3" + }, + "tutorialExtensionsTitle": "Розширення", + "@tutorialExtensionsTitle": { + "description": "Tutorial extensions page title" + }, + "tutorialExtensionsDesc": "Extensions add search, download, metadata, lyrics, and other integrations.", + "@tutorialExtensionsDesc": { + "description": "Tutorial extensions page description" + }, + "tutorialExtensionsTip1": "Перегляньте вкладку «Репозиторій», щоб знайти корисні розширення", + "@tutorialExtensionsTip1": { + "description": "Tutorial extensions tip 1" + }, + "tutorialExtensionsTip2": "Choose providers for search, downloads, metadata, and fallbacks", + "@tutorialExtensionsTip2": { + "description": "Tutorial extensions tip 2" + }, + "tutorialExtensionsTip3": "Connect accounts when required and keep extensions up to date", + "@tutorialExtensionsTip3": { + "description": "Tutorial extensions tip 3" + }, + "tutorialSettingsTitle": "Налаштуйте свій досвід", + "@tutorialSettingsTitle": { + "description": "Tutorial settings page title" + }, + "tutorialSettingsDesc": "Fine-tune downloads, playback, Library behavior, appearance, and storage.", + "@tutorialSettingsDesc": { + "description": "Tutorial settings page description" + }, + "tutorialSettingsTip1": "Змініть місце завантаження та організації папок", + "@tutorialSettingsTip1": { + "description": "Tutorial settings tip 1" + }, + "tutorialSettingsTip2": "Set quality, concurrency, filenames, and conversion preferences", + "@tutorialSettingsTip2": { + "description": "Tutorial settings tip 2" + }, + "tutorialSettingsTip3": "Налаштуйте тему та зовнішній вигляд програми", + "@tutorialSettingsTip3": { + "description": "Tutorial settings tip 3" + }, + "tutorialReadyMessage": "You're ready. Select your extensions, then search or paste a supported link.", + "@tutorialReadyMessage": { + "description": "Tutorial completion message" + }, + "libraryForceFullScan": "Примусове повне сканування", + "@libraryForceFullScan": { + "description": "Button to force a complete rescan of library" + }, + "libraryForceFullScanSubtitle": "Пересканувати всі файли, ігноруючи кеш", + "@libraryForceFullScanSubtitle": { + "description": "Subtitle for force full scan button" + }, + "cleanupOrphanedDownloads": "Очищення застарілих завантажень", + "@cleanupOrphanedDownloads": { + "description": "Button to remove history entries for deleted files" + }, + "cleanupOrphanedDownloadsSubtitle": "Видалити записи історії для файлів, яких більше не існує", + "@cleanupOrphanedDownloadsSubtitle": { + "description": "Subtitle for orphaned cleanup button" + }, + "cleanupOrphanedDownloadsResult": "Видалено {count} утрачених записів з історії", + "@cleanupOrphanedDownloadsResult": { + "description": "Snackbar after orphan cleanup", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cleanupOrphanedDownloadsNone": "Не знайдено утрачених записів", + "@cleanupOrphanedDownloadsNone": { + "description": "Snackbar when no orphans found" + }, + "cacheTitle": "Зберігання та кеш", + "@cacheTitle": { + "description": "Cache management page title" + }, + "cacheSummaryTitle": "Огляд кешу", + "@cacheSummaryTitle": { + "description": "Heading for cache summary card" + }, + "cacheSummarySubtitle": "Очищення кешу не призведе до видалення завантажених музичних файлів.", + "@cacheSummarySubtitle": { + "description": "Helper text for cache summary card" + }, + "cacheEstimatedTotal": "Орієнтовне використання кешу: {size}", + "@cacheEstimatedTotal": { + "description": "Total cache size shown in summary", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "cacheSectionStorage": "Кешовані дані", + "@cacheSectionStorage": { + "description": "Section header for cache entries" + }, + "cacheSectionMaintenance": "Технічне обслуговування", + "@cacheSectionMaintenance": { + "description": "Section header for cleanup actions" + }, + "cacheAppDirectory": "Каталог кешу додатка", + "@cacheAppDirectory": { + "description": "Cache item title for app cache directory" + }, + "cacheAppDirectoryDesc": "HTTP-відповіді, дані WebView та інші тимчасові дані додатків.", + "@cacheAppDirectoryDesc": { + "description": "Description of what app cache directory contains" + }, + "cacheTempDirectory": "Тимчасовий каталог", + "@cacheTempDirectory": { + "description": "Cache item title for temporary files directory" + }, + "cacheTempDirectoryDesc": "Тимчасові файли із завантажень та конвертації аудіо.", + "@cacheTempDirectoryDesc": { + "description": "Description of what temporary directory contains" + }, + "cacheCoverImage": "Кеш зображень обкладинок", + "@cacheCoverImage": { + "description": "Cache item title for persistent cover images" + }, + "cacheCoverImageDesc": "Завантажено обкладинку альбому та треку. Завантаження відбудеться повторно після перегляду.", + "@cacheCoverImageDesc": { + "description": "Description of what cover image cache contains" + }, + "cacheLibraryCover": "Кеш бібліотеки обкладинок", + "@cacheLibraryCover": { + "description": "Cache item title for local library cover art images" + }, + "cacheLibraryCoverDesc": "Обкладинку витягнуто з локальних музичних файлів. Буде повторно витягнуто під час наступного сканування.", + "@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" @@ -5928,6 +3138,350 @@ "@cacheAudioAnalysisDesc": { "description": "Description of what audio analysis cache contains" }, + "cacheExploreFeed": "Огляд кешу стрічки", + "@cacheExploreFeed": { + "description": "Cache item title for explore home feed cache" + }, + "cacheExploreFeedDesc": "Переглянути вміст вкладки (нові випуски, тренди). Оновиться під час наступного відвідування.", + "@cacheExploreFeedDesc": { + "description": "Description of what explore feed cache contains" + }, + "cacheTrackLookup": "Відстеження кешу пошуку", + "@cacheTrackLookup": { + "description": "Cache item title for track ID lookup cache" + }, + "cacheTrackLookupDesc": "Пошук ідентифікаторів треків Spotify/Deezer. Очищення може уповільнити наступні кілька пошуків.", + "@cacheTrackLookupDesc": { + "description": "Description of what track lookup cache contains" + }, + "cacheCleanupUnusedDesc": "Видалити історію втрачених завантажень та записи бібліотеки для відсутніх файлів.", + "@cacheCleanupUnusedDesc": { + "description": "Description of what cleanup unused data does" + }, + "cacheNoData": "Кешованих даних немає", + "@cacheNoData": { + "description": "Label when cache category has no data" + }, + "cacheSizeWithFiles": "{size} у {count} файлах", + "@cacheSizeWithFiles": { + "description": "Cache size and file count", + "placeholders": { + "size": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "cacheSizeOnly": "{size}", + "@cacheSizeOnly": { + "description": "Cache size only", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "cacheEntries": "{count} записів", + "@cacheEntries": { + "description": "Track cache entry count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cacheClearSuccess": "Очищено: {target}", + "@cacheClearSuccess": { + "description": "Snackbar after clearing selected cache", + "placeholders": { + "target": { + "type": "String" + } + } + }, + "cacheClearConfirmTitle": "Очистити кеш?", + "@cacheClearConfirmTitle": { + "description": "Dialog title before clearing one cache category" + }, + "cacheClearConfirmMessage": "Це очистить кешовані дані для {target}. Завантажені музичні файли не будуть видалені.", + "@cacheClearConfirmMessage": { + "description": "Dialog message before clearing selected cache", + "placeholders": { + "target": { + "type": "String" + } + } + }, + "cacheClearAllConfirmTitle": "Очистити увесь кеш?", + "@cacheClearAllConfirmTitle": { + "description": "Dialog title before clearing all caches" + }, + "cacheClearAllConfirmMessage": "Це очистить усі категорії кешу на цій сторінці. Завантажені музичні файли не будуть видалені.", + "@cacheClearAllConfirmMessage": { + "description": "Dialog message before clearing all caches" + }, + "cacheClearAll": "Очистити весь кеш", + "@cacheClearAll": { + "description": "Button label to clear all caches" + }, + "cacheCleanupUnused": "Очищення невикористаних даних", + "@cacheCleanupUnused": { + "description": "Action title for cleaning unused entries" + }, + "cacheCleanupUnusedSubtitle": "Видалити історію утрачених завантажень файлів та відсутні записи бібліотеки", + "@cacheCleanupUnusedSubtitle": { + "description": "Subtitle for cleanup unused data action" + }, + "cacheCleanupResult": "Очищення завершено: {downloadCount} утрачених завантажень, {libraryCount} відсутніх записів бібліотеки", + "@cacheCleanupResult": { + "description": "Snackbar after unused data cleanup", + "placeholders": { + "downloadCount": { + "type": "int" + }, + "libraryCount": { + "type": "int" + } + } + }, + "cacheRefreshStats": "Оновити статистику", + "@cacheRefreshStats": { + "description": "Button label to refresh cache statistics" + }, + "trackSaveCoverArt": "Зберегти обкладинку", + "@trackSaveCoverArt": { + "description": "Menu action - save album cover art as file" + }, + "trackSaveLyrics": "Зберегти текст пісні (.lrc)", + "@trackSaveLyrics": { + "description": "Menu action - save lyrics as .lrc file" + }, + "trackSaveLyricsProgress": "Збереження тексту пісні...", + "@trackSaveLyricsProgress": { + "description": "Snackbar while saving lyrics to file" + }, + "trackReEnrich": "Перезбагачувати", + "@trackReEnrich": { + "description": "Menu action - re-embed metadata into audio file" + }, + "trackReEnrichOnlineSubtitle": "Пошук метаданих в Інтернеті та вбудовування у файл", + "@trackReEnrichOnlineSubtitle": { + "description": "Subtitle for re-enrich metadata action for local items" + }, + "trackReEnrichBatchSubtitle": "Choose an online or manual update, then review every change before writing", + "@trackReEnrichBatchSubtitle": { + "description": "Subtitle for batch metadata update choices" + }, + "trackReEnrichFieldCover": "Обкладинка", + "@trackReEnrichFieldCover": { + "description": "Checkbox label for cover art field in re-enrich" + }, + "trackReEnrichFieldLyrics": "Тексти пісень", + "@trackReEnrichFieldLyrics": { + "description": "Checkbox label for lyrics field in re-enrich" + }, + "trackReEnrichFieldBasicTags": "Альбом, Виконавець альбому", + "@trackReEnrichFieldBasicTags": { + "description": "Checkbox label for basic tags in re-enrich (title/artist are never overwritten)" + }, + "trackReEnrichFieldTrackInfo": "Номер треку та диска", + "@trackReEnrichFieldTrackInfo": { + "description": "Checkbox label for track info in re-enrich" + }, + "trackReEnrichFieldReleaseInfo": "Дата та ISRC", + "@trackReEnrichFieldReleaseInfo": { + "description": "Checkbox label for release info in re-enrich" + }, + "trackReEnrichFieldExtra": "Жанр, Лейбл, Авторське право", + "@trackReEnrichFieldExtra": { + "description": "Checkbox label for extra metadata in re-enrich" + }, + "trackReEnrichSelectAll": "Вибрати все", + "@trackReEnrichSelectAll": { + "description": "Select all fields checkbox in re-enrich" + }, + "trackReEnrichModeIsrc": "ISRC only", + "@trackReEnrichModeIsrc": { + "description": "Batch metadata mode that only writes ISRC" + }, + "trackReEnrichModeIsrcSubtitle": "Find and add the recording identifier without changing other tags", + "@trackReEnrichModeIsrcSubtitle": { + "description": "Explanation for the ISRC-only batch metadata mode" + }, + "trackReEnrichModeMissing": "Fill missing tags", + "@trackReEnrichModeMissing": { + "description": "Batch metadata mode that fills only empty tags" + }, + "trackReEnrichModeMissingSubtitle": "Keep existing values and fill only fields that are empty", + "@trackReEnrichModeMissingSubtitle": { + "description": "Explanation for the fill-missing batch metadata mode" + }, + "trackReEnrichModeReplace": "Update selected tags", + "@trackReEnrichModeReplace": { + "description": "Batch metadata mode that replaces selected tag groups" + }, + "trackReEnrichModeReplaceSubtitle": "Choose which existing values may be replaced by online metadata", + "@trackReEnrichModeReplaceSubtitle": { + "description": "Explanation for the selected-tag batch metadata mode" + }, + "trackReEnrichModeManual": "Set common values", + "@trackReEnrichModeManual": { + "description": "Batch metadata mode that applies shared values to every selected track" + }, + "trackReEnrichModeManualSubtitle": "Apply the same values to every selected track", + "@trackReEnrichModeManualSubtitle": { + "description": "Explanation for the manual shared-value batch metadata mode" + }, + "trackReEnrichManualFieldsTitle": "Values to apply", + "@trackReEnrichManualFieldsTitle": { + "description": "Heading above manual batch metadata inputs" + }, + "trackReEnrichManualHint": "Leave a field empty to keep its current value. Track titles, numbers, and ISRCs stay unchanged.", + "@trackReEnrichManualHint": { + "description": "Safety explanation for manual batch metadata inputs" + }, + "trackReEnrichFieldsTitle": "Tags to update", + "@trackReEnrichFieldsTitle": { + "description": "Heading above batch re-enrich field checkboxes" + }, + "trackReEnrichReview": "Review changes", + "@trackReEnrichReview": { + "description": "Button that searches metadata and opens the batch change review" + }, + "trackReEnrichReviewTitle": "Review metadata changes", + "@trackReEnrichReviewTitle": { + "description": "Title of the batch metadata review sheet" + }, + "trackReEnrichReviewSubtitle": "{changeCount} proposed changes across {trackCount} tracks", + "@trackReEnrichReviewSubtitle": { + "description": "Summary shown above proposed batch metadata changes", + "placeholders": { + "changeCount": { + "type": "int" + }, + "trackCount": { + "type": "int" + } + } + }, + "trackReEnrichNoChanges": "No metadata changes were found for the selected tracks.", + "@trackReEnrichNoChanges": { + "description": "Message when batch metadata preview has no proposed changes" + }, + "trackReEnrichApplyChanges": "Apply changes", + "@trackReEnrichApplyChanges": { + "description": "Confirmation button in the batch metadata review sheet" + }, + "trackReEnrichRefreshOnline": "Refresh from online", + "@trackReEnrichRefreshOnline": { + "description": "Proposed value when lyrics will be refreshed during re-enrich" + }, + "trackEditMetadata": "Редагувати метадані", + "@trackEditMetadata": { + "description": "Menu action - edit embedded metadata" + }, + "trackCoverSaved": "Обкладинку збережено до {fileName}", + "@trackCoverSaved": { + "description": "Snackbar after cover art saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "trackCoverNoSource": "Джерело обкладинки недоступне", + "@trackCoverNoSource": { + "description": "Snackbar when no cover art URL or embedded cover" + }, + "trackLyricsSaved": "Текст пісні збережено в {fileName}", + "@trackLyricsSaved": { + "description": "Snackbar after lyrics saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "trackReEnrichProgress": "Повторне збагачення метаданих...", + "@trackReEnrichProgress": { + "description": "Snackbar while re-enriching metadata" + }, + "trackReEnrichSearching": "Пошук метаданих в Інтернеті...", + "@trackReEnrichSearching": { + "description": "Snackbar while searching metadata from internet for local items" + }, + "trackReEnrichPreparing": "Preparing metadata changes...", + "@trackReEnrichPreparing": { + "description": "Progress message while preparing manual batch metadata changes" + }, + "trackReEnrichSuccess": "Метадані повторно збагачені успішно", + "trackReEnrichMetadataSaved": "Metadata saved", + "trackReEnrichLyricsUpdated": "Lyrics updated", + "trackReEnrichLyricsPreserved": "No new lyrics found; existing lyrics kept", + "trackReEnrichLyricsDisabled": "Lyrics not updated: lyric downloading is disabled in Settings", + "@trackReEnrichSuccess": { + "description": "Snackbar after successful re-enrichment" + }, + "trackReEnrichFfmpegFailed": "Не вдалося вбудувати метадані FFmpeg", + "@trackReEnrichFfmpegFailed": { + "description": "Snackbar when FFmpeg embed fails for MP3/Opus" + }, + "queueFlacAction": "Черга FLAC", + "@queueFlacAction": { + "description": "Action/button label for queueing FLAC redownloads for local tracks" + }, + "queueFlacConfirmMessage": "Пошук онлайн-збігів для вибраних треків та додавання завантажень FLAC до черги.\n\nІснуючі файли не будуть змінені або видалені.\n\nАвтоматично додаються до черги лише збіги з високою достовірністю.\n\n{count} вибрано", + "@queueFlacConfirmMessage": { + "description": "Confirmation dialog body before queueing FLAC redownloads for local tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueFlacNoReliableMatches": "Не знайдено надійних онлайн-відповідей для вибраного запиту", + "@queueFlacNoReliableMatches": { + "description": "Snackbar when no safe FLAC redownload matches were found" + }, + "queueFlacQueuedWithSkipped": "Додано {addedCount} треків до черги, пропущено {skippedCount}", + "@queueFlacQueuedWithSkipped": { + "description": "Snackbar when some selected local tracks were queued for FLAC redownload and some were skipped", + "placeholders": { + "addedCount": { + "type": "int" + }, + "skippedCount": { + "type": "int" + } + } + }, + "trackSaveFailed": "Не вдалося: {error}", + "@trackSaveFailed": { + "description": "Snackbar when save operation fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "trackConvertFormat": "Конвертувати формат", + "@trackConvertFormat": { + "description": "Menu item - convert audio format" + }, + "trackConvertTitle": "Конвертувати аудіо", + "@trackConvertTitle": { + "description": "Title of convert bottom sheet" + }, + "trackConvertTargetFormat": "Цільовий формат", + "@trackConvertTargetFormat": { + "description": "Label for format selection" + }, + "trackConvertBitrate": "Бітрейт", + "@trackConvertBitrate": { + "description": "Label for bitrate selection" + }, "trackConvertKeepOriginal": "Keep original file", "@trackConvertKeepOriginal": { "description": "Toggle to preserve the source file during conversion" @@ -5936,6 +3490,37 @@ "@trackConvertKeepOriginalDescription": { "description": "Description for preserving the source file during conversion" }, + "trackConvertConfirmTitle": "Підтвердити конверсію", + "@trackConvertConfirmTitle": { + "description": "Confirmation dialog title" + }, + "trackConvertConfirmMessage": "Конвертувати з {sourceFormat} в {targetFormat} із бітрейтом {bitrate}?\n\nОригінальний файл буде видалено після конвертації.", + "@trackConvertConfirmMessage": { + "description": "Confirmation dialog message", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "trackConvertConfirmMessageLossless": "Конвертувати з {sourceFormat} у {targetFormat}? (Lossless — без втрати якості)\n\nОригінальний файл буде видалено після конвертації.", + "@trackConvertConfirmMessageLossless": { + "description": "Confirmation dialog message for lossless-to-lossless conversion", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + } + } + }, "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", @@ -5948,6 +3533,382 @@ } } }, + "trackConvertLosslessHint": "Lossless конвертація — без втрати якості", + "@trackConvertLosslessHint": { + "description": "Hint shown when converting between lossless formats" + }, + "trackConvertConverting": "Конвертування аудіо...", + "@trackConvertConverting": { + "description": "Snackbar while converting" + }, + "trackConvertSuccess": "Конвертовано в {format} успішно", + "@trackConvertSuccess": { + "description": "Snackbar after successful conversion", + "placeholders": { + "format": { + "type": "String" + } + } + }, + "trackConvertFailed": "Конвертація не вдалася", + "@trackConvertFailed": { + "description": "Snackbar when conversion fails" + }, + "cueSplitTitle": "Розділений аркуш CUE", + "@cueSplitTitle": { + "description": "Title for CUE split bottom sheet" + }, + "cueSplitAlbum": "Альбом: {album}", + "@cueSplitAlbum": { + "description": "Album name in CUE split sheet", + "placeholders": { + "album": { + "type": "String" + } + } + }, + "cueSplitArtist": "Артист: {artist}", + "@cueSplitArtist": { + "description": "Artist name in CUE split sheet", + "placeholders": { + "artist": { + "type": "String" + } + } + }, + "cueSplitTrackCount": "{count} треків", + "@cueSplitTrackCount": { + "description": "Number of tracks in CUE sheet", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cueSplitConfirmTitle": "Розділений альбом CUE", + "@cueSplitConfirmTitle": { + "description": "CUE split confirmation dialog title" + }, + "cueSplitConfirmMessage": "Розділити \"{album}\" на {count} окремих FLAC-файлів?\n\nФайли будуть збережені в одному каталозі.", + "@cueSplitConfirmMessage": { + "description": "CUE split confirmation dialog message", + "placeholders": { + "album": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "cueSplitSplitting": "Розділення аркуша CUE... ({current}/{total})", + "@cueSplitSplitting": { + "description": "Snackbar while splitting CUE", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "cueSplitSuccess": "Розділено на {count} треків успішно", + "@cueSplitSuccess": { + "description": "Snackbar after successful CUE split", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cueSplitFailed": "Розділення CUE не вдалося", + "@cueSplitFailed": { + "description": "Snackbar when CUE split fails" + }, + "cueSplitNoAudioFile": "Аудіофайл для цього аркуша CUE не знайдено", + "@cueSplitNoAudioFile": { + "description": "Error when CUE audio file is missing" + }, + "cueSplitButton": "Розділити на треки", + "@cueSplitButton": { + "description": "Button text to start CUE splitting" + }, + "actionCreate": "Створити", + "@actionCreate": { + "description": "Generic action button - create" + }, + "collectionFoldersTitle": "Мої папки", + "@collectionFoldersTitle": { + "description": "Library section title for custom folders" + }, + "collectionWishlist": "Список бажань", + "@collectionWishlist": { + "description": "Custom folder for saved tracks to download later" + }, + "collectionLoved": "Вподобані", + "@collectionLoved": { + "description": "Custom folder for favorite tracks" + }, + "collectionFavoriteArtists": "Favorite Artists", + "@collectionFavoriteArtists": { + "description": "Custom folder for favorite artists" + }, + "collectionPlaylist": "Список відтворення", + "@collectionPlaylist": { + "description": "Single playlist label" + }, + "collectionAddToPlaylist": "Додати до списку відтворення", + "@collectionAddToPlaylist": { + "description": "Action to add a track to user playlist" + }, + "collectionCreatePlaylist": "Створити плейлист", + "@collectionCreatePlaylist": { + "description": "Action to create a new playlist" + }, + "collectionNoPlaylistsYet": "Поки що немає списків відтворення", + "@collectionNoPlaylistsYet": { + "description": "Empty state title when user has no playlists" + }, + "collectionPlaylistTracks": "{count, plural, =1{1 трек} other{{count} треків}}", + "@collectionPlaylistTracks": { + "description": "Track count label for custom playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionArtistCount": "{count, plural, =1{1 artist} other{{count} artists}}", + "@collectionArtistCount": { + "description": "Artist count label for favorite artists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionAddedToPlaylist": "Додано до \"{playlistName}\"", + "@collectionAddedToPlaylist": { + "description": "Snackbar after adding track to playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "collectionAlreadyInPlaylist": "Вже у списку відтворення \"{playlistName}\"", + "@collectionAlreadyInPlaylist": { + "description": "Snackbar when track already exists in playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "collectionPlaylistNameHint": "Назва списку відтворення", + "@collectionPlaylistNameHint": { + "description": "Hint text for playlist name input" + }, + "collectionPlaylistNameRequired": "Потрібно вказати назву списку відтворення", + "@collectionPlaylistNameRequired": { + "description": "Validation error for empty playlist name" + }, + "collectionRenamePlaylist": "Перейменувати список відтворення", + "@collectionRenamePlaylist": { + "description": "Action to rename playlist" + }, + "collectionDeletePlaylist": "Видалити список відтворення", + "@collectionDeletePlaylist": { + "description": "Action to delete playlist" + }, + "collectionPlaylistRenamed": "Список відтворення перейменовано", + "@collectionPlaylistRenamed": { + "description": "Snackbar after renaming playlist" + }, + "collectionWishlistEmptyTitle": "Список бажань порожній", + "@collectionWishlistEmptyTitle": { + "description": "Wishlist empty state title" + }, + "collectionWishlistEmptySubtitle": "Натисніть + на треках, щоб зберегти те, що ви хочете завантажити пізніше", + "@collectionWishlistEmptySubtitle": { + "description": "Wishlist empty state subtitle" + }, + "collectionLovedEmptyTitle": "Папка \"Улюблені\" порожня", + "@collectionLovedEmptyTitle": { + "description": "Loved empty state title" + }, + "collectionLovedEmptySubtitle": "Натисніть «Подобається» на треках, щоб зберегти у свої улюблені", + "@collectionLovedEmptySubtitle": { + "description": "Loved empty state subtitle" + }, + "collectionFavoriteArtistsEmptyTitle": "No favorite artists yet", + "@collectionFavoriteArtistsEmptyTitle": { + "description": "Favorite artists empty state title" + }, + "collectionFavoriteArtistsEmptySubtitle": "Tap the heart on an artist page to keep them here", + "@collectionFavoriteArtistsEmptySubtitle": { + "description": "Favorite artists empty state subtitle" + }, + "collectionPlaylistEmptyTitle": "Список відтворення порожній", + "@collectionPlaylistEmptyTitle": { + "description": "Playlist empty state title" + }, + "collectionPlaylistEmptySubtitle": "Тривале натискання + на будь-якій доріжці додасть її сюди", + "@collectionPlaylistEmptySubtitle": { + "description": "Playlist empty state subtitle" + }, + "collectionRemoveFromPlaylist": "Видалити зі списку відтворення", + "@collectionRemoveFromPlaylist": { + "description": "Tooltip for removing track from playlist" + }, + "collectionRemoveFromFolder": "Видалити з папки", + "@collectionRemoveFromFolder": { + "description": "Tooltip for removing track from wishlist/loved folder" + }, + "collectionAddedToLoved": "\"{trackName}\" додано до списку улюблених", + "@collectionAddedToLoved": { + "description": "Snackbar after adding track to loved folder", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "collectionRemovedFromLoved": "\"{trackName}\" видалено з уподобань", + "@collectionRemovedFromLoved": { + "description": "Snackbar after removing track from loved folder", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "collectionAddedToWishlist": "\"{trackName}\" додано до списку бажань", + "@collectionAddedToWishlist": { + "description": "Snackbar after adding track to wishlist", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "collectionRemovedFromWishlist": "\"{trackName}\" видалено зі списку бажань", + "@collectionRemovedFromWishlist": { + "description": "Snackbar after removing track from wishlist", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "collectionAddedToFavoriteArtists": "\"{artistName}\" added to Favorite Artists", + "@collectionAddedToFavoriteArtists": { + "description": "Snackbar after adding artist to favorite artists", + "placeholders": { + "artistName": { + "type": "String" + } + } + }, + "collectionRemovedFromFavoriteArtists": "\"{artistName}\" removed from Favorite Artists", + "@collectionRemovedFromFavoriteArtists": { + "description": "Snackbar after removing artist from favorite artists", + "placeholders": { + "artistName": { + "type": "String" + } + } + }, + "trackOptionAddToLoved": "Додати до улюблених", + "@trackOptionAddToLoved": { + "description": "Bottom sheet action label - add track to loved folder" + }, + "trackOptionRemoveFromLoved": "Видалити з улюблених", + "@trackOptionRemoveFromLoved": { + "description": "Bottom sheet action label - remove track from loved folder" + }, + "trackOptionAddToWishlist": "Додати до списку бажань", + "@trackOptionAddToWishlist": { + "description": "Bottom sheet action label - add track to wishlist" + }, + "trackOptionRemoveFromWishlist": "Видалити зі списку бажань", + "@trackOptionRemoveFromWishlist": { + "description": "Bottom sheet action label - remove track from wishlist" + }, + "artistOptionAddToFavorites": "Add to Favorite Artists", + "@artistOptionAddToFavorites": { + "description": "Action label - add artist to favorite artists" + }, + "artistOptionRemoveFromFavorites": "Remove from Favorite Artists", + "@artistOptionRemoveFromFavorites": { + "description": "Action label - remove artist from favorite artists" + }, + "collectionPlaylistChangeCover": "Змінити зображення обкладинки", + "@collectionPlaylistChangeCover": { + "description": "Bottom sheet action to pick a custom cover image for a playlist" + }, + "collectionPlaylistRemoveCover": "Видалити зображення обкладинки", + "@collectionPlaylistRemoveCover": { + "description": "Bottom sheet action to remove custom cover image from a playlist" + }, + "selectionShareCount": "Поділитися {count} {count, plural, =1{трек} other{треків}}", + "@selectionShareCount": { + "description": "Share button text with count in selection mode", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "selectionShareNoFiles": "Файлів для спільного доступу не знайдено", + "@selectionShareNoFiles": { + "description": "Snackbar when no selected files exist on disk" + }, + "selectionConvertCount": "Конвертувати {count} {count, plural, =1{трек} other{треків}}", + "@selectionConvertCount": { + "description": "Convert button text with count in selection mode", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "selectionConvertNoConvertible": "Трансформованих треків не вибрано", + "@selectionConvertNoConvertible": { + "description": "Snackbar when no selected tracks support conversion" + }, + "selectionBatchConvertConfirmTitle": "Пакетне конвертування", + "@selectionBatchConvertConfirmTitle": { + "description": "Confirmation dialog title for batch conversion" + }, + "selectionBatchConvertConfirmMessage": "Конвертувати {count} {count, plural, =1{трек} other{треків}} у {format} з бітрейтом {bitrate}?\n\nОригінальні файли будуть видалені після конвертації.", + "@selectionBatchConvertConfirmMessage": { + "description": "Confirmation dialog message for batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "selectionBatchConvertConfirmMessageLossless": "Конвертувати {count} {count, plural, =1{трек} other{треків}} у {format}? (Lossless — без втрати якості)\n\nОригінальні файли будуть видалені після конвертації.", + "@selectionBatchConvertConfirmMessageLossless": { + "description": "Confirmation dialog message for lossless batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + } + } + }, "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", @@ -5960,6 +3921,399 @@ } } }, + "selectionBatchConvertSuccess": "Конвертовано {success} з {total} треків у {format}", + "@selectionBatchConvertSuccess": { + "description": "Snackbar after batch conversion completes", + "placeholders": { + "success": { + "type": "int" + }, + "total": { + "type": "int" + }, + "format": { + "type": "String" + } + } + }, + "downloadedAlbumDownloadedCount": "{count} завантажено", + "@downloadedAlbumDownloadedCount": { + "description": "Downloaded tracks count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Folder named after Album Artist tag", + "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { + "description": "Subtitle when album artist is used for folder names" + }, + "downloadUseAlbumArtistForFoldersTrackSubtitle": "Folder named after Track Artist tag", + "@downloadUseAlbumArtistForFoldersTrackSubtitle": { + "description": "Subtitle when track artist is used for folder names" + }, + "lyricsProvidersTitle": "Lyrics Provider Priority", + "@lyricsProvidersTitle": { + "description": "Settings item title for lyrics provider order" + }, + "lyricsProvidersDescription": "Увімкнення, вимкнення та зміна порядку джерел текстів пісень. Постачальники перевірятимуть зверху вниз, доки не буде знайдено текст пісні.", + "@lyricsProvidersDescription": { + "description": "Description on the lyrics provider priority page" + }, + "lyricsProvidersInfoText": "Extension lyrics providers run before built-in lyrics providers. At least one provider must remain enabled.", + "@lyricsProvidersInfoText": { + "description": "Info tip on lyrics provider priority page" + }, + "lyricsProvidersEnabledSection": "Увімкнено ({count})", + "@lyricsProvidersEnabledSection": { + "description": "Section header for enabled providers", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "lyricsProvidersDisabledSection": "Вимкнено ({count})", + "@lyricsProvidersDisabledSection": { + "description": "Section header for disabled providers", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "lyricsProvidersAtLeastOne": "Принаймні один постачальник має залишатися ввімкненим", + "@lyricsProvidersAtLeastOne": { + "description": "Snackbar when user tries to disable the last enabled provider" + }, + "lyricsProvidersSaved": "Пріоритет постачальника текстів пісень збережено", + "@lyricsProvidersSaved": { + "description": "Snackbar after saving lyrics provider priority" + }, + "lyricsProvidersDiscardContent": "У вас є незбережені зміни, які буде втрачено.", + "@lyricsProvidersDiscardContent": { + "description": "Body text of the discard-changes dialog on lyrics provider page" + }, + "lyricsProviderLrclibDesc": "Синхронізована база даних текстів пісень з відкритим кодом", + "@lyricsProviderLrclibDesc": { + "description": "Description for LRCLIB provider" + }, + "lyricsProviderNeteaseDesc": "NetEase Cloud Music (добре підходить для азійських пісень)", + "@lyricsProviderNeteaseDesc": { + "description": "Description for Netease provider" + }, + "lyricsProviderMusixmatchDesc": "Найбільша база даних текстів пісень (багатомовна)", + "@lyricsProviderMusixmatchDesc": { + "description": "Description for Musixmatch provider" + }, + "lyricsProviderAppleMusicDesc": "Синхронізовані тексти пісень слово за словом (через проксі)", + "@lyricsProviderAppleMusicDesc": { + "description": "Description for Apple Music provider" + }, + "lyricsProviderQqMusicDesc": "QQ Music (good for Chinese songs, direct API)", + "@lyricsProviderQqMusicDesc": { + "description": "Description for QQ Music provider" + }, + "lyricsProviderLyricsPlusDesc": "Word-by-word karaoke lyrics (Apple/Musixmatch/Spotify/QQ, via proxy)", + "@lyricsProviderLyricsPlusDesc": { + "description": "Description for LyricsPlus provider" + }, + "lyricsProviderExtensionDesc": "Постачальник розширень", + "@lyricsProviderExtensionDesc": { + "description": "Generic description for extension-based lyrics providers" + }, + "safMigrationTitle": "Потрібне оновлення сховища", + "@safMigrationTitle": { + "description": "Title of SAF migration dialog" + }, + "safMigrationMessage1": "SpotiFLAC тепер використовує Android Storage Access Framework (SAF) для завантажень. Це виправляє помилки «відмовлено в доступі» на Android 10+.", + "@safMigrationMessage1": { + "description": "First paragraph of SAF migration dialog" + }, + "safMigrationMessage2": "Будь ласка, виберіть папку завантажень ще раз, щоб перейти до нової системи зберігання.", + "@safMigrationMessage2": { + "description": "Second paragraph of SAF migration dialog" + }, + "safMigrationSuccess": "Папку завантажень оновлено до режиму SAF", + "@safMigrationSuccess": { + "description": "Snackbar after successfully migrating to SAF" + }, + "settingsDonate": "Support Development", + "@settingsDonate": { + "description": "Settings menu item - donate page" + }, + "settingsDonateSubtitle": "Buy the developer a coffee", + "@settingsDonateSubtitle": { + "description": "Subtitle for donate menu item" + }, + "settingsBackup": "Backup & Restore", + "@settingsBackup": { + "description": "Settings menu item - backup and restore page" + }, + "settingsBackupSubtitle": "Move your library, history and settings to a new device", + "@settingsBackupSubtitle": { + "description": "Subtitle for backup and restore settings item" + }, + "backupTitle": "Backup & Restore", + "@backupTitle": { + "description": "App bar title for the backup and restore page" + }, + "backupExportSectionTitle": "Create backup", + "@backupExportSectionTitle": { + "description": "Section title for the export/backup card" + }, + "backupExportSectionDescription": "Save your settings, download history, liked tracks, wishlist, favorite artists and playlists into a single file you can keep or move to another phone.", + "@backupExportSectionDescription": { + "description": "Description of what a backup contains" + }, + "backupExportButton": "Create backup file", + "@backupExportButton": { + "description": "Button to create and share a backup file" + }, + "backupImportSectionTitle": "Restore backup", + "@backupImportSectionTitle": { + "description": "Section title for the import/restore card" + }, + "backupImportSectionDescription": "Pick a backup file to restore your data. This replaces the current settings, history and library on this device.", + "@backupImportSectionDescription": { + "description": "Description for the restore action" + }, + "backupImportButton": "Choose backup file", + "@backupImportButton": { + "description": "Button to pick a backup file to restore" + }, + "backupCreated": "Backup created", + "@backupCreated": { + "description": "Snackbar after a backup file is created" + }, + "backupCreateFailed": "Failed to create backup", + "@backupCreateFailed": { + "description": "Snackbar when backup creation fails" + }, + "backupRestoreConfirmTitle": "Restore this backup?", + "@backupRestoreConfirmTitle": { + "description": "Confirmation dialog title before restoring a backup" + }, + "backupRestoreConfirmMessage": "This will replace your current settings, download history, liked tracks, wishlist and playlists with the contents of the backup. This cannot be undone.", + "@backupRestoreConfirmMessage": { + "description": "Confirmation dialog message before restoring a backup" + }, + "backupRestoreConfirmButton": "Restore", + "@backupRestoreConfirmButton": { + "description": "Confirm button to proceed with restore" + }, + "backupRestored": "Backup restored successfully", + "@backupRestored": { + "description": "Snackbar after a successful restore" + }, + "backupRestoreFailed": "Failed to restore backup", + "@backupRestoreFailed": { + "description": "Snackbar when restore fails" + }, + "backupInvalidFile": "This file is not a valid SpotiFLAC backup", + "@backupInvalidFile": { + "description": "Snackbar when the chosen file is not a valid backup" + }, + "backupRestoreRestartHint": "Restart the app to make sure every change is applied.", + "@backupRestoreRestartHint": { + "description": "Hint shown after restoring that an app restart is recommended" + }, + "backupContentsTitle": "Backup contents", + "@backupContentsTitle": { + "description": "Header above the list summarizing what the backup contains" + }, + "backupSettingsOnly": "Settings only", + "backupSelectHistory": "Download history", + "backupSelectCollections": "Library collections", + "backupSelectCollectionsDescription": "Liked tracks, wishlist, favorite artists, playlists and playlist covers.", + "backupSelectExtensions": "Extensions and their settings", + "backupSelectedExportDescription": "Save the selected categories to a backup file. Audio files are not included.", + "backupSelectAtLeastOne": "Select at least one category to create a backup.", + "backupSelectedRestoreMessage": "Only the categories listed below will be restored. Categories not included in this backup will stay unchanged. Restoring can replace existing data and cannot be undone.", + "backupContentsSettings": "App settings", + "@backupContentsSettings": { + "description": "Backup contents row label for settings" + }, + "backupContentsHistory": "{count} history {count, plural, =1{item} other{items}}", + "@backupContentsHistory": { + "description": "Backup contents row for history count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsLiked": "{count} liked {count, plural, =1{track} other{tracks}}", + "@backupContentsLiked": { + "description": "Backup contents row for liked tracks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsWishlist": "{count} wishlist {count, plural, =1{track} other{tracks}}", + "@backupContentsWishlist": { + "description": "Backup contents row for wishlist tracks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsPlaylists": "{count, plural, =1{1 playlist} other{{count} playlists}}", + "@backupContentsPlaylists": { + "description": "Backup contents row for playlist count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsArtists": "{count, plural, =1{1 favorite artist} other{{count} favorite artists}}", + "@backupContentsArtists": { + "description": "Backup contents row for favorite artists count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsExtensions": "{count, plural, =1{1 extension} other{{count} extensions}}", + "@backupContentsExtensions": { + "description": "Backup contents row for installed extensions count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupIncludeSecrets": "Include extension credentials", + "@backupIncludeSecrets": { + "description": "Toggle to include secret extension settings (tokens, API keys) in the backup" + }, + "backupIncludeSecretsDescription": "Tokens and API keys from extensions will be saved into the backup file. Keep the file private. When off, you re-enter them after restoring.", + "@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 repo.", + "@backupExtensionsRestoreFailed": { + "description": "Snackbar/hint when some extensions failed to reinstall during restore", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "tooltipLoveAll": "Уподобати всіх", + "@tooltipLoveAll": { + "description": "Tooltip for the Love All button on album/playlist screens" + }, + "tooltipAddToPlaylist": "Додати до списку відтворення", + "@tooltipAddToPlaylist": { + "description": "Tooltip for the Add to Playlist button" + }, + "snackbarRemovedTracksFromLoved": "Видалено {count} треків з уподобань", + "@snackbarRemovedTracksFromLoved": { + "description": "Snackbar after removing multiple tracks from Loved folder", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarAddedTracksToLoved": "Додано {count} треків до списку \"Улюблені\"", + "@snackbarAddedTracksToLoved": { + "description": "Snackbar after adding multiple tracks to Loved folder", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dialogDownloadAllTitle": "Завантажити все", + "@dialogDownloadAllTitle": { + "description": "Dialog title for bulk download confirmation" + }, + "dialogDownloadAllMessage": "Завантажити {count} треків?", + "@dialogDownloadAllMessage": { + "description": "Body of the Download All confirmation dialog", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "homeSkipAlreadyDownloaded": "Пропустити вже завантажені пісні", + "@homeSkipAlreadyDownloaded": { + "description": "Checkbox label in import dialog to skip already-downloaded songs" + }, + "homeGoToAlbum": "Перейти до альбому", + "@homeGoToAlbum": { + "description": "Context menu item to navigate to the album page" + }, + "homeAlbumInfoUnavailable": "Інформація про альбом недоступна", + "@homeAlbumInfoUnavailable": { + "description": "Snackbar when album info cannot be loaded" + }, + "snackbarLoadingCueSheet": "Завантаження аркуша CUE...", + "@snackbarLoadingCueSheet": { + "description": "Snackbar while loading a CUE sheet file" + }, + "snackbarMetadataSaved": "Метадані успішно збережено", + "@snackbarMetadataSaved": { + "description": "Snackbar after successfully saving track metadata" + }, + "snackbarFailedToEmbedLyrics": "Не вдалося вставити текст пісні", + "@snackbarFailedToEmbedLyrics": { + "description": "Snackbar when lyrics embedding fails" + }, + "snackbarFailedToWriteStorage": "Не вдалося перезаписати у сховище", + "@snackbarFailedToWriteStorage": { + "description": "Snackbar when writing metadata back to file fails" + }, + "snackbarError": "Помилка: {error}", + "@snackbarError": { + "description": "Generic error snackbar with error detail", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "snackbarNoActionDefined": "Для цієї кнопки не визначено жодної дії", + "@snackbarNoActionDefined": { + "description": "Snackbar when an extension button has no action configured" + }, + "noTracksFoundForAlbum": "Для цього альбому не знайдено жодних треків", + "@noTracksFoundForAlbum": { + "description": "Empty state message when an album has no tracks" + }, + "downloadLocationSubtitle": "Choose where to save your downloaded tracks", + "@downloadLocationSubtitle": { + "description": "Subtitle shown in the download location picker sheet" + }, + "storageAutomaticFolder": "Automatic folder", + "storageAutomaticDownloadFolder": "Uses Download/SpotiFLAC when writable, otherwise app storage", + "storageSafRecommended": "Choose folder (Recommended)", + "storageDownloadFolderHint": "In the Android folder picker, open Download and select SpotiFLAC. If it does not exist, create it using New folder, then tap Use this folder to grant access.", + "storageModeAppFolder": "App Folder (Recommended)", + "@storageModeAppFolder": { + "description": "Storage mode option - app-managed folder" + }, + "storageModeAppFolderSubtitle": "Saves to Music/SpotiFLAC by default", + "@storageModeAppFolderSubtitle": { + "description": "Subtitle for app folder storage mode" + }, + "storageModeSaf": "Custom Folder (SAF)", + "@storageModeSaf": { + "description": "Storage mode option - Storage Access Framework" + }, + "storageModeSafSubtitle": "Pick any folder, including SD card", + "@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" @@ -5980,6 +4334,812 @@ "@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" + }, + "downloadFilenameInsertTag": "Натисніть, щоб вставити тег:", + "@downloadFilenameInsertTag": { + "description": "Label above filename tag chips" + }, + "downloadSeparateSinglesEnabled": "Singles and EPs saved in a separate folder", + "@downloadSeparateSinglesEnabled": { + "description": "Subtitle when separate singles folder is on" + }, + "downloadSeparateSinglesDisabled": "Singles and albums saved in the same folder", + "@downloadSeparateSinglesDisabled": { + "description": "Subtitle when separate singles folder is off" + }, + "downloadArtistNameFilters": "Фільтри імені виконавця", + "@downloadArtistNameFilters": { + "description": "Setting title for artist folder filter options" + }, + "downloadCreatePlaylistSourceFolder": "Playlist Source Folder", + "@downloadCreatePlaylistSourceFolder": { + "description": "Setting to create a subfolder per playlist source" + }, + "downloadCreatePlaylistSourceFolderEnabled": "A subfolder is created for each playlist", + "@downloadCreatePlaylistSourceFolderEnabled": { + "description": "Subtitle when playlist folder is enabled" + }, + "downloadCreatePlaylistSourceFolderDisabled": "All tracks saved directly to download folder", + "@downloadCreatePlaylistSourceFolderDisabled": { + "description": "Subtitle when playlist folder is disabled" + }, + "downloadCreatePlaylistSourceFolderRedundant": "Handled by folder organization setting", + "@downloadCreatePlaylistSourceFolderRedundant": { + "description": "Subtitle when folder organization is already set to playlist" + }, + "downloadSongLinkRegion": "Регіон SongLink", + "@downloadSongLinkRegion": { + "description": "Setting for SongLink region used during fallback resolution" + }, + "downloadNetworkCompatibilityMode": "Network Compatibility Mode", + "@downloadNetworkCompatibilityMode": { + "description": "Setting for legacy TLS/network handling" + }, + "downloadNetworkCompatibilityModeEnabled": "Allowing legacy HTTP endpoints; TLS verification remains enabled", + "@downloadNetworkCompatibilityModeEnabled": { + "description": "Subtitle when network compatibility mode is on" + }, + "downloadNetworkCompatibilityModeDisabled": "Using standard network settings", + "@downloadNetworkCompatibilityModeDisabled": { + "description": "Subtitle when network compatibility mode is off" + }, + "downloadAllowLocalNetwork": "Allow Local Network Access", + "@downloadAllowLocalNetwork": { + "description": "Setting title for allowing requests to private/local network targets" + }, + "downloadAllowLocalNetworkEnabled": "Requests to local/private addresses are allowed (for local proxy or custom DNS)", + "@downloadAllowLocalNetworkEnabled": { + "description": "Subtitle when allow local network access is on" + }, + "downloadAllowLocalNetworkDisabled": "Local/private addresses are blocked for security", + "@downloadAllowLocalNetworkDisabled": { + "description": "Subtitle when allow local network access is off" + }, + "downloadSelectServiceToEnable": "Select a provider with quality options to enable this option", + "@downloadSelectServiceToEnable": { + "description": "Subtitle when quality picker is disabled due to extension service" + }, + "downloadEmbedLyricsDisabled": "Enable metadata embedding first", + "@downloadEmbedLyricsDisabled": { + "description": "Subtitle when lyrics embedding is blocked by metadata toggle" + }, + "downloadNeteaseIncludeTranslation": "Netease: Включити переклад", + "@downloadNeteaseIncludeTranslation": { + "description": "Setting to include translated lyrics from Netease" + }, + "downloadNeteaseIncludeTranslationEnabled": "Chinese translation lines included", + "@downloadNeteaseIncludeTranslationEnabled": { + "description": "Subtitle when Netease translation is on" + }, + "downloadNeteaseIncludeTranslationDisabled": "Original lyrics only", + "@downloadNeteaseIncludeTranslationDisabled": { + "description": "Subtitle when Netease translation is off" + }, + "downloadNeteaseIncludeRomanization": "Netease: Включити романізацію", + "@downloadNeteaseIncludeRomanization": { + "description": "Setting to include romanized lyrics from Netease" + }, + "downloadNeteaseIncludeRomanizationEnabled": "Romanization lines included", + "@downloadNeteaseIncludeRomanizationEnabled": { + "description": "Subtitle when Netease romanization is on" + }, + "downloadNeteaseIncludeRomanizationDisabled": "No romanization", + "@downloadNeteaseIncludeRomanizationDisabled": { + "description": "Subtitle when Netease romanization is off" + }, + "downloadAppleQqMultiPerson": "Apple / QQ: Multi-Person Lyrics", + "@downloadAppleQqMultiPerson": { + "description": "Setting for word-by-word multi-person lyrics from Apple Music and QQ Music" + }, + "downloadAppleQqMultiPersonEnabled": "Speaker labels included for duets and group tracks", + "@downloadAppleQqMultiPersonEnabled": { + "description": "Subtitle when multi-person lyrics is on" + }, + "downloadAppleQqMultiPersonDisabled": "Standard lyrics without speaker labels", + "@downloadAppleQqMultiPersonDisabled": { + "description": "Subtitle when multi-person lyrics is off" + }, + "downloadAppleElrcWordSync": "Apple Music eLRC Word Sync", + "@downloadAppleElrcWordSync": { + "description": "Setting for preserving Apple Music word-by-word eLRC timestamps" + }, + "downloadAppleElrcWordSyncEnabled": "Raw word-by-word timestamps preserved", + "@downloadAppleElrcWordSyncEnabled": { + "description": "Subtitle when Apple Music eLRC word sync is enabled" + }, + "downloadAppleElrcWordSyncDisabled": "Safer line-by-line Apple Music lyrics", + "@downloadAppleElrcWordSyncDisabled": { + "description": "Subtitle when Apple Music eLRC word sync is disabled" + }, + "downloadMusixmatchLanguage": "Мова Musixmatch", + "@downloadMusixmatchLanguage": { + "description": "Setting for Musixmatch lyrics translation language" + }, + "downloadMusixmatchLanguageAuto": "Auto (original language)", + "@downloadMusixmatchLanguageAuto": { + "description": "Subtitle when no language is set" + }, + "downloadFilterContributing": "Filter Contributing Artists", + "@downloadFilterContributing": { + "description": "Setting to strip contributing artists from Album Artist folder name" + }, + "downloadFilterContributingEnabled": "Contributing artists removed from Album Artist folder name", + "@downloadFilterContributingEnabled": { + "description": "Subtitle when contributing artist filter is on" + }, + "downloadFilterContributingDisabled": "Full Album Artist string used", + "@downloadFilterContributingDisabled": { + "description": "Subtitle when contributing artist filter is off" + }, + "downloadProvidersNoneEnabled": "No providers enabled", + "@downloadProvidersNoneEnabled": { + "description": "Shown when no lyrics providers are active" + }, + "downloadMusixmatchLanguageCode": "Код мови", + "@downloadMusixmatchLanguageCode": { + "description": "Label for Musixmatch language input field" + }, + "downloadMusixmatchLanguageHint": "e.g. en, de, ja", + "@downloadMusixmatchLanguageHint": { + "description": "Placeholder for Musixmatch language input" + }, + "downloadMusixmatchLanguageDesc": "Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.", + "@downloadMusixmatchLanguageDesc": { + "description": "Description in Musixmatch language picker" + }, + "downloadMusixmatchAuto": "Авто", + "@downloadMusixmatchAuto": { + "description": "Button to clear Musixmatch language (use auto)" + }, + "downloadNetworkAnySubtitle": "Use WiFi or mobile data", + "@downloadNetworkAnySubtitle": { + "description": "Subtitle for any-network option in picker" + }, + "downloadNetworkWifiOnlySubtitle": "Downloads pause when on mobile data", + "@downloadNetworkWifiOnlySubtitle": { + "description": "Subtitle for WiFi-only option in picker" + }, + "downloadSongLinkRegionDesc": "Region used when resolving track links via SongLink. Choose the country where your streaming services are available.", + "@downloadSongLinkRegionDesc": { + "description": "Description in SongLink region picker" + }, + "snackbarUnsupportedAudioFormat": "Непідтримуваний аудіоформат", + "@snackbarUnsupportedAudioFormat": { + "description": "Snackbar when the audio format is not supported for the requested operation" + }, + "cacheRefresh": "Оновити", + "@cacheRefresh": { + "description": "Tooltip for refresh button on cache management page" + }, + "dialogDownloadPlaylistsMessage": "Завантажити {trackCount} {trackCount, plural, =1{трек} other{треків}} з {playlistCount} {playlistCount, plural, =1{плейлист} other{плейлистів}}?", + "@dialogDownloadPlaylistsMessage": { + "description": "Dialog message for bulk playlist download confirmation", + "placeholders": { + "trackCount": { + "type": "int" + }, + "playlistCount": { + "type": "int" + } + } + }, + "bulkDownloadPlaylistsButton": "Завантажити {count} {count, plural, =1{плейлист} other{плейлистів}}", + "@bulkDownloadPlaylistsButton": { + "description": "Button label for bulk downloading selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "bulkDownloadSelectPlaylists": "Вибрати списки відтворення для завантаження", + "@bulkDownloadSelectPlaylists": { + "description": "Button label when no playlists are selected for download" + }, + "snackbarSelectedPlaylistsEmpty": "Вибрані списки відтворення не містять треків", + "@snackbarSelectedPlaylistsEmpty": { + "description": "Snackbar when selected playlists contain no tracks" + }, + "playlistsCount": "{count, plural, =1{1 плейлист} other{{count} плейлистів}}", + "@playlistsCount": { + "description": "Playlist count display", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "editMetadataAutoFill": "Автоматичне заповнення з онлайн-ресурсів", + "@editMetadataAutoFill": { + "description": "Section title for selective online metadata auto-fill in the edit metadata sheet" + }, + "editMetadataAutoFillDesc": "Choose a metadata extension, select fields, then review its data before applying", + "@editMetadataAutoFillDesc": { + "description": "Description for the auto-fill section" + }, + "editMetadataAutoFillSource": "Metadata source", + "@editMetadataAutoFillSource": { + "description": "Label for the metadata extension selector in online auto-fill" + }, + "editMetadataAutoFillSourceAutomatic": "Automatic (provider priority)", + "@editMetadataAutoFillSourceAutomatic": { + "description": "Automatic source option that follows configured metadata provider priority" + }, + "editMetadataAutoFillFind": "Find metadata", + "@editMetadataAutoFillFind": { + "description": "Button label for finding an online metadata candidate" + }, + "editMetadataAutoFillPreview": "Data from {source}", + "@editMetadataAutoFillPreview": { + "description": "Title for the online metadata preview", + "placeholders": { + "source": { + "type": "String" + } + } + }, + "editMetadataAutoFillCoverAvailable": "Cover artwork available", + "@editMetadataAutoFillCoverAvailable": { + "description": "Preview value when the selected metadata source provides cover artwork" + }, + "editMetadataAutoFillApply": "Apply selected data", + "@editMetadataAutoFillApply": { + "description": "Button label for applying the previewed metadata" + }, + "editMetadataAutoFillDoneFromSource": "Filled {count} {count, plural, =1{field} other{fields}} from {source}", + "@editMetadataAutoFillDoneFromSource": { + "description": "Snackbar confirming fields applied from a selected metadata source", + "placeholders": { + "count": { + "type": "int" + }, + "source": { + "type": "String" + } + } + }, + "editMetadataAutoFillFetch": "Отримання та заповнення", + "@editMetadataAutoFillFetch": { + "description": "Button label to fetch online metadata and fill selected fields" + }, + "editMetadataAutoFillSearching": "Пошук в Інтернеті...", + "@editMetadataAutoFillSearching": { + "description": "Snackbar shown while searching for online metadata" + }, + "editMetadataAutoFillNoResults": "Відповідних метаданих в Інтернеті не знайдено", + "@editMetadataAutoFillNoResults": { + "description": "Snackbar when online metadata search returns no results" + }, + "editMetadataAutoFillDone": "Заповнено {count} {count, plural, =1{поле} other{полей}} з онлайн-метаданих", + "@editMetadataAutoFillDone": { + "description": "Snackbar confirming how many fields were auto-filled", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "editMetadataAutoFillNoneSelected": "Виберіть принаймні одне поле для автоматичного заповнення", + "@editMetadataAutoFillNoneSelected": { + "description": "Snackbar when user taps Fetch without selecting any fields" + }, + "editMetadataFieldTitle": "Назва", + "@editMetadataFieldTitle": { + "description": "Chip label for title field in auto-fill selector" + }, + "editMetadataFieldArtist": "Виконавець", + "@editMetadataFieldArtist": { + "description": "Chip label for artist field in auto-fill selector" + }, + "editMetadataFieldAlbum": "Альбом", + "@editMetadataFieldAlbum": { + "description": "Chip label for album field in auto-fill selector" + }, + "editMetadataFieldAlbumArtist": "Виконавець альбому", + "@editMetadataFieldAlbumArtist": { + "description": "Chip label for album artist field in auto-fill selector" + }, + "editMetadataFieldDate": "Дата", + "@editMetadataFieldDate": { + "description": "Chip label for date field in auto-fill selector" + }, + "editMetadataFieldTrackNum": "Номер треку", + "@editMetadataFieldTrackNum": { + "description": "Chip label for track number field in auto-fill selector" + }, + "editMetadataFieldDiscNum": "Номер диска", + "@editMetadataFieldDiscNum": { + "description": "Chip label for disc number field in auto-fill selector" + }, + "editMetadataFieldGenre": "Жанр", + "@editMetadataFieldGenre": { + "description": "Chip label for genre field in auto-fill selector" + }, + "editMetadataFieldIsrc": "ISRC", + "@editMetadataFieldIsrc": { + "description": "Chip label for ISRC field in auto-fill selector" + }, + "editMetadataFieldLabel": "Лейбл", + "@editMetadataFieldLabel": { + "description": "Chip label for label field in auto-fill selector" + }, + "editMetadataFieldCopyright": "Авторське право", + "@editMetadataFieldCopyright": { + "description": "Chip label for copyright field in auto-fill selector" + }, + "editMetadataFieldCover": "Обкладинка", + "@editMetadataFieldCover": { + "description": "Chip label for cover art field in auto-fill selector" + }, + "editMetadataSelectAll": "Усі", + "@editMetadataSelectAll": { + "description": "Button to select all fields for auto-fill" + }, + "editMetadataSelectEmpty": "Порожні (без мета даних)", + "@editMetadataSelectEmpty": { + "description": "Button to select only fields that are currently empty" + }, + "queueDownloadingCount": "Завантаження ({count})", + "@queueDownloadingCount": { + "description": "Header for active downloads section with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueFilteringIndicator": "Фільтрування...", + "@queueFilteringIndicator": { + "description": "Shown while filter results are being computed" + }, + "queueTrackCount": "{count, plural, =1{1 трек} other{{count} треків}}", + "@queueTrackCount": { + "description": "Track count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueAlbumCount": "{count, plural, =1{1 альбом} other{{count} альбомів}}", + "@queueAlbumCount": { + "description": "Album count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueEmptyAlbums": "Немає завантажень альбомів", + "@queueEmptyAlbums": { + "description": "Empty state title when no album downloads exist" + }, + "queueEmptyAlbumsSubtitle": "Завантажте кілька треків з альбому, щоб переглянути їх тут", + "@queueEmptyAlbumsSubtitle": { + "description": "Empty state subtitle for album downloads" + }, + "queueEmptySingles": "Без окремих завантажень", + "@queueEmptySingles": { + "description": "Empty state title when no single track downloads exist" + }, + "queueEmptySinglesSubtitle": "Завантаження окремих треків з’являться тут", + "@queueEmptySinglesSubtitle": { + "description": "Empty state subtitle for single track downloads" + }, + "queuePlaylistCount": "{count, plural, =1{1 playlist} other{{count} playlists}}", + "@queuePlaylistCount": { + "description": "Playlist count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueEmptyPlaylistsSubtitle": "Create a playlist to organize your tracks", + "@queueEmptyPlaylistsSubtitle": { + "description": "Empty state subtitle for the playlists library view" + }, + "libraryDefaultView": "Default view", + "@libraryDefaultView": { + "description": "Setting title - which library view opens when switching to the Library tab" + }, + "libraryDefaultViewLastUsed": "Last used", + "@libraryDefaultViewLastUsed": { + "description": "Default view option - keep the last used library view" + }, + "queueEmptyHistory": "Немає історії завантажень", + "@queueEmptyHistory": { + "description": "Empty state title when download history is empty" + }, + "queueEmptyHistorySubtitle": "Завантажені треки з’являться тут", + "@queueEmptyHistorySubtitle": { + "description": "Empty state subtitle for download history" + }, + "selectionAllPlaylistsSelected": "Вибрано всі списки відтворення", + "@selectionAllPlaylistsSelected": { + "description": "Shown when all playlists are selected in selection mode" + }, + "selectionTapPlaylistsToSelect": "Торкніться списків відтворення, щоб вибрати", + "@selectionTapPlaylistsToSelect": { + "description": "Hint shown in playlist selection mode" + }, + "selectionSelectPlaylistsToDelete": "Вибрати списки відтворення для видалення", + "@selectionSelectPlaylistsToDelete": { + "description": "Hint shown when no playlists are selected for deletion" + }, + "audioAnalysisTitle": "Аналіз якості звуку", + "@audioAnalysisTitle": { + "description": "Title for audio analysis section" + }, + "audioAnalysisDescription": "Перевірити якість без втрат за допомогою спектрального аналізу", + "@audioAnalysisDescription": { + "description": "Description for audio analysis tap-to-analyze prompt" + }, + "audioAnalysisAnalyzing": "Аналіз аудіо...", + "@audioAnalysisAnalyzing": { + "description": "Loading text while analyzing audio" + }, + "audioAnalysisSampleRate": "Частота дискретизації", + "@audioAnalysisSampleRate": { + "description": "Sample rate metric label" + }, + "audioAnalysisCodec": "Codec", + "@audioAnalysisCodec": { + "description": "Audio codec metric label" + }, + "audioAnalysisContainer": "Container", + "@audioAnalysisContainer": { + "description": "Audio container metric label" + }, + "audioAnalysisDecodedFormat": "Decoded Format", + "@audioAnalysisDecodedFormat": { + "description": "Decoded sample format metric label" + }, + "audioAnalysisBitDepth": "Глибина бітів", + "@audioAnalysisBitDepth": { + "description": "Bit depth metric label" + }, + "audioAnalysisChannels": "Канали", + "@audioAnalysisChannels": { + "description": "Channels metric label" + }, + "audioAnalysisDuration": "Тривалість", + "@audioAnalysisDuration": { + "description": "Duration metric label" + }, + "audioAnalysisNyquist": "Частота Найквіста", + "@audioAnalysisNyquist": { + "description": "Nyquist frequency metric label" + }, + "audioAnalysisFileSize": "Розмір", + "@audioAnalysisFileSize": { + "description": "File size metric label" + }, + "audioAnalysisDynamicRange": "Динамічний діапазон", + "@audioAnalysisDynamicRange": { + "description": "Dynamic range metric label" + }, + "audioAnalysisPeak": "Пік", + "@audioAnalysisPeak": { + "description": "Peak amplitude metric label" + }, + "audioAnalysisRms": "RMS", + "@audioAnalysisRms": { + "description": "RMS level metric label" + }, + "audioAnalysisLufs": "LUFS", + "@audioAnalysisLufs": { + "description": "Integrated loudness metric label" + }, + "audioAnalysisTruePeak": "True Peak", + "@audioAnalysisTruePeak": { + "description": "True peak metric label" + }, + "audioAnalysisClipping": "Clipping", + "@audioAnalysisClipping": { + "description": "Clipping metric label" + }, + "audioAnalysisNoClipping": "No clipping", + "@audioAnalysisNoClipping": { + "description": "Displayed when no clipped samples were detected" + }, + "audioAnalysisSpectralCutoff": "Spectral Cutoff", + "@audioAnalysisSpectralCutoff": { + "description": "Estimated spectral cutoff metric label" + }, + "audioAnalysisCutoffNotDetected": "Not detected", + "@audioAnalysisCutoffNotDetected": { + "description": "Displayed when no reliable broadband spectral cutoff can be detected" + }, + "audioAnalysisChannelStats": "Per-channel Stats", + "@audioAnalysisChannelStats": { + "description": "Per-channel audio analysis section label" + }, + "audioAnalysisSamples": "Семпли", + "@audioAnalysisSamples": { + "description": "Total samples metric label" + }, + "audioAnalysisRescan": "Re-analyze", + "@audioAnalysisRescan": { + "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" + }, + "downloadRedownloadFakeHiRes": "Re-download fake Hi-Res", + "@downloadRedownloadFakeHiRes": { + "description": "Setting title: automatically replace downloads that measure as fake Hi-Res" + }, + "downloadRedownloadFakeHiResSubtitle": "Off by default. Check Hi-Res downloads and replace only when every audio sample is preserved. Keep the original if verification or processing fails", + "@downloadRedownloadFakeHiResSubtitle": { + "description": "Setting subtitle for the fake Hi-Res re-download toggle" + }, + "hiResCheckVerdictFakeCertain": "Fake Hi-Res", + "@hiResCheckVerdictFakeCertain": { + "description": "Verdict: an exact fingerprint (padded bits or upsampling pattern) proves the file is not real Hi-Res" + }, + "hiResCheckVerdictFakeSuspect": "Possibly a filtered master", + "@hiResCheckVerdictFakeSuspect": { + "description": "Verdict: fails the cutoff test but may be a genuine master low-pass filtered in mastering" + }, + "hiResCheckReasonSampleHold": "Every sample is repeated: upsampled by duplication", + "@hiResCheckReasonSampleHold": { + "description": "Reason: sample-and-hold upsampling detected" + }, + "hiResCheckReasonInterpolation": "In-between samples are linearly interpolated", + "@hiResCheckReasonInterpolation": { + "description": "Reason: linear-interpolation upsampling detected" + }, + "hiResCheckReasonImaging": "Content above 22 kHz mirrors the audible band", + "@hiResCheckReasonImaging": { + "description": "Reason: spectral imaging from upsampling detected" + }, + "hiResCheckMusicContent": "Musical content", + "@hiResCheckMusicContent": { + "description": "Label for the highest frequency that still moves with the music" + }, + "hiResCheckUltrasonicNoise": "Above {cutoff} only steady noise (typical of DSD or analog tape transfers): a {rate} file would hold all the music", + "@hiResCheckUltrasonicNoise": { + "description": "Shown when the ultrasonic content of a Hi-Res file is noise rather than music", + "placeholders": { + "cutoff": { + "type": "String" + }, + "rate": { + "type": "String" + } + } + }, + "hiResCheckTitle": "Hi-Res Authenticity", + "@hiResCheckTitle": { + "description": "Title of the fake Hi-Res check card" + }, + "hiResCheckDescription": "Detect upsampled or bit-padded fake Hi-Res files", + "@hiResCheckDescription": { + "description": "Explains what the Hi-Res authenticity check does" + }, + "hiResCheckRun": "Check", + "@hiResCheckRun": { + "description": "Button that starts the Hi-Res authenticity check" + }, + "hiResCheckChecking": "Checking Hi-Res authenticity...", + "@hiResCheckChecking": { + "description": "Loading text while the Hi-Res check runs" + }, + "hiResCheckVerdictFake": "Likely fake Hi-Res", + "@hiResCheckVerdictFake": { + "description": "Verdict: the file claims Hi-Res but does not measure as it" + }, + "hiResCheckVerdictGenuine": "Measures as genuine Hi-Res", + "@hiResCheckVerdictGenuine": { + "description": "Verdict: no upsampling or padded bit depth found" + }, + "hiResCheckVerdictStandard": "Standard definition, nothing to flag", + "@hiResCheckVerdictStandard": { + "description": "Verdict: neither sample rate nor bit depth claims Hi-Res" + }, + "hiResCheckVerdictInconclusive": "Inconclusive: the analyzed segment is too quiet or short", + "@hiResCheckVerdictInconclusive": { + "description": "Verdict: analysis could not reach a reliable conclusion" + }, + "hiResCheckUnsupported": "Only FLAC and WAV files can be checked", + "@hiResCheckUnsupported": { + "description": "Shown when the file format cannot be decoded by the Hi-Res check" + }, + "hiResCheckCutoff": "Content cutoff", + "@hiResCheckCutoff": { + "description": "Label for the highest frequency with real content" + }, + "hiResCheckBitsInUse": "Bits in use", + "@hiResCheckBitsInUse": { + "description": "Label for effective vs declared bit depth" + }, + "hiResCheckDisclaimer": "The spectrum stops early, but nothing proves it was upsampled: it may be a genuine master low-pass filtered in mastering. It is not replaced automatically.", + "@hiResCheckDisclaimer": { + "description": "Caveat shown under a fake Hi-Res verdict" + }, + "hiResCheckFailed": "Hi-Res check failed: {error}", + "@hiResCheckFailed": { + "description": "Error shown when the Hi-Res check fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "hiResCheckReasonRate": "Declares {sampleRate} but content stops at ~{cutoff}", + "@hiResCheckReasonRate": { + "description": "Reason for a fake verdict caused by upsampling", + "placeholders": { + "sampleRate": { + "type": "String" + }, + "cutoff": { + "type": "String" + } + } + }, + "hiResCheckReasonDepth": "Declares {declared}-bit but only {effective} bits carry data", + "@hiResCheckReasonDepth": { + "description": "Reason for a fake verdict caused by padded bit depth", + "placeholders": { + "declared": { + "type": "int" + }, + "effective": { + "type": "int" + } + } + }, + "audioAnalysisRescanning": "Re-analyzing audio...", + "@audioAnalysisRescanning": { + "description": "Loading text while audio is being re-analyzed after an explicit refresh" + }, + "extensionsHomeFeedProvider": "Постачальник оновлень домашньої стрічки", + "@extensionsHomeFeedProvider": { + "description": "Extensions page - label for home feed provider selector" + }, + "extensionsHomeFeedDescription": "Виберіть, яке розширення відображатиме домашню стрічку на головному екрані", + "@extensionsHomeFeedDescription": { + "description": "Extensions page - description for home feed provider picker" + }, + "extensionsHomeFeedAuto": "Авто", + "@extensionsHomeFeedAuto": { + "description": "Label for auto-selected search provider" + }, + "extensionsHomeFeedAutoSubtitle": "Автоматично вибирати найкращий доступний", + "@extensionsHomeFeedAutoSubtitle": { + "description": "Extensions page - subtitle for auto home feed option" + }, + "extensionsHomeFeedOff": "Off", + "@extensionsHomeFeedOff": { + "description": "Extensions page - home feed provider option: off" + }, + "extensionsHomeFeedOffSubtitle": "Do not show the home feed on the main screen", + "@extensionsHomeFeedOffSubtitle": { + "description": "Extensions page - subtitle for off home feed option" + }, + "extensionsHomeFeedUse": "Використовувати {extensionName} головну стрічку", + "@extensionsHomeFeedUse": { + "description": "Extensions page - subtitle for a specific extension home feed option", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "extensionsNoHomeFeedExtensions": "Без розширень із домашньою стрічкою", + "@extensionsNoHomeFeedExtensions": { + "description": "Extensions page - shown when no installed extension has home feed" + }, + "cancelDownloadTitle": "Скасувати завантаження?", + "@cancelDownloadTitle": { + "description": "Dialog title when confirming cancellation of an active download" + }, + "cancelDownloadContent": "Це скасує активне завантаження треку \"{trackName}\".", + "@cancelDownloadContent": { + "description": "Dialog body when confirming cancellation of an active download", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "cancelDownloadKeep": "Зберегти", + "@cancelDownloadKeep": { + "description": "Dialog button - keep the active download (do not cancel)" + }, + "queueCancelledTitle": "Download cancelled", + "@queueCancelledTitle": { + "description": "Dialog title when opening a cancelled queue item" + }, + "queueCancelledMessage": "This download was cancelled. Retry it or remove it from the queue.", + "@queueCancelledMessage": { + "description": "Dialog body when opening a cancelled queue item" + }, + "metadataSaveFailedFfmpeg": "Не вдалося зберегти метадані через FFmpeg", + "@metadataSaveFailedFfmpeg": { + "description": "Snackbar error when FFmpeg fails to write metadata" + }, + "metadataSaveFailedStorage": "Не вдалося записати метадані назад у сховище", + "@metadataSaveFailedStorage": { + "description": "Snackbar error when writing metadata file back to storage fails" + }, + "snackbarFolderPickerFailed": "Не вдалося відкрити засіб вибору папок: {error}", + "@snackbarFolderPickerFailed": { + "description": "Snackbar shown when folder picker fails to open", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "notifDownloadingTrack": "Завантаження {trackName}", + "@notifDownloadingTrack": { + "description": "Notification title while downloading a track", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "notifFinalizingTrack": "Фіналізація {trackName}", + "@notifFinalizingTrack": { + "description": "Notification title while finalizing (embedding metadata) a track", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "notifEmbeddingMetadata": "Вбудовування метаданих...", + "@notifEmbeddingMetadata": { + "description": "Notification body while embedding metadata into a downloaded track" + }, + "notifAlreadyInLibraryCount": "Вже в бібліотеці ({completed}/{total})", + "@notifAlreadyInLibraryCount": { + "description": "Notification title when track is already in library, with count", + "placeholders": { + "completed": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "notifAlreadyInLibrary": "Вже в бібліотеці", + "@notifAlreadyInLibrary": { + "description": "Notification title when track is already in library" + }, + "notifDownloadCompleteCount": "Завантаження завершено ({completed}/{total})", + "@notifDownloadCompleteCount": { + "description": "Notification title when download is complete, with count", + "placeholders": { + "completed": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "notifDownloadComplete": "Завантаження завершено", + "@notifDownloadComplete": { + "description": "Notification title when a single download is complete" + }, + "notifDownloadsFinished": "Завантаження завершено ({completed} завершено, {failed} не вдалося)", + "@notifDownloadsFinished": { + "description": "Notification title when queue finishes with some failures", + "placeholders": { + "completed": { + "type": "int" + }, + "failed": { + "type": "int" + } + } + }, "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" @@ -5988,10 +5148,592 @@ "@notifVerificationRequiredBody": { "description": "Notification body prompting the user to return to the app to solve a verification challenge" }, + "notifAllDownloadsComplete": "Усі завантаження завершено", + "@notifAllDownloadsComplete": { + "description": "Notification title when all downloads finish successfully" + }, + "notifTracksDownloadedSuccess": "{count, plural, =1{1 track downloaded successfully} other{{count} tracks downloaded successfully}}", + "@notifTracksDownloadedSuccess": { + "description": "Notification body for queue complete - how many tracks were downloaded", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifDownloadsFinishedBody": "{completed, plural, =1{1 track downloaded} other{{completed} tracks downloaded}}, {failed, plural, =1{1 failed} other{{failed} failed}}", + "@notifDownloadsFinishedBody": { + "description": "Notification body when queue finishes with failures", + "placeholders": { + "completed": { + "type": "int" + }, + "failed": { + "type": "int" + } + } + }, + "notifDownloadsCanceledTitle": "Downloads canceled", + "@notifDownloadsCanceledTitle": { + "description": "Notification title when downloads are canceled by the user" + }, + "notifDownloadsCanceledBody": "{count, plural, =1{1 download canceled by user} other{{count} downloads canceled by user}}", + "@notifDownloadsCanceledBody": { + "description": "Notification body when downloads are canceled by the user", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifScanningLibrary": "Сканування локальної бібліотеки", + "@notifScanningLibrary": { + "description": "Notification title while scanning local library" + }, + "notifLibraryScanProgressWithTotal": "{scanned}/{total} файлів • {percentage}%", + "@notifLibraryScanProgressWithTotal": { + "description": "Notification body for library scan progress when total is known", + "placeholders": { + "scanned": { + "type": "int" + }, + "total": { + "type": "int" + }, + "percentage": { + "type": "int" + } + } + }, + "notifLibraryScanProgressNoTotal": "{scanned} файлів скановано • {percentage}%", + "@notifLibraryScanProgressNoTotal": { + "description": "Notification body for library scan progress when total is unknown", + "placeholders": { + "scanned": { + "type": "int" + }, + "percentage": { + "type": "int" + } + } + }, + "notifLibraryScanComplete": "Сканування бібліотеки завершено", + "@notifLibraryScanComplete": { + "description": "Notification title when library scan finishes" + }, + "notifLibraryScanCompleteBody": "{count} треків індексовано", + "@notifLibraryScanCompleteBody": { + "description": "Notification body for library scan complete - number of indexed tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifLibraryScanExcluded": "{count} виключені", + "@notifLibraryScanExcluded": { + "description": "Library scan complete suffix - excluded track count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifLibraryScanErrors": "{count} помилок", + "@notifLibraryScanErrors": { + "description": "Library scan complete suffix - error count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifLibraryScanFailed": "Не вдалося сканувати бібліотеку", + "@notifLibraryScanFailed": { + "description": "Notification title when library scan fails" + }, + "notifLibraryScanCancelled": "Сканування бібліотеки скасовано", + "@notifLibraryScanCancelled": { + "description": "Notification title when library scan is cancelled by the user" + }, + "notifLibraryScanStopped": "Сканування зупинено до завершення.", + "@notifLibraryScanStopped": { + "description": "Notification body when library scan is cancelled" + }, + "notifDownloadingUpdate": "Downloading SpotiFLAC Mobile v{version}", + "@notifDownloadingUpdate": { + "description": "Notification title while downloading an app update", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "notifUpdateProgress": "{received} / {total} МБ • {percentage}%", + "@notifUpdateProgress": { + "description": "Notification body showing update download progress", + "placeholders": { + "received": { + "type": "String" + }, + "total": { + "type": "String" + }, + "percentage": { + "type": "int" + } + } + }, + "notifUpdateReady": "Оновлення готове", + "@notifUpdateReady": { + "description": "Notification title when app update download is complete" + }, + "notifUpdateReadyBody": "SpotiFLAC Mobile v{version} downloaded. Tap to install.", + "@notifUpdateReadyBody": { + "description": "Notification body when app update is ready to install", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "notifUpdateFailed": "Не вдалося оновити", + "@notifUpdateFailed": { + "description": "Notification title when app update download fails" + }, + "notifUpdateFailedBody": "Не вдалося завантажити оновлення. Спробуйте пізніше.", + "@notifUpdateFailedBody": { + "description": "Notification body when app update download fails" + }, + "searchTracks": "Tracks", + "@searchTracks": { + "description": "Search filter label - tracks" + }, + "homeSearchHintDefault": "Paste supported URL or search...", + "@homeSearchHintDefault": { + "description": "Default placeholder for the main search field on Home" + }, + "homeSearchHintProvider": "Search with {providerName}...", + "@homeSearchHintProvider": { + "description": "Placeholder for the main search field when a provider is selected", + "placeholders": { + "providerName": { + "type": "String" + } + } + }, + "homeImportCsvTooltip": "Import playlist (CSV, M3U)", + "@homeImportCsvTooltip": { + "description": "Tooltip for importing a CSV or M3U playlist file into Home search" + }, + "homeChangeSearchProviderTooltip": "Change search provider", + "@homeChangeSearchProviderTooltip": { + "description": "Tooltip for the Home search provider picker" + }, + "actionPaste": "Paste", + "@actionPaste": { + "description": "Generic action - paste from clipboard" + }, + "tutorialSearchHint": "Paste or search...", + "@tutorialSearchHint": { + "description": "Placeholder shown in the tutorial search demo" + }, + "tutorialDownloadCompletedSemantics": "Download completed", + "@tutorialDownloadCompletedSemantics": { + "description": "Accessibility label for completed download state in tutorial demo" + }, + "tutorialDownloadInProgressSemantics": "Download in progress", + "@tutorialDownloadInProgressSemantics": { + "description": "Accessibility label for active download state in tutorial demo" + }, + "tutorialStartDownloadSemantics": "Start download", + "@tutorialStartDownloadSemantics": { + "description": "Accessibility label for idle download button in tutorial demo" + }, + "optionsEmbedMetadata": "Embed Metadata", + "@optionsEmbedMetadata": { + "description": "Settings toggle title for writing metadata into downloaded files" + }, + "optionsEmbedMetadataSubtitleOn": "Write metadata, cover art, and embedded lyrics to files", + "@optionsEmbedMetadataSubtitleOn": { + "description": "Subtitle when metadata embedding is enabled" + }, + "optionsEmbedMetadataSubtitleOff": "Disabled (advanced): skip all metadata embedding", + "@optionsEmbedMetadataSubtitleOff": { + "description": "Subtitle when metadata embedding is disabled" + }, + "trackCoverNoEmbeddedArt": "No embedded album art found", + "@trackCoverNoEmbeddedArt": { + "description": "Message shown when a track file has no embedded cover art" + }, + "trackCoverReplace": "Replace Cover", + "@trackCoverReplace": { + "description": "Button label for replacing selected cover art" + }, + "trackCoverPick": "Pick Cover", + "@trackCoverPick": { + "description": "Button label for selecting cover art" + }, + "trackCoverClearSelected": "Clear selected cover", + "@trackCoverClearSelected": { + "description": "Tooltip for clearing the newly selected cover art" + }, + "trackCoverCurrent": "Current cover", + "@trackCoverCurrent": { + "description": "Label for the currently embedded cover preview" + }, + "trackCoverSelected": "Selected cover", + "@trackCoverSelected": { + "description": "Label for the newly selected cover preview" + }, + "trackCoverReplaceNotice": "The selected cover will replace the current embedded cover when you tap Save.", + "@trackCoverReplaceNotice": { + "description": "Notice shown when a new cover has been selected but not saved yet" + }, + "trackCoverResolution": "Cover resolution", + "@trackCoverResolution": { + "description": "Label for selecting the embedded cover art resolution" + }, + "trackCoverResolutionHint": "Sets the longest edge when saved. Enlarging does not add image detail.", + "@trackCoverResolutionHint": { + "description": "Explanation below the embedded cover art resolution selector" + }, + "trackCoverResizeFailed": "The cover image could not be resized. Please try another size or image.", + "@trackCoverResizeFailed": { + "description": "Error shown when resizing cover art before saving metadata fails" + }, + "actionStop": "Stop", + "@actionStop": { + "description": "Generic action - stop" + }, + "queueFinalizingDownload": "Finalizing download", + "@queueFinalizingDownload": { + "description": "Accessibility label for a queue item that is finalizing" + }, + "queueDownloadNext": "Download next", + "@queueDownloadNext": { + "description": "Tooltip on a queued download row; moves the item to the front of the queue so the next free slot downloads it" + }, + "queueMoveUp": "Move up", + "@queueMoveUp": { + "description": "Queue item menu action - move the queued item one position earlier" + }, + "queueMoveDown": "Move down", + "@queueMoveDown": { + "description": "Queue item menu action - move the queued item one position later" + }, + "editMetadataMusicBrainzButton": "Fetch from MusicBrainz", + "@editMetadataMusicBrainzButton": { + "description": "Tag editor button that fills genre and album artist from MusicBrainz by ISRC" + }, + "editMetadataMusicBrainzFilled": "Updated from MusicBrainz", + "@editMetadataMusicBrainzFilled": { + "description": "Snackbar after MusicBrainz suggestions were applied to the tag editor fields" + }, + "editMetadataMusicBrainzNothing": "Nothing found on MusicBrainz", + "@editMetadataMusicBrainzNothing": { + "description": "Snackbar when the MusicBrainz lookup returns no data" + }, + "editMetadataMusicBrainzNeedsIsrc": "Requires an ISRC tag", + "@editMetadataMusicBrainzNeedsIsrc": { + "description": "Snackbar when the MusicBrainz lookup is tapped without an ISRC" + }, + "nowPlayingRepeatOff": "Repeat off", + "@nowPlayingRepeatOff": { + "description": "Repeat toggle tooltip when repeat is disabled" + }, + "nowPlayingRepeatAll": "Repeat all", + "@nowPlayingRepeatAll": { + "description": "Repeat toggle tooltip when the whole queue repeats" + }, + "nowPlayingRepeatOne": "Repeat one", + "@nowPlayingRepeatOne": { + "description": "Repeat toggle tooltip when the current track repeats" + }, + "queueNetworkFailedOffline": "{count} downloads failed while offline", + "@queueNetworkFailedOffline": { + "description": "Snackbar shown when connectivity returns and network-failed downloads can be retried", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueDownloadedFileMissing": "Downloaded file missing", + "@queueDownloadedFileMissing": { + "description": "Accessibility label when a downloaded file is missing from disk" + }, + "queueCheckingDownloadedFile": "Checking downloaded file...", + "@queueCheckingDownloadedFile": { + "description": "Accessibility label while the app checks whether a just-completed download has appeared at its final path yet. Not about authentication or a download session." + }, + "queueDownloadCompleted": "Download completed", + "@queueDownloadCompleted": { + "description": "Accessibility label for completed download state in queue" + }, + "queueRateLimitTitle": "Service rate limited", + "@queueRateLimitTitle": { + "description": "Title shown on a failed queue item when the download service rate limits requests" + }, + "queueRateLimitMessage": "This track may still be available. Wait a few minutes, reduce parallel downloads, then retry.", + "@queueRateLimitMessage": { + "description": "Explanation shown on a failed queue item when the download service rate limits requests" + }, + "appearanceSelectAccentColor": "Select accent color {hex}", + "@appearanceSelectAccentColor": { + "description": "Accessibility label for picking an accent color", + "placeholders": { + "hex": { + "type": "String" + } + } + }, + "logAutoScrollOn": "Auto-scroll ON", + "@logAutoScrollOn": { + "description": "Tooltip when auto-scroll is enabled on the log screen" + }, + "logAutoScrollOff": "Auto-scroll OFF", + "@logAutoScrollOff": { + "description": "Tooltip when auto-scroll is disabled on the log screen" + }, + "logCopyLogs": "Copy logs", + "@logCopyLogs": { + "description": "Tooltip for copying logs" + }, + "logClearSearch": "Clear search", + "@logClearSearch": { + "description": "Tooltip for clearing the log search field" + }, + "logIssueIspBlockingLabel": "ISP BLOCKING DETECTED", + "@logIssueIspBlockingLabel": { + "description": "Diagnostic badge label when ISP blocking is detected" + }, + "logIssueIspBlockingDescription": "Your ISP may be blocking access to download services", + "@logIssueIspBlockingDescription": { + "description": "Diagnostic badge description for ISP blocking" + }, + "logIssueIspBlockingSuggestion": "Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8", + "@logIssueIspBlockingSuggestion": { + "description": "Diagnostic badge suggestion for ISP blocking" + }, + "logIssueRateLimitedLabel": "RATE LIMITED", + "@logIssueRateLimitedLabel": { + "description": "Diagnostic badge label when the service rate limits requests" + }, + "logIssueRateLimitedDescription": "Too many requests to the service", + "@logIssueRateLimitedDescription": { + "description": "Diagnostic badge description for rate limiting" + }, + "logIssueRateLimitedSuggestion": "Wait a few minutes before trying again", + "@logIssueRateLimitedSuggestion": { + "description": "Diagnostic badge suggestion for rate limiting" + }, + "logIssueNetworkErrorLabel": "NETWORK ERROR", + "@logIssueNetworkErrorLabel": { + "description": "Diagnostic badge label for generic network errors" + }, + "logIssueNetworkErrorDescription": "Connection issues detected", + "@logIssueNetworkErrorDescription": { + "description": "Diagnostic badge description for generic network errors" + }, + "logIssueNetworkErrorSuggestion": "Check your internet connection", + "@logIssueNetworkErrorSuggestion": { + "description": "Diagnostic badge suggestion for generic network errors" + }, + "logIssueTrackNotFoundLabel": "TRACK NOT FOUND", + "@logIssueTrackNotFoundLabel": { + "description": "Diagnostic badge label when a track is unavailable" + }, + "logIssueTrackNotFoundDescription": "Some tracks could not be found on download services", + "@logIssueTrackNotFoundDescription": { + "description": "Diagnostic badge description when a track is unavailable" + }, + "logIssueTrackNotFoundSuggestion": "The track may not be available in lossless quality", + "@logIssueTrackNotFoundSuggestion": { + "description": "Diagnostic badge suggestion when a track is unavailable" + }, + "clickableLookingUpArtist": "Looking up artist...", + "@clickableLookingUpArtist": { + "description": "Snackbar shown while clickable artist metadata is being resolved" + }, + "clickableInformationUnavailable": "{type} information not available", + "@clickableInformationUnavailable": { + "description": "Snackbar shown when clickable metadata cannot open a destination", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "extensionDetailsTags": "Tags", + "@extensionDetailsTags": { + "description": "Section title for extension tags" + }, + "extensionDetailsInformation": "Information", + "@extensionDetailsInformation": { + "description": "Section title for extension metadata information" + }, + "extensionUtilityFunctions": "Utility Functions", + "@extensionUtilityFunctions": { + "description": "Capability label for utility-only extensions" + }, + "actionDismiss": "Dismiss", + "@actionDismiss": { + "description": "Generic action - dismiss" + }, + "setupChangeFolderTooltip": "Change folder", + "@setupChangeFolderTooltip": { + "description": "Tooltip for editing the selected download folder" + }, + "a11yOpenTrackByArtist": "Open track {trackName} by {artistName}", + "@a11yOpenTrackByArtist": { + "description": "Accessibility label for opening a track item", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "a11yOpenItem": "Open {itemType} {name}", + "@a11yOpenItem": { + "description": "Accessibility label for opening a generic item", + "placeholders": { + "itemType": { + "type": "String" + }, + "name": { + "type": "String" + } + } + }, + "a11yOpenItemCount": "Open {title}, {count} {count, plural, =1{item} other{items}}", + "@a11yOpenItemCount": { + "description": "Accessibility label for opening a grouped item with count", + "placeholders": { + "title": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "a11yOpenAlbumByArtistTrackCount": "Open album {albumName} by {artistName}, {trackCount} tracks", + "@a11yOpenAlbumByArtistTrackCount": { + "description": "Accessibility label for opening an album item with track count", + "placeholders": { + "albumName": { + "type": "String" + }, + "artistName": { + "type": "String" + }, + "trackCount": { + "type": "int" + } + } + }, + "a11yTrackByArtist": "{trackName} by {artistName}", + "@a11yTrackByArtist": { + "description": "Accessibility label for a queue or list track item", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "a11ySelectAlbum": "Select album {albumName}", + "@a11ySelectAlbum": { + "description": "Accessibility label for selecting an album", + "placeholders": { + "albumName": { + "type": "String" + } + } + }, + "a11yOpenAlbum": "Open album {albumName}", + "@a11yOpenAlbum": { + "description": "Accessibility label for opening an album", + "placeholders": { + "albumName": { + "type": "String" + } + } + }, + "settingsFiles": "Files & Folders", + "@settingsFiles": { + "description": "Settings menu item - file and folder settings" + }, + "settingsFilesSubtitle": "Download location, filename, folder structure", + "@settingsFilesSubtitle": { + "description": "Subtitle for files & folders settings" + }, + "settingsMetadata": "Metadata", + "@settingsMetadata": { + "description": "Settings menu item - metadata settings" + }, + "settingsMetadataSubtitle": "Cover art, tags, ReplayGain, providers", + "@settingsMetadataSubtitle": { + "description": "Subtitle for metadata settings" + }, + "settingsLyrics": "Lyrics", + "@settingsLyrics": { + "description": "Settings menu item - lyrics settings" + }, + "settingsLyricsSubtitle": "Embed, mode, providers, language options", + "@settingsLyricsSubtitle": { + "description": "Subtitle for lyrics settings" + }, + "settingsApp": "App", + "@settingsApp": { + "description": "Settings menu item - app settings" + }, + "settingsAppSubtitle": "Updates, data, extension repo, debug", + "@settingsAppSubtitle": { + "description": "Subtitle for app settings" + }, + "sectionMetadataProviders": "Providers", + "@sectionMetadataProviders": { + "description": "Settings section header for metadata providers" + }, + "sectionDuplicates": "Duplicates", + "@sectionDuplicates": { + "description": "Settings section header for deduplication" + }, + "sectionLyricsProviderOptions": "Provider Options", + "@sectionLyricsProviderOptions": { + "description": "Settings section header for per-provider lyrics options" + }, + "metadataProvidersTitle": "Metadata Provider Priority", + "@metadataProvidersTitle": { + "description": "Settings item title for metadata provider order" + }, + "metadataProvidersSubtitle": "Drag to set search and metadata source order", + "@metadataProvidersSubtitle": { + "description": "Subtitle for metadata provider priority item" + }, + "downloadDeduplication": "Skip Duplicate Downloads", + "@downloadDeduplication": { + "description": "Setting - skip tracks already in download history" + }, + "downloadDeduplicationEnabled": "Already-downloaded tracks will be skipped", + "@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" @@ -6004,99 +5746,1084 @@ "@trackOptionDownloadQualityVariant": { "description": "Track menu action to download another quality version" }, + "downloadFallbackExtensions": "Fallback Extensions", + "@downloadFallbackExtensions": { + "description": "Settings item for configuring fallback extension providers" + }, + "downloadFallbackExtensionsSubtitle": "Choose which extensions can be used as fallback", + "@downloadFallbackExtensionsSubtitle": { + "description": "Subtitle for fallback extensions item" + }, + "editMetadataFieldDateHint": "YYYY-MM-DD or YYYY", + "@editMetadataFieldDateHint": { + "description": "Hint text for the edit metadata date field" + }, + "editMetadataFieldTrackTotal": "Track Total", + "@editMetadataFieldTrackTotal": { + "description": "Label for total tracks field in the edit metadata sheet" + }, + "editMetadataFieldDiscTotal": "Disc Total", + "@editMetadataFieldDiscTotal": { + "description": "Label for total discs field in the edit metadata sheet" + }, + "editMetadataFieldComposer": "Composer", + "@editMetadataFieldComposer": { + "description": "Label for composer field in the edit metadata sheet" + }, + "editMetadataFieldComment": "Comment", + "@editMetadataFieldComment": { + "description": "Label for comment field in the edit metadata sheet" + }, + "trackAlbumType": "Release Type", + "@trackAlbumType": { + "description": "Label for an album or release type metadata value" + }, + "editMetadataFieldAlbumTypeHint": "Album, single, EP, compilation...", + "@editMetadataFieldAlbumTypeHint": { + "description": "Hint for the release type metadata field" + }, + "editMetadataFieldExplicit": "Explicit", + "@editMetadataFieldExplicit": { + "description": "Label for the explicit content metadata field" + }, + "editMetadataFieldExplicitHint": "Mark this track as containing explicit content", + "@editMetadataFieldExplicitHint": { + "description": "Description for the explicit content metadata switch" + }, + "metadataExplicitValue": "Explicit", + "@metadataExplicitValue": { + "description": "Displayed value when a track is marked explicit" + }, + "editMetadataFieldUpc": "UPC / Barcode", + "@editMetadataFieldUpc": { + "description": "Label for the release barcode metadata field" + }, + "editMetadataFieldUpcHint": "Numeric UPC, EAN, or GTIN", + "@editMetadataFieldUpcHint": { + "description": "Hint for the release barcode metadata field" + }, + "editMetadataAdvanced": "Advanced", + "@editMetadataAdvanced": { + "description": "Expandable section label for advanced metadata fields" + }, + "libraryFilterMetadataMissingTrackNumber": "Missing track number", + "@libraryFilterMetadataMissingTrackNumber": { + "description": "Filter option - items missing track number" + }, + "libraryFilterMetadataMissingDiscNumber": "Missing disc number", + "@libraryFilterMetadataMissingDiscNumber": { + "description": "Filter option - items missing disc number" + }, + "libraryFilterMetadataMissingArtist": "Missing artist", + "@libraryFilterMetadataMissingArtist": { + "description": "Filter option - items missing artist" + }, + "libraryFilterMetadataIncorrectIsrcFormat": "Incorrect ISRC format", + "@libraryFilterMetadataIncorrectIsrcFormat": { + "description": "Filter option - items with an invalid ISRC format" + }, + "libraryFilterMetadataMissingIsrc": "Missing ISRC", + "@libraryFilterMetadataMissingIsrc": { + "description": "Filter option - items without any ISRC tag" + }, + "libraryFilterMetadataMissingLabel": "Missing label", + "@libraryFilterMetadataMissingLabel": { + "description": "Filter option - items missing record label" + }, + "collectionDeletePlaylistsMessage": "Delete {count} {count, plural, =1{playlist} other{playlists}}?", + "@collectionDeletePlaylistsMessage": { + "description": "Confirmation message for deleting selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionPlaylistsDeleted": "{count} {count, plural, =1{playlist} other{playlists}} deleted", + "@collectionPlaylistsDeleted": { + "description": "Snackbar after deleting selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionAddedTracksToPlaylist": "Added {count} {count, plural, =1{track} other{tracks}} to {playlistName}", + "@collectionAddedTracksToPlaylist": { + "description": "Snackbar after adding multiple tracks to a playlist", + "placeholders": { + "count": { + "type": "int" + }, + "playlistName": { + "type": "String" + } + } + }, + "collectionAddedTracksToPlaylistWithExisting": "Added {count} {count, plural, =1{track} other{tracks}} to {playlistName} ({alreadyCount} already in playlist)", + "@collectionAddedTracksToPlaylistWithExisting": { + "description": "Snackbar after adding multiple tracks to a playlist when some were already present", + "placeholders": { + "count": { + "type": "int" + }, + "playlistName": { + "type": "String" + }, + "alreadyCount": { + "type": "int" + } + } + }, + "itemCount": "{count} {count, plural, =1{item} other{items}}", + "@itemCount": { + "description": "Generic item count label", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackReEnrichSuccessWithFailures": "Metadata re-enriched successfully ({successCount}/{total}) - Failed: {failedCount}", + "@trackReEnrichSuccessWithFailures": { + "description": "Snackbar summary after batch metadata re-enrichment finishes with failures", + "placeholders": { + "successCount": { + "type": "int" + }, + "total": { + "type": "int" + }, + "failedCount": { + "type": "int" + } + } + }, + "selectionDeleteTracksCount": "Delete {count} {count, plural, =1{track} other{tracks}}", + "@selectionDeleteTracksCount": { + "description": "Button label for deleting selected tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "queueDownloadSpeedStatus": "Downloading - {speed} MB/s", + "@queueDownloadSpeedStatus": { + "description": "Queue status while downloading with speed", + "placeholders": { + "speed": { + "type": "String" + } + } + }, + "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" + }, + "@queueCheckingDownloadSession": { + "description": "Queue status while the download provider's session is being checked during preparation (preparationStage 'checking_session'). This is about the provider session, not about locating a finished file." + }, + "a11ySelectTrack": "Select track", + "@a11ySelectTrack": { + "description": "Accessibility label for selecting a track" + }, + "a11yDeselectTrack": "Deselect track", + "@a11yDeselectTrack": { + "description": "Accessibility label for deselecting a track" + }, + "a11yPlayTrackByArtist": "Play {trackName} by {artistName}", + "@a11yPlayTrackByArtist": { + "description": "Accessibility label for playing a local library track", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "storeExtensionsCount": "{count} {count, plural, =1{extension} other{extensions}}", + "@storeExtensionsCount": { + "description": "Store extension result count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "storeRequiresVersion": "Requires v{version}+", + "@storeRequiresVersion": { + "description": "Store compatibility badge for minimum app version", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "actionGo": "Go", + "@actionGo": { + "description": "Generic action button label" + }, + "logIssueSummary": "Issue Summary", + "@logIssueSummary": { + "description": "Header for log issue analysis summary" + }, + "logTotalErrors": "Total errors: {count}", + "@logTotalErrors": { + "description": "Total error count in log issue analysis", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "logAffectedDomains": "Affected: {domains}", + "@logAffectedDomains": { + "description": "Affected domains in log issue analysis", + "placeholders": { + "domains": { + "type": "String" + } + } + }, + "libraryScanCancelled": "Scan cancelled", + "@libraryScanCancelled": { + "description": "Library scan status when a scan was cancelled" + }, + "libraryScanCancelledSubtitle": "You can retry the scan when ready.", + "@libraryScanCancelledSubtitle": { + "description": "Library scan status subtitle after cancellation" + }, + "libraryDownloadsHistoryExcluded": "{count} from Downloads history (excluded from list)", + "@libraryDownloadsHistoryExcluded": { + "description": "Library count note for downloaded history items excluded from the local list", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadNativeWorker": "Native download worker", + "@downloadNativeWorker": { + "description": "Setting title for Android native download worker" + }, + "downloadNativeWorkerSubtitle": "Android background service for extension downloads", + "@downloadNativeWorkerSubtitle": { + "description": "Setting subtitle for Android native download worker" + }, + "extensionServiceStatus": "Service Status", + "@extensionServiceStatus": { + "description": "Extension detail section header for service status" + }, + "extensionServiceHealth": "Service health", + "@extensionServiceHealth": { + "description": "Extension capability label for service health checks" + }, + "extensionHealthChecksConfigured": "{count} {count, plural, =1{check} other{checks}} configured", + "@extensionHealthChecksConfigured": { + "description": "Extension service health check count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionOauthConnectHint": "Tap Connect to Spotify to fill this field.", + "@extensionOauthConnectHint": { + "description": "Hint for an OAuth login link field before connecting Spotify" + }, + "extensionLastChecked": "Last checked {time}", + "@extensionLastChecked": { + "description": "Timestamp for the latest extension service health check", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "extensionRefreshStatus": "Refresh status", + "@extensionRefreshStatus": { + "description": "Tooltip for refreshing extension service health status" + }, + "extensionCustomUrlHandling": "Custom URL Handling", + "@extensionCustomUrlHandling": { + "description": "Extension detail section title for custom URL handling" + }, + "extensionCustomUrlHandlingSubtitle": "This extension can handle links from these sites", + "@extensionCustomUrlHandlingSubtitle": { + "description": "Extension detail subtitle for custom URL handling" + }, + "extensionCustomUrlHandlingShareHint": "Share links from these sites to SpotiFLAC Mobile and this extension will handle them.", + "@extensionCustomUrlHandlingShareHint": { + "description": "Extension detail hint explaining share-to-app URL handling" + }, + "extensionSettingsCount": "{count} {count, plural, =1{setting} other{settings}}", + "@extensionSettingsCount": { + "description": "Count of settings exposed by an extension quality option", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionHealthOnline": "Online", + "@extensionHealthOnline": { + "description": "Extension service health status - online" + }, + "extensionHealthDegraded": "Degraded", + "@extensionHealthDegraded": { + "description": "Extension service health status - degraded" + }, + "extensionHealthOffline": "Offline", + "@extensionHealthOffline": { + "description": "Extension service health status - offline" + }, + "extensionHealthNotConfigured": "Not configured", + "@extensionHealthNotConfigured": { + "description": "Extension service health status - not configured" + }, + "extensionHealthUnknown": "Unknown", + "@extensionHealthUnknown": { + "description": "Extension service health status - unknown" + }, + "extensionHealthRequired": "required", + "@extensionHealthRequired": { + "description": "Label for a required extension service health check" + }, + "extensionSettingNotSet": "Not set", + "@extensionSettingNotSet": { + "description": "Value shown when an extension setting has no value" + }, + "extensionActionFailed": "Action failed", + "@extensionActionFailed": { + "description": "Fallback error when an extension action fails without details" + }, + "extensionEnterValue": "Enter value", + "@extensionEnterValue": { + "description": "Hint for editing an extension setting value" + }, + "extensionHealthServiceOnline": "Service online", + "@extensionHealthServiceOnline": { + "description": "Tooltip for online extension service" + }, + "extensionHealthServiceDegraded": "Service degraded", + "@extensionHealthServiceDegraded": { + "description": "Tooltip for degraded extension service" + }, + "extensionHealthServiceOffline": "Service offline", + "@extensionHealthServiceOffline": { + "description": "Tooltip for offline extension service" + }, + "extensionHealthServiceUnknown": "Service status unknown", + "@extensionHealthServiceUnknown": { + "description": "Tooltip for unknown extension service health" + }, + "audioAnalysisStereo": "Stereo", + "@audioAnalysisStereo": { + "description": "Audio channel layout label - stereo" + }, + "audioAnalysisMono": "Mono", + "@audioAnalysisMono": { + "description": "Audio channel layout label - mono" + }, + "trackOpenInService": "Open in {serviceName}", + "@trackOpenInService": { + "description": "Button label to open a track in a named music service", + "placeholders": { + "serviceName": { + "type": "String" + } + } + }, + "trackLyricsEmbeddedSource": "Embedded", + "@trackLyricsEmbeddedSource": { + "description": "Lyrics source label for embedded lyrics" + }, + "unknownAlbum": "Unknown Album", + "@unknownAlbum": { + "description": "Fallback album name when metadata is missing" + }, + "unknownArtist": "Unknown Artist", + "@unknownArtist": { + "description": "Fallback artist name when metadata is missing" + }, + "permissionAudio": "Audio", + "@permissionAudio": { + "description": "Audio permission type label" + }, + "permissionStorage": "Storage", + "@permissionStorage": { + "description": "Storage permission type label" + }, + "permissionNotification": "Notification", + "@permissionNotification": { + "description": "Notification permission type label" + }, + "errorInvalidFolderSelected": "Invalid folder selected", + "@errorInvalidFolderSelected": { + "description": "Error when the selected folder is invalid" + }, + "storeAnyVersion": "Any", + "@storeAnyVersion": { + "description": "Store detail value when any app version is accepted" + }, + "storeCategoryMetadata": "Metadata", + "@storeCategoryMetadata": { + "description": "Store extension category - metadata" + }, + "storeCategoryDownload": "Download", + "@storeCategoryDownload": { + "description": "Store extension category - download" + }, + "storeCategoryUtility": "Utility", + "@storeCategoryUtility": { + "description": "Store extension category - utility" + }, + "storeCategoryLyrics": "Lyrics", + "@storeCategoryLyrics": { + "description": "Store extension category - lyrics" + }, + "storeCategoryIntegration": "Integration", + "@storeCategoryIntegration": { + "description": "Store extension category - integration" + }, + "artistReleases": "Releases", + "@artistReleases": { + "description": "Section header for all artist releases" + }, + "editMetadataSelectNone": "None", + "@editMetadataSelectNone": { + "description": "Button to clear selected fields for auto-fill" + }, + "queueRetryAllFailed": "Retry {count} failed", + "@queueRetryAllFailed": { + "description": "Button to retry every failed download in the queue", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "settingsSaveDownloadHistory": "Save download history", + "@settingsSaveDownloadHistory": { + "description": "Settings switch title for storing completed downloads in history" + }, + "settingsSaveDownloadHistorySubtitle": "Keep completed downloads in history and library views", + "@settingsSaveDownloadHistorySubtitle": { + "description": "Settings switch subtitle for storing completed downloads in history" + }, + "dialogDisableHistoryTitle": "Turn off download history?", + "@dialogDisableHistoryTitle": { + "description": "Confirmation dialog title shown before disabling download history" + }, + "dialogDisableHistoryMessage": "Existing history will be cleared. Downloaded files will not be deleted.", + "@dialogDisableHistoryMessage": { + "description": "Confirmation dialog message shown before disabling download history" + }, + "dialogDisableAndClear": "Turn off and clear", + "@dialogDisableAndClear": { + "description": "Confirmation action to disable download history and clear existing entries" + }, + "openInOtherServices": "Open in Other Services", + "@openInOtherServices": { + "description": "Title and tooltip for finding the current collection in other services" + }, + "shareSheetNoExtensions": "No other compatible services", + "@shareSheetNoExtensions": { + "description": "Empty state when no extensions can be searched for cross-service links" + }, + "shareSheetNotFound": "Not found", + "@shareSheetNotFound": { + "description": "Cross-service share sheet row subtitle when a service has no match" + }, + "shareSheetCopyLink": "Copy Link", + "@shareSheetCopyLink": { + "description": "Tooltip for copying a cross-service link" + }, + "shareSheetLinkCopied": "{service} link copied", + "@shareSheetLinkCopied": { + "description": "Snackbar after copying a cross-service link", + "placeholders": { + "service": {} + } + }, + "libraryPlayback": "Playback", + "@libraryPlayback": { + "description": "Section header for playback settings in library settings" + }, + "libraryExternalPlayer": "External player", + "@libraryExternalPlayer": { + "description": "Setting option to use an external music player" + }, + "libraryExternalPlayerSubtitle": "Recommended for listening, best quality, gapless playback, EQ, and wider format support", + "@libraryExternalPlayerSubtitle": { + "description": "Subtitle for external player option" + }, + "libraryBuiltInPreviewPlayer": "Built-in preview player", + "@libraryBuiltInPreviewPlayer": { + "description": "Setting option to use the built-in preview player" + }, + "libraryBuiltInPreviewPlayerSubtitle": "Quick local previews inside SpotiFLAC Mobile", + "@libraryBuiltInPreviewPlayerSubtitle": { + "description": "Subtitle for built-in preview player option" + }, + "libraryBuiltInPlayerInfo": "The built-in player is a preview tool for checking local tracks quickly. Use an external music player for actual listening.", + "@libraryBuiltInPlayerInfo": { + "description": "Info note explaining the built-in player is for previews only" + }, + "nowPlayingTitle": "Now Playing", + "@nowPlayingTitle": { + "description": "Title for the now playing screen" + }, + "nowPlayingNothingPlaying": "Nothing is playing", + "@nowPlayingNothingPlaying": { + "description": "Empty state when no track is currently playing" + }, + "nowPlayingMinimize": "Minimize", + "@nowPlayingMinimize": { + "description": "Tooltip for minimizing the now playing screen" + }, + "nowPlayingUpNext": "Up next", + "@nowPlayingUpNext": { + "description": "Title for the playback queue sheet" + }, + "nowPlayingPreviousTrack": "Previous track", + "@nowPlayingPreviousTrack": { + "description": "Tooltip for the previous-track playback control" + }, + "nowPlayingNextTrack": "Next track", + "@nowPlayingNextTrack": { + "description": "Tooltip for the next-track playback control" + }, + "nowPlayingDetails": "Details", + "@nowPlayingDetails": { + "description": "Menu item and section title for track metadata details" + }, + "nowPlayingSleepTimer": "Sleep timer", + "@nowPlayingSleepTimer": { + "description": "Menu item and sheet title for the playback sleep timer" + }, + "nowPlayingSleepTimerActive": "Ends at {time}", + "@nowPlayingSleepTimerActive": { + "description": "Active sleep timer deadline shown in the player menu", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "nowPlayingSleepTimerMinutes": "{minutes, plural, =1{1 minute} other{{minutes} minutes}}", + "@nowPlayingSleepTimerMinutes": { + "description": "Duration choice for the playback sleep timer", + "placeholders": { + "minutes": { + "type": "int" + } + } + }, + "nowPlayingSleepTimerOff": "Turn off sleep timer", + "@nowPlayingSleepTimerOff": { + "description": "Action to cancel the active playback sleep timer" + }, + "nowPlayingSleepTimerSet": "Sleep timer set for {duration}", + "@nowPlayingSleepTimerSet": { + "description": "Confirmation after setting the playback sleep timer", + "placeholders": { + "duration": { + "type": "String" + } + } + }, + "nowPlayingSleepTimerCancelled": "Sleep timer turned off", + "@nowPlayingSleepTimerCancelled": { + "description": "Confirmation after cancelling the playback sleep timer" + }, + "nowPlayingOpenInExternalPlayer": "Open in external player", + "@nowPlayingOpenInExternalPlayer": { + "description": "Menu item to open the current track in an external player" + }, + "nowPlayingTabPlayer": "Player", + "@nowPlayingTabPlayer": { + "description": "Tab label for the player view" + }, + "nowPlayingTabLyrics": "Lyrics", + "@nowPlayingTabLyrics": { + "description": "Tab label for the lyrics view" + }, + "nowPlayingNoLyrics": "No lyrics in this file", + "@nowPlayingNoLyrics": { + "description": "Empty state when the playing file has no embedded lyrics" + }, + "nowPlayingLibraryEmpty": "Your library is empty", + "@nowPlayingLibraryEmpty": { + "description": "Snackbar when shuffle library is requested but library has no tracks" + }, + "nowPlayingShuffleLibraryFailed": "Could not shuffle library: {error}", + "@nowPlayingShuffleLibraryFailed": { + "description": "Snackbar when shuffling the library fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "nowPlayingShuffleOn": "Shuffle on", + "@nowPlayingShuffleOn": { + "description": "Tooltip when shuffle mode is enabled" + }, + "nowPlayingPlayInOrder": "Play in order", + "@nowPlayingPlayInOrder": { + "description": "Tooltip when shuffle mode is disabled" + }, + "nowPlayingShuffleLibrary": "Shuffle library", + "@nowPlayingShuffleLibrary": { + "description": "Button label to shuffle and play the entire local library" + }, + "nowPlayingQueueEmpty": "Queue is empty", + "@nowPlayingQueueEmpty": { + "description": "Empty state when the playback queue has no items" + }, + "nowPlayingNoMetadata": "No metadata available", + "@nowPlayingNoMetadata": { + "description": "Empty state when track metadata cannot be loaded" + }, + "announcementUnableToOpenLink": "Unable to open link. Please try again.", + "@announcementUnableToOpenLink": { + "description": "Snackbar shown when an announcement CTA link cannot be opened" + }, + "trackConvertLosslessOutputWithCap": "Lossless output with {quality} cap", + "@trackConvertLosslessOutputWithCap": { + "description": "Hint shown when lossless conversion will cap bit depth or sample rate", + "placeholders": { + "quality": { + "type": "String" + } + } + }, + "trackConvertConfirmMessageLosslessCapped": "Convert from {sourceFormat} to {targetFormat} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original file will be deleted after conversion.", + "@trackConvertConfirmMessageLosslessCapped": { + "description": "Confirmation dialog message for capped lossless conversion of a single file", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "selectionBatchConvertConfirmMessageLosslessCapped": "Convert {count} {count, plural, =1{track} other{tracks}} to {format} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original files will be deleted after conversion.", + "@selectionBatchConvertConfirmMessageLosslessCapped": { + "description": "Confirmation dialog message for capped lossless batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "trackConvertActionLabelLossless": "{sourceFormat} → {targetFormat} ({quality})", + "@trackConvertActionLabelLossless": { + "description": "Convert button label for lossless conversion with quality cap", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "trackConvertActionLabelLossy": "{sourceFormat} → {targetFormat} @ {bitrate}", + "@trackConvertActionLabelLossy": { + "description": "Convert button label for lossy conversion", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "aboutPaxsenixSubtitle": "Lyrics proxy for Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou, and Genius", + "@aboutPaxsenixSubtitle": { + "description": "Subtitle for Paxsenix special thanks entry on the about page" + }, + "snackbarPlayingNext": "Playing next", + "@snackbarPlayingNext": { + "description": "Snackbar when a track is inserted as the next queue item" + }, + "snackbarAddedToQueueGeneric": "Added to queue", + "@snackbarAddedToQueueGeneric": { + "description": "Snackbar when a track is added to the playback queue without naming it" + }, + "selectionDeletePlaylistsCount": "Delete {count} {count, plural, =1{playlist} other{playlists}}", + "@selectionDeletePlaylistsCount": { + "description": "Button label for deleting multiple selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "actionShuffle": "Shuffle", + "@actionShuffle": { + "description": "Tooltip for shuffle playback action" + }, + "downloadPrimaryArtistOnlyOn": "Primary only: On", + "@downloadPrimaryArtistOnlyOn": { + "description": "Status label when primary-artist-only folder naming is enabled" + }, + "downloadPrimaryArtistOnlyOff": "Primary only: Off", + "@downloadPrimaryArtistOnlyOff": { + "description": "Status label when primary-artist-only folder naming is disabled" + }, + "downloadAlbumArtistMetadataPrimaryOnly": "Album Artist metadata: Primary only", + "@downloadAlbumArtistMetadataPrimaryOnly": { + "description": "Status label when album-artist folder filtering uses primary artist only" + }, + "downloadAlbumArtistMetadataFull": "Album Artist metadata: Full", + "@downloadAlbumArtistMetadataFull": { + "description": "Status label when album-artist folder filtering uses full metadata" + }, + "trackConvertOriginal": "Original", + "@trackConvertOriginal": { + "description": "Label for keeping original bit depth or sample rate during conversion" + }, + "trackConvertOriginalQuality": "Original quality", + "@trackConvertOriginalQuality": { + "description": "Label when no bit depth or sample rate cap is applied during lossless conversion" + }, + "trackConvertLosslessSuffix": "Lossless", + "@trackConvertLosslessSuffix": { + "description": "Suffix used in converted lossless quality labels" + }, + "trackConvertDithering": "Dithering", + "@trackConvertDithering": { + "description": "Section label for lossless conversion dithering options" + }, + "trackConvertResampler": "Resampler", + "@trackConvertResampler": { + "description": "Section label for lossless conversion resampler options" + }, + "trackConvertDitherNone": "None", + "@trackConvertDitherNone": { + "description": "Lossless conversion dither option with no dithering applied" + }, + "trackConvertDitherTriangular": "TPDF", + "@trackConvertDitherTriangular": { + "description": "Lossless conversion triangular probability density function dither option" + }, + "trackConvertDitherTriangularHp": "Triangular HP", + "@trackConvertDitherTriangularHp": { + "description": "Lossless conversion high-pass triangular dither option" + }, + "trackConvertResamplerSwr": "SWR", + "@trackConvertResamplerSwr": { + "description": "Lossless conversion default FFmpeg swresample resampler option" + }, + "trackConvertResamplerSoxr": "SoXr", + "@trackConvertResamplerSoxr": { + "description": "Lossless conversion SoX resampler option" + }, + "updateSeeReleaseNotes": "See release notes for details.", + "@updateSeeReleaseNotes": { + "description": "Fallback changelog text when release notes cannot be parsed" + }, + "unknownTitle": "Unknown title", + "@unknownTitle": { + "description": "Fallback track title when metadata is missing" + }, + "trackPlayNext": "Play next", + "@trackPlayNext": { + "description": "Menu action to play a track as the next queue item" + }, + "trackAddToQueue": "Add to queue", + "@trackAddToQueue": { + "description": "Menu action to add a track to the playback queue" + }, + "snackbarExtensionInstalledEnable": "{extensionName} installed. Enable it in Settings > Extensions", + "@snackbarExtensionInstalledEnable": { + "description": "Snackbar after installing an extension from the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "snackbarExtensionUpdatedVersion": "{extensionName} updated to v{version}", + "@snackbarExtensionUpdatedVersion": { + "description": "Snackbar after updating an extension from the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + }, + "version": { + "type": "String" + } + } + }, + "snackbarFailedToInstallNamed": "Failed to install {extensionName}", + "@snackbarFailedToInstallNamed": { + "description": "Snackbar when extension install fails in the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "snackbarFailedToUpdateNamed": "Failed to update {extensionName}", + "@snackbarFailedToUpdateNamed": { + "description": "Snackbar when extension update fails in the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "releaseTypeEp": "EP", + "@releaseTypeEp": { + "description": "Badge label for EP releases" + }, + "releaseTypeSingle": "Single", + "@releaseTypeSingle": { + "description": "Badge label for single releases" + }, + "trackCoverOnline": "Online cover", + "@trackCoverOnline": { + "description": "Label shown when metadata autofill downloaded cover art from the internet" + }, + "regionCountryUS": "United States", + "@regionCountryUS": { + "description": "Country name for SongLink region picker" + }, + "regionCountryGB": "United Kingdom", + "@regionCountryGB": { + "description": "Country name for SongLink region picker" + }, + "regionCountryFR": "France", + "@regionCountryFR": { + "description": "Country name for SongLink region picker" + }, + "regionCountryDE": "Germany", + "@regionCountryDE": { + "description": "Country name for SongLink region picker" + }, + "regionCountryJP": "Japan", + "@regionCountryJP": { + "description": "Country name for SongLink region picker" + }, + "regionCountryKR": "South Korea", + "@regionCountryKR": { + "description": "Country name for SongLink region picker" + }, + "regionCountryIN": "India", + "@regionCountryIN": { + "description": "Country name for SongLink region picker" + }, + "regionCountryID": "Indonesia", + "@regionCountryID": { + "description": "Country name for SongLink region picker" + }, + "regionCountryBR": "Brazil", + "@regionCountryBR": { + "description": "Country name for SongLink region picker" + }, + "regionCountryMX": "Mexico", + "@regionCountryMX": { + "description": "Country name for SongLink region picker" + }, + "regionCountryAU": "Australia", + "@regionCountryAU": { + "description": "Country name for SongLink region picker" + }, + "regionCountryCA": "Canada", + "@regionCountryCA": { + "description": "Country name for SongLink region picker" + }, + "regionCountryXK": "Kosovo", + "@regionCountryXK": { + "description": "Country name for SongLink region picker" + }, + "extensionVerificationBrowserTitle": "Verification browser", + "@extensionVerificationBrowserTitle": { + "description": "Settings option title for extension verification browser preference" + }, + "extensionVerificationBrowserSubtitleExternal": "Open challenges in the default browser first", + "@extensionVerificationBrowserSubtitleExternal": { + "description": "Subtitle when external browser is preferred for extension verification" + }, + "extensionVerificationBrowserSubtitleInApp": "Open challenges in the in-app browser first", + "@extensionVerificationBrowserSubtitleInApp": { + "description": "Subtitle when in-app browser is preferred for extension verification" + }, + "extensionVerificationBrowserExternal": "External", + "@extensionVerificationBrowserExternal": { + "description": "Chip label for external browser verification mode" + }, + "extensionVerificationBrowserInApp": "In-app", + "@extensionVerificationBrowserInApp": { + "description": "Chip label for in-app browser verification mode" + }, + "extensionVerificationUnavailable": "No verification page is available for {extension}. Retry the download to request a new challenge.", + "@extensionVerificationUnavailable": { + "description": "Shown when the app cannot retrieve a pending verification challenge", + "placeholders": { + "extension": { + "type": "String" + } + } + }, + "extensionVerificationHelpTitleManual": "Open verification manually", + "@extensionVerificationHelpTitleManual": { + "description": "Dialog title when automatic browser launch for verification fails" + }, + "extensionVerificationHelpTitleWaiting": "Verification still waiting", + "@extensionVerificationHelpTitleWaiting": { + "description": "Dialog title when verification is taking longer than expected" + }, + "extensionVerificationHelpMessageManual": "SpotiFLAC Mobile could not open the browser automatically. Open this link in your browser, or copy it manually.", + "@extensionVerificationHelpMessageManual": { + "description": "Dialog message when automatic browser launch for verification fails" + }, + "extensionVerificationHelpMessageWaiting": "If the browser did not open, or verification finished but did not return to SpotiFLAC Mobile, open this link again or copy it manually.", + "@extensionVerificationHelpMessageWaiting": { + "description": "Dialog message when verification may need manual browser help" + }, + "extensionVerificationClose": "Close", + "@extensionVerificationClose": { + "description": "Button to dismiss the extension verification help dialog" + }, + "extensionVerificationCopyLink": "Copy link", + "@extensionVerificationCopyLink": { + "description": "Button to copy the extension verification URL" + }, + "extensionVerificationLinkCopied": "Verification link copied", + "@extensionVerificationLinkCopied": { + "description": "Snackbar after copying the extension verification URL" + }, + "extensionVerificationOpenBrowser": "Open browser", + "@extensionVerificationOpenBrowser": { + "description": "Button to open the extension verification URL in a browser" + }, "settingsSearchHint": "Search settings", + "@settingsSearchHint": { + "description": "Placeholder of the search field on the Settings tab" + }, "settingsSearchNoResults": "No settings match \"{query}\"", + "@settingsSearchNoResults": { + "description": "Shown when a Settings search returns nothing", + "placeholders": { + "query": { + "type": "String" + } + } + }, "settingsGroupInterface": "Extensions & appearance", + "@settingsGroupInterface": { + "description": "Settings group covering look and feel" + }, "settingsGroupContent": "Content & metadata", + "@settingsGroupContent": { + "description": "Settings group covering the library, metadata and lyrics" + }, "settingsGroupDownloads": "Downloads & files", + "@settingsGroupDownloads": { + "description": "Settings group covering download behaviour and storage" + }, "settingsGroupSystem": "System", + "@settingsGroupSystem": { + "description": "Settings group covering app-level data, cache and logs" + }, "settingsGroupHelp": "About & support", - "collectionExportM3u": "Export as M3U8", - "collectionExportM3uDone": "Exported {exported} of {total} tracks", - "collectionExportM3uNone": "No downloaded files to export", - "collectionExportM3uFailed": "Export failed", - "trackOpenOn": "Open on...", - "trackOpenOnNoLinks": "No platform links found for this track.", - "libraryReviewDuplicates": "Review duplicates", - "libraryReviewDuplicatesSubtitle": "Find tracks stored more than once", - "duplicatesTitle": "Duplicates", - "duplicatesEmpty": "No duplicate tracks found.", - "duplicatesKeepBest": "Keep best", - "duplicatesKeepBestMessage": "Delete {count} lower-quality copies of \"{trackName}\"?", - "duplicatesDeleteCopyMessage": "Delete this copy of \"{trackName}\"?", - "downloadAutoConvert": "Auto-convert after download", - "downloadAutoConvertSubtitle": "Convert completed downloads to a smaller lossy format. The original is replaced only after conversion succeeds.", - "downloadAutoConvertFormat": "Output format", - "downloadAutoConvertFormatSubtitle": "Choose the lossy format used for newly completed downloads.", - "downloadAutoConvertBitrate": "Output quality", - "downloadAutoConvertBitrateSubtitle": "Higher bitrates preserve more detail but create larger files.", - "downloadAutoConvertMp3Subtitle": "Best compatibility across players and devices", - "downloadAutoConvertM4aSubtitle": "Efficient AAC audio in an M4A container", - "downloadAutoConvertOpusSubtitle": "Best efficiency for modern players", - "appearanceForceBlur": "Always use blur effects", - "appearanceForceBlurSubtitle": "Enable the navigation bar blur even on devices where it is off by default. May cost performance.", - "recentClearAllMessage": "Clear all recent activity? Download history and music files will not be deleted.", - "libraryAddFolder": "Add library folder", - "libraryAddFolderSubtitle": "Internal storage, SD card, SSD, or another external drive", - "librarySourceOnline": "Online", - "librarySourceOffline": "Offline. Reconnect the storage to restore these tracks", - "librarySourceDisabled": "Disabled", - "librarySourceScanCount": "{scanned} of {total} files scanned ({progress}%)", - "libraryExternalStorage": "External storage", - "libraryRemoveFolder": "Remove library folder", - "libraryRemoveFolderMessage": "Remove this folder and its indexed tracks from SpotiFLAC Mobile? Audio files on the storage will not be deleted.", - "trackReEnrichModeIsrc": "ISRC only", - "trackReEnrichModeIsrcSubtitle": "Find and add the recording identifier without changing other tags", - "trackReEnrichModeMissing": "Fill missing tags", - "trackReEnrichModeMissingSubtitle": "Keep existing values and fill only fields that are empty", - "trackReEnrichModeReplace": "Update selected tags", - "trackReEnrichModeReplaceSubtitle": "Choose which existing values may be replaced by online metadata", - "trackReEnrichFieldsTitle": "Tags to update", - "trackReEnrichReview": "Review changes", - "trackReEnrichReviewTitle": "Review metadata changes", - "trackReEnrichReviewSubtitle": "{changeCount} proposed changes across {trackCount} tracks", - "trackReEnrichNoChanges": "No metadata changes were found for the selected tracks.", - "trackReEnrichApplyChanges": "Apply changes", - "trackReEnrichRefreshOnline": "Refresh from online", - "editMetadataAutoFillSource": "Metadata source", - "editMetadataAutoFillSourceAutomatic": "Automatic (provider priority)", - "editMetadataAutoFillFind": "Find metadata", - "editMetadataAutoFillPreview": "Data from {source}", - "editMetadataAutoFillCoverAvailable": "Cover artwork available", - "editMetadataAutoFillApply": "Apply selected data", - "editMetadataAutoFillDoneFromSource": "Filled {count} {count, plural, =1{field} other{fields}} from {source}", - "queuePlaylistCount": "{count, plural, =1{1 playlist} other{{count} playlists}}", - "queueEmptyPlaylistsSubtitle": "Create a playlist to organize your tracks", - "libraryDefaultView": "Default view", - "libraryDefaultViewLastUsed": "Last used", - "audioAnalysisCutoffNotDetected": "Not detected", - "queueCancelledTitle": "Download cancelled", - "queueCancelledMessage": "This download was cancelled. Retry it or remove it from the queue.", - "trackCoverResolution": "Cover resolution", - "trackCoverResolutionHint": "Sets the longest edge when saved. Enlarging does not add image detail.", - "trackCoverResizeFailed": "The cover image could not be resized. Please try another size or image.", - "queueDownloadNext": "Download next", - "queueMoveUp": "Move up", - "queueMoveDown": "Move down", - "editMetadataMusicBrainzButton": "Fetch from MusicBrainz", - "editMetadataMusicBrainzFilled": "Updated from MusicBrainz", - "editMetadataMusicBrainzNothing": "Nothing found on MusicBrainz", - "editMetadataMusicBrainzNeedsIsrc": "Requires an ISRC tag", - "nowPlayingRepeatOff": "Repeat off", - "nowPlayingRepeatAll": "Repeat all", - "nowPlayingRepeatOne": "Repeat one", - "queueNetworkFailedOffline": "{count} downloads failed while offline", - "trackAlbumType": "Release Type", - "editMetadataFieldAlbumTypeHint": "Album, single, EP, compilation...", - "editMetadataFieldExplicit": "Explicit", - "editMetadataFieldExplicitHint": "Mark this track as containing explicit content", - "metadataExplicitValue": "Explicit", - "editMetadataFieldUpc": "UPC / Barcode", - "editMetadataFieldUpcHint": "Numeric UPC, EAN, or GTIN", - "libraryFilterMetadataMissingIsrc": "Missing ISRC" + "@settingsGroupHelp": { + "description": "Settings group covering the about page and donations" + }, + "libraryFilterMetadataMissingLyrics": "Missing lyrics", + "@libraryFilterMetadataMissingLyrics": { + "description": "Filter option for tracks without embedded or sidecar lyrics" + }, + "trackOptionCopyTrackName": "Copy track name", + "@trackOptionCopyTrackName": { + "description": "Track menu action that copies the track title" + }, + "trackOptionCopyArtist": "Copy artist", + "@trackOptionCopyArtist": { + "description": "Track menu action that copies the artist name" + }, + "trackOptionCopyTrackAndArtist": "Copy track and artist", + "@trackOptionCopyTrackAndArtist": { + "description": "Track menu action that copies the track title and artist" + }, + "metadataCopyValue": "Copy value", + "@metadataCopyValue": { + "description": "Metadata menu action that copies only the selected value" + }, + "metadataCopyField": "Copy field and value", + "@metadataCopyField": { + "description": "Metadata menu action that copies the selected key and value" + }, + "mornyeShowTabs": "Show tabs", + "mornyeSearch": "Search", + "mornyeContinuePlaying": "Continue Playing", + "metadataCopyAll": "Copy all metadata", + "@metadataCopyAll": { + "description": "Metadata menu action that copies every visible key and value" + }, + "optionsEmbeddedCoverSize": "Embedded Cover Size", + "@optionsEmbeddedCoverSize": { + "description": "Metadata setting that limits downloaded artwork resolution before it is embedded" + }, + "optionsEmbeddedCoverSizeDescription": "Downscale remotely downloaded cover art before embedding it. Images already within the limit are kept unchanged.", + "@optionsEmbeddedCoverSizeDescription": { + "description": "Description shown in the embedded cover size picker" + }, + "mornyeFavorite": "Favorite", + "mornyeGoToArtist": "Go to Artist", + "@mornyeFavorite": { + "description": "Compact context menu action that adds a track to Loved" + }, + "mornyeFavorited": "Favorited", + "@mornyeFavorited": { + "description": "Selected state of the compact favorite action" + }, + "autoMixDescription": "Blend songs with beat matching and pitch-preserving tempo adjustment. Uses crossfade when beats cannot be matched.", + "autoMixOn": "AutoMix on", + "autoMixOff": "AutoMix off", + "profileTitle": "Profile", + "profileSetUp": "Set up your profile", + "profileEdit": "Edit name and photo", + "backupIncludesProfile": "Includes your profile name and photo", + "profileName": "Name", + "profileNameHint": "Your name", + "profileChangePhoto": "Choose photo", + "profileRemovePhoto": "Remove photo", + "profilePhotoError": "Choose a valid image smaller than 20 MB.", + "profileSaveError": "Could not save your profile. Please try again.", + "optionsEmbeddedCoverSizeOriginal": "Original resolution", + "@optionsEmbeddedCoverSizeOriginal": { + "description": "Option that preserves the provider artwork at its original resolution" + } } diff --git a/lib/l10n/arb/app_zh_CN.arb b/lib/l10n/arb/app_zh_CN.arb index 10ea7c88..732bb34f 100644 --- a/lib/l10n/arb/app_zh_CN.arb +++ b/lib/l10n/arb/app_zh_CN.arb @@ -1,4 +1,48 @@ { + "upgradeIntroWelcome": "Welcome to\nSpotiFLAC-Mobile 5.0", + "upgradeIntroThemeTitle": "Make it\nyour own.", + "upgradeIntroThemeBody": "Choose a look. Your choice applies immediately, and you can change it later in Appearance.", + "upgradeIntroThemeMaterialBody": "The familiar layout, with Material controls and your accent color.", + "upgradeIntroThemeMornyeBody": "Glass navigation, a redesigned Library and an immersive player.", + "upgradeIntroRustTitle": "A new engine.\nBuilt with Rust.", + "upgradeIntroRustBody": "In 5.0, the app’s backend has moved from Go to Rust. It is the engine working behind the screens you use every day.", + "upgradeIntroRustEngineTitle": "Working behind the scenes", + "upgradeIntroRustEngineBody": "Rust handles downloads, audio metadata, library scanning and the extension runtime on Android and iOS.", + "upgradeIntroRustMemoryTitle": "More careful with memory", + "upgradeIntroRustMemoryBody": "Reused buffers and fewer copies reduce temporary allocations when processing artwork and extension data.", + "upgradeIntroRustKeepTitle": "Keep your music", + "upgradeIntroRustKeepBody": "No need to download your collection again. Your saved music and settings stay in place, with no new setup required.", + "upgradeIntroWelcomeBody": "A quick look at what has changed, and where to find it.", + "upgradeIntroMornyeBody": "A new look for your player, lyrics and navigation.", + "upgradeIntroLibrarySummary": "Browse your music by playlist, artist or album.", + "upgradeIntroRepoSummary": "Choose your music sources and providers through extensions.", + "upgradeIntroLibraryTitle": "Get to know\nyour Library.", + "upgradeIntroLibraryBody": "In Mornye, browse by category or find your albums in Recently Added.", + "upgradeIntroDownloadsBody": "Pause and retry from Downloads at the top right. Finished music moves to Recently Added.", + "upgradeIntroSearchBody": "Search saved music here. The separate Search tab looks through your extensions.", + "upgradeIntroPlayerTitle": "Set up\nyour player.", + "upgradeIntroPlayerBody": "You can change your theme and playback options at any time. Here is where to find them.", + "upgradeIntroAppearanceBody": "Change themes in Settings → Appearance. In Mornye, scroll down for compact navigation; scroll up to expand it.", + "upgradeIntroAutoMixBody": "Match tempo and beats between tracks. Enable it in Settings → Local Library → Playback. Off by default.", + "upgradeIntroSettingsBody": "In Mornye, tap your profile on Home to open Settings and edit your name and photo.", + "upgradeIntroSkip": "Skip", + "upgradeIntroContinue": "Continue", + "upgradeIntroDone": "Start listening", + "upgradeIntroReplay": "What’s new in 5.0", + "cacheMotionArtwork": "Offline motion covers", + "cacheMotionArtworkDesc": "Album videos saved with downloads. Removing them keeps your music files and static covers.", + "nowPlayingVolume": "Volume", + "@nowPlayingVolume": { + "description": "System volume control label in the Mornye player" + }, + "appearanceStyle": "App Style", + "@appearanceStyle": { + "description": "Appearance section for choosing the app visual style" + }, + "discordRichPresence": "Discord Rich Presence", + "discordPresenceDescription": "Share the track playing in the built-in player on Discord. Requires Discord to be installed and signed in.", + "discordPresenceMissing": "Install Discord and sign in, then turn this setting off and on again.", + "discordPresenceUnavailable": "Discord Rich Presence is unavailable in this build or on this device.", "@@locale": "zh_CN", "@@last_modified": "2026-04-28", "appName": "SpotiFLAC 移动版", @@ -57,6 +101,11 @@ "@historyFilterSingles": { "description": "Filter chip - show singles only" }, + "libraryRecentlyAdded": "Recently Added", + "libraryDownloads": "Downloads", + "libraryNoActiveDownloads": "No active downloads", + "librarySearchHint": "Search your library", + "libraryEmptyCollection": "Your music will appear here", "historySearchHint": "搜索历史……", "@historySearchHint": { "description": "Search bar placeholder in history" @@ -237,6 +286,7 @@ "description": "Progress dialog title while batch scanning ReplayGain" }, "replayGainBatchSuccess": "已为 {success}/{total} 首歌曲添加 ReplayGain", + "replayGainUnsupportedDecoder": "Some tracks could not be analyzed because their audio codec is not supported by the ReplayGain decoder. Their files were not changed.", "@replayGainBatchSuccess": { "description": "Snackbar after batch ReplayGain completes", "placeholders": { @@ -461,6 +511,18 @@ "@aboutSachinsenalDesc": { "description": "Credit description for sachinsenal0x64" }, + "aboutUnituneDesc": "Open-source music link resolver by Flaze, used for cross-platform fallback matching.", + "@aboutUnituneDesc": { + "description": "Credit for the UniTune resolver" + }, + "aboutMusicBrainzDesc": "Open music database maintained by MetaBrainz and its community, used for recording cross-references.", + "@aboutMusicBrainzDesc": { + "description": "Credit for the MusicBrainz database" + }, + "aboutSquiglyDesc": "Universal music link service by Liam Macmillan, used as a final cross-platform resolver fallback.", + "@aboutSquiglyDesc": { + "description": "Credit for the Squigly resolver" + }, "aboutAppDescription": "搜索音乐元数据、管理扩展并整理你的乐库。", "@aboutAppDescription": { "description": "App description in header card" @@ -842,6 +904,22 @@ "@duplicatesKeepBest": { "description": "Button that deletes all but the highest-quality copy in a duplicate group" }, + "duplicatesKeepBestAll": "Keep best for all", + "@duplicatesKeepBestAll": { + "description": "Button that keeps the highest-quality copy in every duplicate group and deletes the rest" + }, + "duplicatesKeepBestAllMessage": "Keep the best copy of {groupCount} {groupCount, plural, =1{track} other{tracks}} and delete {count} lower-quality {count, plural, =1{copy} other{copies}}?\n\nThe deleted files will be removed from storage.", + "@duplicatesKeepBestAllMessage": { + "description": "Confirmation message for keeping the best copy across every duplicate group", + "placeholders": { + "count": { + "type": "int" + }, + "groupCount": { + "type": "int" + } + } + }, "duplicatesKeepBestMessage": "Delete {count} lower-quality copies of \"{trackName}\"?", "@duplicatesKeepBestMessage": { "description": "Confirmation message for the keep-best action", @@ -1564,6 +1642,22 @@ "@trackAudioQuality": { "description": "Metadata label - audio quality" }, + "trackReplayGainTrackGain": "ReplayGain Track Gain", + "@trackReplayGainTrackGain": { + "description": "Metadata label - ReplayGain track gain" + }, + "trackReplayGainTrackPeak": "ReplayGain Track Peak", + "@trackReplayGainTrackPeak": { + "description": "Metadata label - ReplayGain track peak" + }, + "trackReplayGainAlbumGain": "ReplayGain Album Gain", + "@trackReplayGainAlbumGain": { + "description": "Metadata label - ReplayGain album gain" + }, + "trackReplayGainAlbumPeak": "ReplayGain Album Peak", + "@trackReplayGainAlbumPeak": { + "description": "Metadata label - ReplayGain album peak" + }, "libraryQualityLabelFileFormat": "File format", "@libraryQualityLabelFileFormat": { "description": "Library audio quality label mode that shows the detected file format" @@ -3176,6 +3270,10 @@ "@trackReEnrichOnlineSubtitle": { "description": "Subtitle for re-enrich metadata action for local items" }, + "trackReEnrichBatchSubtitle": "Choose an online or manual update, then review every change before writing", + "@trackReEnrichBatchSubtitle": { + "description": "Subtitle for batch metadata update choices" + }, "trackReEnrichFieldCover": "Cover Art", "@trackReEnrichFieldCover": { "description": "Checkbox label for cover art field in re-enrich" @@ -3228,6 +3326,22 @@ "@trackReEnrichModeReplaceSubtitle": { "description": "Explanation for the selected-tag batch metadata mode" }, + "trackReEnrichModeManual": "Set common values", + "@trackReEnrichModeManual": { + "description": "Batch metadata mode that applies shared values to every selected track" + }, + "trackReEnrichModeManualSubtitle": "Apply the same values to every selected track", + "@trackReEnrichModeManualSubtitle": { + "description": "Explanation for the manual shared-value batch metadata mode" + }, + "trackReEnrichManualFieldsTitle": "Values to apply", + "@trackReEnrichManualFieldsTitle": { + "description": "Heading above manual batch metadata inputs" + }, + "trackReEnrichManualHint": "Leave a field empty to keep its current value. Track titles, numbers, and ISRCs stay unchanged.", + "@trackReEnrichManualHint": { + "description": "Safety explanation for manual batch metadata inputs" + }, "trackReEnrichFieldsTitle": "Tags to update", "@trackReEnrichFieldsTitle": { "description": "Heading above batch re-enrich field checkboxes" @@ -3298,7 +3412,15 @@ "@trackReEnrichSearching": { "description": "Snackbar while searching metadata from internet for local items" }, + "trackReEnrichPreparing": "Preparing metadata changes...", + "@trackReEnrichPreparing": { + "description": "Progress message while preparing manual batch metadata changes" + }, "trackReEnrichSuccess": "Metadata re-enriched successfully", + "trackReEnrichMetadataSaved": "Metadata saved", + "trackReEnrichLyricsUpdated": "Lyrics updated", + "trackReEnrichLyricsPreserved": "No new lyrics found; existing lyrics kept", + "trackReEnrichLyricsDisabled": "Lyrics not updated: lyric downloading is disabled in Settings", "@trackReEnrichSuccess": { "description": "Snackbar after successful re-enrichment" }, @@ -3889,7 +4011,7 @@ "@lyricsProviderAppleMusicDesc": { "description": "Description for Apple Music provider" }, - "lyricsProviderQqMusicDesc": "QQ Music (good for Chinese songs, via proxy)", + "lyricsProviderQqMusicDesc": "QQ Music (good for Chinese songs, direct API)", "@lyricsProviderQqMusicDesc": { "description": "Description for QQ Music provider" }, @@ -4001,6 +4123,14 @@ "@backupContentsTitle": { "description": "Header above the list summarizing what the backup contains" }, + "backupSettingsOnly": "Settings only", + "backupSelectHistory": "Download history", + "backupSelectCollections": "Library collections", + "backupSelectCollectionsDescription": "Liked tracks, wishlist, favorite artists, playlists and playlist covers.", + "backupSelectExtensions": "Extensions and their settings", + "backupSelectedExportDescription": "Save the selected categories to a backup file. Audio files are not included.", + "backupSelectAtLeastOne": "Select at least one category to create a backup.", + "backupSelectedRestoreMessage": "Only the categories listed below will be restored. Categories not included in this backup will stay unchanged. Restoring can replace existing data and cannot be undone.", "backupContentsSettings": "App settings", "@backupContentsSettings": { "description": "Backup contents row label for settings" @@ -4164,6 +4294,10 @@ "@downloadLocationSubtitle": { "description": "Subtitle shown in the download location picker sheet" }, + "storageAutomaticFolder": "Automatic folder", + "storageAutomaticDownloadFolder": "Uses Download/SpotiFLAC when writable, otherwise app storage", + "storageSafRecommended": "Choose folder (Recommended)", + "storageDownloadFolderHint": "In the Android folder picker, open Download and select SpotiFLAC. If it does not exist, create it using New folder, then tap Use this folder to grant access.", "storageModeAppFolder": "App Folder (Recommended)", "@storageModeAppFolder": { "description": "Storage mode option - app-managed folder" @@ -4732,6 +4866,131 @@ "@audioAnalysisRescan": { "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" }, + "downloadRedownloadFakeHiRes": "Re-download fake Hi-Res", + "@downloadRedownloadFakeHiRes": { + "description": "Setting title: automatically replace downloads that measure as fake Hi-Res" + }, + "downloadRedownloadFakeHiResSubtitle": "Off by default. Check Hi-Res downloads and replace only when every audio sample is preserved. Keep the original if verification or processing fails", + "@downloadRedownloadFakeHiResSubtitle": { + "description": "Setting subtitle for the fake Hi-Res re-download toggle" + }, + "hiResCheckVerdictFakeCertain": "Fake Hi-Res", + "@hiResCheckVerdictFakeCertain": { + "description": "Verdict: an exact fingerprint (padded bits or upsampling pattern) proves the file is not real Hi-Res" + }, + "hiResCheckVerdictFakeSuspect": "Possibly a filtered master", + "@hiResCheckVerdictFakeSuspect": { + "description": "Verdict: fails the cutoff test but may be a genuine master low-pass filtered in mastering" + }, + "hiResCheckReasonSampleHold": "Every sample is repeated: upsampled by duplication", + "@hiResCheckReasonSampleHold": { + "description": "Reason: sample-and-hold upsampling detected" + }, + "hiResCheckReasonInterpolation": "In-between samples are linearly interpolated", + "@hiResCheckReasonInterpolation": { + "description": "Reason: linear-interpolation upsampling detected" + }, + "hiResCheckReasonImaging": "Content above 22 kHz mirrors the audible band", + "@hiResCheckReasonImaging": { + "description": "Reason: spectral imaging from upsampling detected" + }, + "hiResCheckMusicContent": "Musical content", + "@hiResCheckMusicContent": { + "description": "Label for the highest frequency that still moves with the music" + }, + "hiResCheckUltrasonicNoise": "Above {cutoff} only steady noise (typical of DSD or analog tape transfers): a {rate} file would hold all the music", + "@hiResCheckUltrasonicNoise": { + "description": "Shown when the ultrasonic content of a Hi-Res file is noise rather than music", + "placeholders": { + "cutoff": { + "type": "String" + }, + "rate": { + "type": "String" + } + } + }, + "hiResCheckTitle": "Hi-Res Authenticity", + "@hiResCheckTitle": { + "description": "Title of the fake Hi-Res check card" + }, + "hiResCheckDescription": "Detect upsampled or bit-padded fake Hi-Res files", + "@hiResCheckDescription": { + "description": "Explains what the Hi-Res authenticity check does" + }, + "hiResCheckRun": "Check", + "@hiResCheckRun": { + "description": "Button that starts the Hi-Res authenticity check" + }, + "hiResCheckChecking": "Checking Hi-Res authenticity...", + "@hiResCheckChecking": { + "description": "Loading text while the Hi-Res check runs" + }, + "hiResCheckVerdictFake": "Likely fake Hi-Res", + "@hiResCheckVerdictFake": { + "description": "Verdict: the file claims Hi-Res but does not measure as it" + }, + "hiResCheckVerdictGenuine": "Measures as genuine Hi-Res", + "@hiResCheckVerdictGenuine": { + "description": "Verdict: no upsampling or padded bit depth found" + }, + "hiResCheckVerdictStandard": "Standard definition, nothing to flag", + "@hiResCheckVerdictStandard": { + "description": "Verdict: neither sample rate nor bit depth claims Hi-Res" + }, + "hiResCheckVerdictInconclusive": "Inconclusive: the analyzed segment is too quiet or short", + "@hiResCheckVerdictInconclusive": { + "description": "Verdict: analysis could not reach a reliable conclusion" + }, + "hiResCheckUnsupported": "Only FLAC and WAV files can be checked", + "@hiResCheckUnsupported": { + "description": "Shown when the file format cannot be decoded by the Hi-Res check" + }, + "hiResCheckCutoff": "Content cutoff", + "@hiResCheckCutoff": { + "description": "Label for the highest frequency with real content" + }, + "hiResCheckBitsInUse": "Bits in use", + "@hiResCheckBitsInUse": { + "description": "Label for effective vs declared bit depth" + }, + "hiResCheckDisclaimer": "The spectrum stops early, but nothing proves it was upsampled: it may be a genuine master low-pass filtered in mastering. It is not replaced automatically.", + "@hiResCheckDisclaimer": { + "description": "Caveat shown under a fake Hi-Res verdict" + }, + "hiResCheckFailed": "Hi-Res check failed: {error}", + "@hiResCheckFailed": { + "description": "Error shown when the Hi-Res check fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "hiResCheckReasonRate": "Declares {sampleRate} but content stops at ~{cutoff}", + "@hiResCheckReasonRate": { + "description": "Reason for a fake verdict caused by upsampling", + "placeholders": { + "sampleRate": { + "type": "String" + }, + "cutoff": { + "type": "String" + } + } + }, + "hiResCheckReasonDepth": "Declares {declared}-bit but only {effective} bits carry data", + "@hiResCheckReasonDepth": { + "description": "Reason for a fake verdict caused by padded bit depth", + "placeholders": { + "declared": { + "type": "int" + }, + "effective": { + "type": "int" + } + } + }, "audioAnalysisRescanning": "Re-analyzing audio...", "@audioAnalysisRescanning": { "description": "Loading text while audio is being re-analyzed after an explicit refresh" @@ -6047,6 +6306,45 @@ "@nowPlayingDetails": { "description": "Menu item and section title for track metadata details" }, + "nowPlayingSleepTimer": "Sleep timer", + "@nowPlayingSleepTimer": { + "description": "Menu item and sheet title for the playback sleep timer" + }, + "nowPlayingSleepTimerActive": "Ends at {time}", + "@nowPlayingSleepTimerActive": { + "description": "Active sleep timer deadline shown in the player menu", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "nowPlayingSleepTimerMinutes": "{minutes, plural, =1{1 minute} other{{minutes} minutes}}", + "@nowPlayingSleepTimerMinutes": { + "description": "Duration choice for the playback sleep timer", + "placeholders": { + "minutes": { + "type": "int" + } + } + }, + "nowPlayingSleepTimerOff": "Turn off sleep timer", + "@nowPlayingSleepTimerOff": { + "description": "Action to cancel the active playback sleep timer" + }, + "nowPlayingSleepTimerSet": "Sleep timer set for {duration}", + "@nowPlayingSleepTimerSet": { + "description": "Confirmation after setting the playback sleep timer", + "placeholders": { + "duration": { + "type": "String" + } + } + }, + "nowPlayingSleepTimerCancelled": "Sleep timer turned off", + "@nowPlayingSleepTimerCancelled": { + "description": "Confirmation after cancelling the playback sleep timer" + }, "nowPlayingOpenInExternalPlayer": "Open in external player", "@nowPlayingOpenInExternalPlayer": { "description": "Menu item to open the current track in an external player" @@ -6389,6 +6687,15 @@ "@extensionVerificationBrowserInApp": { "description": "Chip label for in-app browser verification mode" }, + "extensionVerificationUnavailable": "No verification page is available for {extension}. Retry the download to request a new challenge.", + "@extensionVerificationUnavailable": { + "description": "Shown when the app cannot retrieve a pending verification challenge", + "placeholders": { + "extension": { + "type": "String" + } + } + }, "extensionVerificationHelpTitleManual": "Open verification manually", "@extensionVerificationHelpTitleManual": { "description": "Dialog title when automatic browser launch for verification fails" @@ -6478,6 +6785,9 @@ "@metadataCopyField": { "description": "Metadata menu action that copies the selected key and value" }, + "mornyeShowTabs": "Show tabs", + "mornyeSearch": "Search", + "mornyeContinuePlaying": "Continue Playing", "metadataCopyAll": "Copy all metadata", "@metadataCopyAll": { "description": "Metadata menu action that copies every visible key and value" @@ -6490,6 +6800,28 @@ "@optionsEmbeddedCoverSizeDescription": { "description": "Description shown in the embedded cover size picker" }, + "mornyeFavorite": "Favorite", + "mornyeGoToArtist": "Go to Artist", + "@mornyeFavorite": { + "description": "Compact context menu action that adds a track to Loved" + }, + "mornyeFavorited": "Favorited", + "@mornyeFavorited": { + "description": "Selected state of the compact favorite action" + }, + "autoMixDescription": "Blend songs with beat matching and pitch-preserving tempo adjustment. Uses crossfade when beats cannot be matched.", + "autoMixOn": "AutoMix on", + "autoMixOff": "AutoMix off", + "profileTitle": "Profile", + "profileSetUp": "Set up your profile", + "profileEdit": "Edit name and photo", + "backupIncludesProfile": "Includes your profile name and photo", + "profileName": "Name", + "profileNameHint": "Your name", + "profileChangePhoto": "Choose photo", + "profileRemovePhoto": "Remove photo", + "profilePhotoError": "Choose a valid image smaller than 20 MB.", + "profileSaveError": "Could not save your profile. Please try again.", "optionsEmbeddedCoverSizeOriginal": "Original resolution", "@optionsEmbeddedCoverSizeOriginal": { "description": "Option that preserves the provider artwork at its original resolution" diff --git a/lib/l10n/arb/app_zh_TW.arb b/lib/l10n/arb/app_zh_TW.arb index 2fbe057d..beb46b2c 100644 --- a/lib/l10n/arb/app_zh_TW.arb +++ b/lib/l10n/arb/app_zh_TW.arb @@ -1,4 +1,48 @@ { + "upgradeIntroWelcome": "Welcome to\nSpotiFLAC-Mobile 5.0", + "upgradeIntroThemeTitle": "Make it\nyour own.", + "upgradeIntroThemeBody": "Choose a look. Your choice applies immediately, and you can change it later in Appearance.", + "upgradeIntroThemeMaterialBody": "The familiar layout, with Material controls and your accent color.", + "upgradeIntroThemeMornyeBody": "Glass navigation, a redesigned Library and an immersive player.", + "upgradeIntroRustTitle": "A new engine.\nBuilt with Rust.", + "upgradeIntroRustBody": "In 5.0, the app’s backend has moved from Go to Rust. It is the engine working behind the screens you use every day.", + "upgradeIntroRustEngineTitle": "Working behind the scenes", + "upgradeIntroRustEngineBody": "Rust handles downloads, audio metadata, library scanning and the extension runtime on Android and iOS.", + "upgradeIntroRustMemoryTitle": "More careful with memory", + "upgradeIntroRustMemoryBody": "Reused buffers and fewer copies reduce temporary allocations when processing artwork and extension data.", + "upgradeIntroRustKeepTitle": "Keep your music", + "upgradeIntroRustKeepBody": "No need to download your collection again. Your saved music and settings stay in place, with no new setup required.", + "upgradeIntroWelcomeBody": "A quick look at what has changed, and where to find it.", + "upgradeIntroMornyeBody": "A new look for your player, lyrics and navigation.", + "upgradeIntroLibrarySummary": "Browse your music by playlist, artist or album.", + "upgradeIntroRepoSummary": "Choose your music sources and providers through extensions.", + "upgradeIntroLibraryTitle": "Get to know\nyour Library.", + "upgradeIntroLibraryBody": "In Mornye, browse by category or find your albums in Recently Added.", + "upgradeIntroDownloadsBody": "Pause and retry from Downloads at the top right. Finished music moves to Recently Added.", + "upgradeIntroSearchBody": "Search saved music here. The separate Search tab looks through your extensions.", + "upgradeIntroPlayerTitle": "Set up\nyour player.", + "upgradeIntroPlayerBody": "You can change your theme and playback options at any time. Here is where to find them.", + "upgradeIntroAppearanceBody": "Change themes in Settings → Appearance. In Mornye, scroll down for compact navigation; scroll up to expand it.", + "upgradeIntroAutoMixBody": "Match tempo and beats between tracks. Enable it in Settings → Local Library → Playback. Off by default.", + "upgradeIntroSettingsBody": "In Mornye, tap your profile on Home to open Settings and edit your name and photo.", + "upgradeIntroSkip": "Skip", + "upgradeIntroContinue": "Continue", + "upgradeIntroDone": "Start listening", + "upgradeIntroReplay": "What’s new in 5.0", + "cacheMotionArtwork": "Offline motion covers", + "cacheMotionArtworkDesc": "Album videos saved with downloads. Removing them keeps your music files and static covers.", + "nowPlayingVolume": "Volume", + "@nowPlayingVolume": { + "description": "System volume control label in the Mornye player" + }, + "appearanceStyle": "App Style", + "@appearanceStyle": { + "description": "Appearance section for choosing the app visual style" + }, + "discordRichPresence": "Discord Rich Presence", + "discordPresenceDescription": "Share the track playing in the built-in player on Discord. Requires Discord to be installed and signed in.", + "discordPresenceMissing": "Install Discord and sign in, then turn this setting off and on again.", + "discordPresenceUnavailable": "Discord Rich Presence is unavailable in this build or on this device.", "@@locale": "zh_TW", "@@last_modified": "2026-04-28", "appName": "SpotiFLAC 行動版", @@ -57,6 +101,11 @@ "@historyFilterSingles": { "description": "Filter chip - show singles only" }, + "libraryRecentlyAdded": "Recently Added", + "libraryDownloads": "Downloads", + "libraryNoActiveDownloads": "No active downloads", + "librarySearchHint": "Search your library", + "libraryEmptyCollection": "Your music will appear here", "historySearchHint": "搜尋紀錄……", "@historySearchHint": { "description": "Search bar placeholder in history" @@ -237,6 +286,7 @@ "description": "Progress dialog title while batch scanning ReplayGain" }, "replayGainBatchSuccess": "已{success}為{total}首歌添加音量平衡", + "replayGainUnsupportedDecoder": "Some tracks could not be analyzed because their audio codec is not supported by the ReplayGain decoder. Their files were not changed.", "@replayGainBatchSuccess": { "description": "Snackbar after batch ReplayGain completes", "placeholders": { @@ -461,6 +511,18 @@ "@aboutSachinsenalDesc": { "description": "Credit description for sachinsenal0x64" }, + "aboutUnituneDesc": "Open-source music link resolver by Flaze, used for cross-platform fallback matching.", + "@aboutUnituneDesc": { + "description": "Credit for the UniTune resolver" + }, + "aboutMusicBrainzDesc": "Open music database maintained by MetaBrainz and its community, used for recording cross-references.", + "@aboutMusicBrainzDesc": { + "description": "Credit for the MusicBrainz database" + }, + "aboutSquiglyDesc": "Universal music link service by Liam Macmillan, used as a final cross-platform resolver fallback.", + "@aboutSquiglyDesc": { + "description": "Credit for the Squigly resolver" + }, "aboutAppDescription": "搜尋音樂元數據、管理擴充功能,並整理各個音樂庫。", "@aboutAppDescription": { "description": "App description in header card" @@ -842,6 +904,22 @@ "@duplicatesKeepBest": { "description": "Button that deletes all but the highest-quality copy in a duplicate group" }, + "duplicatesKeepBestAll": "Keep best for all", + "@duplicatesKeepBestAll": { + "description": "Button that keeps the highest-quality copy in every duplicate group and deletes the rest" + }, + "duplicatesKeepBestAllMessage": "Keep the best copy of {groupCount} {groupCount, plural, =1{track} other{tracks}} and delete {count} lower-quality {count, plural, =1{copy} other{copies}}?\n\nThe deleted files will be removed from storage.", + "@duplicatesKeepBestAllMessage": { + "description": "Confirmation message for keeping the best copy across every duplicate group", + "placeholders": { + "count": { + "type": "int" + }, + "groupCount": { + "type": "int" + } + } + }, "duplicatesKeepBestMessage": "Delete {count} lower-quality copies of \"{trackName}\"?", "@duplicatesKeepBestMessage": { "description": "Confirmation message for the keep-best action", @@ -1564,6 +1642,22 @@ "@trackAudioQuality": { "description": "Metadata label - audio quality" }, + "trackReplayGainTrackGain": "ReplayGain Track Gain", + "@trackReplayGainTrackGain": { + "description": "Metadata label - ReplayGain track gain" + }, + "trackReplayGainTrackPeak": "ReplayGain Track Peak", + "@trackReplayGainTrackPeak": { + "description": "Metadata label - ReplayGain track peak" + }, + "trackReplayGainAlbumGain": "ReplayGain Album Gain", + "@trackReplayGainAlbumGain": { + "description": "Metadata label - ReplayGain album gain" + }, + "trackReplayGainAlbumPeak": "ReplayGain Album Peak", + "@trackReplayGainAlbumPeak": { + "description": "Metadata label - ReplayGain album peak" + }, "libraryQualityLabelFileFormat": "File format", "@libraryQualityLabelFileFormat": { "description": "Library audio quality label mode that shows the detected file format" @@ -3176,6 +3270,10 @@ "@trackReEnrichOnlineSubtitle": { "description": "Subtitle for re-enrich metadata action for local items" }, + "trackReEnrichBatchSubtitle": "Choose an online or manual update, then review every change before writing", + "@trackReEnrichBatchSubtitle": { + "description": "Subtitle for batch metadata update choices" + }, "trackReEnrichFieldCover": "Cover Art", "@trackReEnrichFieldCover": { "description": "Checkbox label for cover art field in re-enrich" @@ -3228,6 +3326,22 @@ "@trackReEnrichModeReplaceSubtitle": { "description": "Explanation for the selected-tag batch metadata mode" }, + "trackReEnrichModeManual": "Set common values", + "@trackReEnrichModeManual": { + "description": "Batch metadata mode that applies shared values to every selected track" + }, + "trackReEnrichModeManualSubtitle": "Apply the same values to every selected track", + "@trackReEnrichModeManualSubtitle": { + "description": "Explanation for the manual shared-value batch metadata mode" + }, + "trackReEnrichManualFieldsTitle": "Values to apply", + "@trackReEnrichManualFieldsTitle": { + "description": "Heading above manual batch metadata inputs" + }, + "trackReEnrichManualHint": "Leave a field empty to keep its current value. Track titles, numbers, and ISRCs stay unchanged.", + "@trackReEnrichManualHint": { + "description": "Safety explanation for manual batch metadata inputs" + }, "trackReEnrichFieldsTitle": "Tags to update", "@trackReEnrichFieldsTitle": { "description": "Heading above batch re-enrich field checkboxes" @@ -3298,7 +3412,15 @@ "@trackReEnrichSearching": { "description": "Snackbar while searching metadata from internet for local items" }, + "trackReEnrichPreparing": "Preparing metadata changes...", + "@trackReEnrichPreparing": { + "description": "Progress message while preparing manual batch metadata changes" + }, "trackReEnrichSuccess": "Metadata re-enriched successfully", + "trackReEnrichMetadataSaved": "Metadata saved", + "trackReEnrichLyricsUpdated": "Lyrics updated", + "trackReEnrichLyricsPreserved": "No new lyrics found; existing lyrics kept", + "trackReEnrichLyricsDisabled": "Lyrics not updated: lyric downloading is disabled in Settings", "@trackReEnrichSuccess": { "description": "Snackbar after successful re-enrichment" }, @@ -3889,7 +4011,7 @@ "@lyricsProviderAppleMusicDesc": { "description": "Description for Apple Music provider" }, - "lyricsProviderQqMusicDesc": "QQ Music (good for Chinese songs, via proxy)", + "lyricsProviderQqMusicDesc": "QQ Music (good for Chinese songs, direct API)", "@lyricsProviderQqMusicDesc": { "description": "Description for QQ Music provider" }, @@ -4001,6 +4123,14 @@ "@backupContentsTitle": { "description": "Header above the list summarizing what the backup contains" }, + "backupSettingsOnly": "Settings only", + "backupSelectHistory": "Download history", + "backupSelectCollections": "Library collections", + "backupSelectCollectionsDescription": "Liked tracks, wishlist, favorite artists, playlists and playlist covers.", + "backupSelectExtensions": "Extensions and their settings", + "backupSelectedExportDescription": "Save the selected categories to a backup file. Audio files are not included.", + "backupSelectAtLeastOne": "Select at least one category to create a backup.", + "backupSelectedRestoreMessage": "Only the categories listed below will be restored. Categories not included in this backup will stay unchanged. Restoring can replace existing data and cannot be undone.", "backupContentsSettings": "App settings", "@backupContentsSettings": { "description": "Backup contents row label for settings" @@ -4164,6 +4294,10 @@ "@downloadLocationSubtitle": { "description": "Subtitle shown in the download location picker sheet" }, + "storageAutomaticFolder": "Automatic folder", + "storageAutomaticDownloadFolder": "Uses Download/SpotiFLAC when writable, otherwise app storage", + "storageSafRecommended": "Choose folder (Recommended)", + "storageDownloadFolderHint": "In the Android folder picker, open Download and select SpotiFLAC. If it does not exist, create it using New folder, then tap Use this folder to grant access.", "storageModeAppFolder": "App Folder (Recommended)", "@storageModeAppFolder": { "description": "Storage mode option - app-managed folder" @@ -4732,6 +4866,131 @@ "@audioAnalysisRescan": { "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" }, + "downloadRedownloadFakeHiRes": "Re-download fake Hi-Res", + "@downloadRedownloadFakeHiRes": { + "description": "Setting title: automatically replace downloads that measure as fake Hi-Res" + }, + "downloadRedownloadFakeHiResSubtitle": "Off by default. Check Hi-Res downloads and replace only when every audio sample is preserved. Keep the original if verification or processing fails", + "@downloadRedownloadFakeHiResSubtitle": { + "description": "Setting subtitle for the fake Hi-Res re-download toggle" + }, + "hiResCheckVerdictFakeCertain": "Fake Hi-Res", + "@hiResCheckVerdictFakeCertain": { + "description": "Verdict: an exact fingerprint (padded bits or upsampling pattern) proves the file is not real Hi-Res" + }, + "hiResCheckVerdictFakeSuspect": "Possibly a filtered master", + "@hiResCheckVerdictFakeSuspect": { + "description": "Verdict: fails the cutoff test but may be a genuine master low-pass filtered in mastering" + }, + "hiResCheckReasonSampleHold": "Every sample is repeated: upsampled by duplication", + "@hiResCheckReasonSampleHold": { + "description": "Reason: sample-and-hold upsampling detected" + }, + "hiResCheckReasonInterpolation": "In-between samples are linearly interpolated", + "@hiResCheckReasonInterpolation": { + "description": "Reason: linear-interpolation upsampling detected" + }, + "hiResCheckReasonImaging": "Content above 22 kHz mirrors the audible band", + "@hiResCheckReasonImaging": { + "description": "Reason: spectral imaging from upsampling detected" + }, + "hiResCheckMusicContent": "Musical content", + "@hiResCheckMusicContent": { + "description": "Label for the highest frequency that still moves with the music" + }, + "hiResCheckUltrasonicNoise": "Above {cutoff} only steady noise (typical of DSD or analog tape transfers): a {rate} file would hold all the music", + "@hiResCheckUltrasonicNoise": { + "description": "Shown when the ultrasonic content of a Hi-Res file is noise rather than music", + "placeholders": { + "cutoff": { + "type": "String" + }, + "rate": { + "type": "String" + } + } + }, + "hiResCheckTitle": "Hi-Res Authenticity", + "@hiResCheckTitle": { + "description": "Title of the fake Hi-Res check card" + }, + "hiResCheckDescription": "Detect upsampled or bit-padded fake Hi-Res files", + "@hiResCheckDescription": { + "description": "Explains what the Hi-Res authenticity check does" + }, + "hiResCheckRun": "Check", + "@hiResCheckRun": { + "description": "Button that starts the Hi-Res authenticity check" + }, + "hiResCheckChecking": "Checking Hi-Res authenticity...", + "@hiResCheckChecking": { + "description": "Loading text while the Hi-Res check runs" + }, + "hiResCheckVerdictFake": "Likely fake Hi-Res", + "@hiResCheckVerdictFake": { + "description": "Verdict: the file claims Hi-Res but does not measure as it" + }, + "hiResCheckVerdictGenuine": "Measures as genuine Hi-Res", + "@hiResCheckVerdictGenuine": { + "description": "Verdict: no upsampling or padded bit depth found" + }, + "hiResCheckVerdictStandard": "Standard definition, nothing to flag", + "@hiResCheckVerdictStandard": { + "description": "Verdict: neither sample rate nor bit depth claims Hi-Res" + }, + "hiResCheckVerdictInconclusive": "Inconclusive: the analyzed segment is too quiet or short", + "@hiResCheckVerdictInconclusive": { + "description": "Verdict: analysis could not reach a reliable conclusion" + }, + "hiResCheckUnsupported": "Only FLAC and WAV files can be checked", + "@hiResCheckUnsupported": { + "description": "Shown when the file format cannot be decoded by the Hi-Res check" + }, + "hiResCheckCutoff": "Content cutoff", + "@hiResCheckCutoff": { + "description": "Label for the highest frequency with real content" + }, + "hiResCheckBitsInUse": "Bits in use", + "@hiResCheckBitsInUse": { + "description": "Label for effective vs declared bit depth" + }, + "hiResCheckDisclaimer": "The spectrum stops early, but nothing proves it was upsampled: it may be a genuine master low-pass filtered in mastering. It is not replaced automatically.", + "@hiResCheckDisclaimer": { + "description": "Caveat shown under a fake Hi-Res verdict" + }, + "hiResCheckFailed": "Hi-Res check failed: {error}", + "@hiResCheckFailed": { + "description": "Error shown when the Hi-Res check fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "hiResCheckReasonRate": "Declares {sampleRate} but content stops at ~{cutoff}", + "@hiResCheckReasonRate": { + "description": "Reason for a fake verdict caused by upsampling", + "placeholders": { + "sampleRate": { + "type": "String" + }, + "cutoff": { + "type": "String" + } + } + }, + "hiResCheckReasonDepth": "Declares {declared}-bit but only {effective} bits carry data", + "@hiResCheckReasonDepth": { + "description": "Reason for a fake verdict caused by padded bit depth", + "placeholders": { + "declared": { + "type": "int" + }, + "effective": { + "type": "int" + } + } + }, "audioAnalysisRescanning": "Re-analyzing audio...", "@audioAnalysisRescanning": { "description": "Loading text while audio is being re-analyzed after an explicit refresh" @@ -6047,6 +6306,45 @@ "@nowPlayingDetails": { "description": "Menu item and section title for track metadata details" }, + "nowPlayingSleepTimer": "Sleep timer", + "@nowPlayingSleepTimer": { + "description": "Menu item and sheet title for the playback sleep timer" + }, + "nowPlayingSleepTimerActive": "Ends at {time}", + "@nowPlayingSleepTimerActive": { + "description": "Active sleep timer deadline shown in the player menu", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "nowPlayingSleepTimerMinutes": "{minutes, plural, =1{1 minute} other{{minutes} minutes}}", + "@nowPlayingSleepTimerMinutes": { + "description": "Duration choice for the playback sleep timer", + "placeholders": { + "minutes": { + "type": "int" + } + } + }, + "nowPlayingSleepTimerOff": "Turn off sleep timer", + "@nowPlayingSleepTimerOff": { + "description": "Action to cancel the active playback sleep timer" + }, + "nowPlayingSleepTimerSet": "Sleep timer set for {duration}", + "@nowPlayingSleepTimerSet": { + "description": "Confirmation after setting the playback sleep timer", + "placeholders": { + "duration": { + "type": "String" + } + } + }, + "nowPlayingSleepTimerCancelled": "Sleep timer turned off", + "@nowPlayingSleepTimerCancelled": { + "description": "Confirmation after cancelling the playback sleep timer" + }, "nowPlayingOpenInExternalPlayer": "Open in external player", "@nowPlayingOpenInExternalPlayer": { "description": "Menu item to open the current track in an external player" @@ -6389,6 +6687,15 @@ "@extensionVerificationBrowserInApp": { "description": "Chip label for in-app browser verification mode" }, + "extensionVerificationUnavailable": "No verification page is available for {extension}. Retry the download to request a new challenge.", + "@extensionVerificationUnavailable": { + "description": "Shown when the app cannot retrieve a pending verification challenge", + "placeholders": { + "extension": { + "type": "String" + } + } + }, "extensionVerificationHelpTitleManual": "Open verification manually", "@extensionVerificationHelpTitleManual": { "description": "Dialog title when automatic browser launch for verification fails" @@ -6478,6 +6785,9 @@ "@metadataCopyField": { "description": "Metadata menu action that copies the selected key and value" }, + "mornyeShowTabs": "Show tabs", + "mornyeSearch": "Search", + "mornyeContinuePlaying": "Continue Playing", "metadataCopyAll": "Copy all metadata", "@metadataCopyAll": { "description": "Metadata menu action that copies every visible key and value" @@ -6490,6 +6800,28 @@ "@optionsEmbeddedCoverSizeDescription": { "description": "Description shown in the embedded cover size picker" }, + "mornyeFavorite": "Favorite", + "mornyeGoToArtist": "Go to Artist", + "@mornyeFavorite": { + "description": "Compact context menu action that adds a track to Loved" + }, + "mornyeFavorited": "Favorited", + "@mornyeFavorited": { + "description": "Selected state of the compact favorite action" + }, + "autoMixDescription": "Blend songs with beat matching and pitch-preserving tempo adjustment. Uses crossfade when beats cannot be matched.", + "autoMixOn": "AutoMix on", + "autoMixOff": "AutoMix off", + "profileTitle": "Profile", + "profileSetUp": "Set up your profile", + "profileEdit": "Edit name and photo", + "backupIncludesProfile": "Includes your profile name and photo", + "profileName": "Name", + "profileNameHint": "Your name", + "profileChangePhoto": "Choose photo", + "profileRemovePhoto": "Remove photo", + "profilePhotoError": "Choose a valid image smaller than 20 MB.", + "profileSaveError": "Could not save your profile. Please try again.", "optionsEmbeddedCoverSizeOriginal": "Original resolution", "@optionsEmbeddedCoverSizeOriginal": { "description": "Option that preserves the provider artwork at its original resolution"