Files
SpotiFLAC-Mobile/lib/l10n/arb/app_ar.arb
T
zarzet 728d179d69 refactor(discord): remove rich presence and bundled SDK
Remove the presence setting, platform bridge, SDK archive, and SDK preparation from local and CI builds. Reject leftover Discord native libraries in release APK audits.
2026-09-26 03:07:04 +07:00

6826 lines
254 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"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"
},
"@@locale": "ar",
"@@last_modified": "2026-04-28",
"appName": "SpotiFLAC Mobile",
"@appName": {
"description": "App name - DO NOT TRANSLATE"
},
"navHome": "الرئيسية",
"@navHome": {
"description": "Bottom navigation - Home tab"
},
"navLibrary": "المكتبة",
"@navLibrary": {
"description": "Bottom navigation - Library tab"
},
"navSettings": "الإعدادات",
"@navSettings": {
"description": "Bottom navigation - Settings tab"
},
"navStore": "المستودع",
"@navStore": {
"description": "Bottom navigation - Extension repo tab"
},
"homeTitle": "الصفحة الرئيسية",
"@homeTitle": {
"description": "Home screen title"
},
"homeSubtitle": "ألصق عنوان URL مدعوم أو ابحث بالاسم",
"@homeSubtitle": {
"description": "Subtitle shown below search box"
},
"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": "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": "نمط اسم الملف للعازفين و EPs. يستخدم نفس العلامات مثل تنسيق الألبوم.",
"@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": "ReplyGain",
"@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": "إعادة مسح ReplyGain",
"@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": "تم إضافة وسم ReplyGain",
"@trackReplayGainSuccess": {
"description": "Snackbar message after ReplayGain tags written for a single track"
},
"trackReplayGainFailed": "فشل في إضافة علامات ReplayGain",
"@trackReplayGainFailed": {
"description": "Snackbar message when ReplayGain scan/write fails"
},
"selectionReplayGainCount": "ٌReplyGain ({count})",
"@selectionReplayGainCount": {
"description": "Batch selection action button label for ReplayGain",
"placeholders": {
"count": {
"type": "int"
}
}
},
"replayGainBatchConfirmTitle": "إضافة ReplyGain",
"@replayGainBatchConfirmTitle": {
"description": "Title of the batch ReplayGain confirmation dialog"
},
"replayGainBatchConfirmMessage": "تحليل الصوت وكتابة وسوم ReplayGain إلى مسار(مسارات) {count}؟",
"@replayGainBatchConfirmMessage": {
"description": "Message of the batch ReplayGain confirmation dialog",
"placeholders": {
"count": {
"type": "int"
}
}
},
"replayGainBatchAnalyzing": "تحليل ReplyGain...",
"@replayGainBatchAnalyzing": {
"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": {
"success": {
"type": "int"
},
"total": {
"type": "int"
}
}
},
"optionsArtistTagMode": "وضع وسم الفنان",
"@optionsArtistTagMode": {
"description": "Setting title for how artist metadata is written into files"
},
"optionsArtistTagModeDescription": "اختر كيف يتم كتابة العديد من الفنانين في العلامات المضمنة.",
"@optionsArtistTagModeDescription": {
"description": "Bottom-sheet description for artist tag mode setting"
},
"optionsArtistTagModeJoined": "قيمة مشتركة واحدة",
"@optionsArtistTagModeJoined": {
"description": "Artist tag mode option that joins multiple artists into one value"
},
"optionsArtistTagModeJoinedSubtitle": "اكتب قيمة ARTIST واحدة مثل \"الفنان A، الفنان B\" لتحقيق التوافق الأقصى لمشغل الأغاني.",
"@optionsArtistTagModeJoinedSubtitle": {
"description": "Subtitle for joined artist tag mode"
},
"optionsArtistTagModeSplitVorbis": "تقسيم العلامات على FLAC/Opus",
"@optionsArtistTagModeSplitVorbis": {
"description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats"
},
"optionsArtistTagModeSplitVorbisSubtitle": "اكتب علامة فنان لكل فنان لـ FLAC و Opus؛ تبقى MP3 و M4A منضمة.",
"@optionsArtistTagModeSplitVorbisSubtitle": {
"description": "Subtitle for split Vorbis artist tag mode"
},
"optionsExtensionStore": "مستودع الإضافات",
"@optionsExtensionStore": {
"description": "Show/hide repo tab"
},
"optionsExtensionStoreSubtitle": "إظهار صفحة المستودع في شريط التنقل",
"@optionsExtensionStoreSubtitle": {
"description": "Subtitle for extension repo toggle"
},
"optionsCheckUpdates": "التحقق من وجود تحديثات",
"@optionsCheckUpdates": {
"description": "Auto update check toggle"
},
"optionsCheckUpdatesSubtitle": "إعلام عند توفر إصدار جديد",
"@optionsCheckUpdatesSubtitle": {
"description": "Subtitle for update check"
},
"optionsUpdateChannel": "قناة التحديث",
"@optionsUpdateChannel": {
"description": "Stable vs preview releases"
},
"optionsUpdateChannelStable": "الإصدارات المستقرة فقط",
"@optionsUpdateChannelStable": {
"description": "Only stable updates"
},
"optionsUpdateChannelPreview": "الحصول على إصدارات تجريبية",
"@optionsUpdateChannelPreview": {
"description": "Include beta/preview updates"
},
"optionsUpdateChannelWarning": "قد تحتوي الإصدارات التجريبية أخطاءً أو ميزات غير مكتملة",
"@optionsUpdateChannelWarning": {
"description": "Warning about preview channel"
},
"optionsClearHistory": "مسح سجل التحميلات",
"@optionsClearHistory": {
"description": "Delete all download history"
},
"optionsClearHistorySubtitle": "إزالة جميع الأغاني التي تم تنزيلها من السجل",
"@optionsClearHistorySubtitle": {
"description": "Subtitle for clear history"
},
"optionsDetailedLogging": "تسجيل تفصيلي",
"@optionsDetailedLogging": {
"description": "Enable verbose logs for debugging"
},
"optionsDetailedLoggingOn": "يتم تسجيل السجلات التفصيلية",
"@optionsDetailedLoggingOn": {
"description": "Status when logging enabled"
},
"optionsDetailedLoggingOff": "تمكين لتقارير الأخطاء",
"@optionsDetailedLoggingOff": {
"description": "Status when logging disabled"
},
"extensionsTitle": "الإضافات",
"@extensionsTitle": {
"description": "Extensions page title"
},
"extensionsDisabled": "معطَّل",
"@extensionsDisabled": {
"description": "Extension status - inactive"
},
"extensionsVersion": "الإصدار {version}",
"@extensionsVersion": {
"description": "Extension version display",
"placeholders": {
"version": {
"type": "String"
}
}
},
"extensionsUninstall": "إلغاء التثبيت",
"@extensionsUninstall": {
"description": "Uninstall extension button"
},
"storeTitle": "مستودع الإضافات",
"@storeTitle": {
"description": "Repo screen title"
},
"storeSearch": "البحث في الإضافات...",
"@storeSearch": {
"description": "Repo search placeholder"
},
"storeInstall": "تثبيت",
"@storeInstall": {
"description": "Install extension button"
},
"storeInstalled": "مثبت",
"@storeInstalled": {
"description": "Already installed badge"
},
"storeUpdate": "تحديث",
"@storeUpdate": {
"description": "Update available button"
},
"aboutTitle": "حول",
"@aboutTitle": {
"description": "About page title"
},
"aboutContributors": "المساهمون",
"@aboutContributors": {
"description": "Section for contributors"
},
"aboutMobileDeveloper": "مطور نسخة الهاتف",
"@aboutMobileDeveloper": {
"description": "Role description for mobile dev"
},
"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": "ابقي اندرويد مفتوحا",
"@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": "مجتمع تليجرام",
"@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": "منشئ API QQDL و HiFi. ساعد هذا المشروع في تشكيل دعم تحميل غير فاقد للجودة.",
"@aboutBinimumDesc": {
"description": "Credit description for binimum"
},
"aboutSachinsenalDesc": "منشئ مشروع HiFi الأصلي. مؤسسة للتكامل بدون مصدر.",
"@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"
},
"artistAlbums": "الألبومات",
"@artistAlbums": {
"description": "Section header for artist albums"
},
"artistSingles": "الأغاني و ال EPs",
"@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": {
"count": {
"type": "String",
"description": "Formatted listener count"
}
}
},
"trackMetadataService": "الخدمة",
"@trackMetadataService": {
"description": "Metadata field - download service used"
},
"trackMetadataPlay": "تشغيل",
"@trackMetadataPlay": {
"description": "Action button - play track"
},
"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": "يتطلب أندرويد 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": "تحميل الموسيقى بجودة عالية و عالية",
"@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"
},
"setupAllowAccessToManageFiles": "الرجاء تمكين \"السماح بالوصول لإدارة جميع الملفات\" في الشاشة التالية.",
"@setupAllowAccessToManageFiles": {
"description": "Instruction for file access permission"
},
"setupLanguageTitle": "اِختر اللغة",
"@setupLanguageTitle": {
"description": "Title for the language selection step in setup"
},
"setupLanguageDescription": "حدد لغتك المفضلة للتطبيق. يمكنك تغيير هذا لاحقًا من الإعدادات.",
"@setupLanguageDescription": {
"description": "Description for the language selection step in setup"
},
"setupLanguageSystemDefault": "الوضع الافتراضي للنظام",
"@setupLanguageSystemDefault": {
"description": "Option to use the system language"
},
"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": {
"extensionName": {
"type": "String"
}
}
},
"dialogClearHistoryTitle": "مسح السجل",
"@dialogClearHistoryTitle": {
"description": "Dialog title - clear download history"
},
"dialogClearHistoryMessage": "هل أنت متأكد من أنك تريد مسح كل سجل التنزيلات؟ لا يمكن التراجع عن هذا.",
"@dialogClearHistoryMessage": {
"description": "Dialog message - clear history confirmation"
},
"dialogDeleteSelectedTitle": "حذف المحدد",
"@dialogDeleteSelectedTitle": {
"description": "Dialog title - delete selected items"
},
"dialogDeleteSelectedMessage": "حذف {count} {count, plural, zero {} one {المسارات} two {أغنيتين} few {أغانٍ} many {أغنية}=1{أغنية} other{الأغاني}} من التاريخ؟\n\nسيؤدي هذا أيضا إلى حذف الملفات من وحدة التخزين.",
"@dialogDeleteSelectedMessage": {
"description": "Dialog message - delete selected tracks",
"placeholders": {
"count": {
"type": "int"
}
}
},
"dialogImportPlaylistTitle": "استيراد قائمة تشغيل",
"@dialogImportPlaylistTitle": {
"description": "Dialog title - import CSV playlist"
},
"dialogImportPlaylistMessage": "تم العثور على {count} مسارات في ملف قائمة التشغيل. إضافتها لتنزيل؟",
"csvImportTracks": "{count} مسارات من CSV",
"@csvImportTracks": {
"description": "Label shown in quality picker for CSV import",
"placeholders": {
"count": {
"type": "int"
}
}
},
"collectionExportM3u": "تصدير كـ M3U8",
"@collectionExportM3u": {
"description": "Tooltip on the collection screen action that exports the track list as an M3U8 playlist file"
},
"collectionExportM3uDone": "تصدير {exported} من مسارات {total}",
"@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": "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": {
"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": {
"count": {
"type": "int"
}
}
},
"snackbarAddedToQueue": "تمت إضافة {trackName} إلى قائمة الانتظار",
"@snackbarAddedToQueue": {
"description": "Snackbar - track added to download queue",
"placeholders": {
"trackName": {
"type": "String"
}
}
},
"snackbarAddedTracksToQueue": "تم إضافة {count} أغانٍ إلى قائمة الانتظار",
"@snackbarAddedTracksToQueue": {
"description": "Snackbar - multiple tracks added to queue",
"placeholders": {
"count": {
"type": "int"
}
}
},
"snackbarAlreadyDownloaded": "تم تنزيل {trackName} بالفعل",
"@snackbarAlreadyDownloaded": {
"description": "Snackbar - track already exists",
"placeholders": {
"trackName": {
"type": "String"
}
}
},
"snackbarAlreadyInLibrary": "{trackName} موجود بالفعل في مكتبتك",
"@snackbarAlreadyInLibrary": {
"description": "Snackbar - track already exists in local library",
"placeholders": {
"trackName": {
"type": "String"
}
}
},
"snackbarHistoryCleared": "تم مسح السجل.",
"@snackbarHistoryCleared": {
"description": "Snackbar - history deleted"
},
"snackbarDeletedTracks": "تم حذف {count} {count, plural, zero {} one {أغنيتين} two {أغنيتين} 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": "تم حفظ أولوية مزود البيانات الوصفية (metadata)",
"@snackbarMetadataProviderSaved": {
"description": "Snackbar - metadata provider order saved"
},
"snackbarExtensionInstalled": "تم تثبيت {extensionName}.",
"@snackbarExtensionInstalled": {
"description": "Snackbar - extension installed successfully",
"placeholders": {
"extensionName": {
"type": "String"
}
}
},
"snackbarExtensionUpdated": "تم تحديث {extensionName}.",
"@snackbarExtensionUpdated": {
"description": "Snackbar - extension updated successfully",
"placeholders": {
"extensionName": {
"type": "String"
}
}
},
"snackbarFailedToInstall": "فشل تثبيت الإضافة",
"@snackbarFailedToInstall": {
"description": "Snackbar - extension install error"
},
"snackbarFailedToUpdate": "فشل تحديث الإضافة",
"@snackbarFailedToUpdate": {
"description": "Snackbar - extension update error"
},
"errorRateLimited": "تم الوصول للحد الأقصى",
"@errorRateLimited": {
"description": "Error title - too many requests"
},
"errorRateLimitedMessage": "طلبات كثيرة جداً. الرجاء الانتظار قليلاً قبل البحث مرة أخرى.",
"@errorRateLimitedMessage": {
"description": "Error message - rate limit explanation"
},
"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": "هذا الرابط غير مدعوم. تأكد من أن الرابط صحيح وتثبيت إضافة متوافق.",
"@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"
}
}
},
"selectionAllSelected": "تم اختيار جميع الأغاني",
"@selectionAllSelected": {
"description": "Status - all items selected"
},
"selectionSelectToDelete": "حدد الأغاني المراد حذفها",
"@selectionSelectToDelete": {
"description": "Placeholder when nothing selected"
},
"progressFetchingMetadata": "جلب البيانات الوصفية (metadata)... {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": "أولوية البيانات الوصفية (metadata)",
"@metadataProviderPriorityTitle": {
"description": "Metadata priority page title"
},
"metadataProviderPriorityDescription": "اسحب لإعادة ترتيب موفري البيانات الوصفية (metadata). سيحاول التطبيق موفري البيانات الوصفية (metadata) من الأعلى إلى الأسفل عند البحث عن المسارات وجلب البيانات الوصفية (metadata).",
"@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, zero {لا توجد أغاني محددة} one {{count} مسارات} two {أغنيتين} few {{count} أغانٍ} many {{count} أغانٍ}=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": "البيانات الوصفية (Metadata)",
"@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 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"
},
"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": "البيانات الوصفية (Metadata)",
"@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": "أدخل عنوان مستودع 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": "رابط المستودع",
"@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": "معالج الروابط",
"@extensionUrlHandler": {
"description": "Capability - handles URLs"
},
"extensionQualityOptions": "خيارات الجودة",
"@extensionQualityOptions": {
"description": "Capability - quality selection"
},
"extensionPostProcessingHooks": "روابط المعالجة اللاحقة",
"@extensionPostProcessingHooks": {
"description": "Capability - post-processing"
},
"extensionPermissions": "الصلاحيات",
"@extensionPermissions": {
"description": "Section header - required permissions"
},
"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": {
"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"
}
}
},
"extensionsProviderPrioritySection": "أولوية مزود الخدمة",
"@extensionsProviderPrioritySection": {
"description": "Section header - provider priority"
},
"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"
},
"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": "أولوية البيانات الوصفية (metadata)",
"@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",
"@qualityFlacLossless": {
"description": "Quality option - CD quality FLAC"
},
"qualityFlacLosslessSubtitle": "16-bit / 44.1kHz",
"@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 Max",
"@qualityHiResFlacMax": {
"description": "Quality option - maximum resolution FLAC"
},
"qualityHiResFlacMaxSubtitle": "24 بت / ما يصل إلى 192 كيلو هرتز",
"@qualityHiResFlacMaxSubtitle": {
"description": "Technical spec for hi-res max"
},
"downloadLossy320": "320kbps مضغوط",
"@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": "صوت AC فعال في حاوية M4A",
"@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"
},
"downloadLossy320FormatDesc": "اختر التنسيق النهائي للتنزيلات المضغوطة 320kbps. سيتم تحويل البث الأصلي إلى التنسيق المحدد عند الحاجة.",
"@downloadLossy320FormatDesc": {
"description": "Description in the lossy format picker"
},
"downloadLossyMp3": "MP3 320kbps",
"@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 256kbps",
"@downloadLossyOpus256": {
"description": "Lossy format option - Opus 256kbps"
},
"downloadLossyOpus256Subtitle": "أفضل جودة Opus, حوالي 8 ميغابايت لكل أغنية",
"@downloadLossyOpus256Subtitle": {
"description": "Subtitle for Opus 256kbps lossy option"
},
"downloadLossyOpus128": "Opus 128kbps",
"@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": "الفنانين المتميزين الذين تمت إزالتهم من اسم المجلد (على سبيل المثال جاستين بيبر، كويفو -> جاستين بيبر)",
"@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": "الرسوم المتحركة ",
"@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": "مسار واحد في وقت واحد",
"@concurrentDownloadsOne": {
"description": "Concurrent downloads option - sequential"
},
"concurrentDownloadsCount": "حتى {count} مسارات في وقت واحد",
"@concurrentDownloadsCount": {
"description": "Concurrent downloads option - parallel",
"placeholders": {
"count": {
"type": "int"
}
}
},
"albumFolderArtistAlbum": "ألبوم / الفنان",
"@albumFolderArtistAlbum": {
"description": "Album folder option"
},
"albumFolderArtistAlbumSubtitle": "الألبومات / اسم الفنان / اسم الألبوم",
"@albumFolderArtistAlbumSubtitle": {
"description": "Folder structure example"
},
"albumFolderArtistYearAlbum": "الفنان / [Year] ألبوم",
"@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": "[Year] الألبوم",
"@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, zero {} one {أغنية} two {أغنيتين} few {أغانٍ} many {أغنية} 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, zero {} one {أغنية} two {أغنيتين} few {أغانٍ} many {أغنية} 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": "Song",
"@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": "Download Discography",
"@discographyDownload": {
"description": "Button - download artist discography"
},
"discographyDownloadAll": "Download All",
"@discographyDownloadAll": {
"description": "Option - download entire discography"
},
"discographyDownloadAllSubtitle": "{count} tracks from {albumCount} releases",
"@discographyDownloadAllSubtitle": {
"description": "Subtitle showing total tracks and albums",
"placeholders": {
"count": {
"type": "int"
},
"albumCount": {
"type": "int"
}
}
},
"discographyAlbumsOnly": "Albums Only",
"@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": "Singles & EPs Only",
"@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": "Select Albums...",
"@discographySelectAlbums": {
"description": "Option - manually select albums to download"
},
"discographySelectAlbumsSubtitle": "Choose specific albums or singles",
"@discographySelectAlbumsSubtitle": {
"description": "Subtitle for select albums option"
},
"discographyFetchingTracks": "Fetching tracks...",
"@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} selected",
"@discographySelectedCount": {
"description": "Selection count badge",
"placeholders": {
"count": {
"type": "int"
}
}
},
"discographyDownloadSelected": "Download Selected",
"@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": "No albums available",
"@discographyNoAlbums": {
"description": "Error - no albums found for artist"
},
"discographyFailedToFetch": "Failed to fetch some albums",
"@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": "إظهار عند البحث عن المسارات الموجودة",
"@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": "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, zero {لا توجد أغاني محددة} one {أغنية واحدة} two {أغنيتين} few {{count} أغانٍ} many {{count} أغانٍ} other{{count} أغانٍ}}",
"@libraryTracksUnit": {
"description": "Unit label for tracks count (without the number itself)",
"placeholders": {
"count": {
"type": "int"
}
}
},
"libraryFilesUnit": "{count, plural, zero {} one {ملف} two {ملفات} few {ملفات} many {ملفات} 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": "Hi-Res (24bit)",
"@libraryFilterQualityHiRes": {
"description": "Filter option - high resolution audio"
},
"libraryFilterQualityCD": "قرص مدمج (16bit)",
"@libraryFilterQualityCD": {
"description": "Filter option - CD quality audio"
},
"libraryFilterQualityLossy": "فقدان",
"@libraryFilterQualityLossy": {
"description": "Filter option - lossy compressed audio"
},
"libraryFilterFormat": "التنسيق",
"@libraryFilterFormat": {
"description": "Filter section - file format"
},
"libraryFilterMetadata": "البيانات الوصفية (Metadata)",
"@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": "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": "مجلد مؤقت",
"@cacheTempDirectory": {
"description": "Cache item title for temporary files directory"
},
"cacheTempDirectoryDesc": "الملفات المؤقتة من التنزيلات وتحويل الصوت.",
"@cacheTempDirectoryDesc": {
"description": "Description of what temporary directory contains"
},
"cacheCoverImage": "Cover image cache",
"@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"
},
"libraryPlaybackNormalizationSubtitle": "Even out loudness between tracks using their ReplayGain or R128 tags, when present",
"@libraryPlaybackNormalizationSubtitle": {
"description": "Subtitle explaining playback volume normalization"
},
"cacheAudioAnalysis": "Audio analysis cache",
"@cacheAudioAnalysis": {
"description": "Cache item title for saved audio analysis results"
},
"cacheAudioAnalysisDesc": "Saved spectrograms and analysis results. Will re-analyze on next open.",
"@cacheAudioAnalysisDesc": {
"description": "Description of what audio analysis cache contains"
},
"cacheExploreFeed": "Explore feed cache",
"@cacheExploreFeed": {
"description": "Cache item title for explore home feed cache"
},
"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"
},
"trackConvertKeepOriginalDescription": "Add the converted file as a separate library entry",
"@trackConvertKeepOriginalDescription": {
"description": "Description for preserving the source file during conversion"
},
"trackConvertConfirmTitle": "Confirm Conversion",
"@trackConvertConfirmTitle": {
"description": "Confirmation dialog title"
},
"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",
"placeholders": {
"sourceFormat": {
"type": "String"
},
"targetFormat": {
"type": "String"
}
}
},
"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": "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": "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",
"placeholders": {
"count": {
"type": "int"
},
"format": {
"type": "String"
}
}
},
"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": "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"
},
"downloadFolderAccessLostSubtitle": "Downloads will fail until you re-select the folder",
"@downloadFolderAccessLostSubtitle": {
"description": "Subtitle of the warning banner shown when the saved SAF folder grant is no longer valid"
},
"downloadFolderReselect": "Re-select folder",
"@downloadFolderReselect": {
"description": "Button that reopens the folder picker to restore download folder access"
},
"downloadErrorSafPermissionLost": "SAF permission invalid or revoked. Please reconfigure download location in Settings.",
"@downloadErrorSafPermissionLost": {
"description": "Error shown on downloads that failed because the persisted Android SAF folder grant is no longer valid"
},
"downloadErrorFolderAccessLost": "Download folder access lost. Please re-select your download folder in Settings.",
"@downloadErrorFolderAccessLost": {
"description": "Error shown on downloads that failed because the iOS download folder bookmark could not be opened"
},
"downloadFilenameDescription": "Use {artist}, {title}, {album}, {track}, {year}, {date}, {disc} as placeholders.",
"@downloadFilenameDescription": {
"description": "Description shown in filename format editor"
},
"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"
},
"notifVerificationRequiredBody": "Open the app to complete verification and resume downloads",
"@notifVerificationRequiredBody": {
"description": "Notification body prompting the user to return to the app to solve a verification challenge"
},
"notifAllDownloadsComplete": "All Downloads Complete",
"@notifAllDownloadsComplete": {
"description": "Notification title when all downloads finish successfully"
},
"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"
},
"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": "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",
"@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"
}
}